@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
|
Binary file
|
package/out/server/main.js
CHANGED
|
@@ -913,6 +913,35 @@ function readTerminalOutput(sessionIdOrSubSessionId, terminalId) {
|
|
|
913
913
|
if (!existsSync3(filePath)) return null;
|
|
914
914
|
return readFileSync3(filePath, "utf-8");
|
|
915
915
|
}
|
|
916
|
+
function appendTokenUsage(sessionId, record) {
|
|
917
|
+
const dir = sessionDir(sessionId);
|
|
918
|
+
if (!dir) return;
|
|
919
|
+
mkdirSync3(dir, { recursive: true });
|
|
920
|
+
const filePath = join5(dir, "token-usage.jsonl");
|
|
921
|
+
appendFileSync(filePath, JSON.stringify(record) + "\n");
|
|
922
|
+
}
|
|
923
|
+
function isSessionTokenUsage(value) {
|
|
924
|
+
if (!value || typeof value !== "object") return false;
|
|
925
|
+
const record = value;
|
|
926
|
+
if (!record || typeof record.timestamp !== "number" || !record.usage) return false;
|
|
927
|
+
if (typeof record.usage !== "object") return false;
|
|
928
|
+
const usage = record.usage;
|
|
929
|
+
return typeof usage.totalTokens === "number" && typeof usage.inputTokens === "number" && typeof usage.outputTokens === "number";
|
|
930
|
+
}
|
|
931
|
+
function readTokenUsage(sessionId) {
|
|
932
|
+
const dir = sessionDir(sessionId);
|
|
933
|
+
if (!dir) return [];
|
|
934
|
+
const filePath = join5(dir, "token-usage.jsonl");
|
|
935
|
+
if (!existsSync3(filePath)) return [];
|
|
936
|
+
const content = readFileSync3(filePath, "utf-8");
|
|
937
|
+
return content.split("\n").filter((line) => line.trim()).map((line) => {
|
|
938
|
+
try {
|
|
939
|
+
return JSON.parse(line);
|
|
940
|
+
} catch {
|
|
941
|
+
return null;
|
|
942
|
+
}
|
|
943
|
+
}).filter((value) => isSessionTokenUsage(value));
|
|
944
|
+
}
|
|
916
945
|
var storageOps = {
|
|
917
946
|
getSettings,
|
|
918
947
|
updateSettings,
|
|
@@ -932,7 +961,9 @@ var storageOps = {
|
|
|
932
961
|
appendSessionMessage,
|
|
933
962
|
readSessionMessages,
|
|
934
963
|
appendTerminalOutput,
|
|
935
|
-
readTerminalOutput
|
|
964
|
+
readTerminalOutput,
|
|
965
|
+
appendTokenUsage,
|
|
966
|
+
readTokenUsage
|
|
936
967
|
};
|
|
937
968
|
|
|
938
969
|
// src/backend/i18n.ts
|
|
@@ -5049,6 +5080,183 @@ Results from all sub-agents are returned when they all complete.`,
|
|
|
5049
5080
|
};
|
|
5050
5081
|
}
|
|
5051
5082
|
|
|
5083
|
+
// src/agents/token-breakdown.ts
|
|
5084
|
+
var _countTokens = null;
|
|
5085
|
+
var _formatFunctionDefinitions = null;
|
|
5086
|
+
async function getTokenizer() {
|
|
5087
|
+
if (!_countTokens) {
|
|
5088
|
+
const mod = await import("gpt-tokenizer");
|
|
5089
|
+
_countTokens = mod.countTokens;
|
|
5090
|
+
}
|
|
5091
|
+
if (!_formatFunctionDefinitions) {
|
|
5092
|
+
const mod = await import("gpt-tokenizer/esm/functionCalling");
|
|
5093
|
+
_formatFunctionDefinitions = mod.formatFunctionDefinitions;
|
|
5094
|
+
}
|
|
5095
|
+
return {
|
|
5096
|
+
countTokens: _countTokens,
|
|
5097
|
+
formatFunctionDefinitions: _formatFunctionDefinitions
|
|
5098
|
+
};
|
|
5099
|
+
}
|
|
5100
|
+
async function estimateToolsDefinitionTokens(tools) {
|
|
5101
|
+
const { countTokens, formatFunctionDefinitions } = await getTokenizer();
|
|
5102
|
+
const entries = Object.entries(tools);
|
|
5103
|
+
if (entries.length === 0) {
|
|
5104
|
+
return { total: 0, perTool: [] };
|
|
5105
|
+
}
|
|
5106
|
+
const functionDefs = entries.map(([name, tool4]) => ({
|
|
5107
|
+
name,
|
|
5108
|
+
description: typeof tool4.description === "string" ? tool4.description : void 0,
|
|
5109
|
+
parameters: extractJsonSchema(tool4)
|
|
5110
|
+
}));
|
|
5111
|
+
const totalFormatted = formatFunctionDefinitions(functionDefs);
|
|
5112
|
+
const total = countTokens(totalFormatted) + 9;
|
|
5113
|
+
const emptyNamespaceTokens = countTokens("namespace functions {\n\n} // namespace functions");
|
|
5114
|
+
const perTool = functionDefs.map((fn) => {
|
|
5115
|
+
const singleFormatted = formatFunctionDefinitions([fn]);
|
|
5116
|
+
const singleTotal = countTokens(singleFormatted) + 9;
|
|
5117
|
+
return {
|
|
5118
|
+
name: fn.name,
|
|
5119
|
+
tokens: Math.max(0, singleTotal - emptyNamespaceTokens)
|
|
5120
|
+
};
|
|
5121
|
+
});
|
|
5122
|
+
return { total, perTool };
|
|
5123
|
+
}
|
|
5124
|
+
async function estimateInputComposition(params) {
|
|
5125
|
+
const { countTokens } = await getTokenizer();
|
|
5126
|
+
const systemPromptTokens = countTokens(params.systemPrompt) + 3;
|
|
5127
|
+
const toolsDef = await estimateToolsDefinitionTokens(params.tools);
|
|
5128
|
+
const historyTokens = params.historyText ? countTokens(params.historyText) : 0;
|
|
5129
|
+
const userMessageTokens = countTokens(params.userMessageText) + 3;
|
|
5130
|
+
const estimatedTotal = systemPromptTokens + toolsDef.total + historyTokens + userMessageTokens + 3;
|
|
5131
|
+
return {
|
|
5132
|
+
systemPrompt: systemPromptTokens,
|
|
5133
|
+
toolsDefinition: toolsDef,
|
|
5134
|
+
history: historyTokens,
|
|
5135
|
+
userMessage: userMessageTokens,
|
|
5136
|
+
userMessageText: params.userMessageText,
|
|
5137
|
+
estimatedTotal,
|
|
5138
|
+
delta: params.actualInputTokens - estimatedTotal
|
|
5139
|
+
};
|
|
5140
|
+
}
|
|
5141
|
+
function buildStepBreakdown(steps) {
|
|
5142
|
+
const stepDetails = steps.map((step, idx) => {
|
|
5143
|
+
const next = steps[idx + 1];
|
|
5144
|
+
const usage = step.usage;
|
|
5145
|
+
const toolCallEstimates = buildToolCallEstimates(step, next);
|
|
5146
|
+
return {
|
|
5147
|
+
stepNumber: step.stepNumber,
|
|
5148
|
+
finishReason: step.finishReason,
|
|
5149
|
+
inputTokens: usage.inputTokens ?? 0,
|
|
5150
|
+
outputTokens: usage.outputTokens ?? 0,
|
|
5151
|
+
inputDetails: {
|
|
5152
|
+
cacheReadTokens: usage.inputTokenDetails?.cacheReadTokens ?? void 0,
|
|
5153
|
+
cacheWriteTokens: usage.inputTokenDetails?.cacheWriteTokens ?? void 0,
|
|
5154
|
+
noCacheTokens: usage.inputTokenDetails?.noCacheTokens ?? void 0
|
|
5155
|
+
},
|
|
5156
|
+
outputDetails: {
|
|
5157
|
+
textTokens: usage.outputTokenDetails?.textTokens ?? void 0,
|
|
5158
|
+
reasoningTokens: usage.outputTokenDetails?.reasoningTokens ?? void 0
|
|
5159
|
+
},
|
|
5160
|
+
toolCalls: toolCallEstimates,
|
|
5161
|
+
performance: {
|
|
5162
|
+
stepTimeMs: step.performance.stepTimeMs,
|
|
5163
|
+
responseTimeMs: step.performance.responseTimeMs,
|
|
5164
|
+
timeToFirstOutputMs: step.performance.timeToFirstOutputMs ?? void 0,
|
|
5165
|
+
outputTokensPerSecond: step.performance.outputTokensPerSecond ?? void 0
|
|
5166
|
+
}
|
|
5167
|
+
};
|
|
5168
|
+
});
|
|
5169
|
+
const totalTimeMs = steps.reduce((sum, s) => sum + s.performance.stepTimeMs, 0);
|
|
5170
|
+
const lastStep = steps[steps.length - 1];
|
|
5171
|
+
const effectiveOutputTokensPerSecond = lastStep?.performance.effectiveOutputTokensPerSecond ?? 0;
|
|
5172
|
+
return {
|
|
5173
|
+
steps: stepDetails,
|
|
5174
|
+
performance: { totalTimeMs, effectiveOutputTokensPerSecond }
|
|
5175
|
+
};
|
|
5176
|
+
}
|
|
5177
|
+
function buildToolCallEstimates(step, next) {
|
|
5178
|
+
if (step.toolCalls.length === 0) return [];
|
|
5179
|
+
const usage = step.usage;
|
|
5180
|
+
const outputTokens = usage.outputTokens ?? 0;
|
|
5181
|
+
const textTokens = usage.outputTokenDetails?.textTokens ?? 0;
|
|
5182
|
+
const reasoningTokens = usage.outputTokenDetails?.reasoningTokens ?? 0;
|
|
5183
|
+
const totalToolCallOutput = Math.max(0, outputTokens - textTokens - reasoningTokens);
|
|
5184
|
+
let totalToolResultInput = 0;
|
|
5185
|
+
if (next) {
|
|
5186
|
+
const nextInput = next.usage.inputTokens ?? 0;
|
|
5187
|
+
const currentInput = usage.inputTokens ?? 0;
|
|
5188
|
+
const currentOutput = usage.outputTokens ?? 0;
|
|
5189
|
+
totalToolResultInput = Math.max(0, nextInput - currentInput - currentOutput);
|
|
5190
|
+
}
|
|
5191
|
+
const count = step.toolCalls.length;
|
|
5192
|
+
const toolExecutionMs = step.performance.toolExecutionMs;
|
|
5193
|
+
return step.toolCalls.map((tc) => ({
|
|
5194
|
+
toolName: tc.toolName,
|
|
5195
|
+
args: serializeToolCallArgs(tc.input),
|
|
5196
|
+
argumentsOutputTokens: Math.round(totalToolCallOutput / count),
|
|
5197
|
+
resultInputTokens: Math.round(totalToolResultInput / count),
|
|
5198
|
+
executionMs: toolExecutionMs?.[tc.toolCallId] ?? void 0
|
|
5199
|
+
}));
|
|
5200
|
+
}
|
|
5201
|
+
function serializeToolCallArgs(input) {
|
|
5202
|
+
if (input == null) return "";
|
|
5203
|
+
if (typeof input === "string") return input;
|
|
5204
|
+
try {
|
|
5205
|
+
return JSON.stringify(input);
|
|
5206
|
+
} catch {
|
|
5207
|
+
return String(input);
|
|
5208
|
+
}
|
|
5209
|
+
}
|
|
5210
|
+
function extractJsonSchema(tool4) {
|
|
5211
|
+
const schema = tool4.inputSchema;
|
|
5212
|
+
if (!schema) return void 0;
|
|
5213
|
+
if (typeof schema === "object" && schema !== null && "jsonSchema" in schema) {
|
|
5214
|
+
const jsonSchema = schema.jsonSchema;
|
|
5215
|
+
if (typeof jsonSchema === "object" && jsonSchema !== null) {
|
|
5216
|
+
return jsonSchema;
|
|
5217
|
+
}
|
|
5218
|
+
}
|
|
5219
|
+
if (typeof schema === "object" && schema !== null && "_def" in schema) {
|
|
5220
|
+
return void 0;
|
|
5221
|
+
}
|
|
5222
|
+
if (typeof schema === "object" && schema !== null) {
|
|
5223
|
+
return schema;
|
|
5224
|
+
}
|
|
5225
|
+
return void 0;
|
|
5226
|
+
}
|
|
5227
|
+
function serializeMessagesForCounting(messages) {
|
|
5228
|
+
const serializedMessages = [];
|
|
5229
|
+
for (const msg of messages) {
|
|
5230
|
+
const serializedParts = [];
|
|
5231
|
+
if (typeof msg.content === "string") {
|
|
5232
|
+
serializedParts.push(msg.content);
|
|
5233
|
+
} else if (Array.isArray(msg.content)) {
|
|
5234
|
+
for (const part of msg.content) {
|
|
5235
|
+
if (typeof part === "string") {
|
|
5236
|
+
serializedParts.push(part);
|
|
5237
|
+
continue;
|
|
5238
|
+
}
|
|
5239
|
+
if (part && typeof part === "object" && "text" in part) {
|
|
5240
|
+
serializedParts.push(String(part.text));
|
|
5241
|
+
continue;
|
|
5242
|
+
}
|
|
5243
|
+
if (part != null) {
|
|
5244
|
+
const serializedPart = JSON.stringify(part);
|
|
5245
|
+
if (serializedPart !== void 0) serializedParts.push(serializedPart);
|
|
5246
|
+
}
|
|
5247
|
+
}
|
|
5248
|
+
} else if (msg.content != null) {
|
|
5249
|
+
const serializedContent = JSON.stringify(msg.content);
|
|
5250
|
+
if (serializedContent !== void 0) serializedParts.push(serializedContent);
|
|
5251
|
+
}
|
|
5252
|
+
if (serializedParts.length > 0) {
|
|
5253
|
+
const role = msg.role ? `[${msg.role}] ` : "";
|
|
5254
|
+
serializedMessages.push(`${role}${serializedParts.join("\n")}`);
|
|
5255
|
+
}
|
|
5256
|
+
}
|
|
5257
|
+
return serializedMessages.join("\n");
|
|
5258
|
+
}
|
|
5259
|
+
|
|
5052
5260
|
// src/agents/openai-compatible-agent.ts
|
|
5053
5261
|
var MODEL_CONFIG_ID = "model";
|
|
5054
5262
|
var THOUGHT_LEVEL_CONFIG_ID = "thought_level";
|
|
@@ -5145,6 +5353,12 @@ function buildSafeUserMessage(prompt) {
|
|
|
5145
5353
|
var AVAILABLE_COMMANDS = [
|
|
5146
5354
|
{ name: "compact", description: "Compress conversation context" }
|
|
5147
5355
|
];
|
|
5356
|
+
var COMPACT_PROMPT = `Compress the conversation into a structured markdown summary.
|
|
5357
|
+
Include: key decisions, code changes (with file paths),
|
|
5358
|
+
technical context, and pending tasks.
|
|
5359
|
+
Use headings and bullet points for clarity.
|
|
5360
|
+
Detect the user's commonly used language from the conversation history and respond in that language.
|
|
5361
|
+
Output only the summary.`;
|
|
5148
5362
|
var OpenaiCompatibleAgent = class {
|
|
5149
5363
|
sessions = /* @__PURE__ */ new Map();
|
|
5150
5364
|
provider;
|
|
@@ -5323,16 +5537,70 @@ var OpenaiCompatibleAgent = class {
|
|
|
5323
5537
|
);
|
|
5324
5538
|
}
|
|
5325
5539
|
}
|
|
5326
|
-
async
|
|
5540
|
+
async pushUsageUpdate(sessionId, usageUpdate) {
|
|
5541
|
+
if (!this.connection) return;
|
|
5542
|
+
await this.connection.sessionUpdate({
|
|
5543
|
+
sessionId,
|
|
5544
|
+
update: {
|
|
5545
|
+
sessionUpdate: "usage_update",
|
|
5546
|
+
...usageUpdate
|
|
5547
|
+
}
|
|
5548
|
+
});
|
|
5549
|
+
}
|
|
5550
|
+
async pushAvailableCommands(sessionId, commands) {
|
|
5327
5551
|
if (!this.connection) return;
|
|
5328
5552
|
await this.connection.sessionUpdate({
|
|
5329
5553
|
sessionId,
|
|
5330
5554
|
update: {
|
|
5331
5555
|
sessionUpdate: "available_commands_update",
|
|
5332
|
-
availableCommands:
|
|
5556
|
+
availableCommands: commands
|
|
5333
5557
|
}
|
|
5334
5558
|
});
|
|
5335
5559
|
}
|
|
5560
|
+
/**
|
|
5561
|
+
* Build per-turn token breakdown metadata (best-effort).
|
|
5562
|
+
* Shared by normal prompts and slash commands (e.g. /compact).
|
|
5563
|
+
* Must never throw — breakdown is optional metadata that must not fail the prompt.
|
|
5564
|
+
*/
|
|
5565
|
+
async buildTokenBreakdown(params) {
|
|
5566
|
+
try {
|
|
5567
|
+
const stepBreakdown = buildStepBreakdown(params.steps);
|
|
5568
|
+
const historyText = serializeMessagesForCounting(params.history);
|
|
5569
|
+
const userMessageText = serializeMessagesForCounting([params.userMessage]);
|
|
5570
|
+
const inputComposition = await estimateInputComposition({
|
|
5571
|
+
systemPrompt: params.systemPrompt,
|
|
5572
|
+
tools: params.tools,
|
|
5573
|
+
historyText,
|
|
5574
|
+
userMessageText,
|
|
5575
|
+
actualInputTokens: params.steps[0]?.usage.inputTokens ?? 0
|
|
5576
|
+
});
|
|
5577
|
+
return {
|
|
5578
|
+
stepCount: params.steps.length,
|
|
5579
|
+
inputComposition,
|
|
5580
|
+
steps: stepBreakdown.steps,
|
|
5581
|
+
performance: stepBreakdown.performance
|
|
5582
|
+
};
|
|
5583
|
+
} catch (error) {
|
|
5584
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
5585
|
+
console.warn(
|
|
5586
|
+
`[OpenaiCompatibleAgent] Failed to build token breakdown for a prompt: ${message}`
|
|
5587
|
+
);
|
|
5588
|
+
return {
|
|
5589
|
+
stepCount: params.steps.length,
|
|
5590
|
+
inputComposition: {
|
|
5591
|
+
systemPrompt: 0,
|
|
5592
|
+
toolsDefinition: { total: 0, perTool: [] },
|
|
5593
|
+
history: 0,
|
|
5594
|
+
userMessage: 0,
|
|
5595
|
+
userMessageText: "",
|
|
5596
|
+
estimatedTotal: 0,
|
|
5597
|
+
delta: 0
|
|
5598
|
+
},
|
|
5599
|
+
steps: [],
|
|
5600
|
+
performance: { totalTimeMs: 0, effectiveOutputTokensPerSecond: 0 }
|
|
5601
|
+
};
|
|
5602
|
+
}
|
|
5603
|
+
}
|
|
5336
5604
|
async newSession(params) {
|
|
5337
5605
|
const modelState = await this.getModels();
|
|
5338
5606
|
const sessionId = randomUUID6();
|
|
@@ -5355,7 +5623,7 @@ var OpenaiCompatibleAgent = class {
|
|
|
5355
5623
|
this.sessions.set(sessionId, session);
|
|
5356
5624
|
await this.persistSessionState(session);
|
|
5357
5625
|
setTimeout(() => {
|
|
5358
|
-
this.pushAvailableCommands(sessionId).catch(() => {
|
|
5626
|
+
this.pushAvailableCommands(sessionId, AVAILABLE_COMMANDS).catch(() => {
|
|
5359
5627
|
});
|
|
5360
5628
|
}, 500);
|
|
5361
5629
|
return {
|
|
@@ -5403,21 +5671,18 @@ var OpenaiCompatibleAgent = class {
|
|
|
5403
5671
|
if (!currentModelExists) {
|
|
5404
5672
|
active.modelId = modelState.currentModelId || null;
|
|
5405
5673
|
}
|
|
5406
|
-
|
|
5407
|
-
|
|
5408
|
-
|
|
5409
|
-
|
|
5410
|
-
|
|
5411
|
-
sessionId: params.sessionId,
|
|
5412
|
-
update: {
|
|
5413
|
-
sessionUpdate: "usage_update",
|
|
5414
|
-
used: active.contextUsedTokens,
|
|
5415
|
-
size: this.contextWindowTokens
|
|
5416
|
-
}
|
|
5417
|
-
});
|
|
5418
|
-
}
|
|
5674
|
+
const contextUsageUpdate = {
|
|
5675
|
+
used: persistedState?.contextUsedTokens ?? 0,
|
|
5676
|
+
size: this.contextWindowTokens
|
|
5677
|
+
};
|
|
5678
|
+
active.contextUsedTokens = contextUsageUpdate.used;
|
|
5419
5679
|
await this.persistSessionState(active);
|
|
5420
|
-
|
|
5680
|
+
setTimeout(() => {
|
|
5681
|
+
this.pushUsageUpdate(params.sessionId, contextUsageUpdate).catch(() => {
|
|
5682
|
+
});
|
|
5683
|
+
this.pushAvailableCommands(params.sessionId, AVAILABLE_COMMANDS).catch(() => {
|
|
5684
|
+
});
|
|
5685
|
+
}, 500);
|
|
5421
5686
|
return {
|
|
5422
5687
|
configOptions: await this.buildConfigOptions(active.modelId, active.thoughtLevel)
|
|
5423
5688
|
};
|
|
@@ -5476,18 +5741,14 @@ var OpenaiCompatibleAgent = class {
|
|
|
5476
5741
|
}
|
|
5477
5742
|
return { stopReason: "end_turn" };
|
|
5478
5743
|
}
|
|
5744
|
+
const historyBeforeCompact = session.history.slice();
|
|
5479
5745
|
const summaryResult = await generateText2({
|
|
5480
5746
|
model: this.provider.chatModel(session.modelId),
|
|
5481
5747
|
messages: [
|
|
5482
|
-
...
|
|
5748
|
+
...historyBeforeCompact,
|
|
5483
5749
|
{
|
|
5484
5750
|
role: "user",
|
|
5485
|
-
content:
|
|
5486
|
-
Include: key decisions, code changes (with file paths),
|
|
5487
|
-
technical context, and pending tasks.
|
|
5488
|
-
Use headings and bullet points for clarity.
|
|
5489
|
-
Detect the user's commonly used language from the conversation history and respond in that language.
|
|
5490
|
-
Output only the summary.`
|
|
5751
|
+
content: COMPACT_PROMPT
|
|
5491
5752
|
}
|
|
5492
5753
|
],
|
|
5493
5754
|
maxOutputTokens: 5e3
|
|
@@ -5516,18 +5777,28 @@ var OpenaiCompatibleAgent = class {
|
|
|
5516
5777
|
const summaryUsage = summaryResult.finalStep.usage;
|
|
5517
5778
|
const outputTokens = summaryUsage.outputTokens ?? 0;
|
|
5518
5779
|
session.contextUsedTokens = outputTokens;
|
|
5519
|
-
|
|
5520
|
-
|
|
5521
|
-
|
|
5522
|
-
|
|
5523
|
-
sessionUpdate: "usage_update",
|
|
5524
|
-
used: session.contextUsedTokens,
|
|
5525
|
-
size: this.contextWindowTokens
|
|
5526
|
-
}
|
|
5527
|
-
});
|
|
5528
|
-
}
|
|
5780
|
+
await this.pushUsageUpdate(sessionId, {
|
|
5781
|
+
used: session.contextUsedTokens,
|
|
5782
|
+
size: this.contextWindowTokens
|
|
5783
|
+
});
|
|
5529
5784
|
await this.persistSessionState(session);
|
|
5530
|
-
|
|
5785
|
+
const tokenBreakdown = await this.buildTokenBreakdown({
|
|
5786
|
+
systemPrompt: "",
|
|
5787
|
+
tools: {},
|
|
5788
|
+
history: historyBeforeCompact,
|
|
5789
|
+
userMessage: { role: "user", content: COMPACT_PROMPT },
|
|
5790
|
+
steps: summaryResult.steps
|
|
5791
|
+
});
|
|
5792
|
+
const usage = {
|
|
5793
|
+
totalTokens: summaryUsage.totalTokens ?? 0,
|
|
5794
|
+
inputTokens: summaryUsage.inputTokens ?? 0,
|
|
5795
|
+
outputTokens: summaryUsage.outputTokens ?? 0,
|
|
5796
|
+
thoughtTokens: summaryUsage.outputTokenDetails?.reasoningTokens,
|
|
5797
|
+
cachedReadTokens: summaryUsage.inputTokenDetails?.cacheReadTokens,
|
|
5798
|
+
cachedWriteTokens: summaryUsage.inputTokenDetails?.cacheWriteTokens,
|
|
5799
|
+
_meta: { fello: { tokenBreakdown } }
|
|
5800
|
+
};
|
|
5801
|
+
return { stopReason: "end_turn", usage };
|
|
5531
5802
|
}
|
|
5532
5803
|
async prompt(params) {
|
|
5533
5804
|
const session = this.sessions.get(params.sessionId);
|
|
@@ -5626,15 +5897,16 @@ var OpenaiCompatibleAgent = class {
|
|
|
5626
5897
|
getModel: () => this.provider.chatModel(session.modelId),
|
|
5627
5898
|
parentSignal: abortController.signal
|
|
5628
5899
|
});
|
|
5900
|
+
const allTools = {
|
|
5901
|
+
...sharedTools,
|
|
5902
|
+
...subagentTool,
|
|
5903
|
+
...imageAnalysisTool
|
|
5904
|
+
};
|
|
5629
5905
|
const result = streamText2({
|
|
5630
5906
|
model: this.provider.chatModel(session.modelId),
|
|
5631
5907
|
system: systemPrompt,
|
|
5632
5908
|
messages: [...session.history, userMessage],
|
|
5633
|
-
tools:
|
|
5634
|
-
...sharedTools,
|
|
5635
|
-
...subagentTool,
|
|
5636
|
-
...imageAnalysisTool
|
|
5637
|
-
},
|
|
5909
|
+
tools: allTools,
|
|
5638
5910
|
stopWhen: isStepCount2(128),
|
|
5639
5911
|
abortSignal: abortController.signal,
|
|
5640
5912
|
providerOptions: {
|
|
@@ -5690,30 +5962,38 @@ var OpenaiCompatibleAgent = class {
|
|
|
5690
5962
|
});
|
|
5691
5963
|
}
|
|
5692
5964
|
}
|
|
5693
|
-
const
|
|
5694
|
-
|
|
5695
|
-
|
|
5696
|
-
|
|
5965
|
+
const [turnUsage, finalStep, steps, responseMessages] = await Promise.all([
|
|
5966
|
+
result.usage,
|
|
5967
|
+
result.finalStep,
|
|
5968
|
+
result.steps,
|
|
5969
|
+
result.responseMessages
|
|
5970
|
+
]);
|
|
5697
5971
|
const finalStepUsage = finalStep.usage;
|
|
5698
|
-
|
|
5972
|
+
const contextUsedTokens = (finalStepUsage.inputTokens ?? 0) + (finalStepUsage.outputTokens ?? 0);
|
|
5973
|
+
const historyBeforeTurn = session.history.slice();
|
|
5974
|
+
session.history.push(userMessage, ...responseMessages);
|
|
5975
|
+
await this.appendSessionHistory(session.id, userMessage, ...responseMessages);
|
|
5976
|
+
session.contextUsedTokens = contextUsedTokens;
|
|
5977
|
+
const tokenBreakdown = await this.buildTokenBreakdown({
|
|
5978
|
+
systemPrompt,
|
|
5979
|
+
tools: allTools,
|
|
5980
|
+
history: historyBeforeTurn,
|
|
5981
|
+
userMessage,
|
|
5982
|
+
steps
|
|
5983
|
+
});
|
|
5699
5984
|
const usage = {
|
|
5700
5985
|
totalTokens: turnUsage.totalTokens ?? 0,
|
|
5701
5986
|
inputTokens: turnUsage.inputTokens ?? 0,
|
|
5702
5987
|
outputTokens: turnUsage.outputTokens ?? 0,
|
|
5703
5988
|
thoughtTokens: turnUsage.outputTokenDetails?.reasoningTokens,
|
|
5704
5989
|
cachedReadTokens: turnUsage.inputTokenDetails?.cacheReadTokens,
|
|
5705
|
-
cachedWriteTokens: turnUsage.inputTokenDetails?.cacheWriteTokens
|
|
5990
|
+
cachedWriteTokens: turnUsage.inputTokenDetails?.cacheWriteTokens,
|
|
5991
|
+
_meta: { fello: { tokenBreakdown } }
|
|
5706
5992
|
};
|
|
5707
|
-
|
|
5708
|
-
|
|
5709
|
-
|
|
5710
|
-
|
|
5711
|
-
sessionUpdate: "usage_update",
|
|
5712
|
-
used: session.contextUsedTokens,
|
|
5713
|
-
size: this.contextWindowTokens
|
|
5714
|
-
}
|
|
5715
|
-
});
|
|
5716
|
-
}
|
|
5993
|
+
await this.pushUsageUpdate(params.sessionId, {
|
|
5994
|
+
used: session.contextUsedTokens,
|
|
5995
|
+
size: this.contextWindowTokens
|
|
5996
|
+
});
|
|
5717
5997
|
return {
|
|
5718
5998
|
stopReason: "end_turn",
|
|
5719
5999
|
usage
|
|
@@ -9246,6 +9526,11 @@ function createSessionModule(ctx, deps) {
|
|
|
9246
9526
|
if (!session) throw new Error("Session does not exist");
|
|
9247
9527
|
return { messages: notif.mergeNotifications(storage.readSessionMessages(sessionId)) };
|
|
9248
9528
|
}
|
|
9529
|
+
async function getSessionTokenUsage({ sessionId }) {
|
|
9530
|
+
const session = storage.getSession(sessionId);
|
|
9531
|
+
if (!session) throw new Error("Session does not exist");
|
|
9532
|
+
return { records: storage.readTokenUsage(sessionId) };
|
|
9533
|
+
}
|
|
9249
9534
|
async function sendPrompt({
|
|
9250
9535
|
sessionId,
|
|
9251
9536
|
contents
|
|
@@ -9356,6 +9641,15 @@ function createSessionModule(ctx, deps) {
|
|
|
9356
9641
|
isStreaming: false,
|
|
9357
9642
|
...promptResponse?.usage ? { lastTurnUsage: promptResponse.usage } : {}
|
|
9358
9643
|
});
|
|
9644
|
+
if (promptResponse?.usage?._meta) {
|
|
9645
|
+
try {
|
|
9646
|
+
storage.appendTokenUsage(sessionId, {
|
|
9647
|
+
timestamp: Date.now(),
|
|
9648
|
+
usage: promptResponse.usage
|
|
9649
|
+
});
|
|
9650
|
+
} catch {
|
|
9651
|
+
}
|
|
9652
|
+
}
|
|
9359
9653
|
const updated2 = storage.getSession(sessionId);
|
|
9360
9654
|
if (updated2) sendEvent("session-changed", { session: updated2 });
|
|
9361
9655
|
const bridge = ilinkState.getBridge();
|
|
@@ -9629,6 +9923,7 @@ function createSessionModule(ctx, deps) {
|
|
|
9629
9923
|
newSession,
|
|
9630
9924
|
loadSession,
|
|
9631
9925
|
getSessionHistory,
|
|
9926
|
+
getSessionTokenUsage,
|
|
9632
9927
|
sendPrompt,
|
|
9633
9928
|
cancelPrompt,
|
|
9634
9929
|
updateSession: updateSession2,
|
|
@@ -11666,6 +11961,9 @@ function initBackend(emitter) {
|
|
|
11666
11961
|
async getSessionHistory(params) {
|
|
11667
11962
|
return session.getSessionHistory(params);
|
|
11668
11963
|
},
|
|
11964
|
+
async getSessionTokenUsage(params) {
|
|
11965
|
+
return session.getSessionTokenUsage(params);
|
|
11966
|
+
},
|
|
11669
11967
|
async sendPrompt(params) {
|
|
11670
11968
|
return session.sendPrompt(params);
|
|
11671
11969
|
},
|
|
@@ -11912,7 +12210,7 @@ function initBackend(emitter) {
|
|
|
11912
12210
|
}
|
|
11913
12211
|
|
|
11914
12212
|
// package.json
|
|
11915
|
-
var version = "0.1.
|
|
12213
|
+
var version = "0.1.52";
|
|
11916
12214
|
|
|
11917
12215
|
// src/server/main.ts
|
|
11918
12216
|
var port;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zythum02/fello-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.52",
|
|
4
4
|
"description": "Fello Server — standalone headless AI agent server",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"es-toolkit": "^1.50.0",
|
|
27
27
|
"fuse.js": "^7.5.0",
|
|
28
28
|
"globby": "^16.2.3",
|
|
29
|
+
"gpt-tokenizer": "^4.0.0",
|
|
29
30
|
"i18next": "^26.3.6",
|
|
30
31
|
"launch-editor": "^2.14.1",
|
|
31
32
|
"mime-types": "^3.0.2",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|