hermes-web-ui 0.6.30-beta.2 → 0.6.30

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 (257) hide show
  1. package/dist/client/assets/js/AppSidebar-B8eJvJ5L.js +1 -0
  2. package/dist/client/assets/js/{ChannelsView-DMyeoPl6.js → ChannelsView-rBs9Ylzp.js} +1 -1
  3. package/dist/client/assets/js/{ChatPanel-YZZNE2mg.js → ChatPanel-BjHQvYcw.js} +1 -1
  4. package/dist/client/assets/js/{ChatView-BSWI-pr1.js → ChatView-xEwjnXLo.js} +1 -1
  5. package/dist/client/assets/js/{CodingAgentsView-DGweBEVs.js → CodingAgentsView-DcVwegsz.js} +1 -1
  6. package/dist/client/assets/js/{DefaultCredentialPrompt-DwS2g874.js → DefaultCredentialPrompt-sFeH1odX.js} +1 -1
  7. package/dist/client/assets/js/{DesktopPetView-C2QyaxNu.js → DesktopPetView-DKYjal2v.js} +1 -1
  8. package/dist/client/assets/js/{DesktopTitleBar-CMvwjOsN.js → DesktopTitleBar-YzhbwcwX.js} +1 -1
  9. package/dist/client/assets/js/{DevicesView-3VMSlXCt.js → DevicesView-CnAjn0fI.js} +1 -1
  10. package/dist/client/assets/js/{FileEditor-Dkxlmokr.js → FileEditor-C_tmKjxI.js} +3 -3
  11. package/dist/client/assets/js/{FileRenameModal-o3oS6tv2.js → FileRenameModal-BlqJ8jgZ.js} +2 -2
  12. package/dist/client/assets/js/{FilesView-BlJtiYU7.js → FilesView-Dy8G_exi.js} +1 -1
  13. package/dist/client/assets/js/{FolderPicker-DYQaj8Cc.js → FolderPicker-DEUyd_JU.js} +1 -1
  14. package/dist/client/assets/js/{GlobalAgentView-CGRn1ucS.js → GlobalAgentView-C0NgWvKP.js} +1 -1
  15. package/dist/client/assets/js/{GroupChatView-GXbwwUn9.js → GroupChatView-Mr8SR7nA.js} +2 -2
  16. package/dist/client/assets/js/{HistoryMessageList-B1UsdtzR.js → HistoryMessageList--MuOQ24m.js} +1 -1
  17. package/dist/client/assets/js/{HistoryView-DukXpB7A.js → HistoryView-Boy6KWxz.js} +1 -1
  18. package/dist/client/assets/js/{JobsView-C2IfX4Oo.js → JobsView-5Jun6EjM.js} +2 -2
  19. package/dist/client/assets/js/{JourneyView-UX14Uvsk.js → JourneyView-DAU7N8iU.js} +1 -1
  20. package/dist/client/assets/js/{KanbanView-BFLDXNmq.js → KanbanView-CQOeRquP.js} +1 -1
  21. package/dist/client/assets/js/{LoginView-BMnZx434.js → LoginView-DTdp1xsa.js} +1 -1
  22. package/dist/client/assets/js/{LogsView-CFxOjMBB.js → LogsView-Dr6gD_kA.js} +1 -1
  23. package/dist/client/assets/js/{MarkdownRenderer-RUGb4sbQ.js → MarkdownRenderer-DpSiF5gl.js} +3 -3
  24. package/dist/client/assets/js/{McpManagerView-D46nhm85.js → McpManagerView-BzGj5qqQ.js} +1 -1
  25. package/dist/client/assets/js/{MemoryView-CGvbW1Yq.js → MemoryView-2gPDgre_.js} +2 -2
  26. package/dist/client/assets/js/{MessageItem-rIbgU0g3.js → MessageItem-D91t-tiL.js} +2 -2
  27. package/dist/client/assets/js/{MessageList-7o_1_iPw.js → MessageList-KgA7oDKg.js} +1 -1
  28. package/dist/client/assets/js/{ModelsView-Cdl5HVlO.js → ModelsView-GVgHBsyL.js} +1 -1
  29. package/dist/client/assets/js/{OutlinePanel-BmsAdxB0.js → OutlinePanel-DD6XxWAu.js} +1 -1
  30. package/dist/client/assets/js/{PageSidebarFooter-fp9dcg3s.js → PageSidebarFooter-DFaGG_bk.js} +1 -1
  31. package/dist/client/assets/js/{PerformanceView-asJG1CAC.js → PerformanceView-YI2ecC28.js} +1 -1
  32. package/dist/client/assets/js/{PetdexView-CgsImZ2C.js → PetdexView-Bt4e1TDL.js} +1 -1
  33. package/dist/client/assets/js/{PluginsView-CiiHUv8H.js → PluginsView-BZHzh6V0.js} +1 -1
  34. package/dist/client/assets/js/{ProfileAvatar-CeGhJamd.js → ProfileAvatar-Du1XMoe0.js} +1 -1
  35. package/dist/client/assets/js/{ProfilesView-CPcFsEMn.js → ProfilesView-C02GlAXO.js} +1 -1
  36. package/dist/client/assets/js/{ProviderConfigurationPrompt-CCXQ_nqY.js → ProviderConfigurationPrompt-DbD_q_xl.js} +1 -1
  37. package/dist/client/assets/js/{SessionSearchModal-Chmtohb_.js → SessionSearchModal-CRoerPzU.js} +1 -1
  38. package/dist/client/assets/js/{SettingRow-CxdhcC5J.js → SettingRow-CZ1bK2YG.js} +1 -1
  39. package/dist/client/assets/js/{SettingsCircuitBadge-DmwONg4K.js → SettingsCircuitBadge-2VINGRjT.js} +1 -1
  40. package/dist/client/assets/js/{SettingsView-Bd02BnM7.js → SettingsView-C63TriKv.js} +1 -1
  41. package/dist/client/assets/js/{SkillsUsageView-Cvk_dctX.js → SkillsUsageView-DufR6RDh.js} +1 -1
  42. package/dist/client/assets/js/{SkillsView-BrS15WHY.js → SkillsView-LzeD-ReE.js} +2 -2
  43. package/dist/client/assets/js/{TerminalView-Betjhhzm.js → TerminalView-j3wokVwS.js} +1 -1
  44. package/dist/client/assets/js/{UsageView-gENmuPca.js → UsageView-BVdos-wH.js} +1 -1
  45. package/dist/client/assets/js/{VersionPreviewView-D4wMkRdU.js → VersionPreviewView-D46YOdsc.js} +1 -1
  46. package/dist/client/assets/js/{WebPet-C-F5hsmU.js → WebPet-PrNf1KLw.js} +1 -1
  47. package/dist/client/assets/js/{WorkflowView-DCQycw5y.js → WorkflowView-BWG_o4Lg.js} +1 -1
  48. package/dist/client/assets/js/{abap-Bpce3YCc.js → abap-B5rRrPlH.js} +1 -1
  49. package/dist/client/assets/js/{apex-BZWMlx8R.js → apex-kxpOZZnW.js} +1 -1
  50. package/dist/client/assets/js/architecture-7EHR7CIX-BsCtaKPb.js +1 -0
  51. package/dist/client/assets/js/{architectureDiagram-3BPJPVTR-DgYZW-VJ.js → architectureDiagram-3BPJPVTR-CGR0-xeM.js} +1 -1
  52. package/dist/client/assets/js/{auth-DAz8TLhP.js → auth-QlZVq-Mb.js} +1 -1
  53. package/dist/client/assets/js/{azcli-CU70G-wD.js → azcli-BinA5kBH.js} +1 -1
  54. package/dist/client/assets/js/{bat-_PVMPuXp.js → bat-Cr0qo7tY.js} +1 -1
  55. package/dist/client/assets/js/{bicep-B1C-nHUL.js → bicep-B4C1_29j.js} +1 -1
  56. package/dist/client/assets/js/{blockDiagram-GPEHLZMM-D9eCcYUu.js → blockDiagram-GPEHLZMM-DMRT9qE7.js} +1 -1
  57. package/dist/client/assets/js/{c4Diagram-AAUBKEIU-Cc2j_5Hk.js → c4Diagram-AAUBKEIU-BS013lHX.js} +1 -1
  58. package/dist/client/assets/js/{cameligo-BRxFWUB9.js → cameligo-DQKQuDHg.js} +1 -1
  59. package/dist/client/assets/js/{chat-DASgRGiI.js → chat-BHkNRr2D.js} +1 -1
  60. package/dist/client/assets/js/{chat-input-height-xMpE0zfj.js → chat-input-height-C9XyOGPU.js} +1 -1
  61. package/dist/client/assets/js/{chat-timestamp-B4kSmeEg.js → chat-timestamp-sj8rR29x.js} +1 -1
  62. package/dist/client/assets/js/{chunk-2J33WTMH-CIWIJ3Vy.js → chunk-2J33WTMH-BuvstStb.js} +1 -1
  63. package/dist/client/assets/js/{chunk-3OPIFGDE-D8rNjXTj.js → chunk-3OPIFGDE-DFuFb6Dn.js} +1 -1
  64. package/dist/client/assets/js/{chunk-4BX2VUAB-Be1NT72j.js → chunk-4BX2VUAB-C8f7FKlW.js} +1 -1
  65. package/dist/client/assets/js/{chunk-55IACEB6-D9jngYNS.js → chunk-55IACEB6-DoNUYELD.js} +1 -1
  66. package/dist/client/assets/js/{chunk-5ZQYHXKU-DsBTFfjP.js → chunk-5ZQYHXKU-D0RIlhMr.js} +1 -1
  67. package/dist/client/assets/js/{chunk-727SXJPM-B4ElG_Of.js → chunk-727SXJPM-Dcg9rcP1.js} +1 -1
  68. package/dist/client/assets/js/{chunk-AQP2D5EJ-DqmSdc2v.js → chunk-AQP2D5EJ-BrEs3845.js} +1 -1
  69. package/dist/client/assets/js/{chunk-BSJP7CBP-Dwbw_lcd.js → chunk-BSJP7CBP-2t71L2nD.js} +1 -1
  70. package/dist/client/assets/js/{chunk-CSCIHK7Q-D0eX0NV1.js → chunk-CSCIHK7Q-jw9fZDC9.js} +3 -3
  71. package/dist/client/assets/js/{chunk-FMBD7UC4-Ifok5gk4.js → chunk-FMBD7UC4-CC_5MTtl.js} +1 -1
  72. package/dist/client/assets/js/{chunk-KSCS5N6A-D6b_0Rnx.js → chunk-KSCS5N6A-Ctj260fA.js} +1 -1
  73. package/dist/client/assets/js/{chunk-L5ZTLDWV-eR6nltId.js → chunk-L5ZTLDWV-CF8sc4Ay.js} +1 -1
  74. package/dist/client/assets/js/{chunk-LZXEDZCA-h6nPcsB6.js → chunk-LZXEDZCA-BsmuMR5Z.js} +2 -2
  75. package/dist/client/assets/js/{chunk-ND2GUHAM-vGFiX1jf.js → chunk-ND2GUHAM-CvXXD5FC.js} +1 -1
  76. package/dist/client/assets/js/{chunk-NZK2D7GU-BQcgYAVF.js → chunk-NZK2D7GU-BQeu8oaR.js} +1 -1
  77. package/dist/client/assets/js/{chunk-O5CBEL6O-DqGyu-Fq.js → chunk-O5CBEL6O-D9XUSNoV.js} +1 -1
  78. package/dist/client/assets/js/{chunk-QZHKN3VN-Bf_cn5Px.js → chunk-QZHKN3VN-qz6ukpCd.js} +1 -1
  79. package/dist/client/assets/js/{chunk-WU5MYG2G-3I1ZwKkc.js → chunk-WU5MYG2G-Cv_QOL8q.js} +1 -1
  80. package/dist/client/assets/js/{chunk-XPW4576I-DDUD-9JS.js → chunk-XPW4576I-BQK5_1lO.js} +1 -1
  81. package/dist/client/assets/js/classDiagram-4FO5ZUOK-DudE54ap.js +1 -0
  82. package/dist/client/assets/js/classDiagram-v2-Q7XG4LA2-7vuaSqRj.js +1 -0
  83. package/dist/client/assets/js/{clipboard-DbIDy3AT.js → clipboard-DYlTCW_e.js} +1 -1
  84. package/dist/client/assets/js/{clojure-Dcj6e71m.js → clojure-CdqoJung.js} +1 -1
  85. package/dist/client/assets/js/{coding-agents-CaDRq0na.js → coding-agents-6iW0O8m3.js} +1 -1
  86. package/dist/client/assets/js/{codingAgentProviders-D561caSN.js → codingAgentProviders-CcodfSH-.js} +1 -1
  87. package/dist/client/assets/js/{coffee-CbYrIyIn.js → coffee-BWTAEena.js} +1 -1
  88. package/dist/client/assets/js/{completion-notification-DsOPieYQ.js → completion-notification-BAmmQT0D.js} +1 -1
  89. package/dist/client/assets/js/{cose-bilkent-S5V4N54A-DMeSp3o-.js → cose-bilkent-S5V4N54A-DRKeHjkL.js} +1 -1
  90. package/dist/client/assets/js/{cpp-C285XCcy.js → cpp-BVlDwaOY.js} +1 -1
  91. package/dist/client/assets/js/{csharp-AOA29tQw.js → csharp-BJ8TvX5x.js} +1 -1
  92. package/dist/client/assets/js/{csp-BH3dEG6O.js → csp-C4M5VPIw.js} +1 -1
  93. package/dist/client/assets/js/{css-B57baUKb.js → css-I3bSR4aB.js} +1 -1
  94. package/dist/client/assets/js/{cssMode-BL-figOg.js → cssMode-D4KFuV7w.js} +1 -1
  95. package/dist/client/assets/js/{cypher-WtS-OVKo.js → cypher-CRdq7Gis.js} +1 -1
  96. package/dist/client/assets/js/{cytoscape.esm-D5tsfvvu.js → cytoscape.esm-DkgBNPTq.js} +1 -1
  97. package/dist/client/assets/js/{dagre-BM42HDAG-ZT4Tyhdh.js → dagre-BM42HDAG-CaadqbBP.js} +1 -1
  98. package/dist/client/assets/js/{dagre-B9R_qlQx.js → dagre-C8VfHmP4.js} +1 -1
  99. package/dist/client/assets/js/{dart-DF9gqEcq.js → dart-dwyDElLm.js} +1 -1
  100. package/dist/client/assets/js/{de-EFWp16Qh.js → de--4CNgQuL.js} +1 -1
  101. package/dist/client/assets/js/{defineProperty-DuJZezkY.js → defineProperty-BDo2HL0q.js} +1 -1
  102. package/dist/client/assets/js/{diagram-2AECGRRQ-xaP4EEEl.js → diagram-2AECGRRQ-Cun81Ans.js} +1 -1
  103. package/dist/client/assets/js/{diagram-5GNKFQAL-DIyCvoeX.js → diagram-5GNKFQAL-CQzVKYOI.js} +1 -1
  104. package/dist/client/assets/js/{diagram-KO2AKTUF-DUgBO_lP.js → diagram-KO2AKTUF-BPfQv40Z.js} +1 -1
  105. package/dist/client/assets/js/{diagram-LMA3HP47-7BPLQ2mh.js → diagram-LMA3HP47-D8TC5VV0.js} +1 -1
  106. package/dist/client/assets/js/{diagram-OG6HWLK6-Bf3loU_i.js → diagram-OG6HWLK6-CRHwtHSe.js} +1 -1
  107. package/dist/client/assets/js/{dist-B5dYmTWx.js → dist-CfFdo9r8.js} +1 -1
  108. package/dist/client/assets/js/{dockerfile-Czh5hcPx.js → dockerfile-CILemvfU.js} +1 -1
  109. package/dist/client/assets/js/{download-D8EaUX1d.js → download-48rHoTgx.js} +1 -1
  110. package/dist/client/assets/js/{ecl-CX15-2F3.js → ecl-Ealz99xU.js} +1 -1
  111. package/dist/client/assets/js/{elixir-DAeHVhZ1.js → elixir-shrM9Xh9.js} +1 -1
  112. package/dist/client/assets/js/{en-Be915fg0.js → en-CJJ1jL_Y.js} +1 -1
  113. package/dist/client/assets/js/{erDiagram-TEJ5UH35-Cohr37bj.js → erDiagram-TEJ5UH35-BPm-r9Hg.js} +1 -1
  114. package/dist/client/assets/js/{es-CifdmPsf.js → es-DzGYbRQj.js} +1 -1
  115. package/dist/client/assets/js/{esm-BnjT8clq.js → esm-BMJNKLtg.js} +1 -1
  116. package/dist/client/assets/js/eventmodeling-FCH6USID-C3kT7Z0E.js +1 -0
  117. package/dist/client/assets/js/{files-DaoyoU6g.js → files-hTAbTvaX.js} +1 -1
  118. package/dist/client/assets/js/{flow9-DbPITgDY.js → flow9-BcjKeG3-.js} +1 -1
  119. package/dist/client/assets/js/{flowDiagram-I6XJVG4X-B264a192.js → flowDiagram-I6XJVG4X-_BaH5aHT.js} +1 -1
  120. package/dist/client/assets/js/{fr-cOjPUfRx.js → fr-DcCzCkCs.js} +1 -1
  121. package/dist/client/assets/js/{freemarker2-DOLmB9KN.js → freemarker2-BNKS-Izq.js} +1 -1
  122. package/dist/client/assets/js/{fsharp-B-Yt6zK9.js → fsharp-CkihMS6p.js} +1 -1
  123. package/dist/client/assets/js/{ganttDiagram-6RSMTGT7-Ci7dhsnY.js → ganttDiagram-6RSMTGT7-Cbdw-Bcw.js} +1 -1
  124. package/dist/client/assets/js/gitGraph-WXDBUCRP-6wOXvHzD.js +1 -0
  125. package/dist/client/assets/js/{gitGraphDiagram-PVQCEYII-BlLk9eYS.js → gitGraphDiagram-PVQCEYII-B-bpVVPE.js} +1 -1
  126. package/dist/client/assets/js/{go-BOK2cgny.js → go-T3wwW6GT.js} +1 -1
  127. package/dist/client/assets/js/{graphlib-D2Mw_i7z.js → graphlib-zy-xgTNe.js} +1 -1
  128. package/dist/client/assets/js/{graphql-lNO0dhfX.js → graphql-efIwdE3z.js} +1 -1
  129. package/dist/client/assets/js/{handlebars-CVZmi01T.js → handlebars-I50ARPXc.js} +1 -1
  130. package/dist/client/assets/js/{hcl-DzR879Fw.js → hcl-1nBprOUg.js} +1 -1
  131. package/dist/client/assets/js/{highlight-Dj4_XEnA.js → highlight-CEOB4aIv.js} +1 -1
  132. package/dist/client/assets/js/{html-PlnnXcHR.js → html-Dj-ePZ46.js} +1 -1
  133. package/dist/client/assets/js/{htmlMode-Fmdr8cyl.js → htmlMode-CaN3hz4S.js} +1 -1
  134. package/dist/client/assets/js/{http-error-DN0Q0NIV.js → http-error-DzA5OQEf.js} +1 -1
  135. package/dist/client/assets/js/{index-B41wzfl2.js → index-RJQqJC6n.js} +4 -4
  136. package/dist/client/assets/js/info-J43DQDTF-BIWBwu_u.js +1 -0
  137. package/dist/client/assets/js/{infoDiagram-5YYISTIA-NDi7uRio.js → infoDiagram-5YYISTIA-BNXSec0Z.js} +1 -1
  138. package/dist/client/assets/js/{ini-DrTE-Qjw.js → ini-3Ot_KNDr.js} +1 -1
  139. package/dist/client/assets/js/{ishikawaDiagram-YF4QCWOH-Bqr4yRKd.js → ishikawaDiagram-YF4QCWOH-g75yRzDd.js} +1 -1
  140. package/dist/client/assets/js/{ja-24otYQMe.js → ja-CQvWYnv9.js} +1 -1
  141. package/dist/client/assets/js/{java-M1cOm-yu.js → java-BnfIG6C2.js} +1 -1
  142. package/dist/client/assets/js/{javascript-BNXq8PNf.js → javascript-CsnYKLbf.js} +1 -1
  143. package/dist/client/assets/js/{journeyDiagram-JHISSGLW-BEtti5_h.js → journeyDiagram-JHISSGLW-Pz71rJgC.js} +1 -1
  144. package/dist/client/assets/js/{jsonMode-1QUqmLF3.js → jsonMode-C075GWTu.js} +1 -1
  145. package/dist/client/assets/js/{julia-dLq8Su3c.js → julia-BZ-d031P.js} +1 -1
  146. package/dist/client/assets/js/{kanban-definition-UN3LZRKU-B0OINhQN.js → kanban-definition-UN3LZRKU-CM65a4ke.js} +1 -1
  147. package/dist/client/assets/js/{katex-RcNO5wwe.js → katex-CdfrrN4N.js} +1 -1
  148. package/dist/client/assets/js/{ko-BAFhhHmu.js → ko-CJGntapN.js} +1 -1
  149. package/dist/client/assets/js/{kotlin-u5eqp-HC.js → kotlin-Bvrb8ISQ.js} +1 -1
  150. package/dist/client/assets/js/{less-Bmv3Gp2t.js → less-BmSBm_Oo.js} +1 -1
  151. package/dist/client/assets/js/{lexon-D4tsg7Zx.js → lexon-DuK8nBv2.js} +1 -1
  152. package/dist/client/assets/js/{liquid-Bk2yC9hm.js → liquid-BWAc_45a.js} +1 -1
  153. package/dist/client/assets/js/{lspLanguageFeatures-D43hcBWA.js → lspLanguageFeatures-BiQVZMg4.js} +1 -1
  154. package/dist/client/assets/js/{lua-p9IseoQp.js → lua-CyRtU9wL.js} +1 -1
  155. package/dist/client/assets/js/{m3-CP_UPhUb.js → m3-Ew9Azayo.js} +1 -1
  156. package/dist/client/assets/js/{markdown-EMkhjbsA.js → markdown-DTnF9Yaz.js} +1 -1
  157. package/dist/client/assets/js/{mdx-CTIqsEU_.js → mdx-B5cGu-wW.js} +1 -1
  158. package/dist/client/assets/js/{mermaid-parser.core-Ct7VvVNd.js → mermaid-parser.core-H0g6x_iH.js} +3 -3
  159. package/dist/client/assets/js/{mermaid.core-bZP2CdTT.js → mermaid.core-Diknpn0Z.js} +3 -3
  160. package/dist/client/assets/js/{mindmap-definition-RKZ34NQL-HwEZyOHT.js → mindmap-definition-RKZ34NQL-CaunhL_H.js} +1 -1
  161. package/dist/client/assets/js/{mips-CkjAOBJ1.js → mips-Dxi7_29p.js} +1 -1
  162. package/dist/client/assets/js/{models-IOA_Ybyo.js → models-C1Vzhn4J.js} +1 -1
  163. package/dist/client/assets/js/{msdax-D3cfIob3.js → msdax-B6Bgb3AK.js} +1 -1
  164. package/dist/client/assets/js/{mysql-4uHNth4i.js → mysql-BL2x9OzM.js} +1 -1
  165. package/dist/client/assets/js/{objective-c-CJlpUpN6.js → objective-c-BrRFV0XK.js} +1 -1
  166. package/dist/client/assets/js/packet-YPE3B663-DQbqBYnW.js +1 -0
  167. package/dist/client/assets/js/{pascal-CQPmydYD.js → pascal-WA4C_PKB.js} +1 -1
  168. package/dist/client/assets/js/{pascaligo-BpcHvwdj.js → pascaligo-CJbWHnUY.js} +1 -1
  169. package/dist/client/assets/js/{perl-CPq40M_6.js → perl-BI9Huzvv.js} +1 -1
  170. package/dist/client/assets/js/{pets-C2oDgwB5.js → pets-B_-nzG9F.js} +1 -1
  171. package/dist/client/assets/js/{pgsql-CSQ1ge3t.js → pgsql-CzbvRnWT.js} +1 -1
  172. package/dist/client/assets/js/{php-DK0RYdED.js → php-CXAgA_El.js} +1 -1
  173. package/dist/client/assets/js/pie-LRSECV5Y-CIUK74nZ.js +1 -0
  174. package/dist/client/assets/js/{pieDiagram-4H26LBE5-BmAWShfi.js → pieDiagram-4H26LBE5-CCUnlpIr.js} +1 -1
  175. package/dist/client/assets/js/{pla-DWm3Ssta.js → pla-C0RuKVEY.js} +1 -1
  176. package/dist/client/assets/js/{postiats-D6U5CAH_.js → postiats-DrGBuYen.js} +1 -1
  177. package/dist/client/assets/js/{powerquery-luT1PmkC.js → powerquery-C2Rk0MWx.js} +1 -1
  178. package/dist/client/assets/js/{powershell-DqsTi5Tp.js → powershell-Co9Oecz_.js} +1 -1
  179. package/dist/client/assets/js/{profiles-DDKFPE0r.js → profiles-BtECgqqD.js} +1 -1
  180. package/dist/client/assets/js/{protobuf-xWgh_gwl.js → protobuf-BYEreCAs.js} +1 -1
  181. package/dist/client/assets/js/{pt-DPgTOGuO.js → pt-BLQB3VhC.js} +1 -1
  182. package/dist/client/assets/js/{pug-d0a6hBgd.js → pug-DYMxpfbA.js} +1 -1
  183. package/dist/client/assets/js/{python-SkkpZGKb.js → python-D14JG4Tf.js} +1 -1
  184. package/dist/client/assets/js/{qsharp-B4xC_SYh.js → qsharp-eGQdTxCC.js} +1 -1
  185. package/dist/client/assets/js/{quadrantDiagram-W4KKPZXB-DRn55Dz7.js → quadrantDiagram-W4KKPZXB-Do1jBZkB.js} +1 -1
  186. package/dist/client/assets/js/{r-qamn5sfb.js → r-BpBEd0qf.js} +1 -1
  187. package/dist/client/assets/js/radar-GUYGQ44K-DamlzFJn.js +1 -0
  188. package/dist/client/assets/js/{razor-DR9b_EzP.js → razor-DAKZoZ5s.js} +1 -1
  189. package/dist/client/assets/js/{redis-C46kUKug.js → redis-CecBwldA.js} +1 -1
  190. package/dist/client/assets/js/{redshift-DI_dWPgP.js → redshift-DxeKWFdZ.js} +1 -1
  191. package/dist/client/assets/js/{requirementDiagram-4Y6WPE33-Do_KEl0k.js → requirementDiagram-4Y6WPE33-Ccn1EcY0.js} +1 -1
  192. package/dist/client/assets/js/{restructuredtext-oYQfsBYX.js → restructuredtext-BBhjK4w8.js} +1 -1
  193. package/dist/client/assets/js/{rough.esm-BjtdUJeF.js → rough.esm-DKpVfK-g.js} +1 -1
  194. package/dist/client/assets/js/{ru-BGBuhe8j.js → ru-BXep69sk.js} +1 -1
  195. package/dist/client/assets/js/{ruby-Da1TZ4HB.js → ruby-9YJv-z0v.js} +1 -1
  196. package/dist/client/assets/js/{rust-GT6xUobW.js → rust-BihIDWCY.js} +1 -1
  197. package/dist/client/assets/js/{sankeyDiagram-5OEKKPKP-BRnR4W8h.js → sankeyDiagram-5OEKKPKP-BZF9SKVm.js} +1 -1
  198. package/dist/client/assets/js/{sb-D4kxpCPJ.js → sb-DSz7OJbn.js} +1 -1
  199. package/dist/client/assets/js/{scala-CY3U_fvs.js → scala-DrL9oxhs.js} +1 -1
  200. package/dist/client/assets/js/{scheme-DzdFAWU_.js → scheme-Bc0QxXW_.js} +1 -1
  201. package/dist/client/assets/js/{scss-CTwgV3JD.js → scss-BTsIuYyg.js} +1 -1
  202. package/dist/client/assets/js/{sequenceDiagram-3UESZ5HK-CoemgPYx.js → sequenceDiagram-3UESZ5HK-BplvirR_.js} +1 -1
  203. package/dist/client/assets/js/{session-browser-prefs-D3fgv9Yr.js → session-browser-prefs-DnMXaw-N.js} +1 -1
  204. package/dist/client/assets/js/{sessions-BeO9QOJY.js → sessions-wVroPs5k.js} +1 -1
  205. package/dist/client/assets/js/{settings-DM3CNjqC.js → settings-Bzod_9RQ.js} +1 -1
  206. package/dist/client/assets/js/{shell-CUF2wd73.js → shell-DG7-xFwe.js} +1 -1
  207. package/dist/client/assets/js/{skills-3O8WlKlI.js → skills-CQr0eeFF.js} +1 -1
  208. package/dist/client/assets/js/{solidity-C3RnBLh_.js → solidity-COxKdecX.js} +1 -1
  209. package/dist/client/assets/js/{sophia-BA8mP4aY.js → sophia-DtFj5ZDz.js} +1 -1
  210. package/dist/client/assets/js/{sparql-DcwhST_l.js → sparql-B1TD00SE.js} +1 -1
  211. package/dist/client/assets/js/{sql-CjGghxho.js → sql-b7qwDUco.js} +1 -1
  212. package/dist/client/assets/js/{src-Cz8NyTG1.js → src-Ra8Cw6Gr.js} +1 -1
  213. package/dist/client/assets/js/{st-B8Q32toW.js → st-BtSqB0Hh.js} +1 -1
  214. package/dist/client/assets/js/{stateDiagram-AJRCARHV-I4DYKB3q.js → stateDiagram-AJRCARHV-DhJkFuW8.js} +1 -1
  215. package/dist/client/assets/js/stateDiagram-v2-BHNVJYJU-CqTRINz_.js +1 -0
  216. package/dist/client/assets/js/{swift-Br8oKRCi.js → swift-T2X4Cn4t.js} +1 -1
  217. package/dist/client/assets/js/{systemverilog-DIL7pkd5.js → systemverilog-DeuLbp4J.js} +1 -1
  218. package/dist/client/assets/js/{tcl-C7A4eFCv.js → tcl-ZVjhRcKc.js} +1 -1
  219. package/dist/client/assets/js/{timeline-definition-PNZ67QCA-BnfftsIx.js → timeline-definition-PNZ67QCA-BFAfAvjz.js} +1 -1
  220. package/dist/client/assets/js/treeView-BLDUP644-H8OPaX_2.js +1 -0
  221. package/dist/client/assets/js/treemap-LRROVOQU-BhsUhAW8.js +1 -0
  222. package/dist/client/assets/js/{tsMode-BmS5yGbl.js → tsMode-BK8igQe0.js} +1 -1
  223. package/dist/client/assets/js/{ttsHelpers-DpzPhrib.js → ttsHelpers-CUglUfpM.js} +1 -1
  224. package/dist/client/assets/js/{twig-CxeEoeDi.js → twig-B2I_zOb5.js} +1 -1
  225. package/dist/client/assets/js/{typescript-BPw3e1LN.js → typescript-DqxcEPol.js} +1 -1
  226. package/dist/client/assets/js/{typespec-dQqbgDyW.js → typespec-DYubob7r.js} +1 -1
  227. package/dist/client/assets/js/{useSttSettings-Dd2zPJU6.js → useSttSettings-BAz3MWB_.js} +1 -1
  228. package/dist/client/assets/js/{vb-DpmkDtUb.js → vb-DulIu0AM.js} +1 -1
  229. package/dist/client/assets/js/{vennDiagram-CIIHVFJN-Bu76Q1QQ.js → vennDiagram-CIIHVFJN-BTMh4zH0.js} +1 -1
  230. package/dist/client/assets/js/wardley-L42UT6IY-w2cdSduy.js +1 -0
  231. package/dist/client/assets/js/{wardleyDiagram-YWT4CUSO-BQ7KDw3c.js → wardleyDiagram-YWT4CUSO-CjApV8-0.js} +1 -1
  232. package/dist/client/assets/js/{wgsl-BzEo-Lwp.js → wgsl-DiXzOVd2.js} +1 -1
  233. package/dist/client/assets/js/{xml-CNMAb3tW.js → xml-DtDrXyok.js} +1 -1
  234. package/dist/client/assets/js/{xterm-B-CU1LD3.js → xterm-CdfgdkPC.js} +1 -1
  235. package/dist/client/assets/js/{xychartDiagram-2RQKCTM6-B1x6n3B3.js → xychartDiagram-2RQKCTM6-DuaP4Pnm.js} +1 -1
  236. package/dist/client/assets/js/{yaml-DpwMHYi6.js → yaml-9_m3OBnv.js} +1 -1
  237. package/dist/client/assets/js/{zh-TW-BJY5MjsC.js → zh-TW-CLhifuOg.js} +1 -1
  238. package/dist/client/assets/js/{zh-CoPU4mYG.js → zh-gGY9f4WM.js} +1 -1
  239. package/dist/client/index.html +1 -1
  240. package/dist/server/index.js +3 -3
  241. package/dist/server/index.js.map +1 -1
  242. package/dist/server/openapi.json +1 -1
  243. package/package.json +1 -1
  244. package/dist/client/assets/js/AppSidebar-BHfH59vK.js +0 -1
  245. package/dist/client/assets/js/architecture-7EHR7CIX-CCBUg0GR.js +0 -1
  246. package/dist/client/assets/js/classDiagram-4FO5ZUOK-Dr5SR3PA.js +0 -1
  247. package/dist/client/assets/js/classDiagram-v2-Q7XG4LA2-BeYcryNa.js +0 -1
  248. package/dist/client/assets/js/eventmodeling-FCH6USID-Cd6TFrci.js +0 -1
  249. package/dist/client/assets/js/gitGraph-WXDBUCRP-CG4qC9Jw.js +0 -1
  250. package/dist/client/assets/js/info-J43DQDTF-CFtOWOWw.js +0 -1
  251. package/dist/client/assets/js/packet-YPE3B663-C0Vs_oOB.js +0 -1
  252. package/dist/client/assets/js/pie-LRSECV5Y-CAscu7sk.js +0 -1
  253. package/dist/client/assets/js/radar-GUYGQ44K-CfxS0DQE.js +0 -1
  254. package/dist/client/assets/js/stateDiagram-v2-BHNVJYJU-BHJGHZeG.js +0 -1
  255. package/dist/client/assets/js/treeView-BLDUP644-wNgfMdO5.js +0 -1
  256. package/dist/client/assets/js/treemap-LRROVOQU-Dy2LkAdg.js +0 -1
  257. package/dist/client/assets/js/wardley-L42UT6IY-BGLmswxh.js +0 -1
