@zythum02/fello-server 0.1.53 → 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 (380) hide show
  1. package/out/renderer/assets/{_baseUniq-CJr3HkLS.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-POsBroTF.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-CmToUhDb.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-CxS1t3f7.js → arrow-left-CQqe9rrj.js} +1 -1
  11. package/out/renderer/assets/arrow-up-1eI4tva4.js +21 -0
  12. package/out/renderer/assets/{automation-Cyz3eLWp.js → automation-CQAOpWYp.js} +7 -7
  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-M2nnTg9f.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-CwLtsy_0.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-BUNDMqpH.js → channel-B-VC_ZcK.js} +1 -1
  22. package/out/renderer/assets/{chunk-4BX2VUAB-B2qXmkDT.js → chunk-4BX2VUAB-ClHmnOTC.js} +1 -1
  23. package/out/renderer/assets/{chunk-4TB4RGXK-DXLZpPY5.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-CJeyefxI.js → chunk-55IACEB6-CE8f6iip.js} +1 -1
  27. package/out/renderer/assets/{chunk-EDXVE4YY-CNjJEQfY.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-DOAOsjRu.js → chunk-FMBD7UC4-B38kFkjv.js} +1 -1
  31. package/out/renderer/assets/{chunk-OYMX7WX6-BG4B1VQ7.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-BriTCtaz.js.gz +0 -0
  34. package/out/renderer/assets/{chunk-QZHKN3VN-B9zfXYIQ.js → chunk-QZHKN3VN-BwJ37p5G.js} +1 -1
  35. package/out/renderer/assets/{chunk-YZCP3GAM-jeoI2tsD.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-B1kBsMlS.js → circle-x-D_gJIgxf.js} +1 -1
  39. package/out/renderer/assets/{classDiagram-v2-HSJHXN6E-DWPFF3Yt.js → classDiagram-6PBFFD2Q-D01ZMeaj.js} +7 -7
  40. package/out/renderer/assets/{classDiagram-6PBFFD2Q-DWPFF3Yt.js → classDiagram-v2-HSJHXN6E-D01ZMeaj.js} +7 -7
  41. package/out/renderer/assets/{clone-Dcvr9oKv.js → clone-qctAbdCx.js} +1 -1
  42. package/out/renderer/assets/{code-editor-CEXlC4aV.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-CMuCJUWG.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-B3bgImVS.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-DTbumBA_.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-B34Y6e8q.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-BBiBmFR4.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-P-YslDjG.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-D_cLard_.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-D1agTYu1.js → ellipsis-92s4sSUO.js} +1 -1
  68. package/out/renderer/assets/{erDiagram-SMLLAGMA-C1MHqKvC.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-DR3J0r9e.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-nGCW6zu1.js → file-text-ITbWr8iW.js} +1 -1
  75. package/out/renderer/assets/{flowDiagram-DWJPFMVM-DprlEc3Z.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-CbTdumBm.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-06bme-w8.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-BZhxluo9.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-CvDMJtXf.js → highlighted-body-OFNGDK62-8846XFj-.js} +2 -2
  88. package/out/renderer/assets/{index-LmYTNvdF.js → index-BUwXrbHW.js} +1643 -776
  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-DqivEzWL.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-BKcg_z4w.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-BHEUMM9H.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-Bvv8xuxQ.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-C-gRMpeM.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-B4dSyItA.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-CoVhuer7.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-DHUPzNSt.js → link-2-DpdZfD3m.js} +1 -1
  116. package/out/renderer/assets/{mermaid-GHXKKRXX-CZqkhGx7.js → mermaid-GHXKKRXX-CqMNodCp.js} +36 -36
  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-BgSvicCB.js → mic-CT1bYBEV.js} +1 -1
  120. package/out/renderer/assets/{min-emzuJjmk.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-DQ4JNECm.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-CfLO-Sdk.js → open-guide-BqiUQfrM.js} +1 -1
  127. package/out/renderer/assets/{package-search-CrF2Iegl.js → package-search-BxIuIl9F.js} +1 -1
  128. package/out/renderer/assets/{pieDiagram-DEJITSTG-0H6CGQQt.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-YNCXW-GD.js → plus-C5XdFVFm.js} +1 -1
  132. package/out/renderer/assets/{quadrantDiagram-34T5L4WZ-D0aPKp5z.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-BkzwapW_.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-cStzNJ8V.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-Dbde7usj.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-DNMCsk-G.js → schedule-BtuArq_x.js} +9 -9
  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-BEY9yGF_.js → search-TCnuQyCi.js} +1 -1
  148. package/out/renderer/assets/{sequenceDiagram-FGHM5R23-DI8l1pSL.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-Bn5k9ScR.js → session-C_1BpGhU.js} +956 -269
  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-sqfPfGsy.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-DRhoXOO8.js → settings-2-BwfZrIw6.js} +1 -1
  158. package/out/renderer/assets/{settings-agents-Bntc31Nn.js → settings-agents-BtuYXQ1V.js} +26 -14
  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-DhbLb9cP.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-C7nGGjwT.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-H2dgqG7Y.js → settings-image-generation-MUHYnpbm.js} +6 -6
  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-ATto1xpJ.js → settings-layout-SBihzFfb.js} +10 -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-DUdMuoJ-.js → settings-mcp-Co88s-0y.js} +8 -8
  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-CJLG4aHW.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-B4VcnD5Z.js → settings-snippets-DGgI6mxm.js} +7 -7
  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-DQ7lfkTu.js → settings-speech-to-text-CV0xM7yz.js} +5 -5
  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-DZf9O-6j.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-Dp0r_4I-.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-D-5rlY38.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-CcLoIrSw.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-knFxDx0Y.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-dKXoCekr.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-DWWz4PMv.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-Dm2qD5bg.js → stateDiagram-v2-QKLJ7IA2-mbgJN2Ya.js} +5 -5
  210. package/out/renderer/assets/{task-C5dyYbfn.js → task-C7tCZ6e3.js} +11 -11
  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-DTqKlQbL.js → textarea-DNSPhqFr.js} +2 -2
  214. package/out/renderer/assets/{timeline-definition-GMOUNBTQ-A1tEoL9d.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-tNdYrJi_.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-BxN5_Sp6.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-B_3jA8zU.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-7r-g9MUq.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-Bv0YhA5m.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-NNVuzC4j.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 +44 -1
  240. package/package.json +1 -1
  241. package/out/renderer/assets/_baseUniq-CJr3HkLS.js.br +0 -0
  242. package/out/renderer/assets/_baseUniq-CJr3HkLS.js.gz +0 -0
  243. package/out/renderer/assets/arc-POsBroTF.js.br +0 -0
  244. package/out/renderer/assets/arc-POsBroTF.js.gz +0 -0
  245. package/out/renderer/assets/architectureDiagram-Q4EWVU46-CmToUhDb.js.br +0 -0
  246. package/out/renderer/assets/architectureDiagram-Q4EWVU46-CmToUhDb.js.gz +0 -0
  247. package/out/renderer/assets/automation-Cyz3eLWp.js.br +0 -0
  248. package/out/renderer/assets/automation-Cyz3eLWp.js.gz +0 -0
  249. package/out/renderer/assets/blockDiagram-DXYQGD6D-M2nnTg9f.js.br +0 -0
  250. package/out/renderer/assets/blockDiagram-DXYQGD6D-M2nnTg9f.js.gz +0 -0
  251. package/out/renderer/assets/c4Diagram-AHTNJAMY-CwLtsy_0.js.br +0 -0
  252. package/out/renderer/assets/c4Diagram-AHTNJAMY-CwLtsy_0.js.gz +0 -0
  253. package/out/renderer/assets/chunk-4TB4RGXK-DXLZpPY5.js.br +0 -0
  254. package/out/renderer/assets/chunk-4TB4RGXK-DXLZpPY5.js.gz +0 -0
  255. package/out/renderer/assets/chunk-EDXVE4YY-CNjJEQfY.js.br +0 -0
  256. package/out/renderer/assets/chunk-EDXVE4YY-CNjJEQfY.js.gz +0 -0
  257. package/out/renderer/assets/chunk-OYMX7WX6-BG4B1VQ7.js.br +0 -0
  258. package/out/renderer/assets/chunk-OYMX7WX6-BG4B1VQ7.js.gz +0 -0
  259. package/out/renderer/assets/chunk-YZCP3GAM-jeoI2tsD.js.br +0 -0
  260. package/out/renderer/assets/chunk-YZCP3GAM-jeoI2tsD.js.gz +0 -0
  261. package/out/renderer/assets/code-editor-CEXlC4aV.js.br +0 -0
  262. package/out/renderer/assets/code-editor-CEXlC4aV.js.gz +0 -0
  263. package/out/renderer/assets/collapsible-CMuCJUWG.js.br +0 -0
  264. package/out/renderer/assets/collapsible-CMuCJUWG.js.gz +0 -0
  265. package/out/renderer/assets/cose-bilkent-S5V4N54A-B3bgImVS.js.br +0 -0
  266. package/out/renderer/assets/cose-bilkent-S5V4N54A-B3bgImVS.js.gz +0 -0
  267. package/out/renderer/assets/dagre-KV5264BT-DTbumBA_.js.br +0 -0
  268. package/out/renderer/assets/dagre-KV5264BT-DTbumBA_.js.gz +0 -0
  269. package/out/renderer/assets/diagram-5BDNPKRD-B34Y6e8q.js.br +0 -0
  270. package/out/renderer/assets/diagram-5BDNPKRD-B34Y6e8q.js.gz +0 -0
  271. package/out/renderer/assets/diagram-G4DWMVQ6-BBiBmFR4.js.br +0 -0
  272. package/out/renderer/assets/diagram-G4DWMVQ6-BBiBmFR4.js.gz +0 -0
  273. package/out/renderer/assets/diagram-MMDJMWI5-P-YslDjG.js.br +0 -0
  274. package/out/renderer/assets/diagram-MMDJMWI5-P-YslDjG.js.gz +0 -0
  275. package/out/renderer/assets/diagram-TYMM5635-D_cLard_.js.br +0 -0
  276. package/out/renderer/assets/diagram-TYMM5635-D_cLard_.js.gz +0 -0
  277. package/out/renderer/assets/erDiagram-SMLLAGMA-C1MHqKvC.js.br +0 -0
  278. package/out/renderer/assets/erDiagram-SMLLAGMA-C1MHqKvC.js.gz +0 -0
  279. package/out/renderer/assets/field-DR3J0r9e.js.br +0 -0
  280. package/out/renderer/assets/field-DR3J0r9e.js.gz +0 -0
  281. package/out/renderer/assets/flowDiagram-DWJPFMVM-DprlEc3Z.js.br +0 -0
  282. package/out/renderer/assets/flowDiagram-DWJPFMVM-DprlEc3Z.js.gz +0 -0
  283. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-CbTdumBm.js.br +0 -0
  284. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-CbTdumBm.js.gz +0 -0
  285. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-06bme-w8.js.br +0 -0
  286. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-06bme-w8.js.gz +0 -0
  287. package/out/renderer/assets/graph-BZhxluo9.js.br +0 -0
  288. package/out/renderer/assets/graph-BZhxluo9.js.gz +0 -0
  289. package/out/renderer/assets/index-LmYTNvdF.js.br +0 -0
  290. package/out/renderer/assets/index-LmYTNvdF.js.gz +0 -0
  291. package/out/renderer/assets/index-aGJ_yZib.css +0 -382
  292. package/out/renderer/assets/index-aGJ_yZib.css.br +0 -0
  293. package/out/renderer/assets/index-aGJ_yZib.css.gz +0 -0
  294. package/out/renderer/assets/infoDiagram-42DDH7IO-DqivEzWL.js.br +0 -0
  295. package/out/renderer/assets/infoDiagram-42DDH7IO-DqivEzWL.js.gz +0 -0
  296. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-BKcg_z4w.js.br +0 -0
  297. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-BKcg_z4w.js.gz +0 -0
  298. package/out/renderer/assets/item-BHEUMM9H.js.br +0 -0
  299. package/out/renderer/assets/item-BHEUMM9H.js.gz +0 -0
  300. package/out/renderer/assets/journeyDiagram-VCZTEJTY-Bvv8xuxQ.js.br +0 -0
  301. package/out/renderer/assets/journeyDiagram-VCZTEJTY-Bvv8xuxQ.js.gz +0 -0
  302. package/out/renderer/assets/kanban-definition-6JOO6SKY-C-gRMpeM.js.br +0 -0
  303. package/out/renderer/assets/kanban-definition-6JOO6SKY-C-gRMpeM.js.gz +0 -0
  304. package/out/renderer/assets/layout-B4dSyItA.js.br +0 -0
  305. package/out/renderer/assets/layout-B4dSyItA.js.gz +0 -0
  306. package/out/renderer/assets/linear-CoVhuer7.js.br +0 -0
  307. package/out/renderer/assets/linear-CoVhuer7.js.gz +0 -0
  308. package/out/renderer/assets/mermaid-GHXKKRXX-CZqkhGx7.js.br +0 -0
  309. package/out/renderer/assets/mermaid-GHXKKRXX-CZqkhGx7.js.gz +0 -0
  310. package/out/renderer/assets/min-emzuJjmk.js.br +0 -0
  311. package/out/renderer/assets/min-emzuJjmk.js.gz +0 -0
  312. package/out/renderer/assets/mindmap-definition-QFDTVHPH-DQ4JNECm.js.br +0 -0
  313. package/out/renderer/assets/mindmap-definition-QFDTVHPH-DQ4JNECm.js.gz +0 -0
  314. package/out/renderer/assets/pieDiagram-DEJITSTG-0H6CGQQt.js.br +0 -0
  315. package/out/renderer/assets/pieDiagram-DEJITSTG-0H6CGQQt.js.gz +0 -0
  316. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-D0aPKp5z.js.br +0 -0
  317. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-D0aPKp5z.js.gz +0 -0
  318. package/out/renderer/assets/refresh-cw-Bvm578nW.js +0 -11
  319. package/out/renderer/assets/requirementDiagram-MS252O5E-BkzwapW_.js.br +0 -0
  320. package/out/renderer/assets/requirementDiagram-MS252O5E-BkzwapW_.js.gz +0 -0
  321. package/out/renderer/assets/resizable-cStzNJ8V.js.br +0 -0
  322. package/out/renderer/assets/resizable-cStzNJ8V.js.gz +0 -0
  323. package/out/renderer/assets/sankeyDiagram-XADWPNL6-Dbde7usj.js.br +0 -0
  324. package/out/renderer/assets/sankeyDiagram-XADWPNL6-Dbde7usj.js.gz +0 -0
  325. package/out/renderer/assets/schedule-DNMCsk-G.js.br +0 -0
  326. package/out/renderer/assets/schedule-DNMCsk-G.js.gz +0 -0
  327. package/out/renderer/assets/sequenceDiagram-FGHM5R23-DI8l1pSL.js.br +0 -0
  328. package/out/renderer/assets/sequenceDiagram-FGHM5R23-DI8l1pSL.js.gz +0 -0
  329. package/out/renderer/assets/session-Bn5k9ScR.js.br +0 -0
  330. package/out/renderer/assets/session-Bn5k9ScR.js.gz +0 -0
  331. package/out/renderer/assets/setting-dialog-sqfPfGsy.js.br +0 -0
  332. package/out/renderer/assets/setting-dialog-sqfPfGsy.js.gz +0 -0
  333. package/out/renderer/assets/settings-agents-Bntc31Nn.js.br +0 -0
  334. package/out/renderer/assets/settings-agents-Bntc31Nn.js.gz +0 -0
  335. package/out/renderer/assets/settings-general-DhbLb9cP.js.br +0 -0
  336. package/out/renderer/assets/settings-general-DhbLb9cP.js.gz +0 -0
  337. package/out/renderer/assets/settings-ilink-C7nGGjwT.js.br +0 -0
  338. package/out/renderer/assets/settings-ilink-C7nGGjwT.js.gz +0 -0
  339. package/out/renderer/assets/settings-image-generation-H2dgqG7Y.js.br +0 -0
  340. package/out/renderer/assets/settings-image-generation-H2dgqG7Y.js.gz +0 -0
  341. package/out/renderer/assets/settings-layout-ATto1xpJ.js.br +0 -0
  342. package/out/renderer/assets/settings-layout-ATto1xpJ.js.gz +0 -0
  343. package/out/renderer/assets/settings-mcp-DUdMuoJ-.js.br +0 -0
  344. package/out/renderer/assets/settings-mcp-DUdMuoJ-.js.gz +0 -0
  345. package/out/renderer/assets/settings-memory-CJLG4aHW.js.br +0 -0
  346. package/out/renderer/assets/settings-memory-CJLG4aHW.js.gz +0 -0
  347. package/out/renderer/assets/settings-snippets-B4VcnD5Z.js.br +0 -0
  348. package/out/renderer/assets/settings-snippets-B4VcnD5Z.js.gz +0 -0
  349. package/out/renderer/assets/settings-speech-to-text-DQ7lfkTu.js.br +0 -0
  350. package/out/renderer/assets/settings-speech-to-text-DQ7lfkTu.js.gz +0 -0
  351. package/out/renderer/assets/settings-webui-DZf9O-6j.js.br +0 -0
  352. package/out/renderer/assets/settings-webui-DZf9O-6j.js.gz +0 -0
  353. package/out/renderer/assets/skills-installed-Dp0r_4I-.js.br +0 -0
  354. package/out/renderer/assets/skills-installed-Dp0r_4I-.js.gz +0 -0
  355. package/out/renderer/assets/skills-layout-D-5rlY38.js.br +0 -0
  356. package/out/renderer/assets/skills-layout-D-5rlY38.js.gz +0 -0
  357. package/out/renderer/assets/skills-skills-sh-CcLoIrSw.js.br +0 -0
  358. package/out/renderer/assets/skills-skills-sh-CcLoIrSw.js.gz +0 -0
  359. package/out/renderer/assets/sortable.esm-knFxDx0Y.js.br +0 -0
  360. package/out/renderer/assets/sortable.esm-knFxDx0Y.js.gz +0 -0
  361. package/out/renderer/assets/standard-schema-dKXoCekr.js.br +0 -0
  362. package/out/renderer/assets/standard-schema-dKXoCekr.js.gz +0 -0
  363. package/out/renderer/assets/stateDiagram-FHFEXIEX-DWWz4PMv.js.br +0 -0
  364. package/out/renderer/assets/stateDiagram-FHFEXIEX-DWWz4PMv.js.gz +0 -0
  365. package/out/renderer/assets/task-C5dyYbfn.js.br +0 -0
  366. package/out/renderer/assets/task-C5dyYbfn.js.gz +0 -0
  367. package/out/renderer/assets/timeline-definition-GMOUNBTQ-A1tEoL9d.js.br +0 -0
  368. package/out/renderer/assets/timeline-definition-GMOUNBTQ-A1tEoL9d.js.gz +0 -0
  369. package/out/renderer/assets/vennDiagram-DHZGUBPP-tNdYrJi_.js.br +0 -0
  370. package/out/renderer/assets/vennDiagram-DHZGUBPP-tNdYrJi_.js.gz +0 -0
  371. package/out/renderer/assets/wardley-RL74JXVD-BxN5_Sp6.js.br +0 -0
  372. package/out/renderer/assets/wardley-RL74JXVD-BxN5_Sp6.js.gz +0 -0
  373. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-B_3jA8zU.js.br +0 -0
  374. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-B_3jA8zU.js.gz +0 -0
  375. package/out/renderer/assets/wrench-7r-g9MUq.js.br +0 -0
  376. package/out/renderer/assets/wrench-7r-g9MUq.js.gz +0 -0
  377. package/out/renderer/assets/xlsx-view-Bv0YhA5m.js.br +0 -0
  378. package/out/renderer/assets/xlsx-view-Bv0YhA5m.js.gz +0 -0
  379. package/out/renderer/assets/xychartDiagram-5P7HB3ND-NNVuzC4j.js.br +0 -0
  380. package/out/renderer/assets/xychartDiagram-5P7HB3ND-NNVuzC4j.js.gz +0 -0
@@ -1,6 +1,6 @@
1
- import { h 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, e as request, D as Dialog, p as DialogContent, q as DialogHeader, s as DialogTitle, t as DialogDescription, ab as ALL_FEATURES, ac as FEATURE_I18N_KEYS, c as Switch, H as DialogFooter, B as Button, R as LoaderCircle } from "./index-LmYTNvdF.js";
2
- import { T as Textarea } from "./textarea-DTqKlQbL.js";
3
- import { F as FieldGroup, a as Field, b as FieldLabel } from "./field-DR3J0r9e.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 { h as createLucideIcon } from "./index-LmYTNvdF.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,14 +1,13 @@
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, c as Switch, m as ContextMenuContent, n as ContextMenuItem, P as Pencil, o as ContextMenuSeparator, T as Trash2, e as request, f as extractErrorMessage } from "./index-LmYTNvdF.js";
2
- import { B as BookOpen, o as openGuide } from "./open-guide-CfLO-Sdk.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-knFxDx0Y.js";
4
- import { u as useForm, C as Controller, i } from "./standard-schema-dKXoCekr.js";
5
- import { T as Textarea } from "./textarea-DTqKlQbL.js";
6
- import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-DR3J0r9e.js";
7
- import { E as Ellipsis } from "./ellipsis-D1agTYu1.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";
8
8
  import { o as object, s as string } from "./schemas-c0X-G5_P.js";
9
- import { P as Plus } from "./plus-YNCXW-GD.js";
10
- import { R as RefreshCw } from "./refresh-cw-Bvm578nW.js";
11
- import { C as CircleX } from "./circle-x-B1kBsMlS.js";
9
+ import { P as Plus } from "./plus-C5XdFVFm.js";
10
+ import { C as CircleX } from "./circle-x-D_gJIgxf.js";
12
11
  function isValidStringMap$1(raw) {
13
12
  const trimmed = raw.trim();
14
13
  if (!trimmed) return true;
@@ -694,7 +693,7 @@ function AgentSortableItem({ id, children }) {
694
693
  type: "button",
695
694
  ...attributes,
696
695
  ...listeners,
697
- 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",
698
697
  title: t("settings.agents.dragToReorder", "Drag to reorder"),
699
698
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(GripVertical, { className: "size-3.5 -ml-1" })
700
699
  }
@@ -724,7 +723,18 @@ function SettingsAgents() {
724
723
  }, [configuredAgents]);
725
724
  const handleSave = async (updatedAgents) => {
726
725
  try {
727
- 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);
728
738
  setConfiguredAgents(updatedAgents);
729
739
  } catch (err) {
730
740
  toast.error(
@@ -819,7 +829,8 @@ function SettingsAgents() {
819
829
  };
820
830
  const handleReset = async (id) => {
821
831
  try {
822
- 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);
823
834
  toast.success(t("settings.agents.resetSuccess", "Agent reset."));
824
835
  } catch (err) {
825
836
  toast.error(
@@ -841,7 +852,8 @@ function SettingsAgents() {
841
852
  });
842
853
  if (!result) return;
843
854
  try {
844
- 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);
845
857
  toast.success(
846
858
  t("settings.agents.deleteAllSessionsSuccess", "{{count}} session(s) deleted.", {
847
859
  count: res.deletedSessionIds.length
@@ -1,5 +1,5 @@
1
- import { aJ as shimExports, aK as NOOP, aL 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, e as request, i as isWebUI, V as electron, f as extractErrorMessage, aM as clamp, aN as fieldValidityMapping, am as formatErrorMessage, ai as useBaseUiId, aj as useStableCallback, aO as useFormContext, aP as useFieldRootContext, aQ as useLabelableContext, ag as useControlled, az as none, aR as useRegisterFieldControl, aS as useValueChanged, aT as areArraysEqual, ak as createChangeEventDetails, aU as keyboard, aV as inputChange, aW as createGenericEventDetails, au as useIsoLayoutEffect, aX as activeElement, aY as ownerDocument, aZ as contains, ap as useRenderElement, a_ as CompositeList, a$ as getDefaultLabelId, b0 as resolveAriaLabelledBy, b1 as useDirection, ay as getWindow, as as useValueAsRef, b2 as getTarget, b3 as useAnimationFrame, ax as addEventListener, b4 as isElement, b5 as drag, b6 as trackPress, b7 as useLabelableId, b8 as useCompositeListItem, a2 as mergeProps, b9 as visuallyHidden, ar as useMergedRefs, ba as COMPOSITE_KEYS, bb as PAGE_UP, bc as PAGE_DOWN, bd as HOME, be as END, bf as ARROW_LEFT, bg as ARROW_DOWN, bh as ARROW_RIGHT, bi as ARROW_UP, bj as matchesFocusVisible, M as cn, S as ScrollArea, c as Switch, aa as ChevronRight, bk as EDITOR_LABELS, bl as L, bm as N, bn as _, bo as D, bp as w } from "./index-LmYTNvdF.js";
2
- import { a as Field, b as FieldLabel } from "./field-DR3J0r9e.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 { h as createLucideIcon, u as useTranslation, a as useAppStore, r as reactExports, Y as subscribe, e 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, a8 as SelectGroup, z as SelectItem, a9 as SelectLabel, c as Switch, V as electron } from "./index-LmYTNvdF.js";
2
- import { B as BookOpen, o as openGuide } from "./open-guide-CfLO-Sdk.js";
3
- import { L as Link2, E as ExternalLink, C as CircleAlert } from "./link-2-DHUPzNSt.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,9 +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, k as ContextMenu, l as ContextMenuTrigger, c 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, e as request, f as extractErrorMessage, J as generateUUID } from "./index-LmYTNvdF.js";
2
- import { u as useForm, C as Controller, i } from "./standard-schema-dKXoCekr.js";
3
- import { T as Textarea } from "./textarea-DTqKlQbL.js";
4
- import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-DR3J0r9e.js";
5
- import { P as Plus } from "./plus-YNCXW-GD.js";
6
- import { E as Ellipsis } from "./ellipsis-D1agTYu1.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";
7
7
  import { o as object, s as string } from "./schemas-c0X-G5_P.js";
8
8
  function isValidStringMap(raw) {
9
9
  const trimmed = raw.trim();
@@ -1,6 +1,7 @@
1
- import { h as createLucideIcon, u as useTranslation, K as useLocation, a as useAppStore, j as jsxRuntimeExports, N as Navigate, a5 as Bot, a6 as Globe, a7 as MessageCircle, M as cn, O as NavLink, Q as Outlet } from "./index-LmYTNvdF.js";
2
- import { W as Wrench, I as Image, B as Brain } from "./wrench-7r-g9MUq.js";
3
- import { M as Mic, C as Clipboard } from "./mic-BgSvicCB.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",
@@ -1,11 +1,11 @@
1
- import { h 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, c as Switch, m as ContextMenuContent, n as ContextMenuItem, P as Pencil, o as ContextMenuSeparator, T as Trash2, e as request, f as extractErrorMessage } from "./index-LmYTNvdF.js";
2
- import { B as BookOpen, o as openGuide } from "./open-guide-CfLO-Sdk.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-knFxDx0Y.js";
4
- import { u as useForm, C as Controller, i } from "./standard-schema-dKXoCekr.js";
5
- import { T as Textarea } from "./textarea-DTqKlQbL.js";
6
- import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-DR3J0r9e.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";
7
7
  import { o as object, s as string } from "./schemas-c0X-G5_P.js";
8
- import { P as Plus } from "./plus-YNCXW-GD.js";
8
+ import { P as Plus } from "./plus-C5XdFVFm.js";
9
9
  const __iconNode = [
10
10
  ["path", { d: "M12 7v6", key: "lw1j43" }],
11
11
  ["path", { d: "M15 10H9", key: "o6yqo3" }],
@@ -621,7 +621,7 @@ function McpSortableItem({ id, children }) {
621
621
  type: "button",
622
622
  ...attributes,
623
623
  ...listeners,
624
- 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",
625
625
  title: t("settings.mcp.dragToReorder", "Drag to reorder"),
626
626
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(GripVertical, { className: "size-3.5 -ml-1" })
627
627
  }
@@ -1,6 +1,5 @@
1
- import { h as createLucideIcon, u as useTranslation, a as useAppStore, b as useMessage, r as reactExports, e as request, j as jsxRuntimeExports, B as Button, S as ScrollArea, U as FolderOpen, T as Trash2, aa as ChevronRight, V as electron, f as extractErrorMessage } from "./index-LmYTNvdF.js";
2
- import { C as Collapsible, a as CollapsibleTrigger, b as CollapsibleContent } from "./collapsible-CMuCJUWG.js";
3
- import { R as RefreshCw } from "./refresh-cw-Bvm578nW.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
+ };
@@ -1,10 +1,10 @@
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, H as DialogFooter, B as Button, a as useAppStore, b as useMessage, S as ScrollArea, k as ContextMenu, l as ContextMenuTrigger, m as ContextMenuContent, n as ContextMenuItem, P as Pencil, o as ContextMenuSeparator, T as Trash2, J as generateUUID, e as request, f as extractErrorMessage } from "./index-LmYTNvdF.js";
2
- import { u as useForm, C as Controller, i } from "./standard-schema-dKXoCekr.js";
3
- import { T as Textarea } from "./textarea-DTqKlQbL.js";
4
- import { F as FieldGroup, a as Field, b as FieldLabel, c as FieldError } from "./field-DR3J0r9e.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, H as DialogFooter, B as Button, a as useAppStore, b as useMessage, S as ScrollArea, k as ContextMenu, l as ContextMenuTrigger, m as ContextMenuContent, n as ContextMenuItem, P as Pencil, o as ContextMenuSeparator, T as Trash2, J as generateUUID, f as request, g as extractErrorMessage } 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
5
  import { o as object, s as string } from "./schemas-c0X-G5_P.js";
6
- 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-knFxDx0Y.js";
7
- import { P as Plus } from "./plus-YNCXW-GD.js";
6
+ 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";
7
+ import { P as Plus } from "./plus-C5XdFVFm.js";
8
8
  const schema = object({
9
9
  title: string().trim().min(1, "settings.snippets.validation.enterTitle"),
10
10
  content: string().min(1, "settings.snippets.validation.enterContent")
@@ -150,7 +150,7 @@ function SnippetSortableItem({ id, children }) {
150
150
  type: "button",
151
151
  ...attributes,
152
152
  ...listeners,
153
- className: "cursor-grab active:cursor-grabbing p-0.5 rounded hover:bg-accent/50 text-muted-foreground shrink-0",
153
+ className: "-ml-4.5 cursor-grab active:cursor-grabbing p-0.5 rounded hover:bg-accent/50 text-muted-foreground shrink-0",
154
154
  title: t("settings.snippets.dragToReorder", "Drag to reorder"),
155
155
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(GripVertical, { className: "size-3.5 -ml-1" })
156
156
  }