tower-studio 0.2.40 → 0.2.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +2 -0
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/routes-manifest.json +16 -0
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +31 -31
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/adapters/test/route.js +2 -2
- package/.next/standalone/.next/server/app/api/adapters/test/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/browse-fs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/files/assets/[projectId]/[filename]/route.js.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 +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 +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/route.js +1 -1
- package/.next/standalone/.next/server/app/api/internal/assistant/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/assistant/sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/internal/assistant/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/backup/import/route.js +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/install/route.js +2 -3
- package/.next/standalone/.next/server/app/api/internal/hooks/install/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/hooks/stop/route.js +1 -1
- package/.next/standalone/.next/server/app/api/internal/hooks/stop/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/hooks/upload/route.js +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]/buffer/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/input/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/resume/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/resume/route/build-manifest.json +9 -0
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/resume/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/resume/route.js +11 -0
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/resume/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/resume/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/start/route.js +5 -5
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/start/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/stop/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/stop/route/build-manifest.json +9 -0
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/stop/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/stop/route.js +11 -0
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/stop/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/stop/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/tasks/[taskId]/diff/route.js +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]/diff-patch/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[taskId]/diff-patch/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[taskId]/merge/route.js +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 +2 -2
- package/.next/standalone/.next/server/app/missions/page/server-reference-manifest.json +118 -118
- package/.next/standalone/.next/server/app/missions/page.js +2 -3
- package/.next/standalone/.next/server/app/missions/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/missions/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/onboarding/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/onboarding/page/server-reference-manifest.json +31 -31
- package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +31 -31
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +48 -48
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/server-reference-manifest.json +118 -106
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/server-reference-manifest.json +97 -85
- 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 +3 -3
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/server-reference-manifest.json +74 -62
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/server-reference-manifest.json +77 -77
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/server-reference-manifest.json +31 -31
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/server-reference-manifest.json +73 -73
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/react-loadable-manifest.json +4 -4
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/server-reference-manifest.json +88 -76
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/workspaces/page/server-reference-manifest.json +59 -47
- package/.next/standalone/.next/server/app/workspaces/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +2 -0
- package/.next/standalone/.next/server/chunks/07-d_@anthropic-ai_claude-agent-sdk_sdk_mjs_0.721uk._.js +16 -9
- package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_0eh8dj_.js +5 -5
- package/.next/standalone/.next/server/chunks/0zjb_server_app_api_internal_terminal_[taskId]_resume_route_actions_0uascj..js +3 -0
- package/.next/standalone/.next/server/chunks/0zjb_server_app_api_internal_terminal_[taskId]_stop_route_actions_0r3bvc-.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.tbb~k._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05zlbau._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__06qz5fz._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__075f7rs._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__08b~~wj._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__037x-0a._.js → [root-of-the-server]__0askhfg._.js} +4 -4
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__04u7b2g._.js → [root-of-the-server]__0bo_6v~._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e~6fr~._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0kexk71._.js → [root-of-the-server]__0fxmnch._.js} +3 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0gr~8aq._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0hd.0to._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0g2lv9x._.js → [root-of-the-server]__0j3l3l4._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0obk~80._.js +28 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__05nz.tg._.js → [root-of-the-server]__0skk0fd._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0ag-i9m._.js → [root-of-the-server]__0v2nkck._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~6py0f._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__126b53k._.js +4 -0
- package/.next/standalone/.next/server/chunks/_0aflzks._.js +7 -0
- package/.next/standalone/.next/server/chunks/_0b~hjvi._.js +7 -0
- package/.next/standalone/.next/server/chunks/_0qk_esg._.js +4 -0
- package/.next/standalone/.next/server/chunks/src_02ruq-1._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_07gek7k._.js +3 -0
- package/.next/standalone/.next/server/chunks/src_0mqkaid._.js +3 -0
- package/.next/standalone/.next/server/chunks/src_actions_agent-actions_ts_10q9r5b._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/0iu._[workspaceId]_projects_[projectId]_versions_version-timeline-client_tsx_07o_kyi._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{0ws9_lucide-react_dist_esm_icons_10_90yo._.js → 0ws9_lucide-react_dist_esm_icons_0pkla8j._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0.-z9ts._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__038u_kv._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__045k323._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__04wbr9x._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__058rbx5._.js +3 -3
- 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]__087pocz._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0c2mh1c._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ce3fpq._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0dsaqeq._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0gt5dbj._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h-se8t._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h589~0._.js +3 -3
- 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]__0oq-j16._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0whlq2_._.js +4 -0
- 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]__10s67lq._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12w35bx._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/_0-~9em3._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_03lt1_x._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/_04~zqvy._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/_070t_mh._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0_z-t6g._.js → _08bq4g8._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0t863nl._.js → _09z2zmm._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0_5abui._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0axcfvf._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0c2gong._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0cj9a7y._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0ecu98s._.js → _0dye20y._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0zqwuq~._.js → _0f~l8kv._.js} +3 -3
- package/.next/standalone/.next/server/chunks/ssr/{_0o3rthp._.js → _0m.wslt._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0o2tntr._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0p6p_68._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/{_0u_uywm._.js → _0q2mf9q._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0rdyrfd._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0be3783._.js → _0rq68d8._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0hh17jg._.js → _0rxeqmo._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_07_8m~l._.js → _0u.n7v8._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0u7c6bz._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/_0wbcp88._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0whlnt7._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0~oc5bl._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_116-_2z._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_12ca88g._.js +3 -3
- 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 +2 -2
- package/.next/standalone/.next/server/chunks/ssr/src_actions_file-actions_ts_0gcvqwm._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_missions_missions-client_tsx_11429lj._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_onboarding_page_tsx_0xf7hpz._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_settings_page_tsx_0h9v7dr._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_assets_assets-page-client_tsx_0wyzpam._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_board-page-client_tsx_0gips66._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_notes_notes-page-client_tsx_10gyo3v._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_tasks_[taskId]_task-page-client_tsx_02t7blt._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_components_ui_select_tsx_0d2ra01._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_lib_11w~.ge._.js → src_lib_0x6grav._.js} +1 -1
- package/.next/standalone/.next/server/functions-config-manifest.json +2 -0
- 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 +364 -322
- package/.next/standalone/.next/static/chunks/0-efd~h5j2ufi.js +1 -0
- package/.next/standalone/.next/static/chunks/{0s6gcjv24hfkq.js → 0.onaugl2w8ci.js} +1 -1
- package/.next/standalone/.next/static/chunks/{03jo4masky_ji.js → 0.wxa05y455w7.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0nc-n~ecfjozt.js → 0.z171pzeg-.7.js} +1 -1
- package/.next/standalone/.next/static/chunks/01zlxs4rl~h_o.js +1 -0
- package/.next/standalone/.next/static/chunks/{0vm6adb7s2i4g.js → 02f8-ju2se8qw.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0roncmx7dp-47.js → 035a_v6g7ioyw.js} +1 -1
- package/.next/standalone/.next/static/chunks/{11brr5_f60yx-.js → 040j8d.w8mkyn.js} +1 -1
- package/.next/standalone/.next/static/chunks/0_d04kox03m72.css +1 -0
- package/.next/standalone/.next/static/chunks/0af7afat3acfx.js +1 -0
- package/.next/standalone/.next/static/chunks/0ais32-8.3wlj.js +1 -0
- package/.next/standalone/.next/static/chunks/{0tb.0x~6y.21w.js → 0bdwzhoelky9-.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0.65.u3zhwau~.js → 0clewc5ifaruu.js} +1 -1
- package/.next/standalone/.next/static/chunks/0dewfthzwmcwb.js +1 -0
- package/.next/standalone/.next/static/chunks/0f43x~jzb70f4.js +1 -0
- package/.next/standalone/.next/static/chunks/{0v.l5.sqos562.js → 0i-x__600fys6.js} +1 -1
- package/.next/standalone/.next/static/chunks/{050agjgyp545k.js → 0l25d0nc5ygyd.js} +1 -1
- package/.next/standalone/.next/static/chunks/0lyq0-a32.15m.js +1 -0
- package/.next/standalone/.next/static/chunks/{0~33w7-91bik-.js → 0m~m1~si.ot17.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0bq80txkiwk0q.js → 0rozlwh3y46l0.js} +1 -1
- package/.next/standalone/.next/static/chunks/{1821tyytk30ed.js → 0t8lz62rmr801.js} +2 -2
- package/.next/standalone/.next/static/chunks/0utrquxfg25b2.js +1 -0
- package/.next/standalone/.next/static/chunks/{0bx6xpa7fgedh.js → 0wcdxs4sl-gjf.js} +1 -1
- package/.next/standalone/.next/static/chunks/0wcwdbtpm0~r6.js +1 -0
- package/.next/standalone/.next/static/chunks/0x-ug4iz~~qr2.js +1 -0
- package/.next/standalone/.next/static/chunks/0xj6v_80hlyv0.js +1 -0
- package/.next/standalone/.next/static/chunks/0xl7h5fsfc7zk.js +1 -0
- package/.next/standalone/.next/static/chunks/{0xxn47mtozln~.js → 0ypd9eqm_pj-o.js} +1 -1
- package/.next/standalone/.next/static/chunks/115ae91fq~slq.js +1 -0
- package/.next/standalone/.next/static/chunks/{120u45g91sx4q.js → 13.3woq55msp..js} +1 -1
- package/.next/standalone/.next/static/chunks/17fug-zaik-v~.js +1 -0
- package/.next/standalone/.next/static/chunks/{0v8apmh_d7lz3.js → 17m4o~gdsvuo3.js} +1 -1
- package/.next/standalone/package.json +1 -1
- package/README.md +25 -3
- package/README.zh.md +25 -3
- package/dist/mcp-server.cjs +115 -0
- package/package.json +1 -1
- package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_0hrprmi.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.wld9h._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.z8.oi._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02jy80j._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0az764e._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0d1bhsb._.js +0 -28
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0kuo6q5._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0np.553._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0u_-4~7._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__01kyzx1._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__02mo_kb._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__02~6htc._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__077c1-u._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0da~mv~._.js +0 -47
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ea-1l0._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__10~3-.h._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0-_yznx._.js +0 -43
- package/.next/standalone/.next/server/chunks/ssr/_04jcctt._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0a-.s7z._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0aqfqr5._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0g8mw1b._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0qrc1eu._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0~cy-h1._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_11rjd4d._.js +0 -3
- package/.next/standalone/.next/static/chunks/02zqmiej0opg7.js +0 -1
- package/.next/standalone/.next/static/chunks/03rl6s3rpptas.js +0 -1
- package/.next/standalone/.next/static/chunks/05n5tgexx2_92.js +0 -1
- package/.next/standalone/.next/static/chunks/0651zmy-w~saj.js +0 -1
- package/.next/standalone/.next/static/chunks/09ossbd-6zx4g.js +0 -1
- package/.next/standalone/.next/static/chunks/0_d-xz2x5qb_c.js +0 -1
- package/.next/standalone/.next/static/chunks/0dp-d685xgb68.js +0 -1
- package/.next/standalone/.next/static/chunks/0kf6kwtt_mouu.js +0 -1
- package/.next/standalone/.next/static/chunks/0l2-qbv0tx44i.js +0 -1
- package/.next/standalone/.next/static/chunks/0l3n_2z5xfhor.js +0 -1
- package/.next/standalone/.next/static/chunks/0mu2posb9cg4b.js +0 -1
- package/.next/standalone/.next/static/chunks/0t1nk8jlwgyb-.js +0 -1
- package/.next/standalone/.next/static/chunks/0~qrkswofk7zn.css +0 -1
- package/.next/standalone/.next/static/chunks/16e-u8e~pzz_-.js +0 -1
- package/.next/standalone/.next/static/chunks/183m8iouij_n8.js +0 -1
- /package/.next/standalone/.next/static/{wtOlqKEl8oeuEeWLbCnuv → LCBoYZWhXzs8PjuBmxw7g}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{wtOlqKEl8oeuEeWLbCnuv → LCBoYZWhXzs8PjuBmxw7g}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{wtOlqKEl8oeuEeWLbCnuv → LCBoYZWhXzs8PjuBmxw7g}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,49007,e=>{"use strict";let t=(0,e.i(572989).default)("ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]);e.s(["MoreHorizontal",0,t],49007)},961930,228559,271936,68128,743757,301823,398567,6851,462053,784830,262059,560033,374083,476723,72173,521192,851663,378837,188366,132596,408656,790326,516804,641388,e=>{"use strict";e.s([],961930),e.i(708878);var t,n=e.i(965652),o=e.i(462902);let r=n.createContext(void 0);function a(e){let t=n.useContext(r);if(void 0===t&&!e)throw Error((0,o.default)(33));return t}e.s(["MenuPositionerContext",0,r,"useMenuPositionerContext",0,a],228559);let i=n.createContext(void 0);function s(e){let t=n.useContext(i);if(void 0===t&&!e)throw Error((0,o.default)(36));return t}e.s(["MenuRootContext",0,i,"useMenuRootContext",0,s],271936);var u=e.i(581263),l=e.i(845756);let d=n.forwardRef(function(e,t){let{className:n,render:o,...r}=e,{store:i}=s(),{arrowRef:d,side:c,align:p,arrowUncentered:f,arrowStyles:m}=a(),g=i.useState("open");return(0,u.useRenderElement)("div",e,{ref:[d,t],stateAttributesMapping:l.popupStateMapping,state:{open:g,side:c,align:p,uncentered:f},props:{style:m,"aria-hidden":!0,...r}})});e.s(["MenuArrow",0,d],68128);var c=e.i(809058);let p=n.createContext(void 0);function f(e=!0){let t=n.useContext(p);if(void 0===t&&!e)throw Error((0,o.default)(25));return t}e.s(["useContextMenuRootContext",0,f],743757);var m=e.i(586622);let g={...l.popupStateMapping,...c.transitionStatusMapping},v=n.forwardRef(function(e,t){let{className:n,render:o,...r}=e,{store:a}=s(),i=a.useState("open"),l=a.useState("mounted"),d=a.useState("transitionStatus"),c=a.useState("lastOpenChangeReason"),p=f();return(0,u.useRenderElement)("div",e,{ref:p?.backdropRef?[t,p.backdropRef]:t,state:{open:i,transitionStatus:d},stateAttributesMapping:g,props:[{role:"presentation",hidden:!l,style:{pointerEvents:c===m.REASONS.triggerHover?"none":void 0,userSelect:"none",WebkitUserSelect:"none"}},r]})});e.s(["MenuBackdrop",0,v],301823);var h=e.i(887642),b=e.i(314757);let S=n.createContext(void 0);var x=e.i(362891),R=e.i(282109),y=e.i(565455),E=e.i(442383);function C(e){let{closeOnClick:t,highlighted:o,id:r,nodeId:a,store:i,typingRef:s,itemRef:u,itemMetadata:l}=e,{events:d}=i.useState("floatingTreeRoot"),c=f(!0),p=void 0!==c;return n.useMemo(()=>({id:r,role:"menuitem",tabIndex:o?0:-1,onKeyDown(e){" "===e.key&&s?.current&&e.preventDefault()},onMouseMove(e){a&&d.emit("itemhover",{nodeId:a,target:e.currentTarget})},onClick(e){t&&d.emit("close",{domEvent:e,reason:m.REASONS.itemPress})},onMouseUp(e){if(c){let t=c.initialCursorPointRef.current;if(c.initialCursorPointRef.current=null,p&&t&&1>=Math.abs(e.clientX-t.x)&&1>=Math.abs(e.clientY-t.y)||p&&!E.isMac&&2===e.button)return}u.current&&i.context.allowMouseUpTriggerRef.current&&(!p||2===e.button)&&(!l||"regular-item"===l.type)&&u.current.click()}}),[t,o,r,d,a,i,s,u,c,p,l])}let M={type:"regular-item"};function I(e){let{closeOnClick:t,disabled:o=!1,highlighted:r,id:a,store:i,typingRef:s=i.context.typingRef,nativeButton:u,itemMetadata:l,nodeId:d}=e,c=n.useRef(null),{getButtonProps:p,buttonRef:f}=(0,R.useButton)({disabled:o,focusableWhenDisabled:!0,native:u,composite:!0}),m=C({closeOnClick:t,highlighted:r,id:a,nodeId:d,store:i,typingRef:s,itemRef:c,itemMetadata:l}),g=n.useCallback(e=>(0,y.mergeProps)(m,{onMouseEnter(){"submenu-trigger"===l.type&&l.setActive()}},e,p),[m,p,l]),v=(0,x.useMergedRefs)(c,f);return n.useMemo(()=>({getItemProps:g,itemRef:v}),[g,v])}e.s(["REGULAR_ITEM",0,M,"useMenuItem",0,I],398567);var P=e.i(655728),w=e.i(207516);let T=((t={}).checked="data-checked",t.unchecked="data-unchecked",t.disabled="data-disabled",t.highlighted="data-highlighted",t),O={checked:e=>e?{[T.checked]:""}:{[T.unchecked]:""},...c.transitionStatusMapping};var k=e.i(67077),N=e.i(289721);let A=n.forwardRef(function(e,t){let{render:o,className:r,id:i,label:l,nativeButton:d=!1,disabled:c=!1,closeOnClick:p=!1,checked:f,defaultChecked:g,onCheckedChange:v,...x}=e,R=(0,P.useCompositeListItem)({label:l}),y=a(!0),E=(0,w.useBaseUiId)(i),{store:C}=s(),T=C.useState("isActive",R.index),A=C.useState("itemProps"),[D,j]=(0,b.useControlled)({controlled:f,default:g??!1,name:"MenuCheckboxItem",state:"checked"}),{getItemProps:L,itemRef:F}=I({closeOnClick:p,disabled:c,highlighted:T,id:E,store:C,nativeButton:d,nodeId:y?.nodeId,itemMetadata:M}),U=n.useMemo(()=>({disabled:c,highlighted:T,checked:D}),[c,T,D]),_=(0,h.useStableCallback)(e=>{let t={...(0,k.createChangeEventDetails)(m.REASONS.itemPress,e.nativeEvent),preventUnmountOnClose:()=>{}};v?.(!D,t),t.isCanceled||j(e=>!e)}),B=(0,u.useRenderElement)("div",e,{state:U,stateAttributesMapping:O,props:[A,{role:"menuitemcheckbox","aria-checked":D,onClick:_},x,L],ref:[F,t,R.ref]});return(0,N.jsx)(S.Provider,{value:U,children:B})});e.s(["MenuCheckboxItem",0,A],6851);var D=e.i(193214),j=e.i(504068);let L=n.forwardRef(function(e,t){let{render:r,className:a,keepMounted:i=!1,...s}=e,l=function(){let e=n.useContext(S);if(void 0===e)throw Error((0,o.default)(30));return e}(),d=n.useRef(null),{transitionStatus:c,setMounted:p}=(0,D.useTransitionStatus)(l.checked);(0,j.useOpenChangeComplete)({open:l.checked,ref:d,onComplete(){l.checked||p(!1)}});let f={checked:l.checked,disabled:l.disabled,highlighted:l.highlighted,transitionStatus:c};return(0,u.useRenderElement)("span",e,{state:f,ref:[t,d],stateAttributesMapping:O,props:{"aria-hidden":!0,...s},enabled:i||l.checked})});e.s(["MenuCheckboxItemIndicator",0,L],462053);let F=n.createContext(void 0),U=n.forwardRef(function(e,t){let{render:o,className:r,...a}=e,[i,s]=n.useState(void 0),l=n.useMemo(()=>({setLabelId:s}),[s]),d=(0,u.useRenderElement)("div",e,{ref:t,props:{role:"group","aria-labelledby":i,...a}});return(0,N.jsx)(F.Provider,{value:l,children:d})});e.s(["MenuGroup",0,U],784830);var _=e.i(804849);let B=n.forwardRef(function(e,t){let{className:r,render:a,id:i,...s}=e,l=(0,w.useBaseUiId)(i),{setLabelId:d}=function(){let e=n.useContext(F);if(void 0===e)throw Error((0,o.default)(31));return e}();return(0,_.useIsoLayoutEffect)(()=>(d(l),()=>{d(void 0)}),[d,l]),(0,u.useRenderElement)("div",e,{ref:t,props:{id:l,role:"presentation",...s}})});e.s(["MenuGroupLabel",0,B],262059);let H=n.forwardRef(function(e,t){let{render:n,className:o,id:r,label:i,nativeButton:l=!1,disabled:d=!1,closeOnClick:c=!0,...p}=e,f=(0,P.useCompositeListItem)({label:i}),m=a(!0),g=(0,w.useBaseUiId)(r),{store:v}=s(),h=v.useState("isActive",f.index),b=v.useState("itemProps"),{getItemProps:S,itemRef:x}=I({closeOnClick:c,disabled:d,highlighted:h,id:g,store:v,nativeButton:l,nodeId:m?.nodeId,itemMetadata:M});return(0,u.useRenderElement)("div",e,{state:{disabled:d,highlighted:h},props:[b,p,S],ref:[x,t,f.ref]})});e.s(["MenuItem",0,H],560033);let G=n.forwardRef(function(e,t){let{render:o,className:r,id:i,label:l,closeOnClick:d=!1,...c}=e,p=n.useRef(null),f=(0,P.useCompositeListItem)({label:l}),m=a(!0),g=m?.nodeId,v=(0,w.useBaseUiId)(i),{store:h}=s(),b=h.useState("isActive",f.index),S=h.useState("itemProps"),x=h.context.typingRef,{getButtonProps:E,buttonRef:M}=(0,R.useButton)({native:!1,composite:!0}),I=C({closeOnClick:d,highlighted:b,id:v,nodeId:g,store:h,typingRef:x,itemRef:p}),T=n.useMemo(()=>({highlighted:b}),[b]);return(0,u.useRenderElement)("a",e,{state:T,props:[S,c,function(e){return(0,y.mergeProps)(I,e,E)}],ref:[p,M,t,f.ref]})});e.s(["MenuLinkItem",0,G],374083);var V=e.i(11931),z=e.i(511980),Y=e.i(196368),K=e.i(197920),W=e.i(808754);let J={...l.popupStateMapping,...c.transitionStatusMapping},X=n.forwardRef(function(e,t){let{render:o,className:r,finalFocus:i,...l}=e,{store:d}=s(),{side:c,align:p}=a(),f=null!=(0,Y.useToolbarRootContext)(!0),g=d.useState("open"),v=d.useState("transitionStatus"),h=d.useState("popupProps"),b=d.useState("mounted"),S=d.useState("instantType"),x=d.useState("activeTriggerElement"),R=d.useState("parent"),y=d.useState("lastOpenChangeReason"),E=d.useState("rootId"),C=d.useState("floatingRootContext"),M=d.useState("floatingTreeRoot"),I=d.useState("closeDelay"),P=d.useState("activeTriggerElement"),w="context-menu"===R.type;(0,j.useOpenChangeComplete)({open:g,ref:d.context.popupRef,onComplete(){g&&d.context.onOpenChangeComplete?.(!0)}}),n.useEffect(()=>{function e(e){d.setOpen(!1,(0,k.createChangeEventDetails)(e.reason,e.domEvent))}return M.events.on("close",e),()=>{M.events.off("close",e)}},[M.events,d]);let T=d.useState("hoverEnabled"),O=d.useState("disabled");(0,z.useHoverFloatingInteraction)(C,{enabled:T&&!O&&!w&&"menubar"!==R.type,closeDelay:I});let A={transitionStatus:v,side:c,align:p,open:g,nested:"menu"===R.type,instant:S},D=n.useCallback(e=>{d.set("popupElement",e)},[d]),L=(0,u.useRenderElement)("div",e,{state:A,ref:[t,d.context.popupRef,D],stateAttributesMapping:J,props:[h,{onKeyDown(e){f&&K.COMPOSITE_KEYS.has(e.key)&&e.stopPropagation()}},(0,W.getDisabledMountTransitionStyles)(v),l,{"data-rootownerid":E}]}),F=void 0===R.type||w;return(x||"menubar"===R.type&&y!==m.REASONS.outsidePress)&&(F=!0),(0,N.jsx)(V.FloatingFocusManager,{context:C,modal:w,disabled:!b,returnFocus:void 0===i?F:i,initialFocus:"menu"!==R.type,restoreFocus:!0,externalTree:"menubar"!==R.type?M:void 0,previousFocusableElement:P,nextFocusableElement:void 0===R.type?d.context.triggerFocusTargetRef:void 0,beforeContentFocusGuardRef:void 0===R.type?d.context.beforeContentFocusGuardRef:void 0,children:L})});e.s(["MenuPopup",0,X],476723);var $=e.i(888393);let q=n.createContext(void 0),Q=n.forwardRef(function(e,t){let{keepMounted:n=!1,...o}=e,{store:r}=s();return r.useState("mounted")||n?(0,N.jsx)(q.Provider,{value:n,children:(0,N.jsx)($.FloatingPortal,{ref:t,...o})}):null});e.s(["MenuPortal",0,Q],72173);var Z=e.i(831766),ee=e.i(161476),et=e.i(205995),en=e.i(887943),eo=e.i(579028),er=e.i(72287),ea=e.i(693354),ei=e.i(431362),es=e.i(412522);let eu=n.forwardRef(function(e,t){let{anchor:a,positionMethod:i="absolute",className:d,render:c,side:p,align:g,sideOffset:v=0,alignOffset:h=0,collisionBoundary:b="clipping-ancestors",collisionPadding:S=5,arrowPadding:x=5,sticky:R=!1,disableAnchorTracking:y=!1,collisionAvoidance:E=ea.DROPDOWN_COLLISION_AVOIDANCE,...C}=e,{store:M}=s(),I=function(){let e=n.useContext(q);if(void 0===e)throw Error((0,o.default)(32));return e}(),P=f(!0),w=M.useState("parent"),T=M.useState("floatingRootContext"),O=M.useState("floatingTreeRoot"),A=M.useState("mounted"),D=M.useState("open"),j=M.useState("modal"),L=M.useState("activeTriggerElement"),F=M.useState("transitionStatus"),U=M.useState("positionerElement"),B=M.useState("instantType"),H=M.useState("hasViewport"),G=M.useState("lastOpenChangeReason"),V=M.useState("floatingNodeId"),z=M.useState("floatingParentNodeId"),Y=T.useState("domReferenceElement"),K=n.useRef(null),J=(0,es.useAnimationsFinished)(U,!1,!1),X=a,$=v,Q=h,eu=g,el=E;"context-menu"===w.type&&(X=a??w.context?.anchor,eu=eu??"start",p||"center"===eu||(Q=e.alignOffset??2,$=e.sideOffset??-5));let ed=p,ec=eu;"menu"===w.type?(ed=ed??"inline-end",ec=ec??"start",el=e.collisionAvoidance??ea.POPUP_COLLISION_AVOIDANCE):"menubar"===w.type&&(ed=ed??"bottom",ec=ec??"start");let ep="context-menu"===w.type,ef=(0,en.useAnchorPositioning)({anchor:X,floatingRootContext:T,positionMethod:P?"fixed":i,mounted:A,side:ed,sideOffset:$,align:ec,alignOffset:Q,arrowPadding:ep?0:x,collisionBoundary:b,collisionPadding:S,sticky:R,nodeId:V,keepMounted:I,disableAnchorTracking:y,collisionAvoidance:el,shiftCrossAxis:ep&&!("side"in el&&"flip"===el.side),externalTree:O,adaptiveOrigin:H?ei.adaptiveOrigin:void 0}),em=n.useMemo(()=>{let e={};return D||(e.pointerEvents="none"),{role:"presentation",hidden:!A,style:{...ef.positionerStyles,...e}}},[D,A,ef.positionerStyles]);n.useEffect(()=>{function e(e){e.open&&(e.parentNodeId===V&&M.set("hoverEnabled",!1),e.nodeId!==V&&e.parentNodeId===M.select("floatingParentNodeId")&&M.setOpen(!1,(0,k.createChangeEventDetails)(m.REASONS.siblingOpen)))}return O.events.on("menuopenchange",e),()=>{O.events.off("menuopenchange",e)}},[M,O.events,V]),n.useEffect(()=>{if(null!=M.select("floatingParentNodeId"))return O.events.on("menuopenchange",e),()=>{O.events.off("menuopenchange",e)};function e(e){if(e.open||e.nodeId!==M.select("floatingParentNodeId"))return;let t=e.reason??m.REASONS.siblingOpen;M.setOpen(!1,(0,k.createChangeEventDetails)(t))}},[O.events,M]);let eg=(0,ee.useTimeout)();n.useEffect(()=>{D||eg.clear()},[D,eg]),n.useEffect(()=>{function e(e){if(D&&e.nodeId===M.select("floatingParentNodeId"))if(e.target&&L&&L!==e.target){let e=M.select("closeDelay");e>0?eg.isStarted()||eg.start(e,()=>{M.setOpen(!1,(0,k.createChangeEventDetails)(m.REASONS.siblingOpen))}):M.setOpen(!1,(0,k.createChangeEventDetails)(m.REASONS.siblingOpen))}else eg.clear()}return O.events.on("itemhover",e),()=>{O.events.off("itemhover",e)}},[O.events,D,L,M,eg]),n.useEffect(()=>{let e={open:D,nodeId:V,parentNodeId:z,reason:M.select("lastOpenChangeReason")};O.events.emit("menuopenchange",e)},[O.events,D,M,V,z]),(0,_.useIsoLayoutEffect)(()=>{let e=K.current;if(Y&&(K.current=Y),e&&Y&&Y!==e){M.set("instantType",void 0);let e=new AbortController;return J(()=>{M.set("instantType","trigger-change")},e.signal),()=>{e.abort()}}},[Y,J,M]);let ev={open:D,side:ef.side,align:ef.align,anchorHidden:ef.anchorHidden,nested:"menu"===w.type,instant:B},eh=n.useMemo(()=>({side:ef.side,align:ef.align,arrowRef:ef.arrowRef,arrowUncentered:ef.arrowUncentered,arrowStyles:ef.arrowStyles,nodeId:ef.context.nodeId}),[ef.side,ef.align,ef.arrowRef,ef.arrowUncentered,ef.arrowStyles,ef.context.nodeId]),eb=(0,u.useRenderElement)("div",e,{state:ev,stateAttributesMapping:l.popupStateMapping,ref:[t,M.useStateSetter("positionerElement")],props:[em,(0,W.getDisabledMountTransitionStyles)(F),C]}),eS=A&&"menu"!==w.type&&("menubar"!==w.type&&j&&G!==m.REASONS.triggerHover||"menubar"===w.type&&w.context.modal),ex=null;return"menubar"===w.type?ex=w.context.contentElement:void 0===w.type&&(ex=L),(0,N.jsxs)(r.Provider,{value:eh,children:[eS&&(0,N.jsx)(er.InternalBackdrop,{ref:"context-menu"===w.type||"nested-context-menu"===w.type?w.context.internalBackdropRef:null,inert:(0,Z.inertValue)(!D),cutout:ex}),(0,N.jsx)(et.FloatingNode,{id:V,children:(0,N.jsx)(eo.CompositeList,{elementsRef:M.context.itemDomElements,labelsRef:M.context.itemLabels,children:eb})})]})});e.s(["MenuPositioner",0,eu],521192);let el=n.createContext(void 0),ed=n.memo(n.forwardRef(function(e,t){let{render:o,className:r,value:a,defaultValue:i,onValueChange:s,disabled:l=!1,...d}=e,[c,p]=(0,b.useControlled)({controlled:a,default:i,name:"MenuRadioGroup"}),f=(0,h.useStableCallback)(s),m=(0,h.useStableCallback)((e,t)=>{f?.(e,t),t.isCanceled||p(e)}),g=(0,u.useRenderElement)("div",e,{state:{disabled:l},ref:t,props:{role:"group","aria-disabled":l||void 0,...d}}),v=n.useMemo(()=>({value:c,setValue:m,disabled:l}),[c,m,l]);return(0,N.jsx)(el.Provider,{value:v,children:g})}));e.s(["MenuRadioGroup",0,ed],851663);let ec=n.createContext(void 0),ep=n.forwardRef(function(e,t){let{render:r,className:i,id:l,label:d,nativeButton:c=!1,disabled:p=!1,closeOnClick:f=!1,value:g,...v}=e,b=(0,P.useCompositeListItem)({label:d}),S=a(!0),x=(0,w.useBaseUiId)(l),{store:R}=s(),y=R.useState("isActive",b.index),E=R.useState("itemProps"),{value:C,setValue:T,disabled:A}=function(){let e=n.useContext(el);if(void 0===e)throw Error((0,o.default)(34));return e}(),D=A||p,j=C===g,{getItemProps:L,itemRef:F}=I({closeOnClick:f,disabled:D,highlighted:y,id:x,store:R,nativeButton:c,nodeId:S?.nodeId,itemMetadata:M}),U=n.useMemo(()=>({disabled:D,highlighted:y,checked:j}),[D,y,j]),_=(0,h.useStableCallback)(e=>{T(g,{...(0,k.createChangeEventDetails)(m.REASONS.itemPress,e.nativeEvent),preventUnmountOnClose:()=>{}})}),B=(0,u.useRenderElement)("div",e,{state:U,stateAttributesMapping:O,props:[E,{role:"menuitemradio","aria-checked":j,onClick:_},v,L],ref:[F,t,b.ref]});return(0,N.jsx)(ec.Provider,{value:U,children:B})});e.s(["MenuRadioItem",0,ep],378837);let ef=n.forwardRef(function(e,t){let{render:r,className:a,keepMounted:i=!1,...s}=e,l=function(){let e=n.useContext(ec);if(void 0===e)throw Error((0,o.default)(35));return e}(),d=n.useRef(null),{transitionStatus:c,setMounted:p}=(0,D.useTransitionStatus)(l.checked);(0,j.useOpenChangeComplete)({open:l.checked,ref:d,onComplete(){l.checked||p(!1)}});let f={checked:l.checked,disabled:l.disabled,highlighted:l.highlighted,transitionStatus:c};return(0,u.useRenderElement)("span",e,{state:f,stateAttributesMapping:O,ref:[t,d],props:{"aria-hidden":!0,...s},enabled:i||l.checked})});e.s(["MenuRadioItemIndicator",0,ef],188366);var em=e.i(722357),eg=e.i(528796),ev=e.i(620163),eh=e.i(954588),eb=e.i(154660),eS=e.i(594640),ex=e.i(306296),eR=e.i(234951),ey=e.i(344478),eE=e.i(471959),eC=e.i(611008);let eM=n.createContext(null);function eI(e){let t=n.useContext(eM);if(null===t&&!e)throw Error((0,o.default)(5));return t}e.s(["useMenubarContext",0,eI],132596);var eP=e.i(824047),ew=e.i(892069),eT=e.i(596290),eO=e.i(370161),ek=e.i(903224),eN=e.i(512677),eA=e.i(771326),eD=e.i(87396);let ej={...eA.popupStoreSelectors,disabled:(0,eT.createSelector)(e=>"menubar"===e.parent.type&&e.parent.context.disabled||e.disabled),modal:(0,eT.createSelector)(e=>(void 0===e.parent.type||"context-menu"===e.parent.type)&&(e.modal??!0)),allowMouseEnter:(0,eT.createSelector)(e=>e.allowMouseEnter),stickIfOpen:(0,eT.createSelector)(e=>e.stickIfOpen),parent:(0,eT.createSelector)(e=>e.parent),rootId:(0,eT.createSelector)(e=>"menu"===e.parent.type?e.parent.store.select("rootId"):void 0!==e.parent.type?e.parent.context.rootId:e.rootId),activeIndex:(0,eT.createSelector)(e=>e.activeIndex),isActive:(0,eT.createSelector)((e,t)=>e.activeIndex===t),hoverEnabled:(0,eT.createSelector)(e=>e.hoverEnabled),instantType:(0,eT.createSelector)(e=>e.instantType),lastOpenChangeReason:(0,eT.createSelector)(e=>e.openChangeReason),floatingTreeRoot:(0,eT.createSelector)(e=>"menu"===e.parent.type?e.parent.store.select("floatingTreeRoot"):e.floatingTreeRoot),floatingNodeId:(0,eT.createSelector)(e=>e.floatingNodeId),floatingParentNodeId:(0,eT.createSelector)(e=>e.floatingParentNodeId),itemProps:(0,eT.createSelector)(e=>e.itemProps),closeDelay:(0,eT.createSelector)(e=>e.closeDelay),hasViewport:(0,eT.createSelector)(e=>e.hasViewport),keyboardEventRelay:(0,eT.createSelector)(e=>e.keyboardEventRelay?e.keyboardEventRelay:"menu"===e.parent.type?e.parent.store.select("keyboardEventRelay"):void 0)};class eL extends eO.ReactStore{constructor(e){super({...{...(0,eA.createInitialPopupStoreState)(),disabled:!1,modal:!0,allowMouseEnter:!1,stickIfOpen:!0,parent:{type:void 0},rootId:void 0,activeIndex:null,hoverEnabled:!0,instantType:void 0,openChangeReason:null,floatingTreeRoot:new eN.FloatingTreeStore,floatingNodeId:void 0,floatingParentNodeId:null,itemProps:eh.EMPTY_OBJECT,keyboardEventRelay:void 0,closeDelay:0,hasViewport:!1},...e},{positionerRef:n.createRef(),popupRef:n.createRef(),typingRef:{current:!1},itemDomElements:{current:[]},itemLabels:{current:[]},allowMouseUpTriggerRef:{current:!1},triggerFocusTargetRef:n.createRef(),beforeContentFocusGuardRef:n.createRef(),onOpenChangeComplete:void 0,triggerElements:new eD.PopupTriggerMap},ej),this.unsubscribeParentListener=this.observe("parent",e=>{if(this.unsubscribeParentListener?.(),"menu"===e.type){let t=e.store.select("rootId"),n=e.store.select("floatingTreeRoot"),o=e.store.select("keyboardEventRelay");this.unsubscribeParentListener=e.store.subscribe(()=>{let r=e.store.select("rootId"),a=e.store.select("floatingTreeRoot"),i=e.store.select("keyboardEventRelay");(t!==r||n!==a||o!==i)&&(t=r,n=a,o=i,this.notifyAll())}),this.context.allowMouseUpTriggerRef=e.store.context.allowMouseUpTriggerRef;return}void 0!==e.type&&(this.context.allowMouseUpTriggerRef=e.context.allowMouseUpTriggerRef),this.unsubscribeParentListener=null})}setOpen(e,t){this.state.floatingRootContext.context.events.emit("setOpen",{open:e,eventDetails:t})}static useStore(e,t){let n=(0,ek.useRefWithInit)(()=>new eL(t)).current;return e??n}unsubscribeParentListener=null}e.s(["MenuStore",0,eL],408656);var eF=e.i(894621);let eU=n.createContext(void 0);function e_(){return n.useContext(eU)}e.s(["MenuSubmenuRootContext",0,eU,"useMenuSubmenuRootContext",0,e_],790326);let eB=(0,eb.fastComponent)(function(e){let t,o,{children:r,open:a,onOpenChange:u,onOpenChangeComplete:l,defaultOpen:d=!1,disabled:c=!1,modal:p,loopFocus:g=!0,orientation:v="vertical",actionsRef:b,closeParentOnEsc:S=!1,handle:x,triggerId:R,defaultTriggerId:E=null,highlightItemOnHover:C=!0}=e,M=f(!0),I=s(!0),P=eI(!0),w=e_(),T=n.useMemo(()=>w&&I?{type:"menu",store:I.store}:P?{type:"menubar",context:P}:M&&!I?{type:"context-menu",context:M}:{type:void 0},[M,I,P,w]),O=eL.useStore(x?.store,{open:d,openProp:a,activeTriggerId:E,triggerIdProp:R,parent:T});(0,eg.useOnFirstRender)(()=>{void 0===a&&!1===O.state.open&&!0===d&&O.update({open:!0,activeTriggerId:E})}),O.useControlledProp("openProp",a),O.useControlledProp("triggerIdProp",R),O.useContextCallback("onOpenChangeComplete",l);let A=O.useState("floatingTreeRoot"),D=(0,et.useFloatingNodeId)(A),j=(0,et.useFloatingParentNodeId)();(0,_.useIsoLayoutEffect)(()=>{M&&!I?O.update({parent:{type:"context-menu",context:M},floatingNodeId:D,floatingParentNodeId:j}):I&&O.update({floatingNodeId:D,floatingParentNodeId:j})},[M,I,D,j,O]);let L=O.useState("open"),F=O.useState("activeTriggerElement"),U=O.useState("positionerElement"),B=O.useState("hoverEnabled"),H=O.useState("modal"),G=O.useState("disabled"),V=O.useState("lastOpenChangeReason"),z=O.useState("parent"),Y=O.useState("activeIndex"),K=O.useState("payload"),W=O.useState("floatingParentNodeId"),J=n.useRef(null),X=null!=W;O.useSyncedValues({disabled:c,modal:void 0===z.type?p:void 0,rootId:(0,em.useId)()});let{openMethod:$,triggerProps:q}=(0,ew.useOpenInteractionType)(L);(0,eF.useImplicitActiveTrigger)(O);let{forceUnmount:Q}=(0,eF.useOpenStateTransitions)(L,O,()=>{O.update({allowMouseEnter:!1,stickIfOpen:!0})}),Z=n.useRef("context-menu"!==z.type),en=(0,ee.useTimeout)();n.useEffect(()=>{if(L||(J.current=null),"context-menu"===z.type){if(!L){en.clear(),Z.current=!1;return}en.start(500,()=>{Z.current=!0})}},[en,L,z.type]),(0,ev.useScrollLock)(L&&H&&V!==m.REASONS.triggerHover&&"touch"!==$,U),(0,_.useIsoLayoutEffect)(()=>{L||B||O.set("hoverEnabled",!0)},[L,B,O]);let eo=n.useRef(!0),er=(0,ee.useTimeout)(),ei=(0,h.useStableCallback)((e,n)=>{let o=n.reason;if(L===e&&n.trigger===F&&V===o||(n.preventUnmountOnClose=()=>{O.set("preventUnmountingOnClose",!0)},e||null!=n.trigger||(n.trigger=F??void 0),u?.(e,n),n.isCanceled))return;let r={open:e,nativeEvent:n.event,reason:n.reason,nested:X};t?.emit("openchange",r);let a=n.event;if(!1===e&&a?.type==="click"&&"touch"===a.pointerType&&!eo.current)return;if(!e&&null!==Y){let e=O.context.itemDomElements.current[Y];queueMicrotask(()=>{e?.setAttribute("tabindex","-1")})}e&&o===m.REASONS.triggerFocus?(eo.current=!1,er.start(300,()=>{eo.current=!0})):(eo.current=!0,er.clear());let i=(o===m.REASONS.triggerPress||o===m.REASONS.itemPress)&&0===a.detail&&a?.isTrusted,s=!e&&(o===m.REASONS.escapeKey||null==o),l={open:e,openChangeReason:o};J.current=n.event??null;let d=n.trigger?.id??null;(d||e)&&(l.activeTriggerId=d,l.activeTriggerElement=n.trigger??null),O.update(l),"menubar"===z.type&&(o===m.REASONS.triggerFocus||o===m.REASONS.focusOut||o===m.REASONS.triggerHover||o===m.REASONS.listNavigation||o===m.REASONS.siblingOpen)?O.set("instantType","group"):i||s?O.set("instantType",i?"click":"dismiss"):O.set("instantType",void 0)}),es=n.useCallback(e=>{let t=(0,k.createChangeEventDetails)(e);return t.preventUnmountOnClose=()=>{O.set("preventUnmountingOnClose",!0)},t},[O]),eu=n.useCallback(()=>{O.setOpen(!1,es(m.REASONS.imperativeAction))},[O,es]);n.useImperativeHandle(b,()=>({unmount:Q,close:eu}),[Q,eu]),"context-menu"===z.type&&(o=z.context),n.useImperativeHandle(o?.positionerRef,()=>U,[U]),n.useImperativeHandle(o?.actionsRef,()=>({setOpen:ei}),[ei]);let el=(0,eC.useSyncedFloatingRootContext)({popupStore:O,onOpenChange:ei});t=el.context.events,n.useEffect(()=>{let e=({open:e,eventDetails:t})=>ei(e,t);return t.on("setOpen",e),()=>{t?.off("setOpen",e)}},[t,ei]);let ed=(0,eS.useDismiss)(el,{enabled:!G,bubbles:{escapeKey:S&&"menu"===z.type},outsidePress:()=>"context-menu"!==z.type||J.current?.type==="contextmenu"||Z.current,externalTree:X?A:void 0}),ec=(0,ey.useRole)(el,{role:"menu"}),ep=(0,eP.useDirection)(),ef=n.useCallback(e=>{O.select("activeIndex")!==e&&O.set("activeIndex",e)},[O]),eb=(0,eR.useListNavigation)(el,{enabled:!G,listRef:O.context.itemDomElements,activeIndex:Y,nested:void 0!==z.type,loopFocus:g,orientation:v,parentOrientation:"menubar"===z.type?z.context.orientation:void 0,rtl:"rtl"===ep,disabledIndices:eh.EMPTY_ARRAY,onNavigate:ef,openOnArrowKeyDown:"context-menu"!==z.type,externalTree:X?A:void 0,focusItemOnHover:C}),eM=n.useCallback(e=>{O.context.typingRef.current=e},[O]),eT=(0,eE.useTypeahead)(el,{listRef:O.context.itemLabels,elementsRef:O.context.itemDomElements,activeIndex:Y,resetMs:ea.TYPEAHEAD_RESET_MS,onMatch:e=>{L&&e!==Y&&O.set("activeIndex",e)},onTypingChange:eM}),{getReferenceProps:eO,getFloatingProps:ek,getItemProps:eN,getTriggerProps:eA}=(0,ex.useInteractions)([ed,ec,eb,eT]),eD=n.useMemo(()=>{let e=(0,y.mergeProps)(eO(),{onMouseMove(){O.set("allowMouseEnter",!0)}},q);return delete e.role,e},[eO,O,q]),ej=n.useMemo(()=>{let e=eA();if(!e)return e;let t=(0,y.mergeProps)(e,q);return delete t.role,delete t["aria-controls"],t},[eA,q]),eU=n.useMemo(()=>ek({onMouseMove(){O.set("allowMouseEnter",!0),"menu"===z.type&&O.set("hoverEnabled",!1)},onClick(){O.select("hoverEnabled")&&O.set("hoverEnabled",!1)},onKeyDown(e){let t=O.select("keyboardEventRelay");t&&!e.isPropagationStopped()&&t(e)}}),[ek,z.type,O]),eB=n.useMemo(()=>eN(),[eN]);O.useSyncedValues({floatingRootContext:el,activeTriggerProps:eD,inactiveTriggerProps:ej,popupProps:eU,itemProps:eB});let eH=n.useMemo(()=>({store:O,parent:T}),[O,T]),eG=(0,N.jsx)(i.Provider,{value:eH,children:"function"==typeof r?r({payload:K}):r});return void 0===z.type||"context-menu"===z.type?(0,N.jsx)(et.FloatingTree,{externalTree:A,children:eG}):eG});e.s(["MenuRoot",0,eB],516804),e.s(["MenuSubmenuRoot",0,function(e){let t=s().store,o=n.useMemo(()=>({parentMenu:t}),[t]);return(0,N.jsx)(eU.Provider,{value:o,children:(0,N.jsx)(eB,{...e})})}],641388)},136111,e=>{"use strict";var t=e.i(965652),n=e.i(362891),o=e.i(238706),r=e.i(655728);e.s(["useCompositeItem",0,function(e={}){let{highlightItemOnHover:a,highlightedIndex:i,onHighlightedIndexChange:s}=(0,o.useCompositeRootContext)(),{ref:u,index:l}=(0,r.useCompositeListItem)(e),d=i===l,c=t.useRef(null),p=(0,n.useMergedRefs)(u,c);return{compositeProps:t.useMemo(()=>({tabIndex:d?0:-1,onFocus(){s(l)},onMouseMove(){let e=c.current;if(!a||!e)return;let t=e.hasAttribute("disabled")||"true"===e.ariaDisabled;d||t||e.focus()}}),[d,s,l,a]),compositeRef:p,index:l}}])},755146,e=>{"use strict";var t,n=e.i(289721);e.i(961930);var o=e.i(68128),r=e.i(301823),a=e.i(6851),i=e.i(462053),s=e.i(784830),u=e.i(262059),l=e.i(560033),d=e.i(374083),c=e.i(476723),p=e.i(72173),f=e.i(521192),m=e.i(851663),g=e.i(378837),v=e.i(188366),h=e.i(516804),b=e.i(641388);e.i(708878);var S=e.i(462902),x=e.i(965652),R=e.i(585012),y=e.i(161476),E=e.i(102094),C=e.i(154660),M=e.i(887642),I=e.i(804849),P=e.i(954588),w=e.i(660272),T=e.i(430557),O=e.i(205995),k=e.i(422499),N=e.i(411657),A=e.i(306296),D=e.i(512677),j=e.i(682354),L=e.i(870541),F=e.i(271936),U=e.i(845756),_=e.i(581263),B=e.i(282109),H=e.i(748299),G=e.i(136111);function V(e){let{render:t,className:n,state:o=P.EMPTY_OBJECT,props:r=P.EMPTY_ARRAY,refs:a=P.EMPTY_ARRAY,metadata:i,stateAttributesMapping:s,tag:u="div",...l}=e,{compositeProps:d,compositeRef:c}=(0,G.useCompositeItem)({metadata:i});return(0,_.useRenderElement)(u,e,{state:o,ref:[...a,c],props:[d,...r,l],stateAttributesMapping:s})}var z=e.i(238706),Y=e.i(92615),K=e.i(894621),W=e.i(207516),J=e.i(586622),X=e.i(743757),$=e.i(132596),q=e.i(693354),Q=e.i(221732),Z=e.i(67077);let ee=(0,C.fastComponentRef)(function(e,t){let o,r,a,{render:i,className:s,disabled:u=!1,nativeButton:l=!0,id:d,openOnHover:c,delay:p=100,closeDelay:f=0,handle:m,payload:g,...v}=e,h=(0,F.useMenuRootContext)(!0),b=m?.store??h?.store;if(!b)throw Error((0,S.default)(85));let C=(0,W.useBaseUiId)(d),G=b.useState("isTriggerActive",C),ee=b.useState("floatingRootContext"),et=b.useState("isOpenedByTrigger",C),en=x.useRef(null),eo=(o=(0,X.useContextMenuRootContext)(!0),r=(0,F.useMenuRootContext)(!0),a=(0,$.useMenubarContext)(!0),x.useMemo(()=>a?{type:"menubar",context:a}:o&&!r?{type:"context-menu",context:o}:{type:void 0},[o,r,a])),er=(0,z.useCompositeRootContext)(!0),ea=(0,O.useFloatingTree)(),ei=x.useMemo(()=>ea??new D.FloatingTreeStore,[ea]),es=(0,O.useFloatingNodeId)(ei),eu=(0,O.useFloatingParentNodeId)(),{registerTrigger:el,isMountedByThisTrigger:ed}=(0,K.useTriggerDataForwarding)(C,en,b,{payload:g,closeDelay:f,parent:eo,floatingTreeRoot:ei,floatingNodeId:es,floatingParentNodeId:eu,keyboardEventRelay:er?.relayKeyboardEvent}),ec="menubar"===eo.type,ep=b.useState("disabled"),ef=u||ep||ec&&eo.context.disabled,{getButtonProps:em,buttonRef:eg}=(0,B.useButton)({disabled:ef,native:l});x.useEffect(()=>{et||void 0!==eo.type||(b.context.allowMouseUpTriggerRef.current=!1)},[b,et,eo.type]);let ev=x.useRef(null),eh=(0,y.useTimeout)(),eb=(0,M.useStableCallback)(e=>{if(!ev.current)return;eh.clear(),b.context.allowMouseUpTriggerRef.current=!1;let t=e.target;if((0,j.contains)(ev.current,t)||(0,j.contains)(b.select("positionerElement"),t)||t===ev.current||null!=t&&function e(t){return(0,Y.isHTMLElement)(t)&&t.hasAttribute("data-rootownerid")?t.getAttribute("data-rootownerid")??void 0:(0,Y.isLastTraversableNode)(t)?void 0:e((0,Y.getParentNode)(t))}(t)===b.select("rootId"))return;let n=(0,H.getPseudoElementBounds)(ev.current);e.clientX>=n.left-2&&e.clientX<=n.right+2&&e.clientY>=n.top-2&&e.clientY<=n.bottom+2||ei.events.emit("close",{domEvent:e,reason:J.REASONS.cancelOpen})});x.useEffect(()=>{et&&b.select("lastOpenChangeReason")===J.REASONS.triggerHover&&(0,E.ownerDocument)(ev.current).addEventListener("mouseup",eb,{once:!0})},[et,eb,b]);let eS=ec&&eo.context.hasSubmenuOpen,ex=c??eS,eR=(0,N.useHoverReferenceInteraction)(ee,{enabled:ex&&!ef&&"context-menu"!==eo.type&&(!ec||eS&&!ed),handleClose:(0,w.safePolygon)({blockPointerEvents:!ec}),mouseOnly:!0,move:!1,restMs:void 0===eo.type?p:void 0,delay:{close:f},triggerElementRef:en,externalTree:ei,isActiveTrigger:G}),ey=function(e,t){let n=(0,y.useTimeout)(),[o,r]=x.useState(!1);return(0,I.useIsoLayoutEffect)(()=>{e&&"trigger-hover"===t?(r(!0),n.start(q.PATIENT_CLICK_THRESHOLD,()=>{r(!1)})):e||(n.clear(),r(!1))},[e,t,n]),o}(et,b.select("lastOpenChangeReason")),eE=(0,T.useClick)(ee,{enabled:!ef&&"context-menu"!==eo.type,event:et&&ec?"click":"mousedown",toggle:!0,ignoreMouse:!1,stickIfOpen:void 0===eo.type&&ey}),eC=(0,k.useFocus)(ee,{enabled:!ef&&eS}),eM=function(e){let{enabled:t=!0,mouseDownAction:n,open:o}=e,r=x.useRef(!1);return x.useMemo(()=>t?{onMouseDown:e=>{("open"===n&&!o||"close"===n&&o)&&(r.current=!0,(0,E.ownerDocument)(e.currentTarget).addEventListener("click",()=>{r.current=!1},{once:!0}))},onClick:e=>{r.current&&(r.current=!1,e.preventBaseUIHandler())}}:P.EMPTY_OBJECT,[t,n,o])}({open:et,enabled:ec,mouseDownAction:"open"}),eI=(0,A.useInteractions)([eE,eC]),eP={disabled:ef,open:et},ew=b.useState("triggerProps",ed),eT=[ev,t,eg,el,en],eO=[eI.getReferenceProps(),eR??P.EMPTY_OBJECT,ew,{"aria-haspopup":"menu",id:C,onMouseDown:e=>{b.select("open")||(eh.start(200,()=>{b.context.allowMouseUpTriggerRef.current=!0}),(0,E.ownerDocument)(e.currentTarget).addEventListener("mouseup",eb,{once:!0}))}},ec?{role:"menuitem"}:{},eM,v,em],ek=x.useRef(null),eN=(0,M.useStableCallback)(e=>{R.flushSync(()=>{b.setOpen(!1,(0,Z.createChangeEventDetails)(J.REASONS.focusOut,e.nativeEvent,e.currentTarget))});let t=(0,L.getTabbableBeforeElement)(ek.current);t?.focus()}),eA=(0,M.useStableCallback)(e=>{let t=b.select("positionerElement");if(t&&(0,L.isOutsideEvent)(e,t))b.context.beforeContentFocusGuardRef.current?.focus();else{R.flushSync(()=>{b.setOpen(!1,(0,Z.createChangeEventDetails)(J.REASONS.focusOut,e.nativeEvent,e.currentTarget))});let n=(0,L.getTabbableAfterElement)(b.context.triggerFocusTargetRef.current||en.current);for(;null!==n&&(0,j.contains)(t,n);){let e=n;if((n=(0,L.getNextTabbable)(n))===e)break}n?.focus()}}),eD=(0,_.useRenderElement)("button",e,{enabled:!ec,stateAttributesMapping:U.pressableTriggerOpenStateMapping,state:eP,ref:eT,props:eO});return ec?(0,n.jsx)(V,{tag:"button",render:i,className:s,state:eP,refs:eT,props:eO,stateAttributesMapping:U.pressableTriggerOpenStateMapping}):et?(0,n.jsxs)(x.Fragment,{children:[(0,n.jsx)(Q.FocusGuard,{ref:ek,onFocus:eN},`${C}-pre-focus-guard`),(0,n.jsx)(x.Fragment,{children:eD},C),(0,n.jsx)(Q.FocusGuard,{ref:b.context.triggerFocusTargetRef,onFocus:eA},`${C}-post-focus-guard`)]}):(0,n.jsx)(x.Fragment,{children:eD},C)});var et=e.i(228559),en=e.i(203667);let eo=((t={}).popupWidth="--popup-width",t.popupHeight="--popup-height",t),er={activationDirection:e=>e?{"data-activation-direction":e}:null},ea=x.forwardRef(function(e,t){let{render:n,className:o,children:r,...a}=e,{store:i}=(0,F.useMenuRootContext)(),{side:s}=(0,et.useMenuPositionerContext)(),u=i.useState("instantType"),{children:l,state:d}=(0,en.usePopupViewport)({store:i,side:s,cssVars:eo,children:r}),c={activationDirection:d.activationDirection,transitioning:d.transitioning,instant:u};return(0,_.useRenderElement)("div",e,{state:c,ref:t,props:[a,{children:l}],stateAttributesMapping:er})});var ei=e.i(983640),es=e.i(655728),eu=e.i(398567),el=e.i(790326);let ed=x.forwardRef(function(e,t){let{render:n,className:o,label:r,id:a,nativeButton:i=!1,openOnHover:s=!0,delay:u=100,closeDelay:l=0,disabled:d=!1,...c}=e,p=(0,es.useCompositeListItem)(),f=(0,et.useMenuPositionerContext)(),{store:m}=(0,F.useMenuRootContext)(),g=(0,W.useBaseUiId)(a),v=m.useState("open"),h=m.useState("floatingRootContext"),b=m.useState("floatingTreeRoot"),R=(0,K.useTriggerRegistration)(g,m),y=x.useCallback(e=>{let t=R(e);return null!==e&&m.select("open")&&null==m.select("activeTriggerId")&&m.update({activeTriggerId:g,activeTriggerElement:e,closeDelay:l}),t},[R,l,m,g]),E=x.useRef(null),C=x.useCallback(e=>{E.current=e,m.set("activeTriggerElement",e)},[m]),M=(0,el.useMenuSubmenuRootContext)();if(!M?.parentMenu)throw Error((0,S.default)(37));m.useSyncedValue("closeDelay",l);let I=M.parentMenu,P=I.useState("itemProps"),O=I.useState("isActive",p.index),k=x.useMemo(()=>({type:"submenu-trigger",setActive(){I.set("activeIndex",p.index)}}),[I,p.index]),D=m.useState("disabled"),j=d||D,{getItemProps:L,itemRef:B}=(0,eu.useMenuItem)({closeOnClick:!1,disabled:j,highlighted:O,id:g,store:m,typingRef:I.context.typingRef,nativeButton:i,itemMetadata:k,nodeId:f?.nodeId}),H=m.useState("hoverEnabled"),G=I.useState("allowMouseEnter"),V=(0,N.useHoverReferenceInteraction)(h,{enabled:H&&s&&!j,handleClose:(0,w.safePolygon)({blockPointerEvents:!0}),mouseOnly:!0,move:!0,restMs:u,delay:G?{open:u,close:l}:0,triggerElementRef:E,externalTree:b}),z=(0,T.useClick)(h,{enabled:!j,event:"mousedown",toggle:!s,ignoreMouse:s,stickIfOpen:!1}),Y=(0,A.useInteractions)([z]),J=m.useState("triggerProps",!0);return delete J.id,(0,_.useRenderElement)("div",e,{state:{disabled:j,highlighted:O,open:v},stateAttributesMapping:U.triggerOpenStateMapping,props:[Y.getReferenceProps(),V,J,P,{tabIndex:v||O?0:-1,onBlur(){O&&I.set("activeIndex",null)}},c,L],ref:[t,p.ref,B,y,C]})});var ec=e.i(408656);class ep{constructor(){this.store=new ec.MenuStore}open(e){let t=e?this.store.context.triggerElements.getById(e):void 0;if(e&&!t)throw Error((0,S.default)(83,e));this.store.setOpen(!0,(0,Z.createChangeEventDetails)("imperative-action",void 0,t))}close(){this.store.setOpen(!1,(0,Z.createChangeEventDetails)("imperative-action",void 0,void 0))}get isOpen(){return this.store.state.open}}e.s(["Arrow",()=>o.MenuArrow,"Backdrop",()=>r.MenuBackdrop,"CheckboxItem",()=>a.MenuCheckboxItem,"CheckboxItemIndicator",()=>i.MenuCheckboxItemIndicator,"Group",()=>s.MenuGroup,"GroupLabel",()=>u.MenuGroupLabel,"Handle",0,ep,"Item",()=>l.MenuItem,"LinkItem",()=>d.MenuLinkItem,"Popup",()=>c.MenuPopup,"Portal",()=>p.MenuPortal,"Positioner",()=>f.MenuPositioner,"RadioGroup",()=>m.MenuRadioGroup,"RadioItem",()=>g.MenuRadioItem,"RadioItemIndicator",()=>v.MenuRadioItemIndicator,"Root",()=>h.MenuRoot,"Separator",()=>ei.Separator,"SubmenuRoot",()=>b.MenuSubmenuRoot,"SubmenuTrigger",0,ed,"Trigger",0,ee,"Viewport",0,ea,"createHandle",0,function(){return new ep}],143903);var ef=e.i(143903),ef=ef,em=e.i(975157),eg=e.i(776405),eg=eg;function ev({align:e="start",alignOffset:t=0,side:o="bottom",sideOffset:r=4,className:a,...i}){return(0,n.jsx)(ef.Portal,{children:(0,n.jsx)(ef.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:o,sideOffset:r,children:(0,n.jsx)(ef.Popup,{"data-slot":"dropdown-menu-content",className:(0,em.cn)("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",a),...i})})})}e.i(533133),e.s(["DropdownMenu",0,function({...e}){return(0,n.jsx)(ef.Root,{"data-slot":"dropdown-menu",...e})},"DropdownMenuContent",0,ev,"DropdownMenuGroup",0,function({...e}){return(0,n.jsx)(ef.Group,{"data-slot":"dropdown-menu-group",...e})},"DropdownMenuItem",0,function({className:e,inset:t,variant:o="default",...r}){return(0,n.jsx)(ef.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":o,className:(0,em.cn)("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",e),...r})},"DropdownMenuLabel",0,function({className:e,inset:t,...o}){return(0,n.jsx)(ef.GroupLabel,{"data-slot":"dropdown-menu-label","data-inset":t,className:(0,em.cn)("px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7",e),...o})},"DropdownMenuSeparator",0,function({className:e,...t}){return(0,n.jsx)(ef.Separator,{"data-slot":"dropdown-menu-separator",className:(0,em.cn)("-mx-1 my-1 h-px bg-border",e),...t})},"DropdownMenuSub",0,function({...e}){return(0,n.jsx)(ef.SubmenuRoot,{"data-slot":"dropdown-menu-sub",...e})},"DropdownMenuSubContent",0,function({align:e="start",alignOffset:t=-3,side:o="right",sideOffset:r=0,className:a,...i}){return(0,n.jsx)(ev,{"data-slot":"dropdown-menu-sub-content",className:(0,em.cn)("w-auto min-w-[96px] rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",a),align:e,alignOffset:t,side:o,sideOffset:r,...i})},"DropdownMenuSubTrigger",0,function({className:e,inset:t,children:o,...r}){return(0,n.jsxs)(ef.SubmenuTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":t,className:(0,em.cn)("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...r,children:[o,(0,n.jsx)(eg.default,{className:"ml-auto"})]})},"DropdownMenuTrigger",0,function({...e}){return(0,n.jsx)(ef.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}],755146)},242941,e=>{"use strict";let t=(0,e.i(572989).default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);e.s(["Globe",0,t],242941)},83434,e=>{"use strict";var t,n=e.i(289721),o=e.i(965652),r=e.i(585012),a=(t=function(e,n){return(t=Object.setPrototypeOf||({__proto__:[]})instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,n)},function(e,n){if("function"!=typeof n&&null!==n)throw TypeError("Class extends value "+String(n)+" is not a constructor or null");function o(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}),i="html",s=function(e,t){var n,o,r,a=null!=(n=e.ownerDocument)?n:document,s=null!=(r=null!=(o=a.defaultView)?o:a.parentWindow)?r:window;switch(t){case i:return e instanceof s.HTMLElement;case"svg":return e instanceof s.SVGElement;default:throw Error('Unrecognized element type "'.concat(t,'" for validateElementType.'))}},u=function(e,t){var n,o,r,a,u,l={};switch(e){case i:u=document.createElement(null!=(n=null==t?void 0:t.containerElement)?n:"div");break;case"svg":u=document.createElementNS("http://www.w3.org/2000/svg",null!=(o=null==t?void 0:t.containerElement)?o:"g");break;default:throw Error('Invalid element type "'.concat(e,'" for createPortalNode: must be "html" or "svg".'))}if(t&&"object"==typeof t&&t.attributes)for(var d=0,c=Object.entries(t.attributes);d<c.length;d++){var p=c[d],f=p[0],m=p[1];u.setAttribute(f,m)}var g={element:u,elementType:e,setPortalProps:function(e){l=e},getInitialPortalProps:function(){return l},mount:function(t,n){if(n!==a){if(g.unmount(),t!==r&&!s(t,e))throw Error('Invalid element type for portal: "'.concat(e,'" portalNodes must be used with ').concat(e," elements, but OutPortal is within <").concat(t.tagName,">."));t.replaceChild(g.element,n),r=t,a=n}},unmount:function(e){(!e||e===a)&&r&&a&&(r.replaceChild(a,g.element),r=void 0,a=void 0)}};return g},l=function(e){function t(t){var n=e.call(this,t)||this;return n.addPropsChannel=function(){Object.assign(n.props.node,{setPortalProps:function(e){n.setState({nodeProps:e})}})},n.state={nodeProps:n.props.node.getInitialPortalProps()},n}return a(t,e),t.prototype.componentDidMount=function(){this.addPropsChannel()},t.prototype.componentDidUpdate=function(){this.addPropsChannel()},t.prototype.render=function(){var e=this,t=this.props,n=t.children,a=t.node;return r.createPortal(o.Children.map(n,function(t){return o.isValidElement(t)?o.cloneElement(t,e.state.nodeProps):t}),a.element)},t}(o.PureComponent),d=function(e){function t(t){var n=e.call(this,t)||this;return n.placeholderNode=o.createRef(),n.passPropsThroughPortal(),n}return a(t,e),t.prototype.passPropsThroughPortal=function(){var e=Object.assign({},this.props,{node:void 0});this.props.node.setPortalProps(e)},t.prototype.componentDidMount=function(){var e=this.props.node;this.currentPortalNode=e;var t=this.placeholderNode.current,n=t.parentNode;e.mount(n,t),this.passPropsThroughPortal()},t.prototype.componentDidUpdate=function(){var e=this.props.node;this.currentPortalNode&&e!==this.currentPortalNode&&(this.currentPortalNode.unmount(this.placeholderNode.current),this.currentPortalNode.setPortalProps({}),this.currentPortalNode=e);var t=this.placeholderNode.current,n=t.parentNode;e.mount(n,t),this.passPropsThroughPortal()},t.prototype.componentWillUnmount=function(){var e=this.props.node;e.unmount(this.placeholderNode.current),e.setPortalProps({})},t.prototype.render=function(){var e=this.props.node.element.tagName,t=this.props.node.elementType===i?e.toLowerCase():e;return o.createElement(t,{ref:this.placeholderNode})},t}(o.PureComponent),c=u.bind(null,i);u.bind(null,"svg");let p=(0,e.i(19578).default)(()=>e.A(243288).then(e=>({default:e.TaskTerminal})),{loadableGenerated:{modules:[346069]},ssr:!1}),f=(0,o.createContext)(null);function m(){let e=(0,o.useContext)(f);if(!e)throw Error("useTerminalPortal must be used within TerminalPortalProvider");return e}e.s(["TerminalOutlet",0,function({taskId:e,worktreePath:t,onSessionEnd:r}){let{getPortal:a,setOnSessionEnd:i}=m(),[s,u]=(0,o.useState)(null);return((0,o.useEffect)(()=>(u(a(e,t)),()=>u(null)),[e,t,a]),(0,o.useEffect)(()=>(i(e,r??null),()=>i(e,null)),[e,r,i]),s)?(0,n.jsx)(d,{node:s.portalNode}):null},"TerminalPortalProvider",0,function({children:e}){let t=(0,o.useRef)(new Map),r=(0,o.useRef)([]),[,a]=(0,o.useState)(0),i=(0,o.useCallback)((e,n)=>{let o=t.current.get(e);if(o)return r.current=r.current.filter(t=>t!==e),r.current.push(e),o;for(;t.current.size>=3&&r.current.length>0;){let e=r.current.shift();t.current.delete(e)}let i={portalNode:c({attributes:{style:"width:100%;height:100%"}}),taskId:e,worktreePath:n,onSessionEnd:{current:null}};return t.current.set(e,i),r.current.push(e),a(e=>e+1),i},[]),s=(0,o.useCallback)(e=>{t.current.delete(e),r.current=r.current.filter(t=>t!==e),a(e=>e+1)},[]),u=(0,o.useCallback)((e,n)=>{let o=t.current.get(e);o&&(o.onSessionEnd.current=n)},[]),d=Array.from(t.current.values()).map(e=>(0,n.jsx)(l,{node:e.portalNode,children:(0,n.jsx)(p,{taskId:e.taskId,worktreePath:e.worktreePath,onSessionEnd:t=>e.onSessionEnd.current?.(t),useCanvasRenderer:!0})},e.taskId));return(0,n.jsxs)(f.Provider,{value:{getPortal:i,removePortal:s,setOnSessionEnd:u},children:[e,d]})},"useTerminalPortal",0,m],83434)},232280,e=>{"use strict";var t=e.i(314338);e.s(["ChevronDown",()=>t.default])}]);
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,49007,e=>{"use strict";let t=(0,e.i(572989).default)("ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]);e.s(["MoreHorizontal",0,t],49007)},961930,228559,271936,68128,743757,301823,398567,6851,462053,784830,262059,560033,374083,476723,72173,521192,851663,378837,188366,132596,408656,790326,516804,641388,e=>{"use strict";e.s([],961930),e.i(708878);var t,n=e.i(965652),o=e.i(462902);let r=n.createContext(void 0);function a(e){let t=n.useContext(r);if(void 0===t&&!e)throw Error((0,o.default)(33));return t}e.s(["MenuPositionerContext",0,r,"useMenuPositionerContext",0,a],228559);let i=n.createContext(void 0);function s(e){let t=n.useContext(i);if(void 0===t&&!e)throw Error((0,o.default)(36));return t}e.s(["MenuRootContext",0,i,"useMenuRootContext",0,s],271936);var u=e.i(581263),l=e.i(845756);let d=n.forwardRef(function(e,t){let{className:n,render:o,...r}=e,{store:i}=s(),{arrowRef:d,side:c,align:p,arrowUncentered:f,arrowStyles:m}=a(),g=i.useState("open");return(0,u.useRenderElement)("div",e,{ref:[d,t],stateAttributesMapping:l.popupStateMapping,state:{open:g,side:c,align:p,uncentered:f},props:{style:m,"aria-hidden":!0,...r}})});e.s(["MenuArrow",0,d],68128);var c=e.i(809058);let p=n.createContext(void 0);function f(e=!0){let t=n.useContext(p);if(void 0===t&&!e)throw Error((0,o.default)(25));return t}e.s(["useContextMenuRootContext",0,f],743757);var m=e.i(586622);let g={...l.popupStateMapping,...c.transitionStatusMapping},v=n.forwardRef(function(e,t){let{className:n,render:o,...r}=e,{store:a}=s(),i=a.useState("open"),l=a.useState("mounted"),d=a.useState("transitionStatus"),c=a.useState("lastOpenChangeReason"),p=f();return(0,u.useRenderElement)("div",e,{ref:p?.backdropRef?[t,p.backdropRef]:t,state:{open:i,transitionStatus:d},stateAttributesMapping:g,props:[{role:"presentation",hidden:!l,style:{pointerEvents:c===m.REASONS.triggerHover?"none":void 0,userSelect:"none",WebkitUserSelect:"none"}},r]})});e.s(["MenuBackdrop",0,v],301823);var h=e.i(887642),b=e.i(314757);let S=n.createContext(void 0);var x=e.i(362891),R=e.i(282109),y=e.i(565455),E=e.i(442383);function C(e){let{closeOnClick:t,highlighted:o,id:r,nodeId:a,store:i,typingRef:s,itemRef:u,itemMetadata:l}=e,{events:d}=i.useState("floatingTreeRoot"),c=f(!0),p=void 0!==c;return n.useMemo(()=>({id:r,role:"menuitem",tabIndex:o?0:-1,onKeyDown(e){" "===e.key&&s?.current&&e.preventDefault()},onMouseMove(e){a&&d.emit("itemhover",{nodeId:a,target:e.currentTarget})},onClick(e){t&&d.emit("close",{domEvent:e,reason:m.REASONS.itemPress})},onMouseUp(e){if(c){let t=c.initialCursorPointRef.current;if(c.initialCursorPointRef.current=null,p&&t&&1>=Math.abs(e.clientX-t.x)&&1>=Math.abs(e.clientY-t.y)||p&&!E.isMac&&2===e.button)return}u.current&&i.context.allowMouseUpTriggerRef.current&&(!p||2===e.button)&&(!l||"regular-item"===l.type)&&u.current.click()}}),[t,o,r,d,a,i,s,u,c,p,l])}let M={type:"regular-item"};function I(e){let{closeOnClick:t,disabled:o=!1,highlighted:r,id:a,store:i,typingRef:s=i.context.typingRef,nativeButton:u,itemMetadata:l,nodeId:d}=e,c=n.useRef(null),{getButtonProps:p,buttonRef:f}=(0,R.useButton)({disabled:o,focusableWhenDisabled:!0,native:u,composite:!0}),m=C({closeOnClick:t,highlighted:r,id:a,nodeId:d,store:i,typingRef:s,itemRef:c,itemMetadata:l}),g=n.useCallback(e=>(0,y.mergeProps)(m,{onMouseEnter(){"submenu-trigger"===l.type&&l.setActive()}},e,p),[m,p,l]),v=(0,x.useMergedRefs)(c,f);return n.useMemo(()=>({getItemProps:g,itemRef:v}),[g,v])}e.s(["REGULAR_ITEM",0,M,"useMenuItem",0,I],398567);var P=e.i(655728),w=e.i(207516);let T=((t={}).checked="data-checked",t.unchecked="data-unchecked",t.disabled="data-disabled",t.highlighted="data-highlighted",t),O={checked:e=>e?{[T.checked]:""}:{[T.unchecked]:""},...c.transitionStatusMapping};var k=e.i(67077),N=e.i(289721);let A=n.forwardRef(function(e,t){let{render:o,className:r,id:i,label:l,nativeButton:d=!1,disabled:c=!1,closeOnClick:p=!1,checked:f,defaultChecked:g,onCheckedChange:v,...x}=e,R=(0,P.useCompositeListItem)({label:l}),y=a(!0),E=(0,w.useBaseUiId)(i),{store:C}=s(),T=C.useState("isActive",R.index),A=C.useState("itemProps"),[D,j]=(0,b.useControlled)({controlled:f,default:g??!1,name:"MenuCheckboxItem",state:"checked"}),{getItemProps:L,itemRef:F}=I({closeOnClick:p,disabled:c,highlighted:T,id:E,store:C,nativeButton:d,nodeId:y?.nodeId,itemMetadata:M}),U=n.useMemo(()=>({disabled:c,highlighted:T,checked:D}),[c,T,D]),_=(0,h.useStableCallback)(e=>{let t={...(0,k.createChangeEventDetails)(m.REASONS.itemPress,e.nativeEvent),preventUnmountOnClose:()=>{}};v?.(!D,t),t.isCanceled||j(e=>!e)}),B=(0,u.useRenderElement)("div",e,{state:U,stateAttributesMapping:O,props:[A,{role:"menuitemcheckbox","aria-checked":D,onClick:_},x,L],ref:[F,t,R.ref]});return(0,N.jsx)(S.Provider,{value:U,children:B})});e.s(["MenuCheckboxItem",0,A],6851);var D=e.i(193214),j=e.i(504068);let L=n.forwardRef(function(e,t){let{render:r,className:a,keepMounted:i=!1,...s}=e,l=function(){let e=n.useContext(S);if(void 0===e)throw Error((0,o.default)(30));return e}(),d=n.useRef(null),{transitionStatus:c,setMounted:p}=(0,D.useTransitionStatus)(l.checked);(0,j.useOpenChangeComplete)({open:l.checked,ref:d,onComplete(){l.checked||p(!1)}});let f={checked:l.checked,disabled:l.disabled,highlighted:l.highlighted,transitionStatus:c};return(0,u.useRenderElement)("span",e,{state:f,ref:[t,d],stateAttributesMapping:O,props:{"aria-hidden":!0,...s},enabled:i||l.checked})});e.s(["MenuCheckboxItemIndicator",0,L],462053);let F=n.createContext(void 0),U=n.forwardRef(function(e,t){let{render:o,className:r,...a}=e,[i,s]=n.useState(void 0),l=n.useMemo(()=>({setLabelId:s}),[s]),d=(0,u.useRenderElement)("div",e,{ref:t,props:{role:"group","aria-labelledby":i,...a}});return(0,N.jsx)(F.Provider,{value:l,children:d})});e.s(["MenuGroup",0,U],784830);var _=e.i(804849);let B=n.forwardRef(function(e,t){let{className:r,render:a,id:i,...s}=e,l=(0,w.useBaseUiId)(i),{setLabelId:d}=function(){let e=n.useContext(F);if(void 0===e)throw Error((0,o.default)(31));return e}();return(0,_.useIsoLayoutEffect)(()=>(d(l),()=>{d(void 0)}),[d,l]),(0,u.useRenderElement)("div",e,{ref:t,props:{id:l,role:"presentation",...s}})});e.s(["MenuGroupLabel",0,B],262059);let H=n.forwardRef(function(e,t){let{render:n,className:o,id:r,label:i,nativeButton:l=!1,disabled:d=!1,closeOnClick:c=!0,...p}=e,f=(0,P.useCompositeListItem)({label:i}),m=a(!0),g=(0,w.useBaseUiId)(r),{store:v}=s(),h=v.useState("isActive",f.index),b=v.useState("itemProps"),{getItemProps:S,itemRef:x}=I({closeOnClick:c,disabled:d,highlighted:h,id:g,store:v,nativeButton:l,nodeId:m?.nodeId,itemMetadata:M});return(0,u.useRenderElement)("div",e,{state:{disabled:d,highlighted:h},props:[b,p,S],ref:[x,t,f.ref]})});e.s(["MenuItem",0,H],560033);let G=n.forwardRef(function(e,t){let{render:o,className:r,id:i,label:l,closeOnClick:d=!1,...c}=e,p=n.useRef(null),f=(0,P.useCompositeListItem)({label:l}),m=a(!0),g=m?.nodeId,v=(0,w.useBaseUiId)(i),{store:h}=s(),b=h.useState("isActive",f.index),S=h.useState("itemProps"),x=h.context.typingRef,{getButtonProps:E,buttonRef:M}=(0,R.useButton)({native:!1,composite:!0}),I=C({closeOnClick:d,highlighted:b,id:v,nodeId:g,store:h,typingRef:x,itemRef:p}),T=n.useMemo(()=>({highlighted:b}),[b]);return(0,u.useRenderElement)("a",e,{state:T,props:[S,c,function(e){return(0,y.mergeProps)(I,e,E)}],ref:[p,M,t,f.ref]})});e.s(["MenuLinkItem",0,G],374083);var V=e.i(11931),z=e.i(511980),Y=e.i(196368),K=e.i(197920),W=e.i(808754);let J={...l.popupStateMapping,...c.transitionStatusMapping},X=n.forwardRef(function(e,t){let{render:o,className:r,finalFocus:i,...l}=e,{store:d}=s(),{side:c,align:p}=a(),f=null!=(0,Y.useToolbarRootContext)(!0),g=d.useState("open"),v=d.useState("transitionStatus"),h=d.useState("popupProps"),b=d.useState("mounted"),S=d.useState("instantType"),x=d.useState("activeTriggerElement"),R=d.useState("parent"),y=d.useState("lastOpenChangeReason"),E=d.useState("rootId"),C=d.useState("floatingRootContext"),M=d.useState("floatingTreeRoot"),I=d.useState("closeDelay"),P=d.useState("activeTriggerElement"),w="context-menu"===R.type;(0,j.useOpenChangeComplete)({open:g,ref:d.context.popupRef,onComplete(){g&&d.context.onOpenChangeComplete?.(!0)}}),n.useEffect(()=>{function e(e){d.setOpen(!1,(0,k.createChangeEventDetails)(e.reason,e.domEvent))}return M.events.on("close",e),()=>{M.events.off("close",e)}},[M.events,d]);let T=d.useState("hoverEnabled"),O=d.useState("disabled");(0,z.useHoverFloatingInteraction)(C,{enabled:T&&!O&&!w&&"menubar"!==R.type,closeDelay:I});let A={transitionStatus:v,side:c,align:p,open:g,nested:"menu"===R.type,instant:S},D=n.useCallback(e=>{d.set("popupElement",e)},[d]),L=(0,u.useRenderElement)("div",e,{state:A,ref:[t,d.context.popupRef,D],stateAttributesMapping:J,props:[h,{onKeyDown(e){f&&K.COMPOSITE_KEYS.has(e.key)&&e.stopPropagation()}},(0,W.getDisabledMountTransitionStyles)(v),l,{"data-rootownerid":E}]}),F=void 0===R.type||w;return(x||"menubar"===R.type&&y!==m.REASONS.outsidePress)&&(F=!0),(0,N.jsx)(V.FloatingFocusManager,{context:C,modal:w,disabled:!b,returnFocus:void 0===i?F:i,initialFocus:"menu"!==R.type,restoreFocus:!0,externalTree:"menubar"!==R.type?M:void 0,previousFocusableElement:P,nextFocusableElement:void 0===R.type?d.context.triggerFocusTargetRef:void 0,beforeContentFocusGuardRef:void 0===R.type?d.context.beforeContentFocusGuardRef:void 0,children:L})});e.s(["MenuPopup",0,X],476723);var $=e.i(888393);let q=n.createContext(void 0),Q=n.forwardRef(function(e,t){let{keepMounted:n=!1,...o}=e,{store:r}=s();return r.useState("mounted")||n?(0,N.jsx)(q.Provider,{value:n,children:(0,N.jsx)($.FloatingPortal,{ref:t,...o})}):null});e.s(["MenuPortal",0,Q],72173);var Z=e.i(831766),ee=e.i(161476),et=e.i(205995),en=e.i(887943),eo=e.i(579028),er=e.i(72287),ea=e.i(693354),ei=e.i(431362),es=e.i(412522);let eu=n.forwardRef(function(e,t){let{anchor:a,positionMethod:i="absolute",className:d,render:c,side:p,align:g,sideOffset:v=0,alignOffset:h=0,collisionBoundary:b="clipping-ancestors",collisionPadding:S=5,arrowPadding:x=5,sticky:R=!1,disableAnchorTracking:y=!1,collisionAvoidance:E=ea.DROPDOWN_COLLISION_AVOIDANCE,...C}=e,{store:M}=s(),I=function(){let e=n.useContext(q);if(void 0===e)throw Error((0,o.default)(32));return e}(),P=f(!0),w=M.useState("parent"),T=M.useState("floatingRootContext"),O=M.useState("floatingTreeRoot"),A=M.useState("mounted"),D=M.useState("open"),j=M.useState("modal"),L=M.useState("activeTriggerElement"),F=M.useState("transitionStatus"),U=M.useState("positionerElement"),B=M.useState("instantType"),H=M.useState("hasViewport"),G=M.useState("lastOpenChangeReason"),V=M.useState("floatingNodeId"),z=M.useState("floatingParentNodeId"),Y=T.useState("domReferenceElement"),K=n.useRef(null),J=(0,es.useAnimationsFinished)(U,!1,!1),X=a,$=v,Q=h,eu=g,el=E;"context-menu"===w.type&&(X=a??w.context?.anchor,eu=eu??"start",p||"center"===eu||(Q=e.alignOffset??2,$=e.sideOffset??-5));let ed=p,ec=eu;"menu"===w.type?(ed=ed??"inline-end",ec=ec??"start",el=e.collisionAvoidance??ea.POPUP_COLLISION_AVOIDANCE):"menubar"===w.type&&(ed=ed??"bottom",ec=ec??"start");let ep="context-menu"===w.type,ef=(0,en.useAnchorPositioning)({anchor:X,floatingRootContext:T,positionMethod:P?"fixed":i,mounted:A,side:ed,sideOffset:$,align:ec,alignOffset:Q,arrowPadding:ep?0:x,collisionBoundary:b,collisionPadding:S,sticky:R,nodeId:V,keepMounted:I,disableAnchorTracking:y,collisionAvoidance:el,shiftCrossAxis:ep&&!("side"in el&&"flip"===el.side),externalTree:O,adaptiveOrigin:H?ei.adaptiveOrigin:void 0}),em=n.useMemo(()=>{let e={};return D||(e.pointerEvents="none"),{role:"presentation",hidden:!A,style:{...ef.positionerStyles,...e}}},[D,A,ef.positionerStyles]);n.useEffect(()=>{function e(e){e.open&&(e.parentNodeId===V&&M.set("hoverEnabled",!1),e.nodeId!==V&&e.parentNodeId===M.select("floatingParentNodeId")&&M.setOpen(!1,(0,k.createChangeEventDetails)(m.REASONS.siblingOpen)))}return O.events.on("menuopenchange",e),()=>{O.events.off("menuopenchange",e)}},[M,O.events,V]),n.useEffect(()=>{if(null!=M.select("floatingParentNodeId"))return O.events.on("menuopenchange",e),()=>{O.events.off("menuopenchange",e)};function e(e){if(e.open||e.nodeId!==M.select("floatingParentNodeId"))return;let t=e.reason??m.REASONS.siblingOpen;M.setOpen(!1,(0,k.createChangeEventDetails)(t))}},[O.events,M]);let eg=(0,ee.useTimeout)();n.useEffect(()=>{D||eg.clear()},[D,eg]),n.useEffect(()=>{function e(e){if(D&&e.nodeId===M.select("floatingParentNodeId"))if(e.target&&L&&L!==e.target){let e=M.select("closeDelay");e>0?eg.isStarted()||eg.start(e,()=>{M.setOpen(!1,(0,k.createChangeEventDetails)(m.REASONS.siblingOpen))}):M.setOpen(!1,(0,k.createChangeEventDetails)(m.REASONS.siblingOpen))}else eg.clear()}return O.events.on("itemhover",e),()=>{O.events.off("itemhover",e)}},[O.events,D,L,M,eg]),n.useEffect(()=>{let e={open:D,nodeId:V,parentNodeId:z,reason:M.select("lastOpenChangeReason")};O.events.emit("menuopenchange",e)},[O.events,D,M,V,z]),(0,_.useIsoLayoutEffect)(()=>{let e=K.current;if(Y&&(K.current=Y),e&&Y&&Y!==e){M.set("instantType",void 0);let e=new AbortController;return J(()=>{M.set("instantType","trigger-change")},e.signal),()=>{e.abort()}}},[Y,J,M]);let ev={open:D,side:ef.side,align:ef.align,anchorHidden:ef.anchorHidden,nested:"menu"===w.type,instant:B},eh=n.useMemo(()=>({side:ef.side,align:ef.align,arrowRef:ef.arrowRef,arrowUncentered:ef.arrowUncentered,arrowStyles:ef.arrowStyles,nodeId:ef.context.nodeId}),[ef.side,ef.align,ef.arrowRef,ef.arrowUncentered,ef.arrowStyles,ef.context.nodeId]),eb=(0,u.useRenderElement)("div",e,{state:ev,stateAttributesMapping:l.popupStateMapping,ref:[t,M.useStateSetter("positionerElement")],props:[em,(0,W.getDisabledMountTransitionStyles)(F),C]}),eS=A&&"menu"!==w.type&&("menubar"!==w.type&&j&&G!==m.REASONS.triggerHover||"menubar"===w.type&&w.context.modal),ex=null;return"menubar"===w.type?ex=w.context.contentElement:void 0===w.type&&(ex=L),(0,N.jsxs)(r.Provider,{value:eh,children:[eS&&(0,N.jsx)(er.InternalBackdrop,{ref:"context-menu"===w.type||"nested-context-menu"===w.type?w.context.internalBackdropRef:null,inert:(0,Z.inertValue)(!D),cutout:ex}),(0,N.jsx)(et.FloatingNode,{id:V,children:(0,N.jsx)(eo.CompositeList,{elementsRef:M.context.itemDomElements,labelsRef:M.context.itemLabels,children:eb})})]})});e.s(["MenuPositioner",0,eu],521192);let el=n.createContext(void 0),ed=n.memo(n.forwardRef(function(e,t){let{render:o,className:r,value:a,defaultValue:i,onValueChange:s,disabled:l=!1,...d}=e,[c,p]=(0,b.useControlled)({controlled:a,default:i,name:"MenuRadioGroup"}),f=(0,h.useStableCallback)(s),m=(0,h.useStableCallback)((e,t)=>{f?.(e,t),t.isCanceled||p(e)}),g=(0,u.useRenderElement)("div",e,{state:{disabled:l},ref:t,props:{role:"group","aria-disabled":l||void 0,...d}}),v=n.useMemo(()=>({value:c,setValue:m,disabled:l}),[c,m,l]);return(0,N.jsx)(el.Provider,{value:v,children:g})}));e.s(["MenuRadioGroup",0,ed],851663);let ec=n.createContext(void 0),ep=n.forwardRef(function(e,t){let{render:r,className:i,id:l,label:d,nativeButton:c=!1,disabled:p=!1,closeOnClick:f=!1,value:g,...v}=e,b=(0,P.useCompositeListItem)({label:d}),S=a(!0),x=(0,w.useBaseUiId)(l),{store:R}=s(),y=R.useState("isActive",b.index),E=R.useState("itemProps"),{value:C,setValue:T,disabled:A}=function(){let e=n.useContext(el);if(void 0===e)throw Error((0,o.default)(34));return e}(),D=A||p,j=C===g,{getItemProps:L,itemRef:F}=I({closeOnClick:f,disabled:D,highlighted:y,id:x,store:R,nativeButton:c,nodeId:S?.nodeId,itemMetadata:M}),U=n.useMemo(()=>({disabled:D,highlighted:y,checked:j}),[D,y,j]),_=(0,h.useStableCallback)(e=>{T(g,{...(0,k.createChangeEventDetails)(m.REASONS.itemPress,e.nativeEvent),preventUnmountOnClose:()=>{}})}),B=(0,u.useRenderElement)("div",e,{state:U,stateAttributesMapping:O,props:[E,{role:"menuitemradio","aria-checked":j,onClick:_},v,L],ref:[F,t,b.ref]});return(0,N.jsx)(ec.Provider,{value:U,children:B})});e.s(["MenuRadioItem",0,ep],378837);let ef=n.forwardRef(function(e,t){let{render:r,className:a,keepMounted:i=!1,...s}=e,l=function(){let e=n.useContext(ec);if(void 0===e)throw Error((0,o.default)(35));return e}(),d=n.useRef(null),{transitionStatus:c,setMounted:p}=(0,D.useTransitionStatus)(l.checked);(0,j.useOpenChangeComplete)({open:l.checked,ref:d,onComplete(){l.checked||p(!1)}});let f={checked:l.checked,disabled:l.disabled,highlighted:l.highlighted,transitionStatus:c};return(0,u.useRenderElement)("span",e,{state:f,stateAttributesMapping:O,ref:[t,d],props:{"aria-hidden":!0,...s},enabled:i||l.checked})});e.s(["MenuRadioItemIndicator",0,ef],188366);var em=e.i(722357),eg=e.i(528796),ev=e.i(620163),eh=e.i(954588),eb=e.i(154660),eS=e.i(594640),ex=e.i(306296),eR=e.i(234951),ey=e.i(344478),eE=e.i(471959),eC=e.i(611008);let eM=n.createContext(null);function eI(e){let t=n.useContext(eM);if(null===t&&!e)throw Error((0,o.default)(5));return t}e.s(["useMenubarContext",0,eI],132596);var eP=e.i(824047),ew=e.i(892069),eT=e.i(596290),eO=e.i(370161),ek=e.i(903224),eN=e.i(512677),eA=e.i(771326),eD=e.i(87396);let ej={...eA.popupStoreSelectors,disabled:(0,eT.createSelector)(e=>"menubar"===e.parent.type&&e.parent.context.disabled||e.disabled),modal:(0,eT.createSelector)(e=>(void 0===e.parent.type||"context-menu"===e.parent.type)&&(e.modal??!0)),allowMouseEnter:(0,eT.createSelector)(e=>e.allowMouseEnter),stickIfOpen:(0,eT.createSelector)(e=>e.stickIfOpen),parent:(0,eT.createSelector)(e=>e.parent),rootId:(0,eT.createSelector)(e=>"menu"===e.parent.type?e.parent.store.select("rootId"):void 0!==e.parent.type?e.parent.context.rootId:e.rootId),activeIndex:(0,eT.createSelector)(e=>e.activeIndex),isActive:(0,eT.createSelector)((e,t)=>e.activeIndex===t),hoverEnabled:(0,eT.createSelector)(e=>e.hoverEnabled),instantType:(0,eT.createSelector)(e=>e.instantType),lastOpenChangeReason:(0,eT.createSelector)(e=>e.openChangeReason),floatingTreeRoot:(0,eT.createSelector)(e=>"menu"===e.parent.type?e.parent.store.select("floatingTreeRoot"):e.floatingTreeRoot),floatingNodeId:(0,eT.createSelector)(e=>e.floatingNodeId),floatingParentNodeId:(0,eT.createSelector)(e=>e.floatingParentNodeId),itemProps:(0,eT.createSelector)(e=>e.itemProps),closeDelay:(0,eT.createSelector)(e=>e.closeDelay),hasViewport:(0,eT.createSelector)(e=>e.hasViewport),keyboardEventRelay:(0,eT.createSelector)(e=>e.keyboardEventRelay?e.keyboardEventRelay:"menu"===e.parent.type?e.parent.store.select("keyboardEventRelay"):void 0)};class eL extends eO.ReactStore{constructor(e){super({...{...(0,eA.createInitialPopupStoreState)(),disabled:!1,modal:!0,allowMouseEnter:!1,stickIfOpen:!0,parent:{type:void 0},rootId:void 0,activeIndex:null,hoverEnabled:!0,instantType:void 0,openChangeReason:null,floatingTreeRoot:new eN.FloatingTreeStore,floatingNodeId:void 0,floatingParentNodeId:null,itemProps:eh.EMPTY_OBJECT,keyboardEventRelay:void 0,closeDelay:0,hasViewport:!1},...e},{positionerRef:n.createRef(),popupRef:n.createRef(),typingRef:{current:!1},itemDomElements:{current:[]},itemLabels:{current:[]},allowMouseUpTriggerRef:{current:!1},triggerFocusTargetRef:n.createRef(),beforeContentFocusGuardRef:n.createRef(),onOpenChangeComplete:void 0,triggerElements:new eD.PopupTriggerMap},ej),this.unsubscribeParentListener=this.observe("parent",e=>{if(this.unsubscribeParentListener?.(),"menu"===e.type){let t=e.store.select("rootId"),n=e.store.select("floatingTreeRoot"),o=e.store.select("keyboardEventRelay");this.unsubscribeParentListener=e.store.subscribe(()=>{let r=e.store.select("rootId"),a=e.store.select("floatingTreeRoot"),i=e.store.select("keyboardEventRelay");(t!==r||n!==a||o!==i)&&(t=r,n=a,o=i,this.notifyAll())}),this.context.allowMouseUpTriggerRef=e.store.context.allowMouseUpTriggerRef;return}void 0!==e.type&&(this.context.allowMouseUpTriggerRef=e.context.allowMouseUpTriggerRef),this.unsubscribeParentListener=null})}setOpen(e,t){this.state.floatingRootContext.context.events.emit("setOpen",{open:e,eventDetails:t})}static useStore(e,t){let n=(0,ek.useRefWithInit)(()=>new eL(t)).current;return e??n}unsubscribeParentListener=null}e.s(["MenuStore",0,eL],408656);var eF=e.i(894621);let eU=n.createContext(void 0);function e_(){return n.useContext(eU)}e.s(["MenuSubmenuRootContext",0,eU,"useMenuSubmenuRootContext",0,e_],790326);let eB=(0,eb.fastComponent)(function(e){let t,o,{children:r,open:a,onOpenChange:u,onOpenChangeComplete:l,defaultOpen:d=!1,disabled:c=!1,modal:p,loopFocus:g=!0,orientation:v="vertical",actionsRef:b,closeParentOnEsc:S=!1,handle:x,triggerId:R,defaultTriggerId:E=null,highlightItemOnHover:C=!0}=e,M=f(!0),I=s(!0),P=eI(!0),w=e_(),T=n.useMemo(()=>w&&I?{type:"menu",store:I.store}:P?{type:"menubar",context:P}:M&&!I?{type:"context-menu",context:M}:{type:void 0},[M,I,P,w]),O=eL.useStore(x?.store,{open:d,openProp:a,activeTriggerId:E,triggerIdProp:R,parent:T});(0,eg.useOnFirstRender)(()=>{void 0===a&&!1===O.state.open&&!0===d&&O.update({open:!0,activeTriggerId:E})}),O.useControlledProp("openProp",a),O.useControlledProp("triggerIdProp",R),O.useContextCallback("onOpenChangeComplete",l);let A=O.useState("floatingTreeRoot"),D=(0,et.useFloatingNodeId)(A),j=(0,et.useFloatingParentNodeId)();(0,_.useIsoLayoutEffect)(()=>{M&&!I?O.update({parent:{type:"context-menu",context:M},floatingNodeId:D,floatingParentNodeId:j}):I&&O.update({floatingNodeId:D,floatingParentNodeId:j})},[M,I,D,j,O]);let L=O.useState("open"),F=O.useState("activeTriggerElement"),U=O.useState("positionerElement"),B=O.useState("hoverEnabled"),H=O.useState("modal"),G=O.useState("disabled"),V=O.useState("lastOpenChangeReason"),z=O.useState("parent"),Y=O.useState("activeIndex"),K=O.useState("payload"),W=O.useState("floatingParentNodeId"),J=n.useRef(null),X=null!=W;O.useSyncedValues({disabled:c,modal:void 0===z.type?p:void 0,rootId:(0,em.useId)()});let{openMethod:$,triggerProps:q}=(0,ew.useOpenInteractionType)(L);(0,eF.useImplicitActiveTrigger)(O);let{forceUnmount:Q}=(0,eF.useOpenStateTransitions)(L,O,()=>{O.update({allowMouseEnter:!1,stickIfOpen:!0})}),Z=n.useRef("context-menu"!==z.type),en=(0,ee.useTimeout)();n.useEffect(()=>{if(L||(J.current=null),"context-menu"===z.type){if(!L){en.clear(),Z.current=!1;return}en.start(500,()=>{Z.current=!0})}},[en,L,z.type]),(0,ev.useScrollLock)(L&&H&&V!==m.REASONS.triggerHover&&"touch"!==$,U),(0,_.useIsoLayoutEffect)(()=>{L||B||O.set("hoverEnabled",!0)},[L,B,O]);let eo=n.useRef(!0),er=(0,ee.useTimeout)(),ei=(0,h.useStableCallback)((e,n)=>{let o=n.reason;if(L===e&&n.trigger===F&&V===o||(n.preventUnmountOnClose=()=>{O.set("preventUnmountingOnClose",!0)},e||null!=n.trigger||(n.trigger=F??void 0),u?.(e,n),n.isCanceled))return;let r={open:e,nativeEvent:n.event,reason:n.reason,nested:X};t?.emit("openchange",r);let a=n.event;if(!1===e&&a?.type==="click"&&"touch"===a.pointerType&&!eo.current)return;if(!e&&null!==Y){let e=O.context.itemDomElements.current[Y];queueMicrotask(()=>{e?.setAttribute("tabindex","-1")})}e&&o===m.REASONS.triggerFocus?(eo.current=!1,er.start(300,()=>{eo.current=!0})):(eo.current=!0,er.clear());let i=(o===m.REASONS.triggerPress||o===m.REASONS.itemPress)&&0===a.detail&&a?.isTrusted,s=!e&&(o===m.REASONS.escapeKey||null==o),l={open:e,openChangeReason:o};J.current=n.event??null;let d=n.trigger?.id??null;(d||e)&&(l.activeTriggerId=d,l.activeTriggerElement=n.trigger??null),O.update(l),"menubar"===z.type&&(o===m.REASONS.triggerFocus||o===m.REASONS.focusOut||o===m.REASONS.triggerHover||o===m.REASONS.listNavigation||o===m.REASONS.siblingOpen)?O.set("instantType","group"):i||s?O.set("instantType",i?"click":"dismiss"):O.set("instantType",void 0)}),es=n.useCallback(e=>{let t=(0,k.createChangeEventDetails)(e);return t.preventUnmountOnClose=()=>{O.set("preventUnmountingOnClose",!0)},t},[O]),eu=n.useCallback(()=>{O.setOpen(!1,es(m.REASONS.imperativeAction))},[O,es]);n.useImperativeHandle(b,()=>({unmount:Q,close:eu}),[Q,eu]),"context-menu"===z.type&&(o=z.context),n.useImperativeHandle(o?.positionerRef,()=>U,[U]),n.useImperativeHandle(o?.actionsRef,()=>({setOpen:ei}),[ei]);let el=(0,eC.useSyncedFloatingRootContext)({popupStore:O,onOpenChange:ei});t=el.context.events,n.useEffect(()=>{let e=({open:e,eventDetails:t})=>ei(e,t);return t.on("setOpen",e),()=>{t?.off("setOpen",e)}},[t,ei]);let ed=(0,eS.useDismiss)(el,{enabled:!G,bubbles:{escapeKey:S&&"menu"===z.type},outsidePress:()=>"context-menu"!==z.type||J.current?.type==="contextmenu"||Z.current,externalTree:X?A:void 0}),ec=(0,ey.useRole)(el,{role:"menu"}),ep=(0,eP.useDirection)(),ef=n.useCallback(e=>{O.select("activeIndex")!==e&&O.set("activeIndex",e)},[O]),eb=(0,eR.useListNavigation)(el,{enabled:!G,listRef:O.context.itemDomElements,activeIndex:Y,nested:void 0!==z.type,loopFocus:g,orientation:v,parentOrientation:"menubar"===z.type?z.context.orientation:void 0,rtl:"rtl"===ep,disabledIndices:eh.EMPTY_ARRAY,onNavigate:ef,openOnArrowKeyDown:"context-menu"!==z.type,externalTree:X?A:void 0,focusItemOnHover:C}),eM=n.useCallback(e=>{O.context.typingRef.current=e},[O]),eT=(0,eE.useTypeahead)(el,{listRef:O.context.itemLabels,elementsRef:O.context.itemDomElements,activeIndex:Y,resetMs:ea.TYPEAHEAD_RESET_MS,onMatch:e=>{L&&e!==Y&&O.set("activeIndex",e)},onTypingChange:eM}),{getReferenceProps:eO,getFloatingProps:ek,getItemProps:eN,getTriggerProps:eA}=(0,ex.useInteractions)([ed,ec,eb,eT]),eD=n.useMemo(()=>{let e=(0,y.mergeProps)(eO(),{onMouseMove(){O.set("allowMouseEnter",!0)}},q);return delete e.role,e},[eO,O,q]),ej=n.useMemo(()=>{let e=eA();if(!e)return e;let t=(0,y.mergeProps)(e,q);return delete t.role,delete t["aria-controls"],t},[eA,q]),eU=n.useMemo(()=>ek({onMouseMove(){O.set("allowMouseEnter",!0),"menu"===z.type&&O.set("hoverEnabled",!1)},onClick(){O.select("hoverEnabled")&&O.set("hoverEnabled",!1)},onKeyDown(e){let t=O.select("keyboardEventRelay");t&&!e.isPropagationStopped()&&t(e)}}),[ek,z.type,O]),eB=n.useMemo(()=>eN(),[eN]);O.useSyncedValues({floatingRootContext:el,activeTriggerProps:eD,inactiveTriggerProps:ej,popupProps:eU,itemProps:eB});let eH=n.useMemo(()=>({store:O,parent:T}),[O,T]),eG=(0,N.jsx)(i.Provider,{value:eH,children:"function"==typeof r?r({payload:K}):r});return void 0===z.type||"context-menu"===z.type?(0,N.jsx)(et.FloatingTree,{externalTree:A,children:eG}):eG});e.s(["MenuRoot",0,eB],516804),e.s(["MenuSubmenuRoot",0,function(e){let t=s().store,o=n.useMemo(()=>({parentMenu:t}),[t]);return(0,N.jsx)(eU.Provider,{value:o,children:(0,N.jsx)(eB,{...e})})}],641388)},136111,e=>{"use strict";var t=e.i(965652),n=e.i(362891),o=e.i(238706),r=e.i(655728);e.s(["useCompositeItem",0,function(e={}){let{highlightItemOnHover:a,highlightedIndex:i,onHighlightedIndexChange:s}=(0,o.useCompositeRootContext)(),{ref:u,index:l}=(0,r.useCompositeListItem)(e),d=i===l,c=t.useRef(null),p=(0,n.useMergedRefs)(u,c);return{compositeProps:t.useMemo(()=>({tabIndex:d?0:-1,onFocus(){s(l)},onMouseMove(){let e=c.current;if(!a||!e)return;let t=e.hasAttribute("disabled")||"true"===e.ariaDisabled;d||t||e.focus()}}),[d,s,l,a]),compositeRef:p,index:l}}])},755146,e=>{"use strict";var t,n=e.i(289721);e.i(961930);var o=e.i(68128),r=e.i(301823),a=e.i(6851),i=e.i(462053),s=e.i(784830),u=e.i(262059),l=e.i(560033),d=e.i(374083),c=e.i(476723),p=e.i(72173),f=e.i(521192),m=e.i(851663),g=e.i(378837),v=e.i(188366),h=e.i(516804),b=e.i(641388);e.i(708878);var S=e.i(462902),x=e.i(965652),R=e.i(585012),y=e.i(161476),E=e.i(102094),C=e.i(154660),M=e.i(887642),I=e.i(804849),P=e.i(954588),w=e.i(660272),T=e.i(430557),O=e.i(205995),k=e.i(422499),N=e.i(411657),A=e.i(306296),D=e.i(512677),j=e.i(682354),L=e.i(870541),F=e.i(271936),U=e.i(845756),_=e.i(581263),B=e.i(282109),H=e.i(748299),G=e.i(136111);function V(e){let{render:t,className:n,state:o=P.EMPTY_OBJECT,props:r=P.EMPTY_ARRAY,refs:a=P.EMPTY_ARRAY,metadata:i,stateAttributesMapping:s,tag:u="div",...l}=e,{compositeProps:d,compositeRef:c}=(0,G.useCompositeItem)({metadata:i});return(0,_.useRenderElement)(u,e,{state:o,ref:[...a,c],props:[d,...r,l],stateAttributesMapping:s})}var z=e.i(238706),Y=e.i(92615),K=e.i(894621),W=e.i(207516),J=e.i(586622),X=e.i(743757),$=e.i(132596),q=e.i(693354),Q=e.i(221732),Z=e.i(67077);let ee=(0,C.fastComponentRef)(function(e,t){let o,r,a,{render:i,className:s,disabled:u=!1,nativeButton:l=!0,id:d,openOnHover:c,delay:p=100,closeDelay:f=0,handle:m,payload:g,...v}=e,h=(0,F.useMenuRootContext)(!0),b=m?.store??h?.store;if(!b)throw Error((0,S.default)(85));let C=(0,W.useBaseUiId)(d),G=b.useState("isTriggerActive",C),ee=b.useState("floatingRootContext"),et=b.useState("isOpenedByTrigger",C),en=x.useRef(null),eo=(o=(0,X.useContextMenuRootContext)(!0),r=(0,F.useMenuRootContext)(!0),a=(0,$.useMenubarContext)(!0),x.useMemo(()=>a?{type:"menubar",context:a}:o&&!r?{type:"context-menu",context:o}:{type:void 0},[o,r,a])),er=(0,z.useCompositeRootContext)(!0),ea=(0,O.useFloatingTree)(),ei=x.useMemo(()=>ea??new D.FloatingTreeStore,[ea]),es=(0,O.useFloatingNodeId)(ei),eu=(0,O.useFloatingParentNodeId)(),{registerTrigger:el,isMountedByThisTrigger:ed}=(0,K.useTriggerDataForwarding)(C,en,b,{payload:g,closeDelay:f,parent:eo,floatingTreeRoot:ei,floatingNodeId:es,floatingParentNodeId:eu,keyboardEventRelay:er?.relayKeyboardEvent}),ec="menubar"===eo.type,ep=b.useState("disabled"),ef=u||ep||ec&&eo.context.disabled,{getButtonProps:em,buttonRef:eg}=(0,B.useButton)({disabled:ef,native:l});x.useEffect(()=>{et||void 0!==eo.type||(b.context.allowMouseUpTriggerRef.current=!1)},[b,et,eo.type]);let ev=x.useRef(null),eh=(0,y.useTimeout)(),eb=(0,M.useStableCallback)(e=>{if(!ev.current)return;eh.clear(),b.context.allowMouseUpTriggerRef.current=!1;let t=e.target;if((0,j.contains)(ev.current,t)||(0,j.contains)(b.select("positionerElement"),t)||t===ev.current||null!=t&&function e(t){return(0,Y.isHTMLElement)(t)&&t.hasAttribute("data-rootownerid")?t.getAttribute("data-rootownerid")??void 0:(0,Y.isLastTraversableNode)(t)?void 0:e((0,Y.getParentNode)(t))}(t)===b.select("rootId"))return;let n=(0,H.getPseudoElementBounds)(ev.current);e.clientX>=n.left-2&&e.clientX<=n.right+2&&e.clientY>=n.top-2&&e.clientY<=n.bottom+2||ei.events.emit("close",{domEvent:e,reason:J.REASONS.cancelOpen})});x.useEffect(()=>{et&&b.select("lastOpenChangeReason")===J.REASONS.triggerHover&&(0,E.ownerDocument)(ev.current).addEventListener("mouseup",eb,{once:!0})},[et,eb,b]);let eS=ec&&eo.context.hasSubmenuOpen,ex=c??eS,eR=(0,N.useHoverReferenceInteraction)(ee,{enabled:ex&&!ef&&"context-menu"!==eo.type&&(!ec||eS&&!ed),handleClose:(0,w.safePolygon)({blockPointerEvents:!ec}),mouseOnly:!0,move:!1,restMs:void 0===eo.type?p:void 0,delay:{close:f},triggerElementRef:en,externalTree:ei,isActiveTrigger:G}),ey=function(e,t){let n=(0,y.useTimeout)(),[o,r]=x.useState(!1);return(0,I.useIsoLayoutEffect)(()=>{e&&"trigger-hover"===t?(r(!0),n.start(q.PATIENT_CLICK_THRESHOLD,()=>{r(!1)})):e||(n.clear(),r(!1))},[e,t,n]),o}(et,b.select("lastOpenChangeReason")),eE=(0,T.useClick)(ee,{enabled:!ef&&"context-menu"!==eo.type,event:et&&ec?"click":"mousedown",toggle:!0,ignoreMouse:!1,stickIfOpen:void 0===eo.type&&ey}),eC=(0,k.useFocus)(ee,{enabled:!ef&&eS}),eM=function(e){let{enabled:t=!0,mouseDownAction:n,open:o}=e,r=x.useRef(!1);return x.useMemo(()=>t?{onMouseDown:e=>{("open"===n&&!o||"close"===n&&o)&&(r.current=!0,(0,E.ownerDocument)(e.currentTarget).addEventListener("click",()=>{r.current=!1},{once:!0}))},onClick:e=>{r.current&&(r.current=!1,e.preventBaseUIHandler())}}:P.EMPTY_OBJECT,[t,n,o])}({open:et,enabled:ec,mouseDownAction:"open"}),eI=(0,A.useInteractions)([eE,eC]),eP={disabled:ef,open:et},ew=b.useState("triggerProps",ed),eT=[ev,t,eg,el,en],eO=[eI.getReferenceProps(),eR??P.EMPTY_OBJECT,ew,{"aria-haspopup":"menu",id:C,onMouseDown:e=>{b.select("open")||(eh.start(200,()=>{b.context.allowMouseUpTriggerRef.current=!0}),(0,E.ownerDocument)(e.currentTarget).addEventListener("mouseup",eb,{once:!0}))}},ec?{role:"menuitem"}:{},eM,v,em],ek=x.useRef(null),eN=(0,M.useStableCallback)(e=>{R.flushSync(()=>{b.setOpen(!1,(0,Z.createChangeEventDetails)(J.REASONS.focusOut,e.nativeEvent,e.currentTarget))});let t=(0,L.getTabbableBeforeElement)(ek.current);t?.focus()}),eA=(0,M.useStableCallback)(e=>{let t=b.select("positionerElement");if(t&&(0,L.isOutsideEvent)(e,t))b.context.beforeContentFocusGuardRef.current?.focus();else{R.flushSync(()=>{b.setOpen(!1,(0,Z.createChangeEventDetails)(J.REASONS.focusOut,e.nativeEvent,e.currentTarget))});let n=(0,L.getTabbableAfterElement)(b.context.triggerFocusTargetRef.current||en.current);for(;null!==n&&(0,j.contains)(t,n);){let e=n;if((n=(0,L.getNextTabbable)(n))===e)break}n?.focus()}}),eD=(0,_.useRenderElement)("button",e,{enabled:!ec,stateAttributesMapping:U.pressableTriggerOpenStateMapping,state:eP,ref:eT,props:eO});return ec?(0,n.jsx)(V,{tag:"button",render:i,className:s,state:eP,refs:eT,props:eO,stateAttributesMapping:U.pressableTriggerOpenStateMapping}):et?(0,n.jsxs)(x.Fragment,{children:[(0,n.jsx)(Q.FocusGuard,{ref:ek,onFocus:eN},`${C}-pre-focus-guard`),(0,n.jsx)(x.Fragment,{children:eD},C),(0,n.jsx)(Q.FocusGuard,{ref:b.context.triggerFocusTargetRef,onFocus:eA},`${C}-post-focus-guard`)]}):(0,n.jsx)(x.Fragment,{children:eD},C)});var et=e.i(228559),en=e.i(203667);let eo=((t={}).popupWidth="--popup-width",t.popupHeight="--popup-height",t),er={activationDirection:e=>e?{"data-activation-direction":e}:null},ea=x.forwardRef(function(e,t){let{render:n,className:o,children:r,...a}=e,{store:i}=(0,F.useMenuRootContext)(),{side:s}=(0,et.useMenuPositionerContext)(),u=i.useState("instantType"),{children:l,state:d}=(0,en.usePopupViewport)({store:i,side:s,cssVars:eo,children:r}),c={activationDirection:d.activationDirection,transitioning:d.transitioning,instant:u};return(0,_.useRenderElement)("div",e,{state:c,ref:t,props:[a,{children:l}],stateAttributesMapping:er})});var ei=e.i(983640),es=e.i(655728),eu=e.i(398567),el=e.i(790326);let ed=x.forwardRef(function(e,t){let{render:n,className:o,label:r,id:a,nativeButton:i=!1,openOnHover:s=!0,delay:u=100,closeDelay:l=0,disabled:d=!1,...c}=e,p=(0,es.useCompositeListItem)(),f=(0,et.useMenuPositionerContext)(),{store:m}=(0,F.useMenuRootContext)(),g=(0,W.useBaseUiId)(a),v=m.useState("open"),h=m.useState("floatingRootContext"),b=m.useState("floatingTreeRoot"),R=(0,K.useTriggerRegistration)(g,m),y=x.useCallback(e=>{let t=R(e);return null!==e&&m.select("open")&&null==m.select("activeTriggerId")&&m.update({activeTriggerId:g,activeTriggerElement:e,closeDelay:l}),t},[R,l,m,g]),E=x.useRef(null),C=x.useCallback(e=>{E.current=e,m.set("activeTriggerElement",e)},[m]),M=(0,el.useMenuSubmenuRootContext)();if(!M?.parentMenu)throw Error((0,S.default)(37));m.useSyncedValue("closeDelay",l);let I=M.parentMenu,P=I.useState("itemProps"),O=I.useState("isActive",p.index),k=x.useMemo(()=>({type:"submenu-trigger",setActive(){I.set("activeIndex",p.index)}}),[I,p.index]),D=m.useState("disabled"),j=d||D,{getItemProps:L,itemRef:B}=(0,eu.useMenuItem)({closeOnClick:!1,disabled:j,highlighted:O,id:g,store:m,typingRef:I.context.typingRef,nativeButton:i,itemMetadata:k,nodeId:f?.nodeId}),H=m.useState("hoverEnabled"),G=I.useState("allowMouseEnter"),V=(0,N.useHoverReferenceInteraction)(h,{enabled:H&&s&&!j,handleClose:(0,w.safePolygon)({blockPointerEvents:!0}),mouseOnly:!0,move:!0,restMs:u,delay:G?{open:u,close:l}:0,triggerElementRef:E,externalTree:b}),z=(0,T.useClick)(h,{enabled:!j,event:"mousedown",toggle:!s,ignoreMouse:s,stickIfOpen:!1}),Y=(0,A.useInteractions)([z]),J=m.useState("triggerProps",!0);return delete J.id,(0,_.useRenderElement)("div",e,{state:{disabled:j,highlighted:O,open:v},stateAttributesMapping:U.triggerOpenStateMapping,props:[Y.getReferenceProps(),V,J,P,{tabIndex:v||O?0:-1,onBlur(){O&&I.set("activeIndex",null)}},c,L],ref:[t,p.ref,B,y,C]})});var ec=e.i(408656);class ep{constructor(){this.store=new ec.MenuStore}open(e){let t=e?this.store.context.triggerElements.getById(e):void 0;if(e&&!t)throw Error((0,S.default)(83,e));this.store.setOpen(!0,(0,Z.createChangeEventDetails)("imperative-action",void 0,t))}close(){this.store.setOpen(!1,(0,Z.createChangeEventDetails)("imperative-action",void 0,void 0))}get isOpen(){return this.store.state.open}}e.s(["Arrow",()=>o.MenuArrow,"Backdrop",()=>r.MenuBackdrop,"CheckboxItem",()=>a.MenuCheckboxItem,"CheckboxItemIndicator",()=>i.MenuCheckboxItemIndicator,"Group",()=>s.MenuGroup,"GroupLabel",()=>u.MenuGroupLabel,"Handle",0,ep,"Item",()=>l.MenuItem,"LinkItem",()=>d.MenuLinkItem,"Popup",()=>c.MenuPopup,"Portal",()=>p.MenuPortal,"Positioner",()=>f.MenuPositioner,"RadioGroup",()=>m.MenuRadioGroup,"RadioItem",()=>g.MenuRadioItem,"RadioItemIndicator",()=>v.MenuRadioItemIndicator,"Root",()=>h.MenuRoot,"Separator",()=>ei.Separator,"SubmenuRoot",()=>b.MenuSubmenuRoot,"SubmenuTrigger",0,ed,"Trigger",0,ee,"Viewport",0,ea,"createHandle",0,function(){return new ep}],143903);var ef=e.i(143903),ef=ef,em=e.i(975157),eg=e.i(776405),eg=eg;function ev({align:e="start",alignOffset:t=0,side:o="bottom",sideOffset:r=4,className:a,...i}){return(0,n.jsx)(ef.Portal,{children:(0,n.jsx)(ef.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:o,sideOffset:r,children:(0,n.jsx)(ef.Popup,{"data-slot":"dropdown-menu-content",className:(0,em.cn)("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",a),...i})})})}e.i(533133),e.s(["DropdownMenu",0,function({...e}){return(0,n.jsx)(ef.Root,{"data-slot":"dropdown-menu",...e})},"DropdownMenuContent",0,ev,"DropdownMenuGroup",0,function({...e}){return(0,n.jsx)(ef.Group,{"data-slot":"dropdown-menu-group",...e})},"DropdownMenuItem",0,function({className:e,inset:t,variant:o="default",...r}){return(0,n.jsx)(ef.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":o,className:(0,em.cn)("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",e),...r})},"DropdownMenuLabel",0,function({className:e,inset:t,...o}){return(0,n.jsx)(ef.GroupLabel,{"data-slot":"dropdown-menu-label","data-inset":t,className:(0,em.cn)("px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7",e),...o})},"DropdownMenuSeparator",0,function({className:e,...t}){return(0,n.jsx)(ef.Separator,{"data-slot":"dropdown-menu-separator",className:(0,em.cn)("-mx-1 my-1 h-px bg-border",e),...t})},"DropdownMenuSub",0,function({...e}){return(0,n.jsx)(ef.SubmenuRoot,{"data-slot":"dropdown-menu-sub",...e})},"DropdownMenuSubContent",0,function({align:e="start",alignOffset:t=-3,side:o="right",sideOffset:r=0,className:a,...i}){return(0,n.jsx)(ev,{"data-slot":"dropdown-menu-sub-content",className:(0,em.cn)("w-auto min-w-[96px] rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",a),align:e,alignOffset:t,side:o,sideOffset:r,...i})},"DropdownMenuSubTrigger",0,function({className:e,inset:t,children:o,...r}){return(0,n.jsxs)(ef.SubmenuTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":t,className:(0,em.cn)("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...r,children:[o,(0,n.jsx)(eg.default,{className:"ml-auto"})]})},"DropdownMenuTrigger",0,function({...e}){return(0,n.jsx)(ef.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}],755146)},242941,e=>{"use strict";let t=(0,e.i(572989).default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);e.s(["Globe",0,t],242941)},83434,e=>{"use strict";var t,n=e.i(289721),o=e.i(965652),r=e.i(585012),a=(t=function(e,n){return(t=Object.setPrototypeOf||({__proto__:[]})instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,n)},function(e,n){if("function"!=typeof n&&null!==n)throw TypeError("Class extends value "+String(n)+" is not a constructor or null");function o(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}),i="html",s=function(e,t){var n,o,r,a=null!=(n=e.ownerDocument)?n:document,s=null!=(r=null!=(o=a.defaultView)?o:a.parentWindow)?r:window;switch(t){case i:return e instanceof s.HTMLElement;case"svg":return e instanceof s.SVGElement;default:throw Error('Unrecognized element type "'.concat(t,'" for validateElementType.'))}},u=function(e,t){var n,o,r,a,u,l={};switch(e){case i:u=document.createElement(null!=(n=null==t?void 0:t.containerElement)?n:"div");break;case"svg":u=document.createElementNS("http://www.w3.org/2000/svg",null!=(o=null==t?void 0:t.containerElement)?o:"g");break;default:throw Error('Invalid element type "'.concat(e,'" for createPortalNode: must be "html" or "svg".'))}if(t&&"object"==typeof t&&t.attributes)for(var d=0,c=Object.entries(t.attributes);d<c.length;d++){var p=c[d],f=p[0],m=p[1];u.setAttribute(f,m)}var g={element:u,elementType:e,setPortalProps:function(e){l=e},getInitialPortalProps:function(){return l},mount:function(t,n){if(n!==a){if(g.unmount(),t!==r&&!s(t,e))throw Error('Invalid element type for portal: "'.concat(e,'" portalNodes must be used with ').concat(e," elements, but OutPortal is within <").concat(t.tagName,">."));t.replaceChild(g.element,n),r=t,a=n}},unmount:function(e){(!e||e===a)&&r&&a&&(r.replaceChild(a,g.element),r=void 0,a=void 0)}};return g},l=function(e){function t(t){var n=e.call(this,t)||this;return n.addPropsChannel=function(){Object.assign(n.props.node,{setPortalProps:function(e){n.setState({nodeProps:e})}})},n.state={nodeProps:n.props.node.getInitialPortalProps()},n}return a(t,e),t.prototype.componentDidMount=function(){this.addPropsChannel()},t.prototype.componentDidUpdate=function(){this.addPropsChannel()},t.prototype.render=function(){var e=this,t=this.props,n=t.children,a=t.node;return r.createPortal(o.Children.map(n,function(t){return o.isValidElement(t)?o.cloneElement(t,e.state.nodeProps):t}),a.element)},t}(o.PureComponent),d=function(e){function t(t){var n=e.call(this,t)||this;return n.placeholderNode=o.createRef(),n.passPropsThroughPortal(),n}return a(t,e),t.prototype.passPropsThroughPortal=function(){var e=Object.assign({},this.props,{node:void 0});this.props.node.setPortalProps(e)},t.prototype.componentDidMount=function(){var e=this.props.node;this.currentPortalNode=e;var t=this.placeholderNode.current,n=t.parentNode;e.mount(n,t),this.passPropsThroughPortal()},t.prototype.componentDidUpdate=function(){var e=this.props.node;this.currentPortalNode&&e!==this.currentPortalNode&&(this.currentPortalNode.unmount(this.placeholderNode.current),this.currentPortalNode.setPortalProps({}),this.currentPortalNode=e);var t=this.placeholderNode.current,n=t.parentNode;e.mount(n,t),this.passPropsThroughPortal()},t.prototype.componentWillUnmount=function(){var e=this.props.node;e.unmount(this.placeholderNode.current),e.setPortalProps({})},t.prototype.render=function(){var e=this.props.node.element.tagName,t=this.props.node.elementType===i?e.toLowerCase():e;return o.createElement(t,{ref:this.placeholderNode})},t}(o.PureComponent),c=u.bind(null,i);u.bind(null,"svg");let p=(0,e.i(19578).default)(()=>e.A(243288).then(e=>({default:e.TaskTerminal})),{loadableGenerated:{modules:[346069]},ssr:!1}),f=(0,o.createContext)(null);function m(){let e=(0,o.useContext)(f);if(!e)throw Error("useTerminalPortal must be used within TerminalPortalProvider");return e}e.s(["TerminalOutlet",0,function({taskId:e,worktreePath:t,onSessionEnd:r}){let{getPortal:a,setOnSessionEnd:i}=m(),[s,u]=(0,o.useState)(null);return((0,o.useEffect)(()=>(u(a(e,t)),()=>u(null)),[e,t,a]),(0,o.useEffect)(()=>(i(e,r??null),()=>i(e,null)),[e,r,i]),s)?(0,n.jsx)(d,{node:s.portalNode}):null},"TerminalPortalProvider",0,function({children:e}){let t=(0,o.useRef)(new Map),r=(0,o.useRef)([]),[,a]=(0,o.useState)(0),i=(0,o.useCallback)((e,n)=>{let o=t.current.get(e);if(o)return r.current=r.current.filter(t=>t!==e),r.current.push(e),o;for(;t.current.size>=3&&r.current.length>0;){let e=r.current.shift();t.current.delete(e)}let i={portalNode:c({attributes:{style:"width:100%;height:100%"}}),taskId:e,worktreePath:n,onSessionEnd:{current:null}};return t.current.set(e,i),r.current.push(e),a(e=>e+1),i},[]),s=(0,o.useCallback)(e=>{t.current.delete(e),r.current=r.current.filter(t=>t!==e),a(e=>e+1)},[]),u=(0,o.useCallback)((e,n)=>{let o=t.current.get(e);o&&(o.onSessionEnd.current=n)},[]),d=Array.from(t.current.values()).map(e=>(0,n.jsx)(l,{node:e.portalNode,children:(0,n.jsx)(p,{taskId:e.taskId,worktreePath:e.worktreePath,onSessionEnd:t=>e.onSessionEnd.current?.(t),useCanvasRenderer:!0})},e.taskId));return(0,n.jsxs)(f.Provider,{value:{getPortal:i,removePortal:s,setOnSessionEnd:u},children:[e,d]})},"useTerminalPortal",0,m],83434)}]);
|
package/README.md
CHANGED
|
@@ -135,6 +135,27 @@ Create task → Click Execute → TODO auto-transitions to IN_PROGRESS
|
|
|
135
135
|
- Project types: FRONTEND / BACKEND (controls preview availability)
|
|
136
136
|
- Git Path Mapping rules: auto-resolve local paths by host + owner
|
|
137
137
|
|
|
138
|
+
### Mission Control
|
|
139
|
+
|
|
140
|
+
- `/missions` dashboard monitors every running task execution across all workspaces with embedded live terminals
|
|
141
|
+
- Grid layout presets (1×1 … 3×3) persisted locally; workspace filter dropdown
|
|
142
|
+
- **Launch task** opens a search dialog — fuzzy-search tasks, browse by workspace → project, or pick from recent; launch new or resume a previous session
|
|
143
|
+
- Dual navigation: *input* mode (type into a pane) and *nav* mode (centered pane selector with `1–9 / A–Z` quick-select), toggle with `Ctrl+;`
|
|
144
|
+
|
|
145
|
+
### AI Assistant
|
|
146
|
+
|
|
147
|
+
- Built-in chat powered by the Claude Agent SDK with SSE streaming and multimodal (image) input
|
|
148
|
+
- Acts as a task-management operator — creates and moves tasks, searches, and reports through Tower's MCP tools
|
|
149
|
+
- Chat history sourced from on-disk transcripts; resilient resume with automatic fallback and MCP re-spawn on disconnect
|
|
150
|
+
|
|
151
|
+
### Version Timeline
|
|
152
|
+
|
|
153
|
+
- Group tasks under project versions and review work release-by-release; unversioned tasks stay in the backlog
|
|
154
|
+
|
|
155
|
+
### Notes & Assets
|
|
156
|
+
|
|
157
|
+
- Per-project notes (full-text searchable) and asset uploads (files, images, pasted screenshots), manageable from the UI or via MCP tools
|
|
158
|
+
|
|
138
159
|
### Settings
|
|
139
160
|
|
|
140
161
|
| Category | Options |
|
|
@@ -166,18 +187,19 @@ Tower exposes an MCP Server for external AI agents:
|
|
|
166
187
|
}
|
|
167
188
|
```
|
|
168
189
|
|
|
169
|
-
### Available Tools (
|
|
190
|
+
### Available Tools (31)
|
|
170
191
|
|
|
171
192
|
| Category | Tools |
|
|
172
193
|
|----------|-------|
|
|
173
194
|
| Workspace | list_workspaces, create_workspace, update_workspace, delete_workspace |
|
|
174
195
|
| Project | list_projects, create_project, update_project, delete_project |
|
|
175
|
-
| Task | list_tasks, create_task, update_task, delete_task,
|
|
196
|
+
| Task | list_tasks, create_task, update_task, move_task, delete_task, set_task_defaults, list_versions |
|
|
176
197
|
| Label | list_labels, create_label, delete_label, set_task_labels |
|
|
177
198
|
| Search | search (global search across tasks/projects/repos) |
|
|
178
|
-
| Terminal | get_task_terminal_output, send_task_terminal_input, get_task_execution_status |
|
|
179
199
|
| Knowledge | identify_project |
|
|
180
200
|
| Notes/Assets | manage_notes, manage_assets |
|
|
201
|
+
| Terminal | start_task_execution, get_task_terminal_output, send_task_terminal_input, get_task_execution_status, stop_task_execution, resume_task_execution |
|
|
202
|
+
| Report | daily_summary, daily_todo |
|
|
181
203
|
|
|
182
204
|
## Development Commands
|
|
183
205
|
|
package/README.zh.md
CHANGED
|
@@ -135,6 +135,27 @@ Workspace(工作空间)
|
|
|
135
135
|
- 项目类型:FRONTEND / BACKEND(影响预览功能可用性)
|
|
136
136
|
- Git Path Mapping 规则:按 host + owner 自动推算本地路径
|
|
137
137
|
|
|
138
|
+
### Mission Control 任务监控
|
|
139
|
+
|
|
140
|
+
- `/missions` 面板跨工作区监控所有运行中的任务执行,每张卡片内嵌实时终端
|
|
141
|
+
- 网格布局预设(1×1 … 3×3)本地持久化,支持按工作区筛选
|
|
142
|
+
- 点击「启动任务」打开搜索弹窗 — 模糊搜索任务、按「工作区 → 项目」浏览或从最近任务挑选;可启动新执行或恢复历史会话
|
|
143
|
+
- 双导航模式:input(直接在窗格打字)与 nav(居中窗格选择器,`1–9 / A–Z` 快捷定位),`Ctrl+;` 切换
|
|
144
|
+
|
|
145
|
+
### AI 助手
|
|
146
|
+
|
|
147
|
+
- 内置聊天,基于 Claude Agent SDK,SSE 流式 + 多模态(图片)输入
|
|
148
|
+
- 定位为「任务管理操作员」—— 通过 Tower MCP 工具创建/移动任务、搜索、生成报告
|
|
149
|
+
- 会话历史以磁盘 transcript 为准;resume 失效自动降级重试,MCP 断开自动重连
|
|
150
|
+
|
|
151
|
+
### 版本时间线
|
|
152
|
+
|
|
153
|
+
- 将任务归纳到项目版本,按版本回顾工作;未指定版本的任务进入 backlog
|
|
154
|
+
|
|
155
|
+
### 笔记与资产
|
|
156
|
+
|
|
157
|
+
- 按项目维护笔记(支持全文搜索)与资产上传(文件、图片、粘贴截图),UI 或 MCP 工具均可管理
|
|
158
|
+
|
|
138
159
|
### 设置
|
|
139
160
|
|
|
140
161
|
| 分类 | 配置项 |
|
|
@@ -166,18 +187,19 @@ Tower 提供 MCP Server,可被外部 AI Agent 调用:
|
|
|
166
187
|
}
|
|
167
188
|
```
|
|
168
189
|
|
|
169
|
-
### 可用工具(
|
|
190
|
+
### 可用工具(31 个)
|
|
170
191
|
|
|
171
192
|
| 分类 | 工具 |
|
|
172
193
|
|------|------|
|
|
173
194
|
| Workspace | list_workspaces, create_workspace, update_workspace, delete_workspace |
|
|
174
195
|
| Project | list_projects, create_project, update_project, delete_project |
|
|
175
|
-
| Task | list_tasks, create_task, update_task, delete_task,
|
|
196
|
+
| Task | list_tasks, create_task, update_task, move_task, delete_task, set_task_defaults, list_versions |
|
|
176
197
|
| Label | list_labels, create_label, delete_label, set_task_labels |
|
|
177
198
|
| Search | search(全局搜索任务/项目/仓库) |
|
|
178
|
-
| Terminal | get_task_terminal_output, send_task_terminal_input, get_task_execution_status |
|
|
179
199
|
| Knowledge | identify_project |
|
|
180
200
|
| Notes/Assets | manage_notes, manage_assets |
|
|
201
|
+
| Terminal | start_task_execution, get_task_terminal_output, send_task_terminal_input, get_task_execution_status, stop_task_execution, resume_task_execution |
|
|
202
|
+
| Report | daily_summary, daily_todo |
|
|
181
203
|
|
|
182
204
|
## 开发命令
|
|
183
205
|
|
package/dist/mcp-server.cjs
CHANGED
|
@@ -55083,6 +55083,52 @@ function validateMcpTaskId(taskId) {
|
|
|
55083
55083
|
if (!CUID_RE.test(taskId)) return "Invalid taskId format \u2014 expected CUID";
|
|
55084
55084
|
return null;
|
|
55085
55085
|
}
|
|
55086
|
+
async function resolveTaskTarget(args) {
|
|
55087
|
+
const name = args.taskName?.trim();
|
|
55088
|
+
if (!args.taskId && !name) {
|
|
55089
|
+
return { error: "Provide either taskId or taskName" };
|
|
55090
|
+
}
|
|
55091
|
+
if (args.taskId) {
|
|
55092
|
+
const err = validateMcpTaskId(args.taskId);
|
|
55093
|
+
if (err) return { error: err, taskId: args.taskId };
|
|
55094
|
+
const task = await db.task.findUnique({
|
|
55095
|
+
where: { id: args.taskId },
|
|
55096
|
+
select: { id: true, title: true }
|
|
55097
|
+
});
|
|
55098
|
+
if (!task) return { error: "Task not found", taskId: args.taskId };
|
|
55099
|
+
return { targetId: task.id, targetTitle: task.title };
|
|
55100
|
+
}
|
|
55101
|
+
const matches = await db.task.findMany({
|
|
55102
|
+
where: { title: { contains: name } },
|
|
55103
|
+
select: {
|
|
55104
|
+
id: true,
|
|
55105
|
+
title: true,
|
|
55106
|
+
status: true,
|
|
55107
|
+
project: { select: { name: true, workspace: { select: { name: true } } } }
|
|
55108
|
+
},
|
|
55109
|
+
orderBy: { updatedAt: "desc" },
|
|
55110
|
+
take: 20
|
|
55111
|
+
});
|
|
55112
|
+
if (matches.length === 0) {
|
|
55113
|
+
return { error: "No task found matching the given name", taskName: name };
|
|
55114
|
+
}
|
|
55115
|
+
const exact = matches.filter((m2) => m2.title.toLowerCase() === name.toLowerCase());
|
|
55116
|
+
const resolved = matches.length === 1 ? matches[0] : exact.length === 1 ? exact[0] : null;
|
|
55117
|
+
if (!resolved) {
|
|
55118
|
+
return {
|
|
55119
|
+
needsSelection: true,
|
|
55120
|
+
message: `Multiple tasks match "${name}". Call again with one of these taskId values.`,
|
|
55121
|
+
candidates: matches.map((m2) => ({
|
|
55122
|
+
taskId: m2.id,
|
|
55123
|
+
title: m2.title,
|
|
55124
|
+
status: m2.status,
|
|
55125
|
+
project: m2.project.name,
|
|
55126
|
+
workspace: m2.project.workspace.name
|
|
55127
|
+
}))
|
|
55128
|
+
};
|
|
55129
|
+
}
|
|
55130
|
+
return { targetId: resolved.id, targetTitle: resolved.title };
|
|
55131
|
+
}
|
|
55086
55132
|
var terminalTools = {
|
|
55087
55133
|
start_task_execution: {
|
|
55088
55134
|
description: "Start a Claude CLI terminal session for a task. The prompt is sent as the initial instruction. The task status will change to IN_PROGRESS. Returns executionId and worktreePath (if worktree mode).",
|
|
@@ -55157,6 +55203,75 @@ var terminalTools = {
|
|
|
55157
55203
|
return { error: "Bridge request failed", status: response.status };
|
|
55158
55204
|
}
|
|
55159
55205
|
},
|
|
55206
|
+
stop_task_execution: {
|
|
55207
|
+
description: "Stop (close) a task's terminal/PTY session \u2014 the same action as the Stop button. Identify the task either by exact `taskId` or by a fuzzy `taskName`. If the terminal is running it is closed; if it was never started this is a no-op. Both cases report success. When `taskName` matches multiple tasks it does NOT stop any of them \u2014 it returns `needsSelection` with the candidate list (id, title, status, project) so you can pick one and call again with that `taskId`. A unique name match or an exact `taskId` is closed directly.",
|
|
55208
|
+
schema: external_exports.object({
|
|
55209
|
+
taskId: external_exports.string().optional(),
|
|
55210
|
+
taskName: external_exports.string().optional()
|
|
55211
|
+
}),
|
|
55212
|
+
handler: async (args) => {
|
|
55213
|
+
const target = await resolveTaskTarget(args);
|
|
55214
|
+
if (!("targetId" in target)) return target;
|
|
55215
|
+
const { targetId, targetTitle } = target;
|
|
55216
|
+
const tid = encodeURIComponent(targetId);
|
|
55217
|
+
const response = await bridgeFetch(`/${tid}/stop`, { method: "POST" });
|
|
55218
|
+
if (!response.ok) {
|
|
55219
|
+
const errData = await response.json().catch(() => ({}));
|
|
55220
|
+
return {
|
|
55221
|
+
error: errData.error ?? "Failed to stop terminal",
|
|
55222
|
+
status: response.status,
|
|
55223
|
+
taskId: targetId
|
|
55224
|
+
};
|
|
55225
|
+
}
|
|
55226
|
+
const data = await response.json().catch(() => ({}));
|
|
55227
|
+
const wasRunning = data.wasRunning ?? false;
|
|
55228
|
+
return {
|
|
55229
|
+
ok: true,
|
|
55230
|
+
taskId: targetId,
|
|
55231
|
+
title: targetTitle,
|
|
55232
|
+
wasRunning,
|
|
55233
|
+
message: wasRunning ? "Terminal closed" : "No active terminal for this task \u2014 nothing to close"
|
|
55234
|
+
};
|
|
55235
|
+
}
|
|
55236
|
+
},
|
|
55237
|
+
resume_task_execution: {
|
|
55238
|
+
description: "Start (launch) a task's terminal so you can interact with it \u2014 e.g. when a related task needs to notify a sibling that hasn't been started yet. By default it resumes the latest history session (the Continue/Retry button); a task with no prior runs is started fresh with its task context (the Launch button). If a terminal is already running this is a no-op and reports `mode: already_running`. Identify the task by exact `taskId` or fuzzy `taskName` (ambiguous name \u2192 `needsSelection` with candidates; unique match or exact id \u2192 started directly). After it is running, use `send_task_terminal_input` to send the actual message.",
|
|
55239
|
+
schema: external_exports.object({
|
|
55240
|
+
taskId: external_exports.string().optional(),
|
|
55241
|
+
taskName: external_exports.string().optional()
|
|
55242
|
+
}),
|
|
55243
|
+
handler: async (args) => {
|
|
55244
|
+
const target = await resolveTaskTarget(args);
|
|
55245
|
+
if (!("targetId" in target)) return target;
|
|
55246
|
+
const { targetId, targetTitle } = target;
|
|
55247
|
+
const tid = encodeURIComponent(targetId);
|
|
55248
|
+
const response = await bridgeFetch(`/${tid}/resume`, { method: "POST" });
|
|
55249
|
+
if (!response.ok) {
|
|
55250
|
+
const errData = await response.json().catch(() => ({}));
|
|
55251
|
+
return {
|
|
55252
|
+
error: errData.error ?? "Failed to start terminal",
|
|
55253
|
+
status: response.status,
|
|
55254
|
+
taskId: targetId
|
|
55255
|
+
};
|
|
55256
|
+
}
|
|
55257
|
+
const data = await response.json().catch(() => ({}));
|
|
55258
|
+
const mode = data.mode ?? "started";
|
|
55259
|
+
const messages = {
|
|
55260
|
+
already_running: "Terminal already running \u2014 ready for input",
|
|
55261
|
+
continued: "Terminal resumed from latest history",
|
|
55262
|
+
started: "Terminal started fresh"
|
|
55263
|
+
};
|
|
55264
|
+
return {
|
|
55265
|
+
ok: true,
|
|
55266
|
+
taskId: targetId,
|
|
55267
|
+
title: targetTitle,
|
|
55268
|
+
mode,
|
|
55269
|
+
executionId: data.executionId ?? null,
|
|
55270
|
+
worktreePath: data.worktreePath ?? null,
|
|
55271
|
+
message: messages[mode] ?? "Terminal started"
|
|
55272
|
+
};
|
|
55273
|
+
}
|
|
55274
|
+
},
|
|
55160
55275
|
get_task_execution_status: {
|
|
55161
55276
|
description: "Get the execution status of a task including whether its terminal is running, idle, or exited. Also returns a snippet of recent output.",
|
|
55162
55277
|
schema: external_exports.object({
|
package/package.json
CHANGED
package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_0hrprmi.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
module.exports=[550972,e=>{"use strict";var t=e.i(765876),a=e.i(675896),r=e.i(959160),i=e.i(97944),n=e.i(86757),s=e.i(204144),o=e.i(273436),d=e.i(743641),l=e.i(813766),c=e.i(840884),u=e.i(498814),p=e.i(780006),w=e.i(544432),h=e.i(772005),f=e.i(450223),k=e.i(193695);e.i(628400);var E=e.i(800071),m=e.i(855104),b=e.i(78091),g=e.i(198840),v=e.i(921675),R=e.i(843793),P=e.i(195158),A=e.i(248434),I=e.i(83721),N=e.i(50377),x=e.i(572173),y=e.i(89428),S=e.i(924868),C=e.i(446786),j=e.i(814747),T=e.i(86708);let D=N.logger.create("agent-actions"),U=(0,j.join)((0,C.tmpdir)(),"tower-signals");async function O(e,t){try{await (0,S.mkdir)(U,{recursive:!0,mode:448}),await (0,S.writeFile)((0,j.join)(U,`exit-${e}`),String(t),{mode:384})}catch{}}async function M(e,t){let a=await R.db.taskMessage.create({data:{role:"USER",content:t,taskId:e}});return(0,P.revalidatePath)("/workspaces"),{userMessage:a}}async function _(e){return R.db.taskMessage.findMany({where:{taskId:e},orderBy:{createdAt:"asc"}})}async function F(e,t="CLAUDE_CODE",a,r){let i=await R.db.taskExecution.create({data:{taskId:e,agent:t,status:"RUNNING",startedAt:new Date,worktreePath:a??null,worktreeBranch:r??null}});return await R.db.task.update({where:{id:e},data:{status:"IN_PROGRESS"}}),(0,P.revalidatePath)("/workspaces"),i}async function q(e,t="FAILED"){let a=await R.db.taskExecution.update({where:{id:e},data:{status:t,endedAt:new Date}});return(0,P.revalidatePath)("/workspaces"),a}async function L(t){let{destroySession:a,getSession:r}=await e.A(217260),i=r(t),n=i?.getBuffer()??"",s=await R.db.taskExecution.findFirst({where:{taskId:t,status:"RUNNING"},orderBy:{createdAt:"desc"}}),o=await R.db.task.findUnique({where:{id:t},include:{project:{select:{localPath:!0}}}});if(a(t),s){await R.db.taskExecution.update({where:{id:s.id},data:{status:"COMPLETED",endedAt:new Date}}),await R.db.task.update({where:{id:t},data:{status:"IN_REVIEW"}});let a=s.worktreePath||o?.project?.localPath||null,{captureExecutionSummary:r}=await e.A(507603);await r(s.id,t,0,n,a,s.forkCommit)}(0,P.revalidatePath)("/workspaces")}async function B(e){return R.db.taskExecution.findMany({where:{taskId:e},orderBy:{createdAt:"desc"},include:{insightNote:{select:{id:!0,title:!0,content:!0}}}})}async function $(t,a){let r=await R.db.task.findUnique({where:{id:t},include:{project:!0}});if(!r)throw Error("Task not found");if(!r.project?.localPath)throw Error("Project has no local path configured");await R.db.taskExecution.updateMany({where:{taskId:t,status:"RUNNING",NOT:{sessionId:a}},data:{status:"FAILED",endedAt:new Date}});let i=await R.db.taskExecution.findFirst({where:{taskId:t,sessionId:a},orderBy:{createdAt:"desc"}});if(!i)throw Error("Previous execution not found");let n=i.worktreePath??r.project.localPath,s=r.subPath?(0,j.join)(n,r.subPath):n,o=await (0,x.readConfigValue)("terminal.idleTimeoutSec",180),{adapter:d}=await (0,y.resolveCliAdapter)("terminal"),l=d.buildEnvOverrides({taskId:t,taskTitle:r.title,apiUrl:`http://localhost:${process.env.PORT||"3000"}`,callbackUrl:i.callbackUrl??void 0}),c=await R.db.taskExecution.update({where:{id:i.id},data:{status:"RUNNING",endedAt:null}});await R.db.task.update({where:{id:t},data:{status:"IN_PROGRESS"}}),(0,P.revalidatePath)("/workspaces");let u=await (0,x.readConfigValue)("onboarding.username",""),p=d.buildSpawnArgs({taskId:t,prompt:"",cwd:s,resumeSessionId:a,extraArgs:[...u?["--append-system-prompt",`The user's name is ${u}.`]:[]],envOverrides:l}),w=/no conversation found with session id|unknown session|session .* not found/i;return(0,I.createSession)(t,p.command,p.args,s,()=>{},async n=>{await O(t,n);let s=await R.db.taskExecution.findUnique({where:{id:c.id}});if(s?.status!=="RUNNING")return;let{getSession:o}=await e.A(217260),d=o(t),l=d?.getBuffer()??"";if(0!==n&&w.test(l)){D.info("Session resume failed — retrying with fresh execution",{taskId:t,previousSessionId:a}),await R.db.taskExecution.update({where:{id:c.id},data:{status:"FAILED",endedAt:new Date}}).catch(()=>{});try{await H(t,r.title)}catch(e){D.error("Fresh execution retry also failed",e,{taskId:t})}return}await R.db.taskExecution.update({where:{id:c.id},data:{status:0===n?"COMPLETED":"FAILED",endedAt:new Date}}).catch(()=>{});let u=i.worktreePath||r.project.localPath,{captureExecutionSummary:p}=await e.A(507603);await p(c.id,t,n,l,u,c.forkCommit);let{dispatchTaskCompletionEvent:h}=await e.A(136565);await h({taskId:t,taskTitle:r.title,status:0===n?"COMPLETED":"FAILED",executionId:c.id,workspaceId:r.project.workspaceId}),0===n&&await R.db.task.update({where:{id:t},data:{status:"IN_REVIEW"}}).catch(()=>{})},p.env,void 0,1e3*o),{executionId:c.id,worktreePath:i.worktreePath??n??null}}async function G(t){let a=await R.db.task.findUnique({where:{id:t},include:{project:!0}});if(!a)throw Error("Task not found");if(!a.project?.localPath)throw Error("Project has no local path configured");let r=await R.db.taskExecution.findFirst({where:{taskId:t},orderBy:{createdAt:"desc"}}),{destroySession:i}=await e.A(217260);i(t),await R.db.taskExecution.updateMany({where:{taskId:t,status:"RUNNING"},data:{status:"FAILED",endedAt:new Date}});let n=r?.worktreePath??a.project.localPath,s=a.subPath?(0,j.join)(n,a.subPath):n,o=await (0,x.readConfigValue)("terminal.idleTimeoutSec",180),{adapter:d,provider:l}=await (0,y.resolveCliAdapter)("terminal"),c=d.buildEnvOverrides({taskId:t,taskTitle:a.title,apiUrl:`http://localhost:${process.env.PORT||"3000"}`}),u=await R.db.taskExecution.create({data:{taskId:t,agent:l.agentFieldValue,status:"RUNNING",startedAt:new Date,worktreePath:r?.worktreePath??null,worktreeBranch:r?.worktreeBranch??null}});await R.db.task.update({where:{id:t},data:{status:"IN_PROGRESS"}}),(0,P.revalidatePath)("/workspaces");let p=await (0,x.readConfigValue)("onboarding.username",""),w=d.buildSpawnArgs({taskId:t,prompt:"",cwd:s,continueLatest:!0,extraArgs:[...p?["--append-system-prompt",`The user's name is ${p}.`]:[]],envOverrides:c});return(0,I.createSession)(t,w.command,w.args,s,()=>{},async i=>{await O(t,i);let n=await R.db.taskExecution.findUnique({where:{id:u.id}});if(n?.status!=="RUNNING")return;let{getSession:s}=await e.A(217260),o=s(t),d=o?.getBuffer()??"";await R.db.taskExecution.update({where:{id:u.id},data:{status:0===i?"COMPLETED":"FAILED",endedAt:new Date}}).catch(()=>{});let l=r?.worktreePath||a.project.localPath,{captureExecutionSummary:c}=await e.A(507603);await c(u.id,t,i,d,l,r?.forkCommit??null);let{dispatchTaskCompletionEvent:p}=await e.A(136565);await p({taskId:t,taskTitle:a.title,status:0===i?"COMPLETED":"FAILED",executionId:u.id,workspaceId:a.project.workspaceId}),0===i&&await R.db.task.update({where:{id:t},data:{status:"IN_REVIEW"}}).catch(()=>{})},w.env,void 0,1e3*o),{executionId:u.id,worktreePath:r?.worktreePath??n??null}}async function H(t,a,r,i,n){let s,o,d=await R.db.task.findUnique({where:{id:t},include:{project:!0}});if(!d)throw Error("Task not found");if(!d.project?.localPath)throw Error("Project has no local path configured");let l=await (0,x.readConfigValue)("system.maxConcurrentExecutions",20);if(await R.db.taskExecution.count({where:{status:"RUNNING"}})>=l)throw Error(`已达并发上限(${l}),请等待其他任务完成后再启动`);let c=await (0,x.readConfigValue)("terminal.idleTimeoutSec",180),{adapter:u,provider:p,model:w}=await (0,y.resolveCliAdapter)("terminal");await R.db.taskExecution.updateMany({where:{taskId:t,status:"RUNNING"},data:{status:"FAILED",endedAt:new Date}}),"IN_PROGRESS"!==d.status&&(await R.db.task.update({where:{id:t},data:{status:"IN_PROGRESS"}}),(0,P.revalidatePath)("/workspaces"));let h="";if(!n){let e=await R.db.taskMessage.findMany({where:{taskId:t},orderBy:{createdAt:"desc"},take:10});h=[`Task: ${d.title}`,d.description?`Description: ${d.description}`:"",e.length>0?`Recent conversation:
|
|
2
|
-
${e.reverse().map(e=>`${e.role}: ${e.content}`).join("\n")}`:"",a.trim()?`User message: ${a}`:""].filter(Boolean).join("\n\n")}let f=r??d.promptId;if(f){let e=await R.db.agentPrompt.findUnique({where:{id:f}});e?.content&&(o=await (0,S.mkdtemp)((0,j.join)((0,C.tmpdir)(),"tower-pty-")),s=(0,j.join)(o,"instructions.md"),await (0,S.writeFile)(s,e.content,"utf-8"))}let k=null,E=null;if(d.baseBranch&&d.project.localPath){let{worktreePath:e,worktreeBranch:a}=await (0,A.createWorktree)(d.project.localPath,t,d.baseBranch);k=e,E=a}let m=k??d.project.localPath,b=d.subPath?(0,j.join)(m,d.subPath):m,g=await R.db.taskExecution.create({data:{taskId:t,agent:p.agentFieldValue,status:"RUNNING",startedAt:new Date,worktreePath:k??null,worktreeBranch:E??null,callbackUrl:i??null}}),v=null;if(d.project.localPath)try{let t,{execFileSync:a}=await e.A(144264);(t=k&&d.baseBranch?a("git",["merge-base",d.baseBranch,"HEAD"],{cwd:k,encoding:"utf-8",timeout:5e3}).trim():a("git",["rev-parse","HEAD"],{cwd:d.project.localPath,encoding:"utf-8",timeout:5e3}).trim())&&(v=t,await R.db.taskExecution.update({where:{id:g.id},data:{forkCommit:t}}))}catch{}let N="";if(s){let{readFile:t}=await e.A(260815);N+=await t(s,"utf-8")}let T=await (0,x.readConfigValue)("onboarding.username","");T&&(N+=(N?"\n":"")+`The user's name is ${T}.`);let U=u.buildSpawnArgs({taskId:t,prompt:h,cwd:b,extraArgs:[...N?["--append-system-prompt",N]:[],...w?["--model",w]:[]],envOverrides:u.buildEnvOverrides({taskId:t,taskTitle:d.title,apiUrl:`http://localhost:${process.env.PORT||"3000"}`,callbackUrl:i??void 0})});return(0,I.createSession)(t,U.command,U.args,b,()=>{},async a=>{await O(t,a);let r=await R.db.taskExecution.findUnique({where:{id:g.id}});if(r?.status!=="RUNNING")return;let{getSession:i}=await e.A(217260),n=i(t),s=n?.getBuffer()??"";await R.db.taskExecution.update({where:{id:g.id},data:{status:0===a?"COMPLETED":"FAILED",endedAt:new Date}}).catch(e=>{D.error("Failed to update execution status",e)});let l=k||d.project.localPath,{captureExecutionSummary:c}=await e.A(507603);await c(g.id,t,a,s,l,v);let{dispatchTaskCompletionEvent:u}=await e.A(136565);await u({taskId:t,taskTitle:d.title,status:0===a?"COMPLETED":"FAILED",executionId:g.id,workspaceId:d.project.workspaceId}),0===a&&await R.db.task.update({where:{id:t},data:{status:"IN_REVIEW"}}).catch(e=>{D.error("Failed to update task status",e)}),o&&await (0,S.rm)(o,{recursive:!0,force:!0}).catch(()=>{})},U.env,void 0,1e3*c),{executionId:g.id,worktreePath:k??m??null}}async function V(e,t,a,r,i){try{let n=await H(e,t,a,r,i);return{ok:!0,...n}}catch(t){return D.error("startPtyExecution failed",{taskId:e,error:t instanceof Error?t.stack??t.message:String(t)}),{ok:!1,error:t instanceof Error&&t.message?t.message:String(t)}}}async function K(){return(await R.db.taskExecution.findMany({where:{status:"RUNNING"},orderBy:{startedAt:"asc"},include:{task:{include:{project:{include:{workspace:!0}}}}}})).map(e=>({executionId:e.id,taskId:e.taskId,taskTitle:e.task.title,projectId:e.task.project.id,projectName:e.task.project.name,projectAlias:e.task.project.alias,projectLocalPath:e.task.project.localPath,workspaceId:e.task.project.workspace.id,workspaceName:e.task.project.workspace.name,worktreePath:e.worktreePath,subPath:e.task.subPath??null,startedAt:e.startedAt?.toISOString()??null}))}(0,T.ensureServerEntryExports)([M,_,F,q,L,B,$,G,H,V,K]),(0,v.registerServerReference)(M,"606984c0300991bdc9d0005ff1f7b626fd3b1464bc",null),(0,v.registerServerReference)(_,"40896130dfdd022e9af5af80a78a575e632284da4d",null),(0,v.registerServerReference)(F,"789299727233e14b67709b3dd32bf5f1d72b30036d",null),(0,v.registerServerReference)(q,"609a29c851c0cff4f2d556389d2717dd7199859e28",null),(0,v.registerServerReference)(L,"402138c18dc19abad95f20fefe5d78e3bd4fdc7002",null),(0,v.registerServerReference)(B,"40c2f366328ec18d2a9177b41d8767c8da1d4d294f",null),(0,v.registerServerReference)($,"6086b7e9f1d0857cc7cea4604025089fad67005b16",null),(0,v.registerServerReference)(G,"405eab1cdb8c0bf4f681f82198def577a1923e6197",null),(0,v.registerServerReference)(H,"7c4f3405eab5553e000395e8fe8303630f8062c76f",null),(0,v.registerServerReference)(V,"7c56aaadccf8125da890390685edc56b0cf4213044",null),(0,v.registerServerReference)(K,"00fc20d78c69ee152e8e5a0eb8f0e6e4bed79d7620",null);let W=b.z.object({prompt:b.z.string().optional().default("")});async function z(e,{params:t}){let a=(0,g.requireLocalhost)(e);if(a)return a;let{taskId:r}=await t,i=(0,g.validateTaskId)(r);if(i)return i;try{let t=await e.json(),a=W.safeParse(t);if(!a.success)return m.NextResponse.json({error:"Invalid body"},{status:400});let i=await H(r,a.data.prompt);return m.NextResponse.json(i)}catch(t){let e=t instanceof Error?t.message:String(t);return m.NextResponse.json({error:e},{status:500})}}e.s(["POST",0,z,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],499090);var X=e.i(499090);let Z=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/internal/terminal/[taskId]/start/route",pathname:"/api/internal/terminal/[taskId]/start",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/internal/terminal/[taskId]/start/route.ts",nextConfigOutput:"standalone",userland:X}),{workAsyncStorage:J,workUnitAsyncStorage:Q,serverHooks:Y}=Z;async function ee(e,t,r){r.requestMeta&&(0,i.setRequestMeta)(e,r.requestMeta),Z.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let m="/api/internal/terminal/[taskId]/start/route";m=m.replace(/\/index$/,"")||"/";let b=await Z.prepare(e,t,{srcPage:m,multiZoneDraftMode:!1});if(!b)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:R,parsedUrl:P,isDraftMode:A,prerenderManifest:I,routerServerContext:N,isOnDemandRevalidate:x,revalidateOnlyGenerated:y,resolvedPathname:S,clientReferenceManifest:C,serverActionsManifest:j}=b,T=(0,o.normalizeAppPath)(m),D=!!(I.dynamicRoutes[T]||I.routes[S]),U=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,P,!1):t.end("This page could not be found"),null);if(D&&!A){let e=!!I.routes[S],t=I.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(R.adapterPath)return await U();throw new k.NoFallbackError}}let O=null;!D||Z.isDev||A||(O="/index"===(O=S)?"/":O);let M=!0===Z.isDev||!D,_=D&&!M;j&&C&&(0,s.setManifestsSingleton)({page:m,clientReferenceManifest:C,serverActionsManifest:j});let F=e.method||"GET",q=(0,n.getTracer)(),L=q.getActiveScopeSpan(),B=!!(null==N?void 0:N.isWrappedByNextServer),$=!!(0,i.getRequestMeta)(e,"minimalMode"),G=(0,i.getRequestMeta)(e,"incrementalCache")||await Z.getIncrementalCache(e,R,I,$);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let H={params:v,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:M,incrementalCache:G,cacheLifeProfiles:R.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,i)=>Z.onRequestError(e,t,r,i,N)},sharedContext:{buildId:g}},V=new d.NodeNextRequest(e),K=new d.NodeNextResponse(t),W=l.NextRequestAdapter.fromNodeNextRequest(V,(0,l.signalFromNodeResponse)(t));try{let i,s=async e=>Z.handle(W,H).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=q.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${F} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",r),i.updateName(t))}else e.updateName(`${F} ${m}`)}),o=async i=>{var n,o;let d=async({previousCacheEntry:a})=>{try{if(!$&&x&&y&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await s(i);e.fetchMetrics=H.renderOpts.fetchMetrics;let o=H.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let d=H.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(V,K,n,H.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,w.toNodeOutgoingHttpHeaders)(n.headers);d&&(t[f.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==H.renderOpts.collectedRevalidate&&!(H.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&H.renderOpts.collectedRevalidate,r=void 0===H.renderOpts.collectedExpire||H.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:H.renderOpts.collectedExpire;return{value:{kind:E.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await Z.onRequestError(e,t,{routerKind:"App Router",routePath:m,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:_,isOnDemandRevalidate:x})},!1,N),t}},l=await Z.handleResponse({req:e,nextConfig:R,cacheKey:O,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:y,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:$});if(!D)return null;if((null==l||null==(n=l.value)?void 0:n.kind)!==E.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(o=l.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});$||t.setHeader("x-nextjs-cache",x?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,w.fromNodeOutgoingHttpHeaders)(l.value.headers);return $&&D||c.delete(f.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,h.getCacheControlHeader)(l.cacheControl)),await (0,p.sendResponse)(V,K,new Response(l.value.body,{headers:c,status:l.value.status||200})),null};B&&L?await o(L):(i=q.getActiveScopeSpan(),await q.withPropagatedContext(e.headers,()=>q.trace(c.BaseServerSpan.handleRequest,{spanName:`${F} ${m}`,kind:n.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},o),void 0,!B))}catch(t){if(t instanceof k.NoFallbackError||await Z.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:_,isOnDemandRevalidate:x})},!1,N),D)throw t;return await (0,p.sendResponse)(V,K,new Response(null,{status:500})),null}}e.s(["handler",0,ee,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:J,workUnitAsyncStorage:Q})},"routeModule",0,Z,"serverHooks",0,Y,"workAsyncStorage",0,J,"workUnitAsyncStorage",0,Q],550972)}];
|
|
3
|
-
|
|
4
|
-
//# sourceMappingURL=0se9_next_dist_esm_build_templates_app-route_0hrprmi.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[933919,(e,r,t)=>{r.exports=e.x("@prisma/client-9249dd53ac5b6a44",()=>require("@prisma/client-9249dd53ac5b6a44"))},874533,(e,r,t)=>{r.exports=e.x("node:child_process",()=>require("node:child_process"))},750227,(e,r,t)=>{r.exports=e.x("node:path",()=>require("node:path"))},902157,(e,r,t)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},660526,(e,r,t)=>{r.exports=e.x("node:os",()=>require("node:os"))},666680,(e,r,t)=>{r.exports=e.x("node:crypto",()=>require("node:crypto"))},193695,(e,r,t)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},918622,(e,r,t)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},270406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},324725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},198840,e=>{"use strict";var r=e.i(855104);let t=["localhost","127.0.0.1","[::1]"],s=new Set(["127.0.0.1","::1","::ffff:127.0.0.1"]),n=/^c[a-z0-9]{20,30}$/;e.s(["requireLocalhost",0,function(e){let n=e.headers.get("x-forwarded-for");if(n&&!n.split(",").map(e=>e.trim()).every(e=>s.has(e)))return r.NextResponse.json({error:"Forbidden"},{status:403});let i=e.headers.get("host")??"";return t.some(e=>i.startsWith(e))?null:r.NextResponse.json({error:"Forbidden"},{status:403})},"validateProjectId",0,function(e){return n.test(e)?null:r.NextResponse.json({error:"Invalid projectId format"},{status:400})},"validateTaskId",0,function(e){return n.test(e)?null:r.NextResponse.json({error:"Invalid taskId format"},{status:400})}])},192520,e=>{"use strict";let r;var t=e.i(750227),s=e.i(660526),n=e.i(902157);function i(){return r||(r=process.env.TOWER_DATA_DIR||(0,t.join)((0,s.homedir)(),".tower"),(0,n.existsSync)(r)||(0,n.mkdirSync)(r,{recursive:!0})),r}e.s(["getAssistantDir",0,function(){let e=(0,t.join)(i(),"assistant");return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e},"getBackupsDir",0,function(){let e=(0,t.join)(i(),"backups");return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e},"getExtensionsDir",0,function(){let e=(0,t.join)(i(),"extensions");return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e},"getStorageDir",0,function(){let e=process.env.TOWER_STORAGE_DIR||function(){try{let e=(0,n.readFileSync)((0,t.join)(i(),"storage-location"),"utf-8").trim();return e.length>0?e:null}catch{return null}}(),r=e&&e.length>0?e:(0,t.join)(i(),"storage");return(0,n.existsSync)(r)||(0,n.mkdirSync)(r,{recursive:!0}),r},"getTowerDbPath",0,function(){let e;return(0,t.join)((e=(0,t.join)(i(),"database"),(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e),"tower.db")},"getTowerDir",0,i])},843793,e=>{"use strict";var r=e.i(933919);let t=globalThis.prisma??new r.PrismaClient({log:[]});process.on("SIGTERM",()=>{t.$disconnect().catch(()=>{})}),process.on("SIGINT",()=>{t.$disconnect().catch(()=>{})}),e.s(["db",0,t])},572173,e=>{"use strict";var r=e.i(843793);async function t(e,t){let s=await r.db.systemConfig.findUnique({where:{key:e}});if(!s)return t;try{return JSON.parse(s.value)}catch{return t}}e.s(["readConfigValue",0,t])},341291,e=>{"use strict";var r=e.i(666680),t=e.i(902157),s=e.i(750227),n=e.i(192520);function i(e){if(!e.startsWith((0,n.getStorageDir)()+s.sep))throw Error("Path traversal detected")}let a=new Set(["image","screenshot","img","photo","picture","clipboard","paste","untitled"]);e.s(["buildCacheFilename",0,function(e,t){let n=s.basename(e,s.extname(e)),i=r.randomUUID().replace(/-/g,"").slice(0,8),o=n.toLowerCase();if(!n||a.has(o)||/^screenshot[\s_\-]/i.test(n))return`tower_image-${i}${t}`;let c=n.replace(/[^\p{L}\p{N}]/gu,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"");return`${c||"file"}-${i}${t}`},"ensureAssetsDir",0,function(e){let r,a=(i(r=s.join((0,n.getStorageDir)(),"assets",e)),r);return t.mkdirSync(a,{recursive:!0}),a},"getAssistantCacheDir",0,function(e="images"){let r=new Date,a=`${r.getFullYear()}-${String(r.getMonth()+1).padStart(2,"0")}`,o=s.join((0,n.getStorageDir)(),"cache","assistant",a,e);return i(o),t.mkdirSync(o,{recursive:!0}),o},"getAssistantCacheRoot",0,function(){let e=s.join((0,n.getStorageDir)(),"cache","assistant");return i(e),e}])},634712,e=>{"use strict";let r=["jpg","jpeg","png","gif","webp"],t=["md","txt","json","csv"],s=[...r,...t].join("|"),n=RegExp(`^\\d{4}-\\d{2}/(images|files)/[^/]+\\.(${s})$`,"i");function i(e){let s=e.replace(/^\./,"").toLowerCase();return r.includes(s)?"image":t.includes(s)?"text":null}[...r.map(e=>`.${e}`),...t.map(e=>`.${e}`),"image/*"].join(","),e.s(["ALLOWED_TEXT_EXTS",0,t,"ATTACHMENT_SUBPATH_RE",0,n,"MAX_ATTACHMENTS",0,10,"classifyAttachmentExt",0,i,"classifyAttachmentSubPath",0,function(e){if(!n.test(e))return null;let r=e.lastIndexOf(".");return r<0?null:i(e.slice(r+1))}])},482848,e=>{e.v(e=>Promise.resolve().then(()=>e(874533)))},268548,e=>{e.v(r=>Promise.all(["server/chunks/[externals]_node_util_0xr.y7p._.js"].map(r=>e.l(r))).then(()=>r(812057)))},144264,e=>{e.v(r=>Promise.all(["server/chunks/[externals]_child_process_0pwkpv9._.js"].map(r=>e.l(r))).then(()=>r(233405)))},534777,e=>{e.v(r=>Promise.all(["server/chunks/[externals]_util_0wtvqkc._.js"].map(r=>e.l(r))).then(()=>r(224361)))},200628,e=>{e.v(e=>Promise.resolve().then(()=>e(769310)))},145135,e=>{e.v(r=>Promise.all(["server/chunks/[externals]__0o6dym7._.js","server/chunks/07-d_@anthropic-ai_claude-agent-sdk_sdk_mjs_0.721uk._.js"].map(r=>e.l(r))).then(()=>r(217040)))},979764,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0iyp~.k._.js"].map(r=>e.l(r))).then(()=>r(471552)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0.wld9h._.js.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
module.exports=[324725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},193695,(e,r,t)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},198840,e=>{"use strict";var r=e.i(855104);let t=["localhost","127.0.0.1","[::1]"],n=new Set(["127.0.0.1","::1","::ffff:127.0.0.1"]),s=/^c[a-z0-9]{20,30}$/;e.s(["requireLocalhost",0,function(e){let s=e.headers.get("x-forwarded-for");if(s&&!s.split(",").map(e=>e.trim()).every(e=>n.has(e)))return r.NextResponse.json({error:"Forbidden"},{status:403});let i=e.headers.get("host")??"";return t.some(e=>i.startsWith(e))?null:r.NextResponse.json({error:"Forbidden"},{status:403})},"validateProjectId",0,function(e){return s.test(e)?null:r.NextResponse.json({error:"Invalid projectId format"},{status:400})},"validateTaskId",0,function(e){return s.test(e)?null:r.NextResponse.json({error:"Invalid taskId format"},{status:400})}])},522734,(e,r,t)=>{r.exports=e.x("fs",()=>require("fs"))},233405,(e,r,t)=>{r.exports=e.x("child_process",()=>require("child_process"))},933919,(e,r,t)=>{r.exports=e.x("@prisma/client-9249dd53ac5b6a44",()=>require("@prisma/client-9249dd53ac5b6a44"))},874533,(e,r,t)=>{r.exports=e.x("node:child_process",()=>require("node:child_process"))},750227,(e,r,t)=>{r.exports=e.x("node:path",()=>require("node:path"))},902157,(e,r,t)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},660526,(e,r,t)=>{r.exports=e.x("node:os",()=>require("node:os"))},912714,(e,r,t)=>{r.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},980738,(e,r,t)=>{r.exports=e.x("node-pty-c710df912a232c01",()=>require("node-pty-c710df912a232c01"))},918622,(e,r,t)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},270406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},814747,(e,r,t)=>{r.exports=e.x("path",()=>require("path"))},446786,(e,r,t)=>{r.exports=e.x("os",()=>require("os"))},924868,(e,r,t)=>{r.exports=e.x("fs/promises",()=>require("fs/promises"))},843793,e=>{"use strict";var r=e.i(933919);let t=globalThis.prisma??new r.PrismaClient({log:[]});process.on("SIGTERM",()=>{t.$disconnect().catch(()=>{})}),process.on("SIGINT",()=>{t.$disconnect().catch(()=>{})}),e.s(["db",0,t])},572173,e=>{"use strict";var r=e.i(843793);async function t(e,t){let n=await r.db.systemConfig.findUnique({where:{key:e}});if(!n)return t;try{return JSON.parse(n.value)}catch{return t}}e.s(["readConfigValue",0,t])},248434,e=>{"use strict";var r=e.i(233405),t=e.i(522734),n=e.i(924868),s=e.i(814747),i=e.i(446786),o=e.i(50377);function a(e){return e.startsWith("~/")||"~"===e?s.default.join(i.default.homedir(),e.slice(1)):e}async function c(e,i,c){let l=a(e),u=s.default.join(l,".worktrees","task-"+i),p="task/"+i;if(!(0,t.existsSync)(l))throw Error(`项目本地路径不存在:${l}`);try{(0,r.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,n.mkdir)(s.default.join(l,".worktrees"),{recursive:!0});let f=(0,r.execFileSync)("git",["worktree","list","--porcelain"],{cwd:l,encoding:"utf-8",timeout:1e4}),v=s.default.normalize(u).replace(/\\/g,"/");if(f.split("\n").some(e=>e.startsWith("worktree ")&&e.slice(9).replace(/\\/g,"/")===v))return d(l,u),{worktreePath:u,worktreeBranch:p};if((0,t.existsSync)(u)&&(o.logger.warn(`[worktree] Directory exists but not tracked by git, removing: ${u}`),(0,r.execFileSync)("git",["worktree","remove",u,"--force"],{cwd:l,encoding:"utf-8",timeout:3e4})),(0,r.execFileSync)("git",["branch","--list",p],{cwd:l,encoding:"utf-8",timeout:5e3}).trim())(0,r.execFileSync)("git",["worktree","add",u,p],{cwd:l,encoding:"utf-8",timeout:3e4});else{let e=c;try{(0,r.execFileSync)("git",["rev-parse","--verify",c],{cwd:l,encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]})}catch{try{(0,r.execFileSync)("git",["rev-parse","--verify",`origin/${c}`],{cwd:l,encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]}),e=`origin/${c}`}catch{throw Error(`Base branch '${c}' does not exist locally or on remote. Available branches: `+(0,r.execFileSync)("git",["branch","-a","--format=%(refname:short)"],{cwd:l,encoding:"utf-8",timeout:5e3}).trim().split("\n").join(", "))}}(0,r.execFileSync)("git",["worktree","add","-b",p,u,e],{cwd:l,encoding:"utf-8",timeout:3e4})}return d(l,u),{worktreePath:u,worktreeBranch:p}}let l=new Set(["node_modules",".git",".worktrees"]);function d(e,r){let n,i,a=o.logger.create("worktree"),c=["node_modules",".next"];for(let o of(n=[],(i=(e,r,o)=>{let a;if((0,t.existsSync)(s.default.join(e,"package.json"))&&n.push(r),!(o>=8)){try{a=(0,t.readdirSync)(e,{withFileTypes:!0})}catch{return}for(let t of a){if(!t.isDirectory())continue;let n=t.name;l.has(n)||n.startsWith(".")||i(s.default.join(e,n),r?s.default.join(r,n):n,o+1)}}})(e,"",0),n))for(let n of c){let i=o?s.default.join(o,n):n,c=s.default.join(e,i),l=s.default.join(r,i);if(!(0,t.existsSync)(c)){"node_modules"===n&&a.info(`Skipped ${i} — source not installed`,{source:c});continue}try{(0,t.lstatSync)(l);continue}catch{}try{(0,t.mkdirSync)(s.default.dirname(l),{recursive:!0}),(0,t.symlinkSync)(c,l,"junction"),a.info(`Symlinked ${i}`,{from:c,to:l})}catch(e){a.warn(`Failed to symlink ${i}`,{error:String(e)})}}}async function u(e,n){let i=a(e),o=s.default.join(i,".worktrees","task-"+n),c="task/"+n;(0,t.existsSync)(o)&&(0,r.execFileSync)("git",["worktree","remove",o,"--force"],{cwd:i,encoding:"utf-8",timeout:3e4}),(0,r.execFileSync)("git",["branch","--list",c],{cwd:i,encoding:"utf-8",timeout:5e3}).trim()&&(0,r.execFileSync)("git",["branch","-D",c],{cwd:i,encoding:"utf-8",timeout:5e3})}e.s(["createWorktree",0,c,"removeWorktree",0,u])},482819,(e,r,t)=>{"use strict";r.exports=e.r(583981).vendored["react-rsc"].ReactServerDOMTurbopackServer},921675,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"registerServerReference",{enumerable:!0,get:function(){return n.registerServerReference}});let n=e.r(482819)},86708,(e,r,t)=>{"use strict";function n(e){for(let r=0;r<e.length;r++){let t=e[r];if("function"!=typeof t)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof t}.
|
|
2
|
-
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ensureServerEntryExports",{enumerable:!0,get:function(){return n}})},932583,e=>{"use strict";var r=e.i(921675),t=e.i(843793);async function n(e,r={}){let s=r.report,i=s?JSON.stringify(s):null;await t.db.providerConnection.upsert({where:{provider:e},create:{provider:e,lastTestedAt:new Date,testOk:!0,version:r.version??null,mcpInstalled:s?.mcp?.ok??!1,hooksInstalled:s?.hooks?.ok??!1,skillsInstalled:s?.skill?.ok??!1,installLog:i},update:{lastTestedAt:new Date,testOk:!0,version:r.version??null,mcpInstalled:s?.mcp?.ok??!1,hooksInstalled:s?.hooks?.ok??!1,skillsInstalled:s?.skill?.ok??!1,installLog:i}})}async function s(e,r={}){await t.db.providerConnection.upsert({where:{provider:e},create:{provider:e,lastTestedAt:new Date,testOk:!1,installLog:r.reason??null},update:{lastTestedAt:new Date,testOk:!1,mcpInstalled:!1,hooksInstalled:!1,skillsInstalled:!1,installLog:r.reason??null}})}async function i(e){let r=await t.db.providerConnection.findUnique({where:{provider:e}});return!!r&&r.testOk}async function o(){return(await t.db.providerConnection.findMany({where:{testOk:!0},select:{provider:!0},orderBy:{provider:"asc"}})).map(e=>e.provider)}async function a(){return t.db.providerConnection.findMany({select:{provider:!0,lastTestedAt:!0,testOk:!0,version:!0,mcpInstalled:!0,hooksInstalled:!0,skillsInstalled:!0,installLog:!0},orderBy:{provider:"asc"}})}(0,e.i(86708).ensureServerEntryExports)([n,s,i,o,a]),(0,r.registerServerReference)(n,"60e519ea9922ce3336e9cc3977672f3e8300cb184a",null),(0,r.registerServerReference)(s,"60c535a416fcd27602c881b19570b8e55379c4193c",null),(0,r.registerServerReference)(i,"40f4c938541bccabb35c15d0b4a49db739a9a081b7",null),(0,r.registerServerReference)(o,"0024cbbd4ab8cdbfb46ba61b073d255639a8fdec7c",null),(0,r.registerServerReference)(a,"000460f99e276edff232b7446c480e7b09c577b49e",null),e.s(["getConnectedProviders",0,o,"isProviderConnected",0,i,"markProviderConnected",0,n,"markProviderDisconnected",0,s])},89428,e=>{"use strict";var r=e.i(843793),t=e.i(279711);class n extends Error{code;provider;constructor(e,r,t){super(t),this.code=e,this.provider=r,this.name="AiProviderError"}}var s=e.i(932583);let i="claude",o="请到 Settings → Test Connection 测试该 Provider 后再使用(未注入的 CLI 不能被插槽选中)";async function a(e){return r.db.aiCapabilityConfig.findUnique({where:{slot:e}})}async function c(e){if(e){if(await (0,s.isProviderConnected)(e))return e;throw new n("CLI_NOT_FOUND",e,`Provider "${e}" 未连接:${o}`)}let r=await (0,s.getConnectedProviders)();if(0===r.length)throw new n("CLI_NOT_FOUND",i,`没有任何 AI Provider 已连接:${o}`);return r.includes(i)?i:r[0]}async function l(e){let r=await a(e),s=r?.model??void 0,i=await c(r?.provider??null),o=t.providerRegistry.get(i);if(!o)throw new n("CLI_NOT_FOUND",i,`Provider "${i}" 未注册`);let l=o.cli?.adapter;if(!l)throw new n("UNSUPPORTED_MODE",i,`Provider "${i}" 不支持 CLI 模式`);return{adapter:l,provider:o,model:s}}e.s(["resolveCliAdapter",0,l],89428)},482848,e=>{e.v(e=>Promise.resolve().then(()=>e(874533)))},268548,e=>{e.v(r=>Promise.all(["server/chunks/[externals]_node_util_0xr.y7p._.js"].map(r=>e.l(r))).then(()=>r(812057)))},144264,e=>{e.v(e=>Promise.resolve().then(()=>e(233405)))},534777,e=>{e.v(r=>Promise.all(["server/chunks/[externals]_util_0wtvqkc._.js"].map(r=>e.l(r))).then(()=>r(224361)))},200628,e=>{e.v(e=>Promise.resolve().then(()=>e(769310)))},217260,e=>{e.v(e=>Promise.resolve().then(()=>e(83721)))},507603,e=>{e.v(r=>Promise.all(["server/chunks/_06.mxka._.js"].map(r=>e.l(r))).then(()=>r(283373)))},136565,e=>{e.v(r=>Promise.all(["server/chunks/src_02ruq-1._.js"].map(r=>e.l(r))).then(()=>r(215624)))},260815,e=>{e.v(e=>Promise.resolve().then(()=>e(924868)))}];
|
|
3
|
-
|
|
4
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0.z8.oi._.js.map
|