tower-studio 0.2.32 → 0.2.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +30 -30
- package/.next/standalone/.next/server/app/_not-found/page.js +8 -7
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/adapters/test/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/browse-fs/route.js +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.nft.json +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.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.nft.json +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 +2 -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]/start/route.js +1 -1
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/start/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[taskId]/diff/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[taskId]/merge/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[taskId]/merge/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/missions/page/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/server/app/missions/page/server-reference-manifest.json +71 -71
- package/.next/standalone/.next/server/app/missions/page.js +8 -7
- package/.next/standalone/.next/server/app/missions/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/missions/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/onboarding/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/onboarding/page/server-reference-manifest.json +30 -30
- package/.next/standalone/.next/server/app/onboarding/page.js +8 -7
- package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +30 -30
- package/.next/standalone/.next/server/app/page.js +8 -7
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +47 -47
- package/.next/standalone/.next/server/app/settings/page.js +9 -8
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/server-reference-manifest.json +222 -138
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page.js +9 -8
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/server-reference-manifest.json +158 -134
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page.js +9 -8
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/server-reference-manifest.json +208 -100
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page.js +10 -7
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/server-reference-manifest.json +123 -63
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js +9 -8
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/server-reference-manifest.json +30 -30
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js +9 -8
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/server-reference-manifest.json +142 -118
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page.js +9 -8
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/server-reference-manifest.json +85 -85
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js +10 -9
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/workspaces/page/server-reference-manifest.json +50 -50
- package/.next/standalone/.next/server/app/workspaces/page.js +8 -7
- package/.next/standalone/.next/server/app/workspaces/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_0hrprmi.js +1 -1
- package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_0yp430z.js +3 -0
- package/.next/standalone/.next/server/chunks/{[externals]__12mj_bs._.js → [externals]__0o6dym7._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00llstz._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__01n7exm._.js +1 -1
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0kay2~d._.js → [root-of-the-server]__01yu.gw._.js} +3 -3
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__01_h-re._.js → [root-of-the-server]__05nz.tg._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__08u6wg.._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0d2japj._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fey.8j._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0j7565a._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0omyrab._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qif839._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~foo~5._.js +4 -0
- package/.next/standalone/.next/server/chunks/src_0bkvm8c._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_02llcit._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_0aowbzy._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0iu._[workspaceId]_projects_[projectId]_versions_version-timeline-client_tsx_07o_kyi._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0-tolks._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__004dmwv._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0ohx~.q._.js → [root-of-the-server]__00~jawi._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0mv64fw._.js → [root-of-the-server]__02ur64h._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0tjczqw._.js → [root-of-the-server]__04rp1ck._.js} +4 -4
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0bs_c.t._.js → [root-of-the-server]__05sv58d._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__05xg05r._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__061p5rc._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__062b.yt._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__06yx5l5._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0azyv7l._.js → [root-of-the-server]__07_o.al._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__093tt4a._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0hg-fwv._.js → [root-of-the-server]__09s~cme._.js} +3 -3
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0-b8f6d._.js → [root-of-the-server]__0_1zewr._.js} +3 -3
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__037nnpo._.js → [root-of-the-server]__0_i7zpd._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0almni9._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b.ej5q._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bgr0ql._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0wm~yai._.js → [root-of-the-server]__0f88ua~._.js} +3 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0guqcva._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0gzafdq._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0j8~mdg._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0jymb~t._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0u7n6kw._.js → [root-of-the-server]__0k-mx8r._.js} +4 -4
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0ymqgu_._.js → [root-of-the-server]__0lozqxc._.js} +4 -4
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0p8otw1._.js → [root-of-the-server]__0lz4wdp._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0d76zys._.js → [root-of-the-server]__0m7ydqb._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__06ubi1g._.js → [root-of-the-server]__0m80~su._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__127.0d7._.js → [root-of-the-server]__0na8eiv._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0p0te97._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qnzkj3._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qqbb31._.js +43 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0scj6ed._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0siyg1p._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s~4y3y._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0t6f4lq._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0th-t1a._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0wofia_._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0wt83kv._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0y~ooou._.js +3 -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]__0~_qwfy._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0-~9em3._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_00t6138._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/_02encue._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/_033p42a._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_041l0cv._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0644da7._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_070t_mh._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0np9y-t._.js → _07fnvnm._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_09n0s9b._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_079_ku8._.js → _0_hnt09._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0cj9a7y._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0clhm~f._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/_0cxhub8._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0vcbjph._.js → _0e-zyn2._.js} +4 -4
- package/.next/standalone/.next/server/chunks/ssr/_0eca65n._.js +7 -0
- package/.next/standalone/.next/server/chunks/ssr/_0hchxpl._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/_0hh17jg._.js +17 -0
- package/.next/standalone/.next/server/chunks/ssr/_0hu0tyg._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/_0k4f1.-._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0tf~vm8._.js → _0k9b94s._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0l3l_d6._.js +43 -0
- package/.next/standalone/.next/server/chunks/ssr/_0mpce0d._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/_0muaopo._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0w2xtk9._.js → _0mzwe90._.js} +4 -4
- package/.next/standalone/.next/server/chunks/ssr/_0n1l7yo._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0xl~whi._.js → _0n54odq._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0nk7qd4._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0lw1tq2._.js → _0px0igh._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0rdyrfd._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0_vq_9m._.js → _0rehvm-._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0retby~._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0wbcp88._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0y.q-vg._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0z2tba8._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0fb1op1._.js → _12yox4f._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_03r.9go._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_0djxlqx._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_0eufeyj._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_actions_agent-actions_ts_0~wc.sy._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_actions_file-actions_ts_0gcvqwm._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_missions_missions-client_tsx_11429lj._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_onboarding_page_tsx_0xf7hpz._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_settings_page_tsx_0h9v7dr._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_assets_assets-page-client_tsx_0wyzpam._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_board-page-client_tsx_0gips66._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_notes_notes-page-client_tsx_10gyo3v._.js +3 -0
- 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_09vospx._.js → src_lib_01xtio2._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_lib_0-t3s4k._.js → src_lib_03p6skw._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_lib_007-dd1._.js → src_lib_05mu4f0._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_lib_09bjxpu._.js → src_lib_06nbc41._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_lib_06okbb2._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0741dos._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0cbuy0_._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0e27xy7._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0n5-vk5._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0rk2hla._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0t5xz2y._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0u5_gf2._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0v6s6se._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_constants_ts_0_7xt06._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +651 -495
- package/.next/standalone/.next/static/chunks/0.65.u3zhwau~.js +12 -0
- package/.next/standalone/.next/static/chunks/0.nsmn6shzidu.js +2 -0
- package/.next/standalone/.next/static/chunks/01yoibobkdz3x.js +1 -0
- package/.next/standalone/.next/static/chunks/02~4b.8ir68sf.js +1 -0
- package/.next/standalone/.next/static/chunks/04l-.s3_om9y..js +1 -0
- package/.next/standalone/.next/static/chunks/074pl-db8hd7n.js +1 -0
- package/.next/standalone/.next/static/chunks/08gmt7zfmi07i.js +1 -0
- package/.next/standalone/.next/static/chunks/09qqx5e6_m69a.js +1 -0
- package/.next/standalone/.next/static/chunks/0bq-a.iqnlign.js +1 -0
- package/.next/standalone/.next/static/chunks/0cwsb9~cex3mr.js +5 -0
- package/.next/standalone/.next/static/chunks/0d.tt7u.5fs~f.js +1 -0
- package/.next/standalone/.next/static/chunks/0f2~z.xnkw0.u.js +1 -0
- package/.next/standalone/.next/static/chunks/0gr0_ba-400rj.js +1 -0
- package/.next/standalone/.next/static/chunks/0gyk.it.hj68o.js +1 -0
- package/.next/standalone/.next/static/chunks/0iv8gbv-ghx4_.js +1 -0
- package/.next/standalone/.next/static/chunks/0oxib0ew0i6jf.js +1 -0
- package/.next/standalone/.next/static/chunks/0p40_9yteagn~.js +1 -0
- package/.next/standalone/.next/static/chunks/0p4w5b_p_yju8.js +1 -0
- package/.next/standalone/.next/static/chunks/0phbm9we70sdr.js +1 -0
- package/.next/standalone/.next/static/chunks/0qonpqhvpg-tt.js +1 -0
- package/.next/standalone/.next/static/chunks/0so6swvdpools.js +1 -0
- package/.next/standalone/.next/static/chunks/0stxf.y~zqvv8.css +1 -0
- package/.next/standalone/.next/static/chunks/0t44qy6r~z0bj.js +1 -0
- package/.next/standalone/.next/static/chunks/{0g7kwivg0c5zn.js → 0uu4dne-yscov.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0o.a8t_h5vwy-.js → 0wxk387~-lxu1.js} +3 -3
- package/.next/standalone/.next/static/chunks/0z3mmfc8sv-51.js +5 -0
- package/.next/standalone/.next/static/chunks/0~uo_7-sxehxf.js +1 -0
- package/.next/standalone/.next/static/chunks/10mwqzqdpi9d5.js +1 -0
- package/.next/standalone/.next/static/chunks/11.gxz8y59q9x.js +1 -0
- package/.next/standalone/.next/static/chunks/11z9-ri~78bsr.js +2 -0
- package/.next/standalone/.next/static/chunks/14ynp8ao1ictj.js +1 -0
- package/.next/standalone/.next/static/chunks/15bcjdgsecs_j.js +1 -0
- package/.next/standalone/.next/static/chunks/{13iipzi9xw35f.js → 15qvpc33og_et.js} +1 -1
- package/.next/standalone/.next/static/chunks/16ubws05gi6md.js +1 -0
- package/.next/standalone/.next/static/chunks/16v1p30jl74cu.js +1 -0
- package/.next/standalone/package.json +5 -1
- package/bin/tower.mjs +58 -18
- package/dist/mcp-server.cjs +25102 -21098
- package/package.json +5 -1
- package/prisma/schema.prisma +16 -0
- package/scripts/migrations/0001-insight-category.ts +22 -0
- package/scripts/run-migrations.ts +73 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0122.hq._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0541-er._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0clvf~t._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0gk6ftq._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/12k._sonner_dist_index_mjs_0-vmpk5._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__01pn3ol._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__02p4lry._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__07ptf-z._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b77ayk._.js +0 -47
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0cle18b._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0dzfucv._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0e25s-_._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0lx7sf8._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pik08u._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0rara9.._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0rv7-_r._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0t0.u9.._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0uq_0mc._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12w_sm_._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1307ll-._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0-frleg._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0-sia69._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/_0.sfgns._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0.y2of~._.js +0 -7
- package/.next/standalone/.next/server/chunks/ssr/_04ia97a._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0533im8._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/_06~9axc._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0_kfemp._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0a5f4n.._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0bkb_.9._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0ex2yo6._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0fuoov5._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0ia4gik._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0jg.s-g._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0kqe7k7._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0mci_e0._.js +0 -7
- package/.next/standalone/.next/server/chunks/ssr/_0njo37o._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/_0qd7u-y._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/_0r5h7cr._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/_0s02eu9._.js +0 -43
- package/.next/standalone/.next/server/chunks/ssr/_0tb5sv.._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0ttg7a2._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0ueyys5._.js +0 -17
- package/.next/standalone/.next/server/chunks/ssr/_0vl82nb._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0vz_pgd._.js +0 -7
- package/.next/standalone/.next/server/chunks/ssr/src_075s.rk._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0dbdb7l._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0dypzt_._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0f948rt._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0h1rnc.._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0lcvt1c._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0mao-of._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0qlnl~c._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0qt5bft._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0z75cue._.js +0 -3
- package/.next/standalone/.next/static/chunks/01iha~qq-s2iq.js +0 -1
- package/.next/standalone/.next/static/chunks/024-z6hhx6kj8.js +0 -1
- package/.next/standalone/.next/static/chunks/02cdl9l647nfw.js +0 -5
- package/.next/standalone/.next/static/chunks/02hkeaf1dqmhz.js +0 -1
- package/.next/standalone/.next/static/chunks/05qdpgnpb_7mk.js +0 -1
- package/.next/standalone/.next/static/chunks/076x3dc258jv8.js +0 -1
- package/.next/standalone/.next/static/chunks/08fee4dmmdj39.js +0 -5
- package/.next/standalone/.next/static/chunks/08hbrv30ik~i9.js +0 -1
- package/.next/standalone/.next/static/chunks/0b6cq1pd_clzr.js +0 -2
- package/.next/standalone/.next/static/chunks/0cx03gmt.9kfo.js +0 -1
- package/.next/standalone/.next/static/chunks/0dsr03qh0epy8.js +0 -1
- package/.next/standalone/.next/static/chunks/0ktahv77jdq60.css +0 -1
- package/.next/standalone/.next/static/chunks/0m.k-orls2qu4.js +0 -1
- package/.next/standalone/.next/static/chunks/0mov-lr-7u237.js +0 -5
- package/.next/standalone/.next/static/chunks/0n52vvco8hy2h.js +0 -1
- package/.next/standalone/.next/static/chunks/0nkn227~1tu4_.js +0 -1
- package/.next/standalone/.next/static/chunks/0nxf2s5ppbm.b.js +0 -1
- package/.next/standalone/.next/static/chunks/0n~h~45imnm42.js +0 -1
- package/.next/standalone/.next/static/chunks/0qmzg_a-~~1-1.js +0 -2
- package/.next/standalone/.next/static/chunks/0s86miqs3h9gi.js +0 -1
- package/.next/standalone/.next/static/chunks/0serb6jug2wgz.js +0 -1
- package/.next/standalone/.next/static/chunks/0w6~b9luhbk1x.js +0 -1
- package/.next/standalone/.next/static/chunks/0wyjnhk_5g3.8.js +0 -12
- package/.next/standalone/.next/static/chunks/0x.izf3-isfsq.js +0 -1
- package/.next/standalone/.next/static/chunks/0x.tfkgl9nu-f.js +0 -1
- package/.next/standalone/.next/static/chunks/0y_s_afcrfp3_.js +0 -1
- package/.next/standalone/.next/static/chunks/0~moqlrzya~z_.js +0 -5
- package/.next/standalone/.next/static/chunks/116ssnh5k8ad9.js +0 -1
- package/.next/standalone/.next/static/chunks/13.pi0v53g-4n.js +0 -1
- package/.next/standalone/.next/static/chunks/13dz~n5.w6hta.js +0 -1
- package/.next/standalone/.next/static/chunks/15550tahnp.5j.js +0 -1
- package/.next/standalone/.next/static/chunks/17.p0kyu6y24w.js +0 -1
- /package/.next/standalone/.next/static/{v4Xp8QqFHgGyfY7YcmgRm → CvoaJSaxJicoNzSHfMek0}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{v4Xp8QqFHgGyfY7YcmgRm → CvoaJSaxJicoNzSHfMek0}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{v4Xp8QqFHgGyfY7YcmgRm → CvoaJSaxJicoNzSHfMek0}/_ssgManifest.js +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
module.exports=[976268,a=>{"use strict";let b=(0,a.i(711796).default)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);a.s(["default",0,b])},607884,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(553798),e=a.i(634910),f=a.i(607219),g=a.i(774881),h=a.i(690251),i=a.i(975231),j=a.i(336771),k=a.i(91756),l=a.i(881107),m=a.i(350739),n=a.i(347165),o=a.i(711796);let p=(0,o.default)("gauge",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);var q=a.i(335732),r=a.i(269876),s=a.i(814574),t=a.i(785259),u=a.i(699570),v=a.i(866718),w=a.i(780410);let x=(0,w.createServerReference)("402bed4755ff79e2867db3780af837f50e5a57dfca",w.callServer,void 0,w.findSourceMapURL,"createWorkspace"),y=(0,w.createServerReference)("605776670179f7e81aa8dc4c1efdf239d4bcee2b24",w.callServer,void 0,w.findSourceMapURL,"updateWorkspace"),z=(0,w.createServerReference)("4007aed739a0ce03f191023d9d814279807cc7e067",w.callServer,void 0,w.findSourceMapURL,"deleteWorkspace"),A=(0,w.createServerReference)("40439232ece3bb831138972c38d756e8e8a05b1ac6",w.callServer,void 0,w.findSourceMapURL,"reorderWorkspaces");var B=a.i(90777);let C=(0,w.createServerReference)("403571b0157629e00faaad8d6db072c4b80039727f",w.callServer,void 0,w.findSourceMapURL,"createLabel"),D=(0,w.createServerReference)("404202ed461e1dc3979fcf4b4e3f43e192015924f8",w.callServer,void 0,w.findSourceMapURL,"deleteLabel");var E=a.i(951192),F=a.i(952313),G=a.i(643228),H=a.i(859103),I=a.i(514126);let J=["📋","🚀","🎯","💡","🔧","📦","🎨","📊","🔬","🌟","📝","🏗️"];function K({workspaces:a}){let h,i=(0,d.useRouter)(),j=(0,d.usePathname)(),{t:l}=(0,E.useI18n)(),[o,q]=(0,c.useState)(!1);(0,c.useEffect)(()=>{"true"===localStorage.getItem("sidebar-collapsed")&&q(!0)},[]);let[s,v]=(0,c.useState)(!1),[w,B]=(0,c.useState)(!1),[C,D]=(0,c.useState)(!1),[I,N]=(0,c.useState)(null),[P,Q]=(0,c.useState)(""),[R,S]=(0,c.useState)(J[0]),[T,U]=(0,c.useState)(null),[V,W]=(0,c.useState)(a);(0,c.useEffect)(()=>{W(a)},[a]);let X=(0,G.useSensors)((0,G.useSensor)(G.PointerSensor,{activationConstraint:{distance:8}})),Y=(0,c.useCallback)(b=>{let{active:c,over:d}=b;if(!d||c.id===d.id)return;let e=V.findIndex(a=>a.id===c.id),f=V.findIndex(a=>a.id===d.id);if(-1===e||-1===f)return;let g=(0,H.arrayMove)(V,e,f);W(g),A(g.map(a=>a.id)).then(()=>i.refresh()).catch(()=>{W(a),F.toast.error(l("sidebar.reorderError"))})},[V,a,i,l]),Z=j.split("/workspaces/")[1]?.split("/")[0],$=(0,c.useCallback)(()=>{q(a=>{let b=!a;return localStorage.setItem("sidebar-collapsed",String(b)),b})},[]),_=(0,c.useCallback)(async()=>{if(!P.trim())return;let a=await x({name:P.trim(),description:R});Q(""),S(J[0]),v(!1),i.refresh(),i.push(`/workspaces/${a.id}`)},[P,R,i]),aa=(0,c.useCallback)(async()=>{P.trim()&&T&&(await y(T,{name:P.trim(),description:R}),Q(""),B(!1),U(null),i.refresh())},[P,R,T,i]),ab=(0,c.useCallback)(a=>{U(a.id),Q(a.name),S(a.description&&J.includes(a.description)?a.description:J[0]),B(!0)},[]),ac=(0,c.useCallback)(async(b,c)=>{if(a.length<=1)return void F.toast.error(l("sidebar.lastWorkspaceError"));if(confirm(l("sidebar.deleteConfirm",{name:c})))try{await z(b),i.refresh(),Z===b&&i.push("/workspaces")}catch{F.toast.error(l("sidebar.lastWorkspaceError"))}},[Z,i,l,a.length]),ad=(0,c.useCallback)(a=>{N(a),D(!0)},[]),ae=a=>a.description&&J.includes(a.description)?a.description:a.name.charAt(0).toUpperCase();if(o){let c;return(0,b.jsxs)("aside",{className:"flex h-screen w-14 flex-col items-center border-r border-border bg-sidebar py-3",children:[(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)("button",{onClick:$,className:"mb-4 flex h-9 w-9 items-center justify-center rounded-lg bg-primary/10 ring-1 ring-primary/20 transition-transform hover:scale-105"}),children:(0,b.jsx)("img",{src:"/logo.png",alt:"Tower",className:"h-6 w-6 rounded"})}),(0,b.jsx)(t.TooltipContent,{side:"right",sideOffset:8,children:l("sidebar.expand")})]}),(0,b.jsx)(r.ScrollArea,{className:"flex-1 min-h-0",children:(0,b.jsxs)("div",{className:"flex flex-col items-center gap-1 px-0.5 pt-1",children:[a.map(a=>{let c=Z===a.id,d=ae(a);return(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)("button",{onClick:()=>{c||i.push(`/workspaces/${a.id}`)},className:`flex h-9 w-9 items-center justify-center rounded-lg transition-all ${c?"ring-1 ring-primary/20 text-foreground cursor-default":"text-muted-foreground hover:text-foreground cursor-pointer"}`}),children:(0,b.jsx)("span",{className:"flex h-7 w-7 items-center justify-center rounded-md bg-muted text-sm",children:J.includes(d)?d:(0,b.jsx)("span",{className:"text-xs font-semibold",children:d})})}),(0,b.jsx)(t.TooltipContent,{side:"right",sideOffset:8,children:a.name})]},a.id)}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)("button",{"data-tour":"create-workspace",onClick:()=>v(!0),className:"flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent hover:text-foreground"}),children:(0,b.jsx)(g.Plus,{className:"h-4 w-4"})}),(0,b.jsx)(t.TooltipContent,{side:"right",sideOffset:8,children:l("sidebar.newWorkspace")})]})]})}),(0,b.jsxs)("div",{className:"mt-2 flex flex-col items-center gap-1",children:[(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)("button",{onClick:()=>i.push("/missions"),className:`rounded-lg p-2 transition-colors ${"/missions"===j?"text-foreground bg-accent":"text-muted-foreground hover:bg-accent hover:text-foreground"}`}),children:(0,b.jsx)(p,{className:"h-4 w-4"})}),(0,b.jsx)(t.TooltipContent,{side:"right",sideOffset:8,children:l("missions.navLabel")})]}),(c=Z||a[0]?.id)?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)("button",{onClick:()=>i.push(`/workspaces/${c}/notes`),className:`rounded-lg p-2 transition-colors ${j.includes("/notes")?"text-foreground bg-accent":"text-muted-foreground hover:bg-accent hover:text-foreground"}`}),children:(0,b.jsx)(m.FileText,{className:"h-4 w-4"})}),(0,b.jsx)(t.TooltipContent,{side:"right",sideOffset:8,children:l("sidebar.notes")})]}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)("button",{onClick:()=>i.push(`/workspaces/${c}/assets`),className:`rounded-lg p-2 transition-colors ${j.includes("/assets")?"text-foreground bg-accent":"text-muted-foreground hover:bg-accent hover:text-foreground"}`}),children:(0,b.jsx)(n.FolderOpen,{className:"h-4 w-4"})}),(0,b.jsx)(t.TooltipContent,{side:"right",sideOffset:8,children:l("sidebar.assets")})]}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)("button",{onClick:()=>i.push(`/workspaces/${c}/archive`),className:`rounded-lg p-2 transition-colors ${j.includes("/archive")?"text-foreground bg-accent":"text-muted-foreground hover:bg-accent hover:text-foreground"}`}),children:(0,b.jsx)(f.Archive,{className:"h-4 w-4"})}),(0,b.jsx)(t.TooltipContent,{side:"right",sideOffset:8,children:l("sidebar.archive")})]})]}):null]}),(0,b.jsx)(M,{open:s,onOpenChange:v,title:l("workspace.create"),name:P,onNameChange:Q,icon:R,onIconChange:S,onSubmit:_,submitLabel:l("common.create"),nameLabel:l("workspace.name"),iconLabel:l("workspace.icon"),namePlaceholder:l("workspace.namePlaceholder"),cancelLabel:l("common.cancel")})]})}return(0,b.jsxs)("aside",{className:"noise relative flex h-screen w-56 flex-col border-r border-border bg-sidebar",children:[(0,b.jsxs)("div",{className:"relative z-10 flex items-center gap-3 px-4 py-4",children:[(0,b.jsx)("img",{src:"/logo.png",alt:"Tower",className:"h-9 w-9 rounded-lg"}),(0,b.jsxs)("div",{className:"flex-1",children:[(0,b.jsx)("div",{className:"text-sm font-semibold tracking-tight text-foreground",children:"Tower"}),(0,b.jsx)("div",{className:"text-[10px] font-medium uppercase tracking-widest text-muted-foreground",children:"Studio"})]}),(0,b.jsx)(u.Button,{variant:"ghost",size:"icon-xs",onClick:$,className:"text-muted-foreground",title:l("sidebar.collapse"),children:(0,b.jsx)(k.ChevronsLeft,{className:"h-4 w-4"})})]}),(0,b.jsxs)("div",{className:"relative z-10 flex items-center justify-between px-4 py-2",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground",children:l("sidebar.workspace")}),(0,b.jsx)(u.Button,{variant:"ghost",size:"icon-sm",className:"text-muted-foreground","data-tour":"create-workspace",onClick:()=>{Q(""),S(J[0]),v(!0)},title:l("sidebar.newWorkspace"),children:(0,b.jsx)(g.Plus,{className:"h-3.5 w-3.5"})})]}),(0,b.jsx)(r.ScrollArea,{className:"relative z-10 mt-2 flex-1 min-h-0",children:(0,b.jsx)("div",{className:"px-2 py-1",children:(0,b.jsx)(G.DndContext,{id:"workspace-sidebar",sensors:X,collisionDetection:G.closestCenter,onDragEnd:Y,children:(0,b.jsx)(H.SortableContext,{items:V.map(a=>a.id),strategy:H.verticalListSortingStrategy,children:V.map(a=>(0,b.jsx)(L,{ws:a,isActive:Z===a.id,icon:ae(a),disableDelete:V.length<=1,t:l,onSelect:()=>{Z!==a.id&&i.push(`/workspaces/${a.id}`)},onEdit:()=>ab(a),onManageLabels:()=>ad(a.id),onDelete:()=>ac(a.id,a.name)},a.id))})})})}),(0,b.jsxs)(e.default,{href:"/missions",className:`relative z-10 flex items-center gap-2 border-t border-border px-4 py-3 text-[11px] cursor-pointer transition-colors ${"/missions"===j?"text-foreground":"text-muted-foreground hover:text-foreground"}`,children:[(0,b.jsx)(p,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:l("missions.navLabel")})]}),(h=Z||a[0]?.id)?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(e.default,{href:`/workspaces/${h}/notes`,className:"relative z-10 flex items-center gap-2 border-t border-border px-4 py-3 text-[11px] text-muted-foreground cursor-pointer hover:text-foreground transition-colors",children:[(0,b.jsx)(m.FileText,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:l("sidebar.notes")})]}),(0,b.jsxs)(e.default,{href:`/workspaces/${h}/assets`,className:"relative z-10 flex items-center gap-2 px-4 py-3 text-[11px] text-muted-foreground cursor-pointer hover:text-foreground transition-colors",children:[(0,b.jsx)(n.FolderOpen,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:l("sidebar.assets")})]}),(0,b.jsxs)(e.default,{href:`/workspaces/${h}/archive`,className:"relative z-10 flex items-center gap-2 px-4 py-3 text-[11px] text-muted-foreground cursor-pointer hover:text-foreground transition-colors",children:[(0,b.jsx)(f.Archive,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:l("sidebar.archive")})]})]}):null,(0,b.jsx)(M,{open:s,onOpenChange:v,title:l("workspace.create"),name:P,onNameChange:Q,icon:R,onIconChange:S,onSubmit:_,submitLabel:l("common.create"),nameLabel:l("workspace.name"),iconLabel:l("workspace.icon"),namePlaceholder:l("workspace.namePlaceholder"),cancelLabel:l("common.cancel")}),(0,b.jsx)(M,{open:w,onOpenChange:a=>{B(a),a||U(null)},title:l("workspace.edit"),name:P,onNameChange:Q,icon:R,onIconChange:S,onSubmit:aa,submitLabel:l("common.save"),nameLabel:l("workspace.name"),iconLabel:l("workspace.icon"),namePlaceholder:l("workspace.namePlaceholder"),cancelLabel:l("common.cancel")}),I&&(0,b.jsx)(O,{open:C,onOpenChange:a=>{D(a),a||N(null)},workspaceId:I})]})}function L({ws:a,isActive:c,icon:d,disableDelete:e,t:f,onSelect:g,onEdit:k,onManageLabels:m,onDelete:n}){var o;let p,r,s,{attributes:t,listeners:u,setNodeRef:v,transform:w,transition:x,isDragging:y}=(0,H.useSortable)({id:a.id}),z={transform:I.CSS.Transform.toString(w),transition:x,opacity:y?.4:1};return(0,b.jsxs)("div",{ref:v,style:z,...t,...u,className:`group relative flex touch-none items-center rounded-lg transition-all ${c?"bg-accent ring-1 ring-primary/15":"hover:bg-accent/60"}`,children:[(0,b.jsxs)("button",{onClick:g,className:`flex flex-1 items-center gap-2.5 px-3 py-2.5 text-left ${c?"cursor-default":"cursor-pointer"}`,children:[(0,b.jsx)("span",{className:"flex h-7 w-7 items-center justify-center rounded-md bg-muted text-sm",children:J.includes(d)?d:(0,b.jsx)("span",{className:"text-xs font-semibold text-muted-foreground",children:d})}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsx)("div",{className:`truncate text-sm font-medium ${c?"text-foreground":"text-secondary-foreground"}`,children:a.name}),(0,b.jsx)("div",{className:"text-[11px] text-muted-foreground",children:(o=a.updatedAt,r=Math.floor((p=Date.now()-new Date(o).getTime())/6e4),s=Math.floor(p/36e5),r<60?`${r}m ago`:s<24?`${s}h ago`:`${Math.floor(s/24)}d ago`)})]})]}),(0,b.jsxs)(q.DropdownMenu,{children:[(0,b.jsx)(q.DropdownMenuTrigger,{render:(0,b.jsx)("button",{className:"mr-2 rounded-md p-1 text-muted-foreground opacity-0 transition-all hover:bg-background hover:text-foreground group-hover:opacity-100",onClick:a=>a.stopPropagation()}),children:(0,b.jsx)(j.MoreHorizontal,{className:"h-3.5 w-3.5"})}),(0,b.jsxs)(q.DropdownMenuContent,{align:"start",side:"right",children:[(0,b.jsxs)(q.DropdownMenuItem,{onClick:k,children:[(0,b.jsx)(h.Pencil,{className:"mr-2 h-3.5 w-3.5"}),f("sidebar.rename")]}),(0,b.jsxs)(q.DropdownMenuItem,{onClick:m,children:[(0,b.jsx)(l.Tag,{className:"mr-2 h-3.5 w-3.5"}),f("sidebar.manageLabels")]}),(0,b.jsxs)(q.DropdownMenuItem,{className:e?"text-muted-foreground opacity-50":"text-rose-400",disabled:e,onClick:n,children:[(0,b.jsx)(i.Trash2,{className:"mr-2 h-3.5 w-3.5"}),f("sidebar.delete")]})]})]})]})}function M({open:a,onOpenChange:c,title:d,name:e,onNameChange:f,icon:g,onIconChange:h,onSubmit:i,submitLabel:j,nameLabel:k,iconLabel:l,namePlaceholder:m,cancelLabel:n}){return(0,b.jsx)(s.Dialog,{open:a,onOpenChange:c,disablePointerDismissal:!0,children:(0,b.jsxs)(s.DialogContent,{className:"sm:max-w-sm",children:[(0,b.jsx)(s.DialogHeader,{children:(0,b.jsx)(s.DialogTitle,{children:d})}),(0,b.jsxs)("div",{className:"space-y-4 py-2",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:k}),(0,b.jsx)(v.Input,{placeholder:m,value:e,onChange:a=>f(a.target.value),onKeyDown:a=>"Enter"===a.key&&a.preventDefault(),className:"mt-1.5"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:l}),(0,b.jsx)("div",{className:"mt-1.5 grid grid-cols-6 gap-1.5",children:J.map(a=>(0,b.jsx)("button",{onClick:()=>h(a),className:`flex h-10 w-10 items-center justify-center rounded-lg text-lg transition-all ${g===a?"bg-primary/15 ring-2 ring-primary/30 scale-110":"bg-muted hover:bg-accent"}`,children:a},a))})]})]}),(0,b.jsxs)(s.DialogFooter,{children:[(0,b.jsx)(u.Button,{variant:"outline",onClick:()=>c(!1),children:n}),(0,b.jsx)(u.Button,{onClick:i,disabled:!e.trim(),className:"bg-primary/10 text-primary ring-1 ring-primary/20 hover:bg-primary/15",children:j})]})]})})}let N=["#3b82f6","#ef4444","#f59e0b","#10b981","#8b5cf6","#ec4899","#06b6d4","#f97316"];function O({open:a,onOpenChange:d,workspaceId:e}){let{t:f}=(0,E.useI18n)(),[g,h]=(0,c.useState)([]),[i,j]=(0,c.useState)(""),[k,l]=(0,c.useState)(N[0]);(0,c.useEffect)(()=>{a&&(0,B.getLabelsForWorkspace)(e).then(h)},[a,e]);let m=async()=>{i.trim()&&(await C({name:i.trim(),color:k,workspaceId:e}),h(await (0,B.getLabelsForWorkspace)(e)),j(""))},n=async a=>{await D(a),h(b=>b.filter(b=>b.id!==a))};return(0,b.jsx)(s.Dialog,{open:a,onOpenChange:d,disablePointerDismissal:!0,children:(0,b.jsxs)(s.DialogContent,{className:"sm:max-w-sm",children:[(0,b.jsx)(s.DialogHeader,{children:(0,b.jsx)(s.DialogTitle,{children:f("label.manage")})}),(0,b.jsxs)("div",{className:"space-y-3 py-2",children:[g.map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"h-3 w-3 rounded-full",style:{backgroundColor:a.color}}),(0,b.jsx)("span",{className:"flex-1 text-sm text-foreground",children:a.name}),a.isBuiltin?(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:f("label.builtin")}):(0,b.jsx)("button",{onClick:()=>n(a.id),className:"text-xs text-rose-400 hover:text-rose-300",children:f("common.delete")})]},a.id)),(0,b.jsxs)("div",{className:"border-t border-border pt-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(v.Input,{placeholder:f("label.name"),value:i,onChange:a=>j(a.target.value),onKeyDown:a=>"Enter"===a.key&&a.preventDefault(),className:"flex-1 h-8"}),(0,b.jsx)(u.Button,{size:"sm",onClick:m,disabled:!i.trim(),className:"bg-primary/10 text-primary ring-1 ring-primary/20 hover:bg-primary/15",children:f("label.add")})]}),(0,b.jsx)("div",{className:"mt-2 flex gap-1.5",children:N.map(a=>(0,b.jsx)("button",{onClick:()=>l(a),className:`h-5 w-5 rounded-full transition-all ${k===a?"ring-2 ring-offset-2 ring-offset-background ring-foreground/30 scale-110":""}`,style:{backgroundColor:a}},a))})]})]})]})})}var P=a.i(940271),Q=a.i(573242),R=a.i(369289);let S=(0,o.default)("command",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]);var T=a.i(851378);let U=(0,o.default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);var V=a.i(761052),W=a.i(86354);a.s([],516474),a.i(516474);var X=a.i(213200),Y=a.i(862306);let Z=c.createContext(void 0);function $(){let a=c.useContext(Z);if(void 0===a)throw Error((0,Y.default)(13));return a}let _={imageLoadingStatus:()=>null},aa=c.forwardRef(function(a,d){let{className:e,render:f,...g}=a,[h,i]=c.useState("idle"),j=c.useMemo(()=>({imageLoadingStatus:h,setImageLoadingStatus:i}),[h,i]),k=(0,X.useRenderElement)("span",a,{state:{imageLoadingStatus:h},ref:d,props:g,stateAttributesMapping:_});return(0,b.jsx)(Z.Provider,{value:j,children:k})});var ab=a.i(74686),ac=a.i(830067),ad=a.i(398312),ae=a.i(380562),af=a.i(904531),ag=a.i(535011);let ah={..._,...ae.transitionStatusMapping},ai=c.forwardRef(function(a,b){let{className:d,render:e,onLoadingStatusChange:f,referrerPolicy:g,crossOrigin:h,...i}=a,j=$(),k=function(a,{referrerPolicy:b,crossOrigin:d}){let[e,f]=c.useState("idle");return(0,ac.useIsoLayoutEffect)(()=>{if(!a)return f("error"),ag.NOOP;let c=!0,e=new window.Image,g=a=>()=>{c&&f(a)};return f("loading"),e.onload=g("loaded"),e.onerror=g("error"),b&&(e.referrerPolicy=b),e.crossOrigin=d??null,e.src=a,()=>{c=!1}},[a,d,b]),e}(a.src,{referrerPolicy:g,crossOrigin:h}),l="loaded"===k,{mounted:m,transitionStatus:n,setMounted:o}=(0,af.useTransitionStatus)(l),p=c.useRef(null),q=(0,ab.useStableCallback)(a=>{f?.(a),j.setImageLoadingStatus(a)});(0,ac.useIsoLayoutEffect)(()=>{"idle"!==k&&q(k)},[k,q]),(0,ad.useOpenChangeComplete)({open:l,ref:p,onComplete(){l||o(!1)}});let r=(0,X.useRenderElement)("img",a,{state:{imageLoadingStatus:k,transitionStatus:n},ref:[b,p],props:i,stateAttributesMapping:ah,enabled:m});return m?r:null});var aj=a.i(102934);let ak=c.forwardRef(function(a,b){let{className:d,render:e,delay:f,...g}=a,{imageLoadingStatus:h}=$(),[i,j]=c.useState(void 0===f),k=(0,aj.useTimeout)();return c.useEffect(()=>(void 0!==f&&k.start(f,()=>j(!0)),k.clear),[k,f]),(0,X.useRenderElement)("span",a,{state:{imageLoadingStatus:h},ref:b,props:g,stateAttributesMapping:_,enabled:"loaded"!==h&&i})});a.s(["Fallback",0,ak,"Image",0,ai,"Root",0,aa],991134);var al=a.i(991134),al=al,am=a.i(368114);function an({className:a,size:c="default",...d}){return(0,b.jsx)(al.Root,{"data-slot":"avatar","data-size":c,className:(0,am.cn)("group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten",a),...d})}function ao({className:a,...c}){return(0,b.jsx)(al.Fallback,{"data-slot":"avatar-fallback",className:(0,am.cn)("flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs",a),...c})}let ap=(0,o.default)("folder-kanban",[["path",{d:"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z",key:"1fr9dc"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M12 10v2",key:"hh53o1"}],["path",{d:"M16 10v6",key:"1d6xys"}]]);var aq=a.i(577565);let ar=(0,o.default)("sticky-note",[["path",{d:"M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z",key:"1dfntj"}],["path",{d:"M15 3v5a1 1 0 0 0 1 1h5",key:"6s6qgf"}]]),as=(0,o.default)("package-2",[["path",{d:"M12 3v6",key:"1holv5"}],["path",{d:"M16.76 3a2 2 0 0 1 1.8 1.1l2.23 4.479a2 2 0 0 1 .21.891V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V9.472a2 2 0 0 1 .211-.894L5.45 4.1A2 2 0 0 1 7.24 3z",key:"187q7i"}],["path",{d:"M3.054 9.013h17.893",key:"grwhos"}]]);var at=a.i(54384);let au=(0,w.createServerReference)("609fd24cefe3230b2272c1c8c2db26ea3e5a4a6234",w.callServer,void 0,w.findSourceMapURL,"globalSearch");var av=a.i(105247);let aw=[{id:"all",key:"search.all",icon:Q.Search},{id:"task",key:"search.task",icon:m.FileText},{id:"project",key:"search.project",icon:ap},{id:"repository",key:"search.repository",icon:aq.GitBranch},{id:"note",key:"search.note",icon:ar},{id:"asset",key:"search.asset",icon:as}],ax=["task","project","repository","note","asset"],ay={task:"search.task",project:"search.project",repository:"search.repository",note:"search.note",asset:"search.asset"};function az({result:a,onSelect:c}){let d=aw.find(b=>b.id===a.type)?.icon??m.FileText;return(0,b.jsxs)("button",{onClick:()=>c(a),className:"flex w-full items-center gap-3 border-b border-border/30 px-4 py-3 text-left transition-colors hover:bg-accent last:border-b-0",children:[(0,b.jsx)("div",{className:"rounded-md bg-muted p-1.5",children:(0,b.jsx)(d,{className:"h-3.5 w-3.5 text-muted-foreground"})}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsx)("div",{className:"text-sm font-medium text-foreground truncate",children:a.title}),(0,b.jsx)("div",{className:"text-xs text-muted-foreground truncate",children:a.subtitle}),a.snippet&&(0,b.jsx)("div",{className:"text-xs text-muted-foreground/70 truncate mt-0.5",children:a.snippet})]})]})}function aA({open:a,onOpenChange:e}){let f,{t:g}=(0,E.useI18n)(),h=(0,d.useRouter)(),[i,j]=(0,c.useState)(""),[k,l]=(0,c.useState)("all"),[m,n]=(0,c.useState)([]),[o,p]=(0,c.useState)(!1),[q,t]=(0,c.useState)(250),v=(0,c.useRef)(null),w=(0,c.useRef)(null);(0,c.useEffect)(()=>{a&&((0,av.getConfigValue)("search.debounceMs",250).then(t),setTimeout(()=>v.current?.focus(),100),j(""),n([]))},[a]),(0,c.useEffect)(()=>{if(w.current&&clearTimeout(w.current),!i.trim()){n([]),p(!1);return}p(!0);let a=!1;return w.current=setTimeout(async()=>{let b=await au(i,k);a||(n(b),p(!1))},q),()=>{w.current&&clearTimeout(w.current),a=!0}},[i,k,q]);let x=(0,c.useCallback)(a=>{h.push(a.navigateTo),e(!1)},[h,e]);return(0,b.jsx)(s.Dialog,{open:a,onOpenChange:e,children:(0,b.jsxs)(s.DialogContent,{className:"sm:max-w-lg p-0 gap-0 overflow-hidden !top-[10vh] !-translate-y-0",showCloseButton:!1,children:[(0,b.jsxs)("div",{className:"flex items-center border-b border-border px-4",children:[(0,b.jsx)(Q.Search,{className:"h-4 w-4 text-muted-foreground"}),(0,b.jsx)("input",{ref:v,value:i,onChange:a=>j(a.target.value),placeholder:g("search.placeholder"),className:"flex-1 bg-transparent px-3 py-3.5 text-sm text-foreground placeholder-muted-foreground outline-none"}),i&&(0,b.jsx)(u.Button,{variant:"ghost",size:"icon",onClick:()=>{j(""),n([])},className:"text-muted-foreground",children:(0,b.jsx)(at.X,{className:"h-3.5 w-3.5"})})]}),(0,b.jsx)("div",{className:"flex items-center gap-1 border-b border-border px-4 py-2",children:aw.map(a=>{let c=a.icon;return(0,b.jsxs)("button",{onClick:()=>l(a.id),className:`flex items-center gap-1.5 rounded-md px-2.5 py-1 text-xs font-medium transition-all ${k===a.id?"bg-primary/10 text-primary ring-1 ring-primary/20":"text-muted-foreground hover:bg-accent hover:text-foreground"}`,children:[(0,b.jsx)(c,{className:"h-3 w-3"}),g(a.key)]},a.id)})}),(0,b.jsxs)(r.ScrollArea,{className:"max-h-80",children:[!i.trim()&&(0,b.jsx)("div",{className:"flex items-center justify-center py-12 text-sm text-muted-foreground",children:g("search.typeToSearch")}),i.trim()&&0===m.length&&!o&&(0,b.jsx)("div",{className:"flex items-center justify-center py-12 text-sm text-muted-foreground",children:g("search.noResults")}),"all"===k&&m.length>0&&(f=m.reduce((a,b)=>((a[b.type]??=[]).push(b),a),{}),ax.filter(a=>f[a]?.length).map(a=>(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"px-4 py-1.5 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground bg-muted/50",children:g(ay[a])}),f[a].map(a=>(0,b.jsx)(az,{result:a,onSelect:x},`${a.type}-${a.id}`))]},a))),"all"!==k&&m.map(a=>(0,b.jsx)(az,{result:a,onSelect:x},`${a.type}-${a.id}`))]})]})})}function aB(a){}let aC=(0,c.createContext)(null);function aD(){return"u">typeof crypto&&crypto.randomUUID?crypto.randomUUID():`msg-${Date.now()}-${Math.random().toString(36).slice(2,9)}`}let aE="assistant-attachment-cache";function aF(a,b,c){try{let d=sessionStorage.getItem(aE),e=d?JSON.parse(d):{};e[a]||(e[a]={}),e[a][b]=c,sessionStorage.setItem(aE,JSON.stringify(e))}catch{}}function aG({children:a}){let[d,e]=(0,c.useState)(!1),[f,g]=(0,c.useState)(!1),[h,i]=(0,c.useState)("sidebar"),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)([]),[n,o]=(0,c.useState)("idle"),[p,q]=(0,c.useState)(!1),r=(0,c.useRef)([]),s=(0,c.useRef)(null),t=(0,c.useRef)(null),[u,v]=(0,c.useState)([]),[w,x]=(0,c.useState)(null),y=(0,c.useRef)(!1),z=(0,c.useCallback)(()=>{m([...r.current])},[]),A=(0,c.useCallback)(async()=>{i("dialog"===await (0,av.getConfigValue)("assistant.displayMode","sidebar")?"dialog":"sidebar")},[]);(0,c.useEffect)(()=>{A()},[A]);let B=(0,c.useCallback)(async()=>{v([])},[]),C=(0,c.useCallback)(async a=>{q(!0);try{let b=await fetch(`/api/internal/assistant/sessions?sessionId=${encodeURIComponent(a)}`);if(!b.ok)return;let c=await b.json();if(Array.isArray(c.messages)){r.current=c.messages;let b=function(a){try{let b=sessionStorage.getItem(aE);if(!b)return{};return JSON.parse(b)[a]??{}}catch{return{}}}(a);if(Object.keys(b).length>0){let a=0;r.current=r.current.map(c=>{if("user"===c.role){let d=b[a];if(a++,d?.length)return{...c,attachmentFilenames:d}}return c})}m([...r.current])}}catch{}finally{q(!1)}},[]);(0,c.useEffect)(()=>{B()},[B,C]);let D=(0,c.useCallback)(()=>{t.current?.abort(),s.current=null,y.current=!1,x(null),aB(null),r.current=[],m([]),o("idle")},[]),E=(0,c.useCallback)(a=>{t.current?.abort(),s.current=a,y.current=!0,x(a),aB(a),r.current=[],m([]),o("idle"),C(a)},[C]),F=(0,c.useCallback)(a=>{v([]),w===a&&D()},[w,D]),G=(0,c.useCallback)(async()=>{g(!0);try{await A(),e(!0)}finally{g(!1)}},[A]),H=(0,c.useCallback)(()=>{e(!1),t.current?.abort()},[]),I=(0,c.useCallback)(()=>{d||f?H():G()},[d,f,H,G]);(0,c.useEffect)(()=>{let a=a=>{(a.metaKey||a.ctrlKey)&&"l"===a.key&&(a.preventDefault(),I())};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[I]);let J=(0,c.useCallback)(async(a,b)=>{if(!a.trim()&&!b?.attachmentFilenames?.length)return;t.current?.abort();let c=new AbortController;t.current=c;let d=0!==r.current.length||y.current?null:a,e=aD();if(r.current=[...r.current,{id:aD(),role:"user",content:a,attachmentFilenames:b?.attachmentFilenames?.length?b.attachmentFilenames:void 0},{id:e,role:"thinking",content:"",isStreaming:!0}],z(),b?.attachmentFilenames?.length&&s.current){let a=r.current.filter(a=>"user"===a.role).length-1;aF(s.current,a,b.attachmentFilenames)}o("connecting");let f=null;try{let g=await fetch("/api/internal/assistant/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:a,sessionId:s.current,attachmentFilenames:b?.attachmentFilenames??[]}),signal:c.signal});if(!g.ok||!g.body)throw Error(`HTTP ${g.status}`);o("streaming");let h=g.body.getReader(),i=new TextDecoder,j="";for(;;){let{done:a,value:c}=await h.read();if(a)break;let g=(j+=i.decode(c,{stream:!0})).split("\n");for(let a of(j=g.pop()??"",g)){let c;if(a.startsWith("data: ")){try{c=JSON.parse(a.slice(6).trim())}catch{continue}if(c.sessionId){let a=s.current;if(s.current=c.sessionId,d&&!y.current&&c.sessionId!==a){y.current=!0;new Date().toISOString();c.sessionId,function(a){let b=a.trim();b&&b.length>30&&b.slice(0,30)}(d),v([]),x(c.sessionId),aB(c.sessionId),b?.attachmentFilenames?.length&&aF(c.sessionId,0,b.attachmentFilenames)}}switch(c.type){case"text_delta":{let a=r.current.filter(a=>a.id!==e);f?r.current=a.map(a=>a.id===f?{...a,content:a.content+(c.content??""),isStreaming:!0}:a):(f=aD(),r.current=[...a,{id:f,role:"assistant",content:c.content??"",isStreaming:!0}]),z();break}case"text":{let a=r.current.filter(a=>a.id!==e);f?r.current=a.map(a=>a.id===f?{...a,content:c.content??a.content,isStreaming:!0}:a):(f=aD(),r.current=[...a,{id:f,role:"assistant",content:c.content??"",isStreaming:!0}]),z();break}case"tool_start":{let a=r.current.filter(a=>a.id!==e);f?(r.current=a.map(a=>a.id===f?{...a,isStreaming:!1}:a),f=null):r.current=a,r.current=[...r.current,{id:aD(),role:"tool",content:`Calling ${c.content??"tool"}...`,toolName:c.content,isStreaming:!0}],z();break}case"tool_use":{let a=r.current.filter(a=>a.id!==e),b=f?a.map(a=>a.id===f?{...a,isStreaming:!1}:a):a;f=null,r.current=[...b,{id:aD(),role:"tool",content:JSON.stringify(c.toolInput??{},null,2),toolName:c.content}],z();break}case"tool_result":r.current=[...r.current,{id:aD(),role:"tool",content:String(c.toolOutput??""),toolName:`${c.content??"tool"} (result)`}],z();break;case"error":r.current=[...r.current.filter(a=>a.id!==e),{id:aD(),role:"assistant",content:`Error: ${c.content??"Unknown error"}`}],z(),o("error");break;case"done":f&&(r.current=r.current.map(a=>a.id===f?{...a,isStreaming:!1}:a)),r.current=r.current.filter(a=>a.id!==e),z(),o("idle")}}}}r.current=r.current.filter(a=>a.id!==e),z(),o(a=>"streaming"===a?"idle":a),B()}catch(a){if("AbortError"===a.name)return;r.current=[...r.current.filter(a=>a.id!==e),{id:aD(),role:"assistant",content:`Connection error: ${a.message??"Unknown error"}`}],z(),o("error")}},[z,B]),K=(0,c.useCallback)(()=>{t.current?.abort(),t.current=null;let a=[...r.current].reverse().find(a=>"user"===a.role),b=a?.content??null;if(a){let b=r.current.lastIndexOf(a);r.current=r.current.slice(0,b),m([...r.current])}return o("idle"),b},[]),L=l[l.length-1],M="connecting"===n||"streaming"===n||L?.role==="thinking"&&!0===L.isStreaming;return(0,b.jsx)(aC.Provider,{value:{isOpen:d,isStarting:f,displayMode:h,worktreePath:j,toggleAssistant:I,closeAssistant:H,chatMessages:l,chatStatus:n,isChatThinking:M,isLoadingHistory:p,sendChatMessage:J,cancelChat:K,sessions:u,activeSessionId:w,createNewSession:D,switchSession:E,removeSession:F,refreshSessions:B},children:a})}function aH(){let a=(0,c.useContext)(aC);if(!a)throw Error("useAssistant must be used within an AssistantProvider");return a}var aI=a.i(704494),aJ=a.i(668116),aK=a.i(616335),aL=a.i(394259),aM=a.i(487410),aN=a.i(429246);function aO(a){return a.replace(/\.git\/?$/,"")}a.i(446786),a.i(814747);let aP=(0,w.createServerReference)("406cf57ab441b87fe26b4e4ba61492f885d99c626c",w.callServer,void 0,w.findSourceMapURL,"resolveGitLocalPath");var aQ=a.i(426016),aR=a.i(43775);function aS({open:a,onOpenChange:d,onCreateProject:e}){let{t:f,locale:g}=(0,E.useI18n)(),[h,i]=(0,c.useState)(""),[j,k]=(0,c.useState)(""),[l,m]=(0,c.useState)(""),[o,p]=(0,c.useState)(""),[q,r]=(0,c.useState)(""),[w,x]=(0,c.useState)(!1),[y,z]=(0,c.useState)("FRONTEND"),[A,B]=(0,c.useState)("idle"),[C,D]=(0,c.useState)(""),[G,H]=(0,c.useState)(!1),[I,J]=(0,c.useState)(!1),K=()=>{i(""),k(""),m(""),p(""),r(""),x(!1),z("FRONTEND"),B("idle"),D(""),H(!1)},L=async()=>{if(q.trim()&&!G&&"success"===A){H(!0);try{let a=await (0,aQ.analyzeProjectDirectory)(q.trim(),g);m(a)}catch{F.toast.error(f("project.analyzeError"))}finally{H(!1)}}},M=async a=>{p(a),B("idle"),D("");let b=function(a){let b,c=a.match(/^git@([^:]+):(.+)$/);if(c)return{host:c[1],pathSegments:aO(c[2]).split("/").filter(Boolean)};try{b=new URL(a)}catch{return null}return{host:b.hostname,pathSegments:aO(decodeURIComponent(b.pathname)).split("/").filter(Boolean)}}(a);b&&b.pathSegments.length>0&&i(b.pathSegments[b.pathSegments.length-1]),w||r(await aP(a))},N=async()=>{if(o.trim()&&q.trim()){B("cloning"),D("");try{let a=function(a){let b=a.trim();if(!b)return"";if(b.startsWith("git@")||b.startsWith("ssh://")||b.endsWith(".git"))return b;try{let a=new URL(b),c=a.hostname,d=decodeURIComponent(a.pathname).split("/").filter(Boolean);if("code.iflytek.com"===c){let a=[...d];"osc"===a[0]&&"_source"===a[1]&&(a=a.slice(2));let e=a.indexOf("-");if(e>0&&(a=a.slice(0,e)),0===a.length)return b;return`https://${c}/${a.join("/")}.git`}return`${a.origin}${a.pathname.replace(/\/$/,"")}.git`}catch{return b}}(o.trim()),b=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"clone",url:a,path:q.trim()})}),c=await b.json();if(!b.ok){B("error"),D(c.error||"Clone failed");return}B("success")}catch{B("error"),D("Network error")}}},O=async()=>{h.trim()&&(await e?.({name:h.trim(),alias:j.trim()||void 0,description:l.trim()||void 0,gitUrl:o.trim()||void 0,localPath:q.trim()||void 0,projectType:y}),K(),d(!1))};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s.Dialog,{open:a,onOpenChange:a=>{d(a),a||K()},disablePointerDismissal:!0,children:(0,b.jsxs)(s.DialogContent,{style:{maxWidth:"32rem"},children:[(0,b.jsx)(s.DialogHeader,{children:(0,b.jsx)(s.DialogTitle,{children:f("topbar.newProject")})}),(0,b.jsxs)("div",{className:"space-y-4 py-2",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.gitUrl")}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground mt-0.5",children:f("project.gitUrlHint")}),(0,b.jsx)(v.Input,{placeholder:f("project.gitPlaceholder"),value:o,onChange:a=>M(a.target.value),className:"mt-1.5 font-mono text-xs"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.localPath")}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground mt-0.5",children:f("project.localPathHint")}),(0,b.jsxs)("div",{className:"mt-1.5 flex gap-2",children:[(0,b.jsx)(v.Input,{placeholder:f("project.localPathPlaceholder"),value:q,onChange:a=>{r(a.target.value),x(!0)},className:"flex-1 min-w-0 font-mono text-xs"}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsxs)(t.TooltipTrigger,{render:(0,b.jsx)(u.Button,{type:"button",variant:"outline",onClick:()=>J(!0),className:"shrink-0 gap-1.5 px-2.5 text-xs text-muted-foreground"}),children:[(0,b.jsx)(n.FolderOpen,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:f("folder.browse")})]}),(0,b.jsx)(t.TooltipContent,{children:f("folder.selectFolder")})]})]}),q.trim().startsWith("~")&&(0,b.jsxs)("p",{className:"mt-1 flex items-center gap-1 text-[11px] text-amber-400",children:[(0,b.jsx)(aK.AlertCircle,{className:"h-3 w-3"}),f("project.tildeWarning")]}),o.trim()&&q.trim()&&(0,b.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,b.jsxs)(u.Button,{type:"button",disabled:"cloning"===A||"success"===A,onClick:N,className:"gap-1.5 text-xs bg-emerald-500/15 text-emerald-300 ring-1 ring-emerald-500/25 hover:bg-emerald-500/25 disabled:opacity-50",children:["cloning"===A?(0,b.jsx)(aI.Loader2,{className:"h-3 w-3 animate-spin"}):"success"===A?(0,b.jsx)(aJ.Check,{className:"h-3 w-3"}):(0,b.jsx)(aq.GitBranch,{className:"h-3 w-3"}),"cloning"===A?f("git.cloning"):"success"===A?f("git.cloned"):f("git.clone")]}),"error"===A&&(0,b.jsxs)("span",{className:"flex items-center gap-1 text-[11px] text-rose-400",children:[(0,b.jsx)(aK.AlertCircle,{className:"h-3 w-3"}),C]}),"success"===A&&(0,b.jsx)("span",{className:"text-[11px] text-emerald-400",children:f("git.cloneSuccess")})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.name")}),(0,b.jsx)(v.Input,{placeholder:f("project.namePlaceholder"),value:h,onChange:a=>i(a.target.value),className:"mt-1.5"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.type.label")}),(0,b.jsx)("div",{className:"mt-1.5",children:(0,b.jsx)(aM.SegmentedControl,{options:[{value:"FRONTEND",label:f("project.type.frontend")},{value:"BACKEND",label:f("project.type.backend")}],value:y,onChange:z})})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.alias")}),(0,b.jsx)(v.Input,{placeholder:f("project.aliasPlaceholder"),value:j,onChange:a=>k(a.target.value),className:"mt-1.5"})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mt-0.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.description")}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsxs)(t.TooltipTrigger,{render:(0,b.jsx)(u.Button,{type:"button",variant:"ghost",onClick:L,className:`h-6 gap-1 px-2 text-[11px] text-muted-foreground hover:text-foreground ${!q.trim()||G?"opacity-50":""}`}),children:[G?(0,b.jsx)(aI.Loader2,{className:"h-3 w-3 animate-spin"}):(0,b.jsx)(aL.Sparkles,{className:"h-3 w-3"}),G?f("project.analyzing"):f("project.genDesc")]}),(0,b.jsx)(t.TooltipContent,{children:q.trim()?"success"!==A?f("project.genDescNotCloned"):f("project.genDescReady"):f("project.genDescNoPath")})]})]}),(0,b.jsx)(aN.Textarea,{placeholder:f("project.descPlaceholder"),value:l,onChange:a=>m(a.target.value),rows:3,className:"mt-1.5 w-full rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground placeholder-muted-foreground outline-none transition-colors focus:border-ring focus:ring-1 focus:ring-ring resize-none max-h-[200px] overflow-y-auto"})]})]}),(0,b.jsxs)(s.DialogFooter,{children:[(0,b.jsx)(u.Button,{variant:"outline",onClick:()=>{d(!1),K()},children:f("common.cancel")}),(0,b.jsx)(u.Button,{onClick:O,disabled:!h.trim()||G,className:"bg-primary/10 text-primary ring-1 ring-primary/25 hover:bg-primary/20",children:f("common.create")})]})]})}),(0,b.jsx)(aR.FolderBrowserDialog,{open:I,onOpenChange:J,onSelect:a=>{if(r(a),x(!0),!h.trim()){let b=a.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).pop()??"";b&&i(b)}}})]})}var aT=a.i(976268),aT=aT,aU=a.i(563658);let aV=(0,w.createServerReference)("604ed770eae5fe6c7eb9bb3e7920034f2876adcc93",w.callServer,void 0,w.findSourceMapURL,"migrateProjectPath"),aW=(0,w.createServerReference)("40c537d4a523dd876dc26956b554758fd7a5893c2c",w.callServer,void 0,w.findSourceMapURL,"checkMigrationSafety");function aX({open:a,onOpenChange:d,onCreateProject:e}){let{t:f,locale:g}=(0,E.useI18n)(),[h,i]=(0,c.useState)(""),[j,k]=(0,c.useState)(""),[l,m]=(0,c.useState)(""),[o,p]=(0,c.useState)(""),[q,r]=(0,c.useState)(""),[w,x]=(0,c.useState)(!1),[y,z]=(0,c.useState)("FRONTEND"),[A,B]=(0,c.useState)(!1),[C,D]=(0,c.useState)(!1),[G,H]=(0,c.useState)(""),[I,J]=(0,c.useState)(!1),[K,L]=(0,c.useState)(""),[M,N]=(0,c.useState)(""),[O,P]=(0,c.useState)(!1),[Q,R]=(0,c.useState)(!1),S=()=>{i(""),k(""),m(""),p(""),r(""),z("FRONTEND"),B(!1),D(!1),H(""),J(!1),L(""),N(""),P(!1),R(!1)},T=async a=>{r(a),B(!1),D(!1),H(""),L(""),N(""),P(!1),i(a.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).pop()??"");try{let b=await fetch(`/api/git?path=${encodeURIComponent(a)}`);if(b.ok){let a=await b.json();if(a.isGit&&a.remoteUrl){p(a.remoteUrl),B(!0);let b=a.remoteUrl.match(/\/([^/]+?)(?:\.git)?$/);b&&i(b[1])}}}catch{}},U=(0,c.useCallback)(async a=>{if(D(a),L(""),N(""),P(!1),!a)return void H("");if(o)try{let a=await aP(o);a&&(H(a),a===q&&P(!0))}catch{}if(q)try{let a=await fetch(`/api/git?path=${encodeURIComponent(q)}&checkWorktrees=true`);a.ok&&(await a.json()).hasWorktrees&&N(f("project.worktreeWarning"))}catch{}},[o,q]),V=async()=>{if(q&&!Q){R(!0);try{let a=await (0,aQ.analyzeProjectDirectory)(q.trim(),g);m(a)}catch{F.toast.error(f("project.analyzeError"))}finally{R(!1)}}},W=async()=>{if(!h.trim())return;let a={name:h.trim(),alias:j.trim()||void 0,description:l.trim()||void 0,gitUrl:o.trim()||void 0,localPath:q.trim()||void 0,projectType:y},b=await e?.(a);if(C&&G&&G!==q&&b&&"id"in b){J(!0),L("");try{let a=await aW(b.id);if(!a.safe)return void L(a.reason);let c=await aV(b.id,G);if(!c.success)return void L(c.error??f("project.migrateError"));F.toast.success(f("project.migrateSuccess"))}catch(b){let a=b instanceof Error?b.message:String(b);L(`${f("project.migrateError")}:${a}`);return}finally{J(!1)}}S(),d(!1)},X=!h.trim()||!q.trim()||I||Q||C&&!!M;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s.Dialog,{open:a,onOpenChange:a=>{d(a),a||S()},disablePointerDismissal:!0,children:(0,b.jsxs)(s.DialogContent,{style:{maxWidth:"32rem"},children:[(0,b.jsx)(s.DialogHeader,{children:(0,b.jsx)(s.DialogTitle,{children:f("topbar.importProject")})}),(0,b.jsxs)("div",{className:"space-y-4 py-2",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.localPath")}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground mt-0.5",children:f("project.importHint")}),(0,b.jsxs)("div",{className:"mt-1.5 flex gap-2",children:[(0,b.jsx)(v.Input,{value:q,readOnly:!0,placeholder:f("project.localPathPlaceholder"),className:"flex-1 font-mono text-xs bg-muted/30"}),(0,b.jsxs)(u.Button,{type:"button",variant:"outline",onClick:()=>x(!0),className:"shrink-0 gap-1.5",children:[(0,b.jsx)(n.FolderOpen,{className:"h-3.5 w-3.5"}),f("folder.browse")]})]}),A&&(0,b.jsx)("p",{className:"mt-1.5 text-[11px] text-emerald-400",children:f("project.autoDetected")})]}),o&&(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.gitUrl")}),(0,b.jsx)(v.Input,{value:o,onChange:a=>p(a.target.value),className:"mt-1.5 font-mono text-xs"})]}),A&&q&&(0,b.jsxs)("div",{className:"rounded-md border border-border p-3 space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("span",{className:"text-xs font-medium",children:f("project.migrate")}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground mt-0.5",children:f("project.migrateHint")})]}),(0,b.jsx)(aU.Switch,{checked:C,onCheckedChange:a=>U(a)})]}),C&&(0,b.jsxs)("div",{className:"space-y-2 pt-1",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-[10px] font-medium text-muted-foreground",children:f("project.targetPath")}),(0,b.jsx)(v.Input,{value:G,onChange:a=>{H(a.target.value),P(a.target.value===q)},placeholder:"/path/to/canonical/location",className:"mt-1 font-mono text-xs"})]}),O&&(0,b.jsxs)("p",{className:"flex items-center gap-1 text-[11px] text-sky-400",children:[(0,b.jsx)(aT.default,{className:"h-3 w-3"}),f("project.samePathInfo")]}),M&&(0,b.jsxs)("p",{className:"flex items-center gap-1 text-[11px] text-amber-400",children:[(0,b.jsx)(aK.AlertCircle,{className:"h-3 w-3"}),M]}),K&&(0,b.jsxs)("p",{className:"flex items-center gap-1 text-[11px] text-rose-400",children:[(0,b.jsx)(aK.AlertCircle,{className:"h-3 w-3"}),K]})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.name")}),(0,b.jsx)(v.Input,{placeholder:f("project.namePlaceholder"),value:h,onChange:a=>i(a.target.value),className:"mt-1.5"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.type.label")}),(0,b.jsx)("div",{className:"mt-1.5",children:(0,b.jsx)(aM.SegmentedControl,{options:[{value:"FRONTEND",label:f("project.type.frontend")},{value:"BACKEND",label:f("project.type.backend")}],value:y,onChange:z})})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.alias")}),(0,b.jsx)(v.Input,{placeholder:f("project.aliasPlaceholder"),value:j,onChange:a=>k(a.target.value),className:"mt-1.5"})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mt-0.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.description")}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsxs)(t.TooltipTrigger,{render:(0,b.jsx)(u.Button,{type:"button",variant:"ghost",onClick:V,className:`h-6 gap-1 px-2 text-[11px] text-muted-foreground hover:text-foreground ${!q||Q?"opacity-50":""}`}),children:[Q?(0,b.jsx)(aI.Loader2,{className:"h-3 w-3 animate-spin"}):(0,b.jsx)(aL.Sparkles,{className:"h-3 w-3"}),Q?f("project.analyzing"):f("project.genDesc")]}),(0,b.jsx)(t.TooltipContent,{children:q?f("project.genDescReady"):f("project.genDescNoPath")})]})]}),(0,b.jsx)(aN.Textarea,{placeholder:f("project.descPlaceholder"),value:l,onChange:a=>m(a.target.value),rows:3,className:"mt-1.5 w-full rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground placeholder-muted-foreground outline-none transition-colors focus:border-ring focus:ring-1 focus:ring-ring resize-none max-h-[200px] overflow-y-auto"})]})]}),(0,b.jsxs)(s.DialogFooter,{children:[(0,b.jsx)(u.Button,{variant:"outline",onClick:()=>{d(!1),S()},children:f("common.cancel")}),(0,b.jsx)(u.Button,{onClick:W,disabled:X,className:"bg-primary/10 text-primary ring-1 ring-primary/25 hover:bg-primary/20",children:I?f("project.migrating"):f("common.create")})]})]})}),(0,b.jsx)(aR.FolderBrowserDialog,{open:w,onOpenChange:x,onSelect:a=>T(a)})]})}function aY({className:a}){return(0,b.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",className:a,children:(0,b.jsx)("path",{d:"M12 .5C5.65.5.5 5.65.5 12.02c0 5.08 3.29 9.39 7.86 10.91.58.11.79-.25.79-.56v-2c-3.2.7-3.87-1.36-3.87-1.36-.52-1.34-1.27-1.7-1.27-1.7-1.04-.71.08-.7.08-.7 1.15.08 1.76 1.18 1.76 1.18 1.02 1.76 2.68 1.25 3.34.96.1-.74.4-1.25.72-1.54-2.56-.29-5.25-1.28-5.25-5.69 0-1.26.45-2.28 1.18-3.09-.12-.29-.51-1.46.11-3.04 0 0 .97-.31 3.18 1.18a11.1 11.1 0 0 1 5.79 0c2.2-1.49 3.18-1.18 3.18-1.18.62 1.58.23 2.75.11 3.04.74.81 1.18 1.83 1.18 3.09 0 4.42-2.69 5.4-5.25 5.69.41.36.78 1.05.78 2.12v3.14c0 .31.21.68.79.56A11.52 11.52 0 0 0 23.5 12.02C23.5 5.65 18.35.5 12 .5Z"})})}function aZ({onCreateProject:a,username:e}){let{t:f,locale:h,setLocale:i}=(0,E.useI18n)(),{isOpen:j,toggleAssistant:k}=aH(),{resolvedTheme:l,toggleTheme:m,triggerRef:o}=function(){let{resolvedTheme:a,setTheme:b}=(0,P.useTheme)(),d=(0,c.useRef)(null),e=(0,c.useCallback)(c=>{let d="dark"===a?"light":"dark";if("u">typeof document&&"startViewTransition"in document&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches){let a=c?.clientX??window.innerWidth/2,e=c?.clientY??0,f=Math.hypot(Math.max(a,window.innerWidth-a),Math.max(e,window.innerHeight-e));document.startViewTransition(()=>{b(d)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${a}px ${e}px)`,`circle(${f}px at ${a}px ${e}px)`]},{duration:400,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})}else b(d)},[a,b]);return{resolvedTheme:a,toggleTheme:e,triggerRef:d}}(),p=(0,d.useRouter)(),[r,s]=(0,c.useState)(!1),[v,w]=(0,c.useState)(!1),[x,y]=(0,c.useState)(!1);return(0,c.useEffect)(()=>{let a=a=>{(a.metaKey||a.ctrlKey)&&"k"===a.key&&(a.preventDefault(),s(!0))};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[]),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("header",{className:"flex h-12 items-center justify-between border-b border-border bg-background/80 px-5 backdrop-blur-sm",children:[(0,b.jsx)("div",{className:"w-40"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)(u.Button,{variant:"outline",onClick:()=>s(!0),className:"h-8 w-[400px] justify-start gap-2 bg-muted/50 text-muted-foreground hover:bg-muted",children:[(0,b.jsx)(Q.Search,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{className:"flex-1 text-left",suppressHydrationWarning:!0,children:f("topbar.searchPlaceholder")}),(0,b.jsxs)("kbd",{className:"mr-1 flex items-center gap-0.5 rounded border border-border bg-background px-1.5 py-0.5 text-[10px] font-mono",children:[(0,b.jsx)(S,{className:"h-2.5 w-2.5"}),"K"]})]}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{delay:500,render:(0,b.jsx)("button",{"data-tour":"open-assistant",onClick:k,"aria-label":f("assistant.iconLabel"),className:["cursor-pointer rounded-lg p-2 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",j?"bg-accent text-foreground":""].join(" ")}),children:(0,b.jsx)(U,{className:"h-4 w-4"})}),(0,b.jsx)(t.TooltipContent,{children:f("assistant.iconLabel")})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsxs)(t.TooltipTrigger,{render:(0,b.jsx)(u.Button,{variant:"ghost",onClick:()=>i("zh"===h?"en":"zh"),className:"text-muted-foreground"}),children:[(0,b.jsx)(T.Globe,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{className:"text-[11px] font-semibold",children:"zh"===h?"EN":"中"})]}),(0,b.jsx)(t.TooltipContent,{children:f("settings.language")})]}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)(u.Button,{ref:o,variant:"ghost",size:"icon",onClick:m,className:"text-muted-foreground"}),children:"dark"===l?(0,b.jsx)(V.Sun,{className:"h-4 w-4"}):(0,b.jsx)(W.Moon,{className:"h-4 w-4"})}),(0,b.jsx)(t.TooltipContent,{children:f("settings.theme")})]}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)(u.Button,{variant:"ghost",size:"icon",onClick:()=>window.open("https://github.com/jp-liu/tower","_blank","noopener,noreferrer"),className:"text-muted-foreground","aria-label":f("topbar.github")}),children:(0,b.jsx)(aY,{className:"h-4 w-4"})}),(0,b.jsx)(t.TooltipContent,{children:f("topbar.github")})]}),(0,b.jsx)("div",{className:"h-4 w-px bg-border"}),(0,b.jsxs)(u.Button,{variant:"outline",className:"gap-1.5 ring-1 ring-border hover:bg-accent",onClick:()=>y(!0),children:[(0,b.jsx)(n.FolderOpen,{className:"h-3.5 w-3.5"}),f("topbar.importProject")]}),(0,b.jsxs)(u.Button,{"data-tour":"create-project",className:"gap-1.5 bg-primary/10 text-primary ring-1 ring-primary/25 hover:bg-primary/20",onClick:()=>w(!0),children:[(0,b.jsx)(g.Plus,{className:"h-3.5 w-3.5"}),f("topbar.newProject")]}),(0,b.jsxs)(q.DropdownMenu,{children:[(0,b.jsx)(q.DropdownMenuTrigger,{render:(0,b.jsxs)("button",{className:"ml-0.5 flex cursor-pointer items-center gap-1.5 rounded-lg px-2.5 py-1 transition-colors hover:bg-accent",children:[e&&(0,b.jsx)("span",{className:"max-w-[80px] truncate text-xs text-muted-foreground",children:e}),(0,b.jsx)(an,{className:"h-7 w-7 ring-1 ring-border",children:(0,b.jsx)(ao,{className:"bg-emerald-500/20 text-emerald-400 text-[10px] font-semibold",children:e?e.trim().split(/\s+/).filter(a=>a.length>0).slice(0,2).map(a=>a[0].toUpperCase()).join(""):"U"})})]})}),(0,b.jsx)(q.DropdownMenuContent,{align:"end",sideOffset:8,className:"w-40",children:(0,b.jsxs)(q.DropdownMenuItem,{onClick:()=>p.push("/settings"),children:[(0,b.jsx)(R.Settings,{className:"mr-2 h-3.5 w-3.5"}),f("settings.title")]})})]})]})]}),(0,b.jsx)(aA,{open:r,onOpenChange:s}),(0,b.jsx)(aS,{open:v,onOpenChange:w,onCreateProject:a}),(0,b.jsx)(aX,{open:x,onOpenChange:y,onCreateProject:a})]})}var a$=a.i(347872),a_=a.i(595999),a0=a.i(464462),a1=a.i(969032),a2=a.i(442620);let a3=(0,a1.default)(async()=>{},{loadableGenerated:{modules:[103363]},ssr:!1});function a4({mode:a}){let{isOpen:c,closeAssistant:d,sessions:e,activeSessionId:f,createNewSession:h,switchSession:j,removeSession:k}=aH(),{t:l}=(0,E.useI18n)(),m=e.find(a=>a.id===f),n=m?.title??l("assistant.newSession");return(0,b.jsxs)("div",{className:"sidebar"===a?"min-w-[320px] max-w-[480px] w-[30vw] shrink-0 border-r border-border flex flex-col bg-sidebar overflow-hidden":"flex flex-col h-full overflow-hidden",children:[(0,b.jsxs)("div",{className:"header-sm flex items-center px-4 gap-2 bg-sidebar",children:[(0,b.jsx)(U,{className:"h-4 w-4 text-muted-foreground shrink-0"}),(0,b.jsx)("span",{className:"text-sm font-semibold text-foreground shrink-0",children:l("assistant.title")}),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"flex-1"}),(0,b.jsxs)(q.DropdownMenu,{children:[(0,b.jsxs)(q.DropdownMenuTrigger,{className:"flex items-center gap-1 h-8 px-2 rounded-md text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground max-w-[120px] truncate","aria-label":l("assistant.sessionList"),children:[(0,b.jsx)("span",{className:"truncate",children:n}),(0,b.jsx)(a2.ChevronDown,{className:"h-3 w-3 shrink-0"})]}),(0,b.jsxs)(q.DropdownMenuContent,{side:"bottom",align:"end",sideOffset:4,children:[0===e.length?(0,b.jsx)("div",{className:"px-2 py-4 text-xs text-muted-foreground text-center",children:l("assistant.noSessions")}):e.map(a=>(0,b.jsxs)(q.DropdownMenuItem,{className:"flex items-center justify-between gap-2 pr-1",onClick:()=>j(a.id),children:[(0,b.jsxs)("div",{className:"flex flex-col gap-0.5 min-w-0",children:[(0,b.jsx)("span",{className:"text-xs truncate max-w-[140px]",children:a.title}),(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:function(a){let b=Math.floor((Date.now()-new Date(a).getTime())/1e3);if(b<60)return`${b}s ago`;let c=Math.floor(b/60);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);if(d<24)return`${d}h ago`;let e=Math.floor(d/24);return`${e}d ago`}(a.updatedAt)})]}),(0,b.jsx)(u.Button,{variant:"ghost",className:"h-6 w-6 p-0 shrink-0 opacity-50 hover:opacity-100 hover:text-destructive",onClick:b=>{b.stopPropagation(),k(a.id)},"aria-label":l("assistant.deleteSession"),children:(0,b.jsx)(i.Trash2,{className:"h-3 w-3"})})]},a.id)),e.length>0&&(0,b.jsx)(q.DropdownMenuSeparator,{}),(0,b.jsxs)(q.DropdownMenuItem,{onClick:h,children:[(0,b.jsx)(g.Plus,{className:"h-3 w-3 mr-1"}),(0,b.jsx)("span",{className:"text-xs",children:l("assistant.newSession")})]})]})]}),(0,b.jsx)(u.Button,{variant:"ghost",size:"icon",className:"text-muted-foreground",onClick:h,"aria-label":l("assistant.newSession"),children:(0,b.jsx)(g.Plus,{className:"h-4 w-4"})})]}),(0,b.jsx)(u.Button,{variant:"ghost",size:"icon",className:"text-muted-foreground",onClick:d,"aria-label":l("assistant.closeLabel"),children:(0,b.jsx)(at.X,{className:"h-4 w-4"})})]}),(0,b.jsx)("div",{className:"flex-1 overflow-hidden",children:c?(0,b.jsx)(a3,{}):null})]})}var a5=a.i(190076);function a6({onDismiss:a}){let{t:d}=(0,E.useI18n)(),[e,f]=(0,c.useState)(!1);(0,c.useEffect)(()=>{},[]);let g=async()=>{"default"!==await window.Notification.requestPermission()&&(f(!1),a?.())};return e?(0,b.jsxs)("div",{className:"fixed top-3 left-1/2 -translate-x-1/2 z-[9999] w-auto max-w-lg bg-card border rounded-lg shadow-lg px-4 py-2.5 flex items-center gap-3 animate-in fade-in slide-in-from-top-4 duration-500",children:[(0,b.jsx)(a5.Bell,{className:"h-4 w-4 shrink-0 text-primary"}),(0,b.jsx)("span",{className:"flex-1 text-sm",children:d("notification.permissionPrompt")}),(0,b.jsx)(u.Button,{size:"default",onClick:g,children:d("notification.allow")}),(0,b.jsx)(u.Button,{variant:"ghost",size:"default",onClick:()=>{f(!1),a?.()},children:d("notification.dismiss")})]}):null}a.i(841908);var a7=a.i(136890);let a8=[{target:"create-workspace",titleKey:"tour.step1.title",descKey:"tour.step1.desc",placement:"right"},{target:"create-project",titleKey:"tour.step2.title",descKey:"tour.step2.desc",placement:"bottom",waitForTarget:!0},{target:"open-assistant",titleKey:"tour.step3.title",descKey:"tour.step3.desc",placement:"bottom"}];function a9({onComplete:a}){let{t:d}=(0,E.useI18n)(),[e,f]=(0,c.useState)(0),[g,h]=(0,c.useState)(null),[i,j]=(0,c.useState)(!1),k=(0,c.useRef)(null),l=a8[e],m=(0,c.useCallback)(async()=>{await (0,a7.setConfigValue)("onboarding.tourCompleted",!0),a()},[a]),n=(0,c.useCallback)(()=>l?document.querySelector(`[data-tour="${l.target}"]`):null,[l]),o=(0,c.useCallback)(()=>{let a=n();a?(h(a.getBoundingClientRect()),j(!0)):j(!1)},[n]);(0,c.useEffect)(()=>{o();let a=null;!i&&l?.waitForTarget&&(k.current=new MutationObserver(()=>{let b=n();b&&(h(b.getBoundingClientRect()),j(!0),k.current?.disconnect(),a&&clearTimeout(a))}),k.current.observe(document.body,{childList:!0,subtree:!0}),a=setTimeout(()=>{!n()&&(f(a=>{let b=a+1;return b<a8.length?b:a}),e>=a8.length-1&&m())},5e3));let b=()=>o();return window.addEventListener("resize",b),window.addEventListener("scroll",b,!0),()=>{k.current?.disconnect(),a&&clearTimeout(a),window.removeEventListener("resize",b),window.removeEventListener("scroll",b,!0)}},[e,l,n,o,i,m]),(0,c.useEffect)(()=>{let a=setInterval(o,1e3);return()=>clearInterval(a)},[o]);let p=(0,c.useCallback)(()=>{e<a8.length-1?(f(a=>a+1),j(!1)):m()},[e]);return l?(0,b.jsx)(b.Fragment,{children:i&&g&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"fixed inset-0 z-[10000]",style:{background:`radial-gradient(
|
|
1
|
+
module.exports=[976268,a=>{"use strict";let b=(0,a.i(711796).default)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);a.s(["default",0,b])},607884,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(553798),e=a.i(634910),f=a.i(607219),g=a.i(774881),h=a.i(690251),i=a.i(975231),j=a.i(336771),k=a.i(91756),l=a.i(881107),m=a.i(350739),n=a.i(347165),o=a.i(711796);let p=(0,o.default)("gauge",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);var q=a.i(335732),r=a.i(269876),s=a.i(814574),t=a.i(785259),u=a.i(699570),v=a.i(866718),w=a.i(780410);let x=(0,w.createServerReference)("4061bf09c58a2482c8e7718d5710860d3aeb9e90f5",w.callServer,void 0,w.findSourceMapURL,"createWorkspace"),y=(0,w.createServerReference)("6060c9b052f8719ee1158bd094831a5dbd570b0920",w.callServer,void 0,w.findSourceMapURL,"updateWorkspace"),z=(0,w.createServerReference)("40779e134fb254c682c66a0038dcd5e165f9f9c126",w.callServer,void 0,w.findSourceMapURL,"deleteWorkspace"),A=(0,w.createServerReference)("40f5bda647fb24083aeba0bef4450844ede662d614",w.callServer,void 0,w.findSourceMapURL,"reorderWorkspaces");var B=a.i(347401);let C=(0,w.createServerReference)("401cfc041822bfe0186f103f1a153d1a6464a17dd2",w.callServer,void 0,w.findSourceMapURL,"createLabel"),D=(0,w.createServerReference)("40e82898dc84e21eef111e23fef31cafff55508294",w.callServer,void 0,w.findSourceMapURL,"deleteLabel");var E=a.i(258815),F=a.i(951192),G=a.i(952313),H=a.i(643228),I=a.i(859103),J=a.i(514126);let K=["📋","🚀","🎯","💡","🔧","📦","🎨","📊","🔬","🌟","📝","🏗️"];function L({workspaces:a}){let h,i=(0,d.useRouter)(),j=(0,d.usePathname)(),{t:l}=(0,F.useI18n)(),[o,q]=(0,c.useState)(!1);(0,c.useEffect)(()=>{"true"===localStorage.getItem("sidebar-collapsed")&&q(!0)},[]);let[s,v]=(0,c.useState)(!1),[w,B]=(0,c.useState)(!1),[C,D]=(0,c.useState)(!1),[J,O]=(0,c.useState)(null),[Q,R]=(0,c.useState)(""),[S,T]=(0,c.useState)(K[0]),[U,V]=(0,c.useState)(null),[W,X]=(0,c.useState)(a);(0,c.useEffect)(()=>{X(a)},[a]);let Y=(0,H.useSensors)((0,H.useSensor)(H.PointerSensor,{activationConstraint:{distance:8}})),Z=(0,c.useCallback)(b=>{let{active:c,over:d}=b;if(!d||c.id===d.id)return;let e=W.findIndex(a=>a.id===c.id),f=W.findIndex(a=>a.id===d.id);if(-1===e||-1===f)return;let g=(0,I.arrayMove)(W,e,f);X(g),A(g.map(a=>a.id)).then(()=>i.refresh()).catch(()=>{X(a),G.toast.error(l("sidebar.reorderError"))})},[W,a,i,l]),$=j.split("/workspaces/")[1]?.split("/")[0],_=(0,c.useCallback)(a=>{if($===a)return;let b=(0,E.getLastProjectId)(a);i.push(b?`/workspaces/${a}?projectId=${b}`:`/workspaces/${a}`)},[$,i]),aa=(0,c.useCallback)(()=>{q(a=>{let b=!a;return localStorage.setItem("sidebar-collapsed",String(b)),b})},[]),ab=(0,c.useCallback)(async()=>{if(!Q.trim())return;let a=await x({name:Q.trim(),description:S});R(""),T(K[0]),v(!1),i.refresh(),i.push(`/workspaces/${a.id}`)},[Q,S,i]),ac=(0,c.useCallback)(async()=>{Q.trim()&&U&&(await y(U,{name:Q.trim(),description:S}),R(""),B(!1),V(null),i.refresh())},[Q,S,U,i]),ad=(0,c.useCallback)(a=>{V(a.id),R(a.name),T(a.description&&K.includes(a.description)?a.description:K[0]),B(!0)},[]),ae=(0,c.useCallback)(async(b,c)=>{if(a.length<=1)return void G.toast.error(l("sidebar.lastWorkspaceError"));if(confirm(l("sidebar.deleteConfirm",{name:c})))try{await z(b),i.refresh(),$===b&&i.push("/workspaces")}catch{G.toast.error(l("sidebar.lastWorkspaceError"))}},[$,i,l,a.length]),af=(0,c.useCallback)(a=>{O(a),D(!0)},[]),ag=a=>a.description&&K.includes(a.description)?a.description:a.name.charAt(0).toUpperCase();if(o){let c;return(0,b.jsxs)("aside",{className:"flex h-screen w-14 flex-col items-center border-r border-border bg-sidebar py-3",children:[(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)("button",{onClick:aa,className:"mb-4 flex h-9 w-9 items-center justify-center rounded-lg bg-primary/10 ring-1 ring-primary/20 transition-transform hover:scale-105"}),children:(0,b.jsx)("img",{src:"/logo.png",alt:"Tower",className:"h-6 w-6 rounded"})}),(0,b.jsx)(t.TooltipContent,{side:"right",sideOffset:8,children:l("sidebar.expand")})]}),(0,b.jsx)(r.ScrollArea,{className:"flex-1 min-h-0",children:(0,b.jsxs)("div",{className:"flex flex-col items-center gap-1 px-0.5 pt-1",children:[a.map(a=>{let c=$===a.id,d=ag(a);return(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)("button",{onClick:()=>_(a.id),className:`flex h-9 w-9 items-center justify-center rounded-lg transition-all ${c?"ring-1 ring-primary/20 text-foreground cursor-default":"text-muted-foreground hover:text-foreground cursor-pointer"}`}),children:(0,b.jsx)("span",{className:"flex h-7 w-7 items-center justify-center rounded-md bg-muted text-sm",children:K.includes(d)?d:(0,b.jsx)("span",{className:"text-xs font-semibold",children:d})})}),(0,b.jsx)(t.TooltipContent,{side:"right",sideOffset:8,children:a.name})]},a.id)}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)("button",{"data-tour":"create-workspace",onClick:()=>v(!0),className:"flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent hover:text-foreground"}),children:(0,b.jsx)(g.Plus,{className:"h-4 w-4"})}),(0,b.jsx)(t.TooltipContent,{side:"right",sideOffset:8,children:l("sidebar.newWorkspace")})]})]})}),(0,b.jsxs)("div",{className:"mt-2 flex flex-col items-center gap-1",children:[(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)("button",{onClick:()=>i.push("/missions"),className:`rounded-lg p-2 transition-colors ${"/missions"===j?"text-foreground bg-accent":"text-muted-foreground hover:bg-accent hover:text-foreground"}`}),children:(0,b.jsx)(p,{className:"h-4 w-4"})}),(0,b.jsx)(t.TooltipContent,{side:"right",sideOffset:8,children:l("missions.navLabel")})]}),(c=$||a[0]?.id)?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)("button",{onClick:()=>i.push(`/workspaces/${c}/notes`),className:`rounded-lg p-2 transition-colors ${j.includes("/notes")?"text-foreground bg-accent":"text-muted-foreground hover:bg-accent hover:text-foreground"}`}),children:(0,b.jsx)(m.FileText,{className:"h-4 w-4"})}),(0,b.jsx)(t.TooltipContent,{side:"right",sideOffset:8,children:l("sidebar.notes")})]}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)("button",{onClick:()=>i.push(`/workspaces/${c}/assets`),className:`rounded-lg p-2 transition-colors ${j.includes("/assets")?"text-foreground bg-accent":"text-muted-foreground hover:bg-accent hover:text-foreground"}`}),children:(0,b.jsx)(n.FolderOpen,{className:"h-4 w-4"})}),(0,b.jsx)(t.TooltipContent,{side:"right",sideOffset:8,children:l("sidebar.assets")})]}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)("button",{onClick:()=>i.push(`/workspaces/${c}/archive`),className:`rounded-lg p-2 transition-colors ${j.includes("/archive")?"text-foreground bg-accent":"text-muted-foreground hover:bg-accent hover:text-foreground"}`}),children:(0,b.jsx)(f.Archive,{className:"h-4 w-4"})}),(0,b.jsx)(t.TooltipContent,{side:"right",sideOffset:8,children:l("sidebar.archive")})]})]}):null]}),(0,b.jsx)(N,{open:s,onOpenChange:v,title:l("workspace.create"),name:Q,onNameChange:R,icon:S,onIconChange:T,onSubmit:ab,submitLabel:l("common.create"),nameLabel:l("workspace.name"),iconLabel:l("workspace.icon"),namePlaceholder:l("workspace.namePlaceholder"),cancelLabel:l("common.cancel")})]})}return(0,b.jsxs)("aside",{className:"noise relative flex h-screen w-56 flex-col border-r border-border bg-sidebar",children:[(0,b.jsxs)("div",{className:"relative z-10 flex items-center gap-3 px-4 py-4",children:[(0,b.jsx)("img",{src:"/logo.png",alt:"Tower",className:"h-9 w-9 rounded-lg"}),(0,b.jsxs)("div",{className:"flex-1",children:[(0,b.jsx)("div",{className:"text-sm font-semibold tracking-tight text-foreground",children:"Tower"}),(0,b.jsx)("div",{className:"text-[10px] font-medium uppercase tracking-widest text-muted-foreground",children:"Studio"})]}),(0,b.jsx)(u.Button,{variant:"ghost",size:"icon-xs",onClick:aa,className:"text-muted-foreground",title:l("sidebar.collapse"),children:(0,b.jsx)(k.ChevronsLeft,{className:"h-4 w-4"})})]}),(0,b.jsxs)("div",{className:"relative z-10 flex items-center justify-between px-4 py-2",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground",children:l("sidebar.workspace")}),(0,b.jsx)(u.Button,{variant:"ghost",size:"icon-sm",className:"text-muted-foreground","data-tour":"create-workspace",onClick:()=>{R(""),T(K[0]),v(!0)},title:l("sidebar.newWorkspace"),children:(0,b.jsx)(g.Plus,{className:"h-3.5 w-3.5"})})]}),(0,b.jsx)(r.ScrollArea,{className:"relative z-10 mt-2 flex-1 min-h-0",children:(0,b.jsx)("div",{className:"px-2 py-1",children:(0,b.jsx)(H.DndContext,{id:"workspace-sidebar",sensors:Y,collisionDetection:H.closestCenter,onDragEnd:Z,children:(0,b.jsx)(I.SortableContext,{items:W.map(a=>a.id),strategy:I.verticalListSortingStrategy,children:W.map(a=>(0,b.jsx)(M,{ws:a,isActive:$===a.id,icon:ag(a),disableDelete:W.length<=1,t:l,onSelect:()=>_(a.id),onEdit:()=>ad(a),onManageLabels:()=>af(a.id),onDelete:()=>ae(a.id,a.name)},a.id))})})})}),(0,b.jsxs)(e.default,{href:"/missions",className:`relative z-10 flex items-center gap-2 border-t border-border px-4 py-3 text-[11px] cursor-pointer transition-colors ${"/missions"===j?"text-foreground":"text-muted-foreground hover:text-foreground"}`,children:[(0,b.jsx)(p,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:l("missions.navLabel")})]}),(h=$||a[0]?.id)?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(e.default,{href:`/workspaces/${h}/notes`,className:"relative z-10 flex items-center gap-2 border-t border-border px-4 py-3 text-[11px] text-muted-foreground cursor-pointer hover:text-foreground transition-colors",children:[(0,b.jsx)(m.FileText,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:l("sidebar.notes")})]}),(0,b.jsxs)(e.default,{href:`/workspaces/${h}/assets`,className:"relative z-10 flex items-center gap-2 px-4 py-3 text-[11px] text-muted-foreground cursor-pointer hover:text-foreground transition-colors",children:[(0,b.jsx)(n.FolderOpen,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:l("sidebar.assets")})]}),(0,b.jsxs)(e.default,{href:`/workspaces/${h}/archive`,className:"relative z-10 flex items-center gap-2 px-4 py-3 text-[11px] text-muted-foreground cursor-pointer hover:text-foreground transition-colors",children:[(0,b.jsx)(f.Archive,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:l("sidebar.archive")})]})]}):null,(0,b.jsx)(N,{open:s,onOpenChange:v,title:l("workspace.create"),name:Q,onNameChange:R,icon:S,onIconChange:T,onSubmit:ab,submitLabel:l("common.create"),nameLabel:l("workspace.name"),iconLabel:l("workspace.icon"),namePlaceholder:l("workspace.namePlaceholder"),cancelLabel:l("common.cancel")}),(0,b.jsx)(N,{open:w,onOpenChange:a=>{B(a),a||V(null)},title:l("workspace.edit"),name:Q,onNameChange:R,icon:S,onIconChange:T,onSubmit:ac,submitLabel:l("common.save"),nameLabel:l("workspace.name"),iconLabel:l("workspace.icon"),namePlaceholder:l("workspace.namePlaceholder"),cancelLabel:l("common.cancel")}),J&&(0,b.jsx)(P,{open:C,onOpenChange:a=>{D(a),a||O(null)},workspaceId:J})]})}function M({ws:a,isActive:c,icon:d,disableDelete:e,t:f,onSelect:g,onEdit:k,onManageLabels:m,onDelete:n}){var o;let p,r,s,{attributes:t,listeners:u,setNodeRef:v,transform:w,transition:x,isDragging:y}=(0,I.useSortable)({id:a.id}),z={transform:J.CSS.Transform.toString(w),transition:x,opacity:y?.4:1};return(0,b.jsxs)("div",{ref:v,style:z,...t,...u,className:`group relative flex touch-none items-center rounded-lg transition-all ${c?"bg-accent ring-1 ring-primary/15":"hover:bg-accent/60"}`,children:[(0,b.jsxs)("button",{onClick:g,className:`flex flex-1 items-center gap-2.5 px-3 py-2.5 text-left ${c?"cursor-default":"cursor-pointer"}`,children:[(0,b.jsx)("span",{className:"flex h-7 w-7 items-center justify-center rounded-md bg-muted text-sm",children:K.includes(d)?d:(0,b.jsx)("span",{className:"text-xs font-semibold text-muted-foreground",children:d})}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsx)("div",{className:`truncate text-sm font-medium ${c?"text-foreground":"text-secondary-foreground"}`,children:a.name}),(0,b.jsx)("div",{className:"text-[11px] text-muted-foreground",children:(o=a.updatedAt,r=Math.floor((p=Date.now()-new Date(o).getTime())/6e4),s=Math.floor(p/36e5),r<60?`${r}m ago`:s<24?`${s}h ago`:`${Math.floor(s/24)}d ago`)})]})]}),(0,b.jsxs)(q.DropdownMenu,{children:[(0,b.jsx)(q.DropdownMenuTrigger,{render:(0,b.jsx)("button",{className:"mr-2 rounded-md p-1 text-muted-foreground opacity-0 transition-all hover:bg-background hover:text-foreground group-hover:opacity-100",onClick:a=>a.stopPropagation()}),children:(0,b.jsx)(j.MoreHorizontal,{className:"h-3.5 w-3.5"})}),(0,b.jsxs)(q.DropdownMenuContent,{align:"start",side:"right",children:[(0,b.jsxs)(q.DropdownMenuItem,{onClick:k,children:[(0,b.jsx)(h.Pencil,{className:"mr-2 h-3.5 w-3.5"}),f("sidebar.rename")]}),(0,b.jsxs)(q.DropdownMenuItem,{onClick:m,children:[(0,b.jsx)(l.Tag,{className:"mr-2 h-3.5 w-3.5"}),f("sidebar.manageLabels")]}),(0,b.jsxs)(q.DropdownMenuItem,{className:e?"text-muted-foreground opacity-50":"text-rose-400",disabled:e,onClick:n,children:[(0,b.jsx)(i.Trash2,{className:"mr-2 h-3.5 w-3.5"}),f("sidebar.delete")]})]})]})]})}function N({open:a,onOpenChange:c,title:d,name:e,onNameChange:f,icon:g,onIconChange:h,onSubmit:i,submitLabel:j,nameLabel:k,iconLabel:l,namePlaceholder:m,cancelLabel:n}){return(0,b.jsx)(s.Dialog,{open:a,onOpenChange:c,disablePointerDismissal:!0,children:(0,b.jsxs)(s.DialogContent,{className:"sm:max-w-sm",children:[(0,b.jsx)(s.DialogHeader,{children:(0,b.jsx)(s.DialogTitle,{children:d})}),(0,b.jsxs)("div",{className:"space-y-4 py-2",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:k}),(0,b.jsx)(v.Input,{placeholder:m,value:e,onChange:a=>f(a.target.value),onKeyDown:a=>"Enter"===a.key&&a.preventDefault(),className:"mt-1.5"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:l}),(0,b.jsx)("div",{className:"mt-1.5 grid grid-cols-6 gap-1.5",children:K.map(a=>(0,b.jsx)("button",{onClick:()=>h(a),className:`flex h-10 w-10 items-center justify-center rounded-lg text-lg transition-all ${g===a?"bg-primary/15 ring-2 ring-primary/30 scale-110":"bg-muted hover:bg-accent"}`,children:a},a))})]})]}),(0,b.jsxs)(s.DialogFooter,{children:[(0,b.jsx)(u.Button,{variant:"outline",onClick:()=>c(!1),children:n}),(0,b.jsx)(u.Button,{onClick:i,disabled:!e.trim(),className:"bg-primary/10 text-primary ring-1 ring-primary/20 hover:bg-primary/15",children:j})]})]})})}let O=["#3b82f6","#ef4444","#f59e0b","#10b981","#8b5cf6","#ec4899","#06b6d4","#f97316"];function P({open:a,onOpenChange:d,workspaceId:e}){let{t:f}=(0,F.useI18n)(),[g,h]=(0,c.useState)([]),[i,j]=(0,c.useState)(""),[k,l]=(0,c.useState)(O[0]);(0,c.useEffect)(()=>{a&&(0,B.getLabelsForWorkspace)(e).then(h)},[a,e]);let m=async()=>{i.trim()&&(await C({name:i.trim(),color:k,workspaceId:e}),h(await (0,B.getLabelsForWorkspace)(e)),j(""))},n=async a=>{await D(a),h(b=>b.filter(b=>b.id!==a))};return(0,b.jsx)(s.Dialog,{open:a,onOpenChange:d,disablePointerDismissal:!0,children:(0,b.jsxs)(s.DialogContent,{className:"sm:max-w-sm",children:[(0,b.jsx)(s.DialogHeader,{children:(0,b.jsx)(s.DialogTitle,{children:f("label.manage")})}),(0,b.jsxs)("div",{className:"space-y-3 py-2",children:[g.map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"h-3 w-3 rounded-full",style:{backgroundColor:a.color}}),(0,b.jsx)("span",{className:"flex-1 text-sm text-foreground",children:a.name}),a.isBuiltin?(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:f("label.builtin")}):(0,b.jsx)("button",{onClick:()=>n(a.id),className:"text-xs text-rose-400 hover:text-rose-300",children:f("common.delete")})]},a.id)),(0,b.jsxs)("div",{className:"border-t border-border pt-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(v.Input,{placeholder:f("label.name"),value:i,onChange:a=>j(a.target.value),onKeyDown:a=>"Enter"===a.key&&a.preventDefault(),className:"flex-1 h-8"}),(0,b.jsx)(u.Button,{size:"sm",onClick:m,disabled:!i.trim(),className:"bg-primary/10 text-primary ring-1 ring-primary/20 hover:bg-primary/15",children:f("label.add")})]}),(0,b.jsx)("div",{className:"mt-2 flex gap-1.5",children:O.map(a=>(0,b.jsx)("button",{onClick:()=>l(a),className:`h-5 w-5 rounded-full transition-all ${k===a?"ring-2 ring-offset-2 ring-offset-background ring-foreground/30 scale-110":""}`,style:{backgroundColor:a}},a))})]})]})]})})}a.i(423993);var Q=a.i(267654),R=a.i(818862);let S=(0,R.create)(a=>({createProjectOpen:!1,importProjectOpen:!1,setCreateProjectOpen:b=>a({createProjectOpen:b}),setImportProjectOpen:b=>a({importProjectOpen:b})}));var T=a.i(940271),U=a.i(573242),V=a.i(369289);let W=(0,o.default)("command",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]);var X=a.i(851378);let Y=(0,o.default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);var Z=a.i(761052),$=a.i(86354);a.s([],516474),a.i(516474);var _=a.i(213200),aa=a.i(862306);let ab=c.createContext(void 0);function ac(){let a=c.useContext(ab);if(void 0===a)throw Error((0,aa.default)(13));return a}let ad={imageLoadingStatus:()=>null},ae=c.forwardRef(function(a,d){let{className:e,render:f,...g}=a,[h,i]=c.useState("idle"),j=c.useMemo(()=>({imageLoadingStatus:h,setImageLoadingStatus:i}),[h,i]),k=(0,_.useRenderElement)("span",a,{state:{imageLoadingStatus:h},ref:d,props:g,stateAttributesMapping:ad});return(0,b.jsx)(ab.Provider,{value:j,children:k})});var af=a.i(74686),ag=a.i(830067),ah=a.i(398312),ai=a.i(380562),aj=a.i(904531),ak=a.i(535011);let al={...ad,...ai.transitionStatusMapping},am=c.forwardRef(function(a,b){let{className:d,render:e,onLoadingStatusChange:f,referrerPolicy:g,crossOrigin:h,...i}=a,j=ac(),k=function(a,{referrerPolicy:b,crossOrigin:d}){let[e,f]=c.useState("idle");return(0,ag.useIsoLayoutEffect)(()=>{if(!a)return f("error"),ak.NOOP;let c=!0,e=new window.Image,g=a=>()=>{c&&f(a)};return f("loading"),e.onload=g("loaded"),e.onerror=g("error"),b&&(e.referrerPolicy=b),e.crossOrigin=d??null,e.src=a,()=>{c=!1}},[a,d,b]),e}(a.src,{referrerPolicy:g,crossOrigin:h}),l="loaded"===k,{mounted:m,transitionStatus:n,setMounted:o}=(0,aj.useTransitionStatus)(l),p=c.useRef(null),q=(0,af.useStableCallback)(a=>{f?.(a),j.setImageLoadingStatus(a)});(0,ag.useIsoLayoutEffect)(()=>{"idle"!==k&&q(k)},[k,q]),(0,ah.useOpenChangeComplete)({open:l,ref:p,onComplete(){l||o(!1)}});let r=(0,_.useRenderElement)("img",a,{state:{imageLoadingStatus:k,transitionStatus:n},ref:[b,p],props:i,stateAttributesMapping:al,enabled:m});return m?r:null});var an=a.i(102934);let ao=c.forwardRef(function(a,b){let{className:d,render:e,delay:f,...g}=a,{imageLoadingStatus:h}=ac(),[i,j]=c.useState(void 0===f),k=(0,an.useTimeout)();return c.useEffect(()=>(void 0!==f&&k.start(f,()=>j(!0)),k.clear),[k,f]),(0,_.useRenderElement)("span",a,{state:{imageLoadingStatus:h},ref:b,props:g,stateAttributesMapping:ad,enabled:"loaded"!==h&&i})});a.s(["Fallback",0,ao,"Image",0,am,"Root",0,ae],991134);var ap=a.i(991134),ap=ap,aq=a.i(368114);function ar({className:a,size:c="default",...d}){return(0,b.jsx)(ap.Root,{"data-slot":"avatar","data-size":c,className:(0,aq.cn)("group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten",a),...d})}function as({className:a,...c}){return(0,b.jsx)(ap.Fallback,{"data-slot":"avatar-fallback",className:(0,aq.cn)("flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs",a),...c})}let at=(0,o.default)("folder-kanban",[["path",{d:"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z",key:"1fr9dc"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M12 10v2",key:"hh53o1"}],["path",{d:"M16 10v6",key:"1d6xys"}]]);var au=a.i(577565);let av=(0,o.default)("sticky-note",[["path",{d:"M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z",key:"1dfntj"}],["path",{d:"M15 3v5a1 1 0 0 0 1 1h5",key:"6s6qgf"}]]),aw=(0,o.default)("package-2",[["path",{d:"M12 3v6",key:"1holv5"}],["path",{d:"M16.76 3a2 2 0 0 1 1.8 1.1l2.23 4.479a2 2 0 0 1 .21.891V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V9.472a2 2 0 0 1 .211-.894L5.45 4.1A2 2 0 0 1 7.24 3z",key:"187q7i"}],["path",{d:"M3.054 9.013h17.893",key:"grwhos"}]]);var ax=a.i(54384);let ay=(0,w.createServerReference)("60cf23e9d6bb1d872fa7890cdd536b57fa0d834f17",w.callServer,void 0,w.findSourceMapURL,"globalSearch");var az=a.i(889214);let aA=[{id:"all",key:"search.all",icon:U.Search},{id:"task",key:"search.task",icon:m.FileText},{id:"project",key:"search.project",icon:at},{id:"repository",key:"search.repository",icon:au.GitBranch},{id:"note",key:"search.note",icon:av},{id:"asset",key:"search.asset",icon:aw}],aB=["task","project","repository","note","asset"],aC={task:"search.task",project:"search.project",repository:"search.repository",note:"search.note",asset:"search.asset"};function aD({result:a,onSelect:c}){let d=aA.find(b=>b.id===a.type)?.icon??m.FileText;return(0,b.jsxs)("button",{onClick:()=>c(a),className:"flex w-full items-center gap-3 border-b border-border/30 px-4 py-3 text-left transition-colors hover:bg-accent last:border-b-0",children:[(0,b.jsx)("div",{className:"rounded-md bg-muted p-1.5",children:(0,b.jsx)(d,{className:"h-3.5 w-3.5 text-muted-foreground"})}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsx)("div",{className:"text-sm font-medium text-foreground truncate",children:a.title}),(0,b.jsx)("div",{className:"text-xs text-muted-foreground truncate",children:a.subtitle}),a.snippet&&(0,b.jsx)("div",{className:"text-xs text-muted-foreground/70 truncate mt-0.5",children:a.snippet})]})]})}function aE({open:a,onOpenChange:e}){let f,{t:g}=(0,F.useI18n)(),h=(0,d.useRouter)(),[i,j]=(0,c.useState)(""),[k,l]=(0,c.useState)("all"),[m,n]=(0,c.useState)([]),[o,p]=(0,c.useState)(!1),[q,t]=(0,c.useState)(250),v=(0,c.useRef)(null),w=(0,c.useRef)(null);(0,c.useEffect)(()=>{a&&((0,az.getConfigValue)("search.debounceMs",250).then(t),setTimeout(()=>v.current?.focus(),100),j(""),n([]))},[a]),(0,c.useEffect)(()=>{if(w.current&&clearTimeout(w.current),!i.trim()){n([]),p(!1);return}p(!0);let a=!1;return w.current=setTimeout(async()=>{let b=await ay(i,k);a||(n(b),p(!1))},q),()=>{w.current&&clearTimeout(w.current),a=!0}},[i,k,q]);let x=(0,c.useCallback)(a=>{h.push(a.navigateTo),e(!1)},[h,e]);return(0,b.jsx)(s.Dialog,{open:a,onOpenChange:e,children:(0,b.jsxs)(s.DialogContent,{className:"sm:max-w-lg p-0 gap-0 overflow-hidden !top-[10vh] !-translate-y-0",showCloseButton:!1,children:[(0,b.jsxs)("div",{className:"flex items-center border-b border-border px-4",children:[(0,b.jsx)(U.Search,{className:"h-4 w-4 text-muted-foreground"}),(0,b.jsx)("input",{ref:v,value:i,onChange:a=>j(a.target.value),placeholder:g("search.placeholder"),className:"flex-1 bg-transparent px-3 py-3.5 text-sm text-foreground placeholder-muted-foreground outline-none"}),i&&(0,b.jsx)(u.Button,{variant:"ghost",size:"icon",onClick:()=>{j(""),n([])},className:"text-muted-foreground",children:(0,b.jsx)(ax.X,{className:"h-3.5 w-3.5"})})]}),(0,b.jsx)("div",{className:"flex items-center gap-1 border-b border-border px-4 py-2",children:aA.map(a=>{let c=a.icon;return(0,b.jsxs)("button",{onClick:()=>l(a.id),className:`flex items-center gap-1.5 rounded-md px-2.5 py-1 text-xs font-medium transition-all ${k===a.id?"bg-primary/10 text-primary ring-1 ring-primary/20":"text-muted-foreground hover:bg-accent hover:text-foreground"}`,children:[(0,b.jsx)(c,{className:"h-3 w-3"}),g(a.key)]},a.id)})}),(0,b.jsxs)(r.ScrollArea,{className:"max-h-80",children:[!i.trim()&&(0,b.jsx)("div",{className:"flex items-center justify-center py-12 text-sm text-muted-foreground",children:g("search.typeToSearch")}),i.trim()&&0===m.length&&!o&&(0,b.jsx)("div",{className:"flex items-center justify-center py-12 text-sm text-muted-foreground",children:g("search.noResults")}),"all"===k&&m.length>0&&(f=m.reduce((a,b)=>((a[b.type]??=[]).push(b),a),{}),aB.filter(a=>f[a]?.length).map(a=>(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"px-4 py-1.5 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground bg-muted/50",children:g(aC[a])}),f[a].map(a=>(0,b.jsx)(aD,{result:a,onSelect:x},`${a.type}-${a.id}`))]},a))),"all"!==k&&m.map(a=>(0,b.jsx)(aD,{result:a,onSelect:x},`${a.type}-${a.id}`))]})]})})}function aF(a){}let aG=(0,c.createContext)(null);function aH(){return"u">typeof crypto&&crypto.randomUUID?crypto.randomUUID():`msg-${Date.now()}-${Math.random().toString(36).slice(2,9)}`}let aI="assistant-attachment-cache";function aJ(a,b,c){try{let d=sessionStorage.getItem(aI),e=d?JSON.parse(d):{};e[a]||(e[a]={}),e[a][b]=c,sessionStorage.setItem(aI,JSON.stringify(e))}catch{}}function aK({children:a}){let[d,e]=(0,c.useState)(!1),[f,g]=(0,c.useState)(!1),[h,i]=(0,c.useState)("sidebar"),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)([]),[n,o]=(0,c.useState)("idle"),[p,q]=(0,c.useState)(!1),r=(0,c.useRef)([]),s=(0,c.useRef)(null),t=(0,c.useRef)(null),[u,v]=(0,c.useState)([]),[w,x]=(0,c.useState)(null),y=(0,c.useRef)(!1),z=(0,c.useCallback)(()=>{m([...r.current])},[]),A=(0,c.useCallback)(async()=>{i("dialog"===await (0,az.getConfigValue)("assistant.displayMode","sidebar")?"dialog":"sidebar")},[]);(0,c.useEffect)(()=>{A()},[A]);let B=(0,c.useCallback)(async()=>{v([])},[]),C=(0,c.useCallback)(async a=>{q(!0);try{let b=await fetch(`/api/internal/assistant/sessions?sessionId=${encodeURIComponent(a)}`);if(!b.ok)return;let c=await b.json();if(Array.isArray(c.messages)){r.current=c.messages;let b=function(a){try{let b=sessionStorage.getItem(aI);if(!b)return{};return JSON.parse(b)[a]??{}}catch{return{}}}(a);if(Object.keys(b).length>0){let a=0;r.current=r.current.map(c=>{if("user"===c.role){let d=b[a];if(a++,d?.length)return{...c,attachmentFilenames:d}}return c})}m([...r.current])}}catch{}finally{q(!1)}},[]);(0,c.useEffect)(()=>{B()},[B,C]);let D=(0,c.useCallback)(()=>{t.current?.abort(),s.current=null,y.current=!1,x(null),aF(null),r.current=[],m([]),o("idle")},[]),E=(0,c.useCallback)(a=>{t.current?.abort(),s.current=a,y.current=!0,x(a),aF(a),r.current=[],m([]),o("idle"),C(a)},[C]),F=(0,c.useCallback)(a=>{v([]),w===a&&D()},[w,D]),G=(0,c.useCallback)((a,b)=>{b.trim()&&v([])},[]),H=(0,c.useCallback)(async()=>{g(!0);try{await A(),e(!0)}finally{g(!1)}},[A]),I=(0,c.useCallback)(()=>{e(!1),t.current?.abort()},[]),J=(0,c.useCallback)(()=>{d||f?I():H()},[d,f,I,H]);(0,Q.useActionShortcut)("global.assistant",()=>J());let K=(0,c.useCallback)(async(a,b)=>{if(!a.trim()&&!b?.attachmentFilenames?.length)return;t.current?.abort();let c=new AbortController;t.current=c;let d=0!==r.current.length||y.current?null:a,e=aH();if(r.current=[...r.current,{id:aH(),role:"user",content:a,attachmentFilenames:b?.attachmentFilenames?.length?b.attachmentFilenames:void 0},{id:e,role:"thinking",content:"",isStreaming:!0}],z(),b?.attachmentFilenames?.length&&s.current){let a=r.current.filter(a=>"user"===a.role).length-1;aJ(s.current,a,b.attachmentFilenames)}o("connecting");let f=null;try{let g=await fetch("/api/internal/assistant/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:a,sessionId:s.current,attachmentFilenames:b?.attachmentFilenames??[]}),signal:c.signal});if(!g.ok||!g.body)throw Error(`HTTP ${g.status}`);o("streaming");let h=g.body.getReader(),i=new TextDecoder,j="";for(;;){let{done:a,value:c}=await h.read();if(a)break;let g=(j+=i.decode(c,{stream:!0})).split("\n");for(let a of(j=g.pop()??"",g)){let c;if(a.startsWith("data: ")){try{c=JSON.parse(a.slice(6).trim())}catch{continue}if(c.sessionId){let a=s.current;if(s.current=c.sessionId,d&&!y.current&&c.sessionId!==a){y.current=!0;new Date().toISOString();c.sessionId,function(a){let b=a.trim();b&&b.length>30&&b.slice(0,30)}(d),v([]),x(c.sessionId),aF(c.sessionId),b?.attachmentFilenames?.length&&aJ(c.sessionId,0,b.attachmentFilenames)}}switch(c.type){case"text_delta":{let a=r.current.filter(a=>a.id!==e);f?r.current=a.map(a=>a.id===f?{...a,content:a.content+(c.content??""),isStreaming:!0}:a):(f=aH(),r.current=[...a,{id:f,role:"assistant",content:c.content??"",isStreaming:!0}]),z();break}case"text":{let a=r.current.filter(a=>a.id!==e);f?r.current=a.map(a=>a.id===f?{...a,content:c.content??a.content,isStreaming:!0}:a):(f=aH(),r.current=[...a,{id:f,role:"assistant",content:c.content??"",isStreaming:!0}]),z();break}case"tool_start":{let a=r.current.filter(a=>a.id!==e);f?(r.current=a.map(a=>a.id===f?{...a,isStreaming:!1}:a),f=null):r.current=a,r.current=[...r.current,{id:aH(),role:"tool",content:`Calling ${c.content??"tool"}...`,toolName:c.content,isStreaming:!0}],z();break}case"tool_use":{let a=r.current.filter(a=>a.id!==e),b=f?a.map(a=>a.id===f?{...a,isStreaming:!1}:a):a;f=null,r.current=[...b,{id:aH(),role:"tool",content:JSON.stringify(c.toolInput??{},null,2),toolName:c.content}],z();break}case"tool_result":r.current=[...r.current,{id:aH(),role:"tool",content:String(c.toolOutput??""),toolName:`${c.content??"tool"} (result)`}],z();break;case"error":r.current=[...r.current.filter(a=>a.id!==e),{id:aH(),role:"assistant",content:`Error: ${c.content??"Unknown error"}`}],z(),o("error");break;case"done":f&&(r.current=r.current.map(a=>a.id===f?{...a,isStreaming:!1}:a)),r.current=r.current.filter(a=>a.id!==e),z(),o("idle")}}}}r.current=r.current.filter(a=>a.id!==e),z(),o(a=>"streaming"===a?"idle":a),B()}catch(a){if("AbortError"===a.name)return;r.current=[...r.current.filter(a=>a.id!==e),{id:aH(),role:"assistant",content:`Connection error: ${a.message??"Unknown error"}`}],z(),o("error")}},[z,B]),L=(0,c.useCallback)(()=>{t.current?.abort(),t.current=null;let a=[...r.current].reverse().find(a=>"user"===a.role),b=a?.content??null;if(a){let b=r.current.lastIndexOf(a);r.current=r.current.slice(0,b),m([...r.current])}return o("idle"),b},[]),M=l[l.length-1],N="connecting"===n||"streaming"===n||M?.role==="thinking"&&!0===M.isStreaming;return(0,b.jsx)(aG.Provider,{value:{isOpen:d,isStarting:f,displayMode:h,worktreePath:j,toggleAssistant:J,closeAssistant:I,chatMessages:l,chatStatus:n,isChatThinking:N,isLoadingHistory:p,sendChatMessage:K,cancelChat:L,sessions:u,activeSessionId:w,createNewSession:D,switchSession:E,removeSession:F,renameSession:G,refreshSessions:B},children:a})}function aL(){let a=(0,c.useContext)(aG);if(!a)throw Error("useAssistant must be used within an AssistantProvider");return a}var aM=a.i(704494),aN=a.i(668116),aO=a.i(616335),aP=a.i(394259),aQ=a.i(487410),aR=a.i(429246);function aS(a){return a.replace(/\.git\/?$/,"")}a.i(446786),a.i(814747);let aT=(0,w.createServerReference)("404f498a5d1be80bc6987cb5cd6a45f6320a4a6b10",w.callServer,void 0,w.findSourceMapURL,"resolveGitLocalPath");var aU=a.i(857900),aV=a.i(43775);function aW({open:a,onOpenChange:d,onCreateProject:e}){let{t:f,locale:g}=(0,F.useI18n)(),[h,i]=(0,c.useState)(""),[j,k]=(0,c.useState)(""),[l,m]=(0,c.useState)(""),[o,p]=(0,c.useState)(""),[q,r]=(0,c.useState)(""),[w,x]=(0,c.useState)(!1),[y,z]=(0,c.useState)("FRONTEND"),[A,B]=(0,c.useState)("idle"),[C,D]=(0,c.useState)(""),[E,H]=(0,c.useState)(!1),[I,J]=(0,c.useState)(!1),K=()=>{i(""),k(""),m(""),p(""),r(""),x(!1),z("FRONTEND"),B("idle"),D(""),H(!1)},L=async()=>{if(q.trim()&&!E&&"success"===A){H(!0);try{let a=await (0,aU.analyzeProjectDirectory)(q.trim(),g);m(a)}catch{G.toast.error(f("project.analyzeError"))}finally{H(!1)}}},M=async a=>{p(a),B("idle"),D("");let b=function(a){let b,c=a.match(/^git@([^:]+):(.+)$/);if(c)return{host:c[1],pathSegments:aS(c[2]).split("/").filter(Boolean)};try{b=new URL(a)}catch{return null}return{host:b.hostname,pathSegments:aS(decodeURIComponent(b.pathname)).split("/").filter(Boolean)}}(a);b&&b.pathSegments.length>0&&i(b.pathSegments[b.pathSegments.length-1]),w||r(await aT(a))},N=async()=>{if(o.trim()&&q.trim()){B("cloning"),D("");try{let a=function(a){let b=a.trim();if(!b)return"";if(b.startsWith("git@")||b.startsWith("ssh://")||b.endsWith(".git"))return b;try{let a=new URL(b),c=a.hostname,d=decodeURIComponent(a.pathname).split("/").filter(Boolean);if("code.iflytek.com"===c){let a=[...d];"osc"===a[0]&&"_source"===a[1]&&(a=a.slice(2));let e=a.indexOf("-");if(e>0&&(a=a.slice(0,e)),0===a.length)return b;return`https://${c}/${a.join("/")}.git`}return`${a.origin}${a.pathname.replace(/\/$/,"")}.git`}catch{return b}}(o.trim()),b=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"clone",url:a,path:q.trim()})}),c=await b.json();if(!b.ok){B("error"),D(c.error||"Clone failed");return}B("success")}catch{B("error"),D("Network error")}}},O=async()=>{h.trim()&&(await e?.({name:h.trim(),alias:j.trim()||void 0,description:l.trim()||void 0,gitUrl:o.trim()||void 0,localPath:q.trim()||void 0,projectType:y}),K(),d(!1))};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s.Dialog,{open:a,onOpenChange:a=>{d(a),a||K()},disablePointerDismissal:!0,children:(0,b.jsxs)(s.DialogContent,{style:{maxWidth:"32rem"},children:[(0,b.jsx)(s.DialogHeader,{children:(0,b.jsx)(s.DialogTitle,{children:f("topbar.newProject")})}),(0,b.jsxs)("div",{className:"space-y-4 py-2",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.gitUrl")}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground mt-0.5",children:f("project.gitUrlHint")}),(0,b.jsx)(v.Input,{placeholder:f("project.gitPlaceholder"),value:o,onChange:a=>M(a.target.value),className:"mt-1.5 font-mono text-xs"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.localPath")}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground mt-0.5",children:f("project.localPathHint")}),(0,b.jsxs)("div",{className:"mt-1.5 flex gap-2",children:[(0,b.jsx)(v.Input,{placeholder:f("project.localPathPlaceholder"),value:q,onChange:a=>{r(a.target.value),x(!0)},className:"flex-1 min-w-0 font-mono text-xs"}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsxs)(t.TooltipTrigger,{render:(0,b.jsx)(u.Button,{type:"button",variant:"outline",onClick:()=>J(!0),className:"shrink-0 gap-1.5 px-2.5 text-xs text-muted-foreground"}),children:[(0,b.jsx)(n.FolderOpen,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:f("folder.browse")})]}),(0,b.jsx)(t.TooltipContent,{children:f("folder.selectFolder")})]})]}),q.trim().startsWith("~")&&(0,b.jsxs)("p",{className:"mt-1 flex items-center gap-1 text-[11px] text-amber-400",children:[(0,b.jsx)(aO.AlertCircle,{className:"h-3 w-3"}),f("project.tildeWarning")]}),o.trim()&&q.trim()&&(0,b.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,b.jsxs)(u.Button,{type:"button",disabled:"cloning"===A||"success"===A,onClick:N,className:"gap-1.5 text-xs bg-emerald-500/15 text-emerald-300 ring-1 ring-emerald-500/25 hover:bg-emerald-500/25 disabled:opacity-50",children:["cloning"===A?(0,b.jsx)(aM.Loader2,{className:"h-3 w-3 animate-spin"}):"success"===A?(0,b.jsx)(aN.Check,{className:"h-3 w-3"}):(0,b.jsx)(au.GitBranch,{className:"h-3 w-3"}),"cloning"===A?f("git.cloning"):"success"===A?f("git.cloned"):f("git.clone")]}),"error"===A&&(0,b.jsxs)("span",{className:"flex items-center gap-1 text-[11px] text-rose-400",children:[(0,b.jsx)(aO.AlertCircle,{className:"h-3 w-3"}),C]}),"success"===A&&(0,b.jsx)("span",{className:"text-[11px] text-emerald-400",children:f("git.cloneSuccess")})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.name")}),(0,b.jsx)(v.Input,{placeholder:f("project.namePlaceholder"),value:h,onChange:a=>i(a.target.value),className:"mt-1.5"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.type.label")}),(0,b.jsx)("div",{className:"mt-1.5",children:(0,b.jsx)(aQ.SegmentedControl,{options:[{value:"FRONTEND",label:f("project.type.frontend")},{value:"BACKEND",label:f("project.type.backend")}],value:y,onChange:z})})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.alias")}),(0,b.jsx)(v.Input,{placeholder:f("project.aliasPlaceholder"),value:j,onChange:a=>k(a.target.value),className:"mt-1.5"})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mt-0.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.description")}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsxs)(t.TooltipTrigger,{render:(0,b.jsx)(u.Button,{type:"button",variant:"ghost",onClick:L,className:`h-6 gap-1 px-2 text-[11px] text-muted-foreground hover:text-foreground ${!q.trim()||E?"opacity-50":""}`}),children:[E?(0,b.jsx)(aM.Loader2,{className:"h-3 w-3 animate-spin"}):(0,b.jsx)(aP.Sparkles,{className:"h-3 w-3"}),E?f("project.analyzing"):f("project.genDesc")]}),(0,b.jsx)(t.TooltipContent,{children:q.trim()?"success"!==A?f("project.genDescNotCloned"):f("project.genDescReady"):f("project.genDescNoPath")})]})]}),(0,b.jsx)(aR.Textarea,{placeholder:f("project.descPlaceholder"),value:l,onChange:a=>m(a.target.value),rows:3,className:"mt-1.5 w-full rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground placeholder-muted-foreground outline-none transition-colors focus:border-ring focus:ring-1 focus:ring-ring resize-none max-h-[200px] overflow-y-auto"})]})]}),(0,b.jsxs)(s.DialogFooter,{children:[(0,b.jsx)(u.Button,{variant:"outline",onClick:()=>{d(!1),K()},children:f("common.cancel")}),(0,b.jsx)(u.Button,{onClick:O,disabled:!h.trim()||E,className:"bg-primary/10 text-primary ring-1 ring-primary/25 hover:bg-primary/20",children:f("common.create")})]})]})}),(0,b.jsx)(aV.FolderBrowserDialog,{open:I,onOpenChange:J,onSelect:a=>{if(r(a),x(!0),!h.trim()){let b=a.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).pop()??"";b&&i(b)}}})]})}var aX=a.i(976268),aX=aX,aY=a.i(563658);let aZ=(0,w.createServerReference)("60ce92a356db4e0f1b71c516d451a4c66b267bcd5f",w.callServer,void 0,w.findSourceMapURL,"migrateProjectPath"),a$=(0,w.createServerReference)("4024bb410d7361715d7b27b4e3152ae702f06be58d",w.callServer,void 0,w.findSourceMapURL,"checkMigrationSafety");function a_({open:a,onOpenChange:d,onCreateProject:e}){let{t:f,locale:g}=(0,F.useI18n)(),[h,i]=(0,c.useState)(""),[j,k]=(0,c.useState)(""),[l,m]=(0,c.useState)(""),[o,p]=(0,c.useState)(""),[q,r]=(0,c.useState)(""),[w,x]=(0,c.useState)(!1),[y,z]=(0,c.useState)("FRONTEND"),[A,B]=(0,c.useState)(!1),[C,D]=(0,c.useState)(!1),[E,H]=(0,c.useState)(""),[I,J]=(0,c.useState)(!1),[K,L]=(0,c.useState)(""),[M,N]=(0,c.useState)(""),[O,P]=(0,c.useState)(!1),[Q,R]=(0,c.useState)(!1),S=()=>{i(""),k(""),m(""),p(""),r(""),z("FRONTEND"),B(!1),D(!1),H(""),J(!1),L(""),N(""),P(!1),R(!1)},T=async a=>{r(a),B(!1),D(!1),H(""),L(""),N(""),P(!1),i(a.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).pop()??"");try{let b=await fetch(`/api/git?path=${encodeURIComponent(a)}`);if(b.ok){let a=await b.json();if(a.isGit&&a.remoteUrl){p(a.remoteUrl),B(!0);let b=a.remoteUrl.match(/\/([^/]+?)(?:\.git)?$/);b&&i(b[1])}}}catch{}},U=(0,c.useCallback)(async a=>{if(D(a),L(""),N(""),P(!1),!a)return void H("");if(o)try{let a=await aT(o);a&&(H(a),a===q&&P(!0))}catch{}if(q)try{let a=await fetch(`/api/git?path=${encodeURIComponent(q)}&checkWorktrees=true`);a.ok&&(await a.json()).hasWorktrees&&N(f("project.worktreeWarning"))}catch{}},[o,q]),V=async()=>{if(q&&!Q){R(!0);try{let a=await (0,aU.analyzeProjectDirectory)(q.trim(),g);m(a)}catch{G.toast.error(f("project.analyzeError"))}finally{R(!1)}}},W=async()=>{if(!h.trim())return;let a={name:h.trim(),alias:j.trim()||void 0,description:l.trim()||void 0,gitUrl:o.trim()||void 0,localPath:q.trim()||void 0,projectType:y},b=await e?.(a);if(C&&E&&E!==q&&b&&"id"in b){J(!0),L("");try{let a=await a$(b.id);if(!a.safe)return void L(a.reason);let c=await aZ(b.id,E);if(!c.success)return void L(c.error??f("project.migrateError"));G.toast.success(f("project.migrateSuccess"))}catch(b){let a=b instanceof Error?b.message:String(b);L(`${f("project.migrateError")}:${a}`);return}finally{J(!1)}}S(),d(!1)},X=!h.trim()||!q.trim()||I||Q||C&&!!M;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s.Dialog,{open:a,onOpenChange:a=>{d(a),a||S()},disablePointerDismissal:!0,children:(0,b.jsxs)(s.DialogContent,{style:{maxWidth:"32rem"},children:[(0,b.jsx)(s.DialogHeader,{children:(0,b.jsx)(s.DialogTitle,{children:f("topbar.importProject")})}),(0,b.jsxs)("div",{className:"space-y-4 py-2",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.localPath")}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground mt-0.5",children:f("project.importHint")}),(0,b.jsxs)("div",{className:"mt-1.5 flex gap-2",children:[(0,b.jsx)(v.Input,{value:q,readOnly:!0,placeholder:f("project.localPathPlaceholder"),className:"flex-1 font-mono text-xs bg-muted/30"}),(0,b.jsxs)(u.Button,{type:"button",variant:"outline",onClick:()=>x(!0),className:"shrink-0 gap-1.5",children:[(0,b.jsx)(n.FolderOpen,{className:"h-3.5 w-3.5"}),f("folder.browse")]})]}),A&&(0,b.jsx)("p",{className:"mt-1.5 text-[11px] text-emerald-400",children:f("project.autoDetected")})]}),o&&(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.gitUrl")}),(0,b.jsx)(v.Input,{value:o,onChange:a=>p(a.target.value),className:"mt-1.5 font-mono text-xs"})]}),A&&q&&(0,b.jsxs)("div",{className:"rounded-md border border-border p-3 space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("span",{className:"text-xs font-medium",children:f("project.migrate")}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground mt-0.5",children:f("project.migrateHint")})]}),(0,b.jsx)(aY.Switch,{checked:C,onCheckedChange:a=>U(a)})]}),C&&(0,b.jsxs)("div",{className:"space-y-2 pt-1",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-[10px] font-medium text-muted-foreground",children:f("project.targetPath")}),(0,b.jsx)(v.Input,{value:E,onChange:a=>{H(a.target.value),P(a.target.value===q)},placeholder:"/path/to/canonical/location",className:"mt-1 font-mono text-xs"})]}),O&&(0,b.jsxs)("p",{className:"flex items-center gap-1 text-[11px] text-sky-400",children:[(0,b.jsx)(aX.default,{className:"h-3 w-3"}),f("project.samePathInfo")]}),M&&(0,b.jsxs)("p",{className:"flex items-center gap-1 text-[11px] text-amber-400",children:[(0,b.jsx)(aO.AlertCircle,{className:"h-3 w-3"}),M]}),K&&(0,b.jsxs)("p",{className:"flex items-center gap-1 text-[11px] text-rose-400",children:[(0,b.jsx)(aO.AlertCircle,{className:"h-3 w-3"}),K]})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.name")}),(0,b.jsx)(v.Input,{placeholder:f("project.namePlaceholder"),value:h,onChange:a=>i(a.target.value),className:"mt-1.5"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.type.label")}),(0,b.jsx)("div",{className:"mt-1.5",children:(0,b.jsx)(aQ.SegmentedControl,{options:[{value:"FRONTEND",label:f("project.type.frontend")},{value:"BACKEND",label:f("project.type.backend")}],value:y,onChange:z})})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.alias")}),(0,b.jsx)(v.Input,{placeholder:f("project.aliasPlaceholder"),value:j,onChange:a=>k(a.target.value),className:"mt-1.5"})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mt-0.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:f("project.description")}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsxs)(t.TooltipTrigger,{render:(0,b.jsx)(u.Button,{type:"button",variant:"ghost",onClick:V,className:`h-6 gap-1 px-2 text-[11px] text-muted-foreground hover:text-foreground ${!q||Q?"opacity-50":""}`}),children:[Q?(0,b.jsx)(aM.Loader2,{className:"h-3 w-3 animate-spin"}):(0,b.jsx)(aP.Sparkles,{className:"h-3 w-3"}),Q?f("project.analyzing"):f("project.genDesc")]}),(0,b.jsx)(t.TooltipContent,{children:q?f("project.genDescReady"):f("project.genDescNoPath")})]})]}),(0,b.jsx)(aR.Textarea,{placeholder:f("project.descPlaceholder"),value:l,onChange:a=>m(a.target.value),rows:3,className:"mt-1.5 w-full rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground placeholder-muted-foreground outline-none transition-colors focus:border-ring focus:ring-1 focus:ring-ring resize-none max-h-[200px] overflow-y-auto"})]})]}),(0,b.jsxs)(s.DialogFooter,{children:[(0,b.jsx)(u.Button,{variant:"outline",onClick:()=>{d(!1),S()},children:f("common.cancel")}),(0,b.jsx)(u.Button,{onClick:W,disabled:X,className:"bg-primary/10 text-primary ring-1 ring-primary/25 hover:bg-primary/20",children:I?f("project.migrating"):f("common.create")})]})]})}),(0,b.jsx)(aV.FolderBrowserDialog,{open:w,onOpenChange:x,onSelect:a=>T(a)})]})}function a0({className:a}){return(0,b.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",className:a,children:(0,b.jsx)("path",{d:"M12 .5C5.65.5.5 5.65.5 12.02c0 5.08 3.29 9.39 7.86 10.91.58.11.79-.25.79-.56v-2c-3.2.7-3.87-1.36-3.87-1.36-.52-1.34-1.27-1.7-1.27-1.7-1.04-.71.08-.7.08-.7 1.15.08 1.76 1.18 1.76 1.18 1.02 1.76 2.68 1.25 3.34.96.1-.74.4-1.25.72-1.54-2.56-.29-5.25-1.28-5.25-5.69 0-1.26.45-2.28 1.18-3.09-.12-.29-.51-1.46.11-3.04 0 0 .97-.31 3.18 1.18a11.1 11.1 0 0 1 5.79 0c2.2-1.49 3.18-1.18 3.18-1.18.62 1.58.23 2.75.11 3.04.74.81 1.18 1.83 1.18 3.09 0 4.42-2.69 5.4-5.25 5.69.41.36.78 1.05.78 2.12v3.14c0 .31.21.68.79.56A11.52 11.52 0 0 0 23.5 12.02C23.5 5.65 18.35.5 12 .5Z"})})}function a1({onCreateProject:a,username:e}){let{t:f,locale:h,setLocale:i}=(0,F.useI18n)(),{isOpen:j,toggleAssistant:k}=aL(),{resolvedTheme:l,toggleTheme:m,triggerRef:o}=function(){let{resolvedTheme:a,setTheme:b}=(0,T.useTheme)(),d=(0,c.useRef)(null),e=(0,c.useCallback)(c=>{let d="dark"===a?"light":"dark";if("u">typeof document&&"startViewTransition"in document&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches){let a=c?.clientX??window.innerWidth/2,e=c?.clientY??0,f=Math.hypot(Math.max(a,window.innerWidth-a),Math.max(e,window.innerHeight-e));document.startViewTransition(()=>{b(d)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${a}px ${e}px)`,`circle(${f}px at ${a}px ${e}px)`]},{duration:400,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})}else b(d)},[a,b]);return{resolvedTheme:a,toggleTheme:e,triggerRef:d}}(),p=(0,d.useRouter)(),[r,s]=(0,c.useState)(!1),[v,w]=(0,c.useState)(!1),[x,y]=(0,c.useState)(!1);(0,Q.useActionShortcut)("global.search",()=>s(!0));let z=S(a=>a.createProjectOpen),A=S(a=>a.importProjectOpen),B=S(a=>a.setCreateProjectOpen),C=S(a=>a.setImportProjectOpen);return(0,c.useEffect)(()=>{z&&w(!0)},[z]),(0,c.useEffect)(()=>{A&&y(!0)},[A]),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("header",{className:"flex h-12 items-center justify-between border-b border-border bg-background/80 px-5 backdrop-blur-sm",children:[(0,b.jsx)("div",{className:"w-40"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)(u.Button,{variant:"outline",onClick:()=>s(!0),className:"h-8 w-[400px] justify-start gap-2 bg-muted/50 text-muted-foreground hover:bg-muted",children:[(0,b.jsx)(U.Search,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{className:"flex-1 text-left",suppressHydrationWarning:!0,children:f("topbar.searchPlaceholder")}),(0,b.jsxs)("kbd",{className:"mr-1 flex items-center gap-0.5 rounded border border-border bg-background px-1.5 py-0.5 text-[10px] font-mono",children:[(0,b.jsx)(W,{className:"h-2.5 w-2.5"}),"K"]})]}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{delay:500,render:(0,b.jsx)("button",{"data-tour":"open-assistant",onClick:k,"aria-label":f("assistant.iconLabel"),className:["cursor-pointer rounded-lg p-2 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",j?"bg-accent text-foreground":""].join(" ")}),children:(0,b.jsx)(Y,{className:"h-4 w-4"})}),(0,b.jsx)(t.TooltipContent,{children:f("assistant.iconLabel")})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsxs)(t.TooltipTrigger,{render:(0,b.jsx)(u.Button,{variant:"ghost",onClick:()=>i("zh"===h?"en":"zh"),className:"text-muted-foreground"}),children:[(0,b.jsx)(X.Globe,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{className:"text-[11px] font-semibold",children:"zh"===h?"EN":"中"})]}),(0,b.jsx)(t.TooltipContent,{children:f("settings.language")})]}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)(u.Button,{ref:o,variant:"ghost",size:"icon",onClick:m,className:"text-muted-foreground"}),children:"dark"===l?(0,b.jsx)(Z.Sun,{className:"h-4 w-4"}):(0,b.jsx)($.Moon,{className:"h-4 w-4"})}),(0,b.jsx)(t.TooltipContent,{children:f("settings.theme")})]}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{render:(0,b.jsx)(u.Button,{variant:"ghost",size:"icon",onClick:()=>window.open("https://github.com/jp-liu/tower","_blank","noopener,noreferrer"),className:"text-muted-foreground","aria-label":f("topbar.github")}),children:(0,b.jsx)(a0,{className:"h-4 w-4"})}),(0,b.jsx)(t.TooltipContent,{children:f("topbar.github")})]}),(0,b.jsx)("div",{className:"h-4 w-px bg-border"}),(0,b.jsxs)(u.Button,{variant:"outline",className:"gap-1.5 ring-1 ring-border hover:bg-accent",onClick:()=>y(!0),children:[(0,b.jsx)(n.FolderOpen,{className:"h-3.5 w-3.5"}),f("topbar.importProject")]}),(0,b.jsxs)(u.Button,{"data-tour":"create-project",className:"gap-1.5 bg-primary/10 text-primary ring-1 ring-primary/25 hover:bg-primary/20",onClick:()=>w(!0),children:[(0,b.jsx)(g.Plus,{className:"h-3.5 w-3.5"}),f("topbar.newProject")]}),(0,b.jsxs)(q.DropdownMenu,{children:[(0,b.jsx)(q.DropdownMenuTrigger,{render:(0,b.jsxs)("button",{className:"ml-0.5 flex cursor-pointer items-center gap-1.5 rounded-lg px-2.5 py-1 transition-colors hover:bg-accent",children:[e&&(0,b.jsx)("span",{className:"max-w-[80px] truncate text-xs text-muted-foreground",children:e}),(0,b.jsx)(ar,{className:"h-7 w-7 ring-1 ring-border",children:(0,b.jsx)(as,{className:"bg-emerald-500/20 text-emerald-400 text-[10px] font-semibold",children:e?e.trim().split(/\s+/).filter(a=>a.length>0).slice(0,2).map(a=>a[0].toUpperCase()).join(""):"U"})})]})}),(0,b.jsx)(q.DropdownMenuContent,{align:"end",sideOffset:8,className:"w-40",children:(0,b.jsxs)(q.DropdownMenuItem,{onClick:()=>p.push("/settings"),children:[(0,b.jsx)(V.Settings,{className:"mr-2 h-3.5 w-3.5"}),f("settings.title")]})})]})]})]}),(0,b.jsx)(aE,{open:r,onOpenChange:s}),(0,b.jsx)(aW,{open:v,onOpenChange:a=>{w(a),a||B(!1)},onCreateProject:a}),(0,b.jsx)(a_,{open:x,onOpenChange:a=>{y(a),a||C(!1)},onCreateProject:a})]})}var a2=a.i(347872),a3=a.i(595999),a4=a.i(739283),a5=a.i(969032),a6=a.i(442620);let a7=(0,a5.default)(async()=>{},{loadableGenerated:{modules:[103363]},ssr:!1});function a8({mode:a}){let{isOpen:d,closeAssistant:e,sessions:f,activeSessionId:j,createNewSession:k,switchSession:l,removeSession:m,renameSession:n}=aL(),{t:o}=(0,F.useI18n)(),[p,r]=(0,c.useState)(null),[t,w]=(0,c.useState)(""),x=()=>{r(null),w("")},y=()=>{p&&t.trim()&&(n(p.id,t),x())},z=f.find(a=>a.id===j),A=z?.title??o("assistant.newSession");return(0,b.jsxs)("div",{className:"sidebar"===a?"min-w-[320px] max-w-[480px] w-[30vw] shrink-0 border-r border-border flex flex-col bg-sidebar overflow-hidden":"flex flex-col h-full overflow-hidden",children:[(0,b.jsxs)("div",{className:"header-sm flex items-center px-4 gap-2 bg-sidebar",children:[(0,b.jsx)(Y,{className:"h-4 w-4 text-muted-foreground shrink-0"}),(0,b.jsx)("span",{className:"text-sm font-semibold text-foreground shrink-0",children:o("assistant.title")}),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"flex-1"}),(0,b.jsxs)(q.DropdownMenu,{children:[(0,b.jsxs)(q.DropdownMenuTrigger,{className:"flex items-center gap-1 h-8 px-2 rounded-md text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground max-w-[120px] truncate","aria-label":o("assistant.sessionList"),children:[(0,b.jsx)("span",{className:"truncate",children:A}),(0,b.jsx)(a6.ChevronDown,{className:"h-3 w-3 shrink-0"})]}),(0,b.jsxs)(q.DropdownMenuContent,{side:"bottom",align:"end",sideOffset:4,className:"w-[280px]",children:[0===f.length?(0,b.jsx)("div",{className:"px-2 py-4 text-xs text-muted-foreground text-center",children:o("assistant.noSessions")}):f.map(a=>(0,b.jsxs)(q.DropdownMenuItem,{className:"flex items-center justify-between gap-1 pr-1",onClick:()=>l(a.id),children:[(0,b.jsxs)("div",{className:"flex flex-col gap-0.5 flex-1 min-w-0",children:[(0,b.jsx)("span",{className:"text-xs truncate",children:a.title}),(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:function(a){let b=Math.floor((Date.now()-new Date(a).getTime())/1e3);if(b<60)return`${b}s ago`;let c=Math.floor(b/60);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);if(d<24)return`${d}h ago`;let e=Math.floor(d/24);return`${e}d ago`}(a.updatedAt)})]}),(0,b.jsx)(u.Button,{variant:"ghost",className:"h-6 w-6 p-0 shrink-0 opacity-50 hover:opacity-100",onClick:b=>{var c;b.stopPropagation(),r({id:a.id,title:c=a.title}),w(c)},"aria-label":o("assistant.renameSession"),children:(0,b.jsx)(h.Pencil,{className:"h-3 w-3"})}),(0,b.jsx)(u.Button,{variant:"ghost",className:"h-6 w-6 p-0 shrink-0 opacity-50 hover:opacity-100 hover:text-destructive",onClick:b=>{b.stopPropagation(),m(a.id)},"aria-label":o("assistant.deleteSession"),children:(0,b.jsx)(i.Trash2,{className:"h-3 w-3"})})]},a.id)),f.length>0&&(0,b.jsx)(q.DropdownMenuSeparator,{}),(0,b.jsxs)(q.DropdownMenuItem,{onClick:k,children:[(0,b.jsx)(g.Plus,{className:"h-3 w-3 mr-1"}),(0,b.jsx)("span",{className:"text-xs",children:o("assistant.newSession")})]})]})]}),(0,b.jsx)(u.Button,{variant:"ghost",size:"icon",className:"text-muted-foreground",onClick:k,"aria-label":o("assistant.newSession"),children:(0,b.jsx)(g.Plus,{className:"h-4 w-4"})})]}),(0,b.jsx)(u.Button,{variant:"ghost",size:"icon",className:"text-muted-foreground",onClick:e,"aria-label":o("assistant.closeLabel"),children:(0,b.jsx)(ax.X,{className:"h-4 w-4"})})]}),(0,b.jsx)("div",{className:"flex-1 overflow-hidden",children:d?(0,b.jsx)(a7,{}):null}),(0,b.jsx)(s.Dialog,{open:null!==p,onOpenChange:a=>{a||x()},children:(0,b.jsxs)(s.DialogContent,{children:[(0,b.jsx)(s.DialogHeader,{children:(0,b.jsx)(s.DialogTitle,{children:o("assistant.renameSessionTitle")})}),(0,b.jsx)(v.Input,{autoFocus:!0,value:t,onChange:a=>w(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.preventDefault(),y())},placeholder:o("assistant.renameSessionPlaceholder")}),(0,b.jsxs)(s.DialogFooter,{children:[(0,b.jsx)(u.Button,{variant:"outline",onClick:x,children:o("common.cancel")}),(0,b.jsx)(u.Button,{onClick:y,disabled:!t.trim(),children:o("common.save")})]})]})})]})}var a9=a.i(190076);function ba({onDismiss:a}){let{t:d}=(0,F.useI18n)(),[e,f]=(0,c.useState)(!1);(0,c.useEffect)(()=>{},[]);let g=async()=>{"default"!==await window.Notification.requestPermission()&&(f(!1),a?.())};return e?(0,b.jsxs)("div",{className:"fixed top-3 left-1/2 -translate-x-1/2 z-[9999] w-auto max-w-lg bg-card border rounded-lg shadow-lg px-4 py-2.5 flex items-center gap-3 animate-in fade-in slide-in-from-top-4 duration-500",children:[(0,b.jsx)(a9.Bell,{className:"h-4 w-4 shrink-0 text-primary"}),(0,b.jsx)("span",{className:"flex-1 text-sm",children:d("notification.permissionPrompt")}),(0,b.jsx)(u.Button,{size:"default",onClick:g,children:d("notification.allow")}),(0,b.jsx)(u.Button,{variant:"ghost",size:"default",onClick:()=>{f(!1),a?.()},children:d("notification.dismiss")})]}):null}a.i(687874);var bb=a.i(796233);let bc=[{target:"create-workspace",titleKey:"tour.step1.title",descKey:"tour.step1.desc",placement:"right"},{target:"create-project",titleKey:"tour.step2.title",descKey:"tour.step2.desc",placement:"bottom",waitForTarget:!0},{target:"open-assistant",titleKey:"tour.step3.title",descKey:"tour.step3.desc",placement:"bottom"}];function bd({onComplete:a}){let{t:d}=(0,F.useI18n)(),[e,f]=(0,c.useState)(0),[g,h]=(0,c.useState)(null),[i,j]=(0,c.useState)(!1),k=(0,c.useRef)(null),l=bc[e],m=(0,c.useCallback)(async()=>{await (0,bb.setConfigValue)("onboarding.tourCompleted",!0),a()},[a]),n=(0,c.useCallback)(()=>l?document.querySelector(`[data-tour="${l.target}"]`):null,[l]),o=(0,c.useCallback)(()=>{let a=n();a?(h(a.getBoundingClientRect()),j(!0)):j(!1)},[n]);(0,c.useEffect)(()=>{o();let a=null;!i&&l?.waitForTarget&&(k.current=new MutationObserver(()=>{let b=n();b&&(h(b.getBoundingClientRect()),j(!0),k.current?.disconnect(),a&&clearTimeout(a))}),k.current.observe(document.body,{childList:!0,subtree:!0}),a=setTimeout(()=>{!n()&&(f(a=>{let b=a+1;return b<bc.length?b:a}),e>=bc.length-1&&m())},5e3));let b=()=>o();return window.addEventListener("resize",b),window.addEventListener("scroll",b,!0),()=>{k.current?.disconnect(),a&&clearTimeout(a),window.removeEventListener("resize",b),window.removeEventListener("scroll",b,!0)}},[e,l,n,o,i,m]),(0,c.useEffect)(()=>{let a=setInterval(o,1e3);return()=>clearInterval(a)},[o]);let p=(0,c.useCallback)(()=>{e<bc.length-1?(f(a=>a+1),j(!1)):m()},[e]);return l?(0,b.jsx)(b.Fragment,{children:i&&g&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"fixed inset-0 z-[10000]",style:{background:`radial-gradient(
|
|
2
2
|
ellipse at ${g.left+g.width/2}px ${g.top+g.height/2}px,
|
|
3
3
|
transparent ${Math.max(g.width,g.height)}px,
|
|
4
4
|
rgba(0,0,0,0.6) ${Math.max(g.width,g.height)+30}px
|
|
5
|
-
)`},onClick:p}),(0,b.jsx)("div",{className:"pointer-events-none fixed z-[10001] rounded-lg ring-2 ring-amber-400 ring-offset-2 ring-offset-background",style:{left:g.left-4,top:g.top-4,width:g.width+8,height:g.height+8}}),(0,b.jsxs)("div",{className:"fixed z-[10002] w-72 rounded-xl border border-border bg-card p-4 shadow-2xl",style:(()=>{if(!g)return{display:"none"};let a={position:"fixed",zIndex:10001};switch(l.placement){case"right":a.left=g.right+12,a.top=g.top+g.height/2,a.transform="translateY(-50%)";break;case"bottom":a.left=g.left+g.width/2,a.top=g.bottom+12,a.transform="translateX(-50%)";break;case"left":a.right=window.innerWidth-g.left+12,a.top=g.top+g.height/2,a.transform="translateY(-50%)";break;case"top":a.left=g.left+g.width/2,a.bottom=window.innerHeight-g.top+12,a.transform="translateX(-50%)"}return a})(),children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:d(l.titleKey)}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground leading-relaxed",children:d(l.descKey)})]}),(0,b.jsx)("button",{onClick:m,className:"shrink-0 rounded-md p-1 text-muted-foreground hover:bg-accent hover:text-foreground",children:(0,b.jsx)(at.X,{className:"h-3.5 w-3.5"})})]}),(0,b.jsxs)("div",{className:"mt-3 flex items-center justify-between",children:[(0,b.jsx)("div",{className:"flex gap-1",children:a8.map((a,c)=>(0,b.jsx)("div",{className:`h-1.5 w-1.5 rounded-full ${c===e?"bg-amber-400":c<e?"bg-amber-400/40":"bg-muted"}`},c))}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(u.Button,{variant:"ghost",className:"h-7 px-2 text-xs text-muted-foreground",onClick:m,children:d("tour.skip")}),(0,b.jsx)(u.Button,{className:"h-7 px-3 text-xs bg-amber-500/15 text-amber-300 ring-1 ring-amber-500/25 hover:bg-amber-500/25",onClick:p,children:d(e<a8.length-1?"tour.next":"tour.done")})]})]})]})]})}):null}function ba({workspaces:a,isFirstRun:e,username:f,children:g,handleCreateProject:h}){let i=(0,d.usePathname)(),j=(0,d.useRouter)(),{isOpen:k,displayMode:l,closeAssistant:m}=aH();(0,c.useEffect)(()=>{e&&!i.startsWith("/onboarding")&&j.replace("/onboarding")},[e,i,j]);let[n,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(!1);(0,c.useEffect)(()=>{e||i.startsWith("/onboarding")||(0,av.getConfigValue)("onboarding.tourCompleted",!1).then(a=>{a?q(!0):o(!0)})},[e,i]);let r=()=>{o(!1),q(!0)},[t,u]=(0,c.useState)(!0);(0,c.useEffect)(()=>{(0,av.getConfigValue)("notification.enabled",!0).then(u)},[]);let v=i.startsWith("/onboarding");if(!function(a){let b=(0,d.useRouter)(),e=(0,c.useRef)(b),f=(0,c.useRef)(a),{t:g}=(0,E.useI18n)(),h=(0,c.useRef)(g);e.current=b,f.current=a,h.current=g,(0,c.useEffect)(()=>{},[a])}(t&&!v),v)return(0,b.jsx)(b.Fragment,{children:g});let w=/\/workspaces\/[^/]+\/tasks\/[^/]+/.test(i),x=/\/workspaces\/[^/]+\/(notes|assets|archive)/.test(i),y=k&&"sidebar"===l?(0,b.jsx)(a4,{mode:"sidebar"}):null,z="dialog"===l?(0,b.jsx)(s.Dialog,{open:k,onOpenChange:a=>{a||m()},children:(0,b.jsx)(s.DialogContent,{showCloseButton:!1,style:{width:"90vw",minWidth:"360px",maxWidth:"600px",height:"70vh",minHeight:"480px",maxHeight:"800px",padding:0},children:(0,b.jsx)(a4,{mode:"dialog"})})}):null;return w||x?(0,b.jsxs)(b.Fragment,{children:[p&&(0,b.jsx)(a6,{onDismiss:()=>q(!1)}),(0,b.jsx)("div",{className:"flex h-screen overflow-hidden",children:(0,b.jsxs)("div",{className:"flex flex-1 flex-col overflow-hidden",children:[(0,b.jsx)(aZ,{onCreateProject:h,username:f}),(0,b.jsxs)("div",{className:"flex flex-1 overflow-hidden",children:[y,(0,b.jsx)("main",{className:"flex-1 overflow-hidden bg-background",children:(0,b.jsx)(a_.ErrorBoundary,{children:g})})]})]})}),z,n&&(0,b.jsx)(a9,{onComplete:r})]}):(0,b.jsxs)(b.Fragment,{children:[p&&(0,b.jsx)(a6,{onDismiss:()=>q(!1)}),(0,b.jsxs)("div",{className:"flex h-screen overflow-hidden",children:[(0,b.jsx)(K,{workspaces:a}),(0,b.jsxs)("div",{className:"flex flex-1 flex-col overflow-hidden",children:[(0,b.jsx)(aZ,{onCreateProject:h,username:f}),(0,b.jsxs)("div",{className:"flex flex-1 overflow-hidden",children:[y,(0,b.jsx)("main",{className:"flex-1 overflow-auto bg-background",children:(0,b.jsx)(a_.ErrorBoundary,{children:g})})]})]})]}),z,n&&(0,b.jsx)(a9,{onComplete:r})]})}a.s(["LayoutClient",0,function({workspaces:a,isFirstRun:c,username:e,children:f}){let g=(0,d.useRouter)(),h=(0,d.usePathname)(),i=h.split("/workspaces/")[1]?.split("/")[0],j=async b=>{let c=i||(a.length>0?a[0].id:null);if(!c){let a=await x({name:"Default Workspace"}),c=await (0,a0.createProject)({...b,workspaceId:a.id});return g.refresh(),g.push(`/workspaces/${a.id}`),{id:c.id}}let d=await (0,a0.createProject)({...b,workspaceId:c});return g.refresh(),g.push(`/workspaces/${c}`),{id:d.id}};return(0,b.jsx)(aG,{children:(0,b.jsx)(a$.TerminalPortalProvider,{children:(0,b.jsx)(ba,{workspaces:a,isFirstRun:c,username:e,handleCreateProject:j,children:f})})})}],607884)},3896,a=>{"use strict";var b=a.i(728778),c=a.i(940271);a.s(["ThemeProvider",0,function({children:a,...d}){return(0,b.jsx)(c.ThemeProvider,{...d,children:a})}])},426419,a=>{"use strict";var b=a.i(728778),c=a.i(940271),d=a.i(952313),e=a.i(884664),e=e,f=a.i(976268),f=f,g=a.i(622945),g=g;let h=(0,a.i(711796).default)("octagon-x",[["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",key:"2d38gg"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);var i=a.i(663513),i=i;a.s(["Toaster",0,({...a})=>{let{theme:j="system"}=(0,c.useTheme)();return(0,b.jsx)(d.Toaster,{theme:j,className:"toaster group",icons:{success:(0,b.jsx)(e.default,{className:"size-4"}),info:(0,b.jsx)(f.default,{className:"size-4"}),warning:(0,b.jsx)(g.default,{className:"size-4"}),error:(0,b.jsx)(h,{className:"size-4"}),loading:(0,b.jsx)(i.default,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},toastOptions:{classNames:{toast:"cn-toast"}},...a})}],426419)}];
|
|
5
|
+
)`},onClick:p}),(0,b.jsx)("div",{className:"pointer-events-none fixed z-[10001] rounded-lg ring-2 ring-amber-400 ring-offset-2 ring-offset-background",style:{left:g.left-4,top:g.top-4,width:g.width+8,height:g.height+8}}),(0,b.jsxs)("div",{className:"fixed z-[10002] w-72 rounded-xl border border-border bg-card p-4 shadow-2xl",style:(()=>{if(!g)return{display:"none"};let a={position:"fixed",zIndex:10001};switch(l.placement){case"right":a.left=g.right+12,a.top=g.top+g.height/2,a.transform="translateY(-50%)";break;case"bottom":a.left=g.left+g.width/2,a.top=g.bottom+12,a.transform="translateX(-50%)";break;case"left":a.right=window.innerWidth-g.left+12,a.top=g.top+g.height/2,a.transform="translateY(-50%)";break;case"top":a.left=g.left+g.width/2,a.bottom=window.innerHeight-g.top+12,a.transform="translateX(-50%)"}return a})(),children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:d(l.titleKey)}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground leading-relaxed",children:d(l.descKey)})]}),(0,b.jsx)("button",{onClick:m,className:"shrink-0 rounded-md p-1 text-muted-foreground hover:bg-accent hover:text-foreground",children:(0,b.jsx)(ax.X,{className:"h-3.5 w-3.5"})})]}),(0,b.jsxs)("div",{className:"mt-3 flex items-center justify-between",children:[(0,b.jsx)("div",{className:"flex gap-1",children:bc.map((a,c)=>(0,b.jsx)("div",{className:`h-1.5 w-1.5 rounded-full ${c===e?"bg-amber-400":c<e?"bg-amber-400/40":"bg-muted"}`},c))}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(u.Button,{variant:"ghost",className:"h-7 px-2 text-xs text-muted-foreground",onClick:m,children:d("tour.skip")}),(0,b.jsx)(u.Button,{className:"h-7 px-3 text-xs bg-amber-500/15 text-amber-300 ring-1 ring-amber-500/25 hover:bg-amber-500/25",onClick:p,children:d(e<bc.length-1?"tour.next":"tour.done")})]})]})]})]})}):null}var be=a.i(651571);let bf=(0,o.default)("sun-moon",[["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M14.837 16.385a6 6 0 1 1-7.223-7.222c.624-.147.97.66.715 1.248a4 4 0 0 0 5.26 5.259c.589-.255 1.396.09 1.248.715",key:"xlf6rm"}],["path",{d:"M16 12a4 4 0 0 0-4-4",key:"6vsxu"}],["path",{d:"m19 5-1.256 1.256",key:"1yg6a6"}],["path",{d:"M20 12h2",key:"1q8mjw"}]]);var bg=a.i(34252),bh=a.i(567648),bi=a.i(419622);let bj=(0,R.create)(a=>({open:!1,setOpen:b=>a({open:b}),toggle:()=>a(a=>({open:!a.open}))})),bk=(0,R.create)(a=>({open:!1,setOpen:b=>a({open:b}),toggle:()=>a(a=>({open:!a.open}))}));function bl(){let{t:a,locale:c,setLocale:e}=(0,F.useI18n)(),f=(0,d.useRouter)(),{resolvedTheme:h,setTheme:i}=(0,T.useTheme)(),j=bj(a=>a.open),k=bj(a=>a.setOpen),l=bj(a=>a.toggle),m=S(a=>a.setCreateProjectOpen),o=S(a=>a.setImportProjectOpen),p=bk(a=>a.toggle);(0,Q.useActionShortcut)("global.commandPalette",()=>l());let q=a=>{k(!1),a()};return(0,b.jsxs)(bi.CommandDialog,{open:j,onOpenChange:k,title:a("palette.title"),children:[(0,b.jsx)(bi.CommandInput,{placeholder:a("palette.placeholder")}),(0,b.jsxs)(bi.CommandList,{children:[(0,b.jsx)(bi.CommandEmpty,{children:a("palette.empty")}),(0,b.jsxs)(bi.CommandGroup,{heading:a("palette.group.navigation"),children:[(0,b.jsxs)(bi.CommandItem,{onSelect:()=>q(()=>f.push("/missions")),children:[(0,b.jsx)(be.LayoutGrid,{}),a("palette.gotoMissions")]}),(0,b.jsxs)(bi.CommandItem,{onSelect:()=>q(()=>f.push("/settings")),children:[(0,b.jsx)(V.Settings,{}),a("palette.openSettings")]})]}),(0,b.jsxs)(bi.CommandGroup,{heading:a("palette.group.actions"),children:[(0,b.jsxs)(bi.CommandItem,{onSelect:()=>q(()=>m(!0)),children:[(0,b.jsx)(g.Plus,{}),a("palette.newProject")]}),(0,b.jsxs)(bi.CommandItem,{onSelect:()=>q(()=>o(!0)),children:[(0,b.jsx)(n.FolderOpen,{}),a("palette.importProject")]}),(0,b.jsxs)(bi.CommandItem,{onSelect:()=>q(()=>p()),children:[(0,b.jsx)(bh.Keyboard,{}),a("palette.openHelp")]})]}),(0,b.jsxs)(bi.CommandGroup,{heading:a("palette.group.preferences"),children:[(0,b.jsxs)(bi.CommandItem,{onSelect:()=>q(()=>i("dark"===h?"light":"dark")),children:[(0,b.jsx)(bf,{}),a("palette.toggleTheme")]}),(0,b.jsxs)(bi.CommandItem,{onSelect:()=>q(()=>e("zh"===c?"en":"zh")),children:[(0,b.jsx)(bg.Languages,{}),a("palette.toggleLocale")]})]})]})]})}var bm=a.i(109603),bn=a.i(875846),bo=a.i(424764);let bp=["global","missions"],bq=new Set(["missions.cycleBack"]);function br(){let{t:a}=(0,F.useI18n)(),d=bk(a=>a.open),e=bk(a=>a.setOpen),f=bk(a=>a.toggle),g=(0,bn.useKeymapStore)(a=>a.overrides),[h,i]=(0,c.useState)("");(0,Q.useActionShortcut)("global.help",()=>f());let j=h.trim().toLowerCase(),k=bp.map(b=>{let c=bm.SHORTCUT_ACTIONS.filter(a=>a.group===b&&!bq.has(a.id)).map(b=>({id:b.id,description:a(b.descriptionKey),keys:(0,bn.resolveKeysFrom)(g,b.id)})).filter(a=>!j||a.description.toLowerCase().includes(j));return{title:a(`shortcuts.group.${b}`),shortcuts:c}}).filter(a=>a.shortcuts.length>0);return(0,b.jsx)(s.Dialog,{open:d,onOpenChange:e,children:(0,b.jsxs)(s.DialogContent,{className:"sm:max-w-2xl",children:[(0,b.jsx)(s.DialogHeader,{children:(0,b.jsx)(s.DialogTitle,{children:a("shortcuts.help.title")})}),(0,b.jsx)(v.Input,{value:h,onChange:a=>i(a.target.value),placeholder:a("shortcuts.help.searchPlaceholder")}),(0,b.jsx)("div",{className:"max-h-[60vh] space-y-4 overflow-y-auto",children:k.map(a=>(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"mb-2 text-xs font-semibold text-muted-foreground",children:a.title}),(0,b.jsx)("div",{className:"space-y-0.5",children:a.shortcuts.map(a=>(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4 rounded-md px-2 py-1.5 text-sm",children:[(0,b.jsx)("span",{className:"truncate",children:a.description}),(0,b.jsx)("div",{className:"flex shrink-0 items-center gap-1",children:(0,bo.renderKeys)(a.keys).map((a,c)=>(0,b.jsx)("kbd",{className:"rounded border border-border bg-muted px-1.5 py-0.5 font-mono text-[11px]",children:a},c))})]},a.id))})]},a.title))})]})})}function bs({workspaces:a,isFirstRun:e,username:f,children:g,handleCreateProject:h}){let i=(0,d.usePathname)(),j=(0,d.useRouter)(),{isOpen:k,displayMode:l,closeAssistant:m}=aL();(0,c.useEffect)(()=>{e&&!i.startsWith("/onboarding")&&j.replace("/onboarding")},[e,i,j]);let[n,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(!1);(0,c.useEffect)(()=>{e||i.startsWith("/onboarding")||(0,az.getConfigValue)("onboarding.tourCompleted",!1).then(a=>{a?q(!0):o(!0)})},[e,i]);let r=()=>{o(!1),q(!0)},[t,u]=(0,c.useState)(!0);(0,c.useEffect)(()=>{(0,az.getConfigValue)("notification.enabled",!0).then(u)},[]);let v=i.startsWith("/onboarding");if(!function(a){let b=(0,d.useRouter)(),e=(0,c.useRef)(b),f=(0,c.useRef)(a),{t:g}=(0,F.useI18n)(),h=(0,c.useRef)(g);e.current=b,f.current=a,h.current=g,(0,c.useEffect)(()=>{},[a])}(t&&!v),v)return(0,b.jsx)(b.Fragment,{children:g});let w=/\/workspaces\/[^/]+\/tasks\/[^/]+/.test(i),x=/\/workspaces\/[^/]+\/(notes|assets|archive)/.test(i),y=k&&"sidebar"===l?(0,b.jsx)(a8,{mode:"sidebar"}):null,z="dialog"===l?(0,b.jsx)(s.Dialog,{open:k,onOpenChange:a=>{a||m()},children:(0,b.jsx)(s.DialogContent,{showCloseButton:!1,style:{width:"90vw",minWidth:"360px",maxWidth:"600px",height:"70vh",minHeight:"480px",maxHeight:"800px",padding:0},children:(0,b.jsx)(a8,{mode:"dialog"})})}):null;return w||x?(0,b.jsxs)(b.Fragment,{children:[p&&(0,b.jsx)(ba,{onDismiss:()=>q(!1)}),(0,b.jsx)("div",{className:"flex h-screen overflow-hidden",children:(0,b.jsxs)("div",{className:"flex flex-1 flex-col overflow-hidden",children:[(0,b.jsx)(a1,{onCreateProject:h,username:f}),(0,b.jsxs)("div",{className:"flex flex-1 overflow-hidden",children:[y,(0,b.jsx)("main",{className:"flex-1 overflow-hidden bg-background",children:(0,b.jsx)(a3.ErrorBoundary,{children:g})})]})]})}),z,n&&(0,b.jsx)(bd,{onComplete:r}),(0,b.jsx)(bl,{}),(0,b.jsx)(br,{})]}):(0,b.jsxs)(b.Fragment,{children:[p&&(0,b.jsx)(ba,{onDismiss:()=>q(!1)}),(0,b.jsxs)("div",{className:"flex h-screen overflow-hidden",children:[(0,b.jsx)(L,{workspaces:a}),(0,b.jsxs)("div",{className:"flex flex-1 flex-col overflow-hidden",children:[(0,b.jsx)(a1,{onCreateProject:h,username:f}),(0,b.jsxs)("div",{className:"flex flex-1 overflow-hidden",children:[y,(0,b.jsx)("main",{className:"flex-1 overflow-auto bg-background",children:(0,b.jsx)(a3.ErrorBoundary,{children:g})})]})]})]}),z,n&&(0,b.jsx)(bd,{onComplete:r}),(0,b.jsx)(bl,{}),(0,b.jsx)(br,{})]})}a.s(["LayoutClient",0,function({workspaces:a,isFirstRun:c,username:e,children:f}){let g=(0,d.useRouter)(),h=(0,d.usePathname)(),i=h.split("/workspaces/")[1]?.split("/")[0],j=async b=>{let c=i||(a.length>0?a[0].id:null);if(!c){let a=await x({name:"Default Workspace"}),c=await (0,a4.createProject)({...b,workspaceId:a.id});return g.refresh(),g.push(`/workspaces/${a.id}`),{id:c.id}}let d=await (0,a4.createProject)({...b,workspaceId:c});return g.refresh(),g.push(`/workspaces/${c}`),{id:d.id}};return(0,b.jsx)(aK,{children:(0,b.jsx)(a2.TerminalPortalProvider,{children:(0,b.jsx)(bs,{workspaces:a,isFirstRun:c,username:e,handleCreateProject:j,children:f})})})}],607884)},3896,a=>{"use strict";var b=a.i(728778),c=a.i(940271);a.s(["ThemeProvider",0,function({children:a,...d}){return(0,b.jsx)(c.ThemeProvider,{...d,children:a})}])},426419,a=>{"use strict";var b=a.i(728778),c=a.i(940271),d=a.i(952313),e=a.i(884664),e=e,f=a.i(976268),f=f,g=a.i(622945),g=g;let h=(0,a.i(711796).default)("octagon-x",[["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",key:"2d38gg"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);var i=a.i(663513),i=i;a.s(["Toaster",0,({...a})=>{let{theme:j="system"}=(0,c.useTheme)();return(0,b.jsx)(d.Toaster,{theme:j,className:"toaster group",icons:{success:(0,b.jsx)(e.default,{className:"size-4"}),info:(0,b.jsx)(f.default,{className:"size-4"}),warning:(0,b.jsx)(g.default,{className:"size-4"}),error:(0,b.jsx)(h,{className:"size-4"}),loading:(0,b.jsx)(i.default,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},toastOptions:{classNames:{toast:"cn-toast"}},...a})}],426419)}];
|
|
6
6
|
|
|
7
7
|
//# sourceMappingURL=_0cj9a7y._.js.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module.exports=[103071,a=>{"use strict";a.s(["SESSION_INSIGHT_CATEGORY",0,"经验洞见","TASK_OVERVIEW_CATEGORY",0,"任务笔记","TOWER_LABEL_COLOR",0,"#8b5cf6","TOWER_LABEL_NAME",0,"Tower"])},897667,a=>{"use strict";let b=new(a.i(52350)).ClaudeCliAdapter;async function c(d,e,f={}){let g="";try{let{query:c}=await a.A(719041),h=b.resolveCommand();for await(let a of c({prompt:d,options:{tools:f.tools??[],allowedTools:f.allowedTools??[],maxTurns:f.maxTurns??1,cwd:e,pathToClaudeCodeExecutable:h,sessionPersistence:!1}}))if("assistant"===a.type){let b=a.message.content.filter(a=>"text"===a.type);g+=b.map(a=>a.text??"").join("")}else if("result"===a.type){let b="string"==typeof a.result?a.result:"";b&&!g&&(g=b)}return g.trim()||null}catch(a){if(a.message?.includes("maximum number of turns")&&g.trim())return g.trim();return console.error("[aiQuery] Failed:",a.message,a.stack?.slice(0,300)),null}}async function d(a,b){let d=`以下是一次AI编程助手的终端会话记录。请用一句简短的中文总结这次会话做了什么(不超过50字,只回答总结内容,不要加引号或前缀):
|
|
2
|
+
|
|
3
|
+
\`\`\`
|
|
4
|
+
${a.slice(-5e3)}
|
|
5
|
+
\`\`\``,e=await c(d,b);return e&&e.replace(/^[#*\->"'\s]+/,"").trim()||null}async function e(a,b,d){let e=a.slice(-8e3),f=d?`
|
|
6
|
+
Session summary: ${d}`:"",g=`You are analyzing a completed AI coding session. Extract reusable insights.
|
|
7
|
+
${f}
|
|
8
|
+
|
|
9
|
+
Terminal log (last 8000 chars):
|
|
10
|
+
\`\`\`
|
|
11
|
+
${e}
|
|
12
|
+
\`\`\`
|
|
13
|
+
|
|
14
|
+
Respond ONLY with valid JSON matching this schema (no markdown, no explanation):
|
|
15
|
+
{
|
|
16
|
+
"summary": "one-sentence summary of what was accomplished",
|
|
17
|
+
"insights": [
|
|
18
|
+
{ "type": "pattern|pitfall|decision|tool|reference", "content": "description" }
|
|
19
|
+
],
|
|
20
|
+
"shouldCreateNote": true/false,
|
|
21
|
+
"noteTitle": "short title for the note (only if shouldCreateNote is true)"
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
Rules:
|
|
25
|
+
- Set shouldCreateNote=true ONLY if there are genuinely reusable insights (architectural decisions, non-obvious pitfalls, useful patterns, important tool discoveries)
|
|
26
|
+
- Trivial sessions (simple formatting, single-line edits, routine commits) should have shouldCreateNote=false
|
|
27
|
+
- insights array can be empty if nothing notable
|
|
28
|
+
- Keep each insight concise (1-2 sentences)`,h=await c(g,b);if(!h)return null;try{let a=h,b=a.match(/\{[\s\S]*\}/);b&&(a=b[0]);let c=JSON.parse(a);if("string"!=typeof c.summary||"boolean"!=typeof c.shouldCreateNote)return console.error("[generateDreamingInsight] Invalid response structure"),null;return c}catch(a){return console.error("[generateDreamingInsight] JSON parse failed:",a.message),null}}a.s(["aiQuery",0,c,"generateDreamingInsight",0,e,"generateSummaryFromLog",0,d])},818992,a=>{"use strict";var b=a.i(233405),c=a.i(522734),d=a.i(761469),e=a.i(897667),f=a.i(103071);function g(a,c){return(0,b.execFileSync)("git",a,{cwd:c,timeout:1e4,encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}function h(a,b){if(b)return b;for(let b of["main","master","develop"])try{return g(["merge-base","HEAD",b],a)}catch{}return null}function i(a){if(!a)return null;let b=a.split("\n").filter(Boolean);if(0===b.length)return null;let c=b[0].replace(/^[a-f0-9]+\s+/,"");return 1===b.length?c:`${b.length} commits: ${c}`}async function j(a,b,f,k,l,m=null){try{let b;console.error(`[captureExecutionSummary] Starting: exec=${a.slice(0,8)} exit=${f} buffer=${k.length}chars worktree=${l} fork=${m?.slice(0,8)??"none"}`);let j=null,n=null,o=null;if(l&&(0,c.existsSync)(l))try{if(g(["rev-parse","--git-dir"],l),j=function(a,b){try{let c=h(a,b);if(!c)return null;return g(["log","--oneline",`${c}..HEAD`],a)||null}catch{return null}}(l,m),(n=function(a,b){try{let c=h(a,b);if(!c)return null;let d=g(["diff","--stat",`${c}..HEAD`],a);if(!d)return null;return function(a){let b=a.split("\n"),c=b[b.length-1];if(!c)return null;let d=c.match(/(\d+)\s+files?\s+changed/),e=c.match(/(\d+)\s+insertions?\(\+\)/),f=c.match(/(\d+)\s+deletions?\(-\)/);return d||e||f?{commits:0,filesChanged:d?parseInt(d[1],10):0,insertions:e?parseInt(e[1],10):0,deletions:f?parseInt(f[1],10):0}:null}(d)}catch{return null}}(l,m))&&j){let a=j.split("\n").filter(Boolean).length;n={...n,commits:a}}o=i(j)}catch{}let p=(b=k.replace(/\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g,"").replace(/\x1b\[[0-9;?]*[A-Za-z]/g,"").replace(/\x1b[^[\]()][^\x1b]*/g,"").replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,"").replace(/\n{3,}/g,"\n\n").trim()).length<=10240?b:b.slice(b.length-10240);await d.db.taskExecution.update({where:{id:a},data:{summary:o??(j?i(j):null),gitLog:j??null,gitStats:n?JSON.stringify(n):null,exitCode:f,terminalLog:p||null}}),p&&l&&(console.error("[captureExecutionSummary] Starting background AI summary..."),(0,e.generateSummaryFromLog)(p,l).then(async b=>{b&&(console.error(`[captureExecutionSummary] AI summary ready: ${b.slice(0,80)}`),await d.db.taskExecution.update({where:{id:a},data:{summary:b}}))}).catch(a=>{console.error("[captureExecutionSummary] Background AI summary failed:",a)}))}catch(a){console.error("[captureExecutionSummary] Failed to capture summary:",a)}}async function k(a){try{let b=await d.db.task.findUnique({where:{id:a},select:{projectId:!0,executions:{orderBy:{createdAt:"desc"},select:{id:!0,terminalLog:!0,worktreePath:!0,summary:!0}}}});if(!b||0===b.executions.length)return;let c="",g=null,h=[];for(let a of b.executions)a.terminalLog&&(c+=a.terminalLog+"\n---\n"),a.summary&&h.push(a.summary),!g&&a.worktreePath&&(g=a.worktreePath);if(!(c=c.slice(-8e3)).trim())return;let i=h.join("\n"),j=g||process.cwd();console.error(`[captureTaskDreaming] Starting for task=${a.slice(0,8)}, ${b.executions.length} executions`);let k=await (0,e.generateDreamingInsight)(c,j,i);if(!k||!k.shouldCreateNote)return void console.error("[captureTaskDreaming] No note needed");let l=await d.db.projectNote.create({data:{title:k.noteTitle||k.summary.slice(0,50),content:function(a){let b=[];if(b.push("## Summary"),b.push(a.summary),b.push(""),a.insights.length>0)for(let c of(b.push("## Insights"),a.insights))b.push(`- **[${c.type}]**: ${c.content}`);return b.join("\n")}(k),category:f.SESSION_INSIGHT_CATEGORY,projectId:b.projectId,taskId:a}}),m=b.executions[0].id;await d.db.taskExecution.update({where:{id:m},data:{insightNoteId:l.id}}),console.error(`[captureTaskDreaming] Note created: ${l.id}`)}catch(a){console.error("[captureTaskDreaming] Failed:",a)}}a.s(["captureExecutionSummary",0,j,"captureTaskDreaming",0,k])},719041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]__0ti8vng._.js","server/chunks/ssr/07-d_@anthropic-ai_claude-agent-sdk_sdk_mjs_0myippv._.js"].map(b=>a.l(b))).then(()=>b(845454)))}];
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=_0clhm~f._.js.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module.exports=[287068,a=>{"use strict";var b=a.i(761469);function c(a,b){return{id:a.note_id,type:"note",title:a.title,subtitle:`${a.workspace_name} / ${a.project_name}`,navigateTo:`/workspaces/${a.workspaceId}/notes?projectId=${a.projectId}`,snippet:a.content?a.content.slice(0,b):void 0}}async function d(a,e="task",f){if(!a.trim())return[];let g=a.trim(),{resultLimit:h,allModeCap:i,snippetLength:j}=f;if("all"===e){let[a,b,c,e,h]=await Promise.allSettled([d(g,"task",f),d(g,"project",f),d(g,"repository",f),d(g,"note",f),d(g,"asset",f)]),j=a=>"fulfilled"===a.status?a.value.slice(0,i):[];return[...j(a),...j(b),...j(c),...j(e),...j(h)]}if("task"===e)return(await b.db.task.findMany({where:{OR:[{title:{contains:g}},{description:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h,orderBy:{updatedAt:"desc"}})).map(a=>{let b="DONE"===a.status||"CANCELLED"===a.status,c=a.project.workspaceId;return{id:a.id,type:"task",title:a.title,subtitle:`${a.project.workspace.name} / ${a.project.name}`,navigateTo:b?`/workspaces/${c}/archive?projectId=${a.projectId}`:`/workspaces/${c}?projectId=${a.projectId}`}});if("project"===e)return(await b.db.project.findMany({where:{OR:[{name:{contains:g}},{alias:{contains:g}},{description:{contains:g}}]},include:{workspace:!0},take:h,orderBy:{updatedAt:"desc"}})).map(a=>({id:a.id,type:"project",title:a.alias?`${a.name} (${a.alias})`:a.name,subtitle:a.workspace.name,navigateTo:`/workspaces/${a.workspaceId}?projectId=${a.id}`}));if("repository"===e)return(await b.db.repository.findMany({where:{OR:[{name:{contains:g}},{path:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h})).map(a=>({id:a.id,type:"repository",title:a.name,subtitle:`${a.project.workspace.name} / ${a.project.name} \xb7 ${a.branch}`,navigateTo:`/workspaces/${a.project.workspaceId}?projectId=${a.projectId}`}));if("note"===e){if(g.length<3)return(await b.db.$queryRawUnsafe(`SELECT n.id as note_id, n.title, n.content,
|
|
2
|
+
n."projectId", p."workspaceId", p.name as project_name, w.name as workspace_name
|
|
3
|
+
FROM "ProjectNote" n
|
|
4
|
+
JOIN "Project" p ON p.id = n."projectId"
|
|
5
|
+
JOIN "Workspace" w ON w.id = p."workspaceId"
|
|
6
|
+
WHERE n.title LIKE ? OR n.content LIKE ?
|
|
7
|
+
LIMIT ?`,`%${g}%`,`%${g}%`,h)).map(a=>c(a,j));try{return(await b.db.$queryRawUnsafe(`SELECT f.note_id, f.title, f.content,
|
|
8
|
+
n."projectId", p."workspaceId", p.name as project_name, w.name as workspace_name
|
|
9
|
+
FROM notes_fts f
|
|
10
|
+
JOIN "ProjectNote" n ON n.id = f.note_id
|
|
11
|
+
JOIN "Project" p ON p.id = n."projectId"
|
|
12
|
+
JOIN "Workspace" w ON w.id = p."workspaceId"
|
|
13
|
+
WHERE f.notes_fts MATCH ?
|
|
14
|
+
ORDER BY rank
|
|
15
|
+
LIMIT ?`,g,h)).map(a=>c(a,j))}catch{return(await b.db.$queryRawUnsafe(`SELECT n.id as note_id, n.title, n.content,
|
|
16
|
+
n."projectId", p."workspaceId", p.name as project_name, w.name as workspace_name
|
|
17
|
+
FROM "ProjectNote" n
|
|
18
|
+
JOIN "Project" p ON p.id = n."projectId"
|
|
19
|
+
JOIN "Workspace" w ON w.id = p."workspaceId"
|
|
20
|
+
WHERE n.title LIKE ? OR n.content LIKE ?
|
|
21
|
+
LIMIT ?`,`%${g}%`,`%${g}%`,h)).map(a=>c(a,j))}}return"asset"===e?(await b.db.projectAsset.findMany({where:{OR:[{filename:{contains:g}},{description:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h,orderBy:{createdAt:"desc"}})).map(a=>({id:a.id,type:"asset",title:a.filename,subtitle:`${a.project.workspace.name} / ${a.project.name}`,navigateTo:`/workspaces/${a.project.workspaceId}/assets?projectId=${a.projectId}`,snippet:a.description||void 0})):[]}a.s(["search",0,d])},396904,a=>a.a(async(b,c)=>{try{var d=a.i(815429),e=a.i(287068),f=a.i(980999),g=a.i(630048),h=b([f]);async function i(a,b="task"){let c=await (0,f.getConfigValues)(["search.resultLimit","search.allModeCap","search.snippetLength"]);return(0,e.search)(a,b,{resultLimit:c["search.resultLimit"]??20,allModeCap:c["search.allModeCap"]??5,snippetLength:c["search.snippetLength"]??80})}[f]=h.then?(await h)():h,(0,g.ensureServerEntryExports)([i]),(0,d.registerServerReference)(i,"60cf23e9d6bb1d872fa7890cdd536b57fa0d834f17",null),a.s(["globalSearch",0,i]),c()}catch(a){c(a)}},!1),101844,a=>{"use strict";var b=a.i(815429),c=a.i(924868),d=a.i(522734),e=a.i(814747),f=a.i(761469),g=a.i(188139),h=a.i(630048);async function i(b){if(!b||"string"!=typeof b)return{safe:!1,reason:"无效的项目 ID"};let g=await f.db.project.findUnique({where:{id:b}});if(!g||!g.localPath)return{safe:!1,reason:"项目不存在或未设置本地路径"};if((await f.db.taskExecution.findMany({where:{task:{projectId:b},status:"RUNNING"},select:{id:!0}})).length>0)return{safe:!1,reason:"该项目有正在运行的任务执行,请先停止所有执行"};let h=await f.db.task.findMany({where:{projectId:b},select:{id:!0}}),{getSession:i}=await a.A(98813);for(let a of h)if(void 0!==i(a.id))return{safe:!1,reason:"该项目有活跃的终端会话,请先关闭"};let j=e.default.join(g.localPath,".worktrees");if((0,d.existsSync)(j))try{if((await (0,c.readdir)(j)).length>0)return{safe:!1,reason:"该项目有活跃的 Git Worktree,请先清理"}}catch{}return{safe:!0}}async function j(b,h){if(!b||"string"!=typeof b)return{success:!1,error:"无效的项目 ID"};if(!h||"string"!=typeof h||!e.default.isAbsolute(h))return{success:!1,error:"目标路径必须是非空的绝对路径"};let i=await f.db.project.findUnique({where:{id:b}});if(!i||!i.localPath)return{success:!1,error:"项目不存在或未设置本地路径"};let j=i.localPath;if(h===j)return{success:!1,error:"源路径和目标路径相同"};if((await f.db.taskExecution.findMany({where:{task:{projectId:b},status:"RUNNING"},select:{id:!0}})).length>0)return{success:!1,error:"该项目有正在运行的任务执行,请先停止所有执行"};let k=await f.db.task.findMany({where:{projectId:b},select:{id:!0}}),{getSession:l}=await a.A(98813);for(let a of k)if(void 0!==l(a.id))return{success:!1,error:"该项目有活跃的终端会话,请先关闭"};let m=e.default.join(j,".worktrees");if((0,d.existsSync)(m))try{if((await (0,c.readdir)(m)).length>0)return{success:!1,error:"该项目有活跃的 Git Worktree,请先清理"}}catch{}if((0,d.existsSync)(h))try{if((await (0,c.readdir)(h)).length>0)return{success:!1,error:"目标路径已存在且不为空"}}catch{return{success:!1,error:"目标路径已存在且不为空"}}let n=e.default.dirname(h);try{await (0,c.mkdir)(n,{recursive:!0})}catch(a){if("EACCES"===a.code||"EPERM"===a.code)return{success:!1,error:`无权限创建父目录 ${n} — 请检查 Git 路径映射规则的模板是否漏了 "~/" 前缀`};if("EROFS"===a.code)return{success:!1,error:`父目录所在文件系统只读:${n}`};return{success:!1,error:`创建父目录失败:${a.message||a.code||"未知错误"}`}}try{await (0,c.rename)(j,h)}catch(a){if("EXDEV"===a.code)return{success:!1,error:"源路径和目标路径不在同一文件系统,不支持跨设备迁移"};if("EACCES"===a.code||"EPERM"===a.code)return{success:!1,error:`无权限移动到 ${h}`};return{success:!1,error:a.message||"文件系统操作失败"}}return await f.db.project.update({where:{id:b},data:{localPath:h}}),(0,g.revalidatePath)("/workspaces"),{success:!0}}let k=`分析这个项目目录,生成一段简短的 Markdown 项目描述。
|
|
22
|
+
|
|
23
|
+
读取 package.json、README.md 等关键文件,然后概括:
|
|
24
|
+
|
|
25
|
+
**技术栈:** 一句话列出主要语言、框架、关键库
|
|
26
|
+
**定位:** 一句话说明项目是什么
|
|
27
|
+
**核心模块:** 2-3 个关键模块,每个一句话
|
|
28
|
+
|
|
29
|
+
要求:
|
|
30
|
+
- 总字数不超过 500 字
|
|
31
|
+
- 用简洁的 Markdown(加粗标签 + 短句),不要用 ## 大标题和表格
|
|
32
|
+
- 不要罗列每个文件/目录,只说关键信息
|
|
33
|
+
- 中文输出`,l=`Analyze this project directory and generate a brief Markdown project description.
|
|
34
|
+
|
|
35
|
+
Read package.json, README.md and other key files, then summarize:
|
|
36
|
+
|
|
37
|
+
**Tech Stack:** One sentence listing primary languages, frameworks, and key libraries
|
|
38
|
+
**Overview:** One sentence describing what this project is
|
|
39
|
+
**Core Modules:** 2-3 key modules, one sentence each
|
|
40
|
+
|
|
41
|
+
Requirements:
|
|
42
|
+
- Keep it under 1000 words
|
|
43
|
+
- Use concise Markdown (bold labels + short sentences), no ## headings or tables
|
|
44
|
+
- Don't list every file/directory, only key information
|
|
45
|
+
- Output in English`;async function m(b,c="zh"){if(!b||"string"!=typeof b)throw Error("无效的本地路径");if(b.startsWith("~"))throw Error("不支持 ~ 别名,请提供绝对路径");if(!e.default.isAbsolute(b))throw Error("本地路径必须为绝对路径");let{aiQuery:d}=await a.A(752453),f=await d("en"===c?l:k,b,{maxTurns:10,tools:["Read","Glob"],allowedTools:["Read","Glob"]});if(!f)throw Error("AI 分析未返回结果");return f.length>2e3?f.slice(0,2e3).trimEnd()+"\n\n...":f}(0,h.ensureServerEntryExports)([i,j,m]),(0,b.registerServerReference)(i,"4024bb410d7361715d7b27b4e3152ae702f06be58d",null),(0,b.registerServerReference)(j,"60ce92a356db4e0f1b71c516d451a4c66b267bcd5f",null),(0,b.registerServerReference)(m,"6076dc28b6f3f9437d529cc2a49d00fb1531ad69bb",null),a.s(["analyzeProjectDirectory",0,m,"checkMigrationSafety",0,i,"migrateProjectPath",0,j])},42344,a=>a.a(async(b,c)=>{try{a.i(244256),a.i(495370);var d=a.i(396904),e=a.i(980999);a.i(101844),a.i(563736),a.i(4634);var f=b([d,e]);[d,e]=f.then?(await f)():f,a.s([]),c()}catch(a){c(a)}},!1),413773,a=>a.a(async(b,c)=>{try{var d=a.i(42344),e=a.i(244256),f=a.i(495370),g=a.i(396904),h=a.i(980999),i=a.i(101844),j=a.i(563736),k=a.i(4634),l=b([d,g,h]);[d,g,h]=l.then?(await l)():l,a.s(["009a4455adc6ae8de76fffe28b951b69bba7d850c5",()=>j.listAllExtensionStatus,"00dffa7e2b903a977c043c9dfe93a2268d6ec371a2",()=>h.getActualWsPort,"00f06eae3d004be915d1c1a9f5d4375323fac961cb",()=>k.getOnboardingStatus,"401cfc041822bfe0186f103f1a153d1a6464a17dd2",()=>f.createLabel,"4024bb410d7361715d7b27b4e3152ae702f06be58d",()=>i.checkMigrationSafety,"402c0cb77dd0b552affa19e1908a31f39983e2b3af",()=>j.uninstallExtension,"404f498a5d1be80bc6987cb5cd6a45f6320a4a6b10",()=>h.resolveGitLocalPath,"404f89ea152c8846cd81545d88ee759650ef33d824",()=>k.dispatchTaskCompletionEvent,"404f9882e3e07c5d3bd321985d253c1005893996e6",()=>k.setOnboardingProgress,"405adcdda8f4e2bdc4acb580c81b4f3960beb3c963",()=>e.createProject,"4061bf09c58a2482c8e7718d5710860d3aeb9e90f5",()=>e.createWorkspace,"40779e134fb254c682c66a0038dcd5e165f9f9c126",()=>e.deleteWorkspace,"408dd716bca6bfdf435108b90f07213fa6349cc3c0",()=>j.installExtension,"40b23b1f07dfa36ec07791aa63c1069bdfac47b579",()=>j.checkExtension,"40bfb6fbe622a782c60bde3aff379e178fcf427d4d",()=>f.getLabelsForWorkspace,"40de3827479492ef70b045aef5e1ff6b4f9713d460",()=>h.getConfigValues,"40e82898dc84e21eef111e23fef31cafff55508294",()=>f.deleteLabel,"40f5bda647fb24083aeba0bef4450844ede662d614",()=>e.reorderWorkspaces,"6033060438916d2966bed0d5676415c3cfed0c66c4",()=>k.completeOnboarding,"604c2e060cd5e576f6fe781087715fcb937cd872ef",()=>h.getConfigValue,"6060c9b052f8719ee1158bd094831a5dbd570b0920",()=>e.updateWorkspace,"6076dc28b6f3f9437d529cc2a49d00fb1531ad69bb",()=>i.analyzeProjectDirectory,"60cc2148558650e38e6ff0242e530dba94db214ccb",()=>k.setOnboardingExtensions,"60ce92a356db4e0f1b71c516d451a4c66b267bcd5f",()=>i.migrateProjectPath,"60cf23e9d6bb1d872fa7890cdd536b57fa0d834f17",()=>g.globalSearch,"60f6587d130abae876668572539b950801da7507e0",()=>h.setConfigValue]),c()}catch(a){c(a)}},!1),76052,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_0e27xy7._.js"].map(b=>a.l(b))).then(()=>b(492067)))},98813,a=>{a.v(a=>Promise.resolve().then(()=>a(962620)))},507502,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_worktree_ts_06cucy3._.js"].map(b=>a.l(b))).then(()=>b(845427)))},752453,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__0m7ydqb._.js"].map(b=>a.l(b))).then(()=>b(897667)))}];
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=_0cxhub8._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[835032,a=>{"use strict";async function b(a,b){await a.$executeRawUnsafe("DELETE FROM notes_fts WHERE note_id = ?",b.id),await a.$executeRawUnsafe("INSERT INTO notes_fts(note_id, title, content) VALUES (?, ?, ?)",b.id,b.title,b.content)}async function c(a,b){await a.$executeRawUnsafe("DELETE FROM notes_fts WHERE note_id = ?",b)}a.s(["deleteNoteFromFts",0,c,"syncNoteToFts",0,b])},897667,a=>{"use strict";let b=new(a.i(52350)).ClaudeCliAdapter;async function c(d,e,f={}){let g="";try{let{query:c}=await a.A(719041),h=b.resolveCommand();for await(let a of c({prompt:d,options:{tools:f.tools??[],allowedTools:f.allowedTools??[],maxTurns:f.maxTurns??1,cwd:e,pathToClaudeCodeExecutable:h,sessionPersistence:!1}}))if("assistant"===a.type){let b=a.message.content.filter(a=>"text"===a.type);g+=b.map(a=>a.text??"").join("")}else if("result"===a.type){let b="string"==typeof a.result?a.result:"";b&&!g&&(g=b)}return g.trim()||null}catch(a){if(a.message?.includes("maximum number of turns")&&g.trim())return g.trim();return console.error("[aiQuery] Failed:",a.message,a.stack?.slice(0,300)),null}}async function d(a,b){let d=`以下是一次AI编程助手的终端会话记录。请用一句简短的中文总结这次会话做了什么(不超过50字,只回答总结内容,不要加引号或前缀):
|
|
1
|
+
module.exports=[835032,a=>{"use strict";async function b(a,b){await a.$executeRawUnsafe("DELETE FROM notes_fts WHERE note_id = ?",b.id),await a.$executeRawUnsafe("INSERT INTO notes_fts(note_id, title, content) VALUES (?, ?, ?)",b.id,b.title,b.content)}async function c(a,b){await a.$executeRawUnsafe("DELETE FROM notes_fts WHERE note_id = ?",b)}a.s(["deleteNoteFromFts",0,c,"syncNoteToFts",0,b])},103071,a=>{"use strict";a.s(["SESSION_INSIGHT_CATEGORY",0,"经验洞见","TASK_OVERVIEW_CATEGORY",0,"任务笔记","TOWER_LABEL_COLOR",0,"#8b5cf6","TOWER_LABEL_NAME",0,"Tower"])},897667,a=>{"use strict";let b=new(a.i(52350)).ClaudeCliAdapter;async function c(d,e,f={}){let g="";try{let{query:c}=await a.A(719041),h=b.resolveCommand();for await(let a of c({prompt:d,options:{tools:f.tools??[],allowedTools:f.allowedTools??[],maxTurns:f.maxTurns??1,cwd:e,pathToClaudeCodeExecutable:h,sessionPersistence:!1}}))if("assistant"===a.type){let b=a.message.content.filter(a=>"text"===a.type);g+=b.map(a=>a.text??"").join("")}else if("result"===a.type){let b="string"==typeof a.result?a.result:"";b&&!g&&(g=b)}return g.trim()||null}catch(a){if(a.message?.includes("maximum number of turns")&&g.trim())return g.trim();return console.error("[aiQuery] Failed:",a.message,a.stack?.slice(0,300)),null}}async function d(a,b){let d=`以下是一次AI编程助手的终端会话记录。请用一句简短的中文总结这次会话做了什么(不超过50字,只回答总结内容,不要加引号或前缀):
|
|
2
2
|
|
|
3
3
|
\`\`\`
|
|
4
4
|
${a.slice(-5e3)}
|
|
@@ -25,7 +25,7 @@ Rules:
|
|
|
25
25
|
- Set shouldCreateNote=true ONLY if there are genuinely reusable insights (architectural decisions, non-obvious pitfalls, useful patterns, important tool discoveries)
|
|
26
26
|
- Trivial sessions (simple formatting, single-line edits, routine commits) should have shouldCreateNote=false
|
|
27
27
|
- insights array can be empty if nothing notable
|
|
28
|
-
- Keep each insight concise (1-2 sentences)`,h=await c(g,b);if(!h)return null;try{let a=h,b=a.match(/\{[\s\S]*\}/);b&&(a=b[0]);let c=JSON.parse(a);if("string"!=typeof c.summary||"boolean"!=typeof c.shouldCreateNote)return console.error("[generateDreamingInsight] Invalid response structure"),null;return c}catch(a){return console.error("[generateDreamingInsight] JSON parse failed:",a.message),null}}a.s(["aiQuery",0,c,"generateDreamingInsight",0,e,"generateSummaryFromLog",0,d])},941750,a=>{"use strict";var b=a.i(233405),c=a.i(522734),d=a.i(761469),e=a.i(835032),f=a.i(897667);async function g(a){let e=await d.db.task.findUnique({where:{id:a},include:{project:!0}});if(!e)return{kind:"error",status:404,message:"Task not found"};if(!e.project?.localPath)return{kind:"error",status:400,message:"Project has no local path"};let f=e.baseBranch||"main",g=e.project.localPath,h=await d.db.taskExecution.findFirst({where:{taskId:a},orderBy:{createdAt:"desc"}});if(!h)return{kind:"empty"};let{forkCommit:i,mergeCommit:j,branchTipCommit:k,worktreeBranch:l,worktreePath:m}=h;if(j&&i){let a=k||j;return{kind:"ok",data:{diffCwd:g,diffTarget:`${i}..${a}`,baseRef:i,endRef:a,worktreePath:null}}}if(i&&m&&(0,c.existsSync)(m))return{kind:"ok",data:{diffCwd:m,diffTarget:i,baseRef:i,endRef:null,worktreePath:m}};if(i&&!m)return{kind:"ok",data:{diffCwd:g,diffTarget:i,baseRef:i,endRef:null,worktreePath:null}};if(l)try{let a=(0,b.execFileSync)("git",["merge-base",f,l],{cwd:g,encoding:"utf-8",timeout:5e3}).trim(),d=m&&(0,c.existsSync)(m)?m:g;return{kind:"ok",data:{diffCwd:d,diffTarget:a,baseRef:a,endRef:null,worktreePath:m&&(0,c.existsSync)(m)?m:null}}}catch{return{kind:"branch-deleted"}}return{kind:"empty"}}
|
|
28
|
+
- Keep each insight concise (1-2 sentences)`,h=await c(g,b);if(!h)return null;try{let a=h,b=a.match(/\{[\s\S]*\}/);b&&(a=b[0]);let c=JSON.parse(a);if("string"!=typeof c.summary||"boolean"!=typeof c.shouldCreateNote)return console.error("[generateDreamingInsight] Invalid response structure"),null;return c}catch(a){return console.error("[generateDreamingInsight] JSON parse failed:",a.message),null}}a.s(["aiQuery",0,c,"generateDreamingInsight",0,e,"generateSummaryFromLog",0,d])},941750,a=>{"use strict";var b=a.i(233405),c=a.i(522734),d=a.i(761469),e=a.i(835032),f=a.i(897667);async function g(a){let e=await d.db.task.findUnique({where:{id:a},include:{project:!0}});if(!e)return{kind:"error",status:404,message:"Task not found"};if(!e.project?.localPath)return{kind:"error",status:400,message:"Project has no local path"};let f=e.baseBranch||"main",g=e.project.localPath,h=await d.db.taskExecution.findFirst({where:{taskId:a},orderBy:{createdAt:"desc"}});if(!h)return{kind:"empty"};let{forkCommit:i,mergeCommit:j,branchTipCommit:k,worktreeBranch:l,worktreePath:m}=h;if(j&&i){let a=k||j;return{kind:"ok",data:{diffCwd:g,diffTarget:`${i}..${a}`,baseRef:i,endRef:a,worktreePath:null}}}if(i&&m&&(0,c.existsSync)(m))return{kind:"ok",data:{diffCwd:m,diffTarget:i,baseRef:i,endRef:null,worktreePath:m}};if(i&&!m)return{kind:"ok",data:{diffCwd:g,diffTarget:i,baseRef:i,endRef:null,worktreePath:null}};if(l)try{let a=(0,b.execFileSync)("git",["merge-base",f,l],{cwd:g,encoding:"utf-8",timeout:5e3}).trim(),d=m&&(0,c.existsSync)(m)?m:g;return{kind:"ok",data:{diffCwd:d,diffTarget:a,baseRef:a,endRef:null,worktreePath:m&&(0,c.existsSync)(m)?m:null}}}catch{return{kind:"branch-deleted"}}return{kind:"empty"}}var h=a.i(103071);function i(a,c,d=1048576){try{return(0,b.execFileSync)("git",a,{cwd:c,encoding:"utf-8",timeout:3e4,maxBuffer:d,stdio:["pipe","pipe","pipe"]}).trim()}catch{return null}}async function j(a){let b=await d.db.task.findUnique({where:{id:a},include:{project:!0}});if(!b||!b.project)return null;let e=b.project.localPath??null,f=[],h=null,j=0,k=null,l=e||process.cwd();if(e){let b=await g(a);if("ok"===b.kind){let{diffCwd:a,diffTarget:c}=b.data;l=a;let d=c.includes("..")?c:`${c}..HEAD`,e=i(["diff","--numstat",c],a,0x4000000);e&&(f=function(a){let b=[];for(let c of a.split("\n")){let a=c.trim();if(!a)continue;let d=a.split(" ");if(d.length<3)continue;let[e,f,...g]=d,h=g.join(" ");"-"===e&&"-"===f?b.push({filename:h,added:0,removed:0,isBinary:!0}):b.push({filename:h,added:parseInt(e,10)||0,removed:parseInt(f,10)||0,isBinary:!1})}let c=/^diff --git a\/(.+) b\/(.+)$/,d=new Map;if("".trim())for(let a of"".split(/(?=^diff --git )/m)){if(!a.trim())continue;let b=a.split("\n")[0],e=c.exec(b);if(!e)continue;let f=e[2],g=a;0;d.set(f,g)}let e=b.map(a=>({filename:a.filename,added:a.added,removed:a.removed,isBinary:a.isBinary,patch:d.get(a.filename)??""})),f=e.reduce((a,b)=>a+b.added,0),g=e.reduce((a,b)=>a+b.removed,0);return{files:e,totalAdded:f,totalRemoved:g}}(e).files),h=i(["log","--oneline",d],a)||null;let g=i(["rev-list","--count",d],a);j=g&&parseInt(g,10)||0;let m=i(["diff",c],a,0x4000000);m&&(k=m.length>12288?m.slice(0,12288)+"\n...(diff truncated)":m)}}if(0===f.length&&0===j){let b=await d.db.taskExecution.findFirst({where:{taskId:a},orderBy:{createdAt:"desc"},select:{gitLog:!0,worktreePath:!0}});b?.gitLog&&(h=b.gitLog,j=b.gitLog.split("\n").filter(Boolean).length),b?.worktreePath&&(0,c.existsSync)(b.worktreePath)&&(l=b.worktreePath)}if(0===f.length&&0===j)return null;let m=(await d.db.projectAsset.findMany({where:{taskId:a},orderBy:{createdAt:"asc"},select:{filename:!0,description:!0}})).map(a=>({filename:a.filename,description:a.description}));return{taskId:a,taskTitle:b.title,projectId:b.projectId,projectName:b.project.name,files:f,commitLog:h,commitCount:j,diffText:k,assets:m,cwd:l}}async function k(a){let b=a.files.slice(0,60).map(a=>a.isBinary?`${a.filename} (binary)`:`${a.filename} (+${a.added}/-${a.removed})`).join("\n")||"(无文件清单)",d=`你是资深工程师。下面是一个刚完成的开发任务的代码改动信息,请用简洁中文写一段「改动摘要」:说明这次改动做了什么、解决了什么问题、主要涉及哪些模块或逻辑。要求 3-6 句、纯文本,不要 markdown 标题,不要逐条罗列文件(文件清单会另外展示)。
|
|
29
29
|
|
|
30
30
|
任务标题:${a.taskTitle}
|
|
31
31
|
|
|
@@ -38,6 +38,6 @@ ${b}
|
|
|
38
38
|
diff(可能已截断):
|
|
39
39
|
\`\`\`diff
|
|
40
40
|
${a.diffText??"(无 diff)"}
|
|
41
|
-
\`\`\``,e=(0,c.existsSync)(a.cwd)?a.cwd:process.cwd(),g=await (0,f.aiQuery)(d,e,{maxTurns:1});if(g){let a=g.replace(/^[#*\->"'\s]+/,"").trim();if(a)return a}var h=a.commitLog;if(!h)return null;let i=h.split("\n").filter(Boolean);if(0===i.length)return null;let j=i[0].replace(/^[a-f0-9]+\s+/,"");return 1===i.length?j:`${i.length} 个提交:${j}`}async function
|
|
41
|
+
\`\`\``,e=(0,c.existsSync)(a.cwd)?a.cwd:process.cwd(),g=await (0,f.aiQuery)(d,e,{maxTurns:1});if(g){let a=g.replace(/^[#*\->"'\s]+/,"").trim();if(a)return a}var h=a.commitLog;if(!h)return null;let i=h.split("\n").filter(Boolean);if(0===i.length)return null;let j=i[0].replace(/^[a-f0-9]+\s+/,"");return 1===i.length?j:`${i.length} 个提交:${j}`}async function l(a,b={}){let c=b.kind??"done",f=null;try{f=await j(a)}catch(a){console.error("[captureTaskOverview] Failed to gather change data:",a);return}if(!f)return void console.error(`[captureTaskOverview] No changes for task=${a.slice(0,8)} — skip`);let g=f;(async()=>{try{let b=await k(g),f=new Date().toISOString(),i=function(a,b,c,d="done"){let e=[];if(e.push("cancelled"===d?"> 本笔记由任务取消时自动生成,记录已产生的改动,作为下次重启该任务的参考经验。":"> 本笔记由任务完成时自动生成,记录本次任务的改动概览,便于后续复盘与排查。"),e.push(""),e.push("## 改动摘要"),e.push(b??"(未能生成改动摘要)"),e.push(""),e.push("## 文件清单"),a.files.length>0){let b=a.files.slice(0,100);for(let a of b)e.push(a.isBinary?`- \`${a.filename}\`(二进制)`:`- \`${a.filename}\` (+${a.added} / -${a.removed})`);a.files.length>b.length&&e.push(`- …其余 ${a.files.length-b.length} 个文件`),e.push(""),e.push(`共 ${a.files.length} 个文件、${a.commitCount} 个提交。`)}else e.push(`(未能获取精确文件清单,本次约 ${a.commitCount} 个提交。)`);if(e.push(""),e.push("## 相关附件与参考资料"),a.assets.length>0)for(let b of a.assets)e.push(b.description?`- ${b.filename} — ${b.description}`:`- ${b.filename}`);else e.push("(无)");return e.push(""),e.push("---"),e.push(`> 关联任务:${a.taskTitle} (\`${a.taskId}\`)`),e.push(`> 项目:${a.projectName}`),e.push(`> 生成时间:${c}`),e.join("\n")}(g,b,f,c),j=function(a,b="done"){return`${"cancelled"===b?"任务概览(已取消):":"任务概览:"}${a}`.slice(0,200)}(g.taskTitle,c),l=await d.db.projectNote.create({data:{title:j,content:i,category:h.TASK_OVERVIEW_CATEGORY,projectId:g.projectId,taskId:g.taskId}});await (0,e.syncNoteToFts)(d.db,{id:l.id,title:l.title,content:l.content}),console.error(`[captureTaskOverview] Note created: ${l.id} for task=${a.slice(0,8)}`)}catch(a){console.error("[captureTaskOverview] Failed to create overview note:",a)}})()}a.s(["captureTaskOverview",0,l],941750)},719041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]__0ti8vng._.js","server/chunks/ssr/07-d_@anthropic-ai_claude-agent-sdk_sdk_mjs_0myippv._.js"].map(b=>a.l(b))).then(()=>b(845454)))}];
|
|
42
42
|
|
|
43
|
-
//# sourceMappingURL=
|
|
43
|
+
//# sourceMappingURL=_0e-zyn2._.js.map
|