@zythum02/fello-server 0.1.48 → 0.1.49

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 (217) hide show
  1. package/out/renderer/assets/{_baseUniq-D023PlQD.js → _baseUniq-jsNn2Q0s.js} +1 -1
  2. package/out/renderer/assets/_baseUniq-jsNn2Q0s.js.br +0 -0
  3. package/out/renderer/assets/_baseUniq-jsNn2Q0s.js.gz +0 -0
  4. package/out/renderer/assets/{arc-Bgp6YWjh.js → arc-CZMdjunT.js} +1 -1
  5. package/out/renderer/assets/arc-CZMdjunT.js.br +0 -0
  6. package/out/renderer/assets/arc-CZMdjunT.js.gz +0 -0
  7. package/out/renderer/assets/{architectureDiagram-Q4EWVU46-B40mk-XJ.js → architectureDiagram-Q4EWVU46-BNFtPc1v.js} +5 -5
  8. package/out/renderer/assets/architectureDiagram-Q4EWVU46-BNFtPc1v.js.br +0 -0
  9. package/out/renderer/assets/architectureDiagram-Q4EWVU46-BNFtPc1v.js.gz +0 -0
  10. package/out/renderer/assets/{blockDiagram-DXYQGD6D-BBdankH4.js → blockDiagram-DXYQGD6D-CPK2QuaJ.js} +6 -6
  11. package/out/renderer/assets/blockDiagram-DXYQGD6D-CPK2QuaJ.js.br +0 -0
  12. package/out/renderer/assets/blockDiagram-DXYQGD6D-CPK2QuaJ.js.gz +0 -0
  13. package/out/renderer/assets/{c4Diagram-AHTNJAMY-BfRmGEJy.js → c4Diagram-AHTNJAMY-DLQf0xBh.js} +2 -2
  14. package/out/renderer/assets/c4Diagram-AHTNJAMY-DLQf0xBh.js.br +0 -0
  15. package/out/renderer/assets/c4Diagram-AHTNJAMY-DLQf0xBh.js.gz +0 -0
  16. package/out/renderer/assets/{channel-CHGPt1xL.js → channel-sFWrTS52.js} +1 -1
  17. package/out/renderer/assets/{chunk-4BX2VUAB-Dbg5pk8D.js → chunk-4BX2VUAB-CUoBhtu2.js} +1 -1
  18. package/out/renderer/assets/{chunk-4TB4RGXK-CBjV8oAS.js → chunk-4TB4RGXK-CRjlV65P.js} +5 -5
  19. package/out/renderer/assets/chunk-4TB4RGXK-CRjlV65P.js.br +0 -0
  20. package/out/renderer/assets/chunk-4TB4RGXK-CRjlV65P.js.gz +0 -0
  21. package/out/renderer/assets/{chunk-55IACEB6-_eYsto3b.js → chunk-55IACEB6-zrgWErN1.js} +1 -1
  22. package/out/renderer/assets/{chunk-EDXVE4YY-DaXCRd0a.js → chunk-EDXVE4YY-B5b9dJFI.js} +1 -1
  23. package/out/renderer/assets/chunk-EDXVE4YY-B5b9dJFI.js.br +0 -0
  24. package/out/renderer/assets/chunk-EDXVE4YY-B5b9dJFI.js.gz +0 -0
  25. package/out/renderer/assets/{chunk-FMBD7UC4-BwtLRaQu.js → chunk-FMBD7UC4-Bb0FhBnd.js} +1 -1
  26. package/out/renderer/assets/{chunk-OYMX7WX6-h3hRYV_y.js → chunk-OYMX7WX6-CkUp0SL9.js} +3 -3
  27. package/out/renderer/assets/chunk-OYMX7WX6-CkUp0SL9.js.br +0 -0
  28. package/out/renderer/assets/chunk-OYMX7WX6-CkUp0SL9.js.gz +0 -0
  29. package/out/renderer/assets/{chunk-QZHKN3VN-DUU1c_qe.js → chunk-QZHKN3VN-Bqt7zsAR.js} +1 -1
  30. package/out/renderer/assets/{chunk-YZCP3GAM-fw4tpwlW.js → chunk-YZCP3GAM-Crg82fz2.js} +1 -1
  31. package/out/renderer/assets/chunk-YZCP3GAM-Crg82fz2.js.br +0 -0
  32. package/out/renderer/assets/chunk-YZCP3GAM-Crg82fz2.js.gz +0 -0
  33. package/out/renderer/assets/{classDiagram-6PBFFD2Q-ql_64jJs.js → classDiagram-6PBFFD2Q-BInpfZnW.js} +6 -6
  34. package/out/renderer/assets/{classDiagram-v2-HSJHXN6E-ql_64jJs.js → classDiagram-v2-HSJHXN6E-BInpfZnW.js} +6 -6
  35. package/out/renderer/assets/{clone-DZQhm3qm.js → clone-Brsdp_jq.js} +1 -1
  36. package/out/renderer/assets/{cose-bilkent-S5V4N54A-Bjtibz95.js → cose-bilkent-S5V4N54A-CH_2zOJR.js} +1 -1
  37. package/out/renderer/assets/cose-bilkent-S5V4N54A-CH_2zOJR.js.br +0 -0
  38. package/out/renderer/assets/cose-bilkent-S5V4N54A-CH_2zOJR.js.gz +0 -0
  39. package/out/renderer/assets/{dagre-KV5264BT-DW9CSFRI.js → dagre-KV5264BT-H1wB7v-Q.js} +6 -6
  40. package/out/renderer/assets/dagre-KV5264BT-H1wB7v-Q.js.br +0 -0
  41. package/out/renderer/assets/dagre-KV5264BT-H1wB7v-Q.js.gz +0 -0
  42. package/out/renderer/assets/{diagram-5BDNPKRD-Dptg-C7O.js → diagram-5BDNPKRD-D9VV_-Xi.js} +6 -6
  43. package/out/renderer/assets/diagram-5BDNPKRD-D9VV_-Xi.js.br +0 -0
  44. package/out/renderer/assets/diagram-5BDNPKRD-D9VV_-Xi.js.gz +0 -0
  45. package/out/renderer/assets/{diagram-G4DWMVQ6-CX-JVWk7.js → diagram-G4DWMVQ6-CfRglPBg.js} +6 -6
  46. package/out/renderer/assets/diagram-G4DWMVQ6-CfRglPBg.js.br +0 -0
  47. package/out/renderer/assets/diagram-G4DWMVQ6-CfRglPBg.js.gz +0 -0
  48. package/out/renderer/assets/{diagram-MMDJMWI5-DUDbXS-d.js → diagram-MMDJMWI5-BnwRyNpR.js} +5 -5
  49. package/out/renderer/assets/diagram-MMDJMWI5-BnwRyNpR.js.br +0 -0
  50. package/out/renderer/assets/diagram-MMDJMWI5-BnwRyNpR.js.gz +0 -0
  51. package/out/renderer/assets/{diagram-TYMM5635-9K0cZf20.js → diagram-TYMM5635-BKn_5Ga7.js} +5 -5
  52. package/out/renderer/assets/diagram-TYMM5635-BKn_5Ga7.js.br +0 -0
  53. package/out/renderer/assets/diagram-TYMM5635-BKn_5Ga7.js.gz +0 -0
  54. package/out/renderer/assets/{erDiagram-SMLLAGMA-DaVqqCcL.js → erDiagram-SMLLAGMA-B35CLzqQ.js} +4 -4
  55. package/out/renderer/assets/erDiagram-SMLLAGMA-B35CLzqQ.js.br +0 -0
  56. package/out/renderer/assets/erDiagram-SMLLAGMA-B35CLzqQ.js.gz +0 -0
  57. package/out/renderer/assets/{flowDiagram-DWJPFMVM-BrHGujcg.js → flowDiagram-DWJPFMVM-BidIy8zc.js} +6 -6
  58. package/out/renderer/assets/flowDiagram-DWJPFMVM-BidIy8zc.js.br +0 -0
  59. package/out/renderer/assets/flowDiagram-DWJPFMVM-BidIy8zc.js.gz +0 -0
  60. package/out/renderer/assets/{ganttDiagram-T4ZO3ILL-D9tlSXpr.js → ganttDiagram-T4ZO3ILL-CqV1ei6S.js} +2 -2
  61. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-CqV1ei6S.js.br +0 -0
  62. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-CqV1ei6S.js.gz +0 -0
  63. package/out/renderer/assets/{gitGraphDiagram-UUTBAWPF-dFtBMZmH.js → gitGraphDiagram-UUTBAWPF-7wQ8gKPV.js} +6 -6
  64. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-7wQ8gKPV.js.br +0 -0
  65. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-7wQ8gKPV.js.gz +0 -0
  66. package/out/renderer/assets/{graph-CNmSjTZd.js → graph-Ck9_bXv5.js} +2 -2
  67. package/out/renderer/assets/graph-Ck9_bXv5.js.br +0 -0
  68. package/out/renderer/assets/graph-Ck9_bXv5.js.gz +0 -0
  69. package/out/renderer/assets/{highlighted-body-OFNGDK62-EglK-D82.js → highlighted-body-OFNGDK62-gS-2OBX1.js} +1 -1
  70. package/out/renderer/assets/{index-BwSaFLCv.css → index-BtjFxpR5.css} +1 -1
  71. package/out/renderer/assets/index-BtjFxpR5.css.br +0 -0
  72. package/out/renderer/assets/index-BtjFxpR5.css.gz +0 -0
  73. package/out/renderer/assets/{index-BuO0MTa-.js → index-Cy_TZSUE.js} +811 -801
  74. package/out/renderer/assets/index-Cy_TZSUE.js.br +0 -0
  75. package/out/renderer/assets/index-Cy_TZSUE.js.gz +0 -0
  76. package/out/renderer/assets/{infoDiagram-42DDH7IO-CwoWvadJ.js → infoDiagram-42DDH7IO-DlKxzT4w.js} +4 -4
  77. package/out/renderer/assets/{ishikawaDiagram-UXIWVN3A-9MhN_EF5.js → ishikawaDiagram-UXIWVN3A-DmOMlIE8.js} +1 -1
  78. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-DmOMlIE8.js.br +0 -0
  79. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-DmOMlIE8.js.gz +0 -0
  80. package/out/renderer/assets/{journeyDiagram-VCZTEJTY-BwKJh5pl.js → journeyDiagram-VCZTEJTY-CYRPGJN7.js} +4 -4
  81. package/out/renderer/assets/journeyDiagram-VCZTEJTY-CYRPGJN7.js.br +0 -0
  82. package/out/renderer/assets/journeyDiagram-VCZTEJTY-CYRPGJN7.js.gz +0 -0
  83. package/out/renderer/assets/{kanban-definition-6JOO6SKY-uDhuFOXv.js → kanban-definition-6JOO6SKY-Dovb_i6Z.js} +2 -2
  84. package/out/renderer/assets/kanban-definition-6JOO6SKY-Dovb_i6Z.js.br +0 -0
  85. package/out/renderer/assets/kanban-definition-6JOO6SKY-Dovb_i6Z.js.gz +0 -0
  86. package/out/renderer/assets/{layout-C7Mg2ajy.js → layout-BUs47sjz.js} +4 -4
  87. package/out/renderer/assets/layout-BUs47sjz.js.br +0 -0
  88. package/out/renderer/assets/layout-BUs47sjz.js.gz +0 -0
  89. package/out/renderer/assets/{linear-CkQXAw4A.js → linear-CO24wS_v.js} +1 -1
  90. package/out/renderer/assets/linear-CO24wS_v.js.br +0 -0
  91. package/out/renderer/assets/linear-CO24wS_v.js.gz +0 -0
  92. package/out/renderer/assets/{min-DRTvcNIL.js → min-Dd_ATNHv.js} +2 -2
  93. package/out/renderer/assets/min-Dd_ATNHv.js.br +0 -0
  94. package/out/renderer/assets/min-Dd_ATNHv.js.gz +0 -0
  95. package/out/renderer/assets/{mindmap-definition-QFDTVHPH-_8DjK16S.js → mindmap-definition-QFDTVHPH-CC3W7LA-.js} +3 -3
  96. package/out/renderer/assets/mindmap-definition-QFDTVHPH-CC3W7LA-.js.br +0 -0
  97. package/out/renderer/assets/mindmap-definition-QFDTVHPH-CC3W7LA-.js.gz +0 -0
  98. package/out/renderer/assets/{pieDiagram-DEJITSTG-owvRXepN.js → pieDiagram-DEJITSTG-BN6Ummnw.js} +6 -6
  99. package/out/renderer/assets/pieDiagram-DEJITSTG-BN6Ummnw.js.br +0 -0
  100. package/out/renderer/assets/pieDiagram-DEJITSTG-BN6Ummnw.js.gz +0 -0
  101. package/out/renderer/assets/{quadrantDiagram-34T5L4WZ-C9LRroTe.js → quadrantDiagram-34T5L4WZ-DTE_dLJv.js} +2 -2
  102. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-DTE_dLJv.js.br +0 -0
  103. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-DTE_dLJv.js.gz +0 -0
  104. package/out/renderer/assets/{requirementDiagram-MS252O5E-Ds_36REQ.js → requirementDiagram-MS252O5E-DVDS2RYN.js} +3 -3
  105. package/out/renderer/assets/requirementDiagram-MS252O5E-DVDS2RYN.js.br +0 -0
  106. package/out/renderer/assets/requirementDiagram-MS252O5E-DVDS2RYN.js.gz +0 -0
  107. package/out/renderer/assets/{sankeyDiagram-XADWPNL6-6HuBoz3Q.js → sankeyDiagram-XADWPNL6-D4_LywJM.js} +1 -1
  108. package/out/renderer/assets/sankeyDiagram-XADWPNL6-D4_LywJM.js.br +0 -0
  109. package/out/renderer/assets/sankeyDiagram-XADWPNL6-D4_LywJM.js.gz +0 -0
  110. package/out/renderer/assets/{sequenceDiagram-FGHM5R23-BdGUPHNX.js → sequenceDiagram-FGHM5R23-89GBJZmd.js} +3 -3
  111. package/out/renderer/assets/sequenceDiagram-FGHM5R23-89GBJZmd.js.br +0 -0
  112. package/out/renderer/assets/sequenceDiagram-FGHM5R23-89GBJZmd.js.gz +0 -0
  113. package/out/renderer/assets/{stateDiagram-FHFEXIEX-CruNLY-0.js → stateDiagram-FHFEXIEX-YKrUbogP.js} +8 -8
  114. package/out/renderer/assets/stateDiagram-FHFEXIEX-YKrUbogP.js.br +0 -0
  115. package/out/renderer/assets/stateDiagram-FHFEXIEX-YKrUbogP.js.gz +0 -0
  116. package/out/renderer/assets/{stateDiagram-v2-QKLJ7IA2-CfBaNTRC.js → stateDiagram-v2-QKLJ7IA2-CO0pZRqI.js} +4 -4
  117. package/out/renderer/assets/{timeline-definition-GMOUNBTQ-CHPlJ2ZI.js → timeline-definition-GMOUNBTQ-BW2oxhj-.js} +2 -2
  118. package/out/renderer/assets/timeline-definition-GMOUNBTQ-BW2oxhj-.js.br +0 -0
  119. package/out/renderer/assets/timeline-definition-GMOUNBTQ-BW2oxhj-.js.gz +0 -0
  120. package/out/renderer/assets/{vennDiagram-DHZGUBPP-DMdQtt7i.js → vennDiagram-DHZGUBPP-DSy9zL6k.js} +1 -1
  121. package/out/renderer/assets/vennDiagram-DHZGUBPP-DSy9zL6k.js.br +0 -0
  122. package/out/renderer/assets/vennDiagram-DHZGUBPP-DSy9zL6k.js.gz +0 -0
  123. package/out/renderer/assets/{wardley-RL74JXVD-HjjY3yRY.js → wardley-RL74JXVD-DFRGDO55.js} +3 -3
  124. package/out/renderer/assets/wardley-RL74JXVD-DFRGDO55.js.br +0 -0
  125. package/out/renderer/assets/wardley-RL74JXVD-DFRGDO55.js.gz +0 -0
  126. package/out/renderer/assets/{wardleyDiagram-NUSXRM2D-BI-3rQpv.js → wardleyDiagram-NUSXRM2D-CJUPdnii.js} +5 -5
  127. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-CJUPdnii.js.br +0 -0
  128. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-CJUPdnii.js.gz +0 -0
  129. package/out/renderer/assets/{xychartDiagram-5P7HB3ND-Bzj4rKGX.js → xychartDiagram-5P7HB3ND-UGlSGsDE.js} +2 -2
  130. package/out/renderer/assets/xychartDiagram-5P7HB3ND-UGlSGsDE.js.br +0 -0
  131. package/out/renderer/assets/xychartDiagram-5P7HB3ND-UGlSGsDE.js.gz +0 -0
  132. package/out/renderer/index.html +2 -2
  133. package/out/renderer/index.html.br +0 -0
  134. package/out/renderer/index.html.gz +0 -0
  135. package/out/scripts/mcp-search/server.mjs +46 -46
  136. package/out/server/main.js +226 -125
  137. package/package.json +2 -1
  138. package/out/renderer/assets/_baseUniq-D023PlQD.js.br +0 -0
  139. package/out/renderer/assets/_baseUniq-D023PlQD.js.gz +0 -0
  140. package/out/renderer/assets/arc-Bgp6YWjh.js.br +0 -0
  141. package/out/renderer/assets/arc-Bgp6YWjh.js.gz +0 -0
  142. package/out/renderer/assets/architectureDiagram-Q4EWVU46-B40mk-XJ.js.br +0 -0
  143. package/out/renderer/assets/architectureDiagram-Q4EWVU46-B40mk-XJ.js.gz +0 -0
  144. package/out/renderer/assets/blockDiagram-DXYQGD6D-BBdankH4.js.br +0 -0
  145. package/out/renderer/assets/blockDiagram-DXYQGD6D-BBdankH4.js.gz +0 -0
  146. package/out/renderer/assets/c4Diagram-AHTNJAMY-BfRmGEJy.js.br +0 -0
  147. package/out/renderer/assets/c4Diagram-AHTNJAMY-BfRmGEJy.js.gz +0 -0
  148. package/out/renderer/assets/chunk-4TB4RGXK-CBjV8oAS.js.br +0 -0
  149. package/out/renderer/assets/chunk-4TB4RGXK-CBjV8oAS.js.gz +0 -0
  150. package/out/renderer/assets/chunk-EDXVE4YY-DaXCRd0a.js.br +0 -0
  151. package/out/renderer/assets/chunk-EDXVE4YY-DaXCRd0a.js.gz +0 -0
  152. package/out/renderer/assets/chunk-OYMX7WX6-h3hRYV_y.js.br +0 -0
  153. package/out/renderer/assets/chunk-OYMX7WX6-h3hRYV_y.js.gz +0 -0
  154. package/out/renderer/assets/chunk-YZCP3GAM-fw4tpwlW.js.br +0 -0
  155. package/out/renderer/assets/chunk-YZCP3GAM-fw4tpwlW.js.gz +0 -0
  156. package/out/renderer/assets/cose-bilkent-S5V4N54A-Bjtibz95.js.br +0 -0
  157. package/out/renderer/assets/cose-bilkent-S5V4N54A-Bjtibz95.js.gz +0 -0
  158. package/out/renderer/assets/dagre-KV5264BT-DW9CSFRI.js.br +0 -0
  159. package/out/renderer/assets/dagre-KV5264BT-DW9CSFRI.js.gz +0 -0
  160. package/out/renderer/assets/diagram-5BDNPKRD-Dptg-C7O.js.br +0 -0
  161. package/out/renderer/assets/diagram-5BDNPKRD-Dptg-C7O.js.gz +0 -0
  162. package/out/renderer/assets/diagram-G4DWMVQ6-CX-JVWk7.js.br +0 -0
  163. package/out/renderer/assets/diagram-G4DWMVQ6-CX-JVWk7.js.gz +0 -0
  164. package/out/renderer/assets/diagram-MMDJMWI5-DUDbXS-d.js.br +0 -0
  165. package/out/renderer/assets/diagram-MMDJMWI5-DUDbXS-d.js.gz +0 -0
  166. package/out/renderer/assets/diagram-TYMM5635-9K0cZf20.js.br +0 -0
  167. package/out/renderer/assets/diagram-TYMM5635-9K0cZf20.js.gz +0 -0
  168. package/out/renderer/assets/erDiagram-SMLLAGMA-DaVqqCcL.js.br +0 -0
  169. package/out/renderer/assets/erDiagram-SMLLAGMA-DaVqqCcL.js.gz +0 -0
  170. package/out/renderer/assets/flowDiagram-DWJPFMVM-BrHGujcg.js.br +0 -0
  171. package/out/renderer/assets/flowDiagram-DWJPFMVM-BrHGujcg.js.gz +0 -0
  172. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-D9tlSXpr.js.br +0 -0
  173. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-D9tlSXpr.js.gz +0 -0
  174. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-dFtBMZmH.js.br +0 -0
  175. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-dFtBMZmH.js.gz +0 -0
  176. package/out/renderer/assets/graph-CNmSjTZd.js.br +0 -0
  177. package/out/renderer/assets/graph-CNmSjTZd.js.gz +0 -0
  178. package/out/renderer/assets/index-BuO0MTa-.js.br +0 -0
  179. package/out/renderer/assets/index-BuO0MTa-.js.gz +0 -0
  180. package/out/renderer/assets/index-BwSaFLCv.css.br +0 -0
  181. package/out/renderer/assets/index-BwSaFLCv.css.gz +0 -0
  182. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-9MhN_EF5.js.br +0 -0
  183. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-9MhN_EF5.js.gz +0 -0
  184. package/out/renderer/assets/journeyDiagram-VCZTEJTY-BwKJh5pl.js.br +0 -0
  185. package/out/renderer/assets/journeyDiagram-VCZTEJTY-BwKJh5pl.js.gz +0 -0
  186. package/out/renderer/assets/kanban-definition-6JOO6SKY-uDhuFOXv.js.br +0 -0
  187. package/out/renderer/assets/kanban-definition-6JOO6SKY-uDhuFOXv.js.gz +0 -0
  188. package/out/renderer/assets/layout-C7Mg2ajy.js.br +0 -0
  189. package/out/renderer/assets/layout-C7Mg2ajy.js.gz +0 -0
  190. package/out/renderer/assets/linear-CkQXAw4A.js.br +0 -0
  191. package/out/renderer/assets/linear-CkQXAw4A.js.gz +0 -0
  192. package/out/renderer/assets/min-DRTvcNIL.js.br +0 -0
  193. package/out/renderer/assets/min-DRTvcNIL.js.gz +0 -0
  194. package/out/renderer/assets/mindmap-definition-QFDTVHPH-_8DjK16S.js.br +0 -0
  195. package/out/renderer/assets/mindmap-definition-QFDTVHPH-_8DjK16S.js.gz +0 -0
  196. package/out/renderer/assets/pieDiagram-DEJITSTG-owvRXepN.js.br +0 -0
  197. package/out/renderer/assets/pieDiagram-DEJITSTG-owvRXepN.js.gz +0 -0
  198. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-C9LRroTe.js.br +0 -0
  199. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-C9LRroTe.js.gz +0 -0
  200. package/out/renderer/assets/requirementDiagram-MS252O5E-Ds_36REQ.js.br +0 -0
  201. package/out/renderer/assets/requirementDiagram-MS252O5E-Ds_36REQ.js.gz +0 -0
  202. package/out/renderer/assets/sankeyDiagram-XADWPNL6-6HuBoz3Q.js.br +0 -0
  203. package/out/renderer/assets/sankeyDiagram-XADWPNL6-6HuBoz3Q.js.gz +0 -0
  204. package/out/renderer/assets/sequenceDiagram-FGHM5R23-BdGUPHNX.js.br +0 -0
  205. package/out/renderer/assets/sequenceDiagram-FGHM5R23-BdGUPHNX.js.gz +0 -0
  206. package/out/renderer/assets/stateDiagram-FHFEXIEX-CruNLY-0.js.br +0 -0
  207. package/out/renderer/assets/stateDiagram-FHFEXIEX-CruNLY-0.js.gz +0 -0
  208. package/out/renderer/assets/timeline-definition-GMOUNBTQ-CHPlJ2ZI.js.br +0 -0
  209. package/out/renderer/assets/timeline-definition-GMOUNBTQ-CHPlJ2ZI.js.gz +0 -0
  210. package/out/renderer/assets/vennDiagram-DHZGUBPP-DMdQtt7i.js.br +0 -0
  211. package/out/renderer/assets/vennDiagram-DHZGUBPP-DMdQtt7i.js.gz +0 -0
  212. package/out/renderer/assets/wardley-RL74JXVD-HjjY3yRY.js.br +0 -0
  213. package/out/renderer/assets/wardley-RL74JXVD-HjjY3yRY.js.gz +0 -0
  214. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-BI-3rQpv.js.br +0 -0
  215. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-BI-3rQpv.js.gz +0 -0
  216. package/out/renderer/assets/xychartDiagram-5P7HB3ND-Bzj4rKGX.js.br +0 -0
  217. package/out/renderer/assets/xychartDiagram-5P7HB3ND-Bzj4rKGX.js.gz +0 -0
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./dagre-KV5264BT-DW9CSFRI.js","./graph-CNmSjTZd.js","./_baseUniq-D023PlQD.js","./layout-C7Mg2ajy.js","./min-DRTvcNIL.js","./clone-DZQhm3qm.js","./cose-bilkent-S5V4N54A-Bjtibz95.js","./cytoscape.esm-Bm8DJGmZ.js","./c4Diagram-AHTNJAMY-BfRmGEJy.js","./chunk-YZCP3GAM-fw4tpwlW.js","./flowDiagram-DWJPFMVM-BrHGujcg.js","./chunk-FMBD7UC4-BwtLRaQu.js","./chunk-55IACEB6-_eYsto3b.js","./chunk-EDXVE4YY-DaXCRd0a.js","./channel-CHGPt1xL.js","./erDiagram-SMLLAGMA-DaVqqCcL.js","./gitGraphDiagram-UUTBAWPF-dFtBMZmH.js","./chunk-4BX2VUAB-Dbg5pk8D.js","./chunk-QZHKN3VN-DUU1c_qe.js","./wardley-RL74JXVD-HjjY3yRY.js","./ganttDiagram-T4ZO3ILL-D9tlSXpr.js","./linear-CkQXAw4A.js","./init-ZxktEp_H.js","./defaultLocale-B2RvLBDe.js","./infoDiagram-42DDH7IO-CwoWvadJ.js","./pieDiagram-DEJITSTG-owvRXepN.js","./arc-Bgp6YWjh.js","./ordinal-CxptdPJm.js","./quadrantDiagram-34T5L4WZ-C9LRroTe.js","./xychartDiagram-5P7HB3ND-Bzj4rKGX.js","./requirementDiagram-MS252O5E-Ds_36REQ.js","./sequenceDiagram-FGHM5R23-BdGUPHNX.js","./classDiagram-6PBFFD2Q-ql_64jJs.js","./chunk-4TB4RGXK-CBjV8oAS.js","./classDiagram-v2-HSJHXN6E-ql_64jJs.js","./stateDiagram-FHFEXIEX-CruNLY-0.js","./chunk-OYMX7WX6-h3hRYV_y.js","./stateDiagram-v2-QKLJ7IA2-CfBaNTRC.js","./journeyDiagram-VCZTEJTY-BwKJh5pl.js","./timeline-definition-GMOUNBTQ-CHPlJ2ZI.js","./mindmap-definition-QFDTVHPH-_8DjK16S.js","./kanban-definition-6JOO6SKY-uDhuFOXv.js","./sankeyDiagram-XADWPNL6-6HuBoz3Q.js","./diagram-TYMM5635-9K0cZf20.js","./diagram-MMDJMWI5-DUDbXS-d.js","./blockDiagram-DXYQGD6D-BBdankH4.js","./diagram-5BDNPKRD-Dptg-C7O.js","./architectureDiagram-Q4EWVU46-B40mk-XJ.js","./diagram-G4DWMVQ6-CX-JVWk7.js","./wardleyDiagram-NUSXRM2D-BI-3rQpv.js","./angular-html-BYG42TJr.js","./html-GC16tDh9.js","./javascript-BsAkV7mL.js","./css-BtVcDqlU.js","./angular-ts-BftcHvZ6.js","./scss-Dq-LbI_c.js","./apl-CGZawg-A.js","./xml-BMzZeaqs.js","./java-BfXh-0uJ.js","./json-TjWBGEk1.js","./astro-BxdWOZvM.js","./typescript-CP6ECzON.js","./postcss-kj1IbjVd.js","./tsx-CmGGo4Hm.js","./blade-BbH7YAUi.js","./html-derivative-HU9p64q4.js","./sql-DzUuSofg.js","./bsl-DwPS0BId.js","./sdbl-BBUhycGU.js","./cairo-BtYx2aM5.js","./python-CrdIx4PZ.js","./cobol-B8r1pfPr.js","./coffee-XLjtuEYs.js","./cpp-zh2ePAE_.js","./regexp-BxWeO75u.js","./glsl-CGsiYPcu.js","./c-C4VtT7JA.js","./crystal-BqBRy7Ec.js","./shellscript-CQ8MXh-D.js","./edge-CnHxQ_FD.js","./elixir-B_LIBv5J.js","./elm-BlO7pcFp.js","./erb-Bzn22wO6.js","./ruby-C13Bjepi.js","./haml-DrIklt7F.js","./graphql-CwmtR1ib.js","./jsx-BPmvoin2.js","./lua-BVbbqwZC.js","./yaml-B_vW5iTY.js","./erlang-Ch5kuXHm.js","./markdown-F_EULe_G.js","./fortran-fixed-form-CpmOyvS5.js","./fortran-free-form-5X94ETMi.js","./fsharp-5vtGqRR9.js","./gdresource-B5TLWiFO.js","./gdshader-BEzE4j_3.js","./gdscript-CNW3Aj-d.js","./git-commit-PP9xCApN.js","./diff-BEdzuHlE.js","./git-rebase-D-XQSvDj.js","./glimmer-js-h2QNNiD7.js","./glimmer-ts-Bk3uX6Ae.js","./hack-BTX3ICIE.js","./handlebars-yWFGGD2R.js","./http-DjsOm9E4.js","./hurl-Am2cDU4f.js","./csv-Ba84L8e5.js","./hxml-Jle7oGdm.js","./haxe-BpobLYM9.js","./jinja-FkIlHBgj.js","./jison-BkdOIOd4.js","./julia-CU_UwNb8.js","./r-Dpdc-Kyk.js","./just-tGFryTtU.js","./perl-HITCDkgu.js","./latex-B0gTO9uZ.js","./tex-CGVqF8nD.js","./liquid-QmJ_LYTW.js","./marko-BAWrmNIa.js","./less-BAzLMJNR.js","./mdc-Ca0ft0PS.js","./nextflow-B166B-y1.js","./nextflow-groovy-BOO9s0iq.js","./nginx-BFAkI5_-.js","./nim-B3PAIZ4D.js","./php-C2HieitX.js","./pug-BwQB43qN.js","./qml-jtL8okyu.js","./razor-gBXW6YBJ.js","./csharp-DxX_6tHh.js","./rst-by6KAwTb.js","./cmake-CDfQILeU.js","./sas-BLBgC3TA.js","./shaderlab-C07uO3dL.js","./hlsl-TRzjajlb.js","./shellsession-CkeTp4M1.js","./soy-BHaHgMUy.js","./sparql-DswowMAp.js","./turtle-BnC7StHY.js","./stata-Dl7wDdBE.js","./surrealql-Bs3vUeKA.js","./svelte-fC0HkEkx.js","./templ-CSEiQwNm.js","./go-DRMr3iML.js","./ts-tags-cG2hZuda.js","./twig-CwEEYIBf.js","./vue-K-7Ga-y8.js","./vue-html-DhreShjd.js","./vue-vine-rMIwOpFf.js","./stylus-DXFa_2Jl.js","./xsl-CnwVr_6q.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./dagre-KV5264BT-H1wB7v-Q.js","./graph-Ck9_bXv5.js","./_baseUniq-jsNn2Q0s.js","./layout-BUs47sjz.js","./min-Dd_ATNHv.js","./clone-Brsdp_jq.js","./cose-bilkent-S5V4N54A-CH_2zOJR.js","./cytoscape.esm-Bm8DJGmZ.js","./c4Diagram-AHTNJAMY-DLQf0xBh.js","./chunk-YZCP3GAM-Crg82fz2.js","./flowDiagram-DWJPFMVM-BidIy8zc.js","./chunk-FMBD7UC4-Bb0FhBnd.js","./chunk-55IACEB6-zrgWErN1.js","./chunk-EDXVE4YY-B5b9dJFI.js","./channel-sFWrTS52.js","./erDiagram-SMLLAGMA-B35CLzqQ.js","./gitGraphDiagram-UUTBAWPF-7wQ8gKPV.js","./chunk-4BX2VUAB-CUoBhtu2.js","./chunk-QZHKN3VN-Bqt7zsAR.js","./wardley-RL74JXVD-DFRGDO55.js","./ganttDiagram-T4ZO3ILL-CqV1ei6S.js","./linear-CO24wS_v.js","./init-ZxktEp_H.js","./defaultLocale-B2RvLBDe.js","./infoDiagram-42DDH7IO-DlKxzT4w.js","./pieDiagram-DEJITSTG-BN6Ummnw.js","./arc-CZMdjunT.js","./ordinal-CxptdPJm.js","./quadrantDiagram-34T5L4WZ-DTE_dLJv.js","./xychartDiagram-5P7HB3ND-UGlSGsDE.js","./requirementDiagram-MS252O5E-DVDS2RYN.js","./sequenceDiagram-FGHM5R23-89GBJZmd.js","./classDiagram-6PBFFD2Q-BInpfZnW.js","./chunk-4TB4RGXK-CRjlV65P.js","./classDiagram-v2-HSJHXN6E-BInpfZnW.js","./stateDiagram-FHFEXIEX-YKrUbogP.js","./chunk-OYMX7WX6-CkUp0SL9.js","./stateDiagram-v2-QKLJ7IA2-CO0pZRqI.js","./journeyDiagram-VCZTEJTY-CYRPGJN7.js","./timeline-definition-GMOUNBTQ-BW2oxhj-.js","./mindmap-definition-QFDTVHPH-CC3W7LA-.js","./kanban-definition-6JOO6SKY-Dovb_i6Z.js","./sankeyDiagram-XADWPNL6-D4_LywJM.js","./diagram-TYMM5635-BKn_5Ga7.js","./diagram-MMDJMWI5-BnwRyNpR.js","./blockDiagram-DXYQGD6D-CPK2QuaJ.js","./diagram-5BDNPKRD-D9VV_-Xi.js","./architectureDiagram-Q4EWVU46-BNFtPc1v.js","./diagram-G4DWMVQ6-CfRglPBg.js","./wardleyDiagram-NUSXRM2D-CJUPdnii.js","./angular-html-BYG42TJr.js","./html-GC16tDh9.js","./javascript-BsAkV7mL.js","./css-BtVcDqlU.js","./angular-ts-BftcHvZ6.js","./scss-Dq-LbI_c.js","./apl-CGZawg-A.js","./xml-BMzZeaqs.js","./java-BfXh-0uJ.js","./json-TjWBGEk1.js","./astro-BxdWOZvM.js","./typescript-CP6ECzON.js","./postcss-kj1IbjVd.js","./tsx-CmGGo4Hm.js","./blade-BbH7YAUi.js","./html-derivative-HU9p64q4.js","./sql-DzUuSofg.js","./bsl-DwPS0BId.js","./sdbl-BBUhycGU.js","./cairo-BtYx2aM5.js","./python-CrdIx4PZ.js","./cobol-B8r1pfPr.js","./coffee-XLjtuEYs.js","./cpp-zh2ePAE_.js","./regexp-BxWeO75u.js","./glsl-CGsiYPcu.js","./c-C4VtT7JA.js","./crystal-BqBRy7Ec.js","./shellscript-CQ8MXh-D.js","./edge-CnHxQ_FD.js","./elixir-B_LIBv5J.js","./elm-BlO7pcFp.js","./erb-Bzn22wO6.js","./ruby-C13Bjepi.js","./haml-DrIklt7F.js","./graphql-CwmtR1ib.js","./jsx-BPmvoin2.js","./lua-BVbbqwZC.js","./yaml-B_vW5iTY.js","./erlang-Ch5kuXHm.js","./markdown-F_EULe_G.js","./fortran-fixed-form-CpmOyvS5.js","./fortran-free-form-5X94ETMi.js","./fsharp-5vtGqRR9.js","./gdresource-B5TLWiFO.js","./gdshader-BEzE4j_3.js","./gdscript-CNW3Aj-d.js","./git-commit-PP9xCApN.js","./diff-BEdzuHlE.js","./git-rebase-D-XQSvDj.js","./glimmer-js-h2QNNiD7.js","./glimmer-ts-Bk3uX6Ae.js","./hack-BTX3ICIE.js","./handlebars-yWFGGD2R.js","./http-DjsOm9E4.js","./hurl-Am2cDU4f.js","./csv-Ba84L8e5.js","./hxml-Jle7oGdm.js","./haxe-BpobLYM9.js","./jinja-FkIlHBgj.js","./jison-BkdOIOd4.js","./julia-CU_UwNb8.js","./r-Dpdc-Kyk.js","./just-tGFryTtU.js","./perl-HITCDkgu.js","./latex-B0gTO9uZ.js","./tex-CGVqF8nD.js","./liquid-QmJ_LYTW.js","./marko-BAWrmNIa.js","./less-BAzLMJNR.js","./mdc-Ca0ft0PS.js","./nextflow-B166B-y1.js","./nextflow-groovy-BOO9s0iq.js","./nginx-BFAkI5_-.js","./nim-B3PAIZ4D.js","./php-C2HieitX.js","./pug-BwQB43qN.js","./qml-jtL8okyu.js","./razor-gBXW6YBJ.js","./csharp-DxX_6tHh.js","./rst-by6KAwTb.js","./cmake-CDfQILeU.js","./sas-BLBgC3TA.js","./shaderlab-C07uO3dL.js","./hlsl-TRzjajlb.js","./shellsession-CkeTp4M1.js","./soy-BHaHgMUy.js","./sparql-DswowMAp.js","./turtle-BnC7StHY.js","./stata-Dl7wDdBE.js","./surrealql-Bs3vUeKA.js","./svelte-fC0HkEkx.js","./templ-CSEiQwNm.js","./go-DRMr3iML.js","./ts-tags-cG2hZuda.js","./twig-CwEEYIBf.js","./vue-K-7Ga-y8.js","./vue-html-DhreShjd.js","./vue-vine-rMIwOpFf.js","./stylus-DXFa_2Jl.js","./xsl-CnwVr_6q.js"])))=>i.map(i=>d[i]);
2
2
  function _mergeNamespaces(n2, m2) {
3
3
  for (var i3 = 0; i3 < m2.length; i3++) {
4
4
  const e11 = m2[i3];
@@ -16895,7 +16895,7 @@ const constant$5 = { "feature": { "title": "Features", "askUser": "Ask Me", "ski
16895
16895
  const chatHeader$1 = { "sessionId": "Session", "openSessionFolder": "Open Session Folder", "refresh": "Restart Session", "closeSession": "Close Session", "closingSession": "Closing…", "failedToCloseSession": "Failed to close session.", "contextWindow": "Context Window", "used": "Used", "size": "Size", "percentUsed": "{{pct}}% used", "remaining": "{{count}} remaining", "lastTurn": "Last Turn", "input": "Input", "output": "Output", "total": "Total", "thought": "Thought", "cacheRead": "Cache read", "cacheWrite": "Cache write", "cost": "Cost" };
16896
16896
  const chatInput$1 = { "placeholderDisabled": "Start a new chat to begin...", "placeholderActive": "Ask anything... (Enter to send)", "mode": "Mode", "suggestions": "Suggestions", "messageInput": "Message input", "stop": "Stop", "send": "Send", "tokensUsage": "In: {{input}} Out: {{output}} Total: {{total}}{{thoughtStr}}", "tokensTotal": "{{total}}k tokens", "generationFailed": "Generation failed.", "attach": "Attach file", "snippets": "Snippets", "snippetsEmpty": "No snippets. Click to add in Settings.", "selectModel": "Select model", "stopReasonMaxTokens": "Reached maximum token limit", "stopReasonMaxTurnRequests": "Reached maximum turn limit", "stopReasonRefusal": "Model refused to respond", "stopReasonCancelled": "Generation was cancelled" };
16897
16897
  const filePanel$1 = { "title": "Files", "emptyDirectory": "Empty directory", "newFile": "New File", "newFolder": "New Folder", "rename": "Rename", "copyPath": "Copy Path", "copyRelativePath": "Copy Relative Path", "revealInFinder": "Reveal in Finder", "openInEditor": "Open in {{editor}}", "delete": "Delete", "deleteConfirmSingle": 'How would you like to delete "{{name}}"?', "deleteConfirmMultiple": "How would you like to delete {{count}} items?", "dragItems": "{{count}} items", "cancel": "Cancel", "moveToTrash": "Move to Trash", "moveToRecycleBin": "Move to Recycle Bin", "moveConfirmTitle": "Move", "moveConfirmSingle": 'Move "{{name}}" to "{{dest}}"?', "moveConfirmMultiple": 'Move {{count}} items to "{{dest}}"?', "moveConfirmSingleToRoot": 'Move "{{name}}" to the root directory?', "moveConfirmMultipleToRoot": "Move {{count}} items to the root directory?", "loading": "Loading...", "collapseFolders": "Collapse Folders", "refresh": "Refresh", "addToChat": "Add to Chat", "noProject": "No project selected" };
16898
- const toolBubble$1 = { "tool": "Tool", "stop": "Stop", "stopping": "Stopping…" };
16898
+ const toolBubble$1 = { "tool": "Tool", "stop": "Stop", "stopping": "Stopping…", "result": "Result", "terminal": "Terminal" };
16899
16899
  const imageView$1 = { "fallbackAlt": "Image" };
16900
16900
  const readonlyTerminal$1 = { "noOutput": "No output" };
16901
16901
  const message$1 = { "validationFailed": "Validation failed", "ok": "OK", "cancel": "Cancel", "confirm": "Confirm", "dialogTitle": "Message Dialog", "errorTitle": "Error" };
@@ -16967,7 +16967,7 @@ const constant$4 = { "feature": { "title": "功能", "askUser": "向我提问",
16967
16967
  const chatHeader = { "sessionId": "会话编号", "openSessionFolder": "打开会话文件夹", "refresh": "重启会话", "closeSession": "关闭会话", "closingSession": "关闭中…", "failedToCloseSession": "关闭会话失败。", "contextWindow": "上下文窗口", "used": "已用", "size": "上限", "percentUsed": "已用 {{pct}}%", "remaining": "剩余 {{count}}", "lastTurn": "上一轮", "input": "输入", "output": "输出", "total": "总计", "thought": "思考", "cacheRead": "缓存读取", "cacheWrite": "缓存写入", "cost": "费用" };
16968
16968
  const chatInput = { "placeholderDisabled": "请先开启新的会话...", "placeholderActive": "有任何问题请问我... (回车发送)", "mode": "模式", "suggestions": "建议", "messageInput": "消息输入", "stop": "停止", "send": "发送", "tokensUsage": "输入: {{input}} 输出: {{output}} 总计: {{total}}{{thoughtStr}}", "tokensTotal": "{{total}}k tokens", "generationFailed": "生成失败。", "attach": "附加文件", "snippets": "快捷短语", "snippetsEmpty": "暂无短语,点击前往设置添加。", "selectModel": "选择模型", "stopReasonMaxTokens": "已达到最大 token 限制", "stopReasonMaxTurnRequests": "已达到最大轮次限制", "stopReasonRefusal": "模型拒绝回答", "stopReasonCancelled": "生成已取消" };
16969
16969
  const filePanel = { "title": "文件", "emptyDirectory": "空目录", "newFile": "新建文件", "newFolder": "新建文件夹", "rename": "重命名", "copyPath": "复制路径", "copyRelativePath": "复制相对路径", "revealInFinder": "在访达中显示", "openInEditor": "使用 {{editor}} 打开", "delete": "删除", "deleteConfirmSingle": "是否删除“{{name}}”?", "deleteConfirmMultiple": "是否删除选中的 {{count}} 个项目?", "dragItems": "{{count}} 个项目", "cancel": "取消", "moveToTrash": "移至废纸篓", "moveToRecycleBin": "移至回收站", "moveConfirmTitle": "移动", "moveConfirmSingle": "是否将“{{name}}”移动到“{{dest}}”?", "moveConfirmMultiple": "是否将 {{count}} 个项目移动到“{{dest}}”?", "moveConfirmSingleToRoot": "是否将“{{name}}”移动到根目录?", "moveConfirmMultipleToRoot": "是否将 {{count}} 个项目移动到根目录?", "loading": "加载中...", "collapseFolders": "折叠文件夹", "refresh": "刷新", "addToChat": "添加到对话", "noProject": "未选择项目" };
16970
- const toolBubble = { "tool": "工具", "stop": "停止", "stopping": "停止中…" };
16970
+ const toolBubble = { "tool": "工具", "stop": "停止", "stopping": "停止中…", "result": "结果", "terminal": "终端" };
16971
16971
  const imageView = { "fallbackAlt": "图片" };
16972
16972
  const readonlyTerminal = { "noOutput": "无输出." };
16973
16973
  const message = { "validationFailed": "验证失败", "ok": "确定", "cancel": "取消", "confirm": "确认", "dialogTitle": "消息提示", "errorTitle": "错误" };
@@ -20724,10 +20724,20 @@ function calculateToolCallUpdate(state2, subSessionId, update2, displayId, recei
20724
20724
  message2.title = update2.title ?? "";
20725
20725
  }
20726
20726
  if (Object.prototype.hasOwnProperty.call(update2, "status") && update2.status != null) {
20727
- message2.status = update2.status;
20727
+ const next2 = update2.status;
20728
+ const current2 = message2.status;
20729
+ const order2 = { pending: 0, in_progress: 1, completed: 2, failed: 2 };
20730
+ if (current2 == null || order2[next2] >= order2[current2]) {
20731
+ message2.status = next2;
20732
+ }
20728
20733
  }
20729
20734
  if (Object.prototype.hasOwnProperty.call(update2, "content")) {
20730
- message2.content = update2.content ?? [];
20735
+ const newContent = update2.content ?? [];
20736
+ const hasDiff = message2.content?.some((c3) => c3.type === "diff") ?? false;
20737
+ const nextHasDiff = newContent.some((c3) => c3.type === "diff");
20738
+ if (!hasDiff || nextHasDiff) {
20739
+ message2.content = newContent;
20740
+ }
20731
20741
  }
20732
20742
  if (Object.prototype.hasOwnProperty.call(update2, "kind") && update2.kind != null) {
20733
20743
  message2.kind = update2.kind;
@@ -30993,35 +31003,35 @@ const createLucideIcon = (iconName, iconNode) => {
30993
31003
  Component.displayName = toPascalCase(iconName);
30994
31004
  return Component;
30995
31005
  };
30996
- const __iconNode$1u = [
31006
+ const __iconNode$1v = [
30997
31007
  ["path", { d: "M12 5v14", key: "s699le" }],
30998
31008
  ["path", { d: "m19 12-7 7-7-7", key: "1idqje" }]
30999
31009
  ];
31000
- const ArrowDown = createLucideIcon("arrow-down", __iconNode$1u);
31001
- const __iconNode$1t = [
31010
+ const ArrowDown = createLucideIcon("arrow-down", __iconNode$1v);
31011
+ const __iconNode$1u = [
31002
31012
  ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
31003
31013
  ["path", { d: "M19 12H5", key: "x3x0zl" }]
31004
31014
  ];
31005
- const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1t);
31006
- const __iconNode$1s = [
31015
+ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1u);
31016
+ const __iconNode$1t = [
31007
31017
  ["path", { d: "m16 3 4 4-4 4", key: "1x1c3m" }],
31008
31018
  ["path", { d: "M20 7H4", key: "zbl0bi" }],
31009
31019
  ["path", { d: "m8 21-4-4 4-4", key: "h9nckh" }],
31010
31020
  ["path", { d: "M4 17h16", key: "g4d7ey" }]
31011
31021
  ];
31012
- const ArrowRightLeft = createLucideIcon("arrow-right-left", __iconNode$1s);
31013
- const __iconNode$1r = [
31022
+ const ArrowRightLeft = createLucideIcon("arrow-right-left", __iconNode$1t);
31023
+ const __iconNode$1s = [
31014
31024
  ["path", { d: "M5 3h14", key: "7usisc" }],
31015
31025
  ["path", { d: "m18 13-6-6-6 6", key: "1kf1n9" }],
31016
31026
  ["path", { d: "M12 7v14", key: "1akyts" }]
31017
31027
  ];
31018
- const ArrowUpToLine = createLucideIcon("arrow-up-to-line", __iconNode$1r);
31019
- const __iconNode$1q = [
31028
+ const ArrowUpToLine = createLucideIcon("arrow-up-to-line", __iconNode$1s);
31029
+ const __iconNode$1r = [
31020
31030
  ["path", { d: "m5 12 7-7 7 7", key: "hav0vg" }],
31021
31031
  ["path", { d: "M12 19V5", key: "x0mq9r" }]
31022
31032
  ];
31023
- const ArrowUp = createLucideIcon("arrow-up", __iconNode$1q);
31024
- const __iconNode$1p = [
31033
+ const ArrowUp = createLucideIcon("arrow-up", __iconNode$1r);
31034
+ const __iconNode$1q = [
31025
31035
  [
31026
31036
  "path",
31027
31037
  {
@@ -31030,13 +31040,13 @@ const __iconNode$1p = [
31030
31040
  }
31031
31041
  ]
31032
31042
  ];
31033
- const Astroid = createLucideIcon("astroid", __iconNode$1p);
31034
- const __iconNode$1o = [
31043
+ const Astroid = createLucideIcon("astroid", __iconNode$1q);
31044
+ const __iconNode$1p = [
31035
31045
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
31036
31046
  ["path", { d: "M4.929 4.929 19.07 19.071", key: "196cmz" }]
31037
31047
  ];
31038
- const Ban = createLucideIcon("ban", __iconNode$1o);
31039
- const __iconNode$1n = [
31048
+ const Ban = createLucideIcon("ban", __iconNode$1p);
31049
+ const __iconNode$1o = [
31040
31050
  ["path", { d: "M12 7v6", key: "lw1j43" }],
31041
31051
  ["path", { d: "M15 10H9", key: "o6yqo3" }],
31042
31052
  [
@@ -31047,8 +31057,8 @@ const __iconNode$1n = [
31047
31057
  }
31048
31058
  ]
31049
31059
  ];
31050
- const BookmarkPlus = createLucideIcon("bookmark-plus", __iconNode$1n);
31051
- const __iconNode$1m = [
31060
+ const BookmarkPlus = createLucideIcon("bookmark-plus", __iconNode$1o);
31061
+ const __iconNode$1n = [
31052
31062
  ["path", { d: "M12 8V4H8", key: "hb8ula" }],
31053
31063
  ["rect", { width: "16", height: "12", x: "4", y: "8", rx: "2", key: "enze0r" }],
31054
31064
  ["path", { d: "M2 14h2", key: "vft8re" }],
@@ -31056,8 +31066,8 @@ const __iconNode$1m = [
31056
31066
  ["path", { d: "M15 13v2", key: "1xurst" }],
31057
31067
  ["path", { d: "M9 13v2", key: "rq6x2g" }]
31058
31068
  ];
31059
- const Bot = createLucideIcon("bot", __iconNode$1m);
31060
- const __iconNode$1l = [
31069
+ const Bot = createLucideIcon("bot", __iconNode$1n);
31070
+ const __iconNode$1m = [
31061
31071
  ["path", { d: "M12 18V5", key: "adv99a" }],
31062
31072
  ["path", { d: "M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4", key: "1e3is1" }],
31063
31073
  ["path", { d: "M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5", key: "1gqd8o" }],
@@ -31067,8 +31077,8 @@ const __iconNode$1l = [
31067
31077
  ["path", { d: "M6 18a4 4 0 0 1-2-7.464", key: "k1g0md" }],
31068
31078
  ["path", { d: "M6.003 5.125a4 4 0 0 0-2.526 5.77", key: "q97ue3" }]
31069
31079
  ];
31070
- const Brain = createLucideIcon("brain", __iconNode$1l);
31071
- const __iconNode$1k = [
31080
+ const Brain = createLucideIcon("brain", __iconNode$1m);
31081
+ const __iconNode$1l = [
31072
31082
  ["path", { d: "M8 2v3", key: "1ioesn" }],
31073
31083
  ["path", { d: "M16 2v3", key: "otl347" }],
31074
31084
  ["rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", key: "h1oib" }],
@@ -31080,61 +31090,61 @@ const __iconNode$1k = [
31080
31090
  ["path", { d: "M12 17h.01", key: "p32p05" }],
31081
31091
  ["path", { d: "M16 17h.01", key: "ql8jdd" }]
31082
31092
  ];
31083
- const CalendarDays = createLucideIcon("calendar-days", __iconNode$1k);
31084
- const __iconNode$1j = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
31085
- const Check = createLucideIcon("check", __iconNode$1j);
31086
- const __iconNode$1i = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
31087
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$1i);
31088
- const __iconNode$1h = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
31089
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$1h);
31090
- const __iconNode$1g = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
31091
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$1g);
31092
- const __iconNode$1f = [
31093
+ const CalendarDays = createLucideIcon("calendar-days", __iconNode$1l);
31094
+ const __iconNode$1k = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
31095
+ const Check = createLucideIcon("check", __iconNode$1k);
31096
+ const __iconNode$1j = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
31097
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$1j);
31098
+ const __iconNode$1i = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
31099
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$1i);
31100
+ const __iconNode$1h = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
31101
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$1h);
31102
+ const __iconNode$1g = [
31093
31103
  ["path", { d: "m7 20 5-5 5 5", key: "13a0gw" }],
31094
31104
  ["path", { d: "m7 4 5 5 5-5", key: "1kwcof" }]
31095
31105
  ];
31096
- const ChevronsDownUp = createLucideIcon("chevrons-down-up", __iconNode$1f);
31097
- const __iconNode$1e = [
31106
+ const ChevronsDownUp = createLucideIcon("chevrons-down-up", __iconNode$1g);
31107
+ const __iconNode$1f = [
31098
31108
  ["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
31099
31109
  ["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
31100
31110
  ];
31101
- const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1e);
31102
- const __iconNode$1d = [
31111
+ const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1f);
31112
+ const __iconNode$1e = [
31103
31113
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
31104
31114
  ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
31105
31115
  ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
31106
31116
  ];
31107
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$1d);
31108
- const __iconNode$1c = [
31117
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$1e);
31118
+ const __iconNode$1d = [
31109
31119
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
31110
31120
  ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
31111
31121
  ];
31112
- const CircleCheck = createLucideIcon("circle-check", __iconNode$1c);
31113
- const __iconNode$1b = [
31122
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$1d);
31123
+ const __iconNode$1c = [
31114
31124
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
31115
31125
  ["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
31116
31126
  ["path", { d: "M12 17h.01", key: "p32p05" }]
31117
31127
  ];
31118
- const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$1b);
31119
- const __iconNode$1a = [["circle", { cx: "12", cy: "12", r: "6", key: "1vlfrh" }]];
31120
- const CircleSmall = createLucideIcon("circle-small", __iconNode$1a);
31121
- const __iconNode$19 = [
31128
+ const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$1c);
31129
+ const __iconNode$1b = [["circle", { cx: "12", cy: "12", r: "6", key: "1vlfrh" }]];
31130
+ const CircleSmall = createLucideIcon("circle-small", __iconNode$1b);
31131
+ const __iconNode$1a = [
31122
31132
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
31123
31133
  ["path", { d: "m15 9-6 6", key: "1uzhvr" }],
31124
31134
  ["path", { d: "m9 9 6 6", key: "z0biqf" }]
31125
31135
  ];
31126
- const CircleX = createLucideIcon("circle-x", __iconNode$19);
31127
- const __iconNode$18 = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
31128
- const Circle = createLucideIcon("circle", __iconNode$18);
31129
- const __iconNode$17 = [
31136
+ const CircleX = createLucideIcon("circle-x", __iconNode$1a);
31137
+ const __iconNode$19 = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
31138
+ const Circle = createLucideIcon("circle", __iconNode$19);
31139
+ const __iconNode$18 = [
31130
31140
  ["path", { d: "M11 14h10", key: "1w8e9d" }],
31131
31141
  ["path", { d: "M16 4h2a2 2 0 0 1 2 2v1.344", key: "1e62lh" }],
31132
31142
  ["path", { d: "m17 18 4-4-4-4", key: "z2g111" }],
31133
31143
  ["path", { d: "M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 1.793-1.113", key: "bjbb7m" }],
31134
31144
  ["rect", { x: "8", y: "2", width: "8", height: "4", rx: "1", key: "ublpy" }]
31135
31145
  ];
31136
- const ClipboardPaste = createLucideIcon("clipboard-paste", __iconNode$17);
31137
- const __iconNode$16 = [
31146
+ const ClipboardPaste = createLucideIcon("clipboard-paste", __iconNode$18);
31147
+ const __iconNode$17 = [
31138
31148
  ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
31139
31149
  [
31140
31150
  "path",
@@ -31144,65 +31154,65 @@ const __iconNode$16 = [
31144
31154
  }
31145
31155
  ]
31146
31156
  ];
31147
- const Clipboard = createLucideIcon("clipboard", __iconNode$16);
31148
- const __iconNode$15 = [
31157
+ const Clipboard = createLucideIcon("clipboard", __iconNode$17);
31158
+ const __iconNode$16 = [
31149
31159
  ["path", { d: "M12 6v6l4 2", key: "mmk7yg" }],
31150
31160
  ["path", { d: "M22 12a10 10 0 1 0-11 9.95", key: "17dhok" }],
31151
31161
  ["path", { d: "m22 16-5.5 5.5L14 19", key: "1eibut" }]
31152
31162
  ];
31153
- const ClockCheck = createLucideIcon("clock-check", __iconNode$15);
31154
- const __iconNode$14 = [
31163
+ const ClockCheck = createLucideIcon("clock-check", __iconNode$16);
31164
+ const __iconNode$15 = [
31155
31165
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
31156
31166
  ["path", { d: "M12 6v6l4 2", key: "mmk7yg" }]
31157
31167
  ];
31158
- const Clock = createLucideIcon("clock", __iconNode$14);
31159
- const __iconNode$13 = [
31168
+ const Clock = createLucideIcon("clock", __iconNode$15);
31169
+ const __iconNode$14 = [
31160
31170
  ["path", { d: "m16 18 6-6-6-6", key: "eg8j8" }],
31161
31171
  ["path", { d: "m8 6-6 6 6 6", key: "ppft3o" }]
31162
31172
  ];
31163
- const Code = createLucideIcon("code", __iconNode$13);
31164
- const __iconNode$12 = [
31173
+ const Code = createLucideIcon("code", __iconNode$14);
31174
+ const __iconNode$13 = [
31165
31175
  ["line", { x1: "15", x2: "15", y1: "12", y2: "18", key: "1p7wdc" }],
31166
31176
  ["line", { x1: "12", x2: "18", y1: "15", y2: "15", key: "1nscbv" }],
31167
31177
  ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
31168
31178
  ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
31169
31179
  ];
31170
- const CopyPlus = createLucideIcon("copy-plus", __iconNode$12);
31171
- const __iconNode$11 = [
31180
+ const CopyPlus = createLucideIcon("copy-plus", __iconNode$13);
31181
+ const __iconNode$12 = [
31172
31182
  ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
31173
31183
  ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
31174
31184
  ];
31175
- const Copy = createLucideIcon("copy", __iconNode$11);
31176
- const __iconNode$10 = [
31185
+ const Copy = createLucideIcon("copy", __iconNode$12);
31186
+ const __iconNode$11 = [
31177
31187
  ["path", { d: "M12 15V3", key: "m9g1x1" }],
31178
31188
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
31179
31189
  ["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
31180
31190
  ];
31181
- const Download = createLucideIcon("download", __iconNode$10);
31182
- const __iconNode$$ = [
31191
+ const Download = createLucideIcon("download", __iconNode$11);
31192
+ const __iconNode$10 = [
31183
31193
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
31184
31194
  ["path", { d: "M12 2a7 7 0 1 0 10 10", key: "1yuj32" }]
31185
31195
  ];
31186
- const Eclipse = createLucideIcon("eclipse", __iconNode$$);
31187
- const __iconNode$_ = [
31196
+ const Eclipse = createLucideIcon("eclipse", __iconNode$10);
31197
+ const __iconNode$$ = [
31188
31198
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
31189
31199
  ["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
31190
31200
  ["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
31191
31201
  ];
31192
- const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$_);
31193
- const __iconNode$Z = [
31202
+ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$$);
31203
+ const __iconNode$_ = [
31194
31204
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
31195
31205
  ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
31196
31206
  ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
31197
31207
  ];
31198
- const Ellipsis = createLucideIcon("ellipsis", __iconNode$Z);
31199
- const __iconNode$Y = [
31208
+ const Ellipsis = createLucideIcon("ellipsis", __iconNode$_);
31209
+ const __iconNode$Z = [
31200
31210
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
31201
31211
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
31202
31212
  ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
31203
31213
  ];
31204
- const ExternalLink = createLucideIcon("external-link", __iconNode$Y);
31205
- const __iconNode$X = [
31214
+ const ExternalLink = createLucideIcon("external-link", __iconNode$Z);
31215
+ const __iconNode$Y = [
31206
31216
  [
31207
31217
  "path",
31208
31218
  {
@@ -31214,8 +31224,8 @@ const __iconNode$X = [
31214
31224
  ["path", { d: "M10 12.5 8 15l2 2.5", key: "1tg20x" }],
31215
31225
  ["path", { d: "m14 12.5 2 2.5-2 2.5", key: "yinavb" }]
31216
31226
  ];
31217
- const FileCode = createLucideIcon("file-code", __iconNode$X);
31218
- const __iconNode$W = [
31227
+ const FileCode = createLucideIcon("file-code", __iconNode$Y);
31228
+ const __iconNode$X = [
31219
31229
  [
31220
31230
  "path",
31221
31231
  {
@@ -31227,8 +31237,8 @@ const __iconNode$W = [
31227
31237
  ["path", { d: "M9 15h6", key: "cctwl0" }],
31228
31238
  ["path", { d: "M12 18v-6", key: "17g6i2" }]
31229
31239
  ];
31230
- const FilePlus = createLucideIcon("file-plus", __iconNode$W);
31231
- const __iconNode$V = [
31240
+ const FilePlus = createLucideIcon("file-plus", __iconNode$X);
31241
+ const __iconNode$W = [
31232
31242
  [
31233
31243
  "path",
31234
31244
  {
@@ -31241,8 +31251,8 @@ const __iconNode$V = [
31241
31251
  ["path", { d: "M16 13H8", key: "t4e002" }],
31242
31252
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
31243
31253
  ];
31244
- const FileText = createLucideIcon("file-text", __iconNode$V);
31245
- const __iconNode$U = [
31254
+ const FileText = createLucideIcon("file-text", __iconNode$W);
31255
+ const __iconNode$V = [
31246
31256
  [
31247
31257
  "path",
31248
31258
  {
@@ -31252,8 +31262,8 @@ const __iconNode$U = [
31252
31262
  ],
31253
31263
  ["path", { d: "M2 10h20", key: "1ir3d8" }]
31254
31264
  ];
31255
- const FolderClosed = createLucideIcon("folder-closed", __iconNode$U);
31256
- const __iconNode$T = [
31265
+ const FolderClosed = createLucideIcon("folder-closed", __iconNode$V);
31266
+ const __iconNode$U = [
31257
31267
  [
31258
31268
  "path",
31259
31269
  {
@@ -31262,8 +31272,8 @@ const __iconNode$T = [
31262
31272
  }
31263
31273
  ]
31264
31274
  ];
31265
- const FolderOpen = createLucideIcon("folder-open", __iconNode$T);
31266
- const __iconNode$S = [
31275
+ const FolderOpen = createLucideIcon("folder-open", __iconNode$U);
31276
+ const __iconNode$T = [
31267
31277
  ["path", { d: "M12 10v6", key: "1bos4e" }],
31268
31278
  ["path", { d: "M9 13h6", key: "1uhe8q" }],
31269
31279
  [
@@ -31274,8 +31284,8 @@ const __iconNode$S = [
31274
31284
  }
31275
31285
  ]
31276
31286
  ];
31277
- const FolderPlus = createLucideIcon("folder-plus", __iconNode$S);
31278
- const __iconNode$R = [
31287
+ const FolderPlus = createLucideIcon("folder-plus", __iconNode$T);
31288
+ const __iconNode$S = [
31279
31289
  [
31280
31290
  "path",
31281
31291
  {
@@ -31284,8 +31294,8 @@ const __iconNode$R = [
31284
31294
  }
31285
31295
  ]
31286
31296
  ];
31287
- const Folder = createLucideIcon("folder", __iconNode$R);
31288
- const __iconNode$Q = [
31297
+ const Folder = createLucideIcon("folder", __iconNode$S);
31298
+ const __iconNode$R = [
31289
31299
  [
31290
31300
  "path",
31291
31301
  {
@@ -31298,25 +31308,25 @@ const __iconNode$Q = [
31298
31308
  { d: "M3 8.268a2 2 0 0 0-1 1.738V19a2 2 0 0 0 2 2h11a2 2 0 0 0 1.732-1", key: "yxbcw3" }
31299
31309
  ]
31300
31310
  ];
31301
- const Folders = createLucideIcon("folders", __iconNode$Q);
31302
- const __iconNode$P = [
31311
+ const Folders = createLucideIcon("folders", __iconNode$R);
31312
+ const __iconNode$Q = [
31303
31313
  ["path", { d: "m12 14 4-4", key: "9kzdfg" }],
31304
31314
  ["path", { d: "M3.34 19a10 10 0 1 1 17.32 0", key: "19p75a" }]
31305
31315
  ];
31306
- const Gauge = createLucideIcon("gauge", __iconNode$P);
31307
- const __iconNode$O = [
31316
+ const Gauge = createLucideIcon("gauge", __iconNode$Q);
31317
+ const __iconNode$P = [
31308
31318
  ["path", { d: "M15 6a9 9 0 0 0-9 9V3", key: "1cii5b" }],
31309
31319
  ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
31310
31320
  ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }]
31311
31321
  ];
31312
- const GitBranch = createLucideIcon("git-branch", __iconNode$O);
31313
- const __iconNode$N = [
31322
+ const GitBranch = createLucideIcon("git-branch", __iconNode$P);
31323
+ const __iconNode$O = [
31314
31324
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
31315
31325
  ["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
31316
31326
  ["path", { d: "M2 12h20", key: "9i4pu4" }]
31317
31327
  ];
31318
- const Globe = createLucideIcon("globe", __iconNode$N);
31319
- const __iconNode$M = [
31328
+ const Globe = createLucideIcon("globe", __iconNode$O);
31329
+ const __iconNode$N = [
31320
31330
  ["circle", { cx: "9", cy: "12", r: "1", key: "1vctgf" }],
31321
31331
  ["circle", { cx: "9", cy: "5", r: "1", key: "hp0tcf" }],
31322
31332
  ["circle", { cx: "9", cy: "19", r: "1", key: "fkjjf6" }],
@@ -31324,8 +31334,8 @@ const __iconNode$M = [
31324
31334
  ["circle", { cx: "15", cy: "5", r: "1", key: "19l28e" }],
31325
31335
  ["circle", { cx: "15", cy: "19", r: "1", key: "f4zoj3" }]
31326
31336
  ];
31327
- const GripVertical = createLucideIcon("grip-vertical", __iconNode$M);
31328
- const __iconNode$L = [
31337
+ const GripVertical = createLucideIcon("grip-vertical", __iconNode$N);
31338
+ const __iconNode$M = [
31329
31339
  ["path", { d: "m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9", key: "1hayfq" }],
31330
31340
  ["path", { d: "m18 15 4-4", key: "16gjal" }],
31331
31341
  [
@@ -31336,8 +31346,8 @@ const __iconNode$L = [
31336
31346
  }
31337
31347
  ]
31338
31348
  ];
31339
- const Hammer = createLucideIcon("hammer", __iconNode$L);
31340
- const __iconNode$K = [
31349
+ const Hammer = createLucideIcon("hammer", __iconNode$M);
31350
+ const __iconNode$L = [
31341
31351
  ["path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8", key: "5wwlr5" }],
31342
31352
  [
31343
31353
  "path",
@@ -31347,27 +31357,27 @@ const __iconNode$K = [
31347
31357
  }
31348
31358
  ]
31349
31359
  ];
31350
- const House = createLucideIcon("house", __iconNode$K);
31351
- const __iconNode$J = [
31360
+ const House = createLucideIcon("house", __iconNode$L);
31361
+ const __iconNode$K = [
31352
31362
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
31353
31363
  ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }],
31354
31364
  ["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }]
31355
31365
  ];
31356
- const Image$1 = createLucideIcon("image", __iconNode$J);
31357
- const __iconNode$I = [
31366
+ const Image$1 = createLucideIcon("image", __iconNode$K);
31367
+ const __iconNode$J = [
31358
31368
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
31359
31369
  ["path", { d: "M12 16v-4", key: "1dtifu" }],
31360
31370
  ["path", { d: "M12 8h.01", key: "e9boi3" }]
31361
31371
  ];
31362
- const Info$1 = createLucideIcon("info", __iconNode$I);
31363
- const __iconNode$H = [
31372
+ const Info$1 = createLucideIcon("info", __iconNode$J);
31373
+ const __iconNode$I = [
31364
31374
  ["path", { d: "m16 6 4 14", key: "ji33uf" }],
31365
31375
  ["path", { d: "M12 6v14", key: "1n7gus" }],
31366
31376
  ["path", { d: "M8 8v12", key: "1gg7y9" }],
31367
31377
  ["path", { d: "M4 4v16", key: "6qkkli" }]
31368
31378
  ];
31369
- const Library = createLucideIcon("library", __iconNode$H);
31370
- const __iconNode$G = [
31379
+ const Library = createLucideIcon("library", __iconNode$I);
31380
+ const __iconNode$H = [
31371
31381
  [
31372
31382
  "path",
31373
31383
  {
@@ -31378,20 +31388,27 @@ const __iconNode$G = [
31378
31388
  ["path", { d: "M9 18h6", key: "x1upvd" }],
31379
31389
  ["path", { d: "M10 22h4", key: "ceow96" }]
31380
31390
  ];
31381
- const Lightbulb = createLucideIcon("lightbulb", __iconNode$G);
31382
- const __iconNode$F = [
31391
+ const Lightbulb = createLucideIcon("lightbulb", __iconNode$H);
31392
+ const __iconNode$G = [
31383
31393
  ["path", { d: "M9 17H7A5 5 0 0 1 7 7h2", key: "8i5ue5" }],
31384
31394
  ["path", { d: "M15 7h2a5 5 0 1 1 0 10h-2", key: "1b9ql8" }],
31385
31395
  ["line", { x1: "8", x2: "16", y1: "12", y2: "12", key: "1jonct" }]
31386
31396
  ];
31387
- const Link2 = createLucideIcon("link-2", __iconNode$F);
31388
- const __iconNode$E = [
31397
+ const Link2 = createLucideIcon("link-2", __iconNode$G);
31398
+ const __iconNode$F = [
31389
31399
  ["path", { d: "M9 17H7A5 5 0 0 1 7 7", key: "10o201" }],
31390
31400
  ["path", { d: "M15 7h2a5 5 0 0 1 4 8", key: "1d3206" }],
31391
31401
  ["line", { x1: "8", x2: "12", y1: "12", y2: "12", key: "rvw6j4" }],
31392
31402
  ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }]
31393
31403
  ];
31394
- const Link2Off = createLucideIcon("link-2-off", __iconNode$E);
31404
+ const Link2Off = createLucideIcon("link-2-off", __iconNode$F);
31405
+ const __iconNode$E = [
31406
+ ["path", { d: "M16 5H3", key: "m91uny" }],
31407
+ ["path", { d: "M16 12H3", key: "1a2rj7" }],
31408
+ ["path", { d: "M11 19H3", key: "zflm78" }],
31409
+ ["path", { d: "m15 18 2 2 4-4", key: "1szwhi" }]
31410
+ ];
31411
+ const ListCheck = createLucideIcon("list-check", __iconNode$E);
31395
31412
  const __iconNode$D = [
31396
31413
  ["path", { d: "M3 5h8", key: "18g2rq" }],
31397
31414
  ["path", { d: "M3 12h8", key: "1xfjp6" }],
@@ -35699,9 +35716,15 @@ function GlobalTextContextMenu() {
35699
35716
  })
35700
35717
  });
35701
35718
  requestAnimationFrame(() => {
35702
- const selection2 = window.getSelection()?.toString() || "";
35703
- const nextHasSelection = selection2.trim().length > 0;
35719
+ const selectionObj = window.getSelection();
35720
+ const selection2 = selectionObj?.toString() || "";
35704
35721
  const nextIsEditable = editable;
35722
+ let nextHasSelection = selection2.trim().length > 0;
35723
+ if (nextHasSelection && selectionObj && target instanceof Node) {
35724
+ if (!selectionObj.containsNode(target, true)) {
35725
+ nextHasSelection = false;
35726
+ }
35727
+ }
35705
35728
  if (!nextHasSelection && !nextIsEditable) {
35706
35729
  setOpen(false);
35707
35730
  return;
@@ -38445,280 +38468,6 @@ const electron = {
38445
38468
  return window.fello.onUpdater(handler);
38446
38469
  }
38447
38470
  };
38448
- function ContextMenuRoot(props) {
38449
- const [anchor2, setAnchor] = reactExports.useState({
38450
- getBoundingClientRect() {
38451
- return DOMRect.fromRect({
38452
- width: 0,
38453
- height: 0,
38454
- x: 0,
38455
- y: 0
38456
- });
38457
- }
38458
- });
38459
- const backdropRef = reactExports.useRef(null);
38460
- const internalBackdropRef = reactExports.useRef(null);
38461
- const actionsRef = reactExports.useRef(null);
38462
- const positionerRef = reactExports.useRef(null);
38463
- const allowMouseUpTriggerRef = reactExports.useRef(true);
38464
- const initialCursorPointRef = reactExports.useRef(null);
38465
- const id32 = useId();
38466
- const contextValue = reactExports.useMemo(() => ({
38467
- anchor: anchor2,
38468
- setAnchor,
38469
- actionsRef,
38470
- backdropRef,
38471
- internalBackdropRef,
38472
- positionerRef,
38473
- allowMouseUpTriggerRef,
38474
- initialCursorPointRef,
38475
- rootId: id32
38476
- }), [anchor2, id32]);
38477
- return /* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuRootContext.Provider, {
38478
- value: contextValue,
38479
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(MenuRootContext.Provider, {
38480
- value: void 0,
38481
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(MenuRoot, {
38482
- ...props
38483
- })
38484
- })
38485
- });
38486
- }
38487
- const LONG_PRESS_DELAY = 500;
38488
- const ContextMenuTrigger$1 = /* @__PURE__ */ reactExports.forwardRef(function ContextMenuTrigger2(componentProps, forwardedRef) {
38489
- const {
38490
- render: render4,
38491
- className,
38492
- style: style2,
38493
- ...elementProps
38494
- } = componentProps;
38495
- const {
38496
- setAnchor,
38497
- actionsRef,
38498
- internalBackdropRef,
38499
- backdropRef,
38500
- positionerRef,
38501
- allowMouseUpTriggerRef,
38502
- initialCursorPointRef,
38503
- rootId
38504
- } = useContextMenuRootContext(false);
38505
- const {
38506
- store
38507
- } = useMenuRootContext(false);
38508
- const open2 = store.useState("open");
38509
- const disabled2 = store.useState("disabled");
38510
- const triggerRef = reactExports.useRef(null);
38511
- const touchPositionRef = reactExports.useRef(null);
38512
- const longPressTimeout = useTimeout();
38513
- const allowMouseUpTimeout = useTimeout();
38514
- const allowMouseUpRef = reactExports.useRef(false);
38515
- const mouseUpAbortControllerRef = reactExports.useRef(null);
38516
- function handleLongPress(x2, y4, event) {
38517
- const isTouchEvent2 = event.type.startsWith("touch");
38518
- initialCursorPointRef.current = {
38519
- x: x2,
38520
- y: y4
38521
- };
38522
- setAnchor({
38523
- getBoundingClientRect() {
38524
- return DOMRect.fromRect({
38525
- width: isTouchEvent2 ? 10 : 0,
38526
- height: isTouchEvent2 ? 10 : 0,
38527
- x: x2,
38528
- y: y4
38529
- });
38530
- }
38531
- });
38532
- allowMouseUpRef.current = false;
38533
- actionsRef.current?.setOpen(true, createChangeEventDetails(triggerPress, event));
38534
- allowMouseUpTimeout.start(LONG_PRESS_DELAY, () => {
38535
- allowMouseUpRef.current = true;
38536
- });
38537
- }
38538
- function handleContextMenu(event) {
38539
- if (disabled2) {
38540
- return;
38541
- }
38542
- allowMouseUpTriggerRef.current = true;
38543
- stopEvent$1(event);
38544
- handleLongPress(event.clientX, event.clientY, event.nativeEvent);
38545
- const doc = ownerDocument(triggerRef.current);
38546
- mouseUpAbortControllerRef.current?.abort();
38547
- const mouseUpAbortController = new AbortController();
38548
- mouseUpAbortControllerRef.current = mouseUpAbortController;
38549
- doc.addEventListener("mouseup", (mouseEvent) => {
38550
- allowMouseUpTriggerRef.current = false;
38551
- if (!allowMouseUpRef.current) {
38552
- return;
38553
- }
38554
- allowMouseUpTimeout.clear();
38555
- allowMouseUpRef.current = false;
38556
- const mouseUpTarget = getTarget(mouseEvent);
38557
- if (contains(positionerRef.current, mouseUpTarget)) {
38558
- return;
38559
- }
38560
- if (rootId && mouseUpTarget && findRootOwnerId(mouseUpTarget) === rootId) {
38561
- return;
38562
- }
38563
- actionsRef.current?.setOpen(false, createChangeEventDetails(cancelOpen, mouseEvent));
38564
- }, {
38565
- once: true,
38566
- signal: mouseUpAbortController.signal
38567
- });
38568
- }
38569
- function cancelLongPress() {
38570
- longPressTimeout.clear();
38571
- touchPositionRef.current = null;
38572
- }
38573
- function handleTouchStart(event) {
38574
- if (disabled2) {
38575
- cancelLongPress();
38576
- return;
38577
- }
38578
- allowMouseUpTriggerRef.current = false;
38579
- if (event.touches.length !== 1) {
38580
- cancelLongPress();
38581
- return;
38582
- }
38583
- event.stopPropagation();
38584
- const touch = event.touches[0];
38585
- const touchPosition = {
38586
- x: touch.clientX,
38587
- y: touch.clientY
38588
- };
38589
- touchPositionRef.current = touchPosition;
38590
- longPressTimeout.start(LONG_PRESS_DELAY, () => {
38591
- handleLongPress(touchPosition.x, touchPosition.y, event.nativeEvent);
38592
- });
38593
- }
38594
- function handleTouchMove(event) {
38595
- if (event.touches.length !== 1) {
38596
- cancelLongPress();
38597
- return;
38598
- }
38599
- if (longPressTimeout.isStarted() && touchPositionRef.current) {
38600
- const touch = event.touches[0];
38601
- const moveThreshold = 10;
38602
- const deltaX = Math.abs(touch.clientX - touchPositionRef.current.x);
38603
- const deltaY = Math.abs(touch.clientY - touchPositionRef.current.y);
38604
- if (deltaX > moveThreshold || deltaY > moveThreshold) {
38605
- cancelLongPress();
38606
- }
38607
- }
38608
- }
38609
- reactExports.useEffect(() => () => {
38610
- mouseUpAbortControllerRef.current?.abort();
38611
- }, []);
38612
- reactExports.useEffect(() => {
38613
- function handleDocumentContextMenu(event) {
38614
- if (disabled2) {
38615
- return;
38616
- }
38617
- const target = getTarget(event);
38618
- const targetElement = target;
38619
- if (contains(triggerRef.current, targetElement) || contains(internalBackdropRef.current, targetElement) || contains(backdropRef.current, targetElement)) {
38620
- event.preventDefault();
38621
- }
38622
- }
38623
- const doc = ownerDocument(triggerRef.current);
38624
- return addEventListener(doc, "contextmenu", handleDocumentContextMenu);
38625
- }, [backdropRef, disabled2, internalBackdropRef]);
38626
- const state2 = {
38627
- open: open2
38628
- };
38629
- const element2 = useRenderElement("div", componentProps, {
38630
- state: state2,
38631
- ref: [triggerRef, forwardedRef],
38632
- props: [{
38633
- onContextMenu: handleContextMenu,
38634
- onTouchStart: handleTouchStart,
38635
- onTouchMove: handleTouchMove,
38636
- onTouchEnd: cancelLongPress,
38637
- onTouchCancel: cancelLongPress,
38638
- style: {
38639
- WebkitTouchCallout: "none"
38640
- }
38641
- }, elementProps],
38642
- stateAttributesMapping: pressableTriggerOpenStateMapping
38643
- });
38644
- return element2;
38645
- });
38646
- function ContextMenu({ ...props }) {
38647
- return /* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuRoot, { "data-slot": "context-menu", ...props });
38648
- }
38649
- function ContextMenuTrigger({
38650
- className,
38651
- ...props
38652
- }) {
38653
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
38654
- ContextMenuTrigger$1,
38655
- {
38656
- "data-slot": "context-menu-trigger",
38657
- className: cn$8("select-none", className),
38658
- ...props
38659
- }
38660
- );
38661
- }
38662
- function ContextMenuContent({
38663
- className,
38664
- align = "start",
38665
- alignOffset = 4,
38666
- side = "right",
38667
- sideOffset = 0,
38668
- ...props
38669
- }) {
38670
- return /* @__PURE__ */ jsxRuntimeExports.jsx(MenuPortal, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
38671
- MenuPositioner,
38672
- {
38673
- className: "isolate z-50 outline-none",
38674
- align,
38675
- alignOffset,
38676
- side,
38677
- sideOffset,
38678
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(
38679
- MenuPopup,
38680
- {
38681
- "data-slot": "context-menu-content",
38682
- className: cn$8("z-50 max-h-(--available-height) min-w-38 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover py-1 px-1 space-y-0.5 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
38683
- ...props
38684
- }
38685
- )
38686
- }
38687
- ) });
38688
- }
38689
- function ContextMenuItem({
38690
- className,
38691
- inset,
38692
- variant = "default",
38693
- ...props
38694
- }) {
38695
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
38696
- MenuItem,
38697
- {
38698
- "data-slot": "context-menu-item",
38699
- "data-inset": inset,
38700
- "data-variant": variant,
38701
- className: cn$8(
38702
- "group/context-menu-item relative flex cursor-default items-center gap-1.5 rounded-sm px-1.5 py-1 text-xs text-muted-foreground/90 outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive",
38703
- className
38704
- ),
38705
- ...props
38706
- }
38707
- );
38708
- }
38709
- function ContextMenuSeparator({
38710
- className,
38711
- ...props
38712
- }) {
38713
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
38714
- Separator$1,
38715
- {
38716
- "data-slot": "context-menu-separator",
38717
- className: cn$8("-mx-1 my-1 h-px bg-border", className),
38718
- ...props
38719
- }
38720
- );
38721
- }
38722
38471
  function useRender(params) {
38723
38472
  return useRenderElement(params.defaultTagName ?? "div", params, params);
38724
38473
  }
@@ -43303,6 +43052,12 @@ function formatRelativeTime(timestamp2, language) {
43303
43052
  if (days < 30) return rtf.format(-days, "day");
43304
43053
  return new Date(timestamp2).toLocaleDateString(language);
43305
43054
  }
43055
+ function projectHoverId(id32) {
43056
+ return `p:${id32}`;
43057
+ }
43058
+ function sessionHoverId(id32) {
43059
+ return `s:${id32}`;
43060
+ }
43306
43061
  function Sidebar() {
43307
43062
  const { t: t2, i18n } = useTranslation();
43308
43063
  const navigate = useNavigate();
@@ -43379,8 +43134,7 @@ function Sidebar() {
43379
43134
  [configuredAgents]
43380
43135
  );
43381
43136
  const [expandedProjects, setExpandedProjects] = reactExports.useState({});
43382
- const [openProjectMenuId, setOpenProjectMenuId] = reactExports.useState(null);
43383
- const [openSessionMenuId, setOpenSessionMenuId] = reactExports.useState(null);
43137
+ const [hoverId, setHoverId] = reactExports.useState(null);
43384
43138
  const { prompt, confirm: confirm2, toast: toast2 } = useMessage();
43385
43139
  const showMacTrafficLightSpace = isMacApp && !isFullScreen;
43386
43140
  const refreshData = async () => {
@@ -43662,25 +43416,22 @@ function Sidebar() {
43662
43416
  /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "min-h-0 flex-1", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-0.5 p-1.5", children: sortedProjects.map((project) => {
43663
43417
  const projectSessions = sessionsByProject[project.id] ?? [];
43664
43418
  const expanded = isProjectExpanded(project.id);
43665
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-0.5", children: [
43419
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-0.5 group", children: [
43666
43420
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
43667
- ContextMenu,
43421
+ HoverCard,
43668
43422
  {
43423
+ open: hoverId === projectHoverId(project.id),
43669
43424
  onOpenChange: (open2) => {
43670
- setOpenProjectMenuId(
43671
- (prev2) => open2 ? project.id : prev2 === project.id ? null : prev2
43425
+ setHoverId(
43426
+ (prev2) => open2 ? projectHoverId(project.id) : prev2 === projectHoverId(project.id) ? null : prev2
43672
43427
  );
43673
43428
  },
43674
43429
  children: [
43675
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
43676
- ContextMenuTrigger,
43430
+ /* @__PURE__ */ jsxRuntimeExports.jsx(HoverCardTrigger, { render: /* @__PURE__ */ jsxRuntimeExports.jsx("div", {}), delay: 50, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
43431
+ "div",
43677
43432
  {
43678
- render: /* @__PURE__ */ jsxRuntimeExports.jsx("div", {}),
43679
- className: `group flex h-7 cursor-default items-center gap-1.5 rounded-md px-1.5 text-xs font-normal text-sidebar-foreground/45 hover:bg-sidebar-accent/25 hover:text-sidebar-foreground/80 ${openProjectMenuId === project.id ? "bg-sidebar-accent/25 text-sidebar-foreground/80" : ""}`,
43680
43433
  onClick: () => toggleProject(project.id),
43681
- onContextMenu: (e11) => {
43682
- e11.stopPropagation();
43683
- },
43434
+ className: `flex h-7 cursor-default items-center gap-1.5 rounded-md px-1.5 text-xs font-normal transition-colors text-sidebar-foreground/45 hover:bg-sidebar-accent/25 hover:text-sidebar-foreground/80 ${hoverId === projectHoverId(project.id) ? "bg-sidebar-accent/25 text-sidebar-foreground/80" : ""}`,
43684
43435
  children: [
43685
43436
  expanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(FolderOpen, { className: "size-3.5" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(FolderClosed, { className: "size-3.5" }),
43686
43437
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-1 truncate leading-normal font-normal uppercase select-none", children: project.title }),
@@ -43692,318 +43443,271 @@ function Sidebar() {
43692
43443
  e11.stopPropagation();
43693
43444
  openNewSessionDialog(project.id);
43694
43445
  },
43695
- className: `flex size-4 items-center justify-center rounded-sm text-sidebar-foreground/40 hover:bg-sidebar-accent/25 hover:text-sidebar-foreground/70 ${projectSessions.length === 0 ? "opacity-100" : "opacity-0 group-hover:opacity-100"}`,
43446
+ className: `flex size-4 items-center justify-center rounded-sm text-sidebar-foreground/40 hover:bg-sidebar-accent/25 hover:text-sidebar-foreground/70 transition-opacity duration-300 ${projectSessions.length === 0 ? "opacity-100" : "opacity-0 group-hover:opacity-100"}`,
43696
43447
  "aria-label": t2("sidebar.createChatInProject", {
43697
43448
  defaultValue: "Create chat in {{title}}",
43698
43449
  title: project.title
43699
43450
  }),
43700
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(MessageCirclePlus, {})
43451
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(MessageCirclePlus, { className: "size-3.5" })
43701
43452
  }
43702
43453
  )
43703
43454
  ]
43704
43455
  }
43705
- ),
43706
- /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuContent, { onClick: (e11) => e11.stopPropagation(), className: "w-auto", children: [
43707
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
43708
- ContextMenuItem,
43709
- {
43710
- onClick: (e11) => {
43711
- e11.stopPropagation();
43712
- openNewSessionDialog(project.id);
43713
- },
43714
- children: [
43715
- /* @__PURE__ */ jsxRuntimeExports.jsx(MessageCirclePlus, {}),
43716
- t2("sidebar.newChat", "New Chat")
43717
- ]
43718
- }
43719
- ),
43720
- /* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuSeparator, {}),
43721
- !isWebUI && /* @__PURE__ */ jsxRuntimeExports.jsxs(
43722
- ContextMenuItem,
43723
- {
43724
- onClick: (e11) => {
43725
- e11.stopPropagation();
43726
- void handleRevealProjectInFinder(project);
43727
- },
43728
- children: [
43729
- /* @__PURE__ */ jsxRuntimeExports.jsx(FolderOpen, {}),
43730
- t2("sidebar.revealInFinder")
43731
- ]
43732
- }
43733
- ),
43734
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
43735
- ContextMenuItem,
43736
- {
43737
- onClick: (e11) => {
43738
- e11.stopPropagation();
43739
- handleRenameProject(project);
43740
- },
43741
- children: [
43742
- /* @__PURE__ */ jsxRuntimeExports.jsx(Pencil, {}),
43743
- t2("sidebar.rename")
43744
- ]
43745
- }
43746
- ),
43747
- /* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuSeparator, {}),
43748
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
43749
- ContextMenuItem,
43750
- {
43751
- variant: "destructive",
43752
- onClick: (e11) => {
43753
- e11.stopPropagation();
43754
- handleDeleteProject(project);
43755
- },
43756
- children: [
43757
- /* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, {}),
43758
- t2("sidebar.delete")
43759
- ]
43760
- }
43761
- )
43762
- ] })
43456
+ ) }),
43457
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
43458
+ HoverCardContent,
43459
+ {
43460
+ side: "right",
43461
+ align: "start",
43462
+ sideOffset: 12,
43463
+ alignOffset: 1,
43464
+ className: "max-w-60 min-w-48 w-auto p-3",
43465
+ children: [
43466
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2", children: [
43467
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm font-medium leading-snug", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: project.title }) }),
43468
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground py-px", children: [
43469
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Folder, { className: "size-3 shrink-0" }),
43470
+ isWebUI ? /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", title: project.cwd, children: project.cwd }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
43471
+ "button",
43472
+ {
43473
+ type: "button",
43474
+ onClick: () => void handleRevealProjectInFinder(project),
43475
+ title: project.cwd,
43476
+ className: "min-w-0 flex-1 truncate text-left transition-colors hover:text-foreground",
43477
+ children: project.cwd
43478
+ }
43479
+ )
43480
+ ] })
43481
+ ] }),
43482
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Separator, { className: "my-2.5" }),
43483
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col -mx-2 -my-1", children: [
43484
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
43485
+ "button",
43486
+ {
43487
+ type: "button",
43488
+ onClick: () => openNewSessionDialog(project.id),
43489
+ className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
43490
+ children: [
43491
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MessageCirclePlus, { className: "size-3 shrink-0" }),
43492
+ t2("sidebar.newChat", "New Chat")
43493
+ ]
43494
+ }
43495
+ ),
43496
+ !isWebUI && /* @__PURE__ */ jsxRuntimeExports.jsxs(
43497
+ "button",
43498
+ {
43499
+ type: "button",
43500
+ onClick: () => void handleRevealProjectInFinder(project),
43501
+ className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
43502
+ children: [
43503
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FolderOpen, { className: "size-3 shrink-0" }),
43504
+ t2("sidebar.revealInFinder")
43505
+ ]
43506
+ }
43507
+ ),
43508
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
43509
+ "button",
43510
+ {
43511
+ type: "button",
43512
+ onClick: () => handleRenameProject(project),
43513
+ className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
43514
+ children: [
43515
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Pencil, { className: "size-3 shrink-0" }),
43516
+ t2("sidebar.rename")
43517
+ ]
43518
+ }
43519
+ ),
43520
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
43521
+ "button",
43522
+ {
43523
+ type: "button",
43524
+ onClick: () => void handleDeleteProject(project),
43525
+ className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-destructive transition-colors hover:bg-destructive/10",
43526
+ children: [
43527
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, { className: "size-3 shrink-0" }),
43528
+ t2("sidebar.delete")
43529
+ ]
43530
+ }
43531
+ )
43532
+ ] })
43533
+ ]
43534
+ }
43535
+ )
43763
43536
  ]
43764
43537
  }
43765
43538
  ),
43766
43539
  expanded && projectSessions.map((session2) => {
43767
43540
  const agentLabel = configuredAgents.find((a2) => a2.id === session2.agentId)?.id || session2.agentId;
43768
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(HoverCard, { children: [
43769
- /* @__PURE__ */ jsxRuntimeExports.jsx(HoverCardTrigger, { render: /* @__PURE__ */ jsxRuntimeExports.jsx("div", {}), children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
43770
- ContextMenu,
43771
- {
43772
- onOpenChange: (open2) => {
43773
- setOpenSessionMenuId(
43774
- (prev2) => open2 ? session2.id : prev2 === session2.id ? null : prev2
43775
- );
43776
- },
43777
- children: [
43778
- /* @__PURE__ */ jsxRuntimeExports.jsx(
43779
- ContextMenuTrigger,
43780
- {
43781
- render: /* @__PURE__ */ jsxRuntimeExports.jsx("div", {}),
43782
- onClick: () => handleSelectSession(session2),
43783
- className: `group flex h-8 cursor-default items-center justify-between rounded-md pl-1.5 pr-2 text-xs font-normal transition-colors ${activeSessionId === session2.id ? "bg-sidebar-accent text-sidebar-accent-foreground" : "text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground/95"} ${openSessionMenuId === session2.id ? "bg-sidebar-accent" : ""}`,
43784
- onContextMenu: (e11) => {
43785
- e11.stopPropagation();
43786
- },
43787
- children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
43788
- "div",
43789
- {
43790
- className: cn$8(
43791
- "flex min-w-0 flex-1 items-center gap-1.5",
43792
- session2.connectionStatus === "connected" ? "" : "opacity-60"
43541
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
43542
+ HoverCard,
43543
+ {
43544
+ open: hoverId === sessionHoverId(session2.id),
43545
+ onOpenChange: (open2) => {
43546
+ setHoverId(
43547
+ (prev2) => open2 ? sessionHoverId(session2.id) : prev2 === sessionHoverId(session2.id) ? null : prev2
43548
+ );
43549
+ },
43550
+ children: [
43551
+ /* @__PURE__ */ jsxRuntimeExports.jsx(HoverCardTrigger, { render: /* @__PURE__ */ jsxRuntimeExports.jsx("div", {}), delay: 50, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
43552
+ "div",
43553
+ {
43554
+ onClick: () => handleSelectSession(session2),
43555
+ className: `group flex h-8 cursor-default items-center justify-between rounded-md pl-1.5 pr-2 text-xs font-normal transition-colors ${activeSessionId === session2.id ? "bg-sidebar-accent text-sidebar-accent-foreground" : "text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground/95"} ${hoverId === sessionHoverId(session2.id) ? "bg-sidebar-accent" : ""}`,
43556
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
43557
+ "div",
43558
+ {
43559
+ className: cn$8(
43560
+ "flex min-w-0 flex-1 items-center gap-1.5",
43561
+ session2.connectionStatus === "connected" ? "" : "opacity-60"
43562
+ ),
43563
+ children: [
43564
+ (() => {
43565
+ const state2 = sessionStates.get(session2.id);
43566
+ const hasAskUser = (state2?.askUserRequests?.length ?? 0) > 0;
43567
+ const isStreaming = session2.isStreaming;
43568
+ const completedStatus = state2?.completedStatus;
43569
+ if (hasAskUser) {
43570
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(CircleQuestionMark, { className: "size-3 shrink-0 text-sky-500" });
43571
+ }
43572
+ if (isStreaming) {
43573
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(LoaderCircle, { className: "size-3 animate-spin shrink-0" });
43574
+ }
43575
+ if (completedStatus === "success" || state2?.completedAt && !completedStatus) {
43576
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3 shrink-0 text-green-500" });
43577
+ }
43578
+ if (completedStatus === "error") {
43579
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(TriangleAlert, { className: "size-3 shrink-0 text-yellow-500" });
43580
+ }
43581
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "size-3 shrink-0" });
43582
+ })(),
43583
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
43584
+ Badge,
43585
+ {
43586
+ variant: "outline",
43587
+ className: "px-1 -ml-0.5 text-[10px] uppercase select-none max-w-24",
43588
+ children: agentLabel
43589
+ }
43793
43590
  ),
43794
- children: [
43795
- (() => {
43796
- const state2 = sessionStates.get(session2.id);
43797
- const hasAskUser = (state2?.askUserRequests?.length ?? 0) > 0;
43798
- const isStreaming = session2.isStreaming;
43799
- const completedStatus = state2?.completedStatus;
43800
- if (hasAskUser) {
43801
- return /* @__PURE__ */ jsxRuntimeExports.jsx(CircleQuestionMark, { className: "size-3 shrink-0 text-sky-500" });
43802
- }
43803
- if (isStreaming) {
43804
- return /* @__PURE__ */ jsxRuntimeExports.jsx(LoaderCircle, { className: "size-3 animate-spin shrink-0" });
43805
- }
43806
- if (completedStatus === "success" || state2?.completedAt && !completedStatus) {
43807
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3 shrink-0 text-green-500" });
43808
- }
43809
- if (completedStatus === "error") {
43810
- return /* @__PURE__ */ jsxRuntimeExports.jsx(TriangleAlert, { className: "size-3 shrink-0 text-yellow-500" });
43811
- }
43812
- return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "size-3 shrink-0" });
43813
- })(),
43814
- /* @__PURE__ */ jsxRuntimeExports.jsx(
43815
- Badge,
43816
- {
43817
- variant: "outline",
43818
- className: "px-1 -ml-0.5 text-[10px] uppercase select-none max-w-24",
43819
- children: agentLabel
43820
- }
43821
- ),
43822
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "min-w-0 flex-1 truncate leading-normal select-none", children: session2.title || t2("sidebar.newChat", "New Chat") }),
43823
- activeIlinkSessionId === session2.id && /* @__PURE__ */ jsxRuntimeExports.jsx(MessageCircle, { className: "size-3 shrink-0 text-green-500" })
43824
- ]
43825
- }
43826
- )
43827
- }
43828
- ),
43829
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
43830
- ContextMenuContent,
43831
- {
43832
- onClick: (e11) => e11.stopPropagation(),
43833
- className: "w-auto",
43834
- children: [
43591
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "min-w-0 flex-1 truncate leading-normal select-none", children: session2.title || t2("sidebar.newChat", "New Chat") }),
43592
+ activeIlinkSessionId === session2.id && /* @__PURE__ */ jsxRuntimeExports.jsx(MessageCircle, { className: "size-3 shrink-0 text-green-500" })
43593
+ ]
43594
+ }
43595
+ )
43596
+ }
43597
+ ) }),
43598
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
43599
+ HoverCardContent,
43600
+ {
43601
+ side: "right",
43602
+ align: "start",
43603
+ sideOffset: 12,
43604
+ alignOffset: 1,
43605
+ className: "max-w-60 min-w-48 w-auto p-3",
43606
+ children: [
43607
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2", children: [
43608
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm font-medium leading-snug", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: session2.title || t2("sidebar.newChat", "New Chat") }) }),
43609
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground py-px", children: [
43610
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Bot, { className: "size-3 shrink-0" }),
43611
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: session2.agentId })
43612
+ ] }),
43613
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground py-px", children: [
43614
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Folder, { className: "size-3 shrink-0" }),
43615
+ isWebUI ? /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: project.title }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
43616
+ "button",
43617
+ {
43618
+ type: "button",
43619
+ onClick: () => void handleRevealProjectInFinder(project),
43620
+ title: project.cwd,
43621
+ className: "min-w-0 flex-1 truncate text-left transition-colors hover:text-foreground",
43622
+ children: project.title
43623
+ }
43624
+ )
43625
+ ] }),
43626
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground py-px", children: [
43627
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { className: "size-3 shrink-0" }),
43628
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "truncate", children: [
43629
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "mr-1", children: [
43630
+ t2("sidebar.updated", "Updated"),
43631
+ ":"
43632
+ ] }),
43633
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: formatRelativeTime(session2.updatedAt, i18n.language) })
43634
+ ] })
43635
+ ] }),
43636
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground py-px", children: [
43637
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CalendarDays, { className: "size-3 shrink-0" }),
43638
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "truncate", children: [
43639
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "mr-1", children: [
43640
+ t2("sidebar.created", "Created"),
43641
+ ":"
43642
+ ] }),
43643
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: formatRelativeTime(session2.createdAt, i18n.language) })
43644
+ ] })
43645
+ ] })
43646
+ ] }),
43647
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Separator, { className: "my-2.5" }),
43648
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col -mx-2 -my-1", children: [
43835
43649
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
43836
- ContextMenuItem,
43650
+ "button",
43837
43651
  {
43838
- onClick: (e11) => {
43839
- e11.stopPropagation();
43840
- handleRenameSession(session2);
43841
- },
43652
+ type: "button",
43653
+ onClick: () => handleRenameSession(session2),
43654
+ className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
43842
43655
  children: [
43843
- /* @__PURE__ */ jsxRuntimeExports.jsx(Pencil, {}),
43656
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Pencil, { className: "size-3 shrink-0" }),
43844
43657
  t2("sidebar.rename")
43845
43658
  ]
43846
43659
  }
43847
43660
  ),
43848
43661
  ilinkStatus.connected && activeIlinkSessionId !== session2.id && /* @__PURE__ */ jsxRuntimeExports.jsxs(
43849
- ContextMenuItem,
43662
+ "button",
43850
43663
  {
43851
- onClick: (e11) => {
43852
- e11.stopPropagation();
43664
+ type: "button",
43665
+ onClick: () => {
43853
43666
  request.setActiveIlinkSession({ sessionId: session2.id }).catch(() => {
43854
43667
  });
43855
43668
  },
43669
+ className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
43856
43670
  children: [
43857
- /* @__PURE__ */ jsxRuntimeExports.jsx(MessageCircle, {}),
43671
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MessageCircle, { className: "size-3 shrink-0" }),
43858
43672
  t2("sidebar.ilinkSetActive", "Set as WeChat Active")
43859
43673
  ]
43860
43674
  }
43861
43675
  ),
43862
43676
  ilinkStatus.connected && activeIlinkSessionId === session2.id && /* @__PURE__ */ jsxRuntimeExports.jsxs(
43863
- ContextMenuItem,
43677
+ "button",
43864
43678
  {
43865
- onClick: (e11) => {
43866
- e11.stopPropagation();
43679
+ type: "button",
43680
+ onClick: () => {
43867
43681
  request.setActiveIlinkSession({ sessionId: "" }).catch(() => {
43868
43682
  });
43869
43683
  },
43684
+ className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
43870
43685
  children: [
43871
- /* @__PURE__ */ jsxRuntimeExports.jsx(MessageCircle, {}),
43686
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MessageCircle, { className: "size-3 shrink-0 text-green-500" }),
43872
43687
  t2("sidebar.ilinkUnsetActive", "Unset WeChat Active")
43873
43688
  ]
43874
43689
  }
43875
43690
  ),
43876
- /* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuSeparator, {}),
43877
43691
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
43878
- ContextMenuItem,
43692
+ "button",
43879
43693
  {
43880
- variant: "destructive",
43881
- onClick: (e11) => {
43882
- e11.stopPropagation();
43883
- void handleDeleteSession(session2);
43884
- },
43694
+ type: "button",
43695
+ onClick: () => void handleDeleteSession(session2),
43696
+ className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-destructive transition-colors hover:bg-destructive/10",
43885
43697
  children: [
43886
- /* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, {}),
43698
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, { className: "size-3 shrink-0" }),
43887
43699
  t2("sidebar.delete")
43888
43700
  ]
43889
43701
  }
43890
43702
  )
43891
- ]
43892
- }
43893
- )
43894
- ]
43895
- }
43896
- ) }),
43897
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
43898
- HoverCardContent,
43899
- {
43900
- side: "right",
43901
- align: "start",
43902
- sideOffset: 14,
43903
- alignOffset: 0,
43904
- className: "max-w-86 min-w-48 w-auto p-3",
43905
- children: [
43906
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2", children: [
43907
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm font-medium leading-relaxed", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: session2.title || t2("sidebar.newChat", "New Chat") }) }),
43908
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground py-px", children: [
43909
- /* @__PURE__ */ jsxRuntimeExports.jsx(Bot, { className: "size-3 shrink-0" }),
43910
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: session2.agentId })
43911
- ] }),
43912
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground py-px", children: [
43913
- /* @__PURE__ */ jsxRuntimeExports.jsx(Folder, { className: "size-3 shrink-0" }),
43914
- isWebUI ? /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: project.title }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
43915
- "button",
43916
- {
43917
- type: "button",
43918
- onClick: () => void handleRevealProjectInFinder(project),
43919
- title: project.cwd,
43920
- className: "min-w-0 flex-1 truncate text-left transition-colors hover:text-foreground",
43921
- children: project.title
43922
- }
43923
- )
43924
- ] }),
43925
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground py-px", children: [
43926
- /* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { className: "size-3 shrink-0" }),
43927
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "truncate", children: [
43928
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "mr-1", children: [
43929
- t2("sidebar.updated", "Updated"),
43930
- ":"
43931
- ] }),
43932
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: formatRelativeTime(session2.updatedAt, i18n.language) })
43933
- ] })
43934
- ] }),
43935
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground py-px", children: [
43936
- /* @__PURE__ */ jsxRuntimeExports.jsx(CalendarDays, { className: "size-3 shrink-0" }),
43937
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "truncate", children: [
43938
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "mr-1", children: [
43939
- t2("sidebar.created", "Created"),
43940
- ":"
43941
- ] }),
43942
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: formatRelativeTime(session2.createdAt, i18n.language) })
43943
43703
  ] })
43944
- ] })
43945
- ] }),
43946
- /* @__PURE__ */ jsxRuntimeExports.jsx(Separator, { className: "my-2.5" }),
43947
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col -mx-2 -my-1", children: [
43948
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
43949
- "button",
43950
- {
43951
- type: "button",
43952
- onClick: () => handleRenameSession(session2),
43953
- className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
43954
- children: [
43955
- /* @__PURE__ */ jsxRuntimeExports.jsx(Pencil, { className: "size-3 shrink-0" }),
43956
- t2("sidebar.rename")
43957
- ]
43958
- }
43959
- ),
43960
- ilinkStatus.connected && activeIlinkSessionId !== session2.id && /* @__PURE__ */ jsxRuntimeExports.jsxs(
43961
- "button",
43962
- {
43963
- type: "button",
43964
- onClick: () => {
43965
- request.setActiveIlinkSession({ sessionId: session2.id }).catch(() => {
43966
- });
43967
- },
43968
- className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
43969
- children: [
43970
- /* @__PURE__ */ jsxRuntimeExports.jsx(MessageCircle, { className: "size-3 shrink-0" }),
43971
- t2("sidebar.ilinkSetActive", "Set as WeChat Active")
43972
- ]
43973
- }
43974
- ),
43975
- ilinkStatus.connected && activeIlinkSessionId === session2.id && /* @__PURE__ */ jsxRuntimeExports.jsxs(
43976
- "button",
43977
- {
43978
- type: "button",
43979
- onClick: () => {
43980
- request.setActiveIlinkSession({ sessionId: "" }).catch(() => {
43981
- });
43982
- },
43983
- className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
43984
- children: [
43985
- /* @__PURE__ */ jsxRuntimeExports.jsx(MessageCircle, { className: "size-3 shrink-0 text-green-500" }),
43986
- t2("sidebar.ilinkUnsetActive", "Unset WeChat Active")
43987
- ]
43988
- }
43989
- ),
43990
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
43991
- "button",
43992
- {
43993
- type: "button",
43994
- onClick: () => void handleDeleteSession(session2),
43995
- className: "flex h-7 items-center gap-2 rounded-md px-2 text-xs text-destructive transition-colors hover:bg-destructive/10",
43996
- children: [
43997
- /* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, { className: "size-3 shrink-0" }),
43998
- t2("sidebar.delete")
43999
- ]
44000
- }
44001
- )
44002
- ] })
44003
- ]
44004
- }
44005
- )
44006
- ] }, session2.id);
43704
+ ]
43705
+ }
43706
+ )
43707
+ ]
43708
+ },
43709
+ session2.id
43710
+ );
44007
43711
  })
44008
43712
  ] }, project.id);
44009
43713
  }) }) }),
@@ -44538,7 +44242,7 @@ function Welcome() {
44538
44242
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "absolute bottom-3 right-4 text-[11px] text-muted-foreground/40 z-10 pointer-events-none", children: [
44539
44243
  /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { children: [
44540
44244
  "v",
44541
- "0.1.48"
44245
+ "0.1.49"
44542
44246
  ] }),
44543
44247
  false
44544
44248
  ] }),
@@ -47726,7 +47430,7 @@ function AgentTerminalOutput({
47726
47430
  const cleanLog = reactExports.useMemo(() => {
47727
47431
  return log3?.replace(/\u001b\[[0-9;]*[a-zA-Z]/g, "").replace(/\[[0-9;]*[0-9]m/g, "");
47728
47432
  }, [log3]);
47729
- return /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "bg-secondary/50 text-foreground/80", viewportClassName: "max-h-[70vh]", children: /* @__PURE__ */ jsxRuntimeExports.jsx("pre", { ref: containerRef, className: "p-2 whitespace-pre-wrap font-mono text-[11px] leading-3.5", children: /* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: cleanLog ?? t2("readonlyTerminal.noOutput") }) }) });
47433
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "text-foreground/80", viewportClassName: "max-h-[70vh]", children: /* @__PURE__ */ jsxRuntimeExports.jsx("pre", { ref: containerRef, className: "p-2 whitespace-pre-wrap font-mono text-[11px] leading-3.5", children: /* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: cleanLog ?? t2("readonlyTerminal.noOutput") }) }) });
47730
47434
  }
47731
47435
  const scriptRel = /* @__PURE__ */ (function detectScriptRel() {
47732
47436
  const relList = typeof document !== "undefined" && document.createElement("link").relList;
@@ -71389,7 +71093,7 @@ var lr$5 = (e11) => {
71389
71093
  for (; t2 > 0 && e11[t2 - 1] === `
71390
71094
  `; ) t2--;
71391
71095
  return e11.slice(0, t2);
71392
- }, cr$4 = reactExports.lazy(() => __vitePreload(() => import("./highlighted-body-OFNGDK62-EglK-D82.js"), true ? [] : void 0, import.meta.url).then((e11) => ({ default: e11.HighlightedCodeBlockBody }))), st$8 = ({ code: e11, language: t2, className: o4, children: n2, isIncomplete: r3 = false, startLine: s16, lineNumbers: a2, ...l6 }) => {
71096
+ }, cr$4 = reactExports.lazy(() => __vitePreload(() => import("./highlighted-body-OFNGDK62-gS-2OBX1.js"), true ? [] : void 0, import.meta.url).then((e11) => ({ default: e11.HighlightedCodeBlockBody }))), st$8 = ({ code: e11, language: t2, className: o4, children: n2, isIncomplete: r3 = false, startLine: s16, lineNumbers: a2, ...l6 }) => {
71393
71097
  let i3 = y$d(), d2 = reactExports.useMemo(() => lr$5(e11), [e11]), c3 = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: d2.split(`
71394
71098
  `).map((p3) => [{ content: p3, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [d2]);
71395
71099
  return jsxRuntimeExports.jsx(nt$8.Provider, { value: { code: e11 }, children: jsxRuntimeExports.jsxs(ot$8, { isIncomplete: r3, language: t2, children: [jsxRuntimeExports.jsx(rt$7, { language: t2 }), n2 ? jsxRuntimeExports.jsx("div", { className: i3("pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end"), children: jsxRuntimeExports.jsx("div", { className: i3("pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur"), "data-streamdown": "code-block-actions", children: n2 }) }) : null, jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: jsxRuntimeExports.jsx(At$6, { className: o4, language: t2, lineNumbers: a2, result: c3, startLine: s16, ...l6 }), children: jsxRuntimeExports.jsx(cr$4, { className: o4, code: d2, language: t2, lineNumbers: a2, raw: c3, startLine: s16, ...l6 }) })] }) });
@@ -96230,12 +95934,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
96230
95934
  registerLayoutLoaders([
96231
95935
  {
96232
95936
  name: "dagre",
96233
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-KV5264BT-DW9CSFRI.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0, import.meta.url), "loader")
95937
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-KV5264BT-H1wB7v-Q.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0, import.meta.url), "loader")
96234
95938
  },
96235
95939
  ...[
96236
95940
  {
96237
95941
  name: "cose-bilkent",
96238
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-Bjtibz95.js"), true ? __vite__mapDeps([6,7]) : void 0, import.meta.url), "loader")
95942
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-CH_2zOJR.js"), true ? __vite__mapDeps([6,7]) : void 0, import.meta.url), "loader")
96239
95943
  }
96240
95944
  ]
96241
95945
  ]);
@@ -96691,7 +96395,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
96691
96395
  }, "detector");
96692
96396
  var loader = /* @__PURE__ */ __name(async () => {
96693
96397
  const { diagram: diagram2 } = await __vitePreload(async () => {
96694
- const { diagram: diagram22 } = await import("./c4Diagram-AHTNJAMY-BfRmGEJy.js");
96398
+ const { diagram: diagram22 } = await import("./c4Diagram-AHTNJAMY-DLQf0xBh.js");
96695
96399
  return { diagram: diagram22 };
96696
96400
  }, true ? __vite__mapDeps([8,9]) : void 0, import.meta.url);
96697
96401
  return { id: id$1, diagram: diagram2 };
@@ -96711,7 +96415,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
96711
96415
  }, "detector");
96712
96416
  var loader2 = /* @__PURE__ */ __name(async () => {
96713
96417
  const { diagram: diagram2 } = await __vitePreload(async () => {
96714
- const { diagram: diagram22 } = await import("./flowDiagram-DWJPFMVM-BrHGujcg.js");
96418
+ const { diagram: diagram22 } = await import("./flowDiagram-DWJPFMVM-BidIy8zc.js");
96715
96419
  return { diagram: diagram22 };
96716
96420
  }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0, import.meta.url);
96717
96421
  return { id: id2, diagram: diagram2 };
@@ -96737,7 +96441,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
96737
96441
  }, "detector");
96738
96442
  var loader3 = /* @__PURE__ */ __name(async () => {
96739
96443
  const { diagram: diagram2 } = await __vitePreload(async () => {
96740
- const { diagram: diagram22 } = await import("./flowDiagram-DWJPFMVM-BrHGujcg.js");
96444
+ const { diagram: diagram22 } = await import("./flowDiagram-DWJPFMVM-BidIy8zc.js");
96741
96445
  return { diagram: diagram22 };
96742
96446
  }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0, import.meta.url);
96743
96447
  return { id: id3, diagram: diagram2 };
@@ -96754,7 +96458,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
96754
96458
  }, "detector");
96755
96459
  var loader4 = /* @__PURE__ */ __name(async () => {
96756
96460
  const { diagram: diagram2 } = await __vitePreload(async () => {
96757
- const { diagram: diagram22 } = await import("./erDiagram-SMLLAGMA-DaVqqCcL.js");
96461
+ const { diagram: diagram22 } = await import("./erDiagram-SMLLAGMA-B35CLzqQ.js");
96758
96462
  return { diagram: diagram22 };
96759
96463
  }, true ? __vite__mapDeps([15,12,13,14]) : void 0, import.meta.url);
96760
96464
  return { id: id4, diagram: diagram2 };
@@ -96771,7 +96475,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
96771
96475
  }, "detector");
96772
96476
  var loader5 = /* @__PURE__ */ __name(async () => {
96773
96477
  const { diagram: diagram2 } = await __vitePreload(async () => {
96774
- const { diagram: diagram22 } = await import("./gitGraphDiagram-UUTBAWPF-dFtBMZmH.js");
96478
+ const { diagram: diagram22 } = await import("./gitGraphDiagram-UUTBAWPF-7wQ8gKPV.js");
96775
96479
  return { diagram: diagram22 };
96776
96480
  }, true ? __vite__mapDeps([16,17,18,19,4,2]) : void 0, import.meta.url);
96777
96481
  return { id: id5, diagram: diagram2 };
@@ -96788,7 +96492,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
96788
96492
  }, "detector");
96789
96493
  var loader6 = /* @__PURE__ */ __name(async () => {
96790
96494
  const { diagram: diagram2 } = await __vitePreload(async () => {
96791
- const { diagram: diagram22 } = await import("./ganttDiagram-T4ZO3ILL-D9tlSXpr.js");
96495
+ const { diagram: diagram22 } = await import("./ganttDiagram-T4ZO3ILL-CqV1ei6S.js");
96792
96496
  return { diagram: diagram22 };
96793
96497
  }, true ? __vite__mapDeps([20,21,22,23]) : void 0, import.meta.url);
96794
96498
  return { id: id6, diagram: diagram2 };
@@ -96805,7 +96509,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
96805
96509
  }, "detector");
96806
96510
  var loader7 = /* @__PURE__ */ __name(async () => {
96807
96511
  const { diagram: diagram2 } = await __vitePreload(async () => {
96808
- const { diagram: diagram22 } = await import("./infoDiagram-42DDH7IO-CwoWvadJ.js");
96512
+ const { diagram: diagram22 } = await import("./infoDiagram-42DDH7IO-DlKxzT4w.js");
96809
96513
  return { diagram: diagram22 };
96810
96514
  }, true ? __vite__mapDeps([24,19,4,2]) : void 0, import.meta.url);
96811
96515
  return { id: id7, diagram: diagram2 };
@@ -96821,7 +96525,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
96821
96525
  }, "detector");
96822
96526
  var loader8 = /* @__PURE__ */ __name(async () => {
96823
96527
  const { diagram: diagram2 } = await __vitePreload(async () => {
96824
- const { diagram: diagram22 } = await import("./pieDiagram-DEJITSTG-owvRXepN.js");
96528
+ const { diagram: diagram22 } = await import("./pieDiagram-DEJITSTG-BN6Ummnw.js");
96825
96529
  return { diagram: diagram22 };
96826
96530
  }, true ? __vite__mapDeps([25,17,19,4,2,26,27,22]) : void 0, import.meta.url);
96827
96531
  return { id: id8, diagram: diagram2 };
@@ -96837,7 +96541,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
96837
96541
  }, "detector");
96838
96542
  var loader9 = /* @__PURE__ */ __name(async () => {
96839
96543
  const { diagram: diagram2 } = await __vitePreload(async () => {
96840
- const { diagram: diagram22 } = await import("./quadrantDiagram-34T5L4WZ-C9LRroTe.js");
96544
+ const { diagram: diagram22 } = await import("./quadrantDiagram-34T5L4WZ-DTE_dLJv.js");
96841
96545
  return { diagram: diagram22 };
96842
96546
  }, true ? __vite__mapDeps([28,21,22,23]) : void 0, import.meta.url);
96843
96547
  return { id: id9, diagram: diagram2 };
@@ -96854,7 +96558,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
96854
96558
  }, "detector");
96855
96559
  var loader10 = /* @__PURE__ */ __name(async () => {
96856
96560
  const { diagram: diagram2 } = await __vitePreload(async () => {
96857
- const { diagram: diagram22 } = await import("./xychartDiagram-5P7HB3ND-Bzj4rKGX.js");
96561
+ const { diagram: diagram22 } = await import("./xychartDiagram-5P7HB3ND-UGlSGsDE.js");
96858
96562
  return { diagram: diagram22 };
96859
96563
  }, true ? __vite__mapDeps([29,22,27,21,23]) : void 0, import.meta.url);
96860
96564
  return { id: id10, diagram: diagram2 };
@@ -96871,7 +96575,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
96871
96575
  }, "detector");
96872
96576
  var loader11 = /* @__PURE__ */ __name(async () => {
96873
96577
  const { diagram: diagram2 } = await __vitePreload(async () => {
96874
- const { diagram: diagram22 } = await import("./requirementDiagram-MS252O5E-Ds_36REQ.js");
96578
+ const { diagram: diagram22 } = await import("./requirementDiagram-MS252O5E-DVDS2RYN.js");
96875
96579
  return { diagram: diagram22 };
96876
96580
  }, true ? __vite__mapDeps([30,12,13]) : void 0, import.meta.url);
96877
96581
  return { id: id11, diagram: diagram2 };
@@ -96888,7 +96592,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
96888
96592
  }, "detector");
96889
96593
  var loader12 = /* @__PURE__ */ __name(async () => {
96890
96594
  const { diagram: diagram2 } = await __vitePreload(async () => {
96891
- const { diagram: diagram22 } = await import("./sequenceDiagram-FGHM5R23-BdGUPHNX.js");
96595
+ const { diagram: diagram22 } = await import("./sequenceDiagram-FGHM5R23-89GBJZmd.js");
96892
96596
  return { diagram: diagram22 };
96893
96597
  }, true ? __vite__mapDeps([31,9,18]) : void 0, import.meta.url);
96894
96598
  return { id: id12, diagram: diagram2 };
@@ -96908,7 +96612,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
96908
96612
  }, "detector");
96909
96613
  var loader13 = /* @__PURE__ */ __name(async () => {
96910
96614
  const { diagram: diagram2 } = await __vitePreload(async () => {
96911
- const { diagram: diagram22 } = await import("./classDiagram-6PBFFD2Q-ql_64jJs.js");
96615
+ const { diagram: diagram22 } = await import("./classDiagram-6PBFFD2Q-BInpfZnW.js");
96912
96616
  return { diagram: diagram22 };
96913
96617
  }, true ? __vite__mapDeps([32,33,11,9,12,13]) : void 0, import.meta.url);
96914
96618
  return { id: id13, diagram: diagram2 };
@@ -96928,7 +96632,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
96928
96632
  }, "detector");
96929
96633
  var loader14 = /* @__PURE__ */ __name(async () => {
96930
96634
  const { diagram: diagram2 } = await __vitePreload(async () => {
96931
- const { diagram: diagram22 } = await import("./classDiagram-v2-HSJHXN6E-ql_64jJs.js");
96635
+ const { diagram: diagram22 } = await import("./classDiagram-v2-HSJHXN6E-BInpfZnW.js");
96932
96636
  return { diagram: diagram22 };
96933
96637
  }, true ? __vite__mapDeps([34,33,11,9,12,13]) : void 0, import.meta.url);
96934
96638
  return { id: id14, diagram: diagram2 };
@@ -96948,7 +96652,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
96948
96652
  }, "detector");
96949
96653
  var loader15 = /* @__PURE__ */ __name(async () => {
96950
96654
  const { diagram: diagram2 } = await __vitePreload(async () => {
96951
- const { diagram: diagram22 } = await import("./stateDiagram-FHFEXIEX-CruNLY-0.js");
96655
+ const { diagram: diagram22 } = await import("./stateDiagram-FHFEXIEX-YKrUbogP.js");
96952
96656
  return { diagram: diagram22 };
96953
96657
  }, true ? __vite__mapDeps([35,36,12,13,1,2,3,4]) : void 0, import.meta.url);
96954
96658
  return { id: id15, diagram: diagram2 };
@@ -96971,7 +96675,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
96971
96675
  }, "detector");
96972
96676
  var loader16 = /* @__PURE__ */ __name(async () => {
96973
96677
  const { diagram: diagram2 } = await __vitePreload(async () => {
96974
- const { diagram: diagram22 } = await import("./stateDiagram-v2-QKLJ7IA2-CfBaNTRC.js");
96678
+ const { diagram: diagram22 } = await import("./stateDiagram-v2-QKLJ7IA2-CO0pZRqI.js");
96975
96679
  return { diagram: diagram22 };
96976
96680
  }, true ? __vite__mapDeps([37,36,12,13]) : void 0, import.meta.url);
96977
96681
  return { id: id16, diagram: diagram2 };
@@ -96988,7 +96692,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
96988
96692
  }, "detector");
96989
96693
  var loader17 = /* @__PURE__ */ __name(async () => {
96990
96694
  const { diagram: diagram2 } = await __vitePreload(async () => {
96991
- const { diagram: diagram22 } = await import("./journeyDiagram-VCZTEJTY-BwKJh5pl.js");
96695
+ const { diagram: diagram22 } = await import("./journeyDiagram-VCZTEJTY-CYRPGJN7.js");
96992
96696
  return { diagram: diagram22 };
96993
96697
  }, true ? __vite__mapDeps([38,11,9,26]) : void 0, import.meta.url);
96994
96698
  return { id: id17, diagram: diagram2 };
@@ -97058,7 +96762,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
97058
96762
  }, "detector");
97059
96763
  var loader18 = /* @__PURE__ */ __name(async () => {
97060
96764
  const { diagram: diagram2 } = await __vitePreload(async () => {
97061
- const { diagram: diagram22 } = await import("./flowDiagram-DWJPFMVM-BrHGujcg.js");
96765
+ const { diagram: diagram22 } = await import("./flowDiagram-DWJPFMVM-BidIy8zc.js");
97062
96766
  return { diagram: diagram22 };
97063
96767
  }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0, import.meta.url);
97064
96768
  return { id: id18, diagram: diagram2 };
@@ -97075,7 +96779,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
97075
96779
  }, "detector");
97076
96780
  var loader19 = /* @__PURE__ */ __name(async () => {
97077
96781
  const { diagram: diagram2 } = await __vitePreload(async () => {
97078
- const { diagram: diagram22 } = await import("./timeline-definition-GMOUNBTQ-CHPlJ2ZI.js");
96782
+ const { diagram: diagram22 } = await import("./timeline-definition-GMOUNBTQ-BW2oxhj-.js");
97079
96783
  return { diagram: diagram22 };
97080
96784
  }, true ? __vite__mapDeps([39,26]) : void 0, import.meta.url);
97081
96785
  return { id: id19, diagram: diagram2 };
@@ -97092,7 +96796,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
97092
96796
  }, "detector");
97093
96797
  var loader20 = /* @__PURE__ */ __name(async () => {
97094
96798
  const { diagram: diagram2 } = await __vitePreload(async () => {
97095
- const { diagram: diagram22 } = await import("./mindmap-definition-QFDTVHPH-_8DjK16S.js");
96799
+ const { diagram: diagram22 } = await import("./mindmap-definition-QFDTVHPH-CC3W7LA-.js");
97096
96800
  return { diagram: diagram22 };
97097
96801
  }, true ? __vite__mapDeps([40,12,13]) : void 0, import.meta.url);
97098
96802
  return { id: id20, diagram: diagram2 };
@@ -97109,7 +96813,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
97109
96813
  }, "detector");
97110
96814
  var loader21 = /* @__PURE__ */ __name(async () => {
97111
96815
  const { diagram: diagram2 } = await __vitePreload(async () => {
97112
- const { diagram: diagram22 } = await import("./kanban-definition-6JOO6SKY-uDhuFOXv.js");
96816
+ const { diagram: diagram22 } = await import("./kanban-definition-6JOO6SKY-Dovb_i6Z.js");
97113
96817
  return { diagram: diagram22 };
97114
96818
  }, true ? __vite__mapDeps([41,11]) : void 0, import.meta.url);
97115
96819
  return { id: id21, diagram: diagram2 };
@@ -97126,7 +96830,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
97126
96830
  }, "detector");
97127
96831
  var loader22 = /* @__PURE__ */ __name(async () => {
97128
96832
  const { diagram: diagram2 } = await __vitePreload(async () => {
97129
- const { diagram: diagram22 } = await import("./sankeyDiagram-XADWPNL6-6HuBoz3Q.js");
96833
+ const { diagram: diagram22 } = await import("./sankeyDiagram-XADWPNL6-D4_LywJM.js");
97130
96834
  return { diagram: diagram22 };
97131
96835
  }, true ? __vite__mapDeps([42,27,22]) : void 0, import.meta.url);
97132
96836
  return { id: id22, diagram: diagram2 };
@@ -97143,7 +96847,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
97143
96847
  }, "detector");
97144
96848
  var loader23 = /* @__PURE__ */ __name(async () => {
97145
96849
  const { diagram: diagram2 } = await __vitePreload(async () => {
97146
- const { diagram: diagram22 } = await import("./diagram-TYMM5635-9K0cZf20.js");
96850
+ const { diagram: diagram22 } = await import("./diagram-TYMM5635-BKn_5Ga7.js");
97147
96851
  return { diagram: diagram22 };
97148
96852
  }, true ? __vite__mapDeps([43,17,19,4,2]) : void 0, import.meta.url);
97149
96853
  return { id: id23, diagram: diagram2 };
@@ -97159,7 +96863,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
97159
96863
  }, "detector");
97160
96864
  var loader24 = /* @__PURE__ */ __name(async () => {
97161
96865
  const { diagram: diagram2 } = await __vitePreload(async () => {
97162
- const { diagram: diagram22 } = await import("./diagram-MMDJMWI5-DUDbXS-d.js");
96866
+ const { diagram: diagram22 } = await import("./diagram-MMDJMWI5-BnwRyNpR.js");
97163
96867
  return { diagram: diagram22 };
97164
96868
  }, true ? __vite__mapDeps([44,17,19,4,2]) : void 0, import.meta.url);
97165
96869
  return { id: id24, diagram: diagram2 };
@@ -97175,7 +96879,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
97175
96879
  }, "detector");
97176
96880
  var loader25 = /* @__PURE__ */ __name(async () => {
97177
96881
  const { diagram: diagram2 } = await __vitePreload(async () => {
97178
- const { diagram: diagram22 } = await import("./blockDiagram-DXYQGD6D-BBdankH4.js");
96882
+ const { diagram: diagram22 } = await import("./blockDiagram-DXYQGD6D-CPK2QuaJ.js");
97179
96883
  return { diagram: diagram22 };
97180
96884
  }, true ? __vite__mapDeps([45,11,5,1,2,14]) : void 0, import.meta.url);
97181
96885
  return { id: id25, diagram: diagram2 };
@@ -97192,7 +96896,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
97192
96896
  }, "detector");
97193
96897
  var loader26 = /* @__PURE__ */ __name(async () => {
97194
96898
  const { diagram: diagram2 } = await __vitePreload(async () => {
97195
- const { diagram: diagram22 } = await import("./diagram-5BDNPKRD-Dptg-C7O.js");
96899
+ const { diagram: diagram22 } = await import("./diagram-5BDNPKRD-D9VV_-Xi.js");
97196
96900
  return { diagram: diagram22 };
97197
96901
  }, true ? __vite__mapDeps([46,17,18,19,4,2]) : void 0, import.meta.url);
97198
96902
  return { id: id26, diagram: diagram2 };
@@ -97209,7 +96913,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
97209
96913
  }, "detector");
97210
96914
  var loader27 = /* @__PURE__ */ __name(async () => {
97211
96915
  const { diagram: diagram2 } = await __vitePreload(async () => {
97212
- const { diagram: diagram22 } = await import("./architectureDiagram-Q4EWVU46-B40mk-XJ.js");
96916
+ const { diagram: diagram22 } = await import("./architectureDiagram-Q4EWVU46-BNFtPc1v.js");
97213
96917
  return { diagram: diagram22 };
97214
96918
  }, true ? __vite__mapDeps([47,17,19,4,2,7]) : void 0, import.meta.url);
97215
96919
  return { id: id27, diagram: diagram2 };
@@ -97226,7 +96930,7 @@ var detector28 = /* @__PURE__ */ __name((txt) => {
97226
96930
  }, "detector");
97227
96931
  var loader28 = /* @__PURE__ */ __name(async () => {
97228
96932
  const { diagram: diagram2 } = await __vitePreload(async () => {
97229
- const { diagram: diagram22 } = await import("./ishikawaDiagram-UXIWVN3A-9MhN_EF5.js");
96933
+ const { diagram: diagram22 } = await import("./ishikawaDiagram-UXIWVN3A-DmOMlIE8.js");
97230
96934
  return { diagram: diagram22 };
97231
96935
  }, true ? [] : void 0, import.meta.url);
97232
96936
  return { id: id28, diagram: diagram2 };
@@ -97242,7 +96946,7 @@ var detector29 = /* @__PURE__ */ __name((txt) => {
97242
96946
  }, "detector");
97243
96947
  var loader29 = /* @__PURE__ */ __name(async () => {
97244
96948
  const { diagram: diagram2 } = await __vitePreload(async () => {
97245
- const { diagram: diagram22 } = await import("./vennDiagram-DHZGUBPP-DMdQtt7i.js");
96949
+ const { diagram: diagram22 } = await import("./vennDiagram-DHZGUBPP-DSy9zL6k.js");
97246
96950
  return { diagram: diagram22 };
97247
96951
  }, true ? [] : void 0, import.meta.url);
97248
96952
  return { id: id29, diagram: diagram2 };
@@ -97259,7 +96963,7 @@ var detector30 = /* @__PURE__ */ __name((txt) => {
97259
96963
  }, "detector");
97260
96964
  var loader30 = /* @__PURE__ */ __name(async () => {
97261
96965
  const { diagram: diagram2 } = await __vitePreload(async () => {
97262
- const { diagram: diagram22 } = await import("./diagram-G4DWMVQ6-CX-JVWk7.js");
96966
+ const { diagram: diagram22 } = await import("./diagram-G4DWMVQ6-CfRglPBg.js");
97263
96967
  return { diagram: diagram22 };
97264
96968
  }, true ? __vite__mapDeps([48,13,17,19,4,2,23,27,22]) : void 0, import.meta.url);
97265
96969
  return { id: id30, diagram: diagram2 };
@@ -97275,7 +96979,7 @@ var detector31 = /* @__PURE__ */ __name((text2) => {
97275
96979
  }, "detector");
97276
96980
  var loader31 = /* @__PURE__ */ __name(async () => {
97277
96981
  const { diagram: diagram2 } = await __vitePreload(async () => {
97278
- const { diagram: diagram22 } = await import("./wardleyDiagram-NUSXRM2D-BI-3rQpv.js");
96982
+ const { diagram: diagram22 } = await import("./wardleyDiagram-NUSXRM2D-CJUPdnii.js");
97279
96983
  return { diagram: diagram22 };
97280
96984
  }, true ? __vite__mapDeps([49,17,19,4,2]) : void 0, import.meta.url);
97281
96985
  return { id: id31, diagram: diagram2 };
@@ -143662,20 +143366,43 @@ function parseFelloTools(message2) {
143662
143366
  if (message2.content[0].content.type !== "text") return null;
143663
143367
  const text2 = message2.content[0].content.text;
143664
143368
  try {
143665
- const json2 = JSON.parse(text2);
143666
- if (json2.fello) {
143667
- if (json2.fello["share-to-user"]) {
143369
+ const parsed = JSON.parse(text2);
143370
+ const candidates = [];
143371
+ if (Array.isArray(parsed)) {
143372
+ for (const item of parsed) {
143373
+ if (item && typeof item === "object" && "text" in item) {
143374
+ const inner2 = item.text;
143375
+ if (typeof inner2 === "string") {
143376
+ try {
143377
+ candidates.push(JSON.parse(inner2));
143378
+ continue;
143379
+ } catch {
143380
+ }
143381
+ }
143382
+ }
143383
+ candidates.push(item);
143384
+ }
143385
+ } else {
143386
+ candidates.push(parsed);
143387
+ }
143388
+ for (const candidate of candidates) {
143389
+ if (!candidate || typeof candidate !== "object") continue;
143390
+ const fello = candidate.fello;
143391
+ if (!fello || typeof fello !== "object") continue;
143392
+ const felloObj = fello;
143393
+ if (felloObj["share-to-user"]) {
143668
143394
  const shareToUserRespondResult = shareToUserRespondSchema.safeParse(
143669
- json2.fello["share-to-user"]
143395
+ felloObj["share-to-user"]
143670
143396
  );
143671
143397
  if (shareToUserRespondResult.success) {
143672
143398
  return { type: "shareToUser", respond: shareToUserRespondResult.data };
143673
143399
  }
143674
143400
  }
143675
- if (json2.fello["image-generation"]) {
143676
- const raw2 = json2.fello["image-generation"];
143677
- if (raw2.sharePath && !raw2.images) {
143678
- raw2.images = [{ sharePath: raw2.sharePath, name: raw2.name, mimeType: raw2.mimeType }];
143401
+ if (felloObj["image-generation"]) {
143402
+ const raw2 = felloObj["image-generation"];
143403
+ if (raw2 && typeof raw2 === "object" && !("images" in raw2) && "sharePath" in raw2) {
143404
+ const r3 = raw2;
143405
+ r3.images = [{ sharePath: r3.sharePath, name: r3.name, mimeType: r3.mimeType }];
143679
143406
  }
143680
143407
  const imageGenRespondResult = imageGenerationRespondSchema.safeParse(raw2);
143681
143408
  if (imageGenRespondResult.success) {
@@ -143687,6 +143414,31 @@ function parseFelloTools(message2) {
143687
143414
  }
143688
143415
  return null;
143689
143416
  }
143417
+ function renderContentItem(content2, index2, cwd2) {
143418
+ if (content2.type === "content") {
143419
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "px-2 text-foreground/80", children: content2.content.type === "text" ? /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "-mx-2", viewportClassName: "max-h-[70vh]", children: /* @__PURE__ */ jsxRuntimeExports.jsx("pre", { className: "m-0 p-2 text-[11px]", children: /* @__PURE__ */ jsxRuntimeExports.jsx("code", {
143420
+ // Strip ANSI escape sequences (e.g. \x1b[38;5;250m, [38;5;250m) for clean display
143421
+ children: content2.content.text.replace(/\u001b\[[0-9;]*[a-zA-Z]/g, "").replace(/\[[0-9;]*[0-9]m/g, "")
143422
+ }) }) }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ContentBlocks, { blocks: [content2.content], role: "tool_call" }) }, index2);
143423
+ }
143424
+ if (content2.type === "diff") {
143425
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "border-b border-border last:border-b-0 flex flex-col", children: [
143426
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "px-2 py-2 bg-muted/50 border-b border-border text-xs font-mono text-muted-foreground truncate flex items-center gap-2", children: [
143427
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FileIcon, { name: content2.path.split("/").pop() ?? content2.path, className: "size-3.5" }),
143428
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: content2.path.startsWith(cwd2) ? content2.path.slice(cwd2.length + 1) : content2.path })
143429
+ ] }),
143430
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 min-h-0 overflow-hidden w-full", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "w-full", viewportClassName: "max-h-[70vh]", children: content2.oldText == null || content2.oldText === content2.newText ? /* @__PURE__ */ jsxRuntimeExports.jsx(CodeView, { content: content2.newText, filename: content2.path.split("/").pop() }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
143431
+ CodeCompareView,
143432
+ {
143433
+ oldContent: content2.oldText,
143434
+ newContent: content2.newText,
143435
+ filename: content2.path.split("/").pop()
143436
+ }
143437
+ ) }) })
143438
+ ] }, index2);
143439
+ }
143440
+ return null;
143441
+ }
143690
143442
  function ToolItem({ session: session2, message: message2 }) {
143691
143443
  const { t: t2 } = useTranslation();
143692
143444
  const activeProjectId = session2.projectId;
@@ -143696,6 +143448,10 @@ function ToolItem({ session: session2, message: message2 }) {
143696
143448
  const [open2, setOpen] = reactExports.useState(false);
143697
143449
  const [stopping, setStopping] = reactExports.useState(false);
143698
143450
  const isRunningShell = message2.kind === "execute" && message2.status === "in_progress" && message2.terminalId != null;
143451
+ const contentItems = (message2.content ?? []).filter(
143452
+ (c3) => c3.type === "content" || c3.type === "diff"
143453
+ );
143454
+ const defaultTab = isRunningShell ? "terminal" : contentItems.length > 0 ? "content-0" : "terminal";
143699
143455
  const handleStop = reactExports.useCallback(async () => {
143700
143456
  if (!message2.terminalId || stopping) return;
143701
143457
  setStopping(true);
@@ -143788,7 +143544,7 @@ function ToolItem({ session: session2, message: message2 }) {
143788
143544
  type: "button",
143789
143545
  variant: "destructive",
143790
143546
  size: "xs",
143791
- className: "shrink-0 rounded-full px-2 disabled:opacity-100",
143547
+ className: "shrink-0 rounded-full px-1.5 -my-2 h-5 disabled:opacity-100",
143792
143548
  title: t2("toolBubble.stop"),
143793
143549
  disabled: stopping,
143794
143550
  onClick: (e11) => {
@@ -143815,43 +143571,42 @@ function ToolItem({ session: session2, message: message2 }) {
143815
143571
  children: /* @__PURE__ */ jsxRuntimeExports.jsx("pre", { className: "p-2 m-0 text-[11px] leading-relaxed text-foreground/80", children: /* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: typeof message2.rawInput === "string" ? message2.rawInput : jsonToPrettyYamlExports.stringify(message2.rawInput) }) })
143816
143572
  }
143817
143573
  ),
143818
- message2.content && message2.content.map((content2, index2) => {
143819
- if (content2.type === "content") {
143820
- return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "px-2 text-foreground/80", children: content2.content.type === "text" ? /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "-mx-2", viewportClassName: "max-h-[70vh]", children: /* @__PURE__ */ jsxRuntimeExports.jsx("pre", { className: "m-0 p-2 text-[11px]", children: /* @__PURE__ */ jsxRuntimeExports.jsx("code", {
143821
- // Strip ANSI escape sequences (e.g. \x1b[38;5;250m, [38;5;250m) for clean display
143822
- children: content2.content.text.replace(/\u001b\[[0-9;]*[a-zA-Z]/g, "").replace(/\[[0-9;]*[0-9]m/g, "")
143823
- }) }) }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ContentBlocks, { blocks: [content2.content], role: "tool_call" }) }, index2);
143824
- } else if (content2.type === "diff") {
143825
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "border-b border-border last:border-b-0 flex flex-col", children: [
143826
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "px-2 py-2 bg-muted/50 border-b border-border text-xs font-mono text-muted-foreground truncate flex items-center gap-2", children: [
143827
- /* @__PURE__ */ jsxRuntimeExports.jsx(
143828
- FileIcon,
143574
+ (contentItems.length > 0 || message2.terminalId) && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tabs, { defaultValue: defaultTab, className: "w-full", children: [
143575
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
143576
+ TabsList,
143577
+ {
143578
+ variant: "line",
143579
+ className: "w-full h-8 justify-start rounded-none border-b border-border",
143580
+ children: [
143581
+ contentItems.map((content2, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
143582
+ TabsTrigger,
143583
+ {
143584
+ value: `content-${index2}`,
143585
+ className: "h-full flex-none text-xs font-normal opacity-70",
143586
+ children: [
143587
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ListCheck, { className: "size-3.5 -ml-1" }),
143588
+ content2.type === "diff" ? `${content2.path.split("/").pop()}` : t2("toolBubble.result")
143589
+ ]
143590
+ },
143591
+ index2
143592
+ )),
143593
+ message2.terminalId && /* @__PURE__ */ jsxRuntimeExports.jsxs(
143594
+ TabsTrigger,
143829
143595
  {
143830
- name: content2.path.split("/").pop() ?? content2.path,
143831
- className: "size-3.5"
143596
+ value: "terminal",
143597
+ className: "h-full flex-none px-2 text-xs font-normal opacity-70",
143598
+ children: [
143599
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Terminal, { className: "size-3.5 -ml-1" }),
143600
+ t2("toolBubble.terminal")
143601
+ ]
143832
143602
  }
143833
- ),
143834
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: content2.path.startsWith(session2.cwd) ? content2.path.slice(session2.cwd.length + 1) : content2.path })
143835
- ] }),
143836
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 min-h-0 overflow-hidden w-full", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "w-full", viewportClassName: "max-h-[70vh]", children: content2.oldText == null || content2.oldText === content2.newText ? /* @__PURE__ */ jsxRuntimeExports.jsx(
143837
- CodeView,
143838
- {
143839
- content: content2.newText,
143840
- filename: content2.path.split("/").pop()
143841
- }
143842
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
143843
- CodeCompareView,
143844
- {
143845
- oldContent: content2.oldText,
143846
- newContent: content2.newText,
143847
- filename: content2.path.split("/").pop()
143848
- }
143849
- ) }) })
143850
- ] }, index2);
143851
- }
143852
- return null;
143853
- }),
143854
- message2.terminalId && /* @__PURE__ */ jsxRuntimeExports.jsx(AgentTerminalOutput, { sessionId: session2.id, terminalId: message2.terminalId })
143603
+ )
143604
+ ]
143605
+ }
143606
+ ),
143607
+ contentItems.map((content2, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: `content-${index2}`, children: renderContentItem(content2, index2, session2.cwd) }, index2)),
143608
+ message2.terminalId && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "terminal", children: /* @__PURE__ */ jsxRuntimeExports.jsx(AgentTerminalOutput, { sessionId: session2.id, terminalId: message2.terminalId }) })
143609
+ ] })
143855
143610
  ] })
