@zythum02/fello-server 0.1.52 → 0.1.54

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 (382) hide show
  1. package/out/renderer/assets/{_baseUniq-C0L-SxO8.js → _baseUniq-DYINnBRJ.js} +1 -1
  2. package/out/renderer/assets/_baseUniq-DYINnBRJ.js.br +0 -0
  3. package/out/renderer/assets/_baseUniq-DYINnBRJ.js.gz +0 -0
  4. package/out/renderer/assets/{arc-bnlMIyYF.js → arc-BSUyw88k.js} +1 -1
  5. package/out/renderer/assets/arc-BSUyw88k.js.br +0 -0
  6. package/out/renderer/assets/arc-BSUyw88k.js.gz +0 -0
  7. package/out/renderer/assets/{architectureDiagram-Q4EWVU46-Cr0249Lu.js → architectureDiagram-Q4EWVU46-Cxb8DhYZ.js} +6 -6
  8. package/out/renderer/assets/architectureDiagram-Q4EWVU46-Cxb8DhYZ.js.br +0 -0
  9. package/out/renderer/assets/architectureDiagram-Q4EWVU46-Cxb8DhYZ.js.gz +0 -0
  10. package/out/renderer/assets/{arrow-left-D589pHHA.js → arrow-left-CQqe9rrj.js} +1 -1
  11. package/out/renderer/assets/arrow-up-1eI4tva4.js +21 -0
  12. package/out/renderer/assets/{automation-CvjrkE9z.js → automation-CQAOpWYp.js} +7 -8
  13. package/out/renderer/assets/automation-CQAOpWYp.js.br +0 -0
  14. package/out/renderer/assets/automation-CQAOpWYp.js.gz +0 -0
  15. package/out/renderer/assets/{blockDiagram-DXYQGD6D-Cw6vh5dx.js → blockDiagram-DXYQGD6D-CFozis-v.js} +7 -7
  16. package/out/renderer/assets/blockDiagram-DXYQGD6D-CFozis-v.js.br +0 -0
  17. package/out/renderer/assets/blockDiagram-DXYQGD6D-CFozis-v.js.gz +0 -0
  18. package/out/renderer/assets/{c4Diagram-AHTNJAMY-BUrvcyv2.js → c4Diagram-AHTNJAMY-CcDDkZUp.js} +3 -3
  19. package/out/renderer/assets/c4Diagram-AHTNJAMY-CcDDkZUp.js.br +0 -0
  20. package/out/renderer/assets/c4Diagram-AHTNJAMY-CcDDkZUp.js.gz +0 -0
  21. package/out/renderer/assets/{channel-DQr36qW5.js → channel-B-VC_ZcK.js} +1 -1
  22. package/out/renderer/assets/{chunk-4BX2VUAB-DOsXCDD7.js → chunk-4BX2VUAB-ClHmnOTC.js} +1 -1
  23. package/out/renderer/assets/{chunk-4TB4RGXK-D_fBnf0p.js → chunk-4TB4RGXK-mwOvn19G.js} +5 -5
  24. package/out/renderer/assets/chunk-4TB4RGXK-mwOvn19G.js.br +0 -0
  25. package/out/renderer/assets/chunk-4TB4RGXK-mwOvn19G.js.gz +0 -0
  26. package/out/renderer/assets/{chunk-55IACEB6-3ETNuedT.js → chunk-55IACEB6-CE8f6iip.js} +1 -1
  27. package/out/renderer/assets/{chunk-EDXVE4YY-BJLqHaER.js → chunk-EDXVE4YY-CU7aY96h.js} +1 -1
  28. package/out/renderer/assets/chunk-EDXVE4YY-CU7aY96h.js.br +0 -0
  29. package/out/renderer/assets/chunk-EDXVE4YY-CU7aY96h.js.gz +0 -0
  30. package/out/renderer/assets/{chunk-FMBD7UC4-DP-WGTNG.js → chunk-FMBD7UC4-B38kFkjv.js} +1 -1
  31. package/out/renderer/assets/{chunk-OYMX7WX6-CrS7loi7.js → chunk-OYMX7WX6-BriTCtaz.js} +3 -3
  32. package/out/renderer/assets/chunk-OYMX7WX6-BriTCtaz.js.br +0 -0
  33. package/out/renderer/assets/{chunk-OYMX7WX6-CrS7loi7.js.gz → chunk-OYMX7WX6-BriTCtaz.js.gz} +0 -0
  34. package/out/renderer/assets/{chunk-QZHKN3VN-C53USs5W.js → chunk-QZHKN3VN-BwJ37p5G.js} +1 -1
  35. package/out/renderer/assets/{chunk-YZCP3GAM-CMgdytZR.js → chunk-YZCP3GAM-BlHAYoQe.js} +1 -1
  36. package/out/renderer/assets/chunk-YZCP3GAM-BlHAYoQe.js.br +0 -0
  37. package/out/renderer/assets/chunk-YZCP3GAM-BlHAYoQe.js.gz +0 -0
  38. package/out/renderer/assets/{circle-x-OvXymUrf.js → circle-x-D_gJIgxf.js} +1 -1
  39. package/out/renderer/assets/{classDiagram-v2-HSJHXN6E-DIYtEiO5.js → classDiagram-6PBFFD2Q-D01ZMeaj.js} +7 -7
  40. package/out/renderer/assets/{classDiagram-6PBFFD2Q-DIYtEiO5.js → classDiagram-v2-HSJHXN6E-D01ZMeaj.js} +7 -7
  41. package/out/renderer/assets/{clone-D45P7Iqc.js → clone-qctAbdCx.js} +1 -1
  42. package/out/renderer/assets/{code-editor-SuOcN-5B.js → code-editor-tm0AYOLz.js} +2 -2
  43. package/out/renderer/assets/code-editor-tm0AYOLz.js.br +0 -0
  44. package/out/renderer/assets/code-editor-tm0AYOLz.js.gz +0 -0
  45. package/out/renderer/assets/{collapsible-Bd85ZCyx.js → collapsible-DD6NlDid.js} +1 -1
  46. package/out/renderer/assets/collapsible-DD6NlDid.js.br +0 -0
  47. package/out/renderer/assets/collapsible-DD6NlDid.js.gz +0 -0
  48. package/out/renderer/assets/command-BF4jOeoL.js +11 -0
  49. package/out/renderer/assets/{cose-bilkent-S5V4N54A-Dq8VllNT.js → cose-bilkent-S5V4N54A-CF4brbsf.js} +2 -2
  50. package/out/renderer/assets/cose-bilkent-S5V4N54A-CF4brbsf.js.br +0 -0
  51. package/out/renderer/assets/cose-bilkent-S5V4N54A-CF4brbsf.js.gz +0 -0
  52. package/out/renderer/assets/{dagre-KV5264BT-Dec8q4UT.js → dagre-KV5264BT-C6I5VgRp.js} +7 -7
  53. package/out/renderer/assets/dagre-KV5264BT-C6I5VgRp.js.br +0 -0
  54. package/out/renderer/assets/dagre-KV5264BT-C6I5VgRp.js.gz +0 -0
  55. package/out/renderer/assets/{diagram-5BDNPKRD-CzA2u_EN.js → diagram-5BDNPKRD-BAO72D5R.js} +7 -7
  56. package/out/renderer/assets/diagram-5BDNPKRD-BAO72D5R.js.br +0 -0
  57. package/out/renderer/assets/diagram-5BDNPKRD-BAO72D5R.js.gz +0 -0
  58. package/out/renderer/assets/{diagram-G4DWMVQ6-C8h3R7jD.js → diagram-G4DWMVQ6-BmpkrtJs.js} +7 -7
  59. package/out/renderer/assets/diagram-G4DWMVQ6-BmpkrtJs.js.br +0 -0
  60. package/out/renderer/assets/diagram-G4DWMVQ6-BmpkrtJs.js.gz +0 -0
  61. package/out/renderer/assets/{diagram-MMDJMWI5-9tiXSF90.js → diagram-MMDJMWI5-8keZZjgB.js} +6 -6
  62. package/out/renderer/assets/diagram-MMDJMWI5-8keZZjgB.js.br +0 -0
  63. package/out/renderer/assets/diagram-MMDJMWI5-8keZZjgB.js.gz +0 -0
  64. package/out/renderer/assets/{diagram-TYMM5635-BrarGJNf.js → diagram-TYMM5635-Be4uDvHI.js} +6 -6
  65. package/out/renderer/assets/diagram-TYMM5635-Be4uDvHI.js.br +0 -0
  66. package/out/renderer/assets/diagram-TYMM5635-Be4uDvHI.js.gz +0 -0
  67. package/out/renderer/assets/{ellipsis-BafkhboM.js → ellipsis-92s4sSUO.js} +1 -1
  68. package/out/renderer/assets/{erDiagram-SMLLAGMA-1Q9StK7L.js → erDiagram-SMLLAGMA-C6IgAbhi.js} +5 -5
  69. package/out/renderer/assets/erDiagram-SMLLAGMA-C6IgAbhi.js.br +0 -0
  70. package/out/renderer/assets/erDiagram-SMLLAGMA-C6IgAbhi.js.gz +0 -0
  71. package/out/renderer/assets/{field-ohYLdnJa.js → field-BPsDfe4e.js} +1 -1
  72. package/out/renderer/assets/field-BPsDfe4e.js.br +0 -0
  73. package/out/renderer/assets/field-BPsDfe4e.js.gz +0 -0
  74. package/out/renderer/assets/{file-text-CshHuHgW.js → file-text-ITbWr8iW.js} +1 -1
  75. package/out/renderer/assets/{flowDiagram-DWJPFMVM-CpcXVOmj.js → flowDiagram-DWJPFMVM-vbYKBn4t.js} +7 -7
  76. package/out/renderer/assets/flowDiagram-DWJPFMVM-vbYKBn4t.js.br +0 -0
  77. package/out/renderer/assets/flowDiagram-DWJPFMVM-vbYKBn4t.js.gz +0 -0
  78. package/out/renderer/assets/{ganttDiagram-T4ZO3ILL-C7Da4JBG.js → ganttDiagram-T4ZO3ILL-AxXIe9I4.js} +3 -3
  79. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-AxXIe9I4.js.br +0 -0
  80. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-AxXIe9I4.js.gz +0 -0
  81. package/out/renderer/assets/{gitGraphDiagram-UUTBAWPF-COBL52q_.js → gitGraphDiagram-UUTBAWPF-DSipARMB.js} +7 -7
  82. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-DSipARMB.js.br +0 -0
  83. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-DSipARMB.js.gz +0 -0
  84. package/out/renderer/assets/{graph-vKaAs6sc.js → graph-mNaHfg3r.js} +2 -2
  85. package/out/renderer/assets/graph-mNaHfg3r.js.br +0 -0
  86. package/out/renderer/assets/graph-mNaHfg3r.js.gz +0 -0
  87. package/out/renderer/assets/{highlighted-body-OFNGDK62-BGNnB1Ll.js → highlighted-body-OFNGDK62-8846XFj-.js} +2 -2
  88. package/out/renderer/assets/{index-BJPggXxf.js → index-BUwXrbHW.js} +1979 -663
  89. package/out/renderer/assets/index-BUwXrbHW.js.br +0 -0
  90. package/out/renderer/assets/index-BUwXrbHW.js.gz +0 -0
  91. package/out/renderer/assets/index-DOIzYXAl.css +382 -0
  92. package/out/renderer/assets/index-DOIzYXAl.css.br +0 -0
  93. package/out/renderer/assets/index-DOIzYXAl.css.gz +0 -0
  94. package/out/renderer/assets/{infoDiagram-42DDH7IO-z37e1cYq.js → infoDiagram-42DDH7IO-ThYxaM6U.js} +5 -5
  95. package/out/renderer/assets/infoDiagram-42DDH7IO-ThYxaM6U.js.br +0 -0
  96. package/out/renderer/assets/infoDiagram-42DDH7IO-ThYxaM6U.js.gz +0 -0
  97. package/out/renderer/assets/{ishikawaDiagram-UXIWVN3A-D0QTo3NZ.js → ishikawaDiagram-UXIWVN3A-EcWEDDQ3.js} +2 -2
  98. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-EcWEDDQ3.js.br +0 -0
  99. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-EcWEDDQ3.js.gz +0 -0
  100. package/out/renderer/assets/{item-Cv-tnX8b.js → item-Dph2aCdz.js} +20 -2
  101. package/out/renderer/assets/item-Dph2aCdz.js.br +0 -0
  102. package/out/renderer/assets/item-Dph2aCdz.js.gz +0 -0
  103. package/out/renderer/assets/{journeyDiagram-VCZTEJTY-CQV0gdjM.js → journeyDiagram-VCZTEJTY-Ct6VLkXK.js} +5 -5
  104. package/out/renderer/assets/journeyDiagram-VCZTEJTY-Ct6VLkXK.js.br +0 -0
  105. package/out/renderer/assets/journeyDiagram-VCZTEJTY-Ct6VLkXK.js.gz +0 -0
  106. package/out/renderer/assets/{kanban-definition-6JOO6SKY-DouRT6vc.js → kanban-definition-6JOO6SKY-DHWulQen.js} +3 -3
  107. package/out/renderer/assets/kanban-definition-6JOO6SKY-DHWulQen.js.br +0 -0
  108. package/out/renderer/assets/kanban-definition-6JOO6SKY-DHWulQen.js.gz +0 -0
  109. package/out/renderer/assets/{layout-BhbUjpvY.js → layout-pfquJ3N_.js} +4 -4
  110. package/out/renderer/assets/layout-pfquJ3N_.js.br +0 -0
  111. package/out/renderer/assets/layout-pfquJ3N_.js.gz +0 -0
  112. package/out/renderer/assets/{linear-D1WO10JK.js → linear-CdfVBcAB.js} +1 -1
  113. package/out/renderer/assets/linear-CdfVBcAB.js.br +0 -0
  114. package/out/renderer/assets/linear-CdfVBcAB.js.gz +0 -0
  115. package/out/renderer/assets/{link-2-C5KPDK2L.js → link-2-DpdZfD3m.js} +1 -1
  116. package/out/renderer/assets/{mermaid-GHXKKRXX-KwA2c0l5.js → mermaid-GHXKKRXX-CqMNodCp.js} +54 -54
  117. package/out/renderer/assets/mermaid-GHXKKRXX-CqMNodCp.js.br +0 -0
  118. package/out/renderer/assets/mermaid-GHXKKRXX-CqMNodCp.js.gz +0 -0
  119. package/out/renderer/assets/mic-CT1bYBEV.js +22 -0
  120. package/out/renderer/assets/{min-BP2C7bzG.js → min-CiK16GFr.js} +2 -2
  121. package/out/renderer/assets/min-CiK16GFr.js.br +0 -0
  122. package/out/renderer/assets/min-CiK16GFr.js.gz +0 -0
  123. package/out/renderer/assets/{mindmap-definition-QFDTVHPH-CxLYrjVp.js → mindmap-definition-QFDTVHPH-BvmM-Xdx.js} +4 -4
  124. package/out/renderer/assets/mindmap-definition-QFDTVHPH-BvmM-Xdx.js.br +0 -0
  125. package/out/renderer/assets/mindmap-definition-QFDTVHPH-BvmM-Xdx.js.gz +0 -0
  126. package/out/renderer/assets/{open-guide-UhaRhiI6.js → open-guide-BqiUQfrM.js} +1 -1
  127. package/out/renderer/assets/{package-search-DpyeQ5Lx.js → package-search-BxIuIl9F.js} +1 -1
  128. package/out/renderer/assets/{pieDiagram-DEJITSTG-D1LBRn_k.js → pieDiagram-DEJITSTG-CQY4NZ_4.js} +7 -7
  129. package/out/renderer/assets/pieDiagram-DEJITSTG-CQY4NZ_4.js.br +0 -0
  130. package/out/renderer/assets/pieDiagram-DEJITSTG-CQY4NZ_4.js.gz +0 -0
  131. package/out/renderer/assets/{plus-CsV_3veW.js → plus-C5XdFVFm.js} +1 -1
  132. package/out/renderer/assets/{quadrantDiagram-34T5L4WZ-89cdKeKP.js → quadrantDiagram-34T5L4WZ-BiDWKNht.js} +3 -3
  133. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-BiDWKNht.js.br +0 -0
  134. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-BiDWKNht.js.gz +0 -0
  135. package/out/renderer/assets/{requirementDiagram-MS252O5E-BPmX5cbr.js → requirementDiagram-MS252O5E-D-KxL9Tf.js} +4 -4
  136. package/out/renderer/assets/requirementDiagram-MS252O5E-D-KxL9Tf.js.br +0 -0
  137. package/out/renderer/assets/requirementDiagram-MS252O5E-D-KxL9Tf.js.gz +0 -0
  138. package/out/renderer/assets/{resizable-C_plViAK.js → resizable-ObbINbIB.js} +1 -1
  139. package/out/renderer/assets/resizable-ObbINbIB.js.br +0 -0
  140. package/out/renderer/assets/resizable-ObbINbIB.js.gz +0 -0
  141. package/out/renderer/assets/{sankeyDiagram-XADWPNL6-Cy6CP9QU.js → sankeyDiagram-XADWPNL6-BIFbqkzs.js} +2 -2
  142. package/out/renderer/assets/sankeyDiagram-XADWPNL6-BIFbqkzs.js.br +0 -0
  143. package/out/renderer/assets/sankeyDiagram-XADWPNL6-BIFbqkzs.js.gz +0 -0
  144. package/out/renderer/assets/{schedule-BRGzJU8Q.js → schedule-BtuArq_x.js} +9 -10
  145. package/out/renderer/assets/schedule-BtuArq_x.js.br +0 -0
  146. package/out/renderer/assets/schedule-BtuArq_x.js.gz +0 -0
  147. package/out/renderer/assets/{search-BHyqy--Q.js → search-TCnuQyCi.js} +1 -1
  148. package/out/renderer/assets/{sequenceDiagram-FGHM5R23-B3c7Za1w.js → sequenceDiagram-FGHM5R23-DQX-_zuj.js} +4 -4
  149. package/out/renderer/assets/sequenceDiagram-FGHM5R23-DQX-_zuj.js.br +0 -0
  150. package/out/renderer/assets/sequenceDiagram-FGHM5R23-DQX-_zuj.js.gz +0 -0
  151. package/out/renderer/assets/{session-DAyi31xW.js → session-C_1BpGhU.js} +1511 -263
  152. package/out/renderer/assets/session-C_1BpGhU.js.br +0 -0
  153. package/out/renderer/assets/session-C_1BpGhU.js.gz +0 -0
  154. package/out/renderer/assets/{setting-dialog-B9QpnCSy.js → setting-dialog-D1_-4H95.js} +3 -3
  155. package/out/renderer/assets/setting-dialog-D1_-4H95.js.br +0 -0
  156. package/out/renderer/assets/setting-dialog-D1_-4H95.js.gz +0 -0
  157. package/out/renderer/assets/{settings-2-DTnwbGMG.js → settings-2-BwfZrIw6.js} +1 -1
  158. package/out/renderer/assets/{settings-agents-BrAPSjkm.js → settings-agents-BtuYXQ1V.js} +26 -15
  159. package/out/renderer/assets/settings-agents-BtuYXQ1V.js.br +0 -0
  160. package/out/renderer/assets/settings-agents-BtuYXQ1V.js.gz +0 -0
  161. package/out/renderer/assets/{settings-general-Ck2OiZjy.js → settings-general-cHqsKFFa.js} +36 -3
  162. package/out/renderer/assets/settings-general-cHqsKFFa.js.br +0 -0
  163. package/out/renderer/assets/settings-general-cHqsKFFa.js.gz +0 -0
  164. package/out/renderer/assets/{settings-ilink-D0Br74W_.js → settings-ilink-BR1Vd9t9.js} +3 -3
  165. package/out/renderer/assets/settings-ilink-BR1Vd9t9.js.br +0 -0
  166. package/out/renderer/assets/settings-ilink-BR1Vd9t9.js.gz +0 -0
  167. package/out/renderer/assets/{settings-image-generation-BdyKoUUZ.js → settings-image-generation-MUHYnpbm.js} +6 -7
  168. package/out/renderer/assets/settings-image-generation-MUHYnpbm.js.br +0 -0
  169. package/out/renderer/assets/settings-image-generation-MUHYnpbm.js.gz +0 -0
  170. package/out/renderer/assets/{settings-layout-B7d1oQnz.js → settings-layout-SBihzFfb.js} +16 -3
  171. package/out/renderer/assets/settings-layout-SBihzFfb.js.br +0 -0
  172. package/out/renderer/assets/settings-layout-SBihzFfb.js.gz +0 -0
  173. package/out/renderer/assets/{settings-mcp-DtnVGpCh.js → settings-mcp-Co88s-0y.js} +8 -9
  174. package/out/renderer/assets/settings-mcp-Co88s-0y.js.br +0 -0
  175. package/out/renderer/assets/settings-mcp-Co88s-0y.js.gz +0 -0
  176. package/out/renderer/assets/{settings-memory-Bff_D3Id.js → settings-memory-CNH9gHYC.js} +2 -3
  177. package/out/renderer/assets/settings-memory-CNH9gHYC.js.br +0 -0
  178. package/out/renderer/assets/settings-memory-CNH9gHYC.js.gz +0 -0
  179. package/out/renderer/assets/settings-shortcuts-C1s7YIMj.js +267 -0
  180. package/out/renderer/assets/settings-shortcuts-C1s7YIMj.js.br +0 -0
  181. package/out/renderer/assets/settings-shortcuts-C1s7YIMj.js.gz +0 -0
  182. package/out/renderer/assets/{settings-snippets-CuwNZ684.js → settings-snippets-DGgI6mxm.js} +7 -8
  183. package/out/renderer/assets/settings-snippets-DGgI6mxm.js.br +0 -0
  184. package/out/renderer/assets/settings-snippets-DGgI6mxm.js.gz +0 -0
  185. package/out/renderer/assets/settings-speech-to-text-CV0xM7yz.js +1054 -0
  186. package/out/renderer/assets/settings-speech-to-text-CV0xM7yz.js.br +0 -0
  187. package/out/renderer/assets/settings-speech-to-text-CV0xM7yz.js.gz +0 -0
  188. package/out/renderer/assets/{settings-webui-CcjZQw6G.js → settings-webui-Bj9dJDcm.js} +2 -2
  189. package/out/renderer/assets/settings-webui-Bj9dJDcm.js.br +0 -0
  190. package/out/renderer/assets/settings-webui-Bj9dJDcm.js.gz +0 -0
  191. package/out/renderer/assets/{skills-installed-BR3EmTKD.js → skills-installed-Bhd5a33I.js} +4 -4
  192. package/out/renderer/assets/skills-installed-Bhd5a33I.js.br +0 -0
  193. package/out/renderer/assets/skills-installed-Bhd5a33I.js.gz +0 -0
  194. package/out/renderer/assets/{skills-layout-Cgy95TdD.js → skills-layout-DZFDa1cw.js} +2 -2
  195. package/out/renderer/assets/skills-layout-DZFDa1cw.js.br +0 -0
  196. package/out/renderer/assets/skills-layout-DZFDa1cw.js.gz +0 -0
  197. package/out/renderer/assets/{skills-skills-sh-7eO0Llg2.js → skills-skills-sh-DF59nekm.js} +4 -4
  198. package/out/renderer/assets/skills-skills-sh-DF59nekm.js.br +0 -0
  199. package/out/renderer/assets/skills-skills-sh-DF59nekm.js.gz +0 -0
  200. package/out/renderer/assets/{sortable.esm-BTWJnVbf.js → sortable.esm-BlhN8Kkg.js} +1 -1
  201. package/out/renderer/assets/sortable.esm-BlhN8Kkg.js.br +0 -0
  202. package/out/renderer/assets/sortable.esm-BlhN8Kkg.js.gz +0 -0
  203. package/out/renderer/assets/{standard-schema-Dk273X__.js → standard-schema-CGAs4bGi.js} +1 -1
  204. package/out/renderer/assets/standard-schema-CGAs4bGi.js.br +0 -0
  205. package/out/renderer/assets/standard-schema-CGAs4bGi.js.gz +0 -0
  206. package/out/renderer/assets/{stateDiagram-FHFEXIEX-C-7WuE0a.js → stateDiagram-FHFEXIEX-DappRrGm.js} +9 -9
  207. package/out/renderer/assets/stateDiagram-FHFEXIEX-DappRrGm.js.br +0 -0
  208. package/out/renderer/assets/stateDiagram-FHFEXIEX-DappRrGm.js.gz +0 -0
  209. package/out/renderer/assets/{stateDiagram-v2-QKLJ7IA2-IZRTgRo8.js → stateDiagram-v2-QKLJ7IA2-mbgJN2Ya.js} +5 -5
  210. package/out/renderer/assets/{task-Bd1x6VfK.js → task-C7tCZ6e3.js} +11 -12
  211. package/out/renderer/assets/task-C7tCZ6e3.js.br +0 -0
  212. package/out/renderer/assets/task-C7tCZ6e3.js.gz +0 -0
  213. package/out/renderer/assets/{textarea-CcqU8Ki7.js → textarea-DNSPhqFr.js} +2 -2
  214. package/out/renderer/assets/{timeline-definition-GMOUNBTQ-DVUMAatS.js → timeline-definition-GMOUNBTQ-o8XIUDyn.js} +3 -3
  215. package/out/renderer/assets/timeline-definition-GMOUNBTQ-o8XIUDyn.js.br +0 -0
  216. package/out/renderer/assets/timeline-definition-GMOUNBTQ-o8XIUDyn.js.gz +0 -0
  217. package/out/renderer/assets/{vennDiagram-DHZGUBPP-BtKdpgmE.js → vennDiagram-DHZGUBPP-mnc6bpmR.js} +2 -2
  218. package/out/renderer/assets/vennDiagram-DHZGUBPP-mnc6bpmR.js.br +0 -0
  219. package/out/renderer/assets/vennDiagram-DHZGUBPP-mnc6bpmR.js.gz +0 -0
  220. package/out/renderer/assets/{wardley-RL74JXVD-DRlpukah.js → wardley-RL74JXVD-wdJYeEiD.js} +4 -4
  221. package/out/renderer/assets/wardley-RL74JXVD-wdJYeEiD.js.br +0 -0
  222. package/out/renderer/assets/wardley-RL74JXVD-wdJYeEiD.js.gz +0 -0
  223. package/out/renderer/assets/{wardleyDiagram-NUSXRM2D-c_iDOO-3.js → wardleyDiagram-NUSXRM2D-Ddx6k7tJ.js} +6 -6
  224. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-Ddx6k7tJ.js.br +0 -0
  225. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-Ddx6k7tJ.js.gz +0 -0
  226. package/out/renderer/assets/{wrench-C-pOIUrz.js → wrench-BsjH8RPm.js} +1 -1
  227. package/out/renderer/assets/wrench-BsjH8RPm.js.br +0 -0
  228. package/out/renderer/assets/wrench-BsjH8RPm.js.gz +0 -0
  229. package/out/renderer/assets/{xlsx-view-Ca3bToM7.js → xlsx-view-CQd4jbk-.js} +21 -13
  230. package/out/renderer/assets/xlsx-view-CQd4jbk-.js.br +0 -0
  231. package/out/renderer/assets/xlsx-view-CQd4jbk-.js.gz +0 -0
  232. package/out/renderer/assets/{xychartDiagram-5P7HB3ND-D65drBbj.js → xychartDiagram-5P7HB3ND-VIQ9wuz0.js} +3 -3
  233. package/out/renderer/assets/xychartDiagram-5P7HB3ND-VIQ9wuz0.js.br +0 -0
  234. package/out/renderer/assets/xychartDiagram-5P7HB3ND-VIQ9wuz0.js.gz +0 -0
  235. package/out/renderer/index.html +2 -2
  236. package/out/renderer/index.html.br +0 -0
  237. package/out/renderer/index.html.gz +0 -0
  238. package/out/scripts/mcp-skills/server.mjs +1 -1
  239. package/out/server/main.js +290 -11
  240. package/package.json +2 -1
  241. package/resources/tree-sitter-wasm/tree-sitter-dart.wasm +0 -0
  242. package/out/renderer/assets/_baseUniq-C0L-SxO8.js.br +0 -0
  243. package/out/renderer/assets/_baseUniq-C0L-SxO8.js.gz +0 -0
  244. package/out/renderer/assets/arc-bnlMIyYF.js.br +0 -0
  245. package/out/renderer/assets/arc-bnlMIyYF.js.gz +0 -0
  246. package/out/renderer/assets/architectureDiagram-Q4EWVU46-Cr0249Lu.js.br +0 -0
  247. package/out/renderer/assets/architectureDiagram-Q4EWVU46-Cr0249Lu.js.gz +0 -0
  248. package/out/renderer/assets/automation-CvjrkE9z.js.br +0 -0
  249. package/out/renderer/assets/automation-CvjrkE9z.js.gz +0 -0
  250. package/out/renderer/assets/blockDiagram-DXYQGD6D-Cw6vh5dx.js.br +0 -0
  251. package/out/renderer/assets/blockDiagram-DXYQGD6D-Cw6vh5dx.js.gz +0 -0
  252. package/out/renderer/assets/c4Diagram-AHTNJAMY-BUrvcyv2.js.br +0 -0
  253. package/out/renderer/assets/c4Diagram-AHTNJAMY-BUrvcyv2.js.gz +0 -0
  254. package/out/renderer/assets/chunk-4TB4RGXK-D_fBnf0p.js.br +0 -0
  255. package/out/renderer/assets/chunk-4TB4RGXK-D_fBnf0p.js.gz +0 -0
  256. package/out/renderer/assets/chunk-EDXVE4YY-BJLqHaER.js.br +0 -0
  257. package/out/renderer/assets/chunk-EDXVE4YY-BJLqHaER.js.gz +0 -0
  258. package/out/renderer/assets/chunk-OYMX7WX6-CrS7loi7.js.br +0 -0
  259. package/out/renderer/assets/chunk-YZCP3GAM-CMgdytZR.js.br +0 -0
  260. package/out/renderer/assets/chunk-YZCP3GAM-CMgdytZR.js.gz +0 -0
  261. package/out/renderer/assets/clipboard-xI9lExaB.js +0 -15
  262. package/out/renderer/assets/code-editor-SuOcN-5B.js.br +0 -0
  263. package/out/renderer/assets/code-editor-SuOcN-5B.js.gz +0 -0
  264. package/out/renderer/assets/collapsible-Bd85ZCyx.js.br +0 -0
  265. package/out/renderer/assets/collapsible-Bd85ZCyx.js.gz +0 -0
  266. package/out/renderer/assets/context-menu-BO9-4FYd.js +0 -282
  267. package/out/renderer/assets/context-menu-BO9-4FYd.js.br +0 -0
  268. package/out/renderer/assets/context-menu-BO9-4FYd.js.gz +0 -0
  269. package/out/renderer/assets/cose-bilkent-S5V4N54A-Dq8VllNT.js.br +0 -0
  270. package/out/renderer/assets/cose-bilkent-S5V4N54A-Dq8VllNT.js.gz +0 -0
  271. package/out/renderer/assets/dagre-KV5264BT-Dec8q4UT.js.br +0 -0
  272. package/out/renderer/assets/dagre-KV5264BT-Dec8q4UT.js.gz +0 -0
  273. package/out/renderer/assets/diagram-5BDNPKRD-CzA2u_EN.js.br +0 -0
  274. package/out/renderer/assets/diagram-5BDNPKRD-CzA2u_EN.js.gz +0 -0
  275. package/out/renderer/assets/diagram-G4DWMVQ6-C8h3R7jD.js.br +0 -0
  276. package/out/renderer/assets/diagram-G4DWMVQ6-C8h3R7jD.js.gz +0 -0
  277. package/out/renderer/assets/diagram-MMDJMWI5-9tiXSF90.js.br +0 -0
  278. package/out/renderer/assets/diagram-MMDJMWI5-9tiXSF90.js.gz +0 -0
  279. package/out/renderer/assets/diagram-TYMM5635-BrarGJNf.js.br +0 -0
  280. package/out/renderer/assets/diagram-TYMM5635-BrarGJNf.js.gz +0 -0
  281. package/out/renderer/assets/erDiagram-SMLLAGMA-1Q9StK7L.js.br +0 -0
  282. package/out/renderer/assets/erDiagram-SMLLAGMA-1Q9StK7L.js.gz +0 -0
  283. package/out/renderer/assets/field-ohYLdnJa.js.br +0 -0
  284. package/out/renderer/assets/field-ohYLdnJa.js.gz +0 -0
  285. package/out/renderer/assets/flowDiagram-DWJPFMVM-CpcXVOmj.js.br +0 -0
  286. package/out/renderer/assets/flowDiagram-DWJPFMVM-CpcXVOmj.js.gz +0 -0
  287. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-C7Da4JBG.js.br +0 -0
  288. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-C7Da4JBG.js.gz +0 -0
  289. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-COBL52q_.js.br +0 -0
  290. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-COBL52q_.js.gz +0 -0
  291. package/out/renderer/assets/graph-vKaAs6sc.js.br +0 -0
  292. package/out/renderer/assets/graph-vKaAs6sc.js.gz +0 -0
  293. package/out/renderer/assets/index-BJPggXxf.js.br +0 -0
  294. package/out/renderer/assets/index-BJPggXxf.js.gz +0 -0
  295. package/out/renderer/assets/index-DGML4zYf.css +0 -382
  296. package/out/renderer/assets/index-DGML4zYf.css.br +0 -0
  297. package/out/renderer/assets/index-DGML4zYf.css.gz +0 -0
  298. package/out/renderer/assets/infoDiagram-42DDH7IO-z37e1cYq.js.br +0 -0
  299. package/out/renderer/assets/infoDiagram-42DDH7IO-z37e1cYq.js.gz +0 -0
  300. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-D0QTo3NZ.js.br +0 -0
  301. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-D0QTo3NZ.js.gz +0 -0
  302. package/out/renderer/assets/item-Cv-tnX8b.js.br +0 -0
  303. package/out/renderer/assets/item-Cv-tnX8b.js.gz +0 -0
  304. package/out/renderer/assets/journeyDiagram-VCZTEJTY-CQV0gdjM.js.br +0 -0
  305. package/out/renderer/assets/journeyDiagram-VCZTEJTY-CQV0gdjM.js.gz +0 -0
  306. package/out/renderer/assets/kanban-definition-6JOO6SKY-DouRT6vc.js.br +0 -0
  307. package/out/renderer/assets/kanban-definition-6JOO6SKY-DouRT6vc.js.gz +0 -0
  308. package/out/renderer/assets/layout-BhbUjpvY.js.br +0 -0
  309. package/out/renderer/assets/layout-BhbUjpvY.js.gz +0 -0
  310. package/out/renderer/assets/linear-D1WO10JK.js.br +0 -0
  311. package/out/renderer/assets/linear-D1WO10JK.js.gz +0 -0
  312. package/out/renderer/assets/mermaid-GHXKKRXX-KwA2c0l5.js.br +0 -0
  313. package/out/renderer/assets/mermaid-GHXKKRXX-KwA2c0l5.js.gz +0 -0
  314. package/out/renderer/assets/min-BP2C7bzG.js.br +0 -0
  315. package/out/renderer/assets/min-BP2C7bzG.js.gz +0 -0
  316. package/out/renderer/assets/mindmap-definition-QFDTVHPH-CxLYrjVp.js.br +0 -0
  317. package/out/renderer/assets/mindmap-definition-QFDTVHPH-CxLYrjVp.js.gz +0 -0
  318. package/out/renderer/assets/pieDiagram-DEJITSTG-D1LBRn_k.js.br +0 -0
  319. package/out/renderer/assets/pieDiagram-DEJITSTG-D1LBRn_k.js.gz +0 -0
  320. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-89cdKeKP.js.br +0 -0
  321. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-89cdKeKP.js.gz +0 -0
  322. package/out/renderer/assets/refresh-cw-CYW3HR-E.js +0 -11
  323. package/out/renderer/assets/requirementDiagram-MS252O5E-BPmX5cbr.js.br +0 -0
  324. package/out/renderer/assets/requirementDiagram-MS252O5E-BPmX5cbr.js.gz +0 -0
  325. package/out/renderer/assets/resizable-C_plViAK.js.br +0 -0
  326. package/out/renderer/assets/resizable-C_plViAK.js.gz +0 -0
  327. package/out/renderer/assets/sankeyDiagram-XADWPNL6-Cy6CP9QU.js.br +0 -0
  328. package/out/renderer/assets/sankeyDiagram-XADWPNL6-Cy6CP9QU.js.gz +0 -0
  329. package/out/renderer/assets/schedule-BRGzJU8Q.js.br +0 -0
  330. package/out/renderer/assets/schedule-BRGzJU8Q.js.gz +0 -0
  331. package/out/renderer/assets/sequenceDiagram-FGHM5R23-B3c7Za1w.js.br +0 -0
  332. package/out/renderer/assets/sequenceDiagram-FGHM5R23-B3c7Za1w.js.gz +0 -0
  333. package/out/renderer/assets/session-DAyi31xW.js.br +0 -0
  334. package/out/renderer/assets/session-DAyi31xW.js.gz +0 -0
  335. package/out/renderer/assets/setting-dialog-B9QpnCSy.js.br +0 -0
  336. package/out/renderer/assets/setting-dialog-B9QpnCSy.js.gz +0 -0
  337. package/out/renderer/assets/settings-agents-BrAPSjkm.js.br +0 -0
  338. package/out/renderer/assets/settings-agents-BrAPSjkm.js.gz +0 -0
  339. package/out/renderer/assets/settings-general-Ck2OiZjy.js.br +0 -0
  340. package/out/renderer/assets/settings-general-Ck2OiZjy.js.gz +0 -0
  341. package/out/renderer/assets/settings-ilink-D0Br74W_.js.br +0 -0
  342. package/out/renderer/assets/settings-ilink-D0Br74W_.js.gz +0 -0
  343. package/out/renderer/assets/settings-image-generation-BdyKoUUZ.js.br +0 -0
  344. package/out/renderer/assets/settings-image-generation-BdyKoUUZ.js.gz +0 -0
  345. package/out/renderer/assets/settings-layout-B7d1oQnz.js.br +0 -0
  346. package/out/renderer/assets/settings-layout-B7d1oQnz.js.gz +0 -0
  347. package/out/renderer/assets/settings-mcp-DtnVGpCh.js.br +0 -0
  348. package/out/renderer/assets/settings-mcp-DtnVGpCh.js.gz +0 -0
  349. package/out/renderer/assets/settings-memory-Bff_D3Id.js.br +0 -0
  350. package/out/renderer/assets/settings-memory-Bff_D3Id.js.gz +0 -0
  351. package/out/renderer/assets/settings-snippets-CuwNZ684.js.br +0 -0
  352. package/out/renderer/assets/settings-snippets-CuwNZ684.js.gz +0 -0
  353. package/out/renderer/assets/settings-webui-CcjZQw6G.js.br +0 -0
  354. package/out/renderer/assets/settings-webui-CcjZQw6G.js.gz +0 -0
  355. package/out/renderer/assets/skills-installed-BR3EmTKD.js.br +0 -0
  356. package/out/renderer/assets/skills-installed-BR3EmTKD.js.gz +0 -0
  357. package/out/renderer/assets/skills-layout-Cgy95TdD.js.br +0 -0
  358. package/out/renderer/assets/skills-layout-Cgy95TdD.js.gz +0 -0
  359. package/out/renderer/assets/skills-skills-sh-7eO0Llg2.js.br +0 -0
  360. package/out/renderer/assets/skills-skills-sh-7eO0Llg2.js.gz +0 -0
  361. package/out/renderer/assets/sortable.esm-BTWJnVbf.js.br +0 -0
  362. package/out/renderer/assets/sortable.esm-BTWJnVbf.js.gz +0 -0
  363. package/out/renderer/assets/standard-schema-Dk273X__.js.br +0 -0
  364. package/out/renderer/assets/standard-schema-Dk273X__.js.gz +0 -0
  365. package/out/renderer/assets/stateDiagram-FHFEXIEX-C-7WuE0a.js.br +0 -0
  366. package/out/renderer/assets/stateDiagram-FHFEXIEX-C-7WuE0a.js.gz +0 -0
  367. package/out/renderer/assets/task-Bd1x6VfK.js.br +0 -0
  368. package/out/renderer/assets/task-Bd1x6VfK.js.gz +0 -0
  369. package/out/renderer/assets/timeline-definition-GMOUNBTQ-DVUMAatS.js.br +0 -0
  370. package/out/renderer/assets/timeline-definition-GMOUNBTQ-DVUMAatS.js.gz +0 -0
  371. package/out/renderer/assets/vennDiagram-DHZGUBPP-BtKdpgmE.js.br +0 -0
  372. package/out/renderer/assets/vennDiagram-DHZGUBPP-BtKdpgmE.js.gz +0 -0
  373. package/out/renderer/assets/wardley-RL74JXVD-DRlpukah.js.br +0 -0
  374. package/out/renderer/assets/wardley-RL74JXVD-DRlpukah.js.gz +0 -0
  375. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-c_iDOO-3.js.br +0 -0
  376. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-c_iDOO-3.js.gz +0 -0
  377. package/out/renderer/assets/wrench-C-pOIUrz.js.br +0 -0
  378. package/out/renderer/assets/wrench-C-pOIUrz.js.gz +0 -0
  379. package/out/renderer/assets/xlsx-view-Ca3bToM7.js.br +0 -0
  380. package/out/renderer/assets/xlsx-view-Ca3bToM7.js.gz +0 -0
  381. package/out/renderer/assets/xychartDiagram-5P7HB3ND-D65drBbj.js.br +0 -0
  382. package/out/renderer/assets/xychartDiagram-5P7HB3ND-D65drBbj.js.gz +0 -0
