agent-tower 0.7.2 → 0.7.3
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/dist/executors/__tests__/providers.test.js +53 -0
- package/dist/executors/__tests__/providers.test.js.map +1 -1
- package/dist/executors/providers.d.ts +2 -0
- package/dist/executors/providers.d.ts.map +1 -1
- package/dist/executors/providers.js +3 -2
- package/dist/executors/providers.js.map +1 -1
- package/dist/git/base-branch.d.ts +3 -0
- package/dist/git/base-branch.d.ts.map +1 -0
- package/dist/git/base-branch.js +17 -0
- package/dist/git/base-branch.js.map +1 -0
- package/dist/mcp/http-client.d.ts +2 -6
- package/dist/mcp/http-client.d.ts.map +1 -1
- package/dist/mcp/http-client.js.map +1 -1
- package/dist/mcp/tools/__tests__/providers.test.d.ts +2 -0
- package/dist/mcp/tools/__tests__/providers.test.d.ts.map +1 -0
- package/dist/mcp/tools/__tests__/providers.test.js +22 -0
- package/dist/mcp/tools/__tests__/providers.test.js.map +1 -0
- package/dist/mcp/tools/__tests__/tasks.test.d.ts +2 -0
- package/dist/mcp/tools/__tests__/tasks.test.d.ts.map +1 -0
- package/dist/mcp/tools/__tests__/tasks.test.js +17 -0
- package/dist/mcp/tools/__tests__/tasks.test.js.map +1 -0
- package/dist/mcp/tools/providers.d.ts.map +1 -1
- package/dist/mcp/tools/providers.js +3 -2
- package/dist/mcp/tools/providers.js.map +1 -1
- package/dist/mcp/tools/tasks.d.ts.map +1 -1
- package/dist/mcp/tools/tasks.js +1 -0
- package/dist/mcp/tools/tasks.js.map +1 -1
- package/dist/mcp/types.d.ts +3 -0
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/mcp/types.js +2 -0
- package/dist/mcp/types.js.map +1 -1
- package/dist/output/__tests__/text-block-lifecycle.test.js +37 -0
- package/dist/output/__tests__/text-block-lifecycle.test.js.map +1 -1
- package/dist/output/text-block-tracker.d.ts.map +1 -1
- package/dist/output/text-block-tracker.js +24 -1
- package/dist/output/text-block-tracker.js.map +1 -1
- package/dist/routes/__tests__/providers.test.js +67 -0
- package/dist/routes/__tests__/providers.test.js.map +1 -1
- package/dist/routes/__tests__/tasks.test.js +23 -0
- package/dist/routes/__tests__/tasks.test.js.map +1 -1
- package/dist/routes/providers.d.ts.map +1 -1
- package/dist/routes/providers.js +8 -0
- package/dist/routes/providers.js.map +1 -1
- package/dist/routes/tasks.d.ts.map +1 -1
- package/dist/routes/tasks.js +1 -0
- package/dist/routes/tasks.js.map +1 -1
- package/dist/runtime/acp/history-reconciler.js +1 -1
- package/dist/runtime/acp/history-reconciler.js.map +1 -1
- package/dist/services/__tests__/task.service.test.js +43 -0
- package/dist/services/__tests__/task.service.test.js.map +1 -1
- package/dist/services/__tests__/translation-protection.test.js +48 -18
- package/dist/services/__tests__/translation-protection.test.js.map +1 -1
- package/dist/services/__tests__/translation-session-blocks.test.js +66 -2
- package/dist/services/__tests__/translation-session-blocks.test.js.map +1 -1
- package/dist/services/__tests__/workspace.service.test.js +34 -0
- package/dist/services/__tests__/workspace.service.test.js.map +1 -1
- package/dist/services/message-delivery.service.d.ts +2 -1
- package/dist/services/message-delivery.service.d.ts.map +1 -1
- package/dist/services/project.service.d.ts +1 -0
- package/dist/services/project.service.d.ts.map +1 -1
- package/dist/services/provider-config.service.d.ts.map +1 -1
- package/dist/services/provider-config.service.js +1 -0
- package/dist/services/provider-config.service.js.map +1 -1
- package/dist/services/session-manager.d.ts +7 -4
- package/dist/services/session-manager.d.ts.map +1 -1
- package/dist/services/session-manager.js +1 -1
- package/dist/services/session-manager.js.map +1 -1
- package/dist/services/task.service.d.ts +10 -8
- package/dist/services/task.service.d.ts.map +1 -1
- package/dist/services/task.service.js +14 -1
- package/dist/services/task.service.js.map +1 -1
- package/dist/services/team-run.service.d.ts +1 -0
- package/dist/services/team-run.service.d.ts.map +1 -1
- package/dist/services/team-task-input.service.d.ts +1 -0
- package/dist/services/team-task-input.service.d.ts.map +1 -1
- package/dist/services/translation-protection.d.ts +3 -1
- package/dist/services/translation-protection.d.ts.map +1 -1
- package/dist/services/translation-protection.js +21 -67
- package/dist/services/translation-protection.js.map +1 -1
- package/dist/services/translation-settings.service.d.ts +4 -4
- package/dist/services/translation.service.d.ts.map +1 -1
- package/dist/services/translation.service.js +44 -20
- package/dist/services/translation.service.js.map +1 -1
- package/dist/services/workspace.service.d.ts +11 -6
- package/dist/services/workspace.service.d.ts.map +1 -1
- package/dist/services/workspace.service.js +6 -4
- package/dist/services/workspace.service.js.map +1 -1
- package/dist/web/assets/{AgentDemoPage-BfXkNCdN.js → AgentDemoPage-Dwux6TyV.js} +1 -1
- package/dist/web/assets/{AgentEnvironmentSettingsPage-GHjKIWpb.js → AgentEnvironmentSettingsPage-CvvkMKT1.js} +1 -1
- package/dist/web/assets/AttachmentPreview-CFJ6MZ1f.js +2 -0
- package/dist/web/assets/BranchSelect-Cv92vEjG.js +1 -0
- package/dist/web/assets/BrandLogo-H4nCbVzs.js +1 -0
- package/dist/web/assets/ConversationPage-CZzGME21.js +1 -0
- package/dist/web/assets/CreateTaskInput-BM2tx4hJ.js +1 -0
- package/dist/web/assets/{DemoPage-DK-ikg1_.js → DemoPage-CpYNBQhA.js} +1 -1
- package/dist/web/assets/DesignSystemPage-DLeH6DnV.js +12 -0
- package/dist/web/assets/EditableTaskTitle-BEsiULnD.js +70 -0
- package/dist/web/assets/{ExecutionPermissionSelector-B8befbxJ.js → ExecutionPermissionSelector-IoWR9YLb.js} +1 -1
- package/dist/web/assets/GeneralSettingsPage-BAYgxCqx.js +1 -0
- package/dist/web/assets/{LoadingPreviewPage-BDlf89rJ.js → LoadingPreviewPage-CumrzyxW.js} +1 -1
- package/dist/web/assets/McpSettingsPage-CFNwxT9Y.js +1 -0
- package/dist/web/assets/{MemberAvatar-YVr_erAr.js → MemberAvatar-BVXD0jTy.js} +1 -1
- package/dist/web/assets/{MobileTaskDetail-QNUHMq7u.js → MobileTaskDetail-IOQ1WnS8.js} +3 -3
- package/dist/web/assets/NotificationSettingsPage-B0s5YbG3.js +1 -0
- package/dist/web/assets/{ProfileSettingsPage-CHe4LlRp.js → ProfileSettingsPage-BuhoF-mL.js} +1 -1
- package/dist/web/assets/{ProjectKanbanPage-Bt_01giW.js → ProjectKanbanPage-DMtv15rq.js} +7 -7
- package/dist/web/assets/ProjectSettingsPage-DDMg6axy.js +2 -0
- package/dist/web/assets/ProviderSettingsPage-DRt9m4mF.js +67 -0
- package/dist/web/assets/{SettingsMasterDetail-DjWR9Sqk.js → SettingsMasterDetail-D7vStQjR.js} +1 -1
- package/dist/web/assets/TaskDetail-DzKbs5Jt.js +1 -0
- package/dist/web/assets/TeamSettingsPage-fjlaqaLo.js +1 -0
- package/dist/web/assets/{TranslationSettingsPage-Cod9c4Ug.js → TranslationSettingsPage-D2oks6OM.js} +1 -1
- package/dist/web/assets/{arc-DEy33vTc.js → arc-vYWCZsE_.js} +1 -1
- package/dist/web/assets/{architectureDiagram-3BPJPVTR-Ky1D1LBk.js → architectureDiagram-3BPJPVTR-Cu1VIpcJ.js} +1 -1
- package/dist/web/assets/{at-sign-C48_y345.js → at-sign-BhSPafOS.js} +1 -1
- package/dist/web/assets/{blockDiagram-GPEHLZMM-BNgB7kNT.js → blockDiagram-GPEHLZMM-C4x_nj5S.js} +1 -1
- package/dist/web/assets/{c4Diagram-AAUBKEIU-4GMrPMgQ.js → c4Diagram-AAUBKEIU-jHOo5lal.js} +1 -1
- package/dist/web/assets/channel-D1cEj22-.js +1 -0
- package/dist/web/assets/check-D_VFGpIy.js +1 -0
- package/dist/web/assets/{chevron-down-3y5Aiolp.js → chevron-down-BoS08pMa.js} +1 -1
- package/dist/web/assets/{chevron-up-DqaYcjpq.js → chevron-up-BWtKfdKT.js} +1 -1
- package/dist/web/assets/chip-Ck4dqxR3.js +1 -0
- package/dist/web/assets/{chunk-2J33WTMH-C439hRe_.js → chunk-2J33WTMH-BZcpjmfm.js} +1 -1
- package/dist/web/assets/{chunk-4BX2VUAB-D8GK3M3t.js → chunk-4BX2VUAB-DZGB3q-I.js} +1 -1
- package/dist/web/assets/{chunk-55IACEB6-Dl4UhJ8X.js → chunk-55IACEB6-CcNrOmyy.js} +1 -1
- package/dist/web/assets/{chunk-727SXJPM-BSEeayBq.js → chunk-727SXJPM-dWrxio8O.js} +1 -1
- package/dist/web/assets/{chunk-AQP2D5EJ-B6chbZfT.js → chunk-AQP2D5EJ-K4gkVzqE.js} +1 -1
- package/dist/web/assets/{chunk-FMBD7UC4-DaLkiLdQ.js → chunk-FMBD7UC4-CnHyY4qD.js} +1 -1
- package/dist/web/assets/{chunk-ND2GUHAM-DeQwZAAT.js → chunk-ND2GUHAM-CHUmcyDv.js} +1 -1
- package/dist/web/assets/{chunk-QZHKN3VN-CLRr4YRM.js → chunk-QZHKN3VN-Bzzjd-Qt.js} +1 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-DIrDMefa.js +1 -0
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-DIrDMefa.js +1 -0
- package/dist/web/assets/{code-block-OCS4YCEC-CnoxUpOx.js → code-block-OCS4YCEC-B2hHBO_G.js} +1 -1
- package/dist/web/assets/{confirm-dialog-ltNBFYCs.js → confirm-dialog-CL_1pF4K.js} +1 -1
- package/dist/web/assets/content-D0qmHfHK.js +2 -0
- package/dist/web/assets/{copy-HRMhTkIG.js → copy-C4WnOY6Y.js} +1 -1
- package/dist/web/assets/{cose-bilkent-S5V4N54A-C1UiYzfk.js → cose-bilkent-S5V4N54A-Dcn8tOhb.js} +1 -1
- package/dist/web/assets/cssMode-CXBMyfYY.js +1 -0
- package/dist/web/assets/{dagre-BM42HDAG-CTJpBgye.js → dagre-BM42HDAG-DWBV4UfP.js} +1 -1
- package/dist/web/assets/{diagram-2AECGRRQ-Dj1_TEYp.js → diagram-2AECGRRQ-CnNTJQ3q.js} +1 -1
- package/dist/web/assets/{diagram-5GNKFQAL-V-KUpwqh.js → diagram-5GNKFQAL-DlXJFzDF.js} +1 -1
- package/dist/web/assets/{diagram-KO2AKTUF-CXG1ZIeX.js → diagram-KO2AKTUF-DZ22YV4n.js} +1 -1
- package/dist/web/assets/{diagram-LMA3HP47-BZSJUwk9.js → diagram-LMA3HP47-B4pQJjG9.js} +1 -1
- package/dist/web/assets/{diagram-OG6HWLK6-CCr4gq4u.js → diagram-OG6HWLK6-DJBLjtgL.js} +1 -1
- package/dist/web/assets/dialog-1o8KQWoQ.js +5 -0
- package/dist/web/assets/{erDiagram-TEJ5UH35-Djtyzh6z.js → erDiagram-TEJ5UH35-CDsfoJUT.js} +1 -1
- package/dist/web/assets/file-6qwbIga1.js +1 -0
- package/dist/web/assets/{flowDiagram-I6XJVG4X-BmSVSiXJ.js → flowDiagram-I6XJVG4X-CuGOAYmY.js} +1 -1
- package/dist/web/assets/folder-picker-Cj1VZOZU.js +1 -0
- package/dist/web/assets/{freemarker2-DdptX5f1.js → freemarker2-BG8VyI2V.js} +1 -1
- package/dist/web/assets/{ganttDiagram-6RSMTGT7-r5vQX-b5.js → ganttDiagram-6RSMTGT7-BjrSOqAM.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-PVQCEYII-Zj9aloh9.js → gitGraphDiagram-PVQCEYII-4VVr4F8_.js} +1 -1
- package/dist/web/assets/{globe-B9I-jHBB.js → globe-CxeM27yy.js} +1 -1
- package/dist/web/assets/handlebars-Ci38FPsA.js +1 -0
- package/dist/web/assets/html-5hdYEgVF.js +1 -0
- package/dist/web/assets/htmlMode-BzU9qsw0.js +1 -0
- package/dist/web/assets/{icon-button-CYiKa-7C.js → icon-button-BmrJtYFC.js} +1 -1
- package/dist/web/assets/{index-BJObbxud.js → index-BR3Wg2fS.js} +3 -3
- package/dist/web/assets/{index-CThFsQNP.js → index-C1lMEjmZ.js} +1 -1
- package/dist/web/assets/{index-DkRy6eNX.js → index-CrKx8Yaz.js} +4 -4
- package/dist/web/assets/{index-DZLnTISJ.js → index-DSy5JLC1.js} +1 -1
- package/dist/web/assets/{index-Bhvt-E6d.js → index-DVdiOmqt.js} +2 -2
- package/dist/web/assets/index-DZLg4-xM.css +1 -0
- package/dist/web/assets/{index-DcOU2m2F.js → index-Da2mWAtm.js} +1 -1
- package/dist/web/assets/{index-BtUQYU5l.js → index-Db28hRe8.js} +1 -1
- package/dist/web/assets/{index-Dk3bRQAK.js → index-cu8sedJH.js} +1 -1
- package/dist/web/assets/{index-B1oVmCie.js → index-hHrknzh7.js} +1 -1
- package/dist/web/assets/{infoDiagram-5YYISTIA-BHtVaxZx.js → infoDiagram-5YYISTIA-Cy9ntb6t.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-BYmwjkbC.js → ishikawaDiagram-YF4QCWOH-D6UiVzRz.js} +1 -1
- package/dist/web/assets/javascript-Ib060GQ8.js +1 -0
- package/dist/web/assets/{journeyDiagram-JHISSGLW-c8BBqqRS.js → journeyDiagram-JHISSGLW-owdKzZoh.js} +1 -1
- package/dist/web/assets/{jsonMode-BJGOUeaV.js → jsonMode-CLmu6gzc.js} +1 -1
- package/dist/web/assets/{kanban-definition-UN3LZRKU-D4Vr-oFT.js → kanban-definition-UN3LZRKU-v5TBnyp0.js} +1 -1
- package/dist/web/assets/{kbd-C88ut3t9.js → kbd-Cl4AzzJp.js} +1 -1
- package/dist/web/assets/{key-round-Cjbj2qNa.js → key-round-CnYjSrCz.js} +1 -1
- package/dist/web/assets/{layers-eaHAVcc3.js → layers-XImbMX-P.js} +1 -1
- package/dist/web/assets/{linear-opi90s0L.js → linear-DNlKYt8R.js} +1 -1
- package/dist/web/assets/{link-BSGb85gq.js → link-DQk-Vapq.js} +1 -1
- package/dist/web/assets/liquid-Bc7OSAPR.js +1 -0
- package/dist/web/assets/{lspLanguageFeatures-DWu2Ubf0.js → lspLanguageFeatures-DD_y1bZa.js} +1 -1
- package/dist/web/assets/mdx-CxJNHHTn.js +1 -0
- package/dist/web/assets/{menu--sjyisSg.js → menu-DXF6iUsq.js} +1 -1
- package/dist/web/assets/{mermaid-NOHMQCX5-BSNbBj78.js → mermaid-NOHMQCX5-CG_LpwAI.js} +59 -59
- package/dist/web/assets/{message-square-BLEJN6p7.js → message-square-BviHdb67.js} +1 -1
- package/dist/web/assets/{mindmap-definition-RKZ34NQL-BN3ZjBh-.js → mindmap-definition-RKZ34NQL-Bn_rnnGT.js} +1 -1
- package/dist/web/assets/{modal-CSGOqphK.js → modal-D496f1fE.js} +1 -1
- package/dist/web/assets/{monaco-BkuNyOkP.js → monaco-yuGji-2E.js} +3 -3
- package/dist/web/assets/{paperclip-CTNoXpUW.js → paperclip-D9ka2IAB.js} +1 -1
- package/dist/web/assets/{pencil-Cp70ZwtG.js → pencil-isP1rXC-.js} +1 -1
- package/dist/web/assets/{people-DT78SebR.js → people-CbmH8m4i.js} +1 -1
- package/dist/web/assets/{pieDiagram-4H26LBE5-CfmFHpPI.js → pieDiagram-4H26LBE5-DIE_f9W_.js} +1 -1
- package/dist/web/assets/popover-D8VtO5qF.js +1 -0
- package/dist/web/assets/provider-selection-DSu7SCI7.js +1 -0
- package/dist/web/assets/python-C0E43gUo.js +1 -0
- package/dist/web/assets/{quadrantDiagram-W4KKPZXB-CeaumJAa.js → quadrantDiagram-W4KKPZXB-CavFxJCk.js} +1 -1
- package/dist/web/assets/razor-xarhYR9V.js +1 -0
- package/dist/web/assets/{requirementDiagram-4Y6WPE33-BWWCDXCE.js → requirementDiagram-4Y6WPE33-Dm1FwUUh.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-5OEKKPKP-DAJut743.js → sankeyDiagram-5OEKKPKP-qeqcO27M.js} +1 -1
- package/dist/web/assets/{search-DniD_AGC.js → search-DOMr5jPS.js} +1 -1
- package/dist/web/assets/{select-B5RYunTs.js → select-Cw5BaOLQ.js} +1 -1
- package/dist/web/assets/{select-BPdJrr5M.js → select-CzZNbe1Z.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-3UESZ5HK-CynjRGW4.js → sequenceDiagram-3UESZ5HK-Dqtb3BYG.js} +1 -1
- package/dist/web/assets/{server-xswxWpKD.js → server-u-PC-CcX.js} +1 -1
- package/dist/web/assets/{stateDiagram-AJRCARHV-amAtpx9w.js → stateDiagram-AJRCARHV-C_MqF9Fy.js} +1 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-BxmbGAhh.js +1 -0
- package/dist/web/assets/{textarea-BVyPl9rM.js → textarea-xt2hLb-d.js} +1 -1
- package/dist/web/assets/{timeline-definition-PNZ67QCA-DZ9W7WlP.js → timeline-definition-PNZ67QCA-Bzov6t31.js} +1 -1
- package/dist/web/assets/{toggles-QcIz43DP.js → toggles-B6E1UBYN.js} +1 -1
- package/dist/web/assets/{tooltip-CPqGK_WZ.js → tooltip-C8--8CNX.js} +1 -1
- package/dist/web/assets/{track-Ckye0-tt.js → track-BeqaPopG.js} +1 -1
- package/dist/web/assets/{trash-2-CvUJsbtT.js → trash-2-5jI3_KHh.js} +1 -1
- package/dist/web/assets/{tsMode-c5x0d47n.js → tsMode-uT3sMVHt.js} +1 -1
- package/dist/web/assets/typescript-Dkdj2ks0.js +1 -0
- package/dist/web/assets/{upload-CsXAmAun.js → upload-DUteazR7.js} +1 -1
- package/dist/web/assets/{use-profiles-DuXaBRju.js → use-profiles-T3saKiBg.js} +1 -1
- package/dist/web/assets/{use-providers-Td1-gyrN.js → use-providers-CQwBj9hp.js} +1 -1
- package/dist/web/assets/{use-translation-settings-NYM0lmBx.js → use-translation-settings-DBzFqP-d.js} +1 -1
- package/dist/web/assets/useNormalizedLogs-DsdwmfS7.js +1 -0
- package/dist/web/assets/useTokenUsage-Drh3v3kx.js +1 -0
- package/dist/web/assets/{vennDiagram-CIIHVFJN-CB2Ubvy9.js → vennDiagram-CIIHVFJN-BqxICvT_.js} +1 -1
- package/dist/web/assets/{wardley-L42UT6IY-BXOkk77I.js → wardley-L42UT6IY-BTdLPFcA.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-YWT4CUSO-VA6ywdQQ.js → wardleyDiagram-YWT4CUSO-icnFsFn4.js} +1 -1
- package/dist/web/assets/xml-BO8gYu0L.js +1 -0
- package/dist/web/assets/{xychartDiagram-2RQKCTM6-FNcvDj5G.js → xychartDiagram-2RQKCTM6-BN2_ducK.js} +1 -1
- package/dist/web/assets/yaml-DlovbQzw.js +1 -0
- package/dist/web/index.html +2 -2
- package/node_modules/@agent-tower/shared/dist/translation.d.ts +12 -0
- package/node_modules/@agent-tower/shared/dist/translation.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/translation.js +19 -0
- package/node_modules/@agent-tower/shared/dist/translation.js.map +1 -1
- package/node_modules/@agent-tower/shared/dist/types.d.ts +13 -1
- package/node_modules/@agent-tower/shared/dist/types.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/prisma/migrations/20261023000000_add_task_base_branch/migration.sql +2 -0
- package/prisma/schema.prisma +1 -0
- package/dist/web/assets/AttachmentPreview-CLN1lnLe.js +0 -2
- package/dist/web/assets/BranchSelect-Cofp8vYf.js +0 -1
- package/dist/web/assets/BrandLogo-BUimEX-9.js +0 -1
- package/dist/web/assets/ConversationPage-R7vNaOQv.js +0 -1
- package/dist/web/assets/CreateTaskInput-CasITF8y.js +0 -1
- package/dist/web/assets/DesignSystemPage-BhjNs2vP.js +0 -12
- package/dist/web/assets/EditableTaskTitle-BJ9Rxggf.js +0 -70
- package/dist/web/assets/GeneralSettingsPage-RMN2al8I.js +0 -1
- package/dist/web/assets/McpSettingsPage-CPNxFF67.js +0 -1
- package/dist/web/assets/NotificationSettingsPage-BEyuyu3Z.js +0 -1
- package/dist/web/assets/ProjectSettingsPage-cus6Ns97.js +0 -2
- package/dist/web/assets/ProviderSettingsPage-DqA_B1Ey.js +0 -67
- package/dist/web/assets/TaskDetail-rEXNe2h3.js +0 -1
- package/dist/web/assets/TeamSettingsPage-DwWROtW6.js +0 -1
- package/dist/web/assets/channel-DTP-syjA.js +0 -1
- package/dist/web/assets/check-BmiJ7qMY.js +0 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-CUKgurLa.js +0 -1
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-CUKgurLa.js +0 -1
- package/dist/web/assets/content-DPQMfMae.js +0 -2
- package/dist/web/assets/cssMode-DkuSsGeg.js +0 -1
- package/dist/web/assets/dialog-CuFEdqLg.js +0 -5
- package/dist/web/assets/handlebars-B34f-LAf.js +0 -1
- package/dist/web/assets/hooks-BLxb16IA.js +0 -1
- package/dist/web/assets/html-CnvOQ63o.js +0 -1
- package/dist/web/assets/htmlMode-RdxZ8Svp.js +0 -1
- package/dist/web/assets/index-0XPZayUU.css +0 -1
- package/dist/web/assets/javascript-BhombDEO.js +0 -1
- package/dist/web/assets/liquid-Czy1WpPz.js +0 -1
- package/dist/web/assets/mdx-DhXfoSnM.js +0 -1
- package/dist/web/assets/popover-BiVxGGgp.js +0 -1
- package/dist/web/assets/python-DIcQDjcf.js +0 -1
- package/dist/web/assets/razor-DYK6Rxer.js +0 -1
- package/dist/web/assets/search-field-CQLDXLeA.js +0 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-V-lSceg1.js +0 -1
- package/dist/web/assets/typescript-i7eYblLt.js +0 -1
- package/dist/web/assets/use-projects-Ddz0knyr.js +0 -1
- package/dist/web/assets/use-workspaces-CdJZLmGh.js +0 -1
- package/dist/web/assets/useNormalizedLogs--RbVywYa.js +0 -1
- package/dist/web/assets/useTokenUsage-DDXf7E4p.js +0 -1
- package/dist/web/assets/xml-D2EGActB.js +0 -1
- package/dist/web/assets/yaml-jeiIZSL4.js +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TaskDetail-
|
|
2
|
-
import{c as Yr,
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TaskDetail-DzKbs5Jt.js","assets/index-BR3Wg2fS.js","assets/index-DZLg4-xM.css","assets/mermaid-NOHMQCX5-CG_LpwAI.js","assets/AttachmentPreview-CFJ6MZ1f.js","assets/tooltip-C8--8CNX.js","assets/kbd-Cl4AzzJp.js","assets/index-DVdiOmqt.js","assets/index-hHrknzh7.js","assets/index-cu8sedJH.js","assets/use-translation-settings-DBzFqP-d.js","assets/copy-C4WnOY6Y.js","assets/index-Da2mWAtm.js","assets/chevron-down-BoS08pMa.js","assets/mermaid-NOHMQCX5-lI9o3AWT.css","assets/EditableTaskTitle-BEsiULnD.js","assets/use-providers-CQwBj9hp.js","assets/MemberAvatar-BVXD0jTy.js","assets/people-CbmH8m4i.js","assets/chevron-up-BWtKfdKT.js","assets/at-sign-BhSPafOS.js","assets/paperclip-D9ka2IAB.js","assets/check-D_VFGpIy.js","assets/useTokenUsage-Drh3v3kx.js","assets/CreateTaskInput-BM2tx4hJ.js","assets/BranchSelect-Cv92vEjG.js","assets/popover-D8VtO5qF.js","assets/search-DOMr5jPS.js","assets/menu-styles-DWynpVVz.js","assets/BrandLogo-H4nCbVzs.js","assets/index-Db28hRe8.js","assets/index-DSy5JLC1.js","assets/trash-2-5jI3_KHh.js","assets/ExecutionPermissionSelector-IoWR9YLb.js","assets/menu-DXF6iUsq.js","assets/provider-selection-DSu7SCI7.js","assets/confirm-dialog-CL_1pF4K.js","assets/dialog-1o8KQWoQ.js","assets/modal-D496f1fE.js","assets/select-CzZNbe1Z.js","assets/select-Cw5BaOLQ.js","assets/index-C1lMEjmZ.js","assets/layers-XImbMX-P.js","assets/message-square-BviHdb67.js","assets/textarea-xt2hLb-d.js","assets/content-D0qmHfHK.js","assets/file-6qwbIga1.js","assets/server-u-PC-CcX.js","assets/icon-button-BmrJtYFC.js","assets/upload-DUteazR7.js","assets/globe-CxeM27yy.js","assets/pencil-isP1rXC-.js","assets/EditableTaskTitle-DcpNTP1B.css","assets/useNormalizedLogs-DsdwmfS7.js","assets/track-BeqaPopG.js","assets/chip-Ck4dqxR3.js","assets/folder-picker-Cj1VZOZU.js","assets/MobileTaskDetail-IOQ1WnS8.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{c as Yr,aU as Hr,v as We,r as u,aa as B,aC as ut,u as Ie,j as i,ao as Rn,n as ie,ay as pt,a1 as qr,ax as te,bm as It,bn as Xr,bk as Vr,bo as Jr,aK as ar,aO as Zr,ar as Je,bp as De,b1 as Re,o as es,q as $t,p as pn,s as ce,X as ts,S as ns,ad as rs,a4 as Me,ai as At,aQ as ss,t as Fe,bq as os,ah as is,br as as,bs as ls,bt as cs,aM as kn,aN as jn,bu as lr}from"./index-BR3Wg2fS.js";import{C as us}from"./confirm-dialog-CL_1pF4K.js";import{a as ds,l as fs,h as hs}from"./BranchSelect-Cv92vEjG.js";import{h as Tn,i as ms,c as gs,C as An}from"./CreateTaskInput-BM2tx4hJ.js";import{C as vt}from"./check-D_VFGpIy.js";import{T as ps,P as vs}from"./trash-2-5jI3_KHh.js";import{S as cr}from"./search-DOMr5jPS.js";import{F as xs}from"./chip-Ck4dqxR3.js";import{S as bs,B as Dn}from"./BrandLogo-H4nCbVzs.js";import{M as ys}from"./message-square-BviHdb67.js";import{L as an}from"./layers-XImbMX-P.js";import{I as Vt}from"./icon-button-BmrJtYFC.js";import{c as ws,P as Cs,a as Ss,b as Es,I as Ns}from"./popover-D8VtO5qF.js";import{C as Mn}from"./copy-C4WnOY6Y.js";import{u as Rs}from"./use-providers-CQwBj9hp.js";import{i as ks}from"./provider-selection-DSu7SCI7.js";import{F as js}from"./folder-picker-Cj1VZOZU.js";import{M as In}from"./modal-D496f1fE.js";import{a as lt}from"./ExecutionPermissionSelector-IoWR9YLb.js";import{C as Ts}from"./chevron-down-BoS08pMa.js";const As=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],Pn=Yr("smartphone",As),Jt=new Map;async function Ds(e,t,n){const r=`tower:task-start:${e}:${JSON.stringify(t)}`;let o=Jt.get(r);if(!o)try{const h=sessionStorage.getItem(r);h&&(o=JSON.parse(h))}catch{}o??={creationId:Hr()},Jt.set(r,o);const l=()=>{try{sessionStorage.setItem(r,JSON.stringify(o))}catch{}};l(),o.workspace||(n.onStep?.("creating-workspace"),o.workspace=await n.createWorkspace(o.creationId),l()),o.session||(n.onStep?.("creating-session"),o.session=await We.post(`/workspaces/${o.workspace.id}/sessions`,{providerId:t.providerId,prompt:t.prompt,retryTask:t.retryTask,clientSubmissionId:o.creationId}),l()),n.onStep?.("starting-session"),await n.startSession(o.session.id),Jt.delete(r);try{sessionStorage.removeItem(r)}catch{}return{workspace:o.workspace,session:o.session}}const Kt=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Ze(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function vn(e){return"nodeType"in e}function me(e){var t,n;return e?Ze(e)?e:vn(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function xn(e){const{Document:t}=me(e);return e instanceof t}function wt(e){return Ze(e)?!1:e instanceof me(e).HTMLElement}function ur(e){return e instanceof me(e).SVGElement}function et(e){return e?Ze(e)?e.document:vn(e)?xn(e)?e:wt(e)||ur(e)?e.ownerDocument:document:document:document}const Be=Kt?u.useLayoutEffect:u.useEffect;function Gt(e){const t=u.useRef(e);return Be(()=>{t.current=e}),u.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return t.current==null?void 0:t.current(...r)},[])}function Ms(){const e=u.useRef(null),t=u.useCallback((r,o)=>{e.current=setInterval(r,o)},[]),n=u.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function xt(e,t){t===void 0&&(t=[e]);const n=u.useRef(e);return Be(()=>{n.current!==e&&(n.current=e)},t),n}function Ct(e,t){const n=u.useRef();return u.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function Pt(e){const t=Gt(e),n=u.useRef(null),r=u.useCallback(o=>{o!==n.current&&t?.(o,n.current),n.current=o},[]);return[n,r]}function Ot(e){const t=u.useRef();return u.useEffect(()=>{t.current=e},[e]),t.current}let Zt={};function Wt(e,t){return u.useMemo(()=>{if(t)return t;const n=Zt[e]==null?0:Zt[e]+1;return Zt[e]=n,e+"-"+n},[e,t])}function dr(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return r.reduce((l,h)=>{const f=Object.entries(h);for(const[s,a]of f){const c=l[s];c!=null&&(l[s]=c+e*a)}return l},{...t})}}const Ve=dr(1),Lt=dr(-1);function Is(e){return"clientX"in e&&"clientY"in e}function bn(e){if(!e)return!1;const{KeyboardEvent:t}=me(e.target);return t&&e instanceof t}function Ps(e){if(!e)return!1;const{TouchEvent:t}=me(e.target);return t&&e instanceof t}function zt(e){if(Ps(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return Is(e)?{x:e.clientX,y:e.clientY}:null}const bt=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[bt.Translate.toString(e),bt.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),On="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Os(e){return e.matches(On)?e:e.querySelector(On)}const Ls={display:"none"};function zs(e){let{id:t,value:n}=e;return B.createElement("div",{id:t,style:Ls},n)}function Fs(e){let{id:t,announcement:n,ariaLiveType:r="assertive"}=e;const o={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return B.createElement("div",{id:t,style:o,role:"status","aria-live":r,"aria-atomic":!0},n)}function Bs(){const[e,t]=u.useState("");return{announce:u.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const fr=u.createContext(null);function _s(e){const t=u.useContext(fr);u.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of <DndContext>");return t(e)},[e,t])}function Us(){const[e]=u.useState(()=>new Set),t=u.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[u.useCallback(r=>{let{type:o,event:l}=r;e.forEach(h=>{var f;return(f=h[o])==null?void 0:f.call(h,l)})},[e]),t]}const $s={draggable:`
|
|
3
3
|
To pick up a draggable item, press the space bar.
|
|
4
4
|
While dragging, use the arrow keys to move the item.
|
|
5
5
|
Press space again to drop the item in its new position, or press escape to cancel.
|
|
6
|
-
`},$s={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was moved over droppable area "+n.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was dropped over droppable area "+n.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function Ks(e){let{announcements:t=$s,container:n,hiddenTextDescribedById:r,screenReaderInstructions:o=Us}=e;const{announce:l,announcement:h}=Fs(),f=Wt("DndLiveRegion"),[s,a]=u.useState(!1);if(u.useEffect(()=>{a(!0)},[]),_s(u.useMemo(()=>({onDragStart(d){let{active:m}=d;l(t.onDragStart({active:m}))},onDragMove(d){let{active:m,over:p}=d;t.onDragMove&&l(t.onDragMove({active:m,over:p}))},onDragOver(d){let{active:m,over:p}=d;l(t.onDragOver({active:m,over:p}))},onDragEnd(d){let{active:m,over:p}=d;l(t.onDragEnd({active:m,over:p}))},onDragCancel(d){let{active:m,over:p}=d;l(t.onDragCancel({active:m,over:p}))}}),[l,t])),!s)return null;const c=B.createElement(B.Fragment,null,B.createElement(Ls,{id:r,value:o.draggable}),B.createElement(zs,{id:f,announcement:h}));return n?ut.createPortal(c,n):c}var le;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(le||(le={}));function Ft(){}function Gs(e,t){return u.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function Ws(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return u.useMemo(()=>[...t].filter(r=>r!=null),[...t])}const Ne=Object.freeze({x:0,y:0});function Qs(e,t){const n=zt(e);if(!n)return"0 0";const r={x:(n.x-t.left)/t.width*100,y:(n.y-t.top)/t.height*100};return r.x+"% "+r.y+"%"}function Ys(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function Hs(e,t){if(!e||e.length===0)return null;const[n]=e;return n[t]}function qs(e,t){const n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),o=Math.min(t.left+t.width,e.left+e.width),l=Math.min(t.top+t.height,e.top+e.height),h=o-r,f=l-n;if(r<o&&n<l){const s=t.width*t.height,a=e.width*e.height,c=h*f,d=c/(s+a-c);return Number(d.toFixed(4))}return 0}const Xs=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const o=[];for(const l of r){const{id:h}=l,f=n.get(h);if(f){const s=qs(f,t);s>0&&o.push({id:h,data:{droppableContainer:l,value:s}})}}return o.sort(Ys)};function Vs(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function hr(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:Ne}function Js(e){return function(n){for(var r=arguments.length,o=new Array(r>1?r-1:0),l=1;l<r;l++)o[l-1]=arguments[l];return o.reduce((h,f)=>({...h,top:h.top+e*f.y,bottom:h.bottom+e*f.y,left:h.left+e*f.x,right:h.right+e*f.x}),{...n})}}const Zs=Js(1);function mr(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function eo(e,t,n){const r=mr(t);if(!r)return e;const{scaleX:o,scaleY:l,x:h,y:f}=r,s=e.left-h-(1-o)*parseFloat(n),a=e.top-f-(1-l)*parseFloat(n.slice(n.indexOf(" ")+1)),c=o?e.width/o:e.width,d=l?e.height/l:e.height;return{width:c,height:d,top:a,right:s+c,bottom:a+d,left:s}}const to={ignoreTransform:!1};function St(e,t){t===void 0&&(t=to);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:a,transformOrigin:c}=ge(e).getComputedStyle(e);a&&(n=eo(n,a,c))}const{top:r,left:o,width:l,height:h,bottom:f,right:s}=n;return{top:r,left:o,width:l,height:h,bottom:f,right:s}}function Ln(e){return St(e,{ignoreTransform:!0})}function no(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function ro(e,t){return t===void 0&&(t=ge(e).getComputedStyle(e)),t.position==="fixed"}function so(e,t){t===void 0&&(t=ge(e).getComputedStyle(e));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(o=>{const l=t[o];return typeof l=="string"?n.test(l):!1})}function yn(e,t){const n=[];function r(o){if(t!=null&&n.length>=t||!o)return n;if(xn(o)&&o.scrollingElement!=null&&!n.includes(o.scrollingElement))return n.push(o.scrollingElement),n;if(!wt(o)||ur(o)||n.includes(o))return n;const l=ge(e).getComputedStyle(o);return o!==e&&so(o,l)&&n.push(o),ro(o,l)?n:r(o.parentNode)}return e?r(e):n}function gr(e){const[t]=yn(e,1);return t??null}function en(e){return!Kt||!e?null:Ze(e)?e:vn(e)?xn(e)||e===et(e).scrollingElement?window:wt(e)?e:null:null}function pr(e){return Ze(e)?e.scrollX:e.scrollLeft}function vr(e){return Ze(e)?e.scrollY:e.scrollTop}function ln(e){return{x:pr(e),y:vr(e)}}var de;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(de||(de={}));function xr(e){return!Kt||!e?!1:e===document.scrollingElement}function br(e){const t={x:0,y:0},n=xr(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height},o=e.scrollTop<=t.y,l=e.scrollLeft<=t.x,h=e.scrollTop>=r.y,f=e.scrollLeft>=r.x;return{isTop:o,isLeft:l,isBottom:h,isRight:f,maxScroll:r,minScroll:t}}const oo={x:.2,y:.2};function io(e,t,n,r,o){let{top:l,left:h,right:f,bottom:s}=n;r===void 0&&(r=10),o===void 0&&(o=oo);const{isTop:a,isBottom:c,isLeft:d,isRight:m}=br(e),p={x:0,y:0},g={x:0,y:0},v={height:t.height*o.y,width:t.width*o.x};return!a&&l<=t.top+v.height?(p.y=de.Backward,g.y=r*Math.abs((t.top+v.height-l)/v.height)):!c&&s>=t.bottom-v.height&&(p.y=de.Forward,g.y=r*Math.abs((t.bottom-v.height-s)/v.height)),!m&&f>=t.right-v.width?(p.x=de.Forward,g.x=r*Math.abs((t.right-v.width-f)/v.width)):!d&&h<=t.left+v.width&&(p.x=de.Backward,g.x=r*Math.abs((t.left+v.width-h)/v.width)),{direction:p,speed:g}}function ao(e){if(e===document.scrollingElement){const{innerWidth:l,innerHeight:h}=window;return{top:0,left:0,right:l,bottom:h,width:l,height:h}}const{top:t,left:n,right:r,bottom:o}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:o,width:e.clientWidth,height:e.clientHeight}}function yr(e){return e.reduce((t,n)=>Ve(t,ln(n)),Ne)}function lo(e){return e.reduce((t,n)=>t+pr(n),0)}function co(e){return e.reduce((t,n)=>t+vr(n),0)}function wr(e,t){if(t===void 0&&(t=St),!e)return;const{top:n,left:r,bottom:o,right:l}=t(e);gr(e)&&(o<=0||l<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const uo=[["x",["left","right"],lo],["y",["top","bottom"],co]];class wn{constructor(t,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=yn(n),o=yr(r);this.rect={...t},this.width=t.width,this.height=t.height;for(const[l,h,f]of uo)for(const s of h)Object.defineProperty(this,s,{get:()=>{const a=f(r),c=o[l]-a;return this.rect[s]+c},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class ht{constructor(t){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=t}add(t,n,r){var o;(o=this.target)==null||o.addEventListener(t,n,r),this.listeners.push([t,n,r])}}function fo(e){const{EventTarget:t}=ge(e);return e instanceof t?e:et(e)}function tn(e,t){const n=Math.abs(e.x),r=Math.abs(e.y);return typeof t=="number"?Math.sqrt(n**2+r**2)>t:"x"in t&&"y"in t?n>t.x&&r>t.y:"x"in t?n>t.x:"y"in t?r>t.y:!1}var ye;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(ye||(ye={}));function zn(e){e.preventDefault()}function ho(e){e.stopPropagation()}var V;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter",e.Tab="Tab"})(V||(V={}));const Cr={start:[V.Space,V.Enter],cancel:[V.Esc],end:[V.Space,V.Enter,V.Tab]},mo=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case V.Right:return{...n,x:n.x+25};case V.Left:return{...n,x:n.x-25};case V.Down:return{...n,y:n.y+25};case V.Up:return{...n,y:n.y-25}}};class Sr{constructor(t){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=t;const{event:{target:n}}=t;this.props=t,this.listeners=new ht(et(n)),this.windowListeners=new ht(ge(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(ye.Resize,this.handleCancel),this.windowListeners.add(ye.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(ye.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:t,onStart:n}=this.props,r=t.node.current;r&&wr(r),n(Ne)}handleKeyDown(t){if(bn(t)){const{active:n,context:r,options:o}=this.props,{keyboardCodes:l=Cr,coordinateGetter:h=mo,scrollBehavior:f="smooth"}=o,{code:s}=t;if(l.end.includes(s)){this.handleEnd(t);return}if(l.cancel.includes(s)){this.handleCancel(t);return}const{collisionRect:a}=r.current,c=a?{x:a.left,y:a.top}:Ne;this.referenceCoordinates||(this.referenceCoordinates=c);const d=h(t,{active:n,context:r.current,currentCoordinates:c});if(d){const m=Lt(d,c),p={x:0,y:0},{scrollableAncestors:g}=r.current;for(const v of g){const x=t.code,{isTop:S,isRight:b,isLeft:w,isBottom:N,maxScroll:R,minScroll:D}=br(v),T=ao(v),C={x:Math.min(x===V.Right?T.right-T.width/2:T.right,Math.max(x===V.Right?T.left:T.left+T.width/2,d.x)),y:Math.min(x===V.Down?T.bottom-T.height/2:T.bottom,Math.max(x===V.Down?T.top:T.top+T.height/2,d.y))},A=x===V.Right&&!b||x===V.Left&&!w,E=x===V.Down&&!N||x===V.Up&&!S;if(A&&C.x!==d.x){const M=v.scrollLeft+m.x,Q=x===V.Right&&M<=R.x||x===V.Left&&M>=D.x;if(Q&&!m.y){v.scrollTo({left:M,behavior:f});return}Q?p.x=v.scrollLeft-M:p.x=x===V.Right?v.scrollLeft-R.x:v.scrollLeft-D.x,p.x&&v.scrollBy({left:-p.x,behavior:f});break}else if(E&&C.y!==d.y){const M=v.scrollTop+m.y,Q=x===V.Down&&M<=R.y||x===V.Up&&M>=D.y;if(Q&&!m.x){v.scrollTo({top:M,behavior:f});return}Q?p.y=v.scrollTop-M:p.y=x===V.Down?v.scrollTop-R.y:v.scrollTop-D.y,p.y&&v.scrollBy({top:-p.y,behavior:f});break}}this.handleMove(t,Ve(Lt(d,this.referenceCoordinates),p))}}}handleMove(t,n){const{onMove:r}=this.props;t.preventDefault(),r(n)}handleEnd(t){const{onEnd:n}=this.props;t.preventDefault(),this.detach(),n()}handleCancel(t){const{onCancel:n}=this.props;t.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}Sr.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=Cr,onActivation:o}=t,{active:l}=n;const{code:h}=e.nativeEvent;if(r.start.includes(h)){const f=l.activatorNode.current;return f&&e.target!==f?!1:(e.preventDefault(),o?.({event:e.nativeEvent}),!0)}return!1}}];function Fn(e){return!!(e&&"distance"in e)}function _n(e){return!!(e&&"delay"in e)}class Cn{constructor(t,n,r){var o;r===void 0&&(r=fo(t.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=t,this.events=n;const{event:l}=t,{target:h}=l;this.props=t,this.events=n,this.document=et(h),this.documentListeners=new ht(this.document),this.listeners=new ht(r),this.windowListeners=new ht(ge(h)),this.initialCoordinates=(o=zt(l))!=null?o:Ne,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:t,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(t.move.name,this.handleMove,{passive:!1}),this.listeners.add(t.end.name,this.handleEnd),t.cancel&&this.listeners.add(t.cancel.name,this.handleCancel),this.windowListeners.add(ye.Resize,this.handleCancel),this.windowListeners.add(ye.DragStart,zn),this.windowListeners.add(ye.VisibilityChange,this.handleCancel),this.windowListeners.add(ye.ContextMenu,zn),this.documentListeners.add(ye.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(_n(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(Fn(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(t,n){const{active:r,onPending:o}=this.props;o(r,t,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:t}=this,{onStart:n}=this.props;t&&(this.activated=!0,this.documentListeners.add(ye.Click,ho,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(ye.SelectionChange,this.removeTextSelection),n(t))}handleMove(t){var n;const{activated:r,initialCoordinates:o,props:l}=this,{onMove:h,options:{activationConstraint:f}}=l;if(!o)return;const s=(n=zt(t))!=null?n:Ne,a=Lt(o,s);if(!r&&f){if(Fn(f)){if(f.tolerance!=null&&tn(a,f.tolerance))return this.handleCancel();if(tn(a,f.distance))return this.handleStart()}if(_n(f)&&tn(a,f.tolerance))return this.handleCancel();this.handlePending(f,a);return}t.cancelable&&t.preventDefault(),h(s)}handleEnd(){const{onAbort:t,onEnd:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleCancel(){const{onAbort:t,onCancel:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleKeydown(t){t.code===V.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const go={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class Sn extends Cn{constructor(t){const{event:n}=t,r=et(n.target);super(t,go,r)}}Sn.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];const po={move:{name:"mousemove"},end:{name:"mouseup"}};var cn;(function(e){e[e.RightClick=2]="RightClick"})(cn||(cn={}));class vo extends Cn{constructor(t){super(t,po,et(t.event.target))}}vo.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===cn.RightClick?!1:(r?.({event:n}),!0)}}];const nn={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class xo extends Cn{constructor(t){super(t,nn)}static setup(){return window.addEventListener(nn.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(nn.move.name,t)};function t(){}}}xo.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;const{touches:o}=n;return o.length>1?!1:(r?.({event:n}),!0)}}];var mt;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(mt||(mt={}));var _t;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(_t||(_t={}));function bo(e){let{acceleration:t,activator:n=mt.Pointer,canScroll:r,draggingRect:o,enabled:l,interval:h=5,order:f=_t.TreeOrder,pointerCoordinates:s,scrollableAncestors:a,scrollableAncestorRects:c,delta:d,threshold:m}=e;const p=wo({delta:d,disabled:!l}),[g,v]=Ds(),x=u.useRef({x:0,y:0}),S=u.useRef({x:0,y:0}),b=u.useMemo(()=>{switch(n){case mt.Pointer:return s?{top:s.y,bottom:s.y,left:s.x,right:s.x}:null;case mt.DraggableRect:return o}},[n,o,s]),w=u.useRef(null),N=u.useCallback(()=>{const D=w.current;if(!D)return;const T=x.current.x*S.current.x,C=x.current.y*S.current.y;D.scrollBy(T,C)},[]),R=u.useMemo(()=>f===_t.TreeOrder?[...a].reverse():a,[f,a]);u.useEffect(()=>{if(!l||!a.length||!b){v();return}for(const D of R){if(r?.(D)===!1)continue;const T=a.indexOf(D),C=c[T];if(!C)continue;const{direction:A,speed:E}=io(D,C,b,t,m);for(const M of["x","y"])p[M][A[M]]||(E[M]=0,A[M]=0);if(E.x>0||E.y>0){v(),w.current=D,g(N,h),x.current=E,S.current=A;return}}x.current={x:0,y:0},S.current={x:0,y:0},v()},[t,N,r,v,l,h,JSON.stringify(b),JSON.stringify(p),g,a,R,c,JSON.stringify(m)])}const yo={x:{[de.Backward]:!1,[de.Forward]:!1},y:{[de.Backward]:!1,[de.Forward]:!1}};function wo(e){let{delta:t,disabled:n}=e;const r=Ot(t);return Ct(o=>{if(n||!r||!o)return yo;const l={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[de.Backward]:o.x[de.Backward]||l.x===-1,[de.Forward]:o.x[de.Forward]||l.x===1},y:{[de.Backward]:o.y[de.Backward]||l.y===-1,[de.Forward]:o.y[de.Forward]||l.y===1}}},[n,t,r])}function Co(e,t){const n=t!=null?e.get(t):void 0,r=n?n.node.current:null;return Ct(o=>{var l;return t==null?null:(l=r??o)!=null?l:null},[r,t])}function So(e,t){return u.useMemo(()=>e.reduce((n,r)=>{const{sensor:o}=r,l=o.activators.map(h=>({eventName:h.eventName,handler:t(h.handler,r)}));return[...n,...l]},[]),[e,t])}var yt;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(yt||(yt={}));var un;(function(e){e.Optimized="optimized"})(un||(un={}));const Bn=new Map;function Eo(e,t){let{dragging:n,dependencies:r,config:o}=t;const[l,h]=u.useState(null),{frequency:f,measure:s,strategy:a}=o,c=u.useRef(e),d=x(),m=xt(d),p=u.useCallback(function(S){S===void 0&&(S=[]),!m.current&&h(b=>b===null?S:b.concat(S.filter(w=>!b.includes(w))))},[m]),g=u.useRef(null),v=Ct(S=>{if(d&&!n)return Bn;if(!S||S===Bn||c.current!==e||l!=null){const b=new Map;for(let w of e){if(!w)continue;if(l&&l.length>0&&!l.includes(w.id)&&w.rect.current){b.set(w.id,w.rect.current);continue}const N=w.node.current,R=N?new wn(s(N),N):null;w.rect.current=R,R&&b.set(w.id,R)}return b}return S},[e,l,n,d,s]);return u.useEffect(()=>{c.current=e},[e]),u.useEffect(()=>{d||p()},[n,d]),u.useEffect(()=>{l&&l.length>0&&h(null)},[JSON.stringify(l)]),u.useEffect(()=>{d||typeof f!="number"||g.current!==null||(g.current=setTimeout(()=>{p(),g.current=null},f))},[f,d,p,...r]),{droppableRects:v,measureDroppableContainers:p,measuringScheduled:l!=null};function x(){switch(a){case yt.Always:return!1;case yt.BeforeDragging:return n;default:return!n}}}function En(e,t){return Ct(n=>e?n||(typeof t=="function"?t(e):e):null,[t,e])}function No(e,t){return En(e,t)}function Ro(e){let{callback:t,disabled:n}=e;const r=Gt(t),o=u.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:l}=window;return new l(r)},[r,n]);return u.useEffect(()=>()=>o?.disconnect(),[o]),o}function Qt(e){let{callback:t,disabled:n}=e;const r=Gt(t),o=u.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:l}=window;return new l(r)},[n]);return u.useEffect(()=>()=>o?.disconnect(),[o]),o}function ko(e){return new wn(St(e),e)}function Un(e,t,n){t===void 0&&(t=ko);const[r,o]=u.useState(null);function l(){o(s=>{if(!e)return null;if(e.isConnected===!1){var a;return(a=s??n)!=null?a:null}const c=t(e);return JSON.stringify(s)===JSON.stringify(c)?s:c})}const h=Ro({callback(s){if(e)for(const a of s){const{type:c,target:d}=a;if(c==="childList"&&d instanceof HTMLElement&&d.contains(e)){l();break}}}}),f=Qt({callback:l});return ze(()=>{l(),e?(f?.observe(e),h?.observe(document.body,{childList:!0,subtree:!0})):(f?.disconnect(),h?.disconnect())},[e]),r}function jo(e){const t=En(e);return hr(e,t)}const $n=[];function To(e){const t=u.useRef(e),n=Ct(r=>e?r&&r!==$n&&e&&t.current&&e.parentNode===t.current.parentNode?r:yn(e):$n,[e]);return u.useEffect(()=>{t.current=e},[e]),n}function Ao(e){const[t,n]=u.useState(null),r=u.useRef(e),o=u.useCallback(l=>{const h=en(l.target);h&&n(f=>f?(f.set(h,ln(h)),new Map(f)):null)},[]);return u.useEffect(()=>{const l=r.current;if(e!==l){h(l);const f=e.map(s=>{const a=en(s);return a?(a.addEventListener("scroll",o,{passive:!0}),[a,ln(a)]):null}).filter(s=>s!=null);n(f.length?new Map(f):null),r.current=e}return()=>{h(e),h(l)};function h(f){f.forEach(s=>{const a=en(s);a?.removeEventListener("scroll",o)})}},[o,e]),u.useMemo(()=>e.length?t?Array.from(t.values()).reduce((l,h)=>Ve(l,h),Ne):yr(e):Ne,[e,t])}function Kn(e,t){t===void 0&&(t=[]);const n=u.useRef(null);return u.useEffect(()=>{n.current=null},t),u.useEffect(()=>{const r=e!==Ne;r&&!n.current&&(n.current=e),!r&&n.current&&(n.current=null)},[e]),n.current?Lt(e,n.current):Ne}function Do(e){u.useEffect(()=>{if(!Kt)return;const t=e.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of t)n?.()}},e.map(t=>{let{sensor:n}=t;return n}))}function Mo(e,t){return u.useMemo(()=>e.reduce((n,r)=>{let{eventName:o,handler:l}=r;return n[o]=h=>{l(h,t)},n},{}),[e,t])}function Er(e){return u.useMemo(()=>e?no(e):null,[e])}const Gn=[];function Io(e,t){t===void 0&&(t=St);const[n]=e,r=Er(n?ge(n):null),[o,l]=u.useState(Gn);function h(){l(()=>e.length?e.map(s=>xr(s)?r:new wn(t(s),s)):Gn)}const f=Qt({callback:h});return ze(()=>{f?.disconnect(),h(),e.forEach(s=>f?.observe(s))},[e]),o}function Nr(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return wt(t)?t:e}function Po(e){let{measure:t}=e;const[n,r]=u.useState(null),o=u.useCallback(a=>{for(const{target:c}of a)if(wt(c)){r(d=>{const m=t(c);return d?{...d,width:m.width,height:m.height}:m});break}},[t]),l=Qt({callback:o}),h=u.useCallback(a=>{const c=Nr(a);l?.disconnect(),c&&l?.observe(c),r(c?t(c):null)},[t,l]),[f,s]=Pt(h);return u.useMemo(()=>({nodeRef:f,rect:n,setRef:s}),[n,f,s])}const Oo=[{sensor:Sn,options:{}},{sensor:Sr,options:{}}],Lo={current:{}},Dt={draggable:{measure:Ln},droppable:{measure:Ln,strategy:yt.WhileDragging,frequency:un.Optimized},dragOverlay:{measure:St}};class gt extends Map{get(t){var n;return t!=null&&(n=super.get(t))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(t=>{let{disabled:n}=t;return!n})}getNodeFor(t){var n,r;return(n=(r=this.get(t))==null?void 0:r.node.current)!=null?n:void 0}}const zo={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new gt,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:Ft},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Dt,measureDroppableContainers:Ft,windowRect:null,measuringScheduled:!1},Rr={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:Ft,draggableNodes:new Map,over:null,measureDroppableContainers:Ft},Et=u.createContext(Rr),kr=u.createContext(zo);function Fo(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new gt}}}function _o(e,t){switch(t.type){case le.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case le.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case le.DragEnd:case le.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case le.RegisterDroppable:{const{element:n}=t,{id:r}=n,o=new gt(e.droppable.containers);return o.set(r,n),{...e,droppable:{...e.droppable,containers:o}}}case le.SetDroppableDisabled:{const{id:n,key:r,disabled:o}=t,l=e.droppable.containers.get(n);if(!l||r!==l.key)return e;const h=new gt(e.droppable.containers);return h.set(n,{...l,disabled:o}),{...e,droppable:{...e.droppable,containers:h}}}case le.UnregisterDroppable:{const{id:n,key:r}=t,o=e.droppable.containers.get(n);if(!o||r!==o.key)return e;const l=new gt(e.droppable.containers);return l.delete(n),{...e,droppable:{...e.droppable,containers:l}}}default:return e}}function Bo(e){let{disabled:t}=e;const{active:n,activatorEvent:r,draggableNodes:o}=u.useContext(Et),l=Ot(r),h=Ot(n?.id);return u.useEffect(()=>{if(!t&&!r&&l&&h!=null){if(!bn(l)||document.activeElement===l.target)return;const f=o.get(h);if(!f)return;const{activatorNode:s,node:a}=f;if(!s.current&&!a.current)return;requestAnimationFrame(()=>{for(const c of[s.current,a.current]){if(!c)continue;const d=Ps(c);if(d){d.focus();break}}})}},[r,t,o,h,l]),null}function jr(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((o,l)=>l({transform:o,...r}),n):n}function Uo(e){return u.useMemo(()=>({draggable:{...Dt.draggable,...e?.draggable},droppable:{...Dt.droppable,...e?.droppable},dragOverlay:{...Dt.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function $o(e){let{activeNode:t,measure:n,initialRect:r,config:o=!0}=e;const l=u.useRef(!1),{x:h,y:f}=typeof o=="boolean"?{x:o,y:o}:o;ze(()=>{if(!h&&!f||!t){l.current=!1;return}if(l.current||!r)return;const a=t?.node.current;if(!a||a.isConnected===!1)return;const c=n(a),d=hr(c,r);if(h||(d.x=0),f||(d.y=0),l.current=!0,Math.abs(d.x)>0||Math.abs(d.y)>0){const m=gr(a);m&&m.scrollBy({top:d.y,left:d.x})}},[t,h,f,r,n])}const Yt=u.createContext({...Ne,scaleX:1,scaleY:1});var Ge;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(Ge||(Ge={}));const Ko=u.memo(function(t){var n,r,o,l;let{id:h,accessibility:f,autoScroll:s=!0,children:a,sensors:c=Oo,collisionDetection:d=Xs,measuring:m,modifiers:p,...g}=t;const v=u.useReducer(_o,void 0,Fo),[x,S]=v,[b,w]=Bs(),[N,R]=u.useState(Ge.Uninitialized),D=N===Ge.Initialized,{draggable:{active:T,nodes:C,translate:A},droppable:{containers:E}}=x,M=T!=null?C.get(T):null,Q=u.useRef({initial:null,translated:null}),H=u.useMemo(()=>{var O;return T!=null?{id:T,data:(O=M?.data)!=null?O:Lo,rect:Q}:null},[T,M]),k=u.useRef(null),[L,Y]=u.useState(null),[U,I]=u.useState(null),z=xt(g,Object.values(g)),J=Wt("DndDescribedBy",h),re=u.useMemo(()=>E.getEnabled(),[E]),q=Uo(m),{droppableRects:he,measureDroppableContainers:j,measuringScheduled:K}=Eo(re,{dragging:D,dependencies:[A.x,A.y],config:q.droppable}),_=Co(C,T),Z=u.useMemo(()=>U?zt(U):null,[U]),G=P(),W=No(_,q.draggable.measure);$o({activeNode:T!=null?C.get(T):null,config:G.layoutShiftCompensation,initialRect:W,measure:q.draggable.measure});const se=Un(_,q.draggable.measure,W),pe=Un(_?_.parentElement:null),we=u.useRef({activatorEvent:null,active:null,activeNode:_,collisionRect:null,collisions:null,droppableRects:he,draggableNodes:C,draggingNode:null,draggingNodeRect:null,droppableContainers:E,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Me=E.getNodeFor((n=we.current.over)==null?void 0:n.id),Ce=Po({measure:q.dragOverlay.measure}),Fe=(r=Ce.nodeRef.current)!=null?r:_,Se=D?(o=Ce.rect)!=null?o:se:null,Nt=!!(Ce.nodeRef.current&&Ce.rect),Qe=jo(Nt?null:se),tt=Er(Fe?ge(Fe):null),ve=To(D?Me??_:null),_e=Io(ve),Ye=jr(p,{transform:{x:A.x-Qe.x,y:A.y-Qe.y,scaleX:1,scaleY:1},activatorEvent:U,active:H,activeNodeRect:se,containerNodeRect:pe,draggingNodeRect:Se,over:we.current.over,overlayNodeRect:Ce.rect,scrollableAncestors:ve,scrollableAncestorRects:_e,windowRect:tt}),nt=Z?Ve(Z,A):null,rt=Ao(ve),Ie=Kn(rt),Rt=Kn(rt,[se]),Re=Ve(Ye,Ie),Pe=Se?Zs(Se,Ye):null,Be=H&&Pe?d({active:H,collisionRect:Pe,droppableRects:he,droppableContainers:re,pointerCoordinates:nt}):null,st=Hs(Be,"id"),[ke,kt]=u.useState(null),ot=Nt?Ye:Ve(Ye,Rt),Ue=Vs(ot,(l=ke?.rect)!=null?l:null,se),it=u.useRef(null),jt=u.useCallback((O,F)=>{let{sensor:ee,options:me}=F;if(k.current==null)return;const X=C.get(k.current);if(!X)return;const oe=O.nativeEvent,fe=new ee({active:k.current,activeNode:X,event:oe,options:me,context:we,onAbort(ae){if(!C.get(ae))return;const{onDragAbort:xe}=z.current,ce={id:ae};xe?.(ce),b({type:"onDragAbort",event:ce})},onPending(ae,je,xe,ce){if(!C.get(ae))return;const{onDragPending:$e}=z.current,Ke={id:ae,constraint:je,initialCoordinates:xe,offset:ce};$e?.(Ke),b({type:"onDragPending",event:Ke})},onStart(ae){const je=k.current;if(je==null)return;const xe=C.get(je);if(!xe)return;const{onDragStart:ce}=z.current,be={activatorEvent:oe,active:{id:je,data:xe.data,rect:Q}};ut.unstable_batchedUpdates(()=>{ce?.(be),R(Ge.Initializing),S({type:le.DragStart,initialCoordinates:ae,active:je}),b({type:"onDragStart",event:be}),Y(it.current),I(oe)})},onMove(ae){S({type:le.DragMove,coordinates:ae})},onEnd:Oe(le.DragEnd),onCancel:Oe(le.DragCancel)});it.current=fe;function Oe(ae){return async function(){const{active:xe,collisions:ce,over:be,scrollAdjustedTranslate:$e}=we.current;let Ke=null;if(xe&&$e){const{cancelDrop:at}=z.current;Ke={activatorEvent:oe,active:xe,collisions:ce,delta:$e,over:be},ae===le.DragEnd&&typeof at=="function"&&await Promise.resolve(at(Ke))&&(ae=le.DragCancel)}k.current=null,ut.unstable_batchedUpdates(()=>{S({type:ae}),R(Ge.Uninitialized),kt(null),Y(null),I(null),it.current=null;const at=ae===le.DragEnd?"onDragEnd":"onDragCancel";if(Ke){const Xt=z.current[at];Xt?.(Ke),b({type:at,event:Ke})}})}}},[C]),Ht=u.useCallback((O,F)=>(ee,me)=>{const X=ee.nativeEvent,oe=C.get(me);if(k.current!==null||!oe||X.dndKit||X.defaultPrevented)return;const fe={active:oe};O(ee,F.options,fe)===!0&&(X.dndKit={capturedBy:F.sensor},k.current=me,jt(ee,F))},[C,jt]),Tt=So(c,Ht);Do(c),ze(()=>{se&&N===Ge.Initializing&&R(Ge.Initialized)},[se,N]),u.useEffect(()=>{const{onDragMove:O}=z.current,{active:F,activatorEvent:ee,collisions:me,over:X}=we.current;if(!F||!ee)return;const oe={active:F,activatorEvent:ee,collisions:me,delta:{x:Re.x,y:Re.y},over:X};ut.unstable_batchedUpdates(()=>{O?.(oe),b({type:"onDragMove",event:oe})})},[Re.x,Re.y]),u.useEffect(()=>{const{active:O,activatorEvent:F,collisions:ee,droppableContainers:me,scrollAdjustedTranslate:X}=we.current;if(!O||k.current==null||!F||!X)return;const{onDragOver:oe}=z.current,fe=me.get(st),Oe=fe&&fe.rect.current?{id:fe.id,rect:fe.rect.current,data:fe.data,disabled:fe.disabled}:null,ae={active:O,activatorEvent:F,collisions:ee,delta:{x:X.x,y:X.y},over:Oe};ut.unstable_batchedUpdates(()=>{kt(Oe),oe?.(ae),b({type:"onDragOver",event:ae})})},[st]),ze(()=>{we.current={activatorEvent:U,active:H,activeNode:_,collisionRect:Pe,collisions:Be,droppableRects:he,draggableNodes:C,draggingNode:Fe,draggingNodeRect:Se,droppableContainers:E,over:ke,scrollableAncestors:ve,scrollAdjustedTranslate:Re},Q.current={initial:Se,translated:Pe}},[H,_,Be,Pe,C,Fe,Se,he,E,ke,ve,Re]),bo({...G,delta:A,draggingRect:Pe,pointerCoordinates:nt,scrollableAncestors:ve,scrollableAncestorRects:_e});const qt=u.useMemo(()=>({active:H,activeNode:_,activeNodeRect:se,activatorEvent:U,collisions:Be,containerNodeRect:pe,dragOverlay:Ce,draggableNodes:C,droppableContainers:E,droppableRects:he,over:ke,measureDroppableContainers:j,scrollableAncestors:ve,scrollableAncestorRects:_e,measuringConfiguration:q,measuringScheduled:K,windowRect:tt}),[H,_,se,U,Be,pe,Ce,C,E,he,ke,j,ve,_e,q,K,tt]),y=u.useMemo(()=>({activatorEvent:U,activators:Tt,active:H,activeNodeRect:se,ariaDescribedById:{draggable:J},dispatch:S,draggableNodes:C,over:ke,measureDroppableContainers:j}),[U,Tt,H,se,S,J,C,ke,j]);return B.createElement(fr.Provider,{value:w},B.createElement(Et.Provider,{value:y},B.createElement(kr.Provider,{value:qt},B.createElement(Yt.Provider,{value:Ue},a)),B.createElement(Bo,{disabled:f?.restoreFocus===!1})),B.createElement(Ks,{...f,hiddenTextDescribedById:J}));function P(){const O=L?.autoScrollEnabled===!1,F=typeof s=="object"?s.enabled===!1:s===!1,ee=D&&!O&&!F;return typeof s=="object"?{...s,enabled:ee}:{enabled:ee}}}),Go=u.createContext(null),Wn="button",Wo="Draggable";function Qo(e){let{id:t,data:n,disabled:r=!1,attributes:o}=e;const l=Wt(Wo),{activators:h,activatorEvent:f,active:s,activeNodeRect:a,ariaDescribedById:c,draggableNodes:d,over:m}=u.useContext(Et),{role:p=Wn,roleDescription:g="draggable",tabIndex:v=0}=o??{},x=s?.id===t,S=u.useContext(x?Yt:Go),[b,w]=Pt(),[N,R]=Pt(),D=Mo(h,t),T=xt(n);ze(()=>(d.set(t,{id:t,key:l,node:b,activatorNode:N,data:T}),()=>{const A=d.get(t);A&&A.key===l&&d.delete(t)}),[d,t]);const C=u.useMemo(()=>({role:p,tabIndex:v,"aria-disabled":r,"aria-pressed":x&&p===Wn?!0:void 0,"aria-roledescription":g,"aria-describedby":c.draggable}),[r,p,v,x,g,c.draggable]);return{active:s,activatorEvent:f,activeNodeRect:a,attributes:C,isDragging:x,listeners:r?void 0:D,node:b,over:m,setNodeRef:w,setActivatorNodeRef:R,transform:S}}function Yo(){return u.useContext(kr)}const Ho="Droppable",qo={timeout:25};function Xo(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:o}=e;const l=Wt(Ho),{active:h,dispatch:f,over:s,measureDroppableContainers:a}=u.useContext(Et),c=u.useRef({disabled:n}),d=u.useRef(!1),m=u.useRef(null),p=u.useRef(null),{disabled:g,updateMeasurementsFor:v,timeout:x}={...qo,...o},S=xt(v??r),b=u.useCallback(()=>{if(!d.current){d.current=!0;return}p.current!=null&&clearTimeout(p.current),p.current=setTimeout(()=>{a(Array.isArray(S.current)?S.current:[S.current]),p.current=null},x)},[x]),w=Qt({callback:b,disabled:g||!h}),N=u.useCallback((C,A)=>{w&&(A&&(w.unobserve(A),d.current=!1),C&&w.observe(C))},[w]),[R,D]=Pt(N),T=xt(t);return u.useEffect(()=>{!w||!R.current||(w.disconnect(),d.current=!1,w.observe(R.current))},[R,w]),u.useEffect(()=>(f({type:le.RegisterDroppable,element:{id:r,key:l,disabled:n,node:R,rect:m,data:T}}),()=>f({type:le.UnregisterDroppable,key:l,id:r})),[r]),u.useEffect(()=>{n!==c.current.disabled&&(f({type:le.SetDroppableDisabled,id:r,key:l,disabled:n}),c.current.disabled=n)},[r,l,n,f]),{active:h,rect:m,isOver:s?.id===r,node:R,over:s,setNodeRef:D}}function Vo(e){let{animation:t,children:n}=e;const[r,o]=u.useState(null),[l,h]=u.useState(null),f=Ot(n);return!n&&!r&&f&&o(f),ze(()=>{if(!l)return;const s=r?.key,a=r?.props.id;if(s==null||a==null){o(null);return}Promise.resolve(t(a,l)).then(()=>{o(null)})},[t,r,l]),B.createElement(B.Fragment,null,n,r?u.cloneElement(r,{ref:h}):null)}const Jo={x:0,y:0,scaleX:1,scaleY:1};function Zo(e){let{children:t}=e;return B.createElement(Et.Provider,{value:Rr},B.createElement(Yt.Provider,{value:Jo},t))}const ei={position:"fixed",touchAction:"none"},ti=e=>bn(e)?"transform 250ms ease":void 0,ni=u.forwardRef((e,t)=>{let{as:n,activatorEvent:r,adjustScale:o,children:l,className:h,rect:f,style:s,transform:a,transition:c=ti}=e;if(!f)return null;const d=o?a:{...a,scaleX:1,scaleY:1},m={...ei,width:f.width,height:f.height,top:f.top,left:f.left,transform:bt.Transform.toString(d),transformOrigin:o&&r?Qs(r,f):void 0,transition:typeof c=="function"?c(r):c,...s};return B.createElement(n,{className:h,style:m,ref:t},l)}),ri=e=>t=>{let{active:n,dragOverlay:r}=t;const o={},{styles:l,className:h}=e;if(l!=null&&l.active)for(const[f,s]of Object.entries(l.active))s!==void 0&&(o[f]=n.node.style.getPropertyValue(f),n.node.style.setProperty(f,s));if(l!=null&&l.dragOverlay)for(const[f,s]of Object.entries(l.dragOverlay))s!==void 0&&r.node.style.setProperty(f,s);return h!=null&&h.active&&n.node.classList.add(h.active),h!=null&&h.dragOverlay&&r.node.classList.add(h.dragOverlay),function(){for(const[s,a]of Object.entries(o))n.node.style.setProperty(s,a);h!=null&&h.active&&n.node.classList.remove(h.active)}},si=e=>{let{transform:{initial:t,final:n}}=e;return[{transform:bt.Transform.toString(t)},{transform:bt.Transform.toString(n)}]},oi={duration:250,easing:"ease",keyframes:si,sideEffects:ri({styles:{active:{opacity:"0"}}})};function ii(e){let{config:t,draggableNodes:n,droppableContainers:r,measuringConfiguration:o}=e;return Gt((l,h)=>{if(t===null)return;const f=n.get(l);if(!f)return;const s=f.node.current;if(!s)return;const a=Nr(h);if(!a)return;const{transform:c}=ge(h).getComputedStyle(h),d=mr(c);if(!d)return;const m=typeof t=="function"?t:ai(t);return wr(s,o.draggable.measure),m({active:{id:l,data:f.data,node:s,rect:o.draggable.measure(s)},draggableNodes:n,dragOverlay:{node:h,rect:o.dragOverlay.measure(a)},droppableContainers:r,measuringConfiguration:o,transform:d})})}function ai(e){const{duration:t,easing:n,sideEffects:r,keyframes:o}={...oi,...e};return l=>{let{active:h,dragOverlay:f,transform:s,...a}=l;if(!t)return;const c={x:f.rect.left-h.rect.left,y:f.rect.top-h.rect.top},d={scaleX:s.scaleX!==1?h.rect.width*s.scaleX/f.rect.width:1,scaleY:s.scaleY!==1?h.rect.height*s.scaleY/f.rect.height:1},m={x:s.x-c.x,y:s.y-c.y,...d},p=o({...a,active:h,dragOverlay:f,transform:{initial:s,final:m}}),[g]=p,v=p[p.length-1];if(JSON.stringify(g)===JSON.stringify(v))return;const x=r?.({active:h,dragOverlay:f,...a}),S=f.node.animate(p,{duration:t,easing:n,fill:"forwards"});return new Promise(b=>{S.onfinish=()=>{x?.(),b()}})}}let Qn=0;function li(e){return u.useMemo(()=>{if(e!=null)return Qn++,Qn},[e])}const ci=B.memo(e=>{let{adjustScale:t=!1,children:n,dropAnimation:r,style:o,transition:l,modifiers:h,wrapperElement:f="div",className:s,zIndex:a=999}=e;const{activatorEvent:c,active:d,activeNodeRect:m,containerNodeRect:p,draggableNodes:g,droppableContainers:v,dragOverlay:x,over:S,measuringConfiguration:b,scrollableAncestors:w,scrollableAncestorRects:N,windowRect:R}=Yo(),D=u.useContext(Yt),T=li(d?.id),C=jr(h,{activatorEvent:c,active:d,activeNodeRect:m,containerNodeRect:p,draggingNodeRect:x.rect,over:S,overlayNodeRect:x.rect,scrollableAncestors:w,scrollableAncestorRects:N,transform:D,windowRect:R}),A=En(m),E=ii({config:r,draggableNodes:g,droppableContainers:v,measuringConfiguration:b}),M=A?x.setRef:void 0;return B.createElement(Zo,null,B.createElement(Vo,{animation:E},d&&T?B.createElement(ni,{key:T,id:d.id,ref:M,as:f,activatorEvent:c,adjustScale:t,className:s,transition:l,rect:A,style:{zIndex:a,...o},transform:C},n):null))}),Tr=768;function ui(e){const t=window.matchMedia(`(max-width: ${Tr-1}px)`);return t.addEventListener("change",e),()=>t.removeEventListener("change",e)}function di(){return window.innerWidth<Tr}function fi(){return!1}function Ar(){return u.useSyncExternalStore(ui,di,fi)}function hi(e,t){const n=[];if(!e||e.length===0)return n;const r=e.some(l=>l.status==="ACTIVE");return e.some(l=>l.sessions?.some(h=>h.status===Rn.RUNNING||h.status===Rn.PENDING))&&n.push(t("正在运行的 Agent 将被停止")),r&&(n.push(t("分支上未合并的变更将丢失")),n.push(t("关联的工作目录(worktree)将被清理"))),n}function mi({isOpen:e,onClose:t,onConfirm:n,taskId:r,taskTitle:o,workspaces:l,isLoading:h}){const{t:f}=De(),{data:s,isLoading:a}=ds(l===void 0&&e?r:""),c=l??s,d=l===void 0&&e&&a,m=u.useMemo(()=>hi(c,f),[c,f]);return i.jsx(us,{isOpen:e,onClose:t,onConfirm:n,title:f("删除任务"),description:i.jsxs(i.Fragment,{children:[i.jsx("p",{children:f("确认删除任务「{title}」?此操作不可撤销。",{title:o})}),d?i.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:f("加载中...")}):m.length>0?i.jsx("ul",{className:"mt-2 space-y-1",children:m.map((p,g)=>i.jsxs("li",{className:"flex items-start gap-1.5 text-warning-ink",children:[i.jsx("span",{className:"mt-1 shrink-0 w-1.5 h-1.5 rounded-full bg-warning"}),i.jsx("span",{children:p})]},g))}):null]}),confirmText:f("删除"),variant:"danger",isLoading:h||d})}const gi="flex w-full min-w-0 items-center gap-2.5 rounded-md px-2 text-sm pointer-coarse:text-[15px] text-left transition-[background-color,box-shadow,color] duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60",pi="h-8 pointer-coarse:h-10";function dt(e){return ie(gi,pi,e?"bg-background text-foreground shadow-xs ring-1 ring-border/80":"text-foreground/80 hover:bg-accent hover:text-foreground active:bg-foreground/[0.06]")}const dn=60,fn=60*dn,rn=24*fn,Yn=new Map;function vi(e){let t=Yn.get(e);return t||(t={monthDay:new Intl.DateTimeFormat(e,{month:"numeric",day:"numeric"}),yearMonth:new Intl.DateTimeFormat(e,{year:"numeric",month:"numeric"})},Yn.set(e,t)),t}function xi(e,t,n){const r=new Date(e);if(!Number.isFinite(r.getTime()))return"—";const o=new Date,l=Math.max(0,Math.floor((o.getTime()-r.getTime())/1e3));if(l<dn)return t("now");if(l<fn)return t("{count}m",{count:Math.floor(l/dn)});if(l<rn)return t("{count}h",{count:Math.floor(l/fn)});if(l<7*rn)return t("{count}d",{count:Math.floor(l/rn)});const h=vi(n);return(r.getFullYear()===o.getFullYear()?h.monthDay:h.yearMonth).format(r)}let bi;function yi(e,t,n){const r=e.replace(/\s+/g," ").trim();if(n(r)<=t)return r;if(n("…")>t)return"";const o=typeof Intl.Segmenter>"u"?Array.from(r):Array.from((bi??=new Intl.Segmenter(void 0,{granularity:"grapheme"})).segment(r),f=>f.segment);let l=0,h=o.length;for(;l<h;){const f=Math.ceil((l+h)/2);n(`${o.slice(0,f).join("")}…`)<=t?l=f:h=f-1}return`${o.slice(0,l).join("")}…`}const ft=new Map,Mt=new Set;let He;function Hn(){for(const e of Mt)ft.get(e)?.(document.visibilityState!=="hidden")}function wi(e,t){if(typeof IntersectionObserver>"u")return()=>{};if(!He){const n=new IntersectionObserver(r=>{if(He===n)for(const o of r){const l=ft.get(o.target);if(!l)continue;const h=o.isIntersecting&&o.intersectionRatio>0;h?Mt.add(o.target):Mt.delete(o.target),l(h&&document.visibilityState!=="hidden")}});He=n,document.addEventListener("visibilitychange",Hn)}return ft.set(e,t),He.observe(e),()=>{ft.delete(e),Mt.delete(e),He?.unobserve(e),ft.size===0&&(He?.disconnect(),He=void 0,document.removeEventListener("visibilitychange",Hn))}}const hn=4200,qn=hn*.4,Ci=1e3/30;function Si(e){try{return e?.getContext("2d")??null}catch{return null}}function Ei({hostRef:e,text:t,variant:n,animate:r}){const o=u.useRef(null);return u.useLayoutEffect(()=>{const l=e.current,h=o.current,f=Si(h);if(!l||!h||!f)return;const s=l.closest(".task-row"),a=matchMedia("(prefers-reduced-motion: reduce)"),c=matchMedia("(hover: hover)");let d=0,m,p=0,g=0,v=0,x=0,S=0,b=0,w="",N="",R="",D=!1;function T(){cancelAnimationFrame(d),clearTimeout(m),d=0,m=void 0}function C(k){if(!(!f||!l)){if(f.clearRect(0,0,v,x),f.globalCompositeOperation="source-over",n==="project"){const L=f.createLinearGradient(b*.6,0,b*2.6,0);L.addColorStop(0,w),L.addColorStop(1,N),f.fillStyle=L}else f.fillStyle=w;if(f.fillText(R,0,S),n==="running"&&k<1){const L=(-1.5+1.5*k)*v,Y=f.createLinearGradient(L,0,L+v*2.5,0),U=I=>`rgba(0, 0, 0, ${I})`;Y.addColorStop(0,U(1)),Y.addColorStop(.4,U(1)),Y.addColorStop(.5,U(.4)),Y.addColorStop(.6,U(1)),Y.addColorStop(1,U(1)),f.globalCompositeOperation="destination-in",f.fillStyle=Y,f.fillRect(0,0,v,x),f.globalCompositeOperation="source-over"}l.dataset.gradientReady="true"}}function A(k){if(D)return;const L=(k-p)%hn;k-g>=Ci&&(C(Math.min(L/qn,1)),g=k),L>=qn?(C(1),m=setTimeout(()=>{d=requestAnimationFrame(A)},hn-L)):d=requestAnimationFrame(A)}function E(){if(T(),!l||!h||!f||D||(delete l.dataset.gradientReady,v=l.clientWidth,x=l.clientHeight,!v||!x))return;const k=getComputedStyle(l),L=Math.min(window.devicePixelRatio||1,3);h.width=Math.ceil(v*L),h.height=Math.ceil(x*L),f.setTransform(L,0,0,L,0,0),f.font=`${k.fontStyle} ${k.fontWeight} ${k.fontSize} ${k.fontFamily}`,f.textBaseline="alphabetic",b=Number.parseFloat(k.fontSize);const Y=f.measureText("Mg"),U=Y.fontBoundingBoxAscent??b*.8,I=Y.fontBoundingBoxDescent??b*.2;S=(x-U-I)/2+U,w=k.color,N=k.getPropertyValue("--muted-foreground").trim()||w,R=yi(t,v,J=>f.measureText(J).width);try{C(1)}catch{return}const z=a.matches||s?.matches(":focus-visible")||c.matches&&s?.matches(":hover");n==="running"&&r&&!z&&(p=performance.now(),g=0,d=requestAnimationFrame(A))}const M=typeof ResizeObserver>"u"?void 0:new ResizeObserver(E);M?.observe(l);const Q=new MutationObserver(E);Q.observe(document.documentElement,{attributes:!0,attributeFilter:["class","style"]}),Q.observe(l,{attributes:!0,attributeFilter:["class","style"]});const H=()=>{T(),delete l.dataset.gradientReady};h.addEventListener("contextlost",H),h.addEventListener("contextrestored",E),a.addEventListener("change",E),c.addEventListener("change",E);for(const k of["pointerenter","pointerleave","focus","blur"])s?.addEventListener(k,E);return window.addEventListener("resize",E),document.fonts?.addEventListener("loadingdone",E),E(),()=>{D=!0,T(),M?.disconnect(),Q.disconnect(),a.removeEventListener("change",E),c.removeEventListener("change",E);for(const k of["pointerenter","pointerleave","focus","blur"])s?.removeEventListener(k,E);window.removeEventListener("resize",E),document.fonts?.removeEventListener("loadingdone",E),h.removeEventListener("contextlost",H),h.removeEventListener("contextrestored",E),delete l.dataset.gradientReady,h.width=0,h.height=0}},[e,t,n,r]),i.jsx("canvas",{ref:o,className:"task-gradient-text__canvas","aria-hidden":"true"})}function Xn({text:e,variant:t,animate:n=!0,className:r}){const o=u.useRef(null),[l,h]=u.useState(!1);return u.useEffect(()=>{if(o.current)return wi(o.current,h)},[]),i.jsxs("span",{ref:o,className:ie("task-gradient-text",r),"data-text-effect":t,children:[i.jsx("span",{className:"task-gradient-text__text",children:e}),l&&i.jsx(Ei,{hostRef:o,text:e,variant:t,animate:n})]})}const Dr=u.createContext(null),Ni=3e4;function Ri(e=Ni){const[,t]=u.useState(0);u.useEffect(()=>{const n=setInterval(()=>t(r=>r+1),e);return()=>clearInterval(n)},[e])}function ki(e){const t=Jr(e,9,"..");if(t===e)return e;const n=t.slice(0,-2),r=n.search(/[-_.\s][^-_.\s]*$/);return`${r>=3?n.slice(0,r):n}..`}const sn="flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-[13px] text-foreground/80 transition-colors hover:bg-accent hover:text-foreground focus-visible:bg-accent focus-visible:outline-none",Vn="px-2 pb-1 pt-1.5 text-xs font-medium text-muted-foreground",Jn=i.jsx("div",{className:"-mx-1 my-1 h-px bg-border/60"});function ji({task:e,status:t,isSelected:n,project:r,showProject:o,onSelectTask:l,onTaskStatusChange:h,onDeleteTask:f,onTaskPriorityChange:s,disableDrag:a}){const{t:c,locale:d}=De(),m=u.useContext(Dr),p=u.useRef(null),g=!!e.projectArchivedAt,v=g||!!a,{attributes:x,listeners:S,setNodeRef:b,isDragging:w}=Qo({id:e.id,data:{task:e,fromStatus:t},disabled:v}),N=u.useCallback(I=>{p.current=I,b(I),m&&(I?m.registry.set(e.id,I):m.registry.delete(e.id))},[b,m,e.id]);u.useEffect(()=>()=>{m?.registry.delete(e.id)},[e.id,m]);const[R,D]=u.useState(null),[T,C]=u.useState(!1),A=u.useRef(null),E=u.useRef(null),M=u.useCallback(I=>{g||!h&&!f&&!s||(I.preventDefault(),D({x:I.clientX,y:I.clientY}))},[g,h,f,s]),Q=u.useCallback(()=>{E.current&&(clearTimeout(E.current),E.current=null)},[]),H=u.useCallback(I=>{if(!a||g||!h&&!f)return;const z=I.touches[0];if(!z)return;const{clientX:J,clientY:re}=z;E.current=setTimeout(()=>{E.current=null,D({x:J,y:re})},500)},[a,g,h,f]);u.useEffect(()=>{if(!R)return;const I=()=>D(null),z=re=>{A.current&&!A.current.contains(re.target)&&I()},J=re=>{re.key==="Escape"&&I()};return document.addEventListener("mousedown",z),document.addEventListener("touchstart",z),document.addEventListener("keydown",J),window.addEventListener("scroll",I,!0),window.addEventListener("resize",I),()=>{document.removeEventListener("mousedown",z),document.removeEventListener("touchstart",z),document.removeEventListener("keydown",J),window.removeEventListener("scroll",I,!0),window.removeEventListener("resize",I)}},[R]),u.useLayoutEffect(()=>{const I=A.current;if(!R||!I)return;const z=8;I.style.left=`${Math.max(z,Math.min(R.x,window.innerWidth-I.offsetWidth-z))}px`,I.style.top=`${Math.max(z,Math.min(R.y,window.innerHeight-I.offsetHeight-z))}px`},[R]);const k=r?r.name:void 0,L=o?r:void 0,Y=e.updatedAt?xi(e.updatedAt,c,d):null,{titleClass:U}=pt[t];return i.jsxs(i.Fragment,{children:[i.jsxs("button",{ref:N,type:"button",onClick:()=>l(e.id),onContextMenu:M,onTouchStart:H,onTouchEnd:Q,onTouchMove:Q,title:L?`${e.title} · ${L.name}`:e.title,"aria-label":k?`${e.title} — ${k}`:e.title,"aria-current":n||void 0,"data-sidebar-item":"",className:ie("task-row animate-task-enter",dt(n),w&&"opacity-30"),...v?{}:S,...v?{}:x,children:[t===te.Running?i.jsx(Xn,{text:e.title,variant:"running",animate:!n,className:ie("min-w-0 flex-1 truncate",U)}):i.jsx("span",{className:ie("min-w-0 flex-1 truncate",U),children:e.title}),e.priority!==void 0&&e.priority!==It.NORMAL&&i.jsx(Tn,{priority:e.priority}),e.projectArchivedAt&&i.jsx("span",{className:"inline-flex shrink-0 items-center rounded-full bg-foreground/[0.06] px-1.5 py-0.5 text-xs font-medium leading-none text-muted-foreground",children:e.projectRepoDeletedAt?c("源码已删除"):c("已删除")}),(Y||L)&&i.jsx("span",{className:"task-row-meta",children:i.jsxs("span",{className:"flex items-center gap-1",children:[L&&i.jsx("span",{className:"shrink-0 whitespace-nowrap rounded bg-foreground/[0.05] px-1 py-0.5 text-[10px] font-medium leading-none @max-[22rem]:hidden",children:i.jsx(Xn,{text:ki(L.name),variant:"project",className:L.color})}),Y&&i.jsx("span",{className:"shrink-0 text-[11px] tabular-nums text-muted-foreground",children:Y})]})})]}),R&&i.jsxs("div",{ref:A,role:"menu",className:"fixed z-[100] w-48 rounded-lg border border-border bg-popover p-1 shadow-popover shadow-black/5 animate-in fade-in zoom-in-95 duration-100",children:[h&&i.jsxs(i.Fragment,{children:[i.jsx("div",{className:Vn,children:c("Move to")}),Xr.filter(I=>I!==t).map(I=>{const{icon:z,label:J,accentClass:re}=pt[I];return i.jsxs("button",{type:"button",role:"menuitem",onClick:()=>{h(e.id,I),D(null)},className:sn,children:[i.jsx(z,{className:ie("size-3.5 shrink-0",re)}),i.jsx("span",{children:c(J)})]},I)})]}),s&&i.jsxs(i.Fragment,{children:[h&&Jn,i.jsx("div",{className:Vn,children:c("Priority")}),Vr.map(I=>{const z=(e.priority??It.NORMAL)===I.value;return i.jsxs("button",{type:"button",role:"menuitemradio","aria-checked":z,onClick:()=>{s(e.id,I.value),D(null)},className:sn,children:[i.jsx(Tn,{priority:I.value}),i.jsx("span",{className:"flex-1",children:c(I.label)}),z&&i.jsx(vt,{className:"size-3.5 shrink-0 text-foreground","aria-hidden":!0})]},I.value)})]}),f&&i.jsxs(i.Fragment,{children:[(h||s)&&Jn,i.jsxs("button",{type:"button",role:"menuitem",onClick:()=>{C(!0),D(null)},className:ie(sn,"text-destructive-ink hover:bg-destructive/10 hover:text-destructive-ink focus-visible:bg-destructive/10"),children:[i.jsx(gs,{className:"size-3.5 shrink-0","aria-hidden":!0}),i.jsx("span",{children:c("Delete Task")})]})]})]}),i.jsx(mi,{isOpen:T,onClose:()=>C(!1),onConfirm:()=>{f?.(e.id),C(!1)},taskId:e.id,taskTitle:e.title})]})}const Ti=u.memo(function({title:t,tasks:n,status:r,defaultOpen:o,selectedTaskId:l,onSelectTask:h,projects:f,showProject:s=!0,isDragging:a,dragFromStatus:c,onTaskStatusChange:d,onDeleteTask:m,onTaskPriorityChange:p,disableDrag:g}){const{t:v}=De(),[x,S]=u.useState(o);Ri();const b=n.length===0,w=a&&c===r,N=a&&c!==r,{setNodeRef:R,isOver:D}=Xo({id:`group-${r}`,data:{status:r}}),T=r===te.Review,C=v(t),{icon:A,accentClass:E}=pt[r],M=u.useId(),Q=a?w:x,H=Q&&!N&&!b;return i.jsxs("div",{className:H?"mb-4":"mb-2","data-task-group-status":r,children:[i.jsx("div",{className:"sticky top-0 z-10 bg-sidebar px-2",children:i.jsxs("button",{type:"button",onClick:()=>!a&&S(k=>!k),"aria-expanded":x,"data-sidebar-item":"",className:"group/header flex h-8 w-full items-center gap-1 rounded-md px-2 text-sm text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60 pointer-coarse:h-10 pointer-coarse:text-[15px]",children:[i.jsx(A,{className:ie("mr-1.5 size-4 shrink-0 -translate-y-px",E)}),i.jsx("span",{id:M,className:"truncate",children:C}),i.jsx(qr,{size:14,"aria-hidden":!0,className:ie("shrink-0 text-muted-foreground transition-transform duration-150 group-hover/header:text-muted-foreground",Q&&"rotate-90")}),T&&!b?i.jsx("span",{className:"ml-auto rounded-full bg-warning/15 px-1.5 text-xs font-semibold leading-5 tabular-nums text-warning-ink",children:n.length}):i.jsx("span",{className:"ml-auto text-xs tabular-nums text-muted-foreground",children:n.length})]})}),N&&i.jsx("div",{ref:R,className:ie("mx-2 mt-0.5 flex h-9 items-center justify-center rounded-md border border-dashed text-xs font-medium transition-colors duration-150",D?"border-foreground/30 bg-foreground/[0.04] text-foreground/80":"border-border bg-foreground/[0.02] text-muted-foreground"),children:D?v("Drop into {title}",{title:C}):v("Drop here")}),H&&i.jsx("div",{ref:w?void 0:R,role:"group","aria-labelledby":M,className:"mt-0.5 flex flex-col gap-px px-2",children:n.map(k=>{const L=l===k.id,Y=k.projectId?f.find(U=>U.id===k.projectId):void 0;return i.jsx(ji,{task:k,status:r,isSelected:L,project:Y,showProject:s,onSelectTask:h,onTaskStatusChange:k.projectArchivedAt?void 0:d,onDeleteTask:k.projectArchivedAt?void 0:m,onTaskPriorityChange:k.projectArchivedAt?void 0:p,disableDrag:g},k.id)})})]})}),Ai=12,Di=50;function Mi({isOpen:e,onClose:t,tasks:n,projects:r,onSelectTask:o}){const{t:l}=De(),[h,f]=u.useState(""),[s,a]=u.useState(0),c=u.useRef(null);u.useEffect(()=>{e&&(f(""),a(0))},[e]);const d=u.useMemo(()=>{const g=h.trim().toLowerCase();return g?n.filter(v=>v.title.toLowerCase().includes(g)).slice(0,Di):n.slice(0,Ai)},[n,h]);u.useEffect(()=>{a(0)},[h]),u.useEffect(()=>{c.current?.children[s]?.scrollIntoView({block:"nearest"})},[s]);const m=u.useCallback(g=>{o(g),t()},[o,t]),p=u.useCallback(g=>{if(g.key==="Escape")g.preventDefault(),t();else if(g.key==="ArrowDown")g.preventDefault(),a(v=>Math.min(v+1,d.length-1));else if(g.key==="ArrowUp")g.preventDefault(),a(v=>Math.max(v-1,0));else if(g.key==="Enter"&&!g.nativeEvent.isComposing){g.preventDefault();const v=d[s];v&&m(v.id)}},[t,d,s,m]);return e?i.jsxs("div",{className:"fixed inset-0 z-90",role:"dialog","aria-modal":"true",children:[i.jsx("div",{className:"absolute inset-0 bg-black/20",onClick:t}),i.jsxs("div",{className:"absolute left-1/2 top-[18vh] w-[min(560px,calc(100vw-2rem))] -translate-x-1/2 bg-popover rounded-xl border border-border shadow-popover overflow-hidden animate-in fade-in zoom-in-95 duration-100",children:[i.jsxs("div",{className:"flex items-center gap-2.5 px-4 border-b border-border/60",children:[i.jsx(cr,{size:15,className:"text-muted-foreground/70 shrink-0"}),i.jsx("input",{value:h,onChange:g=>f(g.target.value),onKeyDown:p,placeholder:l("Search tasks..."),"aria-label":l("Search tasks..."),autoFocus:!0,className:"flex-1 py-3 bg-transparent border-none focus:outline-none text-sm text-foreground placeholder-muted-foreground/60"})]}),d.length>0?i.jsxs(i.Fragment,{children:[!h.trim()&&i.jsx("div",{className:"px-4 pt-2.5 pb-1 text-xs font-medium text-muted-foreground",children:l("Recent tasks")}),i.jsx("div",{ref:c,className:"max-h-[46vh] overflow-y-auto scrollbar-app-thin pb-1.5 pt-0.5",children:d.map((g,v)=>{const x=r.find(w=>w.id===g.projectId),{icon:S,iconClass:b}=pt[g.status];return i.jsxs("button",{onClick:()=>m(g.id),onMouseEnter:()=>a(v),className:`w-full flex items-center gap-2.5 px-4 py-2 text-left transition-colors
|
|
7
|
-
${v===s?"bg-accent":""}`,children:[i.jsx(S,{className:`${b} size-4 shrink-0`}),i.jsx("span",{className:"flex-1 min-w-0 truncate text-sm text-foreground/90",title:g.title,children:g.title}),x&&i.jsx("span",{className:"shrink-0 max-w-[120px] truncate text-xs text-muted-foreground",children:x.name})]},g.id)})})]}):i.jsx("div",{className:"px-4 py-8 text-center text-sm text-muted-foreground",children:l("No matching tasks")})]})]}):null}const Ii=260,Pi=220;function Oi(e){const t={[te.Review]:[],[te.Running]:[],[te.Pending]:[],[te.Done]:[],[te.Cancelled]:[]};for(const n of e)t[n.status].push(n);return t[te.Review].sort((n,r)=>(r.priority??It.NORMAL)-(n.priority??It.NORMAL)),t}const Li=[{status:te.Review,title:"Review",defaultOpen:!0},{status:te.Running,title:"Running",defaultOpen:!0},{status:te.Pending,title:"Pending",defaultOpen:!1},{status:te.Done,title:"Done",defaultOpen:!1},{status:te.Cancelled,title:"Cancelled",defaultOpen:!1}];function zi(){return i.jsx("div",{className:"flex-1 overflow-hidden px-2 pt-3 motion-safe:animate-pulse","aria-hidden":!0,children:[3,4].map((e,t)=>i.jsxs("div",{className:"mb-4",children:[i.jsxs("div",{className:"flex h-8 items-center gap-2.5 px-2 pointer-coarse:h-10",children:[i.jsx("div",{className:"size-4 shrink-0 rounded-full bg-foreground/[0.06]"}),i.jsx("div",{className:"h-3 w-14 rounded-full bg-foreground/[0.06]"})]}),Array.from({length:e}).map((n,r)=>i.jsxs("div",{className:"flex h-8 items-center gap-2.5 px-2 pointer-coarse:h-10",children:[i.jsx("div",{className:"h-3 rounded-full bg-foreground/[0.06]",style:{width:`${64-(r+t)%3*14}%`}}),i.jsx("div",{className:"ml-auto h-2.5 w-8 shrink-0 rounded-full bg-foreground/[0.05]"})]},r))]},t))})}function Zn({tasks:e=[],projects:t=[],selectedTaskId:n,onSelectTask:r,filterProjectId:o,setFilterProjectId:l,width:h=320,onCreateTask:f,onCreateProject:s,isCreateActive:a,onTaskStatusChange:c,onDeleteTask:d,onTaskPriorityChange:m,isLoading:p=!1}){const{t:g}=De(),{preserveDesktopSearch:v}=ar(),x=Ar(),[S,b]=u.useState(null),[w,N]=u.useState(null),[R,D]=u.useState(!1),T=u.useRef(new Map),C=u.useRef(new Set),A=u.useRef(new Map),E=u.useMemo(()=>({registry:T.current}),[]),M=u.useCallback(j=>{j.remove(),C.current.delete(j)},[]),Q=o?e.filter(j=>j.projectId===o):e,H=u.useCallback((j,K)=>{const _=document.querySelector(`[data-task-group-status="${j}"]`);if(!_)return null;const G=(_.querySelector("button")??_).getBoundingClientRect();return G.width===0||G.height===0?null:new DOMRect(G.left,G.bottom+2,K.width,K.height)},[]),k=u.useCallback((j,K,_,Z=!1)=>{const G=document.createElement("div");G.setAttribute("aria-hidden","true"),G.innerHTML=_,G.querySelectorAll("[data-gradient-ready]").forEach(Me=>Me.removeAttribute("data-gradient-ready")),G.querySelectorAll(".task-gradient-text__canvas").forEach(Me=>Me.remove());const W=G.firstElementChild;W&&(W.style.cssText="",W.className=W.className.replace(/\bopacity-\S*/g,"").replace(/\banimate-task-enter\b/g,""),W.style.pointerEvents="none",W.style.width=`${j.width}px`,W.style.height=`${j.height}px`,W.style.margin="0",W.style.backgroundColor="var(--background)",W.style.borderRadius="0.5rem",W.style.boxShadow="var(--shadow-popover), 0 0 0 1px var(--border)",W.style.opacity="0.96",W.style.transition="none",W.setAttribute("tabindex","-1")),Object.assign(G.style,{position:"fixed",left:`${j.left}px`,top:`${j.top}px`,width:`${j.width}px`,height:`${j.height}px`,zIndex:"9999",pointerEvents:"none",overflow:"visible",transformOrigin:"top left",willChange:"transform, opacity"}),document.body.appendChild(G),C.current.add(G);const se=K.left-j.left,pe=K.top-j.top;G.animate([{transform:"translate(0, 0)",opacity:.96,offset:0},{transform:`translate(${se}px, ${pe}px)`,opacity:Z?.12:.96,offset:1}],{duration:Z?Pi:Ii,easing:"cubic-bezier(0.2, 0, 0, 1)",fill:"forwards"}).finished.then(()=>M(G),()=>M(G))},[M]);u.useLayoutEffect(()=>{const j=window.matchMedia("(prefers-reduced-motion: reduce)").matches,K=new Map;for(const _ of Q){const Z=T.current.get(_.id);if(!Z)continue;const G={status:_.status,rect:Z.getBoundingClientRect(),html:Z.outerHTML};if(K.set(_.id,G),j)continue;const W=A.current.get(_.id);if(!W||W.status===_.status)continue;const se=G.rect.left-W.rect.left,pe=G.rect.top-W.rect.top;Math.abs(se)<1&&Math.abs(pe)<1||k(W.rect,G.rect,W.html)}if(!j)for(const[_,Z]of A.current){if(K.has(_))continue;const G=Q.find(se=>se.id===_);if(!G||G.status===Z.status)continue;const W=H(G.status,Z.rect);W&&k(Z.rect,W,Z.html,!0)}A.current=K},[Q,k,H]),u.useEffect(()=>()=>{for(const j of C.current)j.remove();C.current.clear()},[]);const L=Ws(Gs(Sn,{activationConstraint:{distance:8}})),Y=u.useCallback(j=>{const K=j.active.data.current?.task,_=j.active.data.current?.fromStatus;K&&b(K),_&&N(_)},[]),U=u.useCallback(j=>{b(null),N(null);const{active:K,over:_}=j;if(!_)return;const Z=K.data.current?.task,G=K.data.current?.fromStatus,W=_.data.current?.status;!Z||!G||!W||Z.projectArchivedAt||G!==W&&c?.(Z.id,W)},[c]),J=!!!(o?t.find(j=>j.id===o)??null:null)?.archivedAt,re=Oi(Q),q=S?pt[S.status]:null,he=u.useCallback(j=>{if(j.key!=="ArrowDown"&&j.key!=="ArrowUp"||j.altKey||j.ctrlKey||j.metaKey||j.shiftKey)return;const K=Array.from(j.currentTarget.querySelectorAll("[data-sidebar-item]:not(:disabled)")),_=K.indexOf(j.target);_!==-1&&(j.preventDefault(),K[_+(j.key==="ArrowDown"?1:-1)]?.focus())},[]);return i.jsxs("div",{className:"@container h-full flex flex-col flex-shrink-0",style:{width:h},onKeyDown:he,children:[i.jsxs("div",{className:"px-2 pt-2 pb-1 flex flex-col gap-px flex-shrink-0",children:[s&&i.jsxs("button",{type:"button",onClick:s,"data-sidebar-item":"",className:dt(!1),children:[i.jsx(vs,{size:16,className:"shrink-0 text-muted-foreground"}),i.jsx("span",{className:"truncate",children:g("New Project")})]}),i.jsxs("button",{type:"button",onClick:f,disabled:!J,"aria-current":a||void 0,"data-sidebar-item":"",className:ie(dt(!!a),"disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent"),title:J?void 0:g("Deleted projects are read-only"),children:[i.jsx(Ss,{size:16,className:"shrink-0 text-muted-foreground"}),i.jsx("span",{className:"truncate",children:g("New Task")})]}),i.jsxs("button",{type:"button",onClick:()=>D(!0),"data-sidebar-item":"",className:dt(!1),children:[i.jsx(cr,{size:16,className:"shrink-0 text-muted-foreground"}),i.jsx("span",{className:"truncate",children:g("Search")})]}),i.jsxs(Zr,{to:v("/conversations"),"data-sidebar-item":"",className:dt(!1),children:[i.jsx(Es,{size:16,className:"shrink-0 text-muted-foreground"}),i.jsx("span",{className:"truncate",children:g("对话")})]})]}),p?i.jsx(zi,{}):Q.length===0?i.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center px-6 pb-[10vh] text-center select-none",children:[i.jsx(an,{size:36,"aria-hidden":"true",className:"text-muted-foreground/50 mb-3",strokeWidth:1.5}),i.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:g("No tasks")}),J&&f?i.jsx("button",{type:"button",onClick:f,className:"px-3.5 py-1.5 rounded-md bg-brand text-brand-foreground text-xs font-medium hover:bg-brand/90 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60 focus-visible:ring-offset-2",children:g("New Task")}):null]}):i.jsx(Dr.Provider,{value:E,children:i.jsxs(Ko,{sensors:L,onDragStart:Y,onDragEnd:U,children:[i.jsx("div",{className:"flex-1 overflow-y-auto scrollbar-app-thin scroll-pt-8 pointer-coarse:scroll-pt-10 relative",children:i.jsx("div",{className:"pt-3 pb-4",children:Li.map(({status:j,title:K,defaultOpen:_})=>i.jsx(Ti,{title:K,tasks:re[j],status:j,defaultOpen:_,selectedTaskId:n,onSelectTask:r,projects:t,showProject:!o,isDragging:S!==null,dragFromStatus:w,onTaskStatusChange:c,onDeleteTask:d,onTaskPriorityChange:m,disableDrag:x},j))})}),i.jsx(ci,{dropAnimation:null,children:S&&q?i.jsxs("div",{className:"flex h-8 w-fit max-w-[280px] items-center gap-2.5 rounded-md bg-background px-2 text-sm text-foreground shadow-overlay ring-1 ring-border/80",children:[i.jsx(q.icon,{className:ie("size-4 shrink-0",q.iconClass)}),i.jsx("span",{className:"truncate",title:S.title,children:S.title})]}):null})]})}),!p&&i.jsxs("div",{className:"h-9 px-4 flex flex-shrink-0 items-center justify-between border-t border-border/60 text-xs text-muted-foreground",children:[i.jsx("span",{className:"tabular-nums",children:g("{count} tasks",{count:Q.length})}),o?i.jsx("button",{type:"button",onClick:()=>l(null),className:"rounded-sm hover:text-foreground underline decoration-border underline-offset-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60",children:g("Clear filter")}):null]}),i.jsx(Mi,{isOpen:R,onClose:()=>D(!1),tasks:Q,projects:t,onSelectTask:r})]})}function Nn(e){switch(e){case Te.TODO:return te.Pending;case Te.IN_PROGRESS:return te.Running;case Te.IN_REVIEW:return te.Review;case Te.DONE:return te.Done;case Te.CANCELLED:return te.Cancelled}}function Fi(e){switch(e){case te.Pending:return Te.TODO;case te.Running:return Te.IN_PROGRESS;case te.Review:return Te.IN_REVIEW;case te.Done:return Te.DONE;case te.Cancelled:return Te.CANCELLED}}function _i(e){switch(e){case Ee.CLAUDE_CODE:return"Claude Code";case Ee.GEMINI_CLI:return"Gemini CLI";case Ee.CURSOR_AGENT:return"Cursor Agent";case Ee.CODEX:return"Codex";case Ee.QWEN_CODE:return"Qwen Code";case Ee.KIRO_CLI:return"Kiro CLI";case Ee.OPENCODE:return"OpenCode";case Ee.PI_CODING_AGENT:return"Pi Coding Agent";case Ee.GROK_BUILD:return"Grok Build";case Ee.MINION_CODE:return"Minion Code";case Ee.DEEPSEEK_HERMES:return"DeepSeek Harness"}}const Bt=["text-indigo-600","text-emerald-600","text-rose-600","text-amber-600","text-cyan-600","text-violet-600","text-teal-600","text-pink-600"];function Mr(e,t){let n=0;for(let r=0;r<e.length;r++)n=(n<<5)-n+e.charCodeAt(r)|0;return Math.abs(n)%t}function Bi(e){return{id:e.id,name:e.name,color:e.color||Bt[Mr(e.name,Bt.length)],isGitRepo:e.isGitRepo,worktreeReady:e.worktreeReady,reason:e.reason,archivedAt:e.archivedAt??null,repoDeletedAt:e.repoDeletedAt??null}}function Ui(e,t){const n=e.preferredWorkspace?e.preferredWorkspace.workspaceKind===Je.MAIN_DIRECTORY?"Project directory":e.preferredWorkspace.branchName:"—";return{id:e.id,projectId:e.projectId,title:e.title,status:Nn(e.status),priority:e.priority,agent:e.latestAgentType?_i(e.latestAgentType):"—",branch:n,description:"",updatedAt:new Date(e.updatedAt).toISOString(),isGitRepo:t?.isGitRepo,worktreeReady:t?.worktreeReady,reason:t?.reason,projectArchivedAt:t?.archivedAt??null,projectRepoDeletedAt:t?.repoDeletedAt??null}}function $i(e,t){const n=e.preferredWorkspace?e.preferredWorkspace.workspaceKind===Je.MAIN_DIRECTORY?"Project directory":e.preferredWorkspace.branchName:"—";return{id:e.id,projectId:t.id,projectName:t.name,projectColor:t.color||Bt[Mr(t.name,Bt.length)],title:e.title,status:Nn(e.status),priority:e.priority,branch:n,mainBranch:t.mainBranch??"main",description:"",isGitRepo:t.isGitRepo,worktreeReady:t.worktreeReady,reason:t.reason,projectArchivedAt:t.archivedAt??null,projectRepoDeletedAt:t.repoDeletedAt??null}}var Ki=Object.defineProperty,Ut=Object.getOwnPropertySymbols,Ir=Object.prototype.hasOwnProperty,Pr=Object.prototype.propertyIsEnumerable,er=(e,t,n)=>t in e?Ki(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,mn=(e,t)=>{for(var n in t||(t={}))Ir.call(t,n)&&er(e,n,t[n]);if(Ut)for(var n of Ut(t))Pr.call(t,n)&&er(e,n,t[n]);return e},gn=(e,t)=>{var n={};for(var r in e)Ir.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ut)for(var r of Ut(e))t.indexOf(r)<0&&Pr.call(e,r)&&(n[r]=e[r]);return n};var qe;(e=>{const t=class ${constructor(s,a,c,d){if(this.version=s,this.errorCorrectionLevel=a,this.modules=[],this.isFunction=[],s<$.MIN_VERSION||s>$.MAX_VERSION)throw new RangeError("Version value out of range");if(d<-1||d>7)throw new RangeError("Mask value out of range");this.size=s*4+17;let m=[];for(let g=0;g<this.size;g++)m.push(!1);for(let g=0;g<this.size;g++)this.modules.push(m.slice()),this.isFunction.push(m.slice());this.drawFunctionPatterns();const p=this.addEccAndInterleave(c);if(this.drawCodewords(p),d==-1){let g=1e9;for(let v=0;v<8;v++){this.applyMask(v),this.drawFormatBits(v);const x=this.getPenaltyScore();x<g&&(d=v,g=x),this.applyMask(v)}}o(0<=d&&d<=7),this.mask=d,this.applyMask(d),this.drawFormatBits(d),this.isFunction=[]}static encodeText(s,a){const c=e.QrSegment.makeSegments(s);return $.encodeSegments(c,a)}static encodeBinary(s,a){const c=e.QrSegment.makeBytes(s);return $.encodeSegments([c],a)}static encodeSegments(s,a,c=1,d=40,m=-1,p=!0){if(!($.MIN_VERSION<=c&&c<=d&&d<=$.MAX_VERSION)||m<-1||m>7)throw new RangeError("Invalid value");let g,v;for(g=c;;g++){const w=$.getNumDataCodewords(g,a)*8,N=h.getTotalBits(s,g);if(N<=w){v=N;break}if(g>=d)throw new RangeError("Data too long")}for(const w of[$.Ecc.MEDIUM,$.Ecc.QUARTILE,$.Ecc.HIGH])p&&v<=$.getNumDataCodewords(g,w)*8&&(a=w);let x=[];for(const w of s){n(w.mode.modeBits,4,x),n(w.numChars,w.mode.numCharCountBits(g),x);for(const N of w.getData())x.push(N)}o(x.length==v);const S=$.getNumDataCodewords(g,a)*8;o(x.length<=S),n(0,Math.min(4,S-x.length),x),n(0,(8-x.length%8)%8,x),o(x.length%8==0);for(let w=236;x.length<S;w^=253)n(w,8,x);let b=[];for(;b.length*8<x.length;)b.push(0);return x.forEach((w,N)=>b[N>>>3]|=w<<7-(N&7)),new $(g,a,b,m)}getModule(s,a){return 0<=s&&s<this.size&&0<=a&&a<this.size&&this.modules[a][s]}getModules(){return this.modules}drawFunctionPatterns(){for(let c=0;c<this.size;c++)this.setFunctionModule(6,c,c%2==0),this.setFunctionModule(c,6,c%2==0);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);const s=this.getAlignmentPatternPositions(),a=s.length;for(let c=0;c<a;c++)for(let d=0;d<a;d++)c==0&&d==0||c==0&&d==a-1||c==a-1&&d==0||this.drawAlignmentPattern(s[c],s[d]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(s){const a=this.errorCorrectionLevel.formatBits<<3|s;let c=a;for(let m=0;m<10;m++)c=c<<1^(c>>>9)*1335;const d=(a<<10|c)^21522;o(d>>>15==0);for(let m=0;m<=5;m++)this.setFunctionModule(8,m,r(d,m));this.setFunctionModule(8,7,r(d,6)),this.setFunctionModule(8,8,r(d,7)),this.setFunctionModule(7,8,r(d,8));for(let m=9;m<15;m++)this.setFunctionModule(14-m,8,r(d,m));for(let m=0;m<8;m++)this.setFunctionModule(this.size-1-m,8,r(d,m));for(let m=8;m<15;m++)this.setFunctionModule(8,this.size-15+m,r(d,m));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let s=this.version;for(let c=0;c<12;c++)s=s<<1^(s>>>11)*7973;const a=this.version<<12|s;o(a>>>18==0);for(let c=0;c<18;c++){const d=r(a,c),m=this.size-11+c%3,p=Math.floor(c/3);this.setFunctionModule(m,p,d),this.setFunctionModule(p,m,d)}}drawFinderPattern(s,a){for(let c=-4;c<=4;c++)for(let d=-4;d<=4;d++){const m=Math.max(Math.abs(d),Math.abs(c)),p=s+d,g=a+c;0<=p&&p<this.size&&0<=g&&g<this.size&&this.setFunctionModule(p,g,m!=2&&m!=4)}}drawAlignmentPattern(s,a){for(let c=-2;c<=2;c++)for(let d=-2;d<=2;d++)this.setFunctionModule(s+d,a+c,Math.max(Math.abs(d),Math.abs(c))!=1)}setFunctionModule(s,a,c){this.modules[a][s]=c,this.isFunction[a][s]=!0}addEccAndInterleave(s){const a=this.version,c=this.errorCorrectionLevel;if(s.length!=$.getNumDataCodewords(a,c))throw new RangeError("Invalid argument");const d=$.NUM_ERROR_CORRECTION_BLOCKS[c.ordinal][a],m=$.ECC_CODEWORDS_PER_BLOCK[c.ordinal][a],p=Math.floor($.getNumRawDataModules(a)/8),g=d-p%d,v=Math.floor(p/d);let x=[];const S=$.reedSolomonComputeDivisor(m);for(let w=0,N=0;w<d;w++){let R=s.slice(N,N+v-m+(w<g?0:1));N+=R.length;const D=$.reedSolomonComputeRemainder(R,S);w<g&&R.push(0),x.push(R.concat(D))}let b=[];for(let w=0;w<x[0].length;w++)x.forEach((N,R)=>{(w!=v-m||R>=g)&&b.push(N[w])});return o(b.length==p),b}drawCodewords(s){if(s.length!=Math.floor($.getNumRawDataModules(this.version)/8))throw new RangeError("Invalid argument");let a=0;for(let c=this.size-1;c>=1;c-=2){c==6&&(c=5);for(let d=0;d<this.size;d++)for(let m=0;m<2;m++){const p=c-m,v=(c+1&2)==0?this.size-1-d:d;!this.isFunction[v][p]&&a<s.length*8&&(this.modules[v][p]=r(s[a>>>3],7-(a&7)),a++)}}o(a==s.length*8)}applyMask(s){if(s<0||s>7)throw new RangeError("Mask value out of range");for(let a=0;a<this.size;a++)for(let c=0;c<this.size;c++){let d;switch(s){case 0:d=(c+a)%2==0;break;case 1:d=a%2==0;break;case 2:d=c%3==0;break;case 3:d=(c+a)%3==0;break;case 4:d=(Math.floor(c/3)+Math.floor(a/2))%2==0;break;case 5:d=c*a%2+c*a%3==0;break;case 6:d=(c*a%2+c*a%3)%2==0;break;case 7:d=((c+a)%2+c*a%3)%2==0;break;default:throw new Error("Unreachable")}!this.isFunction[a][c]&&d&&(this.modules[a][c]=!this.modules[a][c])}}getPenaltyScore(){let s=0;for(let m=0;m<this.size;m++){let p=!1,g=0,v=[0,0,0,0,0,0,0];for(let x=0;x<this.size;x++)this.modules[m][x]==p?(g++,g==5?s+=$.PENALTY_N1:g>5&&s++):(this.finderPenaltyAddHistory(g,v),p||(s+=this.finderPenaltyCountPatterns(v)*$.PENALTY_N3),p=this.modules[m][x],g=1);s+=this.finderPenaltyTerminateAndCount(p,g,v)*$.PENALTY_N3}for(let m=0;m<this.size;m++){let p=!1,g=0,v=[0,0,0,0,0,0,0];for(let x=0;x<this.size;x++)this.modules[x][m]==p?(g++,g==5?s+=$.PENALTY_N1:g>5&&s++):(this.finderPenaltyAddHistory(g,v),p||(s+=this.finderPenaltyCountPatterns(v)*$.PENALTY_N3),p=this.modules[x][m],g=1);s+=this.finderPenaltyTerminateAndCount(p,g,v)*$.PENALTY_N3}for(let m=0;m<this.size-1;m++)for(let p=0;p<this.size-1;p++){const g=this.modules[m][p];g==this.modules[m][p+1]&&g==this.modules[m+1][p]&&g==this.modules[m+1][p+1]&&(s+=$.PENALTY_N2)}let a=0;for(const m of this.modules)a=m.reduce((p,g)=>p+(g?1:0),a);const c=this.size*this.size,d=Math.ceil(Math.abs(a*20-c*10)/c)-1;return o(0<=d&&d<=9),s+=d*$.PENALTY_N4,o(0<=s&&s<=2568888),s}getAlignmentPatternPositions(){if(this.version==1)return[];{const s=Math.floor(this.version/7)+2,a=this.version==32?26:Math.ceil((this.version*4+4)/(s*2-2))*2;let c=[6];for(let d=this.size-7;c.length<s;d-=a)c.splice(1,0,d);return c}}static getNumRawDataModules(s){if(s<$.MIN_VERSION||s>$.MAX_VERSION)throw new RangeError("Version number out of range");let a=(16*s+128)*s+64;if(s>=2){const c=Math.floor(s/7)+2;a-=(25*c-10)*c-55,s>=7&&(a-=36)}return o(208<=a&&a<=29648),a}static getNumDataCodewords(s,a){return Math.floor($.getNumRawDataModules(s)/8)-$.ECC_CODEWORDS_PER_BLOCK[a.ordinal][s]*$.NUM_ERROR_CORRECTION_BLOCKS[a.ordinal][s]}static reedSolomonComputeDivisor(s){if(s<1||s>255)throw new RangeError("Degree out of range");let a=[];for(let d=0;d<s-1;d++)a.push(0);a.push(1);let c=1;for(let d=0;d<s;d++){for(let m=0;m<a.length;m++)a[m]=$.reedSolomonMultiply(a[m],c),m+1<a.length&&(a[m]^=a[m+1]);c=$.reedSolomonMultiply(c,2)}return a}static reedSolomonComputeRemainder(s,a){let c=a.map(d=>0);for(const d of s){const m=d^c.shift();c.push(0),a.forEach((p,g)=>c[g]^=$.reedSolomonMultiply(p,m))}return c}static reedSolomonMultiply(s,a){if(s>>>8||a>>>8)throw new RangeError("Byte out of range");let c=0;for(let d=7;d>=0;d--)c=c<<1^(c>>>7)*285,c^=(a>>>d&1)*s;return o(c>>>8==0),c}finderPenaltyCountPatterns(s){const a=s[1];o(a<=this.size*3);const c=a>0&&s[2]==a&&s[3]==a*3&&s[4]==a&&s[5]==a;return(c&&s[0]>=a*4&&s[6]>=a?1:0)+(c&&s[6]>=a*4&&s[0]>=a?1:0)}finderPenaltyTerminateAndCount(s,a,c){return s&&(this.finderPenaltyAddHistory(a,c),a=0),a+=this.size,this.finderPenaltyAddHistory(a,c),this.finderPenaltyCountPatterns(c)}finderPenaltyAddHistory(s,a){a[0]==0&&(s+=this.size),a.pop(),a.unshift(s)}};t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=t;function n(f,s,a){if(s<0||s>31||f>>>s)throw new RangeError("Value out of range");for(let c=s-1;c>=0;c--)a.push(f>>>c&1)}function r(f,s){return(f>>>s&1)!=0}function o(f){if(!f)throw new Error("Assertion error")}const l=class ne{constructor(s,a,c){if(this.mode=s,this.numChars=a,this.bitData=c,a<0)throw new RangeError("Invalid argument");this.bitData=c.slice()}static makeBytes(s){let a=[];for(const c of s)n(c,8,a);return new ne(ne.Mode.BYTE,s.length,a)}static makeNumeric(s){if(!ne.isNumeric(s))throw new RangeError("String contains non-numeric characters");let a=[];for(let c=0;c<s.length;){const d=Math.min(s.length-c,3);n(parseInt(s.substring(c,c+d),10),d*3+1,a),c+=d}return new ne(ne.Mode.NUMERIC,s.length,a)}static makeAlphanumeric(s){if(!ne.isAlphanumeric(s))throw new RangeError("String contains unencodable characters in alphanumeric mode");let a=[],c;for(c=0;c+2<=s.length;c+=2){let d=ne.ALPHANUMERIC_CHARSET.indexOf(s.charAt(c))*45;d+=ne.ALPHANUMERIC_CHARSET.indexOf(s.charAt(c+1)),n(d,11,a)}return c<s.length&&n(ne.ALPHANUMERIC_CHARSET.indexOf(s.charAt(c)),6,a),new ne(ne.Mode.ALPHANUMERIC,s.length,a)}static makeSegments(s){return s==""?[]:ne.isNumeric(s)?[ne.makeNumeric(s)]:ne.isAlphanumeric(s)?[ne.makeAlphanumeric(s)]:[ne.makeBytes(ne.toUtf8ByteArray(s))]}static makeEci(s){let a=[];if(s<0)throw new RangeError("ECI assignment value out of range");if(s<128)n(s,8,a);else if(s<16384)n(2,2,a),n(s,14,a);else if(s<1e6)n(6,3,a),n(s,21,a);else throw new RangeError("ECI assignment value out of range");return new ne(ne.Mode.ECI,0,a)}static isNumeric(s){return ne.NUMERIC_REGEX.test(s)}static isAlphanumeric(s){return ne.ALPHANUMERIC_REGEX.test(s)}getData(){return this.bitData.slice()}static getTotalBits(s,a){let c=0;for(const d of s){const m=d.mode.numCharCountBits(a);if(d.numChars>=1<<m)return 1/0;c+=4+m+d.bitData.length}return c}static toUtf8ByteArray(s){s=encodeURI(s);let a=[];for(let c=0;c<s.length;c++)s.charAt(c)!="%"?a.push(s.charCodeAt(c)):(a.push(parseInt(s.substring(c+1,c+3),16)),c+=2);return a}};l.NUMERIC_REGEX=/^[0-9]*$/,l.ALPHANUMERIC_REGEX=/^[A-Z0-9 $%*+.\/:-]*$/,l.ALPHANUMERIC_CHARSET="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:";let h=l;e.QrSegment=l})(qe||(qe={}));(e=>{(t=>{const n=class{constructor(o,l){this.ordinal=o,this.formatBits=l}};n.LOW=new n(0,1),n.MEDIUM=new n(1,0),n.QUARTILE=new n(2,3),n.HIGH=new n(3,2),t.Ecc=n})(e.QrCode||(e.QrCode={}))})(qe||(qe={}));(e=>{(t=>{const n=class{constructor(o,l){this.modeBits=o,this.numBitsCharCount=l}numCharCountBits(o){return this.numBitsCharCount[Math.floor((o+7)/17)]}};n.NUMERIC=new n(1,[10,12,14]),n.ALPHANUMERIC=new n(2,[9,11,13]),n.BYTE=new n(4,[8,16,16]),n.KANJI=new n(8,[8,10,12]),n.ECI=new n(7,[0,0,0]),t.Mode=n})(e.QrSegment||(e.QrSegment={}))})(qe||(qe={}));var Xe=qe;var Gi={L:Xe.QrCode.Ecc.LOW,M:Xe.QrCode.Ecc.MEDIUM,Q:Xe.QrCode.Ecc.QUARTILE,H:Xe.QrCode.Ecc.HIGH},Or=128,Lr="L",zr="#FFFFFF",Fr="#000000",_r=!1,Br=1,Wi=4,Qi=0,Yi=.1;function Ur(e,t=0){const n=[];return e.forEach(function(r,o){let l=null;r.forEach(function(h,f){if(!h&&l!==null){n.push(`M${l+t} ${o+t}h${f-l}v1H${l+t}z`),l=null;return}if(f===r.length-1){if(!h)return;l===null?n.push(`M${f+t},${o+t} h1v1H${f+t}z`):n.push(`M${l+t},${o+t} h${f+1-l}v1H${l+t}z`);return}h&&l===null&&(l=f)})}),n.join("")}function $r(e,t){return e.slice().map((n,r)=>r<t.y||r>=t.y+t.h?n:n.map((o,l)=>l<t.x||l>=t.x+t.w?o:!1))}function Hi(e,t,n,r){if(r==null)return null;const o=e.length+n*2,l=Math.floor(t*Yi),h=o/t,f=(r.width||l)*h,s=(r.height||l)*h,a=r.x==null?e.length/2-f/2:r.x*h,c=r.y==null?e.length/2-s/2:r.y*h,d=r.opacity==null?1:r.opacity;let m=null;if(r.excavate){let g=Math.floor(a),v=Math.floor(c),x=Math.ceil(f+a-g),S=Math.ceil(s+c-v);m={x:g,y:v,w:x,h:S}}const p=r.crossOrigin;return{x:a,y:c,h:s,w:f,excavation:m,opacity:d,crossOrigin:p}}function qi(e,t){return t!=null?Math.max(Math.floor(t),0):e?Wi:Qi}function Kr({value:e,level:t,minVersion:n,includeMargin:r,marginSize:o,imageSettings:l,size:h,boostLevel:f}){let s=B.useMemo(()=>{const g=(Array.isArray(e)?e:[e]).reduce((v,x)=>(v.push(...Xe.QrSegment.makeSegments(x)),v),[]);return Xe.QrCode.encodeSegments(g,Gi[t],n,void 0,void 0,f)},[e,t,n,f]);const{cells:a,margin:c,numCells:d,calculatedImageSettings:m}=B.useMemo(()=>{let p=s.getModules();const g=qi(r,o),v=p.length+g*2,x=Hi(p,h,g,l);return{cells:p,margin:g,numCells:v,calculatedImageSettings:x}},[s,h,l,r,o]);return{qrcode:s,margin:c,cells:a,numCells:d,calculatedImageSettings:m}}var Xi=(function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0})(),Vi=B.forwardRef(function(t,n){const r=t,{value:o,size:l=Or,level:h=Lr,bgColor:f=zr,fgColor:s=Fr,includeMargin:a=_r,minVersion:c=Br,boostLevel:d,marginSize:m,imageSettings:p}=r,v=gn(r,["value","size","level","bgColor","fgColor","includeMargin","minVersion","boostLevel","marginSize","imageSettings"]),{style:x}=v,S=gn(v,["style"]),b=p?.src,w=B.useRef(null),N=B.useRef(null),R=B.useCallback(k=>{w.current=k,typeof n=="function"?n(k):n&&(n.current=k)},[n]),[D,T]=B.useState(!1),{margin:C,cells:A,numCells:E,calculatedImageSettings:M}=Kr({value:o,level:h,minVersion:c,boostLevel:d,includeMargin:a,marginSize:m,imageSettings:p,size:l});B.useEffect(()=>{if(w.current!=null){const k=w.current,L=k.getContext("2d");if(!L)return;let Y=A;const U=N.current,I=M!=null&&U!==null&&U.complete&&U.naturalHeight!==0&&U.naturalWidth!==0;I&&M.excavation!=null&&(Y=$r(A,M.excavation));const z=window.devicePixelRatio||1;k.height=k.width=l*z;const J=l/E*z;L.scale(J,J),L.fillStyle=f,L.fillRect(0,0,E,E),L.fillStyle=s,Xi?L.fill(new Path2D(Ur(Y,C))):A.forEach(function(re,q){re.forEach(function(he,j){he&&L.fillRect(j+C,q+C,1,1)})}),M&&(L.globalAlpha=M.opacity),I&&L.drawImage(U,M.x+C,M.y+C,M.w,M.h)}}),B.useEffect(()=>{T(!1)},[b]);const Q=mn({height:l,width:l},x);let H=null;return b!=null&&(H=B.createElement("img",{src:b,key:b,style:{display:"none"},onLoad:()=>{T(!0)},ref:N,crossOrigin:M?.crossOrigin})),B.createElement(B.Fragment,null,B.createElement("canvas",mn({style:Q,height:l,width:l,ref:R,role:"img"},S)),H)});Vi.displayName="QRCodeCanvas";var Gr=B.forwardRef(function(t,n){const r=t,{value:o,size:l=Or,level:h=Lr,bgColor:f=zr,fgColor:s=Fr,includeMargin:a=_r,minVersion:c=Br,boostLevel:d,title:m,marginSize:p,imageSettings:g}=r,v=gn(r,["value","size","level","bgColor","fgColor","includeMargin","minVersion","boostLevel","title","marginSize","imageSettings"]),{margin:x,cells:S,numCells:b,calculatedImageSettings:w}=Kr({value:o,level:h,minVersion:c,boostLevel:d,includeMargin:a,marginSize:p,imageSettings:g,size:l});let N=S,R=null;g!=null&&w!=null&&(w.excavation!=null&&(N=$r(S,w.excavation)),R=B.createElement("image",{href:g.src,height:w.h,width:w.w,x:w.x+x,y:w.y+x,preserveAspectRatio:"none",opacity:w.opacity,crossOrigin:w.crossOrigin}));const D=Ur(N,x);return B.createElement("svg",mn({height:l,width:l,viewBox:`0 0 ${b} ${b}`,ref:n,role:"img"},v),!!m&&B.createElement("title",null,m),B.createElement("path",{fill:f,d:`M0,0 h${b}v${b}H0z`,shapeRendering:"crispEdges"}),B.createElement("path",{fill:s,d:D,shapeRendering:"crispEdges"}),R)});Gr.displayName="QRCodeSVG";function Wr(){return parseInt(window.location.port||(window.location.protocol==="https:"?"443":"80"),10)}function Ji(){return es({queryKey:ue.tunnel.status,queryFn:()=>We.get("/tunnel/status"),refetchInterval:e=>e.state.data?.running?5e3:!1})}function Zi(){const e=$t();return pn({mutationFn:()=>We.post("/tunnel/start",{port:Wr()}),onSuccess:()=>{e.invalidateQueries({queryKey:ue.tunnel.status})}})}function ea(){const e=$t();return pn({mutationFn:()=>We.post("/tunnel/regenerate",{port:Wr()}),onSuccess:()=>{e.invalidateQueries({queryKey:ue.tunnel.status})}})}function ta(){const e=$t();return pn({mutationFn:()=>We.post("/tunnel/stop"),onSuccess:()=>{e.invalidateQueries({queryKey:ue.tunnel.status})}})}function na(e){if(!e||e.status==="stopped")return{button:"text-muted-foreground hover:text-foreground hover:bg-accent",dot:"",label:"Use Agent Tower on your phone",icon:"idle"};switch(e.status){case"healthy":case"checking":return{button:"text-success-ink hover:bg-success/10",dot:"bg-success",label:e.status==="healthy"?"Tunnel healthy":"Checking tunnel health",icon:"ok"};case"degraded":case"localUnhealthy":case"linkReplaced":return{button:"text-warning-ink hover:bg-warning/10",dot:"bg-warning",label:"Tunnel needs attention",icon:"warn"};case"exited":case"error":return{button:"text-destructive-ink hover:bg-destructive/10",dot:"bg-destructive",label:"Tunnel unavailable",icon:"error"};case"starting":return{button:"text-warning-ink hover:bg-warning/10",dot:"bg-warning",label:"Tunnel starting",icon:"loading"}}}function ra(e){if(!e||e.status==="stopped")return"Tunnel is off";switch(e.status){case"healthy":return"Tunnel healthy";case"checking":return"Checking tunnel health";case"degraded":return"Observing original link";case"localUnhealthy":return"Local service unavailable";case"exited":return"Tunnel process exited";case"error":return"Tunnel error";case"linkReplaced":return"New link generated";case"starting":return"Tunnel starting"}}function sa(e){if(!e||e.status==="stopped")return"Start a temporary Quick Tunnel when you need to share this Agent Tower session.";switch(e.status){case"healthy":return"The Cloudflare tunnel is running and the local Agent Tower health check passed.";case"checking":return"The Cloudflare tunnel is running. Agent Tower is waiting for the first local health check.";case"degraded":return"The original public URL is currently unreachable. Agent Tower is watching for it to recover and will not generate a new link automatically.";case"localUnhealthy":return"The local Agent Tower target is not responding, so the tunnel cannot be considered healthy.";case"exited":return"The tunnel process has exited. The old Quick Tunnel link is unlikely to recover.";case"error":return"The tunnel reported an error. Check the diagnostics before generating a new link.";case"linkReplaced":return"A new Quick Tunnel link was generated. The old link and token are no longer valid.";case"starting":return"Agent Tower is asking Cloudflare Quick Tunnel for a temporary public URL."}}function tr(e){if(!e)return"Never";const t=new Date(e).getTime();if(!Number.isFinite(t))return e;const n=Math.max(0,Math.round((Date.now()-t)/1e3));if(n<60)return`${n}s ago`;const r=Math.round(n/60);if(r<60)return`${r}m ago`;const o=Math.round(r/60);return o<24?`${o}h ago`:`${Math.round(o/24)}d ago`}function ct(e){const t=e?.trim();return t||null}function oa(e){if(!e)return"";const t=[ct(e.lastLocalError),ct(e.lastRemoteError),ct(e.lastError)].filter(o=>o!==null),n=ct(e.lastProcessOutput),r=!!n&&(e.status==="error"||e.status==="exited"||!!ct(e.lastError));return n&&r&&t.push(n),t.join(`
|
|
8
|
-
`)}function nr(){const{t:e}=De(),{data:t}=Ji(),n=Zi(),r=ta(),o=ea(),[l,h]=u.useState(!1),[f,s]=u.useState(null),[a,c]=u.useState(!1),[d,m]=u.useState(!1),p=t?.status!==void 0&&t.status!=="stopped",g=n.isPending||t?.status==="starting",v=o.isPending,x=t?.shareableUrl,S=t?.token,b=na(t),w=ra(t),N=oa(t),R=t?.status==="healthy"||t?.status==="checking"?"text-success-ink":t?.status==="exited"||t?.status==="error"?"text-destructive-ink":"text-warning-ink",D=u.useCallback(()=>{n.mutate(void 0,{onSuccess:()=>h(!0)})},[n]),T=u.useCallback(()=>{x&&(navigator.clipboard.writeText(x),s("url"),setTimeout(()=>s(null),2e3))},[x]),C=u.useCallback(()=>{S&&(navigator.clipboard.writeText(S),s("token"),setTimeout(()=>s(null),2e3))},[S]),A=u.useCallback(()=>{r.mutate(),h(!1),c(!1),m(!1)},[r]),E=u.useCallback(()=>{o.mutate(void 0,{onSuccess:()=>{m(!1),h(!0)}})},[o]),M=i.jsx(xs,{asChild:!0,children:i.jsx(Vt,{size:"xs",label:e("Close"),className:"-mr-1 -mt-0.5 shrink-0",children:i.jsx(ts,{})})});return i.jsxs(bs,{open:l,onOpenChange:h,children:[i.jsxs("div",{className:"relative",children:[i.jsx(ys,{asChild:!0,children:i.jsx("button",{type:"button",disabled:g,className:ie("p-1.5 rounded-md transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring/60",b.button),title:e(b.label),"aria-label":e(b.label),children:g?i.jsx(ns,{size:"md"}):b.icon==="warn"?i.jsx(rs,{size:16}):i.jsx(Pn,{size:16})})}),p&&!g&&i.jsx("span",{className:`pointer-events-none absolute top-0.5 right-0.5 w-2 h-2 ${b.dot} rounded-full`})]}),i.jsx(ws,{align:"end",className:ie("max-w-[calc(100vw-1rem)]",p?"w-96":"w-80"),children:p?i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"mb-2 flex items-start justify-between gap-3",children:[i.jsxs("div",{children:[i.jsxs("span",{className:ie("flex items-center gap-1.5 text-xs font-medium",R),children:[i.jsx("span",{className:`inline-block w-1.5 h-1.5 ${b.dot} rounded-full`}),e(w)]}),i.jsx("p",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:e(sa(t))})]}),M]}),S&&i.jsxs("div",{className:"mb-2 flex items-center gap-1.5 rounded-md bg-muted/50 px-2 py-1 text-xs text-foreground/80",children:[i.jsx(hs,{size:12}),i.jsx("span",{children:e("Token protected")})]}),x&&i.jsx("div",{className:"flex justify-center py-3",children:i.jsx(Gr,{value:x,size:160})}),x||t?.url?i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(Cs,{size:"sm",readOnly:!0,value:x??t?.url??"",onFocus:Q=>Q.target.select(),"aria-label":e("Copy shareable link"),className:"select-all text-xs"}),i.jsx(Vt,{size:"sm",label:e("Copy shareable link"),onClick:T,disabled:!x,children:f==="url"?i.jsx(vt,{className:"text-success"}):i.jsx(Mn,{})})]}):i.jsx("div",{className:"rounded-md border border-border bg-muted/50 px-2 py-1.5 text-xs text-muted-foreground",children:e("No tunnel link available")}),i.jsxs("div",{className:"mt-3 grid grid-cols-2 gap-2 text-xs",children:[i.jsxs("div",{className:"rounded-md border border-border px-2 py-1.5",children:[i.jsx("div",{className:"text-muted-foreground",children:e("Last checked")}),i.jsx("div",{className:"mt-0.5 text-foreground",children:tr(t?.lastCheckedAt)})]}),i.jsxs("div",{className:"rounded-md border border-border px-2 py-1.5",children:[i.jsx("div",{className:"text-muted-foreground",children:e("Last healthy")}),i.jsx("div",{className:"mt-0.5 text-foreground",children:tr(t?.lastHealthyAt)})]})]}),N&&i.jsx(At,{tone:"warning",size:"sm",className:"mt-2 max-h-28 overflow-auto",children:i.jsx("div",{className:"whitespace-pre-wrap break-words",children:N})}),t?.status==="degraded"&&i.jsx(At,{tone:"warning",size:"sm",className:"mt-2",children:e("Agent Tower is keeping the same URL and waiting for Cloudflare Quick Tunnel to recover.")}),t?.status==="linkReplaced"&&i.jsx(At,{tone:"warning",size:"sm",className:"mt-2",children:e("The previous tunnel link and token are no longer valid.")}),S&&i.jsxs("div",{className:"mt-2",children:[i.jsx("button",{type:"button",onClick:()=>c(!a),className:"rounded-sm text-xs text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60",children:e(a?"Hide token":"Show token")}),a&&i.jsxs("div",{className:"mt-1 flex items-center gap-2",children:[i.jsx("code",{className:"flex-1 min-w-0 break-all rounded-md border border-border bg-muted/50 px-2 py-1.5 text-xs text-foreground/80",children:S}),i.jsx(Vt,{size:"sm",label:e("Copy token"),onClick:C,className:"shrink-0",children:f==="token"?i.jsx(vt,{className:"text-success"}):i.jsx(Mn,{})})]})]}),d?i.jsxs(At,{tone:"danger",size:"sm",className:"mt-3",children:[e("Generating a new link will invalidate the current link. People using the old URL must receive the new one."),i.jsxs("div",{className:"mt-2 flex gap-2",children:[i.jsx(Ae,{variant:"secondary",size:"xs",className:"flex-1",onClick:()=>m(!1),children:e("Cancel")}),i.jsx(Ae,{variant:"primary",tone:"danger",size:"xs",className:"flex-1",onClick:E,loading:v,children:e(v?"Generating...":"Regenerate link")})]})]}):i.jsxs(Ae,{variant:"ghost",size:"sm",block:!0,className:"mt-3",onClick:()=>m(!0),disabled:v||t?.canRegenerate===!1,children:[i.jsx(ss,{}),e("Regenerate link")]}),i.jsx(Ae,{variant:"ghost",tone:"danger",size:"sm",block:!0,className:"mt-1",onClick:A,loading:r.isPending,children:r.isPending?e("Stopping..."):e("Stop Tunnel")})]}):i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"flex items-start justify-between gap-3",children:[i.jsxs("div",{className:"flex items-start gap-2",children:[i.jsx("span",{className:"mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-md bg-muted text-foreground/80",children:i.jsx(Pn,{size:16})}),i.jsxs("div",{children:[i.jsx("div",{className:"text-sm font-medium text-foreground",children:e("Use Agent Tower on your phone")}),i.jsx("p",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:e("After enabling the tunnel, you can scan a QR code with your phone to visit this Agent Tower instance, assign tasks, and check agent status.")})]})]}),M]}),i.jsx(Ae,{variant:"primary",size:"sm",block:!0,className:"mt-3",onClick:D,loading:g,children:e(g?"Starting tunnel...":"Enable phone access")})]})})]})}function on({isOpen:e,onClose:t}){const{t:n}=De(),r=Ns(),[o,l]=u.useState(""),[h,f]=u.useState(""),[s,a]=u.useState(null),[c,d]=u.useState(!1),[m,p]=u.useState(!1),g=o.trim(),v=h.trim(),x=c||r.isPending,S=u.useMemo(()=>!!(g&&v&&!x),[g,v,x]),b=u.useCallback(()=>{l(""),f(""),a(null),p(!1)},[]),w=u.useCallback(()=>{x||(b(),t())},[x,t,b]);u.useEffect(()=>{e||b()},[e,b]);const N=u.useCallback(async C=>{try{await r.mutateAsync({name:g,repoPath:v,initEmptyRepo:C}),b(),t()}catch(A){const E=A instanceof Error?A.message:n("Failed to create project");a(E),Le.error(E)}},[r,t,b,n,g,v]),R=u.useCallback(async()=>{if(!(!g||!v||x)){a(null),d(!0);try{const C=await We.get("/filesystem/validate",{params:{path:v}});if(!C.valid){a(C.error??n("Selected path is not a valid directory"));return}if(C.isGitRepo){await N(!1);return}if(C.reason==="no_git"&&C.isEmpty){p(!0);return}if(C.reason==="no_git"){await N(!1);return}await N(!1)}catch(C){a(C instanceof Error?C.message:n("Could not check project path"))}finally{d(!1)}}},[N,x,n,g,v]),D=u.useCallback(()=>{p(!1),N(!1)},[N]),T=u.useCallback(()=>{p(!1),N(!0)},[N]);return i.jsxs(i.Fragment,{children:[i.jsx(In,{isOpen:e,onClose:w,title:n("Create New Project"),action:i.jsxs(i.Fragment,{children:[i.jsx(Ae,{onClick:w,disabled:x,children:n("Cancel")}),i.jsx(Ae,{variant:"primary",onClick:R,disabled:!S,children:c?n("Checking..."):r.isPending?n("Creating..."):n("Create Project")})]}),children:i.jsxs("div",{className:"space-y-4",children:[i.jsxs("div",{children:[i.jsx("label",{className:"block text-sm font-medium text-foreground/80 mb-1.5",children:n("Project Name")}),i.jsx("input",{type:"text",value:o,onChange:C=>l(C.target.value),placeholder:n("e.g., Agent Tower"),disabled:x,className:"w-full px-3 py-2 border border-border rounded-lg text-sm focus:outline-none focus:border-ring transition-colors disabled:bg-muted/50 disabled:text-muted-foreground",autoFocus:!0})]}),i.jsxs("div",{children:[i.jsx("label",{className:"block text-sm font-medium text-foreground/80 mb-1.5",children:n("Project Path")}),i.jsx(fs,{value:h,onChange:f,validationMode:"directory"})]}),s&&i.jsx("p",{className:"text-xs text-destructive-ink leading-relaxed",children:s})]})}),i.jsx(In,{isOpen:m,onClose:()=>{r.isPending||p(!1)},title:n("Initialize Git repository?"),action:i.jsxs(i.Fragment,{children:[i.jsx(Ae,{onClick:()=>p(!1),disabled:r.isPending,children:n("Cancel")}),i.jsx(Ae,{onClick:D,disabled:r.isPending,children:n("Create Local Project")}),i.jsx(Ae,{variant:"primary",onClick:T,disabled:r.isPending,children:r.isPending?n("Creating..."):n("Initialize and Create")})]}),children:i.jsxs("div",{className:"space-y-3 text-sm text-foreground/70 leading-relaxed",children:[i.jsx("p",{children:n("This directory is empty and does not have Git version control yet. Agent Tower can initialize Git and create the initial commit before creating the project.")}),i.jsx("p",{children:n("You can also create it as a local project now. Local projects only support local Solo tasks until Git is initialized.")})]})})]})}function rr(e){if(!e)return 0;const t=Date.parse(e);return Number.isNaN(t)?0:t}function ia(e){return e.map((t,n)=>({project:t,index:n,activityTime:rr(t.lastActivityAt??t.createdAt),createdTime:rr(t.createdAt)})).sort((t,n)=>{const r=n.activityTime-t.activityTime;if(r!==0)return r;const o=n.createdTime-t.createdTime;return o!==0?o:t.index-n.index}).map(({project:t})=>t)}const Qr="providerLastUsedAt";function aa(){const e={};try{const t=localStorage.getItem(Qr),n=t?JSON.parse(t):{};if(n&&typeof n=="object"&&!Array.isArray(n))for(const[r,o]of Object.entries(n))typeof o=="number"&&Number.isFinite(o)&&o>0&&(e[r]=o)}catch{}try{const t=localStorage.getItem("lastSelectedProviderId");t&&Object.keys(e).length===0&&(e[t]=1)}catch{}return e}function la(e){try{localStorage.setItem(Qr,JSON.stringify(e))}catch{}}const ca=u.lazy(()=>lr(()=>import("./TaskDetail-rEXNe2h3.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56])).then(e=>({default:e.TaskDetail}))),ua=u.lazy(()=>lr(()=>import("./MobileTaskDetail-QNUHMq7u.js"),__vite__mapDeps([57,1,2,15,3,4,5,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56])).then(e=>({default:e.MobileTaskDetail})));function sr(){const{t:e}=De();return i.jsx("div",{role:"status",className:"flex flex-1 items-center justify-center bg-background p-4 text-sm text-muted-foreground",children:e("Loading...")})}function or({projects:e,filterProjectId:t,setFilterProjectId:n,onCreateProject:r,className:o}){const{t:l}=De(),[h,f]=u.useState(!1),s=e.filter(c=>!c.archivedAt),a=t?e.find(c=>c.id===t)??null:null;return i.jsxs("div",{className:ie("relative flex items-center min-w-0",o),children:[i.jsx("span",{className:"mx-1.5 text-muted-foreground select-none",children:"/"}),i.jsxs("button",{onClick:()=>f(c=>!c),className:"flex items-center gap-1.5 px-2 py-1 rounded-md text-sm text-foreground/90 hover:bg-accent transition-colors min-w-0",children:[a?i.jsx("span",{className:`w-2 h-2 rounded-full shrink-0 ${a.color.replace("text-","bg-")}`}):i.jsx(an,{size:13,className:"text-muted-foreground shrink-0"}),i.jsx("span",{className:"truncate max-w-[200px] font-medium",children:a?a.name:l("All Projects")}),i.jsx(js,{size:13,className:`text-muted-foreground/70 shrink-0 transition-transform duration-200 ${h?"rotate-180":""}`})]}),h?i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"fixed inset-0 z-30",onClick:()=>f(!1)}),i.jsxs("div",{className:"absolute left-4 top-full mt-1.5 w-60 bg-popover border border-border rounded-lg shadow-popover shadow-black/5 z-40 py-1 animate-in fade-in zoom-in-95 duration-100 origin-top-left",children:[i.jsxs("button",{onClick:()=>{n(null),f(!1)},className:"w-full text-left px-3 py-1.5 text-[13px] flex items-center gap-2 hover:bg-accent/50 transition-colors",children:[i.jsx(an,{size:13,className:"text-muted-foreground shrink-0"}),i.jsx("span",{className:`flex-1 truncate ${t===null?"text-foreground font-medium":"text-muted-foreground"}`,children:l("All Projects")}),t===null?i.jsx(vt,{size:14,className:"text-foreground shrink-0"}):null]}),i.jsx("div",{className:"h-px bg-border/60 my-1 mx-2"}),i.jsx("div",{className:"max-h-[40vh] overflow-y-auto scrollbar-app-thin",children:s.map(c=>{const d=t===c.id;return i.jsxs("button",{onClick:()=>{n(c.id),f(!1)},className:"w-full text-left px-3 py-1.5 text-[13px] flex items-center gap-2 hover:bg-accent/50 transition-colors",children:[i.jsx("span",{className:`w-2 h-2 rounded-full shrink-0 ${c.color.replace("text-","bg-")}`}),i.jsx("span",{className:`flex-1 truncate ${d?"text-foreground font-medium":"text-muted-foreground"}`,children:c.name}),d?i.jsx(vt,{size:14,className:"text-foreground shrink-0"}):null]},c.id)})}),i.jsx("div",{className:"h-px bg-border/60 my-1 mx-2"}),i.jsxs("button",{onClick:()=>{f(!1),r()},className:"w-full text-left px-3 py-1.5 text-[13px] flex items-center gap-2 text-muted-foreground hover:text-foreground hover:bg-accent/50 transition-colors",children:[i.jsx(ps,{size:13}),i.jsx("span",{children:l("Create New Project...")})]})]})]}):null]})}const da=260,fa=600,ir=400,ha=100,ma=1e3;function ga(e){const t=e.workspaces?.find(r=>r.status==="ACTIVE")??e.workspaces?.[0],n=t?.sessions?.at(-1);return{id:e.id,projectId:e.projectId,title:e.titlePreview??e.title,status:e.status,priority:e.priority,...t?{preferredWorkspace:{...t.workspaceKind===Je.MAIN_DIRECTORY?{workspaceKind:Je.MAIN_DIRECTORY}:{},branchName:t.branchName}}:{},...n?{latestAgentType:n.agentType}:{},...e.workspaces?.some(r=>r.sessions?.some(o=>o.status==="RUNNING"||o.status==="PENDING"))?{hasRunningSession:!0}:{},updatedAt:e.updatedAt?new Date(e.updatedAt).getTime():Date.now()}}function pa(){const{t:e,locale:t}=De(),[n,r]=u.useState(null),[o,l]=u.useState(null),[h,f]=u.useState(ir),[s,a]=u.useState(!1),[c,d]=u.useState("idle"),[m,p]=u.useState({}),g=u.useRef(!1),v=u.useRef(0),x=u.useRef(ir),S=u.useRef(null),b=$t(),{data:w,isLoading:N}=ks(),[R,D]=u.useState(aa),{data:T,isLoading:C}=Rs({limit:ha}),A=u.useMemo(()=>T?.data??[],[T?.data]),E=o&&A.some(y=>y.id===o)?o:null,{data:M,isLoading:Q}=os({...E?{projectId:E}:{},limit:ma}),H=u.useMemo(()=>M?.data??[],[M?.data]),[k,L]=u.useState([]),Y=u.useMemo(()=>{if(k.length===0)return H;const y=new Set(H.map(P=>P.id));return[...k.filter(P=>!y.has(P.id)),...H]},[H,k]),[U,I]=u.useState(null),z=u.useMemo(()=>n&&Y.some(y=>y.id===n)?n:U&&n===U?U:null,[n,Y,U]);u.useEffect(()=>{U&&Y.some(y=>y.id===U)&&I(null)},[U,Y]),u.useEffect(()=>{if(k.length===0)return;const y=new Set(H.map(P=>P.id));k.some(P=>y.has(P.id))&&L(P=>P.filter(O=>!y.has(O.id)))},[H,k]);const J=u.useMemo(()=>ia(A),[A]),re=u.useMemo(()=>J.map(Bi),[J]),q=u.useMemo(()=>J.filter(y=>!y.archivedAt),[J]),he=u.useMemo(()=>w?[...w].sort((y,P)=>{const O=!lt(y),F=!lt(P);return O!==F?O?-1:1:(R[P.provider.id]??0)-(R[y.provider.id]??0)}):[],[w,R]),j=u.useMemo(()=>Y.map(y=>Ui(y,A.find(P=>P.id===y.projectId))),[A,Y]),K=u.useMemo(()=>{if(!z)return null;const y=Y.find(O=>O.id===z);if(!y)return null;const P=A.find(O=>O.id===y.projectId);if(!P){const O=y.preferredWorkspace?y.preferredWorkspace.workspaceKind===Je.MAIN_DIRECTORY?"Project directory":y.preferredWorkspace.branchName:"—";return{id:y.id,projectId:y.projectId,projectName:"Unknown",projectColor:"text-muted-foreground",title:y.title,status:Nn(y.status),priority:y.priority,branch:O,mainBranch:"main",description:"",isGitRepo:!1,worktreeReady:!1,reason:"NO_GIT",projectArchivedAt:null,projectRepoDeletedAt:null}}return $i(y,P)},[z,Y,A]),_=is(),Z=as(),G=ls(),W=cs(),se=ms(),pe=u.useCallback(y=>{const P=ga(y);L(O=>O.some(F=>F.id===y.id)?O.map(F=>F.id===y.id?P:F):[P,...O]),b.setQueryData(ue.tasks.detail(y.id),y),I(y.id),r(y.id)},[b]),we=u.useCallback((y,P,O)=>{const F=y.id,ee=[y.title,y.description].filter(Boolean).join(`
|
|
6
|
+
`},Ks={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was moved over droppable area "+n.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was dropped over droppable area "+n.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function Gs(e){let{announcements:t=Ks,container:n,hiddenTextDescribedById:r,screenReaderInstructions:o=$s}=e;const{announce:l,announcement:h}=Bs(),f=Wt("DndLiveRegion"),[s,a]=u.useState(!1);if(u.useEffect(()=>{a(!0)},[]),_s(u.useMemo(()=>({onDragStart(d){let{active:m}=d;l(t.onDragStart({active:m}))},onDragMove(d){let{active:m,over:p}=d;t.onDragMove&&l(t.onDragMove({active:m,over:p}))},onDragOver(d){let{active:m,over:p}=d;l(t.onDragOver({active:m,over:p}))},onDragEnd(d){let{active:m,over:p}=d;l(t.onDragEnd({active:m,over:p}))},onDragCancel(d){let{active:m,over:p}=d;l(t.onDragCancel({active:m,over:p}))}}),[l,t])),!s)return null;const c=B.createElement(B.Fragment,null,B.createElement(zs,{id:r,value:o.draggable}),B.createElement(Fs,{id:f,announcement:h}));return n?ut.createPortal(c,n):c}var le;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(le||(le={}));function Ft(){}function Ws(e,t){return u.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function Qs(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return u.useMemo(()=>[...t].filter(r=>r!=null),[...t])}const ke=Object.freeze({x:0,y:0});function Ys(e,t){const n=zt(e);if(!n)return"0 0";const r={x:(n.x-t.left)/t.width*100,y:(n.y-t.top)/t.height*100};return r.x+"% "+r.y+"%"}function Hs(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function qs(e,t){if(!e||e.length===0)return null;const[n]=e;return n[t]}function Xs(e,t){const n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),o=Math.min(t.left+t.width,e.left+e.width),l=Math.min(t.top+t.height,e.top+e.height),h=o-r,f=l-n;if(r<o&&n<l){const s=t.width*t.height,a=e.width*e.height,c=h*f,d=c/(s+a-c);return Number(d.toFixed(4))}return 0}const Vs=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const o=[];for(const l of r){const{id:h}=l,f=n.get(h);if(f){const s=Xs(f,t);s>0&&o.push({id:h,data:{droppableContainer:l,value:s}})}}return o.sort(Hs)};function Js(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function hr(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:ke}function Zs(e){return function(n){for(var r=arguments.length,o=new Array(r>1?r-1:0),l=1;l<r;l++)o[l-1]=arguments[l];return o.reduce((h,f)=>({...h,top:h.top+e*f.y,bottom:h.bottom+e*f.y,left:h.left+e*f.x,right:h.right+e*f.x}),{...n})}}const eo=Zs(1);function mr(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function to(e,t,n){const r=mr(t);if(!r)return e;const{scaleX:o,scaleY:l,x:h,y:f}=r,s=e.left-h-(1-o)*parseFloat(n),a=e.top-f-(1-l)*parseFloat(n.slice(n.indexOf(" ")+1)),c=o?e.width/o:e.width,d=l?e.height/l:e.height;return{width:c,height:d,top:a,right:s+c,bottom:a+d,left:s}}const no={ignoreTransform:!1};function St(e,t){t===void 0&&(t=no);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:a,transformOrigin:c}=me(e).getComputedStyle(e);a&&(n=to(n,a,c))}const{top:r,left:o,width:l,height:h,bottom:f,right:s}=n;return{top:r,left:o,width:l,height:h,bottom:f,right:s}}function Ln(e){return St(e,{ignoreTransform:!0})}function ro(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function so(e,t){return t===void 0&&(t=me(e).getComputedStyle(e)),t.position==="fixed"}function oo(e,t){t===void 0&&(t=me(e).getComputedStyle(e));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(o=>{const l=t[o];return typeof l=="string"?n.test(l):!1})}function yn(e,t){const n=[];function r(o){if(t!=null&&n.length>=t||!o)return n;if(xn(o)&&o.scrollingElement!=null&&!n.includes(o.scrollingElement))return n.push(o.scrollingElement),n;if(!wt(o)||ur(o)||n.includes(o))return n;const l=me(e).getComputedStyle(o);return o!==e&&oo(o,l)&&n.push(o),so(o,l)?n:r(o.parentNode)}return e?r(e):n}function gr(e){const[t]=yn(e,1);return t??null}function en(e){return!Kt||!e?null:Ze(e)?e:vn(e)?xn(e)||e===et(e).scrollingElement?window:wt(e)?e:null:null}function pr(e){return Ze(e)?e.scrollX:e.scrollLeft}function vr(e){return Ze(e)?e.scrollY:e.scrollTop}function ln(e){return{x:pr(e),y:vr(e)}}var ue;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(ue||(ue={}));function xr(e){return!Kt||!e?!1:e===document.scrollingElement}function br(e){const t={x:0,y:0},n=xr(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height},o=e.scrollTop<=t.y,l=e.scrollLeft<=t.x,h=e.scrollTop>=r.y,f=e.scrollLeft>=r.x;return{isTop:o,isLeft:l,isBottom:h,isRight:f,maxScroll:r,minScroll:t}}const io={x:.2,y:.2};function ao(e,t,n,r,o){let{top:l,left:h,right:f,bottom:s}=n;r===void 0&&(r=10),o===void 0&&(o=io);const{isTop:a,isBottom:c,isLeft:d,isRight:m}=br(e),p={x:0,y:0},g={x:0,y:0},v={height:t.height*o.y,width:t.width*o.x};return!a&&l<=t.top+v.height?(p.y=ue.Backward,g.y=r*Math.abs((t.top+v.height-l)/v.height)):!c&&s>=t.bottom-v.height&&(p.y=ue.Forward,g.y=r*Math.abs((t.bottom-v.height-s)/v.height)),!m&&f>=t.right-v.width?(p.x=ue.Forward,g.x=r*Math.abs((t.right-v.width-f)/v.width)):!d&&h<=t.left+v.width&&(p.x=ue.Backward,g.x=r*Math.abs((t.left+v.width-h)/v.width)),{direction:p,speed:g}}function lo(e){if(e===document.scrollingElement){const{innerWidth:l,innerHeight:h}=window;return{top:0,left:0,right:l,bottom:h,width:l,height:h}}const{top:t,left:n,right:r,bottom:o}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:o,width:e.clientWidth,height:e.clientHeight}}function yr(e){return e.reduce((t,n)=>Ve(t,ln(n)),ke)}function co(e){return e.reduce((t,n)=>t+pr(n),0)}function uo(e){return e.reduce((t,n)=>t+vr(n),0)}function wr(e,t){if(t===void 0&&(t=St),!e)return;const{top:n,left:r,bottom:o,right:l}=t(e);gr(e)&&(o<=0||l<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const fo=[["x",["left","right"],co],["y",["top","bottom"],uo]];class wn{constructor(t,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=yn(n),o=yr(r);this.rect={...t},this.width=t.width,this.height=t.height;for(const[l,h,f]of fo)for(const s of h)Object.defineProperty(this,s,{get:()=>{const a=f(r),c=o[l]-a;return this.rect[s]+c},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class ht{constructor(t){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=t}add(t,n,r){var o;(o=this.target)==null||o.addEventListener(t,n,r),this.listeners.push([t,n,r])}}function ho(e){const{EventTarget:t}=me(e);return e instanceof t?e:et(e)}function tn(e,t){const n=Math.abs(e.x),r=Math.abs(e.y);return typeof t=="number"?Math.sqrt(n**2+r**2)>t:"x"in t&&"y"in t?n>t.x&&r>t.y:"x"in t?n>t.x:"y"in t?r>t.y:!1}var ye;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(ye||(ye={}));function zn(e){e.preventDefault()}function mo(e){e.stopPropagation()}var V;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter",e.Tab="Tab"})(V||(V={}));const Cr={start:[V.Space,V.Enter],cancel:[V.Esc],end:[V.Space,V.Enter,V.Tab]},go=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case V.Right:return{...n,x:n.x+25};case V.Left:return{...n,x:n.x-25};case V.Down:return{...n,y:n.y+25};case V.Up:return{...n,y:n.y-25}}};class Sr{constructor(t){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=t;const{event:{target:n}}=t;this.props=t,this.listeners=new ht(et(n)),this.windowListeners=new ht(me(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(ye.Resize,this.handleCancel),this.windowListeners.add(ye.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(ye.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:t,onStart:n}=this.props,r=t.node.current;r&&wr(r),n(ke)}handleKeyDown(t){if(bn(t)){const{active:n,context:r,options:o}=this.props,{keyboardCodes:l=Cr,coordinateGetter:h=go,scrollBehavior:f="smooth"}=o,{code:s}=t;if(l.end.includes(s)){this.handleEnd(t);return}if(l.cancel.includes(s)){this.handleCancel(t);return}const{collisionRect:a}=r.current,c=a?{x:a.left,y:a.top}:ke;this.referenceCoordinates||(this.referenceCoordinates=c);const d=h(t,{active:n,context:r.current,currentCoordinates:c});if(d){const m=Lt(d,c),p={x:0,y:0},{scrollableAncestors:g}=r.current;for(const v of g){const x=t.code,{isTop:S,isRight:b,isLeft:w,isBottom:N,maxScroll:R,minScroll:M}=br(v),T=lo(v),C={x:Math.min(x===V.Right?T.right-T.width/2:T.right,Math.max(x===V.Right?T.left:T.left+T.width/2,d.x)),y:Math.min(x===V.Down?T.bottom-T.height/2:T.bottom,Math.max(x===V.Down?T.top:T.top+T.height/2,d.y))},A=x===V.Right&&!b||x===V.Left&&!w,E=x===V.Down&&!N||x===V.Up&&!S;if(A&&C.x!==d.x){const I=v.scrollLeft+m.x,Q=x===V.Right&&I<=R.x||x===V.Left&&I>=M.x;if(Q&&!m.y){v.scrollTo({left:I,behavior:f});return}Q?p.x=v.scrollLeft-I:p.x=x===V.Right?v.scrollLeft-R.x:v.scrollLeft-M.x,p.x&&v.scrollBy({left:-p.x,behavior:f});break}else if(E&&C.y!==d.y){const I=v.scrollTop+m.y,Q=x===V.Down&&I<=R.y||x===V.Up&&I>=M.y;if(Q&&!m.x){v.scrollTo({top:I,behavior:f});return}Q?p.y=v.scrollTop-I:p.y=x===V.Down?v.scrollTop-R.y:v.scrollTop-M.y,p.y&&v.scrollBy({top:-p.y,behavior:f});break}}this.handleMove(t,Ve(Lt(d,this.referenceCoordinates),p))}}}handleMove(t,n){const{onMove:r}=this.props;t.preventDefault(),r(n)}handleEnd(t){const{onEnd:n}=this.props;t.preventDefault(),this.detach(),n()}handleCancel(t){const{onCancel:n}=this.props;t.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}Sr.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=Cr,onActivation:o}=t,{active:l}=n;const{code:h}=e.nativeEvent;if(r.start.includes(h)){const f=l.activatorNode.current;return f&&e.target!==f?!1:(e.preventDefault(),o?.({event:e.nativeEvent}),!0)}return!1}}];function Fn(e){return!!(e&&"distance"in e)}function Bn(e){return!!(e&&"delay"in e)}class Cn{constructor(t,n,r){var o;r===void 0&&(r=ho(t.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=t,this.events=n;const{event:l}=t,{target:h}=l;this.props=t,this.events=n,this.document=et(h),this.documentListeners=new ht(this.document),this.listeners=new ht(r),this.windowListeners=new ht(me(h)),this.initialCoordinates=(o=zt(l))!=null?o:ke,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:t,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(t.move.name,this.handleMove,{passive:!1}),this.listeners.add(t.end.name,this.handleEnd),t.cancel&&this.listeners.add(t.cancel.name,this.handleCancel),this.windowListeners.add(ye.Resize,this.handleCancel),this.windowListeners.add(ye.DragStart,zn),this.windowListeners.add(ye.VisibilityChange,this.handleCancel),this.windowListeners.add(ye.ContextMenu,zn),this.documentListeners.add(ye.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(Bn(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(Fn(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(t,n){const{active:r,onPending:o}=this.props;o(r,t,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:t}=this,{onStart:n}=this.props;t&&(this.activated=!0,this.documentListeners.add(ye.Click,mo,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(ye.SelectionChange,this.removeTextSelection),n(t))}handleMove(t){var n;const{activated:r,initialCoordinates:o,props:l}=this,{onMove:h,options:{activationConstraint:f}}=l;if(!o)return;const s=(n=zt(t))!=null?n:ke,a=Lt(o,s);if(!r&&f){if(Fn(f)){if(f.tolerance!=null&&tn(a,f.tolerance))return this.handleCancel();if(tn(a,f.distance))return this.handleStart()}if(Bn(f)&&tn(a,f.tolerance))return this.handleCancel();this.handlePending(f,a);return}t.cancelable&&t.preventDefault(),h(s)}handleEnd(){const{onAbort:t,onEnd:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleCancel(){const{onAbort:t,onCancel:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleKeydown(t){t.code===V.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const po={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class Sn extends Cn{constructor(t){const{event:n}=t,r=et(n.target);super(t,po,r)}}Sn.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];const vo={move:{name:"mousemove"},end:{name:"mouseup"}};var cn;(function(e){e[e.RightClick=2]="RightClick"})(cn||(cn={}));class xo extends Cn{constructor(t){super(t,vo,et(t.event.target))}}xo.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===cn.RightClick?!1:(r?.({event:n}),!0)}}];const nn={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class bo extends Cn{constructor(t){super(t,nn)}static setup(){return window.addEventListener(nn.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(nn.move.name,t)};function t(){}}}bo.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;const{touches:o}=n;return o.length>1?!1:(r?.({event:n}),!0)}}];var mt;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(mt||(mt={}));var Bt;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(Bt||(Bt={}));function yo(e){let{acceleration:t,activator:n=mt.Pointer,canScroll:r,draggingRect:o,enabled:l,interval:h=5,order:f=Bt.TreeOrder,pointerCoordinates:s,scrollableAncestors:a,scrollableAncestorRects:c,delta:d,threshold:m}=e;const p=Co({delta:d,disabled:!l}),[g,v]=Ms(),x=u.useRef({x:0,y:0}),S=u.useRef({x:0,y:0}),b=u.useMemo(()=>{switch(n){case mt.Pointer:return s?{top:s.y,bottom:s.y,left:s.x,right:s.x}:null;case mt.DraggableRect:return o}},[n,o,s]),w=u.useRef(null),N=u.useCallback(()=>{const M=w.current;if(!M)return;const T=x.current.x*S.current.x,C=x.current.y*S.current.y;M.scrollBy(T,C)},[]),R=u.useMemo(()=>f===Bt.TreeOrder?[...a].reverse():a,[f,a]);u.useEffect(()=>{if(!l||!a.length||!b){v();return}for(const M of R){if(r?.(M)===!1)continue;const T=a.indexOf(M),C=c[T];if(!C)continue;const{direction:A,speed:E}=ao(M,C,b,t,m);for(const I of["x","y"])p[I][A[I]]||(E[I]=0,A[I]=0);if(E.x>0||E.y>0){v(),w.current=M,g(N,h),x.current=E,S.current=A;return}}x.current={x:0,y:0},S.current={x:0,y:0},v()},[t,N,r,v,l,h,JSON.stringify(b),JSON.stringify(p),g,a,R,c,JSON.stringify(m)])}const wo={x:{[ue.Backward]:!1,[ue.Forward]:!1},y:{[ue.Backward]:!1,[ue.Forward]:!1}};function Co(e){let{delta:t,disabled:n}=e;const r=Ot(t);return Ct(o=>{if(n||!r||!o)return wo;const l={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[ue.Backward]:o.x[ue.Backward]||l.x===-1,[ue.Forward]:o.x[ue.Forward]||l.x===1},y:{[ue.Backward]:o.y[ue.Backward]||l.y===-1,[ue.Forward]:o.y[ue.Forward]||l.y===1}}},[n,t,r])}function So(e,t){const n=t!=null?e.get(t):void 0,r=n?n.node.current:null;return Ct(o=>{var l;return t==null?null:(l=r??o)!=null?l:null},[r,t])}function Eo(e,t){return u.useMemo(()=>e.reduce((n,r)=>{const{sensor:o}=r,l=o.activators.map(h=>({eventName:h.eventName,handler:t(h.handler,r)}));return[...n,...l]},[]),[e,t])}var yt;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(yt||(yt={}));var un;(function(e){e.Optimized="optimized"})(un||(un={}));const _n=new Map;function No(e,t){let{dragging:n,dependencies:r,config:o}=t;const[l,h]=u.useState(null),{frequency:f,measure:s,strategy:a}=o,c=u.useRef(e),d=x(),m=xt(d),p=u.useCallback(function(S){S===void 0&&(S=[]),!m.current&&h(b=>b===null?S:b.concat(S.filter(w=>!b.includes(w))))},[m]),g=u.useRef(null),v=Ct(S=>{if(d&&!n)return _n;if(!S||S===_n||c.current!==e||l!=null){const b=new Map;for(let w of e){if(!w)continue;if(l&&l.length>0&&!l.includes(w.id)&&w.rect.current){b.set(w.id,w.rect.current);continue}const N=w.node.current,R=N?new wn(s(N),N):null;w.rect.current=R,R&&b.set(w.id,R)}return b}return S},[e,l,n,d,s]);return u.useEffect(()=>{c.current=e},[e]),u.useEffect(()=>{d||p()},[n,d]),u.useEffect(()=>{l&&l.length>0&&h(null)},[JSON.stringify(l)]),u.useEffect(()=>{d||typeof f!="number"||g.current!==null||(g.current=setTimeout(()=>{p(),g.current=null},f))},[f,d,p,...r]),{droppableRects:v,measureDroppableContainers:p,measuringScheduled:l!=null};function x(){switch(a){case yt.Always:return!1;case yt.BeforeDragging:return n;default:return!n}}}function En(e,t){return Ct(n=>e?n||(typeof t=="function"?t(e):e):null,[t,e])}function Ro(e,t){return En(e,t)}function ko(e){let{callback:t,disabled:n}=e;const r=Gt(t),o=u.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:l}=window;return new l(r)},[r,n]);return u.useEffect(()=>()=>o?.disconnect(),[o]),o}function Qt(e){let{callback:t,disabled:n}=e;const r=Gt(t),o=u.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:l}=window;return new l(r)},[n]);return u.useEffect(()=>()=>o?.disconnect(),[o]),o}function jo(e){return new wn(St(e),e)}function Un(e,t,n){t===void 0&&(t=jo);const[r,o]=u.useState(null);function l(){o(s=>{if(!e)return null;if(e.isConnected===!1){var a;return(a=s??n)!=null?a:null}const c=t(e);return JSON.stringify(s)===JSON.stringify(c)?s:c})}const h=ko({callback(s){if(e)for(const a of s){const{type:c,target:d}=a;if(c==="childList"&&d instanceof HTMLElement&&d.contains(e)){l();break}}}}),f=Qt({callback:l});return Be(()=>{l(),e?(f?.observe(e),h?.observe(document.body,{childList:!0,subtree:!0})):(f?.disconnect(),h?.disconnect())},[e]),r}function To(e){const t=En(e);return hr(e,t)}const $n=[];function Ao(e){const t=u.useRef(e),n=Ct(r=>e?r&&r!==$n&&e&&t.current&&e.parentNode===t.current.parentNode?r:yn(e):$n,[e]);return u.useEffect(()=>{t.current=e},[e]),n}function Do(e){const[t,n]=u.useState(null),r=u.useRef(e),o=u.useCallback(l=>{const h=en(l.target);h&&n(f=>f?(f.set(h,ln(h)),new Map(f)):null)},[]);return u.useEffect(()=>{const l=r.current;if(e!==l){h(l);const f=e.map(s=>{const a=en(s);return a?(a.addEventListener("scroll",o,{passive:!0}),[a,ln(a)]):null}).filter(s=>s!=null);n(f.length?new Map(f):null),r.current=e}return()=>{h(e),h(l)};function h(f){f.forEach(s=>{const a=en(s);a?.removeEventListener("scroll",o)})}},[o,e]),u.useMemo(()=>e.length?t?Array.from(t.values()).reduce((l,h)=>Ve(l,h),ke):yr(e):ke,[e,t])}function Kn(e,t){t===void 0&&(t=[]);const n=u.useRef(null);return u.useEffect(()=>{n.current=null},t),u.useEffect(()=>{const r=e!==ke;r&&!n.current&&(n.current=e),!r&&n.current&&(n.current=null)},[e]),n.current?Lt(e,n.current):ke}function Mo(e){u.useEffect(()=>{if(!Kt)return;const t=e.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of t)n?.()}},e.map(t=>{let{sensor:n}=t;return n}))}function Io(e,t){return u.useMemo(()=>e.reduce((n,r)=>{let{eventName:o,handler:l}=r;return n[o]=h=>{l(h,t)},n},{}),[e,t])}function Er(e){return u.useMemo(()=>e?ro(e):null,[e])}const Gn=[];function Po(e,t){t===void 0&&(t=St);const[n]=e,r=Er(n?me(n):null),[o,l]=u.useState(Gn);function h(){l(()=>e.length?e.map(s=>xr(s)?r:new wn(t(s),s)):Gn)}const f=Qt({callback:h});return Be(()=>{f?.disconnect(),h(),e.forEach(s=>f?.observe(s))},[e]),o}function Nr(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return wt(t)?t:e}function Oo(e){let{measure:t}=e;const[n,r]=u.useState(null),o=u.useCallback(a=>{for(const{target:c}of a)if(wt(c)){r(d=>{const m=t(c);return d?{...d,width:m.width,height:m.height}:m});break}},[t]),l=Qt({callback:o}),h=u.useCallback(a=>{const c=Nr(a);l?.disconnect(),c&&l?.observe(c),r(c?t(c):null)},[t,l]),[f,s]=Pt(h);return u.useMemo(()=>({nodeRef:f,rect:n,setRef:s}),[n,f,s])}const Lo=[{sensor:Sn,options:{}},{sensor:Sr,options:{}}],zo={current:{}},Dt={draggable:{measure:Ln},droppable:{measure:Ln,strategy:yt.WhileDragging,frequency:un.Optimized},dragOverlay:{measure:St}};class gt extends Map{get(t){var n;return t!=null&&(n=super.get(t))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(t=>{let{disabled:n}=t;return!n})}getNodeFor(t){var n,r;return(n=(r=this.get(t))==null?void 0:r.node.current)!=null?n:void 0}}const Fo={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new gt,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:Ft},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Dt,measureDroppableContainers:Ft,windowRect:null,measuringScheduled:!1},Rr={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:Ft,draggableNodes:new Map,over:null,measureDroppableContainers:Ft},Et=u.createContext(Rr),kr=u.createContext(Fo);function Bo(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new gt}}}function _o(e,t){switch(t.type){case le.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case le.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case le.DragEnd:case le.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case le.RegisterDroppable:{const{element:n}=t,{id:r}=n,o=new gt(e.droppable.containers);return o.set(r,n),{...e,droppable:{...e.droppable,containers:o}}}case le.SetDroppableDisabled:{const{id:n,key:r,disabled:o}=t,l=e.droppable.containers.get(n);if(!l||r!==l.key)return e;const h=new gt(e.droppable.containers);return h.set(n,{...l,disabled:o}),{...e,droppable:{...e.droppable,containers:h}}}case le.UnregisterDroppable:{const{id:n,key:r}=t,o=e.droppable.containers.get(n);if(!o||r!==o.key)return e;const l=new gt(e.droppable.containers);return l.delete(n),{...e,droppable:{...e.droppable,containers:l}}}default:return e}}function Uo(e){let{disabled:t}=e;const{active:n,activatorEvent:r,draggableNodes:o}=u.useContext(Et),l=Ot(r),h=Ot(n?.id);return u.useEffect(()=>{if(!t&&!r&&l&&h!=null){if(!bn(l)||document.activeElement===l.target)return;const f=o.get(h);if(!f)return;const{activatorNode:s,node:a}=f;if(!s.current&&!a.current)return;requestAnimationFrame(()=>{for(const c of[s.current,a.current]){if(!c)continue;const d=Os(c);if(d){d.focus();break}}})}},[r,t,o,h,l]),null}function jr(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((o,l)=>l({transform:o,...r}),n):n}function $o(e){return u.useMemo(()=>({draggable:{...Dt.draggable,...e?.draggable},droppable:{...Dt.droppable,...e?.droppable},dragOverlay:{...Dt.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function Ko(e){let{activeNode:t,measure:n,initialRect:r,config:o=!0}=e;const l=u.useRef(!1),{x:h,y:f}=typeof o=="boolean"?{x:o,y:o}:o;Be(()=>{if(!h&&!f||!t){l.current=!1;return}if(l.current||!r)return;const a=t?.node.current;if(!a||a.isConnected===!1)return;const c=n(a),d=hr(c,r);if(h||(d.x=0),f||(d.y=0),l.current=!0,Math.abs(d.x)>0||Math.abs(d.y)>0){const m=gr(a);m&&m.scrollBy({top:d.y,left:d.x})}},[t,h,f,r,n])}const Yt=u.createContext({...ke,scaleX:1,scaleY:1});var Ge;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(Ge||(Ge={}));const Go=u.memo(function(t){var n,r,o,l;let{id:h,accessibility:f,autoScroll:s=!0,children:a,sensors:c=Lo,collisionDetection:d=Vs,measuring:m,modifiers:p,...g}=t;const v=u.useReducer(_o,void 0,Bo),[x,S]=v,[b,w]=Us(),[N,R]=u.useState(Ge.Uninitialized),M=N===Ge.Initialized,{draggable:{active:T,nodes:C,translate:A},droppable:{containers:E}}=x,I=T!=null?C.get(T):null,Q=u.useRef({initial:null,translated:null}),H=u.useMemo(()=>{var D;return T!=null?{id:T,data:(D=I?.data)!=null?D:zo,rect:Q}:null},[T,I]),k=u.useRef(null),[L,Y]=u.useState(null),[_,P]=u.useState(null),z=xt(g,Object.values(g)),J=Wt("DndDescribedBy",h),se=u.useMemo(()=>E.getEnabled(),[E]),q=$o(m),{droppableRects:de,measureDroppableContainers:j,measuringScheduled:K}=No(se,{dragging:M,dependencies:[A.x,A.y],config:q.droppable}),F=So(C,T),Z=u.useMemo(()=>_?zt(_):null,[_]),G=O(),W=Ro(F,q.draggable.measure);Ko({activeNode:T!=null?C.get(T):null,config:G.layoutShiftCompensation,initialRect:W,measure:q.draggable.measure});const oe=Un(F,q.draggable.measure,W),pe=Un(F?F.parentElement:null),we=u.useRef({activatorEvent:null,active:null,activeNode:F,collisionRect:null,collisions:null,droppableRects:de,draggableNodes:C,draggingNode:null,draggingNodeRect:null,droppableContainers:E,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Pe=E.getNodeFor((n=we.current.over)==null?void 0:n.id),Ce=Oo({measure:q.dragOverlay.measure}),_e=(r=Ce.nodeRef.current)!=null?r:F,Se=M?(o=Ce.rect)!=null?o:oe:null,Nt=!!(Ce.nodeRef.current&&Ce.rect),Qe=To(Nt?null:oe),tt=Er(_e?me(_e):null),ve=Ao(M?Pe??F:null),Ue=Po(ve),Ye=jr(p,{transform:{x:A.x-Qe.x,y:A.y-Qe.y,scaleX:1,scaleY:1},activatorEvent:_,active:H,activeNodeRect:oe,containerNodeRect:pe,draggingNodeRect:Se,over:we.current.over,overlayNodeRect:Ce.rect,scrollableAncestors:ve,scrollableAncestorRects:Ue,windowRect:tt}),nt=Z?Ve(Z,A):null,rt=Do(ve),Oe=Kn(rt),Rt=Kn(rt,[oe]),je=Ve(Ye,Oe),Le=Se?eo(Se,Ye):null,$e=H&&Le?d({active:H,collisionRect:Le,droppableRects:de,droppableContainers:se,pointerCoordinates:nt}):null,st=qs($e,"id"),[Te,kt]=u.useState(null),ot=Nt?Ye:Ve(Ye,Rt),Ke=Js(ot,(l=Te?.rect)!=null?l:null,oe),it=u.useRef(null),jt=u.useCallback((D,U)=>{let{sensor:ee,options:fe}=U;if(k.current==null)return;const X=C.get(k.current);if(!X)return;const ne=D.nativeEvent,he=new ee({active:k.current,activeNode:X,event:ne,options:fe,context:we,onAbort(ae){if(!C.get(ae))return;const{onDragAbort:xe}=z.current,Ee={id:ae};xe?.(Ee),b({type:"onDragAbort",event:Ee})},onPending(ae,Ae,xe,Ee){if(!C.get(ae))return;const{onDragPending:be}=z.current,Ne={id:ae,constraint:Ae,initialCoordinates:xe,offset:Ee};be?.(Ne),b({type:"onDragPending",event:Ne})},onStart(ae){const Ae=k.current;if(Ae==null)return;const xe=C.get(Ae);if(!xe)return;const{onDragStart:Ee}=z.current,ge={activatorEvent:ne,active:{id:Ae,data:xe.data,rect:Q}};ut.unstable_batchedUpdates(()=>{Ee?.(ge),R(Ge.Initializing),S({type:le.DragStart,initialCoordinates:ae,active:Ae}),b({type:"onDragStart",event:ge}),Y(it.current),P(ne)})},onMove(ae){S({type:le.DragMove,coordinates:ae})},onEnd:ze(le.DragEnd),onCancel:ze(le.DragCancel)});it.current=he;function ze(ae){return async function(){const{active:xe,collisions:Ee,over:ge,scrollAdjustedTranslate:be}=we.current;let Ne=null;if(xe&&be){const{cancelDrop:at}=z.current;Ne={activatorEvent:ne,active:xe,collisions:Ee,delta:be,over:ge},ae===le.DragEnd&&typeof at=="function"&&await Promise.resolve(at(Ne))&&(ae=le.DragCancel)}k.current=null,ut.unstable_batchedUpdates(()=>{S({type:ae}),R(Ge.Uninitialized),kt(null),Y(null),P(null),it.current=null;const at=ae===le.DragEnd?"onDragEnd":"onDragCancel";if(Ne){const Xt=z.current[at];Xt?.(Ne),b({type:at,event:Ne})}})}}},[C]),Ht=u.useCallback((D,U)=>(ee,fe)=>{const X=ee.nativeEvent,ne=C.get(fe);if(k.current!==null||!ne||X.dndKit||X.defaultPrevented)return;const he={active:ne};D(ee,U.options,he)===!0&&(X.dndKit={capturedBy:U.sensor},k.current=fe,jt(ee,U))},[C,jt]),Tt=Eo(c,Ht);Mo(c),Be(()=>{oe&&N===Ge.Initializing&&R(Ge.Initialized)},[oe,N]),u.useEffect(()=>{const{onDragMove:D}=z.current,{active:U,activatorEvent:ee,collisions:fe,over:X}=we.current;if(!U||!ee)return;const ne={active:U,activatorEvent:ee,collisions:fe,delta:{x:je.x,y:je.y},over:X};ut.unstable_batchedUpdates(()=>{D?.(ne),b({type:"onDragMove",event:ne})})},[je.x,je.y]),u.useEffect(()=>{const{active:D,activatorEvent:U,collisions:ee,droppableContainers:fe,scrollAdjustedTranslate:X}=we.current;if(!D||k.current==null||!U||!X)return;const{onDragOver:ne}=z.current,he=fe.get(st),ze=he&&he.rect.current?{id:he.id,rect:he.rect.current,data:he.data,disabled:he.disabled}:null,ae={active:D,activatorEvent:U,collisions:ee,delta:{x:X.x,y:X.y},over:ze};ut.unstable_batchedUpdates(()=>{kt(ze),ne?.(ae),b({type:"onDragOver",event:ae})})},[st]),Be(()=>{we.current={activatorEvent:_,active:H,activeNode:F,collisionRect:Le,collisions:$e,droppableRects:de,draggableNodes:C,draggingNode:_e,draggingNodeRect:Se,droppableContainers:E,over:Te,scrollableAncestors:ve,scrollAdjustedTranslate:je},Q.current={initial:Se,translated:Le}},[H,F,$e,Le,C,_e,Se,de,E,Te,ve,je]),yo({...G,delta:A,draggingRect:Le,pointerCoordinates:nt,scrollableAncestors:ve,scrollableAncestorRects:Ue});const qt=u.useMemo(()=>({active:H,activeNode:F,activeNodeRect:oe,activatorEvent:_,collisions:$e,containerNodeRect:pe,dragOverlay:Ce,draggableNodes:C,droppableContainers:E,droppableRects:de,over:Te,measureDroppableContainers:j,scrollableAncestors:ve,scrollableAncestorRects:Ue,measuringConfiguration:q,measuringScheduled:K,windowRect:tt}),[H,F,oe,_,$e,pe,Ce,C,E,de,Te,j,ve,Ue,q,K,tt]),y=u.useMemo(()=>({activatorEvent:_,activators:Tt,active:H,activeNodeRect:oe,ariaDescribedById:{draggable:J},dispatch:S,draggableNodes:C,over:Te,measureDroppableContainers:j}),[_,Tt,H,oe,S,J,C,Te,j]);return B.createElement(fr.Provider,{value:w},B.createElement(Et.Provider,{value:y},B.createElement(kr.Provider,{value:qt},B.createElement(Yt.Provider,{value:Ke},a)),B.createElement(Uo,{disabled:f?.restoreFocus===!1})),B.createElement(Gs,{...f,hiddenTextDescribedById:J}));function O(){const D=L?.autoScrollEnabled===!1,U=typeof s=="object"?s.enabled===!1:s===!1,ee=M&&!D&&!U;return typeof s=="object"?{...s,enabled:ee}:{enabled:ee}}}),Wo=u.createContext(null),Wn="button",Qo="Draggable";function Yo(e){let{id:t,data:n,disabled:r=!1,attributes:o}=e;const l=Wt(Qo),{activators:h,activatorEvent:f,active:s,activeNodeRect:a,ariaDescribedById:c,draggableNodes:d,over:m}=u.useContext(Et),{role:p=Wn,roleDescription:g="draggable",tabIndex:v=0}=o??{},x=s?.id===t,S=u.useContext(x?Yt:Wo),[b,w]=Pt(),[N,R]=Pt(),M=Io(h,t),T=xt(n);Be(()=>(d.set(t,{id:t,key:l,node:b,activatorNode:N,data:T}),()=>{const A=d.get(t);A&&A.key===l&&d.delete(t)}),[d,t]);const C=u.useMemo(()=>({role:p,tabIndex:v,"aria-disabled":r,"aria-pressed":x&&p===Wn?!0:void 0,"aria-roledescription":g,"aria-describedby":c.draggable}),[r,p,v,x,g,c.draggable]);return{active:s,activatorEvent:f,activeNodeRect:a,attributes:C,isDragging:x,listeners:r?void 0:M,node:b,over:m,setNodeRef:w,setActivatorNodeRef:R,transform:S}}function Ho(){return u.useContext(kr)}const qo="Droppable",Xo={timeout:25};function Vo(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:o}=e;const l=Wt(qo),{active:h,dispatch:f,over:s,measureDroppableContainers:a}=u.useContext(Et),c=u.useRef({disabled:n}),d=u.useRef(!1),m=u.useRef(null),p=u.useRef(null),{disabled:g,updateMeasurementsFor:v,timeout:x}={...Xo,...o},S=xt(v??r),b=u.useCallback(()=>{if(!d.current){d.current=!0;return}p.current!=null&&clearTimeout(p.current),p.current=setTimeout(()=>{a(Array.isArray(S.current)?S.current:[S.current]),p.current=null},x)},[x]),w=Qt({callback:b,disabled:g||!h}),N=u.useCallback((C,A)=>{w&&(A&&(w.unobserve(A),d.current=!1),C&&w.observe(C))},[w]),[R,M]=Pt(N),T=xt(t);return u.useEffect(()=>{!w||!R.current||(w.disconnect(),d.current=!1,w.observe(R.current))},[R,w]),u.useEffect(()=>(f({type:le.RegisterDroppable,element:{id:r,key:l,disabled:n,node:R,rect:m,data:T}}),()=>f({type:le.UnregisterDroppable,key:l,id:r})),[r]),u.useEffect(()=>{n!==c.current.disabled&&(f({type:le.SetDroppableDisabled,id:r,key:l,disabled:n}),c.current.disabled=n)},[r,l,n,f]),{active:h,rect:m,isOver:s?.id===r,node:R,over:s,setNodeRef:M}}function Jo(e){let{animation:t,children:n}=e;const[r,o]=u.useState(null),[l,h]=u.useState(null),f=Ot(n);return!n&&!r&&f&&o(f),Be(()=>{if(!l)return;const s=r?.key,a=r?.props.id;if(s==null||a==null){o(null);return}Promise.resolve(t(a,l)).then(()=>{o(null)})},[t,r,l]),B.createElement(B.Fragment,null,n,r?u.cloneElement(r,{ref:h}):null)}const Zo={x:0,y:0,scaleX:1,scaleY:1};function ei(e){let{children:t}=e;return B.createElement(Et.Provider,{value:Rr},B.createElement(Yt.Provider,{value:Zo},t))}const ti={position:"fixed",touchAction:"none"},ni=e=>bn(e)?"transform 250ms ease":void 0,ri=u.forwardRef((e,t)=>{let{as:n,activatorEvent:r,adjustScale:o,children:l,className:h,rect:f,style:s,transform:a,transition:c=ni}=e;if(!f)return null;const d=o?a:{...a,scaleX:1,scaleY:1},m={...ti,width:f.width,height:f.height,top:f.top,left:f.left,transform:bt.Transform.toString(d),transformOrigin:o&&r?Ys(r,f):void 0,transition:typeof c=="function"?c(r):c,...s};return B.createElement(n,{className:h,style:m,ref:t},l)}),si=e=>t=>{let{active:n,dragOverlay:r}=t;const o={},{styles:l,className:h}=e;if(l!=null&&l.active)for(const[f,s]of Object.entries(l.active))s!==void 0&&(o[f]=n.node.style.getPropertyValue(f),n.node.style.setProperty(f,s));if(l!=null&&l.dragOverlay)for(const[f,s]of Object.entries(l.dragOverlay))s!==void 0&&r.node.style.setProperty(f,s);return h!=null&&h.active&&n.node.classList.add(h.active),h!=null&&h.dragOverlay&&r.node.classList.add(h.dragOverlay),function(){for(const[s,a]of Object.entries(o))n.node.style.setProperty(s,a);h!=null&&h.active&&n.node.classList.remove(h.active)}},oi=e=>{let{transform:{initial:t,final:n}}=e;return[{transform:bt.Transform.toString(t)},{transform:bt.Transform.toString(n)}]},ii={duration:250,easing:"ease",keyframes:oi,sideEffects:si({styles:{active:{opacity:"0"}}})};function ai(e){let{config:t,draggableNodes:n,droppableContainers:r,measuringConfiguration:o}=e;return Gt((l,h)=>{if(t===null)return;const f=n.get(l);if(!f)return;const s=f.node.current;if(!s)return;const a=Nr(h);if(!a)return;const{transform:c}=me(h).getComputedStyle(h),d=mr(c);if(!d)return;const m=typeof t=="function"?t:li(t);return wr(s,o.draggable.measure),m({active:{id:l,data:f.data,node:s,rect:o.draggable.measure(s)},draggableNodes:n,dragOverlay:{node:h,rect:o.dragOverlay.measure(a)},droppableContainers:r,measuringConfiguration:o,transform:d})})}function li(e){const{duration:t,easing:n,sideEffects:r,keyframes:o}={...ii,...e};return l=>{let{active:h,dragOverlay:f,transform:s,...a}=l;if(!t)return;const c={x:f.rect.left-h.rect.left,y:f.rect.top-h.rect.top},d={scaleX:s.scaleX!==1?h.rect.width*s.scaleX/f.rect.width:1,scaleY:s.scaleY!==1?h.rect.height*s.scaleY/f.rect.height:1},m={x:s.x-c.x,y:s.y-c.y,...d},p=o({...a,active:h,dragOverlay:f,transform:{initial:s,final:m}}),[g]=p,v=p[p.length-1];if(JSON.stringify(g)===JSON.stringify(v))return;const x=r?.({active:h,dragOverlay:f,...a}),S=f.node.animate(p,{duration:t,easing:n,fill:"forwards"});return new Promise(b=>{S.onfinish=()=>{x?.(),b()}})}}let Qn=0;function ci(e){return u.useMemo(()=>{if(e!=null)return Qn++,Qn},[e])}const ui=B.memo(e=>{let{adjustScale:t=!1,children:n,dropAnimation:r,style:o,transition:l,modifiers:h,wrapperElement:f="div",className:s,zIndex:a=999}=e;const{activatorEvent:c,active:d,activeNodeRect:m,containerNodeRect:p,draggableNodes:g,droppableContainers:v,dragOverlay:x,over:S,measuringConfiguration:b,scrollableAncestors:w,scrollableAncestorRects:N,windowRect:R}=Ho(),M=u.useContext(Yt),T=ci(d?.id),C=jr(h,{activatorEvent:c,active:d,activeNodeRect:m,containerNodeRect:p,draggingNodeRect:x.rect,over:S,overlayNodeRect:x.rect,scrollableAncestors:w,scrollableAncestorRects:N,transform:M,windowRect:R}),A=En(m),E=ai({config:r,draggableNodes:g,droppableContainers:v,measuringConfiguration:b}),I=A?x.setRef:void 0;return B.createElement(ei,null,B.createElement(Jo,{animation:E},d&&T?B.createElement(ri,{key:T,id:d.id,ref:I,as:f,activatorEvent:c,adjustScale:t,className:s,transition:l,rect:A,style:{zIndex:a,...o},transform:C},n):null))}),Tr=768;function di(e){const t=window.matchMedia(`(max-width: ${Tr-1}px)`);return t.addEventListener("change",e),()=>t.removeEventListener("change",e)}function fi(){return window.innerWidth<Tr}function hi(){return!1}function Ar(){return u.useSyncExternalStore(di,fi,hi)}function mi(e,t){const n=[];if(!e||e.length===0)return n;const r=e.some(l=>l.status==="ACTIVE");return e.some(l=>l.sessions?.some(h=>h.status===Rn.RUNNING||h.status===Rn.PENDING))&&n.push(t("正在运行的 Agent 将被停止")),r&&(n.push(t("分支上未合并的变更将丢失")),n.push(t("关联的工作目录(worktree)将被清理"))),n}function gi({isOpen:e,onClose:t,onConfirm:n,taskId:r,taskTitle:o,workspaces:l,isLoading:h}){const{t:f}=Ie(),{data:s,isLoading:a}=ds(l===void 0&&e?r:""),c=l??s,d=l===void 0&&e&&a,m=u.useMemo(()=>mi(c,f),[c,f]);return i.jsx(us,{isOpen:e,onClose:t,onConfirm:n,title:f("删除任务"),description:i.jsxs(i.Fragment,{children:[i.jsx("p",{children:f("确认删除任务「{title}」?此操作不可撤销。",{title:o})}),d?i.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:f("加载中...")}):m.length>0?i.jsx("ul",{className:"mt-2 space-y-1",children:m.map((p,g)=>i.jsxs("li",{className:"flex items-start gap-1.5 text-warning-ink",children:[i.jsx("span",{className:"mt-1 shrink-0 w-1.5 h-1.5 rounded-full bg-warning"}),i.jsx("span",{children:p})]},g))}):null]}),confirmText:f("删除"),variant:"danger",isLoading:h||d})}const pi="flex w-full min-w-0 items-center gap-2.5 rounded-md px-2 text-sm pointer-coarse:text-[15px] text-left transition-[background-color,box-shadow,color] duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60",vi="h-8 pointer-coarse:h-10";function dt(e){return ie(pi,vi,e?"bg-background text-foreground shadow-xs ring-1 ring-border/80":"text-foreground/80 hover:bg-accent hover:text-foreground active:bg-foreground/[0.06]")}const dn=60,fn=60*dn,rn=24*fn,Yn=new Map;function xi(e){let t=Yn.get(e);return t||(t={monthDay:new Intl.DateTimeFormat(e,{month:"numeric",day:"numeric"}),yearMonth:new Intl.DateTimeFormat(e,{year:"numeric",month:"numeric"})},Yn.set(e,t)),t}function bi(e,t,n){const r=new Date(e);if(!Number.isFinite(r.getTime()))return"—";const o=new Date,l=Math.max(0,Math.floor((o.getTime()-r.getTime())/1e3));if(l<dn)return t("now");if(l<fn)return t("{count}m",{count:Math.floor(l/dn)});if(l<rn)return t("{count}h",{count:Math.floor(l/fn)});if(l<7*rn)return t("{count}d",{count:Math.floor(l/rn)});const h=xi(n);return(r.getFullYear()===o.getFullYear()?h.monthDay:h.yearMonth).format(r)}let yi;function wi(e,t,n){const r=e.replace(/\s+/g," ").trim();if(n(r)<=t)return r;if(n("…")>t)return"";const o=typeof Intl.Segmenter>"u"?Array.from(r):Array.from((yi??=new Intl.Segmenter(void 0,{granularity:"grapheme"})).segment(r),f=>f.segment);let l=0,h=o.length;for(;l<h;){const f=Math.ceil((l+h)/2);n(`${o.slice(0,f).join("")}…`)<=t?l=f:h=f-1}return`${o.slice(0,l).join("")}…`}const ft=new Map,Mt=new Set;let He;function Hn(){for(const e of Mt)ft.get(e)?.(document.visibilityState!=="hidden")}function Ci(e,t){if(typeof IntersectionObserver>"u")return()=>{};if(!He){const n=new IntersectionObserver(r=>{if(He===n)for(const o of r){const l=ft.get(o.target);if(!l)continue;const h=o.isIntersecting&&o.intersectionRatio>0;h?Mt.add(o.target):Mt.delete(o.target),l(h&&document.visibilityState!=="hidden")}});He=n,document.addEventListener("visibilitychange",Hn)}return ft.set(e,t),He.observe(e),()=>{ft.delete(e),Mt.delete(e),He?.unobserve(e),ft.size===0&&(He?.disconnect(),He=void 0,document.removeEventListener("visibilitychange",Hn))}}const hn=4200,qn=hn*.4,Si=1e3/30;function Ei(e){try{return e?.getContext("2d")??null}catch{return null}}function Ni({hostRef:e,text:t,variant:n,animate:r}){const o=u.useRef(null);return u.useLayoutEffect(()=>{const l=e.current,h=o.current,f=Ei(h);if(!l||!h||!f)return;const s=l.closest(".task-row"),a=matchMedia("(prefers-reduced-motion: reduce)"),c=matchMedia("(hover: hover)");let d=0,m,p=0,g=0,v=0,x=0,S=0,b=0,w="",N="",R="",M=!1;function T(){cancelAnimationFrame(d),clearTimeout(m),d=0,m=void 0}function C(k){if(!(!f||!l)){if(f.clearRect(0,0,v,x),f.globalCompositeOperation="source-over",n==="project"){const L=f.createLinearGradient(b*.6,0,b*2.6,0);L.addColorStop(0,w),L.addColorStop(1,N),f.fillStyle=L}else f.fillStyle=w;if(f.fillText(R,0,S),n==="running"&&k<1){const L=(-1.5+1.5*k)*v,Y=f.createLinearGradient(L,0,L+v*2.5,0),_=P=>`rgba(0, 0, 0, ${P})`;Y.addColorStop(0,_(1)),Y.addColorStop(.4,_(1)),Y.addColorStop(.5,_(.4)),Y.addColorStop(.6,_(1)),Y.addColorStop(1,_(1)),f.globalCompositeOperation="destination-in",f.fillStyle=Y,f.fillRect(0,0,v,x),f.globalCompositeOperation="source-over"}l.dataset.gradientReady="true"}}function A(k){if(M)return;const L=(k-p)%hn;k-g>=Si&&(C(Math.min(L/qn,1)),g=k),L>=qn?(C(1),m=setTimeout(()=>{d=requestAnimationFrame(A)},hn-L)):d=requestAnimationFrame(A)}function E(){if(T(),!l||!h||!f||M||(delete l.dataset.gradientReady,v=l.clientWidth,x=l.clientHeight,!v||!x))return;const k=getComputedStyle(l),L=Math.min(window.devicePixelRatio||1,3);h.width=Math.ceil(v*L),h.height=Math.ceil(x*L),f.setTransform(L,0,0,L,0,0),f.font=`${k.fontStyle} ${k.fontWeight} ${k.fontSize} ${k.fontFamily}`,f.textBaseline="alphabetic",b=Number.parseFloat(k.fontSize);const Y=f.measureText("Mg"),_=Y.fontBoundingBoxAscent??b*.8,P=Y.fontBoundingBoxDescent??b*.2;S=(x-_-P)/2+_,w=k.color,N=k.getPropertyValue("--muted-foreground").trim()||w,R=wi(t,v,J=>f.measureText(J).width);try{C(1)}catch{return}const z=a.matches||s?.matches(":focus-visible")||c.matches&&s?.matches(":hover");n==="running"&&r&&!z&&(p=performance.now(),g=0,d=requestAnimationFrame(A))}const I=typeof ResizeObserver>"u"?void 0:new ResizeObserver(E);I?.observe(l);const Q=new MutationObserver(E);Q.observe(document.documentElement,{attributes:!0,attributeFilter:["class","style"]}),Q.observe(l,{attributes:!0,attributeFilter:["class","style"]});const H=()=>{T(),delete l.dataset.gradientReady};h.addEventListener("contextlost",H),h.addEventListener("contextrestored",E),a.addEventListener("change",E),c.addEventListener("change",E);for(const k of["pointerenter","pointerleave","focus","blur"])s?.addEventListener(k,E);return window.addEventListener("resize",E),document.fonts?.addEventListener("loadingdone",E),E(),()=>{M=!0,T(),I?.disconnect(),Q.disconnect(),a.removeEventListener("change",E),c.removeEventListener("change",E);for(const k of["pointerenter","pointerleave","focus","blur"])s?.removeEventListener(k,E);window.removeEventListener("resize",E),document.fonts?.removeEventListener("loadingdone",E),h.removeEventListener("contextlost",H),h.removeEventListener("contextrestored",E),delete l.dataset.gradientReady,h.width=0,h.height=0}},[e,t,n,r]),i.jsx("canvas",{ref:o,className:"task-gradient-text__canvas","aria-hidden":"true"})}function Xn({text:e,variant:t,animate:n=!0,className:r}){const o=u.useRef(null),[l,h]=u.useState(!1);return u.useEffect(()=>{if(o.current)return Ci(o.current,h)},[]),i.jsxs("span",{ref:o,className:ie("task-gradient-text",r),"data-text-effect":t,children:[i.jsx("span",{className:"task-gradient-text__text",children:e}),l&&i.jsx(Ni,{hostRef:o,text:e,variant:t,animate:n})]})}const Dr=u.createContext(null),Ri=3e4;function ki(e=Ri){const[,t]=u.useState(0);u.useEffect(()=>{const n=setInterval(()=>t(r=>r+1),e);return()=>clearInterval(n)},[e])}function ji(e){const t=Jr(e,9,"..");if(t===e)return e;const n=t.slice(0,-2),r=n.search(/[-_.\s][^-_.\s]*$/);return`${r>=3?n.slice(0,r):n}..`}const sn="flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-[13px] text-foreground/80 transition-colors hover:bg-accent hover:text-foreground focus-visible:bg-accent focus-visible:outline-none",Vn="px-2 pb-1 pt-1.5 text-xs font-medium text-muted-foreground",Jn=i.jsx("div",{className:"-mx-1 my-1 h-px bg-border/60"});function Ti({task:e,status:t,isSelected:n,project:r,showProject:o,onSelectTask:l,onTaskStatusChange:h,onDeleteTask:f,onTaskPriorityChange:s,disableDrag:a}){const{t:c,locale:d}=Ie(),m=u.useContext(Dr),p=u.useRef(null),g=!!e.projectArchivedAt,v=g||!!a,{attributes:x,listeners:S,setNodeRef:b,isDragging:w}=Yo({id:e.id,data:{task:e,fromStatus:t},disabled:v}),N=u.useCallback(P=>{p.current=P,b(P),m&&(P?m.registry.set(e.id,P):m.registry.delete(e.id))},[b,m,e.id]);u.useEffect(()=>()=>{m?.registry.delete(e.id)},[e.id,m]);const[R,M]=u.useState(null),[T,C]=u.useState(!1),A=u.useRef(null),E=u.useRef(null),I=u.useCallback(P=>{g||!h&&!f&&!s||(P.preventDefault(),M({x:P.clientX,y:P.clientY}))},[g,h,f,s]),Q=u.useCallback(()=>{E.current&&(clearTimeout(E.current),E.current=null)},[]),H=u.useCallback(P=>{if(!a||g||!h&&!f)return;const z=P.touches[0];if(!z)return;const{clientX:J,clientY:se}=z;E.current=setTimeout(()=>{E.current=null,M({x:J,y:se})},500)},[a,g,h,f]);u.useEffect(()=>{if(!R)return;const P=()=>M(null),z=se=>{A.current&&!A.current.contains(se.target)&&P()},J=se=>{se.key==="Escape"&&P()};return document.addEventListener("mousedown",z),document.addEventListener("touchstart",z),document.addEventListener("keydown",J),window.addEventListener("scroll",P,!0),window.addEventListener("resize",P),()=>{document.removeEventListener("mousedown",z),document.removeEventListener("touchstart",z),document.removeEventListener("keydown",J),window.removeEventListener("scroll",P,!0),window.removeEventListener("resize",P)}},[R]),u.useLayoutEffect(()=>{const P=A.current;if(!R||!P)return;const z=8;P.style.left=`${Math.max(z,Math.min(R.x,window.innerWidth-P.offsetWidth-z))}px`,P.style.top=`${Math.max(z,Math.min(R.y,window.innerHeight-P.offsetHeight-z))}px`},[R]);const k=r?r.name:void 0,L=o?r:void 0,Y=e.updatedAt?bi(e.updatedAt,c,d):null,{titleClass:_}=pt[t];return i.jsxs(i.Fragment,{children:[i.jsxs("button",{ref:N,type:"button",onClick:()=>l(e.id),onContextMenu:I,onTouchStart:H,onTouchEnd:Q,onTouchMove:Q,title:L?`${e.title} · ${L.name}`:e.title,"aria-label":k?`${e.title} — ${k}`:e.title,"aria-current":n||void 0,"data-sidebar-item":"",className:ie("task-row animate-task-enter",dt(n),w&&"opacity-30"),...v?{}:S,...v?{}:x,children:[t===te.Running?i.jsx(Xn,{text:e.title,variant:"running",animate:!n,className:ie("min-w-0 flex-1 truncate",_)}):i.jsx("span",{className:ie("min-w-0 flex-1 truncate",_),children:e.title}),e.priority!==void 0&&e.priority!==It.NORMAL&&i.jsx(Tn,{priority:e.priority}),e.projectArchivedAt&&i.jsx("span",{className:"inline-flex shrink-0 items-center rounded-full bg-foreground/[0.06] px-1.5 py-0.5 text-xs font-medium leading-none text-muted-foreground",children:e.projectRepoDeletedAt?c("源码已删除"):c("已删除")}),(Y||L)&&i.jsx("span",{className:"task-row-meta",children:i.jsxs("span",{className:"flex items-center gap-1",children:[L&&i.jsx("span",{className:"shrink-0 whitespace-nowrap rounded bg-foreground/[0.05] px-1 py-0.5 text-[10px] font-medium leading-none @max-[22rem]:hidden",children:i.jsx(Xn,{text:ji(L.name),variant:"project",className:L.color})}),Y&&i.jsx("span",{className:"shrink-0 text-[11px] tabular-nums text-muted-foreground",children:Y})]})})]}),R&&i.jsxs("div",{ref:A,role:"menu",className:"fixed z-[100] w-48 rounded-lg border border-border bg-popover p-1 shadow-popover shadow-black/5 animate-in fade-in zoom-in-95 duration-100",children:[h&&i.jsxs(i.Fragment,{children:[i.jsx("div",{className:Vn,children:c("Move to")}),Xr.filter(P=>P!==t).map(P=>{const{icon:z,label:J,accentClass:se}=pt[P];return i.jsxs("button",{type:"button",role:"menuitem",onClick:()=>{h(e.id,P),M(null)},className:sn,children:[i.jsx(z,{className:ie("size-3.5 shrink-0",se)}),i.jsx("span",{children:c(J)})]},P)})]}),s&&i.jsxs(i.Fragment,{children:[h&&Jn,i.jsx("div",{className:Vn,children:c("Priority")}),Vr.map(P=>{const z=(e.priority??It.NORMAL)===P.value;return i.jsxs("button",{type:"button",role:"menuitemradio","aria-checked":z,onClick:()=>{s(e.id,P.value),M(null)},className:sn,children:[i.jsx(Tn,{priority:P.value}),i.jsx("span",{className:"flex-1",children:c(P.label)}),z&&i.jsx(vt,{className:"size-3.5 shrink-0 text-foreground","aria-hidden":!0})]},P.value)})]}),f&&i.jsxs(i.Fragment,{children:[(h||s)&&Jn,i.jsxs("button",{type:"button",role:"menuitem",onClick:()=>{C(!0),M(null)},className:ie(sn,"text-destructive-ink hover:bg-destructive/10 hover:text-destructive-ink focus-visible:bg-destructive/10"),children:[i.jsx(ps,{className:"size-3.5 shrink-0","aria-hidden":!0}),i.jsx("span",{children:c("Delete Task")})]})]})]}),i.jsx(gi,{isOpen:T,onClose:()=>C(!1),onConfirm:()=>{f?.(e.id),C(!1)},taskId:e.id,taskTitle:e.title})]})}const Ai=u.memo(function({title:t,tasks:n,status:r,defaultOpen:o,selectedTaskId:l,onSelectTask:h,projects:f,showProject:s=!0,isDragging:a,dragFromStatus:c,onTaskStatusChange:d,onDeleteTask:m,onTaskPriorityChange:p,disableDrag:g}){const{t:v}=Ie(),[x,S]=u.useState(o);ki();const b=n.length===0,w=a&&c===r,N=a&&c!==r,{setNodeRef:R,isOver:M}=Vo({id:`group-${r}`,data:{status:r}}),T=r===te.Review,C=v(t),{icon:A,accentClass:E}=pt[r],I=u.useId(),Q=a?w:x,H=Q&&!N&&!b;return i.jsxs("div",{className:H?"mb-4":"mb-2","data-task-group-status":r,children:[i.jsx("div",{className:"sticky top-0 z-10 bg-sidebar px-2",children:i.jsxs("button",{type:"button",onClick:()=>!a&&S(k=>!k),"aria-expanded":x,"data-sidebar-item":"",className:"group/header flex h-8 w-full items-center gap-1 rounded-md px-2 text-sm text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60 pointer-coarse:h-10 pointer-coarse:text-[15px]",children:[i.jsx(A,{className:ie("mr-1.5 size-4 shrink-0 -translate-y-px",E)}),i.jsx("span",{id:I,className:"truncate",children:C}),i.jsx(qr,{size:14,"aria-hidden":!0,className:ie("shrink-0 text-muted-foreground transition-transform duration-150 group-hover/header:text-muted-foreground",Q&&"rotate-90")}),T&&!b?i.jsx("span",{className:"ml-auto rounded-full bg-warning/15 px-1.5 text-xs font-semibold leading-5 tabular-nums text-warning-ink",children:n.length}):i.jsx("span",{className:"ml-auto text-xs tabular-nums text-muted-foreground",children:n.length})]})}),N&&i.jsx("div",{ref:R,className:ie("mx-2 mt-0.5 flex h-9 items-center justify-center rounded-md border border-dashed text-xs font-medium transition-colors duration-150",M?"border-foreground/30 bg-foreground/[0.04] text-foreground/80":"border-border bg-foreground/[0.02] text-muted-foreground"),children:M?v("Drop into {title}",{title:C}):v("Drop here")}),H&&i.jsx("div",{ref:w?void 0:R,role:"group","aria-labelledby":I,className:"mt-0.5 flex flex-col gap-px px-2",children:n.map(k=>{const L=l===k.id,Y=k.projectId?f.find(_=>_.id===k.projectId):void 0;return i.jsx(Ti,{task:k,status:r,isSelected:L,project:Y,showProject:s,onSelectTask:h,onTaskStatusChange:k.projectArchivedAt?void 0:d,onDeleteTask:k.projectArchivedAt?void 0:m,onTaskPriorityChange:k.projectArchivedAt?void 0:p,disableDrag:g},k.id)})})]})}),Di=12,Mi=50;function Ii({isOpen:e,onClose:t,tasks:n,projects:r,onSelectTask:o}){const{t:l}=Ie(),[h,f]=u.useState(""),[s,a]=u.useState(0),c=u.useRef(null);u.useEffect(()=>{e&&(f(""),a(0))},[e]);const d=u.useMemo(()=>{const g=h.trim().toLowerCase();return g?n.filter(v=>v.title.toLowerCase().includes(g)).slice(0,Mi):n.slice(0,Di)},[n,h]);u.useEffect(()=>{a(0)},[h]),u.useEffect(()=>{c.current?.children[s]?.scrollIntoView({block:"nearest"})},[s]);const m=u.useCallback(g=>{o(g),t()},[o,t]),p=u.useCallback(g=>{if(g.key==="Escape")g.preventDefault(),t();else if(g.key==="ArrowDown")g.preventDefault(),a(v=>Math.min(v+1,d.length-1));else if(g.key==="ArrowUp")g.preventDefault(),a(v=>Math.max(v-1,0));else if(g.key==="Enter"&&!g.nativeEvent.isComposing){g.preventDefault();const v=d[s];v&&m(v.id)}},[t,d,s,m]);return e?i.jsxs("div",{className:"fixed inset-0 z-90",role:"dialog","aria-modal":"true",children:[i.jsx("div",{className:"absolute inset-0 bg-black/20",onClick:t}),i.jsxs("div",{className:"absolute left-1/2 top-[18vh] w-[min(560px,calc(100vw-2rem))] -translate-x-1/2 bg-popover rounded-xl border border-border shadow-popover overflow-hidden animate-in fade-in zoom-in-95 duration-100",children:[i.jsxs("div",{className:"flex items-center gap-2.5 px-4 border-b border-border/60",children:[i.jsx(cr,{size:15,className:"text-muted-foreground/70 shrink-0"}),i.jsx("input",{value:h,onChange:g=>f(g.target.value),onKeyDown:p,placeholder:l("Search tasks..."),"aria-label":l("Search tasks..."),autoFocus:!0,className:"flex-1 py-3 bg-transparent border-none focus:outline-none text-sm text-foreground placeholder-muted-foreground/60"})]}),d.length>0?i.jsxs(i.Fragment,{children:[!h.trim()&&i.jsx("div",{className:"px-4 pt-2.5 pb-1 text-xs font-medium text-muted-foreground",children:l("Recent tasks")}),i.jsx("div",{ref:c,className:"max-h-[46vh] overflow-y-auto scrollbar-app-thin pb-1.5 pt-0.5",children:d.map((g,v)=>{const x=r.find(w=>w.id===g.projectId),{icon:S,iconClass:b}=pt[g.status];return i.jsxs("button",{onClick:()=>m(g.id),onMouseEnter:()=>a(v),className:`w-full flex items-center gap-2.5 px-4 py-2 text-left transition-colors
|
|
7
|
+
${v===s?"bg-accent":""}`,children:[i.jsx(S,{className:`${b} size-4 shrink-0`}),i.jsx("span",{className:"flex-1 min-w-0 truncate text-sm text-foreground/90",title:g.title,children:g.title}),x&&i.jsx("span",{className:"shrink-0 max-w-[120px] truncate text-xs text-muted-foreground",children:x.name})]},g.id)})})]}):i.jsx("div",{className:"px-4 py-8 text-center text-sm text-muted-foreground",children:l("No matching tasks")})]})]}):null}const Pi=260,Oi=220;function Li(e){const t={[te.Review]:[],[te.Running]:[],[te.Pending]:[],[te.Done]:[],[te.Cancelled]:[]};for(const n of e)t[n.status].push(n);return t[te.Review].sort((n,r)=>(r.priority??It.NORMAL)-(n.priority??It.NORMAL)),t}const zi=[{status:te.Review,title:"Review",defaultOpen:!0},{status:te.Running,title:"Running",defaultOpen:!0},{status:te.Pending,title:"Pending",defaultOpen:!1},{status:te.Done,title:"Done",defaultOpen:!1},{status:te.Cancelled,title:"Cancelled",defaultOpen:!1}];function Fi(){return i.jsx("div",{className:"flex-1 overflow-hidden px-2 pt-3 motion-safe:animate-pulse","aria-hidden":!0,children:[3,4].map((e,t)=>i.jsxs("div",{className:"mb-4",children:[i.jsxs("div",{className:"flex h-8 items-center gap-2.5 px-2 pointer-coarse:h-10",children:[i.jsx("div",{className:"size-4 shrink-0 rounded-full bg-foreground/[0.06]"}),i.jsx("div",{className:"h-3 w-14 rounded-full bg-foreground/[0.06]"})]}),Array.from({length:e}).map((n,r)=>i.jsxs("div",{className:"flex h-8 items-center gap-2.5 px-2 pointer-coarse:h-10",children:[i.jsx("div",{className:"h-3 rounded-full bg-foreground/[0.06]",style:{width:`${64-(r+t)%3*14}%`}}),i.jsx("div",{className:"ml-auto h-2.5 w-8 shrink-0 rounded-full bg-foreground/[0.05]"})]},r))]},t))})}function Zn({tasks:e=[],projects:t=[],selectedTaskId:n,onSelectTask:r,filterProjectId:o,setFilterProjectId:l,width:h=320,onCreateTask:f,onCreateProject:s,isCreateActive:a,onTaskStatusChange:c,onDeleteTask:d,onTaskPriorityChange:m,isLoading:p=!1}){const{t:g}=Ie(),{preserveDesktopSearch:v}=ar(),x=Ar(),[S,b]=u.useState(null),[w,N]=u.useState(null),[R,M]=u.useState(!1),T=u.useRef(new Map),C=u.useRef(new Set),A=u.useRef(new Map),E=u.useMemo(()=>({registry:T.current}),[]),I=u.useCallback(j=>{j.remove(),C.current.delete(j)},[]),Q=o?e.filter(j=>j.projectId===o):e,H=u.useCallback((j,K)=>{const F=document.querySelector(`[data-task-group-status="${j}"]`);if(!F)return null;const G=(F.querySelector("button")??F).getBoundingClientRect();return G.width===0||G.height===0?null:new DOMRect(G.left,G.bottom+2,K.width,K.height)},[]),k=u.useCallback((j,K,F,Z=!1)=>{const G=document.createElement("div");G.setAttribute("aria-hidden","true"),G.innerHTML=F,G.querySelectorAll("[data-gradient-ready]").forEach(Pe=>Pe.removeAttribute("data-gradient-ready")),G.querySelectorAll(".task-gradient-text__canvas").forEach(Pe=>Pe.remove());const W=G.firstElementChild;W&&(W.style.cssText="",W.className=W.className.replace(/\bopacity-\S*/g,"").replace(/\banimate-task-enter\b/g,""),W.style.pointerEvents="none",W.style.width=`${j.width}px`,W.style.height=`${j.height}px`,W.style.margin="0",W.style.backgroundColor="var(--background)",W.style.borderRadius="0.5rem",W.style.boxShadow="var(--shadow-popover), 0 0 0 1px var(--border)",W.style.opacity="0.96",W.style.transition="none",W.setAttribute("tabindex","-1")),Object.assign(G.style,{position:"fixed",left:`${j.left}px`,top:`${j.top}px`,width:`${j.width}px`,height:`${j.height}px`,zIndex:"9999",pointerEvents:"none",overflow:"visible",transformOrigin:"top left",willChange:"transform, opacity"}),document.body.appendChild(G),C.current.add(G);const oe=K.left-j.left,pe=K.top-j.top;G.animate([{transform:"translate(0, 0)",opacity:.96,offset:0},{transform:`translate(${oe}px, ${pe}px)`,opacity:Z?.12:.96,offset:1}],{duration:Z?Oi:Pi,easing:"cubic-bezier(0.2, 0, 0, 1)",fill:"forwards"}).finished.then(()=>I(G),()=>I(G))},[I]);u.useLayoutEffect(()=>{const j=window.matchMedia("(prefers-reduced-motion: reduce)").matches,K=new Map;for(const F of Q){const Z=T.current.get(F.id);if(!Z)continue;const G={status:F.status,rect:Z.getBoundingClientRect(),html:Z.outerHTML};if(K.set(F.id,G),j)continue;const W=A.current.get(F.id);if(!W||W.status===F.status)continue;const oe=G.rect.left-W.rect.left,pe=G.rect.top-W.rect.top;Math.abs(oe)<1&&Math.abs(pe)<1||k(W.rect,G.rect,W.html)}if(!j)for(const[F,Z]of A.current){if(K.has(F))continue;const G=Q.find(oe=>oe.id===F);if(!G||G.status===Z.status)continue;const W=H(G.status,Z.rect);W&&k(Z.rect,W,Z.html,!0)}A.current=K},[Q,k,H]),u.useEffect(()=>()=>{for(const j of C.current)j.remove();C.current.clear()},[]);const L=Qs(Ws(Sn,{activationConstraint:{distance:8}})),Y=u.useCallback(j=>{const K=j.active.data.current?.task,F=j.active.data.current?.fromStatus;K&&b(K),F&&N(F)},[]),_=u.useCallback(j=>{b(null),N(null);const{active:K,over:F}=j;if(!F)return;const Z=K.data.current?.task,G=K.data.current?.fromStatus,W=F.data.current?.status;!Z||!G||!W||Z.projectArchivedAt||G!==W&&c?.(Z.id,W)},[c]),J=!!!(o?t.find(j=>j.id===o)??null:null)?.archivedAt,se=Li(Q),q=S?pt[S.status]:null,de=u.useCallback(j=>{if(j.key!=="ArrowDown"&&j.key!=="ArrowUp"||j.altKey||j.ctrlKey||j.metaKey||j.shiftKey)return;const K=Array.from(j.currentTarget.querySelectorAll("[data-sidebar-item]:not(:disabled)")),F=K.indexOf(j.target);F!==-1&&(j.preventDefault(),K[F+(j.key==="ArrowDown"?1:-1)]?.focus())},[]);return i.jsxs("div",{className:"@container h-full flex flex-col flex-shrink-0",style:{width:h},onKeyDown:de,children:[i.jsxs("div",{className:"px-2 pt-2 pb-1 flex flex-col gap-px flex-shrink-0",children:[s&&i.jsxs("button",{type:"button",onClick:s,"data-sidebar-item":"",className:dt(!1),children:[i.jsx(xs,{size:16,className:"shrink-0 text-muted-foreground"}),i.jsx("span",{className:"truncate",children:g("New Project")})]}),i.jsxs("button",{type:"button",onClick:f,disabled:!J,"aria-current":a||void 0,"data-sidebar-item":"",className:ie(dt(!!a),"disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent"),title:J?void 0:g("Deleted projects are read-only"),children:[i.jsx(bs,{size:16,className:"shrink-0 text-muted-foreground"}),i.jsx("span",{className:"truncate",children:g("New Task")})]}),i.jsxs("button",{type:"button",onClick:()=>M(!0),"data-sidebar-item":"",className:dt(!1),children:[i.jsx(cr,{size:16,className:"shrink-0 text-muted-foreground"}),i.jsx("span",{className:"truncate",children:g("Search")})]}),i.jsxs(Zr,{to:v("/conversations"),"data-sidebar-item":"",className:dt(!1),children:[i.jsx(ys,{size:16,className:"shrink-0 text-muted-foreground"}),i.jsx("span",{className:"truncate",children:g("对话")})]})]}),p?i.jsx(Fi,{}):Q.length===0?i.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center px-6 pb-[10vh] text-center select-none",children:[i.jsx(an,{size:36,"aria-hidden":"true",className:"text-muted-foreground/50 mb-3",strokeWidth:1.5}),i.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:g("No tasks")}),J&&f?i.jsx("button",{type:"button",onClick:f,className:"px-3.5 py-1.5 rounded-md bg-brand text-brand-foreground text-xs font-medium hover:bg-brand/90 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60 focus-visible:ring-offset-2",children:g("New Task")}):null]}):i.jsx(Dr.Provider,{value:E,children:i.jsxs(Go,{sensors:L,onDragStart:Y,onDragEnd:_,children:[i.jsx("div",{className:"flex-1 overflow-y-auto scrollbar-app-thin scroll-pt-8 pointer-coarse:scroll-pt-10 relative",children:i.jsx("div",{className:"pt-3 pb-4",children:zi.map(({status:j,title:K,defaultOpen:F})=>i.jsx(Ai,{title:K,tasks:se[j],status:j,defaultOpen:F,selectedTaskId:n,onSelectTask:r,projects:t,showProject:!o,isDragging:S!==null,dragFromStatus:w,onTaskStatusChange:c,onDeleteTask:d,onTaskPriorityChange:m,disableDrag:x},j))})}),i.jsx(ui,{dropAnimation:null,children:S&&q?i.jsxs("div",{className:"flex h-8 w-fit max-w-[280px] items-center gap-2.5 rounded-md bg-background px-2 text-sm text-foreground shadow-overlay ring-1 ring-border/80",children:[i.jsx(q.icon,{className:ie("size-4 shrink-0",q.iconClass)}),i.jsx("span",{className:"truncate",title:S.title,children:S.title})]}):null})]})}),!p&&i.jsxs("div",{className:"h-9 px-4 flex flex-shrink-0 items-center justify-between border-t border-border/60 text-xs text-muted-foreground",children:[i.jsx("span",{className:"tabular-nums",children:g("{count} tasks",{count:Q.length})}),o?i.jsx("button",{type:"button",onClick:()=>l(null),className:"rounded-sm hover:text-foreground underline decoration-border underline-offset-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60",children:g("Clear filter")}):null]}),i.jsx(Ii,{isOpen:R,onClose:()=>M(!1),tasks:Q,projects:t,onSelectTask:r})]})}function Nn(e){switch(e){case De.TODO:return te.Pending;case De.IN_PROGRESS:return te.Running;case De.IN_REVIEW:return te.Review;case De.DONE:return te.Done;case De.CANCELLED:return te.Cancelled}}function Bi(e){switch(e){case te.Pending:return De.TODO;case te.Running:return De.IN_PROGRESS;case te.Review:return De.IN_REVIEW;case te.Done:return De.DONE;case te.Cancelled:return De.CANCELLED}}function _i(e){switch(e){case Re.CLAUDE_CODE:return"Claude Code";case Re.GEMINI_CLI:return"Gemini CLI";case Re.CURSOR_AGENT:return"Cursor Agent";case Re.CODEX:return"Codex";case Re.QWEN_CODE:return"Qwen Code";case Re.KIRO_CLI:return"Kiro CLI";case Re.OPENCODE:return"OpenCode";case Re.PI_CODING_AGENT:return"Pi Coding Agent";case Re.GROK_BUILD:return"Grok Build";case Re.MINION_CODE:return"Minion Code";case Re.DEEPSEEK_HERMES:return"DeepSeek Harness"}}const _t=["text-indigo-600","text-emerald-600","text-rose-600","text-amber-600","text-cyan-600","text-violet-600","text-teal-600","text-pink-600"];function Mr(e,t){let n=0;for(let r=0;r<e.length;r++)n=(n<<5)-n+e.charCodeAt(r)|0;return Math.abs(n)%t}function Ui(e){return{id:e.id,name:e.name,color:e.color||_t[Mr(e.name,_t.length)],isGitRepo:e.isGitRepo,worktreeReady:e.worktreeReady,reason:e.reason,archivedAt:e.archivedAt??null,repoDeletedAt:e.repoDeletedAt??null}}function $i(e,t){const n=e.preferredWorkspace?e.preferredWorkspace.workspaceKind===Je.MAIN_DIRECTORY?"Project directory":e.preferredWorkspace.branchName:"—";return{id:e.id,projectId:e.projectId,title:e.title,status:Nn(e.status),priority:e.priority,agent:e.latestAgentType?_i(e.latestAgentType):"—",branch:n,description:"",updatedAt:new Date(e.updatedAt).toISOString(),isGitRepo:t?.isGitRepo,worktreeReady:t?.worktreeReady,reason:t?.reason,projectArchivedAt:t?.archivedAt??null,projectRepoDeletedAt:t?.repoDeletedAt??null}}function Ki(e,t){const n=e.preferredWorkspace?e.preferredWorkspace.workspaceKind===Je.MAIN_DIRECTORY?"Project directory":e.preferredWorkspace.branchName:"—";return{id:e.id,projectId:t.id,projectName:t.name,projectColor:t.color||_t[Mr(t.name,_t.length)],title:e.title,status:Nn(e.status),priority:e.priority,branch:n,mainBranch:t.mainBranch??"main",description:"",isGitRepo:t.isGitRepo,worktreeReady:t.worktreeReady,reason:t.reason,projectArchivedAt:t.archivedAt??null,projectRepoDeletedAt:t.repoDeletedAt??null}}var Gi=Object.defineProperty,Ut=Object.getOwnPropertySymbols,Ir=Object.prototype.hasOwnProperty,Pr=Object.prototype.propertyIsEnumerable,er=(e,t,n)=>t in e?Gi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,mn=(e,t)=>{for(var n in t||(t={}))Ir.call(t,n)&&er(e,n,t[n]);if(Ut)for(var n of Ut(t))Pr.call(t,n)&&er(e,n,t[n]);return e},gn=(e,t)=>{var n={};for(var r in e)Ir.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ut)for(var r of Ut(e))t.indexOf(r)<0&&Pr.call(e,r)&&(n[r]=e[r]);return n};var qe;(e=>{const t=class ${constructor(s,a,c,d){if(this.version=s,this.errorCorrectionLevel=a,this.modules=[],this.isFunction=[],s<$.MIN_VERSION||s>$.MAX_VERSION)throw new RangeError("Version value out of range");if(d<-1||d>7)throw new RangeError("Mask value out of range");this.size=s*4+17;let m=[];for(let g=0;g<this.size;g++)m.push(!1);for(let g=0;g<this.size;g++)this.modules.push(m.slice()),this.isFunction.push(m.slice());this.drawFunctionPatterns();const p=this.addEccAndInterleave(c);if(this.drawCodewords(p),d==-1){let g=1e9;for(let v=0;v<8;v++){this.applyMask(v),this.drawFormatBits(v);const x=this.getPenaltyScore();x<g&&(d=v,g=x),this.applyMask(v)}}o(0<=d&&d<=7),this.mask=d,this.applyMask(d),this.drawFormatBits(d),this.isFunction=[]}static encodeText(s,a){const c=e.QrSegment.makeSegments(s);return $.encodeSegments(c,a)}static encodeBinary(s,a){const c=e.QrSegment.makeBytes(s);return $.encodeSegments([c],a)}static encodeSegments(s,a,c=1,d=40,m=-1,p=!0){if(!($.MIN_VERSION<=c&&c<=d&&d<=$.MAX_VERSION)||m<-1||m>7)throw new RangeError("Invalid value");let g,v;for(g=c;;g++){const w=$.getNumDataCodewords(g,a)*8,N=h.getTotalBits(s,g);if(N<=w){v=N;break}if(g>=d)throw new RangeError("Data too long")}for(const w of[$.Ecc.MEDIUM,$.Ecc.QUARTILE,$.Ecc.HIGH])p&&v<=$.getNumDataCodewords(g,w)*8&&(a=w);let x=[];for(const w of s){n(w.mode.modeBits,4,x),n(w.numChars,w.mode.numCharCountBits(g),x);for(const N of w.getData())x.push(N)}o(x.length==v);const S=$.getNumDataCodewords(g,a)*8;o(x.length<=S),n(0,Math.min(4,S-x.length),x),n(0,(8-x.length%8)%8,x),o(x.length%8==0);for(let w=236;x.length<S;w^=253)n(w,8,x);let b=[];for(;b.length*8<x.length;)b.push(0);return x.forEach((w,N)=>b[N>>>3]|=w<<7-(N&7)),new $(g,a,b,m)}getModule(s,a){return 0<=s&&s<this.size&&0<=a&&a<this.size&&this.modules[a][s]}getModules(){return this.modules}drawFunctionPatterns(){for(let c=0;c<this.size;c++)this.setFunctionModule(6,c,c%2==0),this.setFunctionModule(c,6,c%2==0);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);const s=this.getAlignmentPatternPositions(),a=s.length;for(let c=0;c<a;c++)for(let d=0;d<a;d++)c==0&&d==0||c==0&&d==a-1||c==a-1&&d==0||this.drawAlignmentPattern(s[c],s[d]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(s){const a=this.errorCorrectionLevel.formatBits<<3|s;let c=a;for(let m=0;m<10;m++)c=c<<1^(c>>>9)*1335;const d=(a<<10|c)^21522;o(d>>>15==0);for(let m=0;m<=5;m++)this.setFunctionModule(8,m,r(d,m));this.setFunctionModule(8,7,r(d,6)),this.setFunctionModule(8,8,r(d,7)),this.setFunctionModule(7,8,r(d,8));for(let m=9;m<15;m++)this.setFunctionModule(14-m,8,r(d,m));for(let m=0;m<8;m++)this.setFunctionModule(this.size-1-m,8,r(d,m));for(let m=8;m<15;m++)this.setFunctionModule(8,this.size-15+m,r(d,m));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let s=this.version;for(let c=0;c<12;c++)s=s<<1^(s>>>11)*7973;const a=this.version<<12|s;o(a>>>18==0);for(let c=0;c<18;c++){const d=r(a,c),m=this.size-11+c%3,p=Math.floor(c/3);this.setFunctionModule(m,p,d),this.setFunctionModule(p,m,d)}}drawFinderPattern(s,a){for(let c=-4;c<=4;c++)for(let d=-4;d<=4;d++){const m=Math.max(Math.abs(d),Math.abs(c)),p=s+d,g=a+c;0<=p&&p<this.size&&0<=g&&g<this.size&&this.setFunctionModule(p,g,m!=2&&m!=4)}}drawAlignmentPattern(s,a){for(let c=-2;c<=2;c++)for(let d=-2;d<=2;d++)this.setFunctionModule(s+d,a+c,Math.max(Math.abs(d),Math.abs(c))!=1)}setFunctionModule(s,a,c){this.modules[a][s]=c,this.isFunction[a][s]=!0}addEccAndInterleave(s){const a=this.version,c=this.errorCorrectionLevel;if(s.length!=$.getNumDataCodewords(a,c))throw new RangeError("Invalid argument");const d=$.NUM_ERROR_CORRECTION_BLOCKS[c.ordinal][a],m=$.ECC_CODEWORDS_PER_BLOCK[c.ordinal][a],p=Math.floor($.getNumRawDataModules(a)/8),g=d-p%d,v=Math.floor(p/d);let x=[];const S=$.reedSolomonComputeDivisor(m);for(let w=0,N=0;w<d;w++){let R=s.slice(N,N+v-m+(w<g?0:1));N+=R.length;const M=$.reedSolomonComputeRemainder(R,S);w<g&&R.push(0),x.push(R.concat(M))}let b=[];for(let w=0;w<x[0].length;w++)x.forEach((N,R)=>{(w!=v-m||R>=g)&&b.push(N[w])});return o(b.length==p),b}drawCodewords(s){if(s.length!=Math.floor($.getNumRawDataModules(this.version)/8))throw new RangeError("Invalid argument");let a=0;for(let c=this.size-1;c>=1;c-=2){c==6&&(c=5);for(let d=0;d<this.size;d++)for(let m=0;m<2;m++){const p=c-m,v=(c+1&2)==0?this.size-1-d:d;!this.isFunction[v][p]&&a<s.length*8&&(this.modules[v][p]=r(s[a>>>3],7-(a&7)),a++)}}o(a==s.length*8)}applyMask(s){if(s<0||s>7)throw new RangeError("Mask value out of range");for(let a=0;a<this.size;a++)for(let c=0;c<this.size;c++){let d;switch(s){case 0:d=(c+a)%2==0;break;case 1:d=a%2==0;break;case 2:d=c%3==0;break;case 3:d=(c+a)%3==0;break;case 4:d=(Math.floor(c/3)+Math.floor(a/2))%2==0;break;case 5:d=c*a%2+c*a%3==0;break;case 6:d=(c*a%2+c*a%3)%2==0;break;case 7:d=((c+a)%2+c*a%3)%2==0;break;default:throw new Error("Unreachable")}!this.isFunction[a][c]&&d&&(this.modules[a][c]=!this.modules[a][c])}}getPenaltyScore(){let s=0;for(let m=0;m<this.size;m++){let p=!1,g=0,v=[0,0,0,0,0,0,0];for(let x=0;x<this.size;x++)this.modules[m][x]==p?(g++,g==5?s+=$.PENALTY_N1:g>5&&s++):(this.finderPenaltyAddHistory(g,v),p||(s+=this.finderPenaltyCountPatterns(v)*$.PENALTY_N3),p=this.modules[m][x],g=1);s+=this.finderPenaltyTerminateAndCount(p,g,v)*$.PENALTY_N3}for(let m=0;m<this.size;m++){let p=!1,g=0,v=[0,0,0,0,0,0,0];for(let x=0;x<this.size;x++)this.modules[x][m]==p?(g++,g==5?s+=$.PENALTY_N1:g>5&&s++):(this.finderPenaltyAddHistory(g,v),p||(s+=this.finderPenaltyCountPatterns(v)*$.PENALTY_N3),p=this.modules[x][m],g=1);s+=this.finderPenaltyTerminateAndCount(p,g,v)*$.PENALTY_N3}for(let m=0;m<this.size-1;m++)for(let p=0;p<this.size-1;p++){const g=this.modules[m][p];g==this.modules[m][p+1]&&g==this.modules[m+1][p]&&g==this.modules[m+1][p+1]&&(s+=$.PENALTY_N2)}let a=0;for(const m of this.modules)a=m.reduce((p,g)=>p+(g?1:0),a);const c=this.size*this.size,d=Math.ceil(Math.abs(a*20-c*10)/c)-1;return o(0<=d&&d<=9),s+=d*$.PENALTY_N4,o(0<=s&&s<=2568888),s}getAlignmentPatternPositions(){if(this.version==1)return[];{const s=Math.floor(this.version/7)+2,a=this.version==32?26:Math.ceil((this.version*4+4)/(s*2-2))*2;let c=[6];for(let d=this.size-7;c.length<s;d-=a)c.splice(1,0,d);return c}}static getNumRawDataModules(s){if(s<$.MIN_VERSION||s>$.MAX_VERSION)throw new RangeError("Version number out of range");let a=(16*s+128)*s+64;if(s>=2){const c=Math.floor(s/7)+2;a-=(25*c-10)*c-55,s>=7&&(a-=36)}return o(208<=a&&a<=29648),a}static getNumDataCodewords(s,a){return Math.floor($.getNumRawDataModules(s)/8)-$.ECC_CODEWORDS_PER_BLOCK[a.ordinal][s]*$.NUM_ERROR_CORRECTION_BLOCKS[a.ordinal][s]}static reedSolomonComputeDivisor(s){if(s<1||s>255)throw new RangeError("Degree out of range");let a=[];for(let d=0;d<s-1;d++)a.push(0);a.push(1);let c=1;for(let d=0;d<s;d++){for(let m=0;m<a.length;m++)a[m]=$.reedSolomonMultiply(a[m],c),m+1<a.length&&(a[m]^=a[m+1]);c=$.reedSolomonMultiply(c,2)}return a}static reedSolomonComputeRemainder(s,a){let c=a.map(d=>0);for(const d of s){const m=d^c.shift();c.push(0),a.forEach((p,g)=>c[g]^=$.reedSolomonMultiply(p,m))}return c}static reedSolomonMultiply(s,a){if(s>>>8||a>>>8)throw new RangeError("Byte out of range");let c=0;for(let d=7;d>=0;d--)c=c<<1^(c>>>7)*285,c^=(a>>>d&1)*s;return o(c>>>8==0),c}finderPenaltyCountPatterns(s){const a=s[1];o(a<=this.size*3);const c=a>0&&s[2]==a&&s[3]==a*3&&s[4]==a&&s[5]==a;return(c&&s[0]>=a*4&&s[6]>=a?1:0)+(c&&s[6]>=a*4&&s[0]>=a?1:0)}finderPenaltyTerminateAndCount(s,a,c){return s&&(this.finderPenaltyAddHistory(a,c),a=0),a+=this.size,this.finderPenaltyAddHistory(a,c),this.finderPenaltyCountPatterns(c)}finderPenaltyAddHistory(s,a){a[0]==0&&(s+=this.size),a.pop(),a.unshift(s)}};t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=t;function n(f,s,a){if(s<0||s>31||f>>>s)throw new RangeError("Value out of range");for(let c=s-1;c>=0;c--)a.push(f>>>c&1)}function r(f,s){return(f>>>s&1)!=0}function o(f){if(!f)throw new Error("Assertion error")}const l=class re{constructor(s,a,c){if(this.mode=s,this.numChars=a,this.bitData=c,a<0)throw new RangeError("Invalid argument");this.bitData=c.slice()}static makeBytes(s){let a=[];for(const c of s)n(c,8,a);return new re(re.Mode.BYTE,s.length,a)}static makeNumeric(s){if(!re.isNumeric(s))throw new RangeError("String contains non-numeric characters");let a=[];for(let c=0;c<s.length;){const d=Math.min(s.length-c,3);n(parseInt(s.substring(c,c+d),10),d*3+1,a),c+=d}return new re(re.Mode.NUMERIC,s.length,a)}static makeAlphanumeric(s){if(!re.isAlphanumeric(s))throw new RangeError("String contains unencodable characters in alphanumeric mode");let a=[],c;for(c=0;c+2<=s.length;c+=2){let d=re.ALPHANUMERIC_CHARSET.indexOf(s.charAt(c))*45;d+=re.ALPHANUMERIC_CHARSET.indexOf(s.charAt(c+1)),n(d,11,a)}return c<s.length&&n(re.ALPHANUMERIC_CHARSET.indexOf(s.charAt(c)),6,a),new re(re.Mode.ALPHANUMERIC,s.length,a)}static makeSegments(s){return s==""?[]:re.isNumeric(s)?[re.makeNumeric(s)]:re.isAlphanumeric(s)?[re.makeAlphanumeric(s)]:[re.makeBytes(re.toUtf8ByteArray(s))]}static makeEci(s){let a=[];if(s<0)throw new RangeError("ECI assignment value out of range");if(s<128)n(s,8,a);else if(s<16384)n(2,2,a),n(s,14,a);else if(s<1e6)n(6,3,a),n(s,21,a);else throw new RangeError("ECI assignment value out of range");return new re(re.Mode.ECI,0,a)}static isNumeric(s){return re.NUMERIC_REGEX.test(s)}static isAlphanumeric(s){return re.ALPHANUMERIC_REGEX.test(s)}getData(){return this.bitData.slice()}static getTotalBits(s,a){let c=0;for(const d of s){const m=d.mode.numCharCountBits(a);if(d.numChars>=1<<m)return 1/0;c+=4+m+d.bitData.length}return c}static toUtf8ByteArray(s){s=encodeURI(s);let a=[];for(let c=0;c<s.length;c++)s.charAt(c)!="%"?a.push(s.charCodeAt(c)):(a.push(parseInt(s.substring(c+1,c+3),16)),c+=2);return a}};l.NUMERIC_REGEX=/^[0-9]*$/,l.ALPHANUMERIC_REGEX=/^[A-Z0-9 $%*+.\/:-]*$/,l.ALPHANUMERIC_CHARSET="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:";let h=l;e.QrSegment=l})(qe||(qe={}));(e=>{(t=>{const n=class{constructor(o,l){this.ordinal=o,this.formatBits=l}};n.LOW=new n(0,1),n.MEDIUM=new n(1,0),n.QUARTILE=new n(2,3),n.HIGH=new n(3,2),t.Ecc=n})(e.QrCode||(e.QrCode={}))})(qe||(qe={}));(e=>{(t=>{const n=class{constructor(o,l){this.modeBits=o,this.numBitsCharCount=l}numCharCountBits(o){return this.numBitsCharCount[Math.floor((o+7)/17)]}};n.NUMERIC=new n(1,[10,12,14]),n.ALPHANUMERIC=new n(2,[9,11,13]),n.BYTE=new n(4,[8,16,16]),n.KANJI=new n(8,[8,10,12]),n.ECI=new n(7,[0,0,0]),t.Mode=n})(e.QrSegment||(e.QrSegment={}))})(qe||(qe={}));var Xe=qe;var Wi={L:Xe.QrCode.Ecc.LOW,M:Xe.QrCode.Ecc.MEDIUM,Q:Xe.QrCode.Ecc.QUARTILE,H:Xe.QrCode.Ecc.HIGH},Or=128,Lr="L",zr="#FFFFFF",Fr="#000000",Br=!1,_r=1,Qi=4,Yi=0,Hi=.1;function Ur(e,t=0){const n=[];return e.forEach(function(r,o){let l=null;r.forEach(function(h,f){if(!h&&l!==null){n.push(`M${l+t} ${o+t}h${f-l}v1H${l+t}z`),l=null;return}if(f===r.length-1){if(!h)return;l===null?n.push(`M${f+t},${o+t} h1v1H${f+t}z`):n.push(`M${l+t},${o+t} h${f+1-l}v1H${l+t}z`);return}h&&l===null&&(l=f)})}),n.join("")}function $r(e,t){return e.slice().map((n,r)=>r<t.y||r>=t.y+t.h?n:n.map((o,l)=>l<t.x||l>=t.x+t.w?o:!1))}function qi(e,t,n,r){if(r==null)return null;const o=e.length+n*2,l=Math.floor(t*Hi),h=o/t,f=(r.width||l)*h,s=(r.height||l)*h,a=r.x==null?e.length/2-f/2:r.x*h,c=r.y==null?e.length/2-s/2:r.y*h,d=r.opacity==null?1:r.opacity;let m=null;if(r.excavate){let g=Math.floor(a),v=Math.floor(c),x=Math.ceil(f+a-g),S=Math.ceil(s+c-v);m={x:g,y:v,w:x,h:S}}const p=r.crossOrigin;return{x:a,y:c,h:s,w:f,excavation:m,opacity:d,crossOrigin:p}}function Xi(e,t){return t!=null?Math.max(Math.floor(t),0):e?Qi:Yi}function Kr({value:e,level:t,minVersion:n,includeMargin:r,marginSize:o,imageSettings:l,size:h,boostLevel:f}){let s=B.useMemo(()=>{const g=(Array.isArray(e)?e:[e]).reduce((v,x)=>(v.push(...Xe.QrSegment.makeSegments(x)),v),[]);return Xe.QrCode.encodeSegments(g,Wi[t],n,void 0,void 0,f)},[e,t,n,f]);const{cells:a,margin:c,numCells:d,calculatedImageSettings:m}=B.useMemo(()=>{let p=s.getModules();const g=Xi(r,o),v=p.length+g*2,x=qi(p,h,g,l);return{cells:p,margin:g,numCells:v,calculatedImageSettings:x}},[s,h,l,r,o]);return{qrcode:s,margin:c,cells:a,numCells:d,calculatedImageSettings:m}}var Vi=(function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0})(),Ji=B.forwardRef(function(t,n){const r=t,{value:o,size:l=Or,level:h=Lr,bgColor:f=zr,fgColor:s=Fr,includeMargin:a=Br,minVersion:c=_r,boostLevel:d,marginSize:m,imageSettings:p}=r,v=gn(r,["value","size","level","bgColor","fgColor","includeMargin","minVersion","boostLevel","marginSize","imageSettings"]),{style:x}=v,S=gn(v,["style"]),b=p?.src,w=B.useRef(null),N=B.useRef(null),R=B.useCallback(k=>{w.current=k,typeof n=="function"?n(k):n&&(n.current=k)},[n]),[M,T]=B.useState(!1),{margin:C,cells:A,numCells:E,calculatedImageSettings:I}=Kr({value:o,level:h,minVersion:c,boostLevel:d,includeMargin:a,marginSize:m,imageSettings:p,size:l});B.useEffect(()=>{if(w.current!=null){const k=w.current,L=k.getContext("2d");if(!L)return;let Y=A;const _=N.current,P=I!=null&&_!==null&&_.complete&&_.naturalHeight!==0&&_.naturalWidth!==0;P&&I.excavation!=null&&(Y=$r(A,I.excavation));const z=window.devicePixelRatio||1;k.height=k.width=l*z;const J=l/E*z;L.scale(J,J),L.fillStyle=f,L.fillRect(0,0,E,E),L.fillStyle=s,Vi?L.fill(new Path2D(Ur(Y,C))):A.forEach(function(se,q){se.forEach(function(de,j){de&&L.fillRect(j+C,q+C,1,1)})}),I&&(L.globalAlpha=I.opacity),P&&L.drawImage(_,I.x+C,I.y+C,I.w,I.h)}}),B.useEffect(()=>{T(!1)},[b]);const Q=mn({height:l,width:l},x);let H=null;return b!=null&&(H=B.createElement("img",{src:b,key:b,style:{display:"none"},onLoad:()=>{T(!0)},ref:N,crossOrigin:I?.crossOrigin})),B.createElement(B.Fragment,null,B.createElement("canvas",mn({style:Q,height:l,width:l,ref:R,role:"img"},S)),H)});Ji.displayName="QRCodeCanvas";var Gr=B.forwardRef(function(t,n){const r=t,{value:o,size:l=Or,level:h=Lr,bgColor:f=zr,fgColor:s=Fr,includeMargin:a=Br,minVersion:c=_r,boostLevel:d,title:m,marginSize:p,imageSettings:g}=r,v=gn(r,["value","size","level","bgColor","fgColor","includeMargin","minVersion","boostLevel","title","marginSize","imageSettings"]),{margin:x,cells:S,numCells:b,calculatedImageSettings:w}=Kr({value:o,level:h,minVersion:c,boostLevel:d,includeMargin:a,marginSize:p,imageSettings:g,size:l});let N=S,R=null;g!=null&&w!=null&&(w.excavation!=null&&(N=$r(S,w.excavation)),R=B.createElement("image",{href:g.src,height:w.h,width:w.w,x:w.x+x,y:w.y+x,preserveAspectRatio:"none",opacity:w.opacity,crossOrigin:w.crossOrigin}));const M=Ur(N,x);return B.createElement("svg",mn({height:l,width:l,viewBox:`0 0 ${b} ${b}`,ref:n,role:"img"},v),!!m&&B.createElement("title",null,m),B.createElement("path",{fill:f,d:`M0,0 h${b}v${b}H0z`,shapeRendering:"crispEdges"}),B.createElement("path",{fill:s,d:M,shapeRendering:"crispEdges"}),R)});Gr.displayName="QRCodeSVG";function Wr(){return parseInt(window.location.port||(window.location.protocol==="https:"?"443":"80"),10)}function Zi(){return es({queryKey:ce.tunnel.status,queryFn:()=>We.get("/tunnel/status"),refetchInterval:e=>e.state.data?.running?5e3:!1})}function ea(){const e=$t();return pn({mutationFn:()=>We.post("/tunnel/start",{port:Wr()}),onSuccess:()=>{e.invalidateQueries({queryKey:ce.tunnel.status})}})}function ta(){const e=$t();return pn({mutationFn:()=>We.post("/tunnel/regenerate",{port:Wr()}),onSuccess:()=>{e.invalidateQueries({queryKey:ce.tunnel.status})}})}function na(){const e=$t();return pn({mutationFn:()=>We.post("/tunnel/stop"),onSuccess:()=>{e.invalidateQueries({queryKey:ce.tunnel.status})}})}function ra(e){if(!e||e.status==="stopped")return{button:"text-muted-foreground hover:text-foreground hover:bg-accent",dot:"",label:"Use Agent Tower on your phone",icon:"idle"};switch(e.status){case"healthy":case"checking":return{button:"text-success-ink hover:bg-success/10",dot:"bg-success",label:e.status==="healthy"?"Tunnel healthy":"Checking tunnel health",icon:"ok"};case"degraded":case"localUnhealthy":case"linkReplaced":return{button:"text-warning-ink hover:bg-warning/10",dot:"bg-warning",label:"Tunnel needs attention",icon:"warn"};case"exited":case"error":return{button:"text-destructive-ink hover:bg-destructive/10",dot:"bg-destructive",label:"Tunnel unavailable",icon:"error"};case"starting":return{button:"text-warning-ink hover:bg-warning/10",dot:"bg-warning",label:"Tunnel starting",icon:"loading"}}}function sa(e){if(!e||e.status==="stopped")return"Tunnel is off";switch(e.status){case"healthy":return"Tunnel healthy";case"checking":return"Checking tunnel health";case"degraded":return"Observing original link";case"localUnhealthy":return"Local service unavailable";case"exited":return"Tunnel process exited";case"error":return"Tunnel error";case"linkReplaced":return"New link generated";case"starting":return"Tunnel starting"}}function oa(e){if(!e||e.status==="stopped")return"Start a temporary Quick Tunnel when you need to share this Agent Tower session.";switch(e.status){case"healthy":return"The Cloudflare tunnel is running and the local Agent Tower health check passed.";case"checking":return"The Cloudflare tunnel is running. Agent Tower is waiting for the first local health check.";case"degraded":return"The original public URL is currently unreachable. Agent Tower is watching for it to recover and will not generate a new link automatically.";case"localUnhealthy":return"The local Agent Tower target is not responding, so the tunnel cannot be considered healthy.";case"exited":return"The tunnel process has exited. The old Quick Tunnel link is unlikely to recover.";case"error":return"The tunnel reported an error. Check the diagnostics before generating a new link.";case"linkReplaced":return"A new Quick Tunnel link was generated. The old link and token are no longer valid.";case"starting":return"Agent Tower is asking Cloudflare Quick Tunnel for a temporary public URL."}}function tr(e){if(!e)return"Never";const t=new Date(e).getTime();if(!Number.isFinite(t))return e;const n=Math.max(0,Math.round((Date.now()-t)/1e3));if(n<60)return`${n}s ago`;const r=Math.round(n/60);if(r<60)return`${r}m ago`;const o=Math.round(r/60);return o<24?`${o}h ago`:`${Math.round(o/24)}d ago`}function ct(e){const t=e?.trim();return t||null}function ia(e){if(!e)return"";const t=[ct(e.lastLocalError),ct(e.lastRemoteError),ct(e.lastError)].filter(o=>o!==null),n=ct(e.lastProcessOutput),r=!!n&&(e.status==="error"||e.status==="exited"||!!ct(e.lastError));return n&&r&&t.push(n),t.join(`
|
|
8
|
+
`)}function nr(){const{t:e}=Ie(),{data:t}=Zi(),n=ea(),r=na(),o=ta(),[l,h]=u.useState(!1),[f,s]=u.useState(null),[a,c]=u.useState(!1),[d,m]=u.useState(!1),p=t?.status!==void 0&&t.status!=="stopped",g=n.isPending||t?.status==="starting",v=o.isPending,x=t?.shareableUrl,S=t?.token,b=ra(t),w=sa(t),N=ia(t),R=t?.status==="healthy"||t?.status==="checking"?"text-success-ink":t?.status==="exited"||t?.status==="error"?"text-destructive-ink":"text-warning-ink",M=u.useCallback(()=>{n.mutate(void 0,{onSuccess:()=>h(!0)})},[n]),T=u.useCallback(()=>{x&&(navigator.clipboard.writeText(x),s("url"),setTimeout(()=>s(null),2e3))},[x]),C=u.useCallback(()=>{S&&(navigator.clipboard.writeText(S),s("token"),setTimeout(()=>s(null),2e3))},[S]),A=u.useCallback(()=>{r.mutate(),h(!1),c(!1),m(!1)},[r]),E=u.useCallback(()=>{o.mutate(void 0,{onSuccess:()=>{m(!1),h(!0)}})},[o]),I=i.jsx(ws,{asChild:!0,children:i.jsx(Vt,{size:"xs",label:e("Close"),className:"-mr-1 -mt-0.5 shrink-0",children:i.jsx(ts,{})})});return i.jsxs(Cs,{open:l,onOpenChange:h,children:[i.jsxs("div",{className:"relative",children:[i.jsx(Ss,{asChild:!0,children:i.jsx("button",{type:"button",disabled:g,className:ie("p-1.5 rounded-md transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring/60",b.button),title:e(b.label),"aria-label":e(b.label),children:g?i.jsx(ns,{size:"md"}):b.icon==="warn"?i.jsx(rs,{size:16}):i.jsx(Pn,{size:16})})}),p&&!g&&i.jsx("span",{className:`pointer-events-none absolute top-0.5 right-0.5 w-2 h-2 ${b.dot} rounded-full`})]}),i.jsx(Es,{align:"end",className:ie("max-w-[calc(100vw-1rem)]",p?"w-96":"w-80"),children:p?i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"mb-2 flex items-start justify-between gap-3",children:[i.jsxs("div",{children:[i.jsxs("span",{className:ie("flex items-center gap-1.5 text-xs font-medium",R),children:[i.jsx("span",{className:`inline-block w-1.5 h-1.5 ${b.dot} rounded-full`}),e(w)]}),i.jsx("p",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:e(oa(t))})]}),I]}),S&&i.jsxs("div",{className:"mb-2 flex items-center gap-1.5 rounded-md bg-muted/50 px-2 py-1 text-xs text-foreground/80",children:[i.jsx(ms,{size:12}),i.jsx("span",{children:e("Token protected")})]}),x&&i.jsx("div",{className:"flex justify-center py-3",children:i.jsx(Gr,{value:x,size:160})}),x||t?.url?i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(Ns,{size:"sm",readOnly:!0,value:x??t?.url??"",onFocus:Q=>Q.target.select(),"aria-label":e("Copy shareable link"),className:"select-all text-xs"}),i.jsx(Vt,{size:"sm",label:e("Copy shareable link"),onClick:T,disabled:!x,children:f==="url"?i.jsx(vt,{className:"text-success"}):i.jsx(Mn,{})})]}):i.jsx("div",{className:"rounded-md border border-border bg-muted/50 px-2 py-1.5 text-xs text-muted-foreground",children:e("No tunnel link available")}),i.jsxs("div",{className:"mt-3 grid grid-cols-2 gap-2 text-xs",children:[i.jsxs("div",{className:"rounded-md border border-border px-2 py-1.5",children:[i.jsx("div",{className:"text-muted-foreground",children:e("Last checked")}),i.jsx("div",{className:"mt-0.5 text-foreground",children:tr(t?.lastCheckedAt)})]}),i.jsxs("div",{className:"rounded-md border border-border px-2 py-1.5",children:[i.jsx("div",{className:"text-muted-foreground",children:e("Last healthy")}),i.jsx("div",{className:"mt-0.5 text-foreground",children:tr(t?.lastHealthyAt)})]})]}),N&&i.jsx(At,{tone:"warning",size:"sm",className:"mt-2 max-h-28 overflow-auto",children:i.jsx("div",{className:"whitespace-pre-wrap break-words",children:N})}),t?.status==="degraded"&&i.jsx(At,{tone:"warning",size:"sm",className:"mt-2",children:e("Agent Tower is keeping the same URL and waiting for Cloudflare Quick Tunnel to recover.")}),t?.status==="linkReplaced"&&i.jsx(At,{tone:"warning",size:"sm",className:"mt-2",children:e("The previous tunnel link and token are no longer valid.")}),S&&i.jsxs("div",{className:"mt-2",children:[i.jsx("button",{type:"button",onClick:()=>c(!a),className:"rounded-sm text-xs text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60",children:e(a?"Hide token":"Show token")}),a&&i.jsxs("div",{className:"mt-1 flex items-center gap-2",children:[i.jsx("code",{className:"flex-1 min-w-0 break-all rounded-md border border-border bg-muted/50 px-2 py-1.5 text-xs text-foreground/80",children:S}),i.jsx(Vt,{size:"sm",label:e("Copy token"),onClick:C,className:"shrink-0",children:f==="token"?i.jsx(vt,{className:"text-success"}):i.jsx(Mn,{})})]})]}),d?i.jsxs(At,{tone:"danger",size:"sm",className:"mt-3",children:[e("Generating a new link will invalidate the current link. People using the old URL must receive the new one."),i.jsxs("div",{className:"mt-2 flex gap-2",children:[i.jsx(Me,{variant:"secondary",size:"xs",className:"flex-1",onClick:()=>m(!1),children:e("Cancel")}),i.jsx(Me,{variant:"primary",tone:"danger",size:"xs",className:"flex-1",onClick:E,loading:v,children:e(v?"Generating...":"Regenerate link")})]})]}):i.jsxs(Me,{variant:"ghost",size:"sm",block:!0,className:"mt-3",onClick:()=>m(!0),disabled:v||t?.canRegenerate===!1,children:[i.jsx(ss,{}),e("Regenerate link")]}),i.jsx(Me,{variant:"ghost",tone:"danger",size:"sm",block:!0,className:"mt-1",onClick:A,loading:r.isPending,children:r.isPending?e("Stopping..."):e("Stop Tunnel")})]}):i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"flex items-start justify-between gap-3",children:[i.jsxs("div",{className:"flex items-start gap-2",children:[i.jsx("span",{className:"mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-md bg-muted text-foreground/80",children:i.jsx(Pn,{size:16})}),i.jsxs("div",{children:[i.jsx("div",{className:"text-sm font-medium text-foreground",children:e("Use Agent Tower on your phone")}),i.jsx("p",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:e("After enabling the tunnel, you can scan a QR code with your phone to visit this Agent Tower instance, assign tasks, and check agent status.")})]})]}),I]}),i.jsx(Me,{variant:"primary",size:"sm",block:!0,className:"mt-3",onClick:M,loading:g,children:e(g?"Starting tunnel...":"Enable phone access")})]})})]})}function on({isOpen:e,onClose:t}){const{t:n}=Ie(),r=fs(),[o,l]=u.useState(""),[h,f]=u.useState(""),[s,a]=u.useState(null),[c,d]=u.useState(!1),[m,p]=u.useState(!1),g=o.trim(),v=h.trim(),x=c||r.isPending,S=u.useMemo(()=>!!(g&&v&&!x),[g,v,x]),b=u.useCallback(()=>{l(""),f(""),a(null),p(!1)},[]),w=u.useCallback(()=>{x||(b(),t())},[x,t,b]);u.useEffect(()=>{e||b()},[e,b]);const N=u.useCallback(async C=>{try{await r.mutateAsync({name:g,repoPath:v,initEmptyRepo:C}),b(),t()}catch(A){const E=A instanceof Error?A.message:n("Failed to create project");a(E),Fe.error(E)}},[r,t,b,n,g,v]),R=u.useCallback(async()=>{if(!(!g||!v||x)){a(null),d(!0);try{const C=await We.get("/filesystem/validate",{params:{path:v}});if(!C.valid){a(C.error??n("Selected path is not a valid directory"));return}if(C.isGitRepo){await N(!1);return}if(C.reason==="no_git"&&C.isEmpty){p(!0);return}if(C.reason==="no_git"){await N(!1);return}await N(!1)}catch(C){a(C instanceof Error?C.message:n("Could not check project path"))}finally{d(!1)}}},[N,x,n,g,v]),M=u.useCallback(()=>{p(!1),N(!1)},[N]),T=u.useCallback(()=>{p(!1),N(!0)},[N]);return i.jsxs(i.Fragment,{children:[i.jsx(In,{isOpen:e,onClose:w,title:n("Create New Project"),action:i.jsxs(i.Fragment,{children:[i.jsx(Me,{onClick:w,disabled:x,children:n("Cancel")}),i.jsx(Me,{variant:"primary",onClick:R,disabled:!S,children:c?n("Checking..."):r.isPending?n("Creating..."):n("Create Project")})]}),children:i.jsxs("div",{className:"space-y-4",children:[i.jsxs("div",{children:[i.jsx("label",{className:"block text-sm font-medium text-foreground/80 mb-1.5",children:n("Project Name")}),i.jsx("input",{type:"text",value:o,onChange:C=>l(C.target.value),placeholder:n("e.g., Agent Tower"),disabled:x,className:"w-full px-3 py-2 border border-border rounded-lg text-sm focus:outline-none focus:border-ring transition-colors disabled:bg-muted/50 disabled:text-muted-foreground",autoFocus:!0})]}),i.jsxs("div",{children:[i.jsx("label",{className:"block text-sm font-medium text-foreground/80 mb-1.5",children:n("Project Path")}),i.jsx(js,{value:h,onChange:f,validationMode:"directory"})]}),s&&i.jsx("p",{className:"text-xs text-destructive-ink leading-relaxed",children:s})]})}),i.jsx(In,{isOpen:m,onClose:()=>{r.isPending||p(!1)},title:n("Initialize Git repository?"),action:i.jsxs(i.Fragment,{children:[i.jsx(Me,{onClick:()=>p(!1),disabled:r.isPending,children:n("Cancel")}),i.jsx(Me,{onClick:M,disabled:r.isPending,children:n("Create Local Project")}),i.jsx(Me,{variant:"primary",onClick:T,disabled:r.isPending,children:r.isPending?n("Creating..."):n("Initialize and Create")})]}),children:i.jsxs("div",{className:"space-y-3 text-sm text-foreground/70 leading-relaxed",children:[i.jsx("p",{children:n("This directory is empty and does not have Git version control yet. Agent Tower can initialize Git and create the initial commit before creating the project.")}),i.jsx("p",{children:n("You can also create it as a local project now. Local projects only support local Solo tasks until Git is initialized.")})]})})]})}function rr(e){if(!e)return 0;const t=Date.parse(e);return Number.isNaN(t)?0:t}function aa(e){return e.map((t,n)=>({project:t,index:n,activityTime:rr(t.lastActivityAt??t.createdAt),createdTime:rr(t.createdAt)})).sort((t,n)=>{const r=n.activityTime-t.activityTime;if(r!==0)return r;const o=n.createdTime-t.createdTime;return o!==0?o:t.index-n.index}).map(({project:t})=>t)}const Qr="providerLastUsedAt";function la(){const e={};try{const t=localStorage.getItem(Qr),n=t?JSON.parse(t):{};if(n&&typeof n=="object"&&!Array.isArray(n))for(const[r,o]of Object.entries(n))typeof o=="number"&&Number.isFinite(o)&&o>0&&(e[r]=o)}catch{}try{const t=localStorage.getItem("lastSelectedProviderId");t&&Object.keys(e).length===0&&(e[t]=1)}catch{}return e}function ca(e){try{localStorage.setItem(Qr,JSON.stringify(e))}catch{}}const ua=u.lazy(()=>lr(()=>import("./TaskDetail-DzKbs5Jt.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56])).then(e=>({default:e.TaskDetail}))),da=u.lazy(()=>lr(()=>import("./MobileTaskDetail-IOQ1WnS8.js"),__vite__mapDeps([57,1,2,15,3,4,5,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56])).then(e=>({default:e.MobileTaskDetail})));function sr(){const{t:e}=Ie();return i.jsx("div",{role:"status",className:"flex flex-1 items-center justify-center bg-background p-4 text-sm text-muted-foreground",children:e("Loading...")})}function or({projects:e,filterProjectId:t,setFilterProjectId:n,onCreateProject:r,className:o}){const{t:l}=Ie(),[h,f]=u.useState(!1),s=e.filter(c=>!c.archivedAt),a=t?e.find(c=>c.id===t)??null:null;return i.jsxs("div",{className:ie("relative flex items-center min-w-0",o),children:[i.jsx("span",{className:"mx-1.5 text-muted-foreground select-none",children:"/"}),i.jsxs("button",{onClick:()=>f(c=>!c),className:"flex items-center gap-1.5 px-2 py-1 rounded-md text-sm text-foreground/90 hover:bg-accent transition-colors min-w-0",children:[a?i.jsx("span",{className:`w-2 h-2 rounded-full shrink-0 ${a.color.replace("text-","bg-")}`}):i.jsx(an,{size:13,className:"text-muted-foreground shrink-0"}),i.jsx("span",{className:"truncate max-w-[200px] font-medium",children:a?a.name:l("All Projects")}),i.jsx(Ts,{size:13,className:`text-muted-foreground/70 shrink-0 transition-transform duration-200 ${h?"rotate-180":""}`})]}),h?i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"fixed inset-0 z-30",onClick:()=>f(!1)}),i.jsxs("div",{className:"absolute left-4 top-full mt-1.5 w-60 bg-popover border border-border rounded-lg shadow-popover shadow-black/5 z-40 py-1 animate-in fade-in zoom-in-95 duration-100 origin-top-left",children:[i.jsxs("button",{onClick:()=>{n(null),f(!1)},className:"w-full text-left px-3 py-1.5 text-[13px] flex items-center gap-2 hover:bg-accent/50 transition-colors",children:[i.jsx(an,{size:13,className:"text-muted-foreground shrink-0"}),i.jsx("span",{className:`flex-1 truncate ${t===null?"text-foreground font-medium":"text-muted-foreground"}`,children:l("All Projects")}),t===null?i.jsx(vt,{size:14,className:"text-foreground shrink-0"}):null]}),i.jsx("div",{className:"h-px bg-border/60 my-1 mx-2"}),i.jsx("div",{className:"max-h-[40vh] overflow-y-auto scrollbar-app-thin",children:s.map(c=>{const d=t===c.id;return i.jsxs("button",{onClick:()=>{n(c.id),f(!1)},className:"w-full text-left px-3 py-1.5 text-[13px] flex items-center gap-2 hover:bg-accent/50 transition-colors",children:[i.jsx("span",{className:`w-2 h-2 rounded-full shrink-0 ${c.color.replace("text-","bg-")}`}),i.jsx("span",{className:`flex-1 truncate ${d?"text-foreground font-medium":"text-muted-foreground"}`,children:c.name}),d?i.jsx(vt,{size:14,className:"text-foreground shrink-0"}):null]},c.id)})}),i.jsx("div",{className:"h-px bg-border/60 my-1 mx-2"}),i.jsxs("button",{onClick:()=>{f(!1),r()},className:"w-full text-left px-3 py-1.5 text-[13px] flex items-center gap-2 text-muted-foreground hover:text-foreground hover:bg-accent/50 transition-colors",children:[i.jsx(vs,{size:13}),i.jsx("span",{children:l("Create New Project...")})]})]})]}):null]})}const fa=260,ha=600,ir=400,ma=100,ga=1e3;function pa(e){const t=e.workspaces?.find(r=>r.status==="ACTIVE")??e.workspaces?.[0],n=t?.sessions?.at(-1);return{id:e.id,projectId:e.projectId,title:e.titlePreview??e.title,status:e.status,priority:e.priority,...t?{preferredWorkspace:{...t.workspaceKind===Je.MAIN_DIRECTORY?{workspaceKind:Je.MAIN_DIRECTORY}:{},branchName:t.branchName}}:{},...n?{latestAgentType:n.agentType}:{},...e.workspaces?.some(r=>r.sessions?.some(o=>o.status==="RUNNING"||o.status==="PENDING"))?{hasRunningSession:!0}:{},updatedAt:e.updatedAt?new Date(e.updatedAt).getTime():Date.now()}}function va(){const{t:e,locale:t}=Ie(),[n,r]=u.useState(null),[o,l]=u.useState(null),[h,f]=u.useState(ir),[s,a]=u.useState(!1),[c,d]=u.useState("idle"),[m,p]=u.useState({}),g=u.useRef(!1),v=u.useRef(0),x=u.useRef(ir),S=u.useRef(null),b=$t(),{data:w,isLoading:N}=Rs(),[R,M]=u.useState(la),{data:T,isLoading:C}=hs({limit:ma}),A=u.useMemo(()=>T?.data??[],[T?.data]),E=o&&A.some(y=>y.id===o)?o:null,{data:I,isLoading:Q}=os({...E?{projectId:E}:{},limit:ga}),H=u.useMemo(()=>I?.data??[],[I?.data]),[k,L]=u.useState([]),Y=u.useMemo(()=>{if(k.length===0)return H;const y=new Set(H.map(O=>O.id));return[...k.filter(O=>!y.has(O.id)),...H]},[H,k]),[_,P]=u.useState(null),z=u.useMemo(()=>n&&Y.some(y=>y.id===n)?n:_&&n===_?_:null,[n,Y,_]);u.useEffect(()=>{_&&Y.some(y=>y.id===_)&&P(null)},[_,Y]),u.useEffect(()=>{if(k.length===0)return;const y=new Set(H.map(O=>O.id));k.some(O=>y.has(O.id))&&L(O=>O.filter(D=>!y.has(D.id)))},[H,k]);const J=u.useMemo(()=>aa(A),[A]),se=u.useMemo(()=>J.map(Ui),[J]),q=u.useMemo(()=>J.filter(y=>!y.archivedAt),[J]),de=u.useMemo(()=>w?w.filter(ks).sort((y,O)=>{const D=!lt(y),U=!lt(O);return D!==U?D?-1:1:(R[O.provider.id]??0)-(R[y.provider.id]??0)}):[],[w,R]),j=u.useMemo(()=>Y.map(y=>$i(y,A.find(O=>O.id===y.projectId))),[A,Y]),K=u.useMemo(()=>{if(!z)return null;const y=Y.find(D=>D.id===z);if(!y)return null;const O=A.find(D=>D.id===y.projectId);if(!O){const D=y.preferredWorkspace?y.preferredWorkspace.workspaceKind===Je.MAIN_DIRECTORY?"Project directory":y.preferredWorkspace.branchName:"—";return{id:y.id,projectId:y.projectId,projectName:"Unknown",projectColor:"text-muted-foreground",title:y.title,status:Nn(y.status),priority:y.priority,branch:D,mainBranch:"main",description:"",isGitRepo:!1,worktreeReady:!1,reason:"NO_GIT",projectArchivedAt:null,projectRepoDeletedAt:null}}return Ki(y,O)},[z,Y,A]),F=is(),Z=as(),G=ls(),W=cs(),oe=gs(),pe=u.useCallback(y=>{const O=pa(y);L(D=>D.some(U=>U.id===y.id)?D.map(U=>U.id===y.id?O:U):[O,...D]),b.setQueryData(ce.tasks.detail(y.id),y),P(y.id),r(y.id)},[b]),we=u.useCallback((y,O,D)=>{const U=y.id,ee=[y.title,y.description].filter(Boolean).join(`
|
|
9
9
|
|
|
10
|
-
`),
|
|
10
|
+
`),fe=D===Je.WORKTREE?q.find(X=>X.id===y.projectId)?.setupScript??null:null;p(X=>({...X,[U]:{status:"creating-workspace",setupScript:fe}})),(async()=>{try{await Ds(U,{providerId:O,prompt:ee,workspaceKind:D},{createWorkspace:X=>We.post(`/tasks/${U}/workspaces`,{clientSubmissionId:X,workspaceKind:D}),startSession:X=>oe.mutateAsync(X),onStep:X=>p(ne=>({...ne,[U]:{status:X,setupScript:fe}}))}),await b.invalidateQueries({queryKey:ce.workspaces.list(U)}),await b.invalidateQueries({queryKey:ce.workspaces.setupProgress(U)}),await b.invalidateQueries({queryKey:ce.tasks.all}),p(X=>{const ne={...X};return delete ne[U],ne})}catch(X){const ne=X instanceof Error?X.message:e("启动 Agent 失败");p(he=>({...he,[U]:{status:"failed",error:ne,setupScript:fe}})),Fe.error(e("任务已创建,但启动 Agent 失败,可在详情中重试")),b.invalidateQueries({queryKey:ce.workspaces.list(U)}),b.invalidateQueries({queryKey:ce.tasks.all})}})()},[q,b,oe,e]),Pe=u.useCallback(y=>{p(O=>{const D={...O};return delete D[y],D}),b.invalidateQueries({queryKey:ce.workspaces.list(y)}),b.invalidateQueries({queryKey:ce.tasks.all})},[b]),Ce=u.useCallback(y=>{Z.mutate(y,{onSuccess:()=>{z===y&&r(null),p(O=>{const D={...O};return delete D[y],D}),L(O=>O.filter(D=>D.id!==y)),b.invalidateQueries({queryKey:ce.tasks.all})},onError:()=>{Fe.error(e("删除任务失败"))}})},[Z,z,b,e]),_e=u.useCallback((y,O)=>{G.mutate({id:y,status:Bi(O)},{onError:()=>{Fe.error(e("状态变更失败,该操作不被允许"))}})},[G,e]),Se=u.useCallback((y,O)=>{W.mutate({id:y,priority:O},{onError:()=>{Fe.error(e("优先级变更失败"))}})},[W,e]),Nt=u.useCallback(y=>{y.preventDefault(),g.current=!0,v.current=y.clientX,x.current=h,document.body.style.cursor="col-resize",document.body.style.userSelect="none"},[h]);u.useEffect(()=>{const y=D=>{if(!g.current)return;const U=D.clientX-v.current,ee=Math.max(fa,Math.min(ha,x.current+U));f(ee)},O=()=>{g.current&&(g.current=!1,document.body.style.cursor="",document.body.style.userSelect="")};return document.addEventListener("mousemove",y),document.addEventListener("mouseup",O),()=>{document.removeEventListener("mousemove",y),document.removeEventListener("mouseup",O)}},[]);const Qe=u.useCallback(()=>{a(!0)},[]),tt=u.useCallback(()=>{if(q.length===0){Fe.error(e("没有可用项目,请先创建或恢复项目"));return}r(null)},[q,e]),ve=u.useCallback(()=>{a(!1)},[]),Ue=u.useCallback(async y=>{const{title:O,description:D,projectId:U,providerId:ee,mode:fe,workspaceMode:X,teamRunMode:ne,teamTemplateId:he,memberPresetIds:ze,attachmentLinks:ae,priority:Ae,baseBranch:xe}=y,Ee=[D,ae].filter(Boolean).join(`
|
|
11
11
|
|
|
12
|
-
`);let
|
|
12
|
+
`);let ge=null;try{if(d("creating-task"),ge=await We.post(`/projects/${U}/tasks`,{title:O,description:Ee||void 0,priority:Ae,baseBranch:xe}),localStorage.setItem("lastSelectedProjectId",U),fe==="SOLO"&&ee){localStorage.setItem("lastSelectedProviderId",ee);const Ne={...R,[ee]:Date.now()};ca(Ne),M(Ne)}fe==="TEAM"?(d("creating-teamrun"),await F.mutateAsync({taskId:ge.id,mode:ne,...he?{teamTemplateId:he}:{},...ze.length>0?{memberPresetIds:ze}:{}})):ee&&we(ge,ee,X),E&&U!==E&&l(null),pe(ge),d("idle"),b.invalidateQueries({queryKey:ce.tasks.all}),b.invalidateQueries({queryKey:ce.projects.all})}catch(be){if(d("idle"),ge&&fe==="TEAM")pe(ge),b.invalidateQueries({queryKey:ce.tasks.all}),Fe.error(be instanceof Error?be.message:e("TeamRun 创建失败,请检查团队配置后重试"));else if(ge)E&&U!==E&&l(null),pe(ge),b.invalidateQueries({queryKey:ce.tasks.all}),b.invalidateQueries({queryKey:ce.projects.all});else throw Fe.error(be instanceof Error?be.message:e("Failed to create task")),be}},[F,we,b,e,E,pe,R]),Ye=C||Q,nt=u.useMemo(()=>q.map(y=>({id:y.id,name:y.name,color:se.find(O=>O.id===y.id)?.color,repoPath:y.repoPath,mainBranch:y.mainBranch,isGitRepo:y.isGitRepo,worktreeReady:y.worktreeReady,reason:y.reason})),[q,se]),rt=u.useMemo(()=>de.map(y=>{const O=lt(y);return{id:y.provider.id,name:y.provider.name,agentType:y.provider.agentType,available:!O,permissionMode:y.provider.executionPermission,reason:O}}),[de]),Oe=u.useMemo(()=>{if(E&&q.find(O=>O.id===E))return E;const y=localStorage.getItem("lastSelectedProjectId");return y&&q.find(O=>O.id===y)?y:q[0]?.id??""},[q,E]),[Rt,je]=u.useState(Oe);u.useEffect(()=>{je(Oe)},[Oe]);const Le=u.useMemo(()=>q.find(y=>y.id===Rt)?.name??q.find(y=>y.id===Oe)?.name??e("Project"),[q,Rt,Oe,e]),$e=t==="zh-CN"?`你需要在 ${Le} 中做点什么?`:`What do you need to do in ${Le}?`,st=u.useMemo(()=>{const y=localStorage.getItem("lastSelectedProviderId");return y&&de.find(D=>D.provider.id===y&&!lt(D))?y:de.find(D=>!lt(D))?.provider.id??""},[de]),Te=Ar(),[kt,ot]=u.useState(!1),{usesIntegratedTitlebar:Ke,desktopPlatform:it,hasMacTrafficLights:jt}=ar(),Ht=Ke&&it==="win32",Tt=u.useCallback(()=>{if(q.length===0){Fe.error(e("没有可用项目,请先创建或恢复项目"));return}ot(!0)},[q,e]),qt=u.useCallback(async y=>{await Ue(y),ot(!1)},[Ue]);return Te?kt?i.jsxs("div",{className:"flex flex-col h-dvh bg-background overflow-hidden text-sm",children:[i.jsx("header",{className:"h-12 border-b border-border/60 flex items-center px-4 shrink-0",children:i.jsx("button",{onClick:()=>ot(!1),className:"text-sm text-muted-foreground active:text-foreground",children:e("Cancel")})}),i.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center px-4 pb-[8vh]",children:[i.jsx("h1",{className:"max-w-full text-center text-[22px] font-medium tracking-tight leading-snug text-foreground mb-5 break-words",children:$e}),i.jsx(An,{projects:nt,providers:rt,isProvidersLoading:N,onSubmit:qt,defaultProjectId:Oe,defaultProviderId:st,onProjectChange:je,createStep:c})]})]}):z&&K?i.jsxs(i.Fragment,{children:[i.jsx(u.Suspense,{fallback:i.jsx("div",{className:"flex h-dvh",children:i.jsx(sr,{})}),children:i.jsx(da,{task:K,onBack:()=>r(null),onDeleteTask:K.projectArchivedAt?void 0:Ce,onTaskPriorityChange:K.projectArchivedAt?void 0:Se,isDeleting:Z.isPending,autoStartState:m[K.id]??null,onAutoStartRecovered:Pe})}),i.jsx(on,{isOpen:s,onClose:ve})]}):i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"flex flex-col h-dvh bg-sidebar overflow-hidden text-sm",children:[i.jsxs("header",{className:"h-12 bg-sidebar flex items-center px-4 justify-between shrink-0 z-20",children:[i.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[i.jsx(Dn,{}),i.jsx(or,{projects:se,filterProjectId:E,setFilterProjectId:l,onCreateProject:Qe})]}),i.jsxs("div",{className:"flex items-center gap-1",children:[i.jsx(nr,{}),i.jsx("button",{onClick:()=>jn.getState().openSettings(),className:"p-1.5 text-muted-foreground active:text-foreground rounded-md",children:i.jsx(kn,{size:16})})]})]}),i.jsx(Zn,{tasks:j,projects:se,selectedTaskId:null,onSelectTask:r,filterProjectId:E,setFilterProjectId:l,width:"100%",onCreateTask:Tt,onCreateProject:Qe,onTaskStatusChange:_e,onTaskPriorityChange:Se,isLoading:Ye&&j.length===0})]}),i.jsx(on,{isOpen:s,onClose:ve})]}):i.jsxs("div",{ref:S,className:"flex flex-col h-screen bg-sidebar overflow-hidden text-sm",children:[i.jsxs("header",{className:ie("h-12 bg-sidebar flex items-center px-4 justify-between flex-shrink-0 z-20 relative",Ke&&"app-region-drag",Ht&&"pr-[150px]"),children:[i.jsxs("div",{className:ie("flex items-center gap-2 min-w-0",jt&&"pl-[72px]"),children:[i.jsx(Dn,{}),i.jsx(or,{projects:se,filterProjectId:E,setFilterProjectId:l,onCreateProject:Qe,className:Ke?"app-region-no-drag":void 0})]}),i.jsxs("div",{className:ie("flex items-center gap-1",Ke&&"app-region-no-drag"),children:[i.jsx("div",{className:Ke?"app-region-no-drag":void 0,children:i.jsx(nr,{})}),i.jsx("button",{onClick:()=>jn.getState().openSettings(),className:ie("p-1.5 text-muted-foreground hover:text-foreground hover:bg-accent rounded-md transition-colors",Ke&&"app-region-no-drag"),children:i.jsx(kn,{size:16})})]})]}),i.jsxs("div",{className:"flex-1 flex overflow-hidden",children:[i.jsx(Zn,{tasks:j,projects:se,selectedTaskId:z,onSelectTask:r,filterProjectId:E,setFilterProjectId:l,width:h,onCreateTask:tt,onCreateProject:Qe,isCreateActive:!z,onTaskStatusChange:_e,onDeleteTask:Ce,onTaskPriorityChange:Se,isLoading:Ye&&j.length===0}),i.jsx("div",{onMouseDown:Nt,className:"w-1 cursor-col-resize hover:bg-border active:bg-ring/40 transition-colors z-50 -ml-[2px] flex-shrink-0 h-full",title:e("Drag to resize")}),i.jsx("div",{className:"flex-1 flex min-w-0 mb-2 mr-2 rounded-xl border border-border/50 bg-background overflow-hidden",children:z&&K?i.jsx(u.Suspense,{fallback:i.jsx(sr,{}),children:i.jsx(ua,{task:K,onDeleteTask:K.projectArchivedAt?void 0:Ce,isDeleting:Z.isPending,onTaskStatusChange:K.projectArchivedAt?void 0:_e,onTaskPriorityChange:K.projectArchivedAt?void 0:Se,autoStartState:m[K.id]??null,onAutoStartRecovered:Pe})}):z&&!K?i.jsx("div",{className:"flex-1 flex items-center justify-center bg-background min-w-0",children:i.jsx("span",{className:"text-sm text-muted-foreground",children:e("Loading...")})}):i.jsx("div",{className:"flex-1 flex flex-col items-center justify-center bg-background min-w-0 px-8 pb-[10vh]",children:i.jsxs("div",{className:"w-full max-w-2xl flex flex-col items-center animate-[fadeInUp_0.5s_cubic-bezier(0.16,1,0.3,1)]",children:[i.jsx("h1",{className:"max-w-full text-center text-[26px] font-medium tracking-tight leading-snug text-foreground mb-6 break-words",children:$e}),i.jsx(An,{projects:nt,providers:rt,isProvidersLoading:N,onSubmit:Ue,defaultProjectId:Oe,defaultProviderId:st,onProjectChange:je,createStep:c})]})})})]}),i.jsx(on,{isOpen:s,onClose:ve})]})}const _a=Object.freeze(Object.defineProperty({__proto__:null,ProjectKanbanPage:va},Symbol.toStringTag,{value:"Module"}));export{gi as D,_a as P,Ds as t};
|