hermes-web-ui 0.6.40 → 0.6.41

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 (287) hide show
  1. package/dist/client/assets/js/{AppSidebar-CaSVcbCW.js → AppSidebar-CNkSiv3l.js} +1 -1
  2. package/dist/client/assets/js/{ChannelsView-hdAXa1hf.js → ChannelsView-6rEo6RBl.js} +1 -1
  3. package/dist/client/assets/js/{ChatPanel-C6sX6idm.js → ChatPanel-ANAZWluc.js} +3 -3
  4. package/dist/client/assets/js/{ChatView-B68k_-D9.js → ChatView-DFcPsmRF.js} +1 -1
  5. package/dist/client/assets/js/{CodingAgentsView-CsIjwbXR.js → CodingAgentsView-CpIY0SHT.js} +1 -1
  6. package/dist/client/assets/js/{DefaultCredentialPrompt-BRhb4DOa.js → DefaultCredentialPrompt-DmNeotSW.js} +1 -1
  7. package/dist/client/assets/js/{DesktopBrowserPanel-BlBfS64w.js → DesktopBrowserPanel-CWjTU-3y.js} +1 -1
  8. package/dist/client/assets/js/{DesktopBrowserView-JukL0QuS.js → DesktopBrowserView-D9Qb3fIV.js} +1 -1
  9. package/dist/client/assets/js/{DesktopPetView-DWq4EiRU.js → DesktopPetView-B7REtC57.js} +1 -1
  10. package/dist/client/assets/js/{DesktopTitleBar-DphP4oa6.js → DesktopTitleBar-Dej_16hB.js} +1 -1
  11. package/dist/client/assets/js/{DevicesView-BFtrfqJs.js → DevicesView--d4HCkch.js} +1 -1
  12. package/dist/client/assets/js/{DocxFilePreview-CmVJ9Jxx.js → DocxFilePreview-BQz6WC7r.js} +2 -2
  13. package/dist/client/assets/js/{FileEditor-CdkNYp7b.js → FileEditor-BBegs-5i.js} +2 -2
  14. package/dist/client/assets/js/{FilePreview-CJrVRPRs.js → FilePreview-B7WqYvZs.js} +2 -2
  15. package/dist/client/assets/js/{FileRenameModal-mghyEXU4.js → FileRenameModal-82RkAZkd.js} +1 -1
  16. package/dist/client/assets/js/{FilesPanel-B9cKB5lX.js → FilesPanel-BHcg6CpC.js} +2 -2
  17. package/dist/client/assets/js/{FilesView-iKZu70E9.js → FilesView-Dl15WTar.js} +2 -2
  18. package/dist/client/assets/js/{GlobalAgentView-JZsss0gx.js → GlobalAgentView-dxEX611f.js} +1 -1
  19. package/dist/client/assets/js/{GlobalPendingActions-BRQIt5vl.js → GlobalPendingActions-CeK96C3G.js} +1 -1
  20. package/dist/client/assets/js/{GroupChatLinkView-CNrV8lnT.js → GroupChatLinkView-CJhI9DVE.js} +1 -1
  21. package/dist/client/assets/js/{GroupChatPanel-WK4zBasl.js → GroupChatPanel-CLa3s08V.js} +3 -3
  22. package/dist/client/assets/js/{GroupChatView-BlMUD1MW.js → GroupChatView-CUwvu-6F.js} +1 -1
  23. package/dist/client/assets/js/{HistoryMessageList-D8zoQ1Zs.js → HistoryMessageList-BdD8GJYM.js} +1 -1
  24. package/dist/client/assets/js/{HistoryView-Bpr8N2lC.js → HistoryView-Ro92tP5R.js} +1 -1
  25. package/dist/client/assets/js/{HtmlFilePreview-Bj3_-hMo.js → HtmlFilePreview-xYn7YtmC.js} +1 -1
  26. package/dist/client/assets/js/{JobsView-CZK26gTw.js → JobsView-BaNA1Yaa.js} +2 -2
  27. package/dist/client/assets/js/{JourneyView-BPUsLj4o.js → JourneyView-Bw-05mCF.js} +1 -1
  28. package/dist/client/assets/js/{KanbanView-B7d-2_z9.js → KanbanView-BYC32l2Q.js} +1 -1
  29. package/dist/client/assets/js/{LoginView-BpYyv831.js → LoginView-KrpCkwOr.js} +1 -1
  30. package/dist/client/assets/js/{LogsView-CabFHk0v.js → LogsView-Dgm4v5sN.js} +1 -1
  31. package/dist/client/assets/js/{MarkdownRenderer-CVtmHZwc.js → MarkdownRenderer-BIPowjr-.js} +3 -3
  32. package/dist/client/assets/js/{McpManagerView-C-ou8vf3.js → McpManagerView-DTtkUIvq.js} +1 -1
  33. package/dist/client/assets/js/{MemoryView-QGFW4iZo.js → MemoryView-BnL7xzux.js} +2 -2
  34. package/dist/client/assets/js/{MessageList-DZR-TFjD.js → MessageList-5tytzhb0.js} +3 -3
  35. package/dist/client/assets/js/{ModelsView-DiWdSWOW.js → ModelsView-ComCz0Ce.js} +1 -1
  36. package/dist/client/assets/js/{OutlinePanel-Dlr5svMY.js → OutlinePanel-CF_XPCRn.js} +1 -1
  37. package/dist/client/assets/js/{PageSidebarFooter-Bic1fUmG.js → PageSidebarFooter-dvLzcTIm.js} +1 -1
  38. package/dist/client/assets/js/{PdfFilePreview-Dkpan1ay.js → PdfFilePreview-COOAoJ4V.js} +2 -2
  39. package/dist/client/assets/js/{PerformanceView-LrZaED_Z.js → PerformanceView-D6dKifJh.js} +1 -1
  40. package/dist/client/assets/js/{PetdexView-Bv8RioGL.js → PetdexView-CmvzDYwf.js} +1 -1
  41. package/dist/client/assets/js/{PluginsView-CbtdIGlq.js → PluginsView-zJV9FE9c.js} +1 -1
  42. package/dist/client/assets/js/{PptxFilePreview-5if_GbU6.js → PptxFilePreview-dC4JxV6j.js} +2 -2
  43. package/dist/client/assets/js/{ProfileAvatar-DI9ciJxS.js → ProfileAvatar-C8xoALCI.js} +1 -1
  44. package/dist/client/assets/js/{ProfilesView-C-FSiKMU.js → ProfilesView-CxVxJRN_.js} +1 -1
  45. package/dist/client/assets/js/{ProviderConfigurationPrompt-BUoWC41Y.js → ProviderConfigurationPrompt-zwk1UwoP.js} +1 -1
  46. package/dist/client/assets/js/{SessionSearchModal-CEKvSihp.js → SessionSearchModal-DhwGsV-i.js} +1 -1
  47. package/dist/client/assets/js/{SettingRow-CSfiJmxx.js → SettingRow-DHqhLX3M.js} +1 -1
  48. package/dist/client/assets/js/{SettingsCircuitBadge-DHIEFyTR.js → SettingsCircuitBadge-CnWSfQZd.js} +1 -1
  49. package/dist/client/assets/js/{SettingsView-DbNJroV3.js → SettingsView-Cbroga25.js} +1 -1
  50. package/dist/client/assets/js/{SharedGroupChatView-CTYjqWcO.js → SharedGroupChatView-DXfqtQ33.js} +1 -1
  51. package/dist/client/assets/js/{SkillsUsageView-BqZ3GtfT.js → SkillsUsageView-C34i3lOQ.js} +1 -1
  52. package/dist/client/assets/js/{SkillsView-Bhla7821.js → SkillsView-DRG_1esx.js} +2 -2
  53. package/dist/client/assets/js/{SpreadsheetFilePreview-CGK8HDAx.js → SpreadsheetFilePreview-DRw4kIx5.js} +1 -1
  54. package/dist/client/assets/js/{TerminalPanel-CtBTLOwq.js → TerminalPanel-Da1nL9P8.js} +1 -1
  55. package/dist/client/assets/js/{TerminalView-BID7fupB.js → TerminalView-B6z-VaGq.js} +1 -1
  56. package/dist/client/assets/js/{ThemeView-Cx3ucIus.js → ThemeView-CAaJ9MH-.js} +1 -1
  57. package/dist/client/assets/js/{UsageView-ByGCsw7o.js → UsageView-B_hLsp0k.js} +1 -1
  58. package/dist/client/assets/js/{VersionPreviewView-DiAK1ind.js → VersionPreviewView-DKXL6anl.js} +1 -1
  59. package/dist/client/assets/js/{WebPet-CdIqrnp1.js → WebPet-BUvrfjpq.js} +1 -1
  60. package/dist/client/assets/js/{WorkflowView-DmBOhSuq.js → WorkflowView-r46Ap9FY.js} +1 -1
  61. package/dist/client/assets/js/{WorkspaceDiffPreview-dHIGp-9F.js → WorkspaceDiffPreview-EwZAE18F.js} +2 -2
  62. package/dist/client/assets/js/{abap-Dj8IFKiF.js → abap-C7gkFu-A.js} +1 -1
  63. package/dist/client/assets/js/{aiden0z-pptx-renderer.es-6vi5-jAN.js → aiden0z-pptx-renderer.es-DOpVaH_k.js} +1 -1
  64. package/dist/client/assets/js/{apex-C3INPUEt.js → apex-DZOtRowu.js} +1 -1
  65. package/dist/client/assets/js/{ar-Gk9y3ZfO.js → ar-8iThLSJQ.js} +1 -1
  66. package/dist/client/assets/js/architecture-7EHR7CIX-BrfhYGuP.js +1 -0
  67. package/dist/client/assets/js/{architectureDiagram-3BPJPVTR-DLZYeivB.js → architectureDiagram-3BPJPVTR-DEsTTzKd.js} +1 -1
  68. package/dist/client/assets/js/{auth-D1ZFqv22.js → auth-B52zm2Ir.js} +1 -1
  69. package/dist/client/assets/js/{azcli-UBzLhJq5.js → azcli-KxuicZQh.js} +1 -1
  70. package/dist/client/assets/js/{bat-P3O4jldt.js → bat-DfFP4HF-.js} +1 -1
  71. package/dist/client/assets/js/{bicep-DdQR9RxE.js → bicep-Co4bntVh.js} +1 -1
  72. package/dist/client/assets/js/{blockDiagram-GPEHLZMM-UWFo8sm5.js → blockDiagram-GPEHLZMM-NsxYeUKd.js} +1 -1
  73. package/dist/client/assets/js/{c4Diagram-AAUBKEIU-jgyj0wOb.js → c4Diagram-AAUBKEIU-D68asSzm.js} +1 -1
  74. package/dist/client/assets/js/{cameligo-Bb4ubW_C.js → cameligo-Xi0l_9Wr.js} +1 -1
  75. package/dist/client/assets/js/{chat-DdHii4Qz.js → chat-fUZW3YFa.js} +1 -1
  76. package/dist/client/assets/js/{chat-input-height-CSPwB9it.js → chat-input-height-lvFawuv9.js} +1 -1
  77. package/dist/client/assets/js/{chat-timestamp-DGQ8fmtT.js → chat-timestamp-4wWFcZWv.js} +1 -1
  78. package/dist/client/assets/js/{chunk-2J33WTMH-Br9OWF5a.js → chunk-2J33WTMH-CEU5sLIh.js} +1 -1
  79. package/dist/client/assets/js/{chunk-3OPIFGDE-Cb40LuI4.js → chunk-3OPIFGDE-DEhbKkCl.js} +1 -1
  80. package/dist/client/assets/js/{chunk-4BX2VUAB-jYtdiafd.js → chunk-4BX2VUAB-OIZUstuy.js} +1 -1
  81. package/dist/client/assets/js/{chunk-55IACEB6-CBtymeHY.js → chunk-55IACEB6-DQHKZCBG.js} +1 -1
  82. package/dist/client/assets/js/{chunk-5ZQYHXKU-yj9xqmex.js → chunk-5ZQYHXKU-BU3pQVVl.js} +1 -1
  83. package/dist/client/assets/js/{chunk-727SXJPM-er_5tB5X.js → chunk-727SXJPM-jj97gdnP.js} +1 -1
  84. package/dist/client/assets/js/{chunk-AQP2D5EJ-C4mDD6xK.js → chunk-AQP2D5EJ-jv-oWlkb.js} +1 -1
  85. package/dist/client/assets/js/{chunk-BSJP7CBP-QZesZe57.js → chunk-BSJP7CBP-DkKsepNF.js} +1 -1
  86. package/dist/client/assets/js/{chunk-CSCIHK7Q-5LH118bT.js → chunk-CSCIHK7Q-CLgoBoCF.js} +3 -3
  87. package/dist/client/assets/js/{chunk-FMBD7UC4-CQho6QZ5.js → chunk-FMBD7UC4-Bx1bCKUR.js} +1 -1
  88. package/dist/client/assets/js/{chunk-KSCS5N6A-DONM1Omv.js → chunk-KSCS5N6A-CZHZ6pBd.js} +1 -1
  89. package/dist/client/assets/js/{chunk-L5ZTLDWV-FN_zFWkp.js → chunk-L5ZTLDWV-dz9D3kOb.js} +1 -1
  90. package/dist/client/assets/js/{chunk-LZXEDZCA-CEEUVvpS.js → chunk-LZXEDZCA-CQiSQehC.js} +2 -2
  91. package/dist/client/assets/js/{chunk-ND2GUHAM-DWckpxQD.js → chunk-ND2GUHAM-mWODKb8v.js} +1 -1
  92. package/dist/client/assets/js/{chunk-NZK2D7GU-0mKZmkuV.js → chunk-NZK2D7GU-ivCkjCOR.js} +1 -1
  93. package/dist/client/assets/js/{chunk-O5CBEL6O-DIDAOkT_.js → chunk-O5CBEL6O-BRUisK47.js} +1 -1
  94. package/dist/client/assets/js/{chunk-QZHKN3VN-D3c-TMz-.js → chunk-QZHKN3VN-BHjgTrzY.js} +1 -1
  95. package/dist/client/assets/js/{chunk-WU5MYG2G-BZvSpwm4.js → chunk-WU5MYG2G-CNW1rcpL.js} +1 -1
  96. package/dist/client/assets/js/{chunk-XPW4576I-xdyJtk-s.js → chunk-XPW4576I-DP3dJbOu.js} +1 -1
  97. package/dist/client/assets/js/classDiagram-4FO5ZUOK-BVBBe3DQ.js +1 -0
  98. package/dist/client/assets/js/classDiagram-v2-Q7XG4LA2-DJUe3i9Y.js +1 -0
  99. package/dist/client/assets/js/{clipboard-DQ_A8ns-.js → clipboard-DHZFaAvO.js} +1 -1
  100. package/dist/client/assets/js/{clipboard-files-bDrcGKPe.js → clipboard-files-CBDy-02Y.js} +1 -1
  101. package/dist/client/assets/js/{clojure-ku7aCU1_.js → clojure-DuyGwS8X.js} +1 -1
  102. package/dist/client/assets/js/{coding-agents-DfHyBvky.js → coding-agents-BNTHD6kd.js} +1 -1
  103. package/dist/client/assets/js/{codingAgentProviders-BM18FAW9.js → codingAgentProviders-DM_ouxbL.js} +1 -1
  104. package/dist/client/assets/js/{coffee-DnRIdJlY.js → coffee-C5p7vzpa.js} +1 -1
  105. package/dist/client/assets/js/{completion-notification-XxjbntI8.js → completion-notification-CzdnhuX3.js} +1 -1
  106. package/dist/client/assets/js/{cose-bilkent-S5V4N54A-w891sIF1.js → cose-bilkent-S5V4N54A-De_ZdqY0.js} +1 -1
  107. package/dist/client/assets/js/{cpp-CN8i6ISX.js → cpp-II5hDbTe.js} +1 -1
  108. package/dist/client/assets/js/{csharp-B-fxig7O.js → csharp-D0POzSpv.js} +1 -1
  109. package/dist/client/assets/js/{csp-Bar9LGt4.js → csp-CwtuRkR3.js} +1 -1
  110. package/dist/client/assets/js/{css-DFtC5xZN.js → css-Dc2fJIqQ.js} +1 -1
  111. package/dist/client/assets/js/{cssMode-DH5XKKL2.js → cssMode-CC6jRvHF.js} +1 -1
  112. package/dist/client/assets/js/{cypher-BkJexWsv.js → cypher-DBcQoWDH.js} +1 -1
  113. package/dist/client/assets/js/{cytoscape.esm-BDsvr8Aq.js → cytoscape.esm-C9FMRqxM.js} +1 -1
  114. package/dist/client/assets/js/{dagre-BM42HDAG-BuT885pa.js → dagre-BM42HDAG-CvJIC410.js} +1 -1
  115. package/dist/client/assets/js/{dagre-BVUDh8Sh.js → dagre-BtgEsAtK.js} +1 -1
  116. package/dist/client/assets/js/{dart-B7W8hAtN.js → dart-Jf_Hmp2o.js} +1 -1
  117. package/dist/client/assets/js/{de-LDpd8WHJ.js → de-7hLSwCEx.js} +1 -1
  118. package/dist/client/assets/js/{defineProperty-DdPu4ZVv.js → defineProperty-DHkErCmG.js} +1 -1
  119. package/dist/client/assets/js/{desktop-browser-xrRFPNUg.js → desktop-browser-C6AhY0uu.js} +1 -1
  120. package/dist/client/assets/js/{diagram-2AECGRRQ-B1sSf-09.js → diagram-2AECGRRQ-CvPeU5Lm.js} +1 -1
  121. package/dist/client/assets/js/{diagram-5GNKFQAL-BffX22pf.js → diagram-5GNKFQAL-CBniYlkH.js} +1 -1
  122. package/dist/client/assets/js/{diagram-KO2AKTUF-D8QvpUpn.js → diagram-KO2AKTUF-C_yFaVRj.js} +1 -1
  123. package/dist/client/assets/js/{diagram-LMA3HP47-DkG7p3lQ.js → diagram-LMA3HP47-BzM1IxNe.js} +1 -1
  124. package/dist/client/assets/js/{diagram-OG6HWLK6-RjvNNvXM.js → diagram-OG6HWLK6-yvmf_3ax.js} +1 -1
  125. package/dist/client/assets/js/{dist-Bk0VKtV3.js → dist-BHzBn3v7.js} +1 -1
  126. package/dist/client/assets/js/{dockerfile-C4m7j8sy.js → dockerfile-J3d6ZPDJ.js} +1 -1
  127. package/dist/client/assets/js/{docx-preview-BpTW-GN7.js → docx-preview-Rqt8wMjQ.js} +1 -1
  128. package/dist/client/assets/js/{download-CX8EG48r.js → download-xhRMWMda.js} +1 -1
  129. package/dist/client/assets/js/{ecl-EHV358Ls.js → ecl-XnlT0p97.js} +1 -1
  130. package/dist/client/assets/js/{editor.api2-CnHBqh_d.js → editor.api2-ChO5nUQb.js} +1 -1
  131. package/dist/client/assets/js/{elixir-DLfp2Dwn.js → elixir-BEJbxH-B.js} +1 -1
  132. package/dist/client/assets/js/{en-D6VVFwFU.js → en-D2WSXgkM.js} +1 -1
  133. package/dist/client/assets/js/{erDiagram-TEJ5UH35-CLlLC6xx.js → erDiagram-TEJ5UH35-DZysD9r9.js} +1 -1
  134. package/dist/client/assets/js/{es-BIMLuyVP.js → es-B7Mq1P0U.js} +1 -1
  135. package/dist/client/assets/js/{esm-C8D4M0Yn.js → esm-DnZPPtmx.js} +1 -1
  136. package/dist/client/assets/js/eventmodeling-FCH6USID-vlE3-g2j.js +1 -0
  137. package/dist/client/assets/js/{file-preview-BvgwVZXh.js → file-preview-C417aixJ.js} +1 -1
  138. package/dist/client/assets/js/{files-CJkCqsUx.js → files-DjI-npgn.js} +1 -1
  139. package/dist/client/assets/js/{flow9-CtBaUnAi.js → flow9-j5XT_8TQ.js} +1 -1
  140. package/dist/client/assets/js/{flowDiagram-I6XJVG4X-VTRTPnqD.js → flowDiagram-I6XJVG4X-Dt5ZtyHz.js} +1 -1
  141. package/dist/client/assets/js/{fr-C2lf0cY2.js → fr-DvClrDOw.js} +1 -1
  142. package/dist/client/assets/js/{freemarker2-XLeMvhl_.js → freemarker2-BzCf_0SN.js} +1 -1
  143. package/dist/client/assets/js/{fsharp-Db0uaBQv.js → fsharp-ClU_Sdjr.js} +1 -1
  144. package/dist/client/assets/js/{ganttDiagram-6RSMTGT7-CdKcIZ8_.js → ganttDiagram-6RSMTGT7-Bca3rPWi.js} +1 -1
  145. package/dist/client/assets/js/gitGraph-WXDBUCRP-Cyd4P6XH.js +1 -0
  146. package/dist/client/assets/js/{gitGraphDiagram-PVQCEYII-Bcuyw6fo.js → gitGraphDiagram-PVQCEYII-Co29qnTg.js} +1 -1
  147. package/dist/client/assets/js/{go-DwaTlB-B.js → go-D3iUyCM0.js} +1 -1
  148. package/dist/client/assets/js/{graphlib-vAI4Pw7R.js → graphlib-Bln6qd-Z.js} +1 -1
  149. package/dist/client/assets/js/{graphql-Cf2XhNJR.js → graphql-z8koqyyL.js} +1 -1
  150. package/dist/client/assets/js/{group-agent-avatar-CPehpiK0.js → group-agent-avatar-CwqtaKGw.js} +1 -1
  151. package/dist/client/assets/js/{group-chat-CY62vc77.js → group-chat-Buz8HP-N.js} +1 -1
  152. package/dist/client/assets/js/{group-chat-xkdjC2Jt.js → group-chat-CgFAwCtr.js} +1 -1
  153. package/dist/client/assets/js/{group-chat-agent-link-DdSNKasF.js → group-chat-agent-link-N5IFeN_j.js} +1 -1
  154. package/dist/client/assets/js/{handlebars-CNEKu_p8.js → handlebars-C_JvhUYs.js} +1 -1
  155. package/dist/client/assets/js/{hcl-6UZbq6h2.js → hcl-X7TzviIX.js} +1 -1
  156. package/dist/client/assets/js/{highlight-DwtBT6t1.js → highlight-C4yUBxwQ.js} +1 -1
  157. package/dist/client/assets/js/{html-DfSIHhKA.js → html-B-rCQB0N.js} +1 -1
  158. package/dist/client/assets/js/{htmlMode-iGw9-O-W.js → htmlMode-CAeEf_yf.js} +1 -1
  159. package/dist/client/assets/js/{index-DnjQJzX4.js → index-DN4SafrP.js} +5 -5
  160. package/dist/client/assets/js/info-J43DQDTF-B9tkQ2Sb.js +1 -0
  161. package/dist/client/assets/js/{infoDiagram-5YYISTIA-85450Zam.js → infoDiagram-5YYISTIA-BWQGayms.js} +1 -1
  162. package/dist/client/assets/js/{ini-8em8V_Af.js → ini-LTHHN4J-.js} +1 -1
  163. package/dist/client/assets/js/{ishikawaDiagram-YF4QCWOH-BZ4az7UA.js → ishikawaDiagram-YF4QCWOH-Dhuplz_z.js} +1 -1
  164. package/dist/client/assets/js/{ja-C1bBXgr_.js → ja-D7BeX2_D.js} +1 -1
  165. package/dist/client/assets/js/{java-CP1MdIkO.js → java-BRFX-ya0.js} +1 -1
  166. package/dist/client/assets/js/{javascript-Cr8_LHYa.js → javascript-ZXiVmjXn.js} +1 -1
  167. package/dist/client/assets/js/{journeyDiagram-JHISSGLW-DGMB8Tgc.js → journeyDiagram-JHISSGLW-CJeatAU9.js} +1 -1
  168. package/dist/client/assets/js/{jsonMode-HCZ-1lFH.js → jsonMode-C6FcMe0o.js} +1 -1
  169. package/dist/client/assets/js/{jszip.min-BkR6b8DY.js → jszip.min-skZCUzWf.js} +1 -1
  170. package/dist/client/assets/js/{julia-DMTMxa5q.js → julia-Bph8N3CL.js} +1 -1
  171. package/dist/client/assets/js/{kanban-definition-UN3LZRKU-F5cH_RpB.js → kanban-definition-UN3LZRKU-tvWuOdSr.js} +1 -1
  172. package/dist/client/assets/js/{katex-CYbEJAbZ.js → katex-hSGJNERm.js} +1 -1
  173. package/dist/client/assets/js/{ko-qgOeHd8L.js → ko-BsVa-If_.js} +1 -1
  174. package/dist/client/assets/js/{kotlin-Blzus47W.js → kotlin-_c4-tPQp.js} +1 -1
  175. package/dist/client/assets/js/{less-DWCHpDyf.js → less-5oVo4jfQ.js} +1 -1
  176. package/dist/client/assets/js/{lexon-YXdlYGbJ.js → lexon-DE4YtGwF.js} +1 -1
  177. package/dist/client/assets/js/{liquid-DSQgvRwe.js → liquid-BGfieGMG.js} +1 -1
  178. package/dist/client/assets/js/{lspLanguageFeatures-0Hx2Vnc-.js → lspLanguageFeatures-DU_1H2uW.js} +1 -1
  179. package/dist/client/assets/js/{lua-Cyv3mTkg.js → lua-7WJSZJqD.js} +1 -1
  180. package/dist/client/assets/js/{m3-CPY3Ym7_.js → m3-gZlfoR19.js} +1 -1
  181. package/dist/client/assets/js/{markdown-DaPQ1nuG.js → markdown-BYF71orA.js} +1 -1
  182. package/dist/client/assets/js/{mdx-BqA6Xr9V.js → mdx-CunEIV3g.js} +1 -1
  183. package/dist/client/assets/js/{mermaid-parser.core-D4HRUOce.js → mermaid-parser.core-DU_SX15F.js} +3 -3
  184. package/dist/client/assets/js/{mermaid.core-w6kHmgOG.js → mermaid.core-8vsbhG5J.js} +3 -3
  185. package/dist/client/assets/js/{message-scroll-position-C5yRCyBU.js → message-scroll-position-C9_YO3pX.js} +2 -2
  186. package/dist/client/assets/js/{mindmap-definition-RKZ34NQL-CnzhnJ7Z.js → mindmap-definition-RKZ34NQL-HPtlKqL1.js} +1 -1
  187. package/dist/client/assets/js/{mips-BfqBfLvN.js → mips-DXkvw9aZ.js} +1 -1
  188. package/dist/client/assets/js/{models-wrytxWnf.js → models-BILDy2sV.js} +1 -1
  189. package/dist/client/assets/js/{monaco.contribution-Bc-DesyO.js → monaco.contribution-DDqeHGl3.js} +2 -2
  190. package/dist/client/assets/js/{msdax-DgMip49g.js → msdax-BbHEBDvP.js} +1 -1
  191. package/dist/client/assets/js/{mysql-DPUvF1g2.js → mysql-7I1rlwh7.js} +1 -1
  192. package/dist/client/assets/js/{objective-c-BQ3llrPW.js → objective-c-Dk03REAv.js} +1 -1
  193. package/dist/client/assets/js/packet-YPE3B663-DlTFK3Wo.js +1 -0
  194. package/dist/client/assets/js/{pascal-bFWHV7MZ.js → pascal-BCfNkzYY.js} +1 -1
  195. package/dist/client/assets/js/{pascaligo-C8Qza2pK.js → pascaligo-D-DslS98.js} +1 -1
  196. package/dist/client/assets/js/{pdf-Cb7x495t.js → pdf-B_OYWxSy.js} +1 -1
  197. package/dist/client/assets/js/{pdf.worker.min-DDUKJ6cJ.js → pdf.worker.min--q2RLEHa.js} +1 -1
  198. package/dist/client/assets/js/{perl-x25gw0_p.js → perl-MUnuTclx.js} +1 -1
  199. package/dist/client/assets/js/{pets-BfRsvl7D.js → pets-D74G2jqA.js} +1 -1
  200. package/dist/client/assets/js/{pgsql-DAUcGeRq.js → pgsql-BxCBktNe.js} +1 -1
  201. package/dist/client/assets/js/{php-nri1eqb2.js → php-zp9UgH03.js} +1 -1
  202. package/dist/client/assets/js/pie-LRSECV5Y-BtnBGhFZ.js +1 -0
  203. package/dist/client/assets/js/{pieDiagram-4H26LBE5-4LODdtT_.js → pieDiagram-4H26LBE5-CG8_pcHr.js} +1 -1
  204. package/dist/client/assets/js/{pla-CHi5LWNL.js → pla-DGCtmYZC.js} +1 -1
  205. package/dist/client/assets/js/{postiats-Bk7jD0AA.js → postiats-DHSW8gnY.js} +1 -1
  206. package/dist/client/assets/js/{powerquery-UTqJ0Vs7.js → powerquery-BGsPEmJe.js} +1 -1
  207. package/dist/client/assets/js/{powershell-CuPY3Rqk.js → powershell-BItlb0hE.js} +1 -1
  208. package/dist/client/assets/js/{profiles-D-vlI-Ec.js → profiles-BK5JKD7h.js} +1 -1
  209. package/dist/client/assets/js/{protobuf-Be4AIz9j.js → protobuf-BIhm6JYx.js} +1 -1
  210. package/dist/client/assets/js/{pt-D7_udWb3.js → pt-BSORCDMm.js} +1 -1
  211. package/dist/client/assets/js/{pug-CZFx15Ey.js → pug-BtnM7KZj.js} +1 -1
  212. package/dist/client/assets/js/{python-BgRg6Ez6.js → python-DxzTx1Q_.js} +1 -1
  213. package/dist/client/assets/js/{qsharp-BiBiLhRS.js → qsharp-B_8MSfaB.js} +1 -1
  214. package/dist/client/assets/js/{quadrantDiagram-W4KKPZXB-g_q9-dXx.js → quadrantDiagram-W4KKPZXB-CsbkMYuV.js} +1 -1
  215. package/dist/client/assets/js/{r-DM7NVSbZ.js → r-kvKC59jk.js} +1 -1
  216. package/dist/client/assets/js/radar-GUYGQ44K-BTKMKX4G.js +1 -0
  217. package/dist/client/assets/js/{razor-CiWy0jCW.js → razor-BwZ0MkaL.js} +1 -1
  218. package/dist/client/assets/js/{redis-BR2LPmFL.js → redis-5j1U_i85.js} +1 -1
  219. package/dist/client/assets/js/{redshift-B0sdAV16.js → redshift-CX1dFLA1.js} +1 -1
  220. package/dist/client/assets/js/{requirementDiagram-4Y6WPE33-EedCclad.js → requirementDiagram-4Y6WPE33-CKC7CQCX.js} +1 -1
  221. package/dist/client/assets/js/{restructuredtext-kQOBLN1M.js → restructuredtext-MV0-Naya.js} +1 -1
  222. package/dist/client/assets/js/{rough.esm-Dyx_2DON.js → rough.esm-CV1rL6PC.js} +1 -1
  223. package/dist/client/assets/js/{ru-CVQQmreT.js → ru-JsH6TKyg.js} +1 -1
  224. package/dist/client/assets/js/{ruby-CbdJXy6J.js → ruby-Bhyejf9X.js} +1 -1
  225. package/dist/client/assets/js/{rust-DZanYksk.js → rust-CR8d_FC1.js} +1 -1
  226. package/dist/client/assets/js/{sankeyDiagram-5OEKKPKP-DFC0nzsd.js → sankeyDiagram-5OEKKPKP-CKlqlvAe.js} +1 -1
  227. package/dist/client/assets/js/{sb-C5-WiqDZ.js → sb-hLW2EM2L.js} +1 -1
  228. package/dist/client/assets/js/{scala-Bk7i9nV-.js → scala-DVUhALEZ.js} +1 -1
  229. package/dist/client/assets/js/{scheme-CaZSWmJ2.js → scheme-BS6yNanr.js} +1 -1
  230. package/dist/client/assets/js/{scss-ByOYuc7K.js → scss-BfoRsElt.js} +1 -1
  231. package/dist/client/assets/js/{sequenceDiagram-3UESZ5HK-hWjPfqXt.js → sequenceDiagram-3UESZ5HK-CTimhD6H.js} +1 -1
  232. package/dist/client/assets/js/{session-browser-prefs-Br8OYA4_.js → session-browser-prefs-BT1woDux.js} +1 -1
  233. package/dist/client/assets/js/{sessions-iGK9S6zk.js → sessions-IkLKgnN6.js} +1 -1
  234. package/dist/client/assets/js/{settings-pbanANH0.js → settings-roYY6G3W.js} +1 -1
  235. package/dist/client/assets/js/{shell-Di0TEySc.js → shell-BO_Lyczz.js} +1 -1
  236. package/dist/client/assets/js/{skills-DC-UPcXj.js → skills-a5LPwmiT.js} +1 -1
  237. package/dist/client/assets/js/{solidity-BNTjAuuA.js → solidity-D3T2Ki4l.js} +1 -1
  238. package/dist/client/assets/js/{sophia-LY__8Yob.js → sophia-iJmIEvi8.js} +1 -1
  239. package/dist/client/assets/js/{sparql-CWnLfgGS.js → sparql-C2HCEExr.js} +1 -1
  240. package/dist/client/assets/js/{sql-B0ypQ9lR.js → sql-DM6_3GBc.js} +1 -1
  241. package/dist/client/assets/js/{src-BihFroE7.js → src-DD_TpJde.js} +1 -1
  242. package/dist/client/assets/js/{st-CqVFKTbZ.js → st-DSb39Fm5.js} +1 -1
  243. package/dist/client/assets/js/{stateDiagram-AJRCARHV-B7wEnYVe.js → stateDiagram-AJRCARHV-DwBGmBj6.js} +1 -1
  244. package/dist/client/assets/js/stateDiagram-v2-BHNVJYJU-5bNcwBne.js +1 -0
  245. package/dist/client/assets/js/{style-DDAg_jVj.js → style-B5xXhBlp.js} +1 -1
  246. package/dist/client/assets/js/{swift-B4ZZmDxc.js → swift-DrZYSZK3.js} +1 -1
  247. package/dist/client/assets/js/{systemverilog-zLt-O1mT.js → systemverilog-BAWNCaf6.js} +1 -1
  248. package/dist/client/assets/js/{tcl-DCSZmA-l.js → tcl-DY15ex6v.js} +1 -1
  249. package/dist/client/assets/js/{timeline-definition-PNZ67QCA-BN_LfleE.js → timeline-definition-PNZ67QCA-B8xuIu6g.js} +1 -1
  250. package/dist/client/assets/js/treeView-BLDUP644-DvZPUnGM.js +1 -0
  251. package/dist/client/assets/js/treemap-LRROVOQU-Bis1djYh.js +1 -0
  252. package/dist/client/assets/js/{tsMode-BjUcuHrq.js → tsMode-BE8JCSCE.js} +1 -1
  253. package/dist/client/assets/js/{ttsHelpers-BLunFYsq.js → ttsHelpers-BLNiQExI.js} +1 -1
  254. package/dist/client/assets/js/{twig-CuJlVpUG.js → twig-BpHF_18K.js} +1 -1
  255. package/dist/client/assets/js/{typescript-De40YVFt.js → typescript-FQ3z9hVG.js} +1 -1
  256. package/dist/client/assets/js/{typespec-8QcsIc3c.js → typespec-BKvcn6aE.js} +1 -1
  257. package/dist/client/assets/js/{useSttSettings-B1-KXN44.js → useSttSettings-DHX06G8A.js} +1 -1
  258. package/dist/client/assets/js/{vb-DEGTdhxf.js → vb-B74ucE43.js} +1 -1
  259. package/dist/client/assets/js/{vennDiagram-CIIHVFJN-hL8ax7wF.js → vennDiagram-CIIHVFJN-DtEu04QR.js} +1 -1
  260. package/dist/client/assets/js/wardley-L42UT6IY-CD4dIN63.js +1 -0
  261. package/dist/client/assets/js/{wardleyDiagram-YWT4CUSO-BIR-RA6Y.js → wardleyDiagram-YWT4CUSO-DdNKCPsp.js} +1 -1
  262. package/dist/client/assets/js/{wgsl-CmbiucmY.js → wgsl-DEf5Vdqv.js} +1 -1
  263. package/dist/client/assets/js/{workers-BgWBq4qY.js → workers-BbaiLVxx.js} +1 -1
  264. package/dist/client/assets/js/{workflow-socket-DZ9Ceffc.js → workflow-socket-DH402vxO.js} +1 -1
  265. package/dist/client/assets/js/{xml-SZLdwDmk.js → xml-zjE51I7v.js} +1 -1
  266. package/dist/client/assets/js/{xterm-D6CotCNH.js → xterm-Djy4rCx0.js} +1 -1
  267. package/dist/client/assets/js/{xychartDiagram-2RQKCTM6-DHa486uP.js → xychartDiagram-2RQKCTM6-CKqN7g7r.js} +1 -1
  268. package/dist/client/assets/js/{yaml-CgQpCgM5.js → yaml-DabeGoTc.js} +1 -1
  269. package/dist/client/assets/js/{zh-BDlMioZr.js → zh-CI4-L3JY.js} +1 -1
  270. package/dist/client/assets/js/{zh-TW-DTbLWR1A.js → zh-TW-wYlj-uOZ.js} +1 -1
  271. package/dist/client/index.html +1 -1
  272. package/dist/server/index.js +3 -3
  273. package/dist/server/openapi.json +1 -1
  274. package/package.json +9 -1
  275. package/dist/client/assets/js/architecture-7EHR7CIX-Cl4Qi40R.js +0 -1
  276. package/dist/client/assets/js/classDiagram-4FO5ZUOK-DC0BcY8x.js +0 -1
  277. package/dist/client/assets/js/classDiagram-v2-Q7XG4LA2-BfDDH_fm.js +0 -1
  278. package/dist/client/assets/js/eventmodeling-FCH6USID-Bgzwnvkn.js +0 -1
  279. package/dist/client/assets/js/gitGraph-WXDBUCRP-CwFrpI3e.js +0 -1
  280. package/dist/client/assets/js/info-J43DQDTF-wMwkmIWM.js +0 -1
  281. package/dist/client/assets/js/packet-YPE3B663-DYmKXJOE.js +0 -1
  282. package/dist/client/assets/js/pie-LRSECV5Y-Dx0hbcjV.js +0 -1
  283. package/dist/client/assets/js/radar-GUYGQ44K-D-t-QJhi.js +0 -1
  284. package/dist/client/assets/js/stateDiagram-v2-BHNVJYJU-CoMhBVvo.js +0 -1
  285. package/dist/client/assets/js/treeView-BLDUP644-CMJGhbWk.js +0 -1
  286. package/dist/client/assets/js/treemap-LRROVOQU-_j4KoVDh.js +0 -1
  287. package/dist/client/assets/js/wardley-L42UT6IY-BeOvmJoM.js +0 -1
@@ -1 +1 @@
1
- var e={browser:{title:"Браузер",settings:"Настройки браузера",desktopOnly:"Встроенный браузер доступен только в Hermes Studio Desktop.",newTab:"Новая вкладка",back:"Назад",forward:"Вперёд",reload:"Обновить",stop:"Остановить",addressPlaceholder:"Поиск или адрес",selectElement:"Выбрать элемент",selectRegion:"Выбрать область",annotationPlaceholder:"Опишите, что Agent должен проверить или изменить…",selectionData:"Данные выбора браузера",annotationAdded:"Снимок добавлен в поле чата",annotationCount:"Аннотаций: {count}",annotationLabel:"Аннотация {index}",clearAnnotations:"Очистить аннотации",finishAnnotation:"Готово",agent:"Agent",agentControlling:"{agent} управляет вкладкой",agentWaiting:"{agent} ожидает вашего подтверждения",takeOver:"Перехватить",tabCrashed:"Эта вкладка аварийно завершилась.",recoverTab:"Перезагрузить",profiles:"Профили",profileName:"Имя профиля",addProfile:"Добавить профиль",currentProfile:"Активный профиль",switchProfile:"Сменить профиль",editProfile:"Изменить профиль",profileDirectory:"Каталог профиля",downloadDirectory:"Каталог загрузок",profileRootDirectory:"Корневой каталог профиля",chooseProfileRootDirectory:"Выбрать пустой каталог",profileRootDirectoryHint:"Выберите пустой каталог. Данные будут в {data}, загрузки — в {download}.",proxy:"Прокси",proxyMode:"Режим прокси",proxyDirect:"Прямое подключение",proxySystem:"Системный прокси",proxyCustom:"Свой прокси",proxyServer:"Прокси-сервер",proxyServerPlaceholder:"Например: http://127.0.0.1:7890 или socks5://127.0.0.1:1080",askBeforeDownload:"Всегда спрашивать место",downloadConflictPolicy:"Повторяющиеся имена",uniquifyDownloads:"Создать уникальное имя",askOnConflict:"Спросить при конфликте",downloads:"Загрузки",downloadStateProgressing:"Загрузка",downloadStateCompleted:"Завершено",downloadStateCancelled:"Отменено",downloadStateInterrupted:"Прервано",downloadStateBlocked:"Заблокировано",permissions:"Разрешения",permissionsHint:"Разрешения удалённых страниц по умолчанию запрещены и записываются здесь.",blocked:"Заблокировано",profileSwitchTitle:"Сменить профиль?",profileSwitchWarning:"Могут прерваться операции Agent: {agents}, загрузки: {downloads}, аннотации: {annotations}.",deleteProfileTitle:"Удалить профиль?",deleteProfileWarning:"Управляемые данные будут перемещены в корзину. Пользовательские каталоги сохранятся.",clearCache:"Очистить кэш",clearPermissionAudit:"Очистить журнал разрешений",clearSiteData:"Очистить данные сайтов",clearSiteDataWarning:"Удаляет входы, cookie и локальное хранилище выбранного профиля.",dataCleared:"Данные браузера очищены",loadFailed:"Не удалось запустить встроенный браузер"},login:{title:"Hermes Studio",description:"Введите имя пользователя и пароль для продолжения.",placeholder:"Токен доступа",submit:"Войти",tokenRequired:"Введите токен доступа",invalidToken:"Недействительный токен",connectionFailed:"Не удалось подключиться к серверу",passwordLogin:"Вход по паролю",tokenLogin:"Вход по токену",usernamePlaceholder:"Имя пользователя",passwordPlaceholder:"Пароль",defaultCredentialsHint:"Логин по умолчанию: admin, пароль по умолчанию: 123456",credentialsRequired:"Введите имя пользователя и пароль",invalidCredentials:"Неверное имя пользователя или пароль",tooManyAttempts:"Слишком много неудачных попыток входа, повторите попытку позже",desktopLockResetHint:"Too many failed login attempts. Open the system tray menu and choose Reset Login to reset the password.",sessionExpired:"Сеанс истёк, войдите снова",accessDenied:"У вас нет прав доступа к этому ресурсу",passwordMismatch:"Пароли не совпадают",passwordTooShort:"Длина пароля должна быть не менее 6 символов",setupSuccess:"Настройка входа по паролю выполнена успешно",passwordChanged:"Пароль успешно изменён",passwordRemoved:"Вход по паролю удалён",setupPassword:"Настроить вход по паролю",changePassword:"Изменить пароль",changeUsername:"Изменить имя пользователя",removePasswordLogin:"Удалить",username:"Имя пользователя",currentPassword:"Текущий пароль",newPassword:"Новый пароль",confirmPassword:"Подтвердите пароль",newUsername:"Новое имя пользователя",usernameChanged:"Имя пользователя успешно изменено",usernameTooShort:"Имя пользователя должно содержать не менее 2 символов",setupDescription:"Управление именем пользователя и паролем для входа.",removeConfirm:"Учётная запись пользователя должна сохранять вход по паролю.",passwordLoginNotConfigured:"Вход по паролю не настроен",passwordLoginConfigured:"Текущая учётная запись: {username}",defaultCredentialTitle:"Измените учётные данные по умолчанию",defaultCredentialMessage:"Текущая учётная запись всё ещё использует имя пользователя или пароль по умолчанию. Во избежание несанкционированного доступа, как можно скорее измените имя пользователя и пароль для этой учётной записи.",defaultCredentialAction:"Изменить",defaultCredentialLater:"Напомнить позже"},users:{title:"Управление учётными записями",description:"Создавайте пользователей, назначайте роли и управляйте доступом к конфигурациям для обычных администраторов.",create:"Создать пользователя",edit:"Редактировать пользователя",username:"Имя пользователя",role:"Роль",statusLabel:"Статус",profiles:"Доступные конфигурации",profilesPlaceholder:"Выберите доступные конфигурации",allProfiles:"Все конфигурации",noProfiles:"Нет связанных конфигураций",lastLogin:"Последний вход",newPasswordOptional:"Новый пароль (оставьте пустым, чтобы не менять)",loadFailed:"Не удалось загрузить список пользователей",deleteConfirm:"Подтвердите удаление этого пользователя?",enable:"Включить",disable:"Отключить",roles:{superAdmin:"Суперадминистратор",admin:"Администратор"},status:{active:"Включён",disabled:"Отключён"}},common:{loading:"Загрузка...",cancel:"Отмена",delete:"Удалить",retry:"Повторить",reset:"Сбросить",edit:"Редактировать",save:"Сохранить",saved:"Сохранено",saveFailed:"Ошибка сохранения",deleteFailed:"Ошибка удаления",ok:"ОК",copied:"Скопировано",copy:"Копировать",update:"Обновить",create:"Создать",noData:"Нет данных",expired:"Истёк",fetch:"Получить",add:"Добавить",enable:"Включить",disable:"Отключить",configured:"Настроено",notConfigured:"Не настроено",confirm:"Подтвердить",expand:"Развернуть",collapse:"Свернуть",start:"Запустить",stop:"Остановить"},sidebar:{chat:"Чат",backToChat:"Назад",search:"Поиск",apiRelay:"Ретранслятор API",history:"История",jobs:"Задачи",kanban:"Канбан",workflow:"Рабочий процесс",models:"Модели",profiles:"Профили",plugins:"Плагины",petdex:"Pets",skills:"Навыки",memory:"Память",logs:"Логи",usage:"Использование",performance:"Мониторинг производительности",journey:"Путь обучения",skillsUsage:"Использование навыков",channels:"Каналы",gateways:"Шлюзы",terminal:"Терминал",browser:"Браузер",singleChat:"Чат",globalAgent:"Global Agent",groupChat:"Групповой чат",files:"Файлы",devices:"Устройства",groupConversation:"Диалог",groupConversationShort:"Диалог",groupPlatform:"Платформа",groupAgent:"Агент",groupAgentShort:"Агент",groupSystem:"Система",groupSystemShort:"Система",groupMonitoring:"Мониторинг",groupMonitoringShort:"Мониторинг",groupTools:"Инструменты",theme:"Тема",settings:"Настройки",connected:"Подключено",disconnected:"Отключено",collapse:"Свернуть меню",expand:"Развернуть меню",updateTip:'Для обновления выполните в терминале "hermes-web-ui update"',updateVersion:"Обновить до версии v{version}",reloadClientVersion:"Обновить клиент до v{version}",updating:"Обновление...",updateSuccess:"Обновление успешно. Обновите страницу. Если долго не запускается, запустите вручную.",updateFailed:"Ошибка обновления",logout:"Выйти",nodeVersionWarning:"Обнаружена Node.js v{version}. Пожалуйста, обновитесь до версии 23 или выше.",changelog:"Список изменений",noChangelog:"Нет списка изменений",versionManagement:"Управление версиями",updateAvailableLabel:"(Новая версия)",dockerUpdateTitle:"Обновление Docker",dockerUpdateGuide:"В среде Docker, пожалуйста, загрузите последний образ и пересоздайте контейнер:",dockerUpdateNote:"Ваши данные сохранятся после пересоздания контейнера."},runtimeVersions:{title:"Управление версиями",runtimeTitle:"Hermes Runtime",currentHermesAgentVersion:"Текущая версия Hermes Agent",activeRuntimeDirectory:"Путь к активному Runtime",cliUpdateDescription:"В Hermes Runtime версии 0.19.1 и новее следующая команда обновляет только встроенный Hermes Agent. Она не обновляет настольное приложение Hermes Studio или Web UI. Перед выполнением полностью закройте Hermes Studio:",webUiTitle:"Web UI",platform:"Платформа",currentWebUi:"Текущий Web UI",activeVersion:"Активная версия",runtimeDirectory:"Каталог хранения Runtime",chooseRuntimeDirectory:"Выбрать каталог",resetRuntimeDirectory:"Системный каталог",runtimeDirectoryHint:"При следующем перезапуске текущий Runtime будет скопирован и проверен до запуска локальных сервисов. Старое хранилище сохранится, а будущие загрузки Runtime будут помещаться сюда.",runtimeDirectorySaved:"Миграция Runtime запланирована. Перезапустите Hermes Studio, чтобы выполнить ее.",runtimeMigrationPending:"Ожидаемое место миграции: {directory}",runtimeMigrationFailed:"Перенос хранилища не выполнен; продолжает использоваться прежнее хранилище",runtimeActivationFailed:"Выбранный Runtime не удалось запустить; Hermes Studio использует другую установленную версию",active:"Активна",installed:"Установлена",download:"Скачать",downloadGithub:"Скачать с GitHub",downloadCf:"Скачать с Cloudflare",github:"GitHub",cf:"Cloudflare",useVersion:"Использовать при следующем запуске",deleteVersion:"Удалить",deleteRuntimeConfirm:"Удалить Hermes Runtime {version}?",deleteWebUiConfirm:"Удалить Web UI {version}?",deleteRuntimeSuccess:"Runtime удален",deleteWebUiSuccess:"Web UI удален",refresh:"Обновить",noVersions:"Нет доступных версий",remoteLoadFailed:"Не удалось загрузить удаленные версии",downloadTasks:"Задачи загрузки",downloadStarted:"Загрузка начата",activateSuccess:"Выбор версии сохранен. Перезапустите Hermes Studio, чтобы применить его.",jobStatus:{queued:"В очереди",running:"Выполняется",completed:"Завершено",failed:"Ошибка"},jobStageStatus:{queued:"В очереди",resolve:"Определение",download:"Загрузка",verify:"Проверка",extract:"Распаковка",install:"Установка",completed:"Завершено",failed:"Ошибка"},jobStage:{queued:"В очереди",download:"Загрузка",resolveRuntime:"Определение пакета Runtime",verifyRuntime:"Проверка архива Runtime",extractRuntime:"Распаковка архива Runtime",installRuntime:"Установка Runtime",resolveWebUi:"Определение пакета Web UI",verifyWebUi:"Проверка архива Web UI",extractWebUi:"Распаковка архива Web UI",installWebUi:"Установка Web UI",completed:"Завершено",failed:"Ошибка"}},codingAgents:{installFailedHermesHint:"Installation failed. Ask Hermes to install it for you.",installFailureReason:"Reason"},mcuDevices:{title:"Little Box",subtitle:"View device link status",name:"Name",nameOptional:"Name is optional",deviceCode:"Device code",deviceCodePlaceholder:"Enter device code",deviceCodeRequired:"Enter device code",channel:"Channel",official:"Official",unofficial:"Unofficial",createdAt:"Added at",lanStatus:"LAN",remoteStatus:"Удаленно",connected:"Подключено",disconnected:"Не подключено",remoteConnect:"Удаленное подключение",remoteConnected:"Удаленно подключено",remoteConnectFailed:"Не удалось подключиться удаленно",remoteDisconnect:"Отключить",remoteDisconnected:"Удаленно отключено",remoteDisconnectFailed:"Не удалось отключить удаленно",actions:"Actions",add:"Add",addTitle:"Add MCU device",added:"MCU device added",addFailed:"Failed to add MCU device",purchase:"Buy",edit:"Edit",editNameTitle:"Edit name",nameUpdated:"Name updated",nameUpdateFailed:"Failed to update name",delete:"Delete",deleteTitle:"Delete MCU device",deleteConfirm:'Delete "{name}"?',deleted:"MCU device deleted",deleteFailed:"Failed to delete MCU device",loadFailed:"Failed to load MCU devices",close:"Close"},devices:{title:"Устройства",count:"Устройств: {count}",lastScanned:"Последнее сканирование: {time}",refresh:"Обновить",empty:"Устройства не найдены",computer:"Компьютер",endpointLabel:"Точка доступа",statusLabel:"Статус",online:"Online",offline:"Offline",address:"Адрес",os:"ОС",agentVersion:"Agent",webUiVersion:"Web UI",responseMs:"Задержка",lastSeen:"Последний раз обнаружено",open:"Открыть",never:"Никогда",unknown:"Неизвестно",loadFailed:"Не удалось загрузить устройства",scanFailed:"Не удалось просканировать устройства",updateFailed:"Не удалось обновить устройство",duplicateRequest:"Уже есть ожидающий запрос на сопряжение",manualPairing:"Pair by URL",copyPairingLink:"Copy pairing link",manualUrlPlaceholder:"https://device.example.com",manualUrlRequired:"Enter a device URL",manualRequestSent:"Pairing request sent",manualRequestFailed:"Failed to request remote pairing",pairingLinkCopied:"Pairing link copied",pairingLinkCopyFailed:"Failed to copy pairing link",pairingCodeTitle:"Enter pairing code",pairingCodePlaceholder:"Pairing code",pairingCodeRequired:"Enter the pairing code",submitPairingRequest:"Submit request",processed:"Обработано",unprocessed:"Не обработано",deleteHistory:"Удалить запись",deleteHistoryConfirm:"Удалить эту запись запроса и отозвать доступ подключения для этого устройства?",requests:"Запросы",requestsWithCount:"Запросы ({count})",noRequests:"Запросов нет",requestPairing:"Запросить сопряжение",paired:"Сопряжено",approve:"Одобрить",reject:"Отклонить",block:"Заблокировать",unblock:"Разблокировать",inboundStatus:{none:"Запрос разрешен",pending:"Ожидает",approved:"Одобрено",rejected:"Отклонено",blocked:"Заблокировано"},outboundStatus:{none:"Не сопряжено",pending:"Запрошено",approved:"Сопряжено",rejected:"Отклонено",blocked:"Заблокировано"},endpoint:{web:"Web",desktop:"Настольное приложение",custom:"Пользовательский"}},performance:{title:"Мониторинг производительности",subtitle:"Просмотр системных ресурсов, Bridge Broker, воркеров и активных сеансов",refresh:"Обновить",autoRefreshOn:"Автообновление",autoRefreshOff:"Ручное обновление",loadFailed:"Ошибка загрузки данных производительности",systemCpu:"ЦП системы",systemMemory:"Память системы",activeSessions:"Активные сеансы",runningSessions:"Запущено {count}",workers:"Воркеры",totalWorkerMemory:"Общая память воркеров",processes:"Процессы",uptime:"Время работы",running:"Запущен",stopped:"Остановлен",workerMemory:"Память воркера",lastUpdated:"Время обновления",profile:"Профиль",memory:"Память",sessions:"Сеансы",runningActiveSessions:"Запущено / Активно",lastUsed:"Последнее использование",status:"Статус",noWorkers:"Нет воркеров",sessionsByProfile:"Сеансы по профилям",noActiveSessions:"Нет активных сеансов"},journey:{title:"Путь обучения",play:"Воспроизвести путь",pause:"Приостановить путь",refresh:"Обновить",categorySelection:"Выбор категорий",nodeKinds:"Типы узлов",description:"Описание",canvasInstructions:"Используйте стрелки для просмотра узлов, Enter для открытия деталей и Escape для сброса выбора.",loadFailed:"Не удалось загрузить путь обучения",nodes:"Узлы",edges:"Связи",skills:"Навыки",memories:"Воспоминания",clusters:"Кластеры",profile:"Профиль",source:"Источник",learnedSkills:"Изученные навыки",memorySkillEdges:"Связи памяти",allKinds:"Все типы",allCategories:"Все категории",searchPlaceholder:"Поиск узлов",noClusters:"Кластеров нет",noNodes:"Узлов пути нет",noCategory:"Без категории",category:"Категория",useCount:"Использований",createdBy:"Создано",timestamp:"Время",pinned:"Закреплено"},drawer:{terminal:"Терминал",files:"Рабочая область"},subagent:{title:"Фоновая задача",noGoal:"Фоновая задача без названия",open:"Открыть поток фоновой задачи",close:"Закрыть поток фоновой задачи",waiting:"Ожидание потока данных…",tool:"Инструмент",tools:"Инструментов: {count}",tokens:"Ввод {input} · вывод {output}",started:"Запущена",running:"Выполняется",completed:"Завершена",failed:"Ошибка",cancelled:"Отменена",interrupted:"Прервана"},realtimeVoice:{title:"Голос в реальном времени",mode:"Голосовой режим",open:"Открыть голосовой режим",back:"Вернуться в чат",connected:"Голосовая связь готова",turnMode:"Предпросмотр · по очереди",browserStt:"Браузер",browserTts:"Браузер",untitledSession:"Разговор без названия",sessionMissing:"Разговор недоступен.",backendStreamRequired:"Для голосового режима на мобильных устройствах и компьютере требуется настроенный серверный сервис распознавания речи.",networkUnavailableNoFallback:"Распознавание речи браузера недоступно по сети, и резервный STT не настроен.",liveTranscript:"Живая расшифровка",transcriptPlaceholder:"Нажмите на голосовое ядро и начните говорить",recentTurns:"Последние реплики",you:"Вы",mute:"Выключить звук",unmute:"Включить звук",finishTurn:"Закончить реплику",speak:"Начать говорить",end:"Завершить",status:{idle:"Готово",paused:"Микрофон выключен",listening:"Слушаю",processing:"Распознавание",thinking:"{agent} думает",speaking:"{agent} говорит",error:"Голосовая связь прервана"},hint:{idle:"Нажмите в центре, чтобы начать голосовую реплику",paused:"Включите микрофон, когда будете готовы",listening:"Сделайте паузу для отправки или нажмите для завершения",listeningManual:"Идет запись. Нажмите в центре еще раз, чтобы остановить и распознать речь",processing:"Преобразую речь в текст",thinking:"Сообщение отправлено в текущий разговор",speaking:"Ответ можно прервать в любое время",error:"Нажмите в центре, чтобы повторить"}},chat:{contextRemaining:"Осталось",contextClickToEdit:"Нажмите, чтобы изменить размер контекста",contextEditTitle:"Изменить размер контекста",contextEditDesc:"Установите лимит размера контекста для текущей модели (в токенах)",contextEditPlaceholder:"Введите размер контекста",contextEditHint:"Типовые значения: 200k (Claude), 128k (GPT-4), 32k (GPT-3.5)",contextEditSave:"Сохранить",contextEditCancel:"Отмена",contextEditInvalid:"Введите корректный размер контекста",contextEditSuccess:"Размер контекста обновлён",contextEditFailed:"Ошибка обновления",emptyState:"Начните диалог с Hermes Agent",viewOlderInHistory:"Посмотреть более ранние сообщения в истории",scrollToBottom:"Прокрутить вниз",cliEmptyState:"Начните CLI-диалог",outlineTitle:"План беседы",outlineEmpty:"Нет содержимого беседы",outlineUserQuestion:"Вопрос пользователя",inputPlaceholder:"Введите сообщение... (Enter — отправить, Shift+Enter — новая строка)",inputHeightResizeHint:"Перетащите, чтобы изменить высоту поля ввода, и дважды щелкните для сброса.",slashCommandArgs:{message:"<сообщение>",title:"<заголовок>",text:"<текст>"},slashCommands:{usage:"Рассчитать использование текущего сеанса",status:"Показать статус сеанса и очередь",yolo:"Переключить режим YOLO для сеанса и пропускать подтверждения опасных команд",abort:"Остановить текущий запуск Bridge",queue:"Добавить сообщение в очередь после текущего запуска",learn:"Создать переиспользуемый навык из описанных источников",clear:"Очистить текущее отображение",clearHistory:"Удалить сохранённую историю сообщений текущего сеанса",title:"Переименовать текущий сеанс",compress:"Запустить сжатие контекста в простое",steer:"Отправить направляющий текст текущему запуску Bridge",destroy:"Освободить Bridge Agent текущего сеанса",reloadMcp:"Перезагрузить серверы MCP",reloadSkills:"Перезагрузить команды skills",bundles:"Просмотреть наборы навыков",bundlesCreate:"Создать набор навыков"},bundlePicker:{title:"Наборы навыков",create:"Создать набор",searchPlaceholder:"Поиск наборов...",skillCount:"Навыков: {count}",skillsLabel:"Навыки",noSkills:"Навыки не настроены",deleteBundle:"Удалить {name}",deleteTitle:"Удалить набор",deleteConfirm:"Удалить «{name}» из этого профиля? Это действие нельзя отменить.",deleteFailed:"Не удалось удалить набор",deleted:"Набор удалён",noBundles:"Наборов пока нет. Создайте набор из нескольких навыков.",noMatch:"Подходящих наборов нет"},bundleCreator:{title:"Создать набор навыков",name:"Название",namePlaceholder:"например, PR Review Team",nameHint:"Допустимы латинские буквы, цифры, пробелы, дефисы и подчёркивания.",description:"Описание",descriptionPlaceholder:"Для чего использовать этот набор?",skills:"Навыки",skillsPlaceholder:"Выберите один или несколько навыков",nameRequired:"Введите название набора",nameInvalid:"Введите английское название хотя бы с одной буквой",skillsRequired:"Выберите хотя бы один навык",skillsLoadFailed:"Не удалось загрузить навыки",createFailed:"Не удалось создать набор",created:"Набор создан"},attachFiles:"Прикрепить файлы",reasoningEffort:{tooltip:"Глубина рассуждений",defaultLabel:"По умолчанию",options:{default:"По умолчанию (config.yaml)",none:"Нет",minimal:"Минимум",low:"Низкая",medium:"Средняя",high:"Высокая",max:"Max",xhigh:"Очень высокая",ultra:"Ультра"}},autoPlaySpeech:"Автовоспроизведение речи",voiceInput:{startCapture:"Начать голосовой ввод",stopCaptureAndInsert:"Остановить голосовой ввод и вставить текст в поле ввода",cancelCapture:"Отменить голосовой ввод",statusLabel:"Статус: {status}",transcriptLabel:"Транскрипт: {text}",errorLabel:"Ошибка: {error}",recentEvents:"Последние события",status:{idle:"Ожидание",capturing:"Слушаю",transcribing:"Расшифровка",sending:"Вставка в поле ввода",error:"Ошибка"},browserSpeechUnsupported:"Распознавание речи браузером не поддерживается в этом браузере.",browserSpeechFailed:"Распознавание речи браузером не удалось.",browserSpeechFailedWithReason:"Распознавание речи браузером не удалось: {error}.",microphoneUnsupported:"Запись с микрофона не поддерживается в этом браузере.",microphoneRecordingFailed:"Запись с микрофона не удалась."},showToolCalls:"Показать вызовы инструментов",hideToolCalls:"Скрыть вызовы инструментов",messageQueue:"Очередь сообщений",removeQueuedMessage:"Удалить сообщение из очереди",stop:"Остановить",start:"Запустить",stopGateway:"Остановить шлюз",send:"Отправить",contextUsed:"Контекст использован:",sessions:"Сеансы",webUiSessions:"Сеансы",allProfiles:"Все профили",profileMissingModelsTip:"У профиля «{profile}», к которому относится этот сеанс, нет доступных провайдеров или моделей",sessionScopeHint:"Здесь отображаются только текущие сеансы; сеансы CLI, Telegram, Discord, Cron и других каналов доступны в истории только для чтения.",openHistory:"Открыть историю",hermesHistory:"История Hermes",historyScopeHint:"Здесь для чтения отображаются исторические сеансы Hermes текущего профиля с разбивкой по источникам.",noSessions:"Нет сеансов",recent:"Недавние",recentCount:"Количество недавних сессий",loadMoreSessions:"Загрузить ещё сеансы",searchTitle:"Поиск сеансов",searchSubtitle:"Поиск по заголовку или содержимому сообщений",searchScope:"Область поиска: только локальная библиотека сеансов Web UI; сеансы истории Hermes только для чтения не включаются.",searchHint:"Cmd/Ctrl+K",searchPlaceholder:"Поиск сеансов...",searchEmpty:"Недавние сеансы",searchRecent:"Недавние сеансы",searchNoResults:"Нет подходящих сеансов",searchNoSnippet:"Нет отображаемого фрагмента",searchEnterHint:"Enter — открыть · Esc — закрыть",searchFailed:"Ошибка поиска сеансов",newChat:"Новый диалог",category:"Категория",uncategorized:"Без категории",categoryPlaceholder:"Выберите или создайте категорию",categoryCreateHint:"Введите название и нажмите Enter.",categoryCreated:"Категория «{name}» создана",categoryCreateFailed:"Не удалось создать категорию",categoryLoadFailed:"Не удалось загрузить категории",moveToCategory:"Переместить в категорию",categoryUpdated:"Категория обновлена",categoryUpdateFailed:"Не удалось обновить категорию",renameCategory:"Переименовать категорию",deleteCategory:"Удалить категорию",enterCategoryName:"Введите название категории",confirmDeleteCategory:"Удалить «{name}»? Сеансы будут перемещены в «Без категории».",categoryRenamed:"Категория переименована",categoryRenameFailed:"Не удалось переименовать категорию",categoryDeleted:"Категория удалена",categoryDeleteFailed:"Не удалось удалить категорию",agent:"Agent",approvalKicker:"Разрешение инструмента",toolResultUnavailable:"Выполнение прервано; результат инструмента не получен",approvalCommand:"Команда для выполнения",approvalTitle:"Подтвердите вызов инструмента перед выполнением",approvalAgree:"Согласиться",approvalAllowOnce:"Разрешить однократно",approvalAllowSession:"Разрешить для этого сеанса",approvalAlways:"Разрешить всегда",approvalDeny:"Отказать",newCliChat:"Новый CLI",deleteSession:"Удалить этот сеанс?",sessionDeleted:"Сеанс удалён",toggleBatchMode:"Пакетный выбор",selectAll:"Выбрать всё",confirmBatchDelete:"Удалить выбранные сеансы ({count})?",batchDeleteSuccess:"Удалено сеансов: {count}",batchDeletePartial:"Не удалось удалить сеансов: {failed}",batchDeleteFailed:"Ошибка пакетного удаления",rename:"Переименовать",archiveSession:"Архивировать",unarchiveSession:"Вернуть из архива",pin:"Закрепить",unpin:"Открепить",pinned:"Закреплено",chatMode:"Чат",liveMode:"В реальном времени",liveSessions:"Сеансы в реальном времени",recentBadge:"Недавние",linkedSessions:"Связано сеансов: {count}",noVisibleMessages:"Нет видимых человеку сообщений.",monitorRoleUser:"Пользователь",monitorRoleAssistant:"Ассистент",copySessionLink:"Копировать ссылку на сеанс",openSessionInNewWindow:"Открыть в новом окне",copySessionId:"Копировать ID сеанса",export:"Экспорт",editConfig:"Редактировать конфигурацию",exportFull:"Полный экспорт (JSON)",exportCompressed:"Сжатый экспорт (TXT)",exportCompressing:"Сжатие контекста, подождите...",exportSuccess:"Сеанс экспортирован",exportFailed:"Ошибка экспорта",renamed:"Переименовано",renameFailed:"Ошибка переименования",sessionArchived:"Сеанс архивирован",archiveSessionFailed:"Не удалось архивировать сеанс",sessionUnarchived:"Сеанс возвращён из архива",unarchiveSessionFailed:"Не удалось вернуть сеанс из архива",renameSession:"Переименовать сеанс",sessionNotFound:"Сеанс не найден",enterNewTitle:"Введите новый заголовок",workspace:"Рабочая область",setWorkspace:"Установить рабочую область",setWorkspaceTitle:"Установить рабочую область сеанса",workspacePlaceholder:"Введите путь к проекту, например /home/user/project",folderPickerEmpty:"(Пусто)",folderPickerNoFolders:"Нет папок рабочей области",folderPickerSelected:"Выбрано:",workspaceDefault:"По умолчанию",workspaceDefaultTooltip:"Эта рабочая область задана по умолчанию и будет автоматически подставляться в новых чатах",workspacePin:"Сделать рабочей областью по умолчанию",workspaceUnpin:"Убрать рабочую область по умолчанию",workspaceRecent:"Недавние",defaultWorkspace:"Рабочая область по умолчанию",more:"Ещё",workspaceSet:"Рабочая область установлена",workspaceSetFailed:"Ошибка установки рабочей области",setModel:"Установить модель",setModelTitle:"Установить модель сеанса",standardModels:"Обычные модели",moaPresets:"Комбинации MoA",noMoaPresets:"Нет доступных комбинаций MoA",modelType:"Тип модели",modelSet:"Модель установлена",modelSwitching:"Переключение модели...",modelSetFailed:"Ошибка установки модели",other:"Другое",runFailed:"Ошибка выполнения",error:"Ошибка",tool:"Инструмент",arguments:"Аргументы",result:"Результат",workspaceChanges:"Изменения workspace",changedFiles:"Изменено файлов: {files}",changesThisTurn:"Изменения в этом ходе",diffUnavailable:"Diff недоступен",binaryFileDiffUnavailable:"Diff для бинарного файла недоступен",truncated:"... (обрезано)",unchangedLines:"{count} строк без изменений",executionDuration:"Длительность выполнения",thinkingLabel:"Процесс размышления",thinkingInProgress:"Размышление",thinkingShow:"Развернуть процесс размышления",thinkingHide:"Свернуть процесс размышления",thinkingDuration:"Наблюдается {duration}",thinkingChars:"{count} зн.",copyBubble:"Копировать сообщение",copiedBubble:"Скопировано",copyFailed:"Ошибка копирования",referenceMessage:"Цитировать сообщение",cancelReference:"Отменить цитирование",playSpeech:"Воспроизвести речь",pauseSpeech:"Пауза",resumeSpeech:"Продолжить",stopSpeech:"Остановить",speechNotSupported:"Этот браузер не поддерживает воспроизведение речи"},workflow:{title:"Рабочий процесс",profile:"Профиль",namePlaceholder:"Название рабочего процесса",canvasAriaLabel:"Полотно рабочего процесса",workspace:{title:"Выбрать рабочую область",select:"Выбрать рабочую область",clear:"Очистить рабочую область"},actions:{newWorkflow:"Новый workflow",addNode:"Добавить узел",createWorkflowFirst:"Сначала создайте workflow",reset:"Сбросить",startExecution:"Запустить выполнение",executionPending:"Выполнение workflow пока не подключено",executionStarted:"Выполнение workflow началось",executionCompleted:"Выполнение workflow завершено",executionFailed:"Выполнение workflow не удалось",rerunDownstreamKeepNode:"Сохранить этот узел и запустить ниже",rerunDownstreamClearNode:"Очистить этот узел и запустить ниже",rerunDownstreamStarted:"Повторный запуск нижних узлов начат",rerunFromNodeStarted:"Повторный запуск с этого узла начат",rerunFailed:"Не удалось повторно запустить workflow",deleteNode:"Удалить узел",deleteEdge:"Удалить соединение",editEdge:"Изменить соединение",undo:"Отменить",importWorkflow:"Импорт Workflow",exportWorkflow:"Экспорт Workflow",imported:"Workflow импортирован",exported:"Workflow экспортирован",importFailed:"Ошибка импорта Workflow",exportFailed:"Ошибка экспорта Workflow"},schedule:{title:"Расписания workflow",manage:"Управление расписаниями",createTitle:"Создать расписание",editTitle:"Изменить расписание",create:"Создать расписание",save:"Сохранить расписание",edit:"Изменить расписание",delete:"Удалить расписание",deleteConfirm:"Удалить это расписание?",deleted:"Расписание удалено",enable:"Включить расписание",disable:"Отключить расписание",enabled:"Включено",disabled:"Отключено",empty:"Расписаний пока нет",cron:"Расписание Cron",cronPlaceholder:"например, 0 9 * * * или {'@'}daily",timezone:"Часовой пояс",timezonePlaceholder:"Часовой пояс IANA, например Asia/Shanghai",initialInput:"Начальный ввод",initialInputPlaceholder:"Необязательный ввод для каждого запуска по расписанию",startNodes:"Начальные узлы",startNodesPlaceholder:"Начальные узлы workflow по умолчанию",timeout:"Общий тайм-аут (минуты)",timeoutPlaceholder:"Без срока",policies:"Параллельность: пропускать · Пропущенные запуски: пропускать",lastScheduled:"Последнее планирование",nextRun:"Следующий запуск",lastRun:"Последний запуск",never:"Никогда",loadFailed:"Не удалось загрузить расписания",saveFailed:"Не удалось сохранить расписание",saved:"Расписание сохранено",deleteFailed:"Не удалось удалить расписание",required:"Требуются расписание Cron и часовой пояс",reset:"Сбросить",presets:{hourly:"Каждый час",daily:"Ежедневно",weekly:"Еженедельно",monthly:"Ежемесячно"}},evidence:{historyPage:"История запусков",detailsPage:"Подробности запуска",backToRuns:"Назад к истории",resultStatus:"Статус",duration:"Длительность",budgetLabel:"Бюджет",actualExecution:"Выполнено",otherJudgments:"Другие решения",loopEvents:"События цикла",evaluatedNotExecuted:"Проверено, не выполнено",ariaLabel:"Подробности выполнения Workflow",title:"Подробности выполнения",count:"{count} записей",intro:"Показывает решения по маршрутам, проходы циклов и аварийные узлы этого запуска.",empty:"Нет подробностей выполнения",loadFailed:"Не удалось загрузить сохранённые подробности выполнения",summaryTitle:"Результат запуска",blockedAt:"Заблокировано на {gate}",actualPath:"Фактический путь",noActualPath:"Ни один путь не выбран",pathChecks:"Проверки путей",selectedPaths:"Выбранные пути",otherPaths:"Другие решения и события",selectedCount:"выбрано: {count}",otherCount:"не выбрано: {count}",eventCount:"событий: {count}",showOtherPaths:"Показать другие детали ({count})",hideOtherPaths:"Скрыть другие детали",runDetails:"Детали запуска",actualPathSteps:"Шаги фактического пути",nodeBudgetDetails:"Детали временного бюджета",condition:"Условие",conditionMatched:"Совпало",conditionNotMatched:"Не совпало",sourceOutcome:"Результат узла",sourceReturned:"Нормальный ответ",sourceFailed:"Ошибка выполнения",sourceSkippedStatus:"Не запущен",checkedData:"Проверяемые данные",entireReplyText:"Полный текст ответа",errorText:"Текст ошибки",jsonFieldValue:"Значение одного поля JSON",advancedPathValue:"Значение расширенного пути",comparison:"Сравнение",textToFind:"Искомый текст",expectedFieldValue:"Ожидаемое значение поля",parsedBusinessDecision:"Извлечённое бизнес-решение",failedGateLabel:"Этап сбоя (значение поля failed_gate)",failedGateValue:"Этап сбоя (значение поля failed_gate): {gate}",decisions:{blocked:"Заблокировано",released:"Опубликовано",verified:"Проверено",skipped:"Действия не требуются"},node:"Аварийный узел",edge:"Путь",loop:"Цикл",unknownNode:"Неизвестный узел",pathTitle:"{source} → {target}",loopPass:"Проход цикла {count}",exceptionalNode:"Этот узел не завершился штатно.",loopPassNamed:"{node} · проход {count}",technical:"Техническая информация",recordId:"ID записи",sequence:"Порядок",rawStatus:"Исходный статус",rawRoute:"Маршрут",rawReason:"Причина",iterationPath:"Путь итерации",expectedValue:"Ожидаемый результат",actualValue:"Фактический результат предыдущего шага",judgmentDetails:"Решение по связи",connectionResult:"Результат связи",appliesWhen:"Используется когда",explanation:"Пояснение",technicalStatus:{pathUsed:"Эта связь была использована",pathNotUsed:"Эта связь не была использована"},technicalRoute:{success:"Только когда предыдущий узел вернул результат нормально",failure:"Только когда выполнение предыдущего узла завершилось ошибкой",always:"Независимо от результата предыдущего узла"},technicalReason:{conditionNotMatched:"Ответ предыдущего узла не удовлетворил условию этой связи."},statuses:{taken:"Выбран",notTaken:"Не выбран",evaluationFailed:"Ошибка проверки",timedOut:"Превышено время",blocked:"Заблокирован"},routes:{success:"Продолжено после успеха",failure:"Продолжено после ошибки",always:"Продолжено при любом результате"},reasons:{evaluationFailed:"Ошибка проверки маршрута",conditionNotMatched:"Условие не совпало",iterationLimitReached:"Достигнут предел проходов",routeNotMatched:"Маршрут не совпал",pathSelected:"Этот путь был выбран.",pathEvaluatedNotUsed:"Это соединение было оценено как кандидат, но ни один целевой узел его не использовал.",sourceSkipped:"Исходный узел не запускался, поэтому этот путь не участвовал в запуске.",failureRouteAfterSuccess:"Исходный узел завершился нормально; этот путь используется только при ошибке выполнения.",successRouteAfterFailure:"Исходный узел завершился с ошибкой; этот путь используется только при нормальном ответе.",businessBlocked:"«{source}» остановил выполнение ({decision}): {reason}. Поэтому «{target}» не был запущен.",businessBlockedWithCondition:"«{source}» остановил выполнение ({decision}): {reason}. Для продолжения требовалось «{expected}», но предыдущий результат — «{actual}». Поэтому «{target}» не был запущен.",conditionMismatchDetail:"Для продолжения требовалось «{expected}», но предыдущий результат — «{actual}». Поэтому «{target}» не был запущен."},loopOutcomes:{continued:"Условие совпало; начат следующий проход",iterationLimitReached:"Остановлено на пределе проходов",conditionNotMatched:"Остановлено из-за несовпадения условия",finished:"Цикл завершён"}},budget:{runTitle:"Выбрать бюджет времени Run",rerunTitle:"Выбрать бюджет времени Rerun",totalLabel:"Общий бюджет Run",customMinutes:"Произвольное число минут",customPlaceholder:"Минуты",invalidCustom:"Бюджет Run должен быть от 0,1 до 1440 минут",help:"Это единый абсолютный срок для всего Run. Каждый узел получает только оставшееся время, а циклы не сбрасывают бюджет.",options:{unlimited:"Без срока",30:"30 минут",60:"60 минут",90:"90 минут",custom:"Другой"},unlimitedSummary:"Без срока",unlimitedHelp:"Для этого Run срок не задан.",summary:"Всего {total} · Прошло {elapsed} · Осталось {remaining}",deadline:"Срок: {deadline}",nodeStartRemaining:"Оставшийся общий бюджет при запуске узла: {remaining}"},edgeEditor:{title:"Изменить соединение",guideIntro:"Сначала выберите требуемый результат исходного узла. Затем не проверяйте ответ, проверьте весь текст буквально или сравните значение одного разобранного поля JSON.",connectionSummary:"{source} → {target}",selfLoopDescription:"Узел «{node}» повторно запустит сам себя.",continueAfter:"Продолжить после",optionalCheck:"Необязательная проверка содержимого",runTarget:"Затем",runTargetAction:"Запустить {target}",noContentCheck:"Не проверять ответ",sourceResultStep:"1. Результат исходного узла",replyDataStep:"2. Проверяемые данные ответа",nextStep:"3. Затем",replyDataQuestion:"Какие данные ответа нужно проверить?",requiredSourceResult:"Требуемый результат исходного узла",loopSummary:"Возврат к {target}",loopScope:"Узлы цикла: {nodes}",historyLabel:"Метка истории (необязательно)",advancedSettings:"Расширенные настройки",historyNode:"Узел в истории",historyNodePlaceholder:"Выберите имя узла",continueWhen:"Продолжить, когда",compareUsing:"Способ сравнения",expectedType:"Тип ожидаемого значения",expectedValue:"Ожидаемое значение",routeChoices:{success:"Источник ответил нормально",failure:"Ошибка выполнения источника",always:"Любой результат"},operatorChoices:{equals:"Равно",not_equals:"Не равно",contains:"Содержит",not_contains:"Не содержит",exists:"Существует",not_exists:"Не существует",greater_than:"Больше",greater_than_or_equal:"Больше или равно",less_than:"Меньше",less_than_or_equal:"Меньше или равно",in:"Входит в список",not_in:"Не входит в список"},loopMissingForwardPath:"У этого обратного соединения нет прямого пути для повтора.",loopNotNatural:"У этого цикла есть другой путь входа, поэтому он не сможет повторяться предсказуемо.",loopDuplicateScope:"Два обратных соединения задают одинаковые узлы цикла.",loopPartialOverlap:"Циклы могут быть отдельными или полностью вложенными, но не могут частично пересекаться.",loopDuplicateHistoryLabel:"Метка истории каждого цикла должна быть уникальной.",route:"Маршрут",routes:{success:"Только успех (success)",failure:"Только ошибка (failure)",always:"Всегда (always)"},routeHelp:"Сначала проверяется результат исходного узла; заданное условие также должно совпасть.",routeExample:"Пример: success для обычного пути, failure для ошибок, always для очистки.",conditionPath:"Что должно проверять соединение?",conditionPathPlaceholder:"Расширенный путь, например output",conditionPathOptions:{routeOnly:"Не проверять ответ",outputRecommended:"Полный текст успешного ответа (output, рекомендуется)",output:"Полный текст успешного ответа (output)",outputJson:"Значение одного поля JSON (outputJson.*)",errorRecommended:"Полный текст ошибки (error, рекомендуется)",error:"Полный текст ошибки (error)",custom:"Расширенный путь данных"},structuredOutputPathPlaceholder:"Путь к полю JSON, например outputJson.route_token",structuredOutputHelp:"Разбирает полный JSON-ответ или ровно один fenced json-блок. Если JSON отсутствует, некорректен или блоков несколько, outputJson недоступен и условие не совпадает.",conditionPathHelp:{success:"Для success рекомендуется output. Выберите «Только маршрут», если текст ответа не важен.",failure:"Для failure рекомендуется error. Выберите «Только маршрут», если текст ошибки не важен.",always:"Для успеха используйте output, для ошибки — error; «Только маршрут» не проверяет текст."},operator:"Оператор",operators:{equals:"Равно (equals)",not_equals:"Не равно (not_equals)",contains:"Содержит (contains)",not_contains:"Не содержит (not_contains)",exists:"Существует (exists)",not_exists:"Не существует (not_exists)",greater_than:"Больше (greater_than)",greater_than_or_equal:"Больше или равно (greater_than_or_equal)",less_than:"Меньше (less_than)",less_than_or_equal:"Меньше или равно (less_than_or_equal)",in:"В списке (in)",not_in:"Не в списке (not_in)"},operatorHelp:{equals:"Значение и тип должны точно совпадать.",not_equals:"Значение или тип различаются.",contains:"Текст содержит строку или массив содержит элемент.",not_contains:"Текст или массив не содержит элемент.",exists:"Совпадает, если путь существует; значение не нужно.",not_exists:"Совпадает, если путь отсутствует; значение не нужно.",greater_than:"Обе стороны должны быть числами JSON; фактическое значение больше.",greater_than_or_equal:"Обе стороны должны быть числами JSON; фактическое значение больше или равно.",less_than:"Обе стороны должны быть числами JSON; фактическое значение меньше.",less_than_or_equal:"Обе стороны должны быть числами JSON; фактическое значение меньше или равно.",in:"Значение должно быть JSON-массивом с фактическим значением.",not_in:"Значение должно быть JSON-массивом без фактического значения."},value:"Значение",invalidConditionValue:"Значение условия должно быть корректным JSON",conditionValuePlaceholder:'JSON: "текст", 42, true, ["a"]',valueType:"Тип значения",valueTypes:{string:"Строка",number:"Число",boolean:"Логическое",null:"Null",array:"Массив",object:"Объект"},valueTypeHelp:"Выберите способ разбора и проверки значения. Тип определяется по сохранённому JSON-значению и отдельно не сохраняется.",conditionValuePlaceholders:{string:"Текст, например APPROVED",number:"Число, например 42",boolean:"true или false",null:"null",array:'JSON-массив, например ["a", 2]',object:`JSON-объект, например {'{'}"status":"ready"{'}'}`},invalidValueTypes:{string:"Значение должно быть строкой.",number:"Значение должно быть корректным числом.",boolean:"Значение должно быть true или false.",null:"Значение должно быть null.",array:"Значение должно быть корректным массивом.",object:"Значение должно быть корректным объектом."},valueHelp:"Введите значение выбранного типа. Объекты и массивы используют JSON; строки вводятся без JSON-кавычек.",expectedReplyText:"Искомый текст",expectedFieldValue:"Ожидаемое значение поля",rawTextValueHelp:"Проверяется буквальный текст всего ответа. При операторе «Содержит» текст может находиться в ключе или значении JSON; поле JSON отдельно не извлекается.",jsonFieldValueHelp:"Сравнивается значение по указанному пути outputJson, а не имя поля. Пример: outputJson.failed_gate равно quality-container-setup.",canvasLabel:{withValue:"{subject} {operator} «{value}»",withoutValue:"{subject} {operator}",join:"{route} · {condition}"},conditionSemantics:"Что именно проверяется",rawTextComparisonHelp:"Выбран оператор {operator}. Он применяется ко всему тексту ответа, а не к отдельному полю JSON. «Содержит/Не содержит» находит текст и в JSON key, и в value; «Равно/Не равно» сравнивает весь ответ с заданным значением.",jsonFieldComparisonHelp:"Читается значение по пути {path}. {operator} сравнивает этот value с «{value}», но не имя поля.",rawTextExistenceHelp:"Проверяется только наличие полного текста ответа, а не существование JSON-ключа.",jsonFieldExistenceHelp:"Проверяется только существование JSON-поля по пути {path}; значение не сравнивается.",rawTextOperatorHelp:{equals:"Совпадает, только если полный текст ответа точно равен «{value}». Значение отдельного поля JSON не читается и не сравнивается.",not_equals:"Совпадает, только если полный текст ответа отличается от «{value}». Значение отдельного поля JSON не читается и не сравнивается.",contains:"Ищет «{value}» во всём тексте ответа. Совпадение возможно и в JSON key, и в JSON value; это не поиск поля JSON.",not_contains:"Совпадает, только если «{value}» нигде нет в полном тексте ответа — ни в JSON key, ни в JSON value. Это не поиск поля JSON.",exists:"Совпадает, когда полный текст ответа доступен. Наличие JSON key не проверяется.",not_exists:"Совпадает, когда полного текста ответа нет. Отсутствие JSON key не проверяется."},jsonFieldOperatorHelp:{equals:"Читает value поля по пути {path}. Совпадает, только если это значение точно равно «{value}»; имя поля не сравнивается.",not_equals:"Читает value поля по пути {path}. Совпадает, только если это значение отличается от «{value}»; имя поля не сравнивается.",contains:"Читает value поля по пути {path} и проверяет, содержит ли оно «{value}»; имя поля не просматривается.",not_contains:"Читает value поля по пути {path}. Совпадает, только если оно не содержит «{value}»; имя поля не просматривается.",exists:"Совпадает, когда поле JSON по пути {path} существует. Value поля не сравнивается.",not_exists:"Совпадает, когда поле JSON по пути {path} отсутствует. Value поля не сравнивается."},feedback:"Цикл обратной связи",feedbackHelp:"Помечает обратное соединение как ограниченный цикл. Повторяется только пока совпадают маршрут и условие.",maxIterations:"Максимум итераций",maxIterationsHelp:"Общее число проходов от 1 до 100; также действует глобальный бюджет.",invalidIterations:"Число итераций должно быть целым от 1 до 100",loopId:"Идентификатор цикла",loopIdPlaceholder:"Выберите автоматически или введите ID",loopIdAutomatic:"Автоматически (рекомендуется) · {id}",loopIdHelp:"Только помечает цикл в истории и не меняет условия запуска. Обычно оставьте автоматический вариант.",invalidLoopId:"Недопустимый ID цикла"},batch:{toggle:"Массовый выбор",selectAll:"Выбрать все",confirmDelete:"Удалить выбранные workflow: {count}?",deleteSuccess:"Удалено workflow: {count}",deletePartial:"Не удалось удалить workflow: {failed}",deleteFailed:"Массовое удаление не удалось"},validation:{nodesRequired:"Добавьте хотя бы один узел",nodeNameRequired:"Узлу {node} нужно имя",providerRequired:"Узлу {node} нужен провайдер",modelRequired:"Узлу {node} нужна модель",apiModeRequired:"Узлу {node} нужен режим API",inputRequired:"Узлу {node} нужны входные данные",invalidEdge:"Соединение ссылается на отсутствующий узел",invalidConnectionDirection:"Соединения должны идти от правого выхода к левому входу",orphanNode:"Узел {node} не подключён к рабочему процессу",disconnectedFlow:"Рабочий процесс нельзя разделять на несколько несвязанных потоков",cycle:"Рабочий процесс содержит цикл. Исправьте соединения перед сохранением."},node:{title:"Название узла",agent:"Агент",model:"Модель",apiMode:"Режим API",input:"Ввод",approvalRequired:"Подтверждение после узла",join:"Стратегия объединения",joinAll:"Все входящие маршруты",joinAny:"Любой входящий маршрут",joinAllHelp:"Выполняется, только если выбраны все входящие маршруты; иначе узел пропускается.",joinAnyHelp:"Выполняется один раз при первом выбранном маршруте; пропускается, только если не совпал ни один.",promptPlaceholder:"Опишите, что должен сделать этот агент...",skillsPlaceholder:"Введите навык и нажмите Enter для добавления",uploadImages:"Загрузить изображения"},status:{idle:"Бездействует",queued:"В очереди",running:"Выполняется",pending_approval:"Ожидает одобрения",completed:"Завершено",skipped:"Пропущено",failed:"Ошибка",approval_rejected:"Одобрение отклонено",canceled:"Отменено"},runs:{title:"История запусков",refresh:"Обновить",empty:"Нет записей о запусках",startNodes:"Начальных узлов: {count}",snapshotIndicator:"Неизменяемый снимок на момент запуска этого выполнения",show:"Показать историю запусков",hide:"Скрыть историю запусков",nodeSessionTitle:"Сессия узла — {node}",noNodeSession:"У этого узла пока нет записи о сессии",loadNodeSessionFailed:"Не удалось загрузить сессию узла",stop:"Остановить запуск",stopRequested:"Остановка запрошена",stopFailed:"Не удалось остановить запуск",delete:"Удалить запись",deleteSuccess:"Запись о запуске удалена"},inspector:{selected:"Выбранный узел",none:"Узел не выбран"},stats:{nodes:"Узлы",edges:"Связи"},agents:{planner:"Планировщик",researcher:"Исследователь",builder:"Разработчик",reviewer:"Рецензент"},models:{default:"Модель по умолчанию",fast:"Быстрая модель",reasoning:"Модель рассуждений"},initialNodes:{node1:"Узел 1",node2:"Узел 2",node3:"Узел 3",plan:"Планирование",execute:"Выполнение",review:"Проверка"},initialPrompts:{node1:"Введите данные для этого узла.",node2:"Введите данные для этого узла.",node3:"Введите данные для этого узла.",plan:"Разбейте запрос на выполнимые шаги.",execute:"Выполните шаги реализации и создайте артефакты.",review:"Проверьте качество результата и определите дальнейшую работу."},newNodeTitle:"Узел {count}"},kanban:{title:"Канбан",createTask:"Создать задачу",noTasks:"Нет задач",allStatuses:"Все статусы",allAssignees:"Все ответственные",board:{create:"Создать канбан",archive:"Архивировать канбан",slugPlaceholder:"Идентификатор канбана, например project-a",namePlaceholder:"Отображаемое имя (необязательно)",slugRequired:"Идентификатор канбана не может быть пустым",created:"Канбан создан",archived:"Канбан архивирован",archiveConfirm:"Архивировать текущий канбан?",defaultArchiveUnavailable:"Доску по умолчанию нельзя архивировать"},columns:{triage:"На сортировку",todo:"К выполнению",scheduled:"Запланировано",ready:"Готово",running:"В работе",blocked:"Заблокировано",review:"Проверка",done:"Выполнено",archived:"В архиве"},form:{title:"Заголовок",titlePlaceholder:"Заголовок задачи",titleRequired:"Заголовок не может быть пустым",body:"Описание",bodyPlaceholder:"Описание задачи (необязательно)",assignee:"Ответственный",selectAssignee:"Выберите ответственного...",priority:"Приоритет",selectPriority:"Выберите приоритет...",tenant:"Арендатор",tenantPlaceholder:"Арендатор (необязательно)",workspace:"Рабочая область",workspaceScratch:"Временная рабочая область",workspaceDir:"Использовать каталог",workspaceWorktree:"Использовать worktree",workspacePath:"Путь рабочей области",workspacePathPlaceholder:"Абсолютный путь (необязательно)",branch:"Ветка",branchPlaceholder:"Ветка worktree",skills:"Навыки",skillsPlaceholder:"Выберите навыки...",triage:"Создать в сортировке",goalMode:"Режим цели",maxRuntime:"Макс. время выполнения",maxRuntimePlaceholder:"например 30m, 2h",maxRetries:"Макс. повторов",maxRetriesPlaceholder:"Количество повторов",goalMaxTurns:"Макс. ходов цели",goalMaxTurnsPlaceholder:"Максимум ходов"},card:{assigneeTooltip:"Ответственный",priority:{low:"Низкий",medium:"Средний",high:"Высокий"},timeAgo:{justNow:"Только что",minutes:"{count} мин. назад",hours:"{count} ч. назад",days:"{count} дн. назад"}},detail:{status:"Статус",assignee:"Ответственный",priority:"Приоритет",tenant:"Арендатор",createdAt:"Дата создания",startedAt:"Дата начала",completedAt:"Дата завершения",comments:"Комментарии",events:"События",runs:"Записи выполнения",result:"Результат выполнения",sessions:"Связанные сеансы",sessionMessages:"Журнал сеанса",noSessions:"Связанные сеансы не найдены.",artifacts:"Выходные файлы",sources:"Источники данных",highlights:"Ключевая информация",noLog:"Журнал для этой задачи не найден.",addComment:"Добавить комментарий",commentPlaceholder:"Напишите комментарий к задаче...",operations:"Операции"},action:{title:"Действие",complete:"Завершить",completeSummary:"Краткое описание завершения (необязательно)",block:"Заблокировать",blockReason:"Причина блокировки",unblock:"Разблокировать",archive:"Архивировать задачу",archiveConfirm:"Архивировать эту завершённую задачу?",assign:"Назначить",assignTo:"Назначить...",dispatch:"Запустить диспетчер",recoveryReason:"Причина восстановления (необязательно)",reclaim:"Вернуть",reassign:"Переназначить",specify:"Уточнить",loadLog:"Загрузить журнал",loadDiagnostics:"Загрузить диагностику"},message:{taskCreated:"Задача создана",taskCompleted:"Задача завершена",taskBlocked:"Задача заблокирована",taskUnblocked:"Задача разблокирована",taskArchived:"Задача архивирована",taskAssigned:"Задача назначена",dispatchNudged:"Диспетчер запущен",commentAdded:"Комментарий добавлен",taskReclaimed:"Задача возвращена",taskReassigned:"Задача переназначена",taskSpecified:"Задача уточнена",loadFailed:"Ошибка загрузки задач"},stats:{total:"Всего",tasks:"задач"}},jobs:{title:"Периодические задачи",createJob:"Создать задачу",editJob:"Редактировать задачу",noJobs:"Нет периодических задач. Создайте первую.",sortBy:"Сортировка",sortByName:"По имени",sortByTime:"По дате",sortByNameHint:"Сортировать по имени",sortByTimeHint:"Сортировать по дате",sortAsc:"По возрастанию",sortDesc:"По убыванию",name:"Название",namePlaceholder:"Название задачи",schedule:"Выражение расписания (Cron)",schedulePlaceholder:"Например, 0 9 * * *",quickPresets:"Быстрые предустановки",selectPreset:"Выберите предустановку...",presetEveryMinute:"Каждую минуту",presetEvery5Min:"Каждые 5 минут",presetEveryHour:"Каждый час",presetEveryDay:"Каждый день в 00:00",presetEveryDay9:"Каждый день в 09:00",presetEveryMonday:"Каждый понедельник в 09:00",presetEveryMonth:"1-го числа каждого месяца в 09:00",prompt:"Подсказка (промпт)",promptPlaceholder:"Содержимое для выполнения",skills:"Навыки",skillsPlaceholder:"Выберите навыки...",provider:"Provider",model:"Model",defaultProvider:"Default provider",defaultModel:"Default model",deliverTarget:"Цель доставки",origin:"Источник",local:"Локально",repeatCount:"Количество повторений (необязательно)",modelPlaceholder:"Модель по умолчанию",repeatPlaceholder:"Оставьте пустым для бесконечного повторения",jobCreated:"Задача создана",jobUpdated:"Задача обновлена",nameRequired:"Название обязательно для заполнения",scheduleRequired:"Выражение расписания обязательно для заполнения",promptRequired:"Текст запроса обязателен для заполнения",loadFailed:"Ошибка загрузки задач",jobPaused:"Задача приостановлена",jobResumed:"Задача возобновлена",jobTriggered:"Задача запущена",modelUpdated:"Модель обновлена",jobDeleted:"Задача удалена",status:{running:"Выполняется",paused:"Приостановлена",disabled:"Отключена",scheduled:"Запланирована"},info:{model:"Модель",provider:"Provider",schedule:"Расписание",lastRun:"Последний запуск",nextRun:"Следующий запуск",deliver:"Доставка",repeat:"Повторение"},action:{pause:"Приостановить",pauseJob:"Приостановить задачу",resume:"Возобновить",resumeJob:"Возобновить задачу",runNow:"Выполнить сейчас",triggerImmediately:"Запустить немедленно"},runHistory:{title:"История выполнения",runs:"запусков",noRuns:"Нет истории выполнения."}},skills:{title:"Навыки",targetFilter:"Среда",targets:{hermes:"Hermes",claude:"Claude",codex:"Codex"},searchPlaceholder:"Поиск навыков...",noMatch:"Нет подходящих навыков",noSkills:"Нет навыков",backTo:"Назад",attachedFiles:"Прикреплённые файлы",loadFailed:"Ошибка загрузки навыков",fileLoadFailed:"Ошибка загрузки файла",modified:"Пользователь изменил",archived:"В архиве",pinned:"Закреплено",pin:"Закрепить навык",unpin:"Открепить",pinFailed:"Ошибка изменения статуса закрепления",edit:"Редактировать",saving:"Сохранение...",editorLabel:"Редактор skill",saveSuccess:"Skill сохранён",saveFailed:"Ошибка сохранения skill",toggleFailed:"Ошибка переключения статуса навыка",source:{builtin:"Встроенный",hub:"Установленный из Hub",local:"Локально установленный"},writeApprovalButton:"Ожидает {count}",writeApprovalTitle:"Ожидающие подтверждения записи",writeApprovalDescription:"Подтвердите или отклоните записи памяти и skills, подготовленные Hermes Agent.",writeApprovalRefresh:"Обновить",writeApprovalEmpty:"Нет ожидающих записей.",writeApprovalUnsupported:"Эта версия Hermes Agent не поддерживает подтверждение записей. Обновите Hermes Agent, чтобы использовать эту функцию.",writeApprovalMemory:"Память",writeApprovalSkills:"Skills",writeApprovalViewDiff:"Проверить",writeApprovalHideDiff:"Скрыть",writeApprovalNoDiff:"Нет доступных изменений.",writeApprovalLoadFailed:"Не удалось загрузить ожидающие записи",writeApprovalDiffFailed:"Не удалось загрузить детали записи",writeApprovalActionFailed:"Не удалось обработать ожидающую запись",writeApprovalApproved:"Запись подтверждена",writeApprovalRejected:"Запись отклонена",writeApprovalApprove:"Подтвердить",writeApprovalReject:"Отклонить",writeApprovalPendingMemoryWrite:"Ожидающая запись памяти",writeApprovalCurrentFile:"Текущий файл {file}",writeApprovalProposedFile:"Предлагаемый файл {file}",writeApprovalDiffSection:"Изменения",writeApprovalPatchOldStringMissing:"old_string патча не найден в текущем файле {file}; подтверждение не изменит файл.",writeApprovalRequestedOldString:"Запрошенный old_string",writeApprovalCurrentReadFailed:"Текущий файл {file} не удалось прочитать как текст UTF-8.",writeApprovalDeleteSkill:"Это подтверждение удалит skill {skill}.",writeApprovalRemoveFile:"Это подтверждение удалит {file} из skill {skill}."},plugins:{title:"Плагины",refresh:"Обновить",notice:"Отображаются манифесты обнаруживаемых плагинов Hermes. Чтение метаданных не загружает код плагинов. Пользовательские standalone-плагины можно включать или отключать здесь; изменения вступают в силу в новых сеансах Hermes.",loadFailed:"Ошибка загрузки плагинов",updateFailed:"Не удалось обновить плагин",enableSuccess:"{name} включён",disableSuccess:"{name} отключён",commandCopied:"Команда скопирована",searchPlaceholder:"Поиск по ключу, имени, описанию, пути...",source:"Источник",kind:"Тип",statusTitle:"Статус",configStatus:"Конфигурация: {status}",notAvailable:"Нет",copyCommand:"Копировать команду",managedElsewhere:"Управляется из другого места",noMatch:"Нет плагинов, соответствующих текущим критериям фильтрации",enabled:"Включён",disabled:"Отключён",summary:{total:"Всего",active:"Включено / Авто",inactive:"Не включено",disabled:"Отключено",providerManaged:"Управляется провайдером"},status:{enabled:"Включён","auto-active":"Автовключение",inactive:"Не включён",disabled:"Отключён","provider-managed":"Управляется провайдером"},statusLabel:{enabled:"Включён конфигурацией","auto-active":"Автовключение",inactive:"Не включён",disabled:"Отключён","provider-managed":"Управляется провайдером"},configStatuses:{enabled:"Включён",disabled:"Отключён","not-enabled":"Не включён",auto:"Авто","provider-managed":"Управляется провайдером"},table:{plugin:"Плагин",status:"Статус",source:"Источник",kind:"Тип",capabilities:"Возможности",path:"Путь / Точка входа",manage:"Управление"},capabilities:{tools:"{count} инструментов",hooks:"{count} хуков",env:"{count} переменных окружения"},metadata:{agentRoot:"Корневая директория агента",python:"Python",scanCwd:"Сканировать cwd",projectPlugins:"Плагины проекта"}},petdex:{title:"Petdex Pets",subtitle:"Browse the public petdex catalog used by Hermes desktop pets.",refresh:"Refresh",adopt:"Adopt",active:"Active",adopted:"Adopted {name}",adoptFailed:"Failed to adopt pet",loadFailed:"Failed to load petdex catalog",searchPlaceholder:"Search by name, slug, author, or kind",kindFilter:"Kind",spritesheet:"Spritesheet",submittedBy:"By {name}",empty:"No pets match the current filters.",showMore:"Show {count} more",summary:{total:"Catalog total",visible:"Matching",kinds:"Kinds",generatedAt:"Generated at"}},memory:{title:"Память",refresh:"Обновить",loadFailed:"Ошибка загрузки памяти",myNotes:"Мои заметки",noNotes:"Нет заметок.",notesPlaceholder:"Введите текст заметки...",userProfile:"Профиль пользователя",noProfile:"Нет профиля.",profilePlaceholder:"Введите профиль пользователя...",soul:"Душа",noSoul:"Нет конфигурации души.",soulPlaceholder:"Введите конфигурацию души..."},models:{title:"Модели",searchPlaceholder:"Поиск моделей...",noResults:"Нет результатов",noModels:"Нет моделей",addProvider:"Добавить провайдера",noProviderPromptTitle:"Провайдер модели не настроен",noProviderPromptMessage:"В текущем профиле «{profile}» не настроен провайдер модели. Открыть настройки моделей?",noProviderPromptLater:"Не сейчас",noProviderPromptAction:"Перейти к настройкам",refreshModelCache:"Обновить кеш моделей",refreshModelCacheLoading:"Обновление кеша моделей...",refreshModelCacheSuccess:"Кеш моделей обновлен",refreshModelCacheFailed:"Не удалось обновить кеш моделей",refreshModels:"Обновить модели",restoreModels:"Восстановить предыдущий список моделей",refreshModelsConfirmTitle:"Подтвердить изменения списка моделей",refreshModelsConfirmContent:"После обновления будет удалено моделей: {removed}, добавлено: {added}. Удаляемые: {removedList}",refreshModelsConfirmAction:"Заменить список моделей",refreshModelsSuccess:"Список моделей обновлён (всего {count}, недоступно {unavailable})",refreshModelsFailed:"Не удалось обновить модели провайдера",restoreModelsSuccess:"Предыдущий список моделей восстановлен (всего {count})",restoreModelsFailed:"Не удалось восстановить предыдущий список моделей",providerType:"Тип провайдера",preset:"Предустановка",custom:"Пользовательский",selectProvider:"Выбрать провайдера",chooseProvider:"Выберите провайдера...",getApiKey:"Получить API-ключ",name:"Название",autoGeneratedName:"Генерируется автоматически на основе базового URL",baseUrl:"Базовый URL",region:"Регион",regionIntl:"Международный",regionCn:"Китай",baseUrlPlaceholder:"Например, https://api.example.com/v1",apiKey:"API-ключ",apiKeyPlaceholder:"sk-...",defaultModel:"Модель по умолчанию",selectOrInput:"Выберите или введите название модели...",selectModel:"Выберите модель...",providerAdded:"Провайдер добавлен",providerDeleted:"Провайдер удалён",providerCredentialsCleared:"Учётные данные провайдера очищены",clearProviderCredentials:"Очистить учётные данные",clearCredentialsConfirm:"Очистить сохранённые учётные данные для «{name}»? Этот встроенный провайдер останется в списке и снова заработает после настройки учётных данных.",disableProvider:"Отключить провайдера",disableProviderConfirm:"Отключить встроенного провайдера «{name}»? Он останется встроенным и его можно будет включить позже.",providerDisabled:"Провайдер отключён",defaultProviderUpdated:"Провайдер по умолчанию обновлён",defaultProviderUpdateFailed:"Не удалось обновить провайдера по умолчанию",defaultModelUpdated:"Модель по умолчанию обновлена",defaultModelUpdateFailed:"Не удалось обновить модель по умолчанию",deleteProvider:"Удалить провайдера",deleteConfirm:'Удалить "{name}"?',codexLoginTitle:"Вход в OpenAI Codex",codexWaiting:"Введите следующий код на странице авторизации:",codexCopyCode:"Код скопирован",codexOpenLink:"Открыть страницу авторизации",codexApproved:"Вход выполнен",codexExpired:"Авторизация истекла. Повторите попытку.",nousLoginTitle:"Вход в Nous Portal",nousWaiting:"Введите этот код на странице авторизации:",nousCopyCode:"Код скопирован",nousOpenLink:"Открыть страницу авторизации",nousApproved:"Вход выполнен",nousDenied:"Авторизация отклонена. Повторите попытку.",nousExpired:"Авторизация истекла. Повторите попытку.",copilotLoginTitle:"Вход в GitHub Copilot",copilotWaiting:"Перейдите на GitHub и введите код устройства для авторизации. Окно закроется автоматически после завершения.",copilotCopyCode:"Код скопирован",copilotOpenLink:"Открыть страницу авторизации GitHub",copilotApproved:"Вход выполнен!",copilotDenied:"Авторизация отклонена.",copilotExpired:"Срок действия ссылки истёк. Повторите попытку.",copilotAddDetectedTitle:"Обнаружен GitHub Copilot",copilotAddDetected:"На этом компьютере найдены учётные данные OAuth GitHub Copilot. Нажмите «Добавить», чтобы включить Copilot в Hermes.",copilotAddSourceEnv:"Источник: ~/.hermes/.env (COPILOT_GITHUB_TOKEN)",copilotAddSourceGhCli:"Источник: gh CLI (gh auth token)",copilotAddSourceAppsJson:"Источник: плагин Copilot для VS Code (apps.json)",copilotDeleteHintEnv:"Это действие удалит COPILOT_GITHUB_TOKEN из ~/.hermes/.env, не затрагивая другие инструменты.",copilotDeleteHintGhCli:"Copilot будет удалён из списка Hermes. Это не повлияет на gh CLI — `gh auth status` по-прежнему будет показывать вход.",copilotDeleteHintAppsJson:"Copilot будет удалён из списка Hermes. Это не повлияет на вход в плагин Copilot для VS Code.",xaiLoginTitle:"Вход через OAuth xAI Grok",xaiWaiting:"Авторизуйтесь на открывшейся странице xAI. Окно закроется автоматически.",xaiOpenLink:"Открыть страницу авторизации xAI",xaiCopyLink:"Копировать ссылку авторизации",xaiApproved:"Вход выполнен!",xaiExpired:"Срок действия ссылки истёк. Повторите попытку.",anthropicLoginTitle:"Вход Claude OAuth",anthropicWaiting:"Завершите авторизацию на странице Claude и вставьте полученный код здесь.",anthropicOpenLink:"Открыть страницу авторизации Claude",anthropicCopyLink:"Копировать ссылку авторизации",anthropicCodePlaceholder:"Вставьте код авторизации...",anthropicSubmitCode:"Отправить код",anthropicApproved:"Вход выполнен!",anthropicExpired:"Авторизация истекла. Повторите попытку.",minimaxLoginTitle:"Вход в MiniMax Coding Plan",minimaxRegionHint:"Выберите регион MiniMax для вашей учетной записи Coding Plan.",minimaxGlobal:"Глобальный",minimaxChina:"Китай",minimaxStart:"Начать авторизацию",minimaxWaiting:"Откройте страницу авторизации MiniMax и введите этот код. После подтверждения окно закроется автоматически.",minimaxOpenLink:"Открыть страницу авторизации MiniMax",minimaxApproved:"Вход выполнен!",minimaxExpired:"Авторизация истекла. Повторите попытку.",customBadge:"Пользовательская",previewBadge:"Предварительная",disabledBadge:"Недоступна",disabledTooltip:"Эта модель недоступна для текущей учётной записи",customModelPlaceholder:"ID модели, отсутствующей в списке",customModelHint:"Используйте, если провайдер поддерживает модель, но она не возвращена. Не переименование. Нажмите Enter для загрузки.",removeCustomModel:"Удалить эту модель из списка",refresh:"Обновить список моделей (перезагрузить config.yaml)",noProviders:"Нет провайдеров. Добавьте первого.",models:"Список моделей",count:"моделей",more:"ещё",aliasEdit:"Переименовать",aliasTitle:"Отображаемое имя модели",aliasTitleFor:"Отображаемое имя для {model}",aliasPlaceholder:"Оставьте пустым для использования исходного ID модели",aliasHint:"Изменяет только отображаемое имя в Web UI. В Hermes отправляется исходный ID модели.",aliasCanonical:"Исходный ID: {model}",aliasUseOriginal:"Восстановить исходный ID",aliasManage:"Отображаемые имена",aliasManageFor:"Отображаемые имена для {provider}",aliasSaveFailed:"Не удалось сохранить отображаемое имя",manageVisibleModels:"Управлять видимыми моделями",manageVisibleModelsFor:"Управление видимыми моделями для {name}",visibilityHint:"Влияет только на отображение в выборе моделей Web UI и на странице моделей. Не изменяет конфигурацию provider/model в Hermes CLI. Вызовы используют исходный ID модели.",visibilitySelectOne:"Оставьте хотя бы одну видимую модель",visibilitySaved:"Видимые модели сохранены",visibilitySaveFailed:"Не удалось сохранить видимые модели",showAllModels:"Показать все модели",clearVisibleModels:"Снять все",generalTitle:"Основные модели",combinationTitle:"Ансамбли моделей",combinationSubtitle:"Настройте пресеты MoA: reference-модели сначала дают варианты, затем одна aggregator-модель формирует финальный ответ и вызовы инструментов.",combinationPreset:"Пресет",combinationName:"Название",combinationAddModel:"Добавить ансамбль моделей",combinationEditModel:"Изменить ансамбль моделей",combinationNewPreset:"Новый пресет",combinationPresetPlaceholder:"например review",combinationAddPreset:"Добавить пресет",combinationSetDefault:"Сделать стандартным",combinationEnabled:"Включить reference-модели",combinationReferenceModels:"Reference-модели",combinationReferenceModel:"Reference-модель",combinationAddReference:"Добавить reference-модель",combinationAggregator:"Aggregator-модель",combinationReferenceTemperature:"Температура reference",combinationAggregatorTemperature:"Температура aggregator",combinationMaxTokens:"Макс. токенов",combinationNotSet:"Не задано",combinationSaved:"Ансамбль моделей сохранен",combinationLoadFailed:"Не удалось загрузить ансамбль моделей",combinationSaveFailed:"Не удалось сохранить ансамбль моделей",combinationPresetExists:"Пресет уже существует",combinationNameRequired:"Введите название ансамбля моделей",combinationNameInvalid:"Название может содержать только буквы, цифры, подчеркивания, дефисы и точки",combinationReferenceRequired:"Добавьте хотя бы одну reference-модель",combinationAggregatorRequired:"Выберите aggregator-модель",auxiliaryTitle:"Вспомогательные модели",auxiliarySubtitle:"Переопределения моделей для фоновых задач: сжатия, зрения, подтверждений, MCP и обслуживания.",auxiliaryRefresh:"Обновить",auxiliaryTask:"Задача",auxiliaryTimeout:"Тайм-аут",auxiliaryDownloadTimeout:"Тайм-аут загрузки",auxiliaryActions:"Действия",auxiliaryDefault:"По умолчанию",auxiliaryCustomEndpoint:"Пользовательский endpoint",auxiliaryProviderAuto:"Авто",auxiliaryProviderMain:"Основная модель",auxiliaryProviderPlaceholder:"auto, main или ключ провайдера",auxiliaryDownloadShort:"загрузка",auxiliaryExtraBody:"JSON дополнительного тела",auxiliaryClear:"Сбросить",auxiliarySaved:"Вспомогательные модели сохранены",auxiliaryLoadFailed:"Не удалось загрузить вспомогательные модели",auxiliarySaveFailed:"Не удалось сохранить вспомогательные модели",auxiliaryInvalidExtraBody:"Дополнительное тело должно быть JSON-объектом",auxiliaryTaskCompression:"Сжатие",auxiliaryTaskVision:"Зрение",auxiliaryTaskWebExtract:"Извлечение из веб-страниц",auxiliaryTaskSkillsHub:"Центр навыков",auxiliaryTaskApproval:"Подтверждение",auxiliaryTaskMcp:"MCP",auxiliaryTaskTitleGeneration:"Генерация заголовков",auxiliaryTaskTriageSpecifier:"Уточнение triage",auxiliaryTaskKanbanDecomposer:"Разбиение Kanban",auxiliaryTaskProfileDescriber:"Описание профиля",auxiliaryTaskCurator:"Куратор",auxiliaryTaskSessionSearch:"Поиск сессий",auxiliaryTaskFlushMemories:"Запись воспоминаний",currentDefault:"Текущая по умолчанию",defaultShort:"По умолч.",setDefaultProvider:"Сделать провайдером по умолчанию",setDefault:"Сделать по умолчанию",builtIn:"Встроенный",customType:"Пользовательский",provider:"Провайдер",contextLength:"Длина контекста",contextLengthPlaceholder:"Например, 200000 (необязательно)",apiMode:"Режим API",local:"Локальный ({host})",selectProviderRequired:"Выберите провайдера",baseUrlRequired:"Базовый URL обязателен",apiKeyRequired:"API-ключ обязателен",modelRequired:"Модель по умолчанию обязательна",enterBaseUrl:"Сначала введите базовый URL",unexpectedFormat:"Неожиданный формат ответа",foundModels:"Найдено моделей: {count}",fetchFailed:"Не удалось получить модели"},profiles:{title:"Профили",create:"Создать профиль",import:"Импорт",export:"Экспорт",rename:"Переименовать",delete:"Удалить",switchTo:"Переключить профиль Hermes",switchConfirm:"Будет выполнено `hermes profile use {name}` и активный профиль Hermes CLI переключится. Продолжить?",switchSuccess:'Активный профиль Hermes переключён на "{name}"',switchFailed:"Не удалось переключить профиль Hermes. Возможно, требуется ручной перезапуск шлюза.",createSuccess:'Профиль "{name}" создан',createFailed:"Ошибка создания профиля",renameSuccess:"Профиль переименован",renameFailed:"Ошибка переименования профиля",deleteConfirm:'Удалить профиль "{name}"?',deleteSuccess:"Профиль удалён",deleteFailed:"Ошибка удаления профиля",exportSuccess:"Профиль экспортирован",exportFailed:"Ошибка экспорта профиля",exportTimeout:"Время экспорта истекло. Профиль слишком велик для архивации — обычно его раздувают кэши и виртуальные окружения в workspace.",importTimeout:"Время импорта истекло, пока сервер распаковывал архив. Повторите попытку на более быстром диске или импортируйте архив через Hermes CLI.",importSuccess:"Профиль импортирован",importFailed:"Ошибка импорта профиля",importSelectFile:"Выберите архивный файл",importInvalidFile:"Выберите корректный архивный файл (.tar.gz, .tgz, .gz, .zip)",name:"Название профиля",namePlaceholder:"Только строчные буквы, цифры, дефисы",nameValidation:"Название профиля может содержать только строчные буквы, цифры, символы подчёркивания и дефисы",newName:"Новое название",newNamePlaceholder:"Строчные буквы, цифры, дефис",cloneFromCurrent:"Клонировать из текущего профиля",cloneCleanupNotice:"При клонировании автоматически пропускаются эксклюзивные учётные данные платформ (Weixin / Telegram / Slack и др.), чтобы избежать конфликта с исходным профилем",cloneStrippedCredentials:"Очищено {count} эксклюзивных учётных данных: {list}",cloneDisabledPlatforms:"Отключено платформ: {count} — {list}",cloneStrippedConfigCredentials:"Очищено встроенных учётных данных в config.yaml: {count} — {list}",archivePath:"Путь к архиву",archivePathPlaceholder:"Путь к архивному файлу на сервере",importName:"Название профиля (необязательно)",importNamePlaceholder:"Оставьте пустым для использования имени архива",active:"Активен",model:"Модель",gateway:"Шлюз",alias:"Псевдоним",provider:"Провайдер",path:"Путь",skills:"Навыки",hasEnv:"Есть .env",hasSoulMd:"Есть soul.md",noProfiles:"Нет профилей. Создайте первый.",avatar:{title:"Пользовательский аватар",customize:"Аватар",upload:"Загрузить изображение",random:"Случайный",reset:"Сбросить на стандартный",hint:"Поддерживаются PNG, JPEG, WebP, максимум 1 МБ",invalidType:"Выберите изображение в формате PNG, JPEG или WebP",tooLarge:"Аватар не может превышать 1 МБ",saveSuccess:"Аватар сохранён",saveFailed:"Ошибка сохранения аватара",resetSuccess:"Стандартный аватар восстановлен",resetFailed:"Ошибка восстановления стандартного аватара"},runtime:{activeProfile:"Текущий: {name}",bridgeWorker:"Состояние моста",gateway:"Шлюз",active:"Активен",activeTag:"Текущий",idle:"Простой",running:"Работает",stopped:"Остановлен",restartGateway:"Перезапустить шлюз",restartProfile:"Перезапустить профиль",switchProfile:"Переключить профиль интерфейса",gatewayRestarted:"Шлюз перезапущен: {name}",gatewayRestartFailed:"Ошибка перезапуска шлюза",profileRestarted:"Профиль перезапущен: {name}",profileRestartFailed:"Ошибка перезапуска профиля"}},logs:{title:"Логи",all:"Все",searchPlaceholder:"Поиск...",refresh:"Обновить",noEntries:"Нет записей"},theme:{title:"Тема",saved:"Тема сохранена",saveFailed:"Не удалось сохранить тему",reset:"Восстановить значения",resetSuccess:"Тема по умолчанию восстановлена",appearance:"Внешний вид",appearanceHint:"Изменения сразу отображаются во всём интерфейсе",mode:"Яркость",modeHint:"Выберите светлую или тёмную палитру",modeSystem:"Как в системе",modeLight:"Светлая",modeDark:"Тёмная",style:"Стиль",styleHint:"Выберите характер интерфейса",styleInk:"Тушь",styleComic:"Комикс",fontSize:"Размер текста",fontSizeHint:"Базовый размер текста интерфейса и диалогов",textColor:"Цвет текста",textColorHint:"Вторичные оттенки текста создаются автоматически",accentColor:"Цвет выделения",accentColorHint:"Для активных элементов, выделения и основных кнопок",background:"Фоновое изображение",backgroundHint:"Загрузите личный фон рабочего пространства",backgroundTypeError:"Используйте изображение PNG, JPEG, WebP или GIF",backgroundSizeError:"Размер фонового изображения не должен превышать 10 МБ",backgroundUploaded:"Фоновое изображение обновлено",backgroundUploadFailed:"Не удалось загрузить фоновое изображение",backgroundRemoved:"Фоновое изображение удалено",backgroundRemoveFailed:"Не удалось удалить фоновое изображение",backgroundReplace:"Заменить изображение",backgroundUpload:"Загрузить изображение",backgroundRemove:"Удалить",backgroundEmpty:"Фоновое изображение не задано",backgroundNote:"Изображение хранится в аккаунте. Локальный кэш предотвращает мерцание.",preview:"Предпросмотр",previewTitle:"Ваше пространство, ваша атмосфера",previewText:"Цвета текста и выделения применяются ко всему интерфейсу.",previewAction:"Выбранное действие"},settings:{title:"Настройки",saved:"Сохранено",saveFailed:"Ошибка сохранения",tabs:{display:"Отображение",account:"Текущий аккаунт",users:"Управление аккаунтами",webhooks:"Вебхуки",agent:"Агент",proxy:"Прокси",memory:"Память",compression:"Сжатие контекста",session:"Сеанс",privacy:"Конфиденциальность",apiServer:"API-сервер",models:"Модели",voice:"Голос"},webhooks:{title:"Вебхуки",description:"Отправляйте события жизненного цикла Chat Run во внешние системы, не блокируя выполнение чата.",deliveryNote:"Для доставки используется ограниченная очередь в памяти. Эндпоинты обрабатываются параллельно, а для каждого эндпоинта сохраняется порядок событий. Ожидающие доставки не сохраняются после перезапуска сервера.",createTitle:"Добавить вебхук",editTitle:"Изменить вебхук",allProfiles:"Все профили",queued:"В очереди: {count}",deleteConfirm:"Удалить этот вебхук? Его ожидающие доставки также будут отброшены.",localInboxTitle:"Локальный тестовый ящик",localInboxDescription:"Последние события, полученные встроенным тестовым приёмником: {count}. Они хранятся только в памяти и удаляются при перезапуске сервера.",localInboxEmpty:"Локальные тестовые события ещё не получены.",localInboxPayloadTitle:"Полученная нагрузка вебхука",clearInboxConfirm:"Очистить все события из локального тестового ящика?",columns:{name:"Название",url:"URL",events:"События",profiles:"Профили",status:"Состояние",actions:"Действия",receivedAt:"Получено",event:"Событие",eventId:"ID события",deliveryId:"ID доставки"},events:{messageCreated:"Сообщение пользователя создано",runQueued:"Запуск добавлен в очередь",runStarted:"Запуск начат",toolStarted:"Инструмент запущен",toolCompleted:"Инструмент завершён",toolFailed:"Ошибка инструмента",approvalRequested:"Запрошено разрешение",approvalResolved:"Разрешение обработано",clarificationRequested:"Запрошено уточнение",clarificationResolved:"Уточнение обработано",completed:"Выполнение завершено",failed:"Ошибка выполнения"},status:{enabled:"Включён",disabled:"Отключён"},runtime:{idle:"Ожидание",delivering:"Доставка",retrying:"Ожидание повтора",success:"Доставлено",failed:"Ошибка",dropped:"Отброшено"},actions:{add:"Добавить вебхук",localTest:"Использовать локальный тестовый приёмник",test:"Проверить",enable:"Включить",disable:"Отключить",refresh:"Обновить",clear:"Очистить",view:"Открыть"},form:{name:"Название",localTestName:"Локальный тест вебхука",namePlaceholder:"Например: Операционные уведомления",url:"URL эндпоинта",secret:"Секрет подписи",secretPlaceholder:"Необязательный секрет подписи HMAC-SHA256",secretKeepPlaceholder:"Оставьте пустым, чтобы сохранить текущий секрет",clearSecret:"Удалить сохранённый секрет",events:"События",profiles:"Профили",profilesPlaceholder:"Оставьте пустым, чтобы получать все профили",maxRetries:"Повторные попытки после первой ошибки (0–10)",includeContent:"Включать итоговый текст ассистента",includeContentHint:"Итоговый ответ может содержать конфиденциальную информацию. Рассуждения, системные промпты и аргументы инструментов никогда не отправляются.",includeUserContent:"Включать текст сообщения пользователя",includeUserContentHint:"Сообщения пользователя могут содержать конфиденциальную информацию. По умолчанию отключено; системные промпты, рассуждения, аргументы и результаты инструментов не включаются.",allowPrivateNetwork:"Разрешить частные или локальные сетевые адреса",allowPrivateNetworkHint:"Включайте только для доверенных внутренних эндпоинтов. DNS проверяется заново перед каждой доставкой.",enabled:"Включён"},messages:{required:"Название и URL обязательны",eventRequired:"Выберите хотя бы одно событие",loadFailed:"Не удалось загрузить вебхуки",saved:"Вебхук сохранён",saveFailed:"Не удалось сохранить вебхук",deleted:"Вебхук удалён",deleteFailed:"Не удалось удалить вебхук",testSucceeded:"Тестовый вебхук доставлен",testFailed:"Ошибка тестового вебхука",localTestFailed:"Не удалось создать локальный тестовый приёмник",inboxLoadFailed:"Не удалось загрузить локальные тестовые события",inboxCleared:"Локальные тестовые события очищены",inboxClearFailed:"Не удалось очистить локальные тестовые события"}},models:{apiKey:"API-ключ",apiKeyPlaceholder:"Введите API-ключ",save:"Сохранить",saved:"Сохранено",saveFailed:"Ошибка сохранения",noProviders:"Нет настроенных моделей"},display:{streaming:"Потоковый ответ",streamingHint:"Отображать ответ AI по мере генерации",compact:"Компактный режим",compactHint:"Уменьшить отступы между сообщениями",showReasoning:"Показывать процесс рассуждения",showReasoningHint:"Отображать ход мыслей модели",showCost:"Показывать стоимость",showCostHint:"Отображать количество использованных токенов в ответе",inlineDiffs:"Встроенные различия",inlineDiffsHint:"Отображать изменения в коде внутри строки",bellOnComplete:"Звук завершения",bellOnCompleteHint:"Воспроизводить звук по окончании ответа AI",notifyOnComplete:"Уведомление о завершении",notifyOnApproval:"Approval Desktop Notification",notifyOnApprovalHint:"Show a system notification when a new approval or clarification needs attention while Studio is in the background",notifyOnApprovalTest:"Approval desktop notifications are enabled.",notifyOnApprovalTestButton:"Test",notifyOnApprovalTestSent:"Approval notification sent",notifyOnApprovalTestFailed:"Failed to send approval notification",approvalNotificationTitle:"Approval required",approvalNotificationClarifyTitle:"Clarification required",approvalNotificationBody:"Open Hermes Studio to review and respond.",notifyOnCompleteHint:"Показывать системное уведомление по окончании ответа AI",notifyOnCompleteMacHint:"В macOS разрешите уведомления браузера в системных настройках.",notifyOnCompleteDenied:"Разрешение на уведомления отклонено",notifyOnCompleteInsecure:"Для уведомлений браузера требуется HTTPS или localhost",notifyOnCompleteUnsupported:"Этот браузер не поддерживает уведомления",notifyOnCompleteTest:"Уведомления включены.",notifyOnCompleteTestButton:"Тест",notifyOnCompleteTesting:"Отправка тестового уведомления...",notifyOnCompleteTestSent:"Тестовое уведомление отправлено",notifyOnCompleteTestFailed:"Не удалось отправить тестовое уведомление",busyInputMode:"Режим ввода во время занятости",busyInputModeHint:"Разрешить ввод, пока AI обрабатывает запрос",theme:"Тема",themeHint:"Выберите светлую, тёмную или системную тему",themeLight:"Светлая",themeDark:"Тёмная",themeSystem:"Системная",chatInputHeight:"Высота поля ввода чата",chatInputHeightHint:"Высота поля ввода чата на рабочем столе в пикселях. На мобильных остается авто."},agent:{maxTurns:"Максимум ходов",maxTurnsHint:"Максимальное количество ходов в одном диалоге",gatewayTimeout:"Таймаут шлюза",gatewayTimeoutHint:"Таймаут одного запроса (секунды)",restartDrainTimeout:"Таймаут слива при перезапуске",restartDrainTimeoutHint:"Время ожидания завершения запросов перед перезапуском (секунды)",toolEnforcement:"Стратегия выполнения инструментов",toolEnforcementHint:"Управление режимом вызова инструментов",auto:"Автоматически",always:"Всегда",never:"Никогда"},gatewayAutoStart:{title:"Автозапуск gateway",description:"Управляет тем, какие локальные gateway профилей Hermes Web UI запускает при старте. Настройка хранится в конфигурации Web UI, а не в profile config.yaml.",enabled:"Автоматически запускать gateway",enabledHint:"Если выключено, при старте не будет автоматически запущен ни один gateway профиля.",management:"Единый gateway",managementHint:"Требуется Hermes Agent 0.17.0 или новее. Если включено, Web UI записывает multiplex_profiles, чтобы default gateway обслуживал все профили; другие профили не могут отдельно настраивать точки входа сообщений, такие как Feishu, Weixin или QQBot. При выключении эта настройка удаляется.",managementAuto:"Автоматически",managementPerProfile:"Один gateway на профиль",managementUnified:"Единый default gateway",mode:"Политика профилей",modeHint:"Запускать все найденные профили или только явный список включения.",modeAll:"Все найденные профили",modeInclude:"Только включенные профили",include:"Включенные профили",includeHint:"Имена профилей через запятую. В режиме включения пустой список не запускает ничего.",exclude:"Исключенные профили",excludeHint:"Имена профилей через запятую, которые нужно пропустить после применения политики.",profileListPlaceholder:"default, reviewer"},proxy:{title:"Прокси gateway",description:"Задаёт переменные окружения прокси для gateway выбранного профиля. После изменений gateway перезапускается, чтобы платформы сообщений использовали новые сетевые настройки.",httpsProxy:"HTTPS_PROXY",httpsProxyHint:"Прокси для HTTPS-запросов. Обычно это основной параметр.",httpProxy:"HTTP_PROXY",httpProxyHint:"Прокси для обычных HTTP-запросов.",allProxy:"ALL_PROXY",allProxyHint:"Резервный прокси, если прокси для конкретного протокола не задан.",noProxy:"NO_PROXY",noProxyHint:"Хосты или домены через запятую, которые должны обходить прокси.",save:"Сохранить настройки прокси"},memory:{enabled:"Включить память",enabledHint:"Разрешить AI запоминать контекст диалога",userProfile:"Профиль пользователя",userProfileHint:"Разрешить AI запоминать предпочтения пользователя",charLimit:"Лимит символов памяти",charLimitHint:"Максимальное количество символов в MEMORY.md",userCharLimit:"Лимит символов профиля пользователя",userCharLimitHint:"Максимальное количество символов в USER.md"},compression:{enabled:"Включить сжатие",enabledHint:"Автоматически сжимать историю перед достижением лимита контекста модели",threshold:"Порог сжатия",thresholdHint:"Начинать сжатие, когда ожидаемое количество токенов превышает указанную долю контекста",targetRatio:"Целевая доля",targetRatioHint:"После сжатия история должна занимать указанную долю контекста",protectLastN:"Защищать последние сообщения",protectLastNHint:"Сколько последних сообщений не участвуют в сжатии",protectFirstN:"Защищать первые сообщения",protectFirstNHint:"Сколько первых сообщений не участвуют в сжатии"},session:{mode:"Режим сброса",modeHint:"Условия для сброса сеанса",modeBoth:"По бездействию + по расписанию",modeIdle:"Только по бездействию",modeDaily:"Только по расписанию",modeNone:"Никогда (только вручную)",idleMinutes:"Таймаут бездействия",idleMinutesHint:"Время бездействия (минуты) перед автоматическим сбросом",atHour:"Время сброса по расписанию",humanOnly:"Показывать только сеансы с человеком",humanOnlyHint:"По умолчанию скрывать шум от подчинённых агентов и мониторинга сеансов",liveMonitorHumanOnly:"В мониторинге в реальном времени: только сеансы с человеком",liveMonitorHumanOnlyHint:"По умолчанию скрывать шум от подчинённых агентов и мониторинга сеансов в просмотре в реальном времени",atHourHint:"Сбрасывать сеанс каждый день в указанный час",requireAuth:"Авторизация сеанса",requireAuthHint:"Требовать авторизацию для операций сеанса",memoryWriteApproval:"Проверять записи памяти",memoryWriteApprovalHint:"Отправлять записи памяти Hermes Agent на подтверждение перед сохранением.",skillsWriteApproval:"Проверять записи skills",skillsWriteApprovalHint:"Отправлять изменения skills от Hermes Agent на подтверждение перед сохранением.",writeApprovalTitle:"Ожидающие подтверждения записи",writeApprovalDescription:"Подтвердите или отклоните записи памяти и skills, подготовленные Hermes Agent.",writeApprovalRefresh:"Обновить",writeApprovalEmpty:"Нет ожидающих записей.",writeApprovalMemory:"Память",writeApprovalSkills:"Skills",writeApprovalViewDiff:"Проверить",writeApprovalHideDiff:"Скрыть",writeApprovalNoDiff:"Нет доступных изменений.",writeApprovalLoadFailed:"Не удалось загрузить ожидающие записи",writeApprovalDiffFailed:"Не удалось загрузить детали записи",writeApprovalActionFailed:"Не удалось обработать ожидающую запись",writeApprovalApproved:"Запись подтверждена",writeApprovalRejected:"Запись отклонена",writeApprovalApprove:"Подтвердить",writeApprovalReject:"Отклонить",writeApprovalPendingMemoryWrite:"Ожидающая запись памяти",writeApprovalCurrentFile:"Текущий файл {file}",writeApprovalProposedFile:"Предлагаемый файл {file}",writeApprovalDiffSection:"Изменения",writeApprovalPatchOldStringMissing:"old_string патча не найден в текущем файле {file}; подтверждение не изменит файл.",writeApprovalRequestedOldString:"Запрошенный old_string",writeApprovalCurrentReadFailed:"Текущий файл {file} не удалось прочитать как текст UTF-8.",writeApprovalDeleteSkill:"Это подтверждение удалит skill {skill}.",writeApprovalRemoveFile:"Это подтверждение удалит {file} из skill {skill}."},privacy:{redactPii:"Скрывать PII",redactPiiHint:"Автоматически обнаруживать и скрывать чувствительную информацию (пароли, ключи и т.д.)"},apiServer:{enable:"Включить",enableHint:"Включить API-сервер",host:"Хост",hostHint:"Адрес для прослушивания",port:"Порт",portHint:"Порт для прослушивания",key:"Ключ",keyHint:"Ключ доступа к API",cors:"Источник CORS",corsHint:"Разрешённые источники для кросс-доменных запросов"},lockedIps:{title:"Управление заблокированными IP",count:"Заблокировано IP: {count}",empty:"Нет заблокированных IP",unlock:"Разблокировать",unlockAll:"Разблокировать все",unlockAllConfirm:"Подтвердите разблокировку всех IP?",unlocked:"IP разблокирован",allUnlocked:"Разблокировано IP: {count}",type:{password:"Password",token:"API token",pairing:"Device pairing"}},userAvatar:{title:"Аватар пользователя",upload:"Загрузить изображение",random:"Сгенерировать случайный",reset:"Сбросить по умолчанию",hint:"Поддерживаются PNG, JPEG и WebP до 1 МБ; автоматически сжимается до менее 500 КБ.",invalidType:"Выберите изображение PNG, JPEG или WebP",tooLarge:"Изображение аватара должно быть не больше 1 МБ",saveSuccess:"Аватар сохранён",saveFailed:"Не удалось сохранить аватар",resetSuccess:"Аватар сброшен",resetFailed:"Не удалось сбросить аватар"},voice:{activeTtsApi:"Активная TTS API",activeSttApi:"Активная STT API",ttsProvidersTitle:"Провайдеры TTS",ttsProvidersDescription:"Управление интеграциями преобразования текста в речь для озвучивания ответов ассистента и предпросмотра голоса.",sttProvidersTitle:"Провайдеры STT",sttProvidersDescription:"Управление интеграциями распознавания речи, используемыми микрофоном и голосовым вводом.",localSttModelTitle:"Локальный китайско-английский STT",localSttModelDescription:"Приватное распознавание на этом устройстве без отправки аудио в облако.",localSttModelUnavailable:"Скачайте и проверьте локальную модель STT перед активацией.",localSttModelReady:"Готово",localSttModelDownloading:"Загрузка",localSttModelNotInstalled:"Не установлено",localSttLanguages:"Языки",localSttLanguagesValue:"Китайский + английский",localSttDownloadSize:"Размер загрузки",localSttRuntime:"Среда выполнения",localSttDownloadCf:"Скачать через Cloudflare",localSttDownloadGithub:"Скачать через GitHub",localSttBackgroundHint:"Загрузка, проверка, распаковка и валидация выполняются в фоне.",localSttDownloadFailed:"Не удалось скачать локальную модель STT: {error}",localSttStage:{queued:"Ожидание загрузки…",resolve:"Подготовка загрузки…",download:"Загрузка модели…",verify:"Проверка контрольной суммы…",extract:"Распаковка модели…",validate:"Проверка модели…",install:"Установка модели…",completed:"Модель готова",failed:"Ошибка загрузки"},hermesConfigTitle:"Конфигурация Hermes Agent",hermesConfigDescription:"Существующие нативные провайдеры остаются в профиле Hermes; провайдеры Web UI отображаются как Hermes Studio.",hermesActiveProvider:"Активный провайдер",hermesConfiguredProviders:"Настроенные провайдеры",hermesStudioProvider:"Hermes Studio",providerSpeed:"Скорость",providerSampleRate:"Частота дискретизации",providerBitRate:"Битрейт",providerGroupId:"ID группы",providerVolume:"Громкость",providerEmotion:"Эмоция",providerDiarize:"Разделение говорящих",providerFormatText:"Форматировать расшифровку",providerTagAudioEvents:"Отмечать аудиособытия",optionEnabled:"Включено",optionDisabled:"Выключено",nativeProvider:"Нативный провайдер Hermes",selectNativeProvider:"Выбрать нативный провайдер Hermes",useHermesStudioProvider:"Использовать провайдер Hermes Studio",presetElevenLabsTtsLabel:"ElevenLabs TTS",presetGeminiTtsLabel:"Gemini TTS",presetXaiTtsLabel:"xAI TTS",presetMistralTtsLabel:"Mistral TTS",presetMinimaxTtsLabel:"MiniMax TTS",presetDeepInfraTtsLabel:"DeepInfra TTS",presetMistralSttLabel:"Mistral STT",presetXaiSttLabel:"xAI STT",presetElevenLabsSttLabel:"ElevenLabs STT",presetDeepInfraSttLabel:"DeepInfra STT",noneSelected:"Ничего не выбрано",keyStored:"Сохранен",keyMissing:"Отсутствует",customApi:"API",localBuiltin:"Локальный встроенный",ttsCardHint:"Провайдер синтеза речи",sttCardHint:"Провайдер распознавания речи",setActive:"Сделать активным",testAction:"Тест",connect:"Подключить",presetEdgeTtsLabel:"Edge TTS",presetEdgeTtsDescription:"Бесплатные облачные голоса высокого качества от Microsoft Edge.",presetOpenaiTtsLabel:"OpenAI TTS",presetMimoTtsLabel:"MiMo TTS",presetDoubaoTtsLabel:"Volcengine Doubao TTS",presetCustomTtsLabel:"Пользовательский TTS",presetBrowserSttLabel:"STT браузера",presetBrowserSttDescription:"Нативная API распознавания речи браузера.",presetOpenaiWhisperLabel:"OpenAI Whisper",presetGroqSttLabel:"Groq STT",presetDoubaoSttLabel:"Volcengine Doubao STT",presetCustomSttLabel:"Пользовательский STT",apiCompatibility:"Совместимость API",openaiCompatible:"Совместимо с OpenAI",manualCustomEndpoint:"Ручной пользовательский endpoint",connectionStep:"Подключение",discoveryManualHint:"Выбран ручной пользовательский endpoint. Автообнаружение моделей недоступно; введите имя модели вручную.",discoveryCredentialHint:"Введите Base URL и API key, затем подключитесь, чтобы получить доступные модели.",discoveryNoAutoProbeHint:"При вводе запросы не отправляются. Нажмите Connect, когда данные готовы.",apiKeyConnectPlaceholder:"Вставьте API key для подключения; сохранённые ключи никогда не показываются",connectFetchModels:"Подключить и получить модели",modelRecommendedSuffix:"рекомендуется",modelConnectManualHint:"Подключитесь для автозаполнения или введите вручную.",modelRequiredConnectManual:"Модель обязательна. Подключитесь для автозаполнения или введите вручную.",apiKeyRequired:"API key обязателен.",apiKeyRequiredForDiscovery:"API key обязателен для получения моделей.",baseUrlRequired:"Base URL обязателен.",baseUrlHttpsRequired:"Используйте http:// или https://.",baseUrlInvalid:"Введите корректный Base URL, включая https://.",discoveryFailedManualFallback:"Не удалось получить модели. Вы всё ещё можете ввести имя модели вручную.",completeRequiredProviderFields:"Заполните обязательные поля provider перед сохранением.",fetchingModels:"Получение моделей...",recommendedModel:"Рекомендуется: {model}.",useRecommendedModel:"Использовать эту.",modelsDiscovered:"Найдено моделей: {count}. Если поле пустое, выбирается рекомендуемая модель.",remove:"Удалить",testSuccess:"Тест завершен",testTextRequired:"Введите текст перед тестом.",keyMissingForTest:"Добавьте API-ключ перед тестом этого провайдера.",testing:"Тестирование...",transcribing:"Распознавание...",browserSttTestHint:"STT браузера тестируется через микрофон чата.",sttEmptyAudio:"Аудио не было записано. Попробуйте еще раз.",sttTestSuccess:"Распознавание завершено",sttRecordingHint:"Запись... нажмите Остановить, чтобы распознать.",keepStoredKeyPlaceholder:"Оставьте пустым, чтобы сохранить текущий ключ",apiKeyPlaceholder:"Введите API-ключ",lastTest:"Последний тест",notTested:"—",recording:"Запись",testFailedShort:"Ошибка",testFailedSummary:"Тест не удался. Проверьте настройки провайдера и повторите попытку.",showDetails:"Показать детали",hideDetails:"Скрыть детали",moreActions:"Еще",moreActionsFor:"Дополнительные действия для {provider}",addTtsApi:"Добавить TTS API",addSttApi:"Добавить STT API",active:"Активно",builtin:"Встроенный",connected:"Подключено",disconnected:"Отключено",source:"Источник",model:"Модель",voice:"Голос",doubaoVoiceHint:"Выберите голос Seed TTS 2.0; поле ресурса обновится автоматически.",apiKey:"API-ключ",confirmDeleteSecret:"Удалить сохраненный API-ключ для этой голосовой API?",ttsTitle:"Текст в речь",ttsSaved:"Настройки TTS сохранены на сервере",ttsSaveFailed:"Не удалось сохранить настройки TTS",ttsTestSaved:"Прослушивание успешно; настройки TTS сохранены на сервере",ttsTestSaving:"Сохранение настроек TTS перед прослушиванием...",ttsMissingBaseUrl:"Base URL требуется перед тестом. Введите endpoint провайдера и повторите тест.",ttsMissingApiKey:"API-ключ требуется перед тестом. Вставьте ключ или сначала сохраните серверный ключ.",ttsCleared:"Сохраненный TTS-ключ удален",ttsClearFailed:"Не удалось удалить сохраненный TTS-ключ",storedBaseUrlsTitle:"Сохранённые Base URLs",storedBaseUrlsHint:"Сохранённые endpoint голосовых providers. Поля выше только очищают текущее значение; сохранённые URL удаляются здесь.",storedBaseUrlsEmpty:"На сервере нет сохранённых пользовательских голосовых Base URL.",storedBaseUrlDelete:"Удалить URL",storedApiKeysTitle:"Сохранённые API keys",storedApiKeysHint:"Список голосовых API key, сохранённых на сервере. Показываются только назначение и источник; полный key не отображается.",storedApiKeysEmpty:"На сервере нет сохранённых голосовых API key.",storedKeyKindTts:"TTS",storedKeyKindStt:"STT",storedApiKeyMasked:"[stored]",storedApiKeyDelete:"Удалить key",baseUrlPresetClear:"Очистить URL",baseUrlPresetCleared:"Base URL очищен в поле.",baseUrlPresetDelete:"Удалить URL",baseUrlPresetDeleted:"Base URL удалён из сохранённого списка.",baseUrlPresetDeleteFailed:"Не удалось удалить сохранённый Base URL.",ttsPendingSecret:"Новый ключ будет сохранен",ttsStoredSecret:"На сервере сохранен ключ: {value}",ttsClearKey:"Удалить сохраненный ключ",sttTitle:"Речь в текст",sttProvider:"Провайдер STT",sttProviderHint:"Выберите способ распознавания голосового ввода",sttProviderBrowser:"Браузер",sttProviderOpenai:"Совместимо с OpenAI",sttProviderCustom:"Пользовательский",sttBrowserHint:"Использовать встроенное распознавание речи браузера, если доступно.",sttApiKey:"API-ключ",sttApiKeyHint:"Сохраняется на сервере для STT-провайдеров, которым нужна аутентификация.",sttStoredSecret:"Сохраненный серверный ключ: {value}",sttPendingSecret:"Сохраненный серверный ключ: будет обновлен при сохранении",sttClearKey:"Удалить сохраненный ключ",sttModel:"Модель",sttModelHint:"Модель распознавания речи для использования.",sttLanguage:"Язык",sttLanguageHint:"Необязательная подсказка языка, например en или zh.",sttPrompt:"Промпт",sttPromptHint:"Необязательный промпт для распознавания.",sttAudioTranscode:"Перекодирование аудио",sttAudioTranscodeNone:"Отправлять исходное аудио",sttAudioTranscodeFfmpeg:"Конвертировать в WAV через ffmpeg",sttBaseUrl:"Base URL",sttBaseUrlHint:"Пользовательский OpenAI-совместимый endpoint распознавания речи.",sttSave:"Сохранить настройки STT",sttSaved:"Настройки STT сохранены на сервере.",sttSaveFailed:"Не удалось сохранить настройки STT.",sttCleared:"Сохраненный STT-секрет удален с сервера.",sttClearFailed:"Не удалось удалить сохраненный STT-секрет.",sttActiveSaved:"Активный STT-провайдер сохранен на сервере.",sttSaveActive:"Сохранить активный STT-провайдер",sttEndpointHint:"Итоговый endpoint распознавания: {endpoint}",sttTestTitle:"Тест речи в текст",sttTestButton:"Тестировать STT API",sttTestStopButton:"Остановить и распознать",sttTestBackendOnly:"Тест STT API доступен для OpenAI-совместимых и пользовательских провайдеров.",sttTestRecording:"Запись тестового образца... нажмите Остановить и распознать, когда закончите.",sttTestTranscribing:"Распознавание тестового образца...",sttTestEmpty:"Для STT-теста не было записано аудио.",sttTestSucceeded:"STT-тест успешен.",sttTestFailed:"STT-тест не удался: {error} — {hint}",sttFailureHintMissingConfig:"Перед тестом проверьте, что провайдер сохранен с Base URL/моделью и API-ключом.",sttFailureHintAuth:"Проверьте API-ключ. Если ключ уже был сохранен, вставьте текущий ключ снова и сохраните перед тестом.",sttFailureHintForbidden:"Ключ дошел до провайдера, но не имеет разрешения для этой STT-модели или аккаунта. Проверьте доступ/оплату у провайдера.",sttFailureHintEndpointModel:"Проверьте Base URL и модель. Для Groq используйте {endpoint} с whisper-large-v3-turbo или другой STT-моделью Groq.",sttFailureHintModel:"Проверьте, что выбранная STT-модель существует и включена для этого аккаунта.",sttFailureHintQuota:"Провайдер сообщает о проблемах с квотой, оплатой или лимитом запросов. Проверьте квоту/оплату или повторите позже.",sttFailureHintNetworkCustom:"Сервер не смог обратиться к пользовательскому STT endpoint. Проверьте, что {endpoint} доступен с сервера Web UI и совместим с OpenAI.",sttFailureHintNetwork:"Сервер Web UI не смог обратиться к STT-провайдеру. Проверьте сеть/прокси/фаервол и повторите.",sttFailureHintAudio:"Записанное аудио пустое или отклонено. Попробуйте короткий четкий образец, разрешите доступ к микрофону или повторите в Chrome.",sttFailureHintGenericCustom:"Проверьте API-ключ, Base URL, модель и итоговый endpoint {endpoint}.",sttFailureHintGeneric:"Проверьте API-ключ, модель и доступ аккаунта провайдера, затем повторите.",sttTestRecordFailed:"Не удалось начать запись микрофона: {error}",sttTestTranscript:"Текст: {text}",ttsProvider:"Провайдер TTS",ttsProviderHint:"Выберите движок для озвучивания сообщений",providerWebSpeech:"WebSpeech API (встроенный в браузер)",providerOpenai:"OpenAI TTS",providerCustom:"Пользовательская конечная точка (совместимая с OpenAI)",providerEdge:"Edge TTS (бесплатно, не требует API-ключа)",providerMimo:"MiMo TTS",webspeechVoice:"Тембр",webspeechVoiceHint:"Выберите голос из предложенных браузером или системой",webspeechVoicePlaceholder:"Автоматический (голос по умолчанию)",openaiKey:"API-ключ",openaiKeyHint:"API-ключ OpenAI с правами TTS",openaiUrl:"Базовый URL API",openaiUrlHint:"Например, https://api.openai.com/v1/audio/speech",openaiModel:"Модель",openaiModelHint:"tts-1 (быстрая) / tts-1-hd (высокое качество)",openaiVoice:"Тембр",openaiVoiceHint:"Тембр для синтеза речи",customHint:"Поддерживается любая служба TTS, совместимая с OpenAI, включая GPT-SoVITS, CosyVoice и т.п.",customUrl:"URL API",customUrlHint:"Полный базовый URL службы TTS",customUrlPlaceholder:"Адрес, указанный в локальном адаптере, например http://127.0.0.1:9880",customApiKey:"API-ключ (необязательно)",customApiKeyHint:"Некоторые саморазвёрнутые службы требуют аутентификации",customApiKeyPlaceholder:"Оставьте пустым, если не требуется",edgeHint:"Работает на движке Microsoft Edge TTS (node-edge-tts).",edgeUrl:"Адрес адаптера",edgeUrlHint:"Адрес адаптера Edge TTS, например http://127.0.0.1:9882",edgeUrlPlaceholder:"http://127.0.0.1:9882",edgeVoice:"Тембр",edgeVoiceHint:"Выберите тембр для синтеза речи",edgeRate:"Скорость речи",edgeRateHint:"Регулировка скорости речи (0.5–2.0)",edgePitch:"Высота тона",edgePitchHint:"Регулировка высоты тона (–20 … +20 Гц)",testTitle:"Тестовое прослушивание",testText:"Тестовый текст",testTextPlaceholder:"Введите тестовый текст...",testTextDefault:"Здравствуйте, это тест голоса.",testButton:"Прослушать",testButtonPlaying:"Воспроизведение...",testFailed:"Ошибка теста: {error}",mimoHint:"MiMo TTS от Xiaomi. Поддерживает три режима: предустановленные тембры, дизайн тембра и клонирование тембра.",mimoApiKey:"API-ключ",mimoApiKeyHint:"Получите его на platform.xiaomimimo.com",mimoApiKeyPlaceholder:"API-ключ MiMo",mimoBaseUrl:"Базовый URL",mimoBaseUrlHint:"Конечная точка API MiMo",mimoModel:"Модель",mimoModelHint:"Выберите модель синтеза речи",mimoModelPreset:"Предустановленный тембр",mimoModelVoiceDesign:"Дизайн тембра",mimoModelVoiceClone:"Клонирование тембра",mimoVoice:"Тембр",mimoVoiceHint:"Выберите предустановленный тембр",mimoVoiceDesignPrompt:"Описание тембра",mimoVoiceDesignPromptHint:"Опишите желаемые характеристики тембра",mimoVoiceDesignPromptPlaceholder:"Например: мягкий молодой женский голос, слегка замедленный, с хрипотцой",mimoCloneAudio:"Загрузить аудио",mimoCloneAudioHint:"Загрузите аудиообразец для клонирования тембра. Поддерживаются mp3/wav, максимум 10 МБ",mimoCloneAudioUpload:"Выбрать файл",mimoCloneAudioClear:"Очистить аудио",mimoStylePrompt:"Стилевая инструкция",mimoStylePromptHint:"Необязательно. Опишите желаемый стиль речи естественным языком",mimoStylePromptPlaceholder:"Например: используйте лёгкий, приподнятый тон, темп речи чуть выше среднего"}},platform:{requireMention:"Требуется упоминание {'@'}",requireMentionGroup:"В группе требуется упоминание {'@'}бота для ответа",requireMentionChannel:"В канале требуется упоминание {'@'}бота для ответа",requireMentionRoom:"В комнате требуется упоминание {'@'}бота для ответа",reactions:"Реакции",reactionsHint:"Добавлять реакции на сообщения",freeResponseChats:"Чаты со свободным ответом",freeResponseChatsHint:"ID чатов, в которых не требуется упоминание {'@'} (через запятую)",freeResponseChannels:"Каналы со свободным ответом",freeResponseChannelsHint:"ID каналов, в которых не требуется упоминание {'@'} (через запятую)",freeResponseRooms:"Комнаты со свободным ответом",freeResponseRoomsHint:"ID комнат, в которых не требуется упоминание {'@'} (через запятую)",mentionPatterns:"Пользовательские шаблоны упоминаний",mentionPatternsHint:"Дополнительные шаблоны для срабатывания",autoThread:"Автоматически создавать ветку",autoThreadHint:"Автоматически создавать ветку для ответа после упоминания {'@'}",autoThreadHintRoom:"Автоматически создавать ветку для ответа в комнате",dmMentionThreads:"Ветки для упоминаний в ЛС",dmMentionThreadsHint:"Использовать ветки для ответов на упоминания в личных сообщениях",allowBots:"Разрешить сообщения ботов",allowBotsHint:"Отвечать на сообщения от других ботов",allowedChannels:"Разрешённые каналы",allowedChannelsHint:"Белый список ID каналов (через запятую)",ignoredChannels:"Игнорируемые каналы",ignoredChannelsHint:"Каналы, на которые не отвечать (через запятую)",noThreadChannels:"Каналы без веток",noThreadChannelsHint:"Каналы, в которых не создавать ветки (через запятую)",exclusiveTokenWarning:"Эта платформа использует эксклюзивную блокировку токенов. Каждый профиль должен использовать свой токен, иначе возникнут конфликты с другими профилями, и шлюз не запустится.",clearCredentials:"Очистить учетные данные",clearCredentialsConfirm:"Удалить сохраненные учетные данные канала «{name}»? Поведение канала и настройки доступа будут сохранены.",credentialsCleared:"Учетные данные канала очищены",clearCredentialsFailed:"Не удалось очистить учетные данные канала",clearCredentialsUnsaved:"Перед очисткой учетных данных сохраните или отмените несохраненные изменения канала.",clearCredentialsGatewayRestartFailed:"Учетные данные очищены, но шлюз не удалось перезапустить автоматически.",clearCredentialsGatewayRestartDisabled:"Учетные данные очищены, но автоматический перезапуск шлюза отключен. Перезапустите шлюз вручную.",botToken:"Токен бота",botTokenHint:"Токен бота, полученный на портале разработчика",proxyUrl:"URL прокси",proxyUrlHint:"Необязательный прокси для платформы. Поддерживает http://, https:// и socks5://",accessToken:"Токен доступа",accessTokenHint:"Токен доступа Matrix",homeserver:"URL домашнего сервера",homeserverHint:"Адрес сервера Matrix",matrixUserId:"ID пользователя Matrix",matrixUserIdHint:"Обязателен для входа по паролю, необязателен с токеном",matrixPassword:"Пароль Matrix",matrixPasswordHint:"Альтернатива токену доступа",appId:"ID приложения",appIdHint:"ID приложения Feishu",appSecret:"Секрет приложения",appSecretHint:"Секрет приложения Feishu",encryptKey:"Ключ шифрования",encryptKeyHint:"Ключ шифрования Feishu",verificationToken:"Токен проверки",verificationTokenHint:"Токен проверки Feishu",clientId:"ID клиента",clientIdHint:"ID клиента DingTalk",clientSecret:"Секрет клиента",clientSecretHint:"Секрет клиента DingTalk",cardTemplateId:"ID шаблона AI-карточки",cardTemplateIdHint:"ID шаблона AI-карточки DingTalk; оставьте пустым, чтобы отключить AI-карточки",allowedUsers:"Разрешённые пользователи",allowedUsersHint:"Белый список ID пользователей или OpenID (через запятую)",allowAllUsers:"Разрешить всех пользователей",allowAllUsersHint:"Разрешить любым пользователям отправлять сообщения; при отключении используется белый список",botId:"ID бота",botIdHint:"ID бота WeCom",wecomSecretHint:"Секрет бота WeCom",waEnabled:"Включить WhatsApp",waEnabledHint:"Включить WhatsApp с помощью пары по QR-коду",weixinToken:"Токен Weixin",weixinTokenHint:"Получите с помощью CLI (hermes weixin) при входе по QR-коду",accountId:"ID учётной записи",accountIdHint:"ID учётной записи Weixin",qrLogin:"Вход по QR-коду",qrRelogin:"Войти снова",qrFetching:"Получение QR-кода...",qrScanHint:"Отсканируйте QR-код с помощью WeChat для входа",qrScanedHint:"QR-код отсканирован. Подтвердите на телефоне...",qqAppId:"ID приложения",qqAppIdHint:"ID приложения бота QQ Open Platform",qqAppSecret:"Секрет приложения",qqAppSecretHint:"Секрет приложения бота QQ Open Platform",qqMarkdown:"Поддержка Markdown",qqMarkdownHint:"Включить сообщения в формате Markdown (может не поддерживаться некоторыми клиентами)",qqSandbox:"Режим песочницы",qqSandboxHint:"Включить песочницу (для тестирования)",qqQrScanHint:"Отсканируйте QR-код с помощью QQ или откройте ссылку на телефоне, чтобы завершить привязку"},gateways:{title:"Шлюзы",running:"Работает",stopped:"Остановлен",started:"Запущен",startFailed:"Ошибка запуска",stopFailed:"Ошибка остановки"},language:{label:"Язык",zh:"Китайский",en:"Английский",ru:"Русский"},terminal:{sessions:"Сеансы",newTab:"Новая вкладка терминала",closeSession:"Завершить этот сеанс?",sessionExited:"Выход выполнен",processExited:"Процесс завершён с кодом {code}",noSessions:"Нет активных сеансов терминала",connectionFailed:"Не удалось подключиться к службе терминала",connectionClosed:"Соединение с терминалом закрыто",connectionError:"Ошибка соединения с терминалом"},groupChat:{agentLinkButton:"Добавить своего Agent",agentOwner:"Владелец: {name}",agentLinkTitle:"Добавить Agent в эту комнату",agentLinkDescription:"Подключите собственный сервис Hermes. Сервис устанавливает исходящее зашифрованное соединение; комната не получает данные для входа или доступ к рабочей области.",agentLinkTargetUrl:"URL вашего сервиса Hermes",agentLinkTargetPlaceholder:"http://127.0.0.1:8748 or https://your-hermes.example.com",agentLinkTargetRequired:"Введите URL сервиса Hermes.",agentLinkInvalidTarget:"Введите источник HTTP или HTTPS без учётных данных, пути, параметров запроса и фрагмента.",agentLinkOpenTarget:"Войти и выбрать Agent",agentLinkPopupBlocked:"Окно авторизации заблокировано. Разрешите всплывающие окна для этой страницы и повторите попытку.",agentLinkParentUnavailable:"Окно авторизации потеряло связь со страницей приглашения. Закройте его и начните снова.",agentLinkParentUnconfirmed:"Страница приглашения не подтвердила запрос. Оставьте её открытой и перезапустите авторизацию.",agentLinkIncompleteConfiguration:"Перед запросом доступа выберите Profile, поставщика и модель.",agentLinkWaitingApproval:"Ожидание одобрения Agent владельцем комнаты…",agentLinkApproved:"Одобрено. Подключение Agent…",agentLinkConnected:"Ваш Agent подключён к комнате.",agentLinkError:"Не удалось подключить этот Agent.",agentLinkRejected:"Владелец комнаты отклонил запрос на подключение Agent.",agentLinkExpired:"Запрос на подключение Agent истёк. Создайте новый запрос.",agentLinkPairingCode:"Код ручного сопряжения",agentLinkPairingCodeHint:"Если окно авторизации не может связаться с этой страницей, вставьте в него этот краткосрочный код.",agentLinkCopyCode:"Копировать код сопряжения",agentLinkAuthorizeTitle:"Авторизация Agent для группового чата",agentLinkAuthorizeDescription:"Выберите локальный Agent для подключения. Группа сможет отправлять ему сообщения, но не получит доступ к вашей локальной рабочей области.",agentLinkSelectAgent:"Agent",agentLinkRequestConnection:"Запросить подключение",agentLinkOrPairingCode:"или использовать код ручного сопряжения",agentLinkPairingCodePlaceholder:"Вставьте код сопряжения HGC1",agentLinkConnect:"Подключить Agent",agentLinkSecurityHint:"Одобряйте только знакомые комнаты. Токен сопряжения одноразовый и скоро истечёт.",agentLinkLoadFailed:"Не удалось загрузить локальные Agents.",agentLinkConnectFailed:"Не удалось подключить выбранный Agent.",agentLinkInvalidPairingCode:"Недействительный код сопряжения.",agentLinkClose:"Закрыть",agentLinkApprovalMismatch:"После одобрения запрос на подключение изменился. Проверьте Agent и повторите попытку.",guestAgentsDisabled:"Владелец комнаты не включил гостевые Agents.",guestAgentSettings:"Подключения гостевых Agents",allowGuestAgents:"Разрешить участникам добавлять своих Agents",maxGuestAgentsPerMember:"Максимум Agents на участника",ownerApprovalHint:"Каждый Agent по-прежнему требует явного одобрения владельца комнаты.",allowRemoteWorkspaceAccess:"Разрешить удалённым Agents чтение и запись в рабочей области группы",remoteWorkspaceAccessHint:"После включения одобренные удалённые Agents получают краткосрочный доступ на время каждого запуска. Секретные файлы и внешние пути остаются заблокированы.",agentPairingRequestTitle:"Запрос на подключение Agent",agentPairingRequestDescription:"{user} хочет подключить Agent из {origin}.",approveAgent:"Одобрить Agent",rejectAgent:"Отклонить",agentPairingApproved:"Подключение Agent одобрено",agentPairingRejected:"Подключение Agent отклонено",title:"Групповой чат",refactorNoticeTitle:"Обновление группового чата",refactorNoticeMessage:"Групповой чат был значительно переработан. Если в комнате не удаётся общаться, создайте новую комнату.",emptyState:"Начните групповой разговор",createRoom:"Создать комнату",joinByCode:"Присоединиться по коду-приглашению",shareTitle:"Присоединиться к групповому чату",shareSubtitle:"Введите код приглашения — вход в аккаунт не требуется.",shareCodeHint:"Это приглашение предоставляет доступ только к соответствующей комнате.",shareInvalidCode:"Код недействителен или был обновлён. Попросите отправителя прислать новую ссылку.",shareJoining:"Входим в групповой чат…",shareNameSubtitle:"Выберите имя перед входом в комнату.",shareNameConflict:"Это имя уже используется в комнате. Выберите другое.",shareNameReserved:"Это имя зарезервировано. Выберите другое.",shareEnterRoom:"Войти в комнату",roomName:"Название комнаты",roomNamePlaceholder:"Введите название комнаты",inviteCode:"Код-приглашение",inviteCodeSettings:"Настройки кода приглашения",inviteCodePlaceholder:"Введите новый код приглашения",generateInviteCode:"Сгенерировать код приглашения",inviteCodeRotateHint:"После обновления старый код нельзя использовать для новых участников.",inviteCodeUpdated:"Код приглашения обновлен",inviteCodeUpdateFailed:"Не удалось обновить код приглашения",autoGenerate:"Сгенерировать автоматически",noRooms:"Нет комнат",localRooms:"Локальные",remoteRooms:"Удалённые",remoteRoomOffline:"Удалённое подключение не в сети.",renameRemoteRoom:"Переименовать удалённую комнату",renameRemoteRoomHint:"Изменяется только имя, отображаемое на этом устройстве.",remoteRoomRenamed:"Отображаемое имя удалённой комнаты обновлено",remoteRoomRenameFailed:"Не удалось обновить отображаемое имя удалённой комнаты",leaveRemoteRoom:"Выйти из комнаты",leaveRemoteRoomConfirm:"Выйти из «{name}»? Все Agents, подключённые с этого устройства, будут удалены из удалённой комнаты, а локальные записи подключений — удалены.",remoteRoomLeft:"Вы вышли из удалённой комнаты",remoteRoomLeaveFailed:"Не удалось выйти из удалённой комнаты",remoteRoomLeavePartial:"Локальные записи удалены, но {count} подключений Agent не удалось уведомить, поскольку удалённая комната была не в сети.",selectOrCreate:"Выберите или создайте комнату, чтобы начать чат",agents:"Агенты",allAgents:"Все Agents",addAgent:"Добавить агента",agentType:"Агент",agentTypes:{hermes:"Hermes",ekko:"Ekko",codex:"Codex",claude:"Claude"},selectProfile:"Выберите профиль",agentAdded:"Агент добавлен",selectRoomFirst:"Сначала выберите комнату",agentAlreadyInRoom:"Агент уже в комнате",agentAddFailedCount:"Не добавлено агентов: {count} — {details}",editAgentTitle:"Изменить {name}",removeMember:"Исключить",memberRemoved:"{name} исключён из комнаты",memberRemovedNotice:"Владелец исключил вас из комнаты. Пока приглашение действует, вы можете войти снова.",noAgents:"В комнате нет агентов",members:"Участники: {count}",roomCreated:"Комната создана",roomDeleted:"Комната удалена",roomCloned:"Комната клонирована",cloneRoom:"Клонировать комнату",copyRoomLink:"Копировать ссылку на комнату",manualCopyRoomLinkHint:"Браузер не смог скопировать ссылку автоматически. Выделите её и скопируйте вручную.",deleteRoomConfirm:"Удалить эту комнату?",clearContext:"Очистить контекст",clearContextConfirm:"Очистить контекст текущей комнаты? Сообщения и сжатые снимки будут удалены, агенты и участники останутся.",contextCleared:"Контекст очищен",you:"Вы",joined:"Вы присоединились к комнате",joinFailed:"Не удалось присоединиться к комнате",inputPlaceholder:"Введите сообщение... (Enter — отправить)",messageDisplayLimit:"Групповой чат показывает не более 600 сообщений",enterCode:"Введите код-приглашение",yourName:"Ваше имя",yourNamePlaceholder:"Введите ваш ник в групповом чате",yourDescription:"Самоописание (необязательно)",yourDescriptionPlaceholder:"Расскажите о себе...",agentName:"Имя агента",agentNamePlaceholder:"Пользовательское имя (оставьте пустым для использования имени профиля)",agentDesc:"Описание агента",agentDescPlaceholder:"Опишите роль этого агента...",agentReplying:"Ответ агента...",agentCompressing:"Сжатие контекста...",compressionSettings:"Настройки сжатия",triggerTokens:"Количество токенов для запуска сжатия",triggerTokensDesc:"Сжатие контекста запускается, когда количество токенов в сообщениях превышает это значение",maxHistoryTokens:"Максимум токенов в истории",maxHistoryTokensDesc:"Максимальное количество токенов, отправляемое LLM после сжатия",tailMessageCount:"Количество последних сохраняемых сообщений",tailMessageCountDesc:"Количество последних исходных сообщений, сохраняемых после сжатия",compressionConfig:"Конфигурация сжатия",compressionSaved:"Конфигурация сжатия сохранена",roomSettings:"Настройки комнаты",saveCompression:"Сохранить сжатие",compressNow:"Сжать сейчас",compressingInProgress:"Выполняется сжатие, пожалуйста, подождите",summarySettings:"Накопительное резюме",summarySettingsDesc:"Чистый Ekko Agent обновляет общее резюме комнаты через заданное число сообщений людей.",summaryProvider:"Провайдер резюме",summaryProviderPlaceholder:"Выберите провайдера",summaryModel:"Модель резюме",summaryModelPlaceholder:"Выберите модель",summaryApiMode:"Режим API",summaryEveryTurns:"Резюмировать каждые N ходов",summaryEveryTurnsDesc:"Один ход — одно сообщение человека.",summaryConfigSaved:"Настройки резюме сохранены",summaryConfigurationRequired:"Для этой комнаты ещё не настроен суммаризатор. Выберите профиль, провайдера, модель и режим API, затем сохраните.",summaryConfigurationOwnerRequired:"Для этой комнаты ещё не настроен суммаризатор. Попросите администратора настроить его перед отправкой сообщений.",saveSummaryConfig:"Сохранить настройки",currentSummary:"Текущее резюме",summaryStatus:{idle:"Ожидание",summarizing:"Создание резюме",success:"Успешно",failed:"Ошибка"},summaryUpdatedAt:"Последнее обновление",summarizedTurns:"Обработано ходов",summaryAnchor:"Якорь резюме",summaryMessagesAbove:"Сообщения выше суммированы",summaryNoAnchor:"Якоря пока нет",summaryContent:"Текст резюме",summaryEmpty:"Резюме пока нет",summaryEditKeepsAnchor:"Редактирование текста не перемещает текущий якорь.",saveSummary:"Сохранить резюме",summaryUpdated:"Резюме обновлено",summaryNever:"Никогда",summaryLoadFailed:"Не удалось загрузить резюме комнаты"},usage:{title:"Статистика использования",refresh:"Обновить",totalTokens:"Всего токенов",inputTokens:"Входящие",outputTokens:"Исходящие",totalSessions:"Всего сеансов",avgPerDay:"В среднем за день ~{n}",estimatedCost:"Примерная стоимость",cacheHitRate:"Попадания в кэш",modelBreakdown:"Распределение по моделям",agentBreakdown:"Распределение по агентам",agents:{hermes:"Hermes Agent",claudeCode:"Claude Code",codex:"Codex",ekkoAgent:"Ekko Agent",unknown:"Неизвестно"},dailyTrend:"Ежедневная динамика",date:"Дата",tokens:"Токены",cache:"Кэш",cacheRead:"Чтение из кэша",cacheWrite:"Запись в кэш",sessions:"Сеансы",cost:"Стоимость",noData:"Нет данных об использовании"},skillsUsage:{title:"Использование навыков",subtitle:"Отслеживание загрузки и редактирования навыков в сеансах Hermes",refresh:"Обновить",periodSelector:"Период использования навыков",periodLabel:"{days} дн.",summary:"Обзор",totalActions:"Действий",loads:"Загрузок",edits:"Правки",distinctSkills:"Навыков",topSkills:"Популярные",dailyTrend:"Динамика по дням",periodSummary:"За последние {days} дн.",skill:"Навык",share:"Доля",lastUsed:"Последний",noData:"Нет данных об использовании навыков",loadFailed:"Ошибка загрузки данных об использовании навыков",otherSkills:"Другие навыки"},files:{title:"Файлы",fileTree:"Древо файлов",tree:"Древо каталогов",list:"Список файлов",breadcrumbRoot:"Корневая директория",newFile:"Новый файл",newFolder:"Новая папка",upload:"Загрузить",refresh:"Обновить",open:"Открыть",edit:"Редактировать",preview:"Предпросмотр",download:"Скачать",copyPath:"Копировать путь",attachToChat:"Добавить в чат",attachFailed:"Не удалось добавить файл в чат",rename:"Переименовать",delete:"Удалить",name:"Имя",size:"Размер",modified:"Время изменения",actions:"Действия",emptyDir:"Папка пуста",loading:"Загрузка...",confirmDelete:"Удалить «{name}»?",confirmDeleteDir:"Удалить папку «{name}» со всем содержимым?",deleteFailed:"Ошибка удаления",deleted:"Удалено",renameTo:"Переименовать в",newFileName:"Имя файла",newFolderName:"Имя папки",created:"Создано",createFailed:"Ошибка создания",renamed:"Переименовано",renameFailed:"Ошибка переименования",uploadSuccess:"Загружено файлов: {count}",uploadFailed:"Ошибка загрузки",saveFailed:"Ошибка сохранения",saved:"Сохранено",unsavedChanges:"Есть несохранённые изменения. Отменить?",pathCopied:"Путь скопирован",fileTooLarge:"Файл слишком большой (максимум 10 МБ)",permissionDenied:"Невозможно изменить защищённый файл",notFound:"Файл или папка не найдены",backendError:"Ошибка файловой операции",dragDropHint:"Перетащите файлы сюда для загрузки",closeEditor:"Закрыть редактор",closePreview:"Закрыть",saveFile:"Сохранить",previewMode:"Просмотр",sourceMode:"Исходный код",tableMode:"Таблица",worksheet:"Лист",htmlPreviewTitle:"Изолированный просмотр HTML",previewLoading:"Загрузка предпросмотра...",previewFailed:"Предпросмотр недоступен",previewMimeMismatch:"Тип файла не соответствует выбранному формату предпросмотра.",downloadInstead:"Скачать файл",previousPage:"Назад",nextPage:"Далее",pageStatus:"Страница {page} из {total}",zoom:"Масштаб",pdfPageLimit:"Доступны первые {count} страниц.",tableTruncated:"Предпросмотр сокращён для сохранения отзывчивости интерфейса. Скачайте файл, чтобы увидеть все строки и столбцы."},download:{downloading:"Скачивание...",downloadFailed:"Ошибка скачивания",fileNotFound:"Файл не существует или был удалён",fileTooLarge:"Файл слишком большой (превышает лимит)",backendError:"Не удалось прочитать файл. Возможно, удалённое окружение недоступно",backendTimeout:"Таймаут чтения файла",unsupportedBackend:"Текущий терминальный бэкенд не поддерживает загрузку файлов",invalidPath:"Недействительный путь к файлу",contentDisplay:"Отображение содержимого",download:"Скачать",downloadFile:"Скачать файл"},changelog:{new_0_6_40_1:"В этот выпуск вошли все 40 PR после v0.6.39: безопасные удалённые групповые комнаты, локальное распознавание речи, расписания Workflow, глобальные подтверждения, вебхуки Chat Run, MCU и надёжность Coding Agent",new_0_6_40_2:"В групповом чате появились защищённые общие комнаты и удалённые Agents, стабилизированы передача, присутствие и отзыв Agent, сохранение аватаров офлайн-владельцев и ручное копирование ссылки без API буфера обмена (#2408, #2410, #2411, #2415, #2423)",new_0_6_40_3:"Удалённые Agents могут передавать файлы и загружать их в облачные workspaces. Для запросов не от владельца усилены границы workspace, конфиденциальных данных и личной памяти, а маршрутизация владельца и подтверждений исправлена (#2413, #2430, #2433, #2435)",new_0_6_40_4:"Групповой чат больше не переносит старые Agent Links и разделяет сворачиваемые списки локальных и удалённых комнат, поддерживая локальные псевдонимы, переход на страницу общего доступа и полную очистку при выходе (#2424, #2459)",new_0_6_40_5:"История группового чата больше не обрезается автоматически. Результаты инструментов с упоминаниями сохраняются с ограниченными ID; исправлены зависшие инструменты, согласование и маршрутизация подтверждений, а также блокировка цикла событий при подсчёте токенов (#2390, #2420, #2426, #2427, #2429, #2445)",new_0_6_40_6:"Отзывы о недавних сессиях и активности группового чата появляются быстрее, а панель инструментов раскрывается с плавной анимацией (#2389, #2414)",new_0_6_40_7:"Глобальные подтверждения принимают уже существующие запросы, показывают более понятный предпросмотр команд и отправляют системные уведомления об ожидающих действиях (#2406, #2425, #2432)",new_0_6_40_8:"Добавлен локальный потоковый STT для китайского и английского на sherpa-onnx: финальная тишина сохраняет последние слова, а совместимые с Electron аудиобуферы работают в macOS и Windows (#2447, #2448, #2461)",new_0_6_40_9:"Workflow получил надёжные запланированные запуски и полный интерфейс создания, изменения, включения, отключения и удаления расписаний (#2434, #2441)",new_0_6_40_10:"Добавлены вебхуки жизненного цикла Chat Run, удалён неиспользуемый старый endpoint, а сервер получил лёгкий endpoint проверки доступности (#2422, #2452, #2453)",new_0_6_40_11:"MCU позволяет выбирать runtime Ekko или Hermes Agent, а аватары Global Agent и индикаторы состояния MCU теперь определяются корректно (#2438, #2442)",new_0_6_40_12:"Coding Agent требует идентификатор выполнения и исправляет изоляцию сохранения запусков в Windows, тайм-ауты MCP, воспроизведение reasoning между моделями, оценку контекста и повторяющиеся инструкции Studio (#2387, #2392, #2395, #2396, #2398, #2416)",new_0_6_40_13:"В пресетах MoA настраивается интенсивность рассуждений для каждой модели, а генерация изображений отключает хранилище Responses, чтобы избежать лишнего удалённого хранения (#2439, #2449)",new_0_6_39_1:"Ekko Agent теперь явно инициализирует ресурсы, выполняет ограниченный код Node.js или Python только после подтверждения инструмента и может приостановить активный запуск для текстового вопроса или выбора варианта, а затем продолжить (#2362, #2368)",new_0_6_39_2:"Group Chat ждёт подтверждения входа в комнату перед отправкой, устраняя редкие ошибки «Not in room» при переподключении. Статус набора передаётся ограниченным heartbeat и показывается только как световая пульсация без текста на аватарах других участников (#2373)",new_0_6_39_3:"События инструментов Coding Agent в Single Chat и Group Chat теперь следуют нативному циклу CLI и отправляют один старт после завершения аргументов, устраняя дубликаты или зависшие карточки и посимвольное обновление JSON в больших комнатах (#2366, #2372)",new_0_6_39_4:"Промпты Coding Agent передаются через stdin, сохраняя многострочный ввод и изображения и обходя ограничение длины команд Windows. Group Chat больше не прерывает активную работу Codex, Claude Code или Ekko по фиксированному двухминутному таймауту (#2354, #2357)",new_0_6_39_5:"Codex использует нативный JSONL и завершение процесса как окончательный статус при восстанавливаемых обрывах прокси Provider, поэтому выполненная работа больше не отображается как ошибка Group Chat (#2375)",new_0_6_39_6:"Управление версиями проверяет целостность Runtime и показывает причину fallback desktop. Недействительный Runtime нельзя активировать, а элементы загрузки и переключения Web UI скрыты, поскольку обновления по-прежнему приходят с desktop-установщиком (#2353)",new_0_6_39_7:"Заголовки запусков Group Chat теперь показывают только имя Agent без повторяющихся описаний, делая группы сообщений компактнее (#2352)",new_0_6_39_8:"Удалённые подключения ESP32-C3 теперь сохраняют Socket.IO во время поиска устройств, повторно используют ограниченные голосовые буферы, переподключаются с задержкой и сохраняют вход при кратковременном отключении Studio, делая удалённый поиск и голосовые запросы быстрее и надёжнее (#2383)",new_0_6_38_1:"При запуске Windows-версия исправляет недействительные относительные пути Python, оставленные обновлением Agent в кэшированной среде Hermes Runtime, восстанавливая CLI, журналы и Gateway после обновления, переключения Runtime или переноса хранилища",new_0_6_38_2:"Каталог совместимости сайта снова распознаёт Hermes 0.19.0, сохраняя доступность соответствующих desktop-загрузок и проверок совместимости (#2348)",new_0_6_37_1:"Главное изменение этого выпуска из 14 PR — полная переработка Group Chat: каждый Agent независимо выбирает Profile, Provider, модель, режим API, уровень рассуждений, личность и workspace (#2334)",new_0_6_37_2:"Комнаты теперь запускают новые изолированные процессы и группируют каждый ответ с его reasoning и инструментами. Добавлены общий редактируемый скользящий итог со статусом и границами, упоминания Agent, панели комнаты/workspace и подсказки по миграции. Автовоспроизведение заранее готовит TTS разных Profile, ограничивает синтез одной задачей на Profile и строго воспроизводит FIFO, поэтому новые ответы не заменяют уже звучащую запись (#2334)",new_0_6_37_3:"MiniMax Coding Plan OAuth поддерживает регионы Global и China, а авторизованные данные Codex, xAI, Anthropic, Nous и MiniMax обновляются через постоянный Runtime Bridge (#2337)",new_0_6_37_4:"ESP32-C3 v1/v2 получили необязательное автоматическое прослушивание с локальным VAD, предварительной записью, завершением по тишине и блокировкой во время воспроизведения при сохранении push-to-talk (#2338)",new_0_6_37_5:"MCU Global Agent теперь использует краткий голосовой режим Ekko, делегирует безопасную фоновую работу, сохраняет историю и workspaces и не отправляет на устройство слишком большие результаты инструментов (#2326)",new_0_6_37_6:"Пользовательские и OpenAI-совместимые TTS автоматически повторяют запрос с форматом, поддерживаемым Provider, и преобразуют не-MP3 вывод для воспроизведения Hermes (#2328)",new_0_6_37_7:"Импорт и экспорт Profiles могут выполняться до десяти минут, показывают понятные таймауты, изолируют параллельные архивы, очищают имена и удаляют временные файлы (#2310, #2324)",new_0_6_37_8:"Hermes Agent Bridge применяет настройки рассуждений для конкретной модели, сохраняя явные переопределения запуска и прежний fallback (#2325)",new_0_6_37_9:"Управление версиями отдельно показывает фактически установленную версию Hermes Agent и путь Runtime, а также поясняет область обновления CLI и необходимость полностью закрыть Studio (#2323)",new_0_6_37_10:"Деревья файлов workspace используют меньшие отступы, чтобы имена в глубоких каталогах оставались видимыми (#2340)",new_0_6_37_11:"Desktop по умолчанию использует Hermes Agent 0.20.0 из закреплённого исходного кода и переносимые Node/npm, принимает пересозданные Windows-launcher, обновляется без системного Python и скрывает управляемый Gateway (#2321, #2344)",new_0_6_37_12:"Миграция хранилища Windows Runtime обрабатывает созданные обновлением ссылки без прав администратора, перенастраивает Python, поддерживает Unicode-пути и обновляет CLI/MCP shim при первом перезапуске (#2345)",new_0_6_37_13:"Подпись desktop для macOS использует отдельный временный keychain, совместимый со строгим режимом runners macOS 26 для обеих архитектур (#2315)",new_0_6_36_1:"Этот выпуск включает все 28 PR, объединённые после 0.6.35: голос, арабский язык и RTL, App Relay, надёжность агентов, удобство чата, Kanban, Journey, субтитры MCU и журнал запросов Ekko",new_0_6_36_2:"Настройки голоса объединены на странице «Модели» для нативных провайдеров Hermes и Web UI; Custom TTS поддерживает выбор голоса, а Edge TTS — любой Voice ID и арабские варианты (#2260, #2265, #2267)",new_0_6_36_3:"Полная поддержка арабского языка и RTL теперь охватывает направление документа, Naive UI, чат, групповой чат, Workflow, оверлеи, панели, направление отдельных блоков и исправленные названия Profile (#2269, #2270, #2271, #2273, #2277, #2294, #2303)",new_0_6_36_4:"Активные фоновые делегирования сохраняют сессию Agent Bridge до завершения работы, поэтому очистка при простое больше не прерывает долгие задачи (#2254)",new_0_6_36_5:"Список агентов группового чата снова доступен по клику на компьютере, а главное окно можно уменьшить до 769 пикселей без перехода в мобильную компоновку (#2259, #2263)",new_0_6_36_6:"Workspace diff от Codex, Claude Code и Ekko теперь показывается только в точном сообщении ассистента, которое его создало, в активных, восстановленных и групповых чатах (#2264)",new_0_6_36_7:"Английский и китайский README обновлены в соответствии с текущим продуктом и CLI, а устаревшее руководство сайта для версии 0.6.12 удалено (#2268)",new_0_6_36_8:"Независимый headless App Relay добавляет безопасное сопряжение и аутентифицированный удалённый доступ к разрешённым локальным API и потоку чата без прямого открытия Studio (#2275)",new_0_6_36_9:"Desktop Agent Browser безопасно читает длинный доступный текст по страницам и активирует элементы, чья ссылка snapshot указывает на видимый текст (#2278)",new_0_6_36_10:"В чате появились закреплённые элементы Provider, восстановление прокрутки по сообщениям, компактные панели инструментов и терминала, полноразмерные предпросмотры и workspace diff на всю ширину (#2279, #2282, #2283, #2293)",new_0_6_36_11:"Новые сессии Ekko получают изолированные по Profile рабочие пространства по умолчанию, а существующие и явно выбранные остаются без изменений (#2289)",new_0_6_36_12:"Результаты одобрения Memory и Skill теперь структурированы и сериализованы, что исключает ложные сообщения об успехе и одновременную запись в одном Profile (#2295)",new_0_6_36_13:"Kanban получил надёжное архивирование задач и перемещаемую доску, а Journey стал компактной детерминированной картой связей Memory со Skill (#2296, #2297)",new_0_6_36_14:"Живой reasoning остаётся стабильным между вызовами инструментов, восстанавливается в правильном сообщении или инструменте и больше не создаёт пустые пузыри субагентов (#2299)",new_0_6_36_15:"Речь MCU теперь показывает синхронизированные постраничные субтитры GB2312 на ESP32-C3 v1 и v2, не прерывая воспроизведение аудио (#2305)",new_0_6_36_16:"Ekko теперь пишет одну компактную запись model.request на каждую попытку модели, включая сжатие контекста, и не передаёт tool_choice при отсутствии инструментов (#2311)",new_0_6_35_1:"Постоянная память Ekko Agent теперь включена в рабочей среде: изолированное по профилям хранилище SQLite, бюджет автоматического извлечения в 4 000 токенов, улучшенный поиск по релевантности во всей памяти и более безопасная обработка запросов к моделям (#2246)",new_0_6_34_1:"В этот выпуск вошел весь 21 PR после версии 0.6.33: пользовательские темы, улучшения Ekko и Coding Agent, desktop и браузера, автоматизация и исправления надежности",new_0_6_34_2:"Для каждой учетной записи можно настроить размер и цвет текста, акцентный цвет и фон workspace с единообразными полупрозрачными поверхностями; окна Windows и настройки браузера следуют теме, а браузерные команды Ekko корректно запускаются в Windows (#2242, #2243, #2244)",new_0_6_34_3:"Ekko доступен в production с поиском Skills по требованию и мультимодальным вводом; защищенное развитие Skills, изолированные по Profile логи, сохранение протокола и сводки рассуждений Responses повышают безопасность и возможности (#2215, #2236)",new_0_6_34_4:"Память Ekko получила детерминированные структурированные категории для предпочтений, отношений, привычек, долгосрочных целей и других данных; длинные разговоры теперь используют общий цикл сжатия контекста на основе snapshots (#2229, #2230)",new_0_6_34_5:"Запуски Coding Agent сохраняют изображения между Codex, Claude Code и ограниченными протоколами Provider, обрезают чрезмерно большие результаты инструментов Responses и изолируют конфигурацию и запоздавшие события по сессиям (#2222, #2232, #2238)",new_0_6_34_6:"Проверка возможностей Hermes Workflow больше не отклоняет допустимые цели без метаданных режима API; Kanban соответствует задачам и просмотру вложений Hermes Agent 0.19, а Cron «Запустить сейчас» безопасно стартует в фоне с более строгой проверкой создания (#2239, #2216, #2228)",new_0_6_34_7:"Desktop получил отдельные компактные окна чата, браузерная автоматизация может работать с полями пароля, оплаты и файлов, а имя и описание каждого участника-человека сохраняются отдельно для каждой комнаты Group Chat (#2209, #2210, #2212)",new_0_6_34_8:"Команда /yolo на уровне сессии переключает обход подтверждений, интерфейсный предел в 200 ходов Agent удален, Markdown сохраняет прямые ASCII-кавычки, а в каталоге pt-BR восстановлены пропущенные диакритические знаки (#2223, #2225, #2234, #2221)",new_0_6_34_9:"Устройства ESP32-C3 получили настраиваемый подключенный режим ожидания, снижающий расход энергии при сохранении Wi-Fi, входа, Profile и Socket.IO, с мгновенным пробуждением и постоянной настройкой тайм-аута (#2218)",new_0_6_33_1:"В этот выпуск вошли все 16 PR после версии 0.6.32: desktop Agent Browser, доказательства и сроки запусков Workflow, работа с файлами и чатами, обновление моделей Provider и повышение надежности",new_0_6_33_2:"В desktop появился видимый многостраничный Agent Browser с изолированными Profiles, настройками прокси, хранилища и загрузок, зашифрованными постоянными cookie, защищенными действиями Agent и отложенным поиском инструментов MCP (#2177, #2182)",new_0_6_33_3:"Ссылки из личных и групповых чатов и авторизованные HTML-превью открываются во встроенном браузере; также улучшены интервалы в действиях разрешений, кроссплатформенные значки навигации и синхронизация боковой панели с заголовком окна Windows (#2191, #2194, #2198)",new_0_6_33_4:"Запуски Workflow сохраняют неизменяемое визуальное состояние на момент старта, показывают общий срок Run/Rerun с прошедшим и оставшимся временем, а история и детали разбиты на страницы с учетом фактически использованного пути (#2171, #2173, #2180)",new_0_6_33_5:"Файлы можно вставлять прямо в личные и групповые чаты или прикреплять через контекстное меню workspace; компактные столбцы метаданных оставляют больше места для имен файлов (#2175, #2176)",new_0_6_33_6:"Каждый настроенный Provider может отдельно обновлять каталог моделей, подтверждать удаления, сохранять недоступные модели по умолчанию и выполнять одно восстановление; поддержаны OAuth Provider, все языки и управление автозаполнением форм (#2115)",new_0_6_33_7:"Состояния остановки и паузы изолированы по сессиям, поэтому фоновые чаты больше не влияют на активную кнопку остановки; выделенный текст и поля ввода desktop также получили нативные действия по правому клику (#2203, #2204)",new_0_6_33_8:"Выход, обновление и установка desktop используют ограниченное по времени корректное завершение и принудительно останавливают оставшиеся деревья процессов Agent Bridge, MCP, браузера и Web UI только после истечения срока очистки (#2193)",new_0_6_33_9:"Голосовые сессии MCU изолируют результаты переднего и фонового планов, а совместимые с MiniMax имена инструментов MCP укладываются в лимит Provider без нарушения работы существующих клиентов (#2181, #2169)",new_0_6_32_1:"В этот выпуск вошли все 14 PR после версии 0.6.31: организация и сжатие сессий, групповые чаты, маршрутизация Workflow, Skill Bundles, память Ekko, Hermes 0.19 и оформление окон desktop",new_0_6_32_2:"Упоминания в групповом чате теперь работают после текста CJK, эмодзи и знаков препинания; владельцы комнат могут просматривать, создавать и обновлять коды приглашения в настройках (#2133, #2141)",new_0_6_32_3:"Workflow сохраняет источник каждого запуска Hermes Bridge при передаче и переподключении; scoped-узлы Codex и Claude Code могут использовать поддерживаемые launcher протоколы для допустимых целей с API Key (#2137, #2154)",new_0_6_32_4:"В сессиях появились глобальные категории, более точный поиск с учетом Markdown и сжатие по курсору, ограничивающее историю и сохраняющее корректность при правках, ветвлении и параллельных запусках; проект сжатия полностью документирован (#2139, #2143, #2145, #2146)",new_0_6_32_5:"Привязанные к Profile наборы Skill Bundle можно создавать, просматривать, запускать и удалять прямо в чате с понятным списком входящих Skills (#2156)",new_0_6_32_6:"Память Ekko теперь использует единую каноническую модель с изоляцией по Profile, проверкой ревизий при изменениях, улучшенным аудитом источников и более строгой фильтрацией релевантности (#2159)",new_0_6_32_7:"Промежуточные сообщения ассистента Hermes 0.19 передаются и сохраняются отдельными сообщениями; обычные личные чаты могут асинхронно получать устойчивые результаты фонового делегирования (#2160)",new_0_6_32_8:"Новые сборки desktop Runtime, резервные пути и Windows CLI shim теперь по умолчанию используют Hermes Agent 0.19.0 (#2161)",new_0_6_32_9:"Управление окном встроено в интерфейс страницы: кнопки macOS находятся в боковой панели, кнопки Windows — над основным содержимым, а Linux сохраняет нативное оформление (#2162)",new_0_6_32_10:"Документация для разработчиков теперь поддерживает как текущий checkout, так и необязательные изолированные Git worktree (#2155)"}};export{e as default};
1
+ var e={browser:{title:"Браузер",settings:"Настройки браузера",desktopOnly:"Встроенный браузер доступен только в Hermes Studio Desktop.",newTab:"Новая вкладка",back:"Назад",forward:"Вперёд",reload:"Обновить",stop:"Остановить",addressPlaceholder:"Поиск или адрес",selectElement:"Выбрать элемент",selectRegion:"Выбрать область",annotationPlaceholder:"Опишите, что Agent должен проверить или изменить…",selectionData:"Данные выбора браузера",annotationAdded:"Снимок добавлен в поле чата",annotationCount:"Аннотаций: {count}",annotationLabel:"Аннотация {index}",clearAnnotations:"Очистить аннотации",finishAnnotation:"Готово",agent:"Agent",agentControlling:"{agent} управляет вкладкой",agentWaiting:"{agent} ожидает вашего подтверждения",takeOver:"Перехватить",tabCrashed:"Эта вкладка аварийно завершилась.",recoverTab:"Перезагрузить",profiles:"Профили",profileName:"Имя профиля",addProfile:"Добавить профиль",currentProfile:"Активный профиль",switchProfile:"Сменить профиль",editProfile:"Изменить профиль",profileDirectory:"Каталог профиля",downloadDirectory:"Каталог загрузок",profileRootDirectory:"Корневой каталог профиля",chooseProfileRootDirectory:"Выбрать пустой каталог",profileRootDirectoryHint:"Выберите пустой каталог. Данные будут в {data}, загрузки — в {download}.",proxy:"Прокси",proxyMode:"Режим прокси",proxyDirect:"Прямое подключение",proxySystem:"Системный прокси",proxyCustom:"Свой прокси",proxyServer:"Прокси-сервер",proxyServerPlaceholder:"Например: http://127.0.0.1:7890 или socks5://127.0.0.1:1080",askBeforeDownload:"Всегда спрашивать место",downloadConflictPolicy:"Повторяющиеся имена",uniquifyDownloads:"Создать уникальное имя",askOnConflict:"Спросить при конфликте",downloads:"Загрузки",downloadStateProgressing:"Загрузка",downloadStateCompleted:"Завершено",downloadStateCancelled:"Отменено",downloadStateInterrupted:"Прервано",downloadStateBlocked:"Заблокировано",permissions:"Разрешения",permissionsHint:"Разрешения удалённых страниц по умолчанию запрещены и записываются здесь.",blocked:"Заблокировано",profileSwitchTitle:"Сменить профиль?",profileSwitchWarning:"Могут прерваться операции Agent: {agents}, загрузки: {downloads}, аннотации: {annotations}.",deleteProfileTitle:"Удалить профиль?",deleteProfileWarning:"Управляемые данные будут перемещены в корзину. Пользовательские каталоги сохранятся.",clearCache:"Очистить кэш",clearPermissionAudit:"Очистить журнал разрешений",clearSiteData:"Очистить данные сайтов",clearSiteDataWarning:"Удаляет входы, cookie и локальное хранилище выбранного профиля.",dataCleared:"Данные браузера очищены",loadFailed:"Не удалось запустить встроенный браузер"},login:{title:"Hermes Studio",description:"Введите имя пользователя и пароль для продолжения.",placeholder:"Токен доступа",submit:"Войти",tokenRequired:"Введите токен доступа",invalidToken:"Недействительный токен",connectionFailed:"Не удалось подключиться к серверу",passwordLogin:"Вход по паролю",tokenLogin:"Вход по токену",usernamePlaceholder:"Имя пользователя",passwordPlaceholder:"Пароль",defaultCredentialsHint:"Логин по умолчанию: admin, пароль по умолчанию: 123456",credentialsRequired:"Введите имя пользователя и пароль",invalidCredentials:"Неверное имя пользователя или пароль",tooManyAttempts:"Слишком много неудачных попыток входа, повторите попытку позже",desktopLockResetHint:"Too many failed login attempts. Open the system tray menu and choose Reset Login to reset the password.",sessionExpired:"Сеанс истёк, войдите снова",accessDenied:"У вас нет прав доступа к этому ресурсу",passwordMismatch:"Пароли не совпадают",passwordTooShort:"Длина пароля должна быть не менее 6 символов",setupSuccess:"Настройка входа по паролю выполнена успешно",passwordChanged:"Пароль успешно изменён",passwordRemoved:"Вход по паролю удалён",setupPassword:"Настроить вход по паролю",changePassword:"Изменить пароль",changeUsername:"Изменить имя пользователя",removePasswordLogin:"Удалить",username:"Имя пользователя",currentPassword:"Текущий пароль",newPassword:"Новый пароль",confirmPassword:"Подтвердите пароль",newUsername:"Новое имя пользователя",usernameChanged:"Имя пользователя успешно изменено",usernameTooShort:"Имя пользователя должно содержать не менее 2 символов",setupDescription:"Управление именем пользователя и паролем для входа.",removeConfirm:"Учётная запись пользователя должна сохранять вход по паролю.",passwordLoginNotConfigured:"Вход по паролю не настроен",passwordLoginConfigured:"Текущая учётная запись: {username}",defaultCredentialTitle:"Измените учётные данные по умолчанию",defaultCredentialMessage:"Текущая учётная запись всё ещё использует имя пользователя или пароль по умолчанию. Во избежание несанкционированного доступа, как можно скорее измените имя пользователя и пароль для этой учётной записи.",defaultCredentialAction:"Изменить",defaultCredentialLater:"Напомнить позже"},users:{title:"Управление учётными записями",description:"Создавайте пользователей, назначайте роли и управляйте доступом к конфигурациям для обычных администраторов.",create:"Создать пользователя",edit:"Редактировать пользователя",username:"Имя пользователя",role:"Роль",statusLabel:"Статус",profiles:"Доступные конфигурации",profilesPlaceholder:"Выберите доступные конфигурации",allProfiles:"Все конфигурации",noProfiles:"Нет связанных конфигураций",lastLogin:"Последний вход",newPasswordOptional:"Новый пароль (оставьте пустым, чтобы не менять)",loadFailed:"Не удалось загрузить список пользователей",deleteConfirm:"Подтвердите удаление этого пользователя?",enable:"Включить",disable:"Отключить",roles:{superAdmin:"Суперадминистратор",admin:"Администратор"},status:{active:"Включён",disabled:"Отключён"}},common:{loading:"Загрузка...",cancel:"Отмена",delete:"Удалить",retry:"Повторить",reset:"Сбросить",edit:"Редактировать",save:"Сохранить",saved:"Сохранено",saveFailed:"Ошибка сохранения",deleteFailed:"Ошибка удаления",ok:"ОК",copied:"Скопировано",copy:"Копировать",update:"Обновить",create:"Создать",noData:"Нет данных",expired:"Истёк",fetch:"Получить",add:"Добавить",enable:"Включить",disable:"Отключить",configured:"Настроено",notConfigured:"Не настроено",confirm:"Подтвердить",expand:"Развернуть",collapse:"Свернуть",start:"Запустить",stop:"Остановить"},sidebar:{chat:"Чат",backToChat:"Назад",search:"Поиск",apiRelay:"Ретранслятор API",history:"История",jobs:"Задачи",kanban:"Канбан",workflow:"Рабочий процесс",models:"Модели",profiles:"Профили",plugins:"Плагины",petdex:"Pets",skills:"Навыки",memory:"Память",logs:"Логи",usage:"Использование",performance:"Мониторинг производительности",journey:"Путь обучения",skillsUsage:"Использование навыков",channels:"Каналы",gateways:"Шлюзы",terminal:"Терминал",browser:"Браузер",singleChat:"Чат",globalAgent:"Global Agent",groupChat:"Групповой чат",files:"Файлы",devices:"Устройства",groupConversation:"Диалог",groupConversationShort:"Диалог",groupPlatform:"Платформа",groupAgent:"Агент",groupAgentShort:"Агент",groupSystem:"Система",groupSystemShort:"Система",groupMonitoring:"Мониторинг",groupMonitoringShort:"Мониторинг",groupTools:"Инструменты",theme:"Тема",settings:"Настройки",connected:"Подключено",disconnected:"Отключено",collapse:"Свернуть меню",expand:"Развернуть меню",updateTip:'Для обновления выполните в терминале "hermes-web-ui update"',updateVersion:"Обновить до версии v{version}",reloadClientVersion:"Обновить клиент до v{version}",updating:"Обновление...",updateSuccess:"Обновление успешно. Обновите страницу. Если долго не запускается, запустите вручную.",updateFailed:"Ошибка обновления",logout:"Выйти",nodeVersionWarning:"Обнаружена Node.js v{version}. Пожалуйста, обновитесь до версии 23 или выше.",changelog:"Список изменений",noChangelog:"Нет списка изменений",versionManagement:"Управление версиями",updateAvailableLabel:"(Новая версия)",dockerUpdateTitle:"Обновление Docker",dockerUpdateGuide:"В среде Docker, пожалуйста, загрузите последний образ и пересоздайте контейнер:",dockerUpdateNote:"Ваши данные сохранятся после пересоздания контейнера."},runtimeVersions:{title:"Управление версиями",runtimeTitle:"Hermes Runtime",currentHermesAgentVersion:"Текущая версия Hermes Agent",activeRuntimeDirectory:"Путь к активному Runtime",cliUpdateDescription:"В Hermes Runtime версии 0.19.1 и новее следующая команда обновляет только встроенный Hermes Agent. Она не обновляет настольное приложение Hermes Studio или Web UI. Перед выполнением полностью закройте Hermes Studio:",webUiTitle:"Web UI",platform:"Платформа",currentWebUi:"Текущий Web UI",activeVersion:"Активная версия",runtimeDirectory:"Каталог хранения Runtime",chooseRuntimeDirectory:"Выбрать каталог",resetRuntimeDirectory:"Системный каталог",runtimeDirectoryHint:"При следующем перезапуске текущий Runtime будет скопирован и проверен до запуска локальных сервисов. Старое хранилище сохранится, а будущие загрузки Runtime будут помещаться сюда.",runtimeDirectorySaved:"Миграция Runtime запланирована. Перезапустите Hermes Studio, чтобы выполнить ее.",runtimeMigrationPending:"Ожидаемое место миграции: {directory}",runtimeMigrationFailed:"Перенос хранилища не выполнен; продолжает использоваться прежнее хранилище",runtimeActivationFailed:"Выбранный Runtime не удалось запустить; Hermes Studio использует другую установленную версию",active:"Активна",installed:"Установлена",download:"Скачать",downloadGithub:"Скачать с GitHub",downloadCf:"Скачать с Cloudflare",github:"GitHub",cf:"Cloudflare",useVersion:"Использовать при следующем запуске",deleteVersion:"Удалить",deleteRuntimeConfirm:"Удалить Hermes Runtime {version}?",deleteWebUiConfirm:"Удалить Web UI {version}?",deleteRuntimeSuccess:"Runtime удален",deleteWebUiSuccess:"Web UI удален",refresh:"Обновить",noVersions:"Нет доступных версий",remoteLoadFailed:"Не удалось загрузить удаленные версии",downloadTasks:"Задачи загрузки",downloadStarted:"Загрузка начата",activateSuccess:"Выбор версии сохранен. Перезапустите Hermes Studio, чтобы применить его.",jobStatus:{queued:"В очереди",running:"Выполняется",completed:"Завершено",failed:"Ошибка"},jobStageStatus:{queued:"В очереди",resolve:"Определение",download:"Загрузка",verify:"Проверка",extract:"Распаковка",install:"Установка",completed:"Завершено",failed:"Ошибка"},jobStage:{queued:"В очереди",download:"Загрузка",resolveRuntime:"Определение пакета Runtime",verifyRuntime:"Проверка архива Runtime",extractRuntime:"Распаковка архива Runtime",installRuntime:"Установка Runtime",resolveWebUi:"Определение пакета Web UI",verifyWebUi:"Проверка архива Web UI",extractWebUi:"Распаковка архива Web UI",installWebUi:"Установка Web UI",completed:"Завершено",failed:"Ошибка"}},codingAgents:{installFailedHermesHint:"Installation failed. Ask Hermes to install it for you.",installFailureReason:"Reason"},mcuDevices:{title:"Little Box",subtitle:"View device link status",name:"Name",nameOptional:"Name is optional",deviceCode:"Device code",deviceCodePlaceholder:"Enter device code",deviceCodeRequired:"Enter device code",channel:"Channel",official:"Official",unofficial:"Unofficial",createdAt:"Added at",lanStatus:"LAN",remoteStatus:"Удаленно",connected:"Подключено",disconnected:"Не подключено",remoteConnect:"Удаленное подключение",remoteConnected:"Удаленно подключено",remoteConnectFailed:"Не удалось подключиться удаленно",remoteDisconnect:"Отключить",remoteDisconnected:"Удаленно отключено",remoteDisconnectFailed:"Не удалось отключить удаленно",actions:"Actions",add:"Add",addTitle:"Add MCU device",added:"MCU device added",addFailed:"Failed to add MCU device",purchase:"Buy",edit:"Edit",editNameTitle:"Edit name",nameUpdated:"Name updated",nameUpdateFailed:"Failed to update name",delete:"Delete",deleteTitle:"Delete MCU device",deleteConfirm:'Delete "{name}"?',deleted:"MCU device deleted",deleteFailed:"Failed to delete MCU device",loadFailed:"Failed to load MCU devices",close:"Close"},devices:{title:"Устройства",count:"Устройств: {count}",lastScanned:"Последнее сканирование: {time}",refresh:"Обновить",empty:"Устройства не найдены",computer:"Компьютер",endpointLabel:"Точка доступа",statusLabel:"Статус",online:"Online",offline:"Offline",address:"Адрес",os:"ОС",agentVersion:"Agent",webUiVersion:"Web UI",responseMs:"Задержка",lastSeen:"Последний раз обнаружено",open:"Открыть",never:"Никогда",unknown:"Неизвестно",loadFailed:"Не удалось загрузить устройства",scanFailed:"Не удалось просканировать устройства",updateFailed:"Не удалось обновить устройство",duplicateRequest:"Уже есть ожидающий запрос на сопряжение",manualPairing:"Pair by URL",copyPairingLink:"Copy pairing link",manualUrlPlaceholder:"https://device.example.com",manualUrlRequired:"Enter a device URL",manualRequestSent:"Pairing request sent",manualRequestFailed:"Failed to request remote pairing",pairingLinkCopied:"Pairing link copied",pairingLinkCopyFailed:"Failed to copy pairing link",pairingCodeTitle:"Enter pairing code",pairingCodePlaceholder:"Pairing code",pairingCodeRequired:"Enter the pairing code",submitPairingRequest:"Submit request",processed:"Обработано",unprocessed:"Не обработано",deleteHistory:"Удалить запись",deleteHistoryConfirm:"Удалить эту запись запроса и отозвать доступ подключения для этого устройства?",requests:"Запросы",requestsWithCount:"Запросы ({count})",noRequests:"Запросов нет",requestPairing:"Запросить сопряжение",paired:"Сопряжено",approve:"Одобрить",reject:"Отклонить",block:"Заблокировать",unblock:"Разблокировать",inboundStatus:{none:"Запрос разрешен",pending:"Ожидает",approved:"Одобрено",rejected:"Отклонено",blocked:"Заблокировано"},outboundStatus:{none:"Не сопряжено",pending:"Запрошено",approved:"Сопряжено",rejected:"Отклонено",blocked:"Заблокировано"},endpoint:{web:"Web",desktop:"Настольное приложение",custom:"Пользовательский"}},performance:{title:"Мониторинг производительности",subtitle:"Просмотр системных ресурсов, Bridge Broker, воркеров и активных сеансов",refresh:"Обновить",autoRefreshOn:"Автообновление",autoRefreshOff:"Ручное обновление",loadFailed:"Ошибка загрузки данных производительности",systemCpu:"ЦП системы",systemMemory:"Память системы",activeSessions:"Активные сеансы",runningSessions:"Запущено {count}",workers:"Воркеры",totalWorkerMemory:"Общая память воркеров",processes:"Процессы",uptime:"Время работы",running:"Запущен",stopped:"Остановлен",workerMemory:"Память воркера",lastUpdated:"Время обновления",profile:"Профиль",memory:"Память",sessions:"Сеансы",runningActiveSessions:"Запущено / Активно",lastUsed:"Последнее использование",status:"Статус",noWorkers:"Нет воркеров",sessionsByProfile:"Сеансы по профилям",noActiveSessions:"Нет активных сеансов"},journey:{title:"Путь обучения",play:"Воспроизвести путь",pause:"Приостановить путь",refresh:"Обновить",categorySelection:"Выбор категорий",nodeKinds:"Типы узлов",description:"Описание",canvasInstructions:"Используйте стрелки для просмотра узлов, Enter для открытия деталей и Escape для сброса выбора.",loadFailed:"Не удалось загрузить путь обучения",nodes:"Узлы",edges:"Связи",skills:"Навыки",memories:"Воспоминания",clusters:"Кластеры",profile:"Профиль",source:"Источник",learnedSkills:"Изученные навыки",memorySkillEdges:"Связи памяти",allKinds:"Все типы",allCategories:"Все категории",searchPlaceholder:"Поиск узлов",noClusters:"Кластеров нет",noNodes:"Узлов пути нет",noCategory:"Без категории",category:"Категория",useCount:"Использований",createdBy:"Создано",timestamp:"Время",pinned:"Закреплено"},drawer:{terminal:"Терминал",files:"Рабочая область"},subagent:{title:"Фоновая задача",noGoal:"Фоновая задача без названия",open:"Открыть поток фоновой задачи",close:"Закрыть поток фоновой задачи",waiting:"Ожидание потока данных…",tool:"Инструмент",tools:"Инструментов: {count}",tokens:"Ввод {input} · вывод {output}",started:"Запущена",running:"Выполняется",completed:"Завершена",failed:"Ошибка",cancelled:"Отменена",interrupted:"Прервана"},realtimeVoice:{title:"Голос в реальном времени",mode:"Голосовой режим",open:"Открыть голосовой режим",back:"Вернуться в чат",connected:"Голосовая связь готова",turnMode:"Предпросмотр · по очереди",browserStt:"Браузер",browserTts:"Браузер",untitledSession:"Разговор без названия",sessionMissing:"Разговор недоступен.",backendStreamRequired:"Для голосового режима на мобильных устройствах и компьютере требуется настроенный серверный сервис распознавания речи.",networkUnavailableNoFallback:"Распознавание речи браузера недоступно по сети, и резервный STT не настроен.",liveTranscript:"Живая расшифровка",transcriptPlaceholder:"Нажмите на голосовое ядро и начните говорить",recentTurns:"Последние реплики",you:"Вы",mute:"Выключить звук",unmute:"Включить звук",finishTurn:"Закончить реплику",speak:"Начать говорить",end:"Завершить",status:{idle:"Готово",paused:"Микрофон выключен",listening:"Слушаю",processing:"Распознавание",thinking:"{agent} думает",speaking:"{agent} говорит",error:"Голосовая связь прервана"},hint:{idle:"Нажмите в центре, чтобы начать голосовую реплику",paused:"Включите микрофон, когда будете готовы",listening:"Сделайте паузу для отправки или нажмите для завершения",listeningManual:"Идет запись. Нажмите в центре еще раз, чтобы остановить и распознать речь",processing:"Преобразую речь в текст",thinking:"Сообщение отправлено в текущий разговор",speaking:"Ответ можно прервать в любое время",error:"Нажмите в центре, чтобы повторить"}},chat:{contextRemaining:"Осталось",contextClickToEdit:"Нажмите, чтобы изменить размер контекста",contextEditTitle:"Изменить размер контекста",contextEditDesc:"Установите лимит размера контекста для текущей модели (в токенах)",contextEditPlaceholder:"Введите размер контекста",contextEditHint:"Типовые значения: 200k (Claude), 128k (GPT-4), 32k (GPT-3.5)",contextEditSave:"Сохранить",contextEditCancel:"Отмена",contextEditInvalid:"Введите корректный размер контекста",contextEditSuccess:"Размер контекста обновлён",contextEditFailed:"Ошибка обновления",emptyState:"Начните диалог с Hermes Agent",viewOlderInHistory:"Посмотреть более ранние сообщения в истории",scrollToBottom:"Прокрутить вниз",cliEmptyState:"Начните CLI-диалог",outlineTitle:"План беседы",outlineEmpty:"Нет содержимого беседы",outlineUserQuestion:"Вопрос пользователя",inputPlaceholder:"Введите сообщение... (Enter — отправить, Shift+Enter — новая строка)",inputHeightResizeHint:"Перетащите, чтобы изменить высоту поля ввода, и дважды щелкните для сброса.",slashCommandArgs:{message:"<сообщение>",title:"<заголовок>",text:"<текст>"},slashCommands:{usage:"Рассчитать использование текущего сеанса",status:"Показать статус сеанса и очередь",yolo:"Переключить режим YOLO для сеанса и пропускать подтверждения опасных команд",abort:"Остановить текущий запуск Bridge",queue:"Добавить сообщение в очередь после текущего запуска",learn:"Создать переиспользуемый навык из описанных источников",clear:"Очистить текущее отображение",clearHistory:"Удалить сохранённую историю сообщений текущего сеанса",title:"Переименовать текущий сеанс",compress:"Запустить сжатие контекста в простое",steer:"Отправить направляющий текст текущему запуску Bridge",destroy:"Освободить Bridge Agent текущего сеанса",reloadMcp:"Перезагрузить серверы MCP",reloadSkills:"Перезагрузить команды skills",bundles:"Просмотреть наборы навыков",bundlesCreate:"Создать набор навыков"},bundlePicker:{title:"Наборы навыков",create:"Создать набор",searchPlaceholder:"Поиск наборов...",skillCount:"Навыков: {count}",skillsLabel:"Навыки",noSkills:"Навыки не настроены",deleteBundle:"Удалить {name}",deleteTitle:"Удалить набор",deleteConfirm:"Удалить «{name}» из этого профиля? Это действие нельзя отменить.",deleteFailed:"Не удалось удалить набор",deleted:"Набор удалён",noBundles:"Наборов пока нет. Создайте набор из нескольких навыков.",noMatch:"Подходящих наборов нет"},bundleCreator:{title:"Создать набор навыков",name:"Название",namePlaceholder:"например, PR Review Team",nameHint:"Допустимы латинские буквы, цифры, пробелы, дефисы и подчёркивания.",description:"Описание",descriptionPlaceholder:"Для чего использовать этот набор?",skills:"Навыки",skillsPlaceholder:"Выберите один или несколько навыков",nameRequired:"Введите название набора",nameInvalid:"Введите английское название хотя бы с одной буквой",skillsRequired:"Выберите хотя бы один навык",skillsLoadFailed:"Не удалось загрузить навыки",createFailed:"Не удалось создать набор",created:"Набор создан"},attachFiles:"Прикрепить файлы",reasoningEffort:{tooltip:"Глубина рассуждений",defaultLabel:"По умолчанию",options:{default:"По умолчанию (config.yaml)",none:"Нет",minimal:"Минимум",low:"Низкая",medium:"Средняя",high:"Высокая",max:"Max",xhigh:"Очень высокая",ultra:"Ультра"}},autoPlaySpeech:"Автовоспроизведение речи",voiceInput:{startCapture:"Начать голосовой ввод",stopCaptureAndInsert:"Остановить голосовой ввод и вставить текст в поле ввода",cancelCapture:"Отменить голосовой ввод",statusLabel:"Статус: {status}",transcriptLabel:"Транскрипт: {text}",errorLabel:"Ошибка: {error}",recentEvents:"Последние события",status:{idle:"Ожидание",capturing:"Слушаю",transcribing:"Расшифровка",sending:"Вставка в поле ввода",error:"Ошибка"},browserSpeechUnsupported:"Распознавание речи браузером не поддерживается в этом браузере.",browserSpeechFailed:"Распознавание речи браузером не удалось.",browserSpeechFailedWithReason:"Распознавание речи браузером не удалось: {error}.",microphoneUnsupported:"Запись с микрофона не поддерживается в этом браузере.",microphoneRecordingFailed:"Запись с микрофона не удалась."},showToolCalls:"Показать вызовы инструментов",hideToolCalls:"Скрыть вызовы инструментов",messageQueue:"Очередь сообщений",removeQueuedMessage:"Удалить сообщение из очереди",stop:"Остановить",start:"Запустить",stopGateway:"Остановить шлюз",send:"Отправить",contextUsed:"Контекст использован:",sessions:"Сеансы",webUiSessions:"Сеансы",allProfiles:"Все профили",profileMissingModelsTip:"У профиля «{profile}», к которому относится этот сеанс, нет доступных провайдеров или моделей",sessionScopeHint:"Здесь отображаются только текущие сеансы; сеансы CLI, Telegram, Discord, Cron и других каналов доступны в истории только для чтения.",openHistory:"Открыть историю",hermesHistory:"История Hermes",historyScopeHint:"Здесь для чтения отображаются исторические сеансы Hermes текущего профиля с разбивкой по источникам.",noSessions:"Нет сеансов",recent:"Недавние",recentCount:"Количество недавних сессий",loadMoreSessions:"Загрузить ещё сеансы",searchTitle:"Поиск сеансов",searchSubtitle:"Поиск по заголовку или содержимому сообщений",searchScope:"Область поиска: только локальная библиотека сеансов Web UI; сеансы истории Hermes только для чтения не включаются.",searchHint:"Cmd/Ctrl+K",searchPlaceholder:"Поиск сеансов...",searchEmpty:"Недавние сеансы",searchRecent:"Недавние сеансы",searchNoResults:"Нет подходящих сеансов",searchNoSnippet:"Нет отображаемого фрагмента",searchEnterHint:"Enter — открыть · Esc — закрыть",searchFailed:"Ошибка поиска сеансов",newChat:"Новый диалог",category:"Категория",uncategorized:"Без категории",categoryPlaceholder:"Выберите или создайте категорию",categoryCreateHint:"Введите название и нажмите Enter.",categoryCreated:"Категория «{name}» создана",categoryCreateFailed:"Не удалось создать категорию",categoryLoadFailed:"Не удалось загрузить категории",moveToCategory:"Переместить в категорию",categoryUpdated:"Категория обновлена",categoryUpdateFailed:"Не удалось обновить категорию",renameCategory:"Переименовать категорию",deleteCategory:"Удалить категорию",enterCategoryName:"Введите название категории",confirmDeleteCategory:"Удалить «{name}»? Сеансы будут перемещены в «Без категории».",categoryRenamed:"Категория переименована",categoryRenameFailed:"Не удалось переименовать категорию",categoryDeleted:"Категория удалена",categoryDeleteFailed:"Не удалось удалить категорию",agent:"Agent",approvalKicker:"Разрешение инструмента",toolResultUnavailable:"Выполнение прервано; результат инструмента не получен",approvalCommand:"Команда для выполнения",approvalTitle:"Подтвердите вызов инструмента перед выполнением",approvalAgree:"Согласиться",approvalAllowOnce:"Разрешить однократно",approvalAllowSession:"Разрешить для этого сеанса",approvalAlways:"Разрешить всегда",approvalDeny:"Отказать",newCliChat:"Новый CLI",deleteSession:"Удалить этот сеанс?",sessionDeleted:"Сеанс удалён",toggleBatchMode:"Пакетный выбор",selectAll:"Выбрать всё",confirmBatchDelete:"Удалить выбранные сеансы ({count})?",batchDeleteSuccess:"Удалено сеансов: {count}",batchDeletePartial:"Не удалось удалить сеансов: {failed}",batchDeleteFailed:"Ошибка пакетного удаления",rename:"Переименовать",archiveSession:"Архивировать",unarchiveSession:"Вернуть из архива",pin:"Закрепить",unpin:"Открепить",pinned:"Закреплено",chatMode:"Чат",liveMode:"В реальном времени",liveSessions:"Сеансы в реальном времени",recentBadge:"Недавние",linkedSessions:"Связано сеансов: {count}",noVisibleMessages:"Нет видимых человеку сообщений.",monitorRoleUser:"Пользователь",monitorRoleAssistant:"Ассистент",copySessionLink:"Копировать ссылку на сеанс",openSessionInNewWindow:"Открыть в новом окне",copySessionId:"Копировать ID сеанса",export:"Экспорт",editConfig:"Редактировать конфигурацию",exportFull:"Полный экспорт (JSON)",exportCompressed:"Сжатый экспорт (TXT)",exportCompressing:"Сжатие контекста, подождите...",exportSuccess:"Сеанс экспортирован",exportFailed:"Ошибка экспорта",renamed:"Переименовано",renameFailed:"Ошибка переименования",sessionArchived:"Сеанс архивирован",archiveSessionFailed:"Не удалось архивировать сеанс",sessionUnarchived:"Сеанс возвращён из архива",unarchiveSessionFailed:"Не удалось вернуть сеанс из архива",renameSession:"Переименовать сеанс",sessionNotFound:"Сеанс не найден",enterNewTitle:"Введите новый заголовок",workspace:"Рабочая область",setWorkspace:"Установить рабочую область",setWorkspaceTitle:"Установить рабочую область сеанса",workspacePlaceholder:"Введите путь к проекту, например /home/user/project",folderPickerEmpty:"(Пусто)",folderPickerNoFolders:"Нет папок рабочей области",folderPickerSelected:"Выбрано:",workspaceDefault:"По умолчанию",workspaceDefaultTooltip:"Эта рабочая область задана по умолчанию и будет автоматически подставляться в новых чатах",workspacePin:"Сделать рабочей областью по умолчанию",workspaceUnpin:"Убрать рабочую область по умолчанию",workspaceRecent:"Недавние",defaultWorkspace:"Рабочая область по умолчанию",more:"Ещё",workspaceSet:"Рабочая область установлена",workspaceSetFailed:"Ошибка установки рабочей области",setModel:"Установить модель",setModelTitle:"Установить модель сеанса",standardModels:"Обычные модели",moaPresets:"Комбинации MoA",noMoaPresets:"Нет доступных комбинаций MoA",modelType:"Тип модели",modelSet:"Модель установлена",modelSwitching:"Переключение модели...",modelSetFailed:"Ошибка установки модели",other:"Другое",runFailed:"Ошибка выполнения",error:"Ошибка",tool:"Инструмент",arguments:"Аргументы",result:"Результат",workspaceChanges:"Изменения workspace",changedFiles:"Изменено файлов: {files}",changesThisTurn:"Изменения в этом ходе",diffUnavailable:"Diff недоступен",binaryFileDiffUnavailable:"Diff для бинарного файла недоступен",truncated:"... (обрезано)",unchangedLines:"{count} строк без изменений",executionDuration:"Длительность выполнения",thinkingLabel:"Процесс размышления",thinkingInProgress:"Размышление",thinkingShow:"Развернуть процесс размышления",thinkingHide:"Свернуть процесс размышления",thinkingDuration:"Наблюдается {duration}",thinkingChars:"{count} зн.",copyBubble:"Копировать сообщение",copiedBubble:"Скопировано",copyFailed:"Ошибка копирования",referenceMessage:"Цитировать сообщение",cancelReference:"Отменить цитирование",playSpeech:"Воспроизвести речь",pauseSpeech:"Пауза",resumeSpeech:"Продолжить",stopSpeech:"Остановить",speechNotSupported:"Этот браузер не поддерживает воспроизведение речи"},workflow:{title:"Рабочий процесс",profile:"Профиль",namePlaceholder:"Название рабочего процесса",canvasAriaLabel:"Полотно рабочего процесса",workspace:{title:"Выбрать рабочую область",select:"Выбрать рабочую область",clear:"Очистить рабочую область"},actions:{newWorkflow:"Новый workflow",addNode:"Добавить узел",createWorkflowFirst:"Сначала создайте workflow",reset:"Сбросить",startExecution:"Запустить выполнение",executionPending:"Выполнение workflow пока не подключено",executionStarted:"Выполнение workflow началось",executionCompleted:"Выполнение workflow завершено",executionFailed:"Выполнение workflow не удалось",rerunDownstreamKeepNode:"Сохранить этот узел и запустить ниже",rerunDownstreamClearNode:"Очистить этот узел и запустить ниже",rerunDownstreamStarted:"Повторный запуск нижних узлов начат",rerunFromNodeStarted:"Повторный запуск с этого узла начат",rerunFailed:"Не удалось повторно запустить workflow",deleteNode:"Удалить узел",deleteEdge:"Удалить соединение",editEdge:"Изменить соединение",undo:"Отменить",importWorkflow:"Импорт Workflow",exportWorkflow:"Экспорт Workflow",imported:"Workflow импортирован",exported:"Workflow экспортирован",importFailed:"Ошибка импорта Workflow",exportFailed:"Ошибка экспорта Workflow"},schedule:{title:"Расписания workflow",manage:"Управление расписаниями",createTitle:"Создать расписание",editTitle:"Изменить расписание",create:"Создать расписание",save:"Сохранить расписание",edit:"Изменить расписание",delete:"Удалить расписание",deleteConfirm:"Удалить это расписание?",deleted:"Расписание удалено",enable:"Включить расписание",disable:"Отключить расписание",enabled:"Включено",disabled:"Отключено",empty:"Расписаний пока нет",cron:"Расписание Cron",cronPlaceholder:"например, 0 9 * * * или {'@'}daily",timezone:"Часовой пояс",timezonePlaceholder:"Часовой пояс IANA, например Asia/Shanghai",initialInput:"Начальный ввод",initialInputPlaceholder:"Необязательный ввод для каждого запуска по расписанию",startNodes:"Начальные узлы",startNodesPlaceholder:"Начальные узлы workflow по умолчанию",timeout:"Общий тайм-аут (минуты)",timeoutPlaceholder:"Без срока",policies:"Параллельность: пропускать · Пропущенные запуски: пропускать",lastScheduled:"Последнее планирование",nextRun:"Следующий запуск",lastRun:"Последний запуск",never:"Никогда",loadFailed:"Не удалось загрузить расписания",saveFailed:"Не удалось сохранить расписание",saved:"Расписание сохранено",deleteFailed:"Не удалось удалить расписание",required:"Требуются расписание Cron и часовой пояс",reset:"Сбросить",presets:{hourly:"Каждый час",daily:"Ежедневно",weekly:"Еженедельно",monthly:"Ежемесячно"}},evidence:{historyPage:"История запусков",detailsPage:"Подробности запуска",backToRuns:"Назад к истории",resultStatus:"Статус",duration:"Длительность",budgetLabel:"Бюджет",actualExecution:"Выполнено",otherJudgments:"Другие решения",loopEvents:"События цикла",evaluatedNotExecuted:"Проверено, не выполнено",ariaLabel:"Подробности выполнения Workflow",title:"Подробности выполнения",count:"{count} записей",intro:"Показывает решения по маршрутам, проходы циклов и аварийные узлы этого запуска.",empty:"Нет подробностей выполнения",loadFailed:"Не удалось загрузить сохранённые подробности выполнения",summaryTitle:"Результат запуска",blockedAt:"Заблокировано на {gate}",actualPath:"Фактический путь",noActualPath:"Ни один путь не выбран",pathChecks:"Проверки путей",selectedPaths:"Выбранные пути",otherPaths:"Другие решения и события",selectedCount:"выбрано: {count}",otherCount:"не выбрано: {count}",eventCount:"событий: {count}",showOtherPaths:"Показать другие детали ({count})",hideOtherPaths:"Скрыть другие детали",runDetails:"Детали запуска",actualPathSteps:"Шаги фактического пути",nodeBudgetDetails:"Детали временного бюджета",condition:"Условие",conditionMatched:"Совпало",conditionNotMatched:"Не совпало",sourceOutcome:"Результат узла",sourceReturned:"Нормальный ответ",sourceFailed:"Ошибка выполнения",sourceSkippedStatus:"Не запущен",checkedData:"Проверяемые данные",entireReplyText:"Полный текст ответа",errorText:"Текст ошибки",jsonFieldValue:"Значение одного поля JSON",advancedPathValue:"Значение расширенного пути",comparison:"Сравнение",textToFind:"Искомый текст",expectedFieldValue:"Ожидаемое значение поля",parsedBusinessDecision:"Извлечённое бизнес-решение",failedGateLabel:"Этап сбоя (значение поля failed_gate)",failedGateValue:"Этап сбоя (значение поля failed_gate): {gate}",decisions:{blocked:"Заблокировано",released:"Опубликовано",verified:"Проверено",skipped:"Действия не требуются"},node:"Аварийный узел",edge:"Путь",loop:"Цикл",unknownNode:"Неизвестный узел",pathTitle:"{source} → {target}",loopPass:"Проход цикла {count}",exceptionalNode:"Этот узел не завершился штатно.",loopPassNamed:"{node} · проход {count}",technical:"Техническая информация",recordId:"ID записи",sequence:"Порядок",rawStatus:"Исходный статус",rawRoute:"Маршрут",rawReason:"Причина",iterationPath:"Путь итерации",expectedValue:"Ожидаемый результат",actualValue:"Фактический результат предыдущего шага",judgmentDetails:"Решение по связи",connectionResult:"Результат связи",appliesWhen:"Используется когда",explanation:"Пояснение",technicalStatus:{pathUsed:"Эта связь была использована",pathNotUsed:"Эта связь не была использована"},technicalRoute:{success:"Только когда предыдущий узел вернул результат нормально",failure:"Только когда выполнение предыдущего узла завершилось ошибкой",always:"Независимо от результата предыдущего узла"},technicalReason:{conditionNotMatched:"Ответ предыдущего узла не удовлетворил условию этой связи."},statuses:{taken:"Выбран",notTaken:"Не выбран",evaluationFailed:"Ошибка проверки",timedOut:"Превышено время",blocked:"Заблокирован"},routes:{success:"Продолжено после успеха",failure:"Продолжено после ошибки",always:"Продолжено при любом результате"},reasons:{evaluationFailed:"Ошибка проверки маршрута",conditionNotMatched:"Условие не совпало",iterationLimitReached:"Достигнут предел проходов",routeNotMatched:"Маршрут не совпал",pathSelected:"Этот путь был выбран.",pathEvaluatedNotUsed:"Это соединение было оценено как кандидат, но ни один целевой узел его не использовал.",sourceSkipped:"Исходный узел не запускался, поэтому этот путь не участвовал в запуске.",failureRouteAfterSuccess:"Исходный узел завершился нормально; этот путь используется только при ошибке выполнения.",successRouteAfterFailure:"Исходный узел завершился с ошибкой; этот путь используется только при нормальном ответе.",businessBlocked:"«{source}» остановил выполнение ({decision}): {reason}. Поэтому «{target}» не был запущен.",businessBlockedWithCondition:"«{source}» остановил выполнение ({decision}): {reason}. Для продолжения требовалось «{expected}», но предыдущий результат — «{actual}». Поэтому «{target}» не был запущен.",conditionMismatchDetail:"Для продолжения требовалось «{expected}», но предыдущий результат — «{actual}». Поэтому «{target}» не был запущен."},loopOutcomes:{continued:"Условие совпало; начат следующий проход",iterationLimitReached:"Остановлено на пределе проходов",conditionNotMatched:"Остановлено из-за несовпадения условия",finished:"Цикл завершён"}},budget:{runTitle:"Выбрать бюджет времени Run",rerunTitle:"Выбрать бюджет времени Rerun",totalLabel:"Общий бюджет Run",customMinutes:"Произвольное число минут",customPlaceholder:"Минуты",invalidCustom:"Бюджет Run должен быть от 0,1 до 1440 минут",help:"Это единый абсолютный срок для всего Run. Каждый узел получает только оставшееся время, а циклы не сбрасывают бюджет.",options:{unlimited:"Без срока",30:"30 минут",60:"60 минут",90:"90 минут",custom:"Другой"},unlimitedSummary:"Без срока",unlimitedHelp:"Для этого Run срок не задан.",summary:"Всего {total} · Прошло {elapsed} · Осталось {remaining}",deadline:"Срок: {deadline}",nodeStartRemaining:"Оставшийся общий бюджет при запуске узла: {remaining}"},edgeEditor:{title:"Изменить соединение",guideIntro:"Сначала выберите требуемый результат исходного узла. Затем не проверяйте ответ, проверьте весь текст буквально или сравните значение одного разобранного поля JSON.",connectionSummary:"{source} → {target}",selfLoopDescription:"Узел «{node}» повторно запустит сам себя.",continueAfter:"Продолжить после",optionalCheck:"Необязательная проверка содержимого",runTarget:"Затем",runTargetAction:"Запустить {target}",noContentCheck:"Не проверять ответ",sourceResultStep:"1. Результат исходного узла",replyDataStep:"2. Проверяемые данные ответа",nextStep:"3. Затем",replyDataQuestion:"Какие данные ответа нужно проверить?",requiredSourceResult:"Требуемый результат исходного узла",loopSummary:"Возврат к {target}",loopScope:"Узлы цикла: {nodes}",historyLabel:"Метка истории (необязательно)",advancedSettings:"Расширенные настройки",historyNode:"Узел в истории",historyNodePlaceholder:"Выберите имя узла",continueWhen:"Продолжить, когда",compareUsing:"Способ сравнения",expectedType:"Тип ожидаемого значения",expectedValue:"Ожидаемое значение",routeChoices:{success:"Источник ответил нормально",failure:"Ошибка выполнения источника",always:"Любой результат"},operatorChoices:{equals:"Равно",not_equals:"Не равно",contains:"Содержит",not_contains:"Не содержит",exists:"Существует",not_exists:"Не существует",greater_than:"Больше",greater_than_or_equal:"Больше или равно",less_than:"Меньше",less_than_or_equal:"Меньше или равно",in:"Входит в список",not_in:"Не входит в список"},loopMissingForwardPath:"У этого обратного соединения нет прямого пути для повтора.",loopNotNatural:"У этого цикла есть другой путь входа, поэтому он не сможет повторяться предсказуемо.",loopDuplicateScope:"Два обратных соединения задают одинаковые узлы цикла.",loopPartialOverlap:"Циклы могут быть отдельными или полностью вложенными, но не могут частично пересекаться.",loopDuplicateHistoryLabel:"Метка истории каждого цикла должна быть уникальной.",route:"Маршрут",routes:{success:"Только успех (success)",failure:"Только ошибка (failure)",always:"Всегда (always)"},routeHelp:"Сначала проверяется результат исходного узла; заданное условие также должно совпасть.",routeExample:"Пример: success для обычного пути, failure для ошибок, always для очистки.",conditionPath:"Что должно проверять соединение?",conditionPathPlaceholder:"Расширенный путь, например output",conditionPathOptions:{routeOnly:"Не проверять ответ",outputRecommended:"Полный текст успешного ответа (output, рекомендуется)",output:"Полный текст успешного ответа (output)",outputJson:"Значение одного поля JSON (outputJson.*)",errorRecommended:"Полный текст ошибки (error, рекомендуется)",error:"Полный текст ошибки (error)",custom:"Расширенный путь данных"},structuredOutputPathPlaceholder:"Путь к полю JSON, например outputJson.route_token",structuredOutputHelp:"Разбирает полный JSON-ответ или ровно один fenced json-блок. Если JSON отсутствует, некорректен или блоков несколько, outputJson недоступен и условие не совпадает.",conditionPathHelp:{success:"Для success рекомендуется output. Выберите «Только маршрут», если текст ответа не важен.",failure:"Для failure рекомендуется error. Выберите «Только маршрут», если текст ошибки не важен.",always:"Для успеха используйте output, для ошибки — error; «Только маршрут» не проверяет текст."},operator:"Оператор",operators:{equals:"Равно (equals)",not_equals:"Не равно (not_equals)",contains:"Содержит (contains)",not_contains:"Не содержит (not_contains)",exists:"Существует (exists)",not_exists:"Не существует (not_exists)",greater_than:"Больше (greater_than)",greater_than_or_equal:"Больше или равно (greater_than_or_equal)",less_than:"Меньше (less_than)",less_than_or_equal:"Меньше или равно (less_than_or_equal)",in:"В списке (in)",not_in:"Не в списке (not_in)"},operatorHelp:{equals:"Значение и тип должны точно совпадать.",not_equals:"Значение или тип различаются.",contains:"Текст содержит строку или массив содержит элемент.",not_contains:"Текст или массив не содержит элемент.",exists:"Совпадает, если путь существует; значение не нужно.",not_exists:"Совпадает, если путь отсутствует; значение не нужно.",greater_than:"Обе стороны должны быть числами JSON; фактическое значение больше.",greater_than_or_equal:"Обе стороны должны быть числами JSON; фактическое значение больше или равно.",less_than:"Обе стороны должны быть числами JSON; фактическое значение меньше.",less_than_or_equal:"Обе стороны должны быть числами JSON; фактическое значение меньше или равно.",in:"Значение должно быть JSON-массивом с фактическим значением.",not_in:"Значение должно быть JSON-массивом без фактического значения."},value:"Значение",invalidConditionValue:"Значение условия должно быть корректным JSON",conditionValuePlaceholder:'JSON: "текст", 42, true, ["a"]',valueType:"Тип значения",valueTypes:{string:"Строка",number:"Число",boolean:"Логическое",null:"Null",array:"Массив",object:"Объект"},valueTypeHelp:"Выберите способ разбора и проверки значения. Тип определяется по сохранённому JSON-значению и отдельно не сохраняется.",conditionValuePlaceholders:{string:"Текст, например APPROVED",number:"Число, например 42",boolean:"true или false",null:"null",array:'JSON-массив, например ["a", 2]',object:`JSON-объект, например {'{'}"status":"ready"{'}'}`},invalidValueTypes:{string:"Значение должно быть строкой.",number:"Значение должно быть корректным числом.",boolean:"Значение должно быть true или false.",null:"Значение должно быть null.",array:"Значение должно быть корректным массивом.",object:"Значение должно быть корректным объектом."},valueHelp:"Введите значение выбранного типа. Объекты и массивы используют JSON; строки вводятся без JSON-кавычек.",expectedReplyText:"Искомый текст",expectedFieldValue:"Ожидаемое значение поля",rawTextValueHelp:"Проверяется буквальный текст всего ответа. При операторе «Содержит» текст может находиться в ключе или значении JSON; поле JSON отдельно не извлекается.",jsonFieldValueHelp:"Сравнивается значение по указанному пути outputJson, а не имя поля. Пример: outputJson.failed_gate равно quality-container-setup.",canvasLabel:{withValue:"{subject} {operator} «{value}»",withoutValue:"{subject} {operator}",join:"{route} · {condition}"},conditionSemantics:"Что именно проверяется",rawTextComparisonHelp:"Выбран оператор {operator}. Он применяется ко всему тексту ответа, а не к отдельному полю JSON. «Содержит/Не содержит» находит текст и в JSON key, и в value; «Равно/Не равно» сравнивает весь ответ с заданным значением.",jsonFieldComparisonHelp:"Читается значение по пути {path}. {operator} сравнивает этот value с «{value}», но не имя поля.",rawTextExistenceHelp:"Проверяется только наличие полного текста ответа, а не существование JSON-ключа.",jsonFieldExistenceHelp:"Проверяется только существование JSON-поля по пути {path}; значение не сравнивается.",rawTextOperatorHelp:{equals:"Совпадает, только если полный текст ответа точно равен «{value}». Значение отдельного поля JSON не читается и не сравнивается.",not_equals:"Совпадает, только если полный текст ответа отличается от «{value}». Значение отдельного поля JSON не читается и не сравнивается.",contains:"Ищет «{value}» во всём тексте ответа. Совпадение возможно и в JSON key, и в JSON value; это не поиск поля JSON.",not_contains:"Совпадает, только если «{value}» нигде нет в полном тексте ответа — ни в JSON key, ни в JSON value. Это не поиск поля JSON.",exists:"Совпадает, когда полный текст ответа доступен. Наличие JSON key не проверяется.",not_exists:"Совпадает, когда полного текста ответа нет. Отсутствие JSON key не проверяется."},jsonFieldOperatorHelp:{equals:"Читает value поля по пути {path}. Совпадает, только если это значение точно равно «{value}»; имя поля не сравнивается.",not_equals:"Читает value поля по пути {path}. Совпадает, только если это значение отличается от «{value}»; имя поля не сравнивается.",contains:"Читает value поля по пути {path} и проверяет, содержит ли оно «{value}»; имя поля не просматривается.",not_contains:"Читает value поля по пути {path}. Совпадает, только если оно не содержит «{value}»; имя поля не просматривается.",exists:"Совпадает, когда поле JSON по пути {path} существует. Value поля не сравнивается.",not_exists:"Совпадает, когда поле JSON по пути {path} отсутствует. Value поля не сравнивается."},feedback:"Цикл обратной связи",feedbackHelp:"Помечает обратное соединение как ограниченный цикл. Повторяется только пока совпадают маршрут и условие.",maxIterations:"Максимум итераций",maxIterationsHelp:"Общее число проходов от 1 до 100; также действует глобальный бюджет.",invalidIterations:"Число итераций должно быть целым от 1 до 100",loopId:"Идентификатор цикла",loopIdPlaceholder:"Выберите автоматически или введите ID",loopIdAutomatic:"Автоматически (рекомендуется) · {id}",loopIdHelp:"Только помечает цикл в истории и не меняет условия запуска. Обычно оставьте автоматический вариант.",invalidLoopId:"Недопустимый ID цикла"},batch:{toggle:"Массовый выбор",selectAll:"Выбрать все",confirmDelete:"Удалить выбранные workflow: {count}?",deleteSuccess:"Удалено workflow: {count}",deletePartial:"Не удалось удалить workflow: {failed}",deleteFailed:"Массовое удаление не удалось"},validation:{nodesRequired:"Добавьте хотя бы один узел",nodeNameRequired:"Узлу {node} нужно имя",providerRequired:"Узлу {node} нужен провайдер",modelRequired:"Узлу {node} нужна модель",apiModeRequired:"Узлу {node} нужен режим API",inputRequired:"Узлу {node} нужны входные данные",invalidEdge:"Соединение ссылается на отсутствующий узел",invalidConnectionDirection:"Соединения должны идти от правого выхода к левому входу",orphanNode:"Узел {node} не подключён к рабочему процессу",disconnectedFlow:"Рабочий процесс нельзя разделять на несколько несвязанных потоков",cycle:"Рабочий процесс содержит цикл. Исправьте соединения перед сохранением."},node:{title:"Название узла",agent:"Агент",model:"Модель",apiMode:"Режим API",input:"Ввод",approvalRequired:"Подтверждение после узла",join:"Стратегия объединения",joinAll:"Все входящие маршруты",joinAny:"Любой входящий маршрут",joinAllHelp:"Выполняется, только если выбраны все входящие маршруты; иначе узел пропускается.",joinAnyHelp:"Выполняется один раз при первом выбранном маршруте; пропускается, только если не совпал ни один.",promptPlaceholder:"Опишите, что должен сделать этот агент...",skillsPlaceholder:"Введите навык и нажмите Enter для добавления",uploadImages:"Загрузить изображения"},status:{idle:"Бездействует",queued:"В очереди",running:"Выполняется",pending_approval:"Ожидает одобрения",completed:"Завершено",skipped:"Пропущено",failed:"Ошибка",approval_rejected:"Одобрение отклонено",canceled:"Отменено"},runs:{title:"История запусков",refresh:"Обновить",empty:"Нет записей о запусках",startNodes:"Начальных узлов: {count}",snapshotIndicator:"Неизменяемый снимок на момент запуска этого выполнения",show:"Показать историю запусков",hide:"Скрыть историю запусков",nodeSessionTitle:"Сессия узла — {node}",noNodeSession:"У этого узла пока нет записи о сессии",loadNodeSessionFailed:"Не удалось загрузить сессию узла",stop:"Остановить запуск",stopRequested:"Остановка запрошена",stopFailed:"Не удалось остановить запуск",delete:"Удалить запись",deleteSuccess:"Запись о запуске удалена"},inspector:{selected:"Выбранный узел",none:"Узел не выбран"},stats:{nodes:"Узлы",edges:"Связи"},agents:{planner:"Планировщик",researcher:"Исследователь",builder:"Разработчик",reviewer:"Рецензент"},models:{default:"Модель по умолчанию",fast:"Быстрая модель",reasoning:"Модель рассуждений"},initialNodes:{node1:"Узел 1",node2:"Узел 2",node3:"Узел 3",plan:"Планирование",execute:"Выполнение",review:"Проверка"},initialPrompts:{node1:"Введите данные для этого узла.",node2:"Введите данные для этого узла.",node3:"Введите данные для этого узла.",plan:"Разбейте запрос на выполнимые шаги.",execute:"Выполните шаги реализации и создайте артефакты.",review:"Проверьте качество результата и определите дальнейшую работу."},newNodeTitle:"Узел {count}"},kanban:{title:"Канбан",createTask:"Создать задачу",noTasks:"Нет задач",allStatuses:"Все статусы",allAssignees:"Все ответственные",board:{create:"Создать канбан",archive:"Архивировать канбан",slugPlaceholder:"Идентификатор канбана, например project-a",namePlaceholder:"Отображаемое имя (необязательно)",slugRequired:"Идентификатор канбана не может быть пустым",created:"Канбан создан",archived:"Канбан архивирован",archiveConfirm:"Архивировать текущий канбан?",defaultArchiveUnavailable:"Доску по умолчанию нельзя архивировать"},columns:{triage:"На сортировку",todo:"К выполнению",scheduled:"Запланировано",ready:"Готово",running:"В работе",blocked:"Заблокировано",review:"Проверка",done:"Выполнено",archived:"В архиве"},form:{title:"Заголовок",titlePlaceholder:"Заголовок задачи",titleRequired:"Заголовок не может быть пустым",body:"Описание",bodyPlaceholder:"Описание задачи (необязательно)",assignee:"Ответственный",selectAssignee:"Выберите ответственного...",priority:"Приоритет",selectPriority:"Выберите приоритет...",tenant:"Арендатор",tenantPlaceholder:"Арендатор (необязательно)",workspace:"Рабочая область",workspaceScratch:"Временная рабочая область",workspaceDir:"Использовать каталог",workspaceWorktree:"Использовать worktree",workspacePath:"Путь рабочей области",workspacePathPlaceholder:"Абсолютный путь (необязательно)",branch:"Ветка",branchPlaceholder:"Ветка worktree",skills:"Навыки",skillsPlaceholder:"Выберите навыки...",triage:"Создать в сортировке",goalMode:"Режим цели",maxRuntime:"Макс. время выполнения",maxRuntimePlaceholder:"например 30m, 2h",maxRetries:"Макс. повторов",maxRetriesPlaceholder:"Количество повторов",goalMaxTurns:"Макс. ходов цели",goalMaxTurnsPlaceholder:"Максимум ходов"},card:{assigneeTooltip:"Ответственный",priority:{low:"Низкий",medium:"Средний",high:"Высокий"},timeAgo:{justNow:"Только что",minutes:"{count} мин. назад",hours:"{count} ч. назад",days:"{count} дн. назад"}},detail:{status:"Статус",assignee:"Ответственный",priority:"Приоритет",tenant:"Арендатор",createdAt:"Дата создания",startedAt:"Дата начала",completedAt:"Дата завершения",comments:"Комментарии",events:"События",runs:"Записи выполнения",result:"Результат выполнения",sessions:"Связанные сеансы",sessionMessages:"Журнал сеанса",noSessions:"Связанные сеансы не найдены.",artifacts:"Выходные файлы",sources:"Источники данных",highlights:"Ключевая информация",noLog:"Журнал для этой задачи не найден.",addComment:"Добавить комментарий",commentPlaceholder:"Напишите комментарий к задаче...",operations:"Операции"},action:{title:"Действие",complete:"Завершить",completeSummary:"Краткое описание завершения (необязательно)",block:"Заблокировать",blockReason:"Причина блокировки",unblock:"Разблокировать",archive:"Архивировать задачу",archiveConfirm:"Архивировать эту завершённую задачу?",assign:"Назначить",assignTo:"Назначить...",dispatch:"Запустить диспетчер",recoveryReason:"Причина восстановления (необязательно)",reclaim:"Вернуть",reassign:"Переназначить",specify:"Уточнить",loadLog:"Загрузить журнал",loadDiagnostics:"Загрузить диагностику"},message:{taskCreated:"Задача создана",taskCompleted:"Задача завершена",taskBlocked:"Задача заблокирована",taskUnblocked:"Задача разблокирована",taskArchived:"Задача архивирована",taskAssigned:"Задача назначена",dispatchNudged:"Диспетчер запущен",commentAdded:"Комментарий добавлен",taskReclaimed:"Задача возвращена",taskReassigned:"Задача переназначена",taskSpecified:"Задача уточнена",loadFailed:"Ошибка загрузки задач"},stats:{total:"Всего",tasks:"задач"}},jobs:{title:"Периодические задачи",createJob:"Создать задачу",editJob:"Редактировать задачу",noJobs:"Нет периодических задач. Создайте первую.",sortBy:"Сортировка",sortByName:"По имени",sortByTime:"По дате",sortByNameHint:"Сортировать по имени",sortByTimeHint:"Сортировать по дате",sortAsc:"По возрастанию",sortDesc:"По убыванию",name:"Название",namePlaceholder:"Название задачи",schedule:"Выражение расписания (Cron)",schedulePlaceholder:"Например, 0 9 * * *",quickPresets:"Быстрые предустановки",selectPreset:"Выберите предустановку...",presetEveryMinute:"Каждую минуту",presetEvery5Min:"Каждые 5 минут",presetEveryHour:"Каждый час",presetEveryDay:"Каждый день в 00:00",presetEveryDay9:"Каждый день в 09:00",presetEveryMonday:"Каждый понедельник в 09:00",presetEveryMonth:"1-го числа каждого месяца в 09:00",prompt:"Подсказка (промпт)",promptPlaceholder:"Содержимое для выполнения",skills:"Навыки",skillsPlaceholder:"Выберите навыки...",provider:"Provider",model:"Model",defaultProvider:"Default provider",defaultModel:"Default model",deliverTarget:"Цель доставки",origin:"Источник",local:"Локально",repeatCount:"Количество повторений (необязательно)",modelPlaceholder:"Модель по умолчанию",repeatPlaceholder:"Оставьте пустым для бесконечного повторения",jobCreated:"Задача создана",jobUpdated:"Задача обновлена",nameRequired:"Название обязательно для заполнения",scheduleRequired:"Выражение расписания обязательно для заполнения",promptRequired:"Текст запроса обязателен для заполнения",loadFailed:"Ошибка загрузки задач",jobPaused:"Задача приостановлена",jobResumed:"Задача возобновлена",jobTriggered:"Задача запущена",modelUpdated:"Модель обновлена",jobDeleted:"Задача удалена",status:{running:"Выполняется",paused:"Приостановлена",disabled:"Отключена",scheduled:"Запланирована"},info:{model:"Модель",provider:"Provider",schedule:"Расписание",lastRun:"Последний запуск",nextRun:"Следующий запуск",deliver:"Доставка",repeat:"Повторение"},action:{pause:"Приостановить",pauseJob:"Приостановить задачу",resume:"Возобновить",resumeJob:"Возобновить задачу",runNow:"Выполнить сейчас",triggerImmediately:"Запустить немедленно"},runHistory:{title:"История выполнения",runs:"запусков",noRuns:"Нет истории выполнения."}},skills:{title:"Навыки",targetFilter:"Среда",targets:{hermes:"Hermes",claude:"Claude",codex:"Codex"},searchPlaceholder:"Поиск навыков...",noMatch:"Нет подходящих навыков",noSkills:"Нет навыков",backTo:"Назад",attachedFiles:"Прикреплённые файлы",loadFailed:"Ошибка загрузки навыков",fileLoadFailed:"Ошибка загрузки файла",modified:"Пользователь изменил",archived:"В архиве",pinned:"Закреплено",pin:"Закрепить навык",unpin:"Открепить",pinFailed:"Ошибка изменения статуса закрепления",edit:"Редактировать",saving:"Сохранение...",editorLabel:"Редактор skill",saveSuccess:"Skill сохранён",saveFailed:"Ошибка сохранения skill",toggleFailed:"Ошибка переключения статуса навыка",source:{builtin:"Встроенный",hub:"Установленный из Hub",local:"Локально установленный"},writeApprovalButton:"Ожидает {count}",writeApprovalTitle:"Ожидающие подтверждения записи",writeApprovalDescription:"Подтвердите или отклоните записи памяти и skills, подготовленные Hermes Agent.",writeApprovalRefresh:"Обновить",writeApprovalEmpty:"Нет ожидающих записей.",writeApprovalUnsupported:"Эта версия Hermes Agent не поддерживает подтверждение записей. Обновите Hermes Agent, чтобы использовать эту функцию.",writeApprovalMemory:"Память",writeApprovalSkills:"Skills",writeApprovalViewDiff:"Проверить",writeApprovalHideDiff:"Скрыть",writeApprovalNoDiff:"Нет доступных изменений.",writeApprovalLoadFailed:"Не удалось загрузить ожидающие записи",writeApprovalDiffFailed:"Не удалось загрузить детали записи",writeApprovalActionFailed:"Не удалось обработать ожидающую запись",writeApprovalApproved:"Запись подтверждена",writeApprovalRejected:"Запись отклонена",writeApprovalApprove:"Подтвердить",writeApprovalReject:"Отклонить",writeApprovalPendingMemoryWrite:"Ожидающая запись памяти",writeApprovalCurrentFile:"Текущий файл {file}",writeApprovalProposedFile:"Предлагаемый файл {file}",writeApprovalDiffSection:"Изменения",writeApprovalPatchOldStringMissing:"old_string патча не найден в текущем файле {file}; подтверждение не изменит файл.",writeApprovalRequestedOldString:"Запрошенный old_string",writeApprovalCurrentReadFailed:"Текущий файл {file} не удалось прочитать как текст UTF-8.",writeApprovalDeleteSkill:"Это подтверждение удалит skill {skill}.",writeApprovalRemoveFile:"Это подтверждение удалит {file} из skill {skill}."},plugins:{title:"Плагины",refresh:"Обновить",notice:"Отображаются манифесты обнаруживаемых плагинов Hermes. Чтение метаданных не загружает код плагинов. Пользовательские standalone-плагины можно включать или отключать здесь; изменения вступают в силу в новых сеансах Hermes.",loadFailed:"Ошибка загрузки плагинов",updateFailed:"Не удалось обновить плагин",enableSuccess:"{name} включён",disableSuccess:"{name} отключён",commandCopied:"Команда скопирована",searchPlaceholder:"Поиск по ключу, имени, описанию, пути...",source:"Источник",kind:"Тип",statusTitle:"Статус",configStatus:"Конфигурация: {status}",notAvailable:"Нет",copyCommand:"Копировать команду",managedElsewhere:"Управляется из другого места",noMatch:"Нет плагинов, соответствующих текущим критериям фильтрации",enabled:"Включён",disabled:"Отключён",summary:{total:"Всего",active:"Включено / Авто",inactive:"Не включено",disabled:"Отключено",providerManaged:"Управляется провайдером"},status:{enabled:"Включён","auto-active":"Автовключение",inactive:"Не включён",disabled:"Отключён","provider-managed":"Управляется провайдером"},statusLabel:{enabled:"Включён конфигурацией","auto-active":"Автовключение",inactive:"Не включён",disabled:"Отключён","provider-managed":"Управляется провайдером"},configStatuses:{enabled:"Включён",disabled:"Отключён","not-enabled":"Не включён",auto:"Авто","provider-managed":"Управляется провайдером"},table:{plugin:"Плагин",status:"Статус",source:"Источник",kind:"Тип",capabilities:"Возможности",path:"Путь / Точка входа",manage:"Управление"},capabilities:{tools:"{count} инструментов",hooks:"{count} хуков",env:"{count} переменных окружения"},metadata:{agentRoot:"Корневая директория агента",python:"Python",scanCwd:"Сканировать cwd",projectPlugins:"Плагины проекта"}},petdex:{title:"Petdex Pets",subtitle:"Browse the public petdex catalog used by Hermes desktop pets.",refresh:"Refresh",adopt:"Adopt",active:"Active",adopted:"Adopted {name}",adoptFailed:"Failed to adopt pet",loadFailed:"Failed to load petdex catalog",searchPlaceholder:"Search by name, slug, author, or kind",kindFilter:"Kind",spritesheet:"Spritesheet",submittedBy:"By {name}",empty:"No pets match the current filters.",showMore:"Show {count} more",summary:{total:"Catalog total",visible:"Matching",kinds:"Kinds",generatedAt:"Generated at"}},memory:{title:"Память",refresh:"Обновить",loadFailed:"Ошибка загрузки памяти",myNotes:"Мои заметки",noNotes:"Нет заметок.",notesPlaceholder:"Введите текст заметки...",userProfile:"Профиль пользователя",noProfile:"Нет профиля.",profilePlaceholder:"Введите профиль пользователя...",soul:"Душа",noSoul:"Нет конфигурации души.",soulPlaceholder:"Введите конфигурацию души..."},models:{title:"Модели",searchPlaceholder:"Поиск моделей...",noResults:"Нет результатов",noModels:"Нет моделей",addProvider:"Добавить провайдера",noProviderPromptTitle:"Провайдер модели не настроен",noProviderPromptMessage:"В текущем профиле «{profile}» не настроен провайдер модели. Открыть настройки моделей?",noProviderPromptLater:"Не сейчас",noProviderPromptAction:"Перейти к настройкам",refreshModelCache:"Обновить кеш моделей",refreshModelCacheLoading:"Обновление кеша моделей...",refreshModelCacheSuccess:"Кеш моделей обновлен",refreshModelCacheFailed:"Не удалось обновить кеш моделей",refreshModels:"Обновить модели",restoreModels:"Восстановить предыдущий список моделей",refreshModelsConfirmTitle:"Подтвердить изменения списка моделей",refreshModelsConfirmContent:"После обновления будет удалено моделей: {removed}, добавлено: {added}. Удаляемые: {removedList}",refreshModelsConfirmAction:"Заменить список моделей",refreshModelsSuccess:"Список моделей обновлён (всего {count}, недоступно {unavailable})",refreshModelsFailed:"Не удалось обновить модели провайдера",restoreModelsSuccess:"Предыдущий список моделей восстановлен (всего {count})",restoreModelsFailed:"Не удалось восстановить предыдущий список моделей",providerType:"Тип провайдера",preset:"Предустановка",custom:"Пользовательский",selectProvider:"Выбрать провайдера",chooseProvider:"Выберите провайдера...",getApiKey:"Получить API-ключ",name:"Название",autoGeneratedName:"Генерируется автоматически на основе базового URL",baseUrl:"Базовый URL",region:"Регион",regionIntl:"Международный",regionCn:"Китай",baseUrlPlaceholder:"Например, https://api.example.com/v1",apiKey:"API-ключ",apiKeyPlaceholder:"sk-...",defaultModel:"Модель по умолчанию",selectOrInput:"Выберите или введите название модели...",selectModel:"Выберите модель...",providerAdded:"Провайдер добавлен",providerDeleted:"Провайдер удалён",providerCredentialsCleared:"Учётные данные провайдера очищены",clearProviderCredentials:"Очистить учётные данные",clearCredentialsConfirm:"Очистить сохранённые учётные данные для «{name}»? Этот встроенный провайдер останется в списке и снова заработает после настройки учётных данных.",disableProvider:"Отключить провайдера",disableProviderConfirm:"Отключить встроенного провайдера «{name}»? Он останется встроенным и его можно будет включить позже.",providerDisabled:"Провайдер отключён",defaultProviderUpdated:"Провайдер по умолчанию обновлён",defaultProviderUpdateFailed:"Не удалось обновить провайдера по умолчанию",defaultModelUpdated:"Модель по умолчанию обновлена",defaultModelUpdateFailed:"Не удалось обновить модель по умолчанию",deleteProvider:"Удалить провайдера",deleteConfirm:'Удалить "{name}"?',codexLoginTitle:"Вход в OpenAI Codex",codexWaiting:"Введите следующий код на странице авторизации:",codexCopyCode:"Код скопирован",codexOpenLink:"Открыть страницу авторизации",codexApproved:"Вход выполнен",codexExpired:"Авторизация истекла. Повторите попытку.",nousLoginTitle:"Вход в Nous Portal",nousWaiting:"Введите этот код на странице авторизации:",nousCopyCode:"Код скопирован",nousOpenLink:"Открыть страницу авторизации",nousApproved:"Вход выполнен",nousDenied:"Авторизация отклонена. Повторите попытку.",nousExpired:"Авторизация истекла. Повторите попытку.",copilotLoginTitle:"Вход в GitHub Copilot",copilotWaiting:"Перейдите на GitHub и введите код устройства для авторизации. Окно закроется автоматически после завершения.",copilotCopyCode:"Код скопирован",copilotOpenLink:"Открыть страницу авторизации GitHub",copilotApproved:"Вход выполнен!",copilotDenied:"Авторизация отклонена.",copilotExpired:"Срок действия ссылки истёк. Повторите попытку.",copilotAddDetectedTitle:"Обнаружен GitHub Copilot",copilotAddDetected:"На этом компьютере найдены учётные данные OAuth GitHub Copilot. Нажмите «Добавить», чтобы включить Copilot в Hermes.",copilotAddSourceEnv:"Источник: ~/.hermes/.env (COPILOT_GITHUB_TOKEN)",copilotAddSourceGhCli:"Источник: gh CLI (gh auth token)",copilotAddSourceAppsJson:"Источник: плагин Copilot для VS Code (apps.json)",copilotDeleteHintEnv:"Это действие удалит COPILOT_GITHUB_TOKEN из ~/.hermes/.env, не затрагивая другие инструменты.",copilotDeleteHintGhCli:"Copilot будет удалён из списка Hermes. Это не повлияет на gh CLI — `gh auth status` по-прежнему будет показывать вход.",copilotDeleteHintAppsJson:"Copilot будет удалён из списка Hermes. Это не повлияет на вход в плагин Copilot для VS Code.",xaiLoginTitle:"Вход через OAuth xAI Grok",xaiWaiting:"Авторизуйтесь на открывшейся странице xAI. Окно закроется автоматически.",xaiOpenLink:"Открыть страницу авторизации xAI",xaiCopyLink:"Копировать ссылку авторизации",xaiApproved:"Вход выполнен!",xaiExpired:"Срок действия ссылки истёк. Повторите попытку.",anthropicLoginTitle:"Вход Claude OAuth",anthropicWaiting:"Завершите авторизацию на странице Claude и вставьте полученный код здесь.",anthropicOpenLink:"Открыть страницу авторизации Claude",anthropicCopyLink:"Копировать ссылку авторизации",anthropicCodePlaceholder:"Вставьте код авторизации...",anthropicSubmitCode:"Отправить код",anthropicApproved:"Вход выполнен!",anthropicExpired:"Авторизация истекла. Повторите попытку.",minimaxLoginTitle:"Вход в MiniMax Coding Plan",minimaxRegionHint:"Выберите регион MiniMax для вашей учетной записи Coding Plan.",minimaxGlobal:"Глобальный",minimaxChina:"Китай",minimaxStart:"Начать авторизацию",minimaxWaiting:"Откройте страницу авторизации MiniMax и введите этот код. После подтверждения окно закроется автоматически.",minimaxOpenLink:"Открыть страницу авторизации MiniMax",minimaxApproved:"Вход выполнен!",minimaxExpired:"Авторизация истекла. Повторите попытку.",customBadge:"Пользовательская",previewBadge:"Предварительная",disabledBadge:"Недоступна",disabledTooltip:"Эта модель недоступна для текущей учётной записи",customModelPlaceholder:"ID модели, отсутствующей в списке",customModelHint:"Используйте, если провайдер поддерживает модель, но она не возвращена. Не переименование. Нажмите Enter для загрузки.",removeCustomModel:"Удалить эту модель из списка",refresh:"Обновить список моделей (перезагрузить config.yaml)",noProviders:"Нет провайдеров. Добавьте первого.",models:"Список моделей",count:"моделей",more:"ещё",aliasEdit:"Переименовать",aliasTitle:"Отображаемое имя модели",aliasTitleFor:"Отображаемое имя для {model}",aliasPlaceholder:"Оставьте пустым для использования исходного ID модели",aliasHint:"Изменяет только отображаемое имя в Web UI. В Hermes отправляется исходный ID модели.",aliasCanonical:"Исходный ID: {model}",aliasUseOriginal:"Восстановить исходный ID",aliasManage:"Отображаемые имена",aliasManageFor:"Отображаемые имена для {provider}",aliasSaveFailed:"Не удалось сохранить отображаемое имя",manageVisibleModels:"Управлять видимыми моделями",manageVisibleModelsFor:"Управление видимыми моделями для {name}",visibilityHint:"Влияет только на отображение в выборе моделей Web UI и на странице моделей. Не изменяет конфигурацию provider/model в Hermes CLI. Вызовы используют исходный ID модели.",visibilitySelectOne:"Оставьте хотя бы одну видимую модель",visibilitySaved:"Видимые модели сохранены",visibilitySaveFailed:"Не удалось сохранить видимые модели",showAllModels:"Показать все модели",clearVisibleModels:"Снять все",generalTitle:"Основные модели",combinationTitle:"Ансамбли моделей",combinationSubtitle:"Настройте пресеты MoA: reference-модели сначала дают варианты, затем одна aggregator-модель формирует финальный ответ и вызовы инструментов.",combinationPreset:"Пресет",combinationName:"Название",combinationAddModel:"Добавить ансамбль моделей",combinationEditModel:"Изменить ансамбль моделей",combinationNewPreset:"Новый пресет",combinationPresetPlaceholder:"например review",combinationAddPreset:"Добавить пресет",combinationSetDefault:"Сделать стандартным",combinationEnabled:"Включить reference-модели",combinationReferenceModels:"Reference-модели",combinationReferenceModel:"Reference-модель",combinationAddReference:"Добавить reference-модель",combinationAggregator:"Aggregator-модель",combinationReferenceTemperature:"Температура reference",combinationAggregatorTemperature:"Температура aggregator",combinationMaxTokens:"Макс. токенов",combinationNotSet:"Не задано",combinationSaved:"Ансамбль моделей сохранен",combinationLoadFailed:"Не удалось загрузить ансамбль моделей",combinationSaveFailed:"Не удалось сохранить ансамбль моделей",combinationPresetExists:"Пресет уже существует",combinationNameRequired:"Введите название ансамбля моделей",combinationNameInvalid:"Название может содержать только буквы, цифры, подчеркивания, дефисы и точки",combinationReferenceRequired:"Добавьте хотя бы одну reference-модель",combinationAggregatorRequired:"Выберите aggregator-модель",auxiliaryTitle:"Вспомогательные модели",auxiliarySubtitle:"Переопределения моделей для фоновых задач: сжатия, зрения, подтверждений, MCP и обслуживания.",auxiliaryRefresh:"Обновить",auxiliaryTask:"Задача",auxiliaryTimeout:"Тайм-аут",auxiliaryDownloadTimeout:"Тайм-аут загрузки",auxiliaryActions:"Действия",auxiliaryDefault:"По умолчанию",auxiliaryCustomEndpoint:"Пользовательский endpoint",auxiliaryProviderAuto:"Авто",auxiliaryProviderMain:"Основная модель",auxiliaryProviderPlaceholder:"auto, main или ключ провайдера",auxiliaryDownloadShort:"загрузка",auxiliaryExtraBody:"JSON дополнительного тела",auxiliaryClear:"Сбросить",auxiliarySaved:"Вспомогательные модели сохранены",auxiliaryLoadFailed:"Не удалось загрузить вспомогательные модели",auxiliarySaveFailed:"Не удалось сохранить вспомогательные модели",auxiliaryInvalidExtraBody:"Дополнительное тело должно быть JSON-объектом",auxiliaryTaskCompression:"Сжатие",auxiliaryTaskVision:"Зрение",auxiliaryTaskWebExtract:"Извлечение из веб-страниц",auxiliaryTaskSkillsHub:"Центр навыков",auxiliaryTaskApproval:"Подтверждение",auxiliaryTaskMcp:"MCP",auxiliaryTaskTitleGeneration:"Генерация заголовков",auxiliaryTaskTriageSpecifier:"Уточнение triage",auxiliaryTaskKanbanDecomposer:"Разбиение Kanban",auxiliaryTaskProfileDescriber:"Описание профиля",auxiliaryTaskCurator:"Куратор",auxiliaryTaskSessionSearch:"Поиск сессий",auxiliaryTaskFlushMemories:"Запись воспоминаний",currentDefault:"Текущая по умолчанию",defaultShort:"По умолч.",setDefaultProvider:"Сделать провайдером по умолчанию",setDefault:"Сделать по умолчанию",builtIn:"Встроенный",customType:"Пользовательский",provider:"Провайдер",contextLength:"Длина контекста",contextLengthPlaceholder:"Например, 200000 (необязательно)",apiMode:"Режим API",local:"Локальный ({host})",selectProviderRequired:"Выберите провайдера",baseUrlRequired:"Базовый URL обязателен",apiKeyRequired:"API-ключ обязателен",modelRequired:"Модель по умолчанию обязательна",enterBaseUrl:"Сначала введите базовый URL",unexpectedFormat:"Неожиданный формат ответа",foundModels:"Найдено моделей: {count}",fetchFailed:"Не удалось получить модели"},profiles:{title:"Профили",create:"Создать профиль",import:"Импорт",export:"Экспорт",rename:"Переименовать",delete:"Удалить",switchTo:"Переключить профиль Hermes",switchConfirm:"Будет выполнено `hermes profile use {name}` и активный профиль Hermes CLI переключится. Продолжить?",switchSuccess:'Активный профиль Hermes переключён на "{name}"',switchFailed:"Не удалось переключить профиль Hermes. Возможно, требуется ручной перезапуск шлюза.",createSuccess:'Профиль "{name}" создан',createFailed:"Ошибка создания профиля",renameSuccess:"Профиль переименован",renameFailed:"Ошибка переименования профиля",deleteConfirm:'Удалить профиль "{name}"?',deleteSuccess:"Профиль удалён",deleteFailed:"Ошибка удаления профиля",exportSuccess:"Профиль экспортирован",exportFailed:"Ошибка экспорта профиля",exportTimeout:"Время экспорта истекло. Профиль слишком велик для архивации — обычно его раздувают кэши и виртуальные окружения в workspace.",importTimeout:"Время импорта истекло, пока сервер распаковывал архив. Повторите попытку на более быстром диске или импортируйте архив через Hermes CLI.",importSuccess:"Профиль импортирован",importFailed:"Ошибка импорта профиля",importSelectFile:"Выберите архивный файл",importInvalidFile:"Выберите корректный архивный файл (.tar.gz, .tgz, .gz, .zip)",name:"Название профиля",namePlaceholder:"Только строчные буквы, цифры, дефисы",nameValidation:"Название профиля может содержать только строчные буквы, цифры, символы подчёркивания и дефисы",newName:"Новое название",newNamePlaceholder:"Строчные буквы, цифры, дефис",cloneFromCurrent:"Клонировать из текущего профиля",cloneCleanupNotice:"При клонировании автоматически пропускаются эксклюзивные учётные данные платформ (Weixin / Telegram / Slack и др.), чтобы избежать конфликта с исходным профилем",cloneStrippedCredentials:"Очищено {count} эксклюзивных учётных данных: {list}",cloneDisabledPlatforms:"Отключено платформ: {count} — {list}",cloneStrippedConfigCredentials:"Очищено встроенных учётных данных в config.yaml: {count} — {list}",archivePath:"Путь к архиву",archivePathPlaceholder:"Путь к архивному файлу на сервере",importName:"Название профиля (необязательно)",importNamePlaceholder:"Оставьте пустым для использования имени архива",active:"Активен",model:"Модель",gateway:"Шлюз",alias:"Псевдоним",provider:"Провайдер",path:"Путь",skills:"Навыки",hasEnv:"Есть .env",hasSoulMd:"Есть soul.md",noProfiles:"Нет профилей. Создайте первый.",avatar:{title:"Пользовательский аватар",customize:"Аватар",upload:"Загрузить изображение",random:"Случайный",reset:"Сбросить на стандартный",hint:"Поддерживаются PNG, JPEG, WebP, максимум 1 МБ",invalidType:"Выберите изображение в формате PNG, JPEG или WebP",tooLarge:"Аватар не может превышать 1 МБ",saveSuccess:"Аватар сохранён",saveFailed:"Ошибка сохранения аватара",resetSuccess:"Стандартный аватар восстановлен",resetFailed:"Ошибка восстановления стандартного аватара"},runtime:{activeProfile:"Текущий: {name}",bridgeWorker:"Состояние моста",gateway:"Шлюз",active:"Активен",activeTag:"Текущий",idle:"Простой",running:"Работает",stopped:"Остановлен",restartGateway:"Перезапустить шлюз",restartProfile:"Перезапустить профиль",switchProfile:"Переключить профиль интерфейса",gatewayRestarted:"Шлюз перезапущен: {name}",gatewayRestartFailed:"Ошибка перезапуска шлюза",profileRestarted:"Профиль перезапущен: {name}",profileRestartFailed:"Ошибка перезапуска профиля"}},logs:{title:"Логи",all:"Все",searchPlaceholder:"Поиск...",refresh:"Обновить",noEntries:"Нет записей"},theme:{title:"Тема",saved:"Тема сохранена",saveFailed:"Не удалось сохранить тему",reset:"Восстановить значения",resetSuccess:"Тема по умолчанию восстановлена",appearance:"Внешний вид",appearanceHint:"Изменения сразу отображаются во всём интерфейсе",mode:"Яркость",modeHint:"Выберите светлую или тёмную палитру",modeSystem:"Как в системе",modeLight:"Светлая",modeDark:"Тёмная",style:"Стиль",styleHint:"Выберите характер интерфейса",styleInk:"Тушь",styleComic:"Комикс",fontSize:"Размер текста",fontSizeHint:"Базовый размер текста интерфейса и диалогов",textColor:"Цвет текста",textColorHint:"Вторичные оттенки текста создаются автоматически",accentColor:"Цвет выделения",accentColorHint:"Для активных элементов, выделения и основных кнопок",background:"Фоновое изображение",backgroundHint:"Загрузите личный фон рабочего пространства",backgroundTypeError:"Используйте изображение PNG, JPEG, WebP или GIF",backgroundSizeError:"Размер фонового изображения не должен превышать 10 МБ",backgroundUploaded:"Фоновое изображение обновлено",backgroundUploadFailed:"Не удалось загрузить фоновое изображение",backgroundRemoved:"Фоновое изображение удалено",backgroundRemoveFailed:"Не удалось удалить фоновое изображение",backgroundReplace:"Заменить изображение",backgroundUpload:"Загрузить изображение",backgroundRemove:"Удалить",backgroundEmpty:"Фоновое изображение не задано",backgroundNote:"Изображение хранится в аккаунте. Локальный кэш предотвращает мерцание.",preview:"Предпросмотр",previewTitle:"Ваше пространство, ваша атмосфера",previewText:"Цвета текста и выделения применяются ко всему интерфейсу.",previewAction:"Выбранное действие"},settings:{title:"Настройки",saved:"Сохранено",saveFailed:"Ошибка сохранения",tabs:{display:"Отображение",account:"Текущий аккаунт",users:"Управление аккаунтами",webhooks:"Вебхуки",agent:"Агент",proxy:"Прокси",memory:"Память",compression:"Сжатие контекста",session:"Сеанс",privacy:"Конфиденциальность",apiServer:"API-сервер",models:"Модели",voice:"Голос"},webhooks:{title:"Вебхуки",description:"Отправляйте события жизненного цикла Chat Run во внешние системы, не блокируя выполнение чата.",deliveryNote:"Для доставки используется ограниченная очередь в памяти. Эндпоинты обрабатываются параллельно, а для каждого эндпоинта сохраняется порядок событий. Ожидающие доставки не сохраняются после перезапуска сервера.",createTitle:"Добавить вебхук",editTitle:"Изменить вебхук",allProfiles:"Все профили",queued:"В очереди: {count}",deleteConfirm:"Удалить этот вебхук? Его ожидающие доставки также будут отброшены.",localInboxTitle:"Локальный тестовый ящик",localInboxDescription:"Последние события, полученные встроенным тестовым приёмником: {count}. Они хранятся только в памяти и удаляются при перезапуске сервера.",localInboxEmpty:"Локальные тестовые события ещё не получены.",localInboxPayloadTitle:"Полученная нагрузка вебхука",clearInboxConfirm:"Очистить все события из локального тестового ящика?",columns:{name:"Название",url:"URL",events:"События",profiles:"Профили",status:"Состояние",actions:"Действия",receivedAt:"Получено",event:"Событие",eventId:"ID события",deliveryId:"ID доставки"},events:{messageCreated:"Сообщение пользователя создано",runQueued:"Запуск добавлен в очередь",runStarted:"Запуск начат",toolStarted:"Инструмент запущен",toolCompleted:"Инструмент завершён",toolFailed:"Ошибка инструмента",approvalRequested:"Запрошено разрешение",approvalResolved:"Разрешение обработано",clarificationRequested:"Запрошено уточнение",clarificationResolved:"Уточнение обработано",completed:"Выполнение завершено",failed:"Ошибка выполнения"},status:{enabled:"Включён",disabled:"Отключён"},runtime:{idle:"Ожидание",delivering:"Доставка",retrying:"Ожидание повтора",success:"Доставлено",failed:"Ошибка",dropped:"Отброшено"},actions:{add:"Добавить вебхук",localTest:"Использовать локальный тестовый приёмник",test:"Проверить",enable:"Включить",disable:"Отключить",refresh:"Обновить",clear:"Очистить",view:"Открыть"},form:{name:"Название",localTestName:"Локальный тест вебхука",namePlaceholder:"Например: Операционные уведомления",url:"URL эндпоинта",secret:"Секрет подписи",secretPlaceholder:"Необязательный секрет подписи HMAC-SHA256",secretKeepPlaceholder:"Оставьте пустым, чтобы сохранить текущий секрет",clearSecret:"Удалить сохранённый секрет",events:"События",profiles:"Профили",profilesPlaceholder:"Оставьте пустым, чтобы получать все профили",maxRetries:"Повторные попытки после первой ошибки (0–10)",includeContent:"Включать итоговый текст ассистента",includeContentHint:"Итоговый ответ может содержать конфиденциальную информацию. Рассуждения, системные промпты и аргументы инструментов никогда не отправляются.",includeUserContent:"Включать текст сообщения пользователя",includeUserContentHint:"Сообщения пользователя могут содержать конфиденциальную информацию. По умолчанию отключено; системные промпты, рассуждения, аргументы и результаты инструментов не включаются.",allowPrivateNetwork:"Разрешить частные или локальные сетевые адреса",allowPrivateNetworkHint:"Включайте только для доверенных внутренних эндпоинтов. DNS проверяется заново перед каждой доставкой.",enabled:"Включён"},messages:{required:"Название и URL обязательны",eventRequired:"Выберите хотя бы одно событие",loadFailed:"Не удалось загрузить вебхуки",saved:"Вебхук сохранён",saveFailed:"Не удалось сохранить вебхук",deleted:"Вебхук удалён",deleteFailed:"Не удалось удалить вебхук",testSucceeded:"Тестовый вебхук доставлен",testFailed:"Ошибка тестового вебхука",localTestFailed:"Не удалось создать локальный тестовый приёмник",inboxLoadFailed:"Не удалось загрузить локальные тестовые события",inboxCleared:"Локальные тестовые события очищены",inboxClearFailed:"Не удалось очистить локальные тестовые события"}},models:{apiKey:"API-ключ",apiKeyPlaceholder:"Введите API-ключ",save:"Сохранить",saved:"Сохранено",saveFailed:"Ошибка сохранения",noProviders:"Нет настроенных моделей"},display:{streaming:"Потоковый ответ",streamingHint:"Отображать ответ AI по мере генерации",compact:"Компактный режим",compactHint:"Уменьшить отступы между сообщениями",showReasoning:"Показывать процесс рассуждения",showReasoningHint:"Отображать ход мыслей модели",showCost:"Показывать стоимость",showCostHint:"Отображать количество использованных токенов в ответе",inlineDiffs:"Встроенные различия",inlineDiffsHint:"Отображать изменения в коде внутри строки",bellOnComplete:"Звук завершения",bellOnCompleteHint:"Воспроизводить звук по окончании ответа AI",notifyOnComplete:"Уведомление о завершении",notifyOnApproval:"Approval Desktop Notification",notifyOnApprovalHint:"Show a system notification when a new approval or clarification needs attention while Studio is in the background",notifyOnApprovalTest:"Approval desktop notifications are enabled.",notifyOnApprovalTestButton:"Test",notifyOnApprovalTestSent:"Approval notification sent",notifyOnApprovalTestFailed:"Failed to send approval notification",approvalNotificationTitle:"Approval required",approvalNotificationClarifyTitle:"Clarification required",approvalNotificationBody:"Open Hermes Studio to review and respond.",notifyOnCompleteHint:"Показывать системное уведомление по окончании ответа AI",notifyOnCompleteMacHint:"В macOS разрешите уведомления браузера в системных настройках.",notifyOnCompleteDenied:"Разрешение на уведомления отклонено",notifyOnCompleteInsecure:"Для уведомлений браузера требуется HTTPS или localhost",notifyOnCompleteUnsupported:"Этот браузер не поддерживает уведомления",notifyOnCompleteTest:"Уведомления включены.",notifyOnCompleteTestButton:"Тест",notifyOnCompleteTesting:"Отправка тестового уведомления...",notifyOnCompleteTestSent:"Тестовое уведомление отправлено",notifyOnCompleteTestFailed:"Не удалось отправить тестовое уведомление",busyInputMode:"Режим ввода во время занятости",busyInputModeHint:"Разрешить ввод, пока AI обрабатывает запрос",theme:"Тема",themeHint:"Выберите светлую, тёмную или системную тему",themeLight:"Светлая",themeDark:"Тёмная",themeSystem:"Системная",chatInputHeight:"Высота поля ввода чата",chatInputHeightHint:"Высота поля ввода чата на рабочем столе в пикселях. На мобильных остается авто."},agent:{maxTurns:"Максимум ходов",maxTurnsHint:"Максимальное количество ходов в одном диалоге",gatewayTimeout:"Таймаут шлюза",gatewayTimeoutHint:"Таймаут одного запроса (секунды)",restartDrainTimeout:"Таймаут слива при перезапуске",restartDrainTimeoutHint:"Время ожидания завершения запросов перед перезапуском (секунды)",toolEnforcement:"Стратегия выполнения инструментов",toolEnforcementHint:"Управление режимом вызова инструментов",auto:"Автоматически",always:"Всегда",never:"Никогда"},gatewayAutoStart:{title:"Автозапуск gateway",description:"Управляет тем, какие локальные gateway профилей Hermes Web UI запускает при старте. Настройка хранится в конфигурации Web UI, а не в profile config.yaml.",enabled:"Автоматически запускать gateway",enabledHint:"Если выключено, при старте не будет автоматически запущен ни один gateway профиля.",management:"Единый gateway",managementHint:"Требуется Hermes Agent 0.17.0 или новее. Если включено, Web UI записывает multiplex_profiles, чтобы default gateway обслуживал все профили; другие профили не могут отдельно настраивать точки входа сообщений, такие как Feishu, Weixin или QQBot. При выключении эта настройка удаляется.",managementAuto:"Автоматически",managementPerProfile:"Один gateway на профиль",managementUnified:"Единый default gateway",mode:"Политика профилей",modeHint:"Запускать все найденные профили или только явный список включения.",modeAll:"Все найденные профили",modeInclude:"Только включенные профили",include:"Включенные профили",includeHint:"Имена профилей через запятую. В режиме включения пустой список не запускает ничего.",exclude:"Исключенные профили",excludeHint:"Имена профилей через запятую, которые нужно пропустить после применения политики.",profileListPlaceholder:"default, reviewer"},proxy:{title:"Прокси gateway",description:"Задаёт переменные окружения прокси для gateway выбранного профиля. После изменений gateway перезапускается, чтобы платформы сообщений использовали новые сетевые настройки.",httpsProxy:"HTTPS_PROXY",httpsProxyHint:"Прокси для HTTPS-запросов. Обычно это основной параметр.",httpProxy:"HTTP_PROXY",httpProxyHint:"Прокси для обычных HTTP-запросов.",allProxy:"ALL_PROXY",allProxyHint:"Резервный прокси, если прокси для конкретного протокола не задан.",noProxy:"NO_PROXY",noProxyHint:"Хосты или домены через запятую, которые должны обходить прокси.",save:"Сохранить настройки прокси"},memory:{enabled:"Включить память",enabledHint:"Разрешить AI запоминать контекст диалога",userProfile:"Профиль пользователя",userProfileHint:"Разрешить AI запоминать предпочтения пользователя",charLimit:"Лимит символов памяти",charLimitHint:"Максимальное количество символов в MEMORY.md",userCharLimit:"Лимит символов профиля пользователя",userCharLimitHint:"Максимальное количество символов в USER.md"},compression:{enabled:"Включить сжатие",enabledHint:"Автоматически сжимать историю перед достижением лимита контекста модели",threshold:"Порог сжатия",thresholdHint:"Начинать сжатие, когда ожидаемое количество токенов превышает указанную долю контекста",targetRatio:"Целевая доля",targetRatioHint:"После сжатия история должна занимать указанную долю контекста",protectLastN:"Защищать последние сообщения",protectLastNHint:"Сколько последних сообщений не участвуют в сжатии",protectFirstN:"Защищать первые сообщения",protectFirstNHint:"Сколько первых сообщений не участвуют в сжатии"},session:{mode:"Режим сброса",modeHint:"Условия для сброса сеанса",modeBoth:"По бездействию + по расписанию",modeIdle:"Только по бездействию",modeDaily:"Только по расписанию",modeNone:"Никогда (только вручную)",idleMinutes:"Таймаут бездействия",idleMinutesHint:"Время бездействия (минуты) перед автоматическим сбросом",atHour:"Время сброса по расписанию",humanOnly:"Показывать только сеансы с человеком",humanOnlyHint:"По умолчанию скрывать шум от подчинённых агентов и мониторинга сеансов",liveMonitorHumanOnly:"В мониторинге в реальном времени: только сеансы с человеком",liveMonitorHumanOnlyHint:"По умолчанию скрывать шум от подчинённых агентов и мониторинга сеансов в просмотре в реальном времени",atHourHint:"Сбрасывать сеанс каждый день в указанный час",requireAuth:"Авторизация сеанса",requireAuthHint:"Требовать авторизацию для операций сеанса",memoryWriteApproval:"Проверять записи памяти",memoryWriteApprovalHint:"Отправлять записи памяти Hermes Agent на подтверждение перед сохранением.",skillsWriteApproval:"Проверять записи skills",skillsWriteApprovalHint:"Отправлять изменения skills от Hermes Agent на подтверждение перед сохранением.",writeApprovalTitle:"Ожидающие подтверждения записи",writeApprovalDescription:"Подтвердите или отклоните записи памяти и skills, подготовленные Hermes Agent.",writeApprovalRefresh:"Обновить",writeApprovalEmpty:"Нет ожидающих записей.",writeApprovalMemory:"Память",writeApprovalSkills:"Skills",writeApprovalViewDiff:"Проверить",writeApprovalHideDiff:"Скрыть",writeApprovalNoDiff:"Нет доступных изменений.",writeApprovalLoadFailed:"Не удалось загрузить ожидающие записи",writeApprovalDiffFailed:"Не удалось загрузить детали записи",writeApprovalActionFailed:"Не удалось обработать ожидающую запись",writeApprovalApproved:"Запись подтверждена",writeApprovalRejected:"Запись отклонена",writeApprovalApprove:"Подтвердить",writeApprovalReject:"Отклонить",writeApprovalPendingMemoryWrite:"Ожидающая запись памяти",writeApprovalCurrentFile:"Текущий файл {file}",writeApprovalProposedFile:"Предлагаемый файл {file}",writeApprovalDiffSection:"Изменения",writeApprovalPatchOldStringMissing:"old_string патча не найден в текущем файле {file}; подтверждение не изменит файл.",writeApprovalRequestedOldString:"Запрошенный old_string",writeApprovalCurrentReadFailed:"Текущий файл {file} не удалось прочитать как текст UTF-8.",writeApprovalDeleteSkill:"Это подтверждение удалит skill {skill}.",writeApprovalRemoveFile:"Это подтверждение удалит {file} из skill {skill}."},privacy:{redactPii:"Скрывать PII",redactPiiHint:"Автоматически обнаруживать и скрывать чувствительную информацию (пароли, ключи и т.д.)"},apiServer:{enable:"Включить",enableHint:"Включить API-сервер",host:"Хост",hostHint:"Адрес для прослушивания",port:"Порт",portHint:"Порт для прослушивания",key:"Ключ",keyHint:"Ключ доступа к API",cors:"Источник CORS",corsHint:"Разрешённые источники для кросс-доменных запросов"},lockedIps:{title:"Управление заблокированными IP",count:"Заблокировано IP: {count}",empty:"Нет заблокированных IP",unlock:"Разблокировать",unlockAll:"Разблокировать все",unlockAllConfirm:"Подтвердите разблокировку всех IP?",unlocked:"IP разблокирован",allUnlocked:"Разблокировано IP: {count}",type:{password:"Password",token:"API token",pairing:"Device pairing"}},userAvatar:{title:"Аватар пользователя",upload:"Загрузить изображение",random:"Сгенерировать случайный",reset:"Сбросить по умолчанию",hint:"Поддерживаются PNG, JPEG и WebP до 1 МБ; автоматически сжимается до менее 500 КБ.",invalidType:"Выберите изображение PNG, JPEG или WebP",tooLarge:"Изображение аватара должно быть не больше 1 МБ",saveSuccess:"Аватар сохранён",saveFailed:"Не удалось сохранить аватар",resetSuccess:"Аватар сброшен",resetFailed:"Не удалось сбросить аватар"},voice:{activeTtsApi:"Активная TTS API",activeSttApi:"Активная STT API",ttsProvidersTitle:"Провайдеры TTS",ttsProvidersDescription:"Управление интеграциями преобразования текста в речь для озвучивания ответов ассистента и предпросмотра голоса.",sttProvidersTitle:"Провайдеры STT",sttProvidersDescription:"Управление интеграциями распознавания речи, используемыми микрофоном и голосовым вводом.",localSttModelTitle:"Локальный китайско-английский STT",localSttModelDescription:"Приватное распознавание на этом устройстве без отправки аудио в облако.",localSttModelUnavailable:"Скачайте и проверьте локальную модель STT перед активацией.",localSttModelReady:"Готово",localSttModelDownloading:"Загрузка",localSttModelNotInstalled:"Не установлено",localSttLanguages:"Языки",localSttLanguagesValue:"Китайский + английский",localSttDownloadSize:"Размер загрузки",localSttRuntime:"Среда выполнения",localSttDownloadCf:"Скачать через Cloudflare",localSttDownloadGithub:"Скачать через GitHub",localSttBackgroundHint:"Загрузка, проверка, распаковка и валидация выполняются в фоне.",localSttDownloadFailed:"Не удалось скачать локальную модель STT: {error}",localSttStage:{queued:"Ожидание загрузки…",resolve:"Подготовка загрузки…",download:"Загрузка модели…",verify:"Проверка контрольной суммы…",extract:"Распаковка модели…",validate:"Проверка модели…",install:"Установка модели…",completed:"Модель готова",failed:"Ошибка загрузки"},hermesConfigTitle:"Конфигурация Hermes Agent",hermesConfigDescription:"Существующие нативные провайдеры остаются в профиле Hermes; провайдеры Web UI отображаются как Hermes Studio.",hermesActiveProvider:"Активный провайдер",hermesConfiguredProviders:"Настроенные провайдеры",hermesStudioProvider:"Hermes Studio",providerSpeed:"Скорость",providerSampleRate:"Частота дискретизации",providerBitRate:"Битрейт",providerGroupId:"ID группы",providerVolume:"Громкость",providerEmotion:"Эмоция",providerDiarize:"Разделение говорящих",providerFormatText:"Форматировать расшифровку",providerTagAudioEvents:"Отмечать аудиособытия",optionEnabled:"Включено",optionDisabled:"Выключено",nativeProvider:"Нативный провайдер Hermes",selectNativeProvider:"Выбрать нативный провайдер Hermes",useHermesStudioProvider:"Использовать провайдер Hermes Studio",presetElevenLabsTtsLabel:"ElevenLabs TTS",presetGeminiTtsLabel:"Gemini TTS",presetXaiTtsLabel:"xAI TTS",presetMistralTtsLabel:"Mistral TTS",presetMinimaxTtsLabel:"MiniMax TTS",presetDeepInfraTtsLabel:"DeepInfra TTS",presetMistralSttLabel:"Mistral STT",presetXaiSttLabel:"xAI STT",presetElevenLabsSttLabel:"ElevenLabs STT",presetDeepInfraSttLabel:"DeepInfra STT",noneSelected:"Ничего не выбрано",keyStored:"Сохранен",keyMissing:"Отсутствует",customApi:"API",localBuiltin:"Локальный встроенный",ttsCardHint:"Провайдер синтеза речи",sttCardHint:"Провайдер распознавания речи",setActive:"Сделать активным",testAction:"Тест",connect:"Подключить",presetEdgeTtsLabel:"Edge TTS",presetEdgeTtsDescription:"Бесплатные облачные голоса высокого качества от Microsoft Edge.",presetOpenaiTtsLabel:"OpenAI TTS",presetMimoTtsLabel:"MiMo TTS",presetDoubaoTtsLabel:"Volcengine Doubao TTS",presetCustomTtsLabel:"Пользовательский TTS",presetBrowserSttLabel:"STT браузера",presetBrowserSttDescription:"Нативная API распознавания речи браузера.",presetOpenaiWhisperLabel:"OpenAI Whisper",presetGroqSttLabel:"Groq STT",presetDoubaoSttLabel:"Volcengine Doubao STT",presetCustomSttLabel:"Пользовательский STT",apiCompatibility:"Совместимость API",openaiCompatible:"Совместимо с OpenAI",manualCustomEndpoint:"Ручной пользовательский endpoint",connectionStep:"Подключение",discoveryManualHint:"Выбран ручной пользовательский endpoint. Автообнаружение моделей недоступно; введите имя модели вручную.",discoveryCredentialHint:"Введите Base URL и API key, затем подключитесь, чтобы получить доступные модели.",discoveryNoAutoProbeHint:"При вводе запросы не отправляются. Нажмите Connect, когда данные готовы.",apiKeyConnectPlaceholder:"Вставьте API key для подключения; сохранённые ключи никогда не показываются",connectFetchModels:"Подключить и получить модели",modelRecommendedSuffix:"рекомендуется",modelConnectManualHint:"Подключитесь для автозаполнения или введите вручную.",modelRequiredConnectManual:"Модель обязательна. Подключитесь для автозаполнения или введите вручную.",apiKeyRequired:"API key обязателен.",apiKeyRequiredForDiscovery:"API key обязателен для получения моделей.",baseUrlRequired:"Base URL обязателен.",baseUrlHttpsRequired:"Используйте http:// или https://.",baseUrlInvalid:"Введите корректный Base URL, включая https://.",discoveryFailedManualFallback:"Не удалось получить модели. Вы всё ещё можете ввести имя модели вручную.",completeRequiredProviderFields:"Заполните обязательные поля provider перед сохранением.",fetchingModels:"Получение моделей...",recommendedModel:"Рекомендуется: {model}.",useRecommendedModel:"Использовать эту.",modelsDiscovered:"Найдено моделей: {count}. Если поле пустое, выбирается рекомендуемая модель.",remove:"Удалить",testSuccess:"Тест завершен",testTextRequired:"Введите текст перед тестом.",keyMissingForTest:"Добавьте API-ключ перед тестом этого провайдера.",testing:"Тестирование...",transcribing:"Распознавание...",browserSttTestHint:"STT браузера тестируется через микрофон чата.",sttEmptyAudio:"Аудио не было записано. Попробуйте еще раз.",sttTestSuccess:"Распознавание завершено",sttRecordingHint:"Запись... нажмите Остановить, чтобы распознать.",keepStoredKeyPlaceholder:"Оставьте пустым, чтобы сохранить текущий ключ",apiKeyPlaceholder:"Введите API-ключ",lastTest:"Последний тест",notTested:"—",recording:"Запись",testFailedShort:"Ошибка",testFailedSummary:"Тест не удался. Проверьте настройки провайдера и повторите попытку.",showDetails:"Показать детали",hideDetails:"Скрыть детали",moreActions:"Еще",moreActionsFor:"Дополнительные действия для {provider}",addTtsApi:"Добавить TTS API",addSttApi:"Добавить STT API",active:"Активно",builtin:"Встроенный",connected:"Подключено",disconnected:"Отключено",source:"Источник",model:"Модель",voice:"Голос",doubaoVoiceHint:"Выберите голос Seed TTS 2.0; поле ресурса обновится автоматически.",apiKey:"API-ключ",confirmDeleteSecret:"Удалить сохраненный API-ключ для этой голосовой API?",ttsTitle:"Текст в речь",ttsSaved:"Настройки TTS сохранены на сервере",ttsSaveFailed:"Не удалось сохранить настройки TTS",ttsTestSaved:"Прослушивание успешно; настройки TTS сохранены на сервере",ttsTestSaving:"Сохранение настроек TTS перед прослушиванием...",ttsMissingBaseUrl:"Base URL требуется перед тестом. Введите endpoint провайдера и повторите тест.",ttsMissingApiKey:"API-ключ требуется перед тестом. Вставьте ключ или сначала сохраните серверный ключ.",ttsCleared:"Сохраненный TTS-ключ удален",ttsClearFailed:"Не удалось удалить сохраненный TTS-ключ",storedBaseUrlsTitle:"Сохранённые Base URLs",storedBaseUrlsHint:"Сохранённые endpoint голосовых providers. Поля выше только очищают текущее значение; сохранённые URL удаляются здесь.",storedBaseUrlsEmpty:"На сервере нет сохранённых пользовательских голосовых Base URL.",storedBaseUrlDelete:"Удалить URL",storedApiKeysTitle:"Сохранённые API keys",storedApiKeysHint:"Список голосовых API key, сохранённых на сервере. Показываются только назначение и источник; полный key не отображается.",storedApiKeysEmpty:"На сервере нет сохранённых голосовых API key.",storedKeyKindTts:"TTS",storedKeyKindStt:"STT",storedApiKeyMasked:"[stored]",storedApiKeyDelete:"Удалить key",baseUrlPresetClear:"Очистить URL",baseUrlPresetCleared:"Base URL очищен в поле.",baseUrlPresetDelete:"Удалить URL",baseUrlPresetDeleted:"Base URL удалён из сохранённого списка.",baseUrlPresetDeleteFailed:"Не удалось удалить сохранённый Base URL.",ttsPendingSecret:"Новый ключ будет сохранен",ttsStoredSecret:"На сервере сохранен ключ: {value}",ttsClearKey:"Удалить сохраненный ключ",sttTitle:"Речь в текст",sttProvider:"Провайдер STT",sttProviderHint:"Выберите способ распознавания голосового ввода",sttProviderBrowser:"Браузер",sttProviderOpenai:"Совместимо с OpenAI",sttProviderCustom:"Пользовательский",sttBrowserHint:"Использовать встроенное распознавание речи браузера, если доступно.",sttApiKey:"API-ключ",sttApiKeyHint:"Сохраняется на сервере для STT-провайдеров, которым нужна аутентификация.",sttStoredSecret:"Сохраненный серверный ключ: {value}",sttPendingSecret:"Сохраненный серверный ключ: будет обновлен при сохранении",sttClearKey:"Удалить сохраненный ключ",sttModel:"Модель",sttModelHint:"Модель распознавания речи для использования.",sttLanguage:"Язык",sttLanguageHint:"Необязательная подсказка языка, например en или zh.",sttPrompt:"Промпт",sttPromptHint:"Необязательный промпт для распознавания.",sttAudioTranscode:"Перекодирование аудио",sttAudioTranscodeNone:"Отправлять исходное аудио",sttAudioTranscodeFfmpeg:"Конвертировать в WAV через ffmpeg",sttBaseUrl:"Base URL",sttBaseUrlHint:"Пользовательский OpenAI-совместимый endpoint распознавания речи.",sttSave:"Сохранить настройки STT",sttSaved:"Настройки STT сохранены на сервере.",sttSaveFailed:"Не удалось сохранить настройки STT.",sttCleared:"Сохраненный STT-секрет удален с сервера.",sttClearFailed:"Не удалось удалить сохраненный STT-секрет.",sttActiveSaved:"Активный STT-провайдер сохранен на сервере.",sttSaveActive:"Сохранить активный STT-провайдер",sttEndpointHint:"Итоговый endpoint распознавания: {endpoint}",sttTestTitle:"Тест речи в текст",sttTestButton:"Тестировать STT API",sttTestStopButton:"Остановить и распознать",sttTestBackendOnly:"Тест STT API доступен для OpenAI-совместимых и пользовательских провайдеров.",sttTestRecording:"Запись тестового образца... нажмите Остановить и распознать, когда закончите.",sttTestTranscribing:"Распознавание тестового образца...",sttTestEmpty:"Для STT-теста не было записано аудио.",sttTestSucceeded:"STT-тест успешен.",sttTestFailed:"STT-тест не удался: {error} — {hint}",sttFailureHintMissingConfig:"Перед тестом проверьте, что провайдер сохранен с Base URL/моделью и API-ключом.",sttFailureHintAuth:"Проверьте API-ключ. Если ключ уже был сохранен, вставьте текущий ключ снова и сохраните перед тестом.",sttFailureHintForbidden:"Ключ дошел до провайдера, но не имеет разрешения для этой STT-модели или аккаунта. Проверьте доступ/оплату у провайдера.",sttFailureHintEndpointModel:"Проверьте Base URL и модель. Для Groq используйте {endpoint} с whisper-large-v3-turbo или другой STT-моделью Groq.",sttFailureHintModel:"Проверьте, что выбранная STT-модель существует и включена для этого аккаунта.",sttFailureHintQuota:"Провайдер сообщает о проблемах с квотой, оплатой или лимитом запросов. Проверьте квоту/оплату или повторите позже.",sttFailureHintNetworkCustom:"Сервер не смог обратиться к пользовательскому STT endpoint. Проверьте, что {endpoint} доступен с сервера Web UI и совместим с OpenAI.",sttFailureHintNetwork:"Сервер Web UI не смог обратиться к STT-провайдеру. Проверьте сеть/прокси/фаервол и повторите.",sttFailureHintAudio:"Записанное аудио пустое или отклонено. Попробуйте короткий четкий образец, разрешите доступ к микрофону или повторите в Chrome.",sttFailureHintGenericCustom:"Проверьте API-ключ, Base URL, модель и итоговый endpoint {endpoint}.",sttFailureHintGeneric:"Проверьте API-ключ, модель и доступ аккаунта провайдера, затем повторите.",sttTestRecordFailed:"Не удалось начать запись микрофона: {error}",sttTestTranscript:"Текст: {text}",ttsProvider:"Провайдер TTS",ttsProviderHint:"Выберите движок для озвучивания сообщений",providerWebSpeech:"WebSpeech API (встроенный в браузер)",providerOpenai:"OpenAI TTS",providerCustom:"Пользовательская конечная точка (совместимая с OpenAI)",providerEdge:"Edge TTS (бесплатно, не требует API-ключа)",providerMimo:"MiMo TTS",webspeechVoice:"Тембр",webspeechVoiceHint:"Выберите голос из предложенных браузером или системой",webspeechVoicePlaceholder:"Автоматический (голос по умолчанию)",openaiKey:"API-ключ",openaiKeyHint:"API-ключ OpenAI с правами TTS",openaiUrl:"Базовый URL API",openaiUrlHint:"Например, https://api.openai.com/v1/audio/speech",openaiModel:"Модель",openaiModelHint:"tts-1 (быстрая) / tts-1-hd (высокое качество)",openaiVoice:"Тембр",openaiVoiceHint:"Тембр для синтеза речи",customHint:"Поддерживается любая служба TTS, совместимая с OpenAI, включая GPT-SoVITS, CosyVoice и т.п.",customUrl:"URL API",customUrlHint:"Полный базовый URL службы TTS",customUrlPlaceholder:"Адрес, указанный в локальном адаптере, например http://127.0.0.1:9880",customApiKey:"API-ключ (необязательно)",customApiKeyHint:"Некоторые саморазвёрнутые службы требуют аутентификации",customApiKeyPlaceholder:"Оставьте пустым, если не требуется",edgeHint:"Работает на движке Microsoft Edge TTS (node-edge-tts).",edgeUrl:"Адрес адаптера",edgeUrlHint:"Адрес адаптера Edge TTS, например http://127.0.0.1:9882",edgeUrlPlaceholder:"http://127.0.0.1:9882",edgeVoice:"Тембр",edgeVoiceHint:"Выберите тембр для синтеза речи",edgeRate:"Скорость речи",edgeRateHint:"Регулировка скорости речи (0.5–2.0)",edgePitch:"Высота тона",edgePitchHint:"Регулировка высоты тона (–20 … +20 Гц)",testTitle:"Тестовое прослушивание",testText:"Тестовый текст",testTextPlaceholder:"Введите тестовый текст...",testTextDefault:"Здравствуйте, это тест голоса.",testButton:"Прослушать",testButtonPlaying:"Воспроизведение...",testFailed:"Ошибка теста: {error}",mimoHint:"MiMo TTS от Xiaomi. Поддерживает три режима: предустановленные тембры, дизайн тембра и клонирование тембра.",mimoApiKey:"API-ключ",mimoApiKeyHint:"Получите его на platform.xiaomimimo.com",mimoApiKeyPlaceholder:"API-ключ MiMo",mimoBaseUrl:"Базовый URL",mimoBaseUrlHint:"Конечная точка API MiMo",mimoModel:"Модель",mimoModelHint:"Выберите модель синтеза речи",mimoModelPreset:"Предустановленный тембр",mimoModelVoiceDesign:"Дизайн тембра",mimoModelVoiceClone:"Клонирование тембра",mimoVoice:"Тембр",mimoVoiceHint:"Выберите предустановленный тембр",mimoVoiceDesignPrompt:"Описание тембра",mimoVoiceDesignPromptHint:"Опишите желаемые характеристики тембра",mimoVoiceDesignPromptPlaceholder:"Например: мягкий молодой женский голос, слегка замедленный, с хрипотцой",mimoCloneAudio:"Загрузить аудио",mimoCloneAudioHint:"Загрузите аудиообразец для клонирования тембра. Поддерживаются mp3/wav, максимум 10 МБ",mimoCloneAudioUpload:"Выбрать файл",mimoCloneAudioClear:"Очистить аудио",mimoStylePrompt:"Стилевая инструкция",mimoStylePromptHint:"Необязательно. Опишите желаемый стиль речи естественным языком",mimoStylePromptPlaceholder:"Например: используйте лёгкий, приподнятый тон, темп речи чуть выше среднего"}},platform:{requireMention:"Требуется упоминание {'@'}",requireMentionGroup:"В группе требуется упоминание {'@'}бота для ответа",requireMentionChannel:"В канале требуется упоминание {'@'}бота для ответа",requireMentionRoom:"В комнате требуется упоминание {'@'}бота для ответа",reactions:"Реакции",reactionsHint:"Добавлять реакции на сообщения",freeResponseChats:"Чаты со свободным ответом",freeResponseChatsHint:"ID чатов, в которых не требуется упоминание {'@'} (через запятую)",freeResponseChannels:"Каналы со свободным ответом",freeResponseChannelsHint:"ID каналов, в которых не требуется упоминание {'@'} (через запятую)",freeResponseRooms:"Комнаты со свободным ответом",freeResponseRoomsHint:"ID комнат, в которых не требуется упоминание {'@'} (через запятую)",mentionPatterns:"Пользовательские шаблоны упоминаний",mentionPatternsHint:"Дополнительные шаблоны для срабатывания",autoThread:"Автоматически создавать ветку",autoThreadHint:"Автоматически создавать ветку для ответа после упоминания {'@'}",autoThreadHintRoom:"Автоматически создавать ветку для ответа в комнате",dmMentionThreads:"Ветки для упоминаний в ЛС",dmMentionThreadsHint:"Использовать ветки для ответов на упоминания в личных сообщениях",allowBots:"Разрешить сообщения ботов",allowBotsHint:"Отвечать на сообщения от других ботов",allowedChannels:"Разрешённые каналы",allowedChannelsHint:"Белый список ID каналов (через запятую)",ignoredChannels:"Игнорируемые каналы",ignoredChannelsHint:"Каналы, на которые не отвечать (через запятую)",noThreadChannels:"Каналы без веток",noThreadChannelsHint:"Каналы, в которых не создавать ветки (через запятую)",exclusiveTokenWarning:"Эта платформа использует эксклюзивную блокировку токенов. Каждый профиль должен использовать свой токен, иначе возникнут конфликты с другими профилями, и шлюз не запустится.",clearCredentials:"Очистить учетные данные",clearCredentialsConfirm:"Удалить сохраненные учетные данные канала «{name}»? Поведение канала и настройки доступа будут сохранены.",credentialsCleared:"Учетные данные канала очищены",clearCredentialsFailed:"Не удалось очистить учетные данные канала",clearCredentialsUnsaved:"Перед очисткой учетных данных сохраните или отмените несохраненные изменения канала.",clearCredentialsGatewayRestartFailed:"Учетные данные очищены, но шлюз не удалось перезапустить автоматически.",clearCredentialsGatewayRestartDisabled:"Учетные данные очищены, но автоматический перезапуск шлюза отключен. Перезапустите шлюз вручную.",botToken:"Токен бота",botTokenHint:"Токен бота, полученный на портале разработчика",proxyUrl:"URL прокси",proxyUrlHint:"Необязательный прокси для платформы. Поддерживает http://, https:// и socks5://",accessToken:"Токен доступа",accessTokenHint:"Токен доступа Matrix",homeserver:"URL домашнего сервера",homeserverHint:"Адрес сервера Matrix",matrixUserId:"ID пользователя Matrix",matrixUserIdHint:"Обязателен для входа по паролю, необязателен с токеном",matrixPassword:"Пароль Matrix",matrixPasswordHint:"Альтернатива токену доступа",appId:"ID приложения",appIdHint:"ID приложения Feishu",appSecret:"Секрет приложения",appSecretHint:"Секрет приложения Feishu",encryptKey:"Ключ шифрования",encryptKeyHint:"Ключ шифрования Feishu",verificationToken:"Токен проверки",verificationTokenHint:"Токен проверки Feishu",clientId:"ID клиента",clientIdHint:"ID клиента DingTalk",clientSecret:"Секрет клиента",clientSecretHint:"Секрет клиента DingTalk",cardTemplateId:"ID шаблона AI-карточки",cardTemplateIdHint:"ID шаблона AI-карточки DingTalk; оставьте пустым, чтобы отключить AI-карточки",allowedUsers:"Разрешённые пользователи",allowedUsersHint:"Белый список ID пользователей или OpenID (через запятую)",allowAllUsers:"Разрешить всех пользователей",allowAllUsersHint:"Разрешить любым пользователям отправлять сообщения; при отключении используется белый список",botId:"ID бота",botIdHint:"ID бота WeCom",wecomSecretHint:"Секрет бота WeCom",waEnabled:"Включить WhatsApp",waEnabledHint:"Включить WhatsApp с помощью пары по QR-коду",weixinToken:"Токен Weixin",weixinTokenHint:"Получите с помощью CLI (hermes weixin) при входе по QR-коду",accountId:"ID учётной записи",accountIdHint:"ID учётной записи Weixin",qrLogin:"Вход по QR-коду",qrRelogin:"Войти снова",qrFetching:"Получение QR-кода...",qrScanHint:"Отсканируйте QR-код с помощью WeChat для входа",qrScanedHint:"QR-код отсканирован. Подтвердите на телефоне...",qqAppId:"ID приложения",qqAppIdHint:"ID приложения бота QQ Open Platform",qqAppSecret:"Секрет приложения",qqAppSecretHint:"Секрет приложения бота QQ Open Platform",qqMarkdown:"Поддержка Markdown",qqMarkdownHint:"Включить сообщения в формате Markdown (может не поддерживаться некоторыми клиентами)",qqSandbox:"Режим песочницы",qqSandboxHint:"Включить песочницу (для тестирования)",qqQrScanHint:"Отсканируйте QR-код с помощью QQ или откройте ссылку на телефоне, чтобы завершить привязку"},gateways:{title:"Шлюзы",running:"Работает",stopped:"Остановлен",started:"Запущен",startFailed:"Ошибка запуска",stopFailed:"Ошибка остановки"},language:{label:"Язык",zh:"Китайский",en:"Английский",ru:"Русский"},terminal:{sessions:"Сеансы",newTab:"Новая вкладка терминала",closeSession:"Завершить этот сеанс?",sessionExited:"Выход выполнен",processExited:"Процесс завершён с кодом {code}",noSessions:"Нет активных сеансов терминала",connectionFailed:"Не удалось подключиться к службе терминала",connectionClosed:"Соединение с терминалом закрыто",connectionError:"Ошибка соединения с терминалом"},groupChat:{agentLinkButton:"Добавить своего Agent",agentOwner:"Владелец: {name}",agentLinkTitle:"Добавить Agent в эту комнату",agentLinkDescription:"Подключите собственный сервис Hermes. Сервис устанавливает исходящее зашифрованное соединение; комната не получает данные для входа или доступ к рабочей области.",agentLinkTargetUrl:"URL вашего сервиса Hermes",agentLinkTargetPlaceholder:"http://127.0.0.1:8748 or https://your-hermes.example.com",agentLinkTargetRequired:"Введите URL сервиса Hermes.",agentLinkInvalidTarget:"Введите источник HTTP или HTTPS без учётных данных, пути, параметров запроса и фрагмента.",agentLinkOpenTarget:"Войти и выбрать Agent",agentLinkPopupBlocked:"Окно авторизации заблокировано. Разрешите всплывающие окна для этой страницы и повторите попытку.",agentLinkParentUnavailable:"Окно авторизации потеряло связь со страницей приглашения. Закройте его и начните снова.",agentLinkParentUnconfirmed:"Страница приглашения не подтвердила запрос. Оставьте её открытой и перезапустите авторизацию.",agentLinkIncompleteConfiguration:"Перед запросом доступа выберите Profile, поставщика и модель.",agentLinkWaitingApproval:"Ожидание одобрения Agent владельцем комнаты…",agentLinkApproved:"Одобрено. Подключение Agent…",agentLinkConnected:"Ваш Agent подключён к комнате.",agentLinkError:"Не удалось подключить этот Agent.",agentLinkRejected:"Владелец комнаты отклонил запрос на подключение Agent.",agentLinkExpired:"Запрос на подключение Agent истёк. Создайте новый запрос.",agentLinkPairingCode:"Код ручного сопряжения",agentLinkPairingCodeHint:"Если окно авторизации не может связаться с этой страницей, вставьте в него этот краткосрочный код.",agentLinkCopyCode:"Копировать код сопряжения",agentLinkAuthorizeTitle:"Авторизация Agent для группового чата",agentLinkAuthorizeDescription:"Выберите локальный Agent для подключения. Группа сможет отправлять ему сообщения, но не получит доступ к вашей локальной рабочей области.",agentLinkSelectAgent:"Agent",agentLinkRequestConnection:"Запросить подключение",agentLinkOrPairingCode:"или использовать код ручного сопряжения",agentLinkPairingCodePlaceholder:"Вставьте код сопряжения HGC1",agentLinkConnect:"Подключить Agent",agentLinkSecurityHint:"Одобряйте только знакомые комнаты. Токен сопряжения одноразовый и скоро истечёт.",agentLinkLoadFailed:"Не удалось загрузить локальные Agents.",agentLinkConnectFailed:"Не удалось подключить выбранный Agent.",agentLinkInvalidPairingCode:"Недействительный код сопряжения.",agentLinkClose:"Закрыть",agentLinkApprovalMismatch:"После одобрения запрос на подключение изменился. Проверьте Agent и повторите попытку.",guestAgentsDisabled:"Владелец комнаты не включил гостевые Agents.",guestAgentSettings:"Подключения гостевых Agents",allowGuestAgents:"Разрешить участникам добавлять своих Agents",maxGuestAgentsPerMember:"Максимум Agents на участника",ownerApprovalHint:"Каждый Agent по-прежнему требует явного одобрения владельца комнаты.",allowRemoteWorkspaceAccess:"Разрешить удалённым Agents чтение и запись в рабочей области группы",remoteWorkspaceAccessHint:"После включения одобренные удалённые Agents получают краткосрочный доступ на время каждого запуска. Секретные файлы и внешние пути остаются заблокированы.",agentPairingRequestTitle:"Запрос на подключение Agent",agentPairingRequestDescription:"{user} хочет подключить Agent из {origin}.",approveAgent:"Одобрить Agent",rejectAgent:"Отклонить",agentPairingApproved:"Подключение Agent одобрено",agentPairingRejected:"Подключение Agent отклонено",title:"Групповой чат",refactorNoticeTitle:"Обновление группового чата",refactorNoticeMessage:"Групповой чат был значительно переработан. Если в комнате не удаётся общаться, создайте новую комнату.",emptyState:"Начните групповой разговор",createRoom:"Создать комнату",joinByCode:"Присоединиться по коду-приглашению",shareTitle:"Присоединиться к групповому чату",shareSubtitle:"Введите код приглашения — вход в аккаунт не требуется.",shareCodeHint:"Это приглашение предоставляет доступ только к соответствующей комнате.",shareInvalidCode:"Код недействителен или был обновлён. Попросите отправителя прислать новую ссылку.",shareJoining:"Входим в групповой чат…",shareNameSubtitle:"Выберите имя перед входом в комнату.",shareNameConflict:"Это имя уже используется в комнате. Выберите другое.",shareNameReserved:"Это имя зарезервировано. Выберите другое.",shareEnterRoom:"Войти в комнату",roomName:"Название комнаты",roomNamePlaceholder:"Введите название комнаты",inviteCode:"Код-приглашение",inviteCodeSettings:"Настройки кода приглашения",inviteCodePlaceholder:"Введите новый код приглашения",generateInviteCode:"Сгенерировать код приглашения",inviteCodeRotateHint:"После обновления старый код нельзя использовать для новых участников.",inviteCodeUpdated:"Код приглашения обновлен",inviteCodeUpdateFailed:"Не удалось обновить код приглашения",autoGenerate:"Сгенерировать автоматически",noRooms:"Нет комнат",localRooms:"Локальные",remoteRooms:"Удалённые",remoteRoomOffline:"Удалённое подключение не в сети.",renameRemoteRoom:"Переименовать удалённую комнату",renameRemoteRoomHint:"Изменяется только имя, отображаемое на этом устройстве.",remoteRoomRenamed:"Отображаемое имя удалённой комнаты обновлено",remoteRoomRenameFailed:"Не удалось обновить отображаемое имя удалённой комнаты",leaveRemoteRoom:"Выйти из комнаты",leaveRemoteRoomConfirm:"Выйти из «{name}»? Все Agents, подключённые с этого устройства, будут удалены из удалённой комнаты, а локальные записи подключений — удалены.",remoteRoomLeft:"Вы вышли из удалённой комнаты",remoteRoomLeaveFailed:"Не удалось выйти из удалённой комнаты",remoteRoomLeavePartial:"Локальные записи удалены, но {count} подключений Agent не удалось уведомить, поскольку удалённая комната была не в сети.",selectOrCreate:"Выберите или создайте комнату, чтобы начать чат",agents:"Агенты",allAgents:"Все Agents",addAgent:"Добавить агента",agentType:"Агент",agentTypes:{hermes:"Hermes",ekko:"Ekko",codex:"Codex",claude:"Claude"},selectProfile:"Выберите профиль",agentAdded:"Агент добавлен",selectRoomFirst:"Сначала выберите комнату",agentAlreadyInRoom:"Агент уже в комнате",agentAddFailedCount:"Не добавлено агентов: {count} — {details}",editAgentTitle:"Изменить {name}",removeMember:"Исключить",memberRemoved:"{name} исключён из комнаты",memberRemovedNotice:"Владелец исключил вас из комнаты. Пока приглашение действует, вы можете войти снова.",noAgents:"В комнате нет агентов",members:"Участники: {count}",roomCreated:"Комната создана",roomDeleted:"Комната удалена",roomCloned:"Комната клонирована",cloneRoom:"Клонировать комнату",copyRoomLink:"Копировать ссылку на комнату",manualCopyRoomLinkHint:"Браузер не смог скопировать ссылку автоматически. Выделите её и скопируйте вручную.",deleteRoomConfirm:"Удалить эту комнату?",clearContext:"Очистить контекст",clearContextConfirm:"Очистить контекст текущей комнаты? Сообщения и сжатые снимки будут удалены, агенты и участники останутся.",contextCleared:"Контекст очищен",you:"Вы",joined:"Вы присоединились к комнате",joinFailed:"Не удалось присоединиться к комнате",inputPlaceholder:"Введите сообщение... (Enter — отправить)",messageDisplayLimit:"Групповой чат показывает не более 600 сообщений",enterCode:"Введите код-приглашение",yourName:"Ваше имя",yourNamePlaceholder:"Введите ваш ник в групповом чате",yourDescription:"Самоописание (необязательно)",yourDescriptionPlaceholder:"Расскажите о себе...",agentName:"Имя агента",agentNamePlaceholder:"Пользовательское имя (оставьте пустым для использования имени профиля)",agentDesc:"Описание агента",agentDescPlaceholder:"Опишите роль этого агента...",agentReplying:"Ответ агента...",agentCompressing:"Сжатие контекста...",compressionSettings:"Настройки сжатия",triggerTokens:"Количество токенов для запуска сжатия",triggerTokensDesc:"Сжатие контекста запускается, когда количество токенов в сообщениях превышает это значение",maxHistoryTokens:"Максимум токенов в истории",maxHistoryTokensDesc:"Максимальное количество токенов, отправляемое LLM после сжатия",tailMessageCount:"Количество последних сохраняемых сообщений",tailMessageCountDesc:"Количество последних исходных сообщений, сохраняемых после сжатия",compressionConfig:"Конфигурация сжатия",compressionSaved:"Конфигурация сжатия сохранена",roomSettings:"Настройки комнаты",saveCompression:"Сохранить сжатие",compressNow:"Сжать сейчас",compressingInProgress:"Выполняется сжатие, пожалуйста, подождите",summarySettings:"Накопительное резюме",summarySettingsDesc:"Чистый Ekko Agent обновляет общее резюме комнаты через заданное число сообщений людей.",summaryProvider:"Провайдер резюме",summaryProviderPlaceholder:"Выберите провайдера",summaryModel:"Модель резюме",summaryModelPlaceholder:"Выберите модель",summaryApiMode:"Режим API",summaryEveryTurns:"Резюмировать каждые N ходов",summaryEveryTurnsDesc:"Один ход — одно сообщение человека.",summaryConfigSaved:"Настройки резюме сохранены",summaryConfigurationRequired:"Для этой комнаты ещё не настроен суммаризатор. Выберите профиль, провайдера, модель и режим API, затем сохраните.",summaryConfigurationOwnerRequired:"Для этой комнаты ещё не настроен суммаризатор. Попросите администратора настроить его перед отправкой сообщений.",saveSummaryConfig:"Сохранить настройки",currentSummary:"Текущее резюме",summaryStatus:{idle:"Ожидание",summarizing:"Создание резюме",success:"Успешно",failed:"Ошибка"},summaryUpdatedAt:"Последнее обновление",summarizedTurns:"Обработано ходов",summaryAnchor:"Якорь резюме",summaryMessagesAbove:"Сообщения выше суммированы",summaryNoAnchor:"Якоря пока нет",summaryContent:"Текст резюме",summaryEmpty:"Резюме пока нет",summaryEditKeepsAnchor:"Редактирование текста не перемещает текущий якорь.",saveSummary:"Сохранить резюме",summaryUpdated:"Резюме обновлено",summaryNever:"Никогда",summaryLoadFailed:"Не удалось загрузить резюме комнаты"},usage:{title:"Статистика использования",refresh:"Обновить",totalTokens:"Всего токенов",inputTokens:"Входящие",outputTokens:"Исходящие",totalSessions:"Всего сеансов",avgPerDay:"В среднем за день ~{n}",estimatedCost:"Примерная стоимость",cacheHitRate:"Попадания в кэш",modelBreakdown:"Распределение по моделям",agentBreakdown:"Распределение по агентам",agents:{hermes:"Hermes Agent",claudeCode:"Claude Code",codex:"Codex",ekkoAgent:"Ekko Agent",unknown:"Неизвестно"},dailyTrend:"Ежедневная динамика",date:"Дата",tokens:"Токены",cache:"Кэш",cacheRead:"Чтение из кэша",cacheWrite:"Запись в кэш",sessions:"Сеансы",cost:"Стоимость",noData:"Нет данных об использовании"},skillsUsage:{title:"Использование навыков",subtitle:"Отслеживание загрузки и редактирования навыков в сеансах Hermes",refresh:"Обновить",periodSelector:"Период использования навыков",periodLabel:"{days} дн.",summary:"Обзор",totalActions:"Действий",loads:"Загрузок",edits:"Правки",distinctSkills:"Навыков",topSkills:"Популярные",dailyTrend:"Динамика по дням",periodSummary:"За последние {days} дн.",skill:"Навык",share:"Доля",lastUsed:"Последний",noData:"Нет данных об использовании навыков",loadFailed:"Ошибка загрузки данных об использовании навыков",otherSkills:"Другие навыки"},files:{title:"Файлы",fileTree:"Древо файлов",tree:"Древо каталогов",list:"Список файлов",breadcrumbRoot:"Корневая директория",newFile:"Новый файл",newFolder:"Новая папка",upload:"Загрузить",refresh:"Обновить",open:"Открыть",edit:"Редактировать",preview:"Предпросмотр",download:"Скачать",copyPath:"Копировать путь",attachToChat:"Добавить в чат",attachFailed:"Не удалось добавить файл в чат",rename:"Переименовать",delete:"Удалить",name:"Имя",size:"Размер",modified:"Время изменения",actions:"Действия",emptyDir:"Папка пуста",loading:"Загрузка...",confirmDelete:"Удалить «{name}»?",confirmDeleteDir:"Удалить папку «{name}» со всем содержимым?",deleteFailed:"Ошибка удаления",deleted:"Удалено",renameTo:"Переименовать в",newFileName:"Имя файла",newFolderName:"Имя папки",created:"Создано",createFailed:"Ошибка создания",renamed:"Переименовано",renameFailed:"Ошибка переименования",uploadSuccess:"Загружено файлов: {count}",uploadFailed:"Ошибка загрузки",saveFailed:"Ошибка сохранения",saved:"Сохранено",unsavedChanges:"Есть несохранённые изменения. Отменить?",pathCopied:"Путь скопирован",fileTooLarge:"Файл слишком большой (максимум 10 МБ)",permissionDenied:"Невозможно изменить защищённый файл",notFound:"Файл или папка не найдены",backendError:"Ошибка файловой операции",dragDropHint:"Перетащите файлы сюда для загрузки",closeEditor:"Закрыть редактор",closePreview:"Закрыть",saveFile:"Сохранить",previewMode:"Просмотр",sourceMode:"Исходный код",tableMode:"Таблица",worksheet:"Лист",htmlPreviewTitle:"Изолированный просмотр HTML",previewLoading:"Загрузка предпросмотра...",previewFailed:"Предпросмотр недоступен",previewMimeMismatch:"Тип файла не соответствует выбранному формату предпросмотра.",downloadInstead:"Скачать файл",previousPage:"Назад",nextPage:"Далее",pageStatus:"Страница {page} из {total}",zoom:"Масштаб",pdfPageLimit:"Доступны первые {count} страниц.",tableTruncated:"Предпросмотр сокращён для сохранения отзывчивости интерфейса. Скачайте файл, чтобы увидеть все строки и столбцы."},download:{downloading:"Скачивание...",downloadFailed:"Ошибка скачивания",fileNotFound:"Файл не существует или был удалён",fileTooLarge:"Файл слишком большой (превышает лимит)",backendError:"Не удалось прочитать файл. Возможно, удалённое окружение недоступно",backendTimeout:"Таймаут чтения файла",unsupportedBackend:"Текущий терминальный бэкенд не поддерживает загрузку файлов",invalidPath:"Недействительный путь к файлу",contentDisplay:"Отображение содержимого",download:"Скачать",downloadFile:"Скачать файл"},changelog:{new_0_6_41_1:"Локальный STT теперь надёжно работает в Hermes Web UI, установленном через npm: нативные среды sherpa-onnx для macOS, Windows и Linux закреплены на той же версии, что и обёртка Node.js (#2464)",new_0_6_40_1:"В этот выпуск вошли все 40 PR после v0.6.39: безопасные удалённые групповые комнаты, локальное распознавание речи, расписания Workflow, глобальные подтверждения, вебхуки Chat Run, MCU и надёжность Coding Agent",new_0_6_40_2:"В групповом чате появились защищённые общие комнаты и удалённые Agents, стабилизированы передача, присутствие и отзыв Agent, сохранение аватаров офлайн-владельцев и ручное копирование ссылки без API буфера обмена (#2408, #2410, #2411, #2415, #2423)",new_0_6_40_3:"Удалённые Agents могут передавать файлы и загружать их в облачные workspaces. Для запросов не от владельца усилены границы workspace, конфиденциальных данных и личной памяти, а маршрутизация владельца и подтверждений исправлена (#2413, #2430, #2433, #2435)",new_0_6_40_4:"Групповой чат больше не переносит старые Agent Links и разделяет сворачиваемые списки локальных и удалённых комнат, поддерживая локальные псевдонимы, переход на страницу общего доступа и полную очистку при выходе (#2424, #2459)",new_0_6_40_5:"История группового чата больше не обрезается автоматически. Результаты инструментов с упоминаниями сохраняются с ограниченными ID; исправлены зависшие инструменты, согласование и маршрутизация подтверждений, а также блокировка цикла событий при подсчёте токенов (#2390, #2420, #2426, #2427, #2429, #2445)",new_0_6_40_6:"Отзывы о недавних сессиях и активности группового чата появляются быстрее, а панель инструментов раскрывается с плавной анимацией (#2389, #2414)",new_0_6_40_7:"Глобальные подтверждения принимают уже существующие запросы, показывают более понятный предпросмотр команд и отправляют системные уведомления об ожидающих действиях (#2406, #2425, #2432)",new_0_6_40_8:"Добавлен локальный потоковый STT для китайского и английского на sherpa-onnx: финальная тишина сохраняет последние слова, а совместимые с Electron аудиобуферы работают в macOS и Windows (#2447, #2448, #2461)",new_0_6_40_9:"Workflow получил надёжные запланированные запуски и полный интерфейс создания, изменения, включения, отключения и удаления расписаний (#2434, #2441)",new_0_6_40_10:"Добавлены вебхуки жизненного цикла Chat Run, удалён неиспользуемый старый endpoint, а сервер получил лёгкий endpoint проверки доступности (#2422, #2452, #2453)",new_0_6_40_11:"MCU позволяет выбирать runtime Ekko или Hermes Agent, а аватары Global Agent и индикаторы состояния MCU теперь определяются корректно (#2438, #2442)",new_0_6_40_12:"Coding Agent требует идентификатор выполнения и исправляет изоляцию сохранения запусков в Windows, тайм-ауты MCP, воспроизведение reasoning между моделями, оценку контекста и повторяющиеся инструкции Studio (#2387, #2392, #2395, #2396, #2398, #2416)",new_0_6_40_13:"В пресетах MoA настраивается интенсивность рассуждений для каждой модели, а генерация изображений отключает хранилище Responses, чтобы избежать лишнего удалённого хранения (#2439, #2449)",new_0_6_39_1:"Ekko Agent теперь явно инициализирует ресурсы, выполняет ограниченный код Node.js или Python только после подтверждения инструмента и может приостановить активный запуск для текстового вопроса или выбора варианта, а затем продолжить (#2362, #2368)",new_0_6_39_2:"Group Chat ждёт подтверждения входа в комнату перед отправкой, устраняя редкие ошибки «Not in room» при переподключении. Статус набора передаётся ограниченным heartbeat и показывается только как световая пульсация без текста на аватарах других участников (#2373)",new_0_6_39_3:"События инструментов Coding Agent в Single Chat и Group Chat теперь следуют нативному циклу CLI и отправляют один старт после завершения аргументов, устраняя дубликаты или зависшие карточки и посимвольное обновление JSON в больших комнатах (#2366, #2372)",new_0_6_39_4:"Промпты Coding Agent передаются через stdin, сохраняя многострочный ввод и изображения и обходя ограничение длины команд Windows. Group Chat больше не прерывает активную работу Codex, Claude Code или Ekko по фиксированному двухминутному таймауту (#2354, #2357)",new_0_6_39_5:"Codex использует нативный JSONL и завершение процесса как окончательный статус при восстанавливаемых обрывах прокси Provider, поэтому выполненная работа больше не отображается как ошибка Group Chat (#2375)",new_0_6_39_6:"Управление версиями проверяет целостность Runtime и показывает причину fallback desktop. Недействительный Runtime нельзя активировать, а элементы загрузки и переключения Web UI скрыты, поскольку обновления по-прежнему приходят с desktop-установщиком (#2353)",new_0_6_39_7:"Заголовки запусков Group Chat теперь показывают только имя Agent без повторяющихся описаний, делая группы сообщений компактнее (#2352)",new_0_6_39_8:"Удалённые подключения ESP32-C3 теперь сохраняют Socket.IO во время поиска устройств, повторно используют ограниченные голосовые буферы, переподключаются с задержкой и сохраняют вход при кратковременном отключении Studio, делая удалённый поиск и голосовые запросы быстрее и надёжнее (#2383)",new_0_6_38_1:"При запуске Windows-версия исправляет недействительные относительные пути Python, оставленные обновлением Agent в кэшированной среде Hermes Runtime, восстанавливая CLI, журналы и Gateway после обновления, переключения Runtime или переноса хранилища",new_0_6_38_2:"Каталог совместимости сайта снова распознаёт Hermes 0.19.0, сохраняя доступность соответствующих desktop-загрузок и проверок совместимости (#2348)",new_0_6_37_1:"Главное изменение этого выпуска из 14 PR — полная переработка Group Chat: каждый Agent независимо выбирает Profile, Provider, модель, режим API, уровень рассуждений, личность и workspace (#2334)",new_0_6_37_2:"Комнаты теперь запускают новые изолированные процессы и группируют каждый ответ с его reasoning и инструментами. Добавлены общий редактируемый скользящий итог со статусом и границами, упоминания Agent, панели комнаты/workspace и подсказки по миграции. Автовоспроизведение заранее готовит TTS разных Profile, ограничивает синтез одной задачей на Profile и строго воспроизводит FIFO, поэтому новые ответы не заменяют уже звучащую запись (#2334)",new_0_6_37_3:"MiniMax Coding Plan OAuth поддерживает регионы Global и China, а авторизованные данные Codex, xAI, Anthropic, Nous и MiniMax обновляются через постоянный Runtime Bridge (#2337)",new_0_6_37_4:"ESP32-C3 v1/v2 получили необязательное автоматическое прослушивание с локальным VAD, предварительной записью, завершением по тишине и блокировкой во время воспроизведения при сохранении push-to-talk (#2338)",new_0_6_37_5:"MCU Global Agent теперь использует краткий голосовой режим Ekko, делегирует безопасную фоновую работу, сохраняет историю и workspaces и не отправляет на устройство слишком большие результаты инструментов (#2326)",new_0_6_37_6:"Пользовательские и OpenAI-совместимые TTS автоматически повторяют запрос с форматом, поддерживаемым Provider, и преобразуют не-MP3 вывод для воспроизведения Hermes (#2328)",new_0_6_37_7:"Импорт и экспорт Profiles могут выполняться до десяти минут, показывают понятные таймауты, изолируют параллельные архивы, очищают имена и удаляют временные файлы (#2310, #2324)",new_0_6_37_8:"Hermes Agent Bridge применяет настройки рассуждений для конкретной модели, сохраняя явные переопределения запуска и прежний fallback (#2325)",new_0_6_37_9:"Управление версиями отдельно показывает фактически установленную версию Hermes Agent и путь Runtime, а также поясняет область обновления CLI и необходимость полностью закрыть Studio (#2323)",new_0_6_37_10:"Деревья файлов workspace используют меньшие отступы, чтобы имена в глубоких каталогах оставались видимыми (#2340)",new_0_6_37_11:"Desktop по умолчанию использует Hermes Agent 0.20.0 из закреплённого исходного кода и переносимые Node/npm, принимает пересозданные Windows-launcher, обновляется без системного Python и скрывает управляемый Gateway (#2321, #2344)",new_0_6_37_12:"Миграция хранилища Windows Runtime обрабатывает созданные обновлением ссылки без прав администратора, перенастраивает Python, поддерживает Unicode-пути и обновляет CLI/MCP shim при первом перезапуске (#2345)",new_0_6_37_13:"Подпись desktop для macOS использует отдельный временный keychain, совместимый со строгим режимом runners macOS 26 для обеих архитектур (#2315)",new_0_6_36_1:"Этот выпуск включает все 28 PR, объединённые после 0.6.35: голос, арабский язык и RTL, App Relay, надёжность агентов, удобство чата, Kanban, Journey, субтитры MCU и журнал запросов Ekko",new_0_6_36_2:"Настройки голоса объединены на странице «Модели» для нативных провайдеров Hermes и Web UI; Custom TTS поддерживает выбор голоса, а Edge TTS — любой Voice ID и арабские варианты (#2260, #2265, #2267)",new_0_6_36_3:"Полная поддержка арабского языка и RTL теперь охватывает направление документа, Naive UI, чат, групповой чат, Workflow, оверлеи, панели, направление отдельных блоков и исправленные названия Profile (#2269, #2270, #2271, #2273, #2277, #2294, #2303)",new_0_6_36_4:"Активные фоновые делегирования сохраняют сессию Agent Bridge до завершения работы, поэтому очистка при простое больше не прерывает долгие задачи (#2254)",new_0_6_36_5:"Список агентов группового чата снова доступен по клику на компьютере, а главное окно можно уменьшить до 769 пикселей без перехода в мобильную компоновку (#2259, #2263)",new_0_6_36_6:"Workspace diff от Codex, Claude Code и Ekko теперь показывается только в точном сообщении ассистента, которое его создало, в активных, восстановленных и групповых чатах (#2264)",new_0_6_36_7:"Английский и китайский README обновлены в соответствии с текущим продуктом и CLI, а устаревшее руководство сайта для версии 0.6.12 удалено (#2268)",new_0_6_36_8:"Независимый headless App Relay добавляет безопасное сопряжение и аутентифицированный удалённый доступ к разрешённым локальным API и потоку чата без прямого открытия Studio (#2275)",new_0_6_36_9:"Desktop Agent Browser безопасно читает длинный доступный текст по страницам и активирует элементы, чья ссылка snapshot указывает на видимый текст (#2278)",new_0_6_36_10:"В чате появились закреплённые элементы Provider, восстановление прокрутки по сообщениям, компактные панели инструментов и терминала, полноразмерные предпросмотры и workspace diff на всю ширину (#2279, #2282, #2283, #2293)",new_0_6_36_11:"Новые сессии Ekko получают изолированные по Profile рабочие пространства по умолчанию, а существующие и явно выбранные остаются без изменений (#2289)",new_0_6_36_12:"Результаты одобрения Memory и Skill теперь структурированы и сериализованы, что исключает ложные сообщения об успехе и одновременную запись в одном Profile (#2295)",new_0_6_36_13:"Kanban получил надёжное архивирование задач и перемещаемую доску, а Journey стал компактной детерминированной картой связей Memory со Skill (#2296, #2297)",new_0_6_36_14:"Живой reasoning остаётся стабильным между вызовами инструментов, восстанавливается в правильном сообщении или инструменте и больше не создаёт пустые пузыри субагентов (#2299)",new_0_6_36_15:"Речь MCU теперь показывает синхронизированные постраничные субтитры GB2312 на ESP32-C3 v1 и v2, не прерывая воспроизведение аудио (#2305)",new_0_6_36_16:"Ekko теперь пишет одну компактную запись model.request на каждую попытку модели, включая сжатие контекста, и не передаёт tool_choice при отсутствии инструментов (#2311)",new_0_6_35_1:"Постоянная память Ekko Agent теперь включена в рабочей среде: изолированное по профилям хранилище SQLite, бюджет автоматического извлечения в 4 000 токенов, улучшенный поиск по релевантности во всей памяти и более безопасная обработка запросов к моделям (#2246)",new_0_6_34_1:"В этот выпуск вошел весь 21 PR после версии 0.6.33: пользовательские темы, улучшения Ekko и Coding Agent, desktop и браузера, автоматизация и исправления надежности",new_0_6_34_2:"Для каждой учетной записи можно настроить размер и цвет текста, акцентный цвет и фон workspace с единообразными полупрозрачными поверхностями; окна Windows и настройки браузера следуют теме, а браузерные команды Ekko корректно запускаются в Windows (#2242, #2243, #2244)",new_0_6_34_3:"Ekko доступен в production с поиском Skills по требованию и мультимодальным вводом; защищенное развитие Skills, изолированные по Profile логи, сохранение протокола и сводки рассуждений Responses повышают безопасность и возможности (#2215, #2236)",new_0_6_34_4:"Память Ekko получила детерминированные структурированные категории для предпочтений, отношений, привычек, долгосрочных целей и других данных; длинные разговоры теперь используют общий цикл сжатия контекста на основе snapshots (#2229, #2230)",new_0_6_34_5:"Запуски Coding Agent сохраняют изображения между Codex, Claude Code и ограниченными протоколами Provider, обрезают чрезмерно большие результаты инструментов Responses и изолируют конфигурацию и запоздавшие события по сессиям (#2222, #2232, #2238)",new_0_6_34_6:"Проверка возможностей Hermes Workflow больше не отклоняет допустимые цели без метаданных режима API; Kanban соответствует задачам и просмотру вложений Hermes Agent 0.19, а Cron «Запустить сейчас» безопасно стартует в фоне с более строгой проверкой создания (#2239, #2216, #2228)",new_0_6_34_7:"Desktop получил отдельные компактные окна чата, браузерная автоматизация может работать с полями пароля, оплаты и файлов, а имя и описание каждого участника-человека сохраняются отдельно для каждой комнаты Group Chat (#2209, #2210, #2212)",new_0_6_34_8:"Команда /yolo на уровне сессии переключает обход подтверждений, интерфейсный предел в 200 ходов Agent удален, Markdown сохраняет прямые ASCII-кавычки, а в каталоге pt-BR восстановлены пропущенные диакритические знаки (#2223, #2225, #2234, #2221)",new_0_6_34_9:"Устройства ESP32-C3 получили настраиваемый подключенный режим ожидания, снижающий расход энергии при сохранении Wi-Fi, входа, Profile и Socket.IO, с мгновенным пробуждением и постоянной настройкой тайм-аута (#2218)",new_0_6_33_1:"В этот выпуск вошли все 16 PR после версии 0.6.32: desktop Agent Browser, доказательства и сроки запусков Workflow, работа с файлами и чатами, обновление моделей Provider и повышение надежности",new_0_6_33_2:"В desktop появился видимый многостраничный Agent Browser с изолированными Profiles, настройками прокси, хранилища и загрузок, зашифрованными постоянными cookie, защищенными действиями Agent и отложенным поиском инструментов MCP (#2177, #2182)",new_0_6_33_3:"Ссылки из личных и групповых чатов и авторизованные HTML-превью открываются во встроенном браузере; также улучшены интервалы в действиях разрешений, кроссплатформенные значки навигации и синхронизация боковой панели с заголовком окна Windows (#2191, #2194, #2198)",new_0_6_33_4:"Запуски Workflow сохраняют неизменяемое визуальное состояние на момент старта, показывают общий срок Run/Rerun с прошедшим и оставшимся временем, а история и детали разбиты на страницы с учетом фактически использованного пути (#2171, #2173, #2180)",new_0_6_33_5:"Файлы можно вставлять прямо в личные и групповые чаты или прикреплять через контекстное меню workspace; компактные столбцы метаданных оставляют больше места для имен файлов (#2175, #2176)",new_0_6_33_6:"Каждый настроенный Provider может отдельно обновлять каталог моделей, подтверждать удаления, сохранять недоступные модели по умолчанию и выполнять одно восстановление; поддержаны OAuth Provider, все языки и управление автозаполнением форм (#2115)",new_0_6_33_7:"Состояния остановки и паузы изолированы по сессиям, поэтому фоновые чаты больше не влияют на активную кнопку остановки; выделенный текст и поля ввода desktop также получили нативные действия по правому клику (#2203, #2204)",new_0_6_33_8:"Выход, обновление и установка desktop используют ограниченное по времени корректное завершение и принудительно останавливают оставшиеся деревья процессов Agent Bridge, MCP, браузера и Web UI только после истечения срока очистки (#2193)",new_0_6_33_9:"Голосовые сессии MCU изолируют результаты переднего и фонового планов, а совместимые с MiniMax имена инструментов MCP укладываются в лимит Provider без нарушения работы существующих клиентов (#2181, #2169)",new_0_6_32_1:"В этот выпуск вошли все 14 PR после версии 0.6.31: организация и сжатие сессий, групповые чаты, маршрутизация Workflow, Skill Bundles, память Ekko, Hermes 0.19 и оформление окон desktop",new_0_6_32_2:"Упоминания в групповом чате теперь работают после текста CJK, эмодзи и знаков препинания; владельцы комнат могут просматривать, создавать и обновлять коды приглашения в настройках (#2133, #2141)",new_0_6_32_3:"Workflow сохраняет источник каждого запуска Hermes Bridge при передаче и переподключении; scoped-узлы Codex и Claude Code могут использовать поддерживаемые launcher протоколы для допустимых целей с API Key (#2137, #2154)",new_0_6_32_4:"В сессиях появились глобальные категории, более точный поиск с учетом Markdown и сжатие по курсору, ограничивающее историю и сохраняющее корректность при правках, ветвлении и параллельных запусках; проект сжатия полностью документирован (#2139, #2143, #2145, #2146)",new_0_6_32_5:"Привязанные к Profile наборы Skill Bundle можно создавать, просматривать, запускать и удалять прямо в чате с понятным списком входящих Skills (#2156)",new_0_6_32_6:"Память Ekko теперь использует единую каноническую модель с изоляцией по Profile, проверкой ревизий при изменениях, улучшенным аудитом источников и более строгой фильтрацией релевантности (#2159)",new_0_6_32_7:"Промежуточные сообщения ассистента Hermes 0.19 передаются и сохраняются отдельными сообщениями; обычные личные чаты могут асинхронно получать устойчивые результаты фонового делегирования (#2160)",new_0_6_32_8:"Новые сборки desktop Runtime, резервные пути и Windows CLI shim теперь по умолчанию используют Hermes Agent 0.19.0 (#2161)",new_0_6_32_9:"Управление окном встроено в интерфейс страницы: кнопки macOS находятся в боковой панели, кнопки Windows — над основным содержимым, а Linux сохраняет нативное оформление (#2162)",new_0_6_32_10:"Документация для разработчиков теперь поддерживает как текущий checkout, так и необязательные изолированные Git worktree (#2155)"}};export{e as default};