@@ -1,6 +1,6 @@
1
- import { c as createLucideIcon, u as useTranslation, r as reactExports, j as jsxRuntimeExports, o as Select, p as SelectTrigger, q as SelectValue, s as SelectContent, t as SelectItem, I as Input, b as useMessage, a as useAppStore, f as request, D as Dialog, k as DialogContent, l as DialogHeader, m as DialogTitle, n as DialogDescription, a6 as ALL_FEATURES, a7 as FEATURE_I18N_KEYS, d as Switch, z as DialogFooter, B as Button, H as LoaderCircle } from "./index-BJPggXxf.js";
2
- import { T as Textarea } from "./textarea-CcqU8Ki7.js";
3
- import { F as FieldGroup, a as Field, b as FieldLabel } from "./field-ohYLdnJa.js";
1
+ import { c as createLucideIcon, u as useTranslation, r as reactExports, j as jsxRuntimeExports, v as Select, w as SelectTrigger, x as SelectValue, y as SelectContent, z as SelectItem, I as Input, b as useMessage, a as useAppStore, f as request, D as Dialog, p as DialogContent, q as DialogHeader, s as DialogTitle, t as DialogDescription, af as ALL_FEATURES, ag as FEATURE_I18N_KEYS, d as Switch, H as DialogFooter, B as Button, R as LoaderCircle } from "./index-BUwXrbHW.js";
2
+ import { T as Textarea } from "./textarea-DNSPhqFr.js";
3
+ import { F as FieldGroup, a as Field, b as FieldLabel } from "./field-BPsDfe4e.js";
4
4
  const __iconNode = [
5
5
  [
6
6
  "path",
@@ -1,4 +1,4 @@
1
- import { c as createLucideIcon } from "./index-BJPggXxf.js";
1
+ import { c as createLucideIcon } from "./index-BUwXrbHW.js";
2
2
  const __iconNode = [
3
3
  ["path", { d: "M14 17H5", key: "gfn3mx" }],
4
4
  ["path", { d: "M19 7h-9", key: "6i9tg" }],
@@ -1,15 +1,13 @@
1
- import { u as useTranslation, r as reactExports, j as jsxRuntimeExports, D as Dialog, k as DialogContent, l as DialogHeader, m as DialogTitle, n as DialogDescription, I as Input, v as DropdownMenu, w as DropdownMenuTrigger, B as Button, x as DropdownMenuContent, y as DropdownMenuItem, z as DialogFooter, o as Select, p as SelectTrigger, q as SelectValue, s as SelectContent, t as SelectItem, a as useAppStore, b as useMessage, S as ScrollArea, d as Switch, P as Pencil, T as Trash2, f as request, g as extractErrorMessage } from "./index-BJPggXxf.js";
2
- import { B as BookOpen, o as openGuide } from "./open-guide-UhaRhiI6.js";
3
- import { C as ContextMenu, a as ContextMenuTrigger, b as ContextMenuContent, c as ContextMenuItem, d as ContextMenuSeparator } from "./context-menu-BO9-4FYd.js";
4
- import { u as useSensors, a as useSensor, D as DndContext, c as closestCenter, S as SortableContext, v as verticalListSortingStrategy, s as sortableKeyboardCoordinates, K as KeyboardSensor, P as PointerSensor, b as useSortable, C as CSS, G as GripVertical } from "./sortable.esm-BTWJnVbf.js";
5
- import { u as useForm, C as Controller, i } from "./standard-schema-Dk273X__.js";
6
- import { T as Textarea } from "./textarea-CcqU8Ki7.js";
7
- import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-ohYLdnJa.js";
8
- import { E as Ellipsis } from "./ellipsis-BafkhboM.js";
1
+ import { u as useTranslation, r as reactExports, j as jsxRuntimeExports, D as Dialog, p as DialogContent, q as DialogHeader, s as DialogTitle, t as DialogDescription, I as Input, A as DropdownMenu, E as DropdownMenuTrigger, B as Button, F as DropdownMenuContent, G as DropdownMenuItem, H as DialogFooter, v as Select, w as SelectTrigger, x as SelectValue, y as SelectContent, z as SelectItem, a as useAppStore, b as useMessage, S as ScrollArea, k as ContextMenu, l as ContextMenuTrigger, d as Switch, m as ContextMenuContent, n as ContextMenuItem, P as Pencil, a6 as RefreshCw, o as ContextMenuSeparator, T as Trash2, ac as resetAgent, g as extractErrorMessage, ad as clearAgentSessions, ae as updateAgentSettings } from "./index-BUwXrbHW.js";
2
+ import { B as BookOpen, o as openGuide } from "./open-guide-BqiUQfrM.js";
3
+ import { u as useSensors, a as useSensor, D as DndContext, c as closestCenter, S as SortableContext, v as verticalListSortingStrategy, s as sortableKeyboardCoordinates, K as KeyboardSensor, P as PointerSensor, b as useSortable, C as CSS, G as GripVertical } from "./sortable.esm-BlhN8Kkg.js";
4
+ import { u as useForm, C as Controller, i } from "./standard-schema-CGAs4bGi.js";
5
+ import { T as Textarea } from "./textarea-DNSPhqFr.js";
6
+ import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-BPsDfe4e.js";
7
+ import { E as Ellipsis } from "./ellipsis-92s4sSUO.js";
9
8
  import { o as object, s as string } from "./schemas-c0X-G5_P.js";
10
- import { P as Plus } from "./plus-CsV_3veW.js";
11
- import { R as RefreshCw } from "./refresh-cw-CYW3HR-E.js";
12
- import { C as CircleX } from "./circle-x-OvXymUrf.js";
9
+ import { P as Plus } from "./plus-C5XdFVFm.js";
10
+ import { C as CircleX } from "./circle-x-D_gJIgxf.js";
13
11
  function isValidStringMap$1(raw) {
14
12
  const trimmed = raw.trim();
15
13
  if (!trimmed) return true;
@@ -695,7 +693,7 @@ function AgentSortableItem({ id, children }) {
695
693
  type: "button",
696
694
  ...attributes,
697
695
  ...listeners,
698
- className: "cursor-grab active:cursor-grabbing p-0.5 rounded hover:bg-accent/50 text-muted-foreground shrink-0",
696
+ className: "-ml-4.5 cursor-grab active:cursor-grabbing p-0.5 rounded hover:bg-accent/50 text-muted-foreground shrink-0",
699
697
  title: t("settings.agents.dragToReorder", "Drag to reorder"),
700
698
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(GripVertical, { className: "size-3.5 -ml-1" })
701
699
  }
@@ -725,7 +723,18 @@ function SettingsAgents() {
725
723
  }, [configuredAgents]);
726
724
  const handleSave = async (updatedAgents) => {
727
725
  try {
728
- await request.updateSettings({ agents: updatedAgents });
726
+ const currentAgents = useAppStore.getState().configuredAgents;
727
+ const currentById = new Map(currentAgents.map((agent) => [agent.id, agent]));
728
+ const updatedById = new Map(updatedAgents.map((agent) => [agent.id, agent]));
729
+ const affectedAgentIds = /* @__PURE__ */ new Set();
730
+ for (const [id, currentAgent] of currentById) {
731
+ const updatedAgent = updatedById.get(id);
732
+ if (!updatedAgent || JSON.stringify(currentAgent) !== JSON.stringify(updatedAgent)) {
733
+ affectedAgentIds.add(id);
734
+ }
735
+ }
736
+ const sessionIds = useAppStore.getState().sessions.filter((session) => affectedAgentIds.has(session.agentId)).map((session) => session.id);
737
+ await updateAgentSettings(updatedAgents, sessionIds);
729
738
  setConfiguredAgents(updatedAgents);
730
739
  } catch (err) {
731
740
  toast.error(
@@ -820,7 +829,8 @@ function SettingsAgents() {
820
829
  };
821
830
  const handleReset = async (id) => {
822
831
  try {
823
- await request.resetAgent({ agentId: id });
832
+ const sessionIds = useAppStore.getState().sessions.filter((session) => session.agentId === id).map((session) => session.id);
833
+ await resetAgent(id, sessionIds);
824
834
  toast.success(t("settings.agents.resetSuccess", "Agent reset."));
825
835
  } catch (err) {
826
836
  toast.error(
@@ -842,7 +852,8 @@ function SettingsAgents() {
842
852
  });
843
853
  if (!result) return;
844
854
  try {
845
- const res = await request.clearAgentSessions({ agentId: id });
855
+ const sessionIds = useAppStore.getState().sessions.filter((session) => session.agentId === id).map((session) => session.id);
856
+ const res = await clearAgentSessions(id, sessionIds);
846
857
  toast.success(
847
858
  t("settings.agents.deleteAllSessionsSuccess", "{{count}} session(s) deleted.", {
848
859
  count: res.deletedSessionIds.length
@@ -1,5 +1,5 @@
1
- import { aX as shimExports, aY as NOOP, aZ as useCSPContext, j as jsxRuntimeExports, u as useTranslation, a as useAppStore, b as useMessage, r as reactExports, D as Dialog, k as DialogContent, l as DialogHeader, m as DialogTitle, o as Select, p as SelectTrigger, q as SelectValue, s as SelectContent, t as SelectItem, I as Input, z as DialogFooter, B as Button, f as request, i as isWebUI, K as electron, g as extractErrorMessage, a_ as clamp, a$ as fieldValidityMapping, aC as formatErrorMessage, aA as useBaseUiId, aB as useStableCallback, b0 as useFormContext, b1 as useFieldRootContext, b2 as useLabelableContext, ay as useControlled, aN as none, b3 as useRegisterFieldControl, b4 as useValueChanged, b5 as areArraysEqual, an as createChangeEventDetails, b6 as keyboard, b7 as inputChange, b8 as createGenericEventDetails, aJ as useIsoLayoutEffect, b9 as activeElement, af as ownerDocument, aj as contains, ah as useRenderElement, ba as CompositeList, bb as getDefaultLabelId, bc as resolveAriaLabelledBy, bd as useDirection, aM as getWindow, aH as useValueAsRef, ai as getTarget, be as useAnimationFrame, ag as addEventListener, bf as isElement, bg as drag, bh as trackPress, bi as useLabelableId, bj as useCompositeListItem, Z as mergeProps, bk as visuallyHidden, aG as useMergedRefs, bl as COMPOSITE_KEYS, bm as PAGE_UP, bn as PAGE_DOWN, bo as HOME, bp as END, bq as ARROW_LEFT, br as ARROW_DOWN, bs as ARROW_RIGHT, bt as ARROW_UP, bu as matchesFocusVisible, F as cn, S as ScrollArea, d as Switch, a5 as ChevronRight, bv as EDITOR_LABELS, bw as L, bx as N, by as _, bz as D, bA as w } from "./index-BJPggXxf.js";
2
- import { a as Field, b as FieldLabel } from "./field-ohYLdnJa.js";
1
+ import { aS as shimExports, aT as NOOP, aU as useCSPContext, j as jsxRuntimeExports, u as useTranslation, a as useAppStore, b as useMessage, r as reactExports, D as Dialog, p as DialogContent, q as DialogHeader, s as DialogTitle, v as Select, w as SelectTrigger, x as SelectValue, y as SelectContent, z as SelectItem, I as Input, H as DialogFooter, B as Button, f as request, i as isWebUI, V as electron, g as extractErrorMessage, aV as clamp, aW as fieldValidityMapping, av as formatErrorMessage, ar as useBaseUiId, as as useStableCallback, aX as useFormContext, aY as useFieldRootContext, aZ as useLabelableContext, ap as useControlled, aI as none, a_ as useRegisterFieldControl, a$ as useValueChanged, b0 as areArraysEqual, at as createChangeEventDetails, b1 as keyboard, b2 as inputChange, b3 as createGenericEventDetails, aD as useIsoLayoutEffect, b4 as activeElement, b5 as ownerDocument, b6 as contains, ay as useRenderElement, b7 as CompositeList, b8 as getDefaultLabelId, b9 as resolveAriaLabelledBy, ba as useDirection, aH as getWindow, aB as useValueAsRef, bb as getTarget, bc as useAnimationFrame, aG as addEventListener, bd as isElement, be as drag, bf as trackPress, bg as useLabelableId, bh as useCompositeListItem, ab as mergeProps, bi as visuallyHidden, aA as useMergedRefs, bj as COMPOSITE_KEYS, bk as PAGE_UP, bl as PAGE_DOWN, bm as HOME, bn as END, bo as ARROW_LEFT, bp as ARROW_DOWN, bq as ARROW_RIGHT, br as ARROW_UP, bs as matchesFocusVisible, M as cn, S as ScrollArea, d as Switch, a7 as ChevronRight, bt as EDITOR_LABELS, bu as L, bv as N, bw as _, bx as D, by as w } from "./index-BUwXrbHW.js";
2
+ import { a as Field, b as FieldLabel } from "./field-BPsDfe4e.js";
3
3
  const script = "";
4
4
  function subscribe() {
5
5
  return NOOP;
@@ -1538,7 +1538,7 @@ function Slider({
1538
1538
  SliderThumb,
1539
1539
  {
1540
1540
  "data-slot": "slider-thumb",
1541
- className: "relative block size-3 shrink-0 rounded-full border border-ring bg-white ring-ring/50 transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-3 focus-visible:ring-3 focus-visible:outline-hidden active:ring-3 disabled:pointer-events-none disabled:opacity-50"
1541
+ className: "relative block size-3 shrink-0 rounded-full border border-ring bg-white ring-ring/50 transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-1 focus-visible:ring-1 focus-visible:outline-hidden active:ring-1 disabled:pointer-events-none disabled:opacity-50"
1542
1542
  },
1543
1543
  index
1544
1544
  ))
@@ -1559,6 +1559,8 @@ function SettingsGeneral() {
1559
1559
  setEditor,
1560
1560
  sound,
1561
1561
  setSound,
1562
+ voiceInput,
1563
+ setVoiceInput,
1562
1564
  proxy
1563
1565
  } = useAppStore();
1564
1566
  const { toast } = useMessage();
@@ -1609,6 +1611,17 @@ function SettingsGeneral() {
1609
1611
  );
1610
1612
  }
1611
1613
  };
1614
+ const handleVoiceInputShortcutChange = async (checked) => {
1615
+ const newVoiceInput = { ...voiceInput, altDoublePress: checked };
1616
+ setVoiceInput(newVoiceInput);
1617
+ try {
1618
+ await request.updateSettings({ voiceInput: newVoiceInput });
1619
+ } catch {
1620
+ toast.error(
1621
+ t("settings.general.saveVoiceInputFailed", "Failed to save voice input setting.")
1622
+ );
1623
+ }
1624
+ };
1612
1625
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 flex flex-col h-full", children: [
1613
1626
  /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "flex-1 overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6 px-5 py-4 w-full max-w-4xl mx-auto", children: [
1614
1627
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
@@ -1685,6 +1698,26 @@ function SettingsGeneral() {
1685
1698
  ] }) })
1686
1699
  ] }),
1687
1700
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "border-t border-border" }),
1701
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
1702
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: "text-xs font-semibold text-muted-foreground/60 uppercase tracking-wider mb-3", children: t("settings.general.groupVoiceInput", "Voice Input") }),
1703
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [
1704
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-1.5", children: [
1705
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "text-sm font-medium leading-none", children: t("settings.general.altDoublePress", "Double-press Alt") }),
1706
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs text-muted-foreground/90", children: t(
1707
+ "settings.general.altDoublePressDesc",
1708
+ "Double-press Alt quickly while an input is focused to start or stop voice input."
1709
+ ) })
1710
+ ] }),
1711
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
1712
+ Switch,
1713
+ {
1714
+ checked: voiceInput.altDoublePress,
1715
+ onCheckedChange: handleVoiceInputShortcutChange
1716
+ }
1717
+ )
1718
+ ] }) })
1719
+ ] }),
1720
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "border-t border-border" }),
1688
1721
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
1689
1722
  /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: "text-xs font-semibold text-muted-foreground/60 uppercase tracking-wider mb-3", children: t("settings.general.groupNetwork", "Network") }),
1690
1723
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [
@@ -1,6 +1,6 @@
1
- import { c as createLucideIcon, u as useTranslation, a as useAppStore, r as reactExports, R as subscribe, f as request, j as jsxRuntimeExports, S as ScrollArea, X as CircleCheck, H as LoaderCircle, o as Select, p as SelectTrigger, q as SelectValue, s as SelectContent, a3 as SelectGroup, t as SelectItem, a4 as SelectLabel, d as Switch, K as electron } from "./index-BJPggXxf.js";
2
- import { B as BookOpen, o as openGuide } from "./open-guide-UhaRhiI6.js";
3
- import { L as Link2, E as ExternalLink, C as CircleAlert } from "./link-2-C5KPDK2L.js";
1
+ import { c as createLucideIcon, u as useTranslation, a as useAppStore, r as reactExports, Y as subscribe, f as request, j as jsxRuntimeExports, S as ScrollArea, a0 as CircleCheck, R as LoaderCircle, v as Select, w as SelectTrigger, x as SelectValue, y as SelectContent, a4 as SelectGroup, z as SelectItem, a5 as SelectLabel, d as Switch, V as electron } from "./index-BUwXrbHW.js";
2
+ import { B as BookOpen, o as openGuide } from "./open-guide-BqiUQfrM.js";
3
+ import { L as Link2, E as ExternalLink, C as CircleAlert } from "./link-2-DpdZfD3m.js";
4
4
  const __iconNode = [
5
5
  ["path", { d: "M9 17H7A5 5 0 0 1 7 7", key: "10o201" }],
6
6
  ["path", { d: "M15 7h2a5 5 0 0 1 4 8", key: "1d3206" }],
@@ -1,10 +1,9 @@
1
- import { u as useTranslation, a as useAppStore, b as useMessage, r as reactExports, j as jsxRuntimeExports, B as Button, S as ScrollArea, d as Switch, P as Pencil, T as Trash2, D as Dialog, k as DialogContent, l as DialogHeader, m as DialogTitle, n as DialogDescription, I as Input, o as Select, p as SelectTrigger, q as SelectValue, s as SelectContent, t as SelectItem, v as DropdownMenu, w as DropdownMenuTrigger, x as DropdownMenuContent, y as DropdownMenuItem, z as DialogFooter, f as request, g as extractErrorMessage, A as generateUUID } from "./index-BJPggXxf.js";
2
- import { u as useForm, C as Controller, i } from "./standard-schema-Dk273X__.js";
3
- import { T as Textarea } from "./textarea-CcqU8Ki7.js";
4
- import { C as ContextMenu, a as ContextMenuTrigger, b as ContextMenuContent, c as ContextMenuItem, d as ContextMenuSeparator } from "./context-menu-BO9-4FYd.js";
5
- import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-ohYLdnJa.js";
6
- import { P as Plus } from "./plus-CsV_3veW.js";
7
- import { E as Ellipsis } from "./ellipsis-BafkhboM.js";
1
+ import { u as useTranslation, a as useAppStore, b as useMessage, r as reactExports, j as jsxRuntimeExports, B as Button, S as ScrollArea, k as ContextMenu, l as ContextMenuTrigger, d as Switch, m as ContextMenuContent, n as ContextMenuItem, P as Pencil, o as ContextMenuSeparator, T as Trash2, D as Dialog, p as DialogContent, q as DialogHeader, s as DialogTitle, t as DialogDescription, I as Input, v as Select, w as SelectTrigger, x as SelectValue, y as SelectContent, z as SelectItem, A as DropdownMenu, E as DropdownMenuTrigger, F as DropdownMenuContent, G as DropdownMenuItem, H as DialogFooter, f as request, g as extractErrorMessage, J as generateUUID } from "./index-BUwXrbHW.js";
2
+ import { u as useForm, C as Controller, i } from "./standard-schema-CGAs4bGi.js";
3
+ import { T as Textarea } from "./textarea-DNSPhqFr.js";
4
+ import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-BPsDfe4e.js";
5
+ import { P as Plus } from "./plus-C5XdFVFm.js";
6
+ import { E as Ellipsis } from "./ellipsis-92s4sSUO.js";
8
7
  import { o as object, s as string } from "./schemas-c0X-G5_P.js";
9
8
  function isValidStringMap(raw) {
10
9
  const trimmed = raw.trim();
@@ -1,6 +1,7 @@
1
- import { c as createLucideIcon, u as useTranslation, E as useLocation, a as useAppStore, j as jsxRuntimeExports, N as Navigate, a0 as Bot, a1 as Globe, a2 as MessageCircle, F as cn, G as NavLink, O as Outlet } from "./index-BJPggXxf.js";
2
- import { W as Wrench, I as Image, B as Brain } from "./wrench-C-pOIUrz.js";
3
- import { C as Clipboard } from "./clipboard-xI9lExaB.js";
1
+ import { c as createLucideIcon, u as useTranslation, K as useLocation, a as useAppStore, j as jsxRuntimeExports, N as Navigate, a1 as Bot, a2 as Globe, a3 as MessageCircle, M as cn, O as NavLink, Q as Outlet } from "./index-BUwXrbHW.js";
2
+ import { C as Command } from "./command-BF4jOeoL.js";
3
+ import { W as Wrench, I as Image, B as Brain } from "./wrench-BsjH8RPm.js";
4
+ import { M as Mic, C as Clipboard } from "./mic-CT1bYBEV.js";
4
5
  const __iconNode = [
5
6
  ["path", { d: "M10 5H3", key: "1qgfaw" }],
6
7
  ["path", { d: "M12 19H3", key: "yhmn1j" }],
@@ -30,6 +31,12 @@ function SettingsLayout() {
30
31
  icon: /* @__PURE__ */ jsxRuntimeExports.jsx(SlidersHorizontal, { className: "size-4" }),
31
32
  label: t("settings.general.title", "General")
32
33
  },
34
+ {
35
+ id: "shortcuts",
36
+ href: "/settings/shortcuts",
37
+ icon: /* @__PURE__ */ jsxRuntimeExports.jsx(Command, { className: "size-4" }),
38
+ label: t("settings.shortcuts.title", "Shortcuts")
39
+ },
33
40
  {
34
41
  id: "agents",
35
42
  href: "/settings/agents",
@@ -48,6 +55,12 @@ function SettingsLayout() {
48
55
  icon: /* @__PURE__ */ jsxRuntimeExports.jsx(Image, { className: "size-4" }),
49
56
  label: t("settings.imageGeneration.title", "Image Generation")
50
57
  },
58
+ {
59
+ id: "speech-to-text",
60
+ href: "/settings/speech-to-text",
61
+ icon: /* @__PURE__ */ jsxRuntimeExports.jsx(Mic, { className: "size-4" }),
62
+ label: t("settings.speechToText.title", "Speech to Text")
63
+ },
51
64
  {
52
65
  id: "snippets",
53
66
  href: "/settings/snippets",
@@ -1,12 +1,11 @@
1
- import { c as createLucideIcon, u as useTranslation, r as reactExports, j as jsxRuntimeExports, D as Dialog, k as DialogContent, l as DialogHeader, m as DialogTitle, n as DialogDescription, I as Input, z as DialogFooter, B as Button, a as useAppStore, b as useMessage, v as DropdownMenu, w as DropdownMenuTrigger, x as DropdownMenuContent, y as DropdownMenuItem, S as ScrollArea, d as Switch, P as Pencil, T as Trash2, f as request, g as extractErrorMessage } from "./index-BJPggXxf.js";
2
- import { B as BookOpen, o as openGuide } from "./open-guide-UhaRhiI6.js";
3
- import { C as ContextMenu, a as ContextMenuTrigger, b as ContextMenuContent, c as ContextMenuItem, d as ContextMenuSeparator } from "./context-menu-BO9-4FYd.js";
4
- import { u as useSensors, a as useSensor, D as DndContext, c as closestCenter, S as SortableContext, v as verticalListSortingStrategy, s as sortableKeyboardCoordinates, K as KeyboardSensor, P as PointerSensor, b as useSortable, C as CSS, G as GripVertical } from "./sortable.esm-BTWJnVbf.js";
5
- import { u as useForm, C as Controller, i } from "./standard-schema-Dk273X__.js";
6
- import { T as Textarea } from "./textarea-CcqU8Ki7.js";
7
- import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-ohYLdnJa.js";
1
+ import { c as createLucideIcon, u as useTranslation, r as reactExports, j as jsxRuntimeExports, D as Dialog, p as DialogContent, q as DialogHeader, s as DialogTitle, t as DialogDescription, I as Input, H as DialogFooter, B as Button, a as useAppStore, b as useMessage, A as DropdownMenu, E as DropdownMenuTrigger, F as DropdownMenuContent, G as DropdownMenuItem, S as ScrollArea, k as ContextMenu, l as ContextMenuTrigger, d as Switch, m as ContextMenuContent, n as ContextMenuItem, P as Pencil, o as ContextMenuSeparator, T as Trash2, f as request, g as extractErrorMessage } from "./index-BUwXrbHW.js";
2
+ import { B as BookOpen, o as openGuide } from "./open-guide-BqiUQfrM.js";
3
+ import { u as useSensors, a as useSensor, D as DndContext, c as closestCenter, S as SortableContext, v as verticalListSortingStrategy, s as sortableKeyboardCoordinates, K as KeyboardSensor, P as PointerSensor, b as useSortable, C as CSS, G as GripVertical } from "./sortable.esm-BlhN8Kkg.js";
4
+ import { u as useForm, C as Controller, i } from "./standard-schema-CGAs4bGi.js";
5
+ import { T as Textarea } from "./textarea-DNSPhqFr.js";
6
+ import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-BPsDfe4e.js";
8
7
  import { o as object, s as string } from "./schemas-c0X-G5_P.js";
9
- import { P as Plus } from "./plus-CsV_3veW.js";
8
+ import { P as Plus } from "./plus-C5XdFVFm.js";
10
9
  const __iconNode = [
11
10
  ["path", { d: "M12 7v6", key: "lw1j43" }],
12
11
  ["path", { d: "M15 10H9", key: "o6yqo3" }],
@@ -622,7 +621,7 @@ function McpSortableItem({ id, children }) {
622
621
  type: "button",
623
622
  ...attributes,
624
623
  ...listeners,
625
- className: "cursor-grab active:cursor-grabbing p-0.5 rounded hover:bg-accent/50 text-muted-foreground shrink-0",
624
+ className: "-ml-4.5 cursor-grab active:cursor-grabbing p-0.5 rounded hover:bg-accent/50 text-muted-foreground shrink-0",
626
625
  title: t("settings.mcp.dragToReorder", "Drag to reorder"),
627
626
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(GripVertical, { className: "size-3.5 -ml-1" })
628
627
  }
@@ -1,6 +1,5 @@
1
- import { c as createLucideIcon, u as useTranslation, a as useAppStore, b as useMessage, r as reactExports, f as request, j as jsxRuntimeExports, B as Button, S as ScrollArea, J as FolderOpen, T as Trash2, a5 as ChevronRight, K as electron, g as extractErrorMessage } from "./index-BJPggXxf.js";
2
- import { C as Collapsible, a as CollapsibleTrigger, b as CollapsibleContent } from "./collapsible-Bd85ZCyx.js";
3
- import { R as RefreshCw } from "./refresh-cw-CYW3HR-E.js";
1
+ import { c as createLucideIcon, u as useTranslation, a as useAppStore, b as useMessage, r as reactExports, f as request, j as jsxRuntimeExports, B as Button, a6 as RefreshCw, S as ScrollArea, U as FolderOpen, T as Trash2, a7 as ChevronRight, V as electron, g as extractErrorMessage } from "./index-BUwXrbHW.js";
2
+ import { C as Collapsible, a as CollapsibleTrigger, b as CollapsibleContent } from "./collapsible-DD6NlDid.js";
4
3
  const __iconNode = [
5
4
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
6
5
  ["path", { d: "M4.929 4.929 19.07 19.071", key: "196cmz" }]
@@ -0,0 +1,267 @@
1
+ import { c as createLucideIcon, j as jsxRuntimeExports, M as cn, u as useTranslation, b as useMessage, a as useAppStore, r as reactExports, ah as COMMAND_DEFINITIONS, S as ScrollArea, ai as getCommandShortcuts, B as Button, D as Dialog, p as DialogContent, q as DialogHeader, s as DialogTitle, H as DialogFooter, f as request, g as extractErrorMessage, aj as shortcutPreviewFromKeyboardEvent, ak as shortcutFromKeyboardEvent, al as findShortcutConflicts } from "./index-BUwXrbHW.js";
2
+ import { C as Command } from "./command-BF4jOeoL.js";
3
+ import { A as ArrowUp, a as ArrowDown, b as ArrowRight } from "./arrow-up-1eI4tva4.js";
4
+ import { A as ArrowLeft } from "./arrow-left-CQqe9rrj.js";
5
+ const __iconNode$1 = [
6
+ [
7
+ "path",
8
+ {
9
+ d: "M9 19a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-6a1 1 0 0 1 1-1h3.293a.707.707 0 0 0 .5-1.207l-7.086-7.086a1 1 0 0 0-1.414 0l-7.086 7.086a.707.707 0 0 0 .5 1.207H8a1 1 0 0 1 1 1z",
10
+ key: "106j91"
11
+ }
12
+ ]
13
+ ];
14
+ const ArrowBigUp = createLucideIcon("arrow-big-up", __iconNode$1);
15
+ const __iconNode = [
16
+ ["path", { d: "M14 3h7", key: "16f0ms" }],
17
+ ["path", { d: "M3 3h5.28a1 1 0 0 1 .948.684l5.544 16.632a1 1 0 0 0 .949.684H21", key: "1qf1im" }]
18
+ ];
19
+ const Option = createLucideIcon("option", __iconNode);
20
+ function ShortcutPart({ part, isMac }) {
21
+ if (part === "Mod") {
22
+ return isMac ? /* @__PURE__ */ jsxRuntimeExports.jsx(Command, { className: "size-3.5" }) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Ctrl" });
23
+ }
24
+ if (part === "Ctrl") return /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Ctrl" });
25
+ if (part === "Alt") return isMac ? /* @__PURE__ */ jsxRuntimeExports.jsx(Option, { className: "size-3.5" }) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Alt" });
26
+ if (part === "Shift") return /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowBigUp, { className: "size-3.5" });
27
+ if (part === "ArrowUp") return /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowUp, { className: "size-3.5" });
28
+ if (part === "ArrowDown") return /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowDown, { className: "size-3.5" });
29
+ if (part === "ArrowLeft") return /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowLeft, { className: "size-3.5" });
30
+ if (part === "ArrowRight") return /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowRight, { className: "size-3.5" });
31
+ const symbolLabels = {
32
+ Plus: "+",
33
+ Minus: "-"
34
+ };
35
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: symbolLabels[part] ?? part });
36
+ }
37
+ function ShortcutKeys({ shortcut, isMac, className }) {
38
+ const parts = shortcut.split("+").filter(Boolean);
39
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: cn("inline-flex items-center gap-1.5", className), "aria-label": shortcut, children: parts.map((part, index) => /* @__PURE__ */ jsxRuntimeExports.jsx(
40
+ "kbd",
41
+ {
42
+ className: "inline-flex h-6 min-w-6 items-center justify-center rounded-md border border-border bg-muted/60 px-1.5 text-[11px] font-medium text-foreground/80 shadow-xs",
43
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(ShortcutPart, { part, isMac })
44
+ },
45
+ `${part}-${index}`
46
+ )) });
47
+ }
48
+ function ShortcutCapture({ shortcut, isMac, onCancel, onChange }) {
49
+ const { t } = useTranslation();
50
+ const captureRef = reactExports.useRef(null);
51
+ const [previewShortcut, setPreviewShortcut] = reactExports.useState(shortcut);
52
+ reactExports.useEffect(() => {
53
+ setPreviewShortcut(shortcut);
54
+ window.requestAnimationFrame(() => captureRef.current?.focus());
55
+ }, [shortcut]);
56
+ const handleKeyDown = (event) => {
57
+ event.preventDefault();
58
+ event.stopPropagation();
59
+ if (event.key === "Escape") {
60
+ onCancel();
61
+ return;
62
+ }
63
+ const preview = shortcutPreviewFromKeyboardEvent(event.nativeEvent, isMac);
64
+ if (preview) setPreviewShortcut(preview);
65
+ const nextShortcut = shortcutFromKeyboardEvent(event.nativeEvent, isMac);
66
+ if (nextShortcut) onChange(nextShortcut);
67
+ };
68
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
69
+ "button",
70
+ {
71
+ ref: captureRef,
72
+ type: "button",
73
+ className: "flex min-h-16 w-full items-center justify-center rounded-lg border border-dashed border-ring bg-background px-4 py-3 text-xs transition-colors focus-visible:ring-1 focus-visible:ring-ring/50",
74
+ onKeyDown: handleKeyDown,
75
+ "aria-label": t("settings.shortcuts.recording", "Press a shortcut"),
76
+ children: previewShortcut ? /* @__PURE__ */ jsxRuntimeExports.jsx(ShortcutKeys, { shortcut: previewShortcut, isMac }) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-muted-foreground", children: t("settings.shortcuts.recording", "Press a shortcut") })
77
+ }
78
+ );
79
+ }
80
+ function sameShortcuts(left, right) {
81
+ return left.length === right.length && left.every((shortcut, index) => shortcut === right[index]);
82
+ }
83
+ function SettingsShortcuts() {
84
+ const { t } = useTranslation();
85
+ const { toast } = useMessage();
86
+ const shortcuts = useAppStore((state) => state.shortcuts);
87
+ const setShortcuts = useAppStore((state) => state.setShortcuts);
88
+ const isMacApp = useAppStore((state) => state.isMacApp);
89
+ const [dialogCommandId, setDialogCommandId] = reactExports.useState(null);
90
+ const [dialogShortcut, setDialogShortcut] = reactExports.useState(null);
91
+ const [conflict, setConflict] = reactExports.useState(null);
92
+ const isMac = reactExports.useMemo(
93
+ () => isMacApp || typeof navigator !== "undefined" && /mac|iphone|ipad|ipod/i.test(navigator.platform),
94
+ [isMacApp]
95
+ );
96
+ const categoryCommands = reactExports.useMemo(
97
+ () => COMMAND_DEFINITIONS.filter((command) => command.category === "navigation"),
98
+ []
99
+ );
100
+ const persistShortcuts = async (nextShortcuts) => {
101
+ const previousShortcuts = shortcuts;
102
+ setShortcuts(nextShortcuts);
103
+ try {
104
+ await request.updateSettings({ shortcuts: nextShortcuts });
105
+ return true;
106
+ } catch (error) {
107
+ setShortcuts(previousShortcuts);
108
+ toast.error(
109
+ extractErrorMessage(error) || t("settings.shortcuts.saveFailed", "Failed to save shortcuts.")
110
+ );
111
+ return false;
112
+ }
113
+ };
114
+ const updateShortcut = async (command, shortcut) => {
115
+ const nextShortcuts = { ...shortcuts };
116
+ const nextValue = [shortcut];
117
+ if (sameShortcuts(nextValue, command.defaultShortcuts)) {
118
+ delete nextShortcuts[command.id];
119
+ } else {
120
+ nextShortcuts[command.id] = nextValue;
121
+ }
122
+ const nextConflict = findShortcutConflicts(COMMAND_DEFINITIONS, nextShortcuts).find(
123
+ (item) => item.commandIds.includes(command.id)
124
+ );
125
+ if (nextConflict) {
126
+ const conflictingCommandId = nextConflict.commandIds.find((id) => id !== command.id);
127
+ if (conflictingCommandId) {
128
+ setConflict({
129
+ commandId: command.id,
130
+ shortcut: nextConflict.shortcut,
131
+ conflictingCommandId
132
+ });
133
+ }
134
+ return false;
135
+ }
136
+ setConflict(null);
137
+ return persistShortcuts(nextShortcuts);
138
+ };
139
+ const clearShortcut = async (command) => {
140
+ const nextShortcuts = { ...shortcuts, [command.id]: [] };
141
+ setConflict(null);
142
+ await persistShortcuts(nextShortcuts);
143
+ };
144
+ const resetShortcut = async (command) => {
145
+ const nextShortcuts = { ...shortcuts };
146
+ delete nextShortcuts[command.id];
147
+ setConflict(null);
148
+ await persistShortcuts(nextShortcuts);
149
+ };
150
+ const dialogCommand = dialogCommandId ? COMMAND_DEFINITIONS.find((command) => command.id === dialogCommandId) : void 0;
151
+ const openShortcutDialog = (command) => {
152
+ setConflict(null);
153
+ setDialogCommandId(command.id);
154
+ setDialogShortcut(getCommandShortcuts(command, shortcuts)[0] ?? null);
155
+ };
156
+ const closeShortcutDialog = () => {
157
+ setDialogCommandId(null);
158
+ setDialogShortcut(null);
159
+ setConflict(null);
160
+ };
161
+ const confirmShortcutDialog = async () => {
162
+ if (!dialogCommand || !dialogShortcut) return;
163
+ const saved = await updateShortcut(dialogCommand, dialogShortcut);
164
+ if (saved) closeShortcutDialog();
165
+ };
166
+ const dialogConflict = dialogCommandId && conflict?.commandId === dialogCommandId ? conflict : null;
167
+ const dialogConflictingCommand = dialogConflict ? COMMAND_DEFINITIONS.find((command) => command.id === dialogConflict.conflictingCommandId) : void 0;
168
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-full flex-1 flex-col", children: [
169
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "flex-1 overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "w-full max-w-4xl space-y-6 px-5 py-4 mx-auto", children: [
170
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
171
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-lg font-medium", children: t("settings.shortcuts.title", "Shortcuts") }),
172
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: t("settings.shortcuts.desc", "Customize keyboard shortcuts for common actions.") })
173
+ ] }),
174
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
175
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: "mb-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground/60", children: t("settings.shortcuts.navigation", "Navigation") }),
176
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "divide-y divide-border border-y border-border", children: categoryCommands.map((command) => {
177
+ const shortcut = getCommandShortcuts(command, shortcuts)[0] ?? null;
178
+ const hasOverride = Object.prototype.hasOwnProperty.call(shortcuts, command.id);
179
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-6 py-3", children: [
180
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0 flex-4", children: [
181
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm font-medium", children: t(command.titleKey, command.id) }),
182
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-1 text-xs text-muted-foreground/90", children: t(command.descriptionKey, "Focus this area") })
183
+ ] }),
184
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-1 shrink-0 items-center gap-1.5", children: shortcut ? /* @__PURE__ */ jsxRuntimeExports.jsx(ShortcutKeys, { shortcut, isMac }) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "min-w-24 text-center text-xs text-muted-foreground", children: t("settings.shortcuts.unassigned", "Unassigned") }) }),
185
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center", children: [
186
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
187
+ Button,
188
+ {
189
+ type: "button",
190
+ variant: "ghost",
191
+ size: "xs",
192
+ className: "text-xs text-muted-foreground hover:text-foreground",
193
+ onClick: () => openShortcutDialog(command),
194
+ children: t("settings.shortcuts.set", "Set")
195
+ }
196
+ ),
197
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
198
+ Button,
199
+ {
200
+ type: "button",
201
+ variant: "ghost",
202
+ size: "xs",
203
+ className: "text-xs text-muted-foreground hover:text-foreground",
204
+ disabled: !shortcut,
205
+ onClick: () => void clearShortcut(command),
206
+ children: t("settings.shortcuts.delete", "Delete")
207
+ }
208
+ ),
209
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
210
+ Button,
211
+ {
212
+ type: "button",
213
+ variant: "ghost",
214
+ size: "xs",
215
+ className: "text-xs text-muted-foreground hover:text-foreground",
216
+ disabled: !hasOverride,
217
+ onClick: () => void resetShortcut(command),
218
+ children: t("settings.shortcuts.restore", "Restore")
219
+ }
220
+ )
221
+ ] })
222
+ ] }, command.id);
223
+ }) })
224
+ ] })
225
+ ] }) }),
226
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
227
+ Dialog,
228
+ {
229
+ open: Boolean(dialogCommandId),
230
+ onOpenChange: (open) => {
231
+ if (!open) closeShortcutDialog();
232
+ },
233
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogContent, { showCloseButton: false, "data-shortcut-capture": "true", children: [
234
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DialogHeader, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(DialogTitle, { children: t("settings.shortcuts.setTitle", "Set shortcut") }) }),
235
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "-mb-2 text-xs text-muted-foreground", children: dialogCommand ? t(dialogCommand.titleKey, dialogCommand.id) : t("settings.shortcuts.setDesc", "Press the shortcut you want to use.") }),
236
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
237
+ ShortcutCapture,
238
+ {
239
+ shortcut: dialogShortcut,
240
+ isMac,
241
+ onCancel: closeShortcutDialog,
242
+ onChange: setDialogShortcut
243
+ }
244
+ ),
245
+ dialogConflict && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-destructive -my-2", children: t("settings.shortcuts.conflict", "Already used by {{command}}.", {
246
+ command: dialogConflictingCommand ? t(dialogConflictingCommand.titleKey, dialogConflictingCommand.id) : dialogConflict.conflictingCommandId
247
+ }) }),
248
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogFooter, { children: [
249
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { type: "button", variant: "outline", onClick: closeShortcutDialog, children: t("settings.shortcuts.cancel", "Cancel") }),
250
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
251
+ Button,
252
+ {
253
+ type: "button",
254
+ onClick: () => void confirmShortcutDialog(),
255
+ disabled: !dialogShortcut,
256
+ children: t("settings.shortcuts.confirm", "Confirm")
257
+ }
258
+ )
259
+ ] })
260
+ ] })
261
+ }
262
+ )
263
+ ] });
264
+ }
265
+ export {
266
+ SettingsShortcuts
267
+ };