@@ -1 +1 @@
1
- import{$ as Ce,C as De,Ci as S,Cr as ue,Ct as $,E as de,Fr as x,Gi as g,Hr as ve,Jr as F,Lr as xe,Nr as Me,Pi as u,Qi as i,Qr as e,S as Se,Ut as M,Yr as Be,Z as O,Zr as N,Zt as z,_t as Pe,aa as f,ai as D,ci as pe,ct as Te,di as C,ea as R,ei as $e,ft as Ne,lt as V,n as me,oi as l,qr as L,ra as p,t as he,ti as B,tn as j,tt as Ie,wr as ge,zr as Ue}from"./index-B41wzfl2.js";var A,K,Q,J,W,Z,G,Y,_e,X=f((()=>{ve(),de(),ue(),xe(),Se(),A={class:"page-sidebar-nav"},K={class:"page-sidebar-tabs",role:"tablist","aria-label":"Chat actions"},Q={key:0,width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"},J={key:1,width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"},W={key:0,class:"conversation-switch conversation-switch--three",role:"tablist","aria-label":"Conversation type"},Z=["aria-label","aria-selected"],G=["aria-label","aria-selected"],Y=["aria-label","aria-selected"],_e=pe({__name:"PageSidebarNav",props:{active:{},primaryLabel:{},hideModeSwitch:{type:Boolean}},emits:["primary"],setup(r,{emit:t}){const c=r,I=t,{t:o}=ge(),m=Ue(),{openSessionSearch:y}=De(),v=N(()=>c.primaryLabel||o("chat.newChat")),w=N(()=>!c.hideModeSwitch),k=N(()=>c.active==="history"?o("chat.sessions"):o("sidebar.history"));function _(){c.active!=="chat"&&m.push({name:"hermes.chat"})}function h(){if(c.active==="history"){m.push({name:"hermes.chat"});return}m.push({name:"hermes.history"})}function b(){c.active!=="group"&&m.push({name:"hermes.groupChat"})}function P(){c.active!=="workflow"&&m.push({name:"hermes.workflow"})}function U(){typeof window>"u"||window.open("https://apikey.fun/register?aff=LIBAPI","_blank","noopener,noreferrer")}return(q,n)=>(S(),B("div",A,[e("div",K,[e("button",{class:"page-sidebar-tab",type:"button",onClick:n[0]||(n[0]=T=>I("primary"))},[n[2]||(n[2]=e("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),e("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)),e("span",null,p(v.value),1)]),e("button",{class:"page-sidebar-tab",type:"button",onClick:n[1]||(n[1]=(...T)=>i(y)&&i(y)(...T))},[n[3]||(n[3]=e("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8"},[e("circle",{cx:"11",cy:"11",r:"7"}),e("path",{d:"m20 20-3.5-3.5"})],-1)),e("span",null,p(i(o)("sidebar.search")),1)]),e("button",{class:"page-sidebar-tab",type:"button",onClick:h},[r.active==="history"?(S(),B("svg",Q,[...n[4]||(n[4]=[e("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"},null,-1)])])):(S(),B("svg",J,[...n[5]||(n[5]=[e("circle",{cx:"12",cy:"12",r:"9"},null,-1),e("path",{d:"M12 7v5l3 2"},null,-1)])])),e("span",null,p(k.value),1)]),e("button",{class:"page-sidebar-tab",type:"button",onClick:U},[n[6]||(n[6]=e("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8"},[e("path",{d:"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})],-1)),e("span",null,p(i(o)("sidebar.apiRelay")),1)])]),w.value?(S(),B("div",W,[l(i($),{trigger:"hover",placement:"top"},{trigger:u(()=>[e("button",{class:R(["conversation-switch-tab",{active:r.active==="chat"||r.active==="history"}]),type:"button",role:"tab","aria-label":i(o)("sidebar.singleChat"),"aria-selected":r.active==="chat"||r.active==="history",onClick:_},[...n[7]||(n[7]=[e("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e("path",{d:"M21 15a2 2 0 0 1-2 2H8l-5 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})],-1)])],10,Z)]),default:u(()=>[D(" "+p(i(o)("sidebar.singleChat")),1)]),_:1}),l(i($),{trigger:"hover",placement:"top"},{trigger:u(()=>[e("button",{class:R(["conversation-switch-tab",{active:r.active==="group"}]),type:"button",role:"tab","aria-label":i(o)("sidebar.groupChat"),"aria-selected":r.active==="group",onClick:b},[...n[8]||(n[8]=[e("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e("path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"}),e("circle",{cx:"9",cy:"7",r:"4"}),e("path",{d:"M22 21v-2a4 4 0 0 0-3-3.87"}),e("path",{d:"M16 3.13a4 4 0 0 1 0 7.75"})],-1)])],10,G)]),default:u(()=>[D(" "+p(i(o)("sidebar.groupChat")),1)]),_:1}),l(i($),{trigger:"hover",placement:"top"},{trigger:u(()=>[e("button",{class:R(["conversation-switch-tab",{active:r.active==="workflow"}]),type:"button",role:"tab","aria-label":i(o)("sidebar.workflow"),"aria-selected":r.active==="workflow",onClick:P},[...n[9]||(n[9]=[e("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e("circle",{cx:"5",cy:"12",r:"3"}),e("circle",{cx:"19",cy:"6",r:"3"}),e("circle",{cx:"19",cy:"18",r:"3"}),e("path",{d:"M8 12h3a4 4 0 0 0 4-4V6"}),e("path",{d:"M8 12h3a4 4 0 0 1 4 4v2"})],-1)])],10,Y)]),default:u(()=>[D(" "+p(i(o)("sidebar.workflow")),1)]),_:1})])):$e("",!0)]))}})})),Fe=f((()=>{})),ze,ot=f((()=>{X(),X(),Fe(),me(),ze=he(_e,[["__scopeId","data-v-5516bbcf"]])}));async function Re(){return x("/api/mcu-devices")}async function Ve(r){return x("/api/mcu-devices",{method:"POST",body:JSON.stringify(r)})}async function qe(r,t){return x(`/api/mcu-devices/${encodeURIComponent(String(r))}`,{method:"PATCH",body:JSON.stringify({name:t})})}async function Ee(r){return x(`/api/mcu-devices/${encodeURIComponent(String(r))}`,{method:"DELETE"})}async function He(r){return x(`/api/mcu-devices/${encodeURIComponent(String(r))}/remote-connect`,{method:"POST"})}async function Oe(r){return x(`/api/mcu-devices/${encodeURIComponent(String(r))}/remote-disconnect`,{method:"POST"})}var Le=f((()=>{Me()})),ee,te,ie,ae,se,ne,re,ce,oe,be,le=f((()=>{ve(),de(),ue(),Le(),ee=["aria-label"],te={class:"mcu-device-dialog"},ie={class:"mcu-device-header"},ae={class:"mcu-device-title"},se={class:"mcu-device-subtitle"},ne=["aria-label"],re={class:"mcu-device-table"},ce={class:"mcu-device-actions"},oe="https://hermes-studio.ai/docs/hermes-esp32-intro/index.html",be=pe({__name:"SettingsCircuitBadge",setup(r){const{t}=ge(),c=Te(),I=Ne(),o=g(!1),m=g(!1),y=g(!1),v=g(!1),w=g(0),k=g(!1),_=g([]),h=g({name:"",device_code:""}),b=g({id:0,name:""});function P(a){return C(j,{size:"small",type:a?"success":"default",bordered:!1},{default:()=>t(a?"mcuDevices.connected":"mcuDevices.disconnected")})}const U=N(()=>[{title:t("mcuDevices.name"),key:"name",ellipsis:{tooltip:!0}},{title:t("mcuDevices.deviceCode"),key:"device_code",ellipsis:{tooltip:!0}},{title:t("mcuDevices.channel"),key:"is_official",width:96,render(a){return C(j,{size:"small",type:a.is_official?"success":"warning",bordered:!1},{default:()=>a.is_official?t("mcuDevices.official"):t("mcuDevices.unofficial")})}},{title:t("mcuDevices.lanStatus"),key:"lan_connected",width:96,render(a){return P(a.lan_connected)}},{title:t("mcuDevices.remoteStatus"),key:"remote_connected",width:96,render(a){return P(a.remote_connected)}},{title:t("mcuDevices.actions"),key:"actions",width:220,render(a){return C(Ie,{size:4},{default:()=>[C(M,{size:"tiny",quaternary:!0,onClick:()=>ye(a)},{default:()=>t("mcuDevices.edit")}),C(M,{size:"tiny",quaternary:!0,type:a.remote_connected?"warning":"primary",loading:w.value===a.id,disabled:w.value!==0||!a.is_official&&!a.remote_connected,onClick:()=>we(a)},{default:()=>a.remote_connected?t("mcuDevices.remoteDisconnect"):t("mcuDevices.remoteConnect")}),C(M,{size:"tiny",quaternary:!0,type:"error",onClick:()=>ke(a)},{default:()=>t("mcuDevices.delete")})]})}}]);async function q(){y.value=!0;try{_.value=(await Re()).devices}catch(a){c.error(a?.message||t("mcuDevices.loadFailed"))}finally{y.value=!1}}function n(){o.value=!0,q()}function T(){h.value={name:"",device_code:""},m.value=!0}function fe(){window.open(oe,"_blank","noopener,noreferrer")}async function E(){const a=h.value.device_code.trim();if(!a)return c.warning(t("mcuDevices.deviceCodeRequired")),!1;v.value=!0;try{_.value=(await Ve({name:h.value.name.trim(),device_code:a})).devices,h.value={name:"",device_code:""},m.value=!1,c.success(t("mcuDevices.added"))}catch(s){return c.error(s?.message||t("mcuDevices.addFailed")),!1}finally{v.value=!1}}function ye(a){b.value={id:a.id,name:a.name},k.value=!0}async function H(){if(b.value.id){v.value=!0;try{_.value=(await qe(b.value.id,b.value.name)).devices,k.value=!1,c.success(t("mcuDevices.nameUpdated"))}catch(a){c.error(a?.message||t("mcuDevices.nameUpdateFailed"))}finally{v.value=!1}}}async function we(a){w.value=a.id;try{_.value=(a.remote_connected?await Oe(a.id):await He(a.id)).devices,c.success(t(a.remote_connected?"mcuDevices.remoteDisconnected":"mcuDevices.remoteConnected"))}catch(s){c.error(s?.message||t(a.remote_connected?"mcuDevices.remoteDisconnectFailed":"mcuDevices.remoteConnectFailed"))}finally{w.value=0}}function ke(a){I.warning({title:t("mcuDevices.deleteTitle"),content:t("mcuDevices.deleteConfirm",{name:a.name||a.device_code}),positiveText:t("mcuDevices.delete"),negativeText:t("common.cancel"),onPositiveClick:async()=>{v.value=!0;try{_.value=(await Ee(a.id)).devices,c.success(t("mcuDevices.deleted"))}catch(s){return c.error(s?.message||t("mcuDevices.deleteFailed")),!1}finally{v.value=!1}}})}return(a,s)=>(S(),B(Be,null,[l(i($),{trigger:"hover",placement:"top"},{trigger:u(()=>[e("button",{class:"settings-circuit-link",type:"button","aria-label":i(t)("mcuDevices.title"),onClick:F(n,["stop"])},[...s[7]||(s[7]=[e("svg",{class:"settings-circuit-badge settings-circuit-badge--pcb",viewBox:"0 0 36 22",fill:"none","aria-hidden":"true"},[e("rect",{class:"settings-pcb-board",x:"3",y:"3",width:"30",height:"16",rx:"3"}),e("path",{class:"settings-pcb-copper",d:"M7 7h6v4h7v-3h9"}),e("path",{class:"settings-pcb-copper",d:"M7 15h5v-3h5v4h12"}),e("path",{class:"settings-pcb-copper",d:"M12 7v-2h8"}),e("path",{class:"settings-pcb-copper",d:"M24 15v2h5"}),e("path",{class:"settings-pcb-current settings-pcb-current-main",d:"M7 7h6v4h7v-3h9"}),e("path",{class:"settings-pcb-current settings-pcb-current-main settings-pcb-current-late",d:"M7 15h5v-3h5v4h12"}),e("path",{class:"settings-pcb-current settings-pcb-current-branch",d:"M12 7v-2h8"}),e("path",{class:"settings-pcb-current settings-pcb-current-branch settings-pcb-current-late",d:"M24 15v2h5"}),e("circle",{class:"settings-pcb-pad settings-pcb-pad-live",cx:"7",cy:"7",r:"1.2"}),e("circle",{class:"settings-pcb-pad",cx:"13",cy:"11",r:"1"}),e("circle",{class:"settings-pcb-pad settings-pcb-pad-live",cx:"20",cy:"11",r:"1.2"}),e("circle",{class:"settings-pcb-pad",cx:"29",cy:"8",r:"1"}),e("circle",{class:"settings-pcb-pad settings-pcb-pad-live settings-pcb-pad-late",cx:"17",cy:"12",r:"1.2"}),e("circle",{class:"settings-pcb-pad",cx:"29",cy:"15",r:"1"}),e("circle",{class:"settings-pcb-via",cx:"20",cy:"5",r:"0.8"}),e("circle",{class:"settings-pcb-via",cx:"29",cy:"17",r:"0.8"})],-1)])],8,ee)]),default:u(()=>[D(" "+p(i(t)("mcuDevices.title")),1)]),_:1}),l(i(V),{show:o.value,"onUpdate:show":s[1]||(s[1]=d=>o.value=d),"show-icon":!1},{default:u(()=>[e("div",te,[e("div",ie,[e("div",null,[e("div",ae,p(i(t)("mcuDevices.title")),1),e("div",se,p(i(t)("mcuDevices.subtitle")),1)]),e("button",{class:"mcu-device-close",type:"button","aria-label":i(t)("mcuDevices.close"),onClick:s[0]||(s[0]=d=>o.value=!1)},[...s[8]||(s[8]=[e("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},[e("path",{d:"M18 6 6 18"}),e("path",{d:"m6 6 12 12"})],-1)])],8,ne)]),e("div",re,[l(i(Pe),{style:{height:"100%"},size:"small",columns:U.value,data:_.value,loading:y.value,bordered:!1,"single-line":!1,"row-key":d=>d.id,"flex-height":""},null,8,["columns","data","loading","row-key"])]),e("div",ce,[l(i(M),{type:"primary",onClick:T},{default:u(()=>[D(p(i(t)("mcuDevices.add")),1)]),_:1}),l(i(M),{secondary:"",onClick:fe},{default:u(()=>[D(p(i(t)("mcuDevices.purchase")),1)]),_:1})])])]),_:1},8,["show"]),l(i(V),{show:m.value,"onUpdate:show":s[4]||(s[4]=d=>m.value=d),preset:"dialog",title:i(t)("mcuDevices.addTitle"),"positive-text":i(t)("mcuDevices.add"),"negative-text":i(t)("common.cancel"),"positive-button-props":{loading:v.value},onPositiveClick:E},{default:u(()=>[l(i(Ce),{"label-placement":"top"},{default:u(()=>[l(i(O),{label:i(t)("mcuDevices.name")},{default:u(()=>[l(i(z),{value:h.value.name,"onUpdate:value":s[2]||(s[2]=d=>h.value.name=d),placeholder:i(t)("mcuDevices.nameOptional"),disabled:v.value},null,8,["value","placeholder","disabled"])]),_:1},8,["label"]),l(i(O),{label:i(t)("mcuDevices.deviceCode"),required:""},{default:u(()=>[l(i(z),{value:h.value.device_code,"onUpdate:value":s[3]||(s[3]=d=>h.value.device_code=d),placeholder:i(t)("mcuDevices.deviceCodePlaceholder"),disabled:v.value,onKeydown:L(F(E,["prevent"]),["enter"])},null,8,["value","placeholder","disabled","onKeydown"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title","positive-text","negative-text","positive-button-props"]),l(i(V),{show:k.value,"onUpdate:show":s[6]||(s[6]=d=>k.value=d),preset:"dialog",title:i(t)("mcuDevices.editNameTitle"),"positive-text":i(t)("common.save"),"negative-text":i(t)("common.cancel"),"positive-button-props":{loading:v.value},onPositiveClick:H},{default:u(()=>[l(i(z),{value:b.value.name,"onUpdate:value":s[5]||(s[5]=d=>b.value.name=d),placeholder:i(t)("mcuDevices.nameOptional"),disabled:v.value,onKeydown:L(F(H,["prevent"]),["enter"])},null,8,["value","placeholder","disabled","onKeydown"])]),_:1},8,["show","title","positive-text","negative-text","positive-button-props"])],64))}})})),je=f((()=>{})),Ae,lt=f((()=>{le(),le(),je(),me(),Ae=he(be,[["__scopeId","data-v-71f664d3"]])}));export{ot as i,lt as n,ze as r,Ae as t};
1
+ import{$ as Ce,C as De,Ci as S,Cr as ue,Ct as $,E as de,Fr as x,Gi as g,Hr as ve,Jr as F,Lr as xe,Nr as Me,Pi as u,Qi as i,Qr as e,S as Se,Ut as M,Yr as Be,Z as O,Zr as N,Zt as z,_t as Pe,aa as f,ai as D,ci as pe,ct as Te,di as C,ea as R,ei as $e,ft as Ne,lt as V,n as me,oi as l,qr as L,ra as p,t as he,ti as B,tn as j,tt as Ie,wr as ge,zr as Ue}from"./index-RJQqJC6n.js";var A,K,Q,J,W,Z,G,Y,_e,X=f((()=>{ve(),de(),ue(),xe(),Se(),A={class:"page-sidebar-nav"},K={class:"page-sidebar-tabs",role:"tablist","aria-label":"Chat actions"},Q={key:0,width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"},J={key:1,width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"},W={key:0,class:"conversation-switch conversation-switch--three",role:"tablist","aria-label":"Conversation type"},Z=["aria-label","aria-selected"],G=["aria-label","aria-selected"],Y=["aria-label","aria-selected"],_e=pe({__name:"PageSidebarNav",props:{active:{},primaryLabel:{},hideModeSwitch:{type:Boolean}},emits:["primary"],setup(r,{emit:t}){const c=r,I=t,{t:o}=ge(),m=Ue(),{openSessionSearch:y}=De(),v=N(()=>c.primaryLabel||o("chat.newChat")),w=N(()=>!c.hideModeSwitch),k=N(()=>c.active==="history"?o("chat.sessions"):o("sidebar.history"));function _(){c.active!=="chat"&&m.push({name:"hermes.chat"})}function h(){if(c.active==="history"){m.push({name:"hermes.chat"});return}m.push({name:"hermes.history"})}function b(){c.active!=="group"&&m.push({name:"hermes.groupChat"})}function P(){c.active!=="workflow"&&m.push({name:"hermes.workflow"})}function U(){typeof window>"u"||window.open("https://apikey.fun/register?aff=LIBAPI","_blank","noopener,noreferrer")}return(q,n)=>(S(),B("div",A,[e("div",K,[e("button",{class:"page-sidebar-tab",type:"button",onClick:n[0]||(n[0]=T=>I("primary"))},[n[2]||(n[2]=e("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),e("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)),e("span",null,p(v.value),1)]),e("button",{class:"page-sidebar-tab",type:"button",onClick:n[1]||(n[1]=(...T)=>i(y)&&i(y)(...T))},[n[3]||(n[3]=e("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8"},[e("circle",{cx:"11",cy:"11",r:"7"}),e("path",{d:"m20 20-3.5-3.5"})],-1)),e("span",null,p(i(o)("sidebar.search")),1)]),e("button",{class:"page-sidebar-tab",type:"button",onClick:h},[r.active==="history"?(S(),B("svg",Q,[...n[4]||(n[4]=[e("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"},null,-1)])])):(S(),B("svg",J,[...n[5]||(n[5]=[e("circle",{cx:"12",cy:"12",r:"9"},null,-1),e("path",{d:"M12 7v5l3 2"},null,-1)])])),e("span",null,p(k.value),1)]),e("button",{class:"page-sidebar-tab",type:"button",onClick:U},[n[6]||(n[6]=e("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8"},[e("path",{d:"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})],-1)),e("span",null,p(i(o)("sidebar.apiRelay")),1)])]),w.value?(S(),B("div",W,[l(i($),{trigger:"hover",placement:"top"},{trigger:u(()=>[e("button",{class:R(["conversation-switch-tab",{active:r.active==="chat"||r.active==="history"}]),type:"button",role:"tab","aria-label":i(o)("sidebar.singleChat"),"aria-selected":r.active==="chat"||r.active==="history",onClick:_},[...n[7]||(n[7]=[e("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e("path",{d:"M21 15a2 2 0 0 1-2 2H8l-5 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})],-1)])],10,Z)]),default:u(()=>[D(" "+p(i(o)("sidebar.singleChat")),1)]),_:1}),l(i($),{trigger:"hover",placement:"top"},{trigger:u(()=>[e("button",{class:R(["conversation-switch-tab",{active:r.active==="group"}]),type:"button",role:"tab","aria-label":i(o)("sidebar.groupChat"),"aria-selected":r.active==="group",onClick:b},[...n[8]||(n[8]=[e("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e("path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"}),e("circle",{cx:"9",cy:"7",r:"4"}),e("path",{d:"M22 21v-2a4 4 0 0 0-3-3.87"}),e("path",{d:"M16 3.13a4 4 0 0 1 0 7.75"})],-1)])],10,G)]),default:u(()=>[D(" "+p(i(o)("sidebar.groupChat")),1)]),_:1}),l(i($),{trigger:"hover",placement:"top"},{trigger:u(()=>[e("button",{class:R(["conversation-switch-tab",{active:r.active==="workflow"}]),type:"button",role:"tab","aria-label":i(o)("sidebar.workflow"),"aria-selected":r.active==="workflow",onClick:P},[...n[9]||(n[9]=[e("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e("circle",{cx:"5",cy:"12",r:"3"}),e("circle",{cx:"19",cy:"6",r:"3"}),e("circle",{cx:"19",cy:"18",r:"3"}),e("path",{d:"M8 12h3a4 4 0 0 0 4-4V6"}),e("path",{d:"M8 12h3a4 4 0 0 1 4 4v2"})],-1)])],10,Y)]),default:u(()=>[D(" "+p(i(o)("sidebar.workflow")),1)]),_:1})])):$e("",!0)]))}})})),Fe=f((()=>{})),ze,ot=f((()=>{X(),X(),Fe(),me(),ze=he(_e,[["__scopeId","data-v-5516bbcf"]])}));async function Re(){return x("/api/mcu-devices")}async function Ve(r){return x("/api/mcu-devices",{method:"POST",body:JSON.stringify(r)})}async function qe(r,t){return x(`/api/mcu-devices/${encodeURIComponent(String(r))}`,{method:"PATCH",body:JSON.stringify({name:t})})}async function Ee(r){return x(`/api/mcu-devices/${encodeURIComponent(String(r))}`,{method:"DELETE"})}async function He(r){return x(`/api/mcu-devices/${encodeURIComponent(String(r))}/remote-connect`,{method:"POST"})}async function Oe(r){return x(`/api/mcu-devices/${encodeURIComponent(String(r))}/remote-disconnect`,{method:"POST"})}var Le=f((()=>{Me()})),ee,te,ie,ae,se,ne,re,ce,oe,be,le=f((()=>{ve(),de(),ue(),Le(),ee=["aria-label"],te={class:"mcu-device-dialog"},ie={class:"mcu-device-header"},ae={class:"mcu-device-title"},se={class:"mcu-device-subtitle"},ne=["aria-label"],re={class:"mcu-device-table"},ce={class:"mcu-device-actions"},oe="https://hermes-studio.ai/docs/hermes-esp32-intro/index.html",be=pe({__name:"SettingsCircuitBadge",setup(r){const{t}=ge(),c=Te(),I=Ne(),o=g(!1),m=g(!1),y=g(!1),v=g(!1),w=g(0),k=g(!1),_=g([]),h=g({name:"",device_code:""}),b=g({id:0,name:""});function P(a){return C(j,{size:"small",type:a?"success":"default",bordered:!1},{default:()=>t(a?"mcuDevices.connected":"mcuDevices.disconnected")})}const U=N(()=>[{title:t("mcuDevices.name"),key:"name",ellipsis:{tooltip:!0}},{title:t("mcuDevices.deviceCode"),key:"device_code",ellipsis:{tooltip:!0}},{title:t("mcuDevices.channel"),key:"is_official",width:96,render(a){return C(j,{size:"small",type:a.is_official?"success":"warning",bordered:!1},{default:()=>a.is_official?t("mcuDevices.official"):t("mcuDevices.unofficial")})}},{title:t("mcuDevices.lanStatus"),key:"lan_connected",width:96,render(a){return P(a.lan_connected)}},{title:t("mcuDevices.remoteStatus"),key:"remote_connected",width:96,render(a){return P(a.remote_connected)}},{title:t("mcuDevices.actions"),key:"actions",width:220,render(a){return C(Ie,{size:4},{default:()=>[C(M,{size:"tiny",quaternary:!0,onClick:()=>ye(a)},{default:()=>t("mcuDevices.edit")}),C(M,{size:"tiny",quaternary:!0,type:a.remote_connected?"warning":"primary",loading:w.value===a.id,disabled:w.value!==0||!a.is_official&&!a.remote_connected,onClick:()=>we(a)},{default:()=>a.remote_connected?t("mcuDevices.remoteDisconnect"):t("mcuDevices.remoteConnect")}),C(M,{size:"tiny",quaternary:!0,type:"error",onClick:()=>ke(a)},{default:()=>t("mcuDevices.delete")})]})}}]);async function q(){y.value=!0;try{_.value=(await Re()).devices}catch(a){c.error(a?.message||t("mcuDevices.loadFailed"))}finally{y.value=!1}}function n(){o.value=!0,q()}function T(){h.value={name:"",device_code:""},m.value=!0}function fe(){window.open(oe,"_blank","noopener,noreferrer")}async function E(){const a=h.value.device_code.trim();if(!a)return c.warning(t("mcuDevices.deviceCodeRequired")),!1;v.value=!0;try{_.value=(await Ve({name:h.value.name.trim(),device_code:a})).devices,h.value={name:"",device_code:""},m.value=!1,c.success(t("mcuDevices.added"))}catch(s){return c.error(s?.message||t("mcuDevices.addFailed")),!1}finally{v.value=!1}}function ye(a){b.value={id:a.id,name:a.name},k.value=!0}async function H(){if(b.value.id){v.value=!0;try{_.value=(await qe(b.value.id,b.value.name)).devices,k.value=!1,c.success(t("mcuDevices.nameUpdated"))}catch(a){c.error(a?.message||t("mcuDevices.nameUpdateFailed"))}finally{v.value=!1}}}async function we(a){w.value=a.id;try{_.value=(a.remote_connected?await Oe(a.id):await He(a.id)).devices,c.success(t(a.remote_connected?"mcuDevices.remoteDisconnected":"mcuDevices.remoteConnected"))}catch(s){c.error(s?.message||t(a.remote_connected?"mcuDevices.remoteDisconnectFailed":"mcuDevices.remoteConnectFailed"))}finally{w.value=0}}function ke(a){I.warning({title:t("mcuDevices.deleteTitle"),content:t("mcuDevices.deleteConfirm",{name:a.name||a.device_code}),positiveText:t("mcuDevices.delete"),negativeText:t("common.cancel"),onPositiveClick:async()=>{v.value=!0;try{_.value=(await Ee(a.id)).devices,c.success(t("mcuDevices.deleted"))}catch(s){return c.error(s?.message||t("mcuDevices.deleteFailed")),!1}finally{v.value=!1}}})}return(a,s)=>(S(),B(Be,null,[l(i($),{trigger:"hover",placement:"top"},{trigger:u(()=>[e("button",{class:"settings-circuit-link",type:"button","aria-label":i(t)("mcuDevices.title"),onClick:F(n,["stop"])},[...s[7]||(s[7]=[e("svg",{class:"settings-circuit-badge settings-circuit-badge--pcb",viewBox:"0 0 36 22",fill:"none","aria-hidden":"true"},[e("rect",{class:"settings-pcb-board",x:"3",y:"3",width:"30",height:"16",rx:"3"}),e("path",{class:"settings-pcb-copper",d:"M7 7h6v4h7v-3h9"}),e("path",{class:"settings-pcb-copper",d:"M7 15h5v-3h5v4h12"}),e("path",{class:"settings-pcb-copper",d:"M12 7v-2h8"}),e("path",{class:"settings-pcb-copper",d:"M24 15v2h5"}),e("path",{class:"settings-pcb-current settings-pcb-current-main",d:"M7 7h6v4h7v-3h9"}),e("path",{class:"settings-pcb-current settings-pcb-current-main settings-pcb-current-late",d:"M7 15h5v-3h5v4h12"}),e("path",{class:"settings-pcb-current settings-pcb-current-branch",d:"M12 7v-2h8"}),e("path",{class:"settings-pcb-current settings-pcb-current-branch settings-pcb-current-late",d:"M24 15v2h5"}),e("circle",{class:"settings-pcb-pad settings-pcb-pad-live",cx:"7",cy:"7",r:"1.2"}),e("circle",{class:"settings-pcb-pad",cx:"13",cy:"11",r:"1"}),e("circle",{class:"settings-pcb-pad settings-pcb-pad-live",cx:"20",cy:"11",r:"1.2"}),e("circle",{class:"settings-pcb-pad",cx:"29",cy:"8",r:"1"}),e("circle",{class:"settings-pcb-pad settings-pcb-pad-live settings-pcb-pad-late",cx:"17",cy:"12",r:"1.2"}),e("circle",{class:"settings-pcb-pad",cx:"29",cy:"15",r:"1"}),e("circle",{class:"settings-pcb-via",cx:"20",cy:"5",r:"0.8"}),e("circle",{class:"settings-pcb-via",cx:"29",cy:"17",r:"0.8"})],-1)])],8,ee)]),default:u(()=>[D(" "+p(i(t)("mcuDevices.title")),1)]),_:1}),l(i(V),{show:o.value,"onUpdate:show":s[1]||(s[1]=d=>o.value=d),"show-icon":!1},{default:u(()=>[e("div",te,[e("div",ie,[e("div",null,[e("div",ae,p(i(t)("mcuDevices.title")),1),e("div",se,p(i(t)("mcuDevices.subtitle")),1)]),e("button",{class:"mcu-device-close",type:"button","aria-label":i(t)("mcuDevices.close"),onClick:s[0]||(s[0]=d=>o.value=!1)},[...s[8]||(s[8]=[e("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},[e("path",{d:"M18 6 6 18"}),e("path",{d:"m6 6 12 12"})],-1)])],8,ne)]),e("div",re,[l(i(Pe),{style:{height:"100%"},size:"small",columns:U.value,data:_.value,loading:y.value,bordered:!1,"single-line":!1,"row-key":d=>d.id,"flex-height":""},null,8,["columns","data","loading","row-key"])]),e("div",ce,[l(i(M),{type:"primary",onClick:T},{default:u(()=>[D(p(i(t)("mcuDevices.add")),1)]),_:1}),l(i(M),{secondary:"",onClick:fe},{default:u(()=>[D(p(i(t)("mcuDevices.purchase")),1)]),_:1})])])]),_:1},8,["show"]),l(i(V),{show:m.value,"onUpdate:show":s[4]||(s[4]=d=>m.value=d),preset:"dialog",title:i(t)("mcuDevices.addTitle"),"positive-text":i(t)("mcuDevices.add"),"negative-text":i(t)("common.cancel"),"positive-button-props":{loading:v.value},onPositiveClick:E},{default:u(()=>[l(i(Ce),{"label-placement":"top"},{default:u(()=>[l(i(O),{label:i(t)("mcuDevices.name")},{default:u(()=>[l(i(z),{value:h.value.name,"onUpdate:value":s[2]||(s[2]=d=>h.value.name=d),placeholder:i(t)("mcuDevices.nameOptional"),disabled:v.value},null,8,["value","placeholder","disabled"])]),_:1},8,["label"]),l(i(O),{label:i(t)("mcuDevices.deviceCode"),required:""},{default:u(()=>[l(i(z),{value:h.value.device_code,"onUpdate:value":s[3]||(s[3]=d=>h.value.device_code=d),placeholder:i(t)("mcuDevices.deviceCodePlaceholder"),disabled:v.value,onKeydown:L(F(E,["prevent"]),["enter"])},null,8,["value","placeholder","disabled","onKeydown"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title","positive-text","negative-text","positive-button-props"]),l(i(V),{show:k.value,"onUpdate:show":s[6]||(s[6]=d=>k.value=d),preset:"dialog",title:i(t)("mcuDevices.editNameTitle"),"positive-text":i(t)("common.save"),"negative-text":i(t)("common.cancel"),"positive-button-props":{loading:v.value},onPositiveClick:H},{default:u(()=>[l(i(z),{value:b.value.name,"onUpdate:value":s[5]||(s[5]=d=>b.value.name=d),placeholder:i(t)("mcuDevices.nameOptional"),disabled:v.value,onKeydown:L(F(H,["prevent"]),["enter"])},null,8,["value","placeholder","disabled","onKeydown"])]),_:1},8,["show","title","positive-text","negative-text","positive-button-props"])],64))}})})),je=f((()=>{})),Ae,lt=f((()=>{le(),le(),je(),me(),Ae=he(be,[["__scopeId","data-v-71f664d3"]])}));export{ot as i,lt as n,ze as r,Ae as t};
@@ -1 +1 @@
1
- import{$ as Me,$r as X,Ci as S,Cr as oe,E as ue,F as _e,Fr as Fe,Gi as $,Hr as se,L as le,Lr as Ai,Mi as ke,N as $i,Nr as Ee,Pi as u,Pr as Mi,Qi as e,Qr as f,Rr as xi,T as Fi,Ti as xe,Ui as Fa,Ut as K,V as je,Y as ge,Yr as ye,Z as G,Zr as P,Zt as Z,_t as Di,aa as M,ai as L,an as Oi,at as Ii,ca as zi,ci as ne,ct as me,di as fe,ea as He,ei as B,jt as ee,lt as ze,n as de,oi as a,p as Ri,q as Da,qr as Ge,ra as _,rt as Ni,t as ce,ti as D,tn as Ie,tt as Ue,w as Vi,wr as re,x as Je,xi as Pe,yi as Hi,yt as Li,z as Oa,zr as Ei}from"./index-B41wzfl2.js";import{c as Ki,f as Bi,g as Qe,h as Ze,i as qi,l as Yi,m as Xi,n as Wi,o as ji,p as Gi,r as Ji,s as Qi,t as Zi,u as Ia}from"./auth-DAz8TLhP.js";import{r as za,t as Ra}from"./profiles-DDKFPE0r.js";import{n as be,t as he}from"./settings-DM3CNjqC.js";import{n as et,r as tt,t as el}from"./completion-notification-DsOPieYQ.js";import{n as tl,t as sl}from"./models-IOA_Ybyo.js";import{n as al,r as il,t as ll}from"./ProfileAvatar-CeGhJamd.js";import{n as Se,t as H}from"./SettingRow-CxdhcC5J.js";import{n as ol,t as nl}from"./session-browser-prefs-D3fgv9Yr.js";import{a as rl,c as ul,d as dl,i as cl,l as vl,n as pl,o as st,r as ml,s as gl,t as _l,u as fl}from"./useSttSettings-Dd2zPJU6.js";import{a as Ke,c as Re,d as yl,i as Be,l as Na,n as Va,o as qe,p as bl,r as Ha,s as hl,t as La,u as Ye}from"./ttsHelpers-DpzPhrib.js";import{n as Sl,t as at}from"./chat-input-height-xMpE0zfj.js";var it,lt,ot,Ea,nt=M((()=>{se(),ue(),oe(),he(),Vi(),el(),Sl(),Se(),it={class:"settings-section"},lt={class:"notify-controls"},ot={class:"chat-input-height-controls"},Ea=ne({__name:"DisplaySettings",setup(v){const t=be(),r=me(),{t:i}=re(),{brightness:s,setBrightness:w}=Fi(),A=[{label:i("settings.display.themeLight"),value:"light"},{label:i("settings.display.themeDark"),value:"dark"},{label:i("settings.display.themeSystem"),value:"system"}],m=P(()=>at(t.display.chat_input_height));async function p(T){try{await t.saveSection("display",T),r.success(i("settings.saved"))}catch{r.error(i("settings.saveFailed"))}}function n(T){const h=T;w(h),p({skin:h})}function b(T){return p({chat_input_height:at(T)})}function C(){return p({chat_input_height:null})}function y(T){return T.reason==="insecure"?"settings.display.notifyOnCompleteInsecure":T.reason==="unsupported"?"settings.display.notifyOnCompleteUnsupported":"settings.display.notifyOnCompleteDenied"}async function N(T){if(T){const h=await et();if(!h.granted){r.error(i(y(h)));return}}await p({notify_on_complete:T}),T&&tt({title:"Hermes",body:i("settings.display.notifyOnCompleteTest"),icon:"/coding-agents/hermes.png",tag:`hermes-complete-test-${Date.now()}`})}async function E(){const T=await et();if(!T.granted){r.error(i(y(T)));return}if(!await tt({title:"Hermes",body:i("settings.display.notifyOnCompleteTest"),icon:"/coding-agents/hermes.png",tag:`hermes-complete-test-${Date.now()}`})){r.error(i("settings.display.notifyOnCompleteTestFailed"));return}r.success(i("settings.display.notifyOnCompleteTestSent"))}return(T,h)=>(S(),D("section",it,[a(H,{label:e(i)("settings.display.theme"),hint:e(i)("settings.display.themeHint")},{default:u(()=>[a(e(ee),{value:e(s),options:A,size:"small","consistent-menu-width":!1,class:"input-sm","onUpdate:value":n},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.display.streaming"),hint:e(i)("settings.display.streamingHint")},{default:u(()=>[a(e(le),{value:e(t).display.streaming,"onUpdate:value":h[0]||(h[0]=F=>p({streaming:F}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.display.compact"),hint:e(i)("settings.display.compactHint")},{default:u(()=>[a(e(le),{value:e(t).display.compact,"onUpdate:value":h[1]||(h[1]=F=>p({compact:F}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.display.showReasoning"),hint:e(i)("settings.display.showReasoningHint")},{default:u(()=>[a(e(le),{value:e(t).display.show_reasoning,"onUpdate:value":h[2]||(h[2]=F=>p({show_reasoning:F}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.display.showCost"),hint:e(i)("settings.display.showCostHint")},{default:u(()=>[a(e(le),{value:e(t).display.show_cost,"onUpdate:value":h[3]||(h[3]=F=>p({show_cost:F}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.display.inlineDiffs"),hint:e(i)("settings.display.inlineDiffsHint")},{default:u(()=>[a(e(le),{value:e(t).display.inline_diffs,"onUpdate:value":h[4]||(h[4]=F=>p({inline_diffs:F}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.display.bellOnComplete"),hint:e(i)("settings.display.bellOnCompleteHint")},{default:u(()=>[a(e(le),{value:e(t).display.bell_on_complete,"onUpdate:value":h[5]||(h[5]=F=>p({bell_on_complete:F}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.display.notifyOnComplete"),hint:`${e(i)("settings.display.notifyOnCompleteHint")} ${e(i)("settings.display.notifyOnCompleteMacHint")}`},{default:u(()=>[f("div",lt,[a(e(le),{value:e(t).display.notify_on_complete,"onUpdate:value":N},null,8,["value"]),a(e(K),{size:"tiny",secondary:"",onClick:E},{default:u(()=>[L(_(e(i)("settings.display.notifyOnCompleteTestButton")),1)]),_:1})])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.display.chatInputHeight"),hint:e(i)("settings.display.chatInputHeightHint")},{default:u(()=>[f("div",ot,[a(e(ge),{value:m.value,min:e(48),max:e(400),step:8,"show-button":!1,size:"small",class:"input-sm","onUpdate:value":b},{suffix:u(()=>[...h[6]||(h[6]=[L("px",-1)])]),_:1},8,["value","min","max"]),a(e(K),{size:"tiny",secondary:"",onClick:C},{default:u(()=>[L(_(e(i)("common.reset")),1)]),_:1})])]),_:1},8,["label","hint"])]))}})})),wl=M((()=>{})),Ka,Ul=M((()=>{nt(),nt(),wl(),de(),Ka=ce(Ea,[["__scopeId","data-v-46e61b5e"]])})),rt,Ba,ut=M((()=>{se(),ue(),oe(),he(),Se(),rt={class:"settings-section"},Ba=ne({__name:"AgentSettings",setup(v){const t=be(),r=me(),{t:i}=re(),s={};function w(m){t.updateLocal("agent",m),t.saveSection("agent",m).then(()=>{r.success(i("settings.saved"))}).catch(()=>{r.error(i("settings.saveFailed"))})}function A(m,p){t.updateLocal("agent",{[m]:p}),s[m]&&clearTimeout(s[m]),s[m]=setTimeout(async()=>{try{await t.saveSection("agent",{[m]:p}),r.success(i("settings.saved"))}catch{r.error(i("settings.saveFailed"))}},300)}return(m,p)=>(S(),D("section",rt,[a(H,{label:e(i)("settings.agent.maxTurns"),hint:e(i)("settings.agent.maxTurnsHint")},{default:u(()=>[a(e(ge),{value:e(t).agent.max_turns,min:1,max:200,step:5,size:"small",class:"input-sm","onUpdate:value":p[0]||(p[0]=n=>n!=null&&A("max_turns",n))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.agent.gatewayTimeout"),hint:e(i)("settings.agent.gatewayTimeoutHint")},{default:u(()=>[a(e(ge),{value:e(t).agent.gateway_timeout,min:60,max:7200,step:60,size:"small",class:"input-sm","onUpdate:value":p[1]||(p[1]=n=>n!=null&&A("gateway_timeout",n))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.agent.restartDrainTimeout"),hint:e(i)("settings.agent.restartDrainTimeoutHint")},{default:u(()=>[a(e(ge),{value:e(t).agent.restart_drain_timeout,min:10,max:300,step:10,size:"small",class:"input-sm","onUpdate:value":p[2]||(p[2]=n=>n!=null&&A("restart_drain_timeout",n))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.agent.toolEnforcement"),hint:e(i)("settings.agent.toolEnforcementHint")},{default:u(()=>[a(e(ee),{value:e(t).agent.tool_use_enforcement||"auto",options:[{label:e(i)("settings.agent.auto"),value:"auto"},{label:e(i)("settings.agent.always"),value:"always"},{label:e(i)("settings.agent.never"),value:"never"}],size:"small",class:"input-sm","onUpdate:value":p[3]||(p[3]=n=>w({tool_use_enforcement:n}))},null,8,["value","options"])]),_:1},8,["label","hint"])]))}})})),Cl=M((()=>{})),qa,kl=M((()=>{ut(),ut(),Cl(),de(),qa=ce(Ba,[["__scopeId","data-v-d06d83a7"]])})),dt,ct,vt,Ya,pt=M((()=>{se(),ue(),oe(),he(),Ra(),Se(),dt={class:"settings-section gateway-auto-start-settings"},ct={class:"section-title"},vt={class:"section-hint"},Ya=ne({__name:"GatewayAutoStartSettings",setup(v){const t=be(),r=za(),i=me(),{t:s}=re(),w=P(()=>t.gatewayAutoStart.enabled!==!1),A=P(()=>Array.isArray(t.gatewayAutoStart.include)?"include":"all"),m=P(()=>t.gatewayAutoStart.management==="unified"),p=P(()=>t.gatewayAutoStart.include||[]),n=P(()=>t.gatewayAutoStart.exclude||[]),b=P(()=>(r.activeProfileName||r.activeProfile?.name||"default")==="default"),C=P(()=>r.profiles.map(O=>({label:O.name,value:O.name}))),y=P(()=>[{label:s("settings.gatewayAutoStart.modeAll"),value:"all"},{label:s("settings.gatewayAutoStart.modeInclude"),value:"include"}]);function N(O){const j=new Set,Q=[];for(const k of O){const d=String(k||"").trim();!d||j.has(d)||(j.add(d),Q.push(d))}return Q}async function E(O){try{t.updateLocal("gatewayAutoStart",O),await t.saveSection("gatewayAutoStart",O,{restart:!1}),await t.fetchSettings(),i.success(s("settings.saved"))}catch{i.error(s("settings.saveFailed"))}}function T(O){E(O==="include"?{include:t.gatewayAutoStart.include||[],exclude:null}:{include:null})}function h(O){E({management:O?"unified":"per_profile"})}function F(O){E({include:N(O),exclude:null})}function W(O){const j=N(O);E({exclude:j.length>0?j:null})}return(O,j)=>(S(),D("section",dt,[f("h3",ct,_(e(s)("settings.gatewayAutoStart.title")),1),f("p",vt,_(e(s)("settings.gatewayAutoStart.description")),1),a(H,{label:e(s)("settings.gatewayAutoStart.enabled"),hint:e(s)("settings.gatewayAutoStart.enabledHint")},{default:u(()=>[a(e(le),{value:w.value,"onUpdate:value":j[0]||(j[0]=Q=>E({enabled:Q}))},null,8,["value"])]),_:1},8,["label","hint"]),b.value?(S(),X(H,{key:0,label:e(s)("settings.gatewayAutoStart.management"),hint:e(s)("settings.gatewayAutoStart.managementHint")},{default:u(()=>[a(e(le),{value:m.value,"onUpdate:value":h},null,8,["value"])]),_:1},8,["label","hint"])):B("",!0),a(H,{label:e(s)("settings.gatewayAutoStart.mode"),hint:e(s)("settings.gatewayAutoStart.modeHint")},{default:u(()=>[a(e(ee),{value:A.value,options:y.value,size:"small",class:"input-md","onUpdate:value":T},null,8,["value","options"])]),_:1},8,["label","hint"]),A.value==="include"?(S(),X(H,{key:1,label:e(s)("settings.gatewayAutoStart.include"),hint:e(s)("settings.gatewayAutoStart.includeHint")},{default:u(()=>[a(e(ee),{multiple:"",filterable:"",value:p.value,options:C.value,size:"small",class:"input-md",placeholder:e(s)("settings.gatewayAutoStart.profileListPlaceholder"),"onUpdate:value":F},null,8,["value","options","placeholder"])]),_:1},8,["label","hint"])):B("",!0),A.value==="all"?(S(),X(H,{key:2,label:e(s)("settings.gatewayAutoStart.exclude"),hint:e(s)("settings.gatewayAutoStart.excludeHint")},{default:u(()=>[a(e(ee),{multiple:"",filterable:"",value:n.value,options:C.value,size:"small",class:"input-md",placeholder:e(s)("settings.gatewayAutoStart.profileListPlaceholder"),"onUpdate:value":W},null,8,["value","options","placeholder"])]),_:1},8,["label","hint"])):B("",!0)]))}})})),Pl=M((()=>{})),Xa,Tl=M((()=>{pt(),pt(),Pl(),de(),Xa=ce(Ya,[["__scopeId","data-v-a9b52cd2"]])})),mt,gt,_t,ft,Wa,yt=M((()=>{se(),ue(),oe(),he(),Se(),mt={class:"settings-section proxy-settings"},gt={class:"section-title"},_t={class:"section-hint"},ft={class:"settings-actions"},Wa=ne({__name:"ProxySettings",setup(v){const t=be(),r=me(),{t:i}=re(),s=["HTTPS_PROXY","HTTP_PROXY","ALL_PROXY","NO_PROXY"],w=Fa({HTTPS_PROXY:"",HTTP_PROXY:"",ALL_PROXY:"",NO_PROXY:""});ke(()=>t.proxy,m=>{for(const p of s)w[p]=String(m?.[p]||"")},{immediate:!0,deep:!0});async function A(){try{await t.saveSection("proxy",{...w}),await t.fetchSettings(),r.success(i("settings.saved"))}catch{r.error(i("settings.saveFailed"))}}return(m,p)=>(S(),D("section",mt,[f("h3",gt,_(e(i)("settings.proxy.title")),1),f("p",_t,_(e(i)("settings.proxy.description")),1),a(H,{label:e(i)("settings.proxy.httpsProxy"),hint:e(i)("settings.proxy.httpsProxyHint")},{default:u(()=>[a(e(Z),{value:w.HTTPS_PROXY,"onUpdate:value":p[0]||(p[0]=n=>w.HTTPS_PROXY=n),clearable:"",size:"small",class:"input-lg",placeholder:"http://127.0.0.1:7890"},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.proxy.httpProxy"),hint:e(i)("settings.proxy.httpProxyHint")},{default:u(()=>[a(e(Z),{value:w.HTTP_PROXY,"onUpdate:value":p[1]||(p[1]=n=>w.HTTP_PROXY=n),clearable:"",size:"small",class:"input-lg",placeholder:"http://127.0.0.1:7890"},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.proxy.allProxy"),hint:e(i)("settings.proxy.allProxyHint")},{default:u(()=>[a(e(Z),{value:w.ALL_PROXY,"onUpdate:value":p[2]||(p[2]=n=>w.ALL_PROXY=n),clearable:"",size:"small",class:"input-lg",placeholder:"socks5://127.0.0.1:7890"},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.proxy.noProxy"),hint:e(i)("settings.proxy.noProxyHint")},{default:u(()=>[a(e(Z),{value:w.NO_PROXY,"onUpdate:value":p[3]||(p[3]=n=>w.NO_PROXY=n),clearable:"",size:"small",class:"input-lg",placeholder:"localhost,127.0.0.1,.local"},null,8,["value"])]),_:1},8,["label","hint"]),f("div",ft,[a(e(K),{type:"primary",loading:e(t).saving,onClick:A},{default:u(()=>[L(_(e(i)("settings.proxy.save")),1)]),_:1},8,["loading"])])]))}})})),Al=M((()=>{})),ja,$l=M((()=>{yt(),yt(),Al(),de(),ja=ce(Wa,[["__scopeId","data-v-a377191a"]])})),bt,Ga,ht=M((()=>{se(),ue(),oe(),he(),Se(),bt={class:"settings-section"},Ga=ne({__name:"MemorySettings",setup(v){const t=be(),r=me(),{t:i}=re(),s={};function w(m){t.updateLocal("memory",m),t.saveSection("memory",m).then(()=>{r.success(i("settings.saved"))}).catch(()=>{r.error(i("settings.saveFailed"))})}function A(m,p){t.updateLocal("memory",{[m]:p}),s[m]&&clearTimeout(s[m]),s[m]=setTimeout(async()=>{try{await t.saveSection("memory",{[m]:p}),r.success(i("settings.saved"))}catch{r.error(i("settings.saveFailed"))}},300)}return(m,p)=>(S(),D("section",bt,[a(H,{label:e(i)("settings.memory.enabled"),hint:e(i)("settings.memory.enabledHint")},{default:u(()=>[a(e(le),{value:e(t).memory.memory_enabled,"onUpdate:value":p[0]||(p[0]=n=>w({memory_enabled:n}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.memory.userProfile"),hint:e(i)("settings.memory.userProfileHint")},{default:u(()=>[a(e(le),{value:e(t).memory.user_profile_enabled,"onUpdate:value":p[1]||(p[1]=n=>w({user_profile_enabled:n}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.memory.charLimit"),hint:e(i)("settings.memory.charLimitHint")},{default:u(()=>[a(e(ge),{value:e(t).memory.memory_char_limit,min:100,max:1e4,step:100,size:"small",class:"input-sm","onUpdate:value":p[2]||(p[2]=n=>n!=null&&A("memory_char_limit",n))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.memory.userCharLimit"),hint:e(i)("settings.memory.userCharLimitHint")},{default:u(()=>[a(e(ge),{value:e(t).memory.user_char_limit,min:100,max:1e4,step:100,size:"small",class:"input-sm","onUpdate:value":p[3]||(p[3]=n=>n!=null&&A("user_char_limit",n))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),Ml=M((()=>{})),Ja,xl=M((()=>{ht(),ht(),Ml(),de(),Ja=ce(Ga,[["__scopeId","data-v-b2529605"]])})),St,Qa,wt=M((()=>{se(),ue(),oe(),he(),Se(),St={class:"settings-section"},Qa=ne({__name:"CompressionSettings",setup(v){const t=be(),r=me(),{t:i}=re(),s={enabled:!0,threshold:.5,target_ratio:.2,protect_last_n:20,protect_first_n:3},w={};function A(p){t.updateLocal("compression",p),t.saveSection("compression",p).then(()=>{r.success(i("settings.saved"))}).catch(()=>{r.error(i("settings.saveFailed"))})}function m(p,n){t.updateLocal("compression",{[p]:n}),w[p]&&clearTimeout(w[p]),w[p]=setTimeout(async()=>{try{await t.saveSection("compression",{[p]:n}),r.success(i("settings.saved"))}catch{r.error(i("settings.saveFailed"))}},300)}return(p,n)=>(S(),D("section",St,[a(H,{label:e(i)("settings.compression.enabled"),hint:e(i)("settings.compression.enabledHint")},{default:u(()=>[a(e(le),{value:e(t).compression.enabled??s.enabled,size:"small","onUpdate:value":n[0]||(n[0]=b=>A({enabled:b}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.compression.threshold"),hint:e(i)("settings.compression.thresholdHint")},{default:u(()=>[a(e(ge),{value:e(t).compression.threshold??s.threshold,min:.1,max:.95,step:.05,size:"small",class:"input-sm","onUpdate:value":n[1]||(n[1]=b=>b!=null&&m("threshold",b))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.compression.targetRatio"),hint:e(i)("settings.compression.targetRatioHint")},{default:u(()=>[a(e(ge),{value:e(t).compression.target_ratio??s.target_ratio,min:.05,max:.8,step:.05,size:"small",class:"input-sm","onUpdate:value":n[2]||(n[2]=b=>b!=null&&m("target_ratio",b))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.compression.protectLastN"),hint:e(i)("settings.compression.protectLastNHint")},{default:u(()=>[a(e(ge),{value:e(t).compression.protect_last_n??s.protect_last_n,min:0,max:200,step:1,size:"small",class:"input-sm","onUpdate:value":n[3]||(n[3]=b=>b!=null&&m("protect_last_n",b))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.compression.protectFirstN"),hint:e(i)("settings.compression.protectFirstNHint")},{default:u(()=>[a(e(ge),{value:e(t).compression.protect_first_n??s.protect_first_n,min:0,max:50,step:1,size:"small",class:"input-sm","onUpdate:value":n[4]||(n[4]=b=>b!=null&&m("protect_first_n",b))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),Fl=M((()=>{})),Za,Dl=M((()=>{wt(),wt(),Fl(),de(),Za=ce(Qa,[["__scopeId","data-v-b584a6a0"]])})),Ut,ei,Ct=M((()=>{se(),ue(),oe(),he(),nl(),Se(),Ut={class:"settings-section"},ei=ne({__name:"SessionSettings",setup(v){const t=be(),r=ol(),i=me(),{t:s}=re(),w={};function A(b){t.updateLocal("session_reset",b),t.saveSection("session_reset",b).then(()=>{i.success(s("settings.saved"))}).catch(()=>{i.error(s("settings.saveFailed"))})}function m(b,C){t.updateLocal("session_reset",{[b]:C}),w[b]&&clearTimeout(w[b]),w[b]=setTimeout(async()=>{try{await t.saveSection("session_reset",{[b]:C}),i.success(s("settings.saved"))}catch{i.error(s("settings.saveFailed"))}},300)}async function p(b){try{await t.saveSection("approvals",{mode:b?"manual":"off"}),i.success(s("settings.saved"))}catch{i.error(s("settings.saveFailed"))}}async function n(b,C){try{t.updateLocal(b,{write_approval:C}),await t.saveSection(b,{write_approval:C}),i.success(s("settings.saved"))}catch{i.error(s("settings.saveFailed"))}}return(b,C)=>(S(),D("section",Ut,[a(H,{label:e(s)("settings.session.requireAuth"),hint:e(s)("settings.session.requireAuthHint")},{default:u(()=>[a(e(le),{value:e(t).approvals.mode==="manual","onUpdate:value":p},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(s)("settings.session.memoryWriteApproval"),hint:e(s)("settings.session.memoryWriteApprovalHint")},{default:u(()=>[a(e(le),{value:e(t).memory.write_approval===!0,"onUpdate:value":C[0]||(C[0]=y=>n("memory",y))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(s)("settings.session.skillsWriteApproval"),hint:e(s)("settings.session.skillsWriteApprovalHint")},{default:u(()=>[a(e(le),{value:e(t).skills.write_approval===!0,"onUpdate:value":C[1]||(C[1]=y=>n("skills",y))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(s)("settings.session.mode"),hint:e(s)("settings.session.modeHint")},{default:u(()=>[a(e(ee),{value:e(t).sessionReset.mode||"both",options:[{label:e(s)("settings.session.modeBoth"),value:"both"},{label:e(s)("settings.session.modeIdle"),value:"idle"},{label:e(s)("settings.session.modeDaily"),value:"daily"},{label:e(s)("settings.session.modeNone"),value:"none"}],size:"small",class:"input-md","onUpdate:value":C[2]||(C[2]=y=>A({mode:y}))},null,8,["value","options"])]),_:1},8,["label","hint"]),a(H,{label:e(s)("settings.session.idleMinutes"),hint:e(s)("settings.session.idleMinutesHint")},{default:u(()=>[a(e(ge),{value:e(t).sessionReset.idle_minutes,min:10,max:10080,step:30,size:"small",class:"input-sm","onUpdate:value":C[3]||(C[3]=y=>y!=null&&m("idle_minutes",y))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(s)("settings.session.atHour"),hint:e(s)("settings.session.atHourHint")},{default:u(()=>[a(e(ge),{value:e(t).sessionReset.at_hour,min:0,max:23,step:1,size:"small",class:"input-sm","onUpdate:value":C[4]||(C[4]=y=>y!=null&&m("at_hour",y))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(s)("settings.session.liveMonitorHumanOnly"),hint:e(s)("settings.session.liveMonitorHumanOnlyHint")},{default:u(()=>[a(e(le),{value:e(r).humanOnly,"onUpdate:value":C[5]||(C[5]=y=>e(r).setHumanOnly(y))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),Ol=M((()=>{})),ti,Il=M((()=>{Ct(),Ct(),Ol(),de(),ti=ce(ei,[["__scopeId","data-v-5027aa2c"]])})),kt,si,Pt=M((()=>{se(),ue(),oe(),he(),Se(),kt={class:"settings-section"},si=ne({__name:"PrivacySettings",setup(v){const t=be(),r=me(),{t:i}=re();async function s(w){try{await t.saveSection("privacy",w),r.success(i("settings.saved"))}catch{r.error(i("settings.saveFailed"))}}return(w,A)=>(S(),D("section",kt,[a(H,{label:e(i)("settings.privacy.redactPii"),hint:e(i)("settings.privacy.redactPiiHint")},{default:u(()=>[a(e(le),{value:e(t).privacy.redact_pii,"onUpdate:value":A[0]||(A[0]=m=>s({redact_pii:m}))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),zl=M((()=>{})),ai,Rl=M((()=>{Pt(),Pt(),zl(),de(),ai=ce(si,[["__scopeId","data-v-43145f27"]])})),Tt,At,$t,Mt,xt,Ft,Dt,Ot,ii,It=M((()=>{se(),ue(),sl(),Ri(),oe(),Tt={class:"settings-section"},At={key:0,class:"empty-hint"},$t={class:"provider-header"},Mt={class:"provider-name"},xt={key:0,class:"provider-fields"},Ft={class:"field-row"},Dt={key:1,class:"provider-fields"},Ot={class:"field-row"},ii=ne({__name:"ModelSettings",setup(v){const{t}=re(),r=tl(),i=me(),s=$(null),w=$({});Pe(()=>{r.providers.length===0&&r.fetchProviders()});const A=b=>!r.providers.find(C=>C.provider===b)?.builtin&&b.startsWith("custom:");function m(b){if(!(b in w.value)){const C=r.providers.find(y=>y.provider===b);w.value[b]=C?.api_key||""}return w.value[b]}async function p(b){const C=m(b);if(!C.trim()){i.warning(t("settings.models.apiKeyPlaceholder"));return}s.value=b;try{await Je(b,{api_key:C.trim()}),i.success(t("settings.models.saved")),await r.fetchProviders()}catch(y){i.error(y.message||t("settings.models.saveFailed"))}finally{s.value=null}}async function n(b){const C=m(b);s.value=b;try{await Je(b,{api_key:C.trim()}),i.success(t("settings.models.saved")),await r.fetchProviders()}catch(y){i.error(y.message||t("settings.models.saveFailed"))}finally{s.value=null}}return(b,C)=>(S(),D("section",Tt,[a(e(Oa),{show:e(r).loading},{default:u(()=>[e(r).providers.length===0?(S(),D("div",At,[a(e(Oi),{description:e(t)("settings.models.noProviders")},null,8,["description"])])):B("",!0),(S(!0),D(ye,null,xe(e(r).providers,y=>(S(),D("div",{key:y.provider,class:"provider-section"},[f("div",$t,[f("h4",Mt,_(y.label),1),f("span",{class:He(["type-badge",A(y.provider)?"custom":"builtin"])},_(A(y.provider)?e(t)("models.customType"):e(t)("models.builtIn")),3)]),A(y.provider)?(S(),D("div",Dt,[f("div",Ot,[a(e(Z),{value:m(y.provider),type:"password","show-password-on":"click",placeholder:e(t)("settings.models.apiKeyPlaceholder"),autocomplete:"off","onUpdate:value":N=>w.value[y.provider]=N},null,8,["value","placeholder","onUpdate:value"]),a(e(K),{type:"primary",size:"small",loading:s.value===y.provider,onClick:N=>n(y.provider)},{default:u(()=>[L(_(e(t)("settings.models.save")),1)]),_:1},8,["loading","onClick"])])])):(S(),D("div",xt,[f("div",Ft,[a(e(Z),{value:m(y.provider),type:"password","show-password-on":"click",placeholder:e(t)("settings.models.apiKeyPlaceholder"),autocomplete:"off","onUpdate:value":N=>w.value[y.provider]=N},null,8,["value","placeholder","onUpdate:value"]),a(e(K),{type:"primary",size:"small",loading:s.value===y.provider,onClick:N=>p(y.provider)},{default:u(()=>[L(_(e(t)("settings.models.save")),1)]),_:1},8,["loading","onClick"])])]))]))),128))]),_:1},8,["show"])]))}})})),Nl=M((()=>{})),li,Vl=M((()=>{It(),It(),Nl(),de(),li=ce(ii,[["__scopeId","data-v-8cd750e1"]])})),zt,Rt,Nt,Vt,Ht,Lt,Et,Kt,Bt,qt,Yt,Xt,Wt,jt,Gt,Jt,Qt,Zt,es,ts,ss,as,is,ls,os,oi,ns=M((()=>{se(),ue(),oe(),Ia(),al(),zt=zi(il()),Rt={class:"account-settings"},Nt={class:"section-desc"},Vt={class:"avatar-section"},Ht={class:"section-title"},Lt={class:"avatar-row"},Et={class:"avatar-display"},Kt={class:"avatar-actions"},Bt={class:"avatar-hint"},qt={class:"action-buttons"},Yt={class:"configured-section"},Xt={class:"action-row"},Wt={class:"action-label"},jt={class:"action-buttons"},Gt={class:"locked-ips-section"},Jt={class:"section-title"},Qt={class:"action-row",style:{"margin-bottom":"12px"}},Zt={class:"action-label"},es={class:"action-buttons"},ts={key:0,class:"locked-list"},ss={class:"locked-info"},as={class:"locked-ip"},is={class:"locked-badge"},ls={class:"locked-ttl"},os={key:1,class:"empty-hint"},oi=ne({__name:"AccountSettings",setup(v){const{t}=re(),r=me(),i=$(null),s=$(!1),w=$(null),A=$(null),m=$(!1);function p(x,o){return new Promise((l,c)=>{const J=new FileReader;J.onload=()=>{const ie=new Image;ie.onload=()=>{const pe=document.createElement("canvas");pe.width=ie.width,pe.height=ie.height,pe.getContext("2d").drawImage(ie,0,0);const we=Te=>{const De=pe.toDataURL("image/jpeg",Te);De.length<=o||Te<=.3?l(De):we(Te-.1)};we(.8)},ie.onerror=c,ie.src=J.result},J.onerror=c,J.readAsDataURL(x)})}async function n(x){const o=x.target,l=o.files?.[0];if(l){if(!["image/png","image/jpeg","image/webp"].includes(l.type)){r.error(t("settings.userAvatar.invalidType")),o.value="";return}if(l.size>1024*1024){r.error(t("settings.userAvatar.tooLarge")),o.value="";return}m.value=!0;try{let c;l.size>500*1024?c=await p(l,500*1024):c=await new Promise((J,ie)=>{const pe=new FileReader;pe.onload=()=>J(pe.result),pe.onerror=ie,pe.readAsDataURL(l)}),await Qe({type:"image",dataUrl:c}),w.value={type:"image",dataUrl:c},r.success(t("settings.userAvatar.saveSuccess"))}catch(c){r.error(c.message||t("settings.userAvatar.saveFailed"))}finally{m.value=!1,o.value=""}}}async function b(){m.value=!0;try{const x=typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():Math.random().toString(36).slice(2),o=`${i.value||"default"}-${Date.now()}-${x}`,l=(0,zt.default)(o),c="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(l)));await Qe({type:"image",dataUrl:c,seed:o}),w.value={type:"image",dataUrl:c,seed:o},r.success(t("settings.userAvatar.saveSuccess"))}catch(x){r.error(x.message||t("settings.userAvatar.saveFailed"))}finally{m.value=!1}}async function C(){m.value=!0;try{await Bi(),w.value={type:"default",seed:i.value||"default"},r.success(t("settings.userAvatar.resetSuccess"))}catch(x){r.error(x.message||t("settings.userAvatar.resetFailed"))}finally{m.value=!1}}const y=$(!1),N=$(""),E=$(""),T=$(""),h=$(!1),F=$(""),W=$("");Pe(async()=>{try{i.value=(await ji()).username}catch{}try{w.value=await Yi()||{type:"default",seed:i.value||"default"}}catch{}});async function O(){if(E.value!==T.value){r.error(t("login.passwordMismatch"));return}if(E.value.length<6){r.error(t("login.passwordTooShort"));return}s.value=!0;try{await Zi(N.value,E.value),y.value=!1,N.value="",E.value="",T.value="",r.success(t("login.passwordChanged"))}catch(x){r.error(x.message||t("common.saveFailed"))}finally{s.value=!1}}async function j(){if(W.value.trim().length<2){r.error(t("login.usernameTooShort"));return}s.value=!0;try{await Wi(F.value,W.value.trim()),i.value=W.value.trim(),h.value=!1,F.value="",W.value="",r.success(t("login.usernameChanged"))}catch(x){r.error(x.message||t("common.saveFailed"))}finally{s.value=!1}}function Q(){N.value="",E.value="",T.value="",y.value=!0}function k(){F.value="",W.value="",h.value=!0}const d=$([]),g=$(!1);async function U(){g.value=!0;try{d.value=await Qi()}catch{}finally{g.value=!1}}async function I(x){try{await Xi(x),r.success(t("settings.lockedIps.unlocked")),await U()}catch(o){r.error(o.message||t("common.saveFailed"))}}async function Y(){try{const x=await Gi();r.success(t("settings.lockedIps.allUnlocked",{count:x})),await U()}catch(x){r.error(x.message||t("common.saveFailed"))}}function ae(x){const o=Math.max(0,Math.round((x-Date.now())/6e4));return o>0?`${o} min`:t("common.expired")}function q(x){return t(`settings.lockedIps.type.${x}`)}return Pe(()=>{U()}),(x,o)=>(S(),D("div",Rt,[f("p",Nt,_(e(t)("login.setupDescription")),1),f("div",Vt,[f("h3",Ht,_(e(t)("settings.userAvatar.title")),1),f("div",Lt,[f("div",Et,[a(ll,{name:i.value||"default",avatar:w.value?.type==="image"&&w.value.dataUrl?{type:"image",dataUrl:w.value.dataUrl}:null,size:80},null,8,["name","avatar"])]),f("div",Kt,[f("p",Bt,_(e(t)("settings.userAvatar.hint")),1),f("div",qt,[a(e(K),{onClick:o[0]||(o[0]=l=>A.value?.click())},{default:u(()=>[L(_(e(t)("settings.userAvatar.upload")),1)]),_:1}),a(e(K),{onClick:b,loading:m.value},{default:u(()=>[L(_(e(t)("settings.userAvatar.random")),1)]),_:1},8,["loading"]),a(e(K),{onClick:C,loading:m.value},{default:u(()=>[L(_(e(t)("settings.userAvatar.reset")),1)]),_:1},8,["loading"])]),f("input",{ref_key:"avatarFileInput",ref:A,type:"file",accept:".png,.jpg,.jpeg,.webp",style:{display:"none"},onChange:n},null,544)])])]),f("div",Yt,[f("div",Xt,[f("span",Wt,_(e(t)("login.passwordLoginConfigured",{username:i.value})),1),f("div",jt,[a(e(K),{onClick:Q},{default:u(()=>[L(_(e(t)("login.changePassword")),1)]),_:1}),a(e(K),{onClick:k},{default:u(()=>[L(_(e(t)("login.changeUsername")),1)]),_:1})])])]),f("div",Gt,[f("h3",Jt,_(e(t)("settings.lockedIps.title")),1),f("div",Qt,[f("span",Zt,_(e(t)("settings.lockedIps.count",{count:d.value.length})),1),f("div",es,[a(e(K),{size:"small",loading:g.value,onClick:U},{default:u(()=>[L(_(e(t)("common.retry")),1)]),_:1},8,["loading"]),d.value.length>0?(S(),X(e(Da),{key:0,onPositiveClick:Y},{trigger:u(()=>[a(e(K),{size:"small",type:"warning"},{default:u(()=>[L(_(e(t)("settings.lockedIps.unlockAll")),1)]),_:1})]),default:u(()=>[L(" "+_(e(t)("settings.lockedIps.unlockAllConfirm")),1)]),_:1})):B("",!0)])]),d.value.length>0?(S(),D("div",ts,[(S(!0),D(ye,null,xe(d.value,l=>(S(),D("div",{key:l.ip+l.type,class:"locked-item"},[f("div",ss,[f("span",as,_(l.ip),1),f("span",is,_(q(l.type)),1),f("span",ls,_(ae(l.lockedUntil)),1)]),a(e(K),{size:"tiny",type:"error",ghost:"",onClick:c=>I(l.ip)},{default:u(()=>[L(_(e(t)("settings.lockedIps.unlock")),1)]),_:1},8,["onClick"])]))),128))])):(S(),D("p",os,_(e(t)("settings.lockedIps.empty")),1))]),a(e(ze),{show:y.value,"onUpdate:show":o[5]||(o[5]=l=>y.value=l),preset:"dialog",title:e(t)("login.changePassword")},{action:u(()=>[a(e(K),{onClick:o[4]||(o[4]=l=>y.value=!1)},{default:u(()=>[L(_(e(t)("common.cancel")),1)]),_:1}),a(e(K),{type:"primary",loading:s.value,onClick:O},{default:u(()=>[L(_(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:u(()=>[a(e(Me),{"label-placement":"top"},{default:u(()=>[a(e(G),{label:e(t)("login.currentPassword")},{default:u(()=>[a(e(Z),{value:N.value,"onUpdate:value":o[1]||(o[1]=l=>N.value=l),type:"password","show-password-on":"click",placeholder:e(t)("login.currentPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(G),{label:e(t)("login.newPassword")},{default:u(()=>[a(e(Z),{value:E.value,"onUpdate:value":o[2]||(o[2]=l=>E.value=l),type:"password","show-password-on":"click",placeholder:e(t)("login.newPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(G),{label:e(t)("login.confirmPassword")},{default:u(()=>[a(e(Z),{value:T.value,"onUpdate:value":o[3]||(o[3]=l=>T.value=l),type:"password","show-password-on":"click",placeholder:e(t)("login.confirmPassword"),onKeyup:Ge(O,["enter"])},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title"]),a(e(ze),{show:h.value,"onUpdate:show":o[9]||(o[9]=l=>h.value=l),preset:"dialog",title:e(t)("login.changeUsername")},{action:u(()=>[a(e(K),{onClick:o[8]||(o[8]=l=>h.value=!1)},{default:u(()=>[L(_(e(t)("common.cancel")),1)]),_:1}),a(e(K),{type:"primary",loading:s.value,onClick:j},{default:u(()=>[L(_(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:u(()=>[a(e(Me),{"label-placement":"top"},{default:u(()=>[a(e(G),{label:e(t)("login.currentPassword")},{default:u(()=>[a(e(Z),{value:F.value,"onUpdate:value":o[6]||(o[6]=l=>F.value=l),type:"password","show-password-on":"click",placeholder:e(t)("login.currentPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(G),{label:e(t)("login.newUsername")},{default:u(()=>[a(e(Z),{value:W.value,"onUpdate:value":o[7]||(o[7]=l=>W.value=l),placeholder:e(t)("login.usernamePlaceholder"),onKeyup:Ge(j,["enter"])},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title"])]))}})})),Hl=M((()=>{})),ni,Ll=M((()=>{ns(),ns(),Hl(),de(),ni=ce(oi,[["__scopeId","data-v-61e79d43"]])})),rs,us,ds,cs,ri,vs=M((()=>{se(),ue(),oe(),Ia(),rs={class:"user-management"},us={class:"toolbar"},ds={class:"section-title"},cs={class:"section-desc"},ri=ne({__name:"UserManagementSettings",setup(v){const{t}=re(),r=me(),i=$(!1),s=$(!1),w=$([]),A=$([]),m=$(!1),p=$(null),n=Fa({username:"",password:"",role:"admin",status:"active",profiles:[]}),b=P(()=>[{label:t("users.roles.admin"),value:"admin"},{label:t("users.roles.superAdmin"),value:"super_admin"}]),C=P(()=>[{label:t("users.status.active"),value:"active"},{label:t("users.status.disabled"),value:"disabled"}]),y=P(()=>A.value.map(k=>({label:k,value:k})));function N(){p.value=null,n.username="",n.password="",n.role="admin",n.status="active",n.profiles=[]}async function E(){i.value=!0;try{const k=await Ki();w.value=k.users,A.value=k.profiles}catch(k){r.error(k.message||t("users.loadFailed"))}finally{i.value=!1}}function T(){N(),m.value=!0}function h(k){p.value=k,n.username=k.username,n.password="",n.role=k.role,n.status=k.status,n.profiles=[...k.profiles],m.value=!0}async function F(){if(n.username.trim().length<2){r.error(t("login.usernameTooShort"));return}if(!p.value&&n.password.length<6){r.error(t("login.passwordTooShort"));return}if(n.password&&n.password.length<6){r.error(t("login.passwordTooShort"));return}s.value=!0;try{const k={username:n.username.trim(),password:n.password||void 0,role:n.role,status:n.status,profiles:n.role==="super_admin"?[]:n.profiles,defaultProfile:n.profiles[0]||null},d=p.value?await Ze(p.value.id,k):await Ji({...k,password:n.password});w.value=d.users,A.value=d.profiles,m.value=!1,N(),r.success(t("common.saved"))}catch(k){r.error(k.message||t("common.saveFailed"))}finally{s.value=!1}}async function W(k,d){s.value=!0;try{const g=await Ze(k.id,{status:d});w.value=g.users,A.value=g.profiles,r.success(t("common.saved"))}catch(g){r.error(g.message||t("common.saveFailed"))}finally{s.value=!1}}async function O(k){s.value=!0;try{const d=await qi(k.id);w.value=d.users,A.value=d.profiles,r.success(t("common.saved"))}catch(d){r.error(d.message||t("common.deleteFailed"))}finally{s.value=!1}}function j(k){return k?new Date(k).toLocaleString():"-"}const Q=P(()=>[{title:t("users.username"),key:"username",minWidth:140},{title:t("users.role"),key:"role",width:130,render:k=>fe(Ie,{size:"small",type:k.role==="super_admin"?"warning":"default"},{default:()=>k.role==="super_admin"?t("users.roles.superAdmin"):t("users.roles.admin")})},{title:t("users.statusLabel"),key:"status",width:110,render:k=>fe(Ie,{size:"small",type:k.status==="active"?"success":"error"},{default:()=>k.status==="active"?t("users.status.active"):t("users.status.disabled")})},{title:t("users.profiles"),key:"profiles",minWidth:200,render:k=>k.role==="super_admin"?fe("span",{class:"muted"},t("users.allProfiles")):fe(Ue,{size:4},{default:()=>k.profiles.length?k.profiles.map(d=>fe(Ie,{size:"small",bordered:!1},{default:()=>d})):fe("span",{class:"muted"},t("users.noProfiles"))})},{title:t("users.lastLogin"),key:"last_login_at",minWidth:170,render:k=>j(k.last_login_at)},{title:t("common.edit"),key:"actions",width:280,render:k=>fe(Ue,{size:8},{default:()=>[fe(K,{size:"small",onClick:()=>h(k)},{default:()=>t("common.edit")}),fe(K,{size:"small",type:k.status==="active"?"warning":"primary",ghost:!0,loading:s.value,onClick:()=>W(k,k.status==="active"?"disabled":"active")},{default:()=>k.status==="active"?t("users.disable"):t("users.enable")}),fe(Da,{onPositiveClick:()=>O(k)},{trigger:()=>fe(K,{size:"small",type:"error",ghost:!0,loading:s.value},{default:()=>t("common.delete")}),default:()=>t("users.deleteConfirm")})]})}]);return Pe(E),(k,d)=>(S(),D("div",rs,[f("div",us,[f("div",null,[f("h3",ds,_(e(t)("users.title")),1),f("p",cs,_(e(t)("users.description")),1)]),a(e(K),{type:"primary",onClick:T},{default:u(()=>[L(_(e(t)("users.create")),1)]),_:1})]),a(e(Di),{columns:Q.value,data:w.value,loading:i.value,bordered:!1,"single-line":!1,size:"small"},null,8,["columns","data","loading"]),a(e(ze),{show:m.value,"onUpdate:show":d[6]||(d[6]=g=>m.value=g),preset:"dialog",title:p.value?e(t)("users.edit"):e(t)("users.create")},{action:u(()=>[a(e(K),{onClick:d[5]||(d[5]=g=>m.value=!1)},{default:u(()=>[L(_(e(t)("common.cancel")),1)]),_:1}),a(e(K),{type:"primary",loading:s.value,onClick:F},{default:u(()=>[L(_(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:u(()=>[a(e(Me),{"label-placement":"top"},{default:u(()=>[a(e(G),{label:e(t)("users.username")},{default:u(()=>[a(e(Z),{value:n.username,"onUpdate:value":d[0]||(d[0]=g=>n.username=g),placeholder:e(t)("login.usernamePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(G),{label:p.value?e(t)("users.newPasswordOptional"):e(t)("login.newPassword")},{default:u(()=>[a(e(Z),{value:n.password,"onUpdate:value":d[1]||(d[1]=g=>n.password=g),type:"password","show-password-on":"click",placeholder:e(t)("login.passwordPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(G),{label:e(t)("users.role")},{default:u(()=>[a(e(ee),{value:n.role,"onUpdate:value":d[2]||(d[2]=g=>n.role=g),options:b.value},null,8,["value","options"])]),_:1},8,["label"]),a(e(G),{label:e(t)("users.statusLabel")},{default:u(()=>[a(e(ee),{value:n.status,"onUpdate:value":d[3]||(d[3]=g=>n.status=g),options:C.value},null,8,["value","options"])]),_:1},8,["label"]),n.role!=="super_admin"?(S(),X(e(G),{key:0,label:e(t)("users.profiles")},{default:u(()=>[a(e(ee),{value:n.profiles,"onUpdate:value":d[4]||(d[4]=g=>n.profiles=g),multiple:"",filterable:"",options:y.value,placeholder:e(t)("users.profilesPlaceholder")},null,8,["value","options","placeholder"])]),_:1},8,["label"])):B("",!0)]),_:1})]),_:1},8,["show","title"])]))}})})),El=M((()=>{})),ui,Kl=M((()=>{vs(),vs(),El(),de(),ui=ce(ri,[["__scopeId","data-v-bcd3f33a"]])}));function Bl(v){return v==="edge"||v==="openai"||v==="custom"||v==="mimo"||v==="doubao"?v:null}function ql(v){if(v&&typeof v=="object"){const t=v,r=Bl(t.activeProvider);if(Array.isArray(t.providers))return{providers:t.providers,activeProvider:r};if(Array.isArray(t.settings))return{providers:t.settings,activeProvider:r}}return{providers:[],activeProvider:null}}async function Yl(){return ql(await Fe("/api/hermes/tts/settings"))}async function Xl(v,t){const r=await Fe(`/api/hermes/tts/settings/${v}`,{method:"PUT",body:JSON.stringify(t)});return typeof r=="object"&&r!==null&&"setting"in r?r.setting:r}async function Wl(v){return(await Fe("/api/hermes/tts/settings/active",{method:"PUT",body:JSON.stringify({provider:v})})).activeProvider}async function jl(v){return Fe(`/api/hermes/tts/settings/${v}`,{method:"DELETE"})}var Gl=M((()=>{Ee()})),Ce,Xe=M((()=>{Ye(),Ce=[{id:"tts-edge",kind:"tts",provider:"edge",label:"Edge TTS",labelKey:"settings.voice.presetEdgeTtsLabel",description:"Free high-quality cloud voices from Microsoft Edge.",descriptionKey:"settings.voice.presetEdgeTtsDescription",isBuiltin:!0,isSecretRequired:!1,capabilities:{voices:!0,rate:!0,pitch:!0}},{id:"tts-openai",kind:"tts",provider:"openai",label:"OpenAI TTS",labelKey:"settings.voice.presetOpenaiTtsLabel",baseUrl:"https://api.openai.com/v1/audio/speech",defaultModel:"tts-1",isSecretRequired:!0,capabilities:{models:!0,voices:!0}},{id:"tts-mimo",kind:"tts",provider:"mimo",label:"MiMo TTS",labelKey:"settings.voice.presetMimoTtsLabel",baseUrl:"https://api.xiaomimimo.com/v1",defaultModel:"mimo-v2.5-tts",isSecretRequired:!0,capabilities:{models:!0,voices:!0,stylePrompt:!0,voiceDesign:!0,voiceClone:!0}},{id:"tts-doubao",kind:"tts",provider:"doubao",label:"Volcengine Doubao TTS",labelKey:"settings.voice.presetDoubaoTtsLabel",baseUrl:"https://openspeech.bytedance.com/api/v3/tts/unidirectional",defaultModel:qe,isSecretRequired:!0,capabilities:{models:!0,voices:!0,stylePrompt:!0}},{id:"tts-custom",kind:"tts",provider:"custom",label:"Custom TTS",labelKey:"settings.voice.presetCustomTtsLabel",isSecretRequired:!0,capabilities:{models:!0}},{id:"stt-browser",kind:"stt",provider:"browser",label:"Browser STT",labelKey:"settings.voice.presetBrowserSttLabel",description:"Native browser speech recognition API.",descriptionKey:"settings.voice.presetBrowserSttDescription",isBuiltin:!0,isSecretRequired:!1,capabilities:{}},{id:"stt-openai",kind:"stt",provider:"openai",label:"OpenAI Whisper",labelKey:"settings.voice.presetOpenaiWhisperLabel",baseUrl:"https://api.openai.com/v1",defaultModel:"whisper-1",isSecretRequired:!0,capabilities:{models:!0}},{id:"stt-groq",kind:"stt",provider:"custom",label:"Groq STT",labelKey:"settings.voice.presetGroqSttLabel",baseUrl:"https://api.groq.com/openai/v1",defaultModel:"whisper-large-v3",isSecretRequired:!0,capabilities:{models:!0}},{id:"stt-doubao",kind:"stt",provider:"doubao",label:"Volcengine Doubao STT",labelKey:"settings.voice.presetDoubaoSttLabel",baseUrl:"https://openspeech.bytedance.com/api/v3/auc/bigmodel",defaultModel:"volc.seedasr.auc",isSecretRequired:!0,capabilities:{models:!0}},{id:"stt-custom",kind:"stt",provider:"custom",label:"Custom STT",labelKey:"settings.voice.presetCustomSttLabel",isSecretRequired:!0,capabilities:{models:!0}}]}));function ps(v){return v==="openai"||v==="custom"||v==="doubao"}function ms(v){return v==="edge"||v==="openai"||v==="custom"||v==="mimo"||v==="doubao"}function Ne(v){return v==="browser"||v==="openai"||v==="custom"||v==="doubao"}function Ve(v){return v==="edge"||v==="openai"||v==="custom"||v==="mimo"||v==="doubao"}function te(v,t){const r=v[t];return typeof r=="string"?r:""}function Jl(){const{t:v}=re(),t=$([]),r=$(!1),i=Ke(),s=pl(),w=$(i.provider.value==="webspeech"?"edge":i.provider.value),A=$(s.provider.value),m=P(()=>`tts-${w.value}`),p=P(()=>`stt-${A.value}`),n=P(()=>t.value.filter(d=>d.kind==="tts")),b=P(()=>t.value.filter(d=>d.kind==="stt")),C=P(()=>n.value.find(d=>d.id===m.value)||n.value[0]||null),y=P(()=>b.value.find(d=>d.id===p.value)||b.value[0]||null),N=P(()=>n.value.map(d=>({label:d.label,value:d.id}))),E=P(()=>b.value.map(d=>({label:d.label,value:d.id})));function T(d){if(!Ve(d.provider))return;i.setProvider(d.provider);const g=d.settings;if(d.provider==="edge"){i.setEdgeVoice(te(g,"voice")||d.voice||i.edgeVoice.value);const U=Number(g.rate),I=Number(g.pitch);Number.isFinite(U)&&i.setEdgeRate(U),Number.isFinite(I)&&i.setEdgePitchHz(I);return}if(d.provider==="openai"){i.setOpenaiBaseUrl(d.baseUrl||te(g,"baseUrl")),i.setOpenaiModel(d.model||te(g,"model")||i.openaiModel.value),i.setOpenaiVoice(d.voice||te(g,"voice")||i.openaiVoice.value);return}if(d.provider==="custom"){i.setCustomUrl(d.baseUrl||te(g,"baseUrl"));return}if(d.provider==="mimo"){i.setMimoBaseUrl(d.baseUrl||te(g,"baseUrl")||i.mimoBaseUrl.value),i.setMimoModel(d.model||te(g,"model")||i.mimoModel.value),i.setMimoVoice(d.voice||te(g,"voice")||i.mimoVoice.value),i.setMimoStylePrompt(te(g,"stylePrompt")),i.setMimoVoiceDesignDesc(te(g,"voiceDesignDesc"));const U=te(g,"voiceCloneFormat");(U==="mp3"||U==="wav")&&i.setMimoVoiceCloneFormat(U);return}d.provider==="doubao"&&(i.setDoubaoBaseUrl(d.baseUrl||te(g,"baseUrl")||i.doubaoBaseUrl.value),i.setDoubaoModel(d.model||te(g,"model")||i.doubaoModel.value),i.setDoubaoVoice(d.voice||te(g,"voice")||i.doubaoVoice.value),i.setDoubaoStylePrompt(te(g,"stylePrompt")))}function h(d){if(!Ne(d.provider))return;s.setProvider(d.provider);const g=d.settings;if(d.provider==="openai"){s.setOpenaiModel(d.model||te(g,"model")||s.openaiModel.value),s.setOpenaiLanguage(te(g,"language")),s.setOpenaiPrompt(te(g,"prompt"));return}d.provider==="custom"&&(s.setCustomBaseUrl(d.baseUrl||te(g,"baseUrl")),s.setCustomModel(d.model||te(g,"model")||s.customModel.value),s.setCustomLanguage(te(g,"language")),s.setCustomPrompt(te(g,"prompt")))}function F(d,g,U){const I=Ce.find(Y=>Y.kind==="tts"&&Y.provider===d&&(Y.baseUrl===g.baseUrl||!Y.baseUrl));return{id:`tts-${d}`,kind:"tts",provider:d,label:I?.labelKey?v(I.labelKey):I?.label||`${d} TTS`,baseUrl:g.baseUrl,model:g.model,voice:g.voice,settings:g,hasSecret:U,active:m.value===`tts-${d}`}}function W(d,g,U){const I=Ce.find(Y=>Y.kind==="stt"&&Y.provider===d&&(Y.baseUrl===g.baseUrl||!Y.baseUrl));return{id:`stt-${d}`,kind:"stt",provider:d,label:I?.labelKey?v(I.labelKey):I?.label||`${d} STT`,baseUrl:g.baseUrl,model:g.model,settings:g,hasSecret:U,active:p.value===`stt-${d}`}}async function O(){r.value=!0;try{await s.loadServerSttSettings(!0);const[d,g]=await Promise.all([Yl(),cl()]);d.activeProvider&&Ve(d.activeProvider)&&(w.value=d.activeProvider,i.setProvider(d.activeProvider)),g.activeProvider&&Ne(g.activeProvider)&&(A.value=g.activeProvider,s.setProvider(g.activeProvider));const U=[{id:"tts-edge",kind:"tts",provider:"edge",label:v("settings.voice.presetEdgeTtsLabel"),isBuiltin:!0,hasSecret:!1,active:m.value==="tts-edge",settings:{voice:i.edgeVoice.value,rate:i.edgeRate.value,pitch:i.edgePitchHz.value},voice:i.edgeVoice.value},{id:"stt-browser",kind:"stt",provider:"browser",label:v("settings.voice.presetBrowserSttLabel"),isBuiltin:!0,hasSecret:!1,active:p.value==="stt-browser",settings:{}}];for(const I of d.providers){const Y=F(I.provider,I.settings,I.secrets?.apiKey==="[stored]"),ae=U.find(q=>q.id===Y.id);ae?Object.assign(ae,Y,{isBuiltin:ae.isBuiltin}):U.push(Y)}for(const I of g.providers)U.push(W(I.provider,I.settings,I.secrets?.apiKey==="[stored]"));t.value=U.map(I=>({...I,active:I.kind==="tts"?I.id===m.value:I.id===p.value}))}finally{r.value=!1}}async function j(d,g){const U=t.value.find(I=>I.kind===d&&I.id===g);U&&(d==="tts"?Ve(U.provider)&&(w.value=await Wl(U.provider),T(U)):Ne(U.provider)&&(A.value=await st(U.provider),h(U)),t.value=t.value.map(I=>({...I,active:I.kind===d?I.id===g:I.active})))}async function Q(d,g,U){if(d==="tts"){if(!ms(g))throw new Error(`Unsupported TTS provider: ${String(g)}`);const Y={...U.settings||{}},ae=Object.prototype.hasOwnProperty.call(Y,"voiceCloneDataUri"),q=Object.prototype.hasOwnProperty.call(Y,"voiceCloneFileName"),x=Y.voiceCloneDataUri,o=Y.voiceCloneFileName;delete Y.voiceCloneDataUri,delete Y.voiceCloneFileName;const l=await Xl(g,{settings:Y,secrets:U.secrets,activeProvider:g});return await O(),await j("tts",`tts-${g}`),g==="mimo"&&(ae&&typeof x=="string"&&i.setMimoVoiceCloneDataUri(x),q&&typeof o=="string"&&i.setMimoVoiceCloneFileName(o)),l}if(g==="browser")return A.value=await st("browser"),s.setProvider("browser"),await O(),null;if(!ps(g))throw new Error(`Unsupported STT provider: ${String(g)}`);const I=await gl(g,{settings:U.settings,secrets:U.secrets,activeProvider:g});return await O(),await j("stt",`stt-${g}`),I}async function k(d,g){if(d==="tts"){if(!ms(g)||g==="edge")return;await jl(g)}else{if(!ps(g))return;await ml(g)}await O()}return{connections:t,ttsConnections:n,sttConnections:b,activeTtsId:m,activeSttId:p,activeTtsConnection:C,activeSttConnection:y,ttsConnectionOptions:N,sttConnectionOptions:E,loading:r,refresh:O,setActiveConnection:j,saveConnection:Q,deleteSecret:k}}var Ql=M((()=>{se(),oe(),Gl(),rl(),Be(),_l(),Xe()})),gs,_s,di,fs=M((()=>{se(),gs={class:"provider-meta-item"},_s=["title"],di=ne({__name:"ProviderMetaItem",props:{label:{},value:{}},setup(v){return(t,r)=>(S(),D("div",gs,[f("dt",null,_(v.label),1),f("dd",{title:String(v.value||"—")},_(v.value||"—"),9,_s)]))}})})),Zl=M((()=>{})),ci,eo=M((()=>{fs(),fs(),Zl(),de(),ci=ce(di,[["__scopeId","data-v-6e8cbcf2"]])})),ys,bs,hs,Ss,ws,Us,Cs,ks,Ps,Ts,As,$s,Ms,xs,Fs,vi,Ds=M((()=>{se(),ue(),oe(),eo(),ys=["data-state"],bs={class:"card-main"},hs={class:"provider-identity"},Ss={class:"provider-icon","aria-hidden":"true"},ws={class:"provider-copy"},Us={class:"provider-title-row"},Cs=["title"],ks={class:"provider-kind"},Ps={class:"provider-description"},Ts={class:"provider-meta"},As={class:"provider-control"},$s=["aria-label"],Ms={key:1,class:"feedback-row error",role:"alert"},xs={class:"error-summary"},Fs={key:1,class:"error-details"},vi=ne({__name:"VoiceApiCard",props:{connection:{},testState:{}},emits:["setActive","test","edit","connect","remove"],setup(v,{emit:t}){const r=v,i=t,{t:s}=re(),w=$(!1);ke(()=>r.testState?.message,()=>{w.value=!1});const A=P(()=>!(r.connection.kind==="stt"&&r.connection.provider==="browser")),m=P(()=>!r.connection.isBuiltin),p=P(()=>m.value?r.connection.hasSecret?s("settings.voice.keyStored"):s("settings.voice.keyMissing"):s("settings.voice.builtin")),n=P(()=>r.connection.isBuiltin?s("settings.voice.builtin"):s("settings.voice.customApi")),b=P(()=>r.connection.active?"success":m.value&&!r.connection.hasSecret?"warning":"default"),C=P(()=>r.connection.active?s("settings.voice.active"):m.value&&!r.connection.hasSecret?s("settings.voice.keyMissing"):s("settings.voice.connected")),y=P(()=>r.connection.model||String(r.connection.settings.model||"")),N=P(()=>r.connection.voice||String(r.connection.settings.voice||"")),E=P(()=>r.connection.baseUrl||(r.connection.isBuiltin?s("settings.voice.localBuiltin"):"")),T=P(()=>{const q=r.testState?.status;return s(q==="success"?"settings.voice.testSuccess":q==="error"?"settings.voice.testFailedShort":q==="loading"?"settings.voice.testing":q==="recording"?"settings.voice.recording":"settings.voice.notTested")}),h=P(()=>m.value&&!r.connection.hasSecret?s("settings.voice.connect"):s("common.edit")),F=P(()=>r.testState?.status==="recording"?s("settings.voice.sttTestStopButton"):s("settings.voice.testAction")),W=P(()=>r.connection.kind==="tts"?[{key:"source",label:s("settings.voice.source"),value:E.value},{key:"model",label:s("settings.voice.model"),value:y.value},{key:"voice",label:s("settings.voice.voice"),value:N.value},{key:"api-key",label:s("settings.voice.apiKey"),value:p.value}]:[{key:"source",label:s("settings.voice.source"),value:E.value},{key:"model",label:s("settings.voice.model"),value:y.value},{key:"api-key",label:s("settings.voice.apiKey"),value:p.value},{key:"last-test",label:s("settings.voice.lastTest"),value:T.value}]),O=P(()=>{const q=r.testState?.status;return!!q&&q!=="idle"&&q!=="error"}),j=P(()=>r.testState?.status==="error"),Q=P(()=>r.testState?.message||"");function k(q){const x=q.indexOf("{");if(x<0)return null;try{const o=JSON.parse(q.slice(x)),l=o.error||o.message||o.detail;return typeof l=="string"&&l.trim()?l.trim():null}catch{return null}}function d(q){return q.replace(/^API Error\s+\d+\s*:\s*/i,"").replace(/^Error\s*:\s*/i,"").trim()}const g=P(()=>{const q=Q.value.trim();if(!q)return s("settings.voice.testFailedSummary");const x=k(q)||d(q);return!x||x.startsWith("{")||x.startsWith("[")?s("settings.voice.testFailedSummary"):x.length>180?`${x.slice(0,177).trim()}…`:x}),U=P(()=>{const q=Q.value.trim();return q.length>0&&q!==g.value}),I=P(()=>[{label:s("settings.voice.remove"),key:"remove",disabled:r.connection.isBuiltin}]);function Y(){if(m.value&&!r.connection.hasSecret){i("connect",r.connection);return}i("edit",r.connection)}function ae(q){q==="remove"&&!r.connection.isBuiltin&&i("remove",r.connection)}return(q,x)=>(S(),D("article",{class:He(["voice-api-card",{active:v.connection.active}]),"data-state":v.testState?.status||"idle"},[f("div",bs,[f("div",hs,[f("div",Ss,_(v.connection.kind==="tts"?"T":"S"),1),f("div",ws,[f("div",Us,[f("h5",{class:"provider-title",title:v.connection.label},_(v.connection.label),9,Cs),f("span",ks,_(n.value),1)]),f("p",Ps,_(v.connection.kind==="tts"?e(s)("settings.voice.ttsCardHint"):e(s)("settings.voice.sttCardHint")),1)])]),f("dl",Ts,[(S(!0),D(ye,null,xe(W.value,o=>(S(),X(ci,{key:o.key,label:o.label,value:o.value},null,8,["label","value"]))),128))]),f("div",As,[a(e(Ie),{class:"status-badge",size:"small",type:b.value,round:"",bordered:!1},{default:u(()=>[L(_(C.value),1)]),_:1},8,["type"]),f("div",{class:"card-actions","aria-label":`${v.connection.label} actions`},[v.connection.active?B("",!0):(S(),X(e(K),{key:0,size:"tiny",secondary:"",onClick:x[0]||(x[0]=o=>i("setActive",v.connection))},{default:u(()=>[L(_(e(s)("settings.voice.setActive")),1)]),_:1})),a(e(K),{size:"tiny",loading:v.testState?.status==="loading","data-testid":`voice-card-test-${v.connection.id}`,onClick:x[1]||(x[1]=o=>i("test",v.connection))},{default:u(()=>[L(_(F.value),1)]),_:1},8,["loading","data-testid"]),A.value?(S(),X(e(K),{key:1,size:"tiny",onClick:Y},{default:u(()=>[L(_(h.value),1)]),_:1})):B("",!0),m.value?(S(),X(e(Li),{key:2,trigger:"click",size:"small",options:I.value,onSelect:ae},{default:u(()=>[a(e(K),{size:"tiny","aria-label":e(s)("settings.voice.moreActionsFor",{provider:v.connection.label})},{default:u(()=>[L(_(e(s)("settings.voice.moreActions")),1)]),_:1},8,["aria-label"])]),_:1},8,["options"])):B("",!0)],8,$s)])]),O.value?(S(),D("div",{key:0,class:He(["feedback-row",v.testState?.status]),role:"status"},_(v.testState?.message||(v.testState?.status==="success"?e(s)("settings.voice.testSuccess"):"")),3)):B("",!0),j.value?(S(),D("div",Ms,[f("div",xs,_(g.value),1),U.value?(S(),X(e(K),{key:0,class:"details-toggle",text:"",size:"tiny",onClick:x[2]||(x[2]=o=>w.value=!w.value)},{default:u(()=>[L(_(w.value?e(s)("settings.voice.hideDetails"):e(s)("settings.voice.showDetails")),1)]),_:1})):B("",!0),w.value?(S(),D("pre",Fs,_(Q.value),1)):B("",!0)])):B("",!0)],10,ys))}})})),to=M((()=>{})),Le,so=M((()=>{Ds(),Ds(),to(),de(),Le=ce(vi,[["__scopeId","data-v-b8bd5b05"]])}));async function ao(v){return Fe("/api/voice/providers/probe",{method:"POST",signal:v.signal,body:JSON.stringify({kind:v.kind,provider:v.provider,compatibility:v.compatibility,baseUrl:v.baseUrl,apiKey:v.apiKey})})}var io=M((()=>{Ee()})),Os,Is,zs,Rs,Ns,Vs,Hs,Ls,Es,Ks,Bs,qs,Ys,Xs,Ws,js,pi,Gs=M((()=>{se(),ue(),oe(),io(),Xe(),Ye(),Os={class:"form-section"},Is={class:"form-section"},zs={class:"section-heading"},Rs={key:0,class:"connection-actions"},Ns={key:1,class:"inline-error","data-testid":"voice-provider-probe-error"},Vs={key:1},Hs={key:0,class:"form-section"},Ls={class:"section-heading"},Es={key:0,class:"helper-text"},Ks={key:1,class:"helper-text"},Bs={key:2,class:"helper-text"},qs={key:3,class:"helper-text"},Ys={key:1,class:"form-section"},Xs={class:"section-heading"},Ws={key:2,class:"form-section"},js={class:"modal-footer"},pi=ne({__name:"VoiceApiFormModal",props:{kind:{},show:{type:Boolean}},emits:["close","saved"],setup(v,{emit:t}){const r=v,i=t,{t:s}=re(),w=me(),A=$(!1),m=$(null),p=$("openai-compatible"),n=$({baseUrl:"",apiKey:"",model:"",voice:"",audioTranscode:"none"}),b=$(!1),C=$(!1),y=$(!1),N=$(!1),E=$(!1),T=$([]),h=$(""),F=$(""),W=$(""),O=$(!1),j=$("");let Q=null,k=0,d=!1;const g=P(()=>Ce.filter(V=>V.kind===r.kind&&!V.isBuiltin).map(V=>({label:V.labelKey?s(V.labelKey):V.label,value:V.id}))),U=P(()=>Ce.find(V=>V.id===m.value)||null),I=P(()=>U.value?.provider==="custom"),Y=P(()=>r.kind==="tts"&&U.value?.provider==="doubao"),ae=P(()=>p.value==="openai-compatible"),q=P(()=>{const V=T.value.map(R=>({label:R.capability==="preferred"?`${R.label} · ${s("settings.voice.modelRecommendedSuffix")}`:R.label,value:R.id})),z=n.value.model.trim();return z&&!V.some(R=>R.value===z)?[{label:z,value:z},...V]:V}),x=P(()=>[{label:s("settings.voice.sttAudioTranscodeNone"),value:"none"},{label:s("settings.voice.sttAudioTranscodeFfmpeg"),value:"ffmpeg"}]),o=P(()=>{const V=n.value.voice.trim(),z=Re.map(R=>({label:R.label,value:R.value}));return V&&!Re.some(R=>R.value===V)?[{label:V,value:V},...z]:z}),l=P(()=>Oe(n.value.baseUrl)),c=P(()=>!y.value&&!n.value.baseUrl.trim()||!U.value||!U.value.isSecretRequired?"":Ae(n.value.baseUrl)),J=P(()=>!U.value?.capabilities?.models||!C.value||n.value.model.trim()?"":s("settings.voice.modelRequiredConnectManual")),ie=P(()=>!N.value||!U.value?.isSecretRequired||n.value.apiKey.trim()?"":s("settings.voice.apiKeyRequired")),pe=P(()=>!!U.value&&ae.value&&!!n.value.baseUrl.trim()&&!!n.value.apiKey.trim()&&!Ae(n.value.baseUrl)),we=P(()=>!(!U.value||U.value.isSecretRequired&&(!n.value.apiKey.trim()||Ae(n.value.baseUrl))||U.value.capabilities?.models&&!n.value.model.trim()||Y.value&&!n.value.voice.trim())),Te=P(()=>U.value?p.value==="manual"?s("settings.voice.discoveryManualHint"):!n.value.baseUrl.trim()||!n.value.apiKey.trim()?s("settings.voice.discoveryCredentialHint"):s("settings.voice.discoveryNoAutoProbeHint"):"");ke(()=>r.show,V=>{V?De():$e()}),ke([()=>n.value.baseUrl,()=>n.value.apiKey,p],()=>{if(d){d=!1;return}$e(),T.value=[],h.value="",F.value="",W.value="",O.value=!1}),Hi(()=>$e());function De(){m.value=null,p.value="openai-compatible",n.value={baseUrl:"",apiKey:"",model:"",voice:"",audioTranscode:"none"},b.value=!1,C.value=!1,y.value=!1,N.value=!1,j.value="",T.value=[],h.value="",F.value="",W.value="",O.value=!1,$e()}function Oe(V){const z=V.trim();if(!z)return"";try{const R=new URL(z);return R.hash="",R.pathname=R.pathname.replace(/\/+$/,"")||"/",R.toString().replace(/\/$/,"")}catch{return z.replace(/\/+$/,"")}}function Ae(V){const z=V.trim();if(!z)return s("settings.voice.baseUrlRequired");try{const R=new URL(z);return R.protocol!=="https:"&&R.protocol!=="http:"?s("settings.voice.baseUrlHttpsRequired"):""}catch{return s("settings.voice.baseUrlInvalid")}}function $e(){Q&&(Q.abort(),Q=null),E.value=!1}function hi(V){m.value=V;const z=Ce.find(ve=>ve.id===V);p.value=z?.provider==="custom"||z?.provider==="openai"?"openai-compatible":"manual";const R=r.kind==="tts"&&z?.provider==="doubao";n.value={baseUrl:z?.baseUrl||"",model:R?qe:z?.defaultModel||"",voice:R?hl:"",apiKey:"",audioTranscode:"none"},b.value=!1,C.value=!1,y.value=!1,N.value=!1,j.value=""}function Si(V){n.value.model=V||"",b.value=!0,C.value=!0}function wi(V){n.value.voice=V||"",n.value.model=Na(V)||"seed-tts-2.0",C.value=!0,b.value=!1}function Ui(){h.value&&(n.value.model=h.value,C.value=!0,b.value=!1)}function Ci(){y.value=!0,Ae(n.value.baseUrl)||(n.value.baseUrl=l.value)}function ki(){return`${r.kind}|${U.value?.provider||""}|${p.value}|${Oe(n.value.baseUrl)}|${n.value.apiKey.trim()}`}async function Pi(){if(N.value=!0,!pe.value)return;const V=ki();j.value!==V&&(j.value=V,await We())}async function We(){if(!U.value||!ae.value)return;y.value=!0,N.value=!0;const V=Ae(n.value.baseUrl);if(V){F.value=V;return}if(!n.value.apiKey.trim()){F.value=s("settings.voice.apiKeyRequiredForDiscovery");return}$e();const z=++k,R=new AbortController;Q=R,E.value=!0,F.value="",W.value="",O.value=!1;try{const ve=await ao({kind:r.kind,provider:String(U.value.provider),compatibility:p.value,baseUrl:Oe(n.value.baseUrl),apiKey:n.value.apiKey.trim(),signal:R.signal});if(z!==k)return;ve.normalizedBaseUrl&&(d=!0,n.value.baseUrl=ve.normalizedBaseUrl),T.value=ve.models||[],h.value=ve.recommendedModel||"",F.value=ve.ok?"":ve.errorSummary||s("settings.voice.discoveryFailedManualFallback"),W.value=ve.errorDetails||"",ve.ok&&ve.recommendedModel&&!b.value&&!n.value.model.trim()&&(n.value.model=ve.recommendedModel,C.value=!0)}catch(ve){if(R.signal.aborted||z!==k)return;F.value=ve instanceof Error?ve.message:s("settings.voice.discoveryFailedManualFallback"),W.value=""}finally{z===k&&(E.value=!1,Q=null)}}async function Ti(){if(U.value){if(y.value=!0,N.value=!0,C.value=!0,!we.value){w.warning(J.value||c.value||ie.value||s("settings.voice.completeRequiredProviderFields"));return}A.value=!0;try{i("saved",{preset:U.value,settings:{baseUrl:Oe(n.value.baseUrl),model:n.value.model.trim(),...r.kind==="tts"&&n.value.voice.trim()?{voice:n.value.voice.trim()}:{},...r.kind==="stt"?{audioTranscode:n.value.audioTranscode}:{}},secrets:{apiKey:n.value.apiKey.trim()}})}finally{A.value=!1}}}return(V,z)=>(S(),X(e(ze),{show:v.show,preset:"card",title:v.kind==="tts"?e(s)("settings.voice.addTtsApi"):e(s)("settings.voice.addSttApi"),style:{width:"min(540px, calc(100vw - 32px))"},"onUpdate:show":z[8]||(z[8]=R=>i("close"))},{footer:u(()=>[f("div",js,[a(e(K),{onClick:z[7]||(z[7]=R=>i("close"))},{default:u(()=>[L(_(e(s)("common.cancel")),1)]),_:1}),a(e(K),{type:"primary",loading:A.value,disabled:!we.value,"data-testid":"voice-provider-save",onClick:Ti},{default:u(()=>[L(_(e(s)("common.add")),1)]),_:1},8,["loading","disabled"])])]),default:u(()=>[a(e(Me),{"label-placement":"top",class:"provider-form"},{default:u(()=>[f("section",Os,[a(e(G),{label:e(s)("models.selectProvider"),required:""},{default:u(()=>[a(e(ee),{value:m.value,"onUpdate:value":[z[0]||(z[0]=R=>m.value=R),hi],options:g.value,placeholder:e(s)("models.chooseProvider"),"data-testid":"voice-provider-select"},null,8,["value","options","placeholder"])]),_:1},8,["label"]),U.value&&I.value?(S(),X(e(G),{key:0,label:e(s)("settings.voice.apiCompatibility"),required:""},{default:u(()=>[a(e(ee),{value:p.value,"onUpdate:value":z[1]||(z[1]=R=>p.value=R),options:[{label:e(s)("settings.voice.openaiCompatible"),value:"openai-compatible"},{label:e(s)("settings.voice.manualCustomEndpoint"),value:"manual"}],"data-testid":"voice-provider-compatibility"},null,8,["value","options"])]),_:1},8,["label"])):B("",!0)]),U.value?(S(),D(ye,{key:0},[f("section",Is,[f("div",zs,[f("span",null,_(e(s)("settings.voice.connectionStep")),1),f("small",null,_(Te.value),1)]),a(e(G),{label:e(s)("models.baseUrl"),required:U.value.isSecretRequired,feedback:c.value},{default:u(()=>[a(e(Z),{value:n.value.baseUrl,"onUpdate:value":z[2]||(z[2]=R=>n.value.baseUrl=R),placeholder:e(s)("models.baseUrlPlaceholder"),disabled:!!U.value.baseUrl&&U.value.provider!=="custom","data-testid":"voice-provider-base-url",onBlur:Ci},null,8,["value","placeholder","disabled"])]),_:1},8,["label","required","feedback"]),a(e(G),{label:e(s)("models.apiKey"),required:U.value.isSecretRequired,feedback:ie.value},{default:u(()=>[a(e(Z),{value:n.value.apiKey,"onUpdate:value":z[3]||(z[3]=R=>n.value.apiKey=R),type:"password","show-password-on":"click",autocomplete:"off",placeholder:U.value.isSecretRequired?e(s)("settings.voice.apiKeyConnectPlaceholder"):e(s)("models.apiKeyPlaceholder"),"data-testid":"voice-provider-api-key",onBlur:Pi},null,8,["value","placeholder"])]),_:1},8,["label","required","feedback"]),ae.value?(S(),D("div",Rs,[a(e(K),{size:"small",loading:E.value,disabled:!pe.value,"data-testid":"voice-provider-probe",onClick:We},{default:u(()=>[L(_(e(s)("settings.voice.connectFetchModels")),1)]),_:1},8,["loading","disabled"])])):B("",!0),F.value?(S(),D("div",Ns,[f("span",null,_(F.value),1),W.value?(S(),D("button",{key:0,type:"button",class:"link-button",onClick:z[4]||(z[4]=R=>O.value=!O.value)},_(O.value?e(s)("settings.voice.hideDetails"):e(s)("settings.voice.showDetails")),1)):B("",!0),O.value&&W.value?(S(),D("pre",Vs,_(W.value),1)):B("",!0)])):B("",!0)]),U.value.capabilities?.models?(S(),D("section",Hs,[f("div",Ls,[f("span",null,_(e(s)("settings.voice.model")),1),f("small",null,_(e(s)("settings.voice.modelConnectManualHint")),1)]),a(e(G),{label:e(s)("models.defaultModel"),feedback:J.value},{default:u(()=>[a(e(ee),{value:n.value.model,options:q.value,tag:"",filterable:"",loading:E.value,placeholder:e(s)("settings.voice.modelConnectManualHint"),"data-testid":"voice-provider-model","onUpdate:value":Si},null,8,["value","options","loading","placeholder"])]),_:1},8,["label","feedback"]),E.value?(S(),D("div",Es,_(e(s)("settings.voice.fetchingModels")),1)):h.value&&b.value&&n.value.model!==h.value?(S(),D("div",Ks,[L(_(e(s)("settings.voice.recommendedModel",{model:h.value}))+" ",1),f("button",{type:"button",class:"link-button",onClick:Ui},_(e(s)("settings.voice.useRecommendedModel")),1)])):T.value.length?(S(),D("div",Bs,_(e(s)("settings.voice.modelsDiscovered",{count:T.value.length})),1)):F.value?(S(),D("div",qs,_(e(s)("settings.voice.discoveryFailedManualFallback")),1)):B("",!0)])):B("",!0),Y.value?(S(),D("section",Ys,[f("div",Xs,[f("span",null,_(e(s)("settings.voice.voice")),1),f("small",null,_(e(s)("settings.voice.doubaoVoiceHint")),1)]),a(e(G),{label:e(s)("settings.voice.voice")},{default:u(()=>[a(e(ee),{value:n.value.voice,"onUpdate:value":[z[5]||(z[5]=R=>n.value.voice=R),wi],options:o.value,tag:"",filterable:"","data-testid":"voice-provider-voice"},null,8,["value","options"])]),_:1},8,["label"])])):B("",!0),v.kind==="stt"?(S(),D("section",Ws,[a(e(G),{label:e(s)("settings.voice.sttAudioTranscode")},{default:u(()=>[a(e(ee),{value:n.value.audioTranscode,"onUpdate:value":z[6]||(z[6]=R=>n.value.audioTranscode=R),options:x.value,"data-testid":"voice-provider-audio-transcode"},null,8,["value","options"])]),_:1},8,["label"])])):B("",!0)],64)):B("",!0)]),_:1})]),_:1},8,["show","title"]))}})})),lo=M((()=>{})),mi,oo=M((()=>{Gs(),Gs(),lo(),de(),mi=ce(pi,[["__scopeId","data-v-9aec528e"]])})),Js,Qs,Zs,ea,ta,sa,gi,aa=M((()=>{se(),ue(),oe(),Xe(),Ye(),Va(),Be(),Js={style:{"font-size":"12px",opacity:"0.6"}},Qs={style:{"font-size":"12px",opacity:"0.6"}},Zs={key:0,style:{"font-size":"12px",opacity:"0.7"}},ea={style:{"font-size":"12px",opacity:"0.6"}},ta=10*1024*1024,sa="audio/mpeg,audio/mp3,audio/wav,.mp3,.wav",gi=ne({__name:"VoiceApiConfigurator",props:{connection:{},show:{type:Boolean}},emits:["close","save"],setup(v,{emit:t}){const r=v,i=t,{t:s}=re(),w=Ke(),A=$(!1),m=$({}),p=$(""),n=$(null),b=$(""),C=$(""),y=$("wav"),N=P(()=>r.connection?Ce.find(o=>o.kind===r.connection.kind&&o.provider===r.connection.provider&&(o.baseUrl===r.connection.baseUrl||!o.baseUrl)):null),E=P(()=>N.value?.capabilities||{});function T(o,l){m.value[o]=l??""}function h(o){const l=m.value[o];return typeof l=="string"?l:typeof l=="number"?String(l):""}function F(o,l=0){const c=m.value[o];if(typeof c=="number"&&Number.isFinite(c))return c;if(typeof c=="string"&&c.trim()){const J=Number(c);if(Number.isFinite(J))return J}return l}ke(()=>r.connection,o=>{o&&(m.value={...o.settings,model:o.model||String(o.settings.model||""),voice:o.voice||String(o.settings.voice||"")},o.provider==="edge"&&(m.value.rate=F("rate",1),m.value.pitch=F("pitch",0)),p.value="",o.provider==="mimo"&&(b.value=w.mimoVoiceCloneDataUri.value,C.value=w.mimoVoiceCloneFileName.value,y.value=w.mimoVoiceCloneFormat.value))},{immediate:!0});function W(o){const l=o.name.toLowerCase();return o.type.includes("mpeg")||o.type.includes("mp3")||l.endsWith(".mp3")?"mp3":"wav"}function O(o){return new Promise((l,c)=>{const J=new FileReader;J.onload=()=>l(String(J.result||"")),J.onerror=()=>c(J.error||new Error("Failed to read audio file")),J.readAsDataURL(o)})}async function j(o){const l=o.target,c=l.files?.[0];if(!c)return;const J=c.name.toLowerCase();if(!(c.type==="audio/wav"||c.type==="audio/x-wav"||c.type==="audio/mpeg"||c.type==="audio/mp3"||J.endsWith(".wav")||J.endsWith(".mp3"))||c.size>ta){l.value="";return}try{const ie=W(c),pe=await O(c),we=ie==="mp3"?"audio/mpeg":"audio/wav";b.value=pe.replace(/^data:[^;,]*;base64,/,`data:${we};base64,`),C.value=c.name,y.value=ie}finally{l.value=""}}function Q(){b.value="",C.value="",y.value="wav",n.value&&(n.value.value="")}async function k(){if(r.connection){A.value=!0;try{const o=p.value.trim(),l={...m.value};if(r.connection.provider==="mimo"){const c=h("model");l.voiceMode=c==="mimo-v2.5-tts-voiceclone"?"voiceClone":c==="mimo-v2.5-tts-voicedesign"?"voiceDesign":"preset",c==="mimo-v2.5-tts-voiceclone"&&(l.voiceCloneDataUri=b.value,l.voiceCloneFileName=C.value,l.voiceCloneFormat=y.value)}i("save",r.connection,{settings:l,...o?{secrets:{apiKey:o}}:{}})}finally{A.value=!1}}}const d=[{label:"晓晓 (zh-CN-XiaoxiaoNeural)",value:"zh-CN-XiaoxiaoNeural"},{label:"晓萱 (zh-CN-XiaoxuanNeural)",value:"zh-CN-XiaoxuanNeural"},{label:"云希 (zh-CN-YunxiNeural)",value:"zh-CN-YunxiNeural"},{label:"云健 (zh-CN-YunjianNeural)",value:"zh-CN-YunjianNeural"},{label:"云扬 (zh-CN-YunyangNeural)",value:"zh-CN-YunyangNeural"},{label:"Jenny (en-US-JennyNeural)",value:"en-US-JennyNeural"},{label:"Aria (en-US-AriaNeural)",value:"en-US-AriaNeural"},{label:"Guy (en-US-GuyNeural)",value:"en-US-GuyNeural"}],g=[{label:"Alloy",value:"alloy"},{label:"Echo",value:"echo"},{label:"Fable",value:"fable"},{label:"Nova",value:"nova"},{label:"Onyx",value:"onyx"},{label:"Shimmer",value:"shimmer"}],U=[{label:"冰糖 (中文·女)",value:"冰糖"},{label:"茉莉 (中文·女)",value:"茉莉"},{label:"苏打 (中文·男)",value:"苏打"},{label:"白桦 (中文·男)",value:"白桦"}],I=[{label:s("settings.voice.mimoModelPreset"),value:"mimo-v2.5-tts"},{label:s("settings.voice.mimoModelVoiceDesign"),value:"mimo-v2.5-tts-voicedesign"},{label:s("settings.voice.mimoModelVoiceClone"),value:"mimo-v2.5-tts-voiceclone"}],Y=[{label:"Seed TTS 2.0",value:qe}],ae=P(()=>{const o=h("voice").trim(),l=Re.map(c=>({label:c.label,value:c.value}));return o&&!Re.some(c=>c.value===o)?[{label:o,value:o},...l]:l}),q=P(()=>[{label:s("settings.voice.sttAudioTranscodeNone"),value:"none"},{label:s("settings.voice.sttAudioTranscodeFfmpeg"),value:"ffmpeg"}]);function x(o){T("voice",o),T("model",Na(o)||"seed-tts-2.0")}return(o,l)=>(S(),X(e(Ii),{show:v.show,width:400,"onUpdate:show":l[17]||(l[17]=c=>i("close"))},{default:u(()=>[a(e(Ni),{title:v.connection?.label,closable:""},{footer:u(()=>[a(e(Ue),{justify:"end"},{default:u(()=>[a(e(K),{onClick:l[16]||(l[16]=c=>i("close"))},{default:u(()=>[L(_(e(s)("common.cancel")),1)]),_:1}),a(e(K),{type:"primary",loading:A.value,onClick:k},{default:u(()=>[L(_(e(s)("common.save")),1)]),_:1},8,["loading"])]),_:1})]),default:u(()=>[v.connection?(S(),X(e(Me),{key:0,"label-placement":"top"},{default:u(()=>[v.connection.isBuiltin?B("",!0):(S(),X(e(G),{key:0,label:e(s)("settings.voice.apiKey")},{default:u(()=>[a(e(Z),{value:p.value,"onUpdate:value":l[0]||(l[0]=c=>p.value=c),type:"password","show-password-on":"click",autocomplete:"off",placeholder:v.connection.hasSecret?e(s)("settings.voice.keepStoredKeyPlaceholder"):e(s)("settings.voice.apiKeyPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])),E.value.models?(S(),X(e(G),{key:1,label:e(s)("settings.voice.model")},{default:u(()=>[v.connection.provider==="mimo"?(S(),X(e(ee),{key:0,value:h("model"),options:I,"onUpdate:value":l[1]||(l[1]=c=>T("model",c))},null,8,["value"])):v.connection.provider==="doubao"?(S(),X(e(ee),{key:1,value:h("model")||e("seed-tts-2.0"),options:Y,tag:"",filterable:"","onUpdate:value":l[2]||(l[2]=c=>T("model",c))},null,8,["value"])):(S(),X(e(Z),{key:2,value:h("model"),placeholder:e(s)("models.selectOrInput"),"onUpdate:value":l[3]||(l[3]=c=>T("model",c))},null,8,["value","placeholder"]))]),_:1},8,["label"])):B("",!0),E.value.voices?(S(),X(e(G),{key:2,label:e(s)("settings.voice.voice")},{default:u(()=>[v.connection.provider==="edge"?(S(),X(e(ee),{key:0,value:h("voice"),options:d,filterable:"","onUpdate:value":l[4]||(l[4]=c=>T("voice",c))},null,8,["value"])):v.connection.provider==="openai"?(S(),X(e(ee),{key:1,value:h("voice"),options:g,"onUpdate:value":l[5]||(l[5]=c=>T("voice",c))},null,8,["value"])):v.connection.provider==="mimo"&&h("model")==="mimo-v2.5-tts"?(S(),X(e(ee),{key:2,value:h("voice"),options:U,"onUpdate:value":l[6]||(l[6]=c=>T("voice",c))},null,8,["value"])):v.connection.provider==="doubao"?(S(),X(e(ee),{key:3,value:h("voice"),options:ae.value,tag:"",filterable:"","onUpdate:value":x},null,8,["value","options"])):(S(),X(e(Z),{key:4,value:h("voice"),"onUpdate:value":l[7]||(l[7]=c=>T("voice",c))},null,8,["value"]))]),_:1},8,["label"])):B("",!0),v.connection.provider==="edge"?(S(),D(ye,{key:3},[a(e(G),{label:e(s)("settings.voice.edgeRate")},{default:u(()=>[a(e(Ue),{vertical:"",style:{width:"100%"}},{default:u(()=>[a(e(je),{value:F("rate",1),min:.5,max:2,step:.05,"onUpdate:value":l[8]||(l[8]=c=>T("rate",Array.isArray(c)?c[0]:c))},null,8,["value"]),f("span",Js,_(F("rate",1).toFixed(2))+"x ("+_(e(Ha)(F("rate",1)))+")",1)]),_:1})]),_:1},8,["label"]),a(e(G),{label:e(s)("settings.voice.edgePitch")},{default:u(()=>[a(e(Ue),{vertical:"",style:{width:"100%"}},{default:u(()=>[a(e(je),{value:F("pitch",0),min:-20,max:20,step:1,"onUpdate:value":l[9]||(l[9]=c=>T("pitch",Array.isArray(c)?c[0]:c))},null,8,["value"]),f("span",Qs,_(F("pitch",0)>0?"+":"")+_(F("pitch",0))+" Hz ("+_(e(La)(F("pitch",0)))+")",1)]),_:1})]),_:1},8,["label"])],64)):B("",!0),v.connection.provider==="mimo"?(S(),D(ye,{key:4},[E.value.stylePrompt?(S(),X(e(G),{key:0,label:e(s)("settings.voice.mimoStylePrompt")},{default:u(()=>[a(e(Z),{value:h("stylePrompt"),type:"textarea",rows:2,"onUpdate:value":l[10]||(l[10]=c=>T("stylePrompt",c))},null,8,["value"])]),_:1},8,["label"])):B("",!0),h("model")==="mimo-v2.5-tts-voicedesign"?(S(),X(e(G),{key:1,label:e(s)("settings.voice.mimoVoiceDesignPrompt")},{default:u(()=>[a(e(Z),{value:h("voiceDesignDesc"),type:"textarea",rows:3,"onUpdate:value":l[11]||(l[11]=c=>T("voiceDesignDesc",c))},null,8,["value"])]),_:1},8,["label"])):B("",!0),h("model")==="mimo-v2.5-tts-voiceclone"?(S(),X(e(G),{key:2,label:e(s)("settings.voice.mimoCloneAudio")},{default:u(()=>[a(e(Ue),{vertical:"",style:{width:"100%"}},{default:u(()=>[f("input",{ref_key:"mimoCloneAudioInput",ref:n,type:"file",accept:sa,style:{display:"none"},onChange:j},null,544),a(e(Ue),{align:"center"},{default:u(()=>[a(e(K),{size:"small",onClick:l[12]||(l[12]=c=>n.value?.click())},{default:u(()=>[L(_(e(s)("settings.voice.mimoCloneAudioUpload")),1)]),_:1}),C.value?(S(),D("span",Zs,_(C.value)+" · "+_(y.value),1)):B("",!0),b.value?(S(),X(e(K),{key:1,size:"small",tertiary:"",onClick:Q},{default:u(()=>[L(_(e(s)("settings.voice.mimoCloneAudioClear")),1)]),_:1})):B("",!0)]),_:1}),f("span",ea,_(e(s)("settings.voice.mimoCloneAudioHint")),1)]),_:1})]),_:1},8,["label"])):B("",!0)],64)):B("",!0),v.connection.kind==="stt"&&v.connection.provider!=="browser"?(S(),D(ye,{key:5},[a(e(G),{label:e(s)("settings.voice.sttAudioTranscode")},{default:u(()=>[a(e(ee),{value:h("audioTranscode")||"none",options:q.value,"onUpdate:value":l[13]||(l[13]=c=>T("audioTranscode",c))},null,8,["value","options"])]),_:1},8,["label"]),a(e(G),{label:e(s)("settings.voice.sttLanguage")},{default:u(()=>[a(e(Z),{value:h("language"),"onUpdate:value":l[14]||(l[14]=c=>T("language",c))},null,8,["value"])]),_:1},8,["label"]),a(e(G),{label:e(s)("settings.voice.sttPrompt")},{default:u(()=>[a(e(Z),{value:h("prompt"),type:"textarea",rows:2,"onUpdate:value":l[15]||(l[15]=c=>T("prompt",c))},null,8,["value"])]),_:1},8,["label"])],64)):B("",!0)]),_:1})):B("",!0)]),_:1},8,["title"])]),_:1},8,["show"]))}})})),_i,no=M((()=>{aa(),aa(),_i=gi})),ia,la,oa,na,ra,ua,da,ca,va,pa,ma,ga,_a,fa,ya,ba,ha,Sa,wa,Ua,Ca,ka,fi,Pa=M((()=>{se(),ue(),oe(),yl(),fl(),ul(),Ql(),Be(),Va(),so(),oo(),no(),ia={class:"voice-settings"},la={class:"settings-section voice-provider-section","aria-labelledby":"tts-providers-title"},oa={class:"section-header"},na={class:"section-copy"},ra={id:"tts-providers-title",class:"section-title"},ua={class:"section-desc"},da={class:"section-controls"},ca={class:"active-select"},va={class:"active-label"},pa={class:"active-summary"},ma={class:"test-copy-row"},ga={class:"provider-list"},_a={class:"settings-section voice-provider-section","aria-labelledby":"stt-providers-title"},fa={class:"section-header"},ya={class:"section-copy"},ba={id:"stt-providers-title",class:"section-title"},ha={class:"section-desc"},Sa={class:"section-controls"},wa={class:"active-select"},Ua={class:"active-label"},Ca={class:"active-summary"},ka={class:"provider-list"},fi=ne({__name:"VoiceSettings",setup(v){const{t}=re(),r=me(),i=bl(),s=Jl(),w=Ke(),A=$(t("settings.voice.testTextDefault")),m=$(!1),p=$("tts"),n=$(!1),b=$(null),C=dl({maxDurationMs:3e4}),y=$({}),N=P(()=>s.activeTtsConnection.value?.label||t("settings.voice.noneSelected")),E=P(()=>s.activeSttConnection.value?.label||t("settings.voice.noneSelected"));Pe(async()=>{await s.refresh()});function T(o){p.value=o,m.value=!0}function h(o,l,c){y.value={...y.value,[o]:{status:l,message:c}}}function F(o){const l={...y.value};for(const[c,J]of Object.entries(l))c!==o&&J.status==="recording"&&(l[c]={status:"idle"});y.value=l}async function W(o){try{await s.saveConnection(p.value,o.preset.provider,{settings:o.settings,secrets:o.secrets}),m.value=!1,r.success(t("settings.voice.ttsSaved"))}catch(l){r.error(l instanceof Error?l.message:t("settings.voice.ttsSaveFailed"))}}function O(o){b.value=o,n.value=!0}async function j(o,l){try{await s.saveConnection(o.kind,o.provider,l),n.value=!1,r.success(t("settings.voice.ttsSaved"))}catch(c){r.error(c instanceof Error?c.message:t("settings.voice.ttsSaveFailed"))}}async function Q(o){try{await s.deleteSecret(o.kind,o.provider),h(o.id,"idle"),r.success(t("settings.voice.ttsCleared"))}catch(l){r.error(l instanceof Error?l.message:t("settings.voice.ttsClearFailed"))}}async function k(o){await s.setActiveConnection(o.kind,o.id)}async function d(o){await s.setActiveConnection("tts",o)}async function g(o){await s.setActiveConnection("stt",o)}function U(o){return{...o.settings,baseUrl:o.baseUrl||o.settings.baseUrl,model:o.model||o.settings.model,voice:o.voice||o.settings.voice}}function I(o){const l=U(o),c=o.provider==="edge"||o.provider==="openai"||o.provider==="custom"||o.provider==="doubao"?o.provider:void 0,J=Number(l.rate),ie=Number(l.pitch);return{baseUrl:String(l.baseUrl||""),model:typeof l.model=="string"?l.model:void 0,voice:typeof l.voice=="string"?l.voice:void 0,rate:o.provider==="edge"&&Number.isFinite(J)?Ha(J):typeof l.rate=="string"?l.rate:void 0,pitch:o.provider==="edge"&&Number.isFinite(ie)?La(ie):typeof l.pitch=="string"?l.pitch:void 0,stylePrompt:typeof l.stylePrompt=="string"?l.stylePrompt:void 0,provider:c}}function Y(o){const l=U(o);return{baseUrl:String(l.baseUrl||"https://api.xiaomimimo.com/v1"),model:String(l.model||"mimo-v2.5-tts"),voice:typeof l.voice=="string"?l.voice:void 0,authMode:l.authMode==="api-key"||l.authMode==="bearer"||l.authMode==="both"?l.authMode:void 0,voiceMode:l.voiceMode==="preset"||l.voiceMode==="voiceDesign"||l.voiceMode==="voiceClone"?l.voiceMode:void 0,voiceDesignDesc:typeof l.voiceDesignDesc=="string"?l.voiceDesignDesc:void 0,voiceCloneDataUri:typeof l.voiceCloneDataUri=="string"?l.voiceCloneDataUri:w.mimoVoiceCloneDataUri.value||void 0,voiceCloneFormat:l.voiceCloneFormat==="mp3"||l.voiceCloneFormat==="wav"?l.voiceCloneFormat:w.mimoVoiceCloneFormat.value,stylePrompt:typeof l.stylePrompt=="string"?l.stylePrompt:void 0}}async function ae(o){const l=A.value.trim();if(!l){h(o.id,"error",t("settings.voice.testTextRequired"));return}if(!o.isBuiltin&&!o.hasSecret){h(o.id,"error",t("settings.voice.keyMissingForTest"));return}h(o.id,"loading",t("settings.voice.testing"));try{o.provider==="mimo"?await i.mimoPlay(o.id,l,Y(o)):(o.provider==="edge"||o.provider==="openai"||o.provider==="custom"||o.provider==="doubao")&&await i.openaiPlay(o.id,l,I(o)),h(o.id,"success",t("settings.voice.testSuccess"))}catch(c){h(o.id,"error",t("settings.voice.testFailed",{error:c instanceof Error?c.message:String(c)}))}}async function q(o){if(o.provider==="browser"){h(o.id,"success",t("settings.voice.browserSttTestHint"));return}if(!o.hasSecret){h(o.id,"error",t("settings.voice.keyMissingForTest"));return}if(y.value[o.id]?.status==="recording"){h(o.id,"loading",t("settings.voice.transcribing"));try{const l=await C.stop();if(!l.size){h(o.id,"error",t("settings.voice.sttEmptyAudio"));return}const c=await vl({audio:l,provider:o.provider});h(o.id,"success",c.text||t("settings.voice.sttTestSuccess"))}catch(l){h(o.id,"error",t("settings.voice.sttTestFailed",{error:l instanceof Error?l.message:String(l)}))}return}try{F(o.id),await C.start(),h(o.id,"recording",t("settings.voice.sttRecordingHint"))}catch(l){console.error("[VoiceSettings] Failed to start STT card test recording:",l),h(o.id,"error",t("settings.voice.sttTestFailed",{error:l instanceof Error?l.message:String(l)}))}}async function x(o){if(o.kind==="tts"){await ae(o);return}await q(o)}return(o,l)=>(S(),D("div",ia,[f("section",la,[f("header",oa,[f("div",na,[f("h4",ra,_(e(t)("settings.voice.ttsProvidersTitle")),1),f("p",ua,_(e(t)("settings.voice.ttsProvidersDescription")),1)]),f("div",da,[f("div",ca,[f("span",va,_(e(t)("settings.voice.activeTtsApi")),1),a(e(ee),{value:e(s).activeTtsId.value,options:e(s).ttsConnectionOptions.value,size:"small","aria-label":e(t)("settings.voice.activeTtsApi"),"onUpdate:value":d},null,8,["value","options","aria-label"]),f("span",pa,_(N.value),1)]),a(e(K),{size:"small",secondary:"",onClick:l[0]||(l[0]=c=>T("tts"))},{default:u(()=>[L(_(e(t)("settings.voice.addTtsApi")),1)]),_:1})])]),f("div",ma,[a(e(Z),{value:A.value,"onUpdate:value":l[1]||(l[1]=c=>A.value=c),size:"small",placeholder:e(t)("settings.voice.testTextPlaceholder"),"data-testid":"tts-test-text"},null,8,["value","placeholder"])]),f("div",ga,[(S(!0),D(ye,null,xe(e(s).ttsConnections.value,c=>(S(),X(Le,{key:c.id,connection:c,"test-state":y.value[c.id],onSetActive:k,onTest:x,onEdit:O,onConnect:O,onRemove:Q},null,8,["connection","test-state"]))),128))])]),f("section",_a,[f("header",fa,[f("div",ya,[f("h4",ba,_(e(t)("settings.voice.sttProvidersTitle")),1),f("p",ha,_(e(t)("settings.voice.sttProvidersDescription")),1)]),f("div",Sa,[f("div",wa,[f("span",Ua,_(e(t)("settings.voice.activeSttApi")),1),a(e(ee),{value:e(s).activeSttId.value,options:e(s).sttConnectionOptions.value,size:"small","aria-label":e(t)("settings.voice.activeSttApi"),"onUpdate:value":g},null,8,["value","options","aria-label"]),f("span",Ca,_(E.value),1)]),a(e(K),{size:"small",secondary:"",onClick:l[2]||(l[2]=c=>T("stt"))},{default:u(()=>[L(_(e(t)("settings.voice.addSttApi")),1)]),_:1})])]),f("div",ka,[(S(!0),D(ye,null,xe(e(s).sttConnections.value,c=>(S(),X(Le,{key:c.id,connection:c,"test-state":y.value[c.id],onSetActive:k,onTest:x,onEdit:O,onConnect:O,onRemove:Q},null,8,["connection","test-state"]))),128))])]),a(mi,{show:m.value,kind:p.value,onClose:l[3]||(l[3]=c=>m.value=!1),onSaved:W},null,8,["show","kind"]),a(_i,{show:n.value,connection:b.value,onClose:l[4]||(l[4]=c=>n.value=!1),onSave:j},null,8,["show","connection"])]))}})})),ro=M((()=>{})),yi,uo=M((()=>{Pa(),Pa(),ro(),de(),yi=ce(fi,[["__scopeId","data-v-679e572f"]])})),Ta,Aa,$a,Ma,bi,xa=M((()=>{se(),Ai(),ue(),oe(),he(),Ul(),kl(),Tl(),$l(),xl(),Dl(),Il(),Rl(),Vl(),Ll(),Kl(),uo(),Ee(),Ra(),Ta={class:"settings-view"},Aa={class:"page-header"},$a={class:"header-title"},Ma={class:"settings-content"},bi=ne({__name:"SettingsView",setup(v){const t=be(),r=za(),{t:i}=re(),s=Mi(),w=xi(),A=Ei(),m=$("account"),p=P(()=>new Set(["account",...s?["users"]:[],"display","proxy","agent","memory","compression","session","privacy","models","voice"]));function n(y){const N=typeof y=="string"?y:"";return p.value.has(N)?N:"account"}function b(y){m.value=n(y),A.replace({query:{...w.query,tab:m.value==="account"?void 0:m.value}})}ke(()=>w.query.tab,y=>{m.value=n(y)},{immediate:!0});async function C(){(!r.activeProfileName||r.profiles.length===0)&&await r.fetchProfiles(),await t.fetchSettings()}return Pe(()=>{C()}),(y,N)=>(S(),D("div",Ta,[f("header",Aa,[f("h2",$a,_(e(i)("settings.title")),1)]),f("div",Ma,[a(e(Oa),{show:e(t).loading||e(t).saving,size:"large",description:e(i)("common.loading")},{default:u(()=>[a(e($i),{value:m.value,"onUpdate:value":[N[0]||(N[0]=E=>m.value=E),b],type:"line",animated:""},{default:u(()=>[a(e(_e),{name:"account",tab:e(i)("settings.tabs.account")},{default:u(()=>[a(ni)]),_:1},8,["tab"]),e(s)?(S(),X(e(_e),{key:0,name:"users",tab:e(i)("settings.tabs.users")},{default:u(()=>[a(ui)]),_:1},8,["tab"])):B("",!0),a(e(_e),{name:"display",tab:e(i)("settings.tabs.display")},{default:u(()=>[a(Ka)]),_:1},8,["tab"]),a(e(_e),{name:"proxy",tab:e(i)("settings.tabs.proxy")},{default:u(()=>[a(ja)]),_:1},8,["tab"]),a(e(_e),{name:"agent",tab:e(i)("settings.tabs.agent")},{default:u(()=>[a(qa),a(Xa)]),_:1},8,["tab"]),a(e(_e),{name:"memory",tab:e(i)("settings.tabs.memory")},{default:u(()=>[a(Ja)]),_:1},8,["tab"]),a(e(_e),{name:"compression",tab:e(i)("settings.tabs.compression")},{default:u(()=>[a(Za)]),_:1},8,["tab"]),a(e(_e),{name:"session",tab:e(i)("settings.tabs.session")},{default:u(()=>[a(ti)]),_:1},8,["tab"]),a(e(_e),{name:"privacy",tab:e(i)("settings.tabs.privacy")},{default:u(()=>[a(ai)]),_:1},8,["tab"]),a(e(_e),{name:"models",tab:e(i)("settings.tabs.models")},{default:u(()=>[a(li)]),_:1},8,["tab"]),a(e(_e),{name:"voice",tab:e(i)("settings.tabs.voice")},{default:u(()=>[a(yi)]),_:1},8,["tab"])]),_:1},8,["value"])]),_:1},8,["show","description"])])]))}})})),co=M((()=>{})),vo,po=M((()=>{xa(),xa(),co(),de(),vo=ce(bi,[["__scopeId","data-v-ed31db3f"]])}));po();export{vo as default};
1
+ import{$ as Me,$r as X,Ci as S,Cr as oe,E as ue,F as _e,Fr as Fe,Gi as $,Hr as se,L as le,Lr as Ai,Mi as ke,N as $i,Nr as Ee,Pi as u,Pr as Mi,Qi as e,Qr as f,Rr as xi,T as Fi,Ti as xe,Ui as Fa,Ut as K,V as je,Y as ge,Yr as ye,Z as G,Zr as P,Zt as Z,_t as Di,aa as M,ai as L,an as Oi,at as Ii,ca as zi,ci as ne,ct as me,di as fe,ea as He,ei as B,jt as ee,lt as ze,n as de,oi as a,p as Ri,q as Da,qr as Ge,ra as _,rt as Ni,t as ce,ti as D,tn as Ie,tt as Ue,w as Vi,wr as re,x as Je,xi as Pe,yi as Hi,yt as Li,z as Oa,zr as Ei}from"./index-RJQqJC6n.js";import{c as Ki,f as Bi,g as Qe,h as Ze,i as qi,l as Yi,m as Xi,n as Wi,o as ji,p as Gi,r as Ji,s as Qi,t as Zi,u as Ia}from"./auth-QlZVq-Mb.js";import{r as za,t as Ra}from"./profiles-BtECgqqD.js";import{n as be,t as he}from"./settings-Bzod_9RQ.js";import{n as et,r as tt,t as el}from"./completion-notification-BAmmQT0D.js";import{n as tl,t as sl}from"./models-C1Vzhn4J.js";import{n as al,r as il,t as ll}from"./ProfileAvatar-Du1XMoe0.js";import{n as Se,t as H}from"./SettingRow-CZ1bK2YG.js";import{n as ol,t as nl}from"./session-browser-prefs-DnMXaw-N.js";import{a as rl,c as ul,d as dl,i as cl,l as vl,n as pl,o as st,r as ml,s as gl,t as _l,u as fl}from"./useSttSettings-BAz3MWB_.js";import{a as Ke,c as Re,d as yl,i as Be,l as Na,n as Va,o as qe,p as bl,r as Ha,s as hl,t as La,u as Ye}from"./ttsHelpers-CUglUfpM.js";import{n as Sl,t as at}from"./chat-input-height-C9XyOGPU.js";var it,lt,ot,Ea,nt=M((()=>{se(),ue(),oe(),he(),Vi(),el(),Sl(),Se(),it={class:"settings-section"},lt={class:"notify-controls"},ot={class:"chat-input-height-controls"},Ea=ne({__name:"DisplaySettings",setup(v){const t=be(),r=me(),{t:i}=re(),{brightness:s,setBrightness:w}=Fi(),A=[{label:i("settings.display.themeLight"),value:"light"},{label:i("settings.display.themeDark"),value:"dark"},{label:i("settings.display.themeSystem"),value:"system"}],m=P(()=>at(t.display.chat_input_height));async function p(T){try{await t.saveSection("display",T),r.success(i("settings.saved"))}catch{r.error(i("settings.saveFailed"))}}function n(T){const h=T;w(h),p({skin:h})}function b(T){return p({chat_input_height:at(T)})}function C(){return p({chat_input_height:null})}function y(T){return T.reason==="insecure"?"settings.display.notifyOnCompleteInsecure":T.reason==="unsupported"?"settings.display.notifyOnCompleteUnsupported":"settings.display.notifyOnCompleteDenied"}async function N(T){if(T){const h=await et();if(!h.granted){r.error(i(y(h)));return}}await p({notify_on_complete:T}),T&&tt({title:"Hermes",body:i("settings.display.notifyOnCompleteTest"),icon:"/coding-agents/hermes.png",tag:`hermes-complete-test-${Date.now()}`})}async function E(){const T=await et();if(!T.granted){r.error(i(y(T)));return}if(!await tt({title:"Hermes",body:i("settings.display.notifyOnCompleteTest"),icon:"/coding-agents/hermes.png",tag:`hermes-complete-test-${Date.now()}`})){r.error(i("settings.display.notifyOnCompleteTestFailed"));return}r.success(i("settings.display.notifyOnCompleteTestSent"))}return(T,h)=>(S(),D("section",it,[a(H,{label:e(i)("settings.display.theme"),hint:e(i)("settings.display.themeHint")},{default:u(()=>[a(e(ee),{value:e(s),options:A,size:"small","consistent-menu-width":!1,class:"input-sm","onUpdate:value":n},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.display.streaming"),hint:e(i)("settings.display.streamingHint")},{default:u(()=>[a(e(le),{value:e(t).display.streaming,"onUpdate:value":h[0]||(h[0]=F=>p({streaming:F}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.display.compact"),hint:e(i)("settings.display.compactHint")},{default:u(()=>[a(e(le),{value:e(t).display.compact,"onUpdate:value":h[1]||(h[1]=F=>p({compact:F}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.display.showReasoning"),hint:e(i)("settings.display.showReasoningHint")},{default:u(()=>[a(e(le),{value:e(t).display.show_reasoning,"onUpdate:value":h[2]||(h[2]=F=>p({show_reasoning:F}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.display.showCost"),hint:e(i)("settings.display.showCostHint")},{default:u(()=>[a(e(le),{value:e(t).display.show_cost,"onUpdate:value":h[3]||(h[3]=F=>p({show_cost:F}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.display.inlineDiffs"),hint:e(i)("settings.display.inlineDiffsHint")},{default:u(()=>[a(e(le),{value:e(t).display.inline_diffs,"onUpdate:value":h[4]||(h[4]=F=>p({inline_diffs:F}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.display.bellOnComplete"),hint:e(i)("settings.display.bellOnCompleteHint")},{default:u(()=>[a(e(le),{value:e(t).display.bell_on_complete,"onUpdate:value":h[5]||(h[5]=F=>p({bell_on_complete:F}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.display.notifyOnComplete"),hint:`${e(i)("settings.display.notifyOnCompleteHint")} ${e(i)("settings.display.notifyOnCompleteMacHint")}`},{default:u(()=>[f("div",lt,[a(e(le),{value:e(t).display.notify_on_complete,"onUpdate:value":N},null,8,["value"]),a(e(K),{size:"tiny",secondary:"",onClick:E},{default:u(()=>[L(_(e(i)("settings.display.notifyOnCompleteTestButton")),1)]),_:1})])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.display.chatInputHeight"),hint:e(i)("settings.display.chatInputHeightHint")},{default:u(()=>[f("div",ot,[a(e(ge),{value:m.value,min:e(48),max:e(400),step:8,"show-button":!1,size:"small",class:"input-sm","onUpdate:value":b},{suffix:u(()=>[...h[6]||(h[6]=[L("px",-1)])]),_:1},8,["value","min","max"]),a(e(K),{size:"tiny",secondary:"",onClick:C},{default:u(()=>[L(_(e(i)("common.reset")),1)]),_:1})])]),_:1},8,["label","hint"])]))}})})),wl=M((()=>{})),Ka,Ul=M((()=>{nt(),nt(),wl(),de(),Ka=ce(Ea,[["__scopeId","data-v-46e61b5e"]])})),rt,Ba,ut=M((()=>{se(),ue(),oe(),he(),Se(),rt={class:"settings-section"},Ba=ne({__name:"AgentSettings",setup(v){const t=be(),r=me(),{t:i}=re(),s={};function w(m){t.updateLocal("agent",m),t.saveSection("agent",m).then(()=>{r.success(i("settings.saved"))}).catch(()=>{r.error(i("settings.saveFailed"))})}function A(m,p){t.updateLocal("agent",{[m]:p}),s[m]&&clearTimeout(s[m]),s[m]=setTimeout(async()=>{try{await t.saveSection("agent",{[m]:p}),r.success(i("settings.saved"))}catch{r.error(i("settings.saveFailed"))}},300)}return(m,p)=>(S(),D("section",rt,[a(H,{label:e(i)("settings.agent.maxTurns"),hint:e(i)("settings.agent.maxTurnsHint")},{default:u(()=>[a(e(ge),{value:e(t).agent.max_turns,min:1,max:200,step:5,size:"small",class:"input-sm","onUpdate:value":p[0]||(p[0]=n=>n!=null&&A("max_turns",n))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.agent.gatewayTimeout"),hint:e(i)("settings.agent.gatewayTimeoutHint")},{default:u(()=>[a(e(ge),{value:e(t).agent.gateway_timeout,min:60,max:7200,step:60,size:"small",class:"input-sm","onUpdate:value":p[1]||(p[1]=n=>n!=null&&A("gateway_timeout",n))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.agent.restartDrainTimeout"),hint:e(i)("settings.agent.restartDrainTimeoutHint")},{default:u(()=>[a(e(ge),{value:e(t).agent.restart_drain_timeout,min:10,max:300,step:10,size:"small",class:"input-sm","onUpdate:value":p[2]||(p[2]=n=>n!=null&&A("restart_drain_timeout",n))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.agent.toolEnforcement"),hint:e(i)("settings.agent.toolEnforcementHint")},{default:u(()=>[a(e(ee),{value:e(t).agent.tool_use_enforcement||"auto",options:[{label:e(i)("settings.agent.auto"),value:"auto"},{label:e(i)("settings.agent.always"),value:"always"},{label:e(i)("settings.agent.never"),value:"never"}],size:"small",class:"input-sm","onUpdate:value":p[3]||(p[3]=n=>w({tool_use_enforcement:n}))},null,8,["value","options"])]),_:1},8,["label","hint"])]))}})})),Cl=M((()=>{})),qa,kl=M((()=>{ut(),ut(),Cl(),de(),qa=ce(Ba,[["__scopeId","data-v-d06d83a7"]])})),dt,ct,vt,Ya,pt=M((()=>{se(),ue(),oe(),he(),Ra(),Se(),dt={class:"settings-section gateway-auto-start-settings"},ct={class:"section-title"},vt={class:"section-hint"},Ya=ne({__name:"GatewayAutoStartSettings",setup(v){const t=be(),r=za(),i=me(),{t:s}=re(),w=P(()=>t.gatewayAutoStart.enabled!==!1),A=P(()=>Array.isArray(t.gatewayAutoStart.include)?"include":"all"),m=P(()=>t.gatewayAutoStart.management==="unified"),p=P(()=>t.gatewayAutoStart.include||[]),n=P(()=>t.gatewayAutoStart.exclude||[]),b=P(()=>(r.activeProfileName||r.activeProfile?.name||"default")==="default"),C=P(()=>r.profiles.map(O=>({label:O.name,value:O.name}))),y=P(()=>[{label:s("settings.gatewayAutoStart.modeAll"),value:"all"},{label:s("settings.gatewayAutoStart.modeInclude"),value:"include"}]);function N(O){const j=new Set,Q=[];for(const k of O){const d=String(k||"").trim();!d||j.has(d)||(j.add(d),Q.push(d))}return Q}async function E(O){try{t.updateLocal("gatewayAutoStart",O),await t.saveSection("gatewayAutoStart",O,{restart:!1}),await t.fetchSettings(),i.success(s("settings.saved"))}catch{i.error(s("settings.saveFailed"))}}function T(O){E(O==="include"?{include:t.gatewayAutoStart.include||[],exclude:null}:{include:null})}function h(O){E({management:O?"unified":"per_profile"})}function F(O){E({include:N(O),exclude:null})}function W(O){const j=N(O);E({exclude:j.length>0?j:null})}return(O,j)=>(S(),D("section",dt,[f("h3",ct,_(e(s)("settings.gatewayAutoStart.title")),1),f("p",vt,_(e(s)("settings.gatewayAutoStart.description")),1),a(H,{label:e(s)("settings.gatewayAutoStart.enabled"),hint:e(s)("settings.gatewayAutoStart.enabledHint")},{default:u(()=>[a(e(le),{value:w.value,"onUpdate:value":j[0]||(j[0]=Q=>E({enabled:Q}))},null,8,["value"])]),_:1},8,["label","hint"]),b.value?(S(),X(H,{key:0,label:e(s)("settings.gatewayAutoStart.management"),hint:e(s)("settings.gatewayAutoStart.managementHint")},{default:u(()=>[a(e(le),{value:m.value,"onUpdate:value":h},null,8,["value"])]),_:1},8,["label","hint"])):B("",!0),a(H,{label:e(s)("settings.gatewayAutoStart.mode"),hint:e(s)("settings.gatewayAutoStart.modeHint")},{default:u(()=>[a(e(ee),{value:A.value,options:y.value,size:"small",class:"input-md","onUpdate:value":T},null,8,["value","options"])]),_:1},8,["label","hint"]),A.value==="include"?(S(),X(H,{key:1,label:e(s)("settings.gatewayAutoStart.include"),hint:e(s)("settings.gatewayAutoStart.includeHint")},{default:u(()=>[a(e(ee),{multiple:"",filterable:"",value:p.value,options:C.value,size:"small",class:"input-md",placeholder:e(s)("settings.gatewayAutoStart.profileListPlaceholder"),"onUpdate:value":F},null,8,["value","options","placeholder"])]),_:1},8,["label","hint"])):B("",!0),A.value==="all"?(S(),X(H,{key:2,label:e(s)("settings.gatewayAutoStart.exclude"),hint:e(s)("settings.gatewayAutoStart.excludeHint")},{default:u(()=>[a(e(ee),{multiple:"",filterable:"",value:n.value,options:C.value,size:"small",class:"input-md",placeholder:e(s)("settings.gatewayAutoStart.profileListPlaceholder"),"onUpdate:value":W},null,8,["value","options","placeholder"])]),_:1},8,["label","hint"])):B("",!0)]))}})})),Pl=M((()=>{})),Xa,Tl=M((()=>{pt(),pt(),Pl(),de(),Xa=ce(Ya,[["__scopeId","data-v-a9b52cd2"]])})),mt,gt,_t,ft,Wa,yt=M((()=>{se(),ue(),oe(),he(),Se(),mt={class:"settings-section proxy-settings"},gt={class:"section-title"},_t={class:"section-hint"},ft={class:"settings-actions"},Wa=ne({__name:"ProxySettings",setup(v){const t=be(),r=me(),{t:i}=re(),s=["HTTPS_PROXY","HTTP_PROXY","ALL_PROXY","NO_PROXY"],w=Fa({HTTPS_PROXY:"",HTTP_PROXY:"",ALL_PROXY:"",NO_PROXY:""});ke(()=>t.proxy,m=>{for(const p of s)w[p]=String(m?.[p]||"")},{immediate:!0,deep:!0});async function A(){try{await t.saveSection("proxy",{...w}),await t.fetchSettings(),r.success(i("settings.saved"))}catch{r.error(i("settings.saveFailed"))}}return(m,p)=>(S(),D("section",mt,[f("h3",gt,_(e(i)("settings.proxy.title")),1),f("p",_t,_(e(i)("settings.proxy.description")),1),a(H,{label:e(i)("settings.proxy.httpsProxy"),hint:e(i)("settings.proxy.httpsProxyHint")},{default:u(()=>[a(e(Z),{value:w.HTTPS_PROXY,"onUpdate:value":p[0]||(p[0]=n=>w.HTTPS_PROXY=n),clearable:"",size:"small",class:"input-lg",placeholder:"http://127.0.0.1:7890"},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.proxy.httpProxy"),hint:e(i)("settings.proxy.httpProxyHint")},{default:u(()=>[a(e(Z),{value:w.HTTP_PROXY,"onUpdate:value":p[1]||(p[1]=n=>w.HTTP_PROXY=n),clearable:"",size:"small",class:"input-lg",placeholder:"http://127.0.0.1:7890"},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.proxy.allProxy"),hint:e(i)("settings.proxy.allProxyHint")},{default:u(()=>[a(e(Z),{value:w.ALL_PROXY,"onUpdate:value":p[2]||(p[2]=n=>w.ALL_PROXY=n),clearable:"",size:"small",class:"input-lg",placeholder:"socks5://127.0.0.1:7890"},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.proxy.noProxy"),hint:e(i)("settings.proxy.noProxyHint")},{default:u(()=>[a(e(Z),{value:w.NO_PROXY,"onUpdate:value":p[3]||(p[3]=n=>w.NO_PROXY=n),clearable:"",size:"small",class:"input-lg",placeholder:"localhost,127.0.0.1,.local"},null,8,["value"])]),_:1},8,["label","hint"]),f("div",ft,[a(e(K),{type:"primary",loading:e(t).saving,onClick:A},{default:u(()=>[L(_(e(i)("settings.proxy.save")),1)]),_:1},8,["loading"])])]))}})})),Al=M((()=>{})),ja,$l=M((()=>{yt(),yt(),Al(),de(),ja=ce(Wa,[["__scopeId","data-v-a377191a"]])})),bt,Ga,ht=M((()=>{se(),ue(),oe(),he(),Se(),bt={class:"settings-section"},Ga=ne({__name:"MemorySettings",setup(v){const t=be(),r=me(),{t:i}=re(),s={};function w(m){t.updateLocal("memory",m),t.saveSection("memory",m).then(()=>{r.success(i("settings.saved"))}).catch(()=>{r.error(i("settings.saveFailed"))})}function A(m,p){t.updateLocal("memory",{[m]:p}),s[m]&&clearTimeout(s[m]),s[m]=setTimeout(async()=>{try{await t.saveSection("memory",{[m]:p}),r.success(i("settings.saved"))}catch{r.error(i("settings.saveFailed"))}},300)}return(m,p)=>(S(),D("section",bt,[a(H,{label:e(i)("settings.memory.enabled"),hint:e(i)("settings.memory.enabledHint")},{default:u(()=>[a(e(le),{value:e(t).memory.memory_enabled,"onUpdate:value":p[0]||(p[0]=n=>w({memory_enabled:n}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.memory.userProfile"),hint:e(i)("settings.memory.userProfileHint")},{default:u(()=>[a(e(le),{value:e(t).memory.user_profile_enabled,"onUpdate:value":p[1]||(p[1]=n=>w({user_profile_enabled:n}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.memory.charLimit"),hint:e(i)("settings.memory.charLimitHint")},{default:u(()=>[a(e(ge),{value:e(t).memory.memory_char_limit,min:100,max:1e4,step:100,size:"small",class:"input-sm","onUpdate:value":p[2]||(p[2]=n=>n!=null&&A("memory_char_limit",n))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.memory.userCharLimit"),hint:e(i)("settings.memory.userCharLimitHint")},{default:u(()=>[a(e(ge),{value:e(t).memory.user_char_limit,min:100,max:1e4,step:100,size:"small",class:"input-sm","onUpdate:value":p[3]||(p[3]=n=>n!=null&&A("user_char_limit",n))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),Ml=M((()=>{})),Ja,xl=M((()=>{ht(),ht(),Ml(),de(),Ja=ce(Ga,[["__scopeId","data-v-b2529605"]])})),St,Qa,wt=M((()=>{se(),ue(),oe(),he(),Se(),St={class:"settings-section"},Qa=ne({__name:"CompressionSettings",setup(v){const t=be(),r=me(),{t:i}=re(),s={enabled:!0,threshold:.5,target_ratio:.2,protect_last_n:20,protect_first_n:3},w={};function A(p){t.updateLocal("compression",p),t.saveSection("compression",p).then(()=>{r.success(i("settings.saved"))}).catch(()=>{r.error(i("settings.saveFailed"))})}function m(p,n){t.updateLocal("compression",{[p]:n}),w[p]&&clearTimeout(w[p]),w[p]=setTimeout(async()=>{try{await t.saveSection("compression",{[p]:n}),r.success(i("settings.saved"))}catch{r.error(i("settings.saveFailed"))}},300)}return(p,n)=>(S(),D("section",St,[a(H,{label:e(i)("settings.compression.enabled"),hint:e(i)("settings.compression.enabledHint")},{default:u(()=>[a(e(le),{value:e(t).compression.enabled??s.enabled,size:"small","onUpdate:value":n[0]||(n[0]=b=>A({enabled:b}))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.compression.threshold"),hint:e(i)("settings.compression.thresholdHint")},{default:u(()=>[a(e(ge),{value:e(t).compression.threshold??s.threshold,min:.1,max:.95,step:.05,size:"small",class:"input-sm","onUpdate:value":n[1]||(n[1]=b=>b!=null&&m("threshold",b))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.compression.targetRatio"),hint:e(i)("settings.compression.targetRatioHint")},{default:u(()=>[a(e(ge),{value:e(t).compression.target_ratio??s.target_ratio,min:.05,max:.8,step:.05,size:"small",class:"input-sm","onUpdate:value":n[2]||(n[2]=b=>b!=null&&m("target_ratio",b))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.compression.protectLastN"),hint:e(i)("settings.compression.protectLastNHint")},{default:u(()=>[a(e(ge),{value:e(t).compression.protect_last_n??s.protect_last_n,min:0,max:200,step:1,size:"small",class:"input-sm","onUpdate:value":n[3]||(n[3]=b=>b!=null&&m("protect_last_n",b))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(i)("settings.compression.protectFirstN"),hint:e(i)("settings.compression.protectFirstNHint")},{default:u(()=>[a(e(ge),{value:e(t).compression.protect_first_n??s.protect_first_n,min:0,max:50,step:1,size:"small",class:"input-sm","onUpdate:value":n[4]||(n[4]=b=>b!=null&&m("protect_first_n",b))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),Fl=M((()=>{})),Za,Dl=M((()=>{wt(),wt(),Fl(),de(),Za=ce(Qa,[["__scopeId","data-v-b584a6a0"]])})),Ut,ei,Ct=M((()=>{se(),ue(),oe(),he(),nl(),Se(),Ut={class:"settings-section"},ei=ne({__name:"SessionSettings",setup(v){const t=be(),r=ol(),i=me(),{t:s}=re(),w={};function A(b){t.updateLocal("session_reset",b),t.saveSection("session_reset",b).then(()=>{i.success(s("settings.saved"))}).catch(()=>{i.error(s("settings.saveFailed"))})}function m(b,C){t.updateLocal("session_reset",{[b]:C}),w[b]&&clearTimeout(w[b]),w[b]=setTimeout(async()=>{try{await t.saveSection("session_reset",{[b]:C}),i.success(s("settings.saved"))}catch{i.error(s("settings.saveFailed"))}},300)}async function p(b){try{await t.saveSection("approvals",{mode:b?"manual":"off"}),i.success(s("settings.saved"))}catch{i.error(s("settings.saveFailed"))}}async function n(b,C){try{t.updateLocal(b,{write_approval:C}),await t.saveSection(b,{write_approval:C}),i.success(s("settings.saved"))}catch{i.error(s("settings.saveFailed"))}}return(b,C)=>(S(),D("section",Ut,[a(H,{label:e(s)("settings.session.requireAuth"),hint:e(s)("settings.session.requireAuthHint")},{default:u(()=>[a(e(le),{value:e(t).approvals.mode==="manual","onUpdate:value":p},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(s)("settings.session.memoryWriteApproval"),hint:e(s)("settings.session.memoryWriteApprovalHint")},{default:u(()=>[a(e(le),{value:e(t).memory.write_approval===!0,"onUpdate:value":C[0]||(C[0]=y=>n("memory",y))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(s)("settings.session.skillsWriteApproval"),hint:e(s)("settings.session.skillsWriteApprovalHint")},{default:u(()=>[a(e(le),{value:e(t).skills.write_approval===!0,"onUpdate:value":C[1]||(C[1]=y=>n("skills",y))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(s)("settings.session.mode"),hint:e(s)("settings.session.modeHint")},{default:u(()=>[a(e(ee),{value:e(t).sessionReset.mode||"both",options:[{label:e(s)("settings.session.modeBoth"),value:"both"},{label:e(s)("settings.session.modeIdle"),value:"idle"},{label:e(s)("settings.session.modeDaily"),value:"daily"},{label:e(s)("settings.session.modeNone"),value:"none"}],size:"small",class:"input-md","onUpdate:value":C[2]||(C[2]=y=>A({mode:y}))},null,8,["value","options"])]),_:1},8,["label","hint"]),a(H,{label:e(s)("settings.session.idleMinutes"),hint:e(s)("settings.session.idleMinutesHint")},{default:u(()=>[a(e(ge),{value:e(t).sessionReset.idle_minutes,min:10,max:10080,step:30,size:"small",class:"input-sm","onUpdate:value":C[3]||(C[3]=y=>y!=null&&m("idle_minutes",y))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(s)("settings.session.atHour"),hint:e(s)("settings.session.atHourHint")},{default:u(()=>[a(e(ge),{value:e(t).sessionReset.at_hour,min:0,max:23,step:1,size:"small",class:"input-sm","onUpdate:value":C[4]||(C[4]=y=>y!=null&&m("at_hour",y))},null,8,["value"])]),_:1},8,["label","hint"]),a(H,{label:e(s)("settings.session.liveMonitorHumanOnly"),hint:e(s)("settings.session.liveMonitorHumanOnlyHint")},{default:u(()=>[a(e(le),{value:e(r).humanOnly,"onUpdate:value":C[5]||(C[5]=y=>e(r).setHumanOnly(y))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),Ol=M((()=>{})),ti,Il=M((()=>{Ct(),Ct(),Ol(),de(),ti=ce(ei,[["__scopeId","data-v-5027aa2c"]])})),kt,si,Pt=M((()=>{se(),ue(),oe(),he(),Se(),kt={class:"settings-section"},si=ne({__name:"PrivacySettings",setup(v){const t=be(),r=me(),{t:i}=re();async function s(w){try{await t.saveSection("privacy",w),r.success(i("settings.saved"))}catch{r.error(i("settings.saveFailed"))}}return(w,A)=>(S(),D("section",kt,[a(H,{label:e(i)("settings.privacy.redactPii"),hint:e(i)("settings.privacy.redactPiiHint")},{default:u(()=>[a(e(le),{value:e(t).privacy.redact_pii,"onUpdate:value":A[0]||(A[0]=m=>s({redact_pii:m}))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),zl=M((()=>{})),ai,Rl=M((()=>{Pt(),Pt(),zl(),de(),ai=ce(si,[["__scopeId","data-v-43145f27"]])})),Tt,At,$t,Mt,xt,Ft,Dt,Ot,ii,It=M((()=>{se(),ue(),sl(),Ri(),oe(),Tt={class:"settings-section"},At={key:0,class:"empty-hint"},$t={class:"provider-header"},Mt={class:"provider-name"},xt={key:0,class:"provider-fields"},Ft={class:"field-row"},Dt={key:1,class:"provider-fields"},Ot={class:"field-row"},ii=ne({__name:"ModelSettings",setup(v){const{t}=re(),r=tl(),i=me(),s=$(null),w=$({});Pe(()=>{r.providers.length===0&&r.fetchProviders()});const A=b=>!r.providers.find(C=>C.provider===b)?.builtin&&b.startsWith("custom:");function m(b){if(!(b in w.value)){const C=r.providers.find(y=>y.provider===b);w.value[b]=C?.api_key||""}return w.value[b]}async function p(b){const C=m(b);if(!C.trim()){i.warning(t("settings.models.apiKeyPlaceholder"));return}s.value=b;try{await Je(b,{api_key:C.trim()}),i.success(t("settings.models.saved")),await r.fetchProviders()}catch(y){i.error(y.message||t("settings.models.saveFailed"))}finally{s.value=null}}async function n(b){const C=m(b);s.value=b;try{await Je(b,{api_key:C.trim()}),i.success(t("settings.models.saved")),await r.fetchProviders()}catch(y){i.error(y.message||t("settings.models.saveFailed"))}finally{s.value=null}}return(b,C)=>(S(),D("section",Tt,[a(e(Oa),{show:e(r).loading},{default:u(()=>[e(r).providers.length===0?(S(),D("div",At,[a(e(Oi),{description:e(t)("settings.models.noProviders")},null,8,["description"])])):B("",!0),(S(!0),D(ye,null,xe(e(r).providers,y=>(S(),D("div",{key:y.provider,class:"provider-section"},[f("div",$t,[f("h4",Mt,_(y.label),1),f("span",{class:He(["type-badge",A(y.provider)?"custom":"builtin"])},_(A(y.provider)?e(t)("models.customType"):e(t)("models.builtIn")),3)]),A(y.provider)?(S(),D("div",Dt,[f("div",Ot,[a(e(Z),{value:m(y.provider),type:"password","show-password-on":"click",placeholder:e(t)("settings.models.apiKeyPlaceholder"),autocomplete:"off","onUpdate:value":N=>w.value[y.provider]=N},null,8,["value","placeholder","onUpdate:value"]),a(e(K),{type:"primary",size:"small",loading:s.value===y.provider,onClick:N=>n(y.provider)},{default:u(()=>[L(_(e(t)("settings.models.save")),1)]),_:1},8,["loading","onClick"])])])):(S(),D("div",xt,[f("div",Ft,[a(e(Z),{value:m(y.provider),type:"password","show-password-on":"click",placeholder:e(t)("settings.models.apiKeyPlaceholder"),autocomplete:"off","onUpdate:value":N=>w.value[y.provider]=N},null,8,["value","placeholder","onUpdate:value"]),a(e(K),{type:"primary",size:"small",loading:s.value===y.provider,onClick:N=>p(y.provider)},{default:u(()=>[L(_(e(t)("settings.models.save")),1)]),_:1},8,["loading","onClick"])])]))]))),128))]),_:1},8,["show"])]))}})})),Nl=M((()=>{})),li,Vl=M((()=>{It(),It(),Nl(),de(),li=ce(ii,[["__scopeId","data-v-8cd750e1"]])})),zt,Rt,Nt,Vt,Ht,Lt,Et,Kt,Bt,qt,Yt,Xt,Wt,jt,Gt,Jt,Qt,Zt,es,ts,ss,as,is,ls,os,oi,ns=M((()=>{se(),ue(),oe(),Ia(),al(),zt=zi(il()),Rt={class:"account-settings"},Nt={class:"section-desc"},Vt={class:"avatar-section"},Ht={class:"section-title"},Lt={class:"avatar-row"},Et={class:"avatar-display"},Kt={class:"avatar-actions"},Bt={class:"avatar-hint"},qt={class:"action-buttons"},Yt={class:"configured-section"},Xt={class:"action-row"},Wt={class:"action-label"},jt={class:"action-buttons"},Gt={class:"locked-ips-section"},Jt={class:"section-title"},Qt={class:"action-row",style:{"margin-bottom":"12px"}},Zt={class:"action-label"},es={class:"action-buttons"},ts={key:0,class:"locked-list"},ss={class:"locked-info"},as={class:"locked-ip"},is={class:"locked-badge"},ls={class:"locked-ttl"},os={key:1,class:"empty-hint"},oi=ne({__name:"AccountSettings",setup(v){const{t}=re(),r=me(),i=$(null),s=$(!1),w=$(null),A=$(null),m=$(!1);function p(x,o){return new Promise((l,c)=>{const J=new FileReader;J.onload=()=>{const ie=new Image;ie.onload=()=>{const pe=document.createElement("canvas");pe.width=ie.width,pe.height=ie.height,pe.getContext("2d").drawImage(ie,0,0);const we=Te=>{const De=pe.toDataURL("image/jpeg",Te);De.length<=o||Te<=.3?l(De):we(Te-.1)};we(.8)},ie.onerror=c,ie.src=J.result},J.onerror=c,J.readAsDataURL(x)})}async function n(x){const o=x.target,l=o.files?.[0];if(l){if(!["image/png","image/jpeg","image/webp"].includes(l.type)){r.error(t("settings.userAvatar.invalidType")),o.value="";return}if(l.size>1024*1024){r.error(t("settings.userAvatar.tooLarge")),o.value="";return}m.value=!0;try{let c;l.size>500*1024?c=await p(l,500*1024):c=await new Promise((J,ie)=>{const pe=new FileReader;pe.onload=()=>J(pe.result),pe.onerror=ie,pe.readAsDataURL(l)}),await Qe({type:"image",dataUrl:c}),w.value={type:"image",dataUrl:c},r.success(t("settings.userAvatar.saveSuccess"))}catch(c){r.error(c.message||t("settings.userAvatar.saveFailed"))}finally{m.value=!1,o.value=""}}}async function b(){m.value=!0;try{const x=typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():Math.random().toString(36).slice(2),o=`${i.value||"default"}-${Date.now()}-${x}`,l=(0,zt.default)(o),c="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(l)));await Qe({type:"image",dataUrl:c,seed:o}),w.value={type:"image",dataUrl:c,seed:o},r.success(t("settings.userAvatar.saveSuccess"))}catch(x){r.error(x.message||t("settings.userAvatar.saveFailed"))}finally{m.value=!1}}async function C(){m.value=!0;try{await Bi(),w.value={type:"default",seed:i.value||"default"},r.success(t("settings.userAvatar.resetSuccess"))}catch(x){r.error(x.message||t("settings.userAvatar.resetFailed"))}finally{m.value=!1}}const y=$(!1),N=$(""),E=$(""),T=$(""),h=$(!1),F=$(""),W=$("");Pe(async()=>{try{i.value=(await ji()).username}catch{}try{w.value=await Yi()||{type:"default",seed:i.value||"default"}}catch{}});async function O(){if(E.value!==T.value){r.error(t("login.passwordMismatch"));return}if(E.value.length<6){r.error(t("login.passwordTooShort"));return}s.value=!0;try{await Zi(N.value,E.value),y.value=!1,N.value="",E.value="",T.value="",r.success(t("login.passwordChanged"))}catch(x){r.error(x.message||t("common.saveFailed"))}finally{s.value=!1}}async function j(){if(W.value.trim().length<2){r.error(t("login.usernameTooShort"));return}s.value=!0;try{await Wi(F.value,W.value.trim()),i.value=W.value.trim(),h.value=!1,F.value="",W.value="",r.success(t("login.usernameChanged"))}catch(x){r.error(x.message||t("common.saveFailed"))}finally{s.value=!1}}function Q(){N.value="",E.value="",T.value="",y.value=!0}function k(){F.value="",W.value="",h.value=!0}const d=$([]),g=$(!1);async function U(){g.value=!0;try{d.value=await Qi()}catch{}finally{g.value=!1}}async function I(x){try{await Xi(x),r.success(t("settings.lockedIps.unlocked")),await U()}catch(o){r.error(o.message||t("common.saveFailed"))}}async function Y(){try{const x=await Gi();r.success(t("settings.lockedIps.allUnlocked",{count:x})),await U()}catch(x){r.error(x.message||t("common.saveFailed"))}}function ae(x){const o=Math.max(0,Math.round((x-Date.now())/6e4));return o>0?`${o} min`:t("common.expired")}function q(x){return t(`settings.lockedIps.type.${x}`)}return Pe(()=>{U()}),(x,o)=>(S(),D("div",Rt,[f("p",Nt,_(e(t)("login.setupDescription")),1),f("div",Vt,[f("h3",Ht,_(e(t)("settings.userAvatar.title")),1),f("div",Lt,[f("div",Et,[a(ll,{name:i.value||"default",avatar:w.value?.type==="image"&&w.value.dataUrl?{type:"image",dataUrl:w.value.dataUrl}:null,size:80},null,8,["name","avatar"])]),f("div",Kt,[f("p",Bt,_(e(t)("settings.userAvatar.hint")),1),f("div",qt,[a(e(K),{onClick:o[0]||(o[0]=l=>A.value?.click())},{default:u(()=>[L(_(e(t)("settings.userAvatar.upload")),1)]),_:1}),a(e(K),{onClick:b,loading:m.value},{default:u(()=>[L(_(e(t)("settings.userAvatar.random")),1)]),_:1},8,["loading"]),a(e(K),{onClick:C,loading:m.value},{default:u(()=>[L(_(e(t)("settings.userAvatar.reset")),1)]),_:1},8,["loading"])]),f("input",{ref_key:"avatarFileInput",ref:A,type:"file",accept:".png,.jpg,.jpeg,.webp",style:{display:"none"},onChange:n},null,544)])])]),f("div",Yt,[f("div",Xt,[f("span",Wt,_(e(t)("login.passwordLoginConfigured",{username:i.value})),1),f("div",jt,[a(e(K),{onClick:Q},{default:u(()=>[L(_(e(t)("login.changePassword")),1)]),_:1}),a(e(K),{onClick:k},{default:u(()=>[L(_(e(t)("login.changeUsername")),1)]),_:1})])])]),f("div",Gt,[f("h3",Jt,_(e(t)("settings.lockedIps.title")),1),f("div",Qt,[f("span",Zt,_(e(t)("settings.lockedIps.count",{count:d.value.length})),1),f("div",es,[a(e(K),{size:"small",loading:g.value,onClick:U},{default:u(()=>[L(_(e(t)("common.retry")),1)]),_:1},8,["loading"]),d.value.length>0?(S(),X(e(Da),{key:0,onPositiveClick:Y},{trigger:u(()=>[a(e(K),{size:"small",type:"warning"},{default:u(()=>[L(_(e(t)("settings.lockedIps.unlockAll")),1)]),_:1})]),default:u(()=>[L(" "+_(e(t)("settings.lockedIps.unlockAllConfirm")),1)]),_:1})):B("",!0)])]),d.value.length>0?(S(),D("div",ts,[(S(!0),D(ye,null,xe(d.value,l=>(S(),D("div",{key:l.ip+l.type,class:"locked-item"},[f("div",ss,[f("span",as,_(l.ip),1),f("span",is,_(q(l.type)),1),f("span",ls,_(ae(l.lockedUntil)),1)]),a(e(K),{size:"tiny",type:"error",ghost:"",onClick:c=>I(l.ip)},{default:u(()=>[L(_(e(t)("settings.lockedIps.unlock")),1)]),_:1},8,["onClick"])]))),128))])):(S(),D("p",os,_(e(t)("settings.lockedIps.empty")),1))]),a(e(ze),{show:y.value,"onUpdate:show":o[5]||(o[5]=l=>y.value=l),preset:"dialog",title:e(t)("login.changePassword")},{action:u(()=>[a(e(K),{onClick:o[4]||(o[4]=l=>y.value=!1)},{default:u(()=>[L(_(e(t)("common.cancel")),1)]),_:1}),a(e(K),{type:"primary",loading:s.value,onClick:O},{default:u(()=>[L(_(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:u(()=>[a(e(Me),{"label-placement":"top"},{default:u(()=>[a(e(G),{label:e(t)("login.currentPassword")},{default:u(()=>[a(e(Z),{value:N.value,"onUpdate:value":o[1]||(o[1]=l=>N.value=l),type:"password","show-password-on":"click",placeholder:e(t)("login.currentPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(G),{label:e(t)("login.newPassword")},{default:u(()=>[a(e(Z),{value:E.value,"onUpdate:value":o[2]||(o[2]=l=>E.value=l),type:"password","show-password-on":"click",placeholder:e(t)("login.newPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(G),{label:e(t)("login.confirmPassword")},{default:u(()=>[a(e(Z),{value:T.value,"onUpdate:value":o[3]||(o[3]=l=>T.value=l),type:"password","show-password-on":"click",placeholder:e(t)("login.confirmPassword"),onKeyup:Ge(O,["enter"])},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title"]),a(e(ze),{show:h.value,"onUpdate:show":o[9]||(o[9]=l=>h.value=l),preset:"dialog",title:e(t)("login.changeUsername")},{action:u(()=>[a(e(K),{onClick:o[8]||(o[8]=l=>h.value=!1)},{default:u(()=>[L(_(e(t)("common.cancel")),1)]),_:1}),a(e(K),{type:"primary",loading:s.value,onClick:j},{default:u(()=>[L(_(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:u(()=>[a(e(Me),{"label-placement":"top"},{default:u(()=>[a(e(G),{label:e(t)("login.currentPassword")},{default:u(()=>[a(e(Z),{value:F.value,"onUpdate:value":o[6]||(o[6]=l=>F.value=l),type:"password","show-password-on":"click",placeholder:e(t)("login.currentPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(G),{label:e(t)("login.newUsername")},{default:u(()=>[a(e(Z),{value:W.value,"onUpdate:value":o[7]||(o[7]=l=>W.value=l),placeholder:e(t)("login.usernamePlaceholder"),onKeyup:Ge(j,["enter"])},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title"])]))}})})),Hl=M((()=>{})),ni,Ll=M((()=>{ns(),ns(),Hl(),de(),ni=ce(oi,[["__scopeId","data-v-61e79d43"]])})),rs,us,ds,cs,ri,vs=M((()=>{se(),ue(),oe(),Ia(),rs={class:"user-management"},us={class:"toolbar"},ds={class:"section-title"},cs={class:"section-desc"},ri=ne({__name:"UserManagementSettings",setup(v){const{t}=re(),r=me(),i=$(!1),s=$(!1),w=$([]),A=$([]),m=$(!1),p=$(null),n=Fa({username:"",password:"",role:"admin",status:"active",profiles:[]}),b=P(()=>[{label:t("users.roles.admin"),value:"admin"},{label:t("users.roles.superAdmin"),value:"super_admin"}]),C=P(()=>[{label:t("users.status.active"),value:"active"},{label:t("users.status.disabled"),value:"disabled"}]),y=P(()=>A.value.map(k=>({label:k,value:k})));function N(){p.value=null,n.username="",n.password="",n.role="admin",n.status="active",n.profiles=[]}async function E(){i.value=!0;try{const k=await Ki();w.value=k.users,A.value=k.profiles}catch(k){r.error(k.message||t("users.loadFailed"))}finally{i.value=!1}}function T(){N(),m.value=!0}function h(k){p.value=k,n.username=k.username,n.password="",n.role=k.role,n.status=k.status,n.profiles=[...k.profiles],m.value=!0}async function F(){if(n.username.trim().length<2){r.error(t("login.usernameTooShort"));return}if(!p.value&&n.password.length<6){r.error(t("login.passwordTooShort"));return}if(n.password&&n.password.length<6){r.error(t("login.passwordTooShort"));return}s.value=!0;try{const k={username:n.username.trim(),password:n.password||void 0,role:n.role,status:n.status,profiles:n.role==="super_admin"?[]:n.profiles,defaultProfile:n.profiles[0]||null},d=p.value?await Ze(p.value.id,k):await Ji({...k,password:n.password});w.value=d.users,A.value=d.profiles,m.value=!1,N(),r.success(t("common.saved"))}catch(k){r.error(k.message||t("common.saveFailed"))}finally{s.value=!1}}async function W(k,d){s.value=!0;try{const g=await Ze(k.id,{status:d});w.value=g.users,A.value=g.profiles,r.success(t("common.saved"))}catch(g){r.error(g.message||t("common.saveFailed"))}finally{s.value=!1}}async function O(k){s.value=!0;try{const d=await qi(k.id);w.value=d.users,A.value=d.profiles,r.success(t("common.saved"))}catch(d){r.error(d.message||t("common.deleteFailed"))}finally{s.value=!1}}function j(k){return k?new Date(k).toLocaleString():"-"}const Q=P(()=>[{title:t("users.username"),key:"username",minWidth:140},{title:t("users.role"),key:"role",width:130,render:k=>fe(Ie,{size:"small",type:k.role==="super_admin"?"warning":"default"},{default:()=>k.role==="super_admin"?t("users.roles.superAdmin"):t("users.roles.admin")})},{title:t("users.statusLabel"),key:"status",width:110,render:k=>fe(Ie,{size:"small",type:k.status==="active"?"success":"error"},{default:()=>k.status==="active"?t("users.status.active"):t("users.status.disabled")})},{title:t("users.profiles"),key:"profiles",minWidth:200,render:k=>k.role==="super_admin"?fe("span",{class:"muted"},t("users.allProfiles")):fe(Ue,{size:4},{default:()=>k.profiles.length?k.profiles.map(d=>fe(Ie,{size:"small",bordered:!1},{default:()=>d})):fe("span",{class:"muted"},t("users.noProfiles"))})},{title:t("users.lastLogin"),key:"last_login_at",minWidth:170,render:k=>j(k.last_login_at)},{title:t("common.edit"),key:"actions",width:280,render:k=>fe(Ue,{size:8},{default:()=>[fe(K,{size:"small",onClick:()=>h(k)},{default:()=>t("common.edit")}),fe(K,{size:"small",type:k.status==="active"?"warning":"primary",ghost:!0,loading:s.value,onClick:()=>W(k,k.status==="active"?"disabled":"active")},{default:()=>k.status==="active"?t("users.disable"):t("users.enable")}),fe(Da,{onPositiveClick:()=>O(k)},{trigger:()=>fe(K,{size:"small",type:"error",ghost:!0,loading:s.value},{default:()=>t("common.delete")}),default:()=>t("users.deleteConfirm")})]})}]);return Pe(E),(k,d)=>(S(),D("div",rs,[f("div",us,[f("div",null,[f("h3",ds,_(e(t)("users.title")),1),f("p",cs,_(e(t)("users.description")),1)]),a(e(K),{type:"primary",onClick:T},{default:u(()=>[L(_(e(t)("users.create")),1)]),_:1})]),a(e(Di),{columns:Q.value,data:w.value,loading:i.value,bordered:!1,"single-line":!1,size:"small"},null,8,["columns","data","loading"]),a(e(ze),{show:m.value,"onUpdate:show":d[6]||(d[6]=g=>m.value=g),preset:"dialog",title:p.value?e(t)("users.edit"):e(t)("users.create")},{action:u(()=>[a(e(K),{onClick:d[5]||(d[5]=g=>m.value=!1)},{default:u(()=>[L(_(e(t)("common.cancel")),1)]),_:1}),a(e(K),{type:"primary",loading:s.value,onClick:F},{default:u(()=>[L(_(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:u(()=>[a(e(Me),{"label-placement":"top"},{default:u(()=>[a(e(G),{label:e(t)("users.username")},{default:u(()=>[a(e(Z),{value:n.username,"onUpdate:value":d[0]||(d[0]=g=>n.username=g),placeholder:e(t)("login.usernamePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(G),{label:p.value?e(t)("users.newPasswordOptional"):e(t)("login.newPassword")},{default:u(()=>[a(e(Z),{value:n.password,"onUpdate:value":d[1]||(d[1]=g=>n.password=g),type:"password","show-password-on":"click",placeholder:e(t)("login.passwordPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(G),{label:e(t)("users.role")},{default:u(()=>[a(e(ee),{value:n.role,"onUpdate:value":d[2]||(d[2]=g=>n.role=g),options:b.value},null,8,["value","options"])]),_:1},8,["label"]),a(e(G),{label:e(t)("users.statusLabel")},{default:u(()=>[a(e(ee),{value:n.status,"onUpdate:value":d[3]||(d[3]=g=>n.status=g),options:C.value},null,8,["value","options"])]),_:1},8,["label"]),n.role!=="super_admin"?(S(),X(e(G),{key:0,label:e(t)("users.profiles")},{default:u(()=>[a(e(ee),{value:n.profiles,"onUpdate:value":d[4]||(d[4]=g=>n.profiles=g),multiple:"",filterable:"",options:y.value,placeholder:e(t)("users.profilesPlaceholder")},null,8,["value","options","placeholder"])]),_:1},8,["label"])):B("",!0)]),_:1})]),_:1},8,["show","title"])]))}})})),El=M((()=>{})),ui,Kl=M((()=>{vs(),vs(),El(),de(),ui=ce(ri,[["__scopeId","data-v-bcd3f33a"]])}));function Bl(v){return v==="edge"||v==="openai"||v==="custom"||v==="mimo"||v==="doubao"?v:null}function ql(v){if(v&&typeof v=="object"){const t=v,r=Bl(t.activeProvider);if(Array.isArray(t.providers))return{providers:t.providers,activeProvider:r};if(Array.isArray(t.settings))return{providers:t.settings,activeProvider:r}}return{providers:[],activeProvider:null}}async function Yl(){return ql(await Fe("/api/hermes/tts/settings"))}async function Xl(v,t){const r=await Fe(`/api/hermes/tts/settings/${v}`,{method:"PUT",body:JSON.stringify(t)});return typeof r=="object"&&r!==null&&"setting"in r?r.setting:r}async function Wl(v){return(await Fe("/api/hermes/tts/settings/active",{method:"PUT",body:JSON.stringify({provider:v})})).activeProvider}async function jl(v){return Fe(`/api/hermes/tts/settings/${v}`,{method:"DELETE"})}var Gl=M((()=>{Ee()})),Ce,Xe=M((()=>{Ye(),Ce=[{id:"tts-edge",kind:"tts",provider:"edge",label:"Edge TTS",labelKey:"settings.voice.presetEdgeTtsLabel",description:"Free high-quality cloud voices from Microsoft Edge.",descriptionKey:"settings.voice.presetEdgeTtsDescription",isBuiltin:!0,isSecretRequired:!1,capabilities:{voices:!0,rate:!0,pitch:!0}},{id:"tts-openai",kind:"tts",provider:"openai",label:"OpenAI TTS",labelKey:"settings.voice.presetOpenaiTtsLabel",baseUrl:"https://api.openai.com/v1/audio/speech",defaultModel:"tts-1",isSecretRequired:!0,capabilities:{models:!0,voices:!0}},{id:"tts-mimo",kind:"tts",provider:"mimo",label:"MiMo TTS",labelKey:"settings.voice.presetMimoTtsLabel",baseUrl:"https://api.xiaomimimo.com/v1",defaultModel:"mimo-v2.5-tts",isSecretRequired:!0,capabilities:{models:!0,voices:!0,stylePrompt:!0,voiceDesign:!0,voiceClone:!0}},{id:"tts-doubao",kind:"tts",provider:"doubao",label:"Volcengine Doubao TTS",labelKey:"settings.voice.presetDoubaoTtsLabel",baseUrl:"https://openspeech.bytedance.com/api/v3/tts/unidirectional",defaultModel:qe,isSecretRequired:!0,capabilities:{models:!0,voices:!0,stylePrompt:!0}},{id:"tts-custom",kind:"tts",provider:"custom",label:"Custom TTS",labelKey:"settings.voice.presetCustomTtsLabel",isSecretRequired:!0,capabilities:{models:!0}},{id:"stt-browser",kind:"stt",provider:"browser",label:"Browser STT",labelKey:"settings.voice.presetBrowserSttLabel",description:"Native browser speech recognition API.",descriptionKey:"settings.voice.presetBrowserSttDescription",isBuiltin:!0,isSecretRequired:!1,capabilities:{}},{id:"stt-openai",kind:"stt",provider:"openai",label:"OpenAI Whisper",labelKey:"settings.voice.presetOpenaiWhisperLabel",baseUrl:"https://api.openai.com/v1",defaultModel:"whisper-1",isSecretRequired:!0,capabilities:{models:!0}},{id:"stt-groq",kind:"stt",provider:"custom",label:"Groq STT",labelKey:"settings.voice.presetGroqSttLabel",baseUrl:"https://api.groq.com/openai/v1",defaultModel:"whisper-large-v3",isSecretRequired:!0,capabilities:{models:!0}},{id:"stt-doubao",kind:"stt",provider:"doubao",label:"Volcengine Doubao STT",labelKey:"settings.voice.presetDoubaoSttLabel",baseUrl:"https://openspeech.bytedance.com/api/v3/auc/bigmodel",defaultModel:"volc.seedasr.auc",isSecretRequired:!0,capabilities:{models:!0}},{id:"stt-custom",kind:"stt",provider:"custom",label:"Custom STT",labelKey:"settings.voice.presetCustomSttLabel",isSecretRequired:!0,capabilities:{models:!0}}]}));function ps(v){return v==="openai"||v==="custom"||v==="doubao"}function ms(v){return v==="edge"||v==="openai"||v==="custom"||v==="mimo"||v==="doubao"}function Ne(v){return v==="browser"||v==="openai"||v==="custom"||v==="doubao"}function Ve(v){return v==="edge"||v==="openai"||v==="custom"||v==="mimo"||v==="doubao"}function te(v,t){const r=v[t];return typeof r=="string"?r:""}function Jl(){const{t:v}=re(),t=$([]),r=$(!1),i=Ke(),s=pl(),w=$(i.provider.value==="webspeech"?"edge":i.provider.value),A=$(s.provider.value),m=P(()=>`tts-${w.value}`),p=P(()=>`stt-${A.value}`),n=P(()=>t.value.filter(d=>d.kind==="tts")),b=P(()=>t.value.filter(d=>d.kind==="stt")),C=P(()=>n.value.find(d=>d.id===m.value)||n.value[0]||null),y=P(()=>b.value.find(d=>d.id===p.value)||b.value[0]||null),N=P(()=>n.value.map(d=>({label:d.label,value:d.id}))),E=P(()=>b.value.map(d=>({label:d.label,value:d.id})));function T(d){if(!Ve(d.provider))return;i.setProvider(d.provider);const g=d.settings;if(d.provider==="edge"){i.setEdgeVoice(te(g,"voice")||d.voice||i.edgeVoice.value);const U=Number(g.rate),I=Number(g.pitch);Number.isFinite(U)&&i.setEdgeRate(U),Number.isFinite(I)&&i.setEdgePitchHz(I);return}if(d.provider==="openai"){i.setOpenaiBaseUrl(d.baseUrl||te(g,"baseUrl")),i.setOpenaiModel(d.model||te(g,"model")||i.openaiModel.value),i.setOpenaiVoice(d.voice||te(g,"voice")||i.openaiVoice.value);return}if(d.provider==="custom"){i.setCustomUrl(d.baseUrl||te(g,"baseUrl"));return}if(d.provider==="mimo"){i.setMimoBaseUrl(d.baseUrl||te(g,"baseUrl")||i.mimoBaseUrl.value),i.setMimoModel(d.model||te(g,"model")||i.mimoModel.value),i.setMimoVoice(d.voice||te(g,"voice")||i.mimoVoice.value),i.setMimoStylePrompt(te(g,"stylePrompt")),i.setMimoVoiceDesignDesc(te(g,"voiceDesignDesc"));const U=te(g,"voiceCloneFormat");(U==="mp3"||U==="wav")&&i.setMimoVoiceCloneFormat(U);return}d.provider==="doubao"&&(i.setDoubaoBaseUrl(d.baseUrl||te(g,"baseUrl")||i.doubaoBaseUrl.value),i.setDoubaoModel(d.model||te(g,"model")||i.doubaoModel.value),i.setDoubaoVoice(d.voice||te(g,"voice")||i.doubaoVoice.value),i.setDoubaoStylePrompt(te(g,"stylePrompt")))}function h(d){if(!Ne(d.provider))return;s.setProvider(d.provider);const g=d.settings;if(d.provider==="openai"){s.setOpenaiModel(d.model||te(g,"model")||s.openaiModel.value),s.setOpenaiLanguage(te(g,"language")),s.setOpenaiPrompt(te(g,"prompt"));return}d.provider==="custom"&&(s.setCustomBaseUrl(d.baseUrl||te(g,"baseUrl")),s.setCustomModel(d.model||te(g,"model")||s.customModel.value),s.setCustomLanguage(te(g,"language")),s.setCustomPrompt(te(g,"prompt")))}function F(d,g,U){const I=Ce.find(Y=>Y.kind==="tts"&&Y.provider===d&&(Y.baseUrl===g.baseUrl||!Y.baseUrl));return{id:`tts-${d}`,kind:"tts",provider:d,label:I?.labelKey?v(I.labelKey):I?.label||`${d} TTS`,baseUrl:g.baseUrl,model:g.model,voice:g.voice,settings:g,hasSecret:U,active:m.value===`tts-${d}`}}function W(d,g,U){const I=Ce.find(Y=>Y.kind==="stt"&&Y.provider===d&&(Y.baseUrl===g.baseUrl||!Y.baseUrl));return{id:`stt-${d}`,kind:"stt",provider:d,label:I?.labelKey?v(I.labelKey):I?.label||`${d} STT`,baseUrl:g.baseUrl,model:g.model,settings:g,hasSecret:U,active:p.value===`stt-${d}`}}async function O(){r.value=!0;try{await s.loadServerSttSettings(!0);const[d,g]=await Promise.all([Yl(),cl()]);d.activeProvider&&Ve(d.activeProvider)&&(w.value=d.activeProvider,i.setProvider(d.activeProvider)),g.activeProvider&&Ne(g.activeProvider)&&(A.value=g.activeProvider,s.setProvider(g.activeProvider));const U=[{id:"tts-edge",kind:"tts",provider:"edge",label:v("settings.voice.presetEdgeTtsLabel"),isBuiltin:!0,hasSecret:!1,active:m.value==="tts-edge",settings:{voice:i.edgeVoice.value,rate:i.edgeRate.value,pitch:i.edgePitchHz.value},voice:i.edgeVoice.value},{id:"stt-browser",kind:"stt",provider:"browser",label:v("settings.voice.presetBrowserSttLabel"),isBuiltin:!0,hasSecret:!1,active:p.value==="stt-browser",settings:{}}];for(const I of d.providers){const Y=F(I.provider,I.settings,I.secrets?.apiKey==="[stored]"),ae=U.find(q=>q.id===Y.id);ae?Object.assign(ae,Y,{isBuiltin:ae.isBuiltin}):U.push(Y)}for(const I of g.providers)U.push(W(I.provider,I.settings,I.secrets?.apiKey==="[stored]"));t.value=U.map(I=>({...I,active:I.kind==="tts"?I.id===m.value:I.id===p.value}))}finally{r.value=!1}}async function j(d,g){const U=t.value.find(I=>I.kind===d&&I.id===g);U&&(d==="tts"?Ve(U.provider)&&(w.value=await Wl(U.provider),T(U)):Ne(U.provider)&&(A.value=await st(U.provider),h(U)),t.value=t.value.map(I=>({...I,active:I.kind===d?I.id===g:I.active})))}async function Q(d,g,U){if(d==="tts"){if(!ms(g))throw new Error(`Unsupported TTS provider: ${String(g)}`);const Y={...U.settings||{}},ae=Object.prototype.hasOwnProperty.call(Y,"voiceCloneDataUri"),q=Object.prototype.hasOwnProperty.call(Y,"voiceCloneFileName"),x=Y.voiceCloneDataUri,o=Y.voiceCloneFileName;delete Y.voiceCloneDataUri,delete Y.voiceCloneFileName;const l=await Xl(g,{settings:Y,secrets:U.secrets,activeProvider:g});return await O(),await j("tts",`tts-${g}`),g==="mimo"&&(ae&&typeof x=="string"&&i.setMimoVoiceCloneDataUri(x),q&&typeof o=="string"&&i.setMimoVoiceCloneFileName(o)),l}if(g==="browser")return A.value=await st("browser"),s.setProvider("browser"),await O(),null;if(!ps(g))throw new Error(`Unsupported STT provider: ${String(g)}`);const I=await gl(g,{settings:U.settings,secrets:U.secrets,activeProvider:g});return await O(),await j("stt",`stt-${g}`),I}async function k(d,g){if(d==="tts"){if(!ms(g)||g==="edge")return;await jl(g)}else{if(!ps(g))return;await ml(g)}await O()}return{connections:t,ttsConnections:n,sttConnections:b,activeTtsId:m,activeSttId:p,activeTtsConnection:C,activeSttConnection:y,ttsConnectionOptions:N,sttConnectionOptions:E,loading:r,refresh:O,setActiveConnection:j,saveConnection:Q,deleteSecret:k}}var Ql=M((()=>{se(),oe(),Gl(),rl(),Be(),_l(),Xe()})),gs,_s,di,fs=M((()=>{se(),gs={class:"provider-meta-item"},_s=["title"],di=ne({__name:"ProviderMetaItem",props:{label:{},value:{}},setup(v){return(t,r)=>(S(),D("div",gs,[f("dt",null,_(v.label),1),f("dd",{title:String(v.value||"—")},_(v.value||"—"),9,_s)]))}})})),Zl=M((()=>{})),ci,eo=M((()=>{fs(),fs(),Zl(),de(),ci=ce(di,[["__scopeId","data-v-6e8cbcf2"]])})),ys,bs,hs,Ss,ws,Us,Cs,ks,Ps,Ts,As,$s,Ms,xs,Fs,vi,Ds=M((()=>{se(),ue(),oe(),eo(),ys=["data-state"],bs={class:"card-main"},hs={class:"provider-identity"},Ss={class:"provider-icon","aria-hidden":"true"},ws={class:"provider-copy"},Us={class:"provider-title-row"},Cs=["title"],ks={class:"provider-kind"},Ps={class:"provider-description"},Ts={class:"provider-meta"},As={class:"provider-control"},$s=["aria-label"],Ms={key:1,class:"feedback-row error",role:"alert"},xs={class:"error-summary"},Fs={key:1,class:"error-details"},vi=ne({__name:"VoiceApiCard",props:{connection:{},testState:{}},emits:["setActive","test","edit","connect","remove"],setup(v,{emit:t}){const r=v,i=t,{t:s}=re(),w=$(!1);ke(()=>r.testState?.message,()=>{w.value=!1});const A=P(()=>!(r.connection.kind==="stt"&&r.connection.provider==="browser")),m=P(()=>!r.connection.isBuiltin),p=P(()=>m.value?r.connection.hasSecret?s("settings.voice.keyStored"):s("settings.voice.keyMissing"):s("settings.voice.builtin")),n=P(()=>r.connection.isBuiltin?s("settings.voice.builtin"):s("settings.voice.customApi")),b=P(()=>r.connection.active?"success":m.value&&!r.connection.hasSecret?"warning":"default"),C=P(()=>r.connection.active?s("settings.voice.active"):m.value&&!r.connection.hasSecret?s("settings.voice.keyMissing"):s("settings.voice.connected")),y=P(()=>r.connection.model||String(r.connection.settings.model||"")),N=P(()=>r.connection.voice||String(r.connection.settings.voice||"")),E=P(()=>r.connection.baseUrl||(r.connection.isBuiltin?s("settings.voice.localBuiltin"):"")),T=P(()=>{const q=r.testState?.status;return s(q==="success"?"settings.voice.testSuccess":q==="error"?"settings.voice.testFailedShort":q==="loading"?"settings.voice.testing":q==="recording"?"settings.voice.recording":"settings.voice.notTested")}),h=P(()=>m.value&&!r.connection.hasSecret?s("settings.voice.connect"):s("common.edit")),F=P(()=>r.testState?.status==="recording"?s("settings.voice.sttTestStopButton"):s("settings.voice.testAction")),W=P(()=>r.connection.kind==="tts"?[{key:"source",label:s("settings.voice.source"),value:E.value},{key:"model",label:s("settings.voice.model"),value:y.value},{key:"voice",label:s("settings.voice.voice"),value:N.value},{key:"api-key",label:s("settings.voice.apiKey"),value:p.value}]:[{key:"source",label:s("settings.voice.source"),value:E.value},{key:"model",label:s("settings.voice.model"),value:y.value},{key:"api-key",label:s("settings.voice.apiKey"),value:p.value},{key:"last-test",label:s("settings.voice.lastTest"),value:T.value}]),O=P(()=>{const q=r.testState?.status;return!!q&&q!=="idle"&&q!=="error"}),j=P(()=>r.testState?.status==="error"),Q=P(()=>r.testState?.message||"");function k(q){const x=q.indexOf("{");if(x<0)return null;try{const o=JSON.parse(q.slice(x)),l=o.error||o.message||o.detail;return typeof l=="string"&&l.trim()?l.trim():null}catch{return null}}function d(q){return q.replace(/^API Error\s+\d+\s*:\s*/i,"").replace(/^Error\s*:\s*/i,"").trim()}const g=P(()=>{const q=Q.value.trim();if(!q)return s("settings.voice.testFailedSummary");const x=k(q)||d(q);return!x||x.startsWith("{")||x.startsWith("[")?s("settings.voice.testFailedSummary"):x.length>180?`${x.slice(0,177).trim()}…`:x}),U=P(()=>{const q=Q.value.trim();return q.length>0&&q!==g.value}),I=P(()=>[{label:s("settings.voice.remove"),key:"remove",disabled:r.connection.isBuiltin}]);function Y(){if(m.value&&!r.connection.hasSecret){i("connect",r.connection);return}i("edit",r.connection)}function ae(q){q==="remove"&&!r.connection.isBuiltin&&i("remove",r.connection)}return(q,x)=>(S(),D("article",{class:He(["voice-api-card",{active:v.connection.active}]),"data-state":v.testState?.status||"idle"},[f("div",bs,[f("div",hs,[f("div",Ss,_(v.connection.kind==="tts"?"T":"S"),1),f("div",ws,[f("div",Us,[f("h5",{class:"provider-title",title:v.connection.label},_(v.connection.label),9,Cs),f("span",ks,_(n.value),1)]),f("p",Ps,_(v.connection.kind==="tts"?e(s)("settings.voice.ttsCardHint"):e(s)("settings.voice.sttCardHint")),1)])]),f("dl",Ts,[(S(!0),D(ye,null,xe(W.value,o=>(S(),X(ci,{key:o.key,label:o.label,value:o.value},null,8,["label","value"]))),128))]),f("div",As,[a(e(Ie),{class:"status-badge",size:"small",type:b.value,round:"",bordered:!1},{default:u(()=>[L(_(C.value),1)]),_:1},8,["type"]),f("div",{class:"card-actions","aria-label":`${v.connection.label} actions`},[v.connection.active?B("",!0):(S(),X(e(K),{key:0,size:"tiny",secondary:"",onClick:x[0]||(x[0]=o=>i("setActive",v.connection))},{default:u(()=>[L(_(e(s)("settings.voice.setActive")),1)]),_:1})),a(e(K),{size:"tiny",loading:v.testState?.status==="loading","data-testid":`voice-card-test-${v.connection.id}`,onClick:x[1]||(x[1]=o=>i("test",v.connection))},{default:u(()=>[L(_(F.value),1)]),_:1},8,["loading","data-testid"]),A.value?(S(),X(e(K),{key:1,size:"tiny",onClick:Y},{default:u(()=>[L(_(h.value),1)]),_:1})):B("",!0),m.value?(S(),X(e(Li),{key:2,trigger:"click",size:"small",options:I.value,onSelect:ae},{default:u(()=>[a(e(K),{size:"tiny","aria-label":e(s)("settings.voice.moreActionsFor",{provider:v.connection.label})},{default:u(()=>[L(_(e(s)("settings.voice.moreActions")),1)]),_:1},8,["aria-label"])]),_:1},8,["options"])):B("",!0)],8,$s)])]),O.value?(S(),D("div",{key:0,class:He(["feedback-row",v.testState?.status]),role:"status"},_(v.testState?.message||(v.testState?.status==="success"?e(s)("settings.voice.testSuccess"):"")),3)):B("",!0),j.value?(S(),D("div",Ms,[f("div",xs,_(g.value),1),U.value?(S(),X(e(K),{key:0,class:"details-toggle",text:"",size:"tiny",onClick:x[2]||(x[2]=o=>w.value=!w.value)},{default:u(()=>[L(_(w.value?e(s)("settings.voice.hideDetails"):e(s)("settings.voice.showDetails")),1)]),_:1})):B("",!0),w.value?(S(),D("pre",Fs,_(Q.value),1)):B("",!0)])):B("",!0)],10,ys))}})})),to=M((()=>{})),Le,so=M((()=>{Ds(),Ds(),to(),de(),Le=ce(vi,[["__scopeId","data-v-b8bd5b05"]])}));async function ao(v){return Fe("/api/voice/providers/probe",{method:"POST",signal:v.signal,body:JSON.stringify({kind:v.kind,provider:v.provider,compatibility:v.compatibility,baseUrl:v.baseUrl,apiKey:v.apiKey})})}var io=M((()=>{Ee()})),Os,Is,zs,Rs,Ns,Vs,Hs,Ls,Es,Ks,Bs,qs,Ys,Xs,Ws,js,pi,Gs=M((()=>{se(),ue(),oe(),io(),Xe(),Ye(),Os={class:"form-section"},Is={class:"form-section"},zs={class:"section-heading"},Rs={key:0,class:"connection-actions"},Ns={key:1,class:"inline-error","data-testid":"voice-provider-probe-error"},Vs={key:1},Hs={key:0,class:"form-section"},Ls={class:"section-heading"},Es={key:0,class:"helper-text"},Ks={key:1,class:"helper-text"},Bs={key:2,class:"helper-text"},qs={key:3,class:"helper-text"},Ys={key:1,class:"form-section"},Xs={class:"section-heading"},Ws={key:2,class:"form-section"},js={class:"modal-footer"},pi=ne({__name:"VoiceApiFormModal",props:{kind:{},show:{type:Boolean}},emits:["close","saved"],setup(v,{emit:t}){const r=v,i=t,{t:s}=re(),w=me(),A=$(!1),m=$(null),p=$("openai-compatible"),n=$({baseUrl:"",apiKey:"",model:"",voice:"",audioTranscode:"none"}),b=$(!1),C=$(!1),y=$(!1),N=$(!1),E=$(!1),T=$([]),h=$(""),F=$(""),W=$(""),O=$(!1),j=$("");let Q=null,k=0,d=!1;const g=P(()=>Ce.filter(V=>V.kind===r.kind&&!V.isBuiltin).map(V=>({label:V.labelKey?s(V.labelKey):V.label,value:V.id}))),U=P(()=>Ce.find(V=>V.id===m.value)||null),I=P(()=>U.value?.provider==="custom"),Y=P(()=>r.kind==="tts"&&U.value?.provider==="doubao"),ae=P(()=>p.value==="openai-compatible"),q=P(()=>{const V=T.value.map(R=>({label:R.capability==="preferred"?`${R.label} · ${s("settings.voice.modelRecommendedSuffix")}`:R.label,value:R.id})),z=n.value.model.trim();return z&&!V.some(R=>R.value===z)?[{label:z,value:z},...V]:V}),x=P(()=>[{label:s("settings.voice.sttAudioTranscodeNone"),value:"none"},{label:s("settings.voice.sttAudioTranscodeFfmpeg"),value:"ffmpeg"}]),o=P(()=>{const V=n.value.voice.trim(),z=Re.map(R=>({label:R.label,value:R.value}));return V&&!Re.some(R=>R.value===V)?[{label:V,value:V},...z]:z}),l=P(()=>Oe(n.value.baseUrl)),c=P(()=>!y.value&&!n.value.baseUrl.trim()||!U.value||!U.value.isSecretRequired?"":Ae(n.value.baseUrl)),J=P(()=>!U.value?.capabilities?.models||!C.value||n.value.model.trim()?"":s("settings.voice.modelRequiredConnectManual")),ie=P(()=>!N.value||!U.value?.isSecretRequired||n.value.apiKey.trim()?"":s("settings.voice.apiKeyRequired")),pe=P(()=>!!U.value&&ae.value&&!!n.value.baseUrl.trim()&&!!n.value.apiKey.trim()&&!Ae(n.value.baseUrl)),we=P(()=>!(!U.value||U.value.isSecretRequired&&(!n.value.apiKey.trim()||Ae(n.value.baseUrl))||U.value.capabilities?.models&&!n.value.model.trim()||Y.value&&!n.value.voice.trim())),Te=P(()=>U.value?p.value==="manual"?s("settings.voice.discoveryManualHint"):!n.value.baseUrl.trim()||!n.value.apiKey.trim()?s("settings.voice.discoveryCredentialHint"):s("settings.voice.discoveryNoAutoProbeHint"):"");ke(()=>r.show,V=>{V?De():$e()}),ke([()=>n.value.baseUrl,()=>n.value.apiKey,p],()=>{if(d){d=!1;return}$e(),T.value=[],h.value="",F.value="",W.value="",O.value=!1}),Hi(()=>$e());function De(){m.value=null,p.value="openai-compatible",n.value={baseUrl:"",apiKey:"",model:"",voice:"",audioTranscode:"none"},b.value=!1,C.value=!1,y.value=!1,N.value=!1,j.value="",T.value=[],h.value="",F.value="",W.value="",O.value=!1,$e()}function Oe(V){const z=V.trim();if(!z)return"";try{const R=new URL(z);return R.hash="",R.pathname=R.pathname.replace(/\/+$/,"")||"/",R.toString().replace(/\/$/,"")}catch{return z.replace(/\/+$/,"")}}function Ae(V){const z=V.trim();if(!z)return s("settings.voice.baseUrlRequired");try{const R=new URL(z);return R.protocol!=="https:"&&R.protocol!=="http:"?s("settings.voice.baseUrlHttpsRequired"):""}catch{return s("settings.voice.baseUrlInvalid")}}function $e(){Q&&(Q.abort(),Q=null),E.value=!1}function hi(V){m.value=V;const z=Ce.find(ve=>ve.id===V);p.value=z?.provider==="custom"||z?.provider==="openai"?"openai-compatible":"manual";const R=r.kind==="tts"&&z?.provider==="doubao";n.value={baseUrl:z?.baseUrl||"",model:R?qe:z?.defaultModel||"",voice:R?hl:"",apiKey:"",audioTranscode:"none"},b.value=!1,C.value=!1,y.value=!1,N.value=!1,j.value=""}function Si(V){n.value.model=V||"",b.value=!0,C.value=!0}function wi(V){n.value.voice=V||"",n.value.model=Na(V)||"seed-tts-2.0",C.value=!0,b.value=!1}function Ui(){h.value&&(n.value.model=h.value,C.value=!0,b.value=!1)}function Ci(){y.value=!0,Ae(n.value.baseUrl)||(n.value.baseUrl=l.value)}function ki(){return`${r.kind}|${U.value?.provider||""}|${p.value}|${Oe(n.value.baseUrl)}|${n.value.apiKey.trim()}`}async function Pi(){if(N.value=!0,!pe.value)return;const V=ki();j.value!==V&&(j.value=V,await We())}async function We(){if(!U.value||!ae.value)return;y.value=!0,N.value=!0;const V=Ae(n.value.baseUrl);if(V){F.value=V;return}if(!n.value.apiKey.trim()){F.value=s("settings.voice.apiKeyRequiredForDiscovery");return}$e();const z=++k,R=new AbortController;Q=R,E.value=!0,F.value="",W.value="",O.value=!1;try{const ve=await ao({kind:r.kind,provider:String(U.value.provider),compatibility:p.value,baseUrl:Oe(n.value.baseUrl),apiKey:n.value.apiKey.trim(),signal:R.signal});if(z!==k)return;ve.normalizedBaseUrl&&(d=!0,n.value.baseUrl=ve.normalizedBaseUrl),T.value=ve.models||[],h.value=ve.recommendedModel||"",F.value=ve.ok?"":ve.errorSummary||s("settings.voice.discoveryFailedManualFallback"),W.value=ve.errorDetails||"",ve.ok&&ve.recommendedModel&&!b.value&&!n.value.model.trim()&&(n.value.model=ve.recommendedModel,C.value=!0)}catch(ve){if(R.signal.aborted||z!==k)return;F.value=ve instanceof Error?ve.message:s("settings.voice.discoveryFailedManualFallback"),W.value=""}finally{z===k&&(E.value=!1,Q=null)}}async function Ti(){if(U.value){if(y.value=!0,N.value=!0,C.value=!0,!we.value){w.warning(J.value||c.value||ie.value||s("settings.voice.completeRequiredProviderFields"));return}A.value=!0;try{i("saved",{preset:U.value,settings:{baseUrl:Oe(n.value.baseUrl),model:n.value.model.trim(),...r.kind==="tts"&&n.value.voice.trim()?{voice:n.value.voice.trim()}:{},...r.kind==="stt"?{audioTranscode:n.value.audioTranscode}:{}},secrets:{apiKey:n.value.apiKey.trim()}})}finally{A.value=!1}}}return(V,z)=>(S(),X(e(ze),{show:v.show,preset:"card",title:v.kind==="tts"?e(s)("settings.voice.addTtsApi"):e(s)("settings.voice.addSttApi"),style:{width:"min(540px, calc(100vw - 32px))"},"onUpdate:show":z[8]||(z[8]=R=>i("close"))},{footer:u(()=>[f("div",js,[a(e(K),{onClick:z[7]||(z[7]=R=>i("close"))},{default:u(()=>[L(_(e(s)("common.cancel")),1)]),_:1}),a(e(K),{type:"primary",loading:A.value,disabled:!we.value,"data-testid":"voice-provider-save",onClick:Ti},{default:u(()=>[L(_(e(s)("common.add")),1)]),_:1},8,["loading","disabled"])])]),default:u(()=>[a(e(Me),{"label-placement":"top",class:"provider-form"},{default:u(()=>[f("section",Os,[a(e(G),{label:e(s)("models.selectProvider"),required:""},{default:u(()=>[a(e(ee),{value:m.value,"onUpdate:value":[z[0]||(z[0]=R=>m.value=R),hi],options:g.value,placeholder:e(s)("models.chooseProvider"),"data-testid":"voice-provider-select"},null,8,["value","options","placeholder"])]),_:1},8,["label"]),U.value&&I.value?(S(),X(e(G),{key:0,label:e(s)("settings.voice.apiCompatibility"),required:""},{default:u(()=>[a(e(ee),{value:p.value,"onUpdate:value":z[1]||(z[1]=R=>p.value=R),options:[{label:e(s)("settings.voice.openaiCompatible"),value:"openai-compatible"},{label:e(s)("settings.voice.manualCustomEndpoint"),value:"manual"}],"data-testid":"voice-provider-compatibility"},null,8,["value","options"])]),_:1},8,["label"])):B("",!0)]),U.value?(S(),D(ye,{key:0},[f("section",Is,[f("div",zs,[f("span",null,_(e(s)("settings.voice.connectionStep")),1),f("small",null,_(Te.value),1)]),a(e(G),{label:e(s)("models.baseUrl"),required:U.value.isSecretRequired,feedback:c.value},{default:u(()=>[a(e(Z),{value:n.value.baseUrl,"onUpdate:value":z[2]||(z[2]=R=>n.value.baseUrl=R),placeholder:e(s)("models.baseUrlPlaceholder"),disabled:!!U.value.baseUrl&&U.value.provider!=="custom","data-testid":"voice-provider-base-url",onBlur:Ci},null,8,["value","placeholder","disabled"])]),_:1},8,["label","required","feedback"]),a(e(G),{label:e(s)("models.apiKey"),required:U.value.isSecretRequired,feedback:ie.value},{default:u(()=>[a(e(Z),{value:n.value.apiKey,"onUpdate:value":z[3]||(z[3]=R=>n.value.apiKey=R),type:"password","show-password-on":"click",autocomplete:"off",placeholder:U.value.isSecretRequired?e(s)("settings.voice.apiKeyConnectPlaceholder"):e(s)("models.apiKeyPlaceholder"),"data-testid":"voice-provider-api-key",onBlur:Pi},null,8,["value","placeholder"])]),_:1},8,["label","required","feedback"]),ae.value?(S(),D("div",Rs,[a(e(K),{size:"small",loading:E.value,disabled:!pe.value,"data-testid":"voice-provider-probe",onClick:We},{default:u(()=>[L(_(e(s)("settings.voice.connectFetchModels")),1)]),_:1},8,["loading","disabled"])])):B("",!0),F.value?(S(),D("div",Ns,[f("span",null,_(F.value),1),W.value?(S(),D("button",{key:0,type:"button",class:"link-button",onClick:z[4]||(z[4]=R=>O.value=!O.value)},_(O.value?e(s)("settings.voice.hideDetails"):e(s)("settings.voice.showDetails")),1)):B("",!0),O.value&&W.value?(S(),D("pre",Vs,_(W.value),1)):B("",!0)])):B("",!0)]),U.value.capabilities?.models?(S(),D("section",Hs,[f("div",Ls,[f("span",null,_(e(s)("settings.voice.model")),1),f("small",null,_(e(s)("settings.voice.modelConnectManualHint")),1)]),a(e(G),{label:e(s)("models.defaultModel"),feedback:J.value},{default:u(()=>[a(e(ee),{value:n.value.model,options:q.value,tag:"",filterable:"",loading:E.value,placeholder:e(s)("settings.voice.modelConnectManualHint"),"data-testid":"voice-provider-model","onUpdate:value":Si},null,8,["value","options","loading","placeholder"])]),_:1},8,["label","feedback"]),E.value?(S(),D("div",Es,_(e(s)("settings.voice.fetchingModels")),1)):h.value&&b.value&&n.value.model!==h.value?(S(),D("div",Ks,[L(_(e(s)("settings.voice.recommendedModel",{model:h.value}))+" ",1),f("button",{type:"button",class:"link-button",onClick:Ui},_(e(s)("settings.voice.useRecommendedModel")),1)])):T.value.length?(S(),D("div",Bs,_(e(s)("settings.voice.modelsDiscovered",{count:T.value.length})),1)):F.value?(S(),D("div",qs,_(e(s)("settings.voice.discoveryFailedManualFallback")),1)):B("",!0)])):B("",!0),Y.value?(S(),D("section",Ys,[f("div",Xs,[f("span",null,_(e(s)("settings.voice.voice")),1),f("small",null,_(e(s)("settings.voice.doubaoVoiceHint")),1)]),a(e(G),{label:e(s)("settings.voice.voice")},{default:u(()=>[a(e(ee),{value:n.value.voice,"onUpdate:value":[z[5]||(z[5]=R=>n.value.voice=R),wi],options:o.value,tag:"",filterable:"","data-testid":"voice-provider-voice"},null,8,["value","options"])]),_:1},8,["label"])])):B("",!0),v.kind==="stt"?(S(),D("section",Ws,[a(e(G),{label:e(s)("settings.voice.sttAudioTranscode")},{default:u(()=>[a(e(ee),{value:n.value.audioTranscode,"onUpdate:value":z[6]||(z[6]=R=>n.value.audioTranscode=R),options:x.value,"data-testid":"voice-provider-audio-transcode"},null,8,["value","options"])]),_:1},8,["label"])])):B("",!0)],64)):B("",!0)]),_:1})]),_:1},8,["show","title"]))}})})),lo=M((()=>{})),mi,oo=M((()=>{Gs(),Gs(),lo(),de(),mi=ce(pi,[["__scopeId","data-v-9aec528e"]])})),Js,Qs,Zs,ea,ta,sa,gi,aa=M((()=>{se(),ue(),oe(),Xe(),Ye(),Va(),Be(),Js={style:{"font-size":"12px",opacity:"0.6"}},Qs={style:{"font-size":"12px",opacity:"0.6"}},Zs={key:0,style:{"font-size":"12px",opacity:"0.7"}},ea={style:{"font-size":"12px",opacity:"0.6"}},ta=10*1024*1024,sa="audio/mpeg,audio/mp3,audio/wav,.mp3,.wav",gi=ne({__name:"VoiceApiConfigurator",props:{connection:{},show:{type:Boolean}},emits:["close","save"],setup(v,{emit:t}){const r=v,i=t,{t:s}=re(),w=Ke(),A=$(!1),m=$({}),p=$(""),n=$(null),b=$(""),C=$(""),y=$("wav"),N=P(()=>r.connection?Ce.find(o=>o.kind===r.connection.kind&&o.provider===r.connection.provider&&(o.baseUrl===r.connection.baseUrl||!o.baseUrl)):null),E=P(()=>N.value?.capabilities||{});function T(o,l){m.value[o]=l??""}function h(o){const l=m.value[o];return typeof l=="string"?l:typeof l=="number"?String(l):""}function F(o,l=0){const c=m.value[o];if(typeof c=="number"&&Number.isFinite(c))return c;if(typeof c=="string"&&c.trim()){const J=Number(c);if(Number.isFinite(J))return J}return l}ke(()=>r.connection,o=>{o&&(m.value={...o.settings,model:o.model||String(o.settings.model||""),voice:o.voice||String(o.settings.voice||"")},o.provider==="edge"&&(m.value.rate=F("rate",1),m.value.pitch=F("pitch",0)),p.value="",o.provider==="mimo"&&(b.value=w.mimoVoiceCloneDataUri.value,C.value=w.mimoVoiceCloneFileName.value,y.value=w.mimoVoiceCloneFormat.value))},{immediate:!0});function W(o){const l=o.name.toLowerCase();return o.type.includes("mpeg")||o.type.includes("mp3")||l.endsWith(".mp3")?"mp3":"wav"}function O(o){return new Promise((l,c)=>{const J=new FileReader;J.onload=()=>l(String(J.result||"")),J.onerror=()=>c(J.error||new Error("Failed to read audio file")),J.readAsDataURL(o)})}async function j(o){const l=o.target,c=l.files?.[0];if(!c)return;const J=c.name.toLowerCase();if(!(c.type==="audio/wav"||c.type==="audio/x-wav"||c.type==="audio/mpeg"||c.type==="audio/mp3"||J.endsWith(".wav")||J.endsWith(".mp3"))||c.size>ta){l.value="";return}try{const ie=W(c),pe=await O(c),we=ie==="mp3"?"audio/mpeg":"audio/wav";b.value=pe.replace(/^data:[^;,]*;base64,/,`data:${we};base64,`),C.value=c.name,y.value=ie}finally{l.value=""}}function Q(){b.value="",C.value="",y.value="wav",n.value&&(n.value.value="")}async function k(){if(r.connection){A.value=!0;try{const o=p.value.trim(),l={...m.value};if(r.connection.provider==="mimo"){const c=h("model");l.voiceMode=c==="mimo-v2.5-tts-voiceclone"?"voiceClone":c==="mimo-v2.5-tts-voicedesign"?"voiceDesign":"preset",c==="mimo-v2.5-tts-voiceclone"&&(l.voiceCloneDataUri=b.value,l.voiceCloneFileName=C.value,l.voiceCloneFormat=y.value)}i("save",r.connection,{settings:l,...o?{secrets:{apiKey:o}}:{}})}finally{A.value=!1}}}const d=[{label:"晓晓 (zh-CN-XiaoxiaoNeural)",value:"zh-CN-XiaoxiaoNeural"},{label:"晓萱 (zh-CN-XiaoxuanNeural)",value:"zh-CN-XiaoxuanNeural"},{label:"云希 (zh-CN-YunxiNeural)",value:"zh-CN-YunxiNeural"},{label:"云健 (zh-CN-YunjianNeural)",value:"zh-CN-YunjianNeural"},{label:"云扬 (zh-CN-YunyangNeural)",value:"zh-CN-YunyangNeural"},{label:"Jenny (en-US-JennyNeural)",value:"en-US-JennyNeural"},{label:"Aria (en-US-AriaNeural)",value:"en-US-AriaNeural"},{label:"Guy (en-US-GuyNeural)",value:"en-US-GuyNeural"}],g=[{label:"Alloy",value:"alloy"},{label:"Echo",value:"echo"},{label:"Fable",value:"fable"},{label:"Nova",value:"nova"},{label:"Onyx",value:"onyx"},{label:"Shimmer",value:"shimmer"}],U=[{label:"冰糖 (中文·女)",value:"冰糖"},{label:"茉莉 (中文·女)",value:"茉莉"},{label:"苏打 (中文·男)",value:"苏打"},{label:"白桦 (中文·男)",value:"白桦"}],I=[{label:s("settings.voice.mimoModelPreset"),value:"mimo-v2.5-tts"},{label:s("settings.voice.mimoModelVoiceDesign"),value:"mimo-v2.5-tts-voicedesign"},{label:s("settings.voice.mimoModelVoiceClone"),value:"mimo-v2.5-tts-voiceclone"}],Y=[{label:"Seed TTS 2.0",value:qe}],ae=P(()=>{const o=h("voice").trim(),l=Re.map(c=>({label:c.label,value:c.value}));return o&&!Re.some(c=>c.value===o)?[{label:o,value:o},...l]:l}),q=P(()=>[{label:s("settings.voice.sttAudioTranscodeNone"),value:"none"},{label:s("settings.voice.sttAudioTranscodeFfmpeg"),value:"ffmpeg"}]);function x(o){T("voice",o),T("model",Na(o)||"seed-tts-2.0")}return(o,l)=>(S(),X(e(Ii),{show:v.show,width:400,"onUpdate:show":l[17]||(l[17]=c=>i("close"))},{default:u(()=>[a(e(Ni),{title:v.connection?.label,closable:""},{footer:u(()=>[a(e(Ue),{justify:"end"},{default:u(()=>[a(e(K),{onClick:l[16]||(l[16]=c=>i("close"))},{default:u(()=>[L(_(e(s)("common.cancel")),1)]),_:1}),a(e(K),{type:"primary",loading:A.value,onClick:k},{default:u(()=>[L(_(e(s)("common.save")),1)]),_:1},8,["loading"])]),_:1})]),default:u(()=>[v.connection?(S(),X(e(Me),{key:0,"label-placement":"top"},{default:u(()=>[v.connection.isBuiltin?B("",!0):(S(),X(e(G),{key:0,label:e(s)("settings.voice.apiKey")},{default:u(()=>[a(e(Z),{value:p.value,"onUpdate:value":l[0]||(l[0]=c=>p.value=c),type:"password","show-password-on":"click",autocomplete:"off",placeholder:v.connection.hasSecret?e(s)("settings.voice.keepStoredKeyPlaceholder"):e(s)("settings.voice.apiKeyPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])),E.value.models?(S(),X(e(G),{key:1,label:e(s)("settings.voice.model")},{default:u(()=>[v.connection.provider==="mimo"?(S(),X(e(ee),{key:0,value:h("model"),options:I,"onUpdate:value":l[1]||(l[1]=c=>T("model",c))},null,8,["value"])):v.connection.provider==="doubao"?(S(),X(e(ee),{key:1,value:h("model")||e("seed-tts-2.0"),options:Y,tag:"",filterable:"","onUpdate:value":l[2]||(l[2]=c=>T("model",c))},null,8,["value"])):(S(),X(e(Z),{key:2,value:h("model"),placeholder:e(s)("models.selectOrInput"),"onUpdate:value":l[3]||(l[3]=c=>T("model",c))},null,8,["value","placeholder"]))]),_:1},8,["label"])):B("",!0),E.value.voices?(S(),X(e(G),{key:2,label:e(s)("settings.voice.voice")},{default:u(()=>[v.connection.provider==="edge"?(S(),X(e(ee),{key:0,value:h("voice"),options:d,filterable:"","onUpdate:value":l[4]||(l[4]=c=>T("voice",c))},null,8,["value"])):v.connection.provider==="openai"?(S(),X(e(ee),{key:1,value:h("voice"),options:g,"onUpdate:value":l[5]||(l[5]=c=>T("voice",c))},null,8,["value"])):v.connection.provider==="mimo"&&h("model")==="mimo-v2.5-tts"?(S(),X(e(ee),{key:2,value:h("voice"),options:U,"onUpdate:value":l[6]||(l[6]=c=>T("voice",c))},null,8,["value"])):v.connection.provider==="doubao"?(S(),X(e(ee),{key:3,value:h("voice"),options:ae.value,tag:"",filterable:"","onUpdate:value":x},null,8,["value","options"])):(S(),X(e(Z),{key:4,value:h("voice"),"onUpdate:value":l[7]||(l[7]=c=>T("voice",c))},null,8,["value"]))]),_:1},8,["label"])):B("",!0),v.connection.provider==="edge"?(S(),D(ye,{key:3},[a(e(G),{label:e(s)("settings.voice.edgeRate")},{default:u(()=>[a(e(Ue),{vertical:"",style:{width:"100%"}},{default:u(()=>[a(e(je),{value:F("rate",1),min:.5,max:2,step:.05,"onUpdate:value":l[8]||(l[8]=c=>T("rate",Array.isArray(c)?c[0]:c))},null,8,["value"]),f("span",Js,_(F("rate",1).toFixed(2))+"x ("+_(e(Ha)(F("rate",1)))+")",1)]),_:1})]),_:1},8,["label"]),a(e(G),{label:e(s)("settings.voice.edgePitch")},{default:u(()=>[a(e(Ue),{vertical:"",style:{width:"100%"}},{default:u(()=>[a(e(je),{value:F("pitch",0),min:-20,max:20,step:1,"onUpdate:value":l[9]||(l[9]=c=>T("pitch",Array.isArray(c)?c[0]:c))},null,8,["value"]),f("span",Qs,_(F("pitch",0)>0?"+":"")+_(F("pitch",0))+" Hz ("+_(e(La)(F("pitch",0)))+")",1)]),_:1})]),_:1},8,["label"])],64)):B("",!0),v.connection.provider==="mimo"?(S(),D(ye,{key:4},[E.value.stylePrompt?(S(),X(e(G),{key:0,label:e(s)("settings.voice.mimoStylePrompt")},{default:u(()=>[a(e(Z),{value:h("stylePrompt"),type:"textarea",rows:2,"onUpdate:value":l[10]||(l[10]=c=>T("stylePrompt",c))},null,8,["value"])]),_:1},8,["label"])):B("",!0),h("model")==="mimo-v2.5-tts-voicedesign"?(S(),X(e(G),{key:1,label:e(s)("settings.voice.mimoVoiceDesignPrompt")},{default:u(()=>[a(e(Z),{value:h("voiceDesignDesc"),type:"textarea",rows:3,"onUpdate:value":l[11]||(l[11]=c=>T("voiceDesignDesc",c))},null,8,["value"])]),_:1},8,["label"])):B("",!0),h("model")==="mimo-v2.5-tts-voiceclone"?(S(),X(e(G),{key:2,label:e(s)("settings.voice.mimoCloneAudio")},{default:u(()=>[a(e(Ue),{vertical:"",style:{width:"100%"}},{default:u(()=>[f("input",{ref_key:"mimoCloneAudioInput",ref:n,type:"file",accept:sa,style:{display:"none"},onChange:j},null,544),a(e(Ue),{align:"center"},{default:u(()=>[a(e(K),{size:"small",onClick:l[12]||(l[12]=c=>n.value?.click())},{default:u(()=>[L(_(e(s)("settings.voice.mimoCloneAudioUpload")),1)]),_:1}),C.value?(S(),D("span",Zs,_(C.value)+" · "+_(y.value),1)):B("",!0),b.value?(S(),X(e(K),{key:1,size:"small",tertiary:"",onClick:Q},{default:u(()=>[L(_(e(s)("settings.voice.mimoCloneAudioClear")),1)]),_:1})):B("",!0)]),_:1}),f("span",ea,_(e(s)("settings.voice.mimoCloneAudioHint")),1)]),_:1})]),_:1},8,["label"])):B("",!0)],64)):B("",!0),v.connection.kind==="stt"&&v.connection.provider!=="browser"?(S(),D(ye,{key:5},[a(e(G),{label:e(s)("settings.voice.sttAudioTranscode")},{default:u(()=>[a(e(ee),{value:h("audioTranscode")||"none",options:q.value,"onUpdate:value":l[13]||(l[13]=c=>T("audioTranscode",c))},null,8,["value","options"])]),_:1},8,["label"]),a(e(G),{label:e(s)("settings.voice.sttLanguage")},{default:u(()=>[a(e(Z),{value:h("language"),"onUpdate:value":l[14]||(l[14]=c=>T("language",c))},null,8,["value"])]),_:1},8,["label"]),a(e(G),{label:e(s)("settings.voice.sttPrompt")},{default:u(()=>[a(e(Z),{value:h("prompt"),type:"textarea",rows:2,"onUpdate:value":l[15]||(l[15]=c=>T("prompt",c))},null,8,["value"])]),_:1},8,["label"])],64)):B("",!0)]),_:1})):B("",!0)]),_:1},8,["title"])]),_:1},8,["show"]))}})})),_i,no=M((()=>{aa(),aa(),_i=gi})),ia,la,oa,na,ra,ua,da,ca,va,pa,ma,ga,_a,fa,ya,ba,ha,Sa,wa,Ua,Ca,ka,fi,Pa=M((()=>{se(),ue(),oe(),yl(),fl(),ul(),Ql(),Be(),Va(),so(),oo(),no(),ia={class:"voice-settings"},la={class:"settings-section voice-provider-section","aria-labelledby":"tts-providers-title"},oa={class:"section-header"},na={class:"section-copy"},ra={id:"tts-providers-title",class:"section-title"},ua={class:"section-desc"},da={class:"section-controls"},ca={class:"active-select"},va={class:"active-label"},pa={class:"active-summary"},ma={class:"test-copy-row"},ga={class:"provider-list"},_a={class:"settings-section voice-provider-section","aria-labelledby":"stt-providers-title"},fa={class:"section-header"},ya={class:"section-copy"},ba={id:"stt-providers-title",class:"section-title"},ha={class:"section-desc"},Sa={class:"section-controls"},wa={class:"active-select"},Ua={class:"active-label"},Ca={class:"active-summary"},ka={class:"provider-list"},fi=ne({__name:"VoiceSettings",setup(v){const{t}=re(),r=me(),i=bl(),s=Jl(),w=Ke(),A=$(t("settings.voice.testTextDefault")),m=$(!1),p=$("tts"),n=$(!1),b=$(null),C=dl({maxDurationMs:3e4}),y=$({}),N=P(()=>s.activeTtsConnection.value?.label||t("settings.voice.noneSelected")),E=P(()=>s.activeSttConnection.value?.label||t("settings.voice.noneSelected"));Pe(async()=>{await s.refresh()});function T(o){p.value=o,m.value=!0}function h(o,l,c){y.value={...y.value,[o]:{status:l,message:c}}}function F(o){const l={...y.value};for(const[c,J]of Object.entries(l))c!==o&&J.status==="recording"&&(l[c]={status:"idle"});y.value=l}async function W(o){try{await s.saveConnection(p.value,o.preset.provider,{settings:o.settings,secrets:o.secrets}),m.value=!1,r.success(t("settings.voice.ttsSaved"))}catch(l){r.error(l instanceof Error?l.message:t("settings.voice.ttsSaveFailed"))}}function O(o){b.value=o,n.value=!0}async function j(o,l){try{await s.saveConnection(o.kind,o.provider,l),n.value=!1,r.success(t("settings.voice.ttsSaved"))}catch(c){r.error(c instanceof Error?c.message:t("settings.voice.ttsSaveFailed"))}}async function Q(o){try{await s.deleteSecret(o.kind,o.provider),h(o.id,"idle"),r.success(t("settings.voice.ttsCleared"))}catch(l){r.error(l instanceof Error?l.message:t("settings.voice.ttsClearFailed"))}}async function k(o){await s.setActiveConnection(o.kind,o.id)}async function d(o){await s.setActiveConnection("tts",o)}async function g(o){await s.setActiveConnection("stt",o)}function U(o){return{...o.settings,baseUrl:o.baseUrl||o.settings.baseUrl,model:o.model||o.settings.model,voice:o.voice||o.settings.voice}}function I(o){const l=U(o),c=o.provider==="edge"||o.provider==="openai"||o.provider==="custom"||o.provider==="doubao"?o.provider:void 0,J=Number(l.rate),ie=Number(l.pitch);return{baseUrl:String(l.baseUrl||""),model:typeof l.model=="string"?l.model:void 0,voice:typeof l.voice=="string"?l.voice:void 0,rate:o.provider==="edge"&&Number.isFinite(J)?Ha(J):typeof l.rate=="string"?l.rate:void 0,pitch:o.provider==="edge"&&Number.isFinite(ie)?La(ie):typeof l.pitch=="string"?l.pitch:void 0,stylePrompt:typeof l.stylePrompt=="string"?l.stylePrompt:void 0,provider:c}}function Y(o){const l=U(o);return{baseUrl:String(l.baseUrl||"https://api.xiaomimimo.com/v1"),model:String(l.model||"mimo-v2.5-tts"),voice:typeof l.voice=="string"?l.voice:void 0,authMode:l.authMode==="api-key"||l.authMode==="bearer"||l.authMode==="both"?l.authMode:void 0,voiceMode:l.voiceMode==="preset"||l.voiceMode==="voiceDesign"||l.voiceMode==="voiceClone"?l.voiceMode:void 0,voiceDesignDesc:typeof l.voiceDesignDesc=="string"?l.voiceDesignDesc:void 0,voiceCloneDataUri:typeof l.voiceCloneDataUri=="string"?l.voiceCloneDataUri:w.mimoVoiceCloneDataUri.value||void 0,voiceCloneFormat:l.voiceCloneFormat==="mp3"||l.voiceCloneFormat==="wav"?l.voiceCloneFormat:w.mimoVoiceCloneFormat.value,stylePrompt:typeof l.stylePrompt=="string"?l.stylePrompt:void 0}}async function ae(o){const l=A.value.trim();if(!l){h(o.id,"error",t("settings.voice.testTextRequired"));return}if(!o.isBuiltin&&!o.hasSecret){h(o.id,"error",t("settings.voice.keyMissingForTest"));return}h(o.id,"loading",t("settings.voice.testing"));try{o.provider==="mimo"?await i.mimoPlay(o.id,l,Y(o)):(o.provider==="edge"||o.provider==="openai"||o.provider==="custom"||o.provider==="doubao")&&await i.openaiPlay(o.id,l,I(o)),h(o.id,"success",t("settings.voice.testSuccess"))}catch(c){h(o.id,"error",t("settings.voice.testFailed",{error:c instanceof Error?c.message:String(c)}))}}async function q(o){if(o.provider==="browser"){h(o.id,"success",t("settings.voice.browserSttTestHint"));return}if(!o.hasSecret){h(o.id,"error",t("settings.voice.keyMissingForTest"));return}if(y.value[o.id]?.status==="recording"){h(o.id,"loading",t("settings.voice.transcribing"));try{const l=await C.stop();if(!l.size){h(o.id,"error",t("settings.voice.sttEmptyAudio"));return}const c=await vl({audio:l,provider:o.provider});h(o.id,"success",c.text||t("settings.voice.sttTestSuccess"))}catch(l){h(o.id,"error",t("settings.voice.sttTestFailed",{error:l instanceof Error?l.message:String(l)}))}return}try{F(o.id),await C.start(),h(o.id,"recording",t("settings.voice.sttRecordingHint"))}catch(l){console.error("[VoiceSettings] Failed to start STT card test recording:",l),h(o.id,"error",t("settings.voice.sttTestFailed",{error:l instanceof Error?l.message:String(l)}))}}async function x(o){if(o.kind==="tts"){await ae(o);return}await q(o)}return(o,l)=>(S(),D("div",ia,[f("section",la,[f("header",oa,[f("div",na,[f("h4",ra,_(e(t)("settings.voice.ttsProvidersTitle")),1),f("p",ua,_(e(t)("settings.voice.ttsProvidersDescription")),1)]),f("div",da,[f("div",ca,[f("span",va,_(e(t)("settings.voice.activeTtsApi")),1),a(e(ee),{value:e(s).activeTtsId.value,options:e(s).ttsConnectionOptions.value,size:"small","aria-label":e(t)("settings.voice.activeTtsApi"),"onUpdate:value":d},null,8,["value","options","aria-label"]),f("span",pa,_(N.value),1)]),a(e(K),{size:"small",secondary:"",onClick:l[0]||(l[0]=c=>T("tts"))},{default:u(()=>[L(_(e(t)("settings.voice.addTtsApi")),1)]),_:1})])]),f("div",ma,[a(e(Z),{value:A.value,"onUpdate:value":l[1]||(l[1]=c=>A.value=c),size:"small",placeholder:e(t)("settings.voice.testTextPlaceholder"),"data-testid":"tts-test-text"},null,8,["value","placeholder"])]),f("div",ga,[(S(!0),D(ye,null,xe(e(s).ttsConnections.value,c=>(S(),X(Le,{key:c.id,connection:c,"test-state":y.value[c.id],onSetActive:k,onTest:x,onEdit:O,onConnect:O,onRemove:Q},null,8,["connection","test-state"]))),128))])]),f("section",_a,[f("header",fa,[f("div",ya,[f("h4",ba,_(e(t)("settings.voice.sttProvidersTitle")),1),f("p",ha,_(e(t)("settings.voice.sttProvidersDescription")),1)]),f("div",Sa,[f("div",wa,[f("span",Ua,_(e(t)("settings.voice.activeSttApi")),1),a(e(ee),{value:e(s).activeSttId.value,options:e(s).sttConnectionOptions.value,size:"small","aria-label":e(t)("settings.voice.activeSttApi"),"onUpdate:value":g},null,8,["value","options","aria-label"]),f("span",Ca,_(E.value),1)]),a(e(K),{size:"small",secondary:"",onClick:l[2]||(l[2]=c=>T("stt"))},{default:u(()=>[L(_(e(t)("settings.voice.addSttApi")),1)]),_:1})])]),f("div",ka,[(S(!0),D(ye,null,xe(e(s).sttConnections.value,c=>(S(),X(Le,{key:c.id,connection:c,"test-state":y.value[c.id],onSetActive:k,onTest:x,onEdit:O,onConnect:O,onRemove:Q},null,8,["connection","test-state"]))),128))])]),a(mi,{show:m.value,kind:p.value,onClose:l[3]||(l[3]=c=>m.value=!1),onSaved:W},null,8,["show","kind"]),a(_i,{show:n.value,connection:b.value,onClose:l[4]||(l[4]=c=>n.value=!1),onSave:j},null,8,["show","connection"])]))}})})),ro=M((()=>{})),yi,uo=M((()=>{Pa(),Pa(),ro(),de(),yi=ce(fi,[["__scopeId","data-v-679e572f"]])})),Ta,Aa,$a,Ma,bi,xa=M((()=>{se(),Ai(),ue(),oe(),he(),Ul(),kl(),Tl(),$l(),xl(),Dl(),Il(),Rl(),Vl(),Ll(),Kl(),uo(),Ee(),Ra(),Ta={class:"settings-view"},Aa={class:"page-header"},$a={class:"header-title"},Ma={class:"settings-content"},bi=ne({__name:"SettingsView",setup(v){const t=be(),r=za(),{t:i}=re(),s=Mi(),w=xi(),A=Ei(),m=$("account"),p=P(()=>new Set(["account",...s?["users"]:[],"display","proxy","agent","memory","compression","session","privacy","models","voice"]));function n(y){const N=typeof y=="string"?y:"";return p.value.has(N)?N:"account"}function b(y){m.value=n(y),A.replace({query:{...w.query,tab:m.value==="account"?void 0:m.value}})}ke(()=>w.query.tab,y=>{m.value=n(y)},{immediate:!0});async function C(){(!r.activeProfileName||r.profiles.length===0)&&await r.fetchProfiles(),await t.fetchSettings()}return Pe(()=>{C()}),(y,N)=>(S(),D("div",Ta,[f("header",Aa,[f("h2",$a,_(e(i)("settings.title")),1)]),f("div",Ma,[a(e(Oa),{show:e(t).loading||e(t).saving,size:"large",description:e(i)("common.loading")},{default:u(()=>[a(e($i),{value:m.value,"onUpdate:value":[N[0]||(N[0]=E=>m.value=E),b],type:"line",animated:""},{default:u(()=>[a(e(_e),{name:"account",tab:e(i)("settings.tabs.account")},{default:u(()=>[a(ni)]),_:1},8,["tab"]),e(s)?(S(),X(e(_e),{key:0,name:"users",tab:e(i)("settings.tabs.users")},{default:u(()=>[a(ui)]),_:1},8,["tab"])):B("",!0),a(e(_e),{name:"display",tab:e(i)("settings.tabs.display")},{default:u(()=>[a(Ka)]),_:1},8,["tab"]),a(e(_e),{name:"proxy",tab:e(i)("settings.tabs.proxy")},{default:u(()=>[a(ja)]),_:1},8,["tab"]),a(e(_e),{name:"agent",tab:e(i)("settings.tabs.agent")},{default:u(()=>[a(qa),a(Xa)]),_:1},8,["tab"]),a(e(_e),{name:"memory",tab:e(i)("settings.tabs.memory")},{default:u(()=>[a(Ja)]),_:1},8,["tab"]),a(e(_e),{name:"compression",tab:e(i)("settings.tabs.compression")},{default:u(()=>[a(Za)]),_:1},8,["tab"]),a(e(_e),{name:"session",tab:e(i)("settings.tabs.session")},{default:u(()=>[a(ti)]),_:1},8,["tab"]),a(e(_e),{name:"privacy",tab:e(i)("settings.tabs.privacy")},{default:u(()=>[a(ai)]),_:1},8,["tab"]),a(e(_e),{name:"models",tab:e(i)("settings.tabs.models")},{default:u(()=>[a(li)]),_:1},8,["tab"]),a(e(_e),{name:"voice",tab:e(i)("settings.tabs.voice")},{default:u(()=>[a(yi)]),_:1},8,["tab"])]),_:1},8,["value"])]),_:1},8,["show","description"])])]))}})})),co=M((()=>{})),vo,po=M((()=>{xa(),xa(),co(),de(),vo=ce(bi,[["__scopeId","data-v-ed31db3f"]])}));po();export{vo as default};