143856
143611
  ]
143857
143612
  }
@@ -144118,8 +143873,8 @@ const ThinkingBubble = reactExports.memo(function ThinkingBubble2({
144118
143873
  open: open2,
144119
143874
  onOpenChange: setOpen,
144120
143875
  children: [
144121
- /* @__PURE__ */ jsxRuntimeExports.jsxs(CollapsibleTrigger, { className: "w-full bg-transparent border-0 flex select-none items-center gap-2 px-0 py-1 text-[11px] text-muted-foreground/90 hover:text-muted-foreground pointer-events-auto", children: [
144122
- /* @__PURE__ */ jsxRuntimeExports.jsx(Lightbulb, { className: `size-3.5 ${isStreaming ? "animate-pulse" : ""}` }),
143876
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(CollapsibleTrigger, { className: "w-full bg-transparent border-0 flex select-none items-center gap-1 px-0 py-1 text-[11px] text-muted-foreground/90 hover:text-muted-foreground pointer-events-auto", children: [
143877
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Lightbulb, { className: `size-3.5 -ml-px ${isStreaming ? "animate-pulse" : ""}` }),
144123
143878
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: isStreaming ? t2("thinkingBubble.thinking", "Thinking...") : t2("thinkingBubble.thought", "Thought") })
144124
143879
  ] }),
144125
143880
  /* @__PURE__ */ jsxRuntimeExports.jsx(CollapsibleContent, { className: "mt-1", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "max-w-none", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -147781,16 +147536,8 @@ function readFileAsBase64(file) {
147781
147536
  reader.readAsDataURL(file);
147782
147537
  });
147783
147538
  }
147784
- function readFileAsText(file) {
147785
- return new Promise((resolve, reject) => {
147786
- const reader = new FileReader();
147787
- reader.onload = () => resolve(reader.result);
147788
- reader.onerror = reject;
147789
- reader.readAsText(file);
147790
- });
147791
- }
147792
147539
  async function addFileAsAttachment(file, type2, updateSessionState) {
147793
- const data = type2 === "image" ? await readFileAsBase64(file) : await readFileAsText(file);
147540
+ const data = await readFileAsBase64(file);
147794
147541
  updateSessionState((s16) => ({
147795
147542
  draftAttachments: [
147796
147543
  ...s16.draftAttachments,
@@ -147985,10 +147732,18 @@ function ChatInput({ session: session2 }) {
147985
147732
  }, [appendMentionsToInput]);
147986
147733
  const handleFileSelect = async (e11) => {
147987
147734
  const files = Array.from(e11.target.files || []);
147735
+ const absPaths = [];
147988
147736
  for (const file of files) {
147989
147737
  const isImage2 = file.type.startsWith("image/");
147990
- const type2 = isImage2 && supportsImage ? "image" : "file";
147991
- await addFileAsAttachment(file, type2, updateSessionState);
147738
+ if (isImage2 && supportsImage) {
147739
+ await addFileAsAttachment(file, "image", updateSessionState);
147740
+ } else if (!isWebUI) {
147741
+ const p3 = electron.getPathForFile(file);
147742
+ if (p3) absPaths.push(p3);
147743
+ }
147744
+ }
147745
+ if (absPaths.length > 0) {
147746
+ await insertPathMentions(absPaths);
147992
147747
  }
147993
147748
  if (fileInputRef.current) fileInputRef.current.value = "";
147994
147749
  };
@@ -148167,25 +147922,15 @@ function ChatInput({ session: session2 }) {
148167
147922
  let hasInlineAttachments = false;
148168
147923
  for (const file of Array.from(e11.dataTransfer.files)) {
148169
147924
  const isImage2 = file.type.startsWith("image/");
148170
- const canEmbed = isImage2 && supportsImage;
148171
- const canReadText = supportsEmbedded;
148172
- if (canEmbed || canReadText) {
147925
+ if (isImage2 && supportsImage) {
148173
147926
  hasInlineAttachments = true;
148174
147927
  (async () => {
148175
147928
  try {
148176
- const type2 = isImage2 ? "image" : "file";
148177
- await addFileAsAttachment(file, type2, updateSessionState);
147929
+ await addFileAsAttachment(file, "image", updateSessionState);
148178
147930
  } catch {
148179
147931
  if (!isWebUI) {
148180
147932
  const p3 = electron.getPathForFile(file);
148181
- if (p3) {
148182
- const mention = await absPathToMention(p3, session2.projectId, session2.cwd);
148183
- const textarea = getTextarea();
148184
- if (textarea) {
148185
- textarea.focus();
148186
- insertMentionsAtCursor(textarea, [mention]);
148187
- }
148188
- }
147933
+ if (p3) absPaths.push(p3);
148189
147934
  }
148190
147935
  }
148191
147936
  })();
@@ -148218,16 +147963,7 @@ function ChatInput({ session: session2 }) {
148218
147963
  } catch {
148219
147964
  }
148220
147965
  },
148221
- [
148222
- supportsImage,
148223
- supportsEmbedded,
148224
- session2.projectId,
148225
- session2.cwd,
148226
- updateSessionState,
148227
- getTextarea,
148228
- insertPathMentions,
148229
- appendMentionsToInput
148230
- ]
147966
+ [supportsImage, updateSessionState, insertPathMentions, appendMentionsToInput]
148231
147967
  );
148232
147968
  const handleDragOver = reactExports.useCallback((e11) => {
148233
147969
  if (e11.dataTransfer.types.includes("application/x-fello-tree-nodes") || e11.dataTransfer.types.includes("Files") || e11.dataTransfer.types.includes("text/uri-list")) {
@@ -148293,14 +148029,16 @@ function ChatInput({ session: session2 }) {
148293
148029
  const paths = [];
148294
148030
  for (const file of Array.from(files)) {
148295
148031
  const isImage2 = file.type.startsWith("image/");
148296
- const canEmbed = isImage2 && supportsImage;
148297
- const canReadText = supportsEmbedded;
148298
- if (canEmbed || canReadText) {
148032
+ if (isImage2 && supportsImage) {
148299
148033
  (async () => {
148300
- const type2 = isImage2 ? "image" : "file";
148301
- await addFileAsAttachment(file, type2, updateSessionState);
148034
+ try {
148035
+ await addFileAsAttachment(file, "image", updateSessionState);
148036
+ } catch {
148037
+ const p3 = electron.getPathForFile(file);
148038
+ if (p3) paths.push(p3);
148039
+ }
148302
148040
  })();
148303
- } else if (!isWebUI) {
148041
+ } else {
148304
148042
  const p3 = electron.getPathForFile(file);
148305
148043
  if (p3) paths.push(p3);
148306
148044
  }
@@ -148315,7 +148053,7 @@ function ChatInput({ session: session2 }) {
148315
148053
  return;
148316
148054
  }
148317
148055
  },
148318
- [session2, supportsImage, supportsEmbedded, updateSessionState, insertPathMentions]
148056
+ [session2, supportsImage, updateSessionState, insertPathMentions]
148319
148057
  );
148320
148058
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
148321
148059
  "div",
@@ -148493,7 +148231,7 @@ function ChatInput({ session: session2 }) {
148493
148231
  }
148494
148232
  ),
148495
148233
  children: [
148496
- /* @__PURE__ */ jsxRuntimeExports.jsx(Eclipse, { className: "size-3" }),
148234
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Eclipse, { className: "size-3.5" }),
148497
148235
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: availableModes.find((m2) => m2.id === currentModeId)?.name ?? t2("chatInput.mode", "Mode") }),
148498
148236
  /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: "size-3 opacity-60 shrink-0" })
148499
148237
  ]
@@ -148528,19 +148266,16 @@ function ChatInput({ session: session2 }) {
148528
148266
  )
148529
148267
  ] }),
148530
148268
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center", children: [
148531
- initializeInfo?.agentCapabilities?.promptCapabilities?.embeddedContext || initializeInfo?.agentCapabilities?.promptCapabilities?.image ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
148269
+ supportsImage || supportsEmbedded ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
148532
148270
  /* @__PURE__ */ jsxRuntimeExports.jsx(
148533
148271
  "input",
148534
148272
  {
148535
148273
  type: "file",
148536
148274
  multiple: true,
148275
+ accept: "*/*",
148537
148276
  ref: fileInputRef,
148538
148277
  className: "hidden",
148539
- onChange: handleFileSelect,
148540
- accept: [
148541
- initializeInfo?.agentCapabilities?.promptCapabilities?.image ? "image/*" : "",
148542
- initializeInfo?.agentCapabilities?.promptCapabilities?.embeddedContext ? "*/*" : ""
148543
- ].filter(Boolean).join(",")
148278
+ onChange: handleFileSelect
148544
148279
  }
148545
148280
  ),
148546
148281
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -148552,7 +148287,7 @@ function ChatInput({ session: session2 }) {
148552
148287
  onClick: () => fileInputRef.current?.click(),
148553
148288
  "aria-label": t2("chatInput.attach", "Attach file"),
148554
148289
  disabled: disabled2,
148555
- children: initializeInfo?.agentCapabilities?.promptCapabilities?.embeddedContext ? /* @__PURE__ */ jsxRuntimeExports.jsx(Paperclip, { className: "size-3.5" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Image$1, { className: "size-3.5" })
148290
+ children: supportsEmbedded ? /* @__PURE__ */ jsxRuntimeExports.jsx(Paperclip, { className: "size-3.5" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Image$1, { className: "size-3.5" })
148556
148291
  }
148557
148292
  )
148558
148293
  ] }) : null,
@@ -148604,7 +148339,7 @@ function ChatInput({ session: session2 }) {
148604
148339
  }
148605
148340
  ),
148606
148341
  children: [
148607
- /* @__PURE__ */ jsxRuntimeExports.jsx(Astroid, { className: "size-3" }),
148342
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Astroid, { className: "size-3.5" }),
148608
148343
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: availableModels.find((m2) => m2.modelId === currentModelId)?.name ?? t2("chatInput.selectModel", "Select model") }),
148609
148344
  /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: "size-3 opacity-60 shrink-0" })
