tower-studio 0.2.34 → 0.2.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +2 -2
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +34 -34
- 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 +74 -74
- 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 +2 -2
- package/.next/standalone/.next/server/app/onboarding/page/server-reference-manifest.json +34 -34
- 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 +2 -2
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +34 -34
- 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 +2 -2
- package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +51 -51
- 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 +2 -2
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/server-reference-manifest.json +113 -113
- 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 +2 -2
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/server-reference-manifest.json +92 -92
- 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 +2 -2
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/server-reference-manifest.json +77 -77
- 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 +2 -2
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/server-reference-manifest.json +80 -80
- 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 +2 -2
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/server-reference-manifest.json +34 -34
- 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 +2 -2
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/server-reference-manifest.json +72 -72
- 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 +3 -3
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/server-reference-manifest.json +85 -85
- 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 +2 -2
- package/.next/standalone/.next/server/app/workspaces/page/server-reference-manifest.json +54 -54
- 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_0hrprmi.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00llstz._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__01n7exm._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__01yu.gw._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qif839._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~foo~5._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_0bkvm8c._.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]__0-tolks._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0.5ug08._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__05sv58d._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__05xg05r._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__062b.yt._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__093tt4a._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09l2kmt._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bgr0ql._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0guqcva._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0gzafdq._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ikeoh.._.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]__0m4nvu~._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0p0te97._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s7yk4_._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0siyg1p._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0t6f4lq._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0th-t1a._.js +2 -2
- 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]__0almni9._.js → [root-of-the-server]__12m4ujm._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0-~9em3._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_00t6138._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0hchxpl._.js → _02ugk48._.js} +3 -3
- package/.next/standalone/.next/server/chunks/ssr/_070t_mh._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0y.q-vg._.js → _0_ipj7e._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0cj9a7y._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0cxhub8._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0px0igh._.js → _0e_ak8~._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0eca65n._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0gvyd.f._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0hh17jg._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0k4f1.-._.js → _0hlar46._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_12yox4f._.js → _0keo81q._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0rehvm-._.js → _0mjxq4v._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0mpce0d._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0muaopo._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0n1l7yo._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0nk7qd4._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0z2tba8._.js → _0ocdt49._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0q44.3o._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0rdyrfd._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_041l0cv._.js → _0s36tuu._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0s7ke7u._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0wbcp88._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_09n0s9b._.js → _134pkit._.js} +2 -2
- 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]_notes_notes-page-client_tsx_10gyo3v._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_tasks_[taskId]_task-page-client_tsx_02t7blt._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_components_ui_select_tsx_0d2ra01._.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 +296 -296
- package/.next/standalone/.next/static/chunks/0.z88xlskrvd-.js +1 -0
- package/.next/standalone/.next/static/chunks/00.7wudyszp3y.css +1 -0
- package/.next/standalone/.next/static/chunks/00bgq.z2led_g.js +1 -0
- package/.next/standalone/.next/static/chunks/01agfbg-55.3l.js +1 -0
- package/.next/standalone/.next/static/chunks/01r_kvw6fe~.z.js +1 -0
- package/.next/standalone/.next/static/chunks/026c8pffxl6wa.js +2 -0
- package/.next/standalone/.next/static/chunks/{16ubws05gi6md.js → 060cca-172m5j.js} +1 -1
- package/.next/standalone/.next/static/chunks/07a3_u.yr179w.js +1 -0
- package/.next/standalone/.next/static/chunks/{02~4b.8ir68sf.js → 0b31xip8xb_cv.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0cwsb9~cex3mr.js → 0gf~0e3xpa0fj.js} +1 -1
- package/.next/standalone/.next/static/chunks/{11.gxz8y59q9x.js → 0kia6x73z7qhq.js} +1 -1
- package/.next/standalone/.next/static/chunks/0msy9p40r_u_j.js +1 -0
- package/.next/standalone/.next/static/chunks/0vync155t_v71.js +1 -0
- package/.next/standalone/.next/static/chunks/0ws5ujnb5coco.js +1 -0
- package/.next/standalone/.next/static/chunks/0x5r51ae1bmdl.js +1 -0
- package/.next/standalone/.next/static/chunks/0xdbwwjkc3enx.js +1 -0
- package/.next/standalone/.next/static/chunks/0xg8ukff1-y32.js +1 -0
- package/.next/standalone/.next/static/chunks/0z-fh29~rncne.js +1 -0
- package/.next/standalone/.next/static/chunks/0zq8pqszpa37-.js +1 -0
- package/.next/standalone/.next/static/chunks/{0bq-a.iqnlign.js → 12qumm~rdb~ls.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0z3mmfc8sv-51.js → 13n8ln7v6z4vc.js} +2 -2
- package/.next/standalone/.next/static/chunks/14-eiet1ypb3e.js +1 -0
- package/.next/standalone/.next/static/chunks/{0uu4dne-yscov.js → 144hr38h72193.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0f2~z.xnkw0.u.js → 14~li4os2yoi2.js} +1 -1
- package/.next/standalone/.next/static/chunks/15gytx~096xul.js +1 -0
- package/.next/standalone/.next/static/chunks/{04l-.s3_om9y..js → 16fbv7zz-.kse.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0wxk387~-lxu1.js → 16och4~epx6jk.js} +1 -1
- package/.next/standalone/.next/static/chunks/{15qvpc33og_et.js → 1768nvsy3akwy.js} +1 -1
- package/.next/standalone/package.json +1 -1
- package/package.json +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__004dmwv._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__061p5rc._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__06yx5l5._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0j8~mdg._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0~_qwfy._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_033p42a._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0644da7._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0retby~._.js +0 -3
- package/.next/standalone/.next/static/chunks/074pl-db8hd7n.js +0 -1
- package/.next/standalone/.next/static/chunks/08gmt7zfmi07i.js +0 -1
- package/.next/standalone/.next/static/chunks/09qqx5e6_m69a.js +0 -1
- package/.next/standalone/.next/static/chunks/0d.tt7u.5fs~f.js +0 -1
- package/.next/standalone/.next/static/chunks/0gr0_ba-400rj.js +0 -1
- package/.next/standalone/.next/static/chunks/0gyk.it.hj68o.js +0 -1
- package/.next/standalone/.next/static/chunks/0iv8gbv-ghx4_.js +0 -1
- package/.next/standalone/.next/static/chunks/0oxib0ew0i6jf.js +0 -1
- package/.next/standalone/.next/static/chunks/0p40_9yteagn~.js +0 -1
- package/.next/standalone/.next/static/chunks/0phbm9we70sdr.js +0 -1
- package/.next/standalone/.next/static/chunks/0so6swvdpools.js +0 -1
- package/.next/standalone/.next/static/chunks/0stxf.y~zqvv8.css +0 -1
- package/.next/standalone/.next/static/chunks/0t44qy6r~z0bj.js +0 -1
- package/.next/standalone/.next/static/chunks/11z9-ri~78bsr.js +0 -2
- package/.next/standalone/.next/static/chunks/14ynp8ao1ictj.js +0 -1
- package/.next/standalone/.next/static/chunks/15bcjdgsecs_j.js +0 -1
- package/.next/standalone/.next/static/chunks/16v1p30jl74cu.js +0 -1
- /package/.next/standalone/.next/static/{CvoaJSaxJicoNzSHfMek0 → desYDJ6TQllFzzfGYPb6V}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{CvoaJSaxJicoNzSHfMek0 → desYDJ6TQllFzzfGYPb6V}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{CvoaJSaxJicoNzSHfMek0 → desYDJ6TQllFzzfGYPb6V}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[157551,a=>{"use strict";let b=(0,a.i(711796).default)("calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);a.s(["Calendar",0,b],157551)},757061,283238,a=>{"use strict";var b=a.i(728778),c=a.i(432949),d=a.i(368114),e=a.i(699570),f=a.i(14906);function g({...a}){return(0,b.jsx)(c.Dialog.Portal,{"data-slot":"sheet-portal",...a})}function h({className:a,...e}){return(0,b.jsx)(c.Dialog.Backdrop,{"data-slot":"sheet-overlay",className:(0,d.cn)("fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs",a),...e})}a.s(["Sheet",0,function({...a}){return(0,b.jsx)(c.Dialog.Root,{"data-slot":"sheet",...a})},"SheetContent",0,function({className:a,children:i,side:j="right",showCloseButton:k=!0,...l}){return(0,b.jsxs)(g,{children:[(0,b.jsx)(h,{}),(0,b.jsxs)(c.Dialog.Popup,{"data-slot":"sheet-content","data-side":j,className:(0,d.cn)("fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm",a),...l,children:[i,k&&(0,b.jsxs)(c.Dialog.Close,{"data-slot":"sheet-close",render:(0,b.jsx)(e.Button,{variant:"ghost",className:"absolute top-3 right-3",size:"icon-sm"}),children:[(0,b.jsx)(f.XIcon,{}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})},"SheetDescription",0,function({className:a,...e}){return(0,b.jsx)(c.Dialog.Description,{"data-slot":"sheet-description",className:(0,d.cn)("text-sm text-muted-foreground",a),...e})},"SheetHeader",0,function({className:a,...c}){return(0,b.jsx)("div",{"data-slot":"sheet-header",className:(0,d.cn)("flex flex-col gap-0.5 p-4",a),...c})},"SheetTitle",0,function({className:a,...e}){return(0,b.jsx)(c.Dialog.Title,{"data-slot":"sheet-title",className:(0,d.cn)("font-heading text-base font-medium text-foreground",a),...e})}],757061);var i=a.i(780410);let j=(0,i.createServerReference)("407e064d86f5f4d386747f9004963d117c843a1fa6",i.callServer,void 0,i.findSourceMapURL,"getTaskOverview");a.s(["getTaskOverview",0,j],283238)},972420,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(757061),e=a.i(269876),f=a.i(786304),g=a.i(699570),h=a.i(951192),i=a.i(241031),j=a.i(283238),k=a.i(347401),l=a.i(521899),m=a.i(207376),n=a.i(100909),o=a.i(88840),p=a.i(825105),q=a.i(445798),r=a.i(510650),s=a.i(532615),t=a.i(894148),u=a.i(161181),v=a.i(521007),w=a.i(157551),x=a.i(22761),y=a.i(264589),z=a.i(165614),A=a.i(625892),B=a.i(939859),C=a.i(648512),D=a.i(350739),E=a.i(509405),F=a.i(87339),G=a.i(347165);function H({added:a,removed:c}){let{t:d}=(0,h.useI18n)();return(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-xs text-gray-500",children:[(0,b.jsx)("span",{children:d("diff.filesChanged",{count:String(a+c)})}),a>0&&(0,b.jsxs)("span",{className:"text-green-500",children:["+",a]}),c>0&&(0,b.jsxs)("span",{className:"text-red-500",children:["-",c]})]})}var I=a.i(551578),J=a.i(952313);let K=/\.(txt|md|json)$/i;a.s(["TaskOverviewDrawer",0,function({open:a,onOpenChange:L,taskId:M}){let{t:N}=(0,h.useI18n)(),[O,P]=(0,c.useState)(null),[Q,R]=(0,c.useTransition)(),[S,T]=(0,c.useState)(!1),[U,V]=(0,c.useState)([]),[W,X]=(0,c.useState)([]),[Y,Z]=(0,c.useState)(null),[$,_]=(0,c.useState)([]),[aa,ab]=(0,c.useState)(null);(0,c.useEffect)(()=>{if(!M||!a){P(null),X([]),_([]);return}(0,l.getTaskNotes)(M).then(a=>X(a.map(a=>({id:a.id,title:a.title,content:a.content,category:a.category})))).catch(()=>X([])),(0,m.getTaskAssets)(M).then(a=>_(a.map(a=>({id:a.id,filename:a.filename,path:a.path,mimeType:a.mimeType,size:a.size})))).catch(()=>_([])),R(async()=>{let a=await (0,j.getTaskOverview)(M);a&&(P(a),a.project?.workspaceId&&(0,k.getLabelsForWorkspace)(a.project.workspaceId).then(a=>{V(a.map(a=>({id:a.id,name:a.name,color:a.color,isBuiltin:a.isBuiltin})))}).catch(()=>V([])))})},[M,a]);let ac=O?v.BOARD_COLUMNS.find(a=>a.id===O.status):null,ad=O?v.PRIORITY_CONFIG[O.priority]:null,ae=O?.executions?.[0]??null,af=(()=>{if(ae?.worktreePath)return ae.worktreePath;let a=O?.project?.localPath;return a?O?.subPath?`${a}/${O.subPath}`:a:null})(),ag=(()=>{let a=ae?.gitStats;if(!a)return null;try{let b=JSON.parse(a);return{added:b.insertions??0,removed:b.deletions??0}}catch{return null}})(),ah=a=>(0,u.isImageAsset)(a.filename,a.mimeType)||K.test(a.filename),ai=a=>{ah(a)?ab(a):J.toast.info(N("assets.previewNotSupported"))},aj=async a=>{try{let b=await fetch("/api/internal/assets/reveal",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:a.path})});if(!b.ok){let a=await b.json().catch(()=>({}));J.toast.error(a.error||N("git.openInFileManagerFailed"))}}catch{J.toast.error(N("git.openInFileManagerFailed"))}},ak=aa?(0,u.isImageAsset)(aa.filename,aa.mimeType)?"image":K.test(aa.filename)?"text":null:null,al=$.filter(a=>(0,u.isImageAsset)(a.filename,a.mimeType)).map(a=>({id:a.id,url:(0,u.localPathToApiUrl)(a.path),filename:a.filename})),am=aa?al.findIndex(a=>a.id===aa.id):-1,an=async a=>{if(O?.project)try{let{autoStart:b,...c}=a;await (0,i.createTask)({...c,projectId:O.project.id}),J.toast.success(N("taskDrawer.duplicateSuccess")),T(!1),L(!1)}catch{J.toast.error(N("taskDrawer.duplicateFailed"))}};return(0,b.jsxs)(d.Sheet,{open:a,onOpenChange:L,children:[(0,b.jsxs)(d.SheetContent,{side:"right",className:"w-[380px] sm:max-w-[380px] p-0",children:[(0,b.jsxs)(d.SheetHeader,{className:"px-4 pt-4 pb-3 border-b border-border",children:[(0,b.jsx)(d.SheetTitle,{className:"text-base font-semibold leading-tight pr-8",children:O?.title??""}),(0,b.jsx)(d.SheetDescription,{className:"sr-only",children:N("taskDrawer.title")}),O&&(0,b.jsxs)("div",{className:"flex items-center gap-2 mt-2",children:[ac&&(0,b.jsxs)(f.Badge,{variant:"secondary",className:"text-xs",children:[(0,b.jsx)("span",{className:`inline-block w-2 h-2 rounded-full mr-1.5 ${ac.color}`}),ac.label]}),ad&&(0,b.jsx)(f.Badge,{variant:"secondary",className:`text-xs ${ad.color}`,children:ad.label}),O.version&&(0,b.jsx)(I.TaskVersionTag,{number:O.version.number,name:O.version.name,showName:!0})]})]}),(0,b.jsx)(e.ScrollArea,{className:"flex-1 h-[calc(100%-80px)]",children:Q&&!O?(0,b.jsx)("div",{className:"flex items-center justify-center h-32 text-sm text-muted-foreground",children:N("assets.loading")}):O?(0,b.jsxs)("div",{className:"p-4 space-y-4",children:[(0,b.jsxs)("section",{children:[(0,b.jsx)("h4",{className:"text-xs font-medium text-muted-foreground mb-1",children:N("taskDrawer.description")}),(0,b.jsx)("p",{className:"text-sm text-foreground whitespace-pre-wrap",children:O.description||N("taskDrawer.noDescription")})]}),O.labels.length>0&&(0,b.jsxs)("section",{children:[(0,b.jsx)("h4",{className:"text-xs font-medium text-muted-foreground mb-1.5",children:N("taskDrawer.labels")}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5",children:O.labels.map(a=>(0,b.jsx)(f.Badge,{variant:"secondary",className:"text-xs",style:{backgroundColor:`${a.label.color}20`,color:a.label.color,borderColor:`${a.label.color}40`},children:a.label.name},a.label.id))})]}),(0,b.jsxs)("section",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(w.Calendar,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:N("taskDrawer.createdAt")}),(0,b.jsx)("span",{className:"text-foreground",children:new Date(O.createdAt).toLocaleDateString()})]}),(0,b.jsxs)("section",{children:[(0,b.jsxs)("h4",{className:"text-xs font-medium text-muted-foreground mb-1.5 flex items-center gap-1.5",children:[(0,b.jsx)(y.Package,{className:"h-3.5 w-3.5"}),N("taskDrawer.resources"),(0,b.jsx)("span",{className:"text-foreground",children:O._count.assets})]}),$.length>0?(0,b.jsx)("div",{className:"space-y-1.5",children:$.map(a=>{var c;let d=ah(a);return(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-md border border-border px-2 py-1.5",children:[(0,b.jsx)(F.Paperclip,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}),(0,b.jsx)("button",{type:"button",onClick:()=>ai(a),disabled:!d,className:`min-w-0 flex-1 truncate text-left text-sm ${d?"cursor-pointer hover:underline":"cursor-default"}`,title:d?N("assets.preview"):a.filename,children:a.filename}),(0,b.jsx)("span",{className:"shrink-0 text-[10px] text-muted-foreground",children:(c=a.size)?c<1024?`${c} B`:c<1048576?`${(c/1024).toFixed(1)} KB`:`${(c/1024/1024).toFixed(1)} MB`:""}),(0,b.jsxs)("div",{className:"flex items-center gap-0.5",children:[d&&(0,b.jsx)(g.Button,{variant:"ghost",size:"icon-xs",onClick:()=>ai(a),className:"shrink-0 text-muted-foreground hover:bg-accent",title:N("assets.preview"),children:(0,b.jsx)(E.Eye,{className:"h-3 w-3"})}),(0,b.jsx)(g.Button,{variant:"ghost",size:"icon-xs",onClick:()=>aj(a),className:"shrink-0 text-muted-foreground hover:bg-accent",title:N("assets.revealInFinder"),children:(0,b.jsx)(G.FolderOpen,{className:"h-3 w-3"})})]})]},a.id)})}):(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:N("taskDrawer.noResources")})]}),(0,b.jsxs)("section",{children:[(0,b.jsxs)("h4",{className:"text-xs font-medium text-muted-foreground mb-1.5 flex items-center gap-1.5",children:[(0,b.jsx)(D.FileText,{className:"h-3.5 w-3.5"}),N("taskDrawer.notes")]}),W.length>0?(0,b.jsx)("div",{className:"space-y-1.5",children:W.map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>Z(a),className:"group/note flex w-full items-start gap-2 rounded-md border border-border p-2 text-left transition-colors hover:bg-accent/40",title:N("taskDrawer.previewNote"),children:[(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("p",{className:"truncate text-sm font-medium",children:a.title}),a.content&&(0,b.jsx)("p",{className:"mt-0.5 line-clamp-2 whitespace-pre-wrap text-xs text-muted-foreground",children:a.content})]}),(0,b.jsx)(E.Eye,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground opacity-0 transition-opacity group-hover/note:opacity-100"})]},a.id))}):(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:N("taskDrawer.noNotes")})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h4",{className:"text-xs font-medium text-muted-foreground mb-1.5",children:N("taskDrawer.fileChanges")}),ag?(0,b.jsx)(H,{added:ag.added,removed:ag.removed}):(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:N("taskDrawer.noFileChanges")})]}),(0,b.jsxs)("section",{children:[(0,b.jsxs)("h4",{className:"text-xs font-medium text-muted-foreground mb-1.5 flex items-center gap-1.5",children:[(0,b.jsx)(z.PlayCircle,{className:"h-3.5 w-3.5"}),N("taskDrawer.lastExecution")]}),ae?(0,b.jsxs)("div",{className:"rounded-md border border-border p-2.5 text-sm",children:[(0,b.jsx)(f.Badge,{variant:"secondary",className:"text-xs mb-1.5",children:ae.status}),ae.summary&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground line-clamp-4",children:ae.summary.slice(0,200)})]}):(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:N("taskDrawer.noExecution")})]}),af&&(0,b.jsxs)("section",{className:"flex flex-col",children:[(0,b.jsxs)(g.Button,{variant:"ghost",className:"w-full h-8 justify-start gap-2 px-2 text-xs text-muted-foreground",onClick:async()=>{try{await (0,n.openInFileManager)(af)}catch(a){console.error("openInFileManager failed:",a),J.toast.error(N("git.openInFileManagerFailed"))}},children:[(0,b.jsx)(A.FolderSearch,{className:"h-3.5 w-3.5 shrink-0"}),N("git.openInFileManager")]}),(0,b.jsxs)(g.Button,{variant:"ghost",className:"w-full h-8 justify-start gap-2 px-2 text-xs text-muted-foreground",onClick:async()=>{try{await (0,o.openInEditor)(af)}catch(a){console.error("openInEditor failed:",a),J.toast.error(N("git.openInEditorFailed"))}},children:[(0,b.jsx)(B.Code,{className:"h-3.5 w-3.5 shrink-0"}),N("git.openInEditor")]}),(0,b.jsxs)(g.Button,{variant:"ghost",className:"w-full h-8 justify-start gap-2 px-2 text-xs text-muted-foreground",onClick:async()=>{try{await (0,p.openInTerminal)(af)}catch(a){console.error("openInTerminal failed:",a),J.toast.error(N("git.openInTerminalFailed"))}},children:[(0,b.jsx)(C.Terminal,{className:"h-3.5 w-3.5 shrink-0"}),N("git.openInTerminal")]})]}),(0,b.jsx)("section",{children:(0,b.jsxs)(g.Button,{variant:"default",className:"w-full",onClick:()=>{O&&T(!0)},disabled:!O,children:[(0,b.jsx)(x.Copy,{className:"h-4 w-4"}),N("taskDrawer.duplicate")]})})]}):null})]}),O?.project&&(0,b.jsx)(q.CreateTaskDialog,{open:S,onOpenChange:T,onSubmit:an,labels:U,projectType:O.project.type,projectLocalPath:O.project.localPath,prefillFromTask:{title:O.title,description:O.description,priority:O.priority,subPath:O.subPath,labelIds:O.labels.map(a=>a.label.id),baseBranch:O.baseBranch}}),(0,b.jsx)(r.NotePreviewDialog,{note:Y,open:null!==Y,onOpenChange:a=>{a||Z(null)}}),(0,b.jsx)(s.ImageLightbox,{imageUrl:"image"===ak&&am>=0?al[am].url:null,filename:"image"===ak&&am>=0?al[am].filename:"",open:"image"===ak,onOpenChange:a=>{a||ab(null)},assets:al.map(({url:a,filename:b})=>({url:a,filename:b})),currentIndex:am>=0?am:void 0,onIndexChange:a=>{let b=al[a];if(!b)return;let c=$.find(a=>a.id===b.id);c&&ab(c)}}),(0,b.jsx)(t.TextPreviewDialog,{url:"text"===ak&&aa?(0,u.localPathToApiUrl)(aa.path):null,filename:aa?.filename??"",open:"text"===ak,onOpenChange:a=>{a||ab(null)}})]})}],972420)}];
|
|
1
|
+
module.exports=[157551,a=>{"use strict";let b=(0,a.i(711796).default)("calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);a.s(["Calendar",0,b],157551)},757061,761418,a=>{"use strict";var b=a.i(728778),c=a.i(432949),d=a.i(368114),e=a.i(699570),f=a.i(14906);function g({...a}){return(0,b.jsx)(c.Dialog.Portal,{"data-slot":"sheet-portal",...a})}function h({className:a,...e}){return(0,b.jsx)(c.Dialog.Backdrop,{"data-slot":"sheet-overlay",className:(0,d.cn)("fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs",a),...e})}a.s(["Sheet",0,function({...a}){return(0,b.jsx)(c.Dialog.Root,{"data-slot":"sheet",...a})},"SheetContent",0,function({className:a,children:i,side:j="right",showCloseButton:k=!0,...l}){return(0,b.jsxs)(g,{children:[(0,b.jsx)(h,{}),(0,b.jsxs)(c.Dialog.Popup,{"data-slot":"sheet-content","data-side":j,className:(0,d.cn)("fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm",a),...l,children:[i,k&&(0,b.jsxs)(c.Dialog.Close,{"data-slot":"sheet-close",render:(0,b.jsx)(e.Button,{variant:"ghost",className:"absolute top-3 right-3",size:"icon-sm"}),children:[(0,b.jsx)(f.XIcon,{}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})},"SheetDescription",0,function({className:a,...e}){return(0,b.jsx)(c.Dialog.Description,{"data-slot":"sheet-description",className:(0,d.cn)("text-sm text-muted-foreground",a),...e})},"SheetHeader",0,function({className:a,...c}){return(0,b.jsx)("div",{"data-slot":"sheet-header",className:(0,d.cn)("flex flex-col gap-0.5 p-4",a),...c})},"SheetTitle",0,function({className:a,...e}){return(0,b.jsx)(c.Dialog.Title,{"data-slot":"sheet-title",className:(0,d.cn)("font-heading text-base font-medium text-foreground",a),...e})}],757061);var i=a.i(780410);let j=(0,i.createServerReference)("40a0856cea2cb3dd3930d5b9f4a5bb90b7d00fb2f0",i.callServer,void 0,i.findSourceMapURL,"getTaskOverview");a.s(["getTaskOverview",0,j],761418)},972420,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(757061),e=a.i(269876),f=a.i(786304),g=a.i(699570),h=a.i(951192),i=a.i(54170),j=a.i(761418),k=a.i(151402),l=a.i(742087),m=a.i(610774),n=a.i(861442),o=a.i(414041),p=a.i(565849),q=a.i(445798),r=a.i(510650),s=a.i(532615),t=a.i(894148),u=a.i(161181),v=a.i(521007),w=a.i(157551),x=a.i(22761),y=a.i(264589),z=a.i(165614),A=a.i(625892),B=a.i(939859),C=a.i(648512),D=a.i(350739),E=a.i(509405),F=a.i(87339),G=a.i(347165);function H({added:a,removed:c}){let{t:d}=(0,h.useI18n)();return(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-xs text-gray-500",children:[(0,b.jsx)("span",{children:d("diff.filesChanged",{count:String(a+c)})}),a>0&&(0,b.jsxs)("span",{className:"text-green-500",children:["+",a]}),c>0&&(0,b.jsxs)("span",{className:"text-red-500",children:["-",c]})]})}var I=a.i(551578),J=a.i(952313);let K=/\.(txt|md|json)$/i;a.s(["TaskOverviewDrawer",0,function({open:a,onOpenChange:L,taskId:M}){let{t:N}=(0,h.useI18n)(),[O,P]=(0,c.useState)(null),[Q,R]=(0,c.useTransition)(),[S,T]=(0,c.useState)(!1),[U,V]=(0,c.useState)([]),[W,X]=(0,c.useState)([]),[Y,Z]=(0,c.useState)(null),[$,_]=(0,c.useState)([]),[aa,ab]=(0,c.useState)(null);(0,c.useEffect)(()=>{if(!M||!a){P(null),X([]),_([]);return}(0,l.getTaskNotes)(M).then(a=>X(a.map(a=>({id:a.id,title:a.title,content:a.content,category:a.category})))).catch(()=>X([])),(0,m.getTaskAssets)(M).then(a=>_(a.map(a=>({id:a.id,filename:a.filename,path:a.path,mimeType:a.mimeType,size:a.size})))).catch(()=>_([])),R(async()=>{let a=await (0,j.getTaskOverview)(M);a&&(P(a),a.project?.workspaceId&&(0,k.getLabelsForWorkspace)(a.project.workspaceId).then(a=>{V(a.map(a=>({id:a.id,name:a.name,color:a.color,isBuiltin:a.isBuiltin})))}).catch(()=>V([])))})},[M,a]);let ac=O?v.BOARD_COLUMNS.find(a=>a.id===O.status):null,ad=O?v.PRIORITY_CONFIG[O.priority]:null,ae=O?.executions?.[0]??null,af=(()=>{if(ae?.worktreePath)return ae.worktreePath;let a=O?.project?.localPath;return a?O?.subPath?`${a}/${O.subPath}`:a:null})(),ag=(()=>{let a=ae?.gitStats;if(!a)return null;try{let b=JSON.parse(a);return{added:b.insertions??0,removed:b.deletions??0}}catch{return null}})(),ah=a=>(0,u.isImageAsset)(a.filename,a.mimeType)||K.test(a.filename),ai=a=>{ah(a)?ab(a):J.toast.info(N("assets.previewNotSupported"))},aj=async a=>{try{let b=await fetch("/api/internal/assets/reveal",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:a.path})});if(!b.ok){let a=await b.json().catch(()=>({}));J.toast.error(a.error||N("git.openInFileManagerFailed"))}}catch{J.toast.error(N("git.openInFileManagerFailed"))}},ak=aa?(0,u.isImageAsset)(aa.filename,aa.mimeType)?"image":K.test(aa.filename)?"text":null:null,al=$.filter(a=>(0,u.isImageAsset)(a.filename,a.mimeType)).map(a=>({id:a.id,url:(0,u.localPathToApiUrl)(a.path),filename:a.filename})),am=aa?al.findIndex(a=>a.id===aa.id):-1,an=async a=>{if(O?.project)try{let{autoStart:b,...c}=a;await (0,i.createTask)({...c,projectId:O.project.id}),J.toast.success(N("taskDrawer.duplicateSuccess")),T(!1),L(!1)}catch{J.toast.error(N("taskDrawer.duplicateFailed"))}};return(0,b.jsxs)(d.Sheet,{open:a,onOpenChange:L,children:[(0,b.jsxs)(d.SheetContent,{side:"right",className:"w-[380px] sm:max-w-[380px] p-0",children:[(0,b.jsxs)(d.SheetHeader,{className:"px-4 pt-4 pb-3 border-b border-border",children:[(0,b.jsx)(d.SheetTitle,{className:"text-base font-semibold leading-tight pr-8",children:O?.title??""}),(0,b.jsx)(d.SheetDescription,{className:"sr-only",children:N("taskDrawer.title")}),O&&(0,b.jsxs)("div",{className:"flex items-center gap-2 mt-2",children:[ac&&(0,b.jsxs)(f.Badge,{variant:"secondary",className:"text-xs",children:[(0,b.jsx)("span",{className:`inline-block w-2 h-2 rounded-full mr-1.5 ${ac.color}`}),ac.label]}),ad&&(0,b.jsx)(f.Badge,{variant:"secondary",className:`text-xs ${ad.color}`,children:ad.label}),O.version&&(0,b.jsx)(I.TaskVersionTag,{number:O.version.number,name:O.version.name,showName:!0})]})]}),(0,b.jsx)(e.ScrollArea,{className:"flex-1 h-[calc(100%-80px)]",children:Q&&!O?(0,b.jsx)("div",{className:"flex items-center justify-center h-32 text-sm text-muted-foreground",children:N("assets.loading")}):O?(0,b.jsxs)("div",{className:"p-4 space-y-4",children:[(0,b.jsxs)("section",{children:[(0,b.jsx)("h4",{className:"text-xs font-medium text-muted-foreground mb-1",children:N("taskDrawer.description")}),(0,b.jsx)("p",{className:"text-sm text-foreground whitespace-pre-wrap",children:O.description||N("taskDrawer.noDescription")})]}),O.labels.length>0&&(0,b.jsxs)("section",{children:[(0,b.jsx)("h4",{className:"text-xs font-medium text-muted-foreground mb-1.5",children:N("taskDrawer.labels")}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5",children:O.labels.map(a=>(0,b.jsx)(f.Badge,{variant:"secondary",className:"text-xs",style:{backgroundColor:`${a.label.color}20`,color:a.label.color,borderColor:`${a.label.color}40`},children:a.label.name},a.label.id))})]}),(0,b.jsxs)("section",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(w.Calendar,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:N("taskDrawer.createdAt")}),(0,b.jsx)("span",{className:"text-foreground",children:new Date(O.createdAt).toLocaleDateString()})]}),(0,b.jsxs)("section",{children:[(0,b.jsxs)("h4",{className:"text-xs font-medium text-muted-foreground mb-1.5 flex items-center gap-1.5",children:[(0,b.jsx)(y.Package,{className:"h-3.5 w-3.5"}),N("taskDrawer.resources"),(0,b.jsx)("span",{className:"text-foreground",children:O._count.assets})]}),$.length>0?(0,b.jsx)("div",{className:"space-y-1.5",children:$.map(a=>{var c;let d=ah(a);return(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-md border border-border px-2 py-1.5",children:[(0,b.jsx)(F.Paperclip,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}),(0,b.jsx)("button",{type:"button",onClick:()=>ai(a),disabled:!d,className:`min-w-0 flex-1 truncate text-left text-sm ${d?"cursor-pointer hover:underline":"cursor-default"}`,title:d?N("assets.preview"):a.filename,children:a.filename}),(0,b.jsx)("span",{className:"shrink-0 text-[10px] text-muted-foreground",children:(c=a.size)?c<1024?`${c} B`:c<1048576?`${(c/1024).toFixed(1)} KB`:`${(c/1024/1024).toFixed(1)} MB`:""}),(0,b.jsxs)("div",{className:"flex items-center gap-0.5",children:[d&&(0,b.jsx)(g.Button,{variant:"ghost",size:"icon-xs",onClick:()=>ai(a),className:"shrink-0 text-muted-foreground hover:bg-accent",title:N("assets.preview"),children:(0,b.jsx)(E.Eye,{className:"h-3 w-3"})}),(0,b.jsx)(g.Button,{variant:"ghost",size:"icon-xs",onClick:()=>aj(a),className:"shrink-0 text-muted-foreground hover:bg-accent",title:N("assets.revealInFinder"),children:(0,b.jsx)(G.FolderOpen,{className:"h-3 w-3"})})]})]},a.id)})}):(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:N("taskDrawer.noResources")})]}),(0,b.jsxs)("section",{children:[(0,b.jsxs)("h4",{className:"text-xs font-medium text-muted-foreground mb-1.5 flex items-center gap-1.5",children:[(0,b.jsx)(D.FileText,{className:"h-3.5 w-3.5"}),N("taskDrawer.notes")]}),W.length>0?(0,b.jsx)("div",{className:"space-y-1.5",children:W.map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>Z(a),className:"group/note flex w-full items-start gap-2 rounded-md border border-border p-2 text-left transition-colors hover:bg-accent/40",title:N("taskDrawer.previewNote"),children:[(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("p",{className:"truncate text-sm font-medium",children:a.title}),a.content&&(0,b.jsx)("p",{className:"mt-0.5 line-clamp-2 whitespace-pre-wrap text-xs text-muted-foreground",children:a.content})]}),(0,b.jsx)(E.Eye,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground opacity-0 transition-opacity group-hover/note:opacity-100"})]},a.id))}):(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:N("taskDrawer.noNotes")})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h4",{className:"text-xs font-medium text-muted-foreground mb-1.5",children:N("taskDrawer.fileChanges")}),ag?(0,b.jsx)(H,{added:ag.added,removed:ag.removed}):(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:N("taskDrawer.noFileChanges")})]}),(0,b.jsxs)("section",{children:[(0,b.jsxs)("h4",{className:"text-xs font-medium text-muted-foreground mb-1.5 flex items-center gap-1.5",children:[(0,b.jsx)(z.PlayCircle,{className:"h-3.5 w-3.5"}),N("taskDrawer.lastExecution")]}),ae?(0,b.jsxs)("div",{className:"rounded-md border border-border p-2.5 text-sm",children:[(0,b.jsx)(f.Badge,{variant:"secondary",className:"text-xs mb-1.5",children:ae.status}),ae.summary&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground line-clamp-4",children:ae.summary.slice(0,200)})]}):(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:N("taskDrawer.noExecution")})]}),af&&(0,b.jsxs)("section",{className:"flex flex-col",children:[(0,b.jsxs)(g.Button,{variant:"ghost",className:"w-full h-8 justify-start gap-2 px-2 text-xs text-muted-foreground",onClick:async()=>{try{await (0,n.openInFileManager)(af)}catch(a){console.error("openInFileManager failed:",a),J.toast.error(N("git.openInFileManagerFailed"))}},children:[(0,b.jsx)(A.FolderSearch,{className:"h-3.5 w-3.5 shrink-0"}),N("git.openInFileManager")]}),(0,b.jsxs)(g.Button,{variant:"ghost",className:"w-full h-8 justify-start gap-2 px-2 text-xs text-muted-foreground",onClick:async()=>{try{await (0,o.openInEditor)(af)}catch(a){console.error("openInEditor failed:",a),J.toast.error(N("git.openInEditorFailed"))}},children:[(0,b.jsx)(B.Code,{className:"h-3.5 w-3.5 shrink-0"}),N("git.openInEditor")]}),(0,b.jsxs)(g.Button,{variant:"ghost",className:"w-full h-8 justify-start gap-2 px-2 text-xs text-muted-foreground",onClick:async()=>{try{await (0,p.openInTerminal)(af)}catch(a){console.error("openInTerminal failed:",a),J.toast.error(N("git.openInTerminalFailed"))}},children:[(0,b.jsx)(C.Terminal,{className:"h-3.5 w-3.5 shrink-0"}),N("git.openInTerminal")]})]}),(0,b.jsx)("section",{children:(0,b.jsxs)(g.Button,{variant:"default",className:"w-full",onClick:()=>{O&&T(!0)},disabled:!O,children:[(0,b.jsx)(x.Copy,{className:"h-4 w-4"}),N("taskDrawer.duplicate")]})})]}):null})]}),O?.project&&(0,b.jsx)(q.CreateTaskDialog,{open:S,onOpenChange:T,onSubmit:an,labels:U,projectType:O.project.type,projectLocalPath:O.project.localPath,prefillFromTask:{title:O.title,description:O.description,priority:O.priority,subPath:O.subPath,labelIds:O.labels.map(a=>a.label.id),baseBranch:O.baseBranch}}),(0,b.jsx)(r.NotePreviewDialog,{note:Y,open:null!==Y,onOpenChange:a=>{a||Z(null)}}),(0,b.jsx)(s.ImageLightbox,{imageUrl:"image"===ak&&am>=0?al[am].url:null,filename:"image"===ak&&am>=0?al[am].filename:"",open:"image"===ak,onOpenChange:a=>{a||ab(null)},assets:al.map(({url:a,filename:b})=>({url:a,filename:b})),currentIndex:am>=0?am:void 0,onIndexChange:a=>{let b=al[a];if(!b)return;let c=$.find(a=>a.id===b.id);c&&ab(c)}}),(0,b.jsx)(t.TextPreviewDialog,{url:"text"===ak&&aa?(0,u.localPathToApiUrl)(aa.path):null,filename:aa?.filename??"",open:"text"===ak,onOpenChange:a=>{a||ab(null)}})]})}],972420)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_0wbcp88._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[161181,a=>{"use strict";let b=new Set(["png","jpg","jpeg","gif","webp","svg","bmp","ico","avif","apng"]);a.s(["isImageAsset",0,function(a,c){if(c?.startsWith("image/"))return!0;let d=a.split(".").pop()?.toLowerCase();return!!d&&b.has(d)},"localPathToApiUrl",0,function(a){let b=a.replace(/\\/g,"/").match(/\/assets\/([^/]+)\/([^/]+)$/);return b?`/api/files/assets/${b[1]}/${b[2]}`:a}])},532615,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(986099),e=a.i(54384),f=a.i(912868),g=a.i(10390),h=a.i(91756);let i=(0,a.i(711796).default)("chevrons-right",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);var j=a.i(747798),k=a.i(951192);function l({children:a,onClick:c,title:d,disabled:e,...f}){return(0,b.jsx)("button",{type:"button",onClick:a=>{a.stopPropagation(),e||c()},title:d,disabled:e,className:"inline-flex h-8 w-8 items-center justify-center rounded-md text-white/80 hover:bg-white/15 hover:text-white disabled:opacity-30 disabled:hover:bg-transparent disabled:hover:text-white/80 transition-colors",...f,children:a})}a.s(["ImageLightbox",0,function({imageUrl:a,filename:m,open:n,onOpenChange:o,assets:p,currentIndex:q,onIndexChange:r}){let{t:s}=(0,k.useI18n)(),[t,u]=(0,c.useState)(1),[v,w]=(0,c.useState)({x:0,y:0}),[x,y]=(0,c.useState)(!1),z=(0,c.useRef)(null),[A,B]=(0,c.useState)(!1),C=!!p&&p.length>1&&"number"==typeof q&&!!r,D=C&&q>0,E=C&&q<p.length-1,F=C?p.length:0,G=F>0?Math.ceil(F/10):0,H=C?Math.floor(q/10):0,I=10*H,J=Math.min(I+10,F),K=G>1,L=C&&H>0,M=C&&H<G-1;(0,c.useEffect)(()=>{B(!0)},[]),(0,c.useEffect)(()=>{u(1),w({x:0,y:0})},[a]),(0,c.useEffect)(()=>{if(!n)return;let a=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=a}},[n]);let N=(0,c.useCallback)(()=>o(!1),[o]),O=(0,c.useCallback)(()=>{C&&D&&r(q-1)},[C,D,r,q]),P=(0,c.useCallback)(()=>{C&&E&&r(q+1)},[C,E,r,q]),Q=(0,c.useCallback)(()=>{C&&L&&r((H-1)*10)},[C,L,r,H]),R=(0,c.useCallback)(()=>{C&&M&&r(Math.min((H+1)*10,F-1))},[C,M,r,H,F]),S=(0,c.useCallback)(()=>{u(a=>Math.min(8,1.25*a))},[]),T=(0,c.useCallback)(()=>{u(a=>{let b=Math.max(.1,a/1.25);return b<=1&&w({x:0,y:0}),b})},[]),U=(0,c.useCallback)(()=>{u(1),w({x:0,y:0})},[]);(0,c.useEffect)(()=>{if(!n)return;let a=a=>{switch(a.key){case"Escape":a.preventDefault(),N();break;case"ArrowLeft":C&&(a.preventDefault(),O());break;case"ArrowRight":C&&(a.preventDefault(),P());break;case"+":case"=":a.preventDefault(),S();break;case"-":case"_":a.preventDefault(),T();break;case"0":a.preventDefault(),U()}};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[n,C,N,O,P,S,T,U]);let V=(0,c.useRef)(!1),W=()=>{x&&y(!1),z.current=null},X=x?"cursor-grabbing":"cursor-grab";if(!n||!A)return null;let Y=(0,b.jsxs)("div",{className:"fixed inset-0 z-[100] bg-black/70 dark:bg-black/40 backdrop-blur-md",role:"dialog","aria-modal":"true","aria-label":s("assets.lightbox.zoomFit"),children:[(0,b.jsxs)("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 max-w-[80vw] truncate rounded-md bg-black/40 px-3 py-1 text-xs text-white/80 backdrop-blur-sm pointer-events-none",children:[m,C?` \xb7 ${q+1} / ${p.length}`:""]}),(0,b.jsx)("div",{className:`absolute inset-0 flex items-center justify-center overflow-hidden select-none ${X}`,onClick:a=>{a.target===a.currentTarget&&N()},onWheel:a=>{a.preventDefault();let b=-a.deltaY>0?1.25:.8;u(a=>{let c=Math.min(8,Math.max(.1,a*b));return c<=1&&w({x:0,y:0}),c})},children:a&&(0,b.jsx)("img",{src:a,alt:m,onClick:a=>{a.stopPropagation(),V.current&&(V.current=!1)},onPointerDown:a=>{0===a.button&&(a.stopPropagation(),V.current=!1,a.target.setPointerCapture?.(a.pointerId),z.current={x:a.clientX,y:a.clientY,panX:v.x,panY:v.y},y(!0))},onPointerMove:a=>{if(!z.current)return;let b=a.clientX-z.current.x,c=a.clientY-z.current.y;Math.abs(b)+Math.abs(c)>5&&(V.current=!0),x&&w({x:z.current.panX+b,y:z.current.panY+c})},onPointerUp:W,onPointerLeave:W,onPointerCancel:W,className:"max-h-[88vh] max-w-[92vw] object-contain pointer-events-auto",style:{transform:`translate3d(${v.x}px, ${v.y}px, 0) scale(${t})`,transformOrigin:"center center",transition:x?"none":"transform 120ms ease-out",willChange:x?"transform":"auto"},draggable:!1})}),(0,b.jsxs)("div",{className:"absolute bottom-4 left-1/2 -translate-x-1/2 z-10 flex flex-col items-center gap-2 max-w-[92vw]",onClick:a=>a.stopPropagation(),children:[C&&(0,b.jsxs)("div",{className:"flex items-center gap-1 rounded-lg bg-black/50 px-1.5 py-1.5 backdrop-blur-md ring-1 ring-white/10 max-w-[92vw]",children:[K&&(0,b.jsx)(l,{onClick:Q,title:`${s("assets.lightbox.prev")} (-10)`,"aria-label":`${s("assets.lightbox.prev")} (-10)`,disabled:!L,children:(0,b.jsx)(h.ChevronsLeft,{className:"h-4 w-4"})}),(0,b.jsx)(l,{onClick:O,title:s("assets.lightbox.prev"),"aria-label":s("assets.lightbox.prev"),disabled:!D,children:(0,b.jsx)(f.ChevronLeft,{className:"h-4 w-4"})}),(0,b.jsx)("div",{className:"flex items-center gap-1.5",children:p.slice(I,J).map((a,c)=>{let d=I+c,e=d===q;return(0,b.jsx)("button",{type:"button",onClick:a=>{a.stopPropagation(),e||r(d)},title:a.filename,className:`shrink-0 h-12 w-12 overflow-hidden rounded-md transition-all ${e?"ring-2 ring-white opacity-100 scale-105":"opacity-60 hover:opacity-100 ring-1 ring-white/20"}`,children:(0,b.jsx)("img",{src:a.url,alt:a.filename,className:"h-full w-full object-cover",loading:"lazy",draggable:!1})},a.url+d)})}),(0,b.jsx)(l,{onClick:P,title:s("assets.lightbox.next"),"aria-label":s("assets.lightbox.next"),disabled:!E,children:(0,b.jsx)(g.ChevronRight,{className:"h-4 w-4"})}),K&&(0,b.jsx)(l,{onClick:R,title:`${s("assets.lightbox.next")} (+10)`,"aria-label":`${s("assets.lightbox.next")} (+10)`,disabled:!M,children:(0,b.jsx)(i,{className:"h-4 w-4"})})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1 rounded-lg bg-black/50 px-2 py-1.5 backdrop-blur-md ring-1 ring-white/10",children:[(0,b.jsxs)("span",{className:"px-2 text-xs text-white/80 tabular-nums select-none min-w-12 text-center",children:[Math.round(100*t),"%"]}),(0,b.jsx)(l,{onClick:U,title:s("assets.lightbox.reset"),"aria-label":s("assets.lightbox.reset"),disabled:1===t&&0===v.x&&0===v.y,children:(0,b.jsx)(j.RotateCcw,{className:"h-4 w-4"})}),(0,b.jsx)("div",{className:"mx-1 h-5 w-px bg-white/20"}),(0,b.jsx)(l,{onClick:N,title:s("assets.lightbox.close"),"aria-label":s("assets.lightbox.close"),children:(0,b.jsx)(e.X,{className:"h-4 w-4"})})]})]})]});return(0,d.createPortal)(Y,document.body)}],532615)},757942,950314,a=>{"use strict";var b=a.i(90393);a.s([],757942),a.s(["Streamdown",()=>b.C],950314)},894148,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(704494);a.i(757942);var e=a.i(950314),f=a.i(814574),g=a.i(951192);a.s(["TextPreviewDialog",0,function({url:a,filename:h,open:i,onOpenChange:j}){let{t:k}=(0,g.useI18n)(),[l,m]=(0,c.useState)(null),[n,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(null);(0,c.useEffect)(()=>{if(!i||!a){m(null),q(null);return}let b=!1;return o(!0),q(null),m(null),fetch(a).then(a=>{let b=a.headers.get("content-length");if(b&&parseInt(b,10)>1048576)throw Error("FILE_TOO_LARGE");return a.text()}).then(a=>{if(a.length>1048576)throw Error("FILE_TOO_LARGE");b||(m(a),o(!1))}).catch(a=>{b||(a instanceof Error&&"FILE_TOO_LARGE"===a.message?q(k("assets.fileTooLarge")):q(k("assets.previewError")),o(!1))}),()=>{b=!0}},[i,a,k]);let r=h.split(".").pop()?.toLowerCase();return(0,b.jsx)(f.Dialog,{open:i,onOpenChange:j,children:(0,b.jsxs)(f.DialogContent,{className:"w-[min(960px,92vw)] max-w-none sm:max-w-none h-[85vh] max-h-[85vh] flex flex-col p-0 gap-0",children:[(0,b.jsx)("h3",{className:"text-sm font-medium truncate px-5 py-3 border-b border-border/50",children:h}),(0,b.jsx)("div",{className:"flex-1 overflow-auto px-5 py-4",children:(()=>{if(n)return(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 gap-2",children:[(0,b.jsx)(d.Loader2,{className:"size-5 animate-spin text-muted-foreground"}),(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:k("assets.loadingPreview")})]});if(p)return(0,b.jsx)("p",{className:"text-sm text-destructive",children:p});if(null===l)return null;if("md"===r)return(0,b.jsx)("div",{className:"text-sm leading-relaxed",children:(0,b.jsx)(e.Streamdown,{children:l})});if("json"===r){let a;try{a=JSON.stringify(JSON.parse(l),null,2)}catch{a=l}return(0,b.jsx)("pre",{className:"font-mono text-xs whitespace-pre-wrap text-foreground",children:a})}return(0,b.jsx)("pre",{className:"font-mono text-sm whitespace-pre-wrap text-foreground",children:l})})()})]})})}])},241031,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("4049cfc56e2da9b9b7e717a76373b435fef4fd17d4",b.callServer,void 0,b.findSourceMapURL,"createTask");a.s(["createTask",0,c])},521899,207376,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("4071d500cfd633efad06893be4a11d597ae5d43e70",b.callServer,void 0,b.findSourceMapURL,"getTaskNotes");a.s(["getTaskNotes",0,c],521899);let d=(0,b.createServerReference)("40667f664d7da6becf5929f4c03d4d5d6e681849fd",b.callServer,void 0,b.findSourceMapURL,"getTaskAssets");a.s(["getTaskAssets",0,d],207376)},113047,293136,929937,a=>{"use strict";let b=(0,a.i(711796).default)("chevrons-up-down",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);a.s(["ChevronsUpDown",0,b],113047);var c=a.i(780410);let d=(0,c.createServerReference)("4049a05e851777d9e680764affe43919dccf8ec91f",c.callServer,void 0,c.findSourceMapURL,"getProjectBranches");a.s(["getProjectBranches",0,d],293136);let e=(0,c.createServerReference)("40cbe68583e2b526c5505f0a70094553e4ed32241c",c.callServer,void 0,c.findSourceMapURL,"fetchRemoteBranches");a.s(["fetchRemoteBranches",0,e],929937)},445798,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(814574),e=a.i(699570),f=a.i(866718),g=a.i(429246),h=a.i(412783),i=a.i(577565),j=a.i(668116),k=a.i(113047),l=a.i(580701),m=a.i(599209),n=a.i(419622),o=a.i(951192),p=a.i(293136),q=a.i(929937),r=a.i(780410);let s=(0,r.createServerReference)("40058fe18f1a01ec44bee38d7f12bfd017e4ac427c",r.callServer,void 0,r.findSourceMapURL,"getCurrentBranch");var t=a.i(57413);a.s(["CreateTaskDialog",0,function({open:a,onOpenChange:r,onSubmit:u,onUpdate:v,defaultStatus:w="TODO",editTask:x,editTaskLabelIds:y,prefillFromTask:z,labels:A,projectType:B,projectLocalPath:C,versions:D,defaultVersionId:E}){let F,[G,H]=(0,c.useState)(""),[I,J]=(0,c.useState)(""),[K,L]=(0,c.useState)("MEDIUM"),[M,N]=(0,c.useState)(""),[O,P]=(0,c.useState)([]),[Q,R]=(0,c.useState)([]),[S,T]=(0,c.useState)(!1),[U,V]=(0,c.useState)(""),[W,X]=(0,c.useState)(!1),[Y,Z]=(0,c.useState)(!0),[$,_]=(0,c.useState)(!1),[aa,ab]=(0,c.useState)(null),{t:ac}=(0,o.useI18n)();(0,c.useEffect)(()=>{if(!a||x)return;let b=!1;return(0,t.getConfigValues)(["task.defaultUseWorktree","task.defaultAutoStart"]).then(a=>{if(b)return;let c=a["task.defaultUseWorktree"],d=a["task.defaultAutoStart"];"boolean"==typeof c&&Z(c),"boolean"==typeof d&&_(d)}).catch(()=>{}),()=>{b=!0}},[a,x]);let ad=!!x,ae=!!C;return(0,c.useEffect)(()=>{x?(H(x.title),J(x.description??""),L(x.priority),N(x.subPath??""),P(y??[]),ab(x.versionId??null)):(z?(H(z.title??""),J(z.description??""),L(z.priority??"MEDIUM"),N(z.subPath??""),P(z.labelIds??[])):(H(""),J(""),L("MEDIUM"),N(""),P([])),ab(E??null))},[x,y,z,E]),(0,c.useEffect)(()=>{a||x||(H(""),J(""),L("MEDIUM"),N(""),P([]),R([]),V(""),X(!1),ab(E??null))},[a,x,E]),(0,c.useEffect)(()=>{a&&ae&&!x&&(T(!0),Promise.all([(0,p.getProjectBranches)(C),s(C)]).then(([a,b])=>{R(a);let c=z?.baseBranch??null;c&&a.includes(c)?V(c):V(b&&a.includes(b)?b:a[0]??""),T(!1),(0,q.fetchRemoteBranches)(C).then(()=>{setTimeout(()=>{(0,p.getProjectBranches)(C).then(a=>{R(a),V(b=>a.includes(b)?b:a[0]??"")}).catch(()=>{})},3e3)})}).catch(()=>{R([]),V(""),T(!1)}))},[a,ae,C,x,z]),(0,b.jsx)(d.Dialog,{open:a,onOpenChange:r,disablePointerDismissal:!0,children:(0,b.jsxs)(d.DialogContent,{className:"sm:max-w-md",children:[(0,b.jsx)(d.DialogHeader,{children:(0,b.jsx)(d.DialogTitle,{children:ad?ac("task.edit"):ac("task.create")})}),(0,b.jsxs)("div",{className:"space-y-4 py-2",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(h.Label,{htmlFor:"title",children:ac("task.title")}),(0,b.jsx)(f.Input,{id:"title","data-testid":"task-title",placeholder:ac("task.titlePlaceholder"),value:G,onChange:a=>H(a.target.value),onKeyDown:a=>"Enter"===a.key&&a.preventDefault()})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(h.Label,{htmlFor:"description",children:ac("task.description")}),(0,b.jsx)(g.Textarea,{id:"description",placeholder:ac("task.descPlaceholder"),rows:4,value:I,onChange:a=>J(a.target.value),className:"max-h-[200px] overflow-y-auto"})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(h.Label,{htmlFor:"subPath",children:ac("task.subPath")}),(0,b.jsx)(f.Input,{id:"subPath",placeholder:ac("task.subPathPlaceholder"),value:M,onChange:a=>N(a.target.value)}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:ac("task.subPathHint")})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(h.Label,{children:ac("task.priority")}),(0,b.jsx)("div",{className:"flex gap-1.5",children:["LOW","MEDIUM","HIGH","CRITICAL"].map(a=>{let c={LOW:{label:ac("task.priorityLow"),style:"text-slate-300 border-slate-500/30 bg-slate-500/10"},MEDIUM:{label:ac("task.priorityMedium"),style:"text-amber-300 border-amber-500/30 bg-amber-500/10"},HIGH:{label:ac("task.priorityHigh"),style:"text-orange-300 border-orange-500/30 bg-orange-500/10"},CRITICAL:{label:ac("task.priorityCritical"),style:"text-rose-300 border-rose-500/30 bg-rose-500/10"}}[a];return(0,b.jsx)("button",{type:"button",onClick:()=>L(a),className:`rounded-lg border px-3 py-1.5 text-xs font-medium transition-all ${K===a?`${c.style} ring-1 ring-current/20`:"border-border text-muted-foreground hover:bg-accent"}`,children:c.label},a)})})]}),ae&&!ad&&(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(h.Label,{children:ac("task.baseBranch")}),S?(0,b.jsx)("div",{className:"text-sm text-muted-foreground",children:ac("task.branchLoading")}):Q.length>0?(0,b.jsxs)(m.Popover,{open:W,onOpenChange:X,children:[(0,b.jsxs)(m.PopoverTrigger,{className:"flex w-full items-center gap-2 rounded-md border border-input bg-background px-3 py-2 text-sm font-mono transition-colors hover:bg-accent focus:outline-none focus:ring-1 focus:ring-ring","data-testid":"branch-selector",children:[(0,b.jsx)(i.GitBranch,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),(0,b.jsx)("span",{className:"flex-1 truncate text-left text-xs",title:U||void 0,children:U||ac("task.branchNone")}),(0,b.jsx)(k.ChevronsUpDown,{className:"h-3.5 w-3.5 shrink-0 opacity-50"})]}),(0,b.jsx)(m.PopoverContent,{className:"w-[min(32rem,90vw)] p-0",align:"start",children:(0,b.jsxs)(n.Command,{children:[(0,b.jsx)(n.CommandInput,{placeholder:ac("task.branchSearch")}),(0,b.jsxs)(n.CommandList,{children:[(0,b.jsx)(n.CommandEmpty,{children:ac("task.branchNone")}),(0,b.jsx)(n.CommandGroup,{children:Q.map(a=>(0,b.jsxs)(n.CommandItem,{value:a,onSelect:()=>{V(a),X(!1)},children:[(0,b.jsx)(i.GitBranch,{className:"h-3 w-3 text-muted-foreground shrink-0 mr-2"}),(0,b.jsx)("span",{className:"flex-1 truncate font-mono",title:a,children:a}),a===U&&(0,b.jsx)(j.Check,{className:"h-3 w-3 text-primary shrink-0 ml-auto"})]},a))})]})]})})]}):(0,b.jsx)("div",{className:"text-sm text-muted-foreground",children:ac("task.branchNone")}),(0,b.jsxs)("div",{className:"mt-3 flex items-center gap-2",children:[(0,b.jsx)(h.Label,{className:"text-xs text-muted-foreground",children:ac("task.worktreeLabel")}),(0,b.jsx)("div",{className:"flex gap-1",children:[!0,!1].map(a=>(0,b.jsx)("button",{type:"button",onClick:()=>Z(a),className:`rounded-md px-3 py-1 text-xs font-medium transition-colors ${Y===a?"bg-primary text-primary-foreground":"bg-muted text-muted-foreground hover:text-foreground"}`,children:a?ac("task.worktreeYes"):ac("task.worktreeNo")},String(a)))})]}),(0,b.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,b.jsx)(h.Label,{className:"text-xs text-muted-foreground",children:ac("task.autoStartLabel")}),(0,b.jsx)("div",{className:"flex gap-1",children:[!0,!1].map(a=>(0,b.jsx)("button",{type:"button",onClick:()=>_(a),className:`rounded-md px-3 py-1 text-xs font-medium transition-colors ${$===a?"bg-primary text-primary-foreground":"bg-muted text-muted-foreground hover:text-foreground"}`,children:a?ac("task.autoStartYes"):ac("task.autoStartNo")},String(a)))})]})]}),A.length>0&&(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(h.Label,{children:ac("task.labels")}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5",children:A.map(a=>{let c=O.includes(a.id);return(0,b.jsx)("button",{type:"button",onClick:()=>{P(b=>c?b.filter(b=>b!==a.id):[...b,a.id])},className:`rounded-full px-2.5 py-1 text-xs font-medium transition-all ${c?"ring-1 ring-current/30":"opacity-50 hover:opacity-80"}`,style:{backgroundColor:a.color+"20",color:a.color,borderColor:c?a.color+"40":"transparent",borderWidth:"1px"},children:a.name},a.id)})})]}),(!ad||D&&D.length>0)&&(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(h.Label,{children:ac("version.picker.label")}),D&&D.length>0?(0,b.jsxs)(l.Select,{value:aa??"__none__",onValueChange:a=>ab("__none__"===a?null:a),children:[(0,b.jsx)(l.SelectTrigger,{children:(0,b.jsx)("span",{className:"truncate text-sm",children:aa&&(F=D.find(a=>a.id===aa))?F.isCurrent?`${F.number} \xb7 ${F.name} \xb7 ${ac("version.currentShort")}`:`${F.number} \xb7 ${F.name}`:ac("version.picker.none")})}),(0,b.jsxs)(l.SelectContent,{children:[(0,b.jsx)(l.SelectItem,{value:"__none__",children:ac("version.picker.none")}),D.map(a=>(0,b.jsx)(l.SelectItem,{value:a.id,children:a.isCurrent?`${a.number} \xb7 ${a.name} \xb7 ${ac("version.currentShort")}`:`${a.number} \xb7 ${a.name}`},a.id))]})]}):(0,b.jsx)("p",{className:"rounded-md border border-dashed border-border px-3 py-2 text-xs text-muted-foreground",children:ac("version.picker.empty")})]})]}),(0,b.jsxs)(d.DialogFooter,{children:[(0,b.jsx)(e.Button,{variant:"outline",onClick:()=>r(!1),children:ac("common.cancel")}),(0,b.jsx)(e.Button,{onClick:()=>{G.trim()&&(ad&&v?v(x.id,{title:G,description:I,priority:K,labelIds:O,subPath:M.trim()||"",versionId:aa}):u({title:G,description:I,priority:K,status:w,labelIds:O,...ae&&Y&&U?{baseBranch:U}:{},...M.trim()?{subPath:M.trim()}:{},versionId:aa,autoStart:$}),H(""),J(""),L("MEDIUM"),N(""),P([]),R([]),V(""),Z(!0),ab(null),r(!1))},className:"bg-primary/10 text-primary ring-1 ring-primary/20 hover:bg-primary/15",children:ad?ac("common.save"):ac("common.create")})]})]})})}],445798)},510650,a=>{"use strict";var b=a.i(728778);a.i(757942);var c=a.i(950314),d=a.i(814574),e=a.i(951192);a.s(["NotePreviewDialog",0,function({note:a,open:f,onOpenChange:g}){let{t:h}=(0,e.useI18n)();return(0,b.jsx)(d.Dialog,{open:f,onOpenChange:g,children:(0,b.jsxs)(d.DialogContent,{className:"w-[min(960px,92vw)] max-w-none sm:max-w-none h-[85vh] max-h-[85vh] flex flex-col p-0 gap-0",children:[(0,b.jsx)("h3",{className:"text-sm font-medium truncate px-5 py-3 border-b border-border/50",children:a?.title}),(0,b.jsx)("div",{className:"flex-1 overflow-auto px-5 py-4",children:a&&a.content.trim()?(0,b.jsx)("div",{className:"text-sm leading-relaxed",children:(0,b.jsx)(c.Streamdown,{children:a.content})}):(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:h("taskPage.noteEmpty")})})]})})}])},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"])},87339,a=>{"use strict";let b=(0,a.i(711796).default)("paperclip",[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]]);a.s(["Paperclip",0,b],87339)}];
|
|
1
|
+
module.exports=[161181,a=>{"use strict";let b=new Set(["png","jpg","jpeg","gif","webp","svg","bmp","ico","avif","apng"]);a.s(["isImageAsset",0,function(a,c){if(c?.startsWith("image/"))return!0;let d=a.split(".").pop()?.toLowerCase();return!!d&&b.has(d)},"localPathToApiUrl",0,function(a){let b=a.replace(/\\/g,"/").match(/\/assets\/([^/]+)\/([^/]+)$/);return b?`/api/files/assets/${b[1]}/${b[2]}`:a}])},532615,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(986099),e=a.i(54384),f=a.i(912868),g=a.i(10390),h=a.i(91756);let i=(0,a.i(711796).default)("chevrons-right",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);var j=a.i(747798),k=a.i(951192);function l({children:a,onClick:c,title:d,disabled:e,...f}){return(0,b.jsx)("button",{type:"button",onClick:a=>{a.stopPropagation(),e||c()},title:d,disabled:e,className:"inline-flex h-8 w-8 items-center justify-center rounded-md text-white/80 hover:bg-white/15 hover:text-white disabled:opacity-30 disabled:hover:bg-transparent disabled:hover:text-white/80 transition-colors",...f,children:a})}a.s(["ImageLightbox",0,function({imageUrl:a,filename:m,open:n,onOpenChange:o,assets:p,currentIndex:q,onIndexChange:r}){let{t:s}=(0,k.useI18n)(),[t,u]=(0,c.useState)(1),[v,w]=(0,c.useState)({x:0,y:0}),[x,y]=(0,c.useState)(!1),z=(0,c.useRef)(null),[A,B]=(0,c.useState)(!1),C=!!p&&p.length>1&&"number"==typeof q&&!!r,D=C&&q>0,E=C&&q<p.length-1,F=C?p.length:0,G=F>0?Math.ceil(F/10):0,H=C?Math.floor(q/10):0,I=10*H,J=Math.min(I+10,F),K=G>1,L=C&&H>0,M=C&&H<G-1;(0,c.useEffect)(()=>{B(!0)},[]),(0,c.useEffect)(()=>{u(1),w({x:0,y:0})},[a]),(0,c.useEffect)(()=>{if(!n)return;let a=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=a}},[n]);let N=(0,c.useCallback)(()=>o(!1),[o]),O=(0,c.useCallback)(()=>{C&&D&&r(q-1)},[C,D,r,q]),P=(0,c.useCallback)(()=>{C&&E&&r(q+1)},[C,E,r,q]),Q=(0,c.useCallback)(()=>{C&&L&&r((H-1)*10)},[C,L,r,H]),R=(0,c.useCallback)(()=>{C&&M&&r(Math.min((H+1)*10,F-1))},[C,M,r,H,F]),S=(0,c.useCallback)(()=>{u(a=>Math.min(8,1.25*a))},[]),T=(0,c.useCallback)(()=>{u(a=>{let b=Math.max(.1,a/1.25);return b<=1&&w({x:0,y:0}),b})},[]),U=(0,c.useCallback)(()=>{u(1),w({x:0,y:0})},[]);(0,c.useEffect)(()=>{if(!n)return;let a=a=>{switch(a.key){case"Escape":a.preventDefault(),N();break;case"ArrowLeft":C&&(a.preventDefault(),O());break;case"ArrowRight":C&&(a.preventDefault(),P());break;case"+":case"=":a.preventDefault(),S();break;case"-":case"_":a.preventDefault(),T();break;case"0":a.preventDefault(),U()}};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[n,C,N,O,P,S,T,U]);let V=(0,c.useRef)(!1),W=()=>{x&&y(!1),z.current=null},X=x?"cursor-grabbing":"cursor-grab";if(!n||!A)return null;let Y=(0,b.jsxs)("div",{className:"fixed inset-0 z-[100] bg-black/70 dark:bg-black/40 backdrop-blur-md",role:"dialog","aria-modal":"true","aria-label":s("assets.lightbox.zoomFit"),children:[(0,b.jsxs)("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 max-w-[80vw] truncate rounded-md bg-black/40 px-3 py-1 text-xs text-white/80 backdrop-blur-sm pointer-events-none",children:[m,C?` \xb7 ${q+1} / ${p.length}`:""]}),(0,b.jsx)("div",{className:`absolute inset-0 flex items-center justify-center overflow-hidden select-none ${X}`,onClick:a=>{a.target===a.currentTarget&&N()},onWheel:a=>{a.preventDefault();let b=-a.deltaY>0?1.25:.8;u(a=>{let c=Math.min(8,Math.max(.1,a*b));return c<=1&&w({x:0,y:0}),c})},children:a&&(0,b.jsx)("img",{src:a,alt:m,onClick:a=>{a.stopPropagation(),V.current&&(V.current=!1)},onPointerDown:a=>{0===a.button&&(a.stopPropagation(),V.current=!1,a.target.setPointerCapture?.(a.pointerId),z.current={x:a.clientX,y:a.clientY,panX:v.x,panY:v.y},y(!0))},onPointerMove:a=>{if(!z.current)return;let b=a.clientX-z.current.x,c=a.clientY-z.current.y;Math.abs(b)+Math.abs(c)>5&&(V.current=!0),x&&w({x:z.current.panX+b,y:z.current.panY+c})},onPointerUp:W,onPointerLeave:W,onPointerCancel:W,className:"max-h-[88vh] max-w-[92vw] object-contain pointer-events-auto",style:{transform:`translate3d(${v.x}px, ${v.y}px, 0) scale(${t})`,transformOrigin:"center center",transition:x?"none":"transform 120ms ease-out",willChange:x?"transform":"auto"},draggable:!1})}),(0,b.jsxs)("div",{className:"absolute bottom-4 left-1/2 -translate-x-1/2 z-10 flex flex-col items-center gap-2 max-w-[92vw]",onClick:a=>a.stopPropagation(),children:[C&&(0,b.jsxs)("div",{className:"flex items-center gap-1 rounded-lg bg-black/50 px-1.5 py-1.5 backdrop-blur-md ring-1 ring-white/10 max-w-[92vw]",children:[K&&(0,b.jsx)(l,{onClick:Q,title:`${s("assets.lightbox.prev")} (-10)`,"aria-label":`${s("assets.lightbox.prev")} (-10)`,disabled:!L,children:(0,b.jsx)(h.ChevronsLeft,{className:"h-4 w-4"})}),(0,b.jsx)(l,{onClick:O,title:s("assets.lightbox.prev"),"aria-label":s("assets.lightbox.prev"),disabled:!D,children:(0,b.jsx)(f.ChevronLeft,{className:"h-4 w-4"})}),(0,b.jsx)("div",{className:"flex items-center gap-1.5",children:p.slice(I,J).map((a,c)=>{let d=I+c,e=d===q;return(0,b.jsx)("button",{type:"button",onClick:a=>{a.stopPropagation(),e||r(d)},title:a.filename,className:`shrink-0 h-12 w-12 overflow-hidden rounded-md transition-all ${e?"ring-2 ring-white opacity-100 scale-105":"opacity-60 hover:opacity-100 ring-1 ring-white/20"}`,children:(0,b.jsx)("img",{src:a.url,alt:a.filename,className:"h-full w-full object-cover",loading:"lazy",draggable:!1})},a.url+d)})}),(0,b.jsx)(l,{onClick:P,title:s("assets.lightbox.next"),"aria-label":s("assets.lightbox.next"),disabled:!E,children:(0,b.jsx)(g.ChevronRight,{className:"h-4 w-4"})}),K&&(0,b.jsx)(l,{onClick:R,title:`${s("assets.lightbox.next")} (+10)`,"aria-label":`${s("assets.lightbox.next")} (+10)`,disabled:!M,children:(0,b.jsx)(i,{className:"h-4 w-4"})})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1 rounded-lg bg-black/50 px-2 py-1.5 backdrop-blur-md ring-1 ring-white/10",children:[(0,b.jsxs)("span",{className:"px-2 text-xs text-white/80 tabular-nums select-none min-w-12 text-center",children:[Math.round(100*t),"%"]}),(0,b.jsx)(l,{onClick:U,title:s("assets.lightbox.reset"),"aria-label":s("assets.lightbox.reset"),disabled:1===t&&0===v.x&&0===v.y,children:(0,b.jsx)(j.RotateCcw,{className:"h-4 w-4"})}),(0,b.jsx)("div",{className:"mx-1 h-5 w-px bg-white/20"}),(0,b.jsx)(l,{onClick:N,title:s("assets.lightbox.close"),"aria-label":s("assets.lightbox.close"),children:(0,b.jsx)(e.X,{className:"h-4 w-4"})})]})]})]});return(0,d.createPortal)(Y,document.body)}],532615)},757942,950314,a=>{"use strict";var b=a.i(90393);a.s([],757942),a.s(["Streamdown",()=>b.C],950314)},894148,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(704494);a.i(757942);var e=a.i(950314),f=a.i(814574),g=a.i(951192);a.s(["TextPreviewDialog",0,function({url:a,filename:h,open:i,onOpenChange:j}){let{t:k}=(0,g.useI18n)(),[l,m]=(0,c.useState)(null),[n,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(null);(0,c.useEffect)(()=>{if(!i||!a){m(null),q(null);return}let b=!1;return o(!0),q(null),m(null),fetch(a).then(a=>{let b=a.headers.get("content-length");if(b&&parseInt(b,10)>1048576)throw Error("FILE_TOO_LARGE");return a.text()}).then(a=>{if(a.length>1048576)throw Error("FILE_TOO_LARGE");b||(m(a),o(!1))}).catch(a=>{b||(a instanceof Error&&"FILE_TOO_LARGE"===a.message?q(k("assets.fileTooLarge")):q(k("assets.previewError")),o(!1))}),()=>{b=!0}},[i,a,k]);let r=h.split(".").pop()?.toLowerCase();return(0,b.jsx)(f.Dialog,{open:i,onOpenChange:j,children:(0,b.jsxs)(f.DialogContent,{className:"w-[min(960px,92vw)] max-w-none sm:max-w-none h-[85vh] max-h-[85vh] flex flex-col p-0 gap-0",children:[(0,b.jsx)("h3",{className:"text-sm font-medium truncate px-5 py-3 border-b border-border/50",children:h}),(0,b.jsx)("div",{className:"flex-1 overflow-auto px-5 py-4",children:(()=>{if(n)return(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 gap-2",children:[(0,b.jsx)(d.Loader2,{className:"size-5 animate-spin text-muted-foreground"}),(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:k("assets.loadingPreview")})]});if(p)return(0,b.jsx)("p",{className:"text-sm text-destructive",children:p});if(null===l)return null;if("md"===r)return(0,b.jsx)("div",{className:"text-sm leading-relaxed",children:(0,b.jsx)(e.Streamdown,{children:l})});if("json"===r){let a;try{a=JSON.stringify(JSON.parse(l),null,2)}catch{a=l}return(0,b.jsx)("pre",{className:"font-mono text-xs whitespace-pre-wrap text-foreground",children:a})}return(0,b.jsx)("pre",{className:"font-mono text-sm whitespace-pre-wrap text-foreground",children:l})})()})]})})}])},54170,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("402e85ec4396a11b5dd34cd7cdfc0554c5a6da8e43",b.callServer,void 0,b.findSourceMapURL,"createTask");a.s(["createTask",0,c])},742087,610774,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("40d4a6aee33fce81ebc992faef0b138d0f4139f2ac",b.callServer,void 0,b.findSourceMapURL,"getTaskNotes");a.s(["getTaskNotes",0,c],742087);let d=(0,b.createServerReference)("40687478b52c9bd20d2fb45d2dccbdd0a27b983012",b.callServer,void 0,b.findSourceMapURL,"getTaskAssets");a.s(["getTaskAssets",0,d],610774)},113047,960866,216299,a=>{"use strict";let b=(0,a.i(711796).default)("chevrons-up-down",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);a.s(["ChevronsUpDown",0,b],113047);var c=a.i(780410);let d=(0,c.createServerReference)("408de6a5bbd33b1b8dc5cdbf12ceef703b46d10bdc",c.callServer,void 0,c.findSourceMapURL,"getProjectBranches");a.s(["getProjectBranches",0,d],960866);let e=(0,c.createServerReference)("40d19e977eb4d7445a1d74f41f4acb28a4de7627ad",c.callServer,void 0,c.findSourceMapURL,"fetchRemoteBranches");a.s(["fetchRemoteBranches",0,e],216299)},445798,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(814574),e=a.i(699570),f=a.i(866718),g=a.i(429246),h=a.i(412783),i=a.i(577565),j=a.i(668116),k=a.i(113047),l=a.i(580701),m=a.i(599209),n=a.i(419622),o=a.i(951192),p=a.i(960866),q=a.i(216299),r=a.i(780410);let s=(0,r.createServerReference)("40557dea0623e698b5d798fee4944c97722f680050",r.callServer,void 0,r.findSourceMapURL,"getCurrentBranch");var t=a.i(862440);a.s(["CreateTaskDialog",0,function({open:a,onOpenChange:r,onSubmit:u,onUpdate:v,defaultStatus:w="TODO",editTask:x,editTaskLabelIds:y,prefillFromTask:z,labels:A,projectType:B,projectLocalPath:C,versions:D,defaultVersionId:E}){let F,[G,H]=(0,c.useState)(""),[I,J]=(0,c.useState)(""),[K,L]=(0,c.useState)("MEDIUM"),[M,N]=(0,c.useState)(""),[O,P]=(0,c.useState)([]),[Q,R]=(0,c.useState)([]),[S,T]=(0,c.useState)(!1),[U,V]=(0,c.useState)(""),[W,X]=(0,c.useState)(!1),[Y,Z]=(0,c.useState)(!0),[$,_]=(0,c.useState)(!1),[aa,ab]=(0,c.useState)(null),{t:ac}=(0,o.useI18n)();(0,c.useEffect)(()=>{if(!a||x)return;let b=!1;return(0,t.getConfigValues)(["task.defaultUseWorktree","task.defaultAutoStart"]).then(a=>{if(b)return;let c=a["task.defaultUseWorktree"],d=a["task.defaultAutoStart"];"boolean"==typeof c&&Z(c),"boolean"==typeof d&&_(d)}).catch(()=>{}),()=>{b=!0}},[a,x]);let ad=!!x,ae=!!C;return(0,c.useEffect)(()=>{x?(H(x.title),J(x.description??""),L(x.priority),N(x.subPath??""),P(y??[]),ab(x.versionId??null)):(z?(H(z.title??""),J(z.description??""),L(z.priority??"MEDIUM"),N(z.subPath??""),P(z.labelIds??[])):(H(""),J(""),L("MEDIUM"),N(""),P([])),ab(E??null))},[x,y,z,E]),(0,c.useEffect)(()=>{a||x||(H(""),J(""),L("MEDIUM"),N(""),P([]),R([]),V(""),X(!1),ab(E??null))},[a,x,E]),(0,c.useEffect)(()=>{a&&ae&&!x&&(T(!0),Promise.all([(0,p.getProjectBranches)(C),s(C)]).then(([a,b])=>{R(a);let c=z?.baseBranch??null;c&&a.includes(c)?V(c):V(b&&a.includes(b)?b:a[0]??""),T(!1),(0,q.fetchRemoteBranches)(C).then(()=>{setTimeout(()=>{(0,p.getProjectBranches)(C).then(a=>{R(a),V(b=>a.includes(b)?b:a[0]??"")}).catch(()=>{})},3e3)})}).catch(()=>{R([]),V(""),T(!1)}))},[a,ae,C,x,z]),(0,b.jsx)(d.Dialog,{open:a,onOpenChange:r,disablePointerDismissal:!0,children:(0,b.jsxs)(d.DialogContent,{className:"sm:max-w-md",children:[(0,b.jsx)(d.DialogHeader,{children:(0,b.jsx)(d.DialogTitle,{children:ad?ac("task.edit"):ac("task.create")})}),(0,b.jsxs)("div",{className:"space-y-4 py-2",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(h.Label,{htmlFor:"title",children:ac("task.title")}),(0,b.jsx)(f.Input,{id:"title","data-testid":"task-title",placeholder:ac("task.titlePlaceholder"),value:G,onChange:a=>H(a.target.value),onKeyDown:a=>"Enter"===a.key&&a.preventDefault()})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(h.Label,{htmlFor:"description",children:ac("task.description")}),(0,b.jsx)(g.Textarea,{id:"description",placeholder:ac("task.descPlaceholder"),rows:4,value:I,onChange:a=>J(a.target.value),className:"max-h-[200px] overflow-y-auto"})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(h.Label,{htmlFor:"subPath",children:ac("task.subPath")}),(0,b.jsx)(f.Input,{id:"subPath",placeholder:ac("task.subPathPlaceholder"),value:M,onChange:a=>N(a.target.value)}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:ac("task.subPathHint")})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(h.Label,{children:ac("task.priority")}),(0,b.jsx)("div",{className:"flex gap-1.5",children:["LOW","MEDIUM","HIGH","CRITICAL"].map(a=>{let c={LOW:{label:ac("task.priorityLow"),style:"text-slate-300 border-slate-500/30 bg-slate-500/10"},MEDIUM:{label:ac("task.priorityMedium"),style:"text-amber-300 border-amber-500/30 bg-amber-500/10"},HIGH:{label:ac("task.priorityHigh"),style:"text-orange-300 border-orange-500/30 bg-orange-500/10"},CRITICAL:{label:ac("task.priorityCritical"),style:"text-rose-300 border-rose-500/30 bg-rose-500/10"}}[a];return(0,b.jsx)("button",{type:"button",onClick:()=>L(a),className:`rounded-lg border px-3 py-1.5 text-xs font-medium transition-all ${K===a?`${c.style} ring-1 ring-current/20`:"border-border text-muted-foreground hover:bg-accent"}`,children:c.label},a)})})]}),ae&&!ad&&(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(h.Label,{children:ac("task.baseBranch")}),S?(0,b.jsx)("div",{className:"text-sm text-muted-foreground",children:ac("task.branchLoading")}):Q.length>0?(0,b.jsxs)(m.Popover,{open:W,onOpenChange:X,children:[(0,b.jsxs)(m.PopoverTrigger,{className:"flex w-full items-center gap-2 rounded-md border border-input bg-background px-3 py-2 text-sm font-mono transition-colors hover:bg-accent focus:outline-none focus:ring-1 focus:ring-ring","data-testid":"branch-selector",children:[(0,b.jsx)(i.GitBranch,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),(0,b.jsx)("span",{className:"flex-1 truncate text-left text-xs",title:U||void 0,children:U||ac("task.branchNone")}),(0,b.jsx)(k.ChevronsUpDown,{className:"h-3.5 w-3.5 shrink-0 opacity-50"})]}),(0,b.jsx)(m.PopoverContent,{className:"w-[min(32rem,90vw)] p-0",align:"start",children:(0,b.jsxs)(n.Command,{children:[(0,b.jsx)(n.CommandInput,{placeholder:ac("task.branchSearch")}),(0,b.jsxs)(n.CommandList,{children:[(0,b.jsx)(n.CommandEmpty,{children:ac("task.branchNone")}),(0,b.jsx)(n.CommandGroup,{children:Q.map(a=>(0,b.jsxs)(n.CommandItem,{value:a,onSelect:()=>{V(a),X(!1)},children:[(0,b.jsx)(i.GitBranch,{className:"h-3 w-3 text-muted-foreground shrink-0 mr-2"}),(0,b.jsx)("span",{className:"flex-1 truncate font-mono",title:a,children:a}),a===U&&(0,b.jsx)(j.Check,{className:"h-3 w-3 text-primary shrink-0 ml-auto"})]},a))})]})]})})]}):(0,b.jsx)("div",{className:"text-sm text-muted-foreground",children:ac("task.branchNone")}),(0,b.jsxs)("div",{className:"mt-3 flex items-center gap-2",children:[(0,b.jsx)(h.Label,{className:"text-xs text-muted-foreground",children:ac("task.worktreeLabel")}),(0,b.jsx)("div",{className:"flex gap-1",children:[!0,!1].map(a=>(0,b.jsx)("button",{type:"button",onClick:()=>Z(a),className:`rounded-md px-3 py-1 text-xs font-medium transition-colors ${Y===a?"bg-primary text-primary-foreground":"bg-muted text-muted-foreground hover:text-foreground"}`,children:a?ac("task.worktreeYes"):ac("task.worktreeNo")},String(a)))})]}),(0,b.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,b.jsx)(h.Label,{className:"text-xs text-muted-foreground",children:ac("task.autoStartLabel")}),(0,b.jsx)("div",{className:"flex gap-1",children:[!0,!1].map(a=>(0,b.jsx)("button",{type:"button",onClick:()=>_(a),className:`rounded-md px-3 py-1 text-xs font-medium transition-colors ${$===a?"bg-primary text-primary-foreground":"bg-muted text-muted-foreground hover:text-foreground"}`,children:a?ac("task.autoStartYes"):ac("task.autoStartNo")},String(a)))})]})]}),A.length>0&&(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(h.Label,{children:ac("task.labels")}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5",children:A.map(a=>{let c=O.includes(a.id);return(0,b.jsx)("button",{type:"button",onClick:()=>{P(b=>c?b.filter(b=>b!==a.id):[...b,a.id])},className:`rounded-full px-2.5 py-1 text-xs font-medium transition-all ${c?"ring-1 ring-current/30":"opacity-50 hover:opacity-80"}`,style:{backgroundColor:a.color+"20",color:a.color,borderColor:c?a.color+"40":"transparent",borderWidth:"1px"},children:a.name},a.id)})})]}),(!ad||D&&D.length>0)&&(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(h.Label,{children:ac("version.picker.label")}),D&&D.length>0?(0,b.jsxs)(l.Select,{value:aa??"__none__",onValueChange:a=>ab("__none__"===a?null:a),children:[(0,b.jsx)(l.SelectTrigger,{children:(0,b.jsx)("span",{className:"truncate text-sm",children:aa&&(F=D.find(a=>a.id===aa))?F.isCurrent?`${F.number} \xb7 ${F.name} \xb7 ${ac("version.currentShort")}`:`${F.number} \xb7 ${F.name}`:ac("version.picker.none")})}),(0,b.jsxs)(l.SelectContent,{children:[(0,b.jsx)(l.SelectItem,{value:"__none__",children:ac("version.picker.none")}),D.map(a=>(0,b.jsx)(l.SelectItem,{value:a.id,children:a.isCurrent?`${a.number} \xb7 ${a.name} \xb7 ${ac("version.currentShort")}`:`${a.number} \xb7 ${a.name}`},a.id))]})]}):(0,b.jsx)("p",{className:"rounded-md border border-dashed border-border px-3 py-2 text-xs text-muted-foreground",children:ac("version.picker.empty")})]})]}),(0,b.jsxs)(d.DialogFooter,{children:[(0,b.jsx)(e.Button,{variant:"outline",onClick:()=>r(!1),children:ac("common.cancel")}),(0,b.jsx)(e.Button,{onClick:()=>{G.trim()&&(ad&&v?v(x.id,{title:G,description:I,priority:K,labelIds:O,subPath:M.trim()||"",versionId:aa}):u({title:G,description:I,priority:K,status:w,labelIds:O,...ae&&Y&&U?{baseBranch:U}:{},...M.trim()?{subPath:M.trim()}:{},versionId:aa,autoStart:$}),H(""),J(""),L("MEDIUM"),N(""),P([]),R([]),V(""),Z(!0),ab(null),r(!1))},className:"bg-primary/10 text-primary ring-1 ring-primary/20 hover:bg-primary/15",children:ad?ac("common.save"):ac("common.create")})]})]})})}],445798)},510650,a=>{"use strict";var b=a.i(728778);a.i(757942);var c=a.i(950314),d=a.i(814574),e=a.i(951192);a.s(["NotePreviewDialog",0,function({note:a,open:f,onOpenChange:g}){let{t:h}=(0,e.useI18n)();return(0,b.jsx)(d.Dialog,{open:f,onOpenChange:g,children:(0,b.jsxs)(d.DialogContent,{className:"w-[min(960px,92vw)] max-w-none sm:max-w-none h-[85vh] max-h-[85vh] flex flex-col p-0 gap-0",children:[(0,b.jsx)("h3",{className:"text-sm font-medium truncate px-5 py-3 border-b border-border/50",children:a?.title}),(0,b.jsx)("div",{className:"flex-1 overflow-auto px-5 py-4",children:a&&a.content.trim()?(0,b.jsx)("div",{className:"text-sm leading-relaxed",children:(0,b.jsx)(c.Streamdown,{children:a.content})}):(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:h("taskPage.noteEmpty")})})]})})}])},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"])},87339,a=>{"use strict";let b=(0,a.i(711796).default)("paperclip",[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]]);a.s(["Paperclip",0,b],87339)}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=_134pkit._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[845427,a=>{"use strict";var b=a.i(233405),c=a.i(522734),d=a.i(924868),e=a.i(814747),f=a.i(446786),g=a.i(26683);function h(a){return a.startsWith("~/")||"~"===a?e.default.join(f.default.homedir(),a.slice(1)):a}async function i(a,f,i,k){let l=h(a),m=e.default.join(l,".worktrees","task-"+f),n="task/"+f;if(!(0,c.existsSync)(l))throw Error(`项目本地路径不存在:${l}`);try{(0,b.execFileSync)("git",["rev-parse","--is-inside-work-tree"],{cwd:l,encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]})}catch{throw Error(`项目本地路径不是 Git 仓库,无法创建 worktree:${l}`)}await (0,d.mkdir)(e.default.join(l,".worktrees"),{recursive:!0});let o=(0,b.execFileSync)("git",["worktree","list","--porcelain"],{cwd:l,encoding:"utf-8",timeout:1e4}),p=e.default.normalize(m).replace(/\\/g,"/");if(o.split("\n").some(a=>a.startsWith("worktree ")&&a.slice(9).replace(/\\/g,"/")===p))return j(l,m,k),{worktreePath:m,worktreeBranch:n};if((0,c.existsSync)(m)&&(g.logger.warn(`[worktree] Directory exists but not tracked by git, removing: ${m}`),(0,b.execFileSync)("git",["worktree","remove",m,"--force"],{cwd:l,encoding:"utf-8",timeout:3e4})),(0,b.execFileSync)("git",["branch","--list",n],{cwd:l,encoding:"utf-8",timeout:5e3}).trim())(0,b.execFileSync)("git",["worktree","add",m,n],{cwd:l,encoding:"utf-8",timeout:3e4});else{let a=i;try{(0,b.execFileSync)("git",["rev-parse","--verify",i],{cwd:l,encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]})}catch{try{(0,b.execFileSync)("git",["rev-parse","--verify",`origin/${i}`],{cwd:l,encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]}),a=`origin/${i}`}catch{throw Error(`Base branch '${i}' does not exist locally or on remote. Available branches: `+(0,b.execFileSync)("git",["branch","-a","--format=%(refname:short)"],{cwd:l,encoding:"utf-8",timeout:5e3}).trim().split("\n").join(", "))}}(0,b.execFileSync)("git",["worktree","add","-b",n,m,a],{cwd:l,encoding:"utf-8",timeout:3e4})}return j(l,m,k),{worktreePath:m,worktreeBranch:n}}function j(a,b,d){let f=g.logger.create("worktree"),h=["node_modules",".next"];for(let g of d?["",d]:[""])if((0,c.existsSync)(e.default.join(a,g,"package.json")))for(let d of h){let h=g?e.default.join(g,d):d,i=e.default.join(a,h),j=e.default.join(b,h);if((0,c.existsSync)(i)){try{(0,c.lstatSync)(j);continue}catch{}try{(0,c.symlinkSync)(i,j,"junction"),f.info(`Symlinked ${h}`,{from:i,to:j})}catch(a){f.warn(`Failed to symlink ${h}`,{error:String(a)})}}}}async function k(a,d){let f=h(a),g=e.default.join(f,".worktrees","task-"+d),i="task/"+d;(0,c.existsSync)(g)&&(0,b.execFileSync)("git",["worktree","remove",g,"--force"],{cwd:f,encoding:"utf-8",timeout:3e4}),(0,b.execFileSync)("git",["branch","--list",i],{cwd:f,encoding:"utf-8",timeout:5e3}).trim()&&(0,b.execFileSync)("git",["branch","-D",i],{cwd:f,encoding:"utf-8",timeout:5e3})}a.s(["createWorktree",0,i,"removeWorktree",0,k])},689171,a=>a.a(async(b,c)=>{try{var d=a.i(815429),e=a.i(761469),f=a.i(188139),g=a.i(495370),h=a.i(845427),i=a.i(75681),j=a.i(496877),k=a.i(26683),l=a.i(279697),m=a.i(980999),n=a.i(630048),o=b([m]);[m]=o.then?(await o)():o;let B=k.logger.create("task-actions");async function p(a){let b=j.createTaskSchema.parse(a),c=await e.db.task.create({data:{title:b.title,description:b.description,projectId:b.projectId,priority:b.priority??"MEDIUM",status:b.status??"TODO",baseBranch:b.baseBranch??null,subPath:b.subPath??null,versionId:b.versionId??null}});return b.labelIds&&b.labelIds.length>0&&await e.db.taskLabel.createMany({data:b.labelIds.map(a=>({taskId:c.id,labelId:a}))}),(0,f.revalidatePath)("/workspaces"),c}async function q(b,c){j.taskStatusSchema.parse(c);let d=await e.db.task.update({where:{id:b},data:{status:c,doneAt:"DONE"===c?new Date:null},include:{project:!0}});if("DONE"===c&&!d.baseBranch&&d.project?.localPath)try{let{execFileSync:c}=await a.A(144264),f=c("git",["rev-parse","HEAD"],{cwd:d.project.localPath,encoding:"utf-8",timeout:5e3}).trim();if(f){let a=await e.db.taskExecution.findFirst({where:{taskId:b},orderBy:{createdAt:"desc"}});a&&await e.db.taskExecution.update({where:{id:a.id},data:{mergeCommit:f}})}}catch{}if("DONE"===c&&(a.A(662330).then(({captureTaskDreaming:a})=>{a(b).catch(()=>{})}).catch(()=>{}),a.A(200442).then(({captureTaskOverview:a})=>{a(b).catch(()=>{})}).catch(()=>{})),"DONE"===c||"CANCELLED"===c)try{let{destroySession:c}=await a.A(98813);c(b)}catch(a){B.error("PTY session destroy failed",a,{taskId:b})}if("CANCELLED"===c&&d.project?.localPath)try{let{captureTaskOverview:c}=await a.A(200442);await c(b,{kind:"cancelled"})}catch(a){B.error("Task overview capture failed",a,{taskId:b})}if("CANCELLED"===c&&d.project?.localPath)try{await (0,h.removeWorktree)(d.project.localPath,b)}catch(a){B.error("Worktree cleanup failed",a,{taskId:b})}return(0,f.revalidatePath)("/workspaces"),d}async function r(a,b){let{labelIds:c,...d}=j.updateTaskSchema.parse(b),h=await e.db.task.update({where:{id:a},data:d});return void 0!==c&&await (0,g.setTaskLabels)(a,c),(0,f.revalidatePath)("/workspaces"),h}async function s(a){i.z.string().cuid().parse(a);let b=await e.db.task.findUniqueOrThrow({where:{id:a},select:{pinned:!0}}),c=await e.db.task.update({where:{id:a},data:{pinned:!b.pinned}});return(0,f.revalidatePath)("/workspaces"),c}async function t(b){let c=await e.db.task.findUnique({where:{id:b},include:{project:!0}});try{let{destroySession:c}=await a.A(98813);c(b)}catch{}if(c?.project?.localPath)try{await (0,h.removeWorktree)(c.project.localPath,b)}catch{}await e.db.task.delete({where:{id:b}}),(0,f.revalidatePath)("/workspaces")}async function u(a){let b=await (0,m.getArchiveDelayDays)();return e.db.task.findMany({where:{projectId:a,...(0,l.visibleTaskWhere)(b)},orderBy:[{pinned:"desc"},{order:"asc"},{createdAt:"desc"}]})}async function v(a){return a.trim()?e.db.task.findMany({where:{OR:[{title:{contains:a}},{description:{contains:a}}]},include:{project:{include:{workspace:!0}}},take:20,orderBy:{updatedAt:"desc"}}):[]}async function w(a){let b=await (0,m.getArchiveDelayDays)();return e.db.task.findMany({where:{projectId:a,...(0,l.archivedTaskWhere)(b)},include:{labels:{include:{label:!0}},version:{select:{id:!0,number:!0,name:!0}},executions:{orderBy:{createdAt:"desc"},take:1}},orderBy:{updatedAt:"desc"}})}async function x(b){let{execFileSync:c}=await a.A(144264),{existsSync:d}=await a.A(323970),f=await e.db.task.findUnique({where:{id:b}}),g=await e.db.taskExecution.findFirst({where:{taskId:b},orderBy:{createdAt:"desc"}});if(!g?.worktreePath||!d(g.worktreePath))return{clean:!0,files:[],hasCommits:!1,lastCommitMessage:null,commitLog:[],hasWorktree:!1};let h=g.worktreePath,i=f?.baseBranch||"main";try{let a=c("git",["status","--porcelain"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim(),b=a?a.split("\n").map(a=>a.trim()).filter(Boolean):[],d=0===b.length,e=!1,f=null,g=[];try{let a=c("git",["merge-base",i,"HEAD"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim(),b=c("git",["rev-list","--count",`${a}..HEAD`],{cwd:h,encoding:"utf-8",timeout:5e3}).trim();if(e=parseInt(b,10)>0){f=c("git",["log","-1","--format=%B"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim();let b=c("git",["log","--oneline",`${a}..HEAD`],{cwd:h,encoding:"utf-8",timeout:5e3}).trim();g=b?b.split("\n").filter(Boolean):[]}}catch{}return{clean:d,files:b,hasCommits:e,lastCommitMessage:f,commitLog:g,hasWorktree:!0}}catch{return{clean:!0,files:[],hasCommits:!1,lastCommitMessage:null,commitLog:[],hasWorktree:!0}}}async function y(b,c){let{execFileSync:d}=await a.A(144264),{existsSync:f}=await a.A(323970),g=await e.db.taskExecution.findFirst({where:{taskId:b},orderBy:{createdAt:"desc"}});if(!g?.worktreePath||!f(g.worktreePath))throw Error("No active worktree for this task");let h=g.worktreePath;if(d("git",["add","-A"],{cwd:h,timeout:1e4}),!d("git",["status","--porcelain"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim())throw Error("No changes to commit");return d("git",["commit","-m",c],{cwd:h,encoding:"utf-8",timeout:15e3}),{hash:d("git",["rev-parse","--short","HEAD"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim()}}async function z(a){return/^c[a-z0-9]{20,30}$/.test(a)?e.db.task.findUnique({where:{id:a},include:{labels:{include:{label:!0}},version:{select:{id:!0,number:!0,name:!0}},project:{select:{id:!0,name:!0,type:!0,localPath:!0,workspaceId:!0}},executions:{orderBy:{createdAt:"desc"},take:1,select:{summary:!0,status:!0,endedAt:!0,gitStats:!0,worktreePath:!0}},_count:{select:{assets:!0}}}}):null}async function A(a){let b=await (0,m.getArchiveDelayDays)();return e.db.task.count({where:{projectId:a,...(0,l.archivedTaskWhere)(b)}})}(0,n.ensureServerEntryExports)([p,q,r,s,t,u,v,w,x,y,z,A]),(0,d.registerServerReference)(p,"
|
|
1
|
+
module.exports=[845427,a=>{"use strict";var b=a.i(233405),c=a.i(522734),d=a.i(924868),e=a.i(814747),f=a.i(446786),g=a.i(26683);function h(a){return a.startsWith("~/")||"~"===a?e.default.join(f.default.homedir(),a.slice(1)):a}async function i(a,f,i,k){let l=h(a),m=e.default.join(l,".worktrees","task-"+f),n="task/"+f;if(!(0,c.existsSync)(l))throw Error(`项目本地路径不存在:${l}`);try{(0,b.execFileSync)("git",["rev-parse","--is-inside-work-tree"],{cwd:l,encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]})}catch{throw Error(`项目本地路径不是 Git 仓库,无法创建 worktree:${l}`)}await (0,d.mkdir)(e.default.join(l,".worktrees"),{recursive:!0});let o=(0,b.execFileSync)("git",["worktree","list","--porcelain"],{cwd:l,encoding:"utf-8",timeout:1e4}),p=e.default.normalize(m).replace(/\\/g,"/");if(o.split("\n").some(a=>a.startsWith("worktree ")&&a.slice(9).replace(/\\/g,"/")===p))return j(l,m,k),{worktreePath:m,worktreeBranch:n};if((0,c.existsSync)(m)&&(g.logger.warn(`[worktree] Directory exists but not tracked by git, removing: ${m}`),(0,b.execFileSync)("git",["worktree","remove",m,"--force"],{cwd:l,encoding:"utf-8",timeout:3e4})),(0,b.execFileSync)("git",["branch","--list",n],{cwd:l,encoding:"utf-8",timeout:5e3}).trim())(0,b.execFileSync)("git",["worktree","add",m,n],{cwd:l,encoding:"utf-8",timeout:3e4});else{let a=i;try{(0,b.execFileSync)("git",["rev-parse","--verify",i],{cwd:l,encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]})}catch{try{(0,b.execFileSync)("git",["rev-parse","--verify",`origin/${i}`],{cwd:l,encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]}),a=`origin/${i}`}catch{throw Error(`Base branch '${i}' does not exist locally or on remote. Available branches: `+(0,b.execFileSync)("git",["branch","-a","--format=%(refname:short)"],{cwd:l,encoding:"utf-8",timeout:5e3}).trim().split("\n").join(", "))}}(0,b.execFileSync)("git",["worktree","add","-b",n,m,a],{cwd:l,encoding:"utf-8",timeout:3e4})}return j(l,m,k),{worktreePath:m,worktreeBranch:n}}function j(a,b,d){let f=g.logger.create("worktree"),h=["node_modules",".next"];for(let g of d?["",d]:[""])if((0,c.existsSync)(e.default.join(a,g,"package.json")))for(let d of h){let h=g?e.default.join(g,d):d,i=e.default.join(a,h),j=e.default.join(b,h);if((0,c.existsSync)(i)){try{(0,c.lstatSync)(j);continue}catch{}try{(0,c.symlinkSync)(i,j,"junction"),f.info(`Symlinked ${h}`,{from:i,to:j})}catch(a){f.warn(`Failed to symlink ${h}`,{error:String(a)})}}}}async function k(a,d){let f=h(a),g=e.default.join(f,".worktrees","task-"+d),i="task/"+d;(0,c.existsSync)(g)&&(0,b.execFileSync)("git",["worktree","remove",g,"--force"],{cwd:f,encoding:"utf-8",timeout:3e4}),(0,b.execFileSync)("git",["branch","--list",i],{cwd:f,encoding:"utf-8",timeout:5e3}).trim()&&(0,b.execFileSync)("git",["branch","-D",i],{cwd:f,encoding:"utf-8",timeout:5e3})}a.s(["createWorktree",0,i,"removeWorktree",0,k])},689171,a=>a.a(async(b,c)=>{try{var d=a.i(815429),e=a.i(761469),f=a.i(188139),g=a.i(495370),h=a.i(845427),i=a.i(75681),j=a.i(496877),k=a.i(26683),l=a.i(279697),m=a.i(980999),n=a.i(630048),o=b([m]);[m]=o.then?(await o)():o;let B=k.logger.create("task-actions");async function p(a){let b=j.createTaskSchema.parse(a),c=await e.db.task.create({data:{title:b.title,description:b.description,projectId:b.projectId,priority:b.priority??"MEDIUM",status:b.status??"TODO",baseBranch:b.baseBranch??null,subPath:b.subPath??null,versionId:b.versionId??null}});return b.labelIds&&b.labelIds.length>0&&await e.db.taskLabel.createMany({data:b.labelIds.map(a=>({taskId:c.id,labelId:a}))}),(0,f.revalidatePath)("/workspaces"),c}async function q(b,c){j.taskStatusSchema.parse(c);let d=await e.db.task.update({where:{id:b},data:{status:c,doneAt:"DONE"===c?new Date:null},include:{project:!0}});if("DONE"===c&&!d.baseBranch&&d.project?.localPath)try{let{execFileSync:c}=await a.A(144264),f=c("git",["rev-parse","HEAD"],{cwd:d.project.localPath,encoding:"utf-8",timeout:5e3}).trim();if(f){let a=await e.db.taskExecution.findFirst({where:{taskId:b},orderBy:{createdAt:"desc"}});a&&await e.db.taskExecution.update({where:{id:a.id},data:{mergeCommit:f}})}}catch{}if("DONE"===c&&(a.A(662330).then(({captureTaskDreaming:a})=>{a(b).catch(()=>{})}).catch(()=>{}),a.A(200442).then(({captureTaskOverview:a})=>{a(b).catch(()=>{})}).catch(()=>{})),"DONE"===c||"CANCELLED"===c)try{let{destroySession:c}=await a.A(98813);c(b)}catch(a){B.error("PTY session destroy failed",a,{taskId:b})}if("CANCELLED"===c&&d.project?.localPath)try{let{captureTaskOverview:c}=await a.A(200442);await c(b,{kind:"cancelled"})}catch(a){B.error("Task overview capture failed",a,{taskId:b})}if("CANCELLED"===c&&d.project?.localPath)try{await (0,h.removeWorktree)(d.project.localPath,b)}catch(a){B.error("Worktree cleanup failed",a,{taskId:b})}return(0,f.revalidatePath)("/workspaces"),d}async function r(a,b){let{labelIds:c,...d}=j.updateTaskSchema.parse(b),h=await e.db.task.update({where:{id:a},data:d});return void 0!==c&&await (0,g.setTaskLabels)(a,c),(0,f.revalidatePath)("/workspaces"),h}async function s(a){i.z.string().cuid().parse(a);let b=await e.db.task.findUniqueOrThrow({where:{id:a},select:{pinned:!0}}),c=await e.db.task.update({where:{id:a},data:{pinned:!b.pinned}});return(0,f.revalidatePath)("/workspaces"),c}async function t(b){let c=await e.db.task.findUnique({where:{id:b},include:{project:!0}});try{let{destroySession:c}=await a.A(98813);c(b)}catch{}if(c?.project?.localPath)try{await (0,h.removeWorktree)(c.project.localPath,b)}catch{}await e.db.task.delete({where:{id:b}}),(0,f.revalidatePath)("/workspaces")}async function u(a){let b=await (0,m.getArchiveDelayDays)();return e.db.task.findMany({where:{projectId:a,...(0,l.visibleTaskWhere)(b)},orderBy:[{pinned:"desc"},{order:"asc"},{createdAt:"desc"}]})}async function v(a){return a.trim()?e.db.task.findMany({where:{OR:[{title:{contains:a}},{description:{contains:a}}]},include:{project:{include:{workspace:!0}}},take:20,orderBy:{updatedAt:"desc"}}):[]}async function w(a){let b=await (0,m.getArchiveDelayDays)();return e.db.task.findMany({where:{projectId:a,...(0,l.archivedTaskWhere)(b)},include:{labels:{include:{label:!0}},version:{select:{id:!0,number:!0,name:!0}},executions:{orderBy:{createdAt:"desc"},take:1}},orderBy:{updatedAt:"desc"}})}async function x(b){let{execFileSync:c}=await a.A(144264),{existsSync:d}=await a.A(323970),f=await e.db.task.findUnique({where:{id:b}}),g=await e.db.taskExecution.findFirst({where:{taskId:b},orderBy:{createdAt:"desc"}});if(!g?.worktreePath||!d(g.worktreePath))return{clean:!0,files:[],hasCommits:!1,lastCommitMessage:null,commitLog:[],hasWorktree:!1};let h=g.worktreePath,i=f?.baseBranch||"main";try{let a=c("git",["status","--porcelain"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim(),b=a?a.split("\n").map(a=>a.trim()).filter(Boolean):[],d=0===b.length,e=!1,f=null,g=[];try{let a=c("git",["merge-base",i,"HEAD"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim(),b=c("git",["rev-list","--count",`${a}..HEAD`],{cwd:h,encoding:"utf-8",timeout:5e3}).trim();if(e=parseInt(b,10)>0){f=c("git",["log","-1","--format=%B"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim();let b=c("git",["log","--oneline",`${a}..HEAD`],{cwd:h,encoding:"utf-8",timeout:5e3}).trim();g=b?b.split("\n").filter(Boolean):[]}}catch{}return{clean:d,files:b,hasCommits:e,lastCommitMessage:f,commitLog:g,hasWorktree:!0}}catch{return{clean:!0,files:[],hasCommits:!1,lastCommitMessage:null,commitLog:[],hasWorktree:!0}}}async function y(b,c){let{execFileSync:d}=await a.A(144264),{existsSync:f}=await a.A(323970),g=await e.db.taskExecution.findFirst({where:{taskId:b},orderBy:{createdAt:"desc"}});if(!g?.worktreePath||!f(g.worktreePath))throw Error("No active worktree for this task");let h=g.worktreePath;if(d("git",["add","-A"],{cwd:h,timeout:1e4}),!d("git",["status","--porcelain"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim())throw Error("No changes to commit");return d("git",["commit","-m",c],{cwd:h,encoding:"utf-8",timeout:15e3}),{hash:d("git",["rev-parse","--short","HEAD"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim()}}async function z(a){return/^c[a-z0-9]{20,30}$/.test(a)?e.db.task.findUnique({where:{id:a},include:{labels:{include:{label:!0}},version:{select:{id:!0,number:!0,name:!0}},project:{select:{id:!0,name:!0,type:!0,localPath:!0,workspaceId:!0}},executions:{orderBy:{createdAt:"desc"},take:1,select:{summary:!0,status:!0,endedAt:!0,gitStats:!0,worktreePath:!0}},_count:{select:{assets:!0}}}}):null}async function A(a){let b=await (0,m.getArchiveDelayDays)();return e.db.task.count({where:{projectId:a,...(0,l.archivedTaskWhere)(b)}})}(0,n.ensureServerEntryExports)([p,q,r,s,t,u,v,w,x,y,z,A]),(0,d.registerServerReference)(p,"402e85ec4396a11b5dd34cd7cdfc0554c5a6da8e43",null),(0,d.registerServerReference)(q,"608df3d0878f7400b442253b6be02933d22d191194",null),(0,d.registerServerReference)(r,"6047926187e64397462204feca044aaee9e57ba57a",null),(0,d.registerServerReference)(s,"40d872b252462c8e89c22f40ed55d9fc07ba4af75f",null),(0,d.registerServerReference)(t,"407bfe26606c10c7cab0fdb56749eb0c90eca9f006",null),(0,d.registerServerReference)(u,"40e9422bef55ec614efcaa47ec24464fce20cf7111",null),(0,d.registerServerReference)(v,"40e9ac4e506146b7b361cfac596c31f711ad7635b0",null),(0,d.registerServerReference)(w,"407ddd198c37ddc7daf3fd4f5bf0c2d028a2a41cd1",null),(0,d.registerServerReference)(x,"404c188a2cdefd761e4f48d17ea85e83fcecb94f0a",null),(0,d.registerServerReference)(y,"60e4f680fa563ad0d3e0918dadd2c37e15f752f1c9",null),(0,d.registerServerReference)(z,"40a0856cea2cb3dd3930d5b9f4a5bb90b7d00fb2f0",null),(0,d.registerServerReference)(A,"40d4e5e7af41aeb835a875591a51a8b44cbeee40f2",null),a.s(["checkWorktreeClean",0,x,"commitWorktreeChanges",0,y,"createTask",0,p,"deleteTask",0,t,"getArchivedTaskCount",0,A,"getArchivedTasks",0,w,"getProjectTasks",0,u,"getTaskOverview",0,z,"searchTasks",0,v,"toggleTaskPinned",0,s,"updateTask",0,r,"updateTaskStatus",0,q]),c()}catch(a){c(a)}},!1)];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_0djxlqx._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[378322,a=>{"use strict";class b{providers=new Map;register(a){this.providers.set(a.name,a)}get(a){return this.providers.get(a)}getAll(){return Array.from(this.providers.values())}getCliAdapter(a){return this.providers.get(a)?.cli?.adapter??null}getQueryAdapter(a,b){let c=this.providers.get(a);return c?"api"===b?c.api?.adapter??null:c.cliQuery?.adapter??null:null}getAllowedCommands(){let a=[];for(let b of this.providers.values())b.cli?.command&&a.push(b.cli.command);return a}async getAvailableProviders(){let a=[];for(let b of this.providers.values()){let c=!!b.cli&&await b.cli.adapter.isAvailable(),d=c&&b.cli?await b.cli.adapter.getVersion():null,e=!!b.api&&!!process.env[b.api.keyEnvVar],f=!!b.api&&e;a.push({name:b.name,displayName:b.displayName,cli:{available:c,version:d},api:{available:f,keyConfigured:e}})}return a}}var c=a.i(52350),d=a.i(902157),e=a.i(660526),f=a.i(750227),g=a.i(163812),h=a.i(562278);let i=["o4-mini","o3","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","codex-mini-latest"],j=globalThis;if(!j.__providerRegistry){let k=new b;k.register({name:"claude",displayName:"Claude Code",agentFieldValue:"CLAUDE_CODE",cli:{command:"claude",adapter:new c.ClaudeCliAdapter},models:{cli:["sonnet","opus","haiku","claude-sonnet-4-6","claude-opus-4-6","claude-haiku-4-5-20251001"],api:[]}}),k.register({name:"codex",displayName:"Codex CLI",agentFieldValue:"CODEX_CLI",cli:{command:"codex",adapter:new class b{buildSpawnArgs(a){let b=[];a.resumeSessionId?b.push("resume",a.resumeSessionId):a.continueLatest?b.push("resume","--last"):(b.push("--full-auto"),a.extraArgs?.length&&b.push(...a.extraArgs),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.readHooks(),b=(0,h.getPackageRoot)().replace(/\\/g,"/"),c=f.join(b,"scripts","session-start-hook.js").replace(/\\/g,"/"),d=f.join(b,"scripts","post-tool-hook.js").replace(/\\/g,"/"),e=f.join(b,"scripts","stop-hook.js").replace(/\\/g,"/"),g=!1;return g=this.upsertHook(a,"SessionStart","session-start-hook.js",{hooks:[{command:`node "${c}"`,timeout:5,type:"command"}]})||g,g=this.upsertHook(a,"PostToolUse","post-tool-hook.js",{hooks:[{command:`node "${d}"`,timeout:10,type:"command"}],matcher:"Write|Edit|MultiEdit"})||g,(g=this.upsertHook(a,"Stop","stop-hook.js",{hooks:[{command:`node "${e}"`,timeout:5,type:"command"}]})||g)&&(this.writeHooks(a),this.ensureHooksFeatureEnabled()),{ok:!0,method:"file",detail:this.getHooksPath()}}catch(a){return{ok:!1,method:"file",detail:this.getHooksPath(),error:a instanceof Error?a.message:String(a)}}}async repairHookPaths(){try{let a=this.readHooks(),b=(0,h.getPackageRoot)().replace(/\\/g,"/"),c=!1;for(let[d,e]of[["SessionStart","session-start-hook.js"],["PostToolUse","post-tool-hook.js"],["Stop","stop-hook.js"]]){let g=this.getHookArray(a,d),h=g.findIndex(a=>a?.hooks?.some?.(a=>a.command?.includes(e)));if(h<0)continue;let i=f.join(b,"scripts",e).replace(/\\/g,"/"),j=`node "${i}"`,k=g[h]?.hooks?.[0];k&&k.command!==j&&(k.command=j,a[d]=g,c=!0)}c&&(this.writeHooks(a),this.ensureHooksFeatureEnabled())}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.readHooks(),b=["session-start-hook.js","post-tool-hook.js","stop-hook.js"];for(let c of["SessionStart","PostToolUse","Stop"]){let d=this.getHookArray(a,c);a[c]=d.filter(a=>!a.hooks?.some(a=>b.some(b=>a.command?.includes(b))))}return this.writeHooks(a),{ok:!0,method:"file",detail:this.getHooksPath()}}catch(a){return{ok:!1,method:"file",detail:this.getHooksPath(),error:a instanceof Error?a.message:String(a)}}}async isHooksInstalled(){let a=this.readHooks(),b=this.getHookArray(a,"PostToolUse");return this.hasHook(b,"post-tool-hook.js")}async installMcp(a,b={}){let c=this.resolveCommand(),d=["mcp","add",a.name];if(a.env)for(let[b,c]of Object.entries(a.env))d.push("--env",`${b}=${c}`);d.push("--",a.command,...a.args);try{return await this.runCli(c,["mcp","remove",a.name],b.cwd).catch(()=>{}),await this.runCli(c,d,b.cwd),{ok:!0,method:"cli",detail:`${c} ${d.join(" ")}`}}catch(a){return{ok:!1,method:"cli",detail:`${c} ${d.join(" ")}`,error:a instanceof Error?a.message:String(a)}}}async uninstallMcp(a,b={}){let c=this.resolveCommand(),d=["mcp","remove",a];try{return await this.runCli(c,d,b.cwd),{ok:!0,method:"cli",detail:`${c} ${d.join(" ")}`}}catch(a){return{ok:!1,method:"cli",detail:`${c} ${d.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,b){let c=f.join(this.getConfigDir(),"skills",a);try{if(!d.existsSync(b))return{ok:!1,method:"symlink",detail:c,error:`Source skill dir does not exist: ${b}`};d.mkdirSync(f.dirname(c),{recursive:!0});let a=await d.promises.lstat(c).catch(()=>null);if(a)if(!(a.isSymbolicLink()||(0,g.isWindows)()&&a.isDirectory()))return{ok:!1,method:"symlink",detail:c,error:`Refusing to overwrite non-symlink at ${c}`};else try{let a=await d.promises.readlink(c);if(f.resolve(a)===f.resolve(b))return{ok:!0,method:"symlink",detail:`${c} → ${b} (already)`};await d.promises.unlink(c)}catch{if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:c,error:`Refusing to overwrite non-symlink at ${c}`}}let e=(0,g.isWindows)()?"junction":"dir";return await d.promises.symlink(b,c,e),{ok:!0,method:"symlink",detail:`${c} → ${b}`}}catch(a){return{ok:!1,method:"symlink",detail:c,error:a instanceof Error?a.message:String(a)}}}async uninstallSkill(a){let b=f.join(this.getConfigDir(),"skills",a);try{let a=await d.promises.lstat(b).catch(()=>null);if(!a)return{ok:!0,method:"symlink",detail:`${b} (already absent)`};if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:b,error:`Refusing to remove non-symlink at ${b}`};return await d.promises.unlink(b),{ok:!0,method:"symlink",detail:b}}catch(a){return{ok:!1,method:"symlink",detail:b,error:a instanceof Error?a.message:String(a)}}}async isSkillInstalled(a,b){let c=f.join(this.getConfigDir(),"skills",a);try{if(!(await d.promises.lstat(c)).isSymbolicLink())return!1;if(!b)return!0;let a=await d.promises.readlink(c),e=f.isAbsolute(a)?a:f.resolve(f.dirname(c),a);return f.resolve(e)===f.resolve(b)}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 i}getConfigDir(){return f.join(e.homedir(),".codex")}getSettingsPath(){return f.join(this.getConfigDir(),"config.toml")}getSessionsDir(){return f.join(this.getConfigDir(),"sessions")}getApiKeyInfo(){return{envVar:"OPENAI_API_KEY",required:!1}}buildHelloProbeArgs(a){return{command:this.resolveCommand(),args:["exec",a]}}resolveCommand(){return process.env.CODEX_CLI_PATH?process.env.CODEX_CLI_PATH:(0,g.resolveCommandPathSync)("codex")}getHooksPath(){return f.join(this.getConfigDir(),"hooks.json")}readHooks(){try{return JSON.parse(d.readFileSync(this.getHooksPath(),"utf-8")).hooks??{}}catch{return{}}}writeHooks(a){let b=this.getConfigDir();d.existsSync(b)||d.mkdirSync(b,{recursive:!0}),d.writeFileSync(this.getHooksPath(),JSON.stringify({hooks:a},null,2),"utf-8")}ensureHooksFeatureEnabled(){let a=this.getSettingsPath(),b="";try{b=d.readFileSync(a,"utf-8")}catch{}if(/codex_hooks\s*=\s*true/.test(b))return;/\[features\]/.test(b)?b=b.replace(/\[features\]/,"[features]\ncodex_hooks = true"):b+="\n[features]\ncodex_hooks = true\n";let c=this.getConfigDir();d.existsSync(c)||d.mkdirSync(c,{recursive:!0}),d.writeFileSync(a,b,"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)))}}},models:{cli:["o4-mini","o3","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","codex-mini-latest"],api:[]}}),j.__providerRegistry=k}let k=j.__providerRegistry;a.s(["providerRegistry",0,k],378322)},855806,a=>{"use strict";var b=a.i(815429),c=a.i(761469);async function d(a,b={}){let e=b.report,f=e?JSON.stringify(e):null;await c.db.providerConnection.upsert({where:{provider:a},create:{provider:a,lastTestedAt:new Date,testOk:!0,version:b.version??null,mcpInstalled:e?.mcp?.ok??!1,hooksInstalled:e?.hooks?.ok??!1,skillsInstalled:e?.skill?.ok??!1,installLog:f},update:{lastTestedAt:new Date,testOk:!0,version:b.version??null,mcpInstalled:e?.mcp?.ok??!1,hooksInstalled:e?.hooks?.ok??!1,skillsInstalled:e?.skill?.ok??!1,installLog:f}})}async function e(a,b={}){await c.db.providerConnection.upsert({where:{provider:a},create:{provider:a,lastTestedAt:new Date,testOk:!1,installLog:b.reason??null},update:{lastTestedAt:new Date,testOk:!1,mcpInstalled:!1,hooksInstalled:!1,skillsInstalled:!1,installLog:b.reason??null}})}async function f(a){let b=await c.db.providerConnection.findUnique({where:{provider:a}});return!!b&&b.testOk}async function g(){return(await c.db.providerConnection.findMany({where:{testOk:!0},select:{provider:!0},orderBy:{provider:"asc"}})).map(a=>a.provider)}async function h(){return c.db.providerConnection.findMany({select:{provider:!0,lastTestedAt:!0,testOk:!0,version:!0,mcpInstalled:!0,hooksInstalled:!0,skillsInstalled:!0,installLog:!0},orderBy:{provider:"asc"}})}(0,a.i(630048).ensureServerEntryExports)([d,e,f,g,h]),(0,b.registerServerReference)(d,"603c25d35d8303c401517845fe9fed008b560fd2ec",null),(0,b.registerServerReference)(e,"603afb549a4e143a3f44fad799369215edbf49dc9e",null),(0,b.registerServerReference)(f,"40f0aea1a1941e2b4a969c9c985986261a763b2d9f",null),(0,b.registerServerReference)(g,"00f6deb1d54f7b11651b73b3a1072e025fd577e82a",null),(0,b.registerServerReference)(h,"00cc46c1abec7b1a0f00d070f04ca0b521f50c9a71",null),a.s(["getConnectedProviders",0,g,"getProviderConnections",0,h,"isProviderConnected",0,f,"markProviderConnected",0,d,"markProviderDisconnected",0,e])}];
|
|
1
|
+
module.exports=[378322,a=>{"use strict";class b{providers=new Map;register(a){this.providers.set(a.name,a)}get(a){return this.providers.get(a)}getAll(){return Array.from(this.providers.values())}getCliAdapter(a){return this.providers.get(a)?.cli?.adapter??null}getQueryAdapter(a,b){let c=this.providers.get(a);return c?"api"===b?c.api?.adapter??null:c.cliQuery?.adapter??null:null}getAllowedCommands(){let a=[];for(let b of this.providers.values())b.cli?.command&&a.push(b.cli.command);return a}async getAvailableProviders(){let a=[];for(let b of this.providers.values()){let c=!!b.cli&&await b.cli.adapter.isAvailable(),d=c&&b.cli?await b.cli.adapter.getVersion():null,e=!!b.api&&!!process.env[b.api.keyEnvVar],f=!!b.api&&e;a.push({name:b.name,displayName:b.displayName,cli:{available:c,version:d},api:{available:f,keyConfigured:e}})}return a}}var c=a.i(52350),d=a.i(902157),e=a.i(660526),f=a.i(750227),g=a.i(163812),h=a.i(562278);let i=["o4-mini","o3","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","codex-mini-latest"],j=globalThis;if(!j.__providerRegistry){let k=new b;k.register({name:"claude",displayName:"Claude Code",agentFieldValue:"CLAUDE_CODE",cli:{command:"claude",adapter:new c.ClaudeCliAdapter},models:{cli:["sonnet","opus","haiku","claude-sonnet-4-6","claude-opus-4-6","claude-haiku-4-5-20251001"],api:[]}}),k.register({name:"codex",displayName:"Codex CLI",agentFieldValue:"CODEX_CLI",cli:{command:"codex",adapter:new class b{buildSpawnArgs(a){let b=[];a.resumeSessionId?b.push("resume",a.resumeSessionId):a.continueLatest?b.push("resume","--last"):(b.push("--full-auto"),a.extraArgs?.length&&b.push(...a.extraArgs),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.readHooks(),b=(0,h.getPackageRoot)().replace(/\\/g,"/"),c=f.join(b,"scripts","session-start-hook.js").replace(/\\/g,"/"),d=f.join(b,"scripts","post-tool-hook.js").replace(/\\/g,"/"),e=f.join(b,"scripts","stop-hook.js").replace(/\\/g,"/"),g=!1;return g=this.upsertHook(a,"SessionStart","session-start-hook.js",{hooks:[{command:`node "${c}"`,timeout:5,type:"command"}]})||g,g=this.upsertHook(a,"PostToolUse","post-tool-hook.js",{hooks:[{command:`node "${d}"`,timeout:10,type:"command"}],matcher:"Write|Edit|MultiEdit"})||g,(g=this.upsertHook(a,"Stop","stop-hook.js",{hooks:[{command:`node "${e}"`,timeout:5,type:"command"}]})||g)&&(this.writeHooks(a),this.ensureHooksFeatureEnabled()),{ok:!0,method:"file",detail:this.getHooksPath()}}catch(a){return{ok:!1,method:"file",detail:this.getHooksPath(),error:a instanceof Error?a.message:String(a)}}}async repairHookPaths(){try{let a=this.readHooks(),b=(0,h.getPackageRoot)().replace(/\\/g,"/"),c=!1;for(let[d,e]of[["SessionStart","session-start-hook.js"],["PostToolUse","post-tool-hook.js"],["Stop","stop-hook.js"]]){let g=this.getHookArray(a,d),h=g.findIndex(a=>a?.hooks?.some?.(a=>a.command?.includes(e)));if(h<0)continue;let i=f.join(b,"scripts",e).replace(/\\/g,"/"),j=`node "${i}"`,k=g[h]?.hooks?.[0];k&&k.command!==j&&(k.command=j,a[d]=g,c=!0)}c&&(this.writeHooks(a),this.ensureHooksFeatureEnabled())}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.readHooks(),b=["session-start-hook.js","post-tool-hook.js","stop-hook.js"];for(let c of["SessionStart","PostToolUse","Stop"]){let d=this.getHookArray(a,c);a[c]=d.filter(a=>!a.hooks?.some(a=>b.some(b=>a.command?.includes(b))))}return this.writeHooks(a),{ok:!0,method:"file",detail:this.getHooksPath()}}catch(a){return{ok:!1,method:"file",detail:this.getHooksPath(),error:a instanceof Error?a.message:String(a)}}}async isHooksInstalled(){let a=this.readHooks(),b=this.getHookArray(a,"PostToolUse");return this.hasHook(b,"post-tool-hook.js")}async installMcp(a,b={}){let c=this.resolveCommand(),d=["mcp","add",a.name];if(a.env)for(let[b,c]of Object.entries(a.env))d.push("--env",`${b}=${c}`);d.push("--",a.command,...a.args);try{return await this.runCli(c,["mcp","remove",a.name],b.cwd).catch(()=>{}),await this.runCli(c,d,b.cwd),{ok:!0,method:"cli",detail:`${c} ${d.join(" ")}`}}catch(a){return{ok:!1,method:"cli",detail:`${c} ${d.join(" ")}`,error:a instanceof Error?a.message:String(a)}}}async uninstallMcp(a,b={}){let c=this.resolveCommand(),d=["mcp","remove",a];try{return await this.runCli(c,d,b.cwd),{ok:!0,method:"cli",detail:`${c} ${d.join(" ")}`}}catch(a){return{ok:!1,method:"cli",detail:`${c} ${d.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,b){let c=f.join(this.getConfigDir(),"skills",a);try{if(!d.existsSync(b))return{ok:!1,method:"symlink",detail:c,error:`Source skill dir does not exist: ${b}`};d.mkdirSync(f.dirname(c),{recursive:!0});let a=await d.promises.lstat(c).catch(()=>null);if(a)if(!(a.isSymbolicLink()||(0,g.isWindows)()&&a.isDirectory()))return{ok:!1,method:"symlink",detail:c,error:`Refusing to overwrite non-symlink at ${c}`};else try{let a=await d.promises.readlink(c);if(f.resolve(a)===f.resolve(b))return{ok:!0,method:"symlink",detail:`${c} → ${b} (already)`};await d.promises.unlink(c)}catch{if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:c,error:`Refusing to overwrite non-symlink at ${c}`}}let e=(0,g.isWindows)()?"junction":"dir";return await d.promises.symlink(b,c,e),{ok:!0,method:"symlink",detail:`${c} → ${b}`}}catch(a){return{ok:!1,method:"symlink",detail:c,error:a instanceof Error?a.message:String(a)}}}async uninstallSkill(a){let b=f.join(this.getConfigDir(),"skills",a);try{let a=await d.promises.lstat(b).catch(()=>null);if(!a)return{ok:!0,method:"symlink",detail:`${b} (already absent)`};if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:b,error:`Refusing to remove non-symlink at ${b}`};return await d.promises.unlink(b),{ok:!0,method:"symlink",detail:b}}catch(a){return{ok:!1,method:"symlink",detail:b,error:a instanceof Error?a.message:String(a)}}}async isSkillInstalled(a,b){let c=f.join(this.getConfigDir(),"skills",a);try{if(!(await d.promises.lstat(c)).isSymbolicLink())return!1;if(!b)return!0;let a=await d.promises.readlink(c),e=f.isAbsolute(a)?a:f.resolve(f.dirname(c),a);return f.resolve(e)===f.resolve(b)}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 i}getConfigDir(){return f.join(e.homedir(),".codex")}getSettingsPath(){return f.join(this.getConfigDir(),"config.toml")}getSessionsDir(){return f.join(this.getConfigDir(),"sessions")}getApiKeyInfo(){return{envVar:"OPENAI_API_KEY",required:!1}}buildHelloProbeArgs(a){return{command:this.resolveCommand(),args:["exec",a]}}resolveCommand(){return process.env.CODEX_CLI_PATH?process.env.CODEX_CLI_PATH:(0,g.resolveCommandPathSync)("codex")}getHooksPath(){return f.join(this.getConfigDir(),"hooks.json")}readHooks(){try{return JSON.parse(d.readFileSync(this.getHooksPath(),"utf-8")).hooks??{}}catch{return{}}}writeHooks(a){let b=this.getConfigDir();d.existsSync(b)||d.mkdirSync(b,{recursive:!0}),d.writeFileSync(this.getHooksPath(),JSON.stringify({hooks:a},null,2),"utf-8")}ensureHooksFeatureEnabled(){let a=this.getSettingsPath(),b="";try{b=d.readFileSync(a,"utf-8")}catch{}if(/codex_hooks\s*=\s*true/.test(b))return;/\[features\]/.test(b)?b=b.replace(/\[features\]/,"[features]\ncodex_hooks = true"):b+="\n[features]\ncodex_hooks = true\n";let c=this.getConfigDir();d.existsSync(c)||d.mkdirSync(c,{recursive:!0}),d.writeFileSync(a,b,"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)))}}},models:{cli:["o4-mini","o3","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","codex-mini-latest"],api:[]}}),j.__providerRegistry=k}let k=j.__providerRegistry;a.s(["providerRegistry",0,k],378322)},855806,a=>{"use strict";var b=a.i(815429),c=a.i(761469);async function d(a,b={}){let e=b.report,f=e?JSON.stringify(e):null;await c.db.providerConnection.upsert({where:{provider:a},create:{provider:a,lastTestedAt:new Date,testOk:!0,version:b.version??null,mcpInstalled:e?.mcp?.ok??!1,hooksInstalled:e?.hooks?.ok??!1,skillsInstalled:e?.skill?.ok??!1,installLog:f},update:{lastTestedAt:new Date,testOk:!0,version:b.version??null,mcpInstalled:e?.mcp?.ok??!1,hooksInstalled:e?.hooks?.ok??!1,skillsInstalled:e?.skill?.ok??!1,installLog:f}})}async function e(a,b={}){await c.db.providerConnection.upsert({where:{provider:a},create:{provider:a,lastTestedAt:new Date,testOk:!1,installLog:b.reason??null},update:{lastTestedAt:new Date,testOk:!1,mcpInstalled:!1,hooksInstalled:!1,skillsInstalled:!1,installLog:b.reason??null}})}async function f(a){let b=await c.db.providerConnection.findUnique({where:{provider:a}});return!!b&&b.testOk}async function g(){return(await c.db.providerConnection.findMany({where:{testOk:!0},select:{provider:!0},orderBy:{provider:"asc"}})).map(a=>a.provider)}async function h(){return c.db.providerConnection.findMany({select:{provider:!0,lastTestedAt:!0,testOk:!0,version:!0,mcpInstalled:!0,hooksInstalled:!0,skillsInstalled:!0,installLog:!0},orderBy:{provider:"asc"}})}(0,a.i(630048).ensureServerEntryExports)([d,e,f,g,h]),(0,b.registerServerReference)(d,"6011da2153b943aefd5653a26d52f05cd4d6e017a0",null),(0,b.registerServerReference)(e,"60b643f37f62f0d4bd62dcde266d7f55309739b1f0",null),(0,b.registerServerReference)(f,"406e3318fd9185f69b96913417a9eadd6bae1c135f",null),(0,b.registerServerReference)(g,"005fca2ce43c91dcf1e7bdf7c1d1819a6c65b1e061",null),(0,b.registerServerReference)(h,"005c278c906b634a7b39ec21a5c8fa5a07715fe30d",null),a.s(["getConnectedProviders",0,g,"getProviderConnections",0,h,"isProviderConnected",0,f,"markProviderConnected",0,d,"markProviderDisconnected",0,e])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_0eufeyj._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
module.exports=[347427,a=>{"use strict";var b=a.i(815429),c=a.i(761469),d=a.i(188139),e=a.i(845427),f=a.i(962620),g=a.i(26683),h=a.i(312369),i=a.i(378322);class j extends Error{code;provider;constructor(a,b,c){super(c),this.code=a,this.provider=b,this.name="AiProviderError"}}var k=a.i(855806);let l="claude",m="请到 Settings → Test Connection 测试该 Provider 后再使用(未注入的 CLI 不能被插槽选中)";async function n(a){return c.db.aiCapabilityConfig.findUnique({where:{slot:a}})}async function o(a){if(a){if(await (0,k.isProviderConnected)(a))return a;throw new j("CLI_NOT_FOUND",a,`Provider "${a}" 未连接:${m}`)}let b=await (0,k.getConnectedProviders)();if(0===b.length)throw new j("CLI_NOT_FOUND",l,`没有任何 AI Provider 已连接:${m}`);return b.includes(l)?l:b[0]}async function p(a){let b=await n(a),c=b?.model??void 0,d=await o(b?.provider??null),e=i.providerRegistry.get(d);if(!e)throw new j("CLI_NOT_FOUND",d,`Provider "${d}" 未注册`);let f=e.cli?.adapter;if(!f)throw new j("UNSUPPORTED_MODE",d,`Provider "${d}" 不支持 CLI 模式`);return{adapter:f,provider:e,model:c}}var q=a.i(924868),r=a.i(446786),s=a.i(814747),t=a.i(630048);let u=g.logger.create("agent-actions"),v=(0,s.join)((0,r.tmpdir)(),"tower-signals");async function w(a,b){try{await (0,q.mkdir)(v,{recursive:!0,mode:448}),await (0,q.writeFile)((0,s.join)(v,`exit-${a}`),String(b),{mode:384})}catch{}}async function x(a,b){let e=await c.db.taskMessage.create({data:{role:"USER",content:b,taskId:a}});return(0,d.revalidatePath)("/workspaces"),{userMessage:e}}async function y(a){return c.db.taskMessage.findMany({where:{taskId:a},orderBy:{createdAt:"asc"}})}async function z(a,b="CLAUDE_CODE",e,f){let g=await c.db.taskExecution.create({data:{taskId:a,agent:b,status:"RUNNING",startedAt:new Date,worktreePath:e??null,worktreeBranch:f??null}});return await c.db.task.update({where:{id:a},data:{status:"IN_PROGRESS"}}),(0,d.revalidatePath)("/workspaces"),g}async function A(a,b="FAILED"){let e=await c.db.taskExecution.update({where:{id:a},data:{status:b,endedAt:new Date}});return(0,d.revalidatePath)("/workspaces"),e}async function B(b){let{destroySession:e,getSession:f}=await a.A(98813),g=f(b),h=g?.getBuffer()??"",i=await c.db.taskExecution.findFirst({where:{taskId:b,status:"RUNNING"},orderBy:{createdAt:"desc"}}),j=await c.db.task.findUnique({where:{id:b},include:{project:{select:{localPath:!0}}}});if(e(b),i){await c.db.taskExecution.update({where:{id:i.id},data:{status:"COMPLETED",endedAt:new Date}}),await c.db.task.update({where:{id:b},data:{status:"IN_REVIEW"}});let d=i.worktreePath||j?.project?.localPath||null,{captureExecutionSummary:e}=await a.A(662330);await e(i.id,b,0,h,d,i.forkCommit)}(0,d.revalidatePath)("/workspaces")}async function C(a){return c.db.taskExecution.findMany({where:{taskId:a},orderBy:{createdAt:"desc"},include:{insightNote:{select:{id:!0,title:!0,content:!0}}}})}async function D(b,e){let g=await c.db.task.findUnique({where:{id:b},include:{project:!0}});if(!g)throw Error("Task not found");if(!g.project?.localPath)throw Error("Project has no local path configured");await c.db.taskExecution.updateMany({where:{taskId:b,status:"RUNNING",NOT:{sessionId:e}},data:{status:"FAILED",endedAt:new Date}});let i=await c.db.taskExecution.findFirst({where:{taskId:b,sessionId:e},orderBy:{createdAt:"desc"}});if(!i)throw Error("Previous execution not found");let j=i.worktreePath??g.project.localPath,k=g.subPath?(0,s.join)(j,g.subPath):j,l=await (0,h.readConfigValue)("terminal.idleTimeoutSec",180),{adapter:m}=await p("terminal"),n=m.buildEnvOverrides({taskId:b,taskTitle:g.title,apiUrl:`http://localhost:${process.env.PORT||"3000"}`,callbackUrl:i.callbackUrl??void 0}),o=await c.db.taskExecution.update({where:{id:i.id},data:{status:"RUNNING",endedAt:null}});await c.db.task.update({where:{id:b},data:{status:"IN_PROGRESS"}}),(0,d.revalidatePath)("/workspaces");let q=await (0,h.readConfigValue)("onboarding.username",""),r=m.buildSpawnArgs({taskId:b,prompt:"",cwd:k,resumeSessionId:e,extraArgs:[...q?["--append-system-prompt",`The user's name is ${q}.`]:[]],envOverrides:n}),t=/no conversation found with session id|unknown session|session .* not found/i;return(0,f.createSession)(b,r.command,r.args,k,()=>{},async d=>{await w(b,d);let f=await c.db.taskExecution.findUnique({where:{id:o.id}});if(f?.status!=="RUNNING")return;let{getSession:h}=await a.A(98813),j=h(b),k=j?.getBuffer()??"";if(0!==d&&t.test(k)){u.info("Session resume failed — retrying with fresh execution",{taskId:b,previousSessionId:e}),await c.db.taskExecution.update({where:{id:o.id},data:{status:"FAILED",endedAt:new Date}}).catch(()=>{});try{await F(b,g.title)}catch(a){u.error("Fresh execution retry also failed",a,{taskId:b})}return}await c.db.taskExecution.update({where:{id:o.id},data:{status:0===d?"COMPLETED":"FAILED",endedAt:new Date}}).catch(()=>{});let l=i.worktreePath||g.project.localPath,{captureExecutionSummary:m}=await a.A(662330);await m(o.id,b,d,k,l,o.forkCommit);let{dispatchTaskCompletionEvent:n}=await a.A(610073);await n({taskId:b,taskTitle:g.title,status:0===d?"COMPLETED":"FAILED",executionId:o.id,workspaceId:g.project.workspaceId}),0===d&&await c.db.task.update({where:{id:b},data:{status:"IN_REVIEW"}}).catch(()=>{})},r.env,void 0,1e3*l),{executionId:o.id,worktreePath:i.worktreePath??j??null}}async function E(b){let e=await c.db.task.findUnique({where:{id:b},include:{project:!0}});if(!e)throw Error("Task not found");if(!e.project?.localPath)throw Error("Project has no local path configured");let g=await c.db.taskExecution.findFirst({where:{taskId:b},orderBy:{createdAt:"desc"}}),{destroySession:i}=await a.A(98813);i(b),await c.db.taskExecution.updateMany({where:{taskId:b,status:"RUNNING"},data:{status:"FAILED",endedAt:new Date}});let j=g?.worktreePath??e.project.localPath,k=e.subPath?(0,s.join)(j,e.subPath):j,l=await (0,h.readConfigValue)("terminal.idleTimeoutSec",180),{adapter:m,provider:n}=await p("terminal"),o=m.buildEnvOverrides({taskId:b,taskTitle:e.title,apiUrl:`http://localhost:${process.env.PORT||"3000"}`}),q=await c.db.taskExecution.create({data:{taskId:b,agent:n.agentFieldValue,status:"RUNNING",startedAt:new Date,worktreePath:g?.worktreePath??null,worktreeBranch:g?.worktreeBranch??null}});await c.db.task.update({where:{id:b},data:{status:"IN_PROGRESS"}}),(0,d.revalidatePath)("/workspaces");let r=await (0,h.readConfigValue)("onboarding.username",""),t=m.buildSpawnArgs({taskId:b,prompt:"",cwd:k,continueLatest:!0,extraArgs:[...r?["--append-system-prompt",`The user's name is ${r}.`]:[]],envOverrides:o});return(0,f.createSession)(b,t.command,t.args,k,()=>{},async d=>{await w(b,d);let f=await c.db.taskExecution.findUnique({where:{id:q.id}});if(f?.status!=="RUNNING")return;let{getSession:h}=await a.A(98813),i=h(b),j=i?.getBuffer()??"";await c.db.taskExecution.update({where:{id:q.id},data:{status:0===d?"COMPLETED":"FAILED",endedAt:new Date}}).catch(()=>{});let k=g?.worktreePath||e.project.localPath,{captureExecutionSummary:l}=await a.A(662330);await l(q.id,b,d,j,k,g?.forkCommit??null);let{dispatchTaskCompletionEvent:m}=await a.A(610073);await m({taskId:b,taskTitle:e.title,status:0===d?"COMPLETED":"FAILED",executionId:q.id,workspaceId:e.project.workspaceId}),0===d&&await c.db.task.update({where:{id:b},data:{status:"IN_REVIEW"}}).catch(()=>{})},t.env,void 0,1e3*l),{executionId:q.id,worktreePath:g?.worktreePath??j??null}}async function F(b,g,i,j,k){let l,m,n=await c.db.task.findUnique({where:{id:b},include:{project:!0}});if(!n)throw Error("Task not found");if(!n.project?.localPath)throw Error("Project has no local path configured");let o=await (0,h.readConfigValue)("system.maxConcurrentExecutions",20);if(await c.db.taskExecution.count({where:{status:"RUNNING"}})>=o)throw Error(`已达并发上限(${o}),请等待其他任务完成后再启动`);let t=await (0,h.readConfigValue)("terminal.idleTimeoutSec",180),{adapter:v,provider:x,model:y}=await p("terminal");await c.db.taskExecution.updateMany({where:{taskId:b,status:"RUNNING"},data:{status:"FAILED",endedAt:new Date}}),"IN_PROGRESS"!==n.status&&(await c.db.task.update({where:{id:b},data:{status:"IN_PROGRESS"}}),(0,d.revalidatePath)("/workspaces"));let z="";if(!k){let a=await c.db.taskMessage.findMany({where:{taskId:b},orderBy:{createdAt:"desc"},take:10});z=[`Task: ${n.title}`,n.description?`Description: ${n.description}`:"",a.length>0?`Recent conversation:
|
|
2
|
-
${a.reverse().map(a=>`${a.role}: ${a.content}`).join("\n")}`:"",g.trim()?`User message: ${g}`:""].filter(Boolean).join("\n\n")}let A=i??n.promptId;if(A){let a=await c.db.agentPrompt.findUnique({where:{id:A}});a?.content&&(m=await (0,q.mkdtemp)((0,s.join)((0,r.tmpdir)(),"tower-pty-")),l=(0,s.join)(m,"instructions.md"),await (0,q.writeFile)(l,a.content,"utf-8"))}let B=null,C=null;if(n.baseBranch&&n.project.localPath){let{worktreePath:a,worktreeBranch:c}=await (0,e.createWorktree)(n.project.localPath,b,n.baseBranch,n.subPath);B=a,C=c}let D=B??n.project.localPath,E=n.subPath?(0,s.join)(D,n.subPath):D,F=await c.db.taskExecution.create({data:{taskId:b,agent:x.agentFieldValue,status:"RUNNING",startedAt:new Date,worktreePath:B??null,worktreeBranch:C??null,callbackUrl:j??null}}),G=null;if(n.project.localPath)try{let b,{execFileSync:d}=await a.A(144264);(b=B&&n.baseBranch?d("git",["merge-base",n.baseBranch,"HEAD"],{cwd:B,encoding:"utf-8",timeout:5e3}).trim():d("git",["rev-parse","HEAD"],{cwd:n.project.localPath,encoding:"utf-8",timeout:5e3}).trim())&&(G=b,await c.db.taskExecution.update({where:{id:F.id},data:{forkCommit:b}}))}catch{}let H="";if(l){let{readFile:b}=await a.A(260815);H+=await b(l,"utf-8")}let I=await (0,h.readConfigValue)("onboarding.username","");I&&(H+=(H?"\n":"")+`The user's name is ${I}.`);let J=v.buildSpawnArgs({taskId:b,prompt:z,cwd:E,extraArgs:[...H?["--append-system-prompt",H]:[],...y?["--model",y]:[]],envOverrides:v.buildEnvOverrides({taskId:b,taskTitle:n.title,apiUrl:`http://localhost:${process.env.PORT||"3000"}`,callbackUrl:j??void 0})});return(0,f.createSession)(b,J.command,J.args,E,()=>{},async d=>{await w(b,d);let e=await c.db.taskExecution.findUnique({where:{id:F.id}});if(e?.status!=="RUNNING")return;let{getSession:f}=await a.A(98813),g=f(b),h=g?.getBuffer()??"";await c.db.taskExecution.update({where:{id:F.id},data:{status:0===d?"COMPLETED":"FAILED",endedAt:new Date}}).catch(a=>{u.error("Failed to update execution status",a)});let i=B||n.project.localPath,{captureExecutionSummary:j}=await a.A(662330);await j(F.id,b,d,h,i,G);let{dispatchTaskCompletionEvent:k}=await a.A(610073);await k({taskId:b,taskTitle:n.title,status:0===d?"COMPLETED":"FAILED",executionId:F.id,workspaceId:n.project.workspaceId}),0===d&&await c.db.task.update({where:{id:b},data:{status:"IN_REVIEW"}}).catch(a=>{u.error("Failed to update task status",a)}),m&&await (0,q.rm)(m,{recursive:!0,force:!0}).catch(()=>{})},J.env,void 0,1e3*t),{executionId:F.id,worktreePath:B??D??null}}async function G(a,b,c,d,e){try{let f=await F(a,b,c,d,e);return{ok:!0,...f}}catch(b){return u.error("startPtyExecution failed",{taskId:a,error:b instanceof Error?b.stack??b.message:String(b)}),{ok:!1,error:b instanceof Error&&b.message?b.message:String(b)}}}async function H(){return(await c.db.taskExecution.findMany({where:{status:"RUNNING"},orderBy:{startedAt:"asc"},include:{task:{include:{project:{include:{workspace:!0}}}}}})).map(a=>({executionId:a.id,taskId:a.taskId,taskTitle:a.task.title,projectId:a.task.project.id,projectName:a.task.project.name,projectAlias:a.task.project.alias,projectLocalPath:a.task.project.localPath,workspaceId:a.task.project.workspace.id,workspaceName:a.task.project.workspace.name,worktreePath:a.worktreePath,subPath:a.task.subPath??null,startedAt:a.startedAt?.toISOString()??null}))}(0,t.ensureServerEntryExports)([x,y,z,A,B,C,D,E,F,G,H]),(0,b.registerServerReference)(x,"
|
|
2
|
+
${a.reverse().map(a=>`${a.role}: ${a.content}`).join("\n")}`:"",g.trim()?`User message: ${g}`:""].filter(Boolean).join("\n\n")}let A=i??n.promptId;if(A){let a=await c.db.agentPrompt.findUnique({where:{id:A}});a?.content&&(m=await (0,q.mkdtemp)((0,s.join)((0,r.tmpdir)(),"tower-pty-")),l=(0,s.join)(m,"instructions.md"),await (0,q.writeFile)(l,a.content,"utf-8"))}let B=null,C=null;if(n.baseBranch&&n.project.localPath){let{worktreePath:a,worktreeBranch:c}=await (0,e.createWorktree)(n.project.localPath,b,n.baseBranch,n.subPath);B=a,C=c}let D=B??n.project.localPath,E=n.subPath?(0,s.join)(D,n.subPath):D,F=await c.db.taskExecution.create({data:{taskId:b,agent:x.agentFieldValue,status:"RUNNING",startedAt:new Date,worktreePath:B??null,worktreeBranch:C??null,callbackUrl:j??null}}),G=null;if(n.project.localPath)try{let b,{execFileSync:d}=await a.A(144264);(b=B&&n.baseBranch?d("git",["merge-base",n.baseBranch,"HEAD"],{cwd:B,encoding:"utf-8",timeout:5e3}).trim():d("git",["rev-parse","HEAD"],{cwd:n.project.localPath,encoding:"utf-8",timeout:5e3}).trim())&&(G=b,await c.db.taskExecution.update({where:{id:F.id},data:{forkCommit:b}}))}catch{}let H="";if(l){let{readFile:b}=await a.A(260815);H+=await b(l,"utf-8")}let I=await (0,h.readConfigValue)("onboarding.username","");I&&(H+=(H?"\n":"")+`The user's name is ${I}.`);let J=v.buildSpawnArgs({taskId:b,prompt:z,cwd:E,extraArgs:[...H?["--append-system-prompt",H]:[],...y?["--model",y]:[]],envOverrides:v.buildEnvOverrides({taskId:b,taskTitle:n.title,apiUrl:`http://localhost:${process.env.PORT||"3000"}`,callbackUrl:j??void 0})});return(0,f.createSession)(b,J.command,J.args,E,()=>{},async d=>{await w(b,d);let e=await c.db.taskExecution.findUnique({where:{id:F.id}});if(e?.status!=="RUNNING")return;let{getSession:f}=await a.A(98813),g=f(b),h=g?.getBuffer()??"";await c.db.taskExecution.update({where:{id:F.id},data:{status:0===d?"COMPLETED":"FAILED",endedAt:new Date}}).catch(a=>{u.error("Failed to update execution status",a)});let i=B||n.project.localPath,{captureExecutionSummary:j}=await a.A(662330);await j(F.id,b,d,h,i,G);let{dispatchTaskCompletionEvent:k}=await a.A(610073);await k({taskId:b,taskTitle:n.title,status:0===d?"COMPLETED":"FAILED",executionId:F.id,workspaceId:n.project.workspaceId}),0===d&&await c.db.task.update({where:{id:b},data:{status:"IN_REVIEW"}}).catch(a=>{u.error("Failed to update task status",a)}),m&&await (0,q.rm)(m,{recursive:!0,force:!0}).catch(()=>{})},J.env,void 0,1e3*t),{executionId:F.id,worktreePath:B??D??null}}async function G(a,b,c,d,e){try{let f=await F(a,b,c,d,e);return{ok:!0,...f}}catch(b){return u.error("startPtyExecution failed",{taskId:a,error:b instanceof Error?b.stack??b.message:String(b)}),{ok:!1,error:b instanceof Error&&b.message?b.message:String(b)}}}async function H(){return(await c.db.taskExecution.findMany({where:{status:"RUNNING"},orderBy:{startedAt:"asc"},include:{task:{include:{project:{include:{workspace:!0}}}}}})).map(a=>({executionId:a.id,taskId:a.taskId,taskTitle:a.task.title,projectId:a.task.project.id,projectName:a.task.project.name,projectAlias:a.task.project.alias,projectLocalPath:a.task.project.localPath,workspaceId:a.task.project.workspace.id,workspaceName:a.task.project.workspace.name,worktreePath:a.worktreePath,subPath:a.task.subPath??null,startedAt:a.startedAt?.toISOString()??null}))}(0,t.ensureServerEntryExports)([x,y,z,A,B,C,D,E,F,G,H]),(0,b.registerServerReference)(x,"60c8cdf4f8bef3e840794ce0da408b375c7410cb76",null),(0,b.registerServerReference)(y,"40c03e876777feb476736b52f33d5c3156617ac49b",null),(0,b.registerServerReference)(z,"784fe4de4589704acd9cf0933d93d16a464614c8b8",null),(0,b.registerServerReference)(A,"6000ddd85132fcbf6f4919395328aa9ccf1e112736",null),(0,b.registerServerReference)(B,"40fb4a3cfd1f13f1a74bd081fca20f90a3b9ef35a5",null),(0,b.registerServerReference)(C,"40e06831163bbca5963715711214d5a3d177192683",null),(0,b.registerServerReference)(D,"6008e5df423433e1ca42a6c239eae6ef0e6b339263",null),(0,b.registerServerReference)(E,"40ef268477c40d3bb03340fa54040ed9d6a89a8c9a",null),(0,b.registerServerReference)(F,"7c33bca4811aad649341efbea3de3db58de511cff4",null),(0,b.registerServerReference)(G,"7c6143afde74b50093dbd95f796cbcfc288755bb5b",null),(0,b.registerServerReference)(H,"00509af393221f0284db035ec968a583719c0a1d91",null),a.s(["continueLatestPtyExecution",0,E,"getActiveExecutionsAcrossWorkspaces",0,H,"getTaskExecutions",0,C,"getTaskMessages",0,y,"resumePtyExecution",0,D,"sendTaskMessage",0,x,"startPtyExecution",0,F,"startPtyExecutionSafe",0,G,"startTaskExecution",0,z,"stopPtyExecution",0,B,"stopTaskExecution",0,A],347427)}];
|
|
3
3
|
|
|
4
4
|
//# sourceMappingURL=src_actions_agent-actions_ts_0~wc.sy._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[610024,a=>{"use strict";a.s([],784230),a.i(784230),a.i(
|
|
1
|
+
module.exports=[610024,a=>{"use strict";a.s([],784230),a.i(784230),a.i(805172),a.i(85130),a.i(838859),a.i(639004),a.i(356873),a.i(37330),a.i(376491),a.i(497215),a.i(363117),a.i(945557);var b=a.i(780410);let c=(0,b.createServerReference)("600ac72c5e7b849bdd17ac024748e60a070ca1fd71",b.callServer,void 0,b.findSourceMapURL,"revealInFinder");a.s(["revealInFinder",0,c],610024)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_actions_file-actions_ts_0gcvqwm._.js.map
|
package/.next/standalone/.next/server/chunks/ssr/src_app_missions_missions-client_tsx_11429lj._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[989799,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(951192),e=a.i(780410);let f=(0,e.createServerReference)("00992747e7fc34c2e73b45acc9e70c568b5f61295c",e.callServer,void 0,e.findSourceMapURL,"getActiveExecutionsAcrossWorkspaces");var g=a.i(591557);let h=[{id:"1x1",label:"1×1",cols:1,rows:1,minHeight:"480px",desc:"Focus mode"},{id:"2x1",label:"2×1",cols:2,rows:1,minHeight:"480px",desc:"Side by side"},{id:"3x2",label:"3×2",cols:3,rows:2,minHeight:"300px",desc:"Default"},{id:"2x2",label:"2×2",cols:2,rows:2,minHeight:"300px",desc:"Balanced"},{id:"4x2",label:"4×2",cols:4,rows:2,minHeight:"240px",desc:"Wide monitor"},{id:"3x3",label:"3×3",cols:3,rows:3,minHeight:"240px",desc:"Max overview"}];var i=a.i(580701),j=a.i(699570),k=a.i(579834),l=a.i(711796);let m=(0,l.default)("rocket",[["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}],["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09",key:"u4xsad"}],["path",{d:"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z",key:"676m9"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05",key:"92ym6u"}]]);var n=a.i(57413);function o({cols:a,rows:c,active:d}){let e=Array.from({length:a*c});return(0,b.jsx)("div",{className:`grid gap-[1px] w-7 h-5 p-[3px] rounded-sm border shrink-0 ${d?"border-primary bg-primary/10":"border-border bg-muted"}`,style:{gridTemplateColumns:`repeat(${a}, 1fr)`,gridTemplateRows:`repeat(${c}, 1fr)`},children:e.map((a,c)=>(0,b.jsx)("div",{className:`rounded-[1px] min-w-0 min-h-0 ${d?"bg-primary":"bg-muted-foreground/40"}`},c))})}let p="custom";function q({value:a,customValue:e,onChange:f}){let{t:g}=(0,d.useI18n)(),[i,k]=(0,c.useState)(!1),l=(0,c.useRef)(null),m=a===p,r=m?null:h.find(b=>b.id===a)??h[2],[s,t]=(0,c.useState)(e?.cols??2),[u,v]=(0,c.useState)(e?.rows??2),[w,x]=(0,c.useState)({minCols:1,maxCols:5,minRows:1,maxRows:5});(0,c.useEffect)(()=>{(0,n.getConfigValues)(["missions.grid.minCols","missions.grid.maxCols","missions.grid.minRows","missions.grid.maxRows"]).then(a=>{x({minCols:a["missions.grid.minCols"]??1,maxCols:a["missions.grid.maxCols"]??5,minRows:a["missions.grid.minRows"]??1,maxRows:a["missions.grid.maxRows"]??5})})},[]),(0,c.useEffect)(()=>{e&&(t(e.cols),v(e.rows))},[e?.cols,e?.rows]),(0,c.useEffect)(()=>{if(i)return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a);function a(a){l.current&&!l.current.contains(a.target)&&k(!1)}},[i]);let y=(a,b,c)=>Math.max(b,Math.min(c,a)),z=m?s:r?.cols??2,A=m?u:r?.rows??2,B=m?`${s}\xd7${u}`:r?.label??"";return(0,b.jsxs)("div",{ref:l,className:"relative",children:[(0,b.jsxs)(j.Button,{variant:"outline",onClick:()=>k(a=>!a),className:"gap-2",children:[(0,b.jsx)(o,{cols:z,rows:A,active:!1}),(0,b.jsx)("span",{children:B}),(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:"▼"})]}),i&&(0,b.jsxs)("div",{className:"absolute right-0 z-50 mt-1 w-72 rounded-lg border border-border bg-popover shadow-xl p-3",children:[(0,b.jsx)("h5",{className:"text-sm font-semibold text-foreground mb-3",children:g("missions.gridPreset")}),(0,b.jsxs)("div",{className:"flex flex-col gap-0.5",children:[h.map(c=>{let d=c.id===a;return(0,b.jsxs)("button",{onClick:()=>{f(c.id),k(!1)},className:`flex items-center gap-3 px-3 py-2.5 rounded-lg transition-colors ${d?"bg-primary/10":"hover:bg-accent"}`,children:[(0,b.jsx)(o,{cols:c.cols,rows:c.rows,active:d}),(0,b.jsx)("span",{className:`text-sm font-medium flex-1 text-left ${d?"text-primary":"text-foreground"}`,children:c.label}),(0,b.jsx)("span",{className:`text-xs ${d?"text-primary/60":"text-muted-foreground"}`,children:c.desc})]},c.id)}),(0,b.jsxs)("div",{className:"mt-1 border-t border-border pt-2",children:[(0,b.jsxs)("button",{onClick:()=>{m||f(p,{cols:s,rows:u})},className:`flex items-center gap-3 px-3 py-2.5 rounded-lg transition-colors w-full ${m?"bg-primary/10":"hover:bg-accent"}`,children:[(0,b.jsx)(o,{cols:s,rows:u,active:m}),(0,b.jsx)("span",{className:`text-sm font-medium flex-1 text-left ${m?"text-primary":"text-foreground"}`,children:g("missions.gridCustom")}),(0,b.jsxs)("span",{className:`text-xs ${m?"text-primary/60":"text-muted-foreground"}`,children:[s,"×",u]})]}),m&&(0,b.jsxs)("div",{className:"flex items-center gap-3 px-3 py-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("label",{className:"text-xs text-muted-foreground",children:g("missions.gridCols")}),(0,b.jsx)("input",{type:"number",min:w.minCols,max:w.maxCols,value:s,onChange:a=>{let b;t(b=y(Number(a.target.value),w.minCols,w.maxCols)),f(p,{cols:b,rows:u})},className:"h-7 w-14 rounded-md border border-border bg-background px-2 text-sm text-center"})]}),(0,b.jsx)("span",{className:"text-muted-foreground",children:"×"}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("label",{className:"text-xs text-muted-foreground",children:g("missions.gridRows")}),(0,b.jsx)("input",{type:"number",min:w.minRows,max:w.maxRows,value:u,onChange:a=>{let b;v(b=y(Number(a.target.value),w.minRows,w.maxRows)),f(p,{cols:s,rows:b})},className:"h-7 w-14 rounded-md border border-border bg-background px-2 text-sm text-center"})]})]})]})]})]})]})}var r=a.i(643228),s=a.i(859103),t=a.i(969032),u=a.i(553798),v=a.i(514126);let w=(0,l.default)("grip-vertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]),x=(0,l.default)("arrow-up-right",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]);var y=a.i(54384);let z=(0,l.default)("square-terminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);var A=a.i(785259),B=a.i(786304),C=a.i(825105),D=a.i(952313);let E=(0,t.default)(async()=>{},{loadableGenerated:{modules:[346069]},ssr:!1,loading:()=>(0,b.jsx)("div",{className:"h-full w-full bg-[#0a0a0a] animate-pulse"})});function F({execution:a,isRemoving:e,removeReason:f,onStop:g,onSessionEnd:h,index:i,mode:k,isSelected:l,onRegisterControls:m,onRequestFocus:n}){let{t:o}=(0,d.useI18n)(),p=(0,u.useRouter)(),{attributes:q,listeners:r,setNodeRef:t,transform:G,transition:H}=(0,s.useSortable)({id:a.executionId}),I={transform:v.CSS.Transform.toString(G),transition:H,opacity:+!e},[J,K]=(0,c.useState)(()=>a.startedAt?Math.floor((Date.now()-new Date(a.startedAt).getTime())/1e3):0);(0,c.useEffect)(()=>{if(e)return;let b=setInterval(()=>{K(a.startedAt?Math.floor((Date.now()-new Date(a.startedAt).getTime())/1e3):0)},1e3);return()=>clearInterval(b)},[a.startedAt,e]);let L=Math.floor(J/60),M=`${L}m ${J%60}s`;async function N(){let b=a.worktreePath??a.projectLocalPath;if(!b)return;let c=a.subPath?`${b}/${a.subPath}`:b;try{await (0,C.openInTerminal)(c)}catch{D.toast.error(o("preview.terminalError"))}}return(0,b.jsxs)("div",{ref:t,style:I,"data-pane-index":i,className:"border border-border rounded-lg overflow-hidden flex flex-col transition-opacity duration-300",...q,children:[(0,b.jsxs)("div",{className:"h-10 px-3 flex items-center gap-1 border-b border-border bg-card shrink-0",children:[(0,b.jsx)("button",{...r,"aria-label":o("missions.dragHandle"),"aria-roledescription":"sortable",className:"cursor-grab text-muted-foreground hover:text-foreground mr-1",children:(0,b.jsx)(w,{className:"h-3.5 w-3.5"})}),(0,b.jsxs)("span",{className:"text-[11px] text-muted-foreground truncate flex-1",children:[a.workspaceName," ›"," ",a.projectAlias||a.projectName," ›"," ",(0,b.jsx)("span",{className:"text-foreground font-semibold",children:a.taskTitle})]}),e?(0,b.jsx)(B.Badge,{variant:"outline",className:"text-[11px] text-muted-foreground bg-muted ml-1 shrink-0",children:"stopped"===f?o("missions.statusStopped"):o("missions.statusCompleted")}):(0,b.jsx)(B.Badge,{variant:"outline",className:"text-[11px] text-primary border-primary/30 bg-primary/10 ml-1 shrink-0",children:o("missions.statusRunning")}),(0,b.jsx)("span",{className:"text-[11px] text-muted-foreground ml-1 shrink-0",children:M}),a.projectLocalPath&&(0,b.jsxs)(A.Tooltip,{children:[(0,b.jsx)(A.TooltipTrigger,{render:(0,b.jsx)(j.Button,{variant:"ghost",size:"icon",className:"ml-1 shrink-0 text-muted-foreground",onClick:N}),children:(0,b.jsx)(z,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(A.TooltipContent,{children:o("missions.openInTerminal")})]}),(0,b.jsxs)(A.Tooltip,{children:[(0,b.jsx)(A.TooltipTrigger,{render:(0,b.jsx)(j.Button,{variant:"ghost",size:"icon",className:"ml-1 shrink-0 text-muted-foreground",onClick:()=>p.push(`/workspaces/${a.workspaceId}/tasks/${a.taskId}`)}),children:(0,b.jsx)(x,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(A.TooltipContent,{children:o("missions.openFullView")})]}),(0,b.jsxs)(A.Tooltip,{children:[(0,b.jsx)(A.TooltipTrigger,{render:(0,b.jsx)(j.Button,{variant:"destructive",size:"icon",className:"ml-1 shrink-0",onClick:()=>g(a.taskId),disabled:e}),children:(0,b.jsx)(y.X,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(A.TooltipContent,{children:o("missions.stopTask")})]})]}),(0,b.jsxs)("div",{className:"relative flex-1 overflow-hidden",children:[(0,b.jsx)(E,{taskId:a.taskId,worktreePath:a.worktreePath??a.projectLocalPath,onSessionEnd:b=>h?.(a.taskId,b),useCanvasRenderer:!0,onReady:b=>m(a.taskId,b)}),"nav"===k&&(0,b.jsx)("button",{type:"button","aria-label":o("missions.hint.label"),onClick:()=>n(a.taskId),className:["absolute inset-0 z-20 flex items-center justify-center cursor-pointer transition-opacity bg-background/60 dark:bg-black/50",l?"ring-2 ring-inset ring-primary":""].join(" "),children:i<9&&(0,b.jsx)("span",{className:["flex h-14 w-14 items-center justify-center rounded-md text-2xl font-semibold tabular-nums border transition-colors",l?"bg-primary text-primary-foreground border-primary":"bg-muted/80 text-foreground border-border"].join(" "),children:i+1})})]})]})}var G=a.i(594003);let H=(0,e.createServerReference)("40c5283a1d5eef23dd3a5e97f45c97dc70247ee0e9",e.callServer,void 0,e.findSourceMapURL,"getWorkspacesWithRecentTasks"),I=(0,e.createServerReference)("403b7a6a9c09e1199c192c2e895930463fcacf322f",e.callServer,void 0,e.findSourceMapURL,"getProjectTasks");var J=a.i(901166),K=a.i(591933),L=a.i(866718),M=a.i(814574),N=a.i(10390);let O=(0,l.default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);var P=a.i(747798),Q=a.i(573242),R=a.i(269876);let S={TODO:"TODO",IN_PROGRESS:"Running",IN_REVIEW:"Review"},T={LOW:"Low",MEDIUM:"Med",HIGH:"High",CRITICAL:"Crit"};function U({status:a}){return(0,b.jsx)("span",{className:`text-[10px] px-1.5 py-0.5 rounded font-medium ${{TODO:"bg-slate-100 text-slate-600 dark:bg-slate-800 dark:text-slate-400",IN_PROGRESS:"bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400",IN_REVIEW:"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400"}[a]??"bg-slate-100 text-slate-600"}`,children:S[a]??a})}function V({task:a,isRunning:c,launchingId:d,onLaunchNew:e,onResume:f,t:g}){let h=a.executions?.[0]?.sessionId,i=d===a.id;return(0,b.jsxs)("div",{className:"group/task grid grid-cols-[minmax(0,1fr)_auto] items-center gap-2 px-3 py-1.5 hover:bg-accent/50 cursor-default",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("p",{className:`text-sm truncate ${c?"italic text-muted-foreground":""}`,children:a.title}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 mt-0.5",children:[(0,b.jsx)(U,{status:a.status}),(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:T[a.priority]??a.priority})]})]}),c?(0,b.jsx)("span",{className:"text-[10px] italic text-muted-foreground",children:g("missions.alreadyMonitored")}):(0,b.jsxs)("div",{className:"flex items-center gap-1 opacity-0 group-hover/task:opacity-100 transition-opacity",children:[h&&(0,b.jsxs)(j.Button,{variant:"outline",className:"h-6 px-2 text-xs",onClick:()=>f(a.id,h),disabled:i,title:g("missions.continueSession"),children:[(0,b.jsx)(P.RotateCcw,{className:"h-3 w-3 mr-1"}),g("missions.continueLabel")]}),(0,b.jsxs)(j.Button,{variant:"outline",className:"h-6 px-2 text-xs",onClick:()=>e(a.id),disabled:i,title:g("missions.launchNew"),children:[(0,b.jsx)(O,{className:"h-3 w-3 mr-1"}),i?"...":g("missions.launchNewLabel")]})]})]})}function W({open:a,onOpenChange:e,onLaunchNew:f,onResume:g,runningTaskIds:h,launchingId:k}){let{t:l}=(0,d.useI18n)(),[m,n]=(0,c.useState)([]),[o,p]=(0,c.useState)(""),[q,r]=(0,c.useState)(""),[s,t]=(0,c.useState)([]),[u,v]=(0,c.useState)("");(0,c.useEffect)(()=>{a&&(p(""),r(""),t([]),v(""),H(100).then(n).catch(()=>D.toast.error(l("missions.error.launchFailed"))))},[a,l]),(0,c.useEffect)(()=>{q?I(q).then(a=>{t(a.filter(a=>"TODO"===a.status||"IN_PROGRESS"===a.status||"IN_REVIEW"===a.status))}).catch(()=>D.toast.error(l("missions.error.launchFailed"))):t([])},[q,l]);let w=(0,c.useMemo)(()=>{let a=[];for(let b of m)for(let c of b.projects)for(let d of c.tasks)("TODO"===d.status||"IN_PROGRESS"===d.status||"IN_REVIEW"===d.status)&&a.push({task:d,workspaceName:b.name,projectName:c.alias??c.name});return a},[m]),x=(0,c.useMemo)(()=>new G.default(w,{keys:["task.title"],threshold:.4,distance:200}),[w]),z=(0,c.useMemo)(()=>{let a=u.trim();return a?x.search(a,{limit:30}).map(a=>a.item):[]},[x,u]),A=u.trim().length>0,B=m.find(a=>a.id===o),C=B?.projects??[];return(0,b.jsx)(M.Dialog,{open:a,onOpenChange:e,children:(0,b.jsxs)(M.DialogContent,{className:"sm:max-w-2xl max-h-[80vh]",children:[(0,b.jsx)(M.DialogHeader,{children:(0,b.jsx)(M.DialogTitle,{children:l("missions.fullPickerTitle")})}),(0,b.jsxs)("div",{className:"flex flex-col gap-2 shrink-0",children:[(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(Q.Search,{className:"absolute left-2 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),(0,b.jsx)(L.Input,{value:u,onChange:a=>v(a.target.value),placeholder:l("missions.fullPicker.searchPlaceholder"),className:"pl-8 pr-8 h-8"}),u&&(0,b.jsx)(j.Button,{type:"button",variant:"ghost",size:"icon",className:"absolute right-1 top-1/2 -translate-y-1/2 h-6 w-6",onClick:()=>v(""),"aria-label":l("missions.fullPicker.clearSearch"),children:(0,b.jsx)(y.X,{className:"h-3.5 w-3.5"})})]}),!A&&(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)(i.Select,{value:o,onValueChange:a=>{p(a??""),r("")},children:[(0,b.jsx)(i.SelectTrigger,{id:"full-picker-ws",className:"w-48 h-8",children:(0,b.jsx)("span",{className:"truncate",children:m.find(a=>a.id===o)?.name??l("missions.launcher.selectWorkspace")})}),(0,b.jsx)(i.SelectContent,{children:m.map(a=>(0,b.jsx)(i.SelectItem,{value:a.id,children:a.name},a.id))})]}),(0,b.jsxs)(i.Select,{value:q,onValueChange:a=>r(a??""),disabled:!o,children:[(0,b.jsx)(i.SelectTrigger,{id:"full-picker-proj",className:"w-48 h-8",children:(0,b.jsx)("span",{className:"truncate",children:C.find(a=>a.id===q)?.name??l("missions.launcher.selectProject")})}),(0,b.jsx)(i.SelectContent,{children:C.map(a=>(0,b.jsx)(i.SelectItem,{value:a.id,children:a.alias??a.name},a.id))})]})]})]}),(0,b.jsx)(R.ScrollArea,{className:"max-h-[60vh] -mx-2",children:A?0===z.length?(0,b.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:l("missions.fullPicker.noSearchResults")}):z.map(a=>(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"px-3 pt-2 pb-0.5 text-[11px] text-muted-foreground",children:[a.workspaceName," · ",a.projectName]}),(0,b.jsx)(V,{task:a.task,isRunning:h.has(a.task.id),launchingId:k,onLaunchNew:f,onResume:g,t:l})]},a.task.id)):0===s.length&&q?(0,b.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:l("missions.launcher.noTasks")}):0===s.length?(0,b.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:l("missions.fullPickerHint")}):s.map(a=>(0,b.jsx)(V,{task:a,isRunning:h.has(a.id),launchingId:k,onLaunchNew:f,onResume:g,t:l},a.id))})]})})}function X({open:a,onOpenChange:e,onLaunched:f,runningTaskIds:g=new Set,anchorRef:h}){let{t:i}=(0,d.useI18n)(),k=(0,c.useRef)(null),[l,m]=(0,c.useState)([]),[n,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(null),[r,s]=(0,c.useState)(!1),[t,u]=(0,c.useState)(new Set);(0,c.useEffect)(()=>{a&&(o(!0),H(5).then(m).catch(()=>D.toast.error(i("missions.error.launchFailed"))).finally(()=>o(!1)))},[a,i]);let v=(0,c.useMemo)(()=>l.filter(a=>a.projects.some(a=>a._count.tasks>0)),[l]),w=(0,c.useCallback)(a=>{u(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},[]);(0,c.useEffect)(()=>{if(a)return document.addEventListener("mousedown",b),()=>document.removeEventListener("mousedown",b);function b(a){let b=a.target;if(k.current&&!k.current.contains(b)){if(h?.current&&h.current.contains(b))return;e(!1)}}},[a,e,h]);let x=(0,c.useCallback)(async a=>{try{q(a),await (0,J.startPtyExecution)(a,""),f(a),e(!1),s(!1)}catch{D.toast.error(i("missions.error.launchFailed"))}finally{q(null)}},[f,e,i]),y=(0,c.useCallback)(async(a,b)=>{try{q(a),await (0,K.resumePtyExecution)(a,b),f(a),e(!1),s(!1)}catch{D.toast.error(i("missions.error.launchFailed"))}finally{q(null)}},[f,e,i]),z=(0,c.useCallback)(()=>{e(!1),s(!0)},[e]);return a||r?(0,b.jsxs)(b.Fragment,{children:[a&&(0,b.jsxs)("div",{ref:k,className:"absolute right-0 z-50 mt-1 grid max-h-[480px] w-[28rem] grid-rows-[auto_minmax(0,1fr)_auto] overflow-hidden rounded-lg border border-border bg-popover shadow-xl",children:[(0,b.jsx)("div",{className:"px-3 py-2 border-b border-border",children:(0,b.jsx)("p",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wide",children:i("missions.pickerTitle")})}),(0,b.jsx)(R.ScrollArea,{children:n?(0,b.jsx)("div",{className:"flex items-center justify-center py-8 text-sm text-muted-foreground",children:"Loading..."}):0===v.length?(0,b.jsx)("div",{className:"flex items-center justify-center py-8 text-sm text-muted-foreground",children:i("missions.noAvailableTasks")}):v.map(a=>{let c=t.has(a.id),d=a.projects.filter(a=>a._count.tasks>0);return(0,b.jsxs)("div",{children:[(0,b.jsxs)(j.Button,{variant:"ghost",onClick:()=>w(a.id),className:"flex h-auto w-full justify-start gap-1.5 rounded-none border-b border-border/50 px-3 py-1.5 hover:bg-accent",children:[(0,b.jsx)(N.ChevronRight,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform ${c?"":"rotate-90"}`}),(0,b.jsx)("span",{className:"text-[11px] font-semibold text-muted-foreground uppercase tracking-wider",children:a.name})]}),!c&&(0,b.jsx)("div",{className:"ml-[19px] mt-0.5 border-l border-border/50",children:d.map(a=>(0,b.jsxs)("div",{className:"py-0.5",children:[(0,b.jsx)("div",{className:"pl-3 pt-1.5 pb-1",children:(0,b.jsx)("span",{className:"text-xs font-medium text-foreground",children:a.alias??a.name})}),(0,b.jsx)("div",{className:"pl-3",children:a.tasks.map(a=>(0,b.jsx)(V,{task:a,isRunning:g.has(a.id),launchingId:p,onLaunchNew:x,onResume:y,t:i},a.id))})]},a.id))})]},a.id)})}),(0,b.jsx)("div",{className:"border-t border-border",children:(0,b.jsx)(j.Button,{variant:"ghost",className:"w-full rounded-none text-xs text-primary font-medium",onClick:z,children:i("missions.showMoreTasks")})})]}),(0,b.jsx)(W,{open:r,onOpenChange:s,onLaunchNew:x,onResume:y,runningTaskIds:g,launchingId:p})]}):null}a.i(423993);var Y=a.i(267654);function Z(a,b,c){return b<=0?0:((a+c)%b+b)%b}a.s(["MissionsClient",0,function({initialExecutions:a}){let{t:e}=(0,d.useI18n)(),[l,n]=(0,c.useState)(a),[o,p]=(0,c.useState)(()=>"3x2"),[t,u]=(0,c.useState)(()=>({cols:2,rows:2})),[v,w]=(0,c.useState)(!1),[x,y]=(0,c.useState)(""),z=(0,c.useRef)(null),[A,C]=(0,c.useState)("nav"),[E,G]=(0,c.useState)(0),H=(0,c.useRef)(new Map),I=(0,c.useRef)([]),J=(0,c.useRef)(2),K=(0,c.useRef)(E);K.current=E;let L=(0,c.useRef)([]),M=(0,c.useCallback)((a,b)=>{b?H.current.set(a,b):H.current.delete(a)},[]),[N,O]=(0,c.useState)(new Map),P=(0,c.useRef)(N);(0,c.useEffect)(()=>{P.current=N},[N]);let Q=(0,c.useRef)(new Map),R=h.find(a=>a.id===o)??h[2],S="custom"===o?t.cols:R.cols,T="custom"===o?t.rows:R.rows,U=(0,c.useRef)(null),[V,W]=(0,c.useState)("480px");(0,c.useEffect)(()=>{let a=U.current;if(!a)return;let b=()=>{let b=(a.clientHeight-32-16*(T-1))/T;W(`${Math.max(b,200)}px`)};b();let c=new ResizeObserver(b);return c.observe(a),()=>c.disconnect()},[T]);let $=(0,c.useCallback)((a,b)=>{a&&(p(a),localStorage.setItem("missions-grid-preset",a),"custom"===a&&b&&(u(b),localStorage.setItem("missions-grid-custom",JSON.stringify(b))))},[]),_=(0,r.useSensors)((0,r.useSensor)(r.PointerSensor,{activationConstraint:{distance:8}})),aa=(0,c.useCallback)(a=>{let{active:b,over:c}=a;c&&b.id!==c.id&&n(a=>{let d=a.findIndex(a=>a.executionId===b.id),e=a.findIndex(a=>a.executionId===c.id);return(0,s.arrayMove)(a,d,e)})},[]),ab=(0,c.useCallback)((a,b)=>{if(P.current.has(a))return;O(c=>new Map([...c,[a,b]]));let c=setTimeout(()=>{n(b=>b.filter(b=>b.executionId!==a)),O(b=>{let c=new Map(b);return c.delete(a),c}),Q.current.delete(a)},500);Q.current.set(a,c)},[]);(0,c.useEffect)(()=>{let a=setInterval(async()=>{try{let a=await f();n(b=>{let c=P.current,{merged:d,goneIds:e}=function({prev:a,fresh:b,removingIds:c}){let d=new Set(b.map(a=>a.executionId)),e=[];a.forEach(a=>{d.has(a.executionId)||c.has(a.executionId)||e.push(a.executionId)});let f=a.filter(a=>d.has(a.executionId)||c.has(a.executionId)),g=new Set(a.map(a=>a.executionId));return{merged:[...f,...b.filter(a=>!g.has(a.executionId))],goneIds:e}}({prev:b,fresh:a,removingIds:new Set(c.keys())});return e.forEach(a=>ab(a,"completed")),d})}catch{}},4e3);return()=>clearInterval(a)},[ab]),(0,c.useEffect)(()=>{let a=Q.current;return()=>{a.forEach(a=>clearTimeout(a))}},[]);let ac=(0,c.useCallback)(async a=>{try{await (0,g.stopPtyExecution)(a),n(b=>{let c=b.find(b=>b.taskId===a);return c&&ab(c.executionId,"stopped"),b})}catch{D.toast.error(e("missions.error.stopFailed"))}},[ab,e]),ad=(0,c.useCallback)((a,b)=>{n(b=>{let c=b.find(b=>b.taskId===a);return c&&ab(c.executionId,"completed"),b})},[ab]),ae=(0,c.useCallback)(a=>{f().then(a=>{n(b=>{let c=new Set(b.map(a=>a.executionId));return[...b,...a.filter(a=>!c.has(a.executionId))]})}).catch(()=>{})},[]),af=(0,c.useCallback)(a=>{let b=I.current;a<0||a>=b.length||(b[a]?.focus(),G(a),C("input"))},[]),ag=(0,c.useCallback)(()=>{I.current[K.current]?.blur(),C("nav")},[]),ah=(0,c.useCallback)(()=>{af(K.current)},[af]),ai=(0,c.useCallback)(()=>{let a=I.current.length;0!==a&&af(Z(K.current,a,1))},[af]),aj=(0,c.useCallback)(()=>{let a=I.current.length;0!==a&&af(Z(K.current,a,-1))},[af]),ak=(0,c.useCallback)(a=>{let b=I.current.length;0!==b&&(C("nav"),G(c=>(function(a,b,c,d){if(c<=0)return 0;let e=Math.max(1,b);switch(d){case"left":return Z(a,c,-1);case"right":return Z(a,c,1);case"up":{let b=a-e;return b<0?a:b}case"down":{let b=a+e;return b>=c?a:b}default:return a}})(c,J.current,b,a)))},[]),al=(0,c.useCallback)(a=>{let b=I.current.length;0!==b&&(C("nav"),G(c=>Z(c,b,a)))},[]),am=(0,c.useCallback)(a=>{let b=L.current.findIndex(b=>b.taskId===a);b>=0&&af(b)},[af]);(0,Y.useActionShortcut)("missions.jump",a=>{let b=Number(a.key);Number.isInteger(b)&&b>=1&&af(b-1)}),(0,Y.useActionShortcut)("missions.moveSelection",a=>{ak("ArrowUp"===a.key?"up":"ArrowDown"===a.key?"down":"ArrowLeft"===a.key?"left":"right")}),(0,Y.useActionShortcut)("missions.cycle",()=>al(1)),(0,Y.useActionShortcut)("missions.cycleBack",()=>al(-1)),(0,Y.useActionShortcut)("missions.focus",()=>ah()),(0,Y.useActionShortcut)("missions.next",()=>ai()),(0,Y.useActionShortcut)("missions.prev",()=>aj()),(0,Y.useActionShortcut)("missions.exit",()=>ag()),(0,c.useEffect)(()=>{let a=U.current;if(!a)return;let b=a=>{let b=a.target,c=b?.closest("[data-pane-index]");if(!c)return;let d=Number(c.dataset.paneIndex);Number.isInteger(d)&&(G(d),C("input"))};return a.addEventListener("focusin",b),()=>a.removeEventListener("focusin",b)},[]);let an=Array.from(new Map(l.map(a=>[a.workspaceId,a.workspaceName])).entries()).map(([a,b])=>({id:a,name:b})),ao=x?l.filter(a=>a.workspaceId===x):l;L.current=ao,I.current=ao.map(a=>H.current.get(a.taskId)).filter(a=>!!a),J.current=S,(0,c.useEffect)(()=>{G(a=>{let b=ao.length;return 0===b?0:Math.min(a,b-1)})},[ao.length]);let ap=new Set(l.map(a=>a.taskId));return(0,b.jsxs)("div",{className:"flex h-full flex-col",children:[(0,b.jsxs)("div",{className:"header-sm shrink-0 px-4 flex items-center gap-3",children:[(0,b.jsx)("h1",{className:"text-base font-semibold",children:e("missions.pageTitle")}),(0,b.jsx)(B.Badge,{variant:"input"===A?"default":"secondary",className:"input"===A?"shrink-0":"shrink-0 bg-muted text-muted-foreground",children:"input"===A?e("missions.mode.input"):e("missions.mode.nav")}),(0,b.jsxs)(i.Select,{value:x,onValueChange:a=>y(a??""),children:[(0,b.jsx)(i.SelectTrigger,{className:"w-36 h-8",children:(0,b.jsx)("span",{className:"truncate",children:x?an.find(a=>a.id===x)?.name??e("missions.filterAll"):e("missions.filterAll")})}),(0,b.jsxs)(i.SelectContent,{children:[(0,b.jsx)(i.SelectItem,{value:"",children:e("missions.filterAll")}),an.map(a=>(0,b.jsx)(i.SelectItem,{value:a.id,children:a.name},a.id))]})]}),(0,b.jsx)("div",{className:"flex-1"}),(0,b.jsx)(q,{value:o,customValue:t,onChange:$}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(j.Button,{ref:z,onClick:()=>w(a=>!a),children:e("missions.launchTask")}),(0,b.jsx)(X,{open:v,onOpenChange:w,onLaunched:ae,runningTaskIds:ap,anchorRef:z})]})]}),(0,b.jsx)("div",{ref:U,className:"flex-1 overflow-auto min-h-0 p-4",children:0===ao.length&&0===N.size?(0,b.jsx)(k.EmptyState,{icon:m,title:e("missions.emptyTitle"),description:e("missions.emptyDesc"),className:"h-full",action:(0,b.jsx)(j.Button,{onClick:()=>w(!0),children:e("missions.launchTask")})}):(0,b.jsx)(r.DndContext,{id:"missions-dnd",sensors:_,collisionDetection:r.closestCenter,onDragEnd:aa,children:(0,b.jsx)(s.SortableContext,{items:ao.map(a=>a.executionId),strategy:s.rectSortingStrategy,children:(0,b.jsx)("div",{className:"grid gap-4",style:{gridTemplateColumns:`repeat(${S}, 1fr)`,gridAutoRows:V},children:ao.map((a,c)=>(0,b.jsx)(F,{execution:a,isRemoving:N.has(a.executionId),removeReason:N.get(a.executionId),onStop:ac,onSessionEnd:ad,index:c,mode:A,isSelected:E===c&&"nav"===A,onRegisterControls:M,onRequestFocus:am},a.executionId))})})})})]})}],989799)}];
|
|
1
|
+
module.exports=[989799,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(951192),e=a.i(780410);let f=(0,e.createServerReference)("00509af393221f0284db035ec968a583719c0a1d91",e.callServer,void 0,e.findSourceMapURL,"getActiveExecutionsAcrossWorkspaces");var g=a.i(408422);let h=[{id:"1x1",label:"1×1",cols:1,rows:1,minHeight:"480px",desc:"Focus mode"},{id:"2x1",label:"2×1",cols:2,rows:1,minHeight:"480px",desc:"Side by side"},{id:"3x2",label:"3×2",cols:3,rows:2,minHeight:"300px",desc:"Default"},{id:"2x2",label:"2×2",cols:2,rows:2,minHeight:"300px",desc:"Balanced"},{id:"4x2",label:"4×2",cols:4,rows:2,minHeight:"240px",desc:"Wide monitor"},{id:"3x3",label:"3×3",cols:3,rows:3,minHeight:"240px",desc:"Max overview"}];var i=a.i(580701),j=a.i(699570),k=a.i(579834),l=a.i(711796);let m=(0,l.default)("rocket",[["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}],["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09",key:"u4xsad"}],["path",{d:"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z",key:"676m9"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05",key:"92ym6u"}]]);var n=a.i(862440);function o({cols:a,rows:c,active:d}){let e=Array.from({length:a*c});return(0,b.jsx)("div",{className:`grid gap-[1px] w-7 h-5 p-[3px] rounded-sm border shrink-0 ${d?"border-primary bg-primary/10":"border-border bg-muted"}`,style:{gridTemplateColumns:`repeat(${a}, 1fr)`,gridTemplateRows:`repeat(${c}, 1fr)`},children:e.map((a,c)=>(0,b.jsx)("div",{className:`rounded-[1px] min-w-0 min-h-0 ${d?"bg-primary":"bg-muted-foreground/40"}`},c))})}let p="custom";function q({value:a,customValue:e,onChange:f}){let{t:g}=(0,d.useI18n)(),[i,k]=(0,c.useState)(!1),l=(0,c.useRef)(null),m=a===p,r=m?null:h.find(b=>b.id===a)??h[2],[s,t]=(0,c.useState)(e?.cols??2),[u,v]=(0,c.useState)(e?.rows??2),[w,x]=(0,c.useState)({minCols:1,maxCols:5,minRows:1,maxRows:5});(0,c.useEffect)(()=>{(0,n.getConfigValues)(["missions.grid.minCols","missions.grid.maxCols","missions.grid.minRows","missions.grid.maxRows"]).then(a=>{x({minCols:a["missions.grid.minCols"]??1,maxCols:a["missions.grid.maxCols"]??5,minRows:a["missions.grid.minRows"]??1,maxRows:a["missions.grid.maxRows"]??5})})},[]),(0,c.useEffect)(()=>{e&&(t(e.cols),v(e.rows))},[e?.cols,e?.rows]),(0,c.useEffect)(()=>{if(i)return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a);function a(a){l.current&&!l.current.contains(a.target)&&k(!1)}},[i]);let y=(a,b,c)=>Math.max(b,Math.min(c,a)),z=m?s:r?.cols??2,A=m?u:r?.rows??2,B=m?`${s}\xd7${u}`:r?.label??"";return(0,b.jsxs)("div",{ref:l,className:"relative",children:[(0,b.jsxs)(j.Button,{variant:"outline",onClick:()=>k(a=>!a),className:"gap-2",children:[(0,b.jsx)(o,{cols:z,rows:A,active:!1}),(0,b.jsx)("span",{children:B}),(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:"▼"})]}),i&&(0,b.jsxs)("div",{className:"absolute right-0 z-50 mt-1 w-72 rounded-lg border border-border bg-popover shadow-xl p-3",children:[(0,b.jsx)("h5",{className:"text-sm font-semibold text-foreground mb-3",children:g("missions.gridPreset")}),(0,b.jsxs)("div",{className:"flex flex-col gap-0.5",children:[h.map(c=>{let d=c.id===a;return(0,b.jsxs)("button",{onClick:()=>{f(c.id),k(!1)},className:`flex items-center gap-3 px-3 py-2.5 rounded-lg transition-colors ${d?"bg-primary/10":"hover:bg-accent"}`,children:[(0,b.jsx)(o,{cols:c.cols,rows:c.rows,active:d}),(0,b.jsx)("span",{className:`text-sm font-medium flex-1 text-left ${d?"text-primary":"text-foreground"}`,children:c.label}),(0,b.jsx)("span",{className:`text-xs ${d?"text-primary/60":"text-muted-foreground"}`,children:c.desc})]},c.id)}),(0,b.jsxs)("div",{className:"mt-1 border-t border-border pt-2",children:[(0,b.jsxs)("button",{onClick:()=>{m||f(p,{cols:s,rows:u})},className:`flex items-center gap-3 px-3 py-2.5 rounded-lg transition-colors w-full ${m?"bg-primary/10":"hover:bg-accent"}`,children:[(0,b.jsx)(o,{cols:s,rows:u,active:m}),(0,b.jsx)("span",{className:`text-sm font-medium flex-1 text-left ${m?"text-primary":"text-foreground"}`,children:g("missions.gridCustom")}),(0,b.jsxs)("span",{className:`text-xs ${m?"text-primary/60":"text-muted-foreground"}`,children:[s,"×",u]})]}),m&&(0,b.jsxs)("div",{className:"flex items-center gap-3 px-3 py-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("label",{className:"text-xs text-muted-foreground",children:g("missions.gridCols")}),(0,b.jsx)("input",{type:"number",min:w.minCols,max:w.maxCols,value:s,onChange:a=>{let b;t(b=y(Number(a.target.value),w.minCols,w.maxCols)),f(p,{cols:b,rows:u})},className:"h-7 w-14 rounded-md border border-border bg-background px-2 text-sm text-center"})]}),(0,b.jsx)("span",{className:"text-muted-foreground",children:"×"}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("label",{className:"text-xs text-muted-foreground",children:g("missions.gridRows")}),(0,b.jsx)("input",{type:"number",min:w.minRows,max:w.maxRows,value:u,onChange:a=>{let b;v(b=y(Number(a.target.value),w.minRows,w.maxRows)),f(p,{cols:s,rows:b})},className:"h-7 w-14 rounded-md border border-border bg-background px-2 text-sm text-center"})]})]})]})]})]})]})}var r=a.i(643228),s=a.i(859103),t=a.i(969032),u=a.i(553798),v=a.i(514126);let w=(0,l.default)("grip-vertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]),x=(0,l.default)("arrow-up-right",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]);var y=a.i(54384);let z=(0,l.default)("square-terminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);var A=a.i(785259),B=a.i(786304),C=a.i(565849),D=a.i(952313);let E=(0,t.default)(async()=>{},{loadableGenerated:{modules:[346069]},ssr:!1,loading:()=>(0,b.jsx)("div",{className:"h-full w-full bg-[#0a0a0a] animate-pulse"})});function F({execution:a,isRemoving:e,removeReason:f,onStop:g,onSessionEnd:h,index:i,mode:k,isSelected:l,onRegisterControls:m,onRequestFocus:n}){let{t:o}=(0,d.useI18n)(),p=(0,u.useRouter)(),{attributes:q,listeners:r,setNodeRef:t,transform:G,transition:H}=(0,s.useSortable)({id:a.executionId}),I={transform:v.CSS.Transform.toString(G),transition:H,opacity:+!e},[J,K]=(0,c.useState)(()=>a.startedAt?Math.floor((Date.now()-new Date(a.startedAt).getTime())/1e3):0);(0,c.useEffect)(()=>{if(e)return;let b=setInterval(()=>{K(a.startedAt?Math.floor((Date.now()-new Date(a.startedAt).getTime())/1e3):0)},1e3);return()=>clearInterval(b)},[a.startedAt,e]);let L=Math.floor(J/60),M=`${L}m ${J%60}s`;async function N(){let b=a.worktreePath??a.projectLocalPath;if(!b)return;let c=a.subPath?`${b}/${a.subPath}`:b;try{await (0,C.openInTerminal)(c)}catch{D.toast.error(o("preview.terminalError"))}}return(0,b.jsxs)("div",{ref:t,style:I,"data-pane-index":i,className:"border border-border rounded-lg overflow-hidden flex flex-col transition-opacity duration-300",...q,children:[(0,b.jsxs)("div",{className:"h-10 px-3 flex items-center gap-1 border-b border-border bg-card shrink-0",children:[(0,b.jsx)("button",{...r,"aria-label":o("missions.dragHandle"),"aria-roledescription":"sortable",className:"cursor-grab text-muted-foreground hover:text-foreground mr-1",children:(0,b.jsx)(w,{className:"h-3.5 w-3.5"})}),(0,b.jsxs)("span",{className:"text-[11px] text-muted-foreground truncate flex-1",children:[a.workspaceName," ›"," ",a.projectAlias||a.projectName," ›"," ",(0,b.jsx)("span",{className:"text-foreground font-semibold",children:a.taskTitle})]}),e?(0,b.jsx)(B.Badge,{variant:"outline",className:"text-[11px] text-muted-foreground bg-muted ml-1 shrink-0",children:"stopped"===f?o("missions.statusStopped"):o("missions.statusCompleted")}):(0,b.jsx)(B.Badge,{variant:"outline",className:"text-[11px] text-primary border-primary/30 bg-primary/10 ml-1 shrink-0",children:o("missions.statusRunning")}),(0,b.jsx)("span",{className:"text-[11px] text-muted-foreground ml-1 shrink-0",children:M}),a.projectLocalPath&&(0,b.jsxs)(A.Tooltip,{children:[(0,b.jsx)(A.TooltipTrigger,{render:(0,b.jsx)(j.Button,{variant:"ghost",size:"icon",className:"ml-1 shrink-0 text-muted-foreground",onClick:N}),children:(0,b.jsx)(z,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(A.TooltipContent,{children:o("missions.openInTerminal")})]}),(0,b.jsxs)(A.Tooltip,{children:[(0,b.jsx)(A.TooltipTrigger,{render:(0,b.jsx)(j.Button,{variant:"ghost",size:"icon",className:"ml-1 shrink-0 text-muted-foreground",onClick:()=>p.push(`/workspaces/${a.workspaceId}/tasks/${a.taskId}`)}),children:(0,b.jsx)(x,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(A.TooltipContent,{children:o("missions.openFullView")})]}),(0,b.jsxs)(A.Tooltip,{children:[(0,b.jsx)(A.TooltipTrigger,{render:(0,b.jsx)(j.Button,{variant:"destructive",size:"icon",className:"ml-1 shrink-0",onClick:()=>g(a.taskId),disabled:e}),children:(0,b.jsx)(y.X,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(A.TooltipContent,{children:o("missions.stopTask")})]})]}),(0,b.jsxs)("div",{className:"relative flex-1 overflow-hidden",children:[(0,b.jsx)(E,{taskId:a.taskId,worktreePath:a.worktreePath??a.projectLocalPath,onSessionEnd:b=>h?.(a.taskId,b),useCanvasRenderer:!0,onReady:b=>m(a.taskId,b)}),"nav"===k&&(0,b.jsx)("button",{type:"button","aria-label":o("missions.hint.label"),onClick:()=>n(a.taskId),className:["absolute inset-0 z-20 flex items-center justify-center cursor-pointer transition-opacity bg-background/60 dark:bg-black/50",l?"ring-2 ring-inset ring-primary":""].join(" "),children:i<9&&(0,b.jsx)("span",{className:["flex h-14 w-14 items-center justify-center rounded-md text-2xl font-semibold tabular-nums border transition-colors",l?"bg-primary text-primary-foreground border-primary":"bg-muted/80 text-foreground border-border"].join(" "),children:i+1})})]})]})}var G=a.i(594003);let H=(0,e.createServerReference)("407135a58605e221a80700084f86f6be892874d312",e.callServer,void 0,e.findSourceMapURL,"getWorkspacesWithRecentTasks"),I=(0,e.createServerReference)("40e9422bef55ec614efcaa47ec24464fce20cf7111",e.callServer,void 0,e.findSourceMapURL,"getProjectTasks");var J=a.i(279497),K=a.i(202417),L=a.i(866718),M=a.i(814574),N=a.i(10390);let O=(0,l.default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);var P=a.i(747798),Q=a.i(573242),R=a.i(269876);let S={TODO:"TODO",IN_PROGRESS:"Running",IN_REVIEW:"Review"},T={LOW:"Low",MEDIUM:"Med",HIGH:"High",CRITICAL:"Crit"};function U({status:a}){return(0,b.jsx)("span",{className:`text-[10px] px-1.5 py-0.5 rounded font-medium ${{TODO:"bg-slate-100 text-slate-600 dark:bg-slate-800 dark:text-slate-400",IN_PROGRESS:"bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400",IN_REVIEW:"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400"}[a]??"bg-slate-100 text-slate-600"}`,children:S[a]??a})}function V({task:a,isRunning:c,launchingId:d,onLaunchNew:e,onResume:f,t:g}){let h=a.executions?.[0]?.sessionId,i=d===a.id;return(0,b.jsxs)("div",{className:"group/task grid grid-cols-[minmax(0,1fr)_auto] items-center gap-2 px-3 py-1.5 hover:bg-accent/50 cursor-default",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("p",{className:`text-sm truncate ${c?"italic text-muted-foreground":""}`,children:a.title}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 mt-0.5",children:[(0,b.jsx)(U,{status:a.status}),(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:T[a.priority]??a.priority})]})]}),c?(0,b.jsx)("span",{className:"text-[10px] italic text-muted-foreground",children:g("missions.alreadyMonitored")}):(0,b.jsxs)("div",{className:"flex items-center gap-1 opacity-0 group-hover/task:opacity-100 transition-opacity",children:[h&&(0,b.jsxs)(j.Button,{variant:"outline",className:"h-6 px-2 text-xs",onClick:()=>f(a.id,h),disabled:i,title:g("missions.continueSession"),children:[(0,b.jsx)(P.RotateCcw,{className:"h-3 w-3 mr-1"}),g("missions.continueLabel")]}),(0,b.jsxs)(j.Button,{variant:"outline",className:"h-6 px-2 text-xs",onClick:()=>e(a.id),disabled:i,title:g("missions.launchNew"),children:[(0,b.jsx)(O,{className:"h-3 w-3 mr-1"}),i?"...":g("missions.launchNewLabel")]})]})]})}function W({open:a,onOpenChange:e,onLaunchNew:f,onResume:g,runningTaskIds:h,launchingId:k}){let{t:l}=(0,d.useI18n)(),[m,n]=(0,c.useState)([]),[o,p]=(0,c.useState)(""),[q,r]=(0,c.useState)(""),[s,t]=(0,c.useState)([]),[u,v]=(0,c.useState)("");(0,c.useEffect)(()=>{a&&(p(""),r(""),t([]),v(""),H(100).then(n).catch(()=>D.toast.error(l("missions.error.launchFailed"))))},[a,l]),(0,c.useEffect)(()=>{q?I(q).then(a=>{t(a.filter(a=>"TODO"===a.status||"IN_PROGRESS"===a.status||"IN_REVIEW"===a.status))}).catch(()=>D.toast.error(l("missions.error.launchFailed"))):t([])},[q,l]);let w=(0,c.useMemo)(()=>{let a=[];for(let b of m)for(let c of b.projects)for(let d of c.tasks)("TODO"===d.status||"IN_PROGRESS"===d.status||"IN_REVIEW"===d.status)&&a.push({task:d,workspaceName:b.name,projectName:c.alias??c.name});return a},[m]),x=(0,c.useMemo)(()=>new G.default(w,{keys:["task.title"],threshold:.4,distance:200}),[w]),z=(0,c.useMemo)(()=>{let a=u.trim();return a?x.search(a,{limit:30}).map(a=>a.item):[]},[x,u]),A=u.trim().length>0,B=m.find(a=>a.id===o),C=B?.projects??[];return(0,b.jsx)(M.Dialog,{open:a,onOpenChange:e,children:(0,b.jsxs)(M.DialogContent,{className:"sm:max-w-2xl max-h-[80vh]",children:[(0,b.jsx)(M.DialogHeader,{children:(0,b.jsx)(M.DialogTitle,{children:l("missions.fullPickerTitle")})}),(0,b.jsxs)("div",{className:"flex flex-col gap-2 shrink-0",children:[(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(Q.Search,{className:"absolute left-2 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),(0,b.jsx)(L.Input,{value:u,onChange:a=>v(a.target.value),placeholder:l("missions.fullPicker.searchPlaceholder"),className:"pl-8 pr-8 h-8"}),u&&(0,b.jsx)(j.Button,{type:"button",variant:"ghost",size:"icon",className:"absolute right-1 top-1/2 -translate-y-1/2 h-6 w-6",onClick:()=>v(""),"aria-label":l("missions.fullPicker.clearSearch"),children:(0,b.jsx)(y.X,{className:"h-3.5 w-3.5"})})]}),!A&&(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)(i.Select,{value:o,onValueChange:a=>{p(a??""),r("")},children:[(0,b.jsx)(i.SelectTrigger,{id:"full-picker-ws",className:"w-48 h-8",children:(0,b.jsx)("span",{className:"truncate",children:m.find(a=>a.id===o)?.name??l("missions.launcher.selectWorkspace")})}),(0,b.jsx)(i.SelectContent,{children:m.map(a=>(0,b.jsx)(i.SelectItem,{value:a.id,children:a.name},a.id))})]}),(0,b.jsxs)(i.Select,{value:q,onValueChange:a=>r(a??""),disabled:!o,children:[(0,b.jsx)(i.SelectTrigger,{id:"full-picker-proj",className:"w-48 h-8",children:(0,b.jsx)("span",{className:"truncate",children:C.find(a=>a.id===q)?.name??l("missions.launcher.selectProject")})}),(0,b.jsx)(i.SelectContent,{children:C.map(a=>(0,b.jsx)(i.SelectItem,{value:a.id,children:a.alias??a.name},a.id))})]})]})]}),(0,b.jsx)(R.ScrollArea,{className:"max-h-[60vh] -mx-2",children:A?0===z.length?(0,b.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:l("missions.fullPicker.noSearchResults")}):z.map(a=>(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"px-3 pt-2 pb-0.5 text-[11px] text-muted-foreground",children:[a.workspaceName," · ",a.projectName]}),(0,b.jsx)(V,{task:a.task,isRunning:h.has(a.task.id),launchingId:k,onLaunchNew:f,onResume:g,t:l})]},a.task.id)):0===s.length&&q?(0,b.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:l("missions.launcher.noTasks")}):0===s.length?(0,b.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:l("missions.fullPickerHint")}):s.map(a=>(0,b.jsx)(V,{task:a,isRunning:h.has(a.id),launchingId:k,onLaunchNew:f,onResume:g,t:l},a.id))})]})})}function X({open:a,onOpenChange:e,onLaunched:f,runningTaskIds:g=new Set,anchorRef:h}){let{t:i}=(0,d.useI18n)(),k=(0,c.useRef)(null),[l,m]=(0,c.useState)([]),[n,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(null),[r,s]=(0,c.useState)(!1),[t,u]=(0,c.useState)(new Set);(0,c.useEffect)(()=>{a&&(o(!0),H(5).then(m).catch(()=>D.toast.error(i("missions.error.launchFailed"))).finally(()=>o(!1)))},[a,i]);let v=(0,c.useMemo)(()=>l.filter(a=>a.projects.some(a=>a._count.tasks>0)),[l]),w=(0,c.useCallback)(a=>{u(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},[]);(0,c.useEffect)(()=>{if(a)return document.addEventListener("mousedown",b),()=>document.removeEventListener("mousedown",b);function b(a){let b=a.target;if(k.current&&!k.current.contains(b)){if(h?.current&&h.current.contains(b))return;e(!1)}}},[a,e,h]);let x=(0,c.useCallback)(async a=>{try{q(a),await (0,J.startPtyExecution)(a,""),f(a),e(!1),s(!1)}catch{D.toast.error(i("missions.error.launchFailed"))}finally{q(null)}},[f,e,i]),y=(0,c.useCallback)(async(a,b)=>{try{q(a),await (0,K.resumePtyExecution)(a,b),f(a),e(!1),s(!1)}catch{D.toast.error(i("missions.error.launchFailed"))}finally{q(null)}},[f,e,i]),z=(0,c.useCallback)(()=>{e(!1),s(!0)},[e]);return a||r?(0,b.jsxs)(b.Fragment,{children:[a&&(0,b.jsxs)("div",{ref:k,className:"absolute right-0 z-50 mt-1 grid max-h-[480px] w-[28rem] grid-rows-[auto_minmax(0,1fr)_auto] overflow-hidden rounded-lg border border-border bg-popover shadow-xl",children:[(0,b.jsx)("div",{className:"px-3 py-2 border-b border-border",children:(0,b.jsx)("p",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wide",children:i("missions.pickerTitle")})}),(0,b.jsx)(R.ScrollArea,{children:n?(0,b.jsx)("div",{className:"flex items-center justify-center py-8 text-sm text-muted-foreground",children:"Loading..."}):0===v.length?(0,b.jsx)("div",{className:"flex items-center justify-center py-8 text-sm text-muted-foreground",children:i("missions.noAvailableTasks")}):v.map(a=>{let c=t.has(a.id),d=a.projects.filter(a=>a._count.tasks>0);return(0,b.jsxs)("div",{children:[(0,b.jsxs)(j.Button,{variant:"ghost",onClick:()=>w(a.id),className:"flex h-auto w-full justify-start gap-1.5 rounded-none border-b border-border/50 px-3 py-1.5 hover:bg-accent",children:[(0,b.jsx)(N.ChevronRight,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform ${c?"":"rotate-90"}`}),(0,b.jsx)("span",{className:"text-[11px] font-semibold text-muted-foreground uppercase tracking-wider",children:a.name})]}),!c&&(0,b.jsx)("div",{className:"ml-[19px] mt-0.5 border-l border-border/50",children:d.map(a=>(0,b.jsxs)("div",{className:"py-0.5",children:[(0,b.jsx)("div",{className:"pl-3 pt-1.5 pb-1",children:(0,b.jsx)("span",{className:"text-xs font-medium text-foreground",children:a.alias??a.name})}),(0,b.jsx)("div",{className:"pl-3",children:a.tasks.map(a=>(0,b.jsx)(V,{task:a,isRunning:g.has(a.id),launchingId:p,onLaunchNew:x,onResume:y,t:i},a.id))})]},a.id))})]},a.id)})}),(0,b.jsx)("div",{className:"border-t border-border",children:(0,b.jsx)(j.Button,{variant:"ghost",className:"w-full rounded-none text-xs text-primary font-medium",onClick:z,children:i("missions.showMoreTasks")})})]}),(0,b.jsx)(W,{open:r,onOpenChange:s,onLaunchNew:x,onResume:y,runningTaskIds:g,launchingId:p})]}):null}a.i(423993);var Y=a.i(267654);function Z(a,b,c){return b<=0?0:((a+c)%b+b)%b}a.s(["MissionsClient",0,function({initialExecutions:a}){let{t:e}=(0,d.useI18n)(),[l,n]=(0,c.useState)(a),[o,p]=(0,c.useState)(()=>"3x2"),[t,u]=(0,c.useState)(()=>({cols:2,rows:2})),[v,w]=(0,c.useState)(!1),[x,y]=(0,c.useState)(""),z=(0,c.useRef)(null),[A,C]=(0,c.useState)("input"),[E,G]=(0,c.useState)(0),H=(0,c.useRef)(new Map),I=(0,c.useRef)([]),J=(0,c.useRef)(2),K=(0,c.useRef)(E);K.current=E;let L=(0,c.useRef)([]),M=(0,c.useCallback)((a,b)=>{b?H.current.set(a,b):H.current.delete(a)},[]),[N,O]=(0,c.useState)(new Map),P=(0,c.useRef)(N);(0,c.useEffect)(()=>{P.current=N},[N]);let Q=(0,c.useRef)(new Map),R=h.find(a=>a.id===o)??h[2],S="custom"===o?t.cols:R.cols,T="custom"===o?t.rows:R.rows,U=(0,c.useRef)(null),[V,W]=(0,c.useState)("480px");(0,c.useEffect)(()=>{let a=U.current;if(!a)return;let b=()=>{let b=(a.clientHeight-32-16*(T-1))/T;W(`${Math.max(b,200)}px`)};b();let c=new ResizeObserver(b);return c.observe(a),()=>c.disconnect()},[T]);let $=(0,c.useCallback)((a,b)=>{a&&(p(a),localStorage.setItem("missions-grid-preset",a),"custom"===a&&b&&(u(b),localStorage.setItem("missions-grid-custom",JSON.stringify(b))))},[]),_=(0,r.useSensors)((0,r.useSensor)(r.PointerSensor,{activationConstraint:{distance:8}})),aa=(0,c.useCallback)(a=>{let{active:b,over:c}=a;c&&b.id!==c.id&&n(a=>{let d=a.findIndex(a=>a.executionId===b.id),e=a.findIndex(a=>a.executionId===c.id);return(0,s.arrayMove)(a,d,e)})},[]),ab=(0,c.useCallback)((a,b)=>{if(P.current.has(a))return;O(c=>new Map([...c,[a,b]]));let c=setTimeout(()=>{n(b=>b.filter(b=>b.executionId!==a)),O(b=>{let c=new Map(b);return c.delete(a),c}),Q.current.delete(a)},500);Q.current.set(a,c)},[]);(0,c.useEffect)(()=>{let a=setInterval(async()=>{try{let a=await f();n(b=>{let c=P.current,{merged:d,goneIds:e}=function({prev:a,fresh:b,removingIds:c}){let d=new Set(b.map(a=>a.executionId)),e=[];a.forEach(a=>{d.has(a.executionId)||c.has(a.executionId)||e.push(a.executionId)});let f=a.filter(a=>d.has(a.executionId)||c.has(a.executionId)),g=new Set(a.map(a=>a.executionId));return{merged:[...f,...b.filter(a=>!g.has(a.executionId))],goneIds:e}}({prev:b,fresh:a,removingIds:new Set(c.keys())});return e.forEach(a=>ab(a,"completed")),d})}catch{}},4e3);return()=>clearInterval(a)},[ab]),(0,c.useEffect)(()=>{let a=Q.current;return()=>{a.forEach(a=>clearTimeout(a))}},[]);let ac=(0,c.useCallback)(async a=>{try{await (0,g.stopPtyExecution)(a),n(b=>{let c=b.find(b=>b.taskId===a);return c&&ab(c.executionId,"stopped"),b})}catch{D.toast.error(e("missions.error.stopFailed"))}},[ab,e]),ad=(0,c.useCallback)((a,b)=>{n(b=>{let c=b.find(b=>b.taskId===a);return c&&ab(c.executionId,"completed"),b})},[ab]),ae=(0,c.useCallback)(a=>{f().then(a=>{n(b=>{let c=new Set(b.map(a=>a.executionId));return[...b,...a.filter(a=>!c.has(a.executionId))]})}).catch(()=>{})},[]),af=(0,c.useCallback)(a=>{let b=I.current;a<0||a>=b.length||(b[a]?.focus(),G(a),C("input"))},[]),ag=(0,c.useCallback)(()=>{I.current[K.current]?.blur(),C("nav")},[]),ah=(0,c.useCallback)(()=>{af(K.current)},[af]),ai=(0,c.useCallback)(()=>{let a=I.current.length;0!==a&&af(Z(K.current,a,1))},[af]),aj=(0,c.useCallback)(()=>{let a=I.current.length;0!==a&&af(Z(K.current,a,-1))},[af]),ak=(0,c.useCallback)(a=>{let b=I.current.length;0!==b&&(C("nav"),G(c=>(function(a,b,c,d){if(c<=0)return 0;let e=Math.max(1,b);switch(d){case"left":return Z(a,c,-1);case"right":return Z(a,c,1);case"up":{let b=a-e;return b<0?a:b}case"down":{let b=a+e;return b>=c?a:b}default:return a}})(c,J.current,b,a)))},[]),al=(0,c.useCallback)(a=>{let b=I.current.length;0!==b&&(C("nav"),G(c=>Z(c,b,a)))},[]),am=(0,c.useCallback)(a=>{let b=L.current.findIndex(b=>b.taskId===a);b>=0&&af(b)},[af]);(0,Y.useActionShortcut)("missions.jump",a=>{let b=Number(a.key);Number.isInteger(b)&&b>=1&&af(b-1)}),(0,Y.useActionShortcut)("missions.moveSelection",a=>{ak("ArrowUp"===a.key?"up":"ArrowDown"===a.key?"down":"ArrowLeft"===a.key?"left":"right")}),(0,Y.useActionShortcut)("missions.cycle",()=>al(1)),(0,Y.useActionShortcut)("missions.cycleBack",()=>al(-1)),(0,Y.useActionShortcut)("missions.focus",()=>ah()),(0,Y.useActionShortcut)("missions.next",()=>ai()),(0,Y.useActionShortcut)("missions.prev",()=>aj()),(0,Y.useActionShortcut)("missions.exit",()=>ag()),(0,c.useEffect)(()=>{let a=U.current;if(!a)return;let b=a=>{let b=a.target,c=b?.closest("[data-pane-index]");if(!c)return;let d=Number(c.dataset.paneIndex);Number.isInteger(d)&&(G(d),C("input"))};return a.addEventListener("focusin",b),()=>a.removeEventListener("focusin",b)},[]);let an=Array.from(new Map(l.map(a=>[a.workspaceId,a.workspaceName])).entries()).map(([a,b])=>({id:a,name:b})),ao=x?l.filter(a=>a.workspaceId===x):l;L.current=ao,I.current=ao.map(a=>H.current.get(a.taskId)).filter(a=>!!a),J.current=S,(0,c.useEffect)(()=>{G(a=>{let b=ao.length;return 0===b?0:Math.min(a,b-1)})},[ao.length]);let ap=new Set(l.map(a=>a.taskId));return(0,b.jsxs)("div",{className:"flex h-full flex-col",children:[(0,b.jsxs)("div",{className:"header-sm shrink-0 px-4 flex items-center gap-3",children:[(0,b.jsx)("h1",{className:"text-base font-semibold",children:e("missions.pageTitle")}),(0,b.jsx)(B.Badge,{variant:"input"===A?"default":"secondary",className:"input"===A?"shrink-0":"shrink-0 bg-muted text-muted-foreground",children:"input"===A?e("missions.mode.input"):e("missions.mode.nav")}),(0,b.jsxs)(i.Select,{value:x,onValueChange:a=>y(a??""),children:[(0,b.jsx)(i.SelectTrigger,{className:"w-36 h-8",children:(0,b.jsx)("span",{className:"truncate",children:x?an.find(a=>a.id===x)?.name??e("missions.filterAll"):e("missions.filterAll")})}),(0,b.jsxs)(i.SelectContent,{children:[(0,b.jsx)(i.SelectItem,{value:"",children:e("missions.filterAll")}),an.map(a=>(0,b.jsx)(i.SelectItem,{value:a.id,children:a.name},a.id))]})]}),(0,b.jsx)("div",{className:"flex-1"}),(0,b.jsx)(q,{value:o,customValue:t,onChange:$}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(j.Button,{ref:z,onClick:()=>w(a=>!a),children:e("missions.launchTask")}),(0,b.jsx)(X,{open:v,onOpenChange:w,onLaunched:ae,runningTaskIds:ap,anchorRef:z})]})]}),(0,b.jsx)("div",{ref:U,className:"flex-1 overflow-auto min-h-0 p-4",children:0===ao.length&&0===N.size?(0,b.jsx)(k.EmptyState,{icon:m,title:e("missions.emptyTitle"),description:e("missions.emptyDesc"),className:"h-full",action:(0,b.jsx)(j.Button,{onClick:()=>w(!0),children:e("missions.launchTask")})}):(0,b.jsx)(r.DndContext,{id:"missions-dnd",sensors:_,collisionDetection:r.closestCenter,onDragEnd:aa,children:(0,b.jsx)(s.SortableContext,{items:ao.map(a=>a.executionId),strategy:s.rectSortingStrategy,children:(0,b.jsx)("div",{className:"grid gap-4",style:{gridTemplateColumns:`repeat(${S}, 1fr)`,gridAutoRows:V},children:ao.map((a,c)=>(0,b.jsx)(F,{execution:a,isRemoving:N.has(a.executionId),removeReason:N.get(a.executionId),onStop:ac,onSessionEnd:ad,index:c,mode:A,isSelected:E===c&&"nav"===A,onRegisterControls:M,onRequestFocus:am},a.executionId))})})})})]})}],989799)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_app_missions_missions-client_tsx_11429lj._.js.map
|