@runfusion/fusion 0.58.0 → 0.60.0
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/README.md +2 -3
- package/dist/bin.js +16034 -13546
- package/dist/client/.vite/manifest.json +251 -248
- package/dist/client/assets/AgentDetailView-BBjuuYbU.js +18 -0
- package/dist/client/assets/{AgentPermissionPolicyEditor-3x5cc2cp.js → AgentPermissionPolicyEditor-DOdy1ln0.js} +1 -1
- package/dist/client/assets/{AgentsView-B77vHi_7.js → AgentsView-DlyT08sc.js} +4 -4
- package/dist/client/assets/ChatView-CJBnc6rJ.js +6 -0
- package/dist/client/assets/CommandCenter-BhRLZmOH.js +99 -0
- package/dist/client/assets/CommandCenter-DSrIaOro.css +1 -0
- package/dist/client/assets/{DevServerView-BXmkO05R.js → DevServerView-DRpi8Xqz.js} +1 -1
- package/dist/client/assets/{DirectoryPicker-CZ3EXSE5.js → DirectoryPicker-Bw_A-64N.js} +1 -1
- package/dist/client/assets/{DocumentsView-BSWFgTsC.css → DocumentsView-BSC7wh2B.css} +1 -1
- package/dist/client/assets/{DocumentsView-GlAyW64J.js → DocumentsView-w0eDbpbG.js} +2 -2
- package/dist/client/assets/{EvalsView-BLmcsNNf.js → EvalsView-DxQALLwD.js} +1 -1
- package/dist/client/assets/ExperimentalAgentOnboardingModal-BuEWZrjl.js +1 -0
- package/dist/client/assets/{GoalsView-BRfZ4qGe.js → GoalsView-C3MGEtSt.js} +1 -1
- package/dist/client/assets/InsightsView-C0-BkE8_.js +11 -0
- package/dist/client/assets/{MemoryView-ChkuBpUf.js → MemoryView-Dd8uiLHH.js} +2 -2
- package/dist/client/assets/{PiExtensionsManager-DXwQdB7b.js → PiExtensionsManager-DlsEVOjG.js} +1 -1
- package/dist/client/assets/{PluginManager-B8zAjhqf.js → PluginManager-Cf9AOCcC.js} +1 -1
- package/dist/client/assets/{PullRequestView-DL1E1ixh.js → PullRequestView-hm77QtHV.js} +2 -2
- package/dist/client/assets/{ResearchView-BCYCHiyQ.js → ResearchView-BMQEnYH6.js} +1 -1
- package/dist/client/assets/SecretsView-Dc3sWf40.js +1 -0
- package/dist/client/assets/{SessionTerminal-BvK8A98c.css → SessionTerminal-CDTiqrd7.css} +1 -1
- package/dist/client/assets/SessionTerminal-CEv1G-9-.js +2 -0
- package/dist/client/assets/SettingsModal-DFrTDsBm.js +21 -0
- package/dist/client/assets/{SettingsModal-U7ma-5OU.js → SettingsModal-TuphE_CP.js} +1 -1
- package/dist/client/assets/{SetupWizardModal-BCDoA33s.js → SetupWizardModal-CNGogJJp.js} +2 -2
- package/dist/client/assets/{ShadcnColorPicker-EVU2cXpo.js → ShadcnColorPicker-1Z7JIWTE.js} +2 -2
- package/dist/client/assets/{SkillsView-V48VsthB.js → SkillsView-CjPvmnz6.js} +1 -1
- package/dist/client/assets/TodoView-CUD4xw3T.css +1 -0
- package/dist/client/assets/TodoView-DmJPSWOu.js +6 -0
- package/dist/client/assets/WorkflowNodeEditor-BqO2yRXe.js +8 -0
- package/dist/client/assets/{agentSkills-B-QDeW2q.js → agentSkills-BNahUMFe.js} +1 -1
- package/dist/client/assets/app-BzgEwAOr.js +13 -0
- package/dist/client/assets/{app-RIK4I745.js → app-C7eDKtXM.js} +3 -3
- package/dist/client/assets/{app-SHNioZxk.js → app-CL1Ik1qS.js} +3 -3
- package/dist/client/assets/{app-De_pkbYi.js → app-Ckb9wA3K.js} +3 -3
- package/dist/client/assets/{app-cZgmPvs6.js → app-Den3D7oy.js} +3 -3
- package/dist/client/assets/{app--U62_ZWS.js → app-nAsTBQMW.js} +3 -3
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-DvR35aCH.js → architectureDiagram-3BPJPVTR-Bb_ZGdtz.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-ciQdpSqc.js → blockDiagram-GPEHLZMM-CWfWJnIM.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-CV0Z6UEL.js → c4Diagram-AAUBKEIU-Dufe_2hy.js} +1 -1
- package/dist/client/assets/channel-BYHFEnHT.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-CkAQRX3g.js → chunk-2J33WTMH-BdKWX3Y7.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-CJXvYVcN.js → chunk-4BX2VUAB-CQ9_zgu6.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-DOv0lN1u.js → chunk-55IACEB6-DEFTCISD.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-tRsHXz7i.js → chunk-727SXJPM-8RnJp1fx.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-CfzOMXn9.js → chunk-AQP2D5EJ-DJg6awe1.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-BKvUZ2cn.js → chunk-FMBD7UC4-Bw-OImRT.js} +1 -1
- package/dist/client/assets/{chunk-ND2GUHAM-FqiVnW7u.js → chunk-ND2GUHAM-BSx9p0RO.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-BAJDyCpZ.js → chunk-QZHKN3VN-Dbdv72P6.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-BLstvJ1W.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-BLstvJ1W.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-DYizdcNp.js → cose-bilkent-S5V4N54A-CXtcC6U2.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-BDWwvXJx.js → dagre-BM42HDAG-BO0r4g14.js} +1 -1
- package/dist/client/assets/{dashboard-view-DmfIFCV-.js → dashboard-view-BTnVGch5.js} +1 -1
- package/dist/client/assets/{dashboard-view-BYn_jRw9.js → dashboard-view-CoDeYJbQ.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-C8ic2E9q.js → diagram-2AECGRRQ-CLmeU2g6.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-H5IDcv9E.js → diagram-5GNKFQAL-CKyM23Jy.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-DkczJXd6.js → diagram-KO2AKTUF-ByeVRDs_.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-P1vh7RIU.js → diagram-LMA3HP47-r8qKTJDn.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-CgeybA5t.js → diagram-OG6HWLK6-D2ugPdm7.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-DSJa4zRQ.js → erDiagram-TEJ5UH35-dLzbDn0G.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-DG91ZWS9.js → flowDiagram-I6XJVG4X-et7EENd6.js} +1 -1
- package/dist/client/assets/{folder-open-iGyAYoN-.js → folder-open-BVtcjVIK.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-dkOQjOK8.js → ganttDiagram-6RSMTGT7-DmiabChP.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-GqrJtmDT.js → gitGraphDiagram-PVQCEYII-I1vbhqer.js} +1 -1
- package/dist/client/assets/index-C2HFa2A-.css +1 -0
- package/dist/client/assets/index-inWk2g6R.js +2540 -0
- package/dist/client/assets/{infoDiagram-5YYISTIA-BfFhhqbU.js → infoDiagram-5YYISTIA-xd6L9Gq3.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-DBBV-PIS.js → ishikawaDiagram-YF4QCWOH-fUeEYBvD.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-xZisXOgZ.js → journeyDiagram-JHISSGLW-B7xjU8Oh.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-CbOJloOw.js → kanban-definition-UN3LZRKU-CJ8oRjFI.js} +1 -1
- package/dist/client/assets/{mermaid.core-DKBiVV3q.js → mermaid.core-2udKsaH3.js} +4 -4
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-Bf9V63ac.js → mindmap-definition-RKZ34NQL-CVywzN7Q.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-0ukMaTVl.js → pieDiagram-4H26LBE5-8vzzC4Mg.js} +1 -1
- package/dist/client/assets/{puzzle-BvEf9PLH.js → puzzle-D60d3Nv1.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-CwXZAtYI.js → quadrantDiagram-W4KKPZXB-Cxyb4Mom.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-DVsu9t-w.js → requirementDiagram-4Y6WPE33-Bs5RaG7r.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-DOJUnv7J.js → sankeyDiagram-5OEKKPKP-Jf7Zq43D.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-B67g0g9m.js → sequenceDiagram-3UESZ5HK-CG0I780H.js} +1 -1
- package/dist/client/assets/{shield-alert-4FPCIFZ2.js → shield-alert-B7JyuWPR.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-CPPa0bHh.js → stateDiagram-AJRCARHV-C1c5XtKG.js} +1 -1
- package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-Dyj14elw.js → stateDiagram-v2-BHNVJYJU-Cv7_pOt_.js} +1 -1
- package/dist/client/assets/{timeline-definition-PNZ67QCA-UVWf2E8M.js → timeline-definition-PNZ67QCA-BWg-lsI0.js} +1 -1
- package/dist/client/assets/{upload-BkgVjwwc.js → upload-Dxv5FPaS.js} +1 -1
- package/dist/client/assets/{users-9nCT4liw.js → users-DvKg3opr.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-CqGrv1wQ.js → vennDiagram-CIIHVFJN-gFjFmLlv.js} +1 -1
- package/dist/client/assets/{wardley-L42UT6IY-aA0pos_F.js → wardley-L42UT6IY-BaCNX8ou.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-C-O5tD1L.js → wardleyDiagram-YWT4CUSO-BRR6aw0q.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-qoIF674C.js → xychartDiagram-2RQKCTM6-D6Gwn1XW.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/client/version.json +1 -1
- package/dist/droid-cli/package.json +1 -1
- package/dist/extension.js +14159 -12709
- package/dist/pi-claude-cli/package.json +1 -1
- package/dist/plugin-sdk/index.d.ts +27 -1
- package/dist/plugins/fusion-plugin-acp-runtime/bundled.js +4 -7
- package/dist/plugins/fusion-plugin-acp-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-cli-printing-press/package.json +1 -1
- package/dist/plugins/fusion-plugin-compound-engineering/bundled.js +0 -5
- package/dist/plugins/fusion-plugin-compound-engineering/package.json +1 -1
- package/dist/plugins/fusion-plugin-cursor-runtime/bundled.js +0 -5
- package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-dependency-graph/bundled.js +0 -5
- package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
- package/dist/plugins/fusion-plugin-droid-runtime/bundled.js +0 -5
- package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-grok-runtime/bundled.js +4 -7
- package/dist/plugins/fusion-plugin-grok-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-hermes-runtime/bundled.js +0 -5
- package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-linear-import/bundled.js +0 -5
- package/dist/plugins/fusion-plugin-linear-import/package.json +1 -1
- package/dist/plugins/fusion-plugin-openclaw-runtime/bundled.js +0 -5
- package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-paperclip-runtime/bundled.js +0 -5
- package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-reports/package.json +1 -1
- package/dist/plugins/fusion-plugin-reports/src/dashboard/components/ShareBlocksPanel.tsx +4 -1
- package/dist/plugins/fusion-plugin-reports/src/dashboard/components/__tests__/ShareBlocksPanel.test.tsx +41 -2
- package/dist/plugins/fusion-plugin-roadmap/bundled.js +0 -5
- package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
- package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
- package/package.json +1 -1
- package/skill/fusion/SKILL.md +1 -1
- package/skill/fusion/references/engine-tools.md +1 -0
- package/skill/fusion/references/extension-tools.md +10 -0
- package/skill/fusion/references/fusion-capabilities.md +1 -0
- package/dist/client/assets/AgentDetailView-whCXABbu.js +0 -18
- package/dist/client/assets/ChatView-CninsTIm.js +0 -6
- package/dist/client/assets/CommandCenter-B9q-zM9p.css +0 -1
- package/dist/client/assets/CommandCenter-C6LmdUin.js +0 -71
- package/dist/client/assets/ExperimentalAgentOnboardingModal-DvDix9pH.js +0 -1
- package/dist/client/assets/InsightsView-X4RlcgrU.js +0 -11
- package/dist/client/assets/SecretsView-B48BIZKw.js +0 -1
- package/dist/client/assets/SessionTerminal-CUyYlq16.js +0 -2
- package/dist/client/assets/SettingsModal-DbjBoUYD.js +0 -21
- package/dist/client/assets/TodoView-DmpJmxu7.css +0 -1
- package/dist/client/assets/TodoView-MZ9Pfl65.js +0 -6
- package/dist/client/assets/WorkflowNodeEditor-B95Dvf-O.js +0 -8
- package/dist/client/assets/app-SucmTDhV.js +0 -13
- package/dist/client/assets/channel-Y_Uhrtqx.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-DhicwSPE.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-DhicwSPE.js +0 -1
- package/dist/client/assets/index-Bg8SMXUs.css +0 -1
- package/dist/client/assets/index-DO9Ch72Y.js +0 -2544
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.todo-view{display:flex;flex:1 1 auto;flex-direction:column;gap:var(--space-lg);height:100%;min-height:0;min-width:0;width:100%;overflow:hidden;padding:0 var(--space-lg) var(--space-lg);container-type:inline-size;container-name:todo-view}.todo-mobile-back-btn{display:none}.todo-view-subtitle{margin:0;color:var(--text-muted)}.todo-view-layout{display:flex;flex-direction:row;flex:1 1 auto;min-height:0;min-width:0;overflow:hidden;gap:var(--space-lg)}.todo-view-sidebar{width:calc(var(--space-2xl) * 7 + var(--space-sm));border-right:calc(var(--space-xs) / 4) solid var(--border);padding-right:var(--space-lg);overflow-y:auto;flex-shrink:0;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--text-muted) 45%,transparent) transparent}.todo-view-main{flex:1;overflow-y:auto;display:flex;flex-direction:column;min-width:0;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--text-muted) 45%,transparent) transparent}.todo-view-sidebar::-webkit-scrollbar,.todo-view-main::-webkit-scrollbar{width:var(--space-sm);height:var(--space-sm)}.todo-view-sidebar::-webkit-scrollbar-thumb,.todo-view-main::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--text-muted) 45%,transparent);border-radius:var(--radius-pill)}.todo-view-sidebar::-webkit-scrollbar-track,.todo-view-main::-webkit-scrollbar-track{background:transparent}.todo-sidebar-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;margin-bottom:var(--space-md)}.todo-sidebar-title{font-size:calc(var(--space-md) + (var(--space-xs) / 4));color:var(--text-muted);text-transform:uppercase;letter-spacing:calc(var(--space-xs) / 8);margin:0}.todo-add-list-btn{min-height:calc(var(--space-2xl) + var(--space-xs));min-width:calc(var(--space-2xl) + var(--space-xs))}.todo-list-items{display:flex;flex-direction:column;gap:var(--space-xs)}.todo-list-item{display:flex;flex-direction:row;align-items:center;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);gap:var(--space-sm);color:var(--text-muted);transition:background var(--transition-fast),color var(--transition-fast)}.todo-list-item:hover{background:var(--card-hover);color:var(--text)}.todo-list-select-btn{flex:1;min-width:0;border:0;background:none;color:inherit;text-align:left;cursor:pointer;padding:0}.todo-list-select-btn:focus-visible{outline:none;border-radius:var(--radius-sm);box-shadow:var(--focus-ring)}.todo-list-item--active{background:var(--surface);color:var(--text);font-weight:500}.todo-list-item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:calc(var(--space-md) + (var(--space-xs) / 4))}.todo-list-item-actions{display:flex;flex-direction:row;gap:var(--space-xs);opacity:0;transition:opacity var(--transition-fast)}.todo-list-item:hover .todo-list-item-actions,.todo-list-item:focus-within .todo-list-item-actions,.todo-list-item--active .todo-list-item-actions{opacity:1}.todo-icon-btn{min-height:calc(var(--space-lg) + var(--space-sm));min-width:calc(var(--space-lg) + var(--space-sm))}.todo-inline-edit-input{flex:1;font-size:calc(var(--space-md) + (var(--space-xs) / 4))}.todo-items-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;margin-bottom:var(--space-md);gap:var(--space-sm)}.todo-items-header h3{margin:0;font-size:calc(var(--space-md) + (var(--space-xs) / 2));font-weight:500;color:var(--text)}.todo-add-item-row{display:flex;flex-direction:row;gap:var(--space-sm);margin-bottom:var(--space-lg)}.todo-add-item-row .input{flex:1}.todo-items-list{display:flex;flex-direction:column}.todo-item{position:relative;display:flex;flex-direction:column;align-items:stretch;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);gap:var(--space-sm);border-bottom:calc(var(--space-xs) / 4) solid var(--border);transition:background var(--transition-fast)}.todo-item:hover{background:var(--card-hover)}.todo-item-main-row{display:flex;align-items:flex-start;gap:var(--space-sm);min-width:0}.todo-item-checkbox{margin:0;width:var(--space-lg);height:var(--space-lg);accent-color:var(--todo);cursor:pointer;flex-shrink:0}.todo-item-text{flex:1;font-size:calc(var(--space-md) + (var(--space-xs) / 4));color:var(--text);cursor:pointer;word-break:break-word;background:none;border:0;padding:0;text-align:left}.todo-item-text:focus-visible{outline:none;border-radius:var(--radius-sm);box-shadow:var(--focus-ring-strong)}.todo-item-text--completed{text-decoration:line-through;color:var(--text-muted)}.todo-item-actions{display:flex;flex-wrap:wrap;flex-direction:row;align-items:center;gap:var(--space-xs);opacity:1;transition:opacity var(--transition-fast);margin-left:calc(var(--space-lg) + var(--space-sm))}.todo-item-reorder-btns{display:flex;flex-direction:row;gap:0}.todo-item-reorder-btn{min-height:var(--space-xl);min-width:var(--space-xl)}.todo-agent-picker-trigger{position:relative}.todo-agent-picker-dropdown{position:absolute;right:0;top:100%;z-index:50;display:flex;flex-direction:column;gap:var(--space-xs);margin-top:var(--space-xs);min-width:calc(var(--space-2xl) * 6 + var(--space-md));max-height:calc(var(--space-2xl) * 7 + var(--space-md));overflow-y:auto;padding:var(--space-xs);border:calc(var(--space-xs) / 4) solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-lg)}.todo-agent-picker-item{width:100%;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text);padding:var(--space-sm);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-sm);text-align:left;cursor:pointer;transition:background var(--transition-fast)}.todo-agent-picker-item:hover{background:var(--card-hover)}.todo-agent-picker-item:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.todo-agent-picker-role{color:var(--text-muted);font-size:calc(var(--space-md) - (var(--space-xs) / 4));text-transform:uppercase;letter-spacing:calc(var(--space-xs) / 8)}.todo-agent-picker-loading,.todo-agent-picker-empty{color:var(--text-muted);padding:var(--space-sm);font-size:calc(var(--space-md) + (var(--space-xs) / 8))}.todo-error-banner{border:calc(var(--space-xs) / 4) solid color-mix(in srgb,var(--color-error) 35%,transparent);background:color-mix(in srgb,var(--color-error) 10%,transparent);color:var(--color-error);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-md);display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.todo-error-message{font-size:calc(var(--space-md) + (var(--space-xs) / 4))}.todo-empty-state,.todo-loading{color:var(--text-muted);padding:var(--space-2xl);text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);flex:1}.todo-loading-icon{animation:todo-loading-spinner-spin calc(var(--duration-slow) * 4) linear infinite}@keyframes todo-loading-spinner-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.todo-view{gap:var(--space-md);padding:var(--space-lg);background:var(--bg)}.todo-view-layout{gap:var(--space-md);padding:0}.todo-view-sidebar,.todo-view-main{min-height:0;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm)}.todo-view-sidebar{width:min(32%,320px);min-width:240px;padding:var(--space-md);border-right:1px solid var(--border)}.todo-view-main{padding:var(--space-md)}.todo-sidebar-header{margin-bottom:var(--space-sm);padding-bottom:var(--space-sm)}.todo-sidebar-title{color:var(--text);font-size:.75rem;font-weight:700;letter-spacing:.08em}.todo-add-list-btn,.todo-icon-btn,.todo-item-reorder-btn{border-color:transparent;background:transparent}.todo-list-items{gap:var(--space-sm)}.todo-list-item{min-height:42px;padding:var(--space-sm);border:1px solid transparent;border-radius:var(--radius-md);color:var(--text-muted)}.todo-list-item:hover{background:var(--card-hover);border-color:color-mix(in srgb,var(--border) 70%,transparent)}.todo-list-item--active{background:color-mix(in srgb,var(--todo) 10%,var(--surface));border-color:color-mix(in srgb,var(--todo) 32%,var(--border));color:var(--text);box-shadow:inset 3px 0 0 var(--todo)}.todo-list-select-btn{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--space-sm)}.todo-list-item-name{font-weight:600}.todo-list-item-count{padding:2px var(--space-xs);border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--bg);color:var(--text-muted);font-family:var(--font-mono);font-size:.6875rem;line-height:1.2}.todo-list-item--active .todo-list-item-count{border-color:color-mix(in srgb,var(--todo) 36%,var(--border));color:var(--todo)}.todo-items-header{align-items:flex-start;margin-bottom:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--border)}.todo-items-heading{display:flex;flex:1;min-width:0;flex-direction:column;gap:var(--space-xs)}.todo-items-heading h3{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1.05rem;font-weight:650}.todo-items-progress{color:var(--text-muted);font-size:.8125rem}.todo-add-item-row{margin-bottom:var(--space-md);padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg)}.todo-add-item-row .input{min-height:34px;border-color:transparent;background:transparent}.todo-add-item-row .input:focus{border-color:var(--border);background:var(--surface)}.todo-add-item-row .btn{display:inline-flex;align-items:center;gap:var(--space-xs);white-space:nowrap}.todo-items-list{gap:var(--space-sm)}.todo-item{flex-direction:row;align-items:center;padding:var(--space-xs) var(--space-sm) var(--space-xs) var(--space-md);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--card);min-height:44px;transition:background var(--transition-fast),border-color var(--transition-fast)}.todo-item:hover{background:var(--surface);border-color:color-mix(in srgb,var(--todo) 28%,var(--border))}.todo-item-main-row{flex:1 1 auto;align-items:center;min-width:0}.todo-item-checkbox{width:16px;height:16px;margin-top:0}.todo-item-text{line-height:1.45;font-weight:500}.todo-item-text--completed{color:var(--text-muted)}.todo-item-actions{align-items:center;flex-wrap:nowrap;flex-shrink:0;margin-left:auto;padding-top:0;border-top:none;color:var(--text-muted);opacity:.6;transition:opacity var(--transition-fast)}.todo-item:hover .todo-item-actions,.todo-item:focus-within .todo-item-actions{opacity:1}.todo-item-actions .todo-icon-btn svg,.todo-item-reorder-btn svg{width:15px;height:15px}.todo-item-reorder-btns{padding-right:var(--space-xs);border-right:1px solid var(--border)}.todo-empty-state,.todo-loading{border:1px dashed var(--border);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 70%,transparent)}@container todo-view (max-width: 520px){.todo-view-layout{flex-direction:column;min-height:0;overflow:hidden;gap:0}.todo-view-layout .todo-view-sidebar,.todo-view-layout .todo-view-main{width:100%;min-width:0;height:100%;max-height:none;flex:1 1 auto;border-right:none;padding-right:0;overflow-x:hidden;overflow-y:auto}.todo-view-sidebar{border-bottom:none}.todo-view-layout[data-mobile-stack-view=list] .todo-view-main,.todo-view-layout[data-mobile-stack-view=detail] .todo-view-sidebar{display:none}.todo-mobile-back-btn{display:inline-flex}.todo-list-item,.todo-list-select-btn,.todo-add-list-btn,.todo-icon-btn,.todo-item,.todo-item-reorder-btn,.todo-add-item-row .btn{min-height:calc(var(--space-2xl) + var(--space-xs))}.todo-list-item-actions,.todo-item-actions{opacity:1}.todo-item{flex-direction:column;align-items:stretch;gap:var(--space-sm);padding:var(--space-sm) var(--space-md)}.todo-item-actions{margin-left:0;flex-wrap:wrap;justify-content:flex-end}.todo-add-item-row{flex-wrap:wrap}.todo-add-item-row .btn{width:100%}.todo-agent-picker-trigger{position:static}.todo-agent-picker-dropdown{left:0;right:0;min-width:100%;max-height:calc(var(--space-2xl) * 8)}.todo-agent-picker-item{min-height:calc(var(--space-2xl) + var(--space-xs))}}@media(max-width:768px){.todo-view{padding:0 var(--space-md) var(--space-md);min-height:0}.todo-view-layout{flex-direction:column;min-height:0;overflow:hidden;padding:0}.todo-view-sidebar{width:100%;border-right:none;border-bottom:calc(var(--space-xs) / 4) solid var(--border);padding-right:0;padding-bottom:var(--space-md);max-height:calc(var(--space-2xl) * 6 + var(--space-sm))}.todo-view-main{width:100%;flex:1;min-height:0}.todo-list-item,.todo-list-select-btn,.todo-add-list-btn,.todo-icon-btn,.todo-item,.todo-item-reorder-btn,.todo-add-item-row .btn{min-height:calc(var(--space-2xl) + var(--space-xs))}.todo-add-item-row{flex-wrap:wrap}.todo-add-item-row .btn{width:100%}.todo-list-item-actions,.todo-item-actions{opacity:1}.todo-item-main-row{align-items:center}.todo-item{flex-direction:column;align-items:stretch;gap:var(--space-sm);padding:var(--space-sm) var(--space-md)}.todo-item-actions{margin-left:0;flex-wrap:wrap;justify-content:flex-end}.todo-item-checkbox{width:calc(var(--space-2xl) + var(--space-xs));height:calc(var(--space-2xl) + var(--space-xs))}.todo-agent-picker-trigger{position:static}.todo-agent-picker-dropdown{left:0;right:0;min-width:100%;max-height:calc(var(--space-2xl) * 8)}.todo-agent-picker-item{min-height:calc(var(--space-2xl) + var(--space-xs))}}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{r as l,j as e}from"./vendor-react-SZ_qB27O.js";import{c as Rt,aA as ft,aB as ht,aC as Ot,ba as _t,bb as Pt,bc as Ut,bd as Kt,be as Bt,bf as Vt,bg as Xt,bh as Wt,aF as zt,ag as Gt,bi as Ht,bj as Z,bk as xt,L as Yt,P as gt,p as tt,X as et,bl as vt,s as Lt,u as yt,bm as qt,af as Jt,C as Qt,bn as Zt,bo as jt,an as te}from"./index-DO9Ch72Y.js";import{u as kt}from"./vendor-i18n-GF3RlKbq.js";import"./vendor-reactflow-9C3XTE7_.js";import"./vendor-codemirror-jBKmHyH0.js";import"./vendor-xterm-BNq00GSj.js";/**
|
|
2
|
-
* @license lucide-react v1.7.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const ee=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"M12 8v8",key:"napkw2"}]],se=Rt("circle-plus",ee);function oe(C){const{items:r,...f}=C;return f}function It(C){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?`${C}-${crypto.randomUUID()}`:`${C}-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function ae(C={}){const{t:r}=kt("app"),{projectId:f,addToast:L}=C,o=`${Ot.TODO_LISTS_PREFIX}${f??"global"}`,[w,I]=l.useState(()=>{const s=ft(o,{maxAgeMs:ht});return Array.isArray(s)?s:[]}),[N,k]=l.useState([]),[T,O]=l.useState(()=>w.length===0),[H,y]=l.useState(null),[F,$]=l.useState(null),[j,g]=l.useState([]),S=l.useRef(F);S.current=F,l.useEffect(()=>{let s=!1;const c=ft(o,{maxAgeMs:ht}),u=Array.isArray(c)&&c.length>0;u?(I(c),O(!1)):(I([]),O(!0));async function b(){u||O(!0),y(null);try{const n=await Wt(f);if(s)return;g(n);const a=n.map(oe);I(a),zt(o,a,{maxBytes:5e5});const i=S.current&&n.some(d=>d.id===S.current)?S.current:n[0]?.id??null;$(i),k(i?n.find(d=>d.id===i)?.items??[]:[])}catch(n){if(s)return;g([]),I([]),k([]),$(null),y(n instanceof Error?n.message:r("todo.failedLoadLists","Failed to load todo lists"))}finally{s||O(!1)}}return b(),()=>{s=!0}},[o,f]),l.useEffect(()=>{if(!F){k([]);return}const s=j.find(c=>c.id===F);k(s?.items??[])},[j,F]);const Y=l.useCallback(async s=>{const c=w,u=j,b=new Date().toISOString(),n={id:It("temp-list"),projectId:f??"",title:s,createdAt:b,updatedAt:b};y(null),I(a=>[...a,n]),g(a=>[...a,{...n,items:[]}]);try{const a=await _t(s,f);I(i=>i.map(d=>d.id===n.id?a:d)),g(i=>i.map(d=>d.id===n.id?{...a,items:[]}:d)),S.current||$(a.id)}catch(a){I(c),g(u),y(a instanceof Error?a.message:r("todo.failedCreateList","Failed to create list")),L?.(r("todo.failedCreateListToast","Failed to create todo list"),"error")}},[L,j,w,f,r]),P=l.useCallback(async(s,c)=>{const u=w,b=j;y(null),I(n=>n.map(a=>a.id===s?{...a,title:c}:a)),g(n=>n.map(a=>a.id===s?{...a,title:c}:a));try{const n=await Pt(s,c,f);I(a=>a.map(i=>i.id===s?n:i)),g(a=>a.map(i=>i.id===s?{...n,items:i.items}:i))}catch(n){I(u),g(b),y(n instanceof Error?n.message:r("todo.failedRenameList","Failed to rename list")),L?.(r("todo.failedRenameListToast","Failed to rename todo list"),"error")}},[L,j,w,f,r]),D=l.useCallback(async s=>{const c=w,u=j,b=S.current,n=b===s?w.find(a=>a.id!==s)?.id??null:b;y(null),I(a=>a.filter(i=>i.id!==s)),g(a=>a.filter(i=>i.id!==s)),b===s&&$(n);try{await Ut(s,f)}catch(a){I(c),g(u),$(b),y(a instanceof Error?a.message:r("todo.failedDeleteList","Failed to delete list")),L?.(r("todo.failedDeleteListToast","Failed to delete todo list"),"error")}},[L,j,w,f,r]),X=l.useCallback(async s=>{const c=S.current;if(!c)return;const u=N,b=j,n=new Date().toISOString(),a=N.reduce((d,p)=>Math.max(d,p.sortOrder),-1),i={id:It("temp-item"),listId:c,text:s,completed:!1,completedAt:null,createdAt:n,updatedAt:n,sortOrder:a+1};y(null),k(d=>[...d,i]),g(d=>d.map(p=>p.id===c?{...p,items:[...p.items,i]}:p));try{const d=await Kt(c,s,f);k(p=>p.map(v=>v.id===i.id?d:v)),g(p=>p.map(v=>v.id===c?{...v,items:v.items.map(R=>R.id===i.id?d:R)}:v))}catch(d){k(u),g(b),y(d instanceof Error?d.message:r("todo.failedCreateItem","Failed to create item")),L?.(r("todo.failedCreateItemToast","Failed to create todo item"),"error")}},[L,N,j,f,r]),A=l.useCallback(async(s,c)=>{const u=N.find(d=>d.id===s);if(!u)return;const b=N,n=j,a=c.completed??u.completed,i={...u,...c,completed:a,completedAt:a?u.completedAt??new Date().toISOString():null,updatedAt:new Date().toISOString()};y(null),k(d=>d.map(p=>p.id===s?i:p)),g(d=>d.map(p=>p.id===i.listId?{...p,items:p.items.map(v=>v.id===s?i:v)}:p));try{const d=await Bt(s,c,f);k(p=>p.map(v=>v.id===s?d:v)),g(p=>p.map(v=>v.id===d.listId?{...v,items:v.items.map(R=>R.id===s?d:R)}:v))}catch(d){k(b),g(n),y(d instanceof Error?d.message:r("todo.failedUpdateItem","Failed to update item")),L?.(r("todo.failedUpdateItemToast","Failed to update todo item"),"error")}},[L,N,j,f,r]),U=l.useCallback(async s=>{const c=N.find(u=>u.id===s);c&&await A(s,{completed:!c.completed})},[N,A]),M=l.useCallback(async s=>{const c=N,u=j;y(null),k(b=>b.filter(n=>n.id!==s)),g(b=>b.map(n=>({...n,items:n.items.filter(a=>a.id!==s)})));try{await Vt(s,f)}catch(b){k(c),g(u),y(b instanceof Error?b.message:r("todo.failedDeleteItem","Failed to delete item")),L?.(r("todo.failedDeleteItemToast","Failed to delete todo item"),"error")}},[L,N,j,f,r]),W=l.useCallback(async s=>{const c=S.current;if(!c)return;const u=N,b=j,n=new Map(N.map(i=>[i.id,i])),a=s.map((i,d)=>{const p=n.get(i);return p?{...p,sortOrder:d}:null}).filter(i=>i!==null);y(null),k(a),g(i=>i.map(d=>d.id===c?{...d,items:a}:d));try{await Xt(c,s,f)}catch(i){k(u),g(b),y(i instanceof Error?i.message:r("todo.failedReorderItems","Failed to reorder items")),L?.(r("todo.failedReorderItemsToast","Failed to reorder todo items"),"error")}},[L,N,j,f,r]);return{lists:w,items:N,loading:T,error:H,selectedListId:F,setSelectedListId:$,createList:Y,renameList:P,deleteList:D,createItem:X,updateItem:A,toggleItem:U,deleteItem:M,reorderItems:W}}function ne(C){return[...C].sort((r,f)=>r.sortOrder-f.sortOrder)}function ue({projectId:C,addToast:r,onPlanningMode:f,onTaskCreated:L}){const{t:o}=kt("app"),{lists:w,items:I,loading:N,error:k,selectedListId:T,setSelectedListId:O,createList:H,renameList:y,deleteList:F,createItem:$,updateItem:j,toggleItem:g,deleteItem:S,reorderItems:Y}=ae({projectId:C,addToast:(t,m)=>{if(m==="success"||m==="error"||m==="info"||m===void 0){r(t,m);return}r(t,"info")}}),[P,D]=l.useState(null),[X,A]=l.useState(""),[U,M]=l.useState(null),[W,s]=l.useState(""),[c,u]=l.useState(""),[b,n]=l.useState(!1),[a,i]=l.useState(""),[d,p]=l.useState([]),[v,R]=l.useState(!1),[q,K]=l.useState(!1),[st,B]=l.useState(null),J=l.useRef(null),{confirm:Ct}=Gt(),[wt,ot]=l.useState("list"),z=l.useMemo(()=>w.find(t=>t.id===T)??null,[w,T]),_=l.useMemo(()=>ne(I.filter(t=>t.listId===T)),[I,T]),at=l.useMemo(()=>{const t=new Map;for(const m of w)t.set(m.id,{total:0,completed:0});for(const m of I){const h=t.get(m.listId)??{total:0,completed:0};h.total+=1,m.completed&&(h.completed+=1),t.set(m.listId,h)}return t},[I,w]),Q=z?at.get(z.id)??{total:_.length,completed:_.filter(t=>t.completed).length}:null;function nt(){D(null),A(""),u(""),n(!1)}function G(){M(null),s(""),i("")}function Nt(t){nt(),G(),O(t),ot("detail")}function At(){ot("list")}const St=l.useCallback(async()=>{R(!0);try{const t=await Ht(void 0,C);p(t),K(!0)}catch(t){r(o("todo.failedToLoadAgents","Failed to load agents: {{error}}",{error:Z(t)}),"error"),K(!1),B(null)}finally{R(!1)}},[C,r,o]);l.useEffect(()=>{D(null),A(""),u(""),n(!1),M(null),s(""),i(""),K(!1),B(null)},[T]),l.useEffect(()=>{if(!q)return;const t=m=>{J.current&&!J.current.contains(m.target)&&(K(!1),B(null))};return document.addEventListener("mousedown",t),()=>{document.removeEventListener("mousedown",t)}},[q]);function Et(t){G(),D(t.id),A(t.title),n(!1)}async function it(){if(!P)return;const t=X.trim();if(!t){D(null),A("");return}await y(P,t),D(null),A("")}function dt(){D(null),A("")}function lt(t){nt(),M(t.id),s(t.text)}async function rt(){if(!U)return;const t=W.trim();if(!t){M(null),s("");return}await j(U,{text:t}),M(null),s("")}function ct(){M(null),s("")}async function mt(){const t=c.trim();t&&(await H(t),u(""),n(!1))}async function ut(){if(!T)return;const t=a.trim();t&&(await $(t),i(""))}async function Tt(t){await Ct({title:o("todo.deleteListTitle","Delete List"),message:o("todo.deleteListConfirm","Delete this list and all its items?"),danger:!0})&&await F(t)}async function Dt(t){await S(t)}async function bt(t,m){const h=_.map(V=>V.id),x=h.findIndex(V=>V===t);if(x<0)return;const E=m==="up"?x-1:x+1;E<0||E>=h.length||([h[x],h[E]]=[h[E],h[x]],await Y(h))}const Ft=l.useCallback(async t=>{try{const m={description:t.text,source:{sourceType:"dashboard_ui"}},h=await xt(m,C);L?.(h),r(o("todo.taskCreatedFromTodo","Created {{id}} from todo",{id:h.id}),"success")}catch(m){r(o("todo.failedToCreateTask","Failed to create task: {{error}}",{error:Z(m)}),"error")}},[C,r,L,o]),$t=l.useCallback(async(t,m)=>{try{const h={description:t.text,assignedAgentId:m,source:{sourceType:"dashboard_ui"}},x=await xt(h,C);L?.(x);const V=d.find(Mt=>Mt.id===m)?.name??m;r(o("todo.taskCreatedAndAssigned","Created {{id}} and assigned to {{agent}}",{id:x.id,agent:V}),"success"),K(!1),B(null)}catch(h){r(o("todo.failedToCreateAndAssign","Failed to create and assign task: {{error}}",{error:Z(h)}),"error")}},[C,r,d,L,o]),pt=null;return N?e.jsxs("div",{className:"todo-view","data-testid":"todo-view-root",children:[pt,e.jsxs("div",{className:"todo-loading",children:[e.jsx(Yt,{className:"todo-loading-icon","aria-hidden":"true"}),e.jsx("p",{children:o("todo.loading","Loading todos...")})]})]}):e.jsxs("div",{className:"todo-view","data-testid":"todo-view-root",children:[pt,e.jsxs("div",{className:"todo-view-layout","data-mobile-stack-view":wt,children:[e.jsxs("aside",{className:"todo-view-sidebar","aria-label":o("todo.listsLabel","Todo lists sidebar"),children:[e.jsxs("div",{className:"todo-sidebar-header",children:[e.jsx("h3",{className:"todo-sidebar-title",children:o("todo.lists","Lists")}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-add-list-btn",onClick:()=>{G(),n(!0),D(null)},"aria-label":o("todo.addList","Add list"),"data-testid":"add-list-button",children:e.jsx(gt,{})})]}),b&&e.jsxs("div",{className:"todo-list-item",children:[e.jsx("input",{className:"input todo-inline-edit-input",placeholder:o("todo.newListTitle","New list title"),value:c,onChange:t=>u(t.target.value),onKeyDown:t=>{t.key==="Enter"&&mt(),t.key==="Escape"&&(u(""),n(!1))},autoFocus:!0,"data-testid":"new-list-input"}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{mt()},"aria-label":o("todo.saveList","Save list"),children:e.jsx(tt,{})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{u(""),n(!1)},"aria-label":o("todo.cancelList","Cancel list"),children:e.jsx(et,{})})]}),w.length===0&&!b?e.jsxs("div",{className:"todo-empty-state",children:[e.jsx(vt,{"aria-hidden":"true"}),e.jsx("p",{children:o("todo.noListsEmpty","No todo lists yet. Create one to get started.")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>{G(),n(!0)},children:o("todo.createList","Create List")})]}):e.jsx("div",{className:"todo-list-items",role:"list","aria-label":o("todo.todoListsLabel","Todo lists"),children:w.map(t=>{const m=t.id===T,h=t.id===P,x=at.get(t.id)??{total:0,completed:0};return e.jsx("div",{className:`todo-list-item${m?" todo-list-item--active":""}`,role:"listitem",children:h?e.jsxs(e.Fragment,{children:[e.jsx("input",{className:"input todo-inline-edit-input",value:X,onChange:E=>A(E.target.value),onKeyDown:E=>{E.key==="Enter"&&it(),E.key==="Escape"&&dt()},autoFocus:!0,"data-testid":`rename-list-input-${t.id}`}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{it()},"aria-label":o("todo.saveListRename","Save list rename"),children:e.jsx(tt,{})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:dt,"aria-label":o("todo.cancelListRename","Cancel list rename"),children:e.jsx(et,{})})]}):e.jsxs(e.Fragment,{children:[e.jsxs("button",{type:"button",className:"todo-list-select-btn",onClick:()=>Nt(t.id),"aria-label":o("todo.selectList","Select list {{title}}",{title:t.title}),"aria-current":m?"true":void 0,"data-testid":`todo-list-${t.id}`,children:[e.jsx("span",{className:"todo-list-item-name",children:t.title}),e.jsxs("span",{className:"todo-list-item-count",children:[x.completed,"/",x.total]})]}),e.jsxs("div",{className:"todo-list-item-actions",children:[e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{Et(t)},"aria-label":o("todo.renameList","Rename {{title}}",{title:t.title}),"data-testid":`rename-list-button-${t.id}`,children:e.jsx(Lt,{})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon btn-danger todo-icon-btn",onClick:()=>{Tt(t.id)},"aria-label":o("todo.deleteList","Delete {{title}}",{title:t.title}),"data-testid":`delete-list-button-${t.id}`,children:e.jsx(yt,{})})]})]})},t.id)})})]}),e.jsxs("section",{className:"todo-view-main","aria-label":o("todo.itemsLabel","Todo items"),children:[k&&e.jsxs("div",{className:"todo-error-banner",role:"alert",children:[e.jsx("span",{className:"todo-error-message",children:k}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>window.location.reload(),children:o("actions.retry","Retry")})]}),z?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"todo-items-header",children:[e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn todo-mobile-back-btn",onClick:At,"aria-label":o("todo.backToLists","Back to lists"),"data-testid":"todo-mobile-back-button",children:e.jsx(qt,{})}),e.jsxs("div",{className:"todo-items-heading",children:[e.jsx("h3",{children:z.title}),Q&&e.jsx("span",{className:"todo-items-progress",children:o("todo.completedCount","{{completed}}/{{total}} complete",{completed:Q.completed,total:Q.total})})]})]}),e.jsxs("div",{className:"todo-add-item-row",children:[e.jsx("input",{className:"input",placeholder:o("todo.addItemPlaceholder","Add a todo item"),value:a,onChange:t=>i(t.target.value),onKeyDown:t=>{t.key==="Enter"&&ut(),t.key==="Escape"&&i("")},"data-testid":"new-item-input"}),e.jsxs("button",{type:"button",className:"btn btn-primary",onClick:()=>{ut()},children:[e.jsx(gt,{size:14}),o("actions.add","Add")]})]}),_.length===0?e.jsx("div",{className:"todo-empty-state",children:e.jsx("p",{children:o("todo.noItemsEmpty","No items in this list. Add one above.")})}):e.jsx("div",{className:"todo-items-list",children:_.map((t,m)=>{const h=t.id===U;return e.jsxs("div",{className:"todo-item","data-testid":`todo-item-${t.id}`,children:[e.jsxs("div",{className:"todo-item-main-row",children:[e.jsx("input",{type:"checkbox",checked:t.completed,onChange:()=>{g(t.id)},className:"todo-item-checkbox","aria-label":`Toggle ${t.text}`,"data-testid":`toggle-item-${t.id}`}),h?e.jsx("input",{className:"input todo-inline-edit-input",value:W,onChange:x=>s(x.target.value),onKeyDown:x=>{x.key==="Enter"&&rt(),x.key==="Escape"&&ct()},autoFocus:!0,"data-testid":`edit-item-input-${t.id}`}):e.jsx("button",{type:"button",className:`todo-item-text${t.completed?" todo-item-text--completed":""}`,onClick:()=>lt(t),children:t.text})]}),e.jsx("div",{className:"todo-item-actions","data-testid":`todo-item-actions-${t.id}`,children:h?e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{rt()},"aria-label":o("todo.saveItemEdit","Save item edit"),children:e.jsx(tt,{})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:ct,"aria-label":o("todo.cancelItemEdit","Cancel item edit"),children:e.jsx(et,{})})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"todo-item-reorder-btns",children:[e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-item-reorder-btn",onClick:()=>{bt(t.id,"up")},disabled:m===0,"aria-label":o("todo.moveItemUp","Move {{text}} up",{text:t.text}),"data-testid":`move-up-${t.id}`,children:e.jsx(Jt,{})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-item-reorder-btn",onClick:()=>{bt(t.id,"down")},disabled:m===_.length-1,"aria-label":o("todo.moveItemDown","Move {{text}} down",{text:t.text}),"data-testid":`move-down-${t.id}`,children:e.jsx(Qt,{})})]}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{f?.(t.text)},"aria-label":o("todo.startPlanning","Start planning from {{text}}",{text:t.text}),"data-testid":`planning-from-${t.id}`,children:e.jsx(Zt,{})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{Ft(t)},"aria-label":o("todo.createTaskFrom","Create task from {{text}}",{text:t.text}),"data-testid":`create-task-from-${t.id}`,children:e.jsx(se,{})}),e.jsxs("div",{className:"todo-agent-picker-trigger",ref:st===t.id?J:void 0,children:[e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{B(t.id),St()},"aria-label":o("todo.assignAgent","Assign {{text}} to agent",{text:t.text}),"data-testid":`assign-agent-for-${t.id}`,children:e.jsx(jt,{})}),q&&st===t.id&&e.jsx("div",{className:"todo-agent-picker-dropdown",onMouseDown:x=>{x.preventDefault()},children:v?e.jsx("div",{className:"todo-agent-picker-loading",children:e.jsx(te,{label:o("todo.loadingAgents","Loading agents...")})}):d.length>0?d.map(x=>e.jsxs("button",{type:"button",className:"todo-agent-picker-item",onClick:()=>{$t(t,x.id)},children:[e.jsx(jt,{}),e.jsx("span",{children:x.name}),e.jsx("span",{className:"todo-agent-picker-role",children:x.role})]},x.id)):e.jsx("div",{className:"todo-agent-picker-empty",children:o("todo.noAgentsAvailable","No agents available")})})]}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>lt(t),"aria-label":o("todo.editItem","Edit {{text}}",{text:t.text}),"data-testid":`edit-item-${t.id}`,children:e.jsx(Lt,{})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon btn-danger todo-icon-btn",onClick:()=>{Dt(t.id)},"aria-label":o("todo.deleteItem","Delete {{text}}",{text:t.text}),"data-testid":`delete-item-${t.id}`,children:e.jsx(yt,{})})]})})]},t.id)})})]}):e.jsxs("div",{className:"todo-empty-state",children:[e.jsx(vt,{"aria-hidden":"true"}),e.jsx("p",{children:o("todo.selectListEmpty","Select a list from the sidebar")})]})]})]})]})}export{ue as TodoView};
|