148610
148345
  ]
@@ -148698,11 +148433,11 @@ function ChatInput({ session: session2 }) {
148698
148433
  {
148699
148434
  variant: "outline",
148700
148435
  size: "sm",
148701
- className: "h-7 text-xs text-muted-foreground hover:text-foreground gap-2 max-w-32 shrink overflow-hidden"
148436
+ className: "h-7 text-xs text-muted-foreground hover:text-foreground gap-2 max-w-48 shrink overflow-hidden"
148702
148437
  }
148703
148438
  ),
148704
148439
  children: [
148705
- /* @__PURE__ */ jsxRuntimeExports.jsx(Gauge, { className: "size-3" }),
148440
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Gauge, { className: "size-3.5" }),
148706
148441
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: availableThoughtLevels.find((l6) => l6.id === currentThoughtLevelId)?.name ?? "Thought" }),
148707
148442
  /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: "size-3 opacity-60 shrink-0" })
148708
148443
  ]
@@ -149109,6 +148844,280 @@ function getFileKind$1(filename) {
149109
148844
  if (ext === "md") return "markdown";
149110
148845
  return "text";
149111
148846
  }
148847
+ function ContextMenuRoot(props) {
148848
+ const [anchor2, setAnchor] = reactExports.useState({
148849
+ getBoundingClientRect() {
148850
+ return DOMRect.fromRect({
148851
+ width: 0,
148852
+ height: 0,
148853
+ x: 0,
148854
+ y: 0
148855
+ });
148856
+ }
148857
+ });
148858
+ const backdropRef = reactExports.useRef(null);
148859
+ const internalBackdropRef = reactExports.useRef(null);
148860
+ const actionsRef = reactExports.useRef(null);
148861
+ const positionerRef = reactExports.useRef(null);
148862
+ const allowMouseUpTriggerRef = reactExports.useRef(true);
148863
+ const initialCursorPointRef = reactExports.useRef(null);
148864
+ const id32 = useId();
148865
+ const contextValue = reactExports.useMemo(() => ({
148866
+ anchor: anchor2,
148867
+ setAnchor,
148868
+ actionsRef,
148869
+ backdropRef,
148870
+ internalBackdropRef,
148871
+ positionerRef,
148872
+ allowMouseUpTriggerRef,
148873
+ initialCursorPointRef,
148874
+ rootId: id32
148875
+ }), [anchor2, id32]);
148876
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuRootContext.Provider, {
148877
+ value: contextValue,
148878
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(MenuRootContext.Provider, {
148879
+ value: void 0,
148880
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(MenuRoot, {
148881
+ ...props
148882
+ })
148883
+ })
148884
+ });
148885
+ }
148886
+ const LONG_PRESS_DELAY = 500;
148887
+ const ContextMenuTrigger$1 = /* @__PURE__ */ reactExports.forwardRef(function ContextMenuTrigger2(componentProps, forwardedRef) {
148888
+ const {
148889
+ render: render4,
148890
+ className,
148891
+ style: style2,
148892
+ ...elementProps
148893
+ } = componentProps;
148894
+ const {
148895
+ setAnchor,
148896
+ actionsRef,
148897
+ internalBackdropRef,
148898
+ backdropRef,
148899
+ positionerRef,
148900
+ allowMouseUpTriggerRef,
148901
+ initialCursorPointRef,
148902
+ rootId
148903
+ } = useContextMenuRootContext(false);
148904
+ const {
148905
+ store
148906
+ } = useMenuRootContext(false);
148907
+ const open2 = store.useState("open");
148908
+ const disabled2 = store.useState("disabled");
148909
+ const triggerRef = reactExports.useRef(null);
148910
+ const touchPositionRef = reactExports.useRef(null);
148911
+ const longPressTimeout = useTimeout();
148912
+ const allowMouseUpTimeout = useTimeout();
148913
+ const allowMouseUpRef = reactExports.useRef(false);
148914
+ const mouseUpAbortControllerRef = reactExports.useRef(null);
148915
+ function handleLongPress(x2, y4, event) {
148916
+ const isTouchEvent2 = event.type.startsWith("touch");
148917
+ initialCursorPointRef.current = {
148918
+ x: x2,
148919
+ y: y4
148920
+ };
148921
+ setAnchor({
148922
+ getBoundingClientRect() {
148923
+ return DOMRect.fromRect({
148924
+ width: isTouchEvent2 ? 10 : 0,
148925
+ height: isTouchEvent2 ? 10 : 0,
148926
+ x: x2,
148927
+ y: y4
148928
+ });
148929
+ }
148930
+ });
148931
+ allowMouseUpRef.current = false;
148932
+ actionsRef.current?.setOpen(true, createChangeEventDetails(triggerPress, event));
148933
+ allowMouseUpTimeout.start(LONG_PRESS_DELAY, () => {
148934
+ allowMouseUpRef.current = true;
148935
+ });
148936
+ }
148937
+ function handleContextMenu(event) {
148938
+ if (disabled2) {
148939
+ return;
148940
+ }
148941
+ allowMouseUpTriggerRef.current = true;
148942
+ stopEvent$1(event);
148943
+ handleLongPress(event.clientX, event.clientY, event.nativeEvent);
148944
+ const doc = ownerDocument(triggerRef.current);
148945
+ mouseUpAbortControllerRef.current?.abort();
148946
+ const mouseUpAbortController = new AbortController();
148947
+ mouseUpAbortControllerRef.current = mouseUpAbortController;
148948
+ doc.addEventListener("mouseup", (mouseEvent) => {
148949
+ allowMouseUpTriggerRef.current = false;
148950
+ if (!allowMouseUpRef.current) {
148951
+ return;
148952
+ }
148953
+ allowMouseUpTimeout.clear();
148954
+ allowMouseUpRef.current = false;
148955
+ const mouseUpTarget = getTarget(mouseEvent);
148956
+ if (contains(positionerRef.current, mouseUpTarget)) {
148957
+ return;
148958
+ }
148959
+ if (rootId && mouseUpTarget && findRootOwnerId(mouseUpTarget) === rootId) {
148960
+ return;
148961
+ }
148962
+ actionsRef.current?.setOpen(false, createChangeEventDetails(cancelOpen, mouseEvent));
148963
+ }, {
148964
+ once: true,
148965
+ signal: mouseUpAbortController.signal
148966
+ });
148967
+ }
148968
+ function cancelLongPress() {
148969
+ longPressTimeout.clear();
148970
+ touchPositionRef.current = null;
148971
+ }
148972
+ function handleTouchStart(event) {
148973
+ if (disabled2) {
148974
+ cancelLongPress();
148975
+ return;
148976
+ }
148977
+ allowMouseUpTriggerRef.current = false;
148978
+ if (event.touches.length !== 1) {
148979
+ cancelLongPress();
148980
+ return;
148981
+ }
148982
+ event.stopPropagation();
148983
+ const touch = event.touches[0];
148984
+ const touchPosition = {
148985
+ x: touch.clientX,
148986
+ y: touch.clientY
148987
+ };
148988
+ touchPositionRef.current = touchPosition;
148989
+ longPressTimeout.start(LONG_PRESS_DELAY, () => {
148990
+ handleLongPress(touchPosition.x, touchPosition.y, event.nativeEvent);
148991
+ });
148992
+ }
148993
+ function handleTouchMove(event) {
148994
+ if (event.touches.length !== 1) {
148995
+ cancelLongPress();
148996
+ return;
148997
+ }
148998
+ if (longPressTimeout.isStarted() && touchPositionRef.current) {
148999
+ const touch = event.touches[0];
149000
+ const moveThreshold = 10;
149001
+ const deltaX = Math.abs(touch.clientX - touchPositionRef.current.x);
149002
+ const deltaY = Math.abs(touch.clientY - touchPositionRef.current.y);
149003
+ if (deltaX > moveThreshold || deltaY > moveThreshold) {
149004
+ cancelLongPress();
149005
+ }
149006
+ }
149007
+ }
149008
+ reactExports.useEffect(() => () => {
149009
+ mouseUpAbortControllerRef.current?.abort();
149010
+ }, []);
149011
+ reactExports.useEffect(() => {
149012
+ function handleDocumentContextMenu(event) {
149013
+ if (disabled2) {
149014
+ return;
149015
+ }
149016
+ const target = getTarget(event);
149017
+ const targetElement = target;
149018
+ if (contains(triggerRef.current, targetElement) || contains(internalBackdropRef.current, targetElement) || contains(backdropRef.current, targetElement)) {
149019
+ event.preventDefault();
149020
+ }
149021
+ }
149022
+ const doc = ownerDocument(triggerRef.current);
149023
+ return addEventListener(doc, "contextmenu", handleDocumentContextMenu);
149024
+ }, [backdropRef, disabled2, internalBackdropRef]);
149025
+ const state2 = {
149026
+ open: open2
149027
+ };
149028
+ const element2 = useRenderElement("div", componentProps, {
149029
+ state: state2,
149030
+ ref: [triggerRef, forwardedRef],
149031
+ props: [{
149032
+ onContextMenu: handleContextMenu,
149033
+ onTouchStart: handleTouchStart,
149034
+ onTouchMove: handleTouchMove,
149035
+ onTouchEnd: cancelLongPress,
149036
+ onTouchCancel: cancelLongPress,
149037
+ style: {
149038
+ WebkitTouchCallout: "none"
149039
+ }
149040
+ }, elementProps],
149041
+ stateAttributesMapping: pressableTriggerOpenStateMapping
149042
+ });
149043
+ return element2;
149044
+ });
149045
+ function ContextMenu({ ...props }) {
149046
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuRoot, { "data-slot": "context-menu", ...props });
149047
+ }
149048
+ function ContextMenuTrigger({
149049
+ className,
149050
+ ...props
149051
+ }) {
149052
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
149053
+ ContextMenuTrigger$1,
149054
+ {
149055
+ "data-slot": "context-menu-trigger",
149056
+ className: cn$8("select-none", className),
149057
+ ...props
149058
+ }
149059
+ );
149060
+ }
149061
+ function ContextMenuContent({
149062
+ className,
149063
+ align = "start",
149064
+ alignOffset = 4,
149065
+ side = "right",
149066
+ sideOffset = 0,
149067
+ ...props
149068
+ }) {
149069
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(MenuPortal, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
149070
+ MenuPositioner,
149071
+ {
149072
+ className: "isolate z-50 outline-none",
149073
+ align,
149074
+ alignOffset,
149075
+ side,
149076
+ sideOffset,
149077
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
149078
+ MenuPopup,
149079
+ {
149080
+ "data-slot": "context-menu-content",
149081
+ className: cn$8("z-50 max-h-(--available-height) min-w-38 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover py-1 px-1 space-y-0.5 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
149082
+ ...props
149083
+ }
149084
+ )
149085
+ }
149086
+ ) });
149087
+ }
149088
+ function ContextMenuItem({
149089
+ className,
149090
+ inset,
149091
+ variant = "default",
149092
+ ...props
149093
+ }) {
149094
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
149095
+ MenuItem,
149096
+ {
149097
+ "data-slot": "context-menu-item",
149098
+ "data-inset": inset,
149099
+ "data-variant": variant,
149100
+ className: cn$8(
149101
+ "group/context-menu-item relative flex cursor-default items-center gap-1.5 rounded-sm px-1.5 py-1 text-xs text-muted-foreground/90 outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive",
149102
+ className
149103
+ ),
149104
+ ...props
149105
+ }
149106
+ );
149107
+ }
149108
+ function ContextMenuSeparator({
149109
+ className,
149110
+ ...props
149111
+ }) {
149112
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
149113
+ Separator$1,
149114
+ {
149115
+ "data-slot": "context-menu-separator",
149116
+ className: cn$8("-mx-1 my-1 h-px bg-border", className),
149117
+ ...props
149118
+ }
149119
+ );
149120
+ }
149112
149121
  function FileViewTabs({ viewMode, viewModes, onViewModeChange }) {
149113
149122
  const { t: t2 } = useTranslation();
149114
149123
  if (viewModes.length <= 1) return null;
@@ -274763,6 +274772,7 @@ function Session({ session: session2 }) {
274763
274772
  }
274764
274773
  state2 = reduceSessionNotification(sessionId, state2, notification);
274765
274774
  }
274775
+ state2 = reduceFlushStreaming(state2);
274766
274776
  state2 = {
274767
274777
  ...state2,
274768
274778
  isLoading: false,