@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.
Files changed (374) hide show
  1. package/out/renderer/assets/{_baseUniq-DdWCC-Go.js → _baseUniq-C0L-SxO8.js} +1 -1
  2. package/out/renderer/assets/_baseUniq-C0L-SxO8.js.br +0 -0
  3. package/out/renderer/assets/_baseUniq-C0L-SxO8.js.gz +0 -0
  4. package/out/renderer/assets/{arc-B_en4gJt.js → arc-bnlMIyYF.js} +1 -1
  5. package/out/renderer/assets/arc-bnlMIyYF.js.br +0 -0
  6. package/out/renderer/assets/arc-bnlMIyYF.js.gz +0 -0
  7. package/out/renderer/assets/{architectureDiagram-Q4EWVU46-W-l3dTvZ.js → architectureDiagram-Q4EWVU46-Cr0249Lu.js} +6 -6
  8. package/out/renderer/assets/architectureDiagram-Q4EWVU46-Cr0249Lu.js.br +0 -0
  9. package/out/renderer/assets/architectureDiagram-Q4EWVU46-Cr0249Lu.js.gz +0 -0
  10. package/out/renderer/assets/{arrow-left-BwbOF_G_.js → arrow-left-D589pHHA.js} +1 -1
  11. package/out/renderer/assets/{automation--izxbhlj.js → automation-CvjrkE9z.js} +8 -8
  12. package/out/renderer/assets/automation-CvjrkE9z.js.br +0 -0
  13. package/out/renderer/assets/automation-CvjrkE9z.js.gz +0 -0
  14. package/out/renderer/assets/{blockDiagram-DXYQGD6D-BdxXOr8Y.js → blockDiagram-DXYQGD6D-Cw6vh5dx.js} +7 -7
  15. package/out/renderer/assets/blockDiagram-DXYQGD6D-Cw6vh5dx.js.br +0 -0
  16. package/out/renderer/assets/blockDiagram-DXYQGD6D-Cw6vh5dx.js.gz +0 -0
  17. package/out/renderer/assets/{c4Diagram-AHTNJAMY-C_8XgPtT.js → c4Diagram-AHTNJAMY-BUrvcyv2.js} +3 -3
  18. package/out/renderer/assets/c4Diagram-AHTNJAMY-BUrvcyv2.js.br +0 -0
  19. package/out/renderer/assets/c4Diagram-AHTNJAMY-BUrvcyv2.js.gz +0 -0
  20. package/out/renderer/assets/{channel-BsSLbHzl.js → channel-DQr36qW5.js} +1 -1
  21. package/out/renderer/assets/{chunk-4BX2VUAB-CADGLBio.js → chunk-4BX2VUAB-DOsXCDD7.js} +1 -1
  22. package/out/renderer/assets/{chunk-4TB4RGXK-C7h57GNs.js → chunk-4TB4RGXK-D_fBnf0p.js} +5 -5
  23. package/out/renderer/assets/chunk-4TB4RGXK-D_fBnf0p.js.br +0 -0
  24. package/out/renderer/assets/chunk-4TB4RGXK-D_fBnf0p.js.gz +0 -0
  25. package/out/renderer/assets/{chunk-55IACEB6-Cw-dv2b3.js → chunk-55IACEB6-3ETNuedT.js} +1 -1
  26. package/out/renderer/assets/{chunk-EDXVE4YY-BPjYyS5o.js → chunk-EDXVE4YY-BJLqHaER.js} +1 -1
  27. package/out/renderer/assets/chunk-EDXVE4YY-BJLqHaER.js.br +0 -0
  28. package/out/renderer/assets/chunk-EDXVE4YY-BJLqHaER.js.gz +0 -0
  29. package/out/renderer/assets/{chunk-FMBD7UC4-DhJ5Z89u.js → chunk-FMBD7UC4-DP-WGTNG.js} +1 -1
  30. package/out/renderer/assets/{chunk-OYMX7WX6-D5Q5ZCl0.js → chunk-OYMX7WX6-CrS7loi7.js} +3 -3
  31. package/out/renderer/assets/chunk-OYMX7WX6-CrS7loi7.js.br +0 -0
  32. package/out/renderer/assets/chunk-OYMX7WX6-CrS7loi7.js.gz +0 -0
  33. package/out/renderer/assets/{chunk-QZHKN3VN-SsM-5KS-.js → chunk-QZHKN3VN-C53USs5W.js} +1 -1
  34. package/out/renderer/assets/{chunk-YZCP3GAM-AbfctYy8.js → chunk-YZCP3GAM-CMgdytZR.js} +1 -1
  35. package/out/renderer/assets/chunk-YZCP3GAM-CMgdytZR.js.br +0 -0
  36. package/out/renderer/assets/chunk-YZCP3GAM-CMgdytZR.js.gz +0 -0
  37. package/out/renderer/assets/{circle-x-CxFDvVH_.js → circle-x-OvXymUrf.js} +1 -1
  38. package/out/renderer/assets/{classDiagram-v2-HSJHXN6E-7ZGV_42k.js → classDiagram-6PBFFD2Q-DIYtEiO5.js} +7 -7
  39. package/out/renderer/assets/{classDiagram-6PBFFD2Q-7ZGV_42k.js → classDiagram-v2-HSJHXN6E-DIYtEiO5.js} +7 -7
  40. package/out/renderer/assets/{clipboard-D6ZpW5GH.js → clipboard-xI9lExaB.js} +1 -1
  41. package/out/renderer/assets/{clone-D2_BL2Tz.js → clone-D45P7Iqc.js} +1 -1
  42. package/out/renderer/assets/{code-editor-cp9haQUT.js → code-editor-SuOcN-5B.js} +2 -2
  43. package/out/renderer/assets/code-editor-SuOcN-5B.js.br +0 -0
  44. package/out/renderer/assets/code-editor-SuOcN-5B.js.gz +0 -0
  45. package/out/renderer/assets/{collapsible-BHMUDZxc.js → collapsible-Bd85ZCyx.js} +1 -1
  46. package/out/renderer/assets/collapsible-Bd85ZCyx.js.br +0 -0
  47. package/out/renderer/assets/collapsible-Bd85ZCyx.js.gz +0 -0
  48. package/out/renderer/assets/{context-menu-K6z5uSmg.js → context-menu-BO9-4FYd.js} +1 -1
  49. package/out/renderer/assets/context-menu-BO9-4FYd.js.br +0 -0
  50. package/out/renderer/assets/context-menu-BO9-4FYd.js.gz +0 -0
  51. package/out/renderer/assets/{cose-bilkent-S5V4N54A-CVcE9aWV.js → cose-bilkent-S5V4N54A-Dq8VllNT.js} +2 -2
  52. package/out/renderer/assets/cose-bilkent-S5V4N54A-Dq8VllNT.js.br +0 -0
  53. package/out/renderer/assets/cose-bilkent-S5V4N54A-Dq8VllNT.js.gz +0 -0
  54. package/out/renderer/assets/{dagre-KV5264BT-zrX-TFsi.js → dagre-KV5264BT-Dec8q4UT.js} +7 -7
  55. package/out/renderer/assets/dagre-KV5264BT-Dec8q4UT.js.br +0 -0
  56. package/out/renderer/assets/dagre-KV5264BT-Dec8q4UT.js.gz +0 -0
  57. package/out/renderer/assets/{diagram-5BDNPKRD-Ct9NrJP9.js → diagram-5BDNPKRD-CzA2u_EN.js} +7 -7
  58. package/out/renderer/assets/diagram-5BDNPKRD-CzA2u_EN.js.br +0 -0
  59. package/out/renderer/assets/diagram-5BDNPKRD-CzA2u_EN.js.gz +0 -0
  60. package/out/renderer/assets/{diagram-G4DWMVQ6-tTGWcCd_.js → diagram-G4DWMVQ6-C8h3R7jD.js} +7 -7
  61. package/out/renderer/assets/diagram-G4DWMVQ6-C8h3R7jD.js.br +0 -0
  62. package/out/renderer/assets/diagram-G4DWMVQ6-C8h3R7jD.js.gz +0 -0
  63. package/out/renderer/assets/{diagram-MMDJMWI5-CpmcnN2B.js → diagram-MMDJMWI5-9tiXSF90.js} +6 -6
  64. package/out/renderer/assets/diagram-MMDJMWI5-9tiXSF90.js.br +0 -0
  65. package/out/renderer/assets/diagram-MMDJMWI5-9tiXSF90.js.gz +0 -0
  66. package/out/renderer/assets/{diagram-TYMM5635-DKTR2xS9.js → diagram-TYMM5635-BrarGJNf.js} +6 -6
  67. package/out/renderer/assets/diagram-TYMM5635-BrarGJNf.js.br +0 -0
  68. package/out/renderer/assets/diagram-TYMM5635-BrarGJNf.js.gz +0 -0
  69. package/out/renderer/assets/{ellipsis-8708fodN.js → ellipsis-BafkhboM.js} +1 -1
  70. package/out/renderer/assets/{erDiagram-SMLLAGMA-BW13EXAs.js → erDiagram-SMLLAGMA-1Q9StK7L.js} +5 -5
  71. package/out/renderer/assets/erDiagram-SMLLAGMA-1Q9StK7L.js.br +0 -0
  72. package/out/renderer/assets/erDiagram-SMLLAGMA-1Q9StK7L.js.gz +0 -0
  73. package/out/renderer/assets/{field-Be86bgEh.js → field-ohYLdnJa.js} +1 -1
  74. package/out/renderer/assets/field-ohYLdnJa.js.br +0 -0
  75. package/out/renderer/assets/field-ohYLdnJa.js.gz +0 -0
  76. package/out/renderer/assets/{file-text-CMw1QH-C.js → file-text-CshHuHgW.js} +1 -1
  77. package/out/renderer/assets/{flowDiagram-DWJPFMVM-C3oZAKxX.js → flowDiagram-DWJPFMVM-CpcXVOmj.js} +7 -7
  78. package/out/renderer/assets/flowDiagram-DWJPFMVM-CpcXVOmj.js.br +0 -0
  79. package/out/renderer/assets/flowDiagram-DWJPFMVM-CpcXVOmj.js.gz +0 -0
  80. package/out/renderer/assets/{ganttDiagram-T4ZO3ILL-BARJrpDB.js → ganttDiagram-T4ZO3ILL-C7Da4JBG.js} +3 -3
  81. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-C7Da4JBG.js.br +0 -0
  82. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-C7Da4JBG.js.gz +0 -0
  83. package/out/renderer/assets/{gitGraphDiagram-UUTBAWPF-D0gl3Row.js → gitGraphDiagram-UUTBAWPF-COBL52q_.js} +7 -7
  84. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-COBL52q_.js.br +0 -0
  85. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-COBL52q_.js.gz +0 -0
  86. package/out/renderer/assets/{graph-DB7hnlLW.js → graph-vKaAs6sc.js} +2 -2
  87. package/out/renderer/assets/graph-vKaAs6sc.js.br +0 -0
  88. package/out/renderer/assets/graph-vKaAs6sc.js.gz +0 -0
  89. package/out/renderer/assets/{highlighted-body-OFNGDK62-J87DvYBX.js → highlighted-body-OFNGDK62-BGNnB1Ll.js} +2 -2
  90. package/out/renderer/assets/{index-Co8mzhyV.js → index-BJPggXxf.js} +66 -55
  91. package/out/renderer/assets/index-BJPggXxf.js.br +0 -0
  92. package/out/renderer/assets/index-BJPggXxf.js.gz +0 -0
  93. package/out/renderer/assets/index-DGML4zYf.css +382 -0
  94. package/out/renderer/assets/index-DGML4zYf.css.br +0 -0
  95. package/out/renderer/assets/index-DGML4zYf.css.gz +0 -0
  96. package/out/renderer/assets/{infoDiagram-42DDH7IO-BrfLG_LC.js → infoDiagram-42DDH7IO-z37e1cYq.js} +5 -5
  97. package/out/renderer/assets/infoDiagram-42DDH7IO-z37e1cYq.js.br +0 -0
  98. package/out/renderer/assets/infoDiagram-42DDH7IO-z37e1cYq.js.gz +0 -0
  99. package/out/renderer/assets/{ishikawaDiagram-UXIWVN3A-CO0cyvTq.js → ishikawaDiagram-UXIWVN3A-D0QTo3NZ.js} +2 -2
  100. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-D0QTo3NZ.js.br +0 -0
  101. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-D0QTo3NZ.js.gz +0 -0
  102. package/out/renderer/assets/{item-CvcokSWl.js → item-Cv-tnX8b.js} +1 -1
  103. package/out/renderer/assets/item-Cv-tnX8b.js.br +0 -0
  104. package/out/renderer/assets/item-Cv-tnX8b.js.gz +0 -0
  105. package/out/renderer/assets/{journeyDiagram-VCZTEJTY-D3F2Iu5P.js → journeyDiagram-VCZTEJTY-CQV0gdjM.js} +5 -5
  106. package/out/renderer/assets/journeyDiagram-VCZTEJTY-CQV0gdjM.js.br +0 -0
  107. package/out/renderer/assets/journeyDiagram-VCZTEJTY-CQV0gdjM.js.gz +0 -0
  108. package/out/renderer/assets/{kanban-definition-6JOO6SKY-CC_drlaB.js → kanban-definition-6JOO6SKY-DouRT6vc.js} +3 -3
  109. package/out/renderer/assets/kanban-definition-6JOO6SKY-DouRT6vc.js.br +0 -0
  110. package/out/renderer/assets/kanban-definition-6JOO6SKY-DouRT6vc.js.gz +0 -0
  111. package/out/renderer/assets/{layout-B_3n1To1.js → layout-BhbUjpvY.js} +4 -4
  112. package/out/renderer/assets/layout-BhbUjpvY.js.br +0 -0
  113. package/out/renderer/assets/layout-BhbUjpvY.js.gz +0 -0
  114. package/out/renderer/assets/{linear-AxwRZ_jw.js → linear-D1WO10JK.js} +1 -1
  115. package/out/renderer/assets/linear-D1WO10JK.js.br +0 -0
  116. package/out/renderer/assets/linear-D1WO10JK.js.gz +0 -0
  117. package/out/renderer/assets/{link-2-4A51Gs15.js → link-2-C5KPDK2L.js} +1 -1
  118. package/out/renderer/assets/{mermaid-GHXKKRXX-DFOJYe_t.js → mermaid-GHXKKRXX-KwA2c0l5.js} +36 -36
  119. package/out/renderer/assets/mermaid-GHXKKRXX-KwA2c0l5.js.br +0 -0
  120. package/out/renderer/assets/mermaid-GHXKKRXX-KwA2c0l5.js.gz +0 -0
  121. package/out/renderer/assets/{min-Dip7FmOo.js → min-BP2C7bzG.js} +2 -2
  122. package/out/renderer/assets/min-BP2C7bzG.js.br +0 -0
  123. package/out/renderer/assets/min-BP2C7bzG.js.gz +0 -0
  124. package/out/renderer/assets/{mindmap-definition-QFDTVHPH-D9aiLrpe.js → mindmap-definition-QFDTVHPH-CxLYrjVp.js} +4 -4
  125. package/out/renderer/assets/mindmap-definition-QFDTVHPH-CxLYrjVp.js.br +0 -0
  126. package/out/renderer/assets/mindmap-definition-QFDTVHPH-CxLYrjVp.js.gz +0 -0
  127. package/out/renderer/assets/{open-guide-KaWHLGYU.js → open-guide-UhaRhiI6.js} +1 -1
  128. package/out/renderer/assets/{package-search-CNALSYvi.js → package-search-DpyeQ5Lx.js} +1 -1
  129. package/out/renderer/assets/{pieDiagram-DEJITSTG-BX_34lAP.js → pieDiagram-DEJITSTG-D1LBRn_k.js} +7 -7
  130. package/out/renderer/assets/pieDiagram-DEJITSTG-D1LBRn_k.js.br +0 -0
  131. package/out/renderer/assets/pieDiagram-DEJITSTG-D1LBRn_k.js.gz +0 -0
  132. package/out/renderer/assets/{plus-DOVKq0d7.js → plus-CsV_3veW.js} +1 -1
  133. package/out/renderer/assets/{quadrantDiagram-34T5L4WZ-G09qfNO8.js → quadrantDiagram-34T5L4WZ-89cdKeKP.js} +3 -3
  134. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-89cdKeKP.js.br +0 -0
  135. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-89cdKeKP.js.gz +0 -0
  136. package/out/renderer/assets/{refresh-cw-DGB7KSZ3.js → refresh-cw-CYW3HR-E.js} +1 -1
  137. package/out/renderer/assets/{requirementDiagram-MS252O5E-sJPY8r9J.js → requirementDiagram-MS252O5E-BPmX5cbr.js} +4 -4
  138. package/out/renderer/assets/requirementDiagram-MS252O5E-BPmX5cbr.js.br +0 -0
  139. package/out/renderer/assets/requirementDiagram-MS252O5E-BPmX5cbr.js.gz +0 -0
  140. package/out/renderer/assets/{resizable-C5jomC3Y.js → resizable-C_plViAK.js} +1 -1
  141. package/out/renderer/assets/resizable-C_plViAK.js.br +0 -0
  142. package/out/renderer/assets/resizable-C_plViAK.js.gz +0 -0
  143. package/out/renderer/assets/{sankeyDiagram-XADWPNL6-DHIS2ISZ.js → sankeyDiagram-XADWPNL6-Cy6CP9QU.js} +2 -2
  144. package/out/renderer/assets/sankeyDiagram-XADWPNL6-Cy6CP9QU.js.br +0 -0
  145. package/out/renderer/assets/sankeyDiagram-XADWPNL6-Cy6CP9QU.js.gz +0 -0
  146. package/out/renderer/assets/{schedule-BoqPUAOI.js → schedule-BRGzJU8Q.js} +10 -10
  147. package/out/renderer/assets/schedule-BRGzJU8Q.js.br +0 -0
  148. package/out/renderer/assets/schedule-BRGzJU8Q.js.gz +0 -0
  149. package/out/renderer/assets/{search-DdqhQVGJ.js → search-BHyqy--Q.js} +1 -1
  150. package/out/renderer/assets/{sequenceDiagram-FGHM5R23-Boc12Em2.js → sequenceDiagram-FGHM5R23-B3c7Za1w.js} +4 -4
  151. package/out/renderer/assets/sequenceDiagram-FGHM5R23-B3c7Za1w.js.br +0 -0
  152. package/out/renderer/assets/sequenceDiagram-FGHM5R23-B3c7Za1w.js.gz +0 -0
  153. package/out/renderer/assets/{session-DgU3TDDV.js → session-DAyi31xW.js} +855 -58
  154. package/out/renderer/assets/session-DAyi31xW.js.br +0 -0
  155. package/out/renderer/assets/session-DAyi31xW.js.gz +0 -0
  156. package/out/renderer/assets/{setting-dialog-4pmkQ7WP.js → setting-dialog-B9QpnCSy.js} +3 -3
  157. package/out/renderer/assets/setting-dialog-B9QpnCSy.js.br +0 -0
  158. package/out/renderer/assets/setting-dialog-B9QpnCSy.js.gz +0 -0
  159. package/out/renderer/assets/{settings-2-CI8inOtS.js → settings-2-DTnwbGMG.js} +1 -1
  160. package/out/renderer/assets/{settings-agents-C4u0s-iR.js → settings-agents-BrAPSjkm.js} +11 -11
  161. package/out/renderer/assets/settings-agents-BrAPSjkm.js.br +0 -0
  162. package/out/renderer/assets/settings-agents-BrAPSjkm.js.gz +0 -0
  163. package/out/renderer/assets/{settings-general-BkLSJoHB.js → settings-general-Ck2OiZjy.js} +2 -2
  164. package/out/renderer/assets/settings-general-Ck2OiZjy.js.br +0 -0
  165. package/out/renderer/assets/settings-general-Ck2OiZjy.js.gz +0 -0
  166. package/out/renderer/assets/{settings-ilink-6ZrgPpeO.js → settings-ilink-D0Br74W_.js} +3 -3
  167. package/out/renderer/assets/settings-ilink-D0Br74W_.js.br +0 -0
  168. package/out/renderer/assets/settings-ilink-D0Br74W_.js.gz +0 -0
  169. package/out/renderer/assets/{settings-image-generation-B6YIO6o_.js → settings-image-generation-BdyKoUUZ.js} +7 -7
  170. package/out/renderer/assets/settings-image-generation-BdyKoUUZ.js.br +0 -0
  171. package/out/renderer/assets/settings-image-generation-BdyKoUUZ.js.gz +0 -0
  172. package/out/renderer/assets/{settings-layout-Cf7GMXFZ.js → settings-layout-B7d1oQnz.js} +3 -3
  173. package/out/renderer/assets/settings-layout-B7d1oQnz.js.br +0 -0
  174. package/out/renderer/assets/settings-layout-B7d1oQnz.js.gz +0 -0
  175. package/out/renderer/assets/{settings-mcp-CJvL5Siz.js → settings-mcp-DtnVGpCh.js} +8 -8
  176. package/out/renderer/assets/settings-mcp-DtnVGpCh.js.br +0 -0
  177. package/out/renderer/assets/settings-mcp-DtnVGpCh.js.gz +0 -0
  178. package/out/renderer/assets/{settings-memory-CvkppfHy.js → settings-memory-Bff_D3Id.js} +3 -3
  179. package/out/renderer/assets/settings-memory-Bff_D3Id.js.br +0 -0
  180. package/out/renderer/assets/settings-memory-Bff_D3Id.js.gz +0 -0
  181. package/out/renderer/assets/{settings-snippets-CO_jL3O3.js → settings-snippets-CuwNZ684.js} +7 -7
  182. package/out/renderer/assets/settings-snippets-CuwNZ684.js.br +0 -0
  183. package/out/renderer/assets/settings-snippets-CuwNZ684.js.gz +0 -0
  184. package/out/renderer/assets/{settings-webui-5n5mI55N.js → settings-webui-CcjZQw6G.js} +2 -2
  185. package/out/renderer/assets/settings-webui-CcjZQw6G.js.br +0 -0
  186. package/out/renderer/assets/settings-webui-CcjZQw6G.js.gz +0 -0
  187. package/out/renderer/assets/{skills-installed-BqjN4mEl.js → skills-installed-BR3EmTKD.js} +4 -4
  188. package/out/renderer/assets/skills-installed-BR3EmTKD.js.br +0 -0
  189. package/out/renderer/assets/skills-installed-BR3EmTKD.js.gz +0 -0
  190. package/out/renderer/assets/{skills-layout-C8b-pe9X.js → skills-layout-Cgy95TdD.js} +2 -2
  191. package/out/renderer/assets/skills-layout-Cgy95TdD.js.br +0 -0
  192. package/out/renderer/assets/skills-layout-Cgy95TdD.js.gz +0 -0
  193. package/out/renderer/assets/{skills-skills-sh-Bh8KQ3PF.js → skills-skills-sh-7eO0Llg2.js} +4 -4
  194. package/out/renderer/assets/skills-skills-sh-7eO0Llg2.js.br +0 -0
  195. package/out/renderer/assets/skills-skills-sh-7eO0Llg2.js.gz +0 -0
  196. package/out/renderer/assets/{sortable.esm-DARmP-Qe.js → sortable.esm-BTWJnVbf.js} +1 -1
  197. package/out/renderer/assets/sortable.esm-BTWJnVbf.js.br +0 -0
  198. package/out/renderer/assets/sortable.esm-BTWJnVbf.js.gz +0 -0
  199. package/out/renderer/assets/{standard-schema-CtFhVVG9.js → standard-schema-Dk273X__.js} +1 -1
  200. package/out/renderer/assets/standard-schema-Dk273X__.js.br +0 -0
  201. package/out/renderer/assets/standard-schema-Dk273X__.js.gz +0 -0
  202. package/out/renderer/assets/{stateDiagram-FHFEXIEX-Da2gV_KD.js → stateDiagram-FHFEXIEX-C-7WuE0a.js} +9 -9
  203. package/out/renderer/assets/stateDiagram-FHFEXIEX-C-7WuE0a.js.br +0 -0
  204. package/out/renderer/assets/stateDiagram-FHFEXIEX-C-7WuE0a.js.gz +0 -0
  205. package/out/renderer/assets/{stateDiagram-v2-QKLJ7IA2-D44mYiaY.js → stateDiagram-v2-QKLJ7IA2-IZRTgRo8.js} +5 -5
  206. package/out/renderer/assets/{task-Ca7ur8ku.js → task-Bd1x6VfK.js} +12 -12
  207. package/out/renderer/assets/task-Bd1x6VfK.js.br +0 -0
  208. package/out/renderer/assets/task-Bd1x6VfK.js.gz +0 -0
  209. package/out/renderer/assets/{textarea-BCC4Oh3S.js → textarea-CcqU8Ki7.js} +1 -1
  210. package/out/renderer/assets/{timeline-definition-GMOUNBTQ-egFv4rLM.js → timeline-definition-GMOUNBTQ-DVUMAatS.js} +3 -3
  211. package/out/renderer/assets/timeline-definition-GMOUNBTQ-DVUMAatS.js.br +0 -0
  212. package/out/renderer/assets/timeline-definition-GMOUNBTQ-DVUMAatS.js.gz +0 -0
  213. package/out/renderer/assets/{vennDiagram-DHZGUBPP-CnOs99wX.js → vennDiagram-DHZGUBPP-BtKdpgmE.js} +2 -2
  214. package/out/renderer/assets/vennDiagram-DHZGUBPP-BtKdpgmE.js.br +0 -0
  215. package/out/renderer/assets/vennDiagram-DHZGUBPP-BtKdpgmE.js.gz +0 -0
  216. package/out/renderer/assets/{wardley-RL74JXVD-Bb1llXhX.js → wardley-RL74JXVD-DRlpukah.js} +4 -4
  217. package/out/renderer/assets/wardley-RL74JXVD-DRlpukah.js.br +0 -0
  218. package/out/renderer/assets/wardley-RL74JXVD-DRlpukah.js.gz +0 -0
  219. package/out/renderer/assets/{wardleyDiagram-NUSXRM2D-BupfUxsI.js → wardleyDiagram-NUSXRM2D-c_iDOO-3.js} +6 -6
  220. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-c_iDOO-3.js.br +0 -0
  221. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-c_iDOO-3.js.gz +0 -0
  222. package/out/renderer/assets/{wrench-Dj1S5dhM.js → wrench-C-pOIUrz.js} +1 -1
  223. package/out/renderer/assets/wrench-C-pOIUrz.js.br +0 -0
  224. package/out/renderer/assets/wrench-C-pOIUrz.js.gz +0 -0
  225. package/out/renderer/assets/{xlsx-view-DIarHecR.js → xlsx-view-Ca3bToM7.js} +10 -10
  226. package/out/renderer/assets/xlsx-view-Ca3bToM7.js.br +0 -0
  227. package/out/renderer/assets/xlsx-view-Ca3bToM7.js.gz +0 -0
  228. package/out/renderer/assets/{xychartDiagram-5P7HB3ND-CtPNxvT_.js → xychartDiagram-5P7HB3ND-D65drBbj.js} +3 -3
  229. package/out/renderer/assets/xychartDiagram-5P7HB3ND-D65drBbj.js.br +0 -0
  230. package/out/renderer/assets/xychartDiagram-5P7HB3ND-D65drBbj.js.gz +0 -0
  231. package/out/renderer/index.html +2 -2
  232. package/out/renderer/index.html.br +0 -0
  233. package/out/renderer/index.html.gz +0 -0
  234. package/out/server/main.js +356 -58
  235. package/package.json +2 -1
  236. package/out/renderer/assets/_baseUniq-DdWCC-Go.js.br +0 -0
  237. package/out/renderer/assets/_baseUniq-DdWCC-Go.js.gz +0 -0
  238. package/out/renderer/assets/arc-B_en4gJt.js.br +0 -0
  239. package/out/renderer/assets/arc-B_en4gJt.js.gz +0 -0
  240. package/out/renderer/assets/architectureDiagram-Q4EWVU46-W-l3dTvZ.js.br +0 -0
  241. package/out/renderer/assets/architectureDiagram-Q4EWVU46-W-l3dTvZ.js.gz +0 -0
  242. package/out/renderer/assets/automation--izxbhlj.js.br +0 -0
  243. package/out/renderer/assets/automation--izxbhlj.js.gz +0 -0
  244. package/out/renderer/assets/blockDiagram-DXYQGD6D-BdxXOr8Y.js.br +0 -0
  245. package/out/renderer/assets/blockDiagram-DXYQGD6D-BdxXOr8Y.js.gz +0 -0
  246. package/out/renderer/assets/c4Diagram-AHTNJAMY-C_8XgPtT.js.br +0 -0
  247. package/out/renderer/assets/c4Diagram-AHTNJAMY-C_8XgPtT.js.gz +0 -0
  248. package/out/renderer/assets/chunk-4TB4RGXK-C7h57GNs.js.br +0 -0
  249. package/out/renderer/assets/chunk-4TB4RGXK-C7h57GNs.js.gz +0 -0
  250. package/out/renderer/assets/chunk-EDXVE4YY-BPjYyS5o.js.br +0 -0
  251. package/out/renderer/assets/chunk-EDXVE4YY-BPjYyS5o.js.gz +0 -0
  252. package/out/renderer/assets/chunk-OYMX7WX6-D5Q5ZCl0.js.br +0 -0
  253. package/out/renderer/assets/chunk-OYMX7WX6-D5Q5ZCl0.js.gz +0 -0
  254. package/out/renderer/assets/chunk-YZCP3GAM-AbfctYy8.js.br +0 -0
  255. package/out/renderer/assets/chunk-YZCP3GAM-AbfctYy8.js.gz +0 -0
  256. package/out/renderer/assets/code-editor-cp9haQUT.js.br +0 -0
  257. package/out/renderer/assets/code-editor-cp9haQUT.js.gz +0 -0
  258. package/out/renderer/assets/collapsible-BHMUDZxc.js.br +0 -0
  259. package/out/renderer/assets/collapsible-BHMUDZxc.js.gz +0 -0
  260. package/out/renderer/assets/context-menu-K6z5uSmg.js.br +0 -0
  261. package/out/renderer/assets/context-menu-K6z5uSmg.js.gz +0 -0
  262. package/out/renderer/assets/cose-bilkent-S5V4N54A-CVcE9aWV.js.br +0 -0
  263. package/out/renderer/assets/cose-bilkent-S5V4N54A-CVcE9aWV.js.gz +0 -0
  264. package/out/renderer/assets/dagre-KV5264BT-zrX-TFsi.js.br +0 -0
  265. package/out/renderer/assets/dagre-KV5264BT-zrX-TFsi.js.gz +0 -0
  266. package/out/renderer/assets/diagram-5BDNPKRD-Ct9NrJP9.js.br +0 -0
  267. package/out/renderer/assets/diagram-5BDNPKRD-Ct9NrJP9.js.gz +0 -0
  268. package/out/renderer/assets/diagram-G4DWMVQ6-tTGWcCd_.js.br +0 -0
  269. package/out/renderer/assets/diagram-G4DWMVQ6-tTGWcCd_.js.gz +0 -0
  270. package/out/renderer/assets/diagram-MMDJMWI5-CpmcnN2B.js.br +0 -0
  271. package/out/renderer/assets/diagram-MMDJMWI5-CpmcnN2B.js.gz +0 -0
  272. package/out/renderer/assets/diagram-TYMM5635-DKTR2xS9.js.br +0 -0
  273. package/out/renderer/assets/diagram-TYMM5635-DKTR2xS9.js.gz +0 -0
  274. package/out/renderer/assets/erDiagram-SMLLAGMA-BW13EXAs.js.br +0 -0
  275. package/out/renderer/assets/erDiagram-SMLLAGMA-BW13EXAs.js.gz +0 -0
  276. package/out/renderer/assets/field-Be86bgEh.js.br +0 -0
  277. package/out/renderer/assets/field-Be86bgEh.js.gz +0 -0
  278. package/out/renderer/assets/flowDiagram-DWJPFMVM-C3oZAKxX.js.br +0 -0
  279. package/out/renderer/assets/flowDiagram-DWJPFMVM-C3oZAKxX.js.gz +0 -0
  280. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-BARJrpDB.js.br +0 -0
  281. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-BARJrpDB.js.gz +0 -0
  282. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-D0gl3Row.js.br +0 -0
  283. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-D0gl3Row.js.gz +0 -0
  284. package/out/renderer/assets/graph-DB7hnlLW.js.br +0 -0
  285. package/out/renderer/assets/graph-DB7hnlLW.js.gz +0 -0
  286. package/out/renderer/assets/index-Co8mzhyV.js.br +0 -0
  287. package/out/renderer/assets/index-Co8mzhyV.js.gz +0 -0
  288. package/out/renderer/assets/index-iHYS74sQ.css +0 -382
  289. package/out/renderer/assets/index-iHYS74sQ.css.br +0 -0
  290. package/out/renderer/assets/index-iHYS74sQ.css.gz +0 -0
  291. package/out/renderer/assets/infoDiagram-42DDH7IO-BrfLG_LC.js.br +0 -0
  292. package/out/renderer/assets/infoDiagram-42DDH7IO-BrfLG_LC.js.gz +0 -0
  293. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-CO0cyvTq.js.br +0 -0
  294. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-CO0cyvTq.js.gz +0 -0
  295. package/out/renderer/assets/item-CvcokSWl.js.br +0 -0
  296. package/out/renderer/assets/item-CvcokSWl.js.gz +0 -0
  297. package/out/renderer/assets/journeyDiagram-VCZTEJTY-D3F2Iu5P.js.br +0 -0
  298. package/out/renderer/assets/journeyDiagram-VCZTEJTY-D3F2Iu5P.js.gz +0 -0
  299. package/out/renderer/assets/kanban-definition-6JOO6SKY-CC_drlaB.js.br +0 -0
  300. package/out/renderer/assets/kanban-definition-6JOO6SKY-CC_drlaB.js.gz +0 -0
  301. package/out/renderer/assets/layout-B_3n1To1.js.br +0 -0
  302. package/out/renderer/assets/layout-B_3n1To1.js.gz +0 -0
  303. package/out/renderer/assets/linear-AxwRZ_jw.js.br +0 -0
  304. package/out/renderer/assets/linear-AxwRZ_jw.js.gz +0 -0
  305. package/out/renderer/assets/mermaid-GHXKKRXX-DFOJYe_t.js.br +0 -0
  306. package/out/renderer/assets/mermaid-GHXKKRXX-DFOJYe_t.js.gz +0 -0
  307. package/out/renderer/assets/min-Dip7FmOo.js.br +0 -0
  308. package/out/renderer/assets/min-Dip7FmOo.js.gz +0 -0
  309. package/out/renderer/assets/mindmap-definition-QFDTVHPH-D9aiLrpe.js.br +0 -0
  310. package/out/renderer/assets/mindmap-definition-QFDTVHPH-D9aiLrpe.js.gz +0 -0
  311. package/out/renderer/assets/pieDiagram-DEJITSTG-BX_34lAP.js.br +0 -0
  312. package/out/renderer/assets/pieDiagram-DEJITSTG-BX_34lAP.js.gz +0 -0
  313. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-G09qfNO8.js.br +0 -0
  314. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-G09qfNO8.js.gz +0 -0
  315. package/out/renderer/assets/requirementDiagram-MS252O5E-sJPY8r9J.js.br +0 -0
  316. package/out/renderer/assets/requirementDiagram-MS252O5E-sJPY8r9J.js.gz +0 -0
  317. package/out/renderer/assets/resizable-C5jomC3Y.js.br +0 -0
  318. package/out/renderer/assets/resizable-C5jomC3Y.js.gz +0 -0
  319. package/out/renderer/assets/sankeyDiagram-XADWPNL6-DHIS2ISZ.js.br +0 -0
  320. package/out/renderer/assets/sankeyDiagram-XADWPNL6-DHIS2ISZ.js.gz +0 -0
  321. package/out/renderer/assets/schedule-BoqPUAOI.js.br +0 -0
  322. package/out/renderer/assets/schedule-BoqPUAOI.js.gz +0 -0
  323. package/out/renderer/assets/sequenceDiagram-FGHM5R23-Boc12Em2.js.br +0 -0
  324. package/out/renderer/assets/sequenceDiagram-FGHM5R23-Boc12Em2.js.gz +0 -0
  325. package/out/renderer/assets/session-DgU3TDDV.js.br +0 -0
  326. package/out/renderer/assets/session-DgU3TDDV.js.gz +0 -0
  327. package/out/renderer/assets/setting-dialog-4pmkQ7WP.js.br +0 -0
  328. package/out/renderer/assets/setting-dialog-4pmkQ7WP.js.gz +0 -0
  329. package/out/renderer/assets/settings-agents-C4u0s-iR.js.br +0 -0
  330. package/out/renderer/assets/settings-agents-C4u0s-iR.js.gz +0 -0
  331. package/out/renderer/assets/settings-general-BkLSJoHB.js.br +0 -0
  332. package/out/renderer/assets/settings-general-BkLSJoHB.js.gz +0 -0
  333. package/out/renderer/assets/settings-ilink-6ZrgPpeO.js.br +0 -0
  334. package/out/renderer/assets/settings-ilink-6ZrgPpeO.js.gz +0 -0
  335. package/out/renderer/assets/settings-image-generation-B6YIO6o_.js.br +0 -0
  336. package/out/renderer/assets/settings-image-generation-B6YIO6o_.js.gz +0 -0
  337. package/out/renderer/assets/settings-layout-Cf7GMXFZ.js.br +0 -0
  338. package/out/renderer/assets/settings-layout-Cf7GMXFZ.js.gz +0 -0
  339. package/out/renderer/assets/settings-mcp-CJvL5Siz.js.br +0 -0
  340. package/out/renderer/assets/settings-mcp-CJvL5Siz.js.gz +0 -0
  341. package/out/renderer/assets/settings-memory-CvkppfHy.js.br +0 -0
  342. package/out/renderer/assets/settings-memory-CvkppfHy.js.gz +0 -0
  343. package/out/renderer/assets/settings-snippets-CO_jL3O3.js.br +0 -0
  344. package/out/renderer/assets/settings-snippets-CO_jL3O3.js.gz +0 -0
  345. package/out/renderer/assets/settings-webui-5n5mI55N.js.br +0 -0
  346. package/out/renderer/assets/settings-webui-5n5mI55N.js.gz +0 -0
  347. package/out/renderer/assets/skills-installed-BqjN4mEl.js.br +0 -0
  348. package/out/renderer/assets/skills-installed-BqjN4mEl.js.gz +0 -0
  349. package/out/renderer/assets/skills-layout-C8b-pe9X.js.br +0 -0
  350. package/out/renderer/assets/skills-layout-C8b-pe9X.js.gz +0 -0
  351. package/out/renderer/assets/skills-skills-sh-Bh8KQ3PF.js.br +0 -0
  352. package/out/renderer/assets/skills-skills-sh-Bh8KQ3PF.js.gz +0 -0
  353. package/out/renderer/assets/sortable.esm-DARmP-Qe.js.br +0 -0
  354. package/out/renderer/assets/sortable.esm-DARmP-Qe.js.gz +0 -0
  355. package/out/renderer/assets/standard-schema-CtFhVVG9.js.br +0 -0
  356. package/out/renderer/assets/standard-schema-CtFhVVG9.js.gz +0 -0
  357. package/out/renderer/assets/stateDiagram-FHFEXIEX-Da2gV_KD.js.br +0 -0
  358. package/out/renderer/assets/stateDiagram-FHFEXIEX-Da2gV_KD.js.gz +0 -0
  359. package/out/renderer/assets/task-Ca7ur8ku.js.br +0 -0
  360. package/out/renderer/assets/task-Ca7ur8ku.js.gz +0 -0
  361. package/out/renderer/assets/timeline-definition-GMOUNBTQ-egFv4rLM.js.br +0 -0
  362. package/out/renderer/assets/timeline-definition-GMOUNBTQ-egFv4rLM.js.gz +0 -0
  363. package/out/renderer/assets/vennDiagram-DHZGUBPP-CnOs99wX.js.br +0 -0
  364. package/out/renderer/assets/vennDiagram-DHZGUBPP-CnOs99wX.js.gz +0 -0
  365. package/out/renderer/assets/wardley-RL74JXVD-Bb1llXhX.js.br +0 -0
  366. package/out/renderer/assets/wardley-RL74JXVD-Bb1llXhX.js.gz +0 -0
  367. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-BupfUxsI.js.br +0 -0
  368. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-BupfUxsI.js.gz +0 -0
  369. package/out/renderer/assets/wrench-Dj1S5dhM.js.br +0 -0
  370. package/out/renderer/assets/wrench-Dj1S5dhM.js.gz +0 -0
  371. package/out/renderer/assets/xlsx-view-DIarHecR.js.br +0 -0
  372. package/out/renderer/assets/xlsx-view-DIarHecR.js.gz +0 -0
  373. package/out/renderer/assets/xychartDiagram-5P7HB3ND-CtPNxvT_.js.br +0 -0
  374. 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-cp9haQUT.js","./index-Co8mzhyV.js","./index-iHYS74sQ.css","./mermaid-GHXKKRXX-DFOJYe_t.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, 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, cn as Tooltip, co as TooltipTrigger, cp as TooltipContent, S as ScrollArea, a0 as Bot, cq as formatDuration, ax as getDefaultExportFromCjs, cr as ReactDOM, cs as v$2, A as generateUUID, ct as HoverCard, cu as HoverCardTrigger, cv as HoverCardContent, cw as X$1, aW as Folder, L as Library, v as DropdownMenu, w as DropdownMenuTrigger, cx as ChevronDown, x as DropdownMenuContent, y as DropdownMenuItem, cy as DropdownMenuSub, cz as DropdownMenuSubTrigger, cA as DropdownMenuSubContent, cB as CircleQuestionMark, cC as ChevronUp, aV as Clock, aP as Tabs, aQ as TabsList, aR as TabsTrigger, cD as z$1, X as CircleCheck, cE as __vitePreload, I as Input, cF as Code, bv as EDITOR_LABELS, aS as webUIBaseUrl, R as subscribe, cG as FolderPlus, a5 as ChevronRight, P as Pencil, T as Trash2, cH as useProjectState, cI as clientId, cJ as TabsContent } from "./index-Co8mzhyV.js";
3
- import { S as Settings2 } from "./settings-2-CI8inOtS.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-DIarHecR.js";
5
- import { I as Image, W as Wrench } from "./wrench-Dj1S5dhM.js";
6
- import { F as FileText } from "./file-text-CMw1QH-C.js";
7
- import { C as Clipboard } from "./clipboard-D6ZpW5GH.js";
8
- import { A as ArrowLeft } from "./arrow-left-BwbOF_G_.js";
9
- import { aQ as CodeView, S as StreamMarkdown, aR as FileIcon } from "./mermaid-GHXKKRXX-DFOJYe_t.js";
10
- import { b as ContextMenuContent, c as ContextMenuItem, d as ContextMenuSeparator, C as ContextMenu, a as ContextMenuTrigger } from "./context-menu-K6z5uSmg.js";
11
- import { S as Search } from "./search-DdqhQVGJ.js";
12
- import { E as ExternalLink } from "./link-2-4A51Gs15.js";
13
- import { R as RefreshCw } from "./refresh-cw-DGB7KSZ3.js";
14
- import { P as Plus } from "./plus-DOVKq0d7.js";
15
- import { R as ResizablePanelGroup, a as ResizablePanel, b as ResizableHandle } from "./resizable-C5jomC3Y.js";
16
- import "./collapsible-BHMUDZxc.js";
17
- import "./item-CvcokSWl.js";
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-8708fodN.js";
20
- const __iconNode$h = [
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$h);
25
- const __iconNode$g = [
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$g);
30
- const __iconNode$f = [
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$f);
35
- const __iconNode$e = [
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$e);
45
- const __iconNode$d = [
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$d);
50
- const __iconNode$c = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
51
- const Circle = createLucideIcon("circle", __iconNode$c);
52
- const __iconNode$b = [
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$b);
57
- const __iconNode$a = [
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$a);
70
- const __iconNode$9 = [
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$9);
75
- const __iconNode$8 = [
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$8);
81
- const __iconNode$7 = [
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$7);
88
- const __iconNode$6 = [
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$6);
96
- const __iconNode$5 = [
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$5);
108
- const __iconNode$4 = [
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$4);
118
- const __iconNode$3 = [
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$3);
130
- const __iconNode$2 = [
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$2);
135
- const __iconNode$1 = [
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$1);
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-cp9haQUT.js"), true ? __vite__mapDeps([0,1,2,3,4]) : void 0, import.meta.url).then((m) => ({ default: m.CodeEditor }))
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 Detail({ detailType, projectId, file, terminalId, onClose }) {
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
- (!detailType || detailType === "file" && (!projectId || !file) || detailType === "terminal" && (!projectId || !terminalId)) && /* @__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") }) })
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
  ) })