@zythum02/fello-server 0.1.51 → 0.1.53
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/out/renderer/assets/{_baseUniq-DdWCC-Go.js → _baseUniq-CJr3HkLS.js} +1 -1
- package/out/renderer/assets/_baseUniq-CJr3HkLS.js.br +0 -0
- package/out/renderer/assets/_baseUniq-CJr3HkLS.js.gz +0 -0
- package/out/renderer/assets/{arc-B_en4gJt.js → arc-POsBroTF.js} +1 -1
- package/out/renderer/assets/arc-POsBroTF.js.br +0 -0
- package/out/renderer/assets/arc-POsBroTF.js.gz +0 -0
- package/out/renderer/assets/{architectureDiagram-Q4EWVU46-W-l3dTvZ.js → architectureDiagram-Q4EWVU46-CmToUhDb.js} +6 -6
- package/out/renderer/assets/architectureDiagram-Q4EWVU46-CmToUhDb.js.br +0 -0
- package/out/renderer/assets/architectureDiagram-Q4EWVU46-CmToUhDb.js.gz +0 -0
- package/out/renderer/assets/{arrow-left-BwbOF_G_.js → arrow-left-CxS1t3f7.js} +1 -1
- package/out/renderer/assets/{automation--izxbhlj.js → automation-Cyz3eLWp.js} +7 -8
- package/out/renderer/assets/automation-Cyz3eLWp.js.br +0 -0
- package/out/renderer/assets/automation-Cyz3eLWp.js.gz +0 -0
- package/out/renderer/assets/{blockDiagram-DXYQGD6D-BdxXOr8Y.js → blockDiagram-DXYQGD6D-M2nnTg9f.js} +7 -7
- package/out/renderer/assets/blockDiagram-DXYQGD6D-M2nnTg9f.js.br +0 -0
- package/out/renderer/assets/blockDiagram-DXYQGD6D-M2nnTg9f.js.gz +0 -0
- package/out/renderer/assets/{c4Diagram-AHTNJAMY-C_8XgPtT.js → c4Diagram-AHTNJAMY-CwLtsy_0.js} +3 -3
- package/out/renderer/assets/c4Diagram-AHTNJAMY-CwLtsy_0.js.br +0 -0
- package/out/renderer/assets/c4Diagram-AHTNJAMY-CwLtsy_0.js.gz +0 -0
- package/out/renderer/assets/{channel-BsSLbHzl.js → channel-BUNDMqpH.js} +1 -1
- package/out/renderer/assets/{chunk-4BX2VUAB-CADGLBio.js → chunk-4BX2VUAB-B2qXmkDT.js} +1 -1
- package/out/renderer/assets/{chunk-4TB4RGXK-C7h57GNs.js → chunk-4TB4RGXK-DXLZpPY5.js} +5 -5
- package/out/renderer/assets/chunk-4TB4RGXK-DXLZpPY5.js.br +0 -0
- package/out/renderer/assets/chunk-4TB4RGXK-DXLZpPY5.js.gz +0 -0
- package/out/renderer/assets/{chunk-55IACEB6-Cw-dv2b3.js → chunk-55IACEB6-CJeyefxI.js} +1 -1
- package/out/renderer/assets/{chunk-EDXVE4YY-BPjYyS5o.js → chunk-EDXVE4YY-CNjJEQfY.js} +1 -1
- package/out/renderer/assets/chunk-EDXVE4YY-CNjJEQfY.js.br +0 -0
- package/out/renderer/assets/chunk-EDXVE4YY-CNjJEQfY.js.gz +0 -0
- package/out/renderer/assets/{chunk-FMBD7UC4-DhJ5Z89u.js → chunk-FMBD7UC4-DOAOsjRu.js} +1 -1
- package/out/renderer/assets/{chunk-OYMX7WX6-D5Q5ZCl0.js → chunk-OYMX7WX6-BG4B1VQ7.js} +3 -3
- package/out/renderer/assets/chunk-OYMX7WX6-BG4B1VQ7.js.br +0 -0
- package/out/renderer/assets/chunk-OYMX7WX6-BG4B1VQ7.js.gz +0 -0
- package/out/renderer/assets/{chunk-QZHKN3VN-SsM-5KS-.js → chunk-QZHKN3VN-B9zfXYIQ.js} +1 -1
- package/out/renderer/assets/{chunk-YZCP3GAM-AbfctYy8.js → chunk-YZCP3GAM-jeoI2tsD.js} +1 -1
- package/out/renderer/assets/chunk-YZCP3GAM-jeoI2tsD.js.br +0 -0
- package/out/renderer/assets/chunk-YZCP3GAM-jeoI2tsD.js.gz +0 -0
- package/out/renderer/assets/{circle-x-CxFDvVH_.js → circle-x-B1kBsMlS.js} +1 -1
- package/out/renderer/assets/{classDiagram-v2-HSJHXN6E-7ZGV_42k.js → classDiagram-6PBFFD2Q-DWPFF3Yt.js} +7 -7
- package/out/renderer/assets/{classDiagram-6PBFFD2Q-7ZGV_42k.js → classDiagram-v2-HSJHXN6E-DWPFF3Yt.js} +7 -7
- package/out/renderer/assets/{clone-D2_BL2Tz.js → clone-Dcvr9oKv.js} +1 -1
- package/out/renderer/assets/{code-editor-cp9haQUT.js → code-editor-CEXlC4aV.js} +2 -2
- package/out/renderer/assets/code-editor-CEXlC4aV.js.br +0 -0
- package/out/renderer/assets/code-editor-CEXlC4aV.js.gz +0 -0
- package/out/renderer/assets/{collapsible-BHMUDZxc.js → collapsible-CMuCJUWG.js} +1 -1
- package/out/renderer/assets/collapsible-CMuCJUWG.js.br +0 -0
- package/out/renderer/assets/collapsible-CMuCJUWG.js.gz +0 -0
- package/out/renderer/assets/{cose-bilkent-S5V4N54A-CVcE9aWV.js → cose-bilkent-S5V4N54A-B3bgImVS.js} +2 -2
- package/out/renderer/assets/cose-bilkent-S5V4N54A-B3bgImVS.js.br +0 -0
- package/out/renderer/assets/cose-bilkent-S5V4N54A-B3bgImVS.js.gz +0 -0
- package/out/renderer/assets/{dagre-KV5264BT-zrX-TFsi.js → dagre-KV5264BT-DTbumBA_.js} +7 -7
- package/out/renderer/assets/dagre-KV5264BT-DTbumBA_.js.br +0 -0
- package/out/renderer/assets/dagre-KV5264BT-DTbumBA_.js.gz +0 -0
- package/out/renderer/assets/{diagram-5BDNPKRD-Ct9NrJP9.js → diagram-5BDNPKRD-B34Y6e8q.js} +7 -7
- package/out/renderer/assets/diagram-5BDNPKRD-B34Y6e8q.js.br +0 -0
- package/out/renderer/assets/diagram-5BDNPKRD-B34Y6e8q.js.gz +0 -0
- package/out/renderer/assets/{diagram-G4DWMVQ6-tTGWcCd_.js → diagram-G4DWMVQ6-BBiBmFR4.js} +7 -7
- package/out/renderer/assets/diagram-G4DWMVQ6-BBiBmFR4.js.br +0 -0
- package/out/renderer/assets/diagram-G4DWMVQ6-BBiBmFR4.js.gz +0 -0
- package/out/renderer/assets/{diagram-MMDJMWI5-CpmcnN2B.js → diagram-MMDJMWI5-P-YslDjG.js} +6 -6
- package/out/renderer/assets/diagram-MMDJMWI5-P-YslDjG.js.br +0 -0
- package/out/renderer/assets/diagram-MMDJMWI5-P-YslDjG.js.gz +0 -0
- package/out/renderer/assets/{diagram-TYMM5635-DKTR2xS9.js → diagram-TYMM5635-D_cLard_.js} +6 -6
- package/out/renderer/assets/diagram-TYMM5635-D_cLard_.js.br +0 -0
- package/out/renderer/assets/diagram-TYMM5635-D_cLard_.js.gz +0 -0
- package/out/renderer/assets/{ellipsis-8708fodN.js → ellipsis-D1agTYu1.js} +1 -1
- package/out/renderer/assets/{erDiagram-SMLLAGMA-BW13EXAs.js → erDiagram-SMLLAGMA-C1MHqKvC.js} +5 -5
- package/out/renderer/assets/erDiagram-SMLLAGMA-C1MHqKvC.js.br +0 -0
- package/out/renderer/assets/erDiagram-SMLLAGMA-C1MHqKvC.js.gz +0 -0
- package/out/renderer/assets/{field-Be86bgEh.js → field-DR3J0r9e.js} +1 -1
- package/out/renderer/assets/field-DR3J0r9e.js.br +0 -0
- package/out/renderer/assets/field-DR3J0r9e.js.gz +0 -0
- package/out/renderer/assets/{file-text-CMw1QH-C.js → file-text-nGCW6zu1.js} +1 -1
- package/out/renderer/assets/{flowDiagram-DWJPFMVM-C3oZAKxX.js → flowDiagram-DWJPFMVM-DprlEc3Z.js} +7 -7
- package/out/renderer/assets/flowDiagram-DWJPFMVM-DprlEc3Z.js.br +0 -0
- package/out/renderer/assets/flowDiagram-DWJPFMVM-DprlEc3Z.js.gz +0 -0
- package/out/renderer/assets/{ganttDiagram-T4ZO3ILL-BARJrpDB.js → ganttDiagram-T4ZO3ILL-CbTdumBm.js} +3 -3
- package/out/renderer/assets/ganttDiagram-T4ZO3ILL-CbTdumBm.js.br +0 -0
- package/out/renderer/assets/ganttDiagram-T4ZO3ILL-CbTdumBm.js.gz +0 -0
- package/out/renderer/assets/{gitGraphDiagram-UUTBAWPF-D0gl3Row.js → gitGraphDiagram-UUTBAWPF-06bme-w8.js} +7 -7
- package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-06bme-w8.js.br +0 -0
- package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-06bme-w8.js.gz +0 -0
- package/out/renderer/assets/{graph-DB7hnlLW.js → graph-BZhxluo9.js} +2 -2
- package/out/renderer/assets/graph-BZhxluo9.js.br +0 -0
- package/out/renderer/assets/graph-BZhxluo9.js.gz +0 -0
- package/out/renderer/assets/{highlighted-body-OFNGDK62-J87DvYBX.js → highlighted-body-OFNGDK62-CvDMJtXf.js} +2 -2
- package/out/renderer/assets/{index-Co8mzhyV.js → index-LmYTNvdF.js} +913 -453
- package/out/renderer/assets/index-LmYTNvdF.js.br +0 -0
- package/out/renderer/assets/index-LmYTNvdF.js.gz +0 -0
- package/out/renderer/assets/index-aGJ_yZib.css +382 -0
- package/out/renderer/assets/index-aGJ_yZib.css.br +0 -0
- package/out/renderer/assets/index-aGJ_yZib.css.gz +0 -0
- package/out/renderer/assets/{infoDiagram-42DDH7IO-BrfLG_LC.js → infoDiagram-42DDH7IO-DqivEzWL.js} +5 -5
- package/out/renderer/assets/infoDiagram-42DDH7IO-DqivEzWL.js.br +0 -0
- package/out/renderer/assets/infoDiagram-42DDH7IO-DqivEzWL.js.gz +0 -0
- package/out/renderer/assets/{ishikawaDiagram-UXIWVN3A-CO0cyvTq.js → ishikawaDiagram-UXIWVN3A-BKcg_z4w.js} +2 -2
- package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-BKcg_z4w.js.br +0 -0
- package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-BKcg_z4w.js.gz +0 -0
- package/out/renderer/assets/{item-CvcokSWl.js → item-BHEUMM9H.js} +1 -1
- package/out/renderer/assets/item-BHEUMM9H.js.br +0 -0
- package/out/renderer/assets/item-BHEUMM9H.js.gz +0 -0
- package/out/renderer/assets/{journeyDiagram-VCZTEJTY-D3F2Iu5P.js → journeyDiagram-VCZTEJTY-Bvv8xuxQ.js} +5 -5
- package/out/renderer/assets/journeyDiagram-VCZTEJTY-Bvv8xuxQ.js.br +0 -0
- package/out/renderer/assets/journeyDiagram-VCZTEJTY-Bvv8xuxQ.js.gz +0 -0
- package/out/renderer/assets/{kanban-definition-6JOO6SKY-CC_drlaB.js → kanban-definition-6JOO6SKY-C-gRMpeM.js} +3 -3
- package/out/renderer/assets/kanban-definition-6JOO6SKY-C-gRMpeM.js.br +0 -0
- package/out/renderer/assets/kanban-definition-6JOO6SKY-C-gRMpeM.js.gz +0 -0
- package/out/renderer/assets/{layout-B_3n1To1.js → layout-B4dSyItA.js} +4 -4
- package/out/renderer/assets/layout-B4dSyItA.js.br +0 -0
- package/out/renderer/assets/layout-B4dSyItA.js.gz +0 -0
- package/out/renderer/assets/{linear-AxwRZ_jw.js → linear-CoVhuer7.js} +1 -1
- package/out/renderer/assets/linear-CoVhuer7.js.br +0 -0
- package/out/renderer/assets/linear-CoVhuer7.js.gz +0 -0
- package/out/renderer/assets/{link-2-4A51Gs15.js → link-2-DHUPzNSt.js} +1 -1
- package/out/renderer/assets/{mermaid-GHXKKRXX-DFOJYe_t.js → mermaid-GHXKKRXX-CZqkhGx7.js} +54 -54
- package/out/renderer/assets/mermaid-GHXKKRXX-CZqkhGx7.js.br +0 -0
- package/out/renderer/assets/mermaid-GHXKKRXX-CZqkhGx7.js.gz +0 -0
- package/out/renderer/assets/mic-BgSvicCB.js +22 -0
- package/out/renderer/assets/{min-Dip7FmOo.js → min-emzuJjmk.js} +2 -2
- package/out/renderer/assets/min-emzuJjmk.js.br +0 -0
- package/out/renderer/assets/min-emzuJjmk.js.gz +0 -0
- package/out/renderer/assets/{mindmap-definition-QFDTVHPH-D9aiLrpe.js → mindmap-definition-QFDTVHPH-DQ4JNECm.js} +4 -4
- package/out/renderer/assets/mindmap-definition-QFDTVHPH-DQ4JNECm.js.br +0 -0
- package/out/renderer/assets/mindmap-definition-QFDTVHPH-DQ4JNECm.js.gz +0 -0
- package/out/renderer/assets/{open-guide-KaWHLGYU.js → open-guide-CfLO-Sdk.js} +1 -1
- package/out/renderer/assets/{package-search-CNALSYvi.js → package-search-CrF2Iegl.js} +1 -1
- package/out/renderer/assets/{pieDiagram-DEJITSTG-BX_34lAP.js → pieDiagram-DEJITSTG-0H6CGQQt.js} +7 -7
- package/out/renderer/assets/pieDiagram-DEJITSTG-0H6CGQQt.js.br +0 -0
- package/out/renderer/assets/pieDiagram-DEJITSTG-0H6CGQQt.js.gz +0 -0
- package/out/renderer/assets/{plus-DOVKq0d7.js → plus-YNCXW-GD.js} +1 -1
- package/out/renderer/assets/{quadrantDiagram-34T5L4WZ-G09qfNO8.js → quadrantDiagram-34T5L4WZ-D0aPKp5z.js} +3 -3
- package/out/renderer/assets/quadrantDiagram-34T5L4WZ-D0aPKp5z.js.br +0 -0
- package/out/renderer/assets/quadrantDiagram-34T5L4WZ-D0aPKp5z.js.gz +0 -0
- package/out/renderer/assets/{refresh-cw-DGB7KSZ3.js → refresh-cw-Bvm578nW.js} +1 -1
- package/out/renderer/assets/{requirementDiagram-MS252O5E-sJPY8r9J.js → requirementDiagram-MS252O5E-BkzwapW_.js} +4 -4
- package/out/renderer/assets/requirementDiagram-MS252O5E-BkzwapW_.js.br +0 -0
- package/out/renderer/assets/requirementDiagram-MS252O5E-BkzwapW_.js.gz +0 -0
- package/out/renderer/assets/{resizable-C5jomC3Y.js → resizable-cStzNJ8V.js} +1 -1
- package/out/renderer/assets/resizable-cStzNJ8V.js.br +0 -0
- package/out/renderer/assets/resizable-cStzNJ8V.js.gz +0 -0
- package/out/renderer/assets/{sankeyDiagram-XADWPNL6-DHIS2ISZ.js → sankeyDiagram-XADWPNL6-Dbde7usj.js} +2 -2
- package/out/renderer/assets/sankeyDiagram-XADWPNL6-Dbde7usj.js.br +0 -0
- package/out/renderer/assets/sankeyDiagram-XADWPNL6-Dbde7usj.js.gz +0 -0
- package/out/renderer/assets/{schedule-BoqPUAOI.js → schedule-DNMCsk-G.js} +9 -10
- package/out/renderer/assets/schedule-DNMCsk-G.js.br +0 -0
- package/out/renderer/assets/schedule-DNMCsk-G.js.gz +0 -0
- package/out/renderer/assets/{search-DdqhQVGJ.js → search-BEY9yGF_.js} +1 -1
- package/out/renderer/assets/{sequenceDiagram-FGHM5R23-Boc12Em2.js → sequenceDiagram-FGHM5R23-DI8l1pSL.js} +4 -4
- package/out/renderer/assets/sequenceDiagram-FGHM5R23-DI8l1pSL.js.br +0 -0
- package/out/renderer/assets/sequenceDiagram-FGHM5R23-DI8l1pSL.js.gz +0 -0
- package/out/renderer/assets/{session-DgU3TDDV.js → session-Bn5k9ScR.js} +1540 -182
- package/out/renderer/assets/session-Bn5k9ScR.js.br +0 -0
- package/out/renderer/assets/session-Bn5k9ScR.js.gz +0 -0
- package/out/renderer/assets/{setting-dialog-4pmkQ7WP.js → setting-dialog-sqfPfGsy.js} +3 -3
- package/out/renderer/assets/setting-dialog-sqfPfGsy.js.br +0 -0
- package/out/renderer/assets/setting-dialog-sqfPfGsy.js.gz +0 -0
- package/out/renderer/assets/{settings-2-CI8inOtS.js → settings-2-DRhoXOO8.js} +1 -1
- package/out/renderer/assets/{settings-agents-C4u0s-iR.js → settings-agents-Bntc31Nn.js} +10 -11
- package/out/renderer/assets/settings-agents-Bntc31Nn.js.br +0 -0
- package/out/renderer/assets/settings-agents-Bntc31Nn.js.gz +0 -0
- package/out/renderer/assets/{settings-general-BkLSJoHB.js → settings-general-DhbLb9cP.js} +2 -2
- package/out/renderer/assets/settings-general-DhbLb9cP.js.br +0 -0
- package/out/renderer/assets/settings-general-DhbLb9cP.js.gz +0 -0
- package/out/renderer/assets/{settings-ilink-6ZrgPpeO.js → settings-ilink-C7nGGjwT.js} +3 -3
- package/out/renderer/assets/settings-ilink-C7nGGjwT.js.br +0 -0
- package/out/renderer/assets/settings-ilink-C7nGGjwT.js.gz +0 -0
- package/out/renderer/assets/{settings-image-generation-B6YIO6o_.js → settings-image-generation-H2dgqG7Y.js} +6 -7
- package/out/renderer/assets/settings-image-generation-H2dgqG7Y.js.br +0 -0
- package/out/renderer/assets/settings-image-generation-H2dgqG7Y.js.gz +0 -0
- package/out/renderer/assets/{settings-layout-Cf7GMXFZ.js → settings-layout-ATto1xpJ.js} +9 -3
- package/out/renderer/assets/settings-layout-ATto1xpJ.js.br +0 -0
- package/out/renderer/assets/settings-layout-ATto1xpJ.js.gz +0 -0
- package/out/renderer/assets/{settings-mcp-CJvL5Siz.js → settings-mcp-DUdMuoJ-.js} +7 -8
- package/out/renderer/assets/settings-mcp-DUdMuoJ-.js.br +0 -0
- package/out/renderer/assets/settings-mcp-DUdMuoJ-.js.gz +0 -0
- package/out/renderer/assets/{settings-memory-CvkppfHy.js → settings-memory-CJLG4aHW.js} +3 -3
- package/out/renderer/assets/settings-memory-CJLG4aHW.js.br +0 -0
- package/out/renderer/assets/settings-memory-CJLG4aHW.js.gz +0 -0
- package/out/renderer/assets/{settings-snippets-CO_jL3O3.js → settings-snippets-B4VcnD5Z.js} +6 -7
- package/out/renderer/assets/settings-snippets-B4VcnD5Z.js.br +0 -0
- package/out/renderer/assets/settings-snippets-B4VcnD5Z.js.gz +0 -0
- package/out/renderer/assets/settings-speech-to-text-DQ7lfkTu.js +1054 -0
- package/out/renderer/assets/settings-speech-to-text-DQ7lfkTu.js.br +0 -0
- package/out/renderer/assets/settings-speech-to-text-DQ7lfkTu.js.gz +0 -0
- package/out/renderer/assets/{settings-webui-5n5mI55N.js → settings-webui-DZf9O-6j.js} +2 -2
- package/out/renderer/assets/settings-webui-DZf9O-6j.js.br +0 -0
- package/out/renderer/assets/settings-webui-DZf9O-6j.js.gz +0 -0
- package/out/renderer/assets/{skills-installed-BqjN4mEl.js → skills-installed-Dp0r_4I-.js} +4 -4
- package/out/renderer/assets/skills-installed-Dp0r_4I-.js.br +0 -0
- package/out/renderer/assets/skills-installed-Dp0r_4I-.js.gz +0 -0
- package/out/renderer/assets/{skills-layout-C8b-pe9X.js → skills-layout-D-5rlY38.js} +2 -2
- package/out/renderer/assets/skills-layout-D-5rlY38.js.br +0 -0
- package/out/renderer/assets/skills-layout-D-5rlY38.js.gz +0 -0
- package/out/renderer/assets/{skills-skills-sh-Bh8KQ3PF.js → skills-skills-sh-CcLoIrSw.js} +4 -4
- package/out/renderer/assets/skills-skills-sh-CcLoIrSw.js.br +0 -0
- package/out/renderer/assets/skills-skills-sh-CcLoIrSw.js.gz +0 -0
- package/out/renderer/assets/{sortable.esm-DARmP-Qe.js → sortable.esm-knFxDx0Y.js} +1 -1
- package/out/renderer/assets/sortable.esm-knFxDx0Y.js.br +0 -0
- package/out/renderer/assets/sortable.esm-knFxDx0Y.js.gz +0 -0
- package/out/renderer/assets/{standard-schema-CtFhVVG9.js → standard-schema-dKXoCekr.js} +1 -1
- package/out/renderer/assets/standard-schema-dKXoCekr.js.br +0 -0
- package/out/renderer/assets/standard-schema-dKXoCekr.js.gz +0 -0
- package/out/renderer/assets/{stateDiagram-FHFEXIEX-Da2gV_KD.js → stateDiagram-FHFEXIEX-DWWz4PMv.js} +9 -9
- package/out/renderer/assets/stateDiagram-FHFEXIEX-DWWz4PMv.js.br +0 -0
- package/out/renderer/assets/stateDiagram-FHFEXIEX-DWWz4PMv.js.gz +0 -0
- package/out/renderer/assets/{stateDiagram-v2-QKLJ7IA2-D44mYiaY.js → stateDiagram-v2-QKLJ7IA2-Dm2qD5bg.js} +5 -5
- package/out/renderer/assets/{task-Ca7ur8ku.js → task-C5dyYbfn.js} +11 -12
- package/out/renderer/assets/task-C5dyYbfn.js.br +0 -0
- package/out/renderer/assets/task-C5dyYbfn.js.gz +0 -0
- package/out/renderer/assets/{textarea-BCC4Oh3S.js → textarea-DTqKlQbL.js} +1 -1
- package/out/renderer/assets/{timeline-definition-GMOUNBTQ-egFv4rLM.js → timeline-definition-GMOUNBTQ-A1tEoL9d.js} +3 -3
- package/out/renderer/assets/timeline-definition-GMOUNBTQ-A1tEoL9d.js.br +0 -0
- package/out/renderer/assets/timeline-definition-GMOUNBTQ-A1tEoL9d.js.gz +0 -0
- package/out/renderer/assets/{vennDiagram-DHZGUBPP-CnOs99wX.js → vennDiagram-DHZGUBPP-tNdYrJi_.js} +2 -2
- package/out/renderer/assets/vennDiagram-DHZGUBPP-tNdYrJi_.js.br +0 -0
- package/out/renderer/assets/vennDiagram-DHZGUBPP-tNdYrJi_.js.gz +0 -0
- package/out/renderer/assets/{wardley-RL74JXVD-Bb1llXhX.js → wardley-RL74JXVD-BxN5_Sp6.js} +4 -4
- package/out/renderer/assets/wardley-RL74JXVD-BxN5_Sp6.js.br +0 -0
- package/out/renderer/assets/wardley-RL74JXVD-BxN5_Sp6.js.gz +0 -0
- package/out/renderer/assets/{wardleyDiagram-NUSXRM2D-BupfUxsI.js → wardleyDiagram-NUSXRM2D-B_3jA8zU.js} +6 -6
- package/out/renderer/assets/wardleyDiagram-NUSXRM2D-B_3jA8zU.js.br +0 -0
- package/out/renderer/assets/wardleyDiagram-NUSXRM2D-B_3jA8zU.js.gz +0 -0
- package/out/renderer/assets/{wrench-Dj1S5dhM.js → wrench-7r-g9MUq.js} +1 -1
- package/out/renderer/assets/wrench-7r-g9MUq.js.br +0 -0
- package/out/renderer/assets/wrench-7r-g9MUq.js.gz +0 -0
- package/out/renderer/assets/{xlsx-view-DIarHecR.js → xlsx-view-Bv0YhA5m.js} +10 -10
- package/out/renderer/assets/xlsx-view-Bv0YhA5m.js.br +0 -0
- package/out/renderer/assets/xlsx-view-Bv0YhA5m.js.gz +0 -0
- package/out/renderer/assets/{xychartDiagram-5P7HB3ND-CtPNxvT_.js → xychartDiagram-5P7HB3ND-NNVuzC4j.js} +3 -3
- package/out/renderer/assets/xychartDiagram-5P7HB3ND-NNVuzC4j.js.br +0 -0
- package/out/renderer/assets/xychartDiagram-5P7HB3ND-NNVuzC4j.js.gz +0 -0
- package/out/renderer/index.html +2 -2
- package/out/renderer/index.html.br +0 -0
- package/out/renderer/index.html.gz +0 -0
- package/out/server/main.js +602 -68
- package/package.json +3 -1
- package/resources/tree-sitter-wasm/tree-sitter-dart.wasm +0 -0
- package/out/renderer/assets/_baseUniq-DdWCC-Go.js.br +0 -0
- package/out/renderer/assets/_baseUniq-DdWCC-Go.js.gz +0 -0
- package/out/renderer/assets/arc-B_en4gJt.js.br +0 -0
- package/out/renderer/assets/arc-B_en4gJt.js.gz +0 -0
- package/out/renderer/assets/architectureDiagram-Q4EWVU46-W-l3dTvZ.js.br +0 -0
- package/out/renderer/assets/architectureDiagram-Q4EWVU46-W-l3dTvZ.js.gz +0 -0
- package/out/renderer/assets/automation--izxbhlj.js.br +0 -0
- package/out/renderer/assets/automation--izxbhlj.js.gz +0 -0
- package/out/renderer/assets/blockDiagram-DXYQGD6D-BdxXOr8Y.js.br +0 -0
- package/out/renderer/assets/blockDiagram-DXYQGD6D-BdxXOr8Y.js.gz +0 -0
- package/out/renderer/assets/c4Diagram-AHTNJAMY-C_8XgPtT.js.br +0 -0
- package/out/renderer/assets/c4Diagram-AHTNJAMY-C_8XgPtT.js.gz +0 -0
- package/out/renderer/assets/chunk-4TB4RGXK-C7h57GNs.js.br +0 -0
- package/out/renderer/assets/chunk-4TB4RGXK-C7h57GNs.js.gz +0 -0
- package/out/renderer/assets/chunk-EDXVE4YY-BPjYyS5o.js.br +0 -0
- package/out/renderer/assets/chunk-EDXVE4YY-BPjYyS5o.js.gz +0 -0
- package/out/renderer/assets/chunk-OYMX7WX6-D5Q5ZCl0.js.br +0 -0
- package/out/renderer/assets/chunk-OYMX7WX6-D5Q5ZCl0.js.gz +0 -0
- package/out/renderer/assets/chunk-YZCP3GAM-AbfctYy8.js.br +0 -0
- package/out/renderer/assets/chunk-YZCP3GAM-AbfctYy8.js.gz +0 -0
- package/out/renderer/assets/clipboard-D6ZpW5GH.js +0 -15
- package/out/renderer/assets/code-editor-cp9haQUT.js.br +0 -0
- package/out/renderer/assets/code-editor-cp9haQUT.js.gz +0 -0
- package/out/renderer/assets/collapsible-BHMUDZxc.js.br +0 -0
- package/out/renderer/assets/collapsible-BHMUDZxc.js.gz +0 -0
- package/out/renderer/assets/context-menu-K6z5uSmg.js +0 -282
- package/out/renderer/assets/context-menu-K6z5uSmg.js.br +0 -0
- package/out/renderer/assets/context-menu-K6z5uSmg.js.gz +0 -0
- package/out/renderer/assets/cose-bilkent-S5V4N54A-CVcE9aWV.js.br +0 -0
- package/out/renderer/assets/cose-bilkent-S5V4N54A-CVcE9aWV.js.gz +0 -0
- package/out/renderer/assets/dagre-KV5264BT-zrX-TFsi.js.br +0 -0
- package/out/renderer/assets/dagre-KV5264BT-zrX-TFsi.js.gz +0 -0
- package/out/renderer/assets/diagram-5BDNPKRD-Ct9NrJP9.js.br +0 -0
- package/out/renderer/assets/diagram-5BDNPKRD-Ct9NrJP9.js.gz +0 -0
- package/out/renderer/assets/diagram-G4DWMVQ6-tTGWcCd_.js.br +0 -0
- package/out/renderer/assets/diagram-G4DWMVQ6-tTGWcCd_.js.gz +0 -0
- package/out/renderer/assets/diagram-MMDJMWI5-CpmcnN2B.js.br +0 -0
- package/out/renderer/assets/diagram-MMDJMWI5-CpmcnN2B.js.gz +0 -0
- package/out/renderer/assets/diagram-TYMM5635-DKTR2xS9.js.br +0 -0
- package/out/renderer/assets/diagram-TYMM5635-DKTR2xS9.js.gz +0 -0
- package/out/renderer/assets/erDiagram-SMLLAGMA-BW13EXAs.js.br +0 -0
- package/out/renderer/assets/erDiagram-SMLLAGMA-BW13EXAs.js.gz +0 -0
- package/out/renderer/assets/field-Be86bgEh.js.br +0 -0
- package/out/renderer/assets/field-Be86bgEh.js.gz +0 -0
- package/out/renderer/assets/flowDiagram-DWJPFMVM-C3oZAKxX.js.br +0 -0
- package/out/renderer/assets/flowDiagram-DWJPFMVM-C3oZAKxX.js.gz +0 -0
- package/out/renderer/assets/ganttDiagram-T4ZO3ILL-BARJrpDB.js.br +0 -0
- package/out/renderer/assets/ganttDiagram-T4ZO3ILL-BARJrpDB.js.gz +0 -0
- package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-D0gl3Row.js.br +0 -0
- package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-D0gl3Row.js.gz +0 -0
- package/out/renderer/assets/graph-DB7hnlLW.js.br +0 -0
- package/out/renderer/assets/graph-DB7hnlLW.js.gz +0 -0
- package/out/renderer/assets/index-Co8mzhyV.js.br +0 -0
- package/out/renderer/assets/index-Co8mzhyV.js.gz +0 -0
- package/out/renderer/assets/index-iHYS74sQ.css +0 -382
- package/out/renderer/assets/index-iHYS74sQ.css.br +0 -0
- package/out/renderer/assets/index-iHYS74sQ.css.gz +0 -0
- package/out/renderer/assets/infoDiagram-42DDH7IO-BrfLG_LC.js.br +0 -0
- package/out/renderer/assets/infoDiagram-42DDH7IO-BrfLG_LC.js.gz +0 -0
- package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-CO0cyvTq.js.br +0 -0
- package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-CO0cyvTq.js.gz +0 -0
- package/out/renderer/assets/item-CvcokSWl.js.br +0 -0
- package/out/renderer/assets/item-CvcokSWl.js.gz +0 -0
- package/out/renderer/assets/journeyDiagram-VCZTEJTY-D3F2Iu5P.js.br +0 -0
- package/out/renderer/assets/journeyDiagram-VCZTEJTY-D3F2Iu5P.js.gz +0 -0
- package/out/renderer/assets/kanban-definition-6JOO6SKY-CC_drlaB.js.br +0 -0
- package/out/renderer/assets/kanban-definition-6JOO6SKY-CC_drlaB.js.gz +0 -0
- package/out/renderer/assets/layout-B_3n1To1.js.br +0 -0
- package/out/renderer/assets/layout-B_3n1To1.js.gz +0 -0
- package/out/renderer/assets/linear-AxwRZ_jw.js.br +0 -0
- package/out/renderer/assets/linear-AxwRZ_jw.js.gz +0 -0
- package/out/renderer/assets/mermaid-GHXKKRXX-DFOJYe_t.js.br +0 -0
- package/out/renderer/assets/mermaid-GHXKKRXX-DFOJYe_t.js.gz +0 -0
- package/out/renderer/assets/min-Dip7FmOo.js.br +0 -0
- package/out/renderer/assets/min-Dip7FmOo.js.gz +0 -0
- package/out/renderer/assets/mindmap-definition-QFDTVHPH-D9aiLrpe.js.br +0 -0
- package/out/renderer/assets/mindmap-definition-QFDTVHPH-D9aiLrpe.js.gz +0 -0
- package/out/renderer/assets/pieDiagram-DEJITSTG-BX_34lAP.js.br +0 -0
- package/out/renderer/assets/pieDiagram-DEJITSTG-BX_34lAP.js.gz +0 -0
- package/out/renderer/assets/quadrantDiagram-34T5L4WZ-G09qfNO8.js.br +0 -0
- package/out/renderer/assets/quadrantDiagram-34T5L4WZ-G09qfNO8.js.gz +0 -0
- package/out/renderer/assets/requirementDiagram-MS252O5E-sJPY8r9J.js.br +0 -0
- package/out/renderer/assets/requirementDiagram-MS252O5E-sJPY8r9J.js.gz +0 -0
- package/out/renderer/assets/resizable-C5jomC3Y.js.br +0 -0
- package/out/renderer/assets/resizable-C5jomC3Y.js.gz +0 -0
- package/out/renderer/assets/sankeyDiagram-XADWPNL6-DHIS2ISZ.js.br +0 -0
- package/out/renderer/assets/sankeyDiagram-XADWPNL6-DHIS2ISZ.js.gz +0 -0
- package/out/renderer/assets/schedule-BoqPUAOI.js.br +0 -0
- package/out/renderer/assets/schedule-BoqPUAOI.js.gz +0 -0
- package/out/renderer/assets/sequenceDiagram-FGHM5R23-Boc12Em2.js.br +0 -0
- package/out/renderer/assets/sequenceDiagram-FGHM5R23-Boc12Em2.js.gz +0 -0
- package/out/renderer/assets/session-DgU3TDDV.js.br +0 -0
- package/out/renderer/assets/session-DgU3TDDV.js.gz +0 -0
- package/out/renderer/assets/setting-dialog-4pmkQ7WP.js.br +0 -0
- package/out/renderer/assets/setting-dialog-4pmkQ7WP.js.gz +0 -0
- package/out/renderer/assets/settings-agents-C4u0s-iR.js.br +0 -0
- package/out/renderer/assets/settings-agents-C4u0s-iR.js.gz +0 -0
- package/out/renderer/assets/settings-general-BkLSJoHB.js.br +0 -0
- package/out/renderer/assets/settings-general-BkLSJoHB.js.gz +0 -0
- package/out/renderer/assets/settings-ilink-6ZrgPpeO.js.br +0 -0
- package/out/renderer/assets/settings-ilink-6ZrgPpeO.js.gz +0 -0
- package/out/renderer/assets/settings-image-generation-B6YIO6o_.js.br +0 -0
- package/out/renderer/assets/settings-image-generation-B6YIO6o_.js.gz +0 -0
- package/out/renderer/assets/settings-layout-Cf7GMXFZ.js.br +0 -0
- package/out/renderer/assets/settings-layout-Cf7GMXFZ.js.gz +0 -0
- package/out/renderer/assets/settings-mcp-CJvL5Siz.js.br +0 -0
- package/out/renderer/assets/settings-mcp-CJvL5Siz.js.gz +0 -0
- package/out/renderer/assets/settings-memory-CvkppfHy.js.br +0 -0
- package/out/renderer/assets/settings-memory-CvkppfHy.js.gz +0 -0
- package/out/renderer/assets/settings-snippets-CO_jL3O3.js.br +0 -0
- package/out/renderer/assets/settings-snippets-CO_jL3O3.js.gz +0 -0
- package/out/renderer/assets/settings-webui-5n5mI55N.js.br +0 -0
- package/out/renderer/assets/settings-webui-5n5mI55N.js.gz +0 -0
- package/out/renderer/assets/skills-installed-BqjN4mEl.js.br +0 -0
- package/out/renderer/assets/skills-installed-BqjN4mEl.js.gz +0 -0
- package/out/renderer/assets/skills-layout-C8b-pe9X.js.br +0 -0
- package/out/renderer/assets/skills-layout-C8b-pe9X.js.gz +0 -0
- package/out/renderer/assets/skills-skills-sh-Bh8KQ3PF.js.br +0 -0
- package/out/renderer/assets/skills-skills-sh-Bh8KQ3PF.js.gz +0 -0
- package/out/renderer/assets/sortable.esm-DARmP-Qe.js.br +0 -0
- package/out/renderer/assets/sortable.esm-DARmP-Qe.js.gz +0 -0
- package/out/renderer/assets/standard-schema-CtFhVVG9.js.br +0 -0
- package/out/renderer/assets/standard-schema-CtFhVVG9.js.gz +0 -0
- package/out/renderer/assets/stateDiagram-FHFEXIEX-Da2gV_KD.js.br +0 -0
- package/out/renderer/assets/stateDiagram-FHFEXIEX-Da2gV_KD.js.gz +0 -0
- package/out/renderer/assets/task-Ca7ur8ku.js.br +0 -0
- package/out/renderer/assets/task-Ca7ur8ku.js.gz +0 -0
- package/out/renderer/assets/timeline-definition-GMOUNBTQ-egFv4rLM.js.br +0 -0
- package/out/renderer/assets/timeline-definition-GMOUNBTQ-egFv4rLM.js.gz +0 -0
- package/out/renderer/assets/vennDiagram-DHZGUBPP-CnOs99wX.js.br +0 -0
- package/out/renderer/assets/vennDiagram-DHZGUBPP-CnOs99wX.js.gz +0 -0
- package/out/renderer/assets/wardley-RL74JXVD-Bb1llXhX.js.br +0 -0
- package/out/renderer/assets/wardley-RL74JXVD-Bb1llXhX.js.gz +0 -0
- package/out/renderer/assets/wardleyDiagram-NUSXRM2D-BupfUxsI.js.br +0 -0
- package/out/renderer/assets/wardleyDiagram-NUSXRM2D-BupfUxsI.js.gz +0 -0
- package/out/renderer/assets/wrench-Dj1S5dhM.js.br +0 -0
- package/out/renderer/assets/wrench-Dj1S5dhM.js.gz +0 -0
- package/out/renderer/assets/xlsx-view-DIarHecR.js.br +0 -0
- package/out/renderer/assets/xlsx-view-DIarHecR.js.gz +0 -0
- package/out/renderer/assets/xychartDiagram-5P7HB3ND-CtPNxvT_.js.br +0 -0
- package/out/renderer/assets/xychartDiagram-5P7HB3ND-CtPNxvT_.js.gz +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./session-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./session-Bn5k9ScR.js","./settings-2-DRhoXOO8.js","./xlsx-view-Bv0YhA5m.js","./mermaid-GHXKKRXX-CZqkhGx7.js","./collapsible-CMuCJUWG.js","./item-BHEUMM9H.js","./file-text-nGCW6zu1.js","./link-2-DHUPzNSt.js","./search-BEY9yGF_.js","./schemas-c0X-G5_P.js","./wrench-7r-g9MUq.js","./ellipsis-D1agTYu1.js","./xlsx-view-Chm2gOCI.css","./mic-BgSvicCB.js","./arrow-left-CxS1t3f7.js","./refresh-cw-Bvm578nW.js","./plus-YNCXW-GD.js","./resizable-cStzNJ8V.js","./settings-layout-ATto1xpJ.js","./settings-general-DhbLb9cP.js","./field-DR3J0r9e.js","./settings-agents-Bntc31Nn.js","./open-guide-CfLO-Sdk.js","./sortable.esm-knFxDx0Y.js","./standard-schema-dKXoCekr.js","./textarea-DTqKlQbL.js","./circle-x-B1kBsMlS.js","./settings-mcp-DUdMuoJ-.js","./settings-webui-DZf9O-6j.js","./settings-ilink-C7nGGjwT.js","./settings-snippets-B4VcnD5Z.js","./settings-memory-CJLG4aHW.js","./settings-image-generation-H2dgqG7Y.js","./settings-speech-to-text-DQ7lfkTu.js","./skills-layout-D-5rlY38.js","./package-search-CrF2Iegl.js","./skills-installed-Dp0r_4I-.js","./skills-skills-sh-CcLoIrSw.js","./automation-Cyz3eLWp.js","./setting-dialog-sqfPfGsy.js","./schedule-DNMCsk-G.js","./task-C5dyYbfn.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
function _mergeNamespaces(n, m) {
|
|
3
3
|
for (var i = 0; i < m.length; i++) {
|
|
4
4
|
const e = m[i];
|
|
@@ -14134,6 +14134,7 @@ const useAppStore = create((set2, get2) => ({
|
|
|
14134
14134
|
sound: { volume: 50, muted: false, theme: "soft" },
|
|
14135
14135
|
snippets: [],
|
|
14136
14136
|
imageGeneration: [],
|
|
14137
|
+
speechToText: [],
|
|
14137
14138
|
webUIStatus: { enabled: false, url: null },
|
|
14138
14139
|
ilinkStatus: { connected: false },
|
|
14139
14140
|
activeIlinkSessionId: null,
|
|
@@ -14267,6 +14268,7 @@ const useAppStore = create((set2, get2) => ({
|
|
|
14267
14268
|
setSound: (sound) => set2({ sound }),
|
|
14268
14269
|
setSnippets: (snippets) => set2({ snippets }),
|
|
14269
14270
|
setImageGeneration: (imageGeneration2) => set2({ imageGeneration: imageGeneration2 }),
|
|
14271
|
+
setSpeechToText: (speechToText) => set2({ speechToText }),
|
|
14270
14272
|
setWebUIStatus: (status) => set2({ webUIStatus: status }),
|
|
14271
14273
|
setIlinkStatus: (status) => set2({ ilinkStatus: status }),
|
|
14272
14274
|
setActiveIlinkSessionId: (sessionId) => set2({ activeIlinkSessionId: sessionId }),
|
|
@@ -16885,15 +16887,16 @@ const useTranslation = (ns, props = {}) => {
|
|
|
16885
16887
|
}
|
|
16886
16888
|
return ret;
|
|
16887
16889
|
};
|
|
16888
|
-
const sidebar$1 = { "welcome": "Welcome", "skills": "Skills", "automation": "Automation", "projects": "Projects", "noProjects": "No projects yet", "noProjectsHint": "Add a project folder to get started", "addProject": "Add Project", "noAgentsHint": "Configure an agent first", "configureAgent": "Configure Agent", "revealInFinder": "Reveal in Finder", "rename": "Rename", "delete": "Delete", "renameProject": "Rename Project", "renameChat": "Rename Chat", "deleteChat": "Delete Chat", "enterNewProjectName": "Enter a new project name.", "enterNewChatName": "Enter a new chat name.", "addProjectTitle": "Add Project", "enterProjectPath": "Enter absolute path to project on the server:", "pathCannotBeEmpty": "Path cannot be empty", "webuiEnabled": "WebUI Enabled", "deleteProject": "Delete Project", "deleteProjectConfirm": 'Delete project "{{title}}" and all chats in it?\nThis action cannot be undone.', "deleteChatConfirm": 'Delete chat "{{title}}"?\nThis action cannot be undone.', "cancel": "Cancel", "save": "Save", "settings": "Settings", "agents": "Agents", "addProjectFailed": "Failed to add project.", "newChatFailed": "Failed to create a new chat.", "loadSessionFailed": "Failed to load session.", "revealInFinderFailed": "Failed to reveal in Finder.", "openInEditorFailed": "Failed to open in editor.", "projectExists": "Project already exists.", "projectNameEmpty": "Project name cannot be empty.", "chatNameEmpty": "Chat name cannot be empty.", "newChat": "New Chat", "projectActions": "Project actions for {{title}}", "createChatInProject": "Create chat in {{title}}", "chatActions": "Chat actions for {{title}}", "ilinkSetActive": "Set WeChat Active", "ilinkUnsetActive": "Unset WeChat Active", "collapse": "Collapse sidebar", "expand": "Expand sidebar", "updated": "Updated", "created": "Created", "newSessionDialog": { "title": "Create session", "agent": "Agent", "selectAgent": "Select an agent", "mcp": "MCP", "noMcp": "No MCP servers configured", "permission": "Permission", "permissionAsk": "Ask", "permissionAllowAll": "Allow all", "create": "Create" } };
|
|
16890
|
+
const sidebar$1 = { "welcome": "Welcome", "skills": "Skills", "automation": "Automation", "projects": "Projects", "noProjects": "No projects yet", "noProjectsHint": "Add a project folder to get started", "addProject": "Add Project", "noAgentsHint": "Configure an agent first", "configureAgent": "Configure Agent", "revealInFinder": "Reveal in Finder", "rename": "Rename", "delete": "Delete", "renameProject": "Rename Project", "renameChat": "Rename Chat", "deleteChat": "Delete Chat", "enterNewProjectName": "Enter a new project name.", "enterNewChatName": "Enter a new chat name.", "addProjectTitle": "Add Project", "enterProjectPath": "Enter absolute path to project on the server:", "pathCannotBeEmpty": "Path cannot be empty", "webuiEnabled": "WebUI Enabled", "deleteProject": "Delete Project", "deleteProjectConfirm": 'Delete project "{{title}}" and all chats in it?\nThis action cannot be undone.', "deleteChatConfirm": 'Delete chat "{{title}}"?\nThis action cannot be undone.', "cancel": "Cancel", "save": "Save", "settings": "Settings", "agents": "Agents", "addProjectFailed": "Failed to add project.", "newChatFailed": "Failed to create a new chat.", "loadSessionFailed": "Failed to load session.", "revealInFinderFailed": "Failed to reveal in Finder.", "openInEditorFailed": "Failed to open in editor.", "projectExists": "Project already exists.", "projectNameEmpty": "Project name cannot be empty.", "chatNameEmpty": "Chat name cannot be empty.", "newChat": "New Chat", "projectActions": "Project actions for {{title}}", "createChatInProject": "Create chat in {{title}}", "chatActions": "Chat actions for {{title}}", "ilinkSetActive": "Set WeChat Active", "ilinkUnsetActive": "Unset WeChat Active", "collapse": "Collapse sidebar", "expand": "Expand sidebar", "updated": "Updated", "created": "Created", "sessionCount": "{{count}} sessions", "sessionCount_one": "{{count}} session", "newSessionDialog": { "title": "Create session", "agent": "Agent", "selectAgent": "Select an agent", "mcp": "MCP", "noMcp": "No MCP servers configured", "permission": "Permission", "permissionAsk": "Ask", "permissionAllowAll": "Allow all", "create": "Create" } };
|
|
16889
16891
|
const skills$1 = { "title": "Skills", "installed": { "label": "Installed", "noDescription": "No description provided.", "revealInFinder": "Reveal in Finder", "viewSkill": "View SKILL.md", "uninstall": "Uninstall", "uninstallTitle": "Uninstall Skill", "uninstallConfirm": "Are you sure you want to uninstall {{name}}? ", "cancel": "Cancel", "uninstalledSuccess": "Skill {{name}} uninstalled", "uninstallFailed": "Failed to uninstall: {{message}}", "revealFailed": "Failed to reveal in Finder: {{message}}", "loadFailed": "Failed to load skills", "loadContentFailed": "Error loading skill content: {{message}}", "noSkills": "No skills installed." }, "skillsSh": { "label": "skills.sh", "title": "Discover Skills", "desc": "Explore and install community skills to enhance your agents.", "searchPlaceholder": "Search skills (e.g. pr-review, react-best-practices)...", "install": "Install", "installSuccess": "Skill {{name}} installed", "installFailed": "Install failed", "noResults": "No skills found", "installs": "{{count}} installs", "installedStatus": "Installed", "authorPrefix": "by " } };
|
|
16890
16892
|
const contextMenu$1 = { "cut": "Cut", "copy": "Copy", "paste": "Paste", "selectAll": "Select All" };
|
|
16891
|
-
const settings$1 = /* @__PURE__ */ JSON.parse(`{"themeDesc":"Customize the appearance of the application","languageDesc":"Select the display language","title":"Settings","general":{"title":"General","desc":"Manage your application settings.","theme":"Theme","light":"Light","dark":"Dark","system":"System","language":"Language","english":"English","chinese":"简体中文","saveThemeFailed":"Failed to save theme setting.","saveLanguageFailed":"Failed to save language setting.","groupAppearance":"Appearance","groupProject":"Project","autoWatchFiles":"Auto Watch Files","autoWatchFilesDesc":"Automatically watch project file changes","saveFileWatcherFailed":"Failed to save file watcher setting.","groupNetwork":"Network","proxy":"Network Proxy","proxyDesc":"Configure the network proxy used by Fello for Node requests, subprocesses and the UI.","proxyEdit":"Edit proxy settings","proxyOff":"Direct","proxySystem":"System","groupSound":"Sound","soundEnabled":"Sound Effects","soundEnabledDesc":"Play sound effects for notifications","soundVolume":"Volume","soundVolumeDesc":"Adjust notification volume","soundTheme":"Sound Style","soundThemeDesc":"Select the sound effect style","soundSoft":"Soft","soundCrisp":"Crisp","soundTest":"Test","soundTestDesc":"Preview the current sound effect","soundTestPlay":"Play","saveSoundFailed":"Failed to save sound setting.","groupEditor":"Editor","editor":"Open in Editor","editorDesc":"Choose the editor to open files","selectEditor":"Select editor","saveEditorFailed":"Failed to save editor setting."},"agents":{"desc":"Manage agent configurations and startup commands.","description":"Configure agents","title":"Agents","guide":"User Guide","addStdioAgent":"Add via ACP Agent","addApiAgent":"Add via API Key","editStdioAgent":"Edit ACP Agent","editApiAgent":"Edit API Agent","dialogDesc":"Configure the agent ID, command, arguments and environment variables.","apiDialogDesc":"Configure provider, endpoint and authentication for API agent.","agentId":"Agent ID (Name)","apiProvider":"Provider","apiBaseUrl":"Base URL","apiKey":"API Key","apiHeaders":"Headers (JSON)","contextWindowTokens":"Context Window (tokens)","modelIdTemplate":"Model Id Template","models":"Models (one per line)","modelsHint":"Usually not needed — models are fetched automatically. Only specify if the API doesn't return the models you need","command":"Command","args":"Arguments","envVars":"Environment Variables (JSON)","envJson":"Environment Variables (JSON)","quickPreset":"Quick preset","cancel":"Cancel","save":"Save","edit":"Edit","delete":"Delete","dragToReorder":"Drag to reorder","noAgents":"No agents configured","errorIdCommand":"ID and Command are required.","errorDuplicateId":"An agent with this ID already exists.","errorEnvJson":"Env must be a valid JSON object.","errorContextWindowTokens":"Context Window must be a positive integer.","updateFailed":"Failed to update configuration.","confirmDeleteTitle":"Delete Agent","confirmDeleteDesc":"Are you sure you want to delete this agent? This action cannot be undone.","confirmDeleteDescWithSessions":"Are you sure you want to delete this agent? {{count}} session(s) will also be deleted. This action cannot be undone.","reset":"Reset Agent","resetSuccess":"Agent reset.","resetFailed":"Failed to reset agent.","deleteAllSessions":"Delete All Sessions","confirmDeleteAllSessionsTitle":"Delete All Sessions","confirmDeleteAllSessionsDesc":"All sessions for this agent will be permanently deleted. This action cannot be undone.","deleteAllSessionsSuccess":"{{count}} session(s) deleted.","deleteAllSessionsFailed":"Failed to delete sessions.","validation":{"enterId":"Please enter an agent ID.","idFormat":"Only letters, numbers, _ and - allowed.","selectProvider":"Please select a provider.","enterBaseUrl":"Please enter a base URL.","enterApiKey":"Please enter an API key.","enterCommand":"Please enter a command.","jsonObject":"Must be a valid JSON object with string values.","positiveInteger":"Must be a positive integer."}},"mcp":{"desc":"Manage MCP server configurations and startup commands.","description":"Configure MCP Servers","title":"MCP Servers","guide":"User Guide","addMcp":"Add MCP Server","addStdioMcp":"Add Stdio MCP","addHttpMcp":"Add HTTP MCP","addSseMcp":"Add SSE MCP","recommended":{"exa":{"name":"Exa","desc":"Exa MCP Server — AI Web Search"}},"editMcp":"Edit MCP Server","dialogDesc":"Configure the MCP server ID, command, arguments and environment variables.","mcpId":"MCP Server ID (Name)","command":"Command","args":"Arguments","envVars":"Environment Variables (JSON)","envJson":"Environment Variables (JSON)","url":"URL","headers":"Headers (JSON)","headersJson":"Headers (JSON)","httpDialogDesc":"Configure the MCP server ID, HTTP URL and request headers.","sseDialogDesc":"Configure the MCP server ID, SSE endpoint URL and request headers.","cancel":"Cancel","save":"Save","edit":"Edit","delete":"Delete","dragToReorder":"Drag to reorder","noMcpServers":"No MCP servers configured","errorIdRequired":"ID is required.","errorUrlRequired":"URL is required.","errorIdCommand":"ID and Command are required.","errorDuplicateId":"An MCP server with this ID already exists.","errorHeadersJson":"Headers must be a valid JSON object.","errorEnvJson":"Env must be a valid JSON object.","updateFailed":"Failed to update configuration.","confirmDeleteTitle":"Delete MCP Server","confirmDeleteDesc":"Are you sure you want to delete this MCP server? This action cannot be undone.","validation":{"enterId":"Please enter a server ID.","idFormat":"Only letters, numbers, _ and - allowed.","enterCommand":"Please enter a command.","enterUrl":"Please enter a URL.","jsonObject":"Must be a valid JSON object with string values."}},"webui":{"desc":"Configure remote access to the Fello interface.","title":"WebUI","guide":"User Guide","enable":"Enable WebUI","enableDesc":"Allow remote access to Fello interface via browser","accessUrl":"Access URL","accessDesc":"Note: This URL contains a temporary token. The WebUI will be disabled when you restart the application.","enableAccess":"Enable WebUI Access","port":"Port:","token":"Token:","autoGenerated":"Auto-generated","copy":"Copy","note":"Note: This URL contains a temporary token. The WebUI will be disabled when you restart the application.","updateFailed":"Failed to update configuration.","disabledInWebUI":"WebUI configuration is disabled when running inside the browser."},"ilink":{"title":"WeChat iLink","guide":"User Guide","description":"Connect Fello to WeChat via iLink Bot API. Once connected, a ClawBot contact will appear in your WeChat, allowing you to chat with your AI agent from anywhere.","connected":"Connected","notConnected":"Not Connected","notConnectedHint":"Scan QR code with WeChat to connect","login":"Login","loggingIn":"Waiting...","disconnect":"Disconnect","scanPrompt":"Scan with WeChat to login","qrcodeExpired":"QR code expired, please try again","scanned":"Scanned! Please confirm on your phone.","browserOpened":"QR code opened in browser. Scan with WeChat to login.","activeSession":"Active Session for WeChat","activeSessionHint":"Messages from WeChat will be routed to this session. Right-click a session in the sidebar to set it as active.","selectSession":"-- Select a session --","none":"-- None --","howItWorks":"How it works","step1":"Click \\"Login\\" to open the QR code in your browser","step2":"Scan the QR code with WeChat","step3":"A \\"ClawBot\\" contact appears in your WeChat","step4":"Chat with ClawBot — messages are routed to the active session above","step5":"Right-click any session in the sidebar to set it as active for WeChat","useOriginalImage":"Use Original Image","useOriginalImageDesc":"Send full-size images to the model (uses more tokens). When off, thumbnails are used.","keepaliveMaxCount":"Keepalive Messages","keepaliveMaxCountDesc":"Max consecutive keepalive messages while thinking.","commandsTitle":"WeChat \\"!\\" Commands","commandsDesc":"Messages starting with ! or ! are commands. They interrupt the current agent execution (cancelling an ongoing reply) and then run the corresponding action.","cmdSwitchSession":"Switch Session","cmdSwitchSessionDesc":"List all sessions (grouped by project); reply with a number to switch.","cmdNewSession":"New Session","cmdNewSessionDesc":"List all projects; reply with a number to create a session in that project and switch to it.","cmdSwitchModel":"Switch Model","cmdSwitchModelDesc":"List models available in the current session; reply with a number to switch (API agents only).","cmdSnippet":"Quick Snippet","cmdSnippetDesc":"List configured snippets; reply with a number to send that content to the agent.","cmdStatus":"View Status","cmdStatusDesc":"Show active session info (title, project, agent, features, MCP status)."},"snippets":{"title":"Snippets","desc":"Manage reusable text snippets for quick insertion.","description":"Configure Snippets","add":"Add Snippet","edit":"Edit Snippet","delete":"Delete","save":"Save","cancel":"Cancel","empty":"No snippets configured","saveFailed":"Failed to save snippets.","titleLabel":"Title","titlePlaceholder":"Title","contentLabel":"Content","contentPlaceholder":"Content","dialogDesc":"Configure the snippet title and content.","confirmDeleteTitle":"Delete Snippet","confirmDeleteDesc":"Are you sure you want to delete this snippet? This action cannot be undone.","validation":{"enterTitle":"Please enter a title.","enterContent":"Please enter content."}},"memory":{"title":"Memory","desc":"View and manage persistent project-level memory.","projectMemories":"Project Memories","refresh":"Refresh","clear":"Clear","cleared":"Memory cleared.","clearFailed":"Failed to clear memory.","delete":"Delete","deleted":"Memory entry deleted.","deleteFailed":"Failed to delete memory entry.","confirmDeleteTitle":"Delete Memory Entry","confirmDeleteDesc":"Are you sure you want to delete this memory entry? This cannot be undone.","confirmClearTitle":"Clear Memory","confirmClearDesc":"Are you sure you want to clear all memory for project \\"{{title}}\\"? This cannot be undone.","revealInFinder":"Reveal in Finder","revealFailed":"Failed to reveal file.","noFile":"No memory file found.","noProjects":"No projects found.","empty":"No memories stored.","entries":"Entries"},"imageGeneration":{"title":"Image Generation","desc":"Configure image generation providers. The active provider will be available as a tool for agents.","providers":"Providers","add":"Add Provider","addProvider":"Add Provider","editProvider":"Edit Provider","dialogDesc":"Configure provider, endpoint and authentication for image generation.","edit":"Edit","delete":"Delete","empty":"No image generation providers configured","updateFailed":"Failed to update configuration.","confirmDeleteTitle":"Delete Provider","confirmDeleteDesc":"Are you sure you want to delete this image generation provider?","cancel":"Cancel","save":"Save","form":{"name":"Name","provider":"Provider","baseUrl":"Base URL","baseUrlHint":"Request → {baseUrl}/images/generations","apiKey":"API Key","headers":"Headers (JSON)","extraBody":"Extra Body (JSON)","extraBodyHint":"Additional parameters merged into request body (e.g. quality, style).","model":"Model"},"validation":{"enterName":"Please enter a name.","selectProvider":"Please select a provider.","enterBaseUrl":"Please enter a base URL.","enterApiKey":"Please enter an API key.","enterModel":"Please enter the model name.","jsonObject":"Must be a valid JSON object with string values."}},"proxy":{"title":"Network Proxy","mode":"Proxy Mode","off":"Direct","offDesc":"Connect directly without a proxy","manual":"Manual","manualDesc":"Specify a proxy server manually for all network requests","system":"System","systemDesc":"Use the system proxy settings (macOS/Windows or environment variables)","httpProxy":"HTTP Proxy","httpProxyPlaceholder":"e.g. http://127.0.0.1:7890","httpsProxy":"HTTPS Proxy (optional)","httpsProxyHint":"Falls back to the HTTP proxy when empty.","noProxy":"No Proxy (optional)","noProxyPlaceholder":"e.g. localhost,127.0.0.1,*.internal","username":"Username (optional)","password":"Password (optional)","cancel":"Cancel","save":"Save","later":"Later","restartNow":"Restart Now","restartTitle":"Restart Required","restartDesc":"Proxy settings saved. Restart Fello to apply the new proxy configuration.","restartManualDesc":"Proxy settings saved. Please manually restart the Fello server process to apply the new configuration.","saveFailed":"Failed to save proxy settings.","validation":{"httpProxyRequired":"HTTP proxy URL is required in manual mode.","invalidProxyUrl":"{{field}} should start with http:// or https://, or use a host:port address (e.g. 127.0.0.1:7890)."}}}`);
|
|
16893
|
+
const settings$1 = /* @__PURE__ */ JSON.parse(`{"themeDesc":"Customize the appearance of the application","languageDesc":"Select the display language","title":"Settings","general":{"title":"General","desc":"Manage your application settings.","theme":"Theme","light":"Light","dark":"Dark","system":"System","language":"Language","english":"English","chinese":"简体中文","saveThemeFailed":"Failed to save theme setting.","saveLanguageFailed":"Failed to save language setting.","groupAppearance":"Appearance","groupProject":"Project","autoWatchFiles":"Auto Watch Files","autoWatchFilesDesc":"Automatically watch project file changes","saveFileWatcherFailed":"Failed to save file watcher setting.","groupNetwork":"Network","proxy":"Network Proxy","proxyDesc":"Configure the network proxy used by Fello for Node requests, subprocesses and the UI.","proxyEdit":"Edit proxy settings","proxyOff":"Direct","proxySystem":"System","groupSound":"Sound","soundEnabled":"Sound Effects","soundEnabledDesc":"Play sound effects for notifications","soundVolume":"Volume","soundVolumeDesc":"Adjust notification volume","soundTheme":"Sound Style","soundThemeDesc":"Select the sound effect style","soundSoft":"Soft","soundCrisp":"Crisp","soundTest":"Test","soundTestDesc":"Preview the current sound effect","soundTestPlay":"Play","saveSoundFailed":"Failed to save sound setting.","groupEditor":"Editor","editor":"Open in Editor","editorDesc":"Choose the editor to open files","selectEditor":"Select editor","saveEditorFailed":"Failed to save editor setting."},"agents":{"desc":"Manage agent configurations and startup commands.","description":"Configure agents","title":"Agents","guide":"User Guide","addStdioAgent":"Add via ACP Agent","addApiAgent":"Add via API Key","editStdioAgent":"Edit ACP Agent","editApiAgent":"Edit API Agent","dialogDesc":"Configure the agent ID, command, arguments and environment variables.","apiDialogDesc":"Configure provider, endpoint and authentication for API agent.","agentId":"Agent ID (Name)","apiProvider":"Provider","apiBaseUrl":"Base URL","apiKey":"API Key","apiHeaders":"Headers (JSON)","contextWindowTokens":"Context Window (tokens)","modelIdTemplate":"Model Id Template","models":"Models (one per line)","modelsHint":"Usually not needed — models are fetched automatically. Only specify if the API doesn't return the models you need","command":"Command","args":"Arguments","envVars":"Environment Variables (JSON)","envJson":"Environment Variables (JSON)","quickPreset":"Quick preset","cancel":"Cancel","save":"Save","edit":"Edit","delete":"Delete","dragToReorder":"Drag to reorder","noAgents":"No agents configured","errorIdCommand":"ID and Command are required.","errorDuplicateId":"An agent with this ID already exists.","errorEnvJson":"Env must be a valid JSON object.","errorContextWindowTokens":"Context Window must be a positive integer.","updateFailed":"Failed to update configuration.","confirmDeleteTitle":"Delete Agent","confirmDeleteDesc":"Are you sure you want to delete this agent? This action cannot be undone.","confirmDeleteDescWithSessions":"Are you sure you want to delete this agent? {{count}} session(s) will also be deleted. This action cannot be undone.","reset":"Reset Agent","resetSuccess":"Agent reset.","resetFailed":"Failed to reset agent.","deleteAllSessions":"Delete All Sessions","confirmDeleteAllSessionsTitle":"Delete All Sessions","confirmDeleteAllSessionsDesc":"All sessions for this agent will be permanently deleted. This action cannot be undone.","deleteAllSessionsSuccess":"{{count}} session(s) deleted.","deleteAllSessionsFailed":"Failed to delete sessions.","validation":{"enterId":"Please enter an agent ID.","idFormat":"Only letters, numbers, _ and - allowed.","selectProvider":"Please select a provider.","enterBaseUrl":"Please enter a base URL.","enterApiKey":"Please enter an API key.","enterCommand":"Please enter a command.","jsonObject":"Must be a valid JSON object with string values.","positiveInteger":"Must be a positive integer."}},"mcp":{"desc":"Manage MCP server configurations and startup commands.","description":"Configure MCP Servers","title":"MCP Servers","guide":"User Guide","addMcp":"Add MCP Server","addStdioMcp":"Add Stdio MCP","addHttpMcp":"Add HTTP MCP","addSseMcp":"Add SSE MCP","recommended":{"exa":{"name":"Exa","desc":"Exa MCP Server — AI Web Search"}},"editMcp":"Edit MCP Server","dialogDesc":"Configure the MCP server ID, command, arguments and environment variables.","mcpId":"MCP Server ID (Name)","command":"Command","args":"Arguments","envVars":"Environment Variables (JSON)","envJson":"Environment Variables (JSON)","url":"URL","headers":"Headers (JSON)","headersJson":"Headers (JSON)","httpDialogDesc":"Configure the MCP server ID, HTTP URL and request headers.","sseDialogDesc":"Configure the MCP server ID, SSE endpoint URL and request headers.","cancel":"Cancel","save":"Save","edit":"Edit","delete":"Delete","dragToReorder":"Drag to reorder","noMcpServers":"No MCP servers configured","errorIdRequired":"ID is required.","errorUrlRequired":"URL is required.","errorIdCommand":"ID and Command are required.","errorDuplicateId":"An MCP server with this ID already exists.","errorHeadersJson":"Headers must be a valid JSON object.","errorEnvJson":"Env must be a valid JSON object.","updateFailed":"Failed to update configuration.","confirmDeleteTitle":"Delete MCP Server","confirmDeleteDesc":"Are you sure you want to delete this MCP server? This action cannot be undone.","validation":{"enterId":"Please enter a server ID.","idFormat":"Only letters, numbers, _ and - allowed.","enterCommand":"Please enter a command.","enterUrl":"Please enter a URL.","jsonObject":"Must be a valid JSON object with string values."}},"webui":{"desc":"Configure remote access to the Fello interface.","title":"WebUI","guide":"User Guide","enable":"Enable WebUI","enableDesc":"Allow remote access to Fello interface via browser","accessUrl":"Access URL","accessDesc":"Note: This URL contains a temporary token. The WebUI will be disabled when you restart the application.","enableAccess":"Enable WebUI Access","port":"Port:","token":"Token:","autoGenerated":"Auto-generated","copy":"Copy","note":"Note: This URL contains a temporary token. The WebUI will be disabled when you restart the application.","updateFailed":"Failed to update configuration.","disabledInWebUI":"WebUI configuration is disabled when running inside the browser."},"ilink":{"title":"WeChat iLink","guide":"User Guide","description":"Connect Fello to WeChat via iLink Bot API. Once connected, a ClawBot contact will appear in your WeChat, allowing you to chat with your AI agent from anywhere.","connected":"Connected","notConnected":"Not Connected","notConnectedHint":"Scan QR code with WeChat to connect","login":"Login","loggingIn":"Waiting...","disconnect":"Disconnect","scanPrompt":"Scan with WeChat to login","qrcodeExpired":"QR code expired, please try again","scanned":"Scanned! Please confirm on your phone.","browserOpened":"QR code opened in browser. Scan with WeChat to login.","activeSession":"Active Session for WeChat","activeSessionHint":"Messages from WeChat will be routed to this session. Right-click a session in the sidebar to set it as active.","selectSession":"-- Select a session --","none":"-- None --","howItWorks":"How it works","step1":"Click \\"Login\\" to open the QR code in your browser","step2":"Scan the QR code with WeChat","step3":"A \\"ClawBot\\" contact appears in your WeChat","step4":"Chat with ClawBot — messages are routed to the active session above","step5":"Right-click any session in the sidebar to set it as active for WeChat","useOriginalImage":"Use Original Image","useOriginalImageDesc":"Send full-size images to the model (uses more tokens). When off, thumbnails are used.","keepaliveMaxCount":"Keepalive Messages","keepaliveMaxCountDesc":"Max consecutive keepalive messages while thinking.","commandsTitle":"WeChat \\"!\\" Commands","commandsDesc":"Messages starting with ! or ! are commands. They interrupt the current agent execution (cancelling an ongoing reply) and then run the corresponding action.","cmdSwitchSession":"Switch Session","cmdSwitchSessionDesc":"List all sessions (grouped by project); reply with a number to switch.","cmdNewSession":"New Session","cmdNewSessionDesc":"List all projects; reply with a number to create a session in that project and switch to it.","cmdSwitchModel":"Switch Model","cmdSwitchModelDesc":"List models available in the current session; reply with a number to switch (API agents only).","cmdSnippet":"Quick Snippet","cmdSnippetDesc":"List configured snippets; reply with a number to send that content to the agent.","cmdStatus":"View Status","cmdStatusDesc":"Show active session info (title, project, agent, features, MCP status)."},"snippets":{"title":"Snippets","desc":"Manage reusable text snippets for quick insertion.","description":"Configure Snippets","add":"Add Snippet","edit":"Edit Snippet","delete":"Delete","save":"Save","cancel":"Cancel","empty":"No snippets configured","saveFailed":"Failed to save snippets.","titleLabel":"Title","titlePlaceholder":"Title","contentLabel":"Content","contentPlaceholder":"Content","dialogDesc":"Configure the snippet title and content.","confirmDeleteTitle":"Delete Snippet","confirmDeleteDesc":"Are you sure you want to delete this snippet? This action cannot be undone.","validation":{"enterTitle":"Please enter a title.","enterContent":"Please enter content."}},"memory":{"title":"Memory","desc":"View and manage persistent project-level memory.","projectMemories":"Project Memories","refresh":"Refresh","clear":"Clear","cleared":"Memory cleared.","clearFailed":"Failed to clear memory.","delete":"Delete","deleted":"Memory entry deleted.","deleteFailed":"Failed to delete memory entry.","confirmDeleteTitle":"Delete Memory Entry","confirmDeleteDesc":"Are you sure you want to delete this memory entry? This cannot be undone.","confirmClearTitle":"Clear Memory","confirmClearDesc":"Are you sure you want to clear all memory for project \\"{{title}}\\"? This cannot be undone.","revealInFinder":"Reveal in Finder","revealFailed":"Failed to reveal file.","noFile":"No memory file found.","noProjects":"No projects found.","empty":"No memories stored.","entries":"Entries"},"imageGeneration":{"title":"Image Generation","desc":"Configure image generation providers. The active provider will be available as a tool for agents.","providers":"Providers","add":"Add Provider","addProvider":"Add Provider","editProvider":"Edit Provider","dialogDesc":"Configure provider, endpoint and authentication for image generation.","edit":"Edit","delete":"Delete","empty":"No image generation providers configured","updateFailed":"Failed to update configuration.","confirmDeleteTitle":"Delete Provider","confirmDeleteDesc":"Are you sure you want to delete this image generation provider?","cancel":"Cancel","save":"Save","form":{"name":"Name","provider":"Provider","baseUrl":"Base URL","baseUrlHint":"Request → {baseUrl}/images/generations","apiKey":"API Key","headers":"Headers (JSON)","extraBody":"Extra Body (JSON)","extraBodyHint":"Additional parameters merged into request body (e.g. quality, style).","model":"Model"},"validation":{"enterName":"Please enter a name.","selectProvider":"Please select a provider.","enterBaseUrl":"Please enter a base URL.","enterApiKey":"Please enter an API key.","enterModel":"Please enter the model name.","jsonObject":"Must be a valid JSON object with string values."}},"speechToText":{"title":"Speech to Text","desc":"Configure realtime speech recognition providers for chat voice input.","guide":"User Guide","providers":"Providers","add":"Add Provider","addProvider":"Add Provider","editProvider":"Edit Provider","dialogDesc":"Configure a realtime speech-to-text provider for voice input.","edit":"Edit","delete":"Delete","empty":"No speech-to-text providers configured","updateFailed":"Failed to update configuration.","confirmDeleteTitle":"Delete Provider","confirmDeleteDesc":"Delete this speech provider?","cancel":"Cancel","save":"Save","validation":{"enterName":"Please enter a name.","selectProvider":"Please select a provider.","enterApiKey":"Please enter an API key.","enterAppId":"Please enter an App ID.","enterApiSecret":"Please enter an API secret."},"form":{"name":"Name","provider":"Provider","appId":"App ID","apiKey":"API Key","apiSecret":"API Secret","optional":" (optional)","language":"Language (optional)"}},"proxy":{"title":"Network Proxy","mode":"Proxy Mode","off":"Direct","offDesc":"Connect directly without a proxy","manual":"Manual","manualDesc":"Specify a proxy server manually for all network requests","system":"System","systemDesc":"Use the system proxy settings (macOS/Windows or environment variables)","httpProxy":"HTTP Proxy","httpProxyPlaceholder":"e.g. http://127.0.0.1:7890","httpsProxy":"HTTPS Proxy (optional)","httpsProxyHint":"Falls back to the HTTP proxy when empty.","noProxy":"No Proxy (optional)","noProxyPlaceholder":"e.g. localhost,127.0.0.1,*.internal","username":"Username (optional)","password":"Password (optional)","cancel":"Cancel","save":"Save","later":"Later","restartNow":"Restart Now","restartTitle":"Restart Required","restartDesc":"Proxy settings saved. Restart Fello to apply the new proxy configuration.","restartManualDesc":"Proxy settings saved. Please manually restart the Fello server process to apply the new configuration.","saveFailed":"Failed to save proxy settings.","validation":{"httpProxyRequired":"HTTP proxy URL is required in manual mode.","invalidProxyUrl":"{{field}} should start with http:// or https://, or use a host:port address (e.g. 127.0.0.1:7890)."}}}`);
|
|
16892
16894
|
const chat$1 = { "failedToLoadSession": "Failed to load session.", "failedToUpdateMcpServers": "Failed to update MCP servers." };
|
|
16895
|
+
const tokenUsage$1 = { "title": "Token Usage Breakdown", "loading": "Loading…", "noData": "No token breakdown data available", "promptCount": "{{count}} prompts", "promptLabel": "Prompt #{{count}}", "noBreakdown": "No detailed breakdown available for this prompt", "input": "Input", "output": "Output", "inputShort": "in", "outputShort": "out", "totalTokens": "Total", "thought": "Thought", "cacheRead": "Cache Read", "cacheWrite": "Cache Write", "cached": "Cached", "tokens": "tokens", "token": "token", "sessionTotal": "Session Total", "systemPrompt": "System Prompt", "tools": "Tools", "history": "History", "userMessage": "User Message", "inputComposition": "Input Composition", "delta": "Estimation delta", "toolsDefinition": "Tools Definition", "toolsCount": "{{count}} tools · {{tokens}} tokens", "more": "+{{count}} more", "steps": "Steps", "stepsCount": "{{count}} steps", "toolCalls": "tool calls", "noCache": "No Cache", "text": "Text", "stepTime": "Step Time", "responseTime": "Response Time", "arguments": "Arguments", "result": "Result", "execution": "Execution", "performance": "Performance", "totalTime": "Total Time", "outputSpeed": "Output Speed", "tokensPerSecond": "token/s", "firstToken": "First Token" };
|
|
16893
16896
|
const planBubble$1 = { "title": "Plan", "summary": "{{completed}} / {{total}} completed", "status": { "pending": "Pending", "inProgress": "In progress", "completed": "Completed" }, "priority": { "high": "High", "medium": "Medium", "low": "Low" } };
|
|
16894
16897
|
const constant$1 = { "feature": { "title": "Features", "askUser": "Ask Me", "skills": "Skills", "shareToUser": "Share to User", "search": "Search", "memory": "Memory", "imageGeneration": "Image Generation" } };
|
|
16895
|
-
const chatHeader$1 = { "sessionId": "Session", "openSessionFolder": "Open Session Folder", "refresh": "Restart Session", "closeSession": "Close Session", "closingSession": "Closing…", "failedToCloseSession": "Failed to close session.", "contextWindow": "Context Window", "used": "Used", "size": "Size", "percentUsed": "{{pct}}% used", "remaining": "{{count}} remaining", "lastTurn": "Last Turn", "input": "Input", "output": "Output", "total": "Total", "thought": "Thought", "cacheRead": "Cache read", "cacheWrite": "Cache write", "cost": "Cost" };
|
|
16896
|
-
const chatInput$1 = { "placeholderDisabled": "Start a new chat to begin...", "placeholderActive": "Ask anything... (Enter to send)", "mode": "Mode", "suggestions": "Suggestions", "messageInput": "Message input", "stop": "Stop", "send": "Send", "tokensUsage": "In: {{input}} Out: {{output}} Total: {{total}}{{thoughtStr}}", "tokensTotal": "{{total}}k tokens", "generationFailed": "Generation failed.", "attach": "Attach file", "reference": "Reference", "mention": "Mention", "snippets": "Snippets", "snippetsEmpty": "No snippets. Click to add in Settings.", "selectModel": "Select model", "stopReasonMaxTokens": "Reached maximum token limit", "stopReasonMaxTurnRequests": "Reached maximum turn limit", "stopReasonRefusal": "Model refused to respond", "stopReasonCancelled": "Generation was cancelled" };
|
|
16898
|
+
const chatHeader$1 = { "sessionId": "Session", "openSessionFolder": "Open Session Folder", "projectId": "Project", "openProjectFolder": "Open Project Folder", "refresh": "Restart Session", "closeSession": "Close Session", "closingSession": "Closing…", "failedToCloseSession": "Failed to close session.", "contextWindow": "Context Window", "used": "Used", "size": "Size", "percentUsed": "{{pct}}% used", "remaining": "{{count}} remaining", "lastTurn": "Last Turn", "input": "Input", "output": "Output", "total": "Total", "thought": "Thought", "cacheRead": "Cache read", "cacheWrite": "Cache write", "cost": "Cost", "viewBreakdown": "View Breakdown" };
|
|
16899
|
+
const chatInput$1 = { "placeholderDisabled": "Start a new chat to begin...", "placeholderActive": "Ask anything... (Enter to send)", "mode": "Mode", "suggestions": "Suggestions", "messageInput": "Message input", "stop": "Stop", "send": "Send", "tokensUsage": "In: {{input}} Out: {{output}} Total: {{total}}{{thoughtStr}}", "tokensTotal": "{{total}}k tokens", "generationFailed": "Generation failed.", "attach": "Attach file", "reference": "Reference", "mention": "Mention", "snippets": "Snippets", "snippetsEmpty": "No snippets. Click to add in Settings.", "selectModel": "Select model", "stopReasonMaxTokens": "Reached maximum token limit", "stopReasonMaxTurnRequests": "Reached maximum turn limit", "stopReasonRefusal": "Model refused to respond", "stopReasonCancelled": "Generation was cancelled", "voiceInput": "Voice input", "selectVoiceInputDevice": "Select microphone", "stopVoiceInput": "Stop voice input", "voiceInputNotConfigured": "Configure voice input in Settings", "noAudioInputDevices": "No audio input devices found" };
|
|
16897
16900
|
const filePanel$1 = { "title": "Files", "emptyDirectory": "Empty directory", "newFile": "New File", "newFolder": "New Folder", "rename": "Rename", "copyPath": "Copy Path", "copyRelativePath": "Copy Relative Path", "revealInFinder": "Reveal in Finder", "openInEditor": "Open in {{editor}}", "delete": "Delete", "deleteConfirmSingle": 'How would you like to delete "{{name}}"?', "deleteConfirmMultiple": "How would you like to delete {{count}} items?", "dragItems": "{{count}} items", "cancel": "Cancel", "moveToTrash": "Move to Trash", "moveToRecycleBin": "Move to Recycle Bin", "moveConfirmTitle": "Move", "moveConfirmSingle": 'Move "{{name}}" to "{{dest}}"?', "moveConfirmMultiple": 'Move {{count}} items to "{{dest}}"?', "moveConfirmSingleToRoot": 'Move "{{name}}" to the root directory?', "moveConfirmMultipleToRoot": "Move {{count}} items to the root directory?", "loading": "Loading...", "collapseFolders": "Collapse Folders", "refresh": "Refresh", "addToChat": "Add to Chat", "noProject": "No project selected" };
|
|
16898
16901
|
const toolBubble$1 = { "tool": "Tool", "stop": "Stop", "stopping": "Stopping…", "result": "Result", "terminal": "Terminal" };
|
|
16899
16902
|
const imageView$1 = { "fallbackAlt": "Image" };
|
|
@@ -16926,6 +16929,7 @@ const en = {
|
|
|
16926
16929
|
contextMenu: contextMenu$1,
|
|
16927
16930
|
settings: settings$1,
|
|
16928
16931
|
chat: chat$1,
|
|
16932
|
+
tokenUsage: tokenUsage$1,
|
|
16929
16933
|
planBubble: planBubble$1,
|
|
16930
16934
|
constant: constant$1,
|
|
16931
16935
|
chatHeader: chatHeader$1,
|
|
@@ -16957,15 +16961,16 @@ const en = {
|
|
|
16957
16961
|
imageGeneration: imageGeneration$1,
|
|
16958
16962
|
automation: automation$1
|
|
16959
16963
|
};
|
|
16960
|
-
const sidebar = { "welcome": "欢迎使用", "skills": "技能", "automation": "自动化", "projects": "项目", "noProjects": "暂无项目", "noProjectsHint": "添加一个项目文件夹开始", "addProject": "添加项目", "noAgentsHint": "请先配置 Agent", "configureAgent": "配置 Agent", "revealInFinder": "在访达中显示", "rename": "重命名", "delete": "删除", "renameProject": "重命名项目", "renameChat": "重命名会话", "deleteChat": "删除会话", "enterNewProjectName": "请输入新的项目名称。", "enterNewChatName": "请输入新的会话名称。", "addProjectTitle": "添加项目", "enterProjectPath": "请输入服务器上的项目绝对路径:", "pathCannotBeEmpty": "路径不能为空", "webuiEnabled": "已启用 WebUI", "deleteProject": "删除项目", "deleteProjectConfirm": "是否删除项目“{{title}}”及其所有会话?\n此操作无法撤销。", "deleteChatConfirm": "是否删除会话“{{title}}”?\n此操作无法撤销。", "cancel": "取消", "save": "保存", "settings": "设置", "agents": "智能体", "addProjectFailed": "添加项目失败。", "newChatFailed": "创建新会话失败。", "loadSessionFailed": "加载会话失败。", "revealInFinderFailed": "在访达中显示失败。", "openInEditorFailed": "在编辑器中打开失败。", "projectExists": "项目已存在。", "projectNameEmpty": "项目名称不能为空。", "chatNameEmpty": "会话名称不能为空。", "newChat": "新会话", "projectActions": "项目操作:{{title}}", "createChatInProject": "在 {{title}} 中创建会话", "chatActions": "会话操作:{{title}}", "ilinkSetActive": "设为微信活跃会话", "ilinkUnsetActive": "取消微信活跃", "collapse": "收起侧边栏", "expand": "展开侧边栏", "updated": "更新于", "created": "创建于", "newSessionDialog": { "title": "新建会话", "agent": "智能体", "selectAgent": "选择智能体", "mcp": "MCP", "noMcp": "未配置 MCP 服务器", "permission": "权限", "permissionAsk": "每次询问", "permissionAllowAll": "全部允许", "create": "创建" } };
|
|
16964
|
+
const sidebar = { "welcome": "欢迎使用", "skills": "技能", "automation": "自动化", "projects": "项目", "noProjects": "暂无项目", "noProjectsHint": "添加一个项目文件夹开始", "addProject": "添加项目", "noAgentsHint": "请先配置 Agent", "configureAgent": "配置 Agent", "revealInFinder": "在访达中显示", "rename": "重命名", "delete": "删除", "renameProject": "重命名项目", "renameChat": "重命名会话", "deleteChat": "删除会话", "enterNewProjectName": "请输入新的项目名称。", "enterNewChatName": "请输入新的会话名称。", "addProjectTitle": "添加项目", "enterProjectPath": "请输入服务器上的项目绝对路径:", "pathCannotBeEmpty": "路径不能为空", "webuiEnabled": "已启用 WebUI", "deleteProject": "删除项目", "deleteProjectConfirm": "是否删除项目“{{title}}”及其所有会话?\n此操作无法撤销。", "deleteChatConfirm": "是否删除会话“{{title}}”?\n此操作无法撤销。", "cancel": "取消", "save": "保存", "settings": "设置", "agents": "智能体", "addProjectFailed": "添加项目失败。", "newChatFailed": "创建新会话失败。", "loadSessionFailed": "加载会话失败。", "revealInFinderFailed": "在访达中显示失败。", "openInEditorFailed": "在编辑器中打开失败。", "projectExists": "项目已存在。", "projectNameEmpty": "项目名称不能为空。", "chatNameEmpty": "会话名称不能为空。", "newChat": "新会话", "projectActions": "项目操作:{{title}}", "createChatInProject": "在 {{title}} 中创建会话", "chatActions": "会话操作:{{title}}", "ilinkSetActive": "设为微信活跃会话", "ilinkUnsetActive": "取消微信活跃", "collapse": "收起侧边栏", "expand": "展开侧边栏", "updated": "更新于", "created": "创建于", "sessionCount": "{{count}} 个会话", "newSessionDialog": { "title": "新建会话", "agent": "智能体", "selectAgent": "选择智能体", "mcp": "MCP", "noMcp": "未配置 MCP 服务器", "permission": "权限", "permissionAsk": "每次询问", "permissionAllowAll": "全部允许", "create": "创建" } };
|
|
16961
16965
|
const skills = { "title": "技能", "installed": { "label": "已安装", "noDescription": "暂无描述。", "revealInFinder": "在访达中显示", "viewSkill": "查看 SKILL.md", "uninstall": "卸载", "uninstallTitle": "卸载技能", "uninstallConfirm": "确定要卸载 {{name}} 吗?", "cancel": "取消", "uninstalledSuccess": "技能 {{name}} 已卸载", "uninstallFailed": "卸载失败:{{message}}", "revealFailed": "在访达中显示失败:{{message}}", "loadFailed": "加载技能失败", "loadContentFailed": "加载技能内容出错:{{message}}", "noSkills": "暂无安装的技能" }, "skillsSh": { "label": "skills.sh", "title": "探索技能", "desc": "浏览并安装社区提供的技能,以增强你的 Agent 能力。", "searchPlaceholder": "搜索技能(例如:pr-review, react-best-practices)...", "install": "安装", "installSuccess": "技能 {{name}} 已安装", "installFailed": "安装失败", "noResults": "未找到相关技能", "installs": "{{count}} 次安装", "installedStatus": "已安装", "authorPrefix": "作者: " } };
|
|
16962
16966
|
const contextMenu = { "cut": "剪切", "copy": "复制", "paste": "粘贴", "selectAll": "全选" };
|
|
16963
|
-
const settings = { "themeDesc": "自定义应用的外观", "languageDesc": "选择应用显示的语言", "title": "设置", "general": { "title": "通用", "desc": "管理应用设置。", "theme": "主题", "light": "浅色", "dark": "深色", "system": "跟随系统", "language": "语言", "english": "English", "chinese": "简体中文", "saveThemeFailed": "保存主题设置失败。", "saveLanguageFailed": "保存语言设置失败。", "groupAppearance": "外观", "groupProject": "项目", "autoWatchFiles": "自动监听文件", "autoWatchFilesDesc": "自动监听项目文件变更", "saveFileWatcherFailed": "保存文件监听设置失败。", "groupNetwork": "网络", "proxy": "网络代理", "proxyDesc": "配置 Fello 的网络代理,应用于 Node 请求、子进程与界面。", "proxyEdit": "修改代理设置", "proxyOff": "直连", "proxySystem": "跟随系统", "groupSound": "音效", "soundEnabled": "音效", "soundEnabledDesc": "播放通知音效", "soundVolume": "音量", "soundVolumeDesc": "调整通知音量", "soundTheme": "音效风格", "soundThemeDesc": "选择音效风格", "soundSoft": "柔和", "soundCrisp": "清脆", "soundTest": "试听", "soundTestDesc": "预览当前音效效果", "soundTestPlay": "播放", "saveSoundFailed": "保存音效设置失败。", "groupEditor": "编辑器", "editor": "使用编辑器打开", "editorDesc": "选择用于打开文件的编辑器", "selectEditor": "选择编辑器", "saveEditorFailed": "保存编辑器设置失败。" }, "agents": { "desc": "管理智能体的配置和启动命令。", "description": "配置智能体", "title": "智能体", "guide": "使用手册", "addStdioAgent": "通过 ACP Agent 添加", "addApiAgent": "通过 API Key 添加", "editStdioAgent": "编辑 ACP Agent", "editApiAgent": "编辑 API Agent", "dialogDesc": "配置智能体 ID、命令、参数和环境变量。", "apiDialogDesc": "配置 API 智能体的提供商、端点和认证信息。", "agentId": "智能体 ID (名称)", "apiProvider": "提供商", "apiBaseUrl": "Base URL", "apiKey": "API Key", "apiHeaders": "请求头 (JSON)", "contextWindowTokens": "上下文窗口 (token)", "modelIdTemplate": "Model Id 模版", "models": "模型列表 (每行一个)", "modelsHint": "通常无需填写,会自动获取。仅在接口未返回所需模型时手动指定", "command": "命令", "args": "参数", "envVars": "环境变量 (JSON)", "envJson": "环境变量 (JSON)", "quickPreset": "快速预设", "cancel": "取消", "save": "保存", "edit": "编辑", "delete": "删除", "dragToReorder": "拖拽排序", "noAgents": "未配置任何智能体", "errorIdCommand": "ID 和命令不能为空。", "errorDuplicateId": "已存在具有该 ID 的智能体。", "errorEnvJson": "环境变量必须是有效的 JSON 对象。", "errorContextWindowTokens": "上下文窗口必须为正整数。", "updateFailed": "更新配置失败。", "confirmDeleteTitle": "删除智能体", "confirmDeleteDesc": "确定要删除此智能体吗?此操作无法撤销。", "confirmDeleteDescWithSessions": "确定要删除此智能体吗?{{count}} 个会话也将被同时删除。此操作无法撤销。", "reset": "重置智能体", "resetSuccess": "智能体已重置。", "resetFailed": "重置智能体失败。", "deleteAllSessions": "删除所有会话", "confirmDeleteAllSessionsTitle": "删除所有会话", "confirmDeleteAllSessionsDesc": "此智能体的所有会话将被永久删除。此操作无法撤销。", "deleteAllSessionsSuccess": "已删除 {{count}} 个会话。", "deleteAllSessionsFailed": "删除会话失败。", "validation": { "enterId": "请输入智能体 ID。", "idFormat": "只允许字母、数字、_ 和 -。", "selectProvider": "请选择提供商。", "enterBaseUrl": "请输入 Base URL。", "enterApiKey": "请输入 API Key。", "enterCommand": "请输入命令。", "jsonObject": "必须是有效的 JSON 对象(值为字符串)。", "positiveInteger": "必须为正整数。" } }, "mcp": { "desc": "管理 MCP 服务器的配置和启动命令。", "description": "配置 MCP 服务器", "title": "MCP 服务器", "guide": "使用手册", "addMcp": "添加 MCP 服务器", "addStdioMcp": "添加 Stdio MCP", "addHttpMcp": "添加 HTTP MCP", "addSseMcp": "添加 SSE MCP", "recommended": { "exa": { "name": "Exa", "desc": "Exa MCP 服务器 — AI 网络搜索" } }, "editMcp": "编辑 MCP 服务器", "dialogDesc": "配置 MCP 服务器 ID、命令、参数和环境变量。", "mcpId": "MCP 服务器 ID (名称)", "command": "命令", "args": "参数", "envVars": "环境变量 (JSON)", "envJson": "环境变量 (JSON)", "url": "URL", "headers": "请求头 (JSON)", "headersJson": "请求头 (JSON)", "httpDialogDesc": "配置 MCP 服务器 ID、HTTP URL 和请求头。", "sseDialogDesc": "配置 MCP 服务器 ID、SSE 端点 URL 和请求头。", "cancel": "取消", "save": "保存", "edit": "编辑", "delete": "删除", "dragToReorder": "拖拽排序", "noMcpServers": "未配置任何 MCP 服务器", "errorIdRequired": "ID 不能为空。", "errorUrlRequired": "URL 不能为空。", "errorIdCommand": "ID 和命令不能为空。", "errorDuplicateId": "已存在具有该 ID 的 MCP 服务器。", "errorHeadersJson": "请求头必须是有效的 JSON 对象。", "errorEnvJson": "环境变量必须是有效的 JSON 对象。", "updateFailed": "更新配置失败。", "confirmDeleteTitle": "删除 MCP 服务器", "confirmDeleteDesc": "确定要删除此 MCP 服务器吗?此操作无法撤销。", "validation": { "enterId": "请输入服务器 ID。", "idFormat": "只允许字母、数字、_ 和 -。", "enterCommand": "请输入命令。", "enterUrl": "请输入 URL。", "jsonObject": "必须是有效的 JSON 对象(值为字符串)。" } }, "webui": { "desc": "配置对 Fello 界面的远程访问。", "title": "WebUI", "guide": "使用手册", "enable": "启用 WebUI", "enableDesc": "允许通过浏览器远程访问 Fello 界面", "enableAccess": "启用 WebUI 访问", "port": "端口:", "token": "Token:", "autoGenerated": "自动生成", "accessUrl": "访问地址", "accessDesc": "注意:此地址包含临时访问令牌,应用重启后将失效。", "copy": "复制", "note": "注意:此地址包含临时访问令牌,应用重启后将失效。", "updateFailed": "更新配置失败。", "disabledInWebUI": "WebUI 配置在浏览器中不可用。" }, "ilink": { "title": "微信 iLink", "guide": "使用手册", "description": "通过 iLink Bot API 将 Fello 接入微信。连接后,微信中会出现一个 ClawBot 联系人,你可以随时随地与 AI 智能体对话。", "connected": "已连接", "notConnected": "未连接", "notConnectedHint": "使用微信扫描二维码连接", "login": "登录", "loggingIn": "等待扫码...", "disconnect": "断开连接", "scanPrompt": "使用微信扫描二维码登录", "qrcodeExpired": "二维码已过期,请重新获取", "scanned": "已扫码!请在手机上确认登录。", "browserOpened": "二维码已在浏览器中打开,请使用微信扫码登录。", "activeSession": "微信活跃会话", "activeSessionHint": "微信消息将路由到此会话。可在侧边栏右键会话设为活跃。", "selectSession": "-- 选择一个会话 --", "none": "-- 无 --", "howItWorks": "使用说明", "step1": "点击「登录」在浏览器中打开二维码。", "step2": "使用微信扫描二维码。", "step3": "微信中出现「ClawBot」联系人。", "step4": "与 ClawBot 聊天 — 消息将路由到上方选择的活跃会话。", "step5": "在侧边栏右键任意会话即可设为微信活跃会话。", "useOriginalImage": "使用原图", "useOriginalImageDesc": "向模型发送原始大小的图片(消耗更多 token)。关闭时使用缩略图。", "keepaliveMaxCount": "保活消息", "keepaliveMaxCountDesc": "AI 思考时最大连续保活消息数。", "commandsTitle": "微信 ! 命令", "commandsDesc": "在微信中发送以 ! 或 ! 开头的消息即为命令。命令会中断当前 Agent 执行(如正在生成回复则立即取消),然后执行对应操作。", "cmdSwitchSession": "切换会话", "cmdSwitchSessionDesc": "列出所有会话(按项目分组),回复序号切换到对应会话。", "cmdNewSession": "新建会话", "cmdNewSessionDesc": "列出所有项目,回复序号在该项目下创建新会话并自动切换。", "cmdSwitchModel": "切换模型", "cmdSwitchModelDesc": "列出当前会话可用的模型,回复序号切换(仅 API Agent 支持)。", "cmdSnippet": "快捷短语", "cmdSnippetDesc": "列出已配置的 Snippets,回复序号将对应内容发送给 Agent。", "cmdStatus": "查看状态", "cmdStatusDesc": "显示当前活跃会话信息(标题、项目、Agent、Features、MCP 状态)。" }, "snippets": { "title": "快捷短语", "desc": "管理可复用的文本片段,快速插入到对话中。", "description": "配置快捷短语", "add": "添加短语", "edit": "编辑短语", "delete": "删除", "save": "保存", "cancel": "取消", "empty": "暂无快捷短语", "saveFailed": "保存快捷短语失败。", "titleLabel": "标题", "titlePlaceholder": "标题", "contentLabel": "内容", "contentPlaceholder": "内容", "dialogDesc": "配置短语的标题和内容。", "confirmDeleteTitle": "删除短语", "confirmDeleteDesc": "确定要删除此短语吗?此操作无法撤销。", "validation": { "enterTitle": "请输入标题。", "enterContent": "请输入内容。" } }, "memory": { "title": "记忆", "desc": "查看和管理项目级持久化记忆。", "projectMemories": "项目记忆", "refresh": "刷新", "clear": "清除", "cleared": "记忆已清除。", "clearFailed": "清除记忆失败。", "delete": "删除", "deleted": "记忆条目已删除。", "deleteFailed": "删除记忆条目失败。", "confirmDeleteTitle": "删除记忆条目", "confirmDeleteDesc": "确定要删除此记忆条目吗?此操作不可撤销。", "confirmClearTitle": "清除记忆", "confirmClearDesc": '确定要清除项目 "{{title}}" 的所有记忆吗?此操作不可撤销。', "revealInFinder": "在访达中显示", "revealFailed": "显示文件失败。", "noFile": "未找到记忆文件。", "noProjects": "未找到项目。", "empty": "暂无记忆。", "entries": "条目" }, "imageGeneration": { "title": "图片生成", "desc": "配置图片生成服务提供商。激活的提供商将作为工具供 Agent 使用。", "providers": "提供商", "add": "添加提供商", "addProvider": "添加提供商", "editProvider": "编辑提供商", "dialogDesc": "配置图片生成的提供商、端点和认证信息。", "edit": "编辑", "delete": "删除", "empty": "尚未配置图片生成提供商", "updateFailed": "更新配置失败。", "confirmDeleteTitle": "删除提供商", "confirmDeleteDesc": "确定要删除此图片生成提供商吗?", "cancel": "取消", "save": "保存", "form": { "name": "名称", "provider": "提供商", "baseUrl": "Base URL", "baseUrlHint": "请求将发送至 {baseUrl}/images/generations", "apiKey": "API Key", "headers": "请求头 (JSON)", "extraBody": "额外参数 (JSON)", "extraBodyHint": "合并到请求体中的额外参数(如 quality、style 等厂商特有参数)。", "model": "模型" }, "validation": { "enterName": "请输入名称。", "selectProvider": "请选择提供商。", "enterBaseUrl": "请输入 Base URL。", "enterApiKey": "请输入 API Key。", "enterModel": "请输入模型名称。", "jsonObject": "必须是有效的 JSON 对象(值为字符串)。" } }, "proxy": { "title": "网络代理", "mode": "代理模式", "off": "直连", "offDesc": "不使用代理,直接连接", "manual": "手动", "manualDesc": "手动指定代理服务器,所有网络请求走代理", "system": "跟随系统", "systemDesc": "使用系统代理设置(macOS/Windows 或环境变量)", "httpProxy": "HTTP 代理", "httpProxyPlaceholder": "例如 http://127.0.0.1:7890", "httpsProxy": "HTTPS 代理(可选)", "httpsProxyHint": "留空时回退到 HTTP 代理。", "noProxy": "不使用代理(可选)", "noProxyPlaceholder": "例如 localhost,127.0.0.1,*.internal", "username": "用户名(可选)", "password": "密码(可选)", "cancel": "取消", "save": "保存", "later": "稍后", "restartNow": "立即重启", "restartTitle": "需要重启", "restartDesc": "代理设置已保存,重启 Fello 后新的代理配置才会生效。", "restartManualDesc": "代理设置已保存,请手动重启 Fello 服务端进程后生效。", "saveFailed": "保存代理设置失败。", "validation": { "httpProxyRequired": "手动模式下必须填写 HTTP 代理地址。", "invalidProxyUrl": "{{field}} 应以 http:// 或 https:// 开头,或使用 host:port 形式(例如 127.0.0.1:7890)。" } } };
|
|
16967
|
+
const settings = { "themeDesc": "自定义应用的外观", "languageDesc": "选择应用显示的语言", "title": "设置", "general": { "title": "通用", "desc": "管理应用设置。", "theme": "主题", "light": "浅色", "dark": "深色", "system": "跟随系统", "language": "语言", "english": "English", "chinese": "简体中文", "saveThemeFailed": "保存主题设置失败。", "saveLanguageFailed": "保存语言设置失败。", "groupAppearance": "外观", "groupProject": "项目", "autoWatchFiles": "自动监听文件", "autoWatchFilesDesc": "自动监听项目文件变更", "saveFileWatcherFailed": "保存文件监听设置失败。", "groupNetwork": "网络", "proxy": "网络代理", "proxyDesc": "配置 Fello 的网络代理,应用于 Node 请求、子进程与界面。", "proxyEdit": "修改代理设置", "proxyOff": "直连", "proxySystem": "跟随系统", "groupSound": "音效", "soundEnabled": "音效", "soundEnabledDesc": "播放通知音效", "soundVolume": "音量", "soundVolumeDesc": "调整通知音量", "soundTheme": "音效风格", "soundThemeDesc": "选择音效风格", "soundSoft": "柔和", "soundCrisp": "清脆", "soundTest": "试听", "soundTestDesc": "预览当前音效效果", "soundTestPlay": "播放", "saveSoundFailed": "保存音效设置失败。", "groupEditor": "编辑器", "editor": "使用编辑器打开", "editorDesc": "选择用于打开文件的编辑器", "selectEditor": "选择编辑器", "saveEditorFailed": "保存编辑器设置失败。" }, "agents": { "desc": "管理智能体的配置和启动命令。", "description": "配置智能体", "title": "智能体", "guide": "使用手册", "addStdioAgent": "通过 ACP Agent 添加", "addApiAgent": "通过 API Key 添加", "editStdioAgent": "编辑 ACP Agent", "editApiAgent": "编辑 API Agent", "dialogDesc": "配置智能体 ID、命令、参数和环境变量。", "apiDialogDesc": "配置 API 智能体的提供商、端点和认证信息。", "agentId": "智能体 ID (名称)", "apiProvider": "提供商", "apiBaseUrl": "Base URL", "apiKey": "API Key", "apiHeaders": "请求头 (JSON)", "contextWindowTokens": "上下文窗口 (token)", "modelIdTemplate": "Model Id 模版", "models": "模型列表 (每行一个)", "modelsHint": "通常无需填写,会自动获取。仅在接口未返回所需模型时手动指定", "command": "命令", "args": "参数", "envVars": "环境变量 (JSON)", "envJson": "环境变量 (JSON)", "quickPreset": "快速预设", "cancel": "取消", "save": "保存", "edit": "编辑", "delete": "删除", "dragToReorder": "拖拽排序", "noAgents": "未配置任何智能体", "errorIdCommand": "ID 和命令不能为空。", "errorDuplicateId": "已存在具有该 ID 的智能体。", "errorEnvJson": "环境变量必须是有效的 JSON 对象。", "errorContextWindowTokens": "上下文窗口必须为正整数。", "updateFailed": "更新配置失败。", "confirmDeleteTitle": "删除智能体", "confirmDeleteDesc": "确定要删除此智能体吗?此操作无法撤销。", "confirmDeleteDescWithSessions": "确定要删除此智能体吗?{{count}} 个会话也将被同时删除。此操作无法撤销。", "reset": "重置智能体", "resetSuccess": "智能体已重置。", "resetFailed": "重置智能体失败。", "deleteAllSessions": "删除所有会话", "confirmDeleteAllSessionsTitle": "删除所有会话", "confirmDeleteAllSessionsDesc": "此智能体的所有会话将被永久删除。此操作无法撤销。", "deleteAllSessionsSuccess": "已删除 {{count}} 个会话。", "deleteAllSessionsFailed": "删除会话失败。", "validation": { "enterId": "请输入智能体 ID。", "idFormat": "只允许字母、数字、_ 和 -。", "selectProvider": "请选择提供商。", "enterBaseUrl": "请输入 Base URL。", "enterApiKey": "请输入 API Key。", "enterCommand": "请输入命令。", "jsonObject": "必须是有效的 JSON 对象(值为字符串)。", "positiveInteger": "必须为正整数。" } }, "mcp": { "desc": "管理 MCP 服务器的配置和启动命令。", "description": "配置 MCP 服务器", "title": "MCP 服务器", "guide": "使用手册", "addMcp": "添加 MCP 服务器", "addStdioMcp": "添加 Stdio MCP", "addHttpMcp": "添加 HTTP MCP", "addSseMcp": "添加 SSE MCP", "recommended": { "exa": { "name": "Exa", "desc": "Exa MCP 服务器 — AI 网络搜索" } }, "editMcp": "编辑 MCP 服务器", "dialogDesc": "配置 MCP 服务器 ID、命令、参数和环境变量。", "mcpId": "MCP 服务器 ID (名称)", "command": "命令", "args": "参数", "envVars": "环境变量 (JSON)", "envJson": "环境变量 (JSON)", "url": "URL", "headers": "请求头 (JSON)", "headersJson": "请求头 (JSON)", "httpDialogDesc": "配置 MCP 服务器 ID、HTTP URL 和请求头。", "sseDialogDesc": "配置 MCP 服务器 ID、SSE 端点 URL 和请求头。", "cancel": "取消", "save": "保存", "edit": "编辑", "delete": "删除", "dragToReorder": "拖拽排序", "noMcpServers": "未配置任何 MCP 服务器", "errorIdRequired": "ID 不能为空。", "errorUrlRequired": "URL 不能为空。", "errorIdCommand": "ID 和命令不能为空。", "errorDuplicateId": "已存在具有该 ID 的 MCP 服务器。", "errorHeadersJson": "请求头必须是有效的 JSON 对象。", "errorEnvJson": "环境变量必须是有效的 JSON 对象。", "updateFailed": "更新配置失败。", "confirmDeleteTitle": "删除 MCP 服务器", "confirmDeleteDesc": "确定要删除此 MCP 服务器吗?此操作无法撤销。", "validation": { "enterId": "请输入服务器 ID。", "idFormat": "只允许字母、数字、_ 和 -。", "enterCommand": "请输入命令。", "enterUrl": "请输入 URL。", "jsonObject": "必须是有效的 JSON 对象(值为字符串)。" } }, "webui": { "desc": "配置对 Fello 界面的远程访问。", "title": "WebUI", "guide": "使用手册", "enable": "启用 WebUI", "enableDesc": "允许通过浏览器远程访问 Fello 界面", "enableAccess": "启用 WebUI 访问", "port": "端口:", "token": "Token:", "autoGenerated": "自动生成", "accessUrl": "访问地址", "accessDesc": "注意:此地址包含临时访问令牌,应用重启后将失效。", "copy": "复制", "note": "注意:此地址包含临时访问令牌,应用重启后将失效。", "updateFailed": "更新配置失败。", "disabledInWebUI": "WebUI 配置在浏览器中不可用。" }, "ilink": { "title": "微信 iLink", "guide": "使用手册", "description": "通过 iLink Bot API 将 Fello 接入微信。连接后,微信中会出现一个 ClawBot 联系人,你可以随时随地与 AI 智能体对话。", "connected": "已连接", "notConnected": "未连接", "notConnectedHint": "使用微信扫描二维码连接", "login": "登录", "loggingIn": "等待扫码...", "disconnect": "断开连接", "scanPrompt": "使用微信扫描二维码登录", "qrcodeExpired": "二维码已过期,请重新获取", "scanned": "已扫码!请在手机上确认登录。", "browserOpened": "二维码已在浏览器中打开,请使用微信扫码登录。", "activeSession": "微信活跃会话", "activeSessionHint": "微信消息将路由到此会话。可在侧边栏右键会话设为活跃。", "selectSession": "-- 选择一个会话 --", "none": "-- 无 --", "howItWorks": "使用说明", "step1": "点击「登录」在浏览器中打开二维码。", "step2": "使用微信扫描二维码。", "step3": "微信中出现「ClawBot」联系人。", "step4": "与 ClawBot 聊天 — 消息将路由到上方选择的活跃会话。", "step5": "在侧边栏右键任意会话即可设为微信活跃会话。", "useOriginalImage": "使用原图", "useOriginalImageDesc": "向模型发送原始大小的图片(消耗更多 token)。关闭时使用缩略图。", "keepaliveMaxCount": "保活消息", "keepaliveMaxCountDesc": "AI 思考时最大连续保活消息数。", "commandsTitle": "微信 ! 命令", "commandsDesc": "在微信中发送以 ! 或 ! 开头的消息即为命令。命令会中断当前 Agent 执行(如正在生成回复则立即取消),然后执行对应操作。", "cmdSwitchSession": "切换会话", "cmdSwitchSessionDesc": "列出所有会话(按项目分组),回复序号切换到对应会话。", "cmdNewSession": "新建会话", "cmdNewSessionDesc": "列出所有项目,回复序号在该项目下创建新会话并自动切换。", "cmdSwitchModel": "切换模型", "cmdSwitchModelDesc": "列出当前会话可用的模型,回复序号切换(仅 API Agent 支持)。", "cmdSnippet": "快捷短语", "cmdSnippetDesc": "列出已配置的 Snippets,回复序号将对应内容发送给 Agent。", "cmdStatus": "查看状态", "cmdStatusDesc": "显示当前活跃会话信息(标题、项目、Agent、Features、MCP 状态)。" }, "snippets": { "title": "快捷短语", "desc": "管理可复用的文本片段,快速插入到对话中。", "description": "配置快捷短语", "add": "添加短语", "edit": "编辑短语", "delete": "删除", "save": "保存", "cancel": "取消", "empty": "暂无快捷短语", "saveFailed": "保存快捷短语失败。", "titleLabel": "标题", "titlePlaceholder": "标题", "contentLabel": "内容", "contentPlaceholder": "内容", "dialogDesc": "配置短语的标题和内容。", "confirmDeleteTitle": "删除短语", "confirmDeleteDesc": "确定要删除此短语吗?此操作无法撤销。", "validation": { "enterTitle": "请输入标题。", "enterContent": "请输入内容。" } }, "memory": { "title": "记忆", "desc": "查看和管理项目级持久化记忆。", "projectMemories": "项目记忆", "refresh": "刷新", "clear": "清除", "cleared": "记忆已清除。", "clearFailed": "清除记忆失败。", "delete": "删除", "deleted": "记忆条目已删除。", "deleteFailed": "删除记忆条目失败。", "confirmDeleteTitle": "删除记忆条目", "confirmDeleteDesc": "确定要删除此记忆条目吗?此操作不可撤销。", "confirmClearTitle": "清除记忆", "confirmClearDesc": '确定要清除项目 "{{title}}" 的所有记忆吗?此操作不可撤销。', "revealInFinder": "在访达中显示", "revealFailed": "显示文件失败。", "noFile": "未找到记忆文件。", "noProjects": "未找到项目。", "empty": "暂无记忆。", "entries": "条目" }, "imageGeneration": { "title": "图片生成", "desc": "配置图片生成服务提供商。激活的提供商将作为工具供 Agent 使用。", "providers": "提供商", "add": "添加提供商", "addProvider": "添加提供商", "editProvider": "编辑提供商", "dialogDesc": "配置图片生成的提供商、端点和认证信息。", "edit": "编辑", "delete": "删除", "empty": "尚未配置图片生成提供商", "updateFailed": "更新配置失败。", "confirmDeleteTitle": "删除提供商", "confirmDeleteDesc": "确定要删除此图片生成提供商吗?", "cancel": "取消", "save": "保存", "form": { "name": "名称", "provider": "提供商", "baseUrl": "Base URL", "baseUrlHint": "请求将发送至 {baseUrl}/images/generations", "apiKey": "API Key", "headers": "请求头 (JSON)", "extraBody": "额外参数 (JSON)", "extraBodyHint": "合并到请求体中的额外参数(如 quality、style 等厂商特有参数)。", "model": "模型" }, "validation": { "enterName": "请输入名称。", "selectProvider": "请选择提供商。", "enterBaseUrl": "请输入 Base URL。", "enterApiKey": "请输入 API Key。", "enterModel": "请输入模型名称。", "jsonObject": "必须是有效的 JSON 对象(值为字符串)。" } }, "speechToText": { "title": "语音识别", "desc": "配置聊天输入框使用的实时语音识别服务商。", "guide": "使用手册", "providers": "服务商", "add": "添加服务商", "addProvider": "添加服务商", "editProvider": "编辑服务商", "dialogDesc": "配置实时语音输入的服务商和认证信息。", "edit": "编辑", "delete": "删除", "empty": "尚未配置语音识别服务商", "updateFailed": "更新配置失败。", "confirmDeleteTitle": "删除服务商", "confirmDeleteDesc": "确定删除这个语音识别服务商吗?", "cancel": "取消", "save": "保存", "validation": { "enterName": "请输入名称。", "selectProvider": "请选择服务商。", "enterApiKey": "请输入 API Key。", "enterAppId": "请输入 App ID。", "enterApiSecret": "请输入 API Secret。" }, "form": { "name": "名称", "provider": "服务商", "appId": "App ID", "apiKey": "API Key", "apiSecret": "API Secret", "optional": "(可选)", "language": "语言(可选)" } }, "proxy": { "title": "网络代理", "mode": "代理模式", "off": "直连", "offDesc": "不使用代理,直接连接", "manual": "手动", "manualDesc": "手动指定代理服务器,所有网络请求走代理", "system": "跟随系统", "systemDesc": "使用系统代理设置(macOS/Windows 或环境变量)", "httpProxy": "HTTP 代理", "httpProxyPlaceholder": "例如 http://127.0.0.1:7890", "httpsProxy": "HTTPS 代理(可选)", "httpsProxyHint": "留空时回退到 HTTP 代理。", "noProxy": "不使用代理(可选)", "noProxyPlaceholder": "例如 localhost,127.0.0.1,*.internal", "username": "用户名(可选)", "password": "密码(可选)", "cancel": "取消", "save": "保存", "later": "稍后", "restartNow": "立即重启", "restartTitle": "需要重启", "restartDesc": "代理设置已保存,重启 Fello 后新的代理配置才会生效。", "restartManualDesc": "代理设置已保存,请手动重启 Fello 服务端进程后生效。", "saveFailed": "保存代理设置失败。", "validation": { "httpProxyRequired": "手动模式下必须填写 HTTP 代理地址。", "invalidProxyUrl": "{{field}} 应以 http:// 或 https:// 开头,或使用 host:port 形式(例如 127.0.0.1:7890)。" } } };
|
|
16964
16968
|
const chat = { "failedToLoadSession": "加载会话失败。", "failedToUpdateMcpServers": "更新 MCP 服务器失败。" };
|
|
16969
|
+
const tokenUsage = { "title": "Token 使用明细", "loading": "加载中…", "noData": "暂无 Token 使用明细", "promptCount": "{{count}} 轮对话", "promptLabel": "第 {{count}} 轮对话", "noBreakdown": "此提示词没有详细的 Token 明细", "input": "输入", "output": "输出", "inputShort": "输入", "outputShort": "输出", "totalTokens": "总计", "thought": "思考", "cacheRead": "缓存读取", "cacheWrite": "缓存写入", "cached": "缓存", "tokens": "Token", "token": "Token", "sessionTotal": "会话总计", "systemPrompt": "系统提示词", "tools": "工具", "history": "历史消息", "userMessage": "用户消息", "inputComposition": "输入组成", "delta": "估算差值", "toolsDefinition": "工具定义", "toolsCount": "{{count}} 个工具 · {{tokens}} tokens", "more": "+{{count}} 项", "steps": "步骤", "stepsCount": "{{count}} 步", "toolCalls": "工具调用", "noCache": "未缓存", "text": "文本", "stepTime": "步骤耗时", "responseTime": "响应耗时", "arguments": "参数", "result": "结果", "execution": "执行耗时", "performance": "性能", "totalTime": "总耗时", "outputSpeed": "输出速度", "tokensPerSecond": "Token/s", "firstToken": "首个 Token" };
|
|
16965
16970
|
const planBubble = { "title": "计划", "summary": "已完成 {{completed}} / {{total}}", "status": { "pending": "等待中", "inProgress": "进行中", "completed": "已完成" }, "priority": { "high": "高优先级", "medium": "中优先级", "low": "低优先级" } };
|
|
16966
16971
|
const constant = { "feature": { "title": "功能", "askUser": "向我提问", "skills": "技能", "shareToUser": "分享给用户", "search": "项目检索", "memory": "记忆", "imageGeneration": "图片生成" } };
|
|
16967
|
-
const chatHeader = { "sessionId": "会话编号", "openSessionFolder": "打开会话文件夹", "refresh": "重启会话", "closeSession": "关闭会话", "closingSession": "关闭中…", "failedToCloseSession": "关闭会话失败。", "contextWindow": "上下文窗口", "used": "已用", "size": "上限", "percentUsed": "已用 {{pct}}%", "remaining": "剩余 {{count}}", "lastTurn": "上一轮", "input": "输入", "output": "输出", "total": "总计", "thought": "思考", "cacheRead": "缓存读取", "cacheWrite": "缓存写入", "cost": "费用" };
|
|
16968
|
-
const chatInput = { "placeholderDisabled": "请先开启新的会话...", "placeholderActive": "有任何问题请问我... (回车发送)", "mode": "模式", "suggestions": "建议", "messageInput": "消息输入", "stop": "停止", "send": "发送", "tokensUsage": "输入: {{input}} 输出: {{output}} 总计: {{total}}{{thoughtStr}}", "tokensTotal": "{{total}}k tokens", "generationFailed": "生成失败。", "attach": "附加文件", "reference": "引用", "mention": "应用", "snippets": "快捷短语", "snippetsEmpty": "暂无短语,点击前往设置添加。", "selectModel": "选择模型", "stopReasonMaxTokens": "已达到最大 token 限制", "stopReasonMaxTurnRequests": "已达到最大轮次限制", "stopReasonRefusal": "模型拒绝回答", "stopReasonCancelled": "生成已取消" };
|
|
16972
|
+
const chatHeader = { "sessionId": "会话编号", "openSessionFolder": "打开会话文件夹", "projectId": "项目目录", "openProjectFolder": "打开项目文件夹", "refresh": "重启会话", "closeSession": "关闭会话", "closingSession": "关闭中…", "failedToCloseSession": "关闭会话失败。", "contextWindow": "上下文窗口", "used": "已用", "size": "上限", "percentUsed": "已用 {{pct}}%", "remaining": "剩余 {{count}}", "lastTurn": "上一轮", "input": "输入", "output": "输出", "total": "总计", "thought": "思考", "cacheRead": "缓存读取", "cacheWrite": "缓存写入", "cost": "费用", "viewBreakdown": "查看明细" };
|
|
16973
|
+
const chatInput = { "placeholderDisabled": "请先开启新的会话...", "placeholderActive": "有任何问题请问我... (回车发送)", "mode": "模式", "suggestions": "建议", "messageInput": "消息输入", "stop": "停止", "send": "发送", "tokensUsage": "输入: {{input}} 输出: {{output}} 总计: {{total}}{{thoughtStr}}", "tokensTotal": "{{total}}k tokens", "generationFailed": "生成失败。", "attach": "附加文件", "reference": "引用", "mention": "应用", "snippets": "快捷短语", "snippetsEmpty": "暂无短语,点击前往设置添加。", "selectModel": "选择模型", "stopReasonMaxTokens": "已达到最大 token 限制", "stopReasonMaxTurnRequests": "已达到最大轮次限制", "stopReasonRefusal": "模型拒绝回答", "stopReasonCancelled": "生成已取消", "voiceInput": "语音输入", "selectVoiceInputDevice": "选择麦克风", "stopVoiceInput": "停止语音输入", "voiceInputNotConfigured": "请先在设置中配置语音识别", "noAudioInputDevices": "未找到音频输入设备" };
|
|
16969
16974
|
const filePanel = { "title": "文件", "emptyDirectory": "空目录", "newFile": "新建文件", "newFolder": "新建文件夹", "rename": "重命名", "copyPath": "复制路径", "copyRelativePath": "复制相对路径", "revealInFinder": "在访达中显示", "openInEditor": "使用 {{editor}} 打开", "delete": "删除", "deleteConfirmSingle": "是否删除“{{name}}”?", "deleteConfirmMultiple": "是否删除选中的 {{count}} 个项目?", "dragItems": "{{count}} 个项目", "cancel": "取消", "moveToTrash": "移至废纸篓", "moveToRecycleBin": "移至回收站", "moveConfirmTitle": "移动", "moveConfirmSingle": "是否将“{{name}}”移动到“{{dest}}”?", "moveConfirmMultiple": "是否将 {{count}} 个项目移动到“{{dest}}”?", "moveConfirmSingleToRoot": "是否将“{{name}}”移动到根目录?", "moveConfirmMultipleToRoot": "是否将 {{count}} 个项目移动到根目录?", "loading": "加载中...", "collapseFolders": "折叠文件夹", "refresh": "刷新", "addToChat": "添加到对话", "noProject": "未选择项目" };
|
|
16970
16975
|
const toolBubble = { "tool": "工具", "stop": "停止", "stopping": "停止中…", "result": "结果", "terminal": "终端" };
|
|
16971
16976
|
const imageView = { "fallbackAlt": "图片" };
|
|
@@ -16998,6 +17003,7 @@ const zhCN = {
|
|
|
16998
17003
|
contextMenu,
|
|
16999
17004
|
settings,
|
|
17000
17005
|
chat,
|
|
17006
|
+
tokenUsage,
|
|
17001
17007
|
planBubble,
|
|
17002
17008
|
constant,
|
|
17003
17009
|
chatHeader,
|
|
@@ -20600,6 +20606,9 @@ bridge.on("prompt-start", (payload) => emit("prompt-start", payload));
|
|
|
20600
20606
|
bridge.on("prompt-end", (payload) => emit("prompt-end", payload));
|
|
20601
20607
|
bridge.on("schedules-changed", (payload) => emit("schedules-changed", payload));
|
|
20602
20608
|
bridge.on("task-update", (payload) => emit("task-update", payload));
|
|
20609
|
+
bridge.on("asr-transcript", (payload) => emit("asr-transcript", payload));
|
|
20610
|
+
bridge.on("asr-error", (payload) => emit("asr-error", payload));
|
|
20611
|
+
bridge.on("asr-closed", (payload) => emit("asr-closed", payload));
|
|
20603
20612
|
void invokeIPC("registerClient", { clientId }).catch(() => {
|
|
20604
20613
|
});
|
|
20605
20614
|
function calculateUserMessageChunk(state, subSessionId, update2, displayId, receivedAt) {
|
|
@@ -32869,6 +32878,7 @@ const Toaster2 = ({ ...props }) => {
|
|
|
32869
32878
|
{
|
|
32870
32879
|
theme: resolvedTheme,
|
|
32871
32880
|
position: "top-center",
|
|
32881
|
+
offset: "56px",
|
|
32872
32882
|
className: "toaster group",
|
|
32873
32883
|
icons: {
|
|
32874
32884
|
success: /* @__PURE__ */ jsxRuntimeExports.jsx(CircleCheck, { className: "size-4" }),
|
|
@@ -35060,6 +35070,9 @@ function DropdownMenuContent({
|
|
|
35060
35070
|
alignOffset = 0,
|
|
35061
35071
|
side = "bottom",
|
|
35062
35072
|
sideOffset = 4,
|
|
35073
|
+
// Reserve space below the draggable title bar (h-12 = 48px) so the popup
|
|
35074
|
+
// never overlaps the region that captures window-drag events at the top.
|
|
35075
|
+
collisionPadding = { top: 56, right: 5, bottom: 5, left: 5 },
|
|
35063
35076
|
className,
|
|
35064
35077
|
...props
|
|
35065
35078
|
}) {
|
|
@@ -35071,6 +35084,7 @@ function DropdownMenuContent({
|
|
|
35071
35084
|
alignOffset,
|
|
35072
35085
|
side,
|
|
35073
35086
|
sideOffset,
|
|
35087
|
+
collisionPadding,
|
|
35074
35088
|
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
35075
35089
|
MenuPopup,
|
|
35076
35090
|
{
|
|
@@ -42568,6 +42582,280 @@ function HoverCardContent({
|
|
|
42568
42582
|
}
|
|
42569
42583
|
) });
|
|
42570
42584
|
}
|
|
42585
|
+
function ContextMenuRoot(props) {
|
|
42586
|
+
const [anchor, setAnchor] = reactExports.useState({
|
|
42587
|
+
getBoundingClientRect() {
|
|
42588
|
+
return DOMRect.fromRect({
|
|
42589
|
+
width: 0,
|
|
42590
|
+
height: 0,
|
|
42591
|
+
x: 0,
|
|
42592
|
+
y: 0
|
|
42593
|
+
});
|
|
42594
|
+
}
|
|
42595
|
+
});
|
|
42596
|
+
const backdropRef = reactExports.useRef(null);
|
|
42597
|
+
const internalBackdropRef = reactExports.useRef(null);
|
|
42598
|
+
const actionsRef = reactExports.useRef(null);
|
|
42599
|
+
const positionerRef = reactExports.useRef(null);
|
|
42600
|
+
const allowMouseUpTriggerRef = reactExports.useRef(true);
|
|
42601
|
+
const initialCursorPointRef = reactExports.useRef(null);
|
|
42602
|
+
const id = useId();
|
|
42603
|
+
const contextValue = reactExports.useMemo(() => ({
|
|
42604
|
+
anchor,
|
|
42605
|
+
setAnchor,
|
|
42606
|
+
actionsRef,
|
|
42607
|
+
backdropRef,
|
|
42608
|
+
internalBackdropRef,
|
|
42609
|
+
positionerRef,
|
|
42610
|
+
allowMouseUpTriggerRef,
|
|
42611
|
+
initialCursorPointRef,
|
|
42612
|
+
rootId: id
|
|
42613
|
+
}), [anchor, id]);
|
|
42614
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuRootContext.Provider, {
|
|
42615
|
+
value: contextValue,
|
|
42616
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(MenuRootContext.Provider, {
|
|
42617
|
+
value: void 0,
|
|
42618
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(MenuRoot, {
|
|
42619
|
+
...props
|
|
42620
|
+
})
|
|
42621
|
+
})
|
|
42622
|
+
});
|
|
42623
|
+
}
|
|
42624
|
+
const LONG_PRESS_DELAY = 500;
|
|
42625
|
+
const ContextMenuTrigger$1 = /* @__PURE__ */ reactExports.forwardRef(function ContextMenuTrigger2(componentProps, forwardedRef) {
|
|
42626
|
+
const {
|
|
42627
|
+
render,
|
|
42628
|
+
className,
|
|
42629
|
+
style,
|
|
42630
|
+
...elementProps
|
|
42631
|
+
} = componentProps;
|
|
42632
|
+
const {
|
|
42633
|
+
setAnchor,
|
|
42634
|
+
actionsRef,
|
|
42635
|
+
internalBackdropRef,
|
|
42636
|
+
backdropRef,
|
|
42637
|
+
positionerRef,
|
|
42638
|
+
allowMouseUpTriggerRef,
|
|
42639
|
+
initialCursorPointRef,
|
|
42640
|
+
rootId
|
|
42641
|
+
} = useContextMenuRootContext(false);
|
|
42642
|
+
const {
|
|
42643
|
+
store
|
|
42644
|
+
} = useMenuRootContext(false);
|
|
42645
|
+
const open = store.useState("open");
|
|
42646
|
+
const disabled2 = store.useState("disabled");
|
|
42647
|
+
const triggerRef = reactExports.useRef(null);
|
|
42648
|
+
const touchPositionRef = reactExports.useRef(null);
|
|
42649
|
+
const longPressTimeout = useTimeout();
|
|
42650
|
+
const allowMouseUpTimeout = useTimeout();
|
|
42651
|
+
const allowMouseUpRef = reactExports.useRef(false);
|
|
42652
|
+
const mouseUpAbortControllerRef = reactExports.useRef(null);
|
|
42653
|
+
function handleLongPress(x2, y2, event) {
|
|
42654
|
+
const isTouchEvent = event.type.startsWith("touch");
|
|
42655
|
+
initialCursorPointRef.current = {
|
|
42656
|
+
x: x2,
|
|
42657
|
+
y: y2
|
|
42658
|
+
};
|
|
42659
|
+
setAnchor({
|
|
42660
|
+
getBoundingClientRect() {
|
|
42661
|
+
return DOMRect.fromRect({
|
|
42662
|
+
width: isTouchEvent ? 10 : 0,
|
|
42663
|
+
height: isTouchEvent ? 10 : 0,
|
|
42664
|
+
x: x2,
|
|
42665
|
+
y: y2
|
|
42666
|
+
});
|
|
42667
|
+
}
|
|
42668
|
+
});
|
|
42669
|
+
allowMouseUpRef.current = false;
|
|
42670
|
+
actionsRef.current?.setOpen(true, createChangeEventDetails(triggerPress, event));
|
|
42671
|
+
allowMouseUpTimeout.start(LONG_PRESS_DELAY, () => {
|
|
42672
|
+
allowMouseUpRef.current = true;
|
|
42673
|
+
});
|
|
42674
|
+
}
|
|
42675
|
+
function handleContextMenu(event) {
|
|
42676
|
+
if (disabled2) {
|
|
42677
|
+
return;
|
|
42678
|
+
}
|
|
42679
|
+
allowMouseUpTriggerRef.current = true;
|
|
42680
|
+
stopEvent(event);
|
|
42681
|
+
handleLongPress(event.clientX, event.clientY, event.nativeEvent);
|
|
42682
|
+
const doc = ownerDocument(triggerRef.current);
|
|
42683
|
+
mouseUpAbortControllerRef.current?.abort();
|
|
42684
|
+
const mouseUpAbortController = new AbortController();
|
|
42685
|
+
mouseUpAbortControllerRef.current = mouseUpAbortController;
|
|
42686
|
+
doc.addEventListener("mouseup", (mouseEvent) => {
|
|
42687
|
+
allowMouseUpTriggerRef.current = false;
|
|
42688
|
+
if (!allowMouseUpRef.current) {
|
|
42689
|
+
return;
|
|
42690
|
+
}
|
|
42691
|
+
allowMouseUpTimeout.clear();
|
|
42692
|
+
allowMouseUpRef.current = false;
|
|
42693
|
+
const mouseUpTarget = getTarget(mouseEvent);
|
|
42694
|
+
if (contains(positionerRef.current, mouseUpTarget)) {
|
|
42695
|
+
return;
|
|
42696
|
+
}
|
|
42697
|
+
if (rootId && mouseUpTarget && findRootOwnerId(mouseUpTarget) === rootId) {
|
|
42698
|
+
return;
|
|
42699
|
+
}
|
|
42700
|
+
actionsRef.current?.setOpen(false, createChangeEventDetails(cancelOpen, mouseEvent));
|
|
42701
|
+
}, {
|
|
42702
|
+
once: true,
|
|
42703
|
+
signal: mouseUpAbortController.signal
|
|
42704
|
+
});
|
|
42705
|
+
}
|
|
42706
|
+
function cancelLongPress() {
|
|
42707
|
+
longPressTimeout.clear();
|
|
42708
|
+
touchPositionRef.current = null;
|
|
42709
|
+
}
|
|
42710
|
+
function handleTouchStart(event) {
|
|
42711
|
+
if (disabled2) {
|
|
42712
|
+
cancelLongPress();
|
|
42713
|
+
return;
|
|
42714
|
+
}
|
|
42715
|
+
allowMouseUpTriggerRef.current = false;
|
|
42716
|
+
if (event.touches.length !== 1) {
|
|
42717
|
+
cancelLongPress();
|
|
42718
|
+
return;
|
|
42719
|
+
}
|
|
42720
|
+
event.stopPropagation();
|
|
42721
|
+
const touch = event.touches[0];
|
|
42722
|
+
const touchPosition = {
|
|
42723
|
+
x: touch.clientX,
|
|
42724
|
+
y: touch.clientY
|
|
42725
|
+
};
|
|
42726
|
+
touchPositionRef.current = touchPosition;
|
|
42727
|
+
longPressTimeout.start(LONG_PRESS_DELAY, () => {
|
|
42728
|
+
handleLongPress(touchPosition.x, touchPosition.y, event.nativeEvent);
|
|
42729
|
+
});
|
|
42730
|
+
}
|
|
42731
|
+
function handleTouchMove(event) {
|
|
42732
|
+
if (event.touches.length !== 1) {
|
|
42733
|
+
cancelLongPress();
|
|
42734
|
+
return;
|
|
42735
|
+
}
|
|
42736
|
+
if (longPressTimeout.isStarted() && touchPositionRef.current) {
|
|
42737
|
+
const touch = event.touches[0];
|
|
42738
|
+
const moveThreshold = 10;
|
|
42739
|
+
const deltaX = Math.abs(touch.clientX - touchPositionRef.current.x);
|
|
42740
|
+
const deltaY = Math.abs(touch.clientY - touchPositionRef.current.y);
|
|
42741
|
+
if (deltaX > moveThreshold || deltaY > moveThreshold) {
|
|
42742
|
+
cancelLongPress();
|
|
42743
|
+
}
|
|
42744
|
+
}
|
|
42745
|
+
}
|
|
42746
|
+
reactExports.useEffect(() => () => {
|
|
42747
|
+
mouseUpAbortControllerRef.current?.abort();
|
|
42748
|
+
}, []);
|
|
42749
|
+
reactExports.useEffect(() => {
|
|
42750
|
+
function handleDocumentContextMenu(event) {
|
|
42751
|
+
if (disabled2) {
|
|
42752
|
+
return;
|
|
42753
|
+
}
|
|
42754
|
+
const target = getTarget(event);
|
|
42755
|
+
const targetElement = target;
|
|
42756
|
+
if (contains(triggerRef.current, targetElement) || contains(internalBackdropRef.current, targetElement) || contains(backdropRef.current, targetElement)) {
|
|
42757
|
+
event.preventDefault();
|
|
42758
|
+
}
|
|
42759
|
+
}
|
|
42760
|
+
const doc = ownerDocument(triggerRef.current);
|
|
42761
|
+
return addEventListener(doc, "contextmenu", handleDocumentContextMenu);
|
|
42762
|
+
}, [backdropRef, disabled2, internalBackdropRef]);
|
|
42763
|
+
const state = {
|
|
42764
|
+
open
|
|
42765
|
+
};
|
|
42766
|
+
const element = useRenderElement("div", componentProps, {
|
|
42767
|
+
state,
|
|
42768
|
+
ref: [triggerRef, forwardedRef],
|
|
42769
|
+
props: [{
|
|
42770
|
+
onContextMenu: handleContextMenu,
|
|
42771
|
+
onTouchStart: handleTouchStart,
|
|
42772
|
+
onTouchMove: handleTouchMove,
|
|
42773
|
+
onTouchEnd: cancelLongPress,
|
|
42774
|
+
onTouchCancel: cancelLongPress,
|
|
42775
|
+
style: {
|
|
42776
|
+
WebkitTouchCallout: "none"
|
|
42777
|
+
}
|
|
42778
|
+
}, elementProps],
|
|
42779
|
+
stateAttributesMapping: pressableTriggerOpenStateMapping
|
|
42780
|
+
});
|
|
42781
|
+
return element;
|
|
42782
|
+
});
|
|
42783
|
+
function ContextMenu({ ...props }) {
|
|
42784
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuRoot, { "data-slot": "context-menu", ...props });
|
|
42785
|
+
}
|
|
42786
|
+
function ContextMenuTrigger({
|
|
42787
|
+
className,
|
|
42788
|
+
...props
|
|
42789
|
+
}) {
|
|
42790
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
42791
|
+
ContextMenuTrigger$1,
|
|
42792
|
+
{
|
|
42793
|
+
"data-slot": "context-menu-trigger",
|
|
42794
|
+
className: cn$1("select-none", className),
|
|
42795
|
+
...props
|
|
42796
|
+
}
|
|
42797
|
+
);
|
|
42798
|
+
}
|
|
42799
|
+
function ContextMenuContent({
|
|
42800
|
+
className,
|
|
42801
|
+
align = "start",
|
|
42802
|
+
alignOffset = 4,
|
|
42803
|
+
side = "right",
|
|
42804
|
+
sideOffset = 0,
|
|
42805
|
+
...props
|
|
42806
|
+
}) {
|
|
42807
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(MenuPortal, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
42808
|
+
MenuPositioner,
|
|
42809
|
+
{
|
|
42810
|
+
className: "isolate z-50 outline-none",
|
|
42811
|
+
align,
|
|
42812
|
+
alignOffset,
|
|
42813
|
+
side,
|
|
42814
|
+
sideOffset,
|
|
42815
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
42816
|
+
MenuPopup,
|
|
42817
|
+
{
|
|
42818
|
+
"data-slot": "context-menu-content",
|
|
42819
|
+
className: cn$1("z-50 max-h-(--available-height) min-w-38 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover py-1 px-1 space-y-0.5 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
|
|
42820
|
+
...props
|
|
42821
|
+
}
|
|
42822
|
+
)
|
|
42823
|
+
}
|
|
42824
|
+
) });
|
|
42825
|
+
}
|
|
42826
|
+
function ContextMenuItem({
|
|
42827
|
+
className,
|
|
42828
|
+
inset,
|
|
42829
|
+
variant = "default",
|
|
42830
|
+
...props
|
|
42831
|
+
}) {
|
|
42832
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
42833
|
+
MenuItem,
|
|
42834
|
+
{
|
|
42835
|
+
"data-slot": "context-menu-item",
|
|
42836
|
+
"data-inset": inset,
|
|
42837
|
+
"data-variant": variant,
|
|
42838
|
+
className: cn$1(
|
|
42839
|
+
"group/context-menu-item relative flex cursor-default items-center gap-1.5 rounded-sm px-1.5 py-1 text-xs text-muted-foreground/90 outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive",
|
|
42840
|
+
className
|
|
42841
|
+
),
|
|
42842
|
+
...props
|
|
42843
|
+
}
|
|
42844
|
+
);
|
|
42845
|
+
}
|
|
42846
|
+
function ContextMenuSeparator({
|
|
42847
|
+
className,
|
|
42848
|
+
...props
|
|
42849
|
+
}) {
|
|
42850
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
42851
|
+
Separator$1,
|
|
42852
|
+
{
|
|
42853
|
+
"data-slot": "context-menu-separator",
|
|
42854
|
+
className: cn$1("-mx-1 my-1 h-px bg-border", className),
|
|
42855
|
+
...props
|
|
42856
|
+
}
|
|
42857
|
+
);
|
|
42858
|
+
}
|
|
42571
42859
|
function Separator({
|
|
42572
42860
|
className,
|
|
42573
42861
|
orientation = "horizontal",
|
|
@@ -42684,6 +42972,14 @@ function Sidebar() {
|
|
|
42684
42972
|
);
|
|
42685
42973
|
const [expandedProjects, setExpandedProjects] = reactExports.useState({});
|
|
42686
42974
|
const [hoverId, setHoverId] = reactExports.useState(null);
|
|
42975
|
+
const [contextMenuId, setContextMenuId] = reactExports.useState(null);
|
|
42976
|
+
const [actionsOpenId, setActionsOpenId] = reactExports.useState(null);
|
|
42977
|
+
const hoveredTriggerIdRef = reactExports.useRef(null);
|
|
42978
|
+
reactExports.useEffect(() => {
|
|
42979
|
+
if (hoverId !== actionsOpenId) {
|
|
42980
|
+
setActionsOpenId(null);
|
|
42981
|
+
}
|
|
42982
|
+
}, [hoverId, actionsOpenId]);
|
|
42687
42983
|
const { prompt, confirm, toast: toast2 } = useMessage();
|
|
42688
42984
|
const showMacTrafficLightSpace = isMacApp && !isFullScreen;
|
|
42689
42985
|
const refreshData = async () => {
|
|
@@ -42976,50 +43272,108 @@ function Sidebar() {
|
|
|
42976
43272
|
const projectSessions = sessionsByProject[project.id] ?? [];
|
|
42977
43273
|
const expanded = isProjectExpanded(project.id);
|
|
42978
43274
|
const currentHoverId = projectHoverId(project.id);
|
|
43275
|
+
const latestProjectUpdateAt = projectSessions.length > 0 ? projectSessions.reduce((max2, session2) => Math.max(max2, session2.updatedAt), 0) : project.createdAt;
|
|
42979
43276
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-0.5 group", children: [
|
|
42980
43277
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
42981
43278
|
HoverCard,
|
|
42982
43279
|
{
|
|
42983
43280
|
open: hoverId === currentHoverId,
|
|
42984
43281
|
onOpenChange: (open) => {
|
|
42985
|
-
if (
|
|
43282
|
+
if (open) {
|
|
43283
|
+
if (contextMenuId === null) setHoverId(currentHoverId);
|
|
43284
|
+
} else if (hoverId === currentHoverId && hoveredTriggerIdRef.current !== currentHoverId) {
|
|
42986
43285
|
setHoverId(null);
|
|
42987
|
-
} else if (open && !hoverId) {
|
|
42988
|
-
setHoverId(currentHoverId);
|
|
42989
43286
|
}
|
|
42990
43287
|
},
|
|
42991
43288
|
children: [
|
|
42992
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(HoverCardTrigger, { render: /* @__PURE__ */ jsxRuntimeExports.jsx("div", {}), delay:
|
|
42993
|
-
|
|
43289
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(HoverCardTrigger, { render: /* @__PURE__ */ jsxRuntimeExports.jsx("div", {}), delay: 0, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43290
|
+
ContextMenu,
|
|
42994
43291
|
{
|
|
42995
|
-
|
|
42996
|
-
|
|
42997
|
-
if (
|
|
42998
|
-
|
|
42999
|
-
|
|
43000
|
-
|
|
43001
|
-
|
|
43292
|
+
onOpenChange: (open) => {
|
|
43293
|
+
setContextMenuId(open ? currentHoverId : null);
|
|
43294
|
+
if (open) {
|
|
43295
|
+
setHoverId(null);
|
|
43296
|
+
} else if (hoveredTriggerIdRef.current === currentHoverId) {
|
|
43297
|
+
setHoverId(currentHoverId);
|
|
43298
|
+
}
|
|
43002
43299
|
},
|
|
43003
|
-
className: `flex h-7 cursor-default items-center gap-1.5 rounded-md px-1.5 text-xs font-normal transition-colors text-sidebar-foreground/45 hover:bg-sidebar-accent/25 hover:text-sidebar-foreground/80 ${hoverId === currentHoverId ? "bg-sidebar-accent/25 text-sidebar-foreground/80" : ""}`,
|
|
43004
43300
|
children: [
|
|
43005
|
-
|
|
43006
|
-
|
|
43007
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
43008
|
-
"button",
|
|
43301
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43302
|
+
ContextMenuTrigger,
|
|
43009
43303
|
{
|
|
43010
|
-
|
|
43011
|
-
|
|
43012
|
-
|
|
43013
|
-
|
|
43014
|
-
|
|
43015
|
-
|
|
43016
|
-
|
|
43017
|
-
|
|
43018
|
-
|
|
43019
|
-
|
|
43020
|
-
|
|
43304
|
+
render: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
43305
|
+
"div",
|
|
43306
|
+
{
|
|
43307
|
+
onClick: () => toggleProject(project.id),
|
|
43308
|
+
onPointerEnter: () => {
|
|
43309
|
+
hoveredTriggerIdRef.current = currentHoverId;
|
|
43310
|
+
},
|
|
43311
|
+
onPointerLeave: () => {
|
|
43312
|
+
hoveredTriggerIdRef.current = null;
|
|
43313
|
+
},
|
|
43314
|
+
className: `flex h-7 cursor-default items-center gap-1.5 rounded-md px-1.5 text-xs font-normal transition-colors text-sidebar-foreground/45 hover:bg-sidebar-accent/25 hover:text-sidebar-foreground/80 ${hoverId === currentHoverId || contextMenuId === currentHoverId ? "bg-sidebar-accent/25 text-sidebar-foreground/80" : ""}`
|
|
43315
|
+
}
|
|
43316
|
+
),
|
|
43317
|
+
children: [
|
|
43318
|
+
expanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(FolderOpen, { className: "size-3.5" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(FolderClosed, { className: "size-3.5" }),
|
|
43319
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-1 truncate leading-normal font-normal uppercase select-none", children: project.title }),
|
|
43320
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
43321
|
+
"button",
|
|
43322
|
+
{
|
|
43323
|
+
type: "button",
|
|
43324
|
+
onClick: (e) => {
|
|
43325
|
+
e.stopPropagation();
|
|
43326
|
+
openNewSessionDialog(project.id);
|
|
43327
|
+
},
|
|
43328
|
+
className: `flex size-4 items-center justify-center rounded-sm text-sidebar-foreground/40 hover:bg-sidebar-accent/25 hover:text-sidebar-foreground/70 transition-opacity duration-300 ${projectSessions.length === 0 ? "opacity-100" : "opacity-0 group-hover:opacity-100"}`,
|
|
43329
|
+
"aria-label": t("sidebar.createChatInProject", {
|
|
43330
|
+
defaultValue: "Create chat in {{title}}",
|
|
43331
|
+
title: project.title
|
|
43332
|
+
}),
|
|
43333
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(MessageCirclePlus, { className: "size-3.5" })
|
|
43334
|
+
}
|
|
43335
|
+
)
|
|
43336
|
+
]
|
|
43021
43337
|
}
|
|
43022
|
-
)
|
|
43338
|
+
),
|
|
43339
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuContent, { className: "w-48", children: [
|
|
43340
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { onClick: () => openNewSessionDialog(project.id), children: [
|
|
43341
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(MessageCirclePlus, { className: "size-3" }),
|
|
43342
|
+
t("sidebar.newChat", "New Chat")
|
|
43343
|
+
] }),
|
|
43344
|
+
!isWebUI && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43345
|
+
ContextMenuItem,
|
|
43346
|
+
{
|
|
43347
|
+
onClick: () => void handleRevealProjectInFinder(project),
|
|
43348
|
+
children: [
|
|
43349
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(FolderOpen, { className: "size-3" }),
|
|
43350
|
+
t("sidebar.revealInFinder")
|
|
43351
|
+
]
|
|
43352
|
+
}
|
|
43353
|
+
),
|
|
43354
|
+
!isWebUI && /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { onClick: () => void handleOpenProjectInEditor(project), children: [
|
|
43355
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Code, { className: "size-3" }),
|
|
43356
|
+
t("filePanel.openInEditor", {
|
|
43357
|
+
editor: EDITOR_LABELS[useAppStore.getState().editor.name] ?? "Editor"
|
|
43358
|
+
})
|
|
43359
|
+
] }),
|
|
43360
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { onClick: () => void handleRenameProject(project), children: [
|
|
43361
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Pencil, { className: "size-3" }),
|
|
43362
|
+
t("sidebar.rename")
|
|
43363
|
+
] }),
|
|
43364
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuSeparator, {}),
|
|
43365
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43366
|
+
ContextMenuItem,
|
|
43367
|
+
{
|
|
43368
|
+
variant: "destructive",
|
|
43369
|
+
onClick: () => void handleDeleteProject(project),
|
|
43370
|
+
children: [
|
|
43371
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, { className: "size-3" }),
|
|
43372
|
+
t("sidebar.delete")
|
|
43373
|
+
]
|
|
43374
|
+
}
|
|
43375
|
+
)
|
|
43376
|
+
] })
|
|
43023
43377
|
]
|
|
43024
43378
|
}
|
|
43025
43379
|
) }),
|
|
@@ -43029,11 +43383,12 @@ function Sidebar() {
|
|
|
43029
43383
|
side: "right",
|
|
43030
43384
|
align: "start",
|
|
43031
43385
|
sideOffset: 12,
|
|
43032
|
-
alignOffset:
|
|
43386
|
+
alignOffset: 0,
|
|
43033
43387
|
className: "max-w-60 min-w-48 w-auto p-3",
|
|
43388
|
+
onPointerEnter: () => setActionsOpenId(currentHoverId),
|
|
43034
43389
|
children: [
|
|
43035
43390
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
43036
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm font-medium leading-snug", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: project.title }) }),
|
|
43391
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm font-medium leading-snug -mt-0.5", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: project.title }) }),
|
|
43037
43392
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground py-px", children: [
|
|
43038
43393
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Folder, { className: "size-3 shrink-0" }),
|
|
43039
43394
|
isWebUI ? /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", title: project.cwd, children: project.cwd }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -43046,73 +43401,103 @@ function Sidebar() {
|
|
|
43046
43401
|
children: project.cwd
|
|
43047
43402
|
}
|
|
43048
43403
|
)
|
|
43404
|
+
] }),
|
|
43405
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground py-px", children: [
|
|
43406
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(MessageCircle, { className: "size-3 shrink-0" }),
|
|
43407
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: t("sidebar.sessionCount", "{{count}} sessions", {
|
|
43408
|
+
count: projectSessions.length
|
|
43409
|
+
}) })
|
|
43410
|
+
] }),
|
|
43411
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground py-px", children: [
|
|
43412
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { className: "size-3 shrink-0" }),
|
|
43413
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "truncate", children: [
|
|
43414
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "mr-1", children: [
|
|
43415
|
+
t(
|
|
43416
|
+
projectSessions.length > 0 ? "sidebar.updated" : "sidebar.created",
|
|
43417
|
+
projectSessions.length > 0 ? "Updated" : "Created"
|
|
43418
|
+
),
|
|
43419
|
+
":"
|
|
43420
|
+
] }),
|
|
43421
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: formatRelativeTime(latestProjectUpdateAt, i18n.language) })
|
|
43422
|
+
] })
|
|
43049
43423
|
] })
|
|
43050
43424
|
] }),
|
|
43051
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
43052
|
-
|
|
43053
|
-
|
|
43054
|
-
|
|
43055
|
-
|
|
43056
|
-
|
|
43057
|
-
|
|
43058
|
-
|
|
43059
|
-
|
|
43060
|
-
|
|
43061
|
-
|
|
43062
|
-
|
|
43063
|
-
|
|
43064
|
-
|
|
43065
|
-
|
|
43066
|
-
|
|
43067
|
-
|
|
43068
|
-
|
|
43069
|
-
|
|
43070
|
-
|
|
43071
|
-
|
|
43072
|
-
|
|
43073
|
-
|
|
43074
|
-
|
|
43075
|
-
|
|
43076
|
-
|
|
43077
|
-
|
|
43078
|
-
|
|
43079
|
-
|
|
43080
|
-
|
|
43081
|
-
|
|
43082
|
-
|
|
43083
|
-
|
|
43084
|
-
|
|
43085
|
-
|
|
43086
|
-
|
|
43087
|
-
|
|
43088
|
-
|
|
43089
|
-
|
|
43090
|
-
|
|
43091
|
-
|
|
43092
|
-
|
|
43093
|
-
|
|
43094
|
-
|
|
43095
|
-
|
|
43096
|
-
|
|
43097
|
-
|
|
43098
|
-
|
|
43099
|
-
|
|
43100
|
-
|
|
43101
|
-
|
|
43102
|
-
|
|
43103
|
-
|
|
43104
|
-
|
|
43105
|
-
|
|
43106
|
-
|
|
43107
|
-
|
|
43108
|
-
|
|
43109
|
-
|
|
43110
|
-
|
|
43111
|
-
|
|
43112
|
-
|
|
43113
|
-
|
|
43114
|
-
|
|
43115
|
-
|
|
43425
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
43426
|
+
"div",
|
|
43427
|
+
{
|
|
43428
|
+
className: cn$1(
|
|
43429
|
+
"-mx-2 -my-1 grid transition-[grid-template-rows] duration-200 ease-out",
|
|
43430
|
+
actionsOpenId === currentHoverId ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
|
|
43431
|
+
),
|
|
43432
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-h-0 mt-2 -mb-1 overflow-hidden", children: [
|
|
43433
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Separator, { className: "my-1" }),
|
|
43434
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col", children: [
|
|
43435
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43436
|
+
"button",
|
|
43437
|
+
{
|
|
43438
|
+
type: "button",
|
|
43439
|
+
onClick: () => openNewSessionDialog(project.id),
|
|
43440
|
+
className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
|
|
43441
|
+
children: [
|
|
43442
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(MessageCirclePlus, { className: "size-3 shrink-0" }),
|
|
43443
|
+
t("sidebar.newChat", "New Chat")
|
|
43444
|
+
]
|
|
43445
|
+
}
|
|
43446
|
+
),
|
|
43447
|
+
!isWebUI && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43448
|
+
"button",
|
|
43449
|
+
{
|
|
43450
|
+
type: "button",
|
|
43451
|
+
onClick: () => void handleRevealProjectInFinder(project),
|
|
43452
|
+
className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
|
|
43453
|
+
children: [
|
|
43454
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(FolderOpen, { className: "size-3 shrink-0" }),
|
|
43455
|
+
t("sidebar.revealInFinder")
|
|
43456
|
+
]
|
|
43457
|
+
}
|
|
43458
|
+
),
|
|
43459
|
+
!isWebUI && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43460
|
+
"button",
|
|
43461
|
+
{
|
|
43462
|
+
type: "button",
|
|
43463
|
+
onClick: () => void handleOpenProjectInEditor(project),
|
|
43464
|
+
className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
|
|
43465
|
+
children: [
|
|
43466
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Code, { className: "size-3 shrink-0" }),
|
|
43467
|
+
t("filePanel.openInEditor", {
|
|
43468
|
+
editor: EDITOR_LABELS[useAppStore.getState().editor.name] ?? "Editor"
|
|
43469
|
+
})
|
|
43470
|
+
]
|
|
43471
|
+
}
|
|
43472
|
+
),
|
|
43473
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43474
|
+
"button",
|
|
43475
|
+
{
|
|
43476
|
+
type: "button",
|
|
43477
|
+
onClick: () => handleRenameProject(project),
|
|
43478
|
+
className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
|
|
43479
|
+
children: [
|
|
43480
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Pencil, { className: "size-3 shrink-0" }),
|
|
43481
|
+
t("sidebar.rename")
|
|
43482
|
+
]
|
|
43483
|
+
}
|
|
43484
|
+
),
|
|
43485
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43486
|
+
"button",
|
|
43487
|
+
{
|
|
43488
|
+
type: "button",
|
|
43489
|
+
onClick: () => void handleDeleteProject(project),
|
|
43490
|
+
className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-destructive transition-colors hover:bg-destructive/10",
|
|
43491
|
+
children: [
|
|
43492
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, { className: "size-3 shrink-0" }),
|
|
43493
|
+
t("sidebar.delete")
|
|
43494
|
+
]
|
|
43495
|
+
}
|
|
43496
|
+
)
|
|
43497
|
+
] })
|
|
43498
|
+
] })
|
|
43499
|
+
}
|
|
43500
|
+
)
|
|
43116
43501
|
]
|
|
43117
43502
|
}
|
|
43118
43503
|
)
|
|
@@ -43127,65 +43512,128 @@ function Sidebar() {
|
|
|
43127
43512
|
{
|
|
43128
43513
|
open: hoverId === currentHoverId2,
|
|
43129
43514
|
onOpenChange: (open) => {
|
|
43130
|
-
if (
|
|
43515
|
+
if (open) {
|
|
43516
|
+
if (contextMenuId === null) setHoverId(currentHoverId2);
|
|
43517
|
+
} else if (hoverId === currentHoverId2 && hoveredTriggerIdRef.current !== currentHoverId2) {
|
|
43131
43518
|
setHoverId(null);
|
|
43132
|
-
} else if (open && !hoverId) {
|
|
43133
|
-
setHoverId(currentHoverId2);
|
|
43134
43519
|
}
|
|
43135
43520
|
},
|
|
43136
43521
|
children: [
|
|
43137
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(HoverCardTrigger, { render: /* @__PURE__ */ jsxRuntimeExports.jsx("div", {}), delay:
|
|
43138
|
-
|
|
43522
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(HoverCardTrigger, { render: /* @__PURE__ */ jsxRuntimeExports.jsx("div", {}), delay: 0, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43523
|
+
ContextMenu,
|
|
43139
43524
|
{
|
|
43140
|
-
|
|
43141
|
-
|
|
43142
|
-
if (
|
|
43143
|
-
|
|
43144
|
-
|
|
43145
|
-
|
|
43146
|
-
|
|
43525
|
+
onOpenChange: (open) => {
|
|
43526
|
+
setContextMenuId(open ? currentHoverId2 : null);
|
|
43527
|
+
if (open) {
|
|
43528
|
+
setHoverId(null);
|
|
43529
|
+
} else if (hoveredTriggerIdRef.current === currentHoverId2) {
|
|
43530
|
+
setHoverId(currentHoverId2);
|
|
43531
|
+
}
|
|
43147
43532
|
},
|
|
43148
|
-
|
|
43149
|
-
|
|
43150
|
-
|
|
43151
|
-
|
|
43152
|
-
|
|
43153
|
-
|
|
43154
|
-
session2.connectionStatus === "connected" ? "" : "opacity-60"
|
|
43155
|
-
),
|
|
43156
|
-
children: [
|
|
43157
|
-
(() => {
|
|
43158
|
-
const state = sessionStates.get(session2.id);
|
|
43159
|
-
const hasAskUser = (state?.askUserRequests?.length ?? 0) > 0;
|
|
43160
|
-
const isStreaming = session2.isStreaming;
|
|
43161
|
-
const completedStatus = state?.completedStatus;
|
|
43162
|
-
if (hasAskUser) {
|
|
43163
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(CircleQuestionMark, { className: "size-3 shrink-0 text-sky-500" });
|
|
43164
|
-
}
|
|
43165
|
-
if (isStreaming) {
|
|
43166
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(LoaderCircle, { className: "size-3 animate-spin shrink-0" });
|
|
43167
|
-
}
|
|
43168
|
-
if (completedStatus === "success" || state?.completedAt && !completedStatus) {
|
|
43169
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3 shrink-0 text-green-500" });
|
|
43170
|
-
}
|
|
43171
|
-
if (completedStatus === "error") {
|
|
43172
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(TriangleAlert, { className: "size-3 shrink-0 text-yellow-500" });
|
|
43173
|
-
}
|
|
43174
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "size-3 shrink-0" });
|
|
43175
|
-
})(),
|
|
43176
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
43177
|
-
Badge,
|
|
43533
|
+
children: [
|
|
43534
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
43535
|
+
ContextMenuTrigger,
|
|
43536
|
+
{
|
|
43537
|
+
render: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
43538
|
+
"div",
|
|
43178
43539
|
{
|
|
43179
|
-
|
|
43180
|
-
|
|
43181
|
-
|
|
43540
|
+
onClick: () => handleSelectSession(session2),
|
|
43541
|
+
onPointerEnter: () => {
|
|
43542
|
+
hoveredTriggerIdRef.current = currentHoverId2;
|
|
43543
|
+
},
|
|
43544
|
+
onPointerLeave: () => {
|
|
43545
|
+
hoveredTriggerIdRef.current = null;
|
|
43546
|
+
},
|
|
43547
|
+
className: `group flex h-8 cursor-default items-center justify-between rounded-md pl-1.5 pr-2 text-xs font-normal transition-colors ${activeSessionId === session2.id ? "bg-sidebar-accent text-sidebar-accent-foreground" : "text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground/95"} ${hoverId === currentHoverId2 || contextMenuId === currentHoverId2 ? "bg-sidebar-accent" : ""}`
|
|
43182
43548
|
}
|
|
43183
43549
|
),
|
|
43184
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
43185
|
-
|
|
43186
|
-
|
|
43187
|
-
|
|
43188
|
-
|
|
43550
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43551
|
+
"div",
|
|
43552
|
+
{
|
|
43553
|
+
className: cn$1(
|
|
43554
|
+
"flex min-w-0 flex-1 items-center gap-1.5",
|
|
43555
|
+
session2.connectionStatus === "connected" ? "" : "opacity-60"
|
|
43556
|
+
),
|
|
43557
|
+
children: [
|
|
43558
|
+
(() => {
|
|
43559
|
+
const state = sessionStates.get(session2.id);
|
|
43560
|
+
const hasAskUser = (state?.askUserRequests?.length ?? 0) > 0;
|
|
43561
|
+
const isStreaming = session2.isStreaming;
|
|
43562
|
+
const completedStatus = state?.completedStatus;
|
|
43563
|
+
if (hasAskUser) {
|
|
43564
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(CircleQuestionMark, { className: "size-3 shrink-0 text-sky-500" });
|
|
43565
|
+
}
|
|
43566
|
+
if (isStreaming) {
|
|
43567
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(LoaderCircle, { className: "size-3 animate-spin shrink-0" });
|
|
43568
|
+
}
|
|
43569
|
+
if (completedStatus === "success" || state?.completedAt && !completedStatus) {
|
|
43570
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3 shrink-0 text-green-500" });
|
|
43571
|
+
}
|
|
43572
|
+
if (completedStatus === "error") {
|
|
43573
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(TriangleAlert, { className: "size-3 shrink-0 text-yellow-500" });
|
|
43574
|
+
}
|
|
43575
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "size-3 shrink-0" });
|
|
43576
|
+
})(),
|
|
43577
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
43578
|
+
Badge,
|
|
43579
|
+
{
|
|
43580
|
+
variant: "outline",
|
|
43581
|
+
className: "px-1 -ml-0.5 text-[10px] uppercase select-none max-w-24",
|
|
43582
|
+
children: agentLabel
|
|
43583
|
+
}
|
|
43584
|
+
),
|
|
43585
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "min-w-0 flex-1 truncate leading-normal select-none", children: session2.title || t("sidebar.newChat", "New Chat") }),
|
|
43586
|
+
activeIlinkSessionId === session2.id && /* @__PURE__ */ jsxRuntimeExports.jsx(MessageCircle, { className: "size-3 shrink-0 text-green-500" })
|
|
43587
|
+
]
|
|
43588
|
+
}
|
|
43589
|
+
)
|
|
43590
|
+
}
|
|
43591
|
+
),
|
|
43592
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuContent, { className: "w-48", children: [
|
|
43593
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { onClick: () => handleRenameSession(session2), children: [
|
|
43594
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Pencil, { className: "size-3" }),
|
|
43595
|
+
t("sidebar.rename")
|
|
43596
|
+
] }),
|
|
43597
|
+
ilinkStatus.connected && activeIlinkSessionId !== session2.id && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43598
|
+
ContextMenuItem,
|
|
43599
|
+
{
|
|
43600
|
+
onClick: () => {
|
|
43601
|
+
request.setActiveIlinkSession({ sessionId: session2.id }).catch(() => {
|
|
43602
|
+
});
|
|
43603
|
+
},
|
|
43604
|
+
children: [
|
|
43605
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(MessageCircle, { className: "size-3" }),
|
|
43606
|
+
t("sidebar.ilinkSetActive", "Set as WeChat Active")
|
|
43607
|
+
]
|
|
43608
|
+
}
|
|
43609
|
+
),
|
|
43610
|
+
ilinkStatus.connected && activeIlinkSessionId === session2.id && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43611
|
+
ContextMenuItem,
|
|
43612
|
+
{
|
|
43613
|
+
onClick: () => {
|
|
43614
|
+
request.setActiveIlinkSession({ sessionId: "" }).catch(() => {
|
|
43615
|
+
});
|
|
43616
|
+
},
|
|
43617
|
+
children: [
|
|
43618
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(MessageCircle, { className: "size-3 text-green-500" }),
|
|
43619
|
+
t("sidebar.ilinkUnsetActive", "Unset WeChat Active")
|
|
43620
|
+
]
|
|
43621
|
+
}
|
|
43622
|
+
),
|
|
43623
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuSeparator, {}),
|
|
43624
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43625
|
+
ContextMenuItem,
|
|
43626
|
+
{
|
|
43627
|
+
variant: "destructive",
|
|
43628
|
+
onClick: () => void handleDeleteSession(session2),
|
|
43629
|
+
children: [
|
|
43630
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, { className: "size-3" }),
|
|
43631
|
+
t("sidebar.delete")
|
|
43632
|
+
]
|
|
43633
|
+
}
|
|
43634
|
+
)
|
|
43635
|
+
] })
|
|
43636
|
+
]
|
|
43189
43637
|
}
|
|
43190
43638
|
) }),
|
|
43191
43639
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
@@ -43194,11 +43642,12 @@ function Sidebar() {
|
|
|
43194
43642
|
side: "right",
|
|
43195
43643
|
align: "start",
|
|
43196
43644
|
sideOffset: 12,
|
|
43197
|
-
alignOffset:
|
|
43645
|
+
alignOffset: 0,
|
|
43198
43646
|
className: "max-w-60 min-w-48 w-auto p-3",
|
|
43647
|
+
onPointerEnter: () => setActionsOpenId(currentHoverId2),
|
|
43199
43648
|
children: [
|
|
43200
43649
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
43201
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm font-medium leading-snug", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: session2.title || t("sidebar.newChat", "New Chat") }) }),
|
|
43650
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm font-medium leading-snug -mt-0.5", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: session2.title || t("sidebar.newChat", "New Chat") }) }),
|
|
43202
43651
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground py-px", children: [
|
|
43203
43652
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Bot, { className: "size-3 shrink-0" }),
|
|
43204
43653
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: session2.agentId })
|
|
@@ -43237,63 +43686,74 @@ function Sidebar() {
|
|
|
43237
43686
|
] })
|
|
43238
43687
|
] })
|
|
43239
43688
|
] }),
|
|
43240
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
43241
|
-
|
|
43242
|
-
|
|
43243
|
-
|
|
43244
|
-
|
|
43245
|
-
|
|
43246
|
-
|
|
43247
|
-
|
|
43248
|
-
|
|
43249
|
-
|
|
43250
|
-
|
|
43251
|
-
|
|
43252
|
-
|
|
43253
|
-
|
|
43254
|
-
|
|
43255
|
-
|
|
43256
|
-
|
|
43257
|
-
|
|
43258
|
-
|
|
43259
|
-
|
|
43260
|
-
|
|
43261
|
-
|
|
43262
|
-
|
|
43263
|
-
|
|
43264
|
-
|
|
43265
|
-
|
|
43266
|
-
|
|
43267
|
-
|
|
43268
|
-
|
|
43269
|
-
|
|
43270
|
-
|
|
43271
|
-
|
|
43272
|
-
|
|
43273
|
-
|
|
43274
|
-
|
|
43275
|
-
|
|
43276
|
-
|
|
43277
|
-
|
|
43278
|
-
|
|
43279
|
-
|
|
43280
|
-
|
|
43281
|
-
|
|
43282
|
-
|
|
43283
|
-
|
|
43284
|
-
|
|
43285
|
-
|
|
43286
|
-
|
|
43287
|
-
|
|
43288
|
-
|
|
43289
|
-
|
|
43290
|
-
|
|
43291
|
-
|
|
43292
|
-
|
|
43293
|
-
|
|
43294
|
-
|
|
43295
|
-
|
|
43296
|
-
|
|
43689
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
43690
|
+
"div",
|
|
43691
|
+
{
|
|
43692
|
+
className: cn$1(
|
|
43693
|
+
"-mx-2 -my-1 grid transition-[grid-template-rows] duration-200 ease-out",
|
|
43694
|
+
actionsOpenId === currentHoverId2 ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
|
|
43695
|
+
),
|
|
43696
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-h-0 mt-2 -mb-1 overflow-hidden", children: [
|
|
43697
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Separator, { className: "my-1" }),
|
|
43698
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col", children: [
|
|
43699
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43700
|
+
"button",
|
|
43701
|
+
{
|
|
43702
|
+
type: "button",
|
|
43703
|
+
onClick: () => handleRenameSession(session2),
|
|
43704
|
+
className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
|
|
43705
|
+
children: [
|
|
43706
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Pencil, { className: "size-3 shrink-0" }),
|
|
43707
|
+
t("sidebar.rename")
|
|
43708
|
+
]
|
|
43709
|
+
}
|
|
43710
|
+
),
|
|
43711
|
+
ilinkStatus.connected && activeIlinkSessionId !== session2.id && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43712
|
+
"button",
|
|
43713
|
+
{
|
|
43714
|
+
type: "button",
|
|
43715
|
+
onClick: () => {
|
|
43716
|
+
request.setActiveIlinkSession({ sessionId: session2.id }).catch(() => {
|
|
43717
|
+
});
|
|
43718
|
+
},
|
|
43719
|
+
className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
|
|
43720
|
+
children: [
|
|
43721
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(MessageCircle, { className: "size-3 shrink-0" }),
|
|
43722
|
+
t("sidebar.ilinkSetActive", "Set as WeChat Active")
|
|
43723
|
+
]
|
|
43724
|
+
}
|
|
43725
|
+
),
|
|
43726
|
+
ilinkStatus.connected && activeIlinkSessionId === session2.id && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43727
|
+
"button",
|
|
43728
|
+
{
|
|
43729
|
+
type: "button",
|
|
43730
|
+
onClick: () => {
|
|
43731
|
+
request.setActiveIlinkSession({ sessionId: "" }).catch(() => {
|
|
43732
|
+
});
|
|
43733
|
+
},
|
|
43734
|
+
className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
|
|
43735
|
+
children: [
|
|
43736
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(MessageCircle, { className: "size-3 shrink-0 text-green-500" }),
|
|
43737
|
+
t("sidebar.ilinkUnsetActive", "Unset WeChat Active")
|
|
43738
|
+
]
|
|
43739
|
+
}
|
|
43740
|
+
),
|
|
43741
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
43742
|
+
"button",
|
|
43743
|
+
{
|
|
43744
|
+
type: "button",
|
|
43745
|
+
onClick: () => void handleDeleteSession(session2),
|
|
43746
|
+
className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-destructive transition-colors hover:bg-destructive/10",
|
|
43747
|
+
children: [
|
|
43748
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, { className: "size-3 shrink-0" }),
|
|
43749
|
+
t("sidebar.delete")
|
|
43750
|
+
]
|
|
43751
|
+
}
|
|
43752
|
+
)
|
|
43753
|
+
] })
|
|
43754
|
+
] })
|
|
43755
|
+
}
|
|
43756
|
+
)
|
|
43297
43757
|
]
|
|
43298
43758
|
}
|
|
43299
43759
|
)
|
|
@@ -43743,7 +44203,7 @@ function Welcome() {
|
|
|
43743
44203
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "absolute bottom-3 right-4 text-[11px] text-muted-foreground/40 z-10 pointer-events-none", children: [
|
|
43744
44204
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { children: [
|
|
43745
44205
|
"v",
|
|
43746
|
-
"0.1.
|
|
44206
|
+
"0.1.53"
|
|
43747
44207
|
] }),
|
|
43748
44208
|
false
|
|
43749
44209
|
] }),
|
|
@@ -43905,55 +44365,59 @@ function Welcome() {
|
|
|
43905
44365
|
function lazyNamed(loader, name) {
|
|
43906
44366
|
return reactExports.lazy(() => loader().then((mod) => ({ default: mod[name] })));
|
|
43907
44367
|
}
|
|
43908
|
-
const Session = lazyNamed(() => __vitePreload(() => import("./session-
|
|
44368
|
+
const Session = lazyNamed(() => __vitePreload(() => import("./session-Bn5k9ScR.js"), true ? __vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]) : void 0, import.meta.url), "Session");
|
|
43909
44369
|
const SettingsLayout = lazyNamed(
|
|
43910
|
-
() => __vitePreload(() => import("./settings-layout-
|
|
44370
|
+
() => __vitePreload(() => import("./settings-layout-ATto1xpJ.js"), true ? __vite__mapDeps([18,10,13]) : void 0, import.meta.url),
|
|
43911
44371
|
"SettingsLayout"
|
|
43912
44372
|
);
|
|
43913
44373
|
const SettingsGeneral = lazyNamed(
|
|
43914
|
-
() => __vitePreload(() => import("./settings-general-
|
|
44374
|
+
() => __vitePreload(() => import("./settings-general-DhbLb9cP.js"), true ? __vite__mapDeps([19,20]) : void 0, import.meta.url),
|
|
43915
44375
|
"SettingsGeneral"
|
|
43916
44376
|
);
|
|
43917
44377
|
const SettingsAgents = lazyNamed(
|
|
43918
|
-
() => __vitePreload(() => import("./settings-agents-
|
|
44378
|
+
() => __vitePreload(() => import("./settings-agents-Bntc31Nn.js"), true ? __vite__mapDeps([21,22,23,24,25,20,11,9,16,15,26]) : void 0, import.meta.url),
|
|
43919
44379
|
"SettingsAgents"
|
|
43920
44380
|
);
|
|
43921
44381
|
const SettingsMcp = lazyNamed(
|
|
43922
|
-
() => __vitePreload(() => import("./settings-mcp-
|
|
44382
|
+
() => __vitePreload(() => import("./settings-mcp-DUdMuoJ-.js"), true ? __vite__mapDeps([27,22,23,24,25,20,9,16]) : void 0, import.meta.url),
|
|
43923
44383
|
"SettingsMcp"
|
|
43924
44384
|
);
|
|
43925
44385
|
const SettingsWebUI = lazyNamed(
|
|
43926
|
-
() => __vitePreload(() => import("./settings-webui-
|
|
44386
|
+
() => __vitePreload(() => import("./settings-webui-DZf9O-6j.js"), true ? __vite__mapDeps([28,22]) : void 0, import.meta.url),
|
|
43927
44387
|
"SettingsWebUI"
|
|
43928
44388
|
);
|
|
43929
44389
|
const SettingsILink = lazyNamed(
|
|
43930
|
-
() => __vitePreload(() => import("./settings-ilink-
|
|
44390
|
+
() => __vitePreload(() => import("./settings-ilink-C7nGGjwT.js"), true ? __vite__mapDeps([29,22,7]) : void 0, import.meta.url),
|
|
43931
44391
|
"SettingsILink"
|
|
43932
44392
|
);
|
|
43933
44393
|
const SettingsSnippets = lazyNamed(
|
|
43934
|
-
() => __vitePreload(() => import("./settings-snippets-
|
|
44394
|
+
() => __vitePreload(() => import("./settings-snippets-B4VcnD5Z.js"), true ? __vite__mapDeps([30,24,25,20,9,23,16]) : void 0, import.meta.url),
|
|
43935
44395
|
"SettingsSnippets"
|
|
43936
44396
|
);
|
|
43937
44397
|
const SettingsMemory = lazyNamed(
|
|
43938
|
-
() => __vitePreload(() => import("./settings-memory-
|
|
44398
|
+
() => __vitePreload(() => import("./settings-memory-CJLG4aHW.js"), true ? __vite__mapDeps([31,4,15]) : void 0, import.meta.url),
|
|
43939
44399
|
"SettingsMemory"
|
|
43940
44400
|
);
|
|
43941
44401
|
const SettingsImageGeneration = lazyNamed(
|
|
43942
|
-
() => __vitePreload(() => import("./settings-image-generation-
|
|
44402
|
+
() => __vitePreload(() => import("./settings-image-generation-H2dgqG7Y.js"), true ? __vite__mapDeps([32,24,25,20,16,11,9]) : void 0, import.meta.url),
|
|
43943
44403
|
"SettingsImageGeneration"
|
|
43944
44404
|
);
|
|
43945
|
-
const
|
|
44405
|
+
const SettingsSpeechToText = lazyNamed(
|
|
44406
|
+
() => __vitePreload(() => import("./settings-speech-to-text-DQ7lfkTu.js"), true ? __vite__mapDeps([33,24,20,22,9,16]) : void 0, import.meta.url),
|
|
44407
|
+
"SettingsSpeechToText"
|
|
44408
|
+
);
|
|
44409
|
+
const SkillsLayout = lazyNamed(() => __vitePreload(() => import("./skills-layout-D-5rlY38.js"), true ? __vite__mapDeps([34,35]) : void 0, import.meta.url), "SkillsLayout");
|
|
43946
44410
|
const SkillsInstalled = lazyNamed(
|
|
43947
|
-
() => __vitePreload(() => import("./skills-installed-
|
|
44411
|
+
() => __vitePreload(() => import("./skills-installed-Dp0r_4I-.js"), true ? __vite__mapDeps([36,3,5,6]) : void 0, import.meta.url),
|
|
43948
44412
|
"SkillsInstalled"
|
|
43949
44413
|
);
|
|
43950
44414
|
const SkillsSh = lazyNamed(
|
|
43951
|
-
() => __vitePreload(() => import("./skills-skills-sh-
|
|
44415
|
+
() => __vitePreload(() => import("./skills-skills-sh-CcLoIrSw.js"), true ? __vite__mapDeps([37,5,8,35]) : void 0, import.meta.url),
|
|
43952
44416
|
"SkillsSh"
|
|
43953
44417
|
);
|
|
43954
|
-
const Automation = lazyNamed(() => __vitePreload(() => import("./automation
|
|
43955
|
-
const Schedule = lazyNamed(() => __vitePreload(() => import("./schedule-
|
|
43956
|
-
const Task = lazyNamed(() => __vitePreload(() => import("./task-
|
|
44418
|
+
const Automation = lazyNamed(() => __vitePreload(() => import("./automation-Cyz3eLWp.js"), true ? __vite__mapDeps([38,5,39,25,20,16,1]) : void 0, import.meta.url), "Automation");
|
|
44419
|
+
const Schedule = lazyNamed(() => __vitePreload(() => import("./schedule-DNMCsk-G.js"), true ? __vite__mapDeps([40,17,39,25,20,14,1,6,26]) : void 0, import.meta.url), "Schedule");
|
|
44420
|
+
const Task = lazyNamed(() => __vitePreload(() => import("./task-C5dyYbfn.js"), true ? __vite__mapDeps([41,17,3,2,4,5,6,7,8,9,10,11,12]) : void 0, import.meta.url), "Task");
|
|
43957
44421
|
function SessionWrapper() {
|
|
43958
44422
|
const { sessionId } = useParams();
|
|
43959
44423
|
const sessionInfo = useAppStore((s) => s.sessions.find((x2) => x2.id === sessionId));
|
|
@@ -43987,7 +44451,8 @@ function AppRouter() {
|
|
|
43987
44451
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Route, { path: "ilink", element: /* @__PURE__ */ jsxRuntimeExports.jsx(SettingsILink, {}) }),
|
|
43988
44452
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Route, { path: "snippets", element: /* @__PURE__ */ jsxRuntimeExports.jsx(SettingsSnippets, {}) }),
|
|
43989
44453
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Route, { path: "memory", element: /* @__PURE__ */ jsxRuntimeExports.jsx(SettingsMemory, {}) }),
|
|
43990
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Route, { path: "image-generation", element: /* @__PURE__ */ jsxRuntimeExports.jsx(SettingsImageGeneration, {}) })
|
|
44454
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Route, { path: "image-generation", element: /* @__PURE__ */ jsxRuntimeExports.jsx(SettingsImageGeneration, {}) }),
|
|
44455
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Route, { path: "speech-to-text", element: /* @__PURE__ */ jsxRuntimeExports.jsx(SettingsSpeechToText, {}) })
|
|
43991
44456
|
] }),
|
|
43992
44457
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(Route, { path: "/skills", element: /* @__PURE__ */ jsxRuntimeExports.jsx(SkillsLayout, {}), children: [
|
|
43993
44458
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Route, { path: "installed", element: /* @__PURE__ */ jsxRuntimeExports.jsx(SkillsInstalled, {}) }),
|
|
@@ -44324,6 +44789,7 @@ function AppContent() {
|
|
|
44324
44789
|
setEditor,
|
|
44325
44790
|
setSnippets,
|
|
44326
44791
|
setImageGeneration,
|
|
44792
|
+
setSpeechToText,
|
|
44327
44793
|
setProxy,
|
|
44328
44794
|
isMacApp,
|
|
44329
44795
|
setIsFullScreen,
|
|
@@ -44377,6 +44843,7 @@ function AppContent() {
|
|
|
44377
44843
|
if (settings2.editor) setEditor(settings2.editor);
|
|
44378
44844
|
if (settings2.snippets) setSnippets(settings2.snippets);
|
|
44379
44845
|
if (settings2.imageGeneration) setImageGeneration(settings2.imageGeneration);
|
|
44846
|
+
if (settings2.speechToText) setSpeechToText(settings2.speechToText);
|
|
44380
44847
|
for (const session2 of sessions ?? []) {
|
|
44381
44848
|
try {
|
|
44382
44849
|
const pending = await request.getPendingAskUserRequests({ sessionId: session2.id });
|
|
@@ -44409,6 +44876,7 @@ function AppContent() {
|
|
|
44409
44876
|
setEditor,
|
|
44410
44877
|
setSnippets,
|
|
44411
44878
|
setImageGeneration,
|
|
44879
|
+
setSpeechToText,
|
|
44412
44880
|
setProxy,
|
|
44413
44881
|
setIlinkStatus,
|
|
44414
44882
|
setActiveIlinkSessionId
|
|
@@ -44732,240 +45200,232 @@ if (typeof window === "object") {
|
|
|
44732
45200
|
Object.assign(window, { appStore: useAppStore });
|
|
44733
45201
|
}
|
|
44734
45202
|
export {
|
|
44735
|
-
|
|
44736
|
-
|
|
45203
|
+
useParams as $,
|
|
45204
|
+
DropdownMenu as A,
|
|
44737
45205
|
Button as B,
|
|
44738
45206
|
Check as C,
|
|
44739
45207
|
Dialog as D,
|
|
44740
|
-
|
|
44741
|
-
|
|
44742
|
-
|
|
44743
|
-
|
|
45208
|
+
DropdownMenuTrigger as E,
|
|
45209
|
+
DropdownMenuContent as F,
|
|
45210
|
+
DropdownMenuItem as G,
|
|
45211
|
+
DialogFooter as H,
|
|
44744
45212
|
Input as I,
|
|
44745
|
-
|
|
44746
|
-
|
|
45213
|
+
generateUUID as J,
|
|
45214
|
+
useLocation as K,
|
|
44747
45215
|
Library as L,
|
|
44748
|
-
|
|
45216
|
+
cn$1 as M,
|
|
44749
45217
|
Navigate as N,
|
|
44750
|
-
|
|
45218
|
+
NavLink as O,
|
|
44751
45219
|
Pencil as P,
|
|
44752
|
-
|
|
44753
|
-
|
|
45220
|
+
Outlet as Q,
|
|
45221
|
+
LoaderCircle as R,
|
|
44754
45222
|
ScrollArea as S,
|
|
44755
45223
|
Trash2 as T,
|
|
44756
|
-
|
|
44757
|
-
|
|
44758
|
-
|
|
44759
|
-
|
|
44760
|
-
|
|
44761
|
-
|
|
44762
|
-
|
|
45224
|
+
FolderOpen as U,
|
|
45225
|
+
electron as V,
|
|
45226
|
+
toast as W,
|
|
45227
|
+
useNavigate as X,
|
|
45228
|
+
subscribe as Y,
|
|
45229
|
+
ClockCheck as Z,
|
|
45230
|
+
Badge as _,
|
|
44763
45231
|
useAppStore as a,
|
|
44764
|
-
|
|
44765
|
-
|
|
44766
|
-
|
|
44767
|
-
|
|
44768
|
-
|
|
44769
|
-
|
|
44770
|
-
|
|
44771
|
-
|
|
44772
|
-
|
|
44773
|
-
|
|
44774
|
-
|
|
44775
|
-
|
|
44776
|
-
|
|
44777
|
-
|
|
44778
|
-
|
|
44779
|
-
|
|
44780
|
-
|
|
44781
|
-
|
|
44782
|
-
|
|
44783
|
-
|
|
44784
|
-
|
|
44785
|
-
|
|
44786
|
-
|
|
44787
|
-
|
|
44788
|
-
|
|
44789
|
-
|
|
44790
|
-
|
|
44791
|
-
|
|
44792
|
-
|
|
44793
|
-
|
|
44794
|
-
|
|
44795
|
-
|
|
44796
|
-
|
|
44797
|
-
|
|
44798
|
-
|
|
44799
|
-
|
|
44800
|
-
|
|
44801
|
-
|
|
44802
|
-
|
|
44803
|
-
|
|
44804
|
-
|
|
44805
|
-
|
|
44806
|
-
|
|
44807
|
-
|
|
44808
|
-
|
|
44809
|
-
|
|
44810
|
-
|
|
44811
|
-
|
|
44812
|
-
|
|
44813
|
-
|
|
44814
|
-
|
|
44815
|
-
|
|
44816
|
-
|
|
44817
|
-
|
|
44818
|
-
|
|
44819
|
-
|
|
44820
|
-
|
|
44821
|
-
|
|
44822
|
-
|
|
44823
|
-
|
|
44824
|
-
|
|
44825
|
-
|
|
44826
|
-
|
|
44827
|
-
|
|
45232
|
+
getDefaultLabelId as a$,
|
|
45233
|
+
CircleCheck as a0,
|
|
45234
|
+
useRender as a1,
|
|
45235
|
+
mergeProps as a2,
|
|
45236
|
+
Separator as a3,
|
|
45237
|
+
cva as a4,
|
|
45238
|
+
Bot as a5,
|
|
45239
|
+
Globe as a6,
|
|
45240
|
+
MessageCircle as a7,
|
|
45241
|
+
SelectGroup as a8,
|
|
45242
|
+
SelectLabel as a9,
|
|
45243
|
+
resolveStyle as aA,
|
|
45244
|
+
Tabs as aB,
|
|
45245
|
+
TabsList as aC,
|
|
45246
|
+
TabsTrigger as aD,
|
|
45247
|
+
webUIBaseUrl as aE,
|
|
45248
|
+
reduceSessionNotification as aF,
|
|
45249
|
+
reduceFlushStreaming as aG,
|
|
45250
|
+
Clock as aH,
|
|
45251
|
+
Folder as aI,
|
|
45252
|
+
shimExports as aJ,
|
|
45253
|
+
NOOP as aK,
|
|
45254
|
+
useCSPContext as aL,
|
|
45255
|
+
clamp as aM,
|
|
45256
|
+
fieldValidityMapping as aN,
|
|
45257
|
+
useFormContext as aO,
|
|
45258
|
+
useFieldRootContext as aP,
|
|
45259
|
+
useLabelableContext as aQ,
|
|
45260
|
+
useRegisterFieldControl as aR,
|
|
45261
|
+
useValueChanged as aS,
|
|
45262
|
+
areArraysEqual as aT,
|
|
45263
|
+
keyboard as aU,
|
|
45264
|
+
inputChange as aV,
|
|
45265
|
+
createGenericEventDetails as aW,
|
|
45266
|
+
activeElement as aX,
|
|
45267
|
+
ownerDocument as aY,
|
|
45268
|
+
contains as aZ,
|
|
45269
|
+
CompositeList as a_,
|
|
45270
|
+
ChevronRight as aa,
|
|
45271
|
+
ALL_FEATURES as ab,
|
|
45272
|
+
FEATURE_I18N_KEYS as ac,
|
|
45273
|
+
React as ad,
|
|
45274
|
+
reactDomExports as ae,
|
|
45275
|
+
getDefaultExportFromCjs as af,
|
|
45276
|
+
useControlled as ag,
|
|
45277
|
+
useTransitionStatus as ah,
|
|
45278
|
+
useBaseUiId as ai,
|
|
45279
|
+
useStableCallback as aj,
|
|
45280
|
+
createChangeEventDetails as ak,
|
|
45281
|
+
triggerPress as al,
|
|
45282
|
+
formatErrorMessage as am,
|
|
45283
|
+
TransitionStatusDataAttributes as an,
|
|
45284
|
+
transitionStatusMapping as ao,
|
|
45285
|
+
useRenderElement as ap,
|
|
45286
|
+
useButton as aq,
|
|
45287
|
+
useMergedRefs as ar,
|
|
45288
|
+
useValueAsRef as as,
|
|
45289
|
+
useAnimationsFinished as at,
|
|
45290
|
+
useIsoLayoutEffect as au,
|
|
45291
|
+
useOpenChangeComplete as av,
|
|
45292
|
+
AnimationFrame as aw,
|
|
45293
|
+
addEventListener as ax,
|
|
45294
|
+
getWindow as ay,
|
|
45295
|
+
none as az,
|
|
44828
45296
|
useMessage as b,
|
|
44829
|
-
|
|
44830
|
-
|
|
44831
|
-
|
|
44832
|
-
|
|
44833
|
-
|
|
44834
|
-
|
|
44835
|
-
|
|
44836
|
-
|
|
44837
|
-
|
|
44838
|
-
|
|
44839
|
-
|
|
44840
|
-
|
|
44841
|
-
|
|
44842
|
-
|
|
44843
|
-
|
|
44844
|
-
|
|
44845
|
-
|
|
44846
|
-
|
|
44847
|
-
|
|
44848
|
-
|
|
44849
|
-
|
|
44850
|
-
|
|
44851
|
-
|
|
44852
|
-
|
|
44853
|
-
|
|
44854
|
-
|
|
44855
|
-
|
|
44856
|
-
|
|
44857
|
-
|
|
44858
|
-
|
|
44859
|
-
|
|
44860
|
-
|
|
44861
|
-
|
|
44862
|
-
|
|
44863
|
-
|
|
44864
|
-
|
|
44865
|
-
|
|
44866
|
-
|
|
44867
|
-
|
|
44868
|
-
|
|
44869
|
-
|
|
44870
|
-
|
|
44871
|
-
|
|
44872
|
-
|
|
44873
|
-
|
|
44874
|
-
|
|
44875
|
-
|
|
44876
|
-
|
|
44877
|
-
|
|
44878
|
-
|
|
44879
|
-
|
|
44880
|
-
|
|
44881
|
-
|
|
44882
|
-
|
|
44883
|
-
|
|
44884
|
-
|
|
44885
|
-
|
|
44886
|
-
|
|
44887
|
-
|
|
44888
|
-
|
|
44889
|
-
|
|
44890
|
-
|
|
44891
|
-
|
|
44892
|
-
|
|
44893
|
-
|
|
44894
|
-
|
|
44895
|
-
|
|
44896
|
-
|
|
44897
|
-
|
|
44898
|
-
|
|
44899
|
-
|
|
44900
|
-
|
|
44901
|
-
|
|
44902
|
-
|
|
44903
|
-
|
|
44904
|
-
|
|
44905
|
-
|
|
44906
|
-
|
|
44907
|
-
|
|
44908
|
-
|
|
44909
|
-
|
|
44910
|
-
|
|
44911
|
-
|
|
44912
|
-
|
|
44913
|
-
|
|
44914
|
-
|
|
44915
|
-
|
|
44916
|
-
|
|
44917
|
-
|
|
44918
|
-
|
|
44919
|
-
|
|
44920
|
-
|
|
44921
|
-
|
|
44922
|
-
|
|
44923
|
-
|
|
44924
|
-
|
|
44925
|
-
|
|
44926
|
-
|
|
44927
|
-
|
|
44928
|
-
|
|
44929
|
-
|
|
44930
|
-
|
|
44931
|
-
|
|
44932
|
-
|
|
44933
|
-
|
|
44934
|
-
|
|
44935
|
-
|
|
44936
|
-
|
|
44937
|
-
|
|
44938
|
-
|
|
44939
|
-
|
|
44940
|
-
|
|
44941
|
-
|
|
44942
|
-
|
|
44943
|
-
|
|
44944
|
-
|
|
44945
|
-
ChevronDown as cx,
|
|
44946
|
-
DropdownMenuSub as cy,
|
|
44947
|
-
DropdownMenuSubTrigger as cz,
|
|
44948
|
-
Switch as d,
|
|
44949
|
-
Copy as e,
|
|
44950
|
-
request as f,
|
|
44951
|
-
extractErrorMessage as g,
|
|
44952
|
-
copyText as h,
|
|
45297
|
+
useAnchoredPopupScrollLock as b$,
|
|
45298
|
+
resolveAriaLabelledBy as b0,
|
|
45299
|
+
useDirection as b1,
|
|
45300
|
+
getTarget as b2,
|
|
45301
|
+
useAnimationFrame as b3,
|
|
45302
|
+
isElement as b4,
|
|
45303
|
+
drag as b5,
|
|
45304
|
+
trackPress as b6,
|
|
45305
|
+
useLabelableId as b7,
|
|
45306
|
+
useCompositeListItem as b8,
|
|
45307
|
+
visuallyHidden as b9,
|
|
45308
|
+
createPopupFloatingRootContext as bA,
|
|
45309
|
+
Timeout as bB,
|
|
45310
|
+
PopupTriggerMap as bC,
|
|
45311
|
+
FloatingTree as bD,
|
|
45312
|
+
usePopupRootSync as bE,
|
|
45313
|
+
useImplicitActiveTrigger as bF,
|
|
45314
|
+
useOpenStateTransitions as bG,
|
|
45315
|
+
imperativeAction as bH,
|
|
45316
|
+
PopupHandleAttachment as bI,
|
|
45317
|
+
usePopupRootStore as bJ,
|
|
45318
|
+
useDismiss as bK,
|
|
45319
|
+
usePopupInteractionProps as bL,
|
|
45320
|
+
usePopupHandleStore as bM,
|
|
45321
|
+
useTriggerDataForwarding as bN,
|
|
45322
|
+
useHoverReferenceInteraction as bO,
|
|
45323
|
+
safePolygon as bP,
|
|
45324
|
+
useClick as bQ,
|
|
45325
|
+
useOpenMethodTriggerProps as bR,
|
|
45326
|
+
useTriggerFocusGuards as bS,
|
|
45327
|
+
CLICK_TRIGGER_IDENTIFIER as bT,
|
|
45328
|
+
FocusGuard as bU,
|
|
45329
|
+
pressableTriggerOpenStateMapping as bV,
|
|
45330
|
+
triggerOpenStateMapping as bW,
|
|
45331
|
+
FloatingPortal as bX,
|
|
45332
|
+
POPUP_COLLISION_AVOIDANCE as bY,
|
|
45333
|
+
useFloatingNodeId as bZ,
|
|
45334
|
+
useAnchorPositioning as b_,
|
|
45335
|
+
COMPOSITE_KEYS as ba,
|
|
45336
|
+
PAGE_UP as bb,
|
|
45337
|
+
PAGE_DOWN as bc,
|
|
45338
|
+
HOME as bd,
|
|
45339
|
+
END as be,
|
|
45340
|
+
ARROW_LEFT as bf,
|
|
45341
|
+
ARROW_DOWN as bg,
|
|
45342
|
+
ARROW_RIGHT as bh,
|
|
45343
|
+
ARROW_UP as bi,
|
|
45344
|
+
matchesFocusVisible as bj,
|
|
45345
|
+
EDITOR_LABELS as bk,
|
|
45346
|
+
L as bl,
|
|
45347
|
+
N as bm,
|
|
45348
|
+
_ as bn,
|
|
45349
|
+
D as bo,
|
|
45350
|
+
w as bp,
|
|
45351
|
+
ReactStore as bq,
|
|
45352
|
+
popupStoreSelectors as br,
|
|
45353
|
+
triggerHover as bs,
|
|
45354
|
+
escapeKey as bt,
|
|
45355
|
+
attachPreventUnmountOnClose as bu,
|
|
45356
|
+
closePress as bv,
|
|
45357
|
+
PATIENT_CLICK_THRESHOLD as bw,
|
|
45358
|
+
focusOut as bx,
|
|
45359
|
+
setPopupOpenState as by,
|
|
45360
|
+
createInitialPopupStoreState as bz,
|
|
45361
|
+
Switch as c,
|
|
45362
|
+
usePositioner as c0,
|
|
45363
|
+
InternalBackdrop as c1,
|
|
45364
|
+
inertValue as c2,
|
|
45365
|
+
FloatingNode as c3,
|
|
45366
|
+
useToolbarRootContext as c4,
|
|
45367
|
+
useHoverFloatingInteraction as c5,
|
|
45368
|
+
createDefaultInitialFocus as c6,
|
|
45369
|
+
FOCUSABLE_POPUP_PROPS as c7,
|
|
45370
|
+
getDisabledMountTransitionStyles as c8,
|
|
45371
|
+
FloatingFocusManager as c9,
|
|
45372
|
+
useProjectState as cA,
|
|
45373
|
+
TabsContent as cB,
|
|
45374
|
+
Card as cC,
|
|
45375
|
+
getBasename as cD,
|
|
45376
|
+
isSubPath as cE,
|
|
45377
|
+
formatBytes as cF,
|
|
45378
|
+
isImageMimeType as cG,
|
|
45379
|
+
twMerge as cH,
|
|
45380
|
+
clsx as cI,
|
|
45381
|
+
getAugmentedNamespace as cJ,
|
|
45382
|
+
isHTMLElement as ca,
|
|
45383
|
+
popupTransitionStateMapping as cb,
|
|
45384
|
+
formatUpdatedTime as cc,
|
|
45385
|
+
buttonVariants as cd,
|
|
45386
|
+
Tooltip as ce,
|
|
45387
|
+
TooltipTrigger as cf,
|
|
45388
|
+
TooltipContent as cg,
|
|
45389
|
+
formatDuration as ch,
|
|
45390
|
+
ReactDOM as ci,
|
|
45391
|
+
clientId as cj,
|
|
45392
|
+
ChevronDown as ck,
|
|
45393
|
+
v as cl,
|
|
45394
|
+
HoverCard as cm,
|
|
45395
|
+
HoverCardTrigger as cn,
|
|
45396
|
+
HoverCardContent as co,
|
|
45397
|
+
X as cp,
|
|
45398
|
+
DropdownMenuSub as cq,
|
|
45399
|
+
DropdownMenuSubTrigger as cr,
|
|
45400
|
+
DropdownMenuSubContent as cs,
|
|
45401
|
+
CircleQuestionMark as ct,
|
|
45402
|
+
ChevronUp as cu,
|
|
45403
|
+
z as cv,
|
|
45404
|
+
__vitePreload as cw,
|
|
45405
|
+
Code as cx,
|
|
45406
|
+
MessageSquare as cy,
|
|
45407
|
+
FolderPlus as cz,
|
|
45408
|
+
Copy as d,
|
|
45409
|
+
request as e,
|
|
45410
|
+
extractErrorMessage as f,
|
|
45411
|
+
copyText as g,
|
|
45412
|
+
createLucideIcon as h,
|
|
44953
45413
|
isWebUI as i,
|
|
44954
45414
|
jsxRuntimeExports as j,
|
|
44955
|
-
|
|
44956
|
-
|
|
44957
|
-
|
|
44958
|
-
|
|
44959
|
-
|
|
44960
|
-
|
|
44961
|
-
|
|
45415
|
+
ContextMenu as k,
|
|
45416
|
+
ContextMenuTrigger as l,
|
|
45417
|
+
ContextMenuContent as m,
|
|
45418
|
+
ContextMenuItem as n,
|
|
45419
|
+
ContextMenuSeparator as o,
|
|
45420
|
+
DialogContent as p,
|
|
45421
|
+
DialogHeader as q,
|
|
44962
45422
|
reactExports as r,
|
|
44963
|
-
|
|
44964
|
-
|
|
45423
|
+
DialogTitle as s,
|
|
45424
|
+
DialogDescription as t,
|
|
44965
45425
|
useTranslation as u,
|
|
44966
|
-
|
|
44967
|
-
|
|
44968
|
-
|
|
44969
|
-
|
|
44970
|
-
|
|
45426
|
+
Select as v,
|
|
45427
|
+
SelectTrigger as w,
|
|
45428
|
+
SelectValue as x,
|
|
45429
|
+
SelectContent as y,
|
|
45430
|
+
SelectItem as z
|
|
44971
45431
|
};
|