@zythum02/fello-server 0.1.51 → 0.1.52
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-C0L-SxO8.js} +1 -1
- package/out/renderer/assets/_baseUniq-C0L-SxO8.js.br +0 -0
- package/out/renderer/assets/_baseUniq-C0L-SxO8.js.gz +0 -0
- package/out/renderer/assets/{arc-B_en4gJt.js → arc-bnlMIyYF.js} +1 -1
- package/out/renderer/assets/arc-bnlMIyYF.js.br +0 -0
- package/out/renderer/assets/arc-bnlMIyYF.js.gz +0 -0
- package/out/renderer/assets/{architectureDiagram-Q4EWVU46-W-l3dTvZ.js → architectureDiagram-Q4EWVU46-Cr0249Lu.js} +6 -6
- package/out/renderer/assets/architectureDiagram-Q4EWVU46-Cr0249Lu.js.br +0 -0
- package/out/renderer/assets/architectureDiagram-Q4EWVU46-Cr0249Lu.js.gz +0 -0
- package/out/renderer/assets/{arrow-left-BwbOF_G_.js → arrow-left-D589pHHA.js} +1 -1
- package/out/renderer/assets/{automation--izxbhlj.js → automation-CvjrkE9z.js} +8 -8
- package/out/renderer/assets/automation-CvjrkE9z.js.br +0 -0
- package/out/renderer/assets/automation-CvjrkE9z.js.gz +0 -0
- package/out/renderer/assets/{blockDiagram-DXYQGD6D-BdxXOr8Y.js → blockDiagram-DXYQGD6D-Cw6vh5dx.js} +7 -7
- package/out/renderer/assets/blockDiagram-DXYQGD6D-Cw6vh5dx.js.br +0 -0
- package/out/renderer/assets/blockDiagram-DXYQGD6D-Cw6vh5dx.js.gz +0 -0
- package/out/renderer/assets/{c4Diagram-AHTNJAMY-C_8XgPtT.js → c4Diagram-AHTNJAMY-BUrvcyv2.js} +3 -3
- package/out/renderer/assets/c4Diagram-AHTNJAMY-BUrvcyv2.js.br +0 -0
- package/out/renderer/assets/c4Diagram-AHTNJAMY-BUrvcyv2.js.gz +0 -0
- package/out/renderer/assets/{channel-BsSLbHzl.js → channel-DQr36qW5.js} +1 -1
- package/out/renderer/assets/{chunk-4BX2VUAB-CADGLBio.js → chunk-4BX2VUAB-DOsXCDD7.js} +1 -1
- package/out/renderer/assets/{chunk-4TB4RGXK-C7h57GNs.js → chunk-4TB4RGXK-D_fBnf0p.js} +5 -5
- package/out/renderer/assets/chunk-4TB4RGXK-D_fBnf0p.js.br +0 -0
- package/out/renderer/assets/chunk-4TB4RGXK-D_fBnf0p.js.gz +0 -0
- package/out/renderer/assets/{chunk-55IACEB6-Cw-dv2b3.js → chunk-55IACEB6-3ETNuedT.js} +1 -1
- package/out/renderer/assets/{chunk-EDXVE4YY-BPjYyS5o.js → chunk-EDXVE4YY-BJLqHaER.js} +1 -1
- package/out/renderer/assets/chunk-EDXVE4YY-BJLqHaER.js.br +0 -0
- package/out/renderer/assets/chunk-EDXVE4YY-BJLqHaER.js.gz +0 -0
- package/out/renderer/assets/{chunk-FMBD7UC4-DhJ5Z89u.js → chunk-FMBD7UC4-DP-WGTNG.js} +1 -1
- package/out/renderer/assets/{chunk-OYMX7WX6-D5Q5ZCl0.js → chunk-OYMX7WX6-CrS7loi7.js} +3 -3
- package/out/renderer/assets/chunk-OYMX7WX6-CrS7loi7.js.br +0 -0
- package/out/renderer/assets/chunk-OYMX7WX6-CrS7loi7.js.gz +0 -0
- package/out/renderer/assets/{chunk-QZHKN3VN-SsM-5KS-.js → chunk-QZHKN3VN-C53USs5W.js} +1 -1
- package/out/renderer/assets/{chunk-YZCP3GAM-AbfctYy8.js → chunk-YZCP3GAM-CMgdytZR.js} +1 -1
- package/out/renderer/assets/chunk-YZCP3GAM-CMgdytZR.js.br +0 -0
- package/out/renderer/assets/chunk-YZCP3GAM-CMgdytZR.js.gz +0 -0
- package/out/renderer/assets/{circle-x-CxFDvVH_.js → circle-x-OvXymUrf.js} +1 -1
- package/out/renderer/assets/{classDiagram-v2-HSJHXN6E-7ZGV_42k.js → classDiagram-6PBFFD2Q-DIYtEiO5.js} +7 -7
- package/out/renderer/assets/{classDiagram-6PBFFD2Q-7ZGV_42k.js → classDiagram-v2-HSJHXN6E-DIYtEiO5.js} +7 -7
- package/out/renderer/assets/{clipboard-D6ZpW5GH.js → clipboard-xI9lExaB.js} +1 -1
- package/out/renderer/assets/{clone-D2_BL2Tz.js → clone-D45P7Iqc.js} +1 -1
- package/out/renderer/assets/{code-editor-cp9haQUT.js → code-editor-SuOcN-5B.js} +2 -2
- package/out/renderer/assets/code-editor-SuOcN-5B.js.br +0 -0
- package/out/renderer/assets/code-editor-SuOcN-5B.js.gz +0 -0
- package/out/renderer/assets/{collapsible-BHMUDZxc.js → collapsible-Bd85ZCyx.js} +1 -1
- package/out/renderer/assets/collapsible-Bd85ZCyx.js.br +0 -0
- package/out/renderer/assets/collapsible-Bd85ZCyx.js.gz +0 -0
- package/out/renderer/assets/{context-menu-K6z5uSmg.js → context-menu-BO9-4FYd.js} +1 -1
- package/out/renderer/assets/context-menu-BO9-4FYd.js.br +0 -0
- package/out/renderer/assets/context-menu-BO9-4FYd.js.gz +0 -0
- package/out/renderer/assets/{cose-bilkent-S5V4N54A-CVcE9aWV.js → cose-bilkent-S5V4N54A-Dq8VllNT.js} +2 -2
- package/out/renderer/assets/cose-bilkent-S5V4N54A-Dq8VllNT.js.br +0 -0
- package/out/renderer/assets/cose-bilkent-S5V4N54A-Dq8VllNT.js.gz +0 -0
- package/out/renderer/assets/{dagre-KV5264BT-zrX-TFsi.js → dagre-KV5264BT-Dec8q4UT.js} +7 -7
- package/out/renderer/assets/dagre-KV5264BT-Dec8q4UT.js.br +0 -0
- package/out/renderer/assets/dagre-KV5264BT-Dec8q4UT.js.gz +0 -0
- package/out/renderer/assets/{diagram-5BDNPKRD-Ct9NrJP9.js → diagram-5BDNPKRD-CzA2u_EN.js} +7 -7
- package/out/renderer/assets/diagram-5BDNPKRD-CzA2u_EN.js.br +0 -0
- package/out/renderer/assets/diagram-5BDNPKRD-CzA2u_EN.js.gz +0 -0
- package/out/renderer/assets/{diagram-G4DWMVQ6-tTGWcCd_.js → diagram-G4DWMVQ6-C8h3R7jD.js} +7 -7
- package/out/renderer/assets/diagram-G4DWMVQ6-C8h3R7jD.js.br +0 -0
- package/out/renderer/assets/diagram-G4DWMVQ6-C8h3R7jD.js.gz +0 -0
- package/out/renderer/assets/{diagram-MMDJMWI5-CpmcnN2B.js → diagram-MMDJMWI5-9tiXSF90.js} +6 -6
- package/out/renderer/assets/diagram-MMDJMWI5-9tiXSF90.js.br +0 -0
- package/out/renderer/assets/diagram-MMDJMWI5-9tiXSF90.js.gz +0 -0
- package/out/renderer/assets/{diagram-TYMM5635-DKTR2xS9.js → diagram-TYMM5635-BrarGJNf.js} +6 -6
- package/out/renderer/assets/diagram-TYMM5635-BrarGJNf.js.br +0 -0
- package/out/renderer/assets/diagram-TYMM5635-BrarGJNf.js.gz +0 -0
- package/out/renderer/assets/{ellipsis-8708fodN.js → ellipsis-BafkhboM.js} +1 -1
- package/out/renderer/assets/{erDiagram-SMLLAGMA-BW13EXAs.js → erDiagram-SMLLAGMA-1Q9StK7L.js} +5 -5
- package/out/renderer/assets/erDiagram-SMLLAGMA-1Q9StK7L.js.br +0 -0
- package/out/renderer/assets/erDiagram-SMLLAGMA-1Q9StK7L.js.gz +0 -0
- package/out/renderer/assets/{field-Be86bgEh.js → field-ohYLdnJa.js} +1 -1
- package/out/renderer/assets/field-ohYLdnJa.js.br +0 -0
- package/out/renderer/assets/field-ohYLdnJa.js.gz +0 -0
- package/out/renderer/assets/{file-text-CMw1QH-C.js → file-text-CshHuHgW.js} +1 -1
- package/out/renderer/assets/{flowDiagram-DWJPFMVM-C3oZAKxX.js → flowDiagram-DWJPFMVM-CpcXVOmj.js} +7 -7
- package/out/renderer/assets/flowDiagram-DWJPFMVM-CpcXVOmj.js.br +0 -0
- package/out/renderer/assets/flowDiagram-DWJPFMVM-CpcXVOmj.js.gz +0 -0
- package/out/renderer/assets/{ganttDiagram-T4ZO3ILL-BARJrpDB.js → ganttDiagram-T4ZO3ILL-C7Da4JBG.js} +3 -3
- package/out/renderer/assets/ganttDiagram-T4ZO3ILL-C7Da4JBG.js.br +0 -0
- package/out/renderer/assets/ganttDiagram-T4ZO3ILL-C7Da4JBG.js.gz +0 -0
- package/out/renderer/assets/{gitGraphDiagram-UUTBAWPF-D0gl3Row.js → gitGraphDiagram-UUTBAWPF-COBL52q_.js} +7 -7
- package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-COBL52q_.js.br +0 -0
- package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-COBL52q_.js.gz +0 -0
- package/out/renderer/assets/{graph-DB7hnlLW.js → graph-vKaAs6sc.js} +2 -2
- package/out/renderer/assets/graph-vKaAs6sc.js.br +0 -0
- package/out/renderer/assets/graph-vKaAs6sc.js.gz +0 -0
- package/out/renderer/assets/{highlighted-body-OFNGDK62-J87DvYBX.js → highlighted-body-OFNGDK62-BGNnB1Ll.js} +2 -2
- package/out/renderer/assets/{index-Co8mzhyV.js → index-BJPggXxf.js} +66 -55
- package/out/renderer/assets/index-BJPggXxf.js.br +0 -0
- package/out/renderer/assets/index-BJPggXxf.js.gz +0 -0
- package/out/renderer/assets/index-DGML4zYf.css +382 -0
- package/out/renderer/assets/index-DGML4zYf.css.br +0 -0
- package/out/renderer/assets/index-DGML4zYf.css.gz +0 -0
- package/out/renderer/assets/{infoDiagram-42DDH7IO-BrfLG_LC.js → infoDiagram-42DDH7IO-z37e1cYq.js} +5 -5
- package/out/renderer/assets/infoDiagram-42DDH7IO-z37e1cYq.js.br +0 -0
- package/out/renderer/assets/infoDiagram-42DDH7IO-z37e1cYq.js.gz +0 -0
- package/out/renderer/assets/{ishikawaDiagram-UXIWVN3A-CO0cyvTq.js → ishikawaDiagram-UXIWVN3A-D0QTo3NZ.js} +2 -2
- package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-D0QTo3NZ.js.br +0 -0
- package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-D0QTo3NZ.js.gz +0 -0
- package/out/renderer/assets/{item-CvcokSWl.js → item-Cv-tnX8b.js} +1 -1
- package/out/renderer/assets/item-Cv-tnX8b.js.br +0 -0
- package/out/renderer/assets/item-Cv-tnX8b.js.gz +0 -0
- package/out/renderer/assets/{journeyDiagram-VCZTEJTY-D3F2Iu5P.js → journeyDiagram-VCZTEJTY-CQV0gdjM.js} +5 -5
- package/out/renderer/assets/journeyDiagram-VCZTEJTY-CQV0gdjM.js.br +0 -0
- package/out/renderer/assets/journeyDiagram-VCZTEJTY-CQV0gdjM.js.gz +0 -0
- package/out/renderer/assets/{kanban-definition-6JOO6SKY-CC_drlaB.js → kanban-definition-6JOO6SKY-DouRT6vc.js} +3 -3
- package/out/renderer/assets/kanban-definition-6JOO6SKY-DouRT6vc.js.br +0 -0
- package/out/renderer/assets/kanban-definition-6JOO6SKY-DouRT6vc.js.gz +0 -0
- package/out/renderer/assets/{layout-B_3n1To1.js → layout-BhbUjpvY.js} +4 -4
- package/out/renderer/assets/layout-BhbUjpvY.js.br +0 -0
- package/out/renderer/assets/layout-BhbUjpvY.js.gz +0 -0
- package/out/renderer/assets/{linear-AxwRZ_jw.js → linear-D1WO10JK.js} +1 -1
- package/out/renderer/assets/linear-D1WO10JK.js.br +0 -0
- package/out/renderer/assets/linear-D1WO10JK.js.gz +0 -0
- package/out/renderer/assets/{link-2-4A51Gs15.js → link-2-C5KPDK2L.js} +1 -1
- package/out/renderer/assets/{mermaid-GHXKKRXX-DFOJYe_t.js → mermaid-GHXKKRXX-KwA2c0l5.js} +36 -36
- package/out/renderer/assets/mermaid-GHXKKRXX-KwA2c0l5.js.br +0 -0
- package/out/renderer/assets/mermaid-GHXKKRXX-KwA2c0l5.js.gz +0 -0
- package/out/renderer/assets/{min-Dip7FmOo.js → min-BP2C7bzG.js} +2 -2
- package/out/renderer/assets/min-BP2C7bzG.js.br +0 -0
- package/out/renderer/assets/min-BP2C7bzG.js.gz +0 -0
- package/out/renderer/assets/{mindmap-definition-QFDTVHPH-D9aiLrpe.js → mindmap-definition-QFDTVHPH-CxLYrjVp.js} +4 -4
- package/out/renderer/assets/mindmap-definition-QFDTVHPH-CxLYrjVp.js.br +0 -0
- package/out/renderer/assets/mindmap-definition-QFDTVHPH-CxLYrjVp.js.gz +0 -0
- package/out/renderer/assets/{open-guide-KaWHLGYU.js → open-guide-UhaRhiI6.js} +1 -1
- package/out/renderer/assets/{package-search-CNALSYvi.js → package-search-DpyeQ5Lx.js} +1 -1
- package/out/renderer/assets/{pieDiagram-DEJITSTG-BX_34lAP.js → pieDiagram-DEJITSTG-D1LBRn_k.js} +7 -7
- package/out/renderer/assets/pieDiagram-DEJITSTG-D1LBRn_k.js.br +0 -0
- package/out/renderer/assets/pieDiagram-DEJITSTG-D1LBRn_k.js.gz +0 -0
- package/out/renderer/assets/{plus-DOVKq0d7.js → plus-CsV_3veW.js} +1 -1
- package/out/renderer/assets/{quadrantDiagram-34T5L4WZ-G09qfNO8.js → quadrantDiagram-34T5L4WZ-89cdKeKP.js} +3 -3
- package/out/renderer/assets/quadrantDiagram-34T5L4WZ-89cdKeKP.js.br +0 -0
- package/out/renderer/assets/quadrantDiagram-34T5L4WZ-89cdKeKP.js.gz +0 -0
- package/out/renderer/assets/{refresh-cw-DGB7KSZ3.js → refresh-cw-CYW3HR-E.js} +1 -1
- package/out/renderer/assets/{requirementDiagram-MS252O5E-sJPY8r9J.js → requirementDiagram-MS252O5E-BPmX5cbr.js} +4 -4
- package/out/renderer/assets/requirementDiagram-MS252O5E-BPmX5cbr.js.br +0 -0
- package/out/renderer/assets/requirementDiagram-MS252O5E-BPmX5cbr.js.gz +0 -0
- package/out/renderer/assets/{resizable-C5jomC3Y.js → resizable-C_plViAK.js} +1 -1
- package/out/renderer/assets/resizable-C_plViAK.js.br +0 -0
- package/out/renderer/assets/resizable-C_plViAK.js.gz +0 -0
- package/out/renderer/assets/{sankeyDiagram-XADWPNL6-DHIS2ISZ.js → sankeyDiagram-XADWPNL6-Cy6CP9QU.js} +2 -2
- package/out/renderer/assets/sankeyDiagram-XADWPNL6-Cy6CP9QU.js.br +0 -0
- package/out/renderer/assets/sankeyDiagram-XADWPNL6-Cy6CP9QU.js.gz +0 -0
- package/out/renderer/assets/{schedule-BoqPUAOI.js → schedule-BRGzJU8Q.js} +10 -10
- package/out/renderer/assets/schedule-BRGzJU8Q.js.br +0 -0
- package/out/renderer/assets/schedule-BRGzJU8Q.js.gz +0 -0
- package/out/renderer/assets/{search-DdqhQVGJ.js → search-BHyqy--Q.js} +1 -1
- package/out/renderer/assets/{sequenceDiagram-FGHM5R23-Boc12Em2.js → sequenceDiagram-FGHM5R23-B3c7Za1w.js} +4 -4
- package/out/renderer/assets/sequenceDiagram-FGHM5R23-B3c7Za1w.js.br +0 -0
- package/out/renderer/assets/sequenceDiagram-FGHM5R23-B3c7Za1w.js.gz +0 -0
- package/out/renderer/assets/{session-DgU3TDDV.js → session-DAyi31xW.js} +855 -58
- package/out/renderer/assets/session-DAyi31xW.js.br +0 -0
- package/out/renderer/assets/session-DAyi31xW.js.gz +0 -0
- package/out/renderer/assets/{setting-dialog-4pmkQ7WP.js → setting-dialog-B9QpnCSy.js} +3 -3
- package/out/renderer/assets/setting-dialog-B9QpnCSy.js.br +0 -0
- package/out/renderer/assets/setting-dialog-B9QpnCSy.js.gz +0 -0
- package/out/renderer/assets/{settings-2-CI8inOtS.js → settings-2-DTnwbGMG.js} +1 -1
- package/out/renderer/assets/{settings-agents-C4u0s-iR.js → settings-agents-BrAPSjkm.js} +11 -11
- package/out/renderer/assets/settings-agents-BrAPSjkm.js.br +0 -0
- package/out/renderer/assets/settings-agents-BrAPSjkm.js.gz +0 -0
- package/out/renderer/assets/{settings-general-BkLSJoHB.js → settings-general-Ck2OiZjy.js} +2 -2
- package/out/renderer/assets/settings-general-Ck2OiZjy.js.br +0 -0
- package/out/renderer/assets/settings-general-Ck2OiZjy.js.gz +0 -0
- package/out/renderer/assets/{settings-ilink-6ZrgPpeO.js → settings-ilink-D0Br74W_.js} +3 -3
- package/out/renderer/assets/settings-ilink-D0Br74W_.js.br +0 -0
- package/out/renderer/assets/settings-ilink-D0Br74W_.js.gz +0 -0
- package/out/renderer/assets/{settings-image-generation-B6YIO6o_.js → settings-image-generation-BdyKoUUZ.js} +7 -7
- package/out/renderer/assets/settings-image-generation-BdyKoUUZ.js.br +0 -0
- package/out/renderer/assets/settings-image-generation-BdyKoUUZ.js.gz +0 -0
- package/out/renderer/assets/{settings-layout-Cf7GMXFZ.js → settings-layout-B7d1oQnz.js} +3 -3
- package/out/renderer/assets/settings-layout-B7d1oQnz.js.br +0 -0
- package/out/renderer/assets/settings-layout-B7d1oQnz.js.gz +0 -0
- package/out/renderer/assets/{settings-mcp-CJvL5Siz.js → settings-mcp-DtnVGpCh.js} +8 -8
- package/out/renderer/assets/settings-mcp-DtnVGpCh.js.br +0 -0
- package/out/renderer/assets/settings-mcp-DtnVGpCh.js.gz +0 -0
- package/out/renderer/assets/{settings-memory-CvkppfHy.js → settings-memory-Bff_D3Id.js} +3 -3
- package/out/renderer/assets/settings-memory-Bff_D3Id.js.br +0 -0
- package/out/renderer/assets/settings-memory-Bff_D3Id.js.gz +0 -0
- package/out/renderer/assets/{settings-snippets-CO_jL3O3.js → settings-snippets-CuwNZ684.js} +7 -7
- package/out/renderer/assets/settings-snippets-CuwNZ684.js.br +0 -0
- package/out/renderer/assets/settings-snippets-CuwNZ684.js.gz +0 -0
- package/out/renderer/assets/{settings-webui-5n5mI55N.js → settings-webui-CcjZQw6G.js} +2 -2
- package/out/renderer/assets/settings-webui-CcjZQw6G.js.br +0 -0
- package/out/renderer/assets/settings-webui-CcjZQw6G.js.gz +0 -0
- package/out/renderer/assets/{skills-installed-BqjN4mEl.js → skills-installed-BR3EmTKD.js} +4 -4
- package/out/renderer/assets/skills-installed-BR3EmTKD.js.br +0 -0
- package/out/renderer/assets/skills-installed-BR3EmTKD.js.gz +0 -0
- package/out/renderer/assets/{skills-layout-C8b-pe9X.js → skills-layout-Cgy95TdD.js} +2 -2
- package/out/renderer/assets/skills-layout-Cgy95TdD.js.br +0 -0
- package/out/renderer/assets/skills-layout-Cgy95TdD.js.gz +0 -0
- package/out/renderer/assets/{skills-skills-sh-Bh8KQ3PF.js → skills-skills-sh-7eO0Llg2.js} +4 -4
- package/out/renderer/assets/skills-skills-sh-7eO0Llg2.js.br +0 -0
- package/out/renderer/assets/skills-skills-sh-7eO0Llg2.js.gz +0 -0
- package/out/renderer/assets/{sortable.esm-DARmP-Qe.js → sortable.esm-BTWJnVbf.js} +1 -1
- package/out/renderer/assets/sortable.esm-BTWJnVbf.js.br +0 -0
- package/out/renderer/assets/sortable.esm-BTWJnVbf.js.gz +0 -0
- package/out/renderer/assets/{standard-schema-CtFhVVG9.js → standard-schema-Dk273X__.js} +1 -1
- package/out/renderer/assets/standard-schema-Dk273X__.js.br +0 -0
- package/out/renderer/assets/standard-schema-Dk273X__.js.gz +0 -0
- package/out/renderer/assets/{stateDiagram-FHFEXIEX-Da2gV_KD.js → stateDiagram-FHFEXIEX-C-7WuE0a.js} +9 -9
- package/out/renderer/assets/stateDiagram-FHFEXIEX-C-7WuE0a.js.br +0 -0
- package/out/renderer/assets/stateDiagram-FHFEXIEX-C-7WuE0a.js.gz +0 -0
- package/out/renderer/assets/{stateDiagram-v2-QKLJ7IA2-D44mYiaY.js → stateDiagram-v2-QKLJ7IA2-IZRTgRo8.js} +5 -5
- package/out/renderer/assets/{task-Ca7ur8ku.js → task-Bd1x6VfK.js} +12 -12
- package/out/renderer/assets/task-Bd1x6VfK.js.br +0 -0
- package/out/renderer/assets/task-Bd1x6VfK.js.gz +0 -0
- package/out/renderer/assets/{textarea-BCC4Oh3S.js → textarea-CcqU8Ki7.js} +1 -1
- package/out/renderer/assets/{timeline-definition-GMOUNBTQ-egFv4rLM.js → timeline-definition-GMOUNBTQ-DVUMAatS.js} +3 -3
- package/out/renderer/assets/timeline-definition-GMOUNBTQ-DVUMAatS.js.br +0 -0
- package/out/renderer/assets/timeline-definition-GMOUNBTQ-DVUMAatS.js.gz +0 -0
- package/out/renderer/assets/{vennDiagram-DHZGUBPP-CnOs99wX.js → vennDiagram-DHZGUBPP-BtKdpgmE.js} +2 -2
- package/out/renderer/assets/vennDiagram-DHZGUBPP-BtKdpgmE.js.br +0 -0
- package/out/renderer/assets/vennDiagram-DHZGUBPP-BtKdpgmE.js.gz +0 -0
- package/out/renderer/assets/{wardley-RL74JXVD-Bb1llXhX.js → wardley-RL74JXVD-DRlpukah.js} +4 -4
- package/out/renderer/assets/wardley-RL74JXVD-DRlpukah.js.br +0 -0
- package/out/renderer/assets/wardley-RL74JXVD-DRlpukah.js.gz +0 -0
- package/out/renderer/assets/{wardleyDiagram-NUSXRM2D-BupfUxsI.js → wardleyDiagram-NUSXRM2D-c_iDOO-3.js} +6 -6
- package/out/renderer/assets/wardleyDiagram-NUSXRM2D-c_iDOO-3.js.br +0 -0
- package/out/renderer/assets/wardleyDiagram-NUSXRM2D-c_iDOO-3.js.gz +0 -0
- package/out/renderer/assets/{wrench-Dj1S5dhM.js → wrench-C-pOIUrz.js} +1 -1
- package/out/renderer/assets/wrench-C-pOIUrz.js.br +0 -0
- package/out/renderer/assets/wrench-C-pOIUrz.js.gz +0 -0
- package/out/renderer/assets/{xlsx-view-DIarHecR.js → xlsx-view-Ca3bToM7.js} +10 -10
- package/out/renderer/assets/xlsx-view-Ca3bToM7.js.br +0 -0
- package/out/renderer/assets/xlsx-view-Ca3bToM7.js.gz +0 -0
- package/out/renderer/assets/{xychartDiagram-5P7HB3ND-CtPNxvT_.js → xychartDiagram-5P7HB3ND-D65drBbj.js} +3 -3
- package/out/renderer/assets/xychartDiagram-5P7HB3ND-D65drBbj.js.br +0 -0
- package/out/renderer/assets/xychartDiagram-5P7HB3ND-D65drBbj.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 +356 -58
- package/package.json +2 -1
- 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/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.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,38 +1,38 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./code-editor-
|
|
2
|
-
import { c as createLucideIcon, r as reactExports, aC as formatErrorMessage, bB as ReactStore, bC as popupStoreSelectors, bD as triggerHover, ap as triggerPress, bE as escapeKey, bF as attachPreventUnmountOnClose, bG as closePress, bH as PATIENT_CLICK_THRESHOLD, aw as reactDomExports, bI as focusOut, bJ as setPopupOpenState, bK as createInitialPopupStoreState, bL as createPopupFloatingRootContext, bM as Timeout, bN as PopupTriggerMap, j as jsxRuntimeExports, bO as FloatingTree, bP as usePopupRootSync, bQ as useImplicitActiveTrigger, bR as useOpenStateTransitions, an as createChangeEventDetails, bS as imperativeAction, bT as PopupHandleAttachment, bU as usePopupRootStore, bV as useDismiss, bW as usePopupInteractionProps, bX as usePopupHandleStore, aA as useBaseUiId, bY as useTriggerDataForwarding, bZ as useHoverReferenceInteraction, b_ as safePolygon, b$ as useClick, c0 as useOpenMethodTriggerProps, aF as useButton, c1 as useTriggerFocusGuards, ah as useRenderElement, c2 as CLICK_TRIGGER_IDENTIFIER, c3 as FocusGuard, ak as pressableTriggerOpenStateMapping, c4 as triggerOpenStateMapping, c5 as FloatingPortal, c6 as POPUP_COLLISION_AVOIDANCE, c7 as useFloatingNodeId, aI as useAnimationsFinished, c8 as useAnchorPositioning, aJ as useIsoLayoutEffect, c9 as useAnchoredPopupScrollLock, ca as usePositioner, cb as InternalBackdrop, cc as inertValue, cd as FloatingNode, aB as useStableCallback, ce as useToolbarRootContext, aK as useOpenChangeComplete, cf as useHoverFloatingInteraction, cg as createDefaultInitialFocus, ch as FOCUSABLE_POPUP_PROPS, bl as COMPOSITE_KEYS, ci as getDisabledMountTransitionStyles, cj as FloatingFocusManager, ck as isHTMLElement, cl as popupTransitionStateMapping, u as useTranslation, b as useMessage, Q as useNavigate, a as useAppStore, V as Badge, cm as formatUpdatedTime, f as request, K as electron, a6 as ALL_FEATURES, a7 as FEATURE_I18N_KEYS, F as cn$1, d as Switch, B as Button, H as LoaderCircle, i as isWebUI, J as FolderOpen, C as Check, e as Copy, g as extractErrorMessage, aU as reduceFlushStreaming, aT as reduceSessionNotification, h as copyText, av as React,
|
|
3
|
-
import { S as Settings2 } from "./settings-2-
|
|
4
|
-
import { i as isValidMessageToDisplay, M as MessageBubble, A as ArrowUpToLine, S as Square, j as jsonToPrettyYamlExports, p as parseFileReference, c as CodeCompareView, r as resolveFileUrl, I as ImageView, P as PdfView, D as DocxView, a as PptxView, X as XlsxView, R as RotateCcw, F as Folders } from "./xlsx-view-
|
|
5
|
-
import { I as Image, W as Wrench } from "./wrench-
|
|
6
|
-
import { F as FileText } from "./file-text-
|
|
7
|
-
import { C as Clipboard } from "./clipboard-
|
|
8
|
-
import { A as ArrowLeft } from "./arrow-left-
|
|
9
|
-
import { aQ as CodeView, S as StreamMarkdown, aR as FileIcon } from "./mermaid-GHXKKRXX-
|
|
10
|
-
import { b as ContextMenuContent, c as ContextMenuItem, d as ContextMenuSeparator, C as ContextMenu, a as ContextMenuTrigger } from "./context-menu-
|
|
11
|
-
import { S as Search } from "./search-
|
|
12
|
-
import { E as ExternalLink } from "./link-2-
|
|
13
|
-
import { R as RefreshCw } from "./refresh-cw-
|
|
14
|
-
import { P as Plus } from "./plus-
|
|
15
|
-
import { R as ResizablePanelGroup, a as ResizablePanel, b as ResizableHandle } from "./resizable-
|
|
16
|
-
import "./collapsible-
|
|
17
|
-
import "./item-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./code-editor-SuOcN-5B.js","./index-BJPggXxf.js","./index-DGML4zYf.css","./mermaid-GHXKKRXX-KwA2c0l5.js","./code-editor-BwxubRqT.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import { c as createLucideIcon, r as reactExports, aC as formatErrorMessage, bB as ReactStore, bC as popupStoreSelectors, bD as triggerHover, ap as triggerPress, bE as escapeKey, bF as attachPreventUnmountOnClose, bG as closePress, bH as PATIENT_CLICK_THRESHOLD, aw as reactDomExports, bI as focusOut, bJ as setPopupOpenState, bK as createInitialPopupStoreState, bL as createPopupFloatingRootContext, bM as Timeout, bN as PopupTriggerMap, j as jsxRuntimeExports, bO as FloatingTree, bP as usePopupRootSync, bQ as useImplicitActiveTrigger, bR as useOpenStateTransitions, an as createChangeEventDetails, bS as imperativeAction, bT as PopupHandleAttachment, bU as usePopupRootStore, bV as useDismiss, bW as usePopupInteractionProps, bX as usePopupHandleStore, aA as useBaseUiId, bY as useTriggerDataForwarding, bZ as useHoverReferenceInteraction, b_ as safePolygon, b$ as useClick, c0 as useOpenMethodTriggerProps, aF as useButton, c1 as useTriggerFocusGuards, ah as useRenderElement, c2 as CLICK_TRIGGER_IDENTIFIER, c3 as FocusGuard, ak as pressableTriggerOpenStateMapping, c4 as triggerOpenStateMapping, c5 as FloatingPortal, c6 as POPUP_COLLISION_AVOIDANCE, c7 as useFloatingNodeId, aI as useAnimationsFinished, c8 as useAnchorPositioning, aJ as useIsoLayoutEffect, c9 as useAnchoredPopupScrollLock, ca as usePositioner, cb as InternalBackdrop, cc as inertValue, cd as FloatingNode, aB as useStableCallback, ce as useToolbarRootContext, aK as useOpenChangeComplete, cf as useHoverFloatingInteraction, cg as createDefaultInitialFocus, ch as FOCUSABLE_POPUP_PROPS, bl as COMPOSITE_KEYS, ci as getDisabledMountTransitionStyles, cj as FloatingFocusManager, ck as isHTMLElement, cl as popupTransitionStateMapping, u as useTranslation, b as useMessage, Q as useNavigate, a as useAppStore, V as Badge, cm as formatUpdatedTime, f as request, K as electron, a6 as ALL_FEATURES, a7 as FEATURE_I18N_KEYS, F as cn$1, d as Switch, B as Button, H as LoaderCircle, cn as buttonVariants, i as isWebUI, J as FolderOpen, C as Check, e as Copy, g as extractErrorMessage, aU as reduceFlushStreaming, aT as reduceSessionNotification, h as copyText, av as React, co as Tooltip, cp as TooltipTrigger, cq as TooltipContent, S as ScrollArea, a0 as Bot, cr as formatDuration, ax as getDefaultExportFromCjs, cs as ReactDOM, ct as v$2, A as generateUUID, cu as HoverCard, cv as HoverCardTrigger, cw as HoverCardContent, cx as X$1, aW as Folder, L as Library, v as DropdownMenu, w as DropdownMenuTrigger, cy as ChevronDown, x as DropdownMenuContent, y as DropdownMenuItem, cz as DropdownMenuSub, cA as DropdownMenuSubTrigger, cB as DropdownMenuSubContent, cC as CircleQuestionMark, cD as ChevronUp, aV as Clock, aP as Tabs, aQ as TabsList, aR as TabsTrigger, cE as z$1, X as CircleCheck, cF as __vitePreload, I as Input, cG as Code, bv as EDITOR_LABELS, aS as webUIBaseUrl, R as subscribe, a5 as ChevronRight, cH as MessageSquare, cI as FolderPlus, P as Pencil, T as Trash2, cJ as useProjectState, cK as clientId, cL as TabsContent } from "./index-BJPggXxf.js";
|
|
3
|
+
import { S as Settings2 } from "./settings-2-DTnwbGMG.js";
|
|
4
|
+
import { i as isValidMessageToDisplay, M as MessageBubble, A as ArrowUpToLine, S as Square, j as jsonToPrettyYamlExports, p as parseFileReference, c as CodeCompareView, r as resolveFileUrl, I as ImageView, P as PdfView, D as DocxView, a as PptxView, X as XlsxView, R as RotateCcw, F as Folders } from "./xlsx-view-Ca3bToM7.js";
|
|
5
|
+
import { I as Image, W as Wrench } from "./wrench-C-pOIUrz.js";
|
|
6
|
+
import { F as FileText } from "./file-text-CshHuHgW.js";
|
|
7
|
+
import { C as Clipboard } from "./clipboard-xI9lExaB.js";
|
|
8
|
+
import { A as ArrowLeft } from "./arrow-left-D589pHHA.js";
|
|
9
|
+
import { aQ as CodeView, S as StreamMarkdown, aR as FileIcon } from "./mermaid-GHXKKRXX-KwA2c0l5.js";
|
|
10
|
+
import { b as ContextMenuContent, c as ContextMenuItem, d as ContextMenuSeparator, C as ContextMenu, a as ContextMenuTrigger } from "./context-menu-BO9-4FYd.js";
|
|
11
|
+
import { S as Search } from "./search-BHyqy--Q.js";
|
|
12
|
+
import { E as ExternalLink } from "./link-2-C5KPDK2L.js";
|
|
13
|
+
import { R as RefreshCw } from "./refresh-cw-CYW3HR-E.js";
|
|
14
|
+
import { P as Plus } from "./plus-CsV_3veW.js";
|
|
15
|
+
import { R as ResizablePanelGroup, a as ResizablePanel, b as ResizableHandle } from "./resizable-C_plViAK.js";
|
|
16
|
+
import "./collapsible-Bd85ZCyx.js";
|
|
17
|
+
import "./item-Cv-tnX8b.js";
|
|
18
18
|
import "./schemas-c0X-G5_P.js";
|
|
19
|
-
import "./ellipsis-
|
|
20
|
-
const __iconNode$
|
|
19
|
+
import "./ellipsis-BafkhboM.js";
|
|
20
|
+
const __iconNode$k = [
|
|
21
21
|
["path", { d: "M12 5v14", key: "s699le" }],
|
|
22
22
|
["path", { d: "m19 12-7 7-7-7", key: "1idqje" }]
|
|
23
23
|
];
|
|
24
|
-
const ArrowDown = createLucideIcon("arrow-down", __iconNode$
|
|
25
|
-
const __iconNode$
|
|
24
|
+
const ArrowDown = createLucideIcon("arrow-down", __iconNode$k);
|
|
25
|
+
const __iconNode$j = [
|
|
26
26
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
27
27
|
["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
|
|
28
28
|
];
|
|
29
|
-
const ArrowRight = createLucideIcon("arrow-right", __iconNode$
|
|
30
|
-
const __iconNode$
|
|
29
|
+
const ArrowRight = createLucideIcon("arrow-right", __iconNode$j);
|
|
30
|
+
const __iconNode$i = [
|
|
31
31
|
["path", { d: "m5 12 7-7 7 7", key: "hav0vg" }],
|
|
32
32
|
["path", { d: "M12 19V5", key: "x0mq9r" }]
|
|
33
33
|
];
|
|
34
|
-
const ArrowUp = createLucideIcon("arrow-up", __iconNode$
|
|
35
|
-
const __iconNode$
|
|
34
|
+
const ArrowUp = createLucideIcon("arrow-up", __iconNode$i);
|
|
35
|
+
const __iconNode$h = [
|
|
36
36
|
[
|
|
37
37
|
"path",
|
|
38
38
|
{
|
|
@@ -41,20 +41,20 @@ const __iconNode$e = [
|
|
|
41
41
|
}
|
|
42
42
|
]
|
|
43
43
|
];
|
|
44
|
-
const Astroid = createLucideIcon("astroid", __iconNode$
|
|
45
|
-
const __iconNode$
|
|
44
|
+
const Astroid = createLucideIcon("astroid", __iconNode$h);
|
|
45
|
+
const __iconNode$g = [
|
|
46
46
|
["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }],
|
|
47
47
|
["path", { d: "M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8", key: "7n84p3" }]
|
|
48
48
|
];
|
|
49
|
-
const AtSign = createLucideIcon("at-sign", __iconNode$
|
|
50
|
-
const __iconNode$
|
|
51
|
-
const Circle = createLucideIcon("circle", __iconNode$
|
|
52
|
-
const __iconNode$
|
|
49
|
+
const AtSign = createLucideIcon("at-sign", __iconNode$g);
|
|
50
|
+
const __iconNode$f = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
|
|
51
|
+
const Circle = createLucideIcon("circle", __iconNode$f);
|
|
52
|
+
const __iconNode$e = [
|
|
53
53
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
54
54
|
["path", { d: "M12 2a7 7 0 1 0 10 10", key: "1yuj32" }]
|
|
55
55
|
];
|
|
56
|
-
const Eclipse = createLucideIcon("eclipse", __iconNode$
|
|
57
|
-
const __iconNode$
|
|
56
|
+
const Eclipse = createLucideIcon("eclipse", __iconNode$e);
|
|
57
|
+
const __iconNode$d = [
|
|
58
58
|
[
|
|
59
59
|
"path",
|
|
60
60
|
{
|
|
@@ -66,34 +66,58 @@ const __iconNode$a = [
|
|
|
66
66
|
["path", { d: "M9 15h6", key: "cctwl0" }],
|
|
67
67
|
["path", { d: "M12 18v-6", key: "17g6i2" }]
|
|
68
68
|
];
|
|
69
|
-
const FilePlus = createLucideIcon("file-plus", __iconNode$
|
|
70
|
-
const __iconNode$
|
|
69
|
+
const FilePlus = createLucideIcon("file-plus", __iconNode$d);
|
|
70
|
+
const __iconNode$c = [
|
|
71
71
|
["path", { d: "m12 14 4-4", key: "9kzdfg" }],
|
|
72
72
|
["path", { d: "M3.34 19a10 10 0 1 1 17.32 0", key: "19p75a" }]
|
|
73
73
|
];
|
|
74
|
-
const Gauge = createLucideIcon("gauge", __iconNode$
|
|
75
|
-
const __iconNode$
|
|
74
|
+
const Gauge = createLucideIcon("gauge", __iconNode$c);
|
|
75
|
+
const __iconNode$b = [
|
|
76
76
|
["path", { d: "M15 6a9 9 0 0 0-9 9V3", key: "1cii5b" }],
|
|
77
77
|
["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
|
|
78
78
|
["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }]
|
|
79
79
|
];
|
|
80
|
-
const GitBranch = createLucideIcon("git-branch", __iconNode$
|
|
81
|
-
const __iconNode$
|
|
80
|
+
const GitBranch = createLucideIcon("git-branch", __iconNode$b);
|
|
81
|
+
const __iconNode$a = [
|
|
82
82
|
["line", { x1: "4", x2: "20", y1: "9", y2: "9", key: "4lhtct" }],
|
|
83
83
|
["line", { x1: "4", x2: "20", y1: "15", y2: "15", key: "vyu0kd" }],
|
|
84
84
|
["line", { x1: "10", x2: "8", y1: "3", y2: "21", key: "1ggp8o" }],
|
|
85
85
|
["line", { x1: "16", x2: "14", y1: "3", y2: "21", key: "weycgp" }]
|
|
86
86
|
];
|
|
87
|
-
const Hash = createLucideIcon("hash", __iconNode$
|
|
88
|
-
const __iconNode$
|
|
87
|
+
const Hash = createLucideIcon("hash", __iconNode$a);
|
|
88
|
+
const __iconNode$9 = [
|
|
89
|
+
[
|
|
90
|
+
"path",
|
|
91
|
+
{
|
|
92
|
+
d: "M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",
|
|
93
|
+
key: "zw3jo"
|
|
94
|
+
}
|
|
95
|
+
],
|
|
96
|
+
[
|
|
97
|
+
"path",
|
|
98
|
+
{
|
|
99
|
+
d: "M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",
|
|
100
|
+
key: "1wduqc"
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
[
|
|
104
|
+
"path",
|
|
105
|
+
{
|
|
106
|
+
d: "M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",
|
|
107
|
+
key: "kqbvx6"
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
];
|
|
111
|
+
const Layers = createLucideIcon("layers", __iconNode$9);
|
|
112
|
+
const __iconNode$8 = [
|
|
89
113
|
["path", { d: "M3 5h8", key: "18g2rq" }],
|
|
90
114
|
["path", { d: "M3 12h8", key: "1xfjp6" }],
|
|
91
115
|
["path", { d: "M3 19h8", key: "fpbke4" }],
|
|
92
116
|
["path", { d: "m15 5 3 3 3-3", key: "1t4thf" }],
|
|
93
117
|
["path", { d: "m15 19 3-3 3 3", key: "y4ckd2" }]
|
|
94
118
|
];
|
|
95
|
-
const ListChevronsDownUp = createLucideIcon("list-chevrons-down-up", __iconNode$
|
|
96
|
-
const __iconNode$
|
|
119
|
+
const ListChevronsDownUp = createLucideIcon("list-chevrons-down-up", __iconNode$8);
|
|
120
|
+
const __iconNode$7 = [
|
|
97
121
|
[
|
|
98
122
|
"path",
|
|
99
123
|
{
|
|
@@ -104,8 +128,25 @@ const __iconNode$5 = [
|
|
|
104
128
|
["path", { d: "M12 8v6", key: "1ib9pf" }],
|
|
105
129
|
["path", { d: "M9 11h6", key: "1fldmi" }]
|
|
106
130
|
];
|
|
107
|
-
const MessageSquarePlus = createLucideIcon("message-square-plus", __iconNode$
|
|
108
|
-
const __iconNode$
|
|
131
|
+
const MessageSquarePlus = createLucideIcon("message-square-plus", __iconNode$7);
|
|
132
|
+
const __iconNode$6 = [
|
|
133
|
+
[
|
|
134
|
+
"path",
|
|
135
|
+
{
|
|
136
|
+
d: "M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z",
|
|
137
|
+
key: "1n2ejm"
|
|
138
|
+
}
|
|
139
|
+
],
|
|
140
|
+
[
|
|
141
|
+
"path",
|
|
142
|
+
{
|
|
143
|
+
d: "M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1",
|
|
144
|
+
key: "1qfcsi"
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
];
|
|
148
|
+
const MessagesSquare = createLucideIcon("messages-square", __iconNode$6);
|
|
149
|
+
const __iconNode$5 = [
|
|
109
150
|
[
|
|
110
151
|
"path",
|
|
111
152
|
{
|
|
@@ -114,8 +155,8 @@ const __iconNode$4 = [
|
|
|
114
155
|
}
|
|
115
156
|
]
|
|
116
157
|
];
|
|
117
|
-
const Paperclip = createLucideIcon("paperclip", __iconNode$
|
|
118
|
-
const __iconNode$
|
|
158
|
+
const Paperclip = createLucideIcon("paperclip", __iconNode$5);
|
|
159
|
+
const __iconNode$4 = [
|
|
119
160
|
["path", { d: "M10 7v10a5 5 0 0 0 5-5", key: "1blmz7" }],
|
|
120
161
|
["path", { d: "m14 8-6 3", key: "2tb98i" }],
|
|
121
162
|
[
|
|
@@ -126,13 +167,13 @@ const __iconNode$3 = [
|
|
|
126
167
|
}
|
|
127
168
|
]
|
|
128
169
|
];
|
|
129
|
-
const ReceiptTurkishLira = createLucideIcon("receipt-turkish-lira", __iconNode$
|
|
130
|
-
const __iconNode$
|
|
170
|
+
const ReceiptTurkishLira = createLucideIcon("receipt-turkish-lira", __iconNode$4);
|
|
171
|
+
const __iconNode$3 = [
|
|
131
172
|
["path", { d: "M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8", key: "1p45f6" }],
|
|
132
173
|
["path", { d: "M21 3v5h-5", key: "1q7to0" }]
|
|
133
174
|
];
|
|
134
|
-
const RotateCw = createLucideIcon("rotate-cw", __iconNode$
|
|
135
|
-
const __iconNode$
|
|
175
|
+
const RotateCw = createLucideIcon("rotate-cw", __iconNode$3);
|
|
176
|
+
const __iconNode$2 = [
|
|
136
177
|
[
|
|
137
178
|
"path",
|
|
138
179
|
{
|
|
@@ -143,13 +184,23 @@ const __iconNode$1 = [
|
|
|
143
184
|
["path", { d: "M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7", key: "1ydtos" }],
|
|
144
185
|
["path", { d: "M7 3v4a1 1 0 0 0 1 1h7", key: "t51u73" }]
|
|
145
186
|
];
|
|
146
|
-
const Save = createLucideIcon("save", __iconNode$
|
|
147
|
-
const __iconNode = [
|
|
187
|
+
const Save = createLucideIcon("save", __iconNode$2);
|
|
188
|
+
const __iconNode$1 = [
|
|
148
189
|
["path", { d: "m7 11 2-2-2-2", key: "1lz0vl" }],
|
|
149
190
|
["path", { d: "M11 13h4", key: "1p7l4v" }],
|
|
150
191
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }]
|
|
151
192
|
];
|
|
152
|
-
const SquareTerminal = createLucideIcon("square-terminal", __iconNode);
|
|
193
|
+
const SquareTerminal = createLucideIcon("square-terminal", __iconNode$1);
|
|
194
|
+
const __iconNode = [
|
|
195
|
+
[
|
|
196
|
+
"path",
|
|
197
|
+
{
|
|
198
|
+
d: "M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z",
|
|
199
|
+
key: "1v7up4"
|
|
200
|
+
}
|
|
201
|
+
]
|
|
202
|
+
];
|
|
203
|
+
const Zap = createLucideIcon("zap", __iconNode);
|
|
153
204
|
const PopoverRootContext = /* @__PURE__ */ reactExports.createContext(void 0);
|
|
154
205
|
function usePopoverRootContext(optional) {
|
|
155
206
|
const context = reactExports.useContext(PopoverRootContext);
|
|
@@ -626,6 +677,12 @@ function useClosePartCount() {
|
|
|
626
677
|
hasClosePart: closePartCount > 0
|
|
627
678
|
};
|
|
628
679
|
}
|
|
680
|
+
function useClosePartRegistration() {
|
|
681
|
+
const context = reactExports.useContext(ClosePartContext);
|
|
682
|
+
useIsoLayoutEffect(() => {
|
|
683
|
+
return context?.register();
|
|
684
|
+
}, [context]);
|
|
685
|
+
}
|
|
629
686
|
const PopoverPopup = /* @__PURE__ */ reactExports.forwardRef(function PopoverPopup2(componentProps, forwardedRef) {
|
|
630
687
|
const {
|
|
631
688
|
render,
|
|
@@ -716,6 +773,35 @@ const PopoverPopup = /* @__PURE__ */ reactExports.forwardRef(function PopoverPop
|
|
|
716
773
|
})
|
|
717
774
|
});
|
|
718
775
|
});
|
|
776
|
+
const PopoverClose = /* @__PURE__ */ reactExports.forwardRef(function PopoverClose2(componentProps, forwardedRef) {
|
|
777
|
+
const {
|
|
778
|
+
render,
|
|
779
|
+
className,
|
|
780
|
+
style,
|
|
781
|
+
disabled = false,
|
|
782
|
+
nativeButton = true,
|
|
783
|
+
...elementProps
|
|
784
|
+
} = componentProps;
|
|
785
|
+
const {
|
|
786
|
+
buttonRef,
|
|
787
|
+
getButtonProps
|
|
788
|
+
} = useButton({
|
|
789
|
+
disabled,
|
|
790
|
+
focusableWhenDisabled: false,
|
|
791
|
+
native: nativeButton
|
|
792
|
+
});
|
|
793
|
+
const store = usePopoverRootContext();
|
|
794
|
+
useClosePartRegistration();
|
|
795
|
+
const element = useRenderElement("button", componentProps, {
|
|
796
|
+
ref: [forwardedRef, buttonRef],
|
|
797
|
+
props: [{
|
|
798
|
+
onClick(event) {
|
|
799
|
+
store.setOpen(false, createChangeEventDetails(closePress, event.nativeEvent));
|
|
800
|
+
}
|
|
801
|
+
}, elementProps, getButtonProps]
|
|
802
|
+
});
|
|
803
|
+
return element;
|
|
804
|
+
});
|
|
719
805
|
function ChatHeader({ session }) {
|
|
720
806
|
const { t } = useTranslation();
|
|
721
807
|
const { toast } = useMessage();
|
|
@@ -961,7 +1047,11 @@ function ChatHeader({ session }) {
|
|
|
961
1047
|
}
|
|
962
1048
|
function UsageButton({ session }) {
|
|
963
1049
|
const { t } = useTranslation();
|
|
1050
|
+
const configuredAgents = useAppStore((s15) => s15.configuredAgents);
|
|
964
1051
|
const { lastTurnUsage, usage } = session;
|
|
1052
|
+
const isApiAgent = configuredAgents.some(
|
|
1053
|
+
(agent) => agent.id === session.agentId && agent.type === "api"
|
|
1054
|
+
);
|
|
965
1055
|
const hasData = usage || lastTurnUsage;
|
|
966
1056
|
if (!hasData) return null;
|
|
967
1057
|
const pct = usage?.size ? usage.used / usage.size * 100 : 0;
|
|
@@ -1022,7 +1112,21 @@ function UsageButton({ session }) {
|
|
|
1022
1112
|
}
|
|
1023
1113
|
)
|
|
1024
1114
|
] })
|
|
1025
|
-
] }) })
|
|
1115
|
+
] }) }),
|
|
1116
|
+
isApiAgent && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1117
|
+
PopoverClose,
|
|
1118
|
+
{
|
|
1119
|
+
className: buttonVariants({
|
|
1120
|
+
variant: "outline",
|
|
1121
|
+
size: "xs",
|
|
1122
|
+
className: "w-full py-3 font-normal border-border!"
|
|
1123
|
+
}),
|
|
1124
|
+
onClick: () => {
|
|
1125
|
+
document.dispatchEvent(new CustomEvent("fello-open-token-usage"));
|
|
1126
|
+
},
|
|
1127
|
+
children: t("chatHeader.viewBreakdown", "View Breakdown")
|
|
1128
|
+
}
|
|
1129
|
+
)
|
|
1026
1130
|
] }) }) }) })
|
|
1027
1131
|
] });
|
|
1028
1132
|
}
|
|
@@ -6024,7 +6128,7 @@ function useFile(projectId, file, options = {}) {
|
|
|
6024
6128
|
};
|
|
6025
6129
|
}
|
|
6026
6130
|
const CodeEditor = reactExports.lazy(
|
|
6027
|
-
() => __vitePreload(() => import("./code-editor-
|
|
6131
|
+
() => __vitePreload(() => import("./code-editor-SuOcN-5B.js"), true ? __vite__mapDeps([0,1,2,3,4]) : void 0, import.meta.url).then((m) => ({ default: m.CodeEditor }))
|
|
6028
6132
|
);
|
|
6029
6133
|
const MAX_EDIT_SIZE = 1024 * 1024;
|
|
6030
6134
|
const EditPanel = reactExports.forwardRef(function EditPanel2({ projectId, filePath, content, loading = false, onCancel, onSaved }, ref) {
|
|
@@ -15883,7 +15987,689 @@ function TerminalDetail({ terminalId, projectId, onClose }) {
|
|
|
15883
15987
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative min-h-0 flex-1 bg-neutral-900", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: containerRef, className: "h-full w-full px-2 py-1" }) })
|
|
15884
15988
|
] });
|
|
15885
15989
|
}
|
|
15886
|
-
function
|
|
15990
|
+
function TokenUsageDetail({ session, onClose }) {
|
|
15991
|
+
const { t } = useTranslation();
|
|
15992
|
+
const [records, setRecords] = reactExports.useState([]);
|
|
15993
|
+
const [loading, setLoading] = reactExports.useState(true);
|
|
15994
|
+
reactExports.useEffect(() => {
|
|
15995
|
+
let cancelled = false;
|
|
15996
|
+
let refreshTimer;
|
|
15997
|
+
const load = (silent = false) => {
|
|
15998
|
+
if (!silent) setLoading(true);
|
|
15999
|
+
request.getSessionTokenUsage({ sessionId: session.id }).then((res) => {
|
|
16000
|
+
if (!cancelled) {
|
|
16001
|
+
setRecords(parseTokenUsageRecords(res.records));
|
|
16002
|
+
}
|
|
16003
|
+
}).catch(() => {
|
|
16004
|
+
if (!cancelled) setRecords([]);
|
|
16005
|
+
}).finally(() => {
|
|
16006
|
+
if (!cancelled) setLoading(false);
|
|
16007
|
+
});
|
|
16008
|
+
};
|
|
16009
|
+
load();
|
|
16010
|
+
const handlePromptEnd = (payload) => {
|
|
16011
|
+
if (payload.sessionId !== session.id) return;
|
|
16012
|
+
if (refreshTimer) clearTimeout(refreshTimer);
|
|
16013
|
+
refreshTimer = setTimeout(() => {
|
|
16014
|
+
if (!cancelled) load(true);
|
|
16015
|
+
}, 500);
|
|
16016
|
+
};
|
|
16017
|
+
subscribe.on("prompt-end", handlePromptEnd);
|
|
16018
|
+
return () => {
|
|
16019
|
+
cancelled = true;
|
|
16020
|
+
if (refreshTimer) clearTimeout(refreshTimer);
|
|
16021
|
+
subscribe.off("prompt-end", handlePromptEnd);
|
|
16022
|
+
};
|
|
16023
|
+
}, [session.id]);
|
|
16024
|
+
const liveRecord = createLiveRecord(session.lastTurnUsage, session.updatedAt);
|
|
16025
|
+
const displayRecords = mergeLiveRecord(records, liveRecord);
|
|
16026
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col h-full min-h-0", children: [
|
|
16027
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
16028
|
+
"div",
|
|
16029
|
+
{
|
|
16030
|
+
className: "h-12 shrink-0 border-b border-border flex items-center justify-between gap-2 px-3 bg-background/95",
|
|
16031
|
+
style: { WebkitAppRegion: "drag" },
|
|
16032
|
+
children: [
|
|
16033
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 min-w-0", children: [
|
|
16034
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex size-4 shrink-0 items-center justify-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Zap, { className: "size-3.5 text-amber-500/80" }) }),
|
|
16035
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-w-0", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-foreground/60", children: [
|
|
16036
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-semibold truncate", children: t("tokenUsage.title", "Token Usage Breakdown") }),
|
|
16037
|
+
displayRecords.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "rounded-full bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground tabular-nums shrink-0", children: t("tokenUsage.promptCount", "{{count}} prompts", {
|
|
16038
|
+
count: displayRecords.length
|
|
16039
|
+
}) })
|
|
16040
|
+
] }) })
|
|
16041
|
+
] }),
|
|
16042
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16043
|
+
"button",
|
|
16044
|
+
{
|
|
16045
|
+
type: "button",
|
|
16046
|
+
onClick: onClose,
|
|
16047
|
+
className: "flex size-6 shrink-0 items-center justify-center rounded hover:bg-muted-foreground/10 text-muted-foreground hover:text-foreground transition-colors",
|
|
16048
|
+
style: { WebkitAppRegion: "no-drag" },
|
|
16049
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(X$1, { className: "size-3.5" })
|
|
16050
|
+
}
|
|
16051
|
+
)
|
|
16052
|
+
]
|
|
16053
|
+
}
|
|
16054
|
+
),
|
|
16055
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "flex-1 min-h-0", viewportClassName: "p-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: loading ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-32 items-center justify-center text-xs text-muted-foreground", children: t("tokenUsage.loading", "Loading…") }) : displayRecords.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-full items-center justify-center text-xs text-muted-foreground", children: t("tokenUsage.noData", "No token breakdown data available") }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
16056
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(SessionSummary, { records: displayRecords }),
|
|
16057
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: displayRecords.map((record, index) => ({ record, index })).reverse().map(({ record, index }) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16058
|
+
PromptUsageItem,
|
|
16059
|
+
{
|
|
16060
|
+
record,
|
|
16061
|
+
promptNumber: index + 1,
|
|
16062
|
+
defaultExpanded: index === displayRecords.length - 1
|
|
16063
|
+
},
|
|
16064
|
+
`${record.timestamp}-${index}`
|
|
16065
|
+
)) })
|
|
16066
|
+
] }) }) })
|
|
16067
|
+
] });
|
|
16068
|
+
}
|
|
16069
|
+
function PromptUsageItem({
|
|
16070
|
+
record,
|
|
16071
|
+
promptNumber,
|
|
16072
|
+
defaultExpanded
|
|
16073
|
+
}) {
|
|
16074
|
+
const { t } = useTranslation();
|
|
16075
|
+
const [expanded, setExpanded] = reactExports.useState(defaultExpanded);
|
|
16076
|
+
const breakdown = getBreakdown(record.usage);
|
|
16077
|
+
const stepCount = breakdown?.steps.length ?? breakdown?.stepCount ?? 0;
|
|
16078
|
+
const toolCount = breakdown?.steps.reduce((total, step) => total + step.toolCalls.length, 0) ?? 0;
|
|
16079
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "border-b border-border/50 transition-colors first:border-t", children: [
|
|
16080
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
16081
|
+
"button",
|
|
16082
|
+
{
|
|
16083
|
+
type: "button",
|
|
16084
|
+
onClick: () => setExpanded((current) => !current),
|
|
16085
|
+
className: "w-full flex items-center p-2 text-left hover:bg-muted/30 transition-colors",
|
|
16086
|
+
children: [
|
|
16087
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex size-5 shrink-0 items-center justify-center text-primary -ml-2.5", children: expanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: "size-3.5" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronRight, { className: "size-3.5" }) }),
|
|
16088
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(MessageSquare, { className: "size-3 shrink-0 text-muted-foreground ml-0.5" }),
|
|
16089
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0 flex flex-1 ml-2 truncate", children: [
|
|
16090
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 mr-1", children: [
|
|
16091
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[11px] font-semibold", children: t("tokenUsage.promptLabel", "Prompt #{{count}}", { count: promptNumber }) }),
|
|
16092
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] text-muted-foreground/60 tabular-nums mo", children: formatTimestamp(record.timestamp) })
|
|
16093
|
+
] }),
|
|
16094
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 text-[10px] text-muted-foreground ml-2", children: [
|
|
16095
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-baseline shrink-0 gap-1", children: [
|
|
16096
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono text-[10px] font-semibold tabular-nums text-foreground/85", children: stepCount }),
|
|
16097
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] text-muted-foreground/60", children: t("tokenUsage.steps", "steps") })
|
|
16098
|
+
] }),
|
|
16099
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-baseline shrink-0 gap-1", children: [
|
|
16100
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono text-[10px] font-semibold tabular-nums text-foreground/85", children: toolCount }),
|
|
16101
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] text-muted-foreground/60", children: t("tokenUsage.toolCalls", "tool calls") })
|
|
16102
|
+
] })
|
|
16103
|
+
] })
|
|
16104
|
+
] }),
|
|
16105
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-baseline shrink-0 ml-2 gap-1", children: [
|
|
16106
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono text-[10px] font-semibold tabular-nums text-foreground/85", children: record.usage.totalTokens.toLocaleString() }),
|
|
16107
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] text-muted-foreground/60", children: t("tokenUsage.tokens", "tokens") })
|
|
16108
|
+
] })
|
|
16109
|
+
]
|
|
16110
|
+
}
|
|
16111
|
+
),
|
|
16112
|
+
expanded && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "border-t border-border/50 py-2.5 space-y-3", children: [
|
|
16113
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(PromptSummary, { usage: record.usage }),
|
|
16114
|
+
breakdown ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
16115
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(UserMessageSection, { text: breakdown.inputComposition.userMessageText }),
|
|
16116
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(InputCompositionSection, { composition: breakdown.inputComposition }),
|
|
16117
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ToolsBreakdownSection, { tools: breakdown.inputComposition.toolsDefinition }),
|
|
16118
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(StepsSection, { steps: breakdown.steps }),
|
|
16119
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(PerformanceSection, { performance: breakdown.performance, steps: breakdown.steps })
|
|
16120
|
+
] }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "rounded-md border border-border/60 bg-muted/30 px-2.5 py-2 text-[11px] text-muted-foreground", children: t("tokenUsage.noBreakdown", "No detailed breakdown available for this prompt") })
|
|
16121
|
+
] })
|
|
16122
|
+
] });
|
|
16123
|
+
}
|
|
16124
|
+
function PromptSummary({ usage }) {
|
|
16125
|
+
const { t } = useTranslation();
|
|
16126
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-3 gap-1.5", children: [
|
|
16127
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16128
|
+
MetricCard,
|
|
16129
|
+
{
|
|
16130
|
+
label: t("tokenUsage.input", "Input"),
|
|
16131
|
+
value: usage.inputTokens.toLocaleString()
|
|
16132
|
+
}
|
|
16133
|
+
),
|
|
16134
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16135
|
+
MetricCard,
|
|
16136
|
+
{
|
|
16137
|
+
label: t("tokenUsage.output", "Output"),
|
|
16138
|
+
value: usage.outputTokens.toLocaleString()
|
|
16139
|
+
}
|
|
16140
|
+
),
|
|
16141
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16142
|
+
MetricCard,
|
|
16143
|
+
{
|
|
16144
|
+
label: t("tokenUsage.totalTokens", "Total"),
|
|
16145
|
+
value: usage.totalTokens.toLocaleString()
|
|
16146
|
+
}
|
|
16147
|
+
),
|
|
16148
|
+
usage.thoughtTokens != null && usage.thoughtTokens > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16149
|
+
MetricCard,
|
|
16150
|
+
{
|
|
16151
|
+
label: t("tokenUsage.thought", "Thought"),
|
|
16152
|
+
value: usage.thoughtTokens.toLocaleString()
|
|
16153
|
+
}
|
|
16154
|
+
),
|
|
16155
|
+
usage.cachedReadTokens != null && usage.cachedReadTokens > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16156
|
+
MetricCard,
|
|
16157
|
+
{
|
|
16158
|
+
label: t("tokenUsage.cacheRead", "Cache Read"),
|
|
16159
|
+
value: usage.cachedReadTokens.toLocaleString()
|
|
16160
|
+
}
|
|
16161
|
+
),
|
|
16162
|
+
usage.cachedWriteTokens != null && usage.cachedWriteTokens > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16163
|
+
MetricCard,
|
|
16164
|
+
{
|
|
16165
|
+
label: t("tokenUsage.cacheWrite", "Cache Write"),
|
|
16166
|
+
value: usage.cachedWriteTokens.toLocaleString()
|
|
16167
|
+
}
|
|
16168
|
+
)
|
|
16169
|
+
] });
|
|
16170
|
+
}
|
|
16171
|
+
function SessionSummary({ records }) {
|
|
16172
|
+
const { t } = useTranslation();
|
|
16173
|
+
const totalInput = records.reduce((sum, record) => sum + record.usage.inputTokens, 0);
|
|
16174
|
+
const totalOutput = records.reduce((sum, record) => sum + record.usage.outputTokens, 0);
|
|
16175
|
+
const totalThought = records.reduce((sum, record) => sum + (record.usage.thoughtTokens ?? 0), 0);
|
|
16176
|
+
const totalCached = records.reduce(
|
|
16177
|
+
(sum, record) => sum + (record.usage.cachedReadTokens ?? 0),
|
|
16178
|
+
0
|
|
16179
|
+
);
|
|
16180
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "pb-3", children: [
|
|
16181
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16182
|
+
SectionHeader,
|
|
16183
|
+
{
|
|
16184
|
+
icon: MessagesSquare,
|
|
16185
|
+
title: t("tokenUsage.sessionTotal", "Session Total"),
|
|
16186
|
+
badge: t("tokenUsage.promptCount", "{{count}} prompts", {
|
|
16187
|
+
count: records.length
|
|
16188
|
+
})
|
|
16189
|
+
}
|
|
16190
|
+
),
|
|
16191
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-2 grid grid-cols-3 gap-1.5", children: [
|
|
16192
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(MetricCard, { label: t("tokenUsage.input", "Input"), value: totalInput.toLocaleString() }),
|
|
16193
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(MetricCard, { label: t("tokenUsage.output", "Output"), value: totalOutput.toLocaleString() }),
|
|
16194
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16195
|
+
MetricCard,
|
|
16196
|
+
{
|
|
16197
|
+
label: t("tokenUsage.totalTokens", "Total"),
|
|
16198
|
+
value: (totalInput + totalOutput).toLocaleString()
|
|
16199
|
+
}
|
|
16200
|
+
),
|
|
16201
|
+
totalThought > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16202
|
+
MetricCard,
|
|
16203
|
+
{
|
|
16204
|
+
label: t("tokenUsage.thought", "Thought"),
|
|
16205
|
+
value: totalThought.toLocaleString()
|
|
16206
|
+
}
|
|
16207
|
+
),
|
|
16208
|
+
totalCached > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16209
|
+
MetricCard,
|
|
16210
|
+
{
|
|
16211
|
+
label: t("tokenUsage.cached", "Cached"),
|
|
16212
|
+
value: totalCached.toLocaleString()
|
|
16213
|
+
}
|
|
16214
|
+
)
|
|
16215
|
+
] })
|
|
16216
|
+
] });
|
|
16217
|
+
}
|
|
16218
|
+
function InputCompositionSection({ composition }) {
|
|
16219
|
+
const { t } = useTranslation();
|
|
16220
|
+
const parts = [
|
|
16221
|
+
{
|
|
16222
|
+
label: t("tokenUsage.systemPrompt", "System Prompt"),
|
|
16223
|
+
value: composition.systemPrompt,
|
|
16224
|
+
color: "bg-blue-500/80"
|
|
16225
|
+
},
|
|
16226
|
+
{
|
|
16227
|
+
label: t("tokenUsage.tools", "Tools"),
|
|
16228
|
+
value: composition.toolsDefinition.total,
|
|
16229
|
+
color: "bg-amber-500/80"
|
|
16230
|
+
},
|
|
16231
|
+
{
|
|
16232
|
+
label: t("tokenUsage.history", "History"),
|
|
16233
|
+
value: composition.history,
|
|
16234
|
+
color: "bg-emerald-500/80"
|
|
16235
|
+
},
|
|
16236
|
+
{
|
|
16237
|
+
label: t("tokenUsage.userMessage", "User Message"),
|
|
16238
|
+
value: composition.userMessage,
|
|
16239
|
+
color: "bg-purple-500/80"
|
|
16240
|
+
}
|
|
16241
|
+
];
|
|
16242
|
+
const total = composition.estimatedTotal || parts.reduce((sum, part) => sum + part.value, 0);
|
|
16243
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "border-t border-border/50 pt-3", children: [
|
|
16244
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(SectionHeader, { icon: Layers, title: t("tokenUsage.inputComposition", "Input Composition") }),
|
|
16245
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-2.5 w-full rounded-full bg-muted/80 overflow-hidden flex mt-2.5 ring-1 ring-border/30", children: parts.map(
|
|
16246
|
+
(part) => part.value > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16247
|
+
"div",
|
|
16248
|
+
{
|
|
16249
|
+
className: cn$1("h-full", part.color),
|
|
16250
|
+
style: { width: `${total > 0 ? part.value / total * 100 : 0}%` }
|
|
16251
|
+
},
|
|
16252
|
+
part.label
|
|
16253
|
+
)
|
|
16254
|
+
) }),
|
|
16255
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "my-3 grid grid-cols-2 gap-x-4 gap-y-1 text-[10px]", children: parts.map((part) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
16256
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 min-w-0", children: [
|
|
16257
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: cn$1("size-2 rounded-sm shrink-0", part.color) }),
|
|
16258
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-muted-foreground truncate", children: part.label })
|
|
16259
|
+
] }),
|
|
16260
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono tabular-nums text-muted-foreground shrink-0", children: part.value.toLocaleString() })
|
|
16261
|
+
] }, part.label)) }),
|
|
16262
|
+
composition.delta !== 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-1.5 text-[10px] text-muted-foreground/60", children: [
|
|
16263
|
+
t("tokenUsage.delta", "Estimation delta"),
|
|
16264
|
+
": ",
|
|
16265
|
+
composition.delta > 0 ? "+" : "",
|
|
16266
|
+
composition.delta.toLocaleString(),
|
|
16267
|
+
" ",
|
|
16268
|
+
t("tokenUsage.tokens", "tokens")
|
|
16269
|
+
] })
|
|
16270
|
+
] });
|
|
16271
|
+
}
|
|
16272
|
+
function UserMessageSection({ text }) {
|
|
16273
|
+
const { t } = useTranslation();
|
|
16274
|
+
if (!text) return null;
|
|
16275
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "border-t border-border/50 pt-3", children: [
|
|
16276
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(SectionHeader, { icon: MessageSquare, title: t("tokenUsage.userMessage", "User Message") }),
|
|
16277
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { viewportClassName: "mt-2 max-h-40 rounded-md border border-border/60 bg-muted/30", children: /* @__PURE__ */ jsxRuntimeExports.jsx("pre", { className: "whitespace-pre-wrap wrap-break-word px-2 py-1.5 text-[10px] leading-relaxed text-foreground/70 font-mono", children: text }) })
|
|
16278
|
+
] });
|
|
16279
|
+
}
|
|
16280
|
+
function ToolsBreakdownSection({ tools }) {
|
|
16281
|
+
const { t } = useTranslation();
|
|
16282
|
+
const [expanded, setExpanded] = reactExports.useState(false);
|
|
16283
|
+
if (tools.perTool.length === 0) return null;
|
|
16284
|
+
const sorted = [...tools.perTool].sort((a, b2) => b2.tokens - a.tokens);
|
|
16285
|
+
const topCount = expanded ? sorted.length : 8;
|
|
16286
|
+
const topTools = sorted.slice(0, topCount);
|
|
16287
|
+
const rest = sorted.slice(topCount);
|
|
16288
|
+
const restTotal = rest.reduce((sum, tool) => sum + tool.tokens, 0);
|
|
16289
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "border-t border-border/50 pt-3", children: [
|
|
16290
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16291
|
+
SectionHeader,
|
|
16292
|
+
{
|
|
16293
|
+
icon: Wrench,
|
|
16294
|
+
title: t("tokenUsage.toolsDefinition", "Tools Definition"),
|
|
16295
|
+
badge: t("tokenUsage.toolsCount", "{{count}} tools · {{tokens}} tokens", {
|
|
16296
|
+
count: tools.perTool.length,
|
|
16297
|
+
tokens: tools.total.toLocaleString()
|
|
16298
|
+
})
|
|
16299
|
+
}
|
|
16300
|
+
),
|
|
16301
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-2 space-y-1 text-[10px]", children: [
|
|
16302
|
+
topTools.map((tool) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
16303
|
+
"div",
|
|
16304
|
+
{
|
|
16305
|
+
className: "flex items-center gap-2 rounded px-1 -mx-1 py-0.5 hover:bg-muted/40 transition-colors",
|
|
16306
|
+
children: [
|
|
16307
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-1 min-w-0 truncate font-mono text-muted-foreground", children: tool.name }),
|
|
16308
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono tabular-nums font-medium text-foreground/75 shrink-0", children: tool.tokens.toLocaleString() }),
|
|
16309
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-16 h-1 rounded-full bg-muted overflow-hidden shrink-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16310
|
+
"div",
|
|
16311
|
+
{
|
|
16312
|
+
className: "h-full bg-amber-500/60 rounded-full",
|
|
16313
|
+
style: { width: `${tool.tokens / (sorted[0]?.tokens || 1) * 100}%` }
|
|
16314
|
+
}
|
|
16315
|
+
) })
|
|
16316
|
+
]
|
|
16317
|
+
},
|
|
16318
|
+
tool.name
|
|
16319
|
+
)),
|
|
16320
|
+
rest.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
16321
|
+
"div",
|
|
16322
|
+
{
|
|
16323
|
+
className: "flex items-center gap-2 text-muted-foreground/60 hover:underline cursor-default",
|
|
16324
|
+
onClick: () => setExpanded(true),
|
|
16325
|
+
children: [
|
|
16326
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-1", children: t("tokenUsage.more", "+{{count}} more", { count: rest.length }) }),
|
|
16327
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono tabular-nums shrink-0", children: restTotal.toLocaleString() }),
|
|
16328
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-16 shrink-0" })
|
|
16329
|
+
]
|
|
16330
|
+
}
|
|
16331
|
+
)
|
|
16332
|
+
] })
|
|
16333
|
+
] });
|
|
16334
|
+
}
|
|
16335
|
+
function StepsSection({ steps }) {
|
|
16336
|
+
const { t } = useTranslation();
|
|
16337
|
+
const [expandedSteps, setExpandedSteps] = reactExports.useState(() => /* @__PURE__ */ new Set());
|
|
16338
|
+
if (steps.length === 0) return null;
|
|
16339
|
+
const toggleStep = (stepNumber) => {
|
|
16340
|
+
setExpandedSteps((current) => {
|
|
16341
|
+
const next = new Set(current);
|
|
16342
|
+
if (next.has(stepNumber)) next.delete(stepNumber);
|
|
16343
|
+
else next.add(stepNumber);
|
|
16344
|
+
return next;
|
|
16345
|
+
});
|
|
16346
|
+
};
|
|
16347
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "border-t border-border/50 pt-3", children: [
|
|
16348
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16349
|
+
SectionHeader,
|
|
16350
|
+
{
|
|
16351
|
+
icon: Layers,
|
|
16352
|
+
title: t("tokenUsage.steps", "Steps"),
|
|
16353
|
+
badge: t("tokenUsage.stepsCount", "{{count}} steps", { count: steps.length })
|
|
16354
|
+
}
|
|
16355
|
+
),
|
|
16356
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-2", children: steps.map((step) => {
|
|
16357
|
+
const expanded = expandedSteps.has(step.stepNumber);
|
|
16358
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
16359
|
+
"div",
|
|
16360
|
+
{
|
|
16361
|
+
className: "transition-colors border-b border-border/70 last:border-transparent",
|
|
16362
|
+
children: [
|
|
16363
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
16364
|
+
"button",
|
|
16365
|
+
{
|
|
16366
|
+
type: "button",
|
|
16367
|
+
onClick: () => toggleStep(step.stepNumber),
|
|
16368
|
+
className: "w-full flex items-center py-1.5 text-left hover:bg-muted/30 transition-colors px-1",
|
|
16369
|
+
children: [
|
|
16370
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex size-5 shrink-0 items-center justify-center text-primary -ml-2", children: expanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: "size-3" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronRight, { className: "size-3" }) }),
|
|
16371
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-2 items-center ml-0.5", children: [
|
|
16372
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex items-center justify-center text-[11px] font-semibold text-muted-foreground shrink-0", children: [
|
|
16373
|
+
"#",
|
|
16374
|
+
step.stepNumber
|
|
16375
|
+
] }),
|
|
16376
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16377
|
+
"span",
|
|
16378
|
+
{
|
|
16379
|
+
className: cn$1(
|
|
16380
|
+
"rounded-full px-1.5 py-0.5 text-[10px] font-medium uppercase truncate",
|
|
16381
|
+
finishReasonBadge(step.finishReason)
|
|
16382
|
+
),
|
|
16383
|
+
children: step.finishReason
|
|
16384
|
+
}
|
|
16385
|
+
)
|
|
16386
|
+
] }),
|
|
16387
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-4 ml-auto font-mono text-[10px] tabular-nums text-muted-foreground shrink-0", children: [
|
|
16388
|
+
step.toolCalls.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-baseline shrink-0 gap-1", children: [
|
|
16389
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: step.toolCalls.length }),
|
|
16390
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-muted-foreground/70", children: t("tokenUsage.toolCalls", "tool calls") })
|
|
16391
|
+
] }),
|
|
16392
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-1", children: [
|
|
16393
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: step.inputTokens.toLocaleString() }),
|
|
16394
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-muted-foreground/70", children: t("tokenUsage.inputShort", "in") })
|
|
16395
|
+
] }),
|
|
16396
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-1", children: [
|
|
16397
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: step.outputTokens.toLocaleString() }),
|
|
16398
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-muted-foreground/70", children: t("tokenUsage.outputShort", "out") })
|
|
16399
|
+
] })
|
|
16400
|
+
] })
|
|
16401
|
+
]
|
|
16402
|
+
}
|
|
16403
|
+
),
|
|
16404
|
+
expanded && /* @__PURE__ */ jsxRuntimeExports.jsx(StepDetails, { step })
|
|
16405
|
+
]
|
|
16406
|
+
},
|
|
16407
|
+
step.stepNumber
|
|
16408
|
+
);
|
|
16409
|
+
}) })
|
|
16410
|
+
] });
|
|
16411
|
+
}
|
|
16412
|
+
function StepDetails({ step }) {
|
|
16413
|
+
const { t } = useTranslation();
|
|
16414
|
+
const { inputDetails, outputDetails, performance: performance2 } = step;
|
|
16415
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "border-t border-border/40", children: [
|
|
16416
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-2 gap-1 py-1", children: [
|
|
16417
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16418
|
+
DetailMetric,
|
|
16419
|
+
{
|
|
16420
|
+
label: t("tokenUsage.input", "Input"),
|
|
16421
|
+
value: step.inputTokens.toLocaleString()
|
|
16422
|
+
}
|
|
16423
|
+
),
|
|
16424
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16425
|
+
DetailMetric,
|
|
16426
|
+
{
|
|
16427
|
+
label: t("tokenUsage.output", "Output"),
|
|
16428
|
+
value: step.outputTokens.toLocaleString()
|
|
16429
|
+
}
|
|
16430
|
+
)
|
|
16431
|
+
] }),
|
|
16432
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-[10px] space-y-1", children: [
|
|
16433
|
+
inputDetails.cacheReadTokens != null && inputDetails.cacheReadTokens > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16434
|
+
MetricRow,
|
|
16435
|
+
{
|
|
16436
|
+
label: t("tokenUsage.cacheRead", "Cache Read"),
|
|
16437
|
+
value: inputDetails.cacheReadTokens.toLocaleString()
|
|
16438
|
+
}
|
|
16439
|
+
),
|
|
16440
|
+
inputDetails.cacheWriteTokens != null && inputDetails.cacheWriteTokens > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16441
|
+
MetricRow,
|
|
16442
|
+
{
|
|
16443
|
+
label: t("tokenUsage.cacheWrite", "Cache Write"),
|
|
16444
|
+
value: inputDetails.cacheWriteTokens.toLocaleString()
|
|
16445
|
+
}
|
|
16446
|
+
),
|
|
16447
|
+
inputDetails.noCacheTokens != null && inputDetails.noCacheTokens > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16448
|
+
MetricRow,
|
|
16449
|
+
{
|
|
16450
|
+
label: t("tokenUsage.noCache", "No Cache"),
|
|
16451
|
+
value: inputDetails.noCacheTokens.toLocaleString()
|
|
16452
|
+
}
|
|
16453
|
+
),
|
|
16454
|
+
outputDetails.textTokens != null && outputDetails.textTokens > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16455
|
+
MetricRow,
|
|
16456
|
+
{
|
|
16457
|
+
label: t("tokenUsage.text", "Text"),
|
|
16458
|
+
value: outputDetails.textTokens.toLocaleString()
|
|
16459
|
+
}
|
|
16460
|
+
),
|
|
16461
|
+
outputDetails.reasoningTokens != null && outputDetails.reasoningTokens > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16462
|
+
MetricRow,
|
|
16463
|
+
{
|
|
16464
|
+
label: t("tokenUsage.thought", "Thought"),
|
|
16465
|
+
value: outputDetails.reasoningTokens.toLocaleString()
|
|
16466
|
+
}
|
|
16467
|
+
),
|
|
16468
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16469
|
+
MetricRow,
|
|
16470
|
+
{
|
|
16471
|
+
label: t("tokenUsage.stepTime", "Step Time"),
|
|
16472
|
+
value: formatMs(performance2.stepTimeMs)
|
|
16473
|
+
}
|
|
16474
|
+
),
|
|
16475
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16476
|
+
MetricRow,
|
|
16477
|
+
{
|
|
16478
|
+
label: t("tokenUsage.responseTime", "Response Time"),
|
|
16479
|
+
value: formatMs(performance2.responseTimeMs)
|
|
16480
|
+
}
|
|
16481
|
+
)
|
|
16482
|
+
] }),
|
|
16483
|
+
step.toolCalls.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "pt-1 mt-3 border-t border-border/40", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-1", children: step.toolCalls.map((toolCall, index) => /* @__PURE__ */ jsxRuntimeExports.jsx(ToolCallRow, { toolCall }, `${toolCall.toolName}-${index}`)) }) })
|
|
16484
|
+
] });
|
|
16485
|
+
}
|
|
16486
|
+
function ToolCallRow({ toolCall }) {
|
|
16487
|
+
const { t } = useTranslation();
|
|
16488
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "py-4 border-t border-border/40 first:border-transparent -mt-px", children: [
|
|
16489
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 min-w-0", children: [
|
|
16490
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Wrench, { className: "size-3 shrink-0 text-foreground/80" }),
|
|
16491
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono text-[10px] font-medium text-foreground/80 truncate", children: shortToolName(toolCall.toolName) }),
|
|
16492
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ml-auto max-w-[45%] truncate text-[10px] text-muted-foreground/50 font-mono", children: toolCall.toolName })
|
|
16493
|
+
] }),
|
|
16494
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-3 gap-1 -mb-2", children: [
|
|
16495
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16496
|
+
DetailMetric,
|
|
16497
|
+
{
|
|
16498
|
+
label: t("tokenUsage.arguments", "Arguments"),
|
|
16499
|
+
value: `${toolCall.argumentsOutputTokens.toLocaleString()} ${t("tokenUsage.token", "token")}`
|
|
16500
|
+
}
|
|
16501
|
+
),
|
|
16502
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16503
|
+
DetailMetric,
|
|
16504
|
+
{
|
|
16505
|
+
label: t("tokenUsage.result", "Result"),
|
|
16506
|
+
value: `${toolCall.resultInputTokens.toLocaleString()} ${t("tokenUsage.token", "token")}`
|
|
16507
|
+
}
|
|
16508
|
+
),
|
|
16509
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16510
|
+
DetailMetric,
|
|
16511
|
+
{
|
|
16512
|
+
label: t("tokenUsage.execution", "Execution"),
|
|
16513
|
+
value: toolCall.executionMs != null ? formatMs(toolCall.executionMs) : "—"
|
|
16514
|
+
}
|
|
16515
|
+
)
|
|
16516
|
+
] }),
|
|
16517
|
+
toolCall.args && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-2", children: [
|
|
16518
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-[10px] font-medium uppercase tracking-wide text-muted-foreground/70 mb-1", children: t("tokenUsage.arguments", "Arguments") }),
|
|
16519
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { viewportClassName: "max-h-32 rounded-md border border-border/60 bg-muted/30", children: /* @__PURE__ */ jsxRuntimeExports.jsx("pre", { className: "whitespace-pre-wrap wrap-break-word px-2 py-1.5 text-[10px] leading-relaxed text-foreground/70 font-mono", children: formatToolArgs(toolCall.args) }) })
|
|
16520
|
+
] })
|
|
16521
|
+
] });
|
|
16522
|
+
}
|
|
16523
|
+
function PerformanceSection({
|
|
16524
|
+
performance: performance2,
|
|
16525
|
+
steps
|
|
16526
|
+
}) {
|
|
16527
|
+
const { t } = useTranslation();
|
|
16528
|
+
const ttft = steps[0]?.performance.timeToFirstOutputMs;
|
|
16529
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "border-t border-border/50 pt-3", children: [
|
|
16530
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(SectionHeader, { icon: Gauge, title: t("tokenUsage.performance", "Performance") }),
|
|
16531
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-2 grid grid-cols-3 gap-1.5", children: [
|
|
16532
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16533
|
+
DetailMetric,
|
|
16534
|
+
{
|
|
16535
|
+
label: t("tokenUsage.totalTime", "Total Time"),
|
|
16536
|
+
value: formatMs(performance2.totalTimeMs)
|
|
16537
|
+
}
|
|
16538
|
+
),
|
|
16539
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16540
|
+
DetailMetric,
|
|
16541
|
+
{
|
|
16542
|
+
label: t("tokenUsage.outputSpeed", "Output Speed"),
|
|
16543
|
+
value: `${Math.round(performance2.effectiveOutputTokensPerSecond)} ${t("tokenUsage.tokensPerSecond", "token/s")}`
|
|
16544
|
+
}
|
|
16545
|
+
),
|
|
16546
|
+
ttft != null && /* @__PURE__ */ jsxRuntimeExports.jsx(DetailMetric, { label: t("tokenUsage.firstToken", "First Token"), value: formatMs(ttft) })
|
|
16547
|
+
] })
|
|
16548
|
+
] });
|
|
16549
|
+
}
|
|
16550
|
+
function MetricCard({ label, value }) {
|
|
16551
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "py-2", children: [
|
|
16552
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-[10px] font-medium uppercase tracking-wide text-muted-foreground/70", children: label }),
|
|
16553
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-1 font-mono text-sm font-semibold tabular-nums text-foreground/70 truncate", children: value })
|
|
16554
|
+
] });
|
|
16555
|
+
}
|
|
16556
|
+
function DetailMetric({ label, value }) {
|
|
16557
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "py-2", children: [
|
|
16558
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-[10px] font-medium uppercase tracking-wide truncate text-muted-foreground/70", children: label }),
|
|
16559
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-1.5 font-mono text-xs font-medium tabular-nums text-foreground/70 truncate", children: value })
|
|
16560
|
+
] });
|
|
16561
|
+
}
|
|
16562
|
+
function SectionHeader({
|
|
16563
|
+
icon: Icon,
|
|
16564
|
+
title,
|
|
16565
|
+
badge
|
|
16566
|
+
}) {
|
|
16567
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
16568
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { className: "size-3 text-muted-foreground" }),
|
|
16569
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-semibold text-foreground/80", children: title }),
|
|
16570
|
+
badge && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] text-muted-foreground/60 ml-auto", children: badge })
|
|
16571
|
+
] });
|
|
16572
|
+
}
|
|
16573
|
+
function MetricRow({ label, value }) {
|
|
16574
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex justify-between min-w-0 gap-2 hover:bg-accent/60 px-1 py-0.5 -mx-1 rounded-sm", children: [
|
|
16575
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-muted-foreground truncate", children: label }),
|
|
16576
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono tabular-nums text-foreground/80 shrink-0", children: value })
|
|
16577
|
+
] });
|
|
16578
|
+
}
|
|
16579
|
+
function isRecord(value) {
|
|
16580
|
+
return typeof value === "object" && value !== null;
|
|
16581
|
+
}
|
|
16582
|
+
function parseTokenUsageRecords(records) {
|
|
16583
|
+
const parsed = [];
|
|
16584
|
+
for (const record of records) {
|
|
16585
|
+
if (isTokenUsageRecord(record)) parsed.push(record);
|
|
16586
|
+
}
|
|
16587
|
+
return parsed;
|
|
16588
|
+
}
|
|
16589
|
+
function isTokenUsageRecord(value) {
|
|
16590
|
+
if (!isRecord(value) || typeof value.timestamp !== "number" || !isRecord(value.usage)) {
|
|
16591
|
+
return false;
|
|
16592
|
+
}
|
|
16593
|
+
return typeof value.usage.totalTokens === "number" && typeof value.usage.inputTokens === "number" && typeof value.usage.outputTokens === "number";
|
|
16594
|
+
}
|
|
16595
|
+
function isTokenBreakdown(value) {
|
|
16596
|
+
if (!isRecord(value)) return false;
|
|
16597
|
+
const composition = value.inputComposition;
|
|
16598
|
+
return typeof value.stepCount === "number" && Array.isArray(value.steps) && isRecord(composition) && isRecord(composition.toolsDefinition) && Array.isArray(composition.toolsDefinition.perTool) && isRecord(value.performance);
|
|
16599
|
+
}
|
|
16600
|
+
function getBreakdown(usage) {
|
|
16601
|
+
const breakdown = usage._meta?.fello?.tokenBreakdown;
|
|
16602
|
+
return isTokenBreakdown(breakdown) ? breakdown : void 0;
|
|
16603
|
+
}
|
|
16604
|
+
function createLiveRecord(usage, timestamp) {
|
|
16605
|
+
if (!usage) return null;
|
|
16606
|
+
const breakdown = getBreakdownFromUnknownUsage(usage);
|
|
16607
|
+
if (!breakdown) return null;
|
|
16608
|
+
return {
|
|
16609
|
+
timestamp,
|
|
16610
|
+
usage: {
|
|
16611
|
+
totalTokens: usage.totalTokens,
|
|
16612
|
+
inputTokens: usage.inputTokens,
|
|
16613
|
+
outputTokens: usage.outputTokens,
|
|
16614
|
+
thoughtTokens: usage.thoughtTokens,
|
|
16615
|
+
cachedReadTokens: usage.cachedReadTokens,
|
|
16616
|
+
cachedWriteTokens: usage.cachedWriteTokens,
|
|
16617
|
+
_meta: { fello: { tokenBreakdown: breakdown } }
|
|
16618
|
+
}
|
|
16619
|
+
};
|
|
16620
|
+
}
|
|
16621
|
+
function finishReasonBadge(reason) {
|
|
16622
|
+
if (reason === "stop" || reason === "end_turn") {
|
|
16623
|
+
return "bg-emerald-500/10 text-emerald-600 dark:text-emerald-400";
|
|
16624
|
+
}
|
|
16625
|
+
if (reason === "tool_calls" || reason === "tool_call") {
|
|
16626
|
+
return "bg-amber-500/10 text-amber-600 dark:text-amber-400";
|
|
16627
|
+
}
|
|
16628
|
+
if (reason === "length" || reason === "max_tokens") {
|
|
16629
|
+
return "bg-orange-500/10 text-orange-600 dark:text-orange-400";
|
|
16630
|
+
}
|
|
16631
|
+
return "bg-muted text-muted-foreground";
|
|
16632
|
+
}
|
|
16633
|
+
function getBreakdownFromUnknownUsage(usage) {
|
|
16634
|
+
if (!isRecord(usage) || !isRecord(usage._meta) || !isRecord(usage._meta.fello)) {
|
|
16635
|
+
return void 0;
|
|
16636
|
+
}
|
|
16637
|
+
return isTokenBreakdown(usage._meta.fello.tokenBreakdown) ? usage._meta.fello.tokenBreakdown : void 0;
|
|
16638
|
+
}
|
|
16639
|
+
function mergeLiveRecord(records, liveRecord) {
|
|
16640
|
+
if (!liveRecord) return records;
|
|
16641
|
+
const lastRecord = records[records.length - 1];
|
|
16642
|
+
if (lastRecord && getUsageFingerprint(lastRecord.usage) === getUsageFingerprint(liveRecord.usage)) {
|
|
16643
|
+
return records;
|
|
16644
|
+
}
|
|
16645
|
+
return [...records, liveRecord];
|
|
16646
|
+
}
|
|
16647
|
+
function getUsageFingerprint(usage) {
|
|
16648
|
+
return JSON.stringify(usage) ?? "";
|
|
16649
|
+
}
|
|
16650
|
+
function shortToolName(name) {
|
|
16651
|
+
const parts = name.split("__");
|
|
16652
|
+
return parts[parts.length - 1] || name;
|
|
16653
|
+
}
|
|
16654
|
+
function formatToolArgs(args) {
|
|
16655
|
+
try {
|
|
16656
|
+
return JSON.stringify(JSON.parse(args), null, 2);
|
|
16657
|
+
} catch {
|
|
16658
|
+
return args;
|
|
16659
|
+
}
|
|
16660
|
+
}
|
|
16661
|
+
function formatTimestamp(timestamp) {
|
|
16662
|
+
return new Date(timestamp).toLocaleTimeString([], {
|
|
16663
|
+
hour: "2-digit",
|
|
16664
|
+
minute: "2-digit",
|
|
16665
|
+
second: "2-digit"
|
|
16666
|
+
});
|
|
16667
|
+
}
|
|
16668
|
+
function formatMs(ms2) {
|
|
16669
|
+
if (ms2 < 1e3) return `${Math.round(ms2)}ms`;
|
|
16670
|
+
return `${(ms2 / 1e3).toFixed(1)}s`;
|
|
16671
|
+
}
|
|
16672
|
+
function Detail({ detailType, projectId, file, terminalId, session, onClose }) {
|
|
15887
16673
|
const { t } = useTranslation();
|
|
15888
16674
|
if (!detailType) return null;
|
|
15889
16675
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col h-full min-h-0 overflow-hidden bg-background", children: [
|
|
@@ -15897,7 +16683,8 @@ function Detail({ detailType, projectId, file, terminalId, onClose }) {
|
|
|
15897
16683
|
},
|
|
15898
16684
|
terminalId
|
|
15899
16685
|
),
|
|
15900
|
-
|
|
16686
|
+
detailType === "token-usage" && session && /* @__PURE__ */ jsxRuntimeExports.jsx(TokenUsageDetail, { session, onClose }),
|
|
16687
|
+
(!detailType || detailType === "file" && (!projectId || !file) || detailType === "terminal" && (!projectId || !terminalId) || detailType === "token-usage" && !session) && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-full items-center justify-center text-xs text-muted-foreground", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: t("detail.noContent", "No content") }) })
|
|
15901
16688
|
] });
|
|
15902
16689
|
}
|
|
15903
16690
|
const GIT_FOLDER_STATUS = {
|
|
@@ -17550,6 +18337,15 @@ function Session({ session }) {
|
|
|
17550
18337
|
document.addEventListener("fello-preview-file", handlePreviewFileEvent);
|
|
17551
18338
|
return () => document.removeEventListener("fello-preview-file", handlePreviewFileEvent);
|
|
17552
18339
|
}, [currentProjectId, handlePreviewFile]);
|
|
18340
|
+
reactExports.useEffect(() => {
|
|
18341
|
+
const handleOpenTokenUsage = () => {
|
|
18342
|
+
setDetailType("token-usage");
|
|
18343
|
+
setDetailFile(null);
|
|
18344
|
+
setDetailTerminalId(null);
|
|
18345
|
+
};
|
|
18346
|
+
document.addEventListener("fello-open-token-usage", handleOpenTokenUsage);
|
|
18347
|
+
return () => document.removeEventListener("fello-open-token-usage", handleOpenTokenUsage);
|
|
18348
|
+
}, []);
|
|
17553
18349
|
const fetchingRef = reactExports.useRef(null);
|
|
17554
18350
|
const [connectionError, setConnectionError] = reactExports.useState(false);
|
|
17555
18351
|
reactExports.useEffect(() => {
|
|
@@ -17655,6 +18451,7 @@ function Session({ session }) {
|
|
|
17655
18451
|
projectId: currentProjectId,
|
|
17656
18452
|
file: detailFile,
|
|
17657
18453
|
terminalId: detailTerminalId,
|
|
18454
|
+
session,
|
|
17658
18455
|
onClose: handleDetailClose
|
|
17659
18456
|
}
|
|
17660
18457
|
) })
|