@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
@@ -58,6 +58,10 @@ var DEFAULT_SETTINGS = {
58
58
  muted: false,
59
59
  theme: "soft"
60
60
  },
61
+ voiceInput: {
62
+ altDoublePress: true
63
+ },
64
+ shortcuts: {},
61
65
  proxy: {
62
66
  mode: "off"
63
67
  }
@@ -71,6 +75,17 @@ function readSettings() {
71
75
  const raw = JSON.parse(readFileSync(settingsPath(), "utf-8"));
72
76
  const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
73
77
  const rawObj = isObject(raw) ? raw : null;
78
+ const shortcuts = (() => {
79
+ const rawShortcuts = rawObj && isObject(rawObj.shortcuts) ? rawObj.shortcuts : null;
80
+ if (!rawShortcuts) return {};
81
+ const next = {};
82
+ for (const [commandId, value] of Object.entries(rawShortcuts)) {
83
+ if (Array.isArray(value)) {
84
+ next[commandId] = value.filter((shortcut) => typeof shortcut === "string").map((shortcut) => shortcut.trim()).filter(Boolean);
85
+ }
86
+ }
87
+ return next;
88
+ })();
74
89
  const rawAgents = rawObj && isObject(rawObj.agents) ? rawObj.agents : null;
75
90
  const agents = (() => {
76
91
  if (!rawAgents) return DEFAULT_SETTINGS.agents;
@@ -191,6 +206,12 @@ function readSettings() {
191
206
  theme: raw2.theme === "soft" || raw2.theme === "crisp" ? raw2.theme : DEFAULT_SETTINGS.sound.theme
192
207
  };
193
208
  })();
209
+ const voiceInput = (() => {
210
+ const raw2 = rawObj && isObject(rawObj.voiceInput) ? rawObj.voiceInput : null;
211
+ return {
212
+ altDoublePress: typeof raw2?.altDoublePress === "boolean" ? raw2.altDoublePress : DEFAULT_SETTINGS.voiceInput.altDoublePress
213
+ };
214
+ })();
194
215
  const proxy = (() => {
195
216
  const raw2 = rawObj && isObject(rawObj.proxy) ? rawObj.proxy : null;
196
217
  if (!raw2) return DEFAULT_SETTINGS.proxy;
@@ -231,6 +252,25 @@ function readSettings() {
231
252
  model: p.model,
232
253
  active: typeof p.active === "boolean" ? p.active : false
233
254
  })) : [];
255
+ const speechToText = Array.isArray(rawObj?.speechToText) ? rawObj.speechToText.filter((value) => isObject(value)).filter((value) => {
256
+ const provider = value.provider;
257
+ return typeof value.id === "string" && typeof value.name === "string" && typeof value.apiKey === "string" && (provider === "volcengine" || provider === "dashscope" || provider === "openai" || provider === "iflytek");
258
+ }).map((value) => ({
259
+ id: value.id,
260
+ name: value.name,
261
+ provider: value.provider,
262
+ apiKey: value.apiKey,
263
+ appId: typeof value.appId === "string" ? value.appId : void 0,
264
+ apiSecret: typeof value.apiSecret === "string" ? value.apiSecret : void 0,
265
+ resourceId: typeof value.resourceId === "string" ? value.resourceId : void 0,
266
+ model: typeof value.model === "string" ? value.model : void 0,
267
+ baseUrl: typeof value.baseUrl === "string" ? value.baseUrl : void 0,
268
+ workspaceId: typeof value.workspaceId === "string" ? value.workspaceId : void 0,
269
+ region: value.region === "cn-beijing" || value.region === "ap-southeast-1" ? value.region : void 0,
270
+ workspace: typeof value.workspace === "string" ? value.workspace : void 0,
271
+ language: typeof value.language === "string" ? value.language : void 0,
272
+ active: typeof value.active === "boolean" ? value.active : false
273
+ })) : [];
234
274
  const editor = (() => {
235
275
  const raw2 = rawObj && isObject(rawObj.editor) ? rawObj.editor : null;
236
276
  if (raw2 && typeof raw2.name === "string" && raw2.name.trim()) {
@@ -247,9 +287,12 @@ function readSettings() {
247
287
  ilink,
248
288
  editor,
249
289
  sound,
290
+ voiceInput,
291
+ shortcuts,
250
292
  proxy,
251
293
  snippets,
252
- imageGeneration
294
+ imageGeneration,
295
+ speechToText
253
296
  };
254
297
  } catch {
255
298
  return DEFAULT_SETTINGS;
@@ -339,6 +382,12 @@ function getSettings() {
339
382
  muted: meta.sound.muted,
340
383
  theme: meta.sound.theme
341
384
  },
385
+ voiceInput: {
386
+ altDoublePress: meta.voiceInput.altDoublePress
387
+ },
388
+ shortcuts: Object.fromEntries(
389
+ Object.entries(meta.shortcuts).map(([commandId, shortcuts]) => [commandId, shortcuts.slice()])
390
+ ),
342
391
  proxy: meta.proxy ?? DEFAULT_SETTINGS.proxy,
343
392
  snippets: meta.snippets ?? [],
344
393
  imageGeneration: (meta.imageGeneration ?? []).map((p) => ({
@@ -351,6 +400,22 @@ function getSettings() {
351
400
  extraBody: p.extraBody ?? void 0,
352
401
  model: p.model,
353
402
  active: p.active
403
+ })),
404
+ speechToText: (meta.speechToText ?? []).map((p) => ({
405
+ id: p.id,
406
+ name: p.name,
407
+ provider: p.provider,
408
+ apiKey: p.apiKey,
409
+ appId: p.appId,
410
+ apiSecret: p.apiSecret,
411
+ resourceId: p.resourceId,
412
+ model: p.model,
413
+ baseUrl: p.baseUrl,
414
+ workspaceId: p.workspaceId,
415
+ region: p.region,
416
+ workspace: p.workspace,
417
+ language: p.language,
418
+ active: p.active
354
419
  }))
355
420
  };
356
421
  }
@@ -480,6 +545,20 @@ function updateSettings(settings) {
480
545
  theme: settings.sound.theme === "soft" || settings.sound.theme === "crisp" ? settings.sound.theme : prevMeta.sound.theme
481
546
  };
482
547
  })(),
548
+ voiceInput: (() => {
549
+ if (!settings.voiceInput) {
550
+ return prevMeta.voiceInput;
551
+ }
552
+ return {
553
+ altDoublePress: typeof settings.voiceInput.altDoublePress === "boolean" ? settings.voiceInput.altDoublePress : prevMeta.voiceInput.altDoublePress
554
+ };
555
+ })(),
556
+ shortcuts: settings.shortcuts ? Object.fromEntries(
557
+ Object.entries(settings.shortcuts).map(([commandId, shortcuts]) => [
558
+ commandId,
559
+ shortcuts.map((shortcut) => shortcut.trim()).filter(Boolean)
560
+ ])
561
+ ) : prevMeta.shortcuts,
483
562
  proxy: (() => {
484
563
  if (!settings.proxy) {
485
564
  return prevMeta.proxy;
@@ -506,7 +585,23 @@ function updateSettings(settings) {
506
585
  extraBody: p.extraBody ?? void 0,
507
586
  model: p.model,
508
587
  active: p.active
509
- })) : prevMeta.imageGeneration
588
+ })) : prevMeta.imageGeneration,
589
+ speechToText: settings.speechToText ? settings.speechToText.map((p) => ({
590
+ id: p.id,
591
+ name: p.name,
592
+ provider: p.provider,
593
+ apiKey: p.apiKey,
594
+ appId: p.appId?.trim() || void 0,
595
+ apiSecret: p.apiSecret?.trim() || void 0,
596
+ resourceId: p.resourceId?.trim() || void 0,
597
+ model: p.model?.trim() || void 0,
598
+ baseUrl: p.baseUrl?.trim() || void 0,
599
+ workspaceId: p.workspaceId?.trim() || void 0,
600
+ region: p.region,
601
+ workspace: p.workspace?.trim() || void 0,
602
+ language: p.language?.trim() || void 0,
603
+ active: p.active
604
+ })) : prevMeta.speechToText
510
605
  };
511
606
  writeSettings(meta);
512
607
  }
@@ -4949,7 +5044,7 @@ async function executeSubagent(params, subSessionId, taskName, taskPrompt, signa
4949
5044
  }
4950
5045
  return accumulatedText || "[No output produced]";
4951
5046
  } catch (error) {
4952
- const errorMessage = error instanceof Error ? error.message : String(error);
5047
+ const errorMessage2 = error instanceof Error ? error.message : String(error);
4953
5048
  const conn3 = params.getConnection();
4954
5049
  if (conn3) {
4955
5050
  await sendSubagentStatusUpdate(
@@ -4967,7 +5062,7 @@ async function executeSubagent(params, subSessionId, taskName, taskPrompt, signa
4967
5062
  sessionUpdate: "agent_message_chunk",
4968
5063
  content: { type: "text", text: `
4969
5064
 
4970
- **Error:** ${errorMessage}` }
5065
+ **Error:** ${errorMessage2}` }
4971
5066
  }
4972
5067
  });
4973
5068
  }
@@ -4975,7 +5070,7 @@ async function executeSubagent(params, subSessionId, taskName, taskPrompt, signa
4975
5070
  if (signal.aborted) {
4976
5071
  return accumulatedText || "[Cancelled]";
4977
5072
  }
4978
- return accumulatedText || `[Error: ${errorMessage}]`;
5073
+ return accumulatedText || `[Error: ${errorMessage2}]`;
4979
5074
  } finally {
4980
5075
  await closeACPClientTools(subAcp);
4981
5076
  }
@@ -10716,13 +10811,13 @@ function createAutomationModule(ctx, deps) {
10716
10811
  sendEvent("task-update", { scheduleId, task });
10717
10812
  return task;
10718
10813
  } catch (err) {
10719
- const errorMessage = err instanceof Error ? err.message : String(err);
10814
+ const errorMessage2 = err instanceof Error ? err.message : String(err);
10720
10815
  task.completedAt = Date.now();
10721
10816
  task.status = "error";
10722
- task.error = errorMessage;
10817
+ task.error = errorMessage2;
10723
10818
  store.saveTask(scheduleId, task);
10724
10819
  sendEvent("task-update", { scheduleId, task });
10725
- console.error(`[Automation] Task failed:`, errorMessage);
10820
+ console.error(`[Automation] Task failed:`, errorMessage2);
10726
10821
  return task;
10727
10822
  } finally {
10728
10823
  runningTasks.delete(scheduleId);
@@ -11369,7 +11464,7 @@ async function callOpenAICompatibleApi(provider, request) {
11369
11464
  }
11370
11465
  function createImageGenerationModule(ctx, deps) {
11371
11466
  const { storage } = ctx;
11372
- function getActiveProvider() {
11467
+ function getActiveProvider2() {
11373
11468
  const settings = storage.getSettings();
11374
11469
  const provider = settings.imageGeneration?.find((p) => p.active);
11375
11470
  if (!provider) {
@@ -11380,7 +11475,7 @@ function createImageGenerationModule(ctx, deps) {
11380
11475
  return provider;
11381
11476
  }
11382
11477
  async function generateImage(sessionId, request) {
11383
- const provider = getActiveProvider();
11478
+ const provider = getActiveProvider2();
11384
11479
  const apiResult = await callOpenAICompatibleApi(provider, request);
11385
11480
  const shareDir = storage.sessionShareDir(sessionId);
11386
11481
  if (!shareDir) throw new Error(`Session not found: ${sessionId}`);
@@ -11778,6 +11873,178 @@ function createToolboxModule(_ctx) {
11778
11873
  };
11779
11874
  }
11780
11875
 
11876
+ // src/backend/speech/manager.ts
11877
+ import { Buffer as Buffer2 } from "node:buffer";
11878
+ import {
11879
+ createASRClient
11880
+ } from "unified-realtime-asr";
11881
+ var DEFAULT_DASHSCOPE_MODEL = "fun-asr-flash-8k-realtime";
11882
+ var DEFAULT_OPENAI_MODEL = "gpt-4o-transcribe";
11883
+ function optionalString(value) {
11884
+ const trimmed = value?.trim();
11885
+ return trimmed || void 0;
11886
+ }
11887
+ function required(value, name) {
11888
+ const result = optionalString(value);
11889
+ if (!result) throw new Error(`\u5B9E\u65F6\u8BED\u97F3\u8BC6\u522B\u914D\u7F6E\u7F3A\u5C11 ${name}\u3002`);
11890
+ return result;
11891
+ }
11892
+ function buildOptions(provider) {
11893
+ return {
11894
+ language: optionalString(provider.language) ?? "zh-CN",
11895
+ sampleRate: 16e3,
11896
+ channels: 1,
11897
+ format: "pcm",
11898
+ interimResults: true,
11899
+ punctuation: true,
11900
+ autoReconnect: false,
11901
+ transcriptionModel: provider.provider === "openai" ? optionalString(provider.model) ?? DEFAULT_OPENAI_MODEL : void 0
11902
+ };
11903
+ }
11904
+ function buildConfig(provider) {
11905
+ const options = buildOptions(provider);
11906
+ const url = optionalString(provider.baseUrl);
11907
+ switch (provider.provider) {
11908
+ case "volcengine":
11909
+ return {
11910
+ provider: "volcengine",
11911
+ apiKey: required(provider.apiKey, "API Key"),
11912
+ resourceId: optionalString(provider.resourceId),
11913
+ appId: optionalString(provider.appId),
11914
+ url,
11915
+ options
11916
+ };
11917
+ case "dashscope":
11918
+ return {
11919
+ provider: "dashscope",
11920
+ apiKey: required(provider.apiKey, "API Key"),
11921
+ model: optionalString(provider.model) ?? DEFAULT_DASHSCOPE_MODEL,
11922
+ workspaceId: optionalString(provider.workspaceId),
11923
+ region: provider.region,
11924
+ workspace: optionalString(provider.workspace),
11925
+ url,
11926
+ options
11927
+ };
11928
+ case "openai":
11929
+ return {
11930
+ provider: "openai",
11931
+ apiKey: required(provider.apiKey, "API Key"),
11932
+ url,
11933
+ options
11934
+ };
11935
+ case "iflytek":
11936
+ return {
11937
+ provider: "iflytek",
11938
+ appId: required(provider.appId, "App ID"),
11939
+ apiKey: required(provider.apiKey, "API Key"),
11940
+ apiSecret: required(provider.apiSecret, "API Secret"),
11941
+ url,
11942
+ options
11943
+ };
11944
+ }
11945
+ }
11946
+ function getActiveProvider(ctx) {
11947
+ const provider = ctx.storage.getSettings().speechToText.find((item) => item.active);
11948
+ if (!provider) {
11949
+ throw new Error("\u8BF7\u5148\u5728\u8BBE\u7F6E \u2192 \u8BED\u97F3\u8BC6\u522B\u4E2D\u914D\u7F6E\u5E76\u542F\u7528\u4E00\u4E2A Provider\u3002");
11950
+ }
11951
+ return provider;
11952
+ }
11953
+ function errorMessage(error) {
11954
+ return error instanceof Error ? error.message : String(error);
11955
+ }
11956
+ function createAsrManager(ctx) {
11957
+ const sessions = /* @__PURE__ */ new Map();
11958
+ const keyOf2 = (clientId, asrSessionId) => `${clientId}:${asrSessionId}`;
11959
+ const emitError = (session, error) => {
11960
+ ctx.sendEvent("asr-error", {
11961
+ clientId: session.clientId,
11962
+ asrSessionId: session.asrSessionId,
11963
+ message: errorMessage(error)
11964
+ });
11965
+ };
11966
+ const emitTranscript = (session, transcript) => {
11967
+ ctx.sendEvent("asr-transcript", {
11968
+ clientId: session.clientId,
11969
+ asrSessionId: session.asrSessionId,
11970
+ text: transcript.text,
11971
+ isFinal: transcript.isFinal,
11972
+ id: transcript.id,
11973
+ index: transcript.index,
11974
+ speaker: transcript.speaker
11975
+ });
11976
+ };
11977
+ return {
11978
+ async start(clientId, asrSessionId) {
11979
+ const key = keyOf2(clientId, asrSessionId);
11980
+ if (sessions.has(key)) return { ok: true };
11981
+ const provider = getActiveProvider(ctx);
11982
+ const client2 = createASRClient(buildConfig(provider));
11983
+ const active = { clientId, asrSessionId, client: client2 };
11984
+ sessions.set(key, active);
11985
+ client2.on("transcript", (transcript) => {
11986
+ if (sessions.get(key) === active) emitTranscript(active, transcript);
11987
+ });
11988
+ client2.on("error", (error) => {
11989
+ if (sessions.get(key) === active) emitError(active, error);
11990
+ });
11991
+ client2.on("close", (info) => {
11992
+ if (sessions.get(key) !== active) return;
11993
+ sessions.delete(key);
11994
+ ctx.sendEvent("asr-closed", {
11995
+ clientId,
11996
+ asrSessionId,
11997
+ code: info?.code,
11998
+ reason: info?.reason
11999
+ });
12000
+ });
12001
+ try {
12002
+ await client2.connect();
12003
+ return { ok: true };
12004
+ } catch (error) {
12005
+ sessions.delete(key);
12006
+ client2.removeAllListeners();
12007
+ throw new Error(errorMessage(error));
12008
+ }
12009
+ },
12010
+ frame(clientId, asrSessionId, audioB64) {
12011
+ const active = sessions.get(keyOf2(clientId, asrSessionId));
12012
+ if (!active) return;
12013
+ try {
12014
+ active.client.sendAudio(Buffer2.from(audioB64, "base64"));
12015
+ } catch (error) {
12016
+ emitError(active, error);
12017
+ }
12018
+ },
12019
+ async stop(clientId, asrSessionId) {
12020
+ const key = keyOf2(clientId, asrSessionId);
12021
+ const active = sessions.get(key);
12022
+ if (!active) return;
12023
+ try {
12024
+ await active.client.close();
12025
+ } catch (error) {
12026
+ emitError(active, error);
12027
+ } finally {
12028
+ if (sessions.get(key) === active) sessions.delete(key);
12029
+ active.client.removeAllListeners();
12030
+ }
12031
+ },
12032
+ async closeAll() {
12033
+ await Promise.all(
12034
+ Array.from(sessions.values(), async (active) => {
12035
+ try {
12036
+ await active.client.close();
12037
+ } catch {
12038
+ } finally {
12039
+ active.client.removeAllListeners();
12040
+ }
12041
+ })
12042
+ );
12043
+ sessions.clear();
12044
+ }
12045
+ };
12046
+ }
12047
+
11781
12048
  // src/backend/backend.ts
11782
12049
  function initBackend(emitter) {
11783
12050
  const listeners = [];
@@ -11803,6 +12070,7 @@ function initBackend(emitter) {
11803
12070
  const _inference = createInferenceModule(ctx, { skills, search, toolbox });
11804
12071
  const memory = createMemoryModule(ctx, { inference: _inference });
11805
12072
  const imageGeneration = createImageGenerationModule(ctx, { ilink: ilink.state });
12073
+ const asr = createAsrManager(ctx);
11806
12074
  const session = createSessionModule(ctx, {
11807
12075
  bridgeConnect,
11808
12076
  askUser,
@@ -12190,11 +12458,22 @@ function initBackend(emitter) {
12190
12458
  },
12191
12459
  async getMemorySystemFilePath({ projectId }) {
12192
12460
  return memory.getFilePath(projectId);
12461
+ },
12462
+ // Realtime ASR
12463
+ async startRealtimeAsr({ clientId, asrSessionId }) {
12464
+ return asr.start(clientId, asrSessionId);
12465
+ },
12466
+ async sendRealtimeAsrFrame({ clientId, asrSessionId, audioB64 }) {
12467
+ asr.frame(clientId, asrSessionId, audioB64);
12468
+ },
12469
+ async stopRealtimeAsr({ clientId, asrSessionId }) {
12470
+ await asr.stop(clientId, asrSessionId);
12193
12471
  }
12194
12472
  };
12195
12473
  webui.setHandlers(backendHandlers2);
12196
12474
  async function closeBackend2() {
12197
12475
  automation.stopAllCrons();
12476
+ await asr.closeAll();
12198
12477
  webui.stop();
12199
12478
  await ilink.stopIlink({ logout: false });
12200
12479
  session.clearSession();
@@ -12210,7 +12489,7 @@ function initBackend(emitter) {
12210
12489
  }
12211
12490
 
12212
12491
  // package.json
12213
- var version = "0.1.52";
12492
+ var version = "0.1.54";
12214
12493
 
12215
12494
  // src/server/main.ts
12216
12495
  var port;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zythum02/fello-server",
3
- "version": "0.1.52",
3
+ "version": "0.1.54",
4
4
  "description": "Fello Server — standalone headless AI agent server",
5
5
  "type": "module",
6
6
  "bin": {
@@ -36,6 +36,7 @@
36
36
  "ripgrep": "^0.3.1",
37
37
  "sharp": "^0.35.3",
38
38
  "undici": "^6.28.0",
39
+ "unified-realtime-asr": "0.2.1",
39
40
  "web-tree-sitter": "^0.26.11",
40
41
  "ws": "^8.21.2",
41
42
  "yaml": "^2.9.0",
@@ -1,15 +0,0 @@
1
- import { c as createLucideIcon } from "./index-BJPggXxf.js";
2
- const __iconNode = [
3
- ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
4
- [
5
- "path",
6
- {
7
- d: "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",
8
- key: "116196"
9
- }
10
- ]
11
- ];
12
- const Clipboard = createLucideIcon("clipboard", __iconNode);
13
- export {
14
- Clipboard as C
15
- };