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.
- package/dist/client/assets/js/{AppSidebar-CaSVcbCW.js → AppSidebar-CNkSiv3l.js} +1 -1
- package/dist/client/assets/js/{ChannelsView-hdAXa1hf.js → ChannelsView-6rEo6RBl.js} +1 -1
- package/dist/client/assets/js/{ChatPanel-C6sX6idm.js → ChatPanel-ANAZWluc.js} +3 -3
- package/dist/client/assets/js/{ChatView-B68k_-D9.js → ChatView-DFcPsmRF.js} +1 -1
- package/dist/client/assets/js/{CodingAgentsView-CsIjwbXR.js → CodingAgentsView-CpIY0SHT.js} +1 -1
- package/dist/client/assets/js/{DefaultCredentialPrompt-BRhb4DOa.js → DefaultCredentialPrompt-DmNeotSW.js} +1 -1
- package/dist/client/assets/js/{DesktopBrowserPanel-BlBfS64w.js → DesktopBrowserPanel-CWjTU-3y.js} +1 -1
- package/dist/client/assets/js/{DesktopBrowserView-JukL0QuS.js → DesktopBrowserView-D9Qb3fIV.js} +1 -1
- package/dist/client/assets/js/{DesktopPetView-DWq4EiRU.js → DesktopPetView-B7REtC57.js} +1 -1
- package/dist/client/assets/js/{DesktopTitleBar-DphP4oa6.js → DesktopTitleBar-Dej_16hB.js} +1 -1
- package/dist/client/assets/js/{DevicesView-BFtrfqJs.js → DevicesView--d4HCkch.js} +1 -1
- package/dist/client/assets/js/{DocxFilePreview-CmVJ9Jxx.js → DocxFilePreview-BQz6WC7r.js} +2 -2
- package/dist/client/assets/js/{FileEditor-CdkNYp7b.js → FileEditor-BBegs-5i.js} +2 -2
- package/dist/client/assets/js/{FilePreview-CJrVRPRs.js → FilePreview-B7WqYvZs.js} +2 -2
- package/dist/client/assets/js/{FileRenameModal-mghyEXU4.js → FileRenameModal-82RkAZkd.js} +1 -1
- package/dist/client/assets/js/{FilesPanel-B9cKB5lX.js → FilesPanel-BHcg6CpC.js} +2 -2
- package/dist/client/assets/js/{FilesView-iKZu70E9.js → FilesView-Dl15WTar.js} +2 -2
- package/dist/client/assets/js/{GlobalAgentView-JZsss0gx.js → GlobalAgentView-dxEX611f.js} +1 -1
- package/dist/client/assets/js/{GlobalPendingActions-BRQIt5vl.js → GlobalPendingActions-CeK96C3G.js} +1 -1
- package/dist/client/assets/js/{GroupChatLinkView-CNrV8lnT.js → GroupChatLinkView-CJhI9DVE.js} +1 -1
- package/dist/client/assets/js/{GroupChatPanel-WK4zBasl.js → GroupChatPanel-CLa3s08V.js} +3 -3
- package/dist/client/assets/js/{GroupChatView-BlMUD1MW.js → GroupChatView-CUwvu-6F.js} +1 -1
- package/dist/client/assets/js/{HistoryMessageList-D8zoQ1Zs.js → HistoryMessageList-BdD8GJYM.js} +1 -1
- package/dist/client/assets/js/{HistoryView-Bpr8N2lC.js → HistoryView-Ro92tP5R.js} +1 -1
- package/dist/client/assets/js/{HtmlFilePreview-Bj3_-hMo.js → HtmlFilePreview-xYn7YtmC.js} +1 -1
- package/dist/client/assets/js/{JobsView-CZK26gTw.js → JobsView-BaNA1Yaa.js} +2 -2
- package/dist/client/assets/js/{JourneyView-BPUsLj4o.js → JourneyView-Bw-05mCF.js} +1 -1
- package/dist/client/assets/js/{KanbanView-B7d-2_z9.js → KanbanView-BYC32l2Q.js} +1 -1
- package/dist/client/assets/js/{LoginView-BpYyv831.js → LoginView-KrpCkwOr.js} +1 -1
- package/dist/client/assets/js/{LogsView-CabFHk0v.js → LogsView-Dgm4v5sN.js} +1 -1
- package/dist/client/assets/js/{MarkdownRenderer-CVtmHZwc.js → MarkdownRenderer-BIPowjr-.js} +3 -3
- package/dist/client/assets/js/{McpManagerView-C-ou8vf3.js → McpManagerView-DTtkUIvq.js} +1 -1
- package/dist/client/assets/js/{MemoryView-QGFW4iZo.js → MemoryView-BnL7xzux.js} +2 -2
- package/dist/client/assets/js/{MessageList-DZR-TFjD.js → MessageList-5tytzhb0.js} +3 -3
- package/dist/client/assets/js/{ModelsView-DiWdSWOW.js → ModelsView-ComCz0Ce.js} +1 -1
- package/dist/client/assets/js/{OutlinePanel-Dlr5svMY.js → OutlinePanel-CF_XPCRn.js} +1 -1
- package/dist/client/assets/js/{PageSidebarFooter-Bic1fUmG.js → PageSidebarFooter-dvLzcTIm.js} +1 -1
- package/dist/client/assets/js/{PdfFilePreview-Dkpan1ay.js → PdfFilePreview-COOAoJ4V.js} +2 -2
- package/dist/client/assets/js/{PerformanceView-LrZaED_Z.js → PerformanceView-D6dKifJh.js} +1 -1
- package/dist/client/assets/js/{PetdexView-Bv8RioGL.js → PetdexView-CmvzDYwf.js} +1 -1
- package/dist/client/assets/js/{PluginsView-CbtdIGlq.js → PluginsView-zJV9FE9c.js} +1 -1
- package/dist/client/assets/js/{PptxFilePreview-5if_GbU6.js → PptxFilePreview-dC4JxV6j.js} +2 -2
- package/dist/client/assets/js/{ProfileAvatar-DI9ciJxS.js → ProfileAvatar-C8xoALCI.js} +1 -1
- package/dist/client/assets/js/{ProfilesView-C-FSiKMU.js → ProfilesView-CxVxJRN_.js} +1 -1
- package/dist/client/assets/js/{ProviderConfigurationPrompt-BUoWC41Y.js → ProviderConfigurationPrompt-zwk1UwoP.js} +1 -1
- package/dist/client/assets/js/{SessionSearchModal-CEKvSihp.js → SessionSearchModal-DhwGsV-i.js} +1 -1
- package/dist/client/assets/js/{SettingRow-CSfiJmxx.js → SettingRow-DHqhLX3M.js} +1 -1
- package/dist/client/assets/js/{SettingsCircuitBadge-DHIEFyTR.js → SettingsCircuitBadge-CnWSfQZd.js} +1 -1
- package/dist/client/assets/js/{SettingsView-DbNJroV3.js → SettingsView-Cbroga25.js} +1 -1
- package/dist/client/assets/js/{SharedGroupChatView-CTYjqWcO.js → SharedGroupChatView-DXfqtQ33.js} +1 -1
- package/dist/client/assets/js/{SkillsUsageView-BqZ3GtfT.js → SkillsUsageView-C34i3lOQ.js} +1 -1
- package/dist/client/assets/js/{SkillsView-Bhla7821.js → SkillsView-DRG_1esx.js} +2 -2
- package/dist/client/assets/js/{SpreadsheetFilePreview-CGK8HDAx.js → SpreadsheetFilePreview-DRw4kIx5.js} +1 -1
- package/dist/client/assets/js/{TerminalPanel-CtBTLOwq.js → TerminalPanel-Da1nL9P8.js} +1 -1
- package/dist/client/assets/js/{TerminalView-BID7fupB.js → TerminalView-B6z-VaGq.js} +1 -1
- package/dist/client/assets/js/{ThemeView-Cx3ucIus.js → ThemeView-CAaJ9MH-.js} +1 -1
- package/dist/client/assets/js/{UsageView-ByGCsw7o.js → UsageView-B_hLsp0k.js} +1 -1
- package/dist/client/assets/js/{VersionPreviewView-DiAK1ind.js → VersionPreviewView-DKXL6anl.js} +1 -1
- package/dist/client/assets/js/{WebPet-CdIqrnp1.js → WebPet-BUvrfjpq.js} +1 -1
- package/dist/client/assets/js/{WorkflowView-DmBOhSuq.js → WorkflowView-r46Ap9FY.js} +1 -1
- package/dist/client/assets/js/{WorkspaceDiffPreview-dHIGp-9F.js → WorkspaceDiffPreview-EwZAE18F.js} +2 -2
- package/dist/client/assets/js/{abap-Dj8IFKiF.js → abap-C7gkFu-A.js} +1 -1
- package/dist/client/assets/js/{aiden0z-pptx-renderer.es-6vi5-jAN.js → aiden0z-pptx-renderer.es-DOpVaH_k.js} +1 -1
- package/dist/client/assets/js/{apex-C3INPUEt.js → apex-DZOtRowu.js} +1 -1
- package/dist/client/assets/js/{ar-Gk9y3ZfO.js → ar-8iThLSJQ.js} +1 -1
- package/dist/client/assets/js/architecture-7EHR7CIX-BrfhYGuP.js +1 -0
- package/dist/client/assets/js/{architectureDiagram-3BPJPVTR-DLZYeivB.js → architectureDiagram-3BPJPVTR-DEsTTzKd.js} +1 -1
- package/dist/client/assets/js/{auth-D1ZFqv22.js → auth-B52zm2Ir.js} +1 -1
- package/dist/client/assets/js/{azcli-UBzLhJq5.js → azcli-KxuicZQh.js} +1 -1
- package/dist/client/assets/js/{bat-P3O4jldt.js → bat-DfFP4HF-.js} +1 -1
- package/dist/client/assets/js/{bicep-DdQR9RxE.js → bicep-Co4bntVh.js} +1 -1
- package/dist/client/assets/js/{blockDiagram-GPEHLZMM-UWFo8sm5.js → blockDiagram-GPEHLZMM-NsxYeUKd.js} +1 -1
- package/dist/client/assets/js/{c4Diagram-AAUBKEIU-jgyj0wOb.js → c4Diagram-AAUBKEIU-D68asSzm.js} +1 -1
- package/dist/client/assets/js/{cameligo-Bb4ubW_C.js → cameligo-Xi0l_9Wr.js} +1 -1
- package/dist/client/assets/js/{chat-DdHii4Qz.js → chat-fUZW3YFa.js} +1 -1
- package/dist/client/assets/js/{chat-input-height-CSPwB9it.js → chat-input-height-lvFawuv9.js} +1 -1
- package/dist/client/assets/js/{chat-timestamp-DGQ8fmtT.js → chat-timestamp-4wWFcZWv.js} +1 -1
- package/dist/client/assets/js/{chunk-2J33WTMH-Br9OWF5a.js → chunk-2J33WTMH-CEU5sLIh.js} +1 -1
- package/dist/client/assets/js/{chunk-3OPIFGDE-Cb40LuI4.js → chunk-3OPIFGDE-DEhbKkCl.js} +1 -1
- package/dist/client/assets/js/{chunk-4BX2VUAB-jYtdiafd.js → chunk-4BX2VUAB-OIZUstuy.js} +1 -1
- package/dist/client/assets/js/{chunk-55IACEB6-CBtymeHY.js → chunk-55IACEB6-DQHKZCBG.js} +1 -1
- package/dist/client/assets/js/{chunk-5ZQYHXKU-yj9xqmex.js → chunk-5ZQYHXKU-BU3pQVVl.js} +1 -1
- package/dist/client/assets/js/{chunk-727SXJPM-er_5tB5X.js → chunk-727SXJPM-jj97gdnP.js} +1 -1
- package/dist/client/assets/js/{chunk-AQP2D5EJ-C4mDD6xK.js → chunk-AQP2D5EJ-jv-oWlkb.js} +1 -1
- package/dist/client/assets/js/{chunk-BSJP7CBP-QZesZe57.js → chunk-BSJP7CBP-DkKsepNF.js} +1 -1
- package/dist/client/assets/js/{chunk-CSCIHK7Q-5LH118bT.js → chunk-CSCIHK7Q-CLgoBoCF.js} +3 -3
- package/dist/client/assets/js/{chunk-FMBD7UC4-CQho6QZ5.js → chunk-FMBD7UC4-Bx1bCKUR.js} +1 -1
- package/dist/client/assets/js/{chunk-KSCS5N6A-DONM1Omv.js → chunk-KSCS5N6A-CZHZ6pBd.js} +1 -1
- package/dist/client/assets/js/{chunk-L5ZTLDWV-FN_zFWkp.js → chunk-L5ZTLDWV-dz9D3kOb.js} +1 -1
- package/dist/client/assets/js/{chunk-LZXEDZCA-CEEUVvpS.js → chunk-LZXEDZCA-CQiSQehC.js} +2 -2
- package/dist/client/assets/js/{chunk-ND2GUHAM-DWckpxQD.js → chunk-ND2GUHAM-mWODKb8v.js} +1 -1
- package/dist/client/assets/js/{chunk-NZK2D7GU-0mKZmkuV.js → chunk-NZK2D7GU-ivCkjCOR.js} +1 -1
- package/dist/client/assets/js/{chunk-O5CBEL6O-DIDAOkT_.js → chunk-O5CBEL6O-BRUisK47.js} +1 -1
- package/dist/client/assets/js/{chunk-QZHKN3VN-D3c-TMz-.js → chunk-QZHKN3VN-BHjgTrzY.js} +1 -1
- package/dist/client/assets/js/{chunk-WU5MYG2G-BZvSpwm4.js → chunk-WU5MYG2G-CNW1rcpL.js} +1 -1
- package/dist/client/assets/js/{chunk-XPW4576I-xdyJtk-s.js → chunk-XPW4576I-DP3dJbOu.js} +1 -1
- package/dist/client/assets/js/classDiagram-4FO5ZUOK-BVBBe3DQ.js +1 -0
- package/dist/client/assets/js/classDiagram-v2-Q7XG4LA2-DJUe3i9Y.js +1 -0
- package/dist/client/assets/js/{clipboard-DQ_A8ns-.js → clipboard-DHZFaAvO.js} +1 -1
- package/dist/client/assets/js/{clipboard-files-bDrcGKPe.js → clipboard-files-CBDy-02Y.js} +1 -1
- package/dist/client/assets/js/{clojure-ku7aCU1_.js → clojure-DuyGwS8X.js} +1 -1
- package/dist/client/assets/js/{coding-agents-DfHyBvky.js → coding-agents-BNTHD6kd.js} +1 -1
- package/dist/client/assets/js/{codingAgentProviders-BM18FAW9.js → codingAgentProviders-DM_ouxbL.js} +1 -1
- package/dist/client/assets/js/{coffee-DnRIdJlY.js → coffee-C5p7vzpa.js} +1 -1
- package/dist/client/assets/js/{completion-notification-XxjbntI8.js → completion-notification-CzdnhuX3.js} +1 -1
- package/dist/client/assets/js/{cose-bilkent-S5V4N54A-w891sIF1.js → cose-bilkent-S5V4N54A-De_ZdqY0.js} +1 -1
- package/dist/client/assets/js/{cpp-CN8i6ISX.js → cpp-II5hDbTe.js} +1 -1
- package/dist/client/assets/js/{csharp-B-fxig7O.js → csharp-D0POzSpv.js} +1 -1
- package/dist/client/assets/js/{csp-Bar9LGt4.js → csp-CwtuRkR3.js} +1 -1
- package/dist/client/assets/js/{css-DFtC5xZN.js → css-Dc2fJIqQ.js} +1 -1
- package/dist/client/assets/js/{cssMode-DH5XKKL2.js → cssMode-CC6jRvHF.js} +1 -1
- package/dist/client/assets/js/{cypher-BkJexWsv.js → cypher-DBcQoWDH.js} +1 -1
- package/dist/client/assets/js/{cytoscape.esm-BDsvr8Aq.js → cytoscape.esm-C9FMRqxM.js} +1 -1
- package/dist/client/assets/js/{dagre-BM42HDAG-BuT885pa.js → dagre-BM42HDAG-CvJIC410.js} +1 -1
- package/dist/client/assets/js/{dagre-BVUDh8Sh.js → dagre-BtgEsAtK.js} +1 -1
- package/dist/client/assets/js/{dart-B7W8hAtN.js → dart-Jf_Hmp2o.js} +1 -1
- package/dist/client/assets/js/{de-LDpd8WHJ.js → de-7hLSwCEx.js} +1 -1
- package/dist/client/assets/js/{defineProperty-DdPu4ZVv.js → defineProperty-DHkErCmG.js} +1 -1
- package/dist/client/assets/js/{desktop-browser-xrRFPNUg.js → desktop-browser-C6AhY0uu.js} +1 -1
- package/dist/client/assets/js/{diagram-2AECGRRQ-B1sSf-09.js → diagram-2AECGRRQ-CvPeU5Lm.js} +1 -1
- package/dist/client/assets/js/{diagram-5GNKFQAL-BffX22pf.js → diagram-5GNKFQAL-CBniYlkH.js} +1 -1
- package/dist/client/assets/js/{diagram-KO2AKTUF-D8QvpUpn.js → diagram-KO2AKTUF-C_yFaVRj.js} +1 -1
- package/dist/client/assets/js/{diagram-LMA3HP47-DkG7p3lQ.js → diagram-LMA3HP47-BzM1IxNe.js} +1 -1
- package/dist/client/assets/js/{diagram-OG6HWLK6-RjvNNvXM.js → diagram-OG6HWLK6-yvmf_3ax.js} +1 -1
- package/dist/client/assets/js/{dist-Bk0VKtV3.js → dist-BHzBn3v7.js} +1 -1
- package/dist/client/assets/js/{dockerfile-C4m7j8sy.js → dockerfile-J3d6ZPDJ.js} +1 -1
- package/dist/client/assets/js/{docx-preview-BpTW-GN7.js → docx-preview-Rqt8wMjQ.js} +1 -1
- package/dist/client/assets/js/{download-CX8EG48r.js → download-xhRMWMda.js} +1 -1
- package/dist/client/assets/js/{ecl-EHV358Ls.js → ecl-XnlT0p97.js} +1 -1
- package/dist/client/assets/js/{editor.api2-CnHBqh_d.js → editor.api2-ChO5nUQb.js} +1 -1
- package/dist/client/assets/js/{elixir-DLfp2Dwn.js → elixir-BEJbxH-B.js} +1 -1
- package/dist/client/assets/js/{en-D6VVFwFU.js → en-D2WSXgkM.js} +1 -1
- package/dist/client/assets/js/{erDiagram-TEJ5UH35-CLlLC6xx.js → erDiagram-TEJ5UH35-DZysD9r9.js} +1 -1
- package/dist/client/assets/js/{es-BIMLuyVP.js → es-B7Mq1P0U.js} +1 -1
- package/dist/client/assets/js/{esm-C8D4M0Yn.js → esm-DnZPPtmx.js} +1 -1
- package/dist/client/assets/js/eventmodeling-FCH6USID-vlE3-g2j.js +1 -0
- package/dist/client/assets/js/{file-preview-BvgwVZXh.js → file-preview-C417aixJ.js} +1 -1
- package/dist/client/assets/js/{files-CJkCqsUx.js → files-DjI-npgn.js} +1 -1
- package/dist/client/assets/js/{flow9-CtBaUnAi.js → flow9-j5XT_8TQ.js} +1 -1
- package/dist/client/assets/js/{flowDiagram-I6XJVG4X-VTRTPnqD.js → flowDiagram-I6XJVG4X-Dt5ZtyHz.js} +1 -1
- package/dist/client/assets/js/{fr-C2lf0cY2.js → fr-DvClrDOw.js} +1 -1
- package/dist/client/assets/js/{freemarker2-XLeMvhl_.js → freemarker2-BzCf_0SN.js} +1 -1
- package/dist/client/assets/js/{fsharp-Db0uaBQv.js → fsharp-ClU_Sdjr.js} +1 -1
- package/dist/client/assets/js/{ganttDiagram-6RSMTGT7-CdKcIZ8_.js → ganttDiagram-6RSMTGT7-Bca3rPWi.js} +1 -1
- package/dist/client/assets/js/gitGraph-WXDBUCRP-Cyd4P6XH.js +1 -0
- package/dist/client/assets/js/{gitGraphDiagram-PVQCEYII-Bcuyw6fo.js → gitGraphDiagram-PVQCEYII-Co29qnTg.js} +1 -1
- package/dist/client/assets/js/{go-DwaTlB-B.js → go-D3iUyCM0.js} +1 -1
- package/dist/client/assets/js/{graphlib-vAI4Pw7R.js → graphlib-Bln6qd-Z.js} +1 -1
- package/dist/client/assets/js/{graphql-Cf2XhNJR.js → graphql-z8koqyyL.js} +1 -1
- package/dist/client/assets/js/{group-agent-avatar-CPehpiK0.js → group-agent-avatar-CwqtaKGw.js} +1 -1
- package/dist/client/assets/js/{group-chat-CY62vc77.js → group-chat-Buz8HP-N.js} +1 -1
- package/dist/client/assets/js/{group-chat-xkdjC2Jt.js → group-chat-CgFAwCtr.js} +1 -1
- package/dist/client/assets/js/{group-chat-agent-link-DdSNKasF.js → group-chat-agent-link-N5IFeN_j.js} +1 -1
- package/dist/client/assets/js/{handlebars-CNEKu_p8.js → handlebars-C_JvhUYs.js} +1 -1
- package/dist/client/assets/js/{hcl-6UZbq6h2.js → hcl-X7TzviIX.js} +1 -1
- package/dist/client/assets/js/{highlight-DwtBT6t1.js → highlight-C4yUBxwQ.js} +1 -1
- package/dist/client/assets/js/{html-DfSIHhKA.js → html-B-rCQB0N.js} +1 -1
- package/dist/client/assets/js/{htmlMode-iGw9-O-W.js → htmlMode-CAeEf_yf.js} +1 -1
- package/dist/client/assets/js/{index-DnjQJzX4.js → index-DN4SafrP.js} +5 -5
- package/dist/client/assets/js/info-J43DQDTF-B9tkQ2Sb.js +1 -0
- package/dist/client/assets/js/{infoDiagram-5YYISTIA-85450Zam.js → infoDiagram-5YYISTIA-BWQGayms.js} +1 -1
- package/dist/client/assets/js/{ini-8em8V_Af.js → ini-LTHHN4J-.js} +1 -1
- package/dist/client/assets/js/{ishikawaDiagram-YF4QCWOH-BZ4az7UA.js → ishikawaDiagram-YF4QCWOH-Dhuplz_z.js} +1 -1
- package/dist/client/assets/js/{ja-C1bBXgr_.js → ja-D7BeX2_D.js} +1 -1
- package/dist/client/assets/js/{java-CP1MdIkO.js → java-BRFX-ya0.js} +1 -1
- package/dist/client/assets/js/{javascript-Cr8_LHYa.js → javascript-ZXiVmjXn.js} +1 -1
- package/dist/client/assets/js/{journeyDiagram-JHISSGLW-DGMB8Tgc.js → journeyDiagram-JHISSGLW-CJeatAU9.js} +1 -1
- package/dist/client/assets/js/{jsonMode-HCZ-1lFH.js → jsonMode-C6FcMe0o.js} +1 -1
- package/dist/client/assets/js/{jszip.min-BkR6b8DY.js → jszip.min-skZCUzWf.js} +1 -1
- package/dist/client/assets/js/{julia-DMTMxa5q.js → julia-Bph8N3CL.js} +1 -1
- package/dist/client/assets/js/{kanban-definition-UN3LZRKU-F5cH_RpB.js → kanban-definition-UN3LZRKU-tvWuOdSr.js} +1 -1
- package/dist/client/assets/js/{katex-CYbEJAbZ.js → katex-hSGJNERm.js} +1 -1
- package/dist/client/assets/js/{ko-qgOeHd8L.js → ko-BsVa-If_.js} +1 -1
- package/dist/client/assets/js/{kotlin-Blzus47W.js → kotlin-_c4-tPQp.js} +1 -1
- package/dist/client/assets/js/{less-DWCHpDyf.js → less-5oVo4jfQ.js} +1 -1
- package/dist/client/assets/js/{lexon-YXdlYGbJ.js → lexon-DE4YtGwF.js} +1 -1
- package/dist/client/assets/js/{liquid-DSQgvRwe.js → liquid-BGfieGMG.js} +1 -1
- package/dist/client/assets/js/{lspLanguageFeatures-0Hx2Vnc-.js → lspLanguageFeatures-DU_1H2uW.js} +1 -1
- package/dist/client/assets/js/{lua-Cyv3mTkg.js → lua-7WJSZJqD.js} +1 -1
- package/dist/client/assets/js/{m3-CPY3Ym7_.js → m3-gZlfoR19.js} +1 -1
- package/dist/client/assets/js/{markdown-DaPQ1nuG.js → markdown-BYF71orA.js} +1 -1
- package/dist/client/assets/js/{mdx-BqA6Xr9V.js → mdx-CunEIV3g.js} +1 -1
- package/dist/client/assets/js/{mermaid-parser.core-D4HRUOce.js → mermaid-parser.core-DU_SX15F.js} +3 -3
- package/dist/client/assets/js/{mermaid.core-w6kHmgOG.js → mermaid.core-8vsbhG5J.js} +3 -3
- package/dist/client/assets/js/{message-scroll-position-C5yRCyBU.js → message-scroll-position-C9_YO3pX.js} +2 -2
- package/dist/client/assets/js/{mindmap-definition-RKZ34NQL-CnzhnJ7Z.js → mindmap-definition-RKZ34NQL-HPtlKqL1.js} +1 -1
- package/dist/client/assets/js/{mips-BfqBfLvN.js → mips-DXkvw9aZ.js} +1 -1
- package/dist/client/assets/js/{models-wrytxWnf.js → models-BILDy2sV.js} +1 -1
- package/dist/client/assets/js/{monaco.contribution-Bc-DesyO.js → monaco.contribution-DDqeHGl3.js} +2 -2
- package/dist/client/assets/js/{msdax-DgMip49g.js → msdax-BbHEBDvP.js} +1 -1
- package/dist/client/assets/js/{mysql-DPUvF1g2.js → mysql-7I1rlwh7.js} +1 -1
- package/dist/client/assets/js/{objective-c-BQ3llrPW.js → objective-c-Dk03REAv.js} +1 -1
- package/dist/client/assets/js/packet-YPE3B663-DlTFK3Wo.js +1 -0
- package/dist/client/assets/js/{pascal-bFWHV7MZ.js → pascal-BCfNkzYY.js} +1 -1
- package/dist/client/assets/js/{pascaligo-C8Qza2pK.js → pascaligo-D-DslS98.js} +1 -1
- package/dist/client/assets/js/{pdf-Cb7x495t.js → pdf-B_OYWxSy.js} +1 -1
- package/dist/client/assets/js/{pdf.worker.min-DDUKJ6cJ.js → pdf.worker.min--q2RLEHa.js} +1 -1
- package/dist/client/assets/js/{perl-x25gw0_p.js → perl-MUnuTclx.js} +1 -1
- package/dist/client/assets/js/{pets-BfRsvl7D.js → pets-D74G2jqA.js} +1 -1
- package/dist/client/assets/js/{pgsql-DAUcGeRq.js → pgsql-BxCBktNe.js} +1 -1
- package/dist/client/assets/js/{php-nri1eqb2.js → php-zp9UgH03.js} +1 -1
- package/dist/client/assets/js/pie-LRSECV5Y-BtnBGhFZ.js +1 -0
- package/dist/client/assets/js/{pieDiagram-4H26LBE5-4LODdtT_.js → pieDiagram-4H26LBE5-CG8_pcHr.js} +1 -1
- package/dist/client/assets/js/{pla-CHi5LWNL.js → pla-DGCtmYZC.js} +1 -1
- package/dist/client/assets/js/{postiats-Bk7jD0AA.js → postiats-DHSW8gnY.js} +1 -1
- package/dist/client/assets/js/{powerquery-UTqJ0Vs7.js → powerquery-BGsPEmJe.js} +1 -1
- package/dist/client/assets/js/{powershell-CuPY3Rqk.js → powershell-BItlb0hE.js} +1 -1
- package/dist/client/assets/js/{profiles-D-vlI-Ec.js → profiles-BK5JKD7h.js} +1 -1
- package/dist/client/assets/js/{protobuf-Be4AIz9j.js → protobuf-BIhm6JYx.js} +1 -1
- package/dist/client/assets/js/{pt-D7_udWb3.js → pt-BSORCDMm.js} +1 -1
- package/dist/client/assets/js/{pug-CZFx15Ey.js → pug-BtnM7KZj.js} +1 -1
- package/dist/client/assets/js/{python-BgRg6Ez6.js → python-DxzTx1Q_.js} +1 -1
- package/dist/client/assets/js/{qsharp-BiBiLhRS.js → qsharp-B_8MSfaB.js} +1 -1
- package/dist/client/assets/js/{quadrantDiagram-W4KKPZXB-g_q9-dXx.js → quadrantDiagram-W4KKPZXB-CsbkMYuV.js} +1 -1
- package/dist/client/assets/js/{r-DM7NVSbZ.js → r-kvKC59jk.js} +1 -1
- package/dist/client/assets/js/radar-GUYGQ44K-BTKMKX4G.js +1 -0
- package/dist/client/assets/js/{razor-CiWy0jCW.js → razor-BwZ0MkaL.js} +1 -1
- package/dist/client/assets/js/{redis-BR2LPmFL.js → redis-5j1U_i85.js} +1 -1
- package/dist/client/assets/js/{redshift-B0sdAV16.js → redshift-CX1dFLA1.js} +1 -1
- package/dist/client/assets/js/{requirementDiagram-4Y6WPE33-EedCclad.js → requirementDiagram-4Y6WPE33-CKC7CQCX.js} +1 -1
- package/dist/client/assets/js/{restructuredtext-kQOBLN1M.js → restructuredtext-MV0-Naya.js} +1 -1
- package/dist/client/assets/js/{rough.esm-Dyx_2DON.js → rough.esm-CV1rL6PC.js} +1 -1
- package/dist/client/assets/js/{ru-CVQQmreT.js → ru-JsH6TKyg.js} +1 -1
- package/dist/client/assets/js/{ruby-CbdJXy6J.js → ruby-Bhyejf9X.js} +1 -1
- package/dist/client/assets/js/{rust-DZanYksk.js → rust-CR8d_FC1.js} +1 -1
- package/dist/client/assets/js/{sankeyDiagram-5OEKKPKP-DFC0nzsd.js → sankeyDiagram-5OEKKPKP-CKlqlvAe.js} +1 -1
- package/dist/client/assets/js/{sb-C5-WiqDZ.js → sb-hLW2EM2L.js} +1 -1
- package/dist/client/assets/js/{scala-Bk7i9nV-.js → scala-DVUhALEZ.js} +1 -1
- package/dist/client/assets/js/{scheme-CaZSWmJ2.js → scheme-BS6yNanr.js} +1 -1
- package/dist/client/assets/js/{scss-ByOYuc7K.js → scss-BfoRsElt.js} +1 -1
- package/dist/client/assets/js/{sequenceDiagram-3UESZ5HK-hWjPfqXt.js → sequenceDiagram-3UESZ5HK-CTimhD6H.js} +1 -1
- package/dist/client/assets/js/{session-browser-prefs-Br8OYA4_.js → session-browser-prefs-BT1woDux.js} +1 -1
- package/dist/client/assets/js/{sessions-iGK9S6zk.js → sessions-IkLKgnN6.js} +1 -1
- package/dist/client/assets/js/{settings-pbanANH0.js → settings-roYY6G3W.js} +1 -1
- package/dist/client/assets/js/{shell-Di0TEySc.js → shell-BO_Lyczz.js} +1 -1
- package/dist/client/assets/js/{skills-DC-UPcXj.js → skills-a5LPwmiT.js} +1 -1
- package/dist/client/assets/js/{solidity-BNTjAuuA.js → solidity-D3T2Ki4l.js} +1 -1
- package/dist/client/assets/js/{sophia-LY__8Yob.js → sophia-iJmIEvi8.js} +1 -1
- package/dist/client/assets/js/{sparql-CWnLfgGS.js → sparql-C2HCEExr.js} +1 -1
- package/dist/client/assets/js/{sql-B0ypQ9lR.js → sql-DM6_3GBc.js} +1 -1
- package/dist/client/assets/js/{src-BihFroE7.js → src-DD_TpJde.js} +1 -1
- package/dist/client/assets/js/{st-CqVFKTbZ.js → st-DSb39Fm5.js} +1 -1
- package/dist/client/assets/js/{stateDiagram-AJRCARHV-B7wEnYVe.js → stateDiagram-AJRCARHV-DwBGmBj6.js} +1 -1
- package/dist/client/assets/js/stateDiagram-v2-BHNVJYJU-5bNcwBne.js +1 -0
- package/dist/client/assets/js/{style-DDAg_jVj.js → style-B5xXhBlp.js} +1 -1
- package/dist/client/assets/js/{swift-B4ZZmDxc.js → swift-DrZYSZK3.js} +1 -1
- package/dist/client/assets/js/{systemverilog-zLt-O1mT.js → systemverilog-BAWNCaf6.js} +1 -1
- package/dist/client/assets/js/{tcl-DCSZmA-l.js → tcl-DY15ex6v.js} +1 -1
- package/dist/client/assets/js/{timeline-definition-PNZ67QCA-BN_LfleE.js → timeline-definition-PNZ67QCA-B8xuIu6g.js} +1 -1
- package/dist/client/assets/js/treeView-BLDUP644-DvZPUnGM.js +1 -0
- package/dist/client/assets/js/treemap-LRROVOQU-Bis1djYh.js +1 -0
- package/dist/client/assets/js/{tsMode-BjUcuHrq.js → tsMode-BE8JCSCE.js} +1 -1
- package/dist/client/assets/js/{ttsHelpers-BLunFYsq.js → ttsHelpers-BLNiQExI.js} +1 -1
- package/dist/client/assets/js/{twig-CuJlVpUG.js → twig-BpHF_18K.js} +1 -1
- package/dist/client/assets/js/{typescript-De40YVFt.js → typescript-FQ3z9hVG.js} +1 -1
- package/dist/client/assets/js/{typespec-8QcsIc3c.js → typespec-BKvcn6aE.js} +1 -1
- package/dist/client/assets/js/{useSttSettings-B1-KXN44.js → useSttSettings-DHX06G8A.js} +1 -1
- package/dist/client/assets/js/{vb-DEGTdhxf.js → vb-B74ucE43.js} +1 -1
- package/dist/client/assets/js/{vennDiagram-CIIHVFJN-hL8ax7wF.js → vennDiagram-CIIHVFJN-DtEu04QR.js} +1 -1
- package/dist/client/assets/js/wardley-L42UT6IY-CD4dIN63.js +1 -0
- package/dist/client/assets/js/{wardleyDiagram-YWT4CUSO-BIR-RA6Y.js → wardleyDiagram-YWT4CUSO-DdNKCPsp.js} +1 -1
- package/dist/client/assets/js/{wgsl-CmbiucmY.js → wgsl-DEf5Vdqv.js} +1 -1
- package/dist/client/assets/js/{workers-BgWBq4qY.js → workers-BbaiLVxx.js} +1 -1
- package/dist/client/assets/js/{workflow-socket-DZ9Ceffc.js → workflow-socket-DH402vxO.js} +1 -1
- package/dist/client/assets/js/{xml-SZLdwDmk.js → xml-zjE51I7v.js} +1 -1
- package/dist/client/assets/js/{xterm-D6CotCNH.js → xterm-Djy4rCx0.js} +1 -1
- package/dist/client/assets/js/{xychartDiagram-2RQKCTM6-DHa486uP.js → xychartDiagram-2RQKCTM6-CKqN7g7r.js} +1 -1
- package/dist/client/assets/js/{yaml-CgQpCgM5.js → yaml-DabeGoTc.js} +1 -1
- package/dist/client/assets/js/{zh-BDlMioZr.js → zh-CI4-L3JY.js} +1 -1
- package/dist/client/assets/js/{zh-TW-DTbLWR1A.js → zh-TW-wYlj-uOZ.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/index.js +3 -3
- package/dist/server/openapi.json +1 -1
- package/package.json +9 -1
- package/dist/client/assets/js/architecture-7EHR7CIX-Cl4Qi40R.js +0 -1
- package/dist/client/assets/js/classDiagram-4FO5ZUOK-DC0BcY8x.js +0 -1
- package/dist/client/assets/js/classDiagram-v2-Q7XG4LA2-BfDDH_fm.js +0 -1
- package/dist/client/assets/js/eventmodeling-FCH6USID-Bgzwnvkn.js +0 -1
- package/dist/client/assets/js/gitGraph-WXDBUCRP-CwFrpI3e.js +0 -1
- package/dist/client/assets/js/info-J43DQDTF-wMwkmIWM.js +0 -1
- package/dist/client/assets/js/packet-YPE3B663-DYmKXJOE.js +0 -1
- package/dist/client/assets/js/pie-LRSECV5Y-Dx0hbcjV.js +0 -1
- package/dist/client/assets/js/radar-GUYGQ44K-D-t-QJhi.js +0 -1
- package/dist/client/assets/js/stateDiagram-v2-BHNVJYJU-CoMhBVvo.js +0 -1
- package/dist/client/assets/js/treeView-BLDUP644-CMJGhbWk.js +0 -1
- package/dist/client/assets/js/treemap-LRROVOQU-_j4KoVDh.js +0 -1
- package/dist/client/assets/js/wardley-L42UT6IY-BeOvmJoM.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={browser:{title:"Navegador",settings:"Ajustes del navegador",desktopOnly:"El navegador integrado solo está disponible en Hermes Studio Desktop.",newTab:"Nueva pestaña",back:"Atrás",forward:"Adelante",reload:"Recargar",stop:"Detener",addressPlaceholder:"Buscar o escribir una dirección",selectElement:"Seleccionar elemento",selectRegion:"Seleccionar región",annotationPlaceholder:"Describe qué debe revisar o cambiar el Agent…",selectionData:"Datos de selección del navegador",annotationAdded:"Captura añadida al cuadro de chat",annotationCount:"{count} anotación(es)",annotationLabel:"Anotación {index}",clearAnnotations:"Borrar anotaciones",finishAnnotation:"Listo",agent:"Agent",agentControlling:"{agent} controla esta pestaña",agentWaiting:"{agent} espera tu confirmación",takeOver:"Tomar control",tabCrashed:"Esta pestaña falló.",recoverTab:"Recargar pestaña",profiles:"Perfiles",profileName:"Nombre del perfil",addProfile:"Añadir perfil",currentProfile:"Perfil activo",switchProfile:"Cambiar perfil",editProfile:"Editar perfil",profileDirectory:"Directorio del perfil",downloadDirectory:"Directorio de descargas",profileRootDirectory:"Directorio raíz del perfil",chooseProfileRootDirectory:"Elegir un directorio vacío",profileRootDirectoryHint:"Elige un directorio vacío. Los datos usarán {data} y las descargas {download}.",proxy:"Proxy",proxyMode:"Modo de proxy",proxyDirect:"Conexión directa",proxySystem:"Proxy del sistema",proxyCustom:"Proxy personalizado",proxyServer:"Servidor proxy",proxyServerPlaceholder:"Por ejemplo: http://127.0.0.1:7890 o socks5://127.0.0.1:1080",askBeforeDownload:"Preguntar dónde guardar",downloadConflictPolicy:"Nombres duplicados",uniquifyDownloads:"Crear un nombre único",askOnConflict:"Preguntar si existe",downloads:"Descargas",downloadStateProgressing:"Descargando",downloadStateCompleted:"Completado",downloadStateCancelled:"Cancelado",downloadStateInterrupted:"Interrumpido",downloadStateBlocked:"Bloqueado",permissions:"Permisos",permissionsHint:"Los permisos de páginas remotas se deniegan por defecto y se registran aquí.",blocked:"Bloqueado",profileSwitchTitle:"¿Cambiar de perfil?",profileSwitchWarning:"Pueden interrumpirse {agents} operación(es) Agent, {downloads} descarga(s) y {annotations} anotación(es).",deleteProfileTitle:"¿Eliminar perfil?",deleteProfileWarning:"Los datos gestionados irán a la papelera. Los directorios personalizados se conservan.",clearCache:"Borrar caché",clearPermissionAudit:"Borrar registro de permisos",clearSiteData:"Borrar datos de sitios",clearSiteDataWarning:"Borra sesiones, cookies y almacenamiento local del perfil seleccionado.",dataCleared:"Datos del navegador borrados",loadFailed:"No se pudo iniciar el navegador integrado"},kanban:{board:{defaultArchiveUnavailable:"El tablero predeterminado no se puede archivar"},action:{archive:"Archivar tarea",archiveConfirm:"¿Archivar esta tarea completada?"},message:{taskArchived:"Tarea archivada"}},login:{title:"Hermes Studio",description:"Introduce tu nombre de usuario y contrasena para continuar.",placeholder:"Token de acceso",submit:"Iniciar sesion",tokenRequired:"Por favor, introduce tu token de acceso",invalidToken:"Token invalido",connectionFailed:"No se puede conectar al servidor",passwordLogin:"Contrasena",tokenLogin:"Token",usernamePlaceholder:"Nombre de usuario",passwordPlaceholder:"Contrasena",defaultCredentialsHint:"Nombre de usuario predeterminado: admin. Contrasena predeterminada: 123456.",credentialsRequired:"Por favor, introduzca nombre de usuario y contrasena",invalidCredentials:"Nombre de usuario o contrasena incorrectos",tooManyAttempts:"Demasiados intentos fallidos, por favor intente mas tarde",lockResetHint:"Si este es su servidor, borre el bloqueo de inicio de sesion con:",defaultLoginResetHint:"Para restablecer la contrasena admin predeterminada, ejecute:",desktopLockResetHint:"Too many failed login attempts. Open the system tray menu and choose Reset Login to reset the password.",sessionExpired:"La sesion expiro. Inicia sesion de nuevo.",accessDenied:"No tienes permiso para acceder a este recurso.",passwordMismatch:"Las contrasenas no coinciden",passwordTooShort:"La contrasena debe tener al menos 6 caracteres",setupSuccess:"Login con contrasena configurado correctamente",passwordChanged:"Contrasena cambiada correctamente",passwordRemoved:"Login con contrasena eliminado",setupPassword:"Configurar login con contrasena",changePassword:"Cambiar contrasena",changeUsername:"Cambiar nombre de usuario",removePasswordLogin:"Eliminar",username:"Nombre de usuario",currentPassword:"Contrasena actual",newPassword:"Nueva contrasena",confirmPassword:"Confirmar contrasena",newUsername:"Nuevo nombre de usuario",usernameChanged:"Nombre de usuario cambiado correctamente",usernameTooShort:"El nombre de usuario debe tener al menos 2 caracteres",setupDescription:"Administra el nombre de usuario y la contrasena usados para iniciar sesion.",removeConfirm:"El login con contrasena es obligatorio para las cuentas de usuario.",passwordLoginNotConfigured:"Login con contrasena no configurado",passwordLoginConfigured:"Cuenta actual: {username}",defaultCredentialTitle:"Cambia la cuenta y contrasena predeterminadas",defaultCredentialMessage:"La cuenta actual aun usa el nombre de usuario o la contrasena predeterminados. Para evitar accesos no autorizados, cambia cuanto antes el nombre de usuario y la contrasena de la cuenta actual.",defaultCredentialAction:"Cambiar ahora",defaultCredentialLater:"Recordar mas tarde"},users:{title:"Gestion de cuentas",description:"Crea usuarios, asigna roles y controla que perfiles pueden usar los administradores normales.",create:"Crear usuario",edit:"Editar usuario",username:"Nombre de usuario",role:"Rol",statusLabel:"Estado",profiles:"Perfiles accesibles",profilesPlaceholder:"Selecciona perfiles accesibles",allProfiles:"Todos los perfiles",noProfiles:"Sin perfiles asignados",lastLogin:"Ultimo inicio",newPasswordOptional:"Nueva contrasena (dejar vacio para conservar)",loadFailed:"No se pudieron cargar los usuarios",deleteConfirm:"Eliminar este usuario?",enable:"Activar",disable:"Desactivar",roles:{superAdmin:"Super admin",admin:"Admin"},status:{active:"Activo",disabled:"Desactivado"}},common:{loading:"Cargando...",cancel:"Cancelar",retry:"Reintentar",reset:"Restablecer",delete:"Eliminar",edit:"Editar",save:"Guardar",saved:"Guardado",update:"Actualizar",create:"Crear",saveFailed:"Error al guardar",deleteFailed:"Error al eliminar",ok:"OK",copied:"Copiado",copy:"Copiar",noData:"Sin datos",fetch:"Obtener",add:"Anadir",enable:"Activar",disable:"Desactivar",configured:"Configurado",notConfigured:"No configurado",confirm:"Confirmar",expand:"Expandir",collapse:"Contraer",stop:"Detener",start:"Iniciar",expired:"Expirado"},mcp:{title:"Servidores MCP",loadFailed:"Error al cargar servidores MCP",reloadAll:"Recargar todos",refresh:"Actualizar",total:"Total",connected:"Conectado",disconnected:"Desconectado",tools:"herramientas",tool:"Herramientas",searchPlaceholder:"Buscar servidores...",addServer:"+ Agregar servidor",zeroTools:"0 herramientas",loading:"Cargando...",empty:"No hay servidores MCP configurados",reloaded:"{server} recargado",reloadedAll:"Todos los servidores MCP recargados",reloadFailed:"Error al recargar",serverAdded:'Servidor "{name}" agregado',addFailed:"Error al agregar servidor",serverUpdated:'Servidor "{name}" actualizado',updateFailed:"Error al actualizar servidor",saveFailed:"Error al guardar",serverRemoved:'"{name}" eliminado',enabled:"Habilitado: {name}",disabled:"Deshabilitado: {name}",connectedStatus:"Conectado",disconnectedStatus:"Desconectado",disabledStatus:"Deshabilitado",toolList:"Lista de herramientas",count:" ",more:"más",removeFailed:"Error al eliminar servidor",testOk:"Prueba OK — {count} herramientas disponibles",testEmpty:"La prueba no devolvio herramientas",testFailed:"Error en la prueba",edit:"Editar",test:"Probar",reload:"Recargar",remove:"Eliminar",confirmRemove:'¿Eliminar servidor "{name}"?',cancel:"Cancelar",add:"Agregar",save:"Guardar",addTitle:"Agregar servidor MCP",editTitle:"Editar servidor MCP",invalidJson:"JSON inválido",invalidYaml:"Formato YAML no válido",invalidConfig:"Configuración no válida",invalidServerConfig:"Configuración del servidor no válida",missingCommandOrUrl:"Debe incluir command o url",manageTools:"Gestionar herramientas",toolsVisibilityTitle:"Gestión de visibilidad de herramientas",fetchTools:"Obtener lista de herramientas",fetchToolsFailed:"Error al obtener la lista de herramientas",toolsMode:"Modo:",toolsModeAll:"Todas",toolsModeInclude:"Incluir",toolsModeExclude:"Excluir",toolsListHeader:"Nombre de herramienta",toolsEmpty:"No hay herramientas disponibles, primero obtenga la lista de herramientas",toolsSummaryAll:"{count} herramientas en total, todas habilitadas",toolsSummaryInclude:"{total} herramientas en total, {count} seleccionadas",toolsSummaryExclude:"{total} herramientas en total, {count} excluidas",toolsVisibilitySaved:"Visibilidad de herramientas guardada",toolsSelectAll:"Seleccionar todo",toolsClearSelection:"Borrar selección",toolsExcludeAll:"Excluir todo",toolsClearExcluded:"Borrar exclusiones"},sidebar:{chat:"Chat",backToChat:"Volver",search:"Buscar",apiRelay:"API Relay",history:"Historial",jobs:"Tareas programadas",models:"Modelos",profiles:"Perfiles",plugins:"Plugins",mcp:"MCP",petdex:"Pets",skills:"Habilidades",memory:"Memoria",logs:"Registros",usage:"Uso",performance:"Rendimiento",journey:"Trayectoria",skillsUsage:"Uso de habilidades",channels:"Canales",terminal:"Terminal",browser:"Navegador",singleChat:"Chat",globalAgent:"Global Agent",files:"Archivos",devices:"Dispositivos",groupChat:"Chat grupal",groupConversation:"Conversación",groupConversationShort:"Conv.",groupAgent:"Agente",groupAgentShort:"Ag.",groupSystem:"Sistema",groupSystemShort:"Sist",groupMonitoring:"Monitoreo",groupMonitoringShort:"Mon.",theme:"Tema",settings:"Configuracion",connected:"Conectado",disconnected:"Desconectado",updateTip:'Ejecuta "hermes-web-ui update" en la terminal para actualizar',updateVersion:"Actualizar a v{version}",reloadClientVersion:"Recargar para v{version}",updating:"Actualizando...",updateSuccess:"Actualizacion completada. Actualiza la pagina en breve. Si no se inicia despues de un tiempo, inicialo manualmente.",updateFailed:"Error al actualizar",logout:"Cerrar sesion",nodeVersionWarning:"Se detecto Node.js v{version}. Actualiza a la version 23 o posterior.",changelog:"Registro de cambios",noChangelog:"No hay registro de cambios",versionManagement:"Gestión de versiones",updateAvailableLabel:"(Nueva versión)",dockerUpdateTitle:"Actualización Docker",dockerUpdateGuide:"En el entorno Docker, extraiga la imagen más reciente y vuelva a crear el contenedor:",dockerUpdateNote:"Sus datos se conservarán después de recrear el contenedor.",kanban:"Kanban",workflow:"Workflow",groupTools:"Herramientas",groupToolsShort:"Herr.",codingAgents:"Agentes de código",versionPreview:"Vista previa de versión",groupPlatform:"Plataforma",gateways:"Puertas de enlace",expand:"Expandir menú",collapse:"Contraer menú"},runtimeVersions:{title:"Gestión de versiones",runtimeTitle:"Hermes Runtime",currentHermesAgentVersion:"Versión actual de Hermes Agent",activeRuntimeDirectory:"Ruta del Runtime activo",cliUpdateDescription:"En Hermes Runtime 0.19.1 y posteriores, el siguiente comando solo actualiza el Hermes Agent integrado. No actualiza la aplicación de escritorio Hermes Studio ni la Web UI. Cierra Hermes Studio por completo antes de ejecutarlo:",webUiTitle:"Web UI",platform:"Plataforma",currentWebUi:"Web UI actual",activeVersion:"Versión activa",runtimeDirectory:"Directorio de almacenamiento de Runtime",chooseRuntimeDirectory:"Elegir directorio",resetRuntimeDirectory:"Usar valor del sistema",runtimeDirectoryHint:"El Runtime actual se copiará y verificará antes de iniciar los servicios locales en el próximo reinicio. El almacenamiento anterior se conserva y las futuras descargas de Runtime se guardan aquí.",runtimeDirectorySaved:"Migración de Runtime programada. Reinicia Hermes Studio para ejecutarla.",runtimeMigrationPending:"Destino de migración pendiente: {directory}",runtimeMigrationFailed:"La migración del almacenamiento falló; se sigue usando el almacenamiento anterior",runtimeActivationFailed:"No se pudo iniciar el Runtime seleccionado; Hermes Studio está usando otra versión instalada",active:"Activa",installed:"Instalada",download:"Descargar",downloadGithub:"Descargar desde GitHub",downloadCf:"Descargar desde Cloudflare",github:"GitHub",cf:"Cloudflare",useVersion:"Usar en el próximo reinicio",deleteVersion:"Eliminar",deleteRuntimeConfirm:"¿Eliminar Hermes Runtime {version}?",deleteWebUiConfirm:"¿Eliminar Web UI {version}?",deleteRuntimeSuccess:"Runtime eliminado",deleteWebUiSuccess:"Web UI eliminado",refresh:"Actualizar",noVersions:"No hay versiones disponibles",remoteLoadFailed:"No se pudieron cargar las versiones remotas",downloadTasks:"Tareas de descarga",downloadStarted:"Descarga iniciada",activateSuccess:"Selección de versión guardada. Reinicia Hermes Studio para usarla.",jobStatus:{queued:"En cola",running:"En ejecución",completed:"Completada",failed:"Fallida"},jobStageStatus:{queued:"En cola",resolve:"Resolviendo",download:"Descargando",verify:"Verificando",extract:"Extrayendo",install:"Instalando",completed:"Completada",failed:"Fallida"},jobStage:{queued:"En cola",download:"Descargando",resolveRuntime:"Resolviendo paquete Runtime",verifyRuntime:"Verificando archivo Runtime",extractRuntime:"Extrayendo archivo Runtime",installRuntime:"Instalando Runtime",resolveWebUi:"Resolviendo paquete Web UI",verifyWebUi:"Verificando archivo Web UI",extractWebUi:"Extrayendo archivo Web UI",installWebUi:"Instalando Web UI",completed:"Completada",failed:"Fallida"}},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:"Remoto",connected:"Conectado",disconnected:"Desconectado",remoteConnect:"Conectar remoto",remoteConnected:"Remoto conectado",remoteConnectFailed:"Error al conectar remoto",remoteDisconnect:"Desconectar",remoteDisconnected:"Remoto desconectado",remoteDisconnectFailed:"Error al desconectar remoto",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:"Dispositivos",count:"{count} dispositivos",lastScanned:"Último escaneo: {time}",refresh:"Actualizar",empty:"No se encontraron dispositivos",computer:"Equipo",endpointLabel:"Extremo",statusLabel:"Estado",online:"Online",offline:"Offline",address:"Dirección",os:"Sistema operativo",agentVersion:"Agent",webUiVersion:"Web UI",responseMs:"Latencia",lastSeen:"Visto por última vez",open:"Abrir",never:"Nunca",unknown:"Desconocido",loadFailed:"No se pudieron cargar los dispositivos",scanFailed:"No se pudieron escanear los dispositivos",updateFailed:"No se pudo actualizar el dispositivo",duplicateRequest:"Ya existe una solicitud de emparejamiento pendiente",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:"Procesada",unprocessed:"Sin procesar",deleteHistory:"Eliminar registro",deleteHistoryConfirm:"¿Eliminar este registro de solicitud y revocar el acceso de conexión de este dispositivo?",requests:"Solicitudes",requestsWithCount:"Solicitudes ({count})",noRequests:"No hay solicitudes",requestPairing:"Solicitar emparejamiento",paired:"Emparejado",approve:"Aprobar",reject:"Rechazar",block:"Bloquear",unblock:"Desbloquear",inboundStatus:{none:"Puede solicitar",pending:"Pendiente",approved:"Aprobado",rejected:"Rechazado",blocked:"Bloqueado"},outboundStatus:{none:"Sin emparejar",pending:"Solicitado",approved:"Emparejado",rejected:"Rechazado",blocked:"Bloqueado"},endpoint:{web:"Web",desktop:"Escritorio",custom:"Personalizado"}},performance:{title:"Rendimiento",subtitle:"Supervisa recursos del sistema, Bridge Broker, Workers y sesiones activas",refresh:"Actualizar",autoRefreshOn:"Actualización automática",autoRefreshOff:"Actualización manual",loadFailed:"No se pudieron cargar las métricas de rendimiento",systemCpu:"CPU del sistema",systemMemory:"Memoria del sistema",activeSessions:"Sesiones activas",runningSessions:"En ejecución {count}",workers:"Workers",totalWorkerMemory:"Memoria total de Worker",processes:"Procesos",uptime:"Tiempo activo",running:"En ejecución",stopped:"Detenido",workerMemory:"Memoria de Worker",lastUpdated:"Actualizado",profile:"Profile",memory:"Memoria",sessions:"Sesiones",runningActiveSessions:"En ejecución / Activas",lastUsed:"Último uso",status:"Estado",noWorkers:"Sin Workers",sessionsByProfile:"Sesiones por Profile",noActiveSessions:"No hay sesiones activas"},journey:{title:"Trayectoria de aprendizaje",play:"Reproducir trayectoria",pause:"Pausar trayectoria",refresh:"Actualizar",categorySelection:"Selección de categorías",nodeKinds:"Tipos de nodo",description:"Descripción",canvasInstructions:"Usa las flechas para previsualizar nodos, Enter para abrir detalles y Escape para borrar la selección.",loadFailed:"No se pudo cargar la trayectoria",nodes:"Nodos",edges:"Conexiones",skills:"Habilidades",memories:"Memorias",clusters:"Grupos",profile:"Profile",source:"Origen",learnedSkills:"Habilidades aprendidas",memorySkillEdges:"Enlaces de memoria",allKinds:"Todos los tipos",allCategories:"Todas las categorias",searchPlaceholder:"Buscar nodos",noClusters:"Sin grupos",noNodes:"Sin nodos de trayectoria",noCategory:"Sin categoria",category:"Categoria",useCount:"Usos",createdBy:"Creado por",timestamp:"Hora",pinned:"Fijado"},drawer:{terminal:"Terminal",files:"Espacio de trabajo"},subagent:{title:"Tarea en segundo plano",noGoal:"Tarea en segundo plano sin título",open:"Abrir salida en directo de la tarea",close:"Cerrar salida de la tarea",waiting:"Esperando salida en directo…",tool:"Herramienta",tools:"{count} herramientas",tokens:"{input} entrada · {output} salida",started:"Iniciada",running:"En ejecución",completed:"Completada",failed:"Fallida",cancelled:"Cancelada",interrupted:"Interrumpida"},realtimeVoice:{title:"Voz en tiempo real",mode:"Modo de voz",open:"Abrir voz en tiempo real",back:"Volver al chat",connected:"Enlace de voz listo",turnMode:"Vista previa en tiempo real · por turnos",browserStt:"Navegador",browserTts:"Navegador",untitledSession:"Conversación sin título",sessionMissing:"La conversación no está disponible.",backendStreamRequired:"La voz en tiempo real en móviles y escritorio requiere un proveedor de transcripción de servidor configurado.",networkUnavailableNoFallback:"El reconocimiento de voz del navegador no tiene conexión y no hay un STT alternativo utilizable configurado.",liveTranscript:"Transcripción en directo",transcriptPlaceholder:"Toca el núcleo de voz y empieza a hablar",recentTurns:"Turnos recientes",you:"Tú",mute:"Silenciar salida",unmute:"Activar sonido",finishTurn:"Finalizar turno",speak:"Empezar a hablar",end:"Finalizar",status:{idle:"Listo",paused:"Micrófono apagado",listening:"Escuchando",processing:"Transcribiendo",thinking:"{agent} está pensando",speaking:"{agent} está hablando",error:"Enlace de voz interrumpido"},hint:{idle:"Toca el centro para iniciar un turno de voz",paused:"Activa el micrófono cuando estés listo",listening:"Haz una pausa para enviar o toca para finalizar",listeningManual:"Grabando. Toca el centro otra vez para detener y transcribir",processing:"Convirtiendo tu voz en texto",thinking:"Tu mensaje se envió a la conversación actual",speaking:"Puedes interrumpir en cualquier momento",error:"Toca el centro para intentarlo de nuevo"}},chat:{contextRemaining:"restante",contextClickToEdit:"Haz clic para editar la longitud del contexto",contextEditTitle:"Editar longitud del contexto",contextEditDesc:"Establecer el límite de longitud del contexto para el modelo actual (en tokens)",contextEditPlaceholder:"Ingresa la longitud del contexto",contextEditHint:"Valores comunes: 256k (Hermes predeterminado), 128k (GPT-4), 32k (GPT-3.5)",contextEditSave:"Guardar",contextEditCancel:"Cancelar",contextEditInvalid:"Por favor ingresa una longitud de contexto válida",contextEditSuccess:"Longitud del contexto actualizada",contextEditFailed:"Error en la actualización",emptyState:"Inicia una conversacion con Hermes Agent",emptyStateAgent:"Inicia una conversacion con {agent}",viewOlderInHistory:"Ver mensajes anteriores en el historial",scrollToBottom:"Ir al final",outlineTitle:"Esquema de la conversación",outlineEmpty:"Sin contenido de conversación",outlineUserQuestion:"Pregunta del usuario",inputPlaceholder:"Escribe un mensaje... (Enter para enviar, Shift+Enter para nueva linea)",inputHeightResizeHint:"Arrastra para cambiar la altura del cuadro de chat y haz doble clic para restablecerla.",slashCommandArgs:{message:"<mensaje>",title:"<titulo>",text:"<texto>"},slashCommands:{usage:"Calcular el uso de la sesión actual",status:"Mostrar estado de sesión y cola",yolo:"Alternar el modo YOLO de la sesión y omitir aprobaciones de comandos peligrosos",abort:"Detener la ejecución activa de Bridge",queue:"Poner un mensaje en cola tras la ejecución activa",learn:"Aprender un skill reutilizable desde fuentes descritas",plan:"Escribir un plan de implementación en Markdown",goal:"Set a standing goal that continues across turns",goalStatus:"Show the active goal status",goalPause:"Pause the active goal loop",goalResume:"Resume the paused goal loop",goalDone:"Complete and clear the active goal",goalClear:"Clear the active goal",subgoal:"Add a criterion to the active goal",clear:"Limpiar la vista actual",clearHistory:"Eliminar el historial de mensajes guardado de esta sesión",title:"Renombrar esta sesión",compress:"Ejecutar compresión de contexto cuando esté inactiva",steer:"Enviar texto de guía a la ejecución activa de Bridge",destroy:"Liberar el agente Bridge de esta sesión",reloadMcp:"Recargar servidores MCP",reloadSkills:"Recargar comandos de skills",bundles:"Explorar bundles de skills",bundlesCreate:"Crear un bundle de skills"},bundlePicker:{title:"Bundles de skills",create:"Crear bundle",searchPlaceholder:"Buscar bundles...",skillCount:"{count} skills",skillsLabel:"Skills",noSkills:"No hay skills configurados",deleteBundle:"Eliminar {name}",deleteTitle:"Eliminar bundle",deleteConfirm:"¿Eliminar “{name}” de este perfil? Esta acción no se puede deshacer.",deleteFailed:"No se pudo eliminar el bundle",deleted:"Bundle eliminado",noBundles:"Aún no hay bundles. Crea uno para combinar varios skills.",noMatch:"No hay bundles coincidentes"},bundleCreator:{title:"Crear bundle de skills",name:"Nombre",namePlaceholder:"p. ej., PR Review Team",nameHint:"Usa letras inglesas, números, espacios, guiones o guiones bajos.",description:"Descripción",descriptionPlaceholder:"¿Para qué se debe usar este bundle?",skills:"Skills",skillsPlaceholder:"Selecciona uno o más skills",nameRequired:"Introduce un nombre para el bundle",nameInvalid:"Usa un nombre en inglés con al menos una letra",skillsRequired:"Selecciona al menos un skill",skillsLoadFailed:"No se pudieron cargar los skills",createFailed:"No se pudo crear el bundle",created:"Bundle creado"},attachFiles:"Adjuntar archivos",reasoningEffort:{tooltip:"Esfuerzo de razonamiento",defaultLabel:"Predeterminado",options:{default:"Predeterminado (config.yaml)",none:"Ninguno",minimal:"Mínimo",low:"Bajo",medium:"Medio",high:"Alto",max:"Max",xhigh:"Extra alto",ultra:"Ultra"}},showToolCalls:"Mostrar llamadas de herramientas",hideToolCalls:"Ocultar llamadas de herramientas",messageQueue:"Cola de mensajes",removeQueuedMessage:"Quitar mensaje de la cola",stop:"Detener",send:"Enviar",contextUsed:"Contexto utilizado:",sessions:"Sesiones",webUiSessions:"Sesiones",allProfiles:"Todos los perfiles",profileMissingModelsTip:'El perfil "{profile}" no tiene proveedor ni modelo disponible para esta sesión',sessionScopeHint:"Chat solo muestra sesiones de Web UI/API Server. Las sesiones de CLI, Telegram, Discord, Cron y otros canales son de solo lectura en Historial.",openHistory:"Abrir historial",hermesHistory:"Historial de Hermes",historyScopeHint:"Sesiones del historial de Hermes del perfil actual, de solo lectura y agrupadas por origen.",noSessions:"Sin sesiones",recent:"Recientes",recentCount:"Cantidad de sesiones recientes",loadMoreSessions:"Cargar más sesiones",newChat:"Nuevo chat",category:"Categoría",uncategorized:"Sin categoría",categoryPlaceholder:"Seleccionar o crear una categoría",categoryCreateHint:"Escribe un nombre y pulsa Enter para crearla.",categoryCreated:"Categoría «{name}» creada",categoryCreateFailed:"No se pudo crear la categoría",categoryLoadFailed:"No se pudieron cargar las categorías",moveToCategory:"Mover a categoría",categoryUpdated:"Categoría actualizada",categoryUpdateFailed:"No se pudo actualizar la categoría",renameCategory:"Renombrar categoría",deleteCategory:"Eliminar categoría",enterCategoryName:"Introduce el nombre de la categoría",confirmDeleteCategory:"¿Eliminar «{name}»? Sus sesiones pasarán a Sin categoría.",categoryRenamed:"Categoría renombrada",categoryRenameFailed:"No se pudo renombrar la categoría",categoryDeleted:"Categoría eliminada",categoryDeleteFailed:"No se pudo eliminar la categoría",agent:"Agent",approvalKicker:"Permiso de herramienta",toolResultUnavailable:"Ejecución interrumpida; no se recibió resultado",approvalCommand:"Comando que se ejecutará",approvalTitle:"Revisar llamada de herramienta antes de ejecutar",approvalAgree:"Aceptar",approvalAllowOnce:"Permitir una vez",approvalAllowSession:"Permitir sesión",approvalAlways:"Siempre",approvalDeny:"Denegar",clarifyKicker:"El agente necesita aclaración",clarifyTitle:"El agente tiene una pregunta para usted",clarifyPlaceholder:"Escriba su respuesta...",clarifySubmit:"Responder",clarifyDismiss:"Descartar",deleteSession:"Eliminar esta sesion?",toggleBatchMode:"Selección por lotes",selectAll:"Seleccionar todo",confirmBatchDelete:"¿Eliminar {count} sesiones seleccionadas?",batchDeleteSuccess:"{count} sesiones eliminadas",batchDeletePartial:"{failed} sesiones fallaron al eliminar",batchDeleteFailed:"Error al eliminar por lotes",importToWebUi:"Importar a Web UI",importSessionSuccess:"Sesion importada a Web UI",importSessionAlreadyExists:"La sesion ya existe en Web UI",importSessionFailed:"Error al importar la sesion",sessionDeleted:"Sesion eliminada",rename:"Renombrar",archiveSession:"Archivar",unarchiveSession:"Desarchivar",pin:"Fijar",unpin:"Desfijar",pinned:"Fijados",chatMode:"Modo de chat",liveMode:"En vivo",liveSessions:"Sesiones en vivo",recentBadge:"Reciente",linkedSessions:"{count} vinculadas",noVisibleMessages:"No hay mensajes visibles para humanos.",monitorRoleUser:"Usuario",monitorRoleAssistant:"Asistente",copySessionLink:"Copiar enlace de sesión",openSessionInNewTab:"Abrir en una nueva pestaña",openSessionInNewWindow:"Abrir en una nueva ventana",sessionLinkCopied:"Session link copied",copySessionId:"Copiar ID de sesión",export:"Exportar",editConfig:"Editar configuración",exportFull:"Exportación completa (JSON)",exportCompressed:"Exportación comprimida (TXT)",exportCompressing:"Comprimiendo contexto, espere...",exportSuccess:"Sesión exportada",exportFailed:"Error al exportar",renamed:"Renombrada",renameFailed:"Error al renombrar",sessionArchived:"Sesión archivada",archiveSessionFailed:"No se pudo archivar la sesión",sessionUnarchived:"Sesión desarchivada",unarchiveSessionFailed:"No se pudo desarchivar la sesión",renameSession:"Renombrar sesion",sessionNotFound:"Sesion no encontrada",enterNewTitle:"Introduce un nuevo titulo",other:"Otro",runFailed:"Error en la ejecucion",error:"Error",tool:"Herramienta",arguments:"Argumentos",result:"Resultado",workspaceChanges:"Cambios del workspace",changedFiles:"{files} archivos modificados",changesThisTurn:"Cambios de este turno",diffUnavailable:"Diff no disponible",binaryFileDiffUnavailable:"Diff no disponible para archivos binarios",truncated:"... (truncado)",unchangedLines:"{count} líneas sin cambios",executionDuration:"Tiempo de ejecución",thinkingLabel:"Pensamiento",thinkingInProgress:"Pensando",thinkingShow:"Mostrar pensamiento",thinkingHide:"Ocultar pensamiento",thinkingDuration:"Observado {duration}",thinkingChars:"{count} caracteres",copyBubble:"Copiar mensaje",copiedBubble:"Mensaje copiado",copyFailed:"Error al copiar",referenceMessage:"Citar mensaje",cancelReference:"Cancelar cita",playSpeech:"Reproducir voz",pauseSpeech:"Pausa",resumeSpeech:"Reanudar",stopSpeech:"Detener",speechNotSupported:"Reproducción de voz no soportada en este navegador",searchEnterHint:"Enter para abrir · Esc para cerrar",searchHint:"Cmd/Ctrl+K",searchScope:"Alcance de búsqueda: solo base de datos local de sesiones de Web UI; no incluye sesiones históricas Hermes de solo lectura.",searchFailed:"No se pudieron buscar sesiones",searchNoSnippet:"No hay resumen disponible",searchNoResults:"No hay sesiones que coincidan",searchRecent:"Sesión reciente",searchEmpty:"Sesiones recientes",searchPlaceholder:"Buscar sesiones...",searchSubtitle:"Buscar por título o contenido de mensajes",searchTitle:"Buscar sesiones",stopGateway:"Detener gateway",start:"Iniciar",workspaceSetFailed:"No se pudo definir el workspace",workspaceSet:"Workspace definido",workspacePlaceholder:"Introduce la ruta del proyecto, p. ej. /home/user/project",folderPickerEmpty:"(Vacío)",folderPickerNoFolders:"No hay carpetas de workspace",folderPickerSelected:"Seleccionado:",workspaceDefault:"Predeterminado",workspaceDefaultTooltip:"Este espacio de trabajo está definido como predeterminado y se rellenará automáticamente en chats nuevos",workspacePin:"Definir como espacio de trabajo predeterminado",workspaceUnpin:"Quitar espacio de trabajo predeterminado",workspaceRecent:"Reciente",defaultWorkspace:"Espacio de trabajo predeterminado",more:"Más",workspace:"Espacio de trabajo",setWorkspaceTitle:"Definir workspace de sesión",setWorkspace:"Definir workspace",modelSetFailed:"No se pudo definir el modelo",modelSet:"Modelo definido",modelSwitching:"Cambiando de modelo...",setModelTitle:"Definir modelo de sesión",standardModels:"Modelos estándar",moaPresets:"Combinaciones MoA",noMoaPresets:"No hay combinaciones MoA disponibles",modelType:"Tipo de modelo",setModel:"Definir modelo",newCliChat:"Nuevo CLI",cliEmptyState:"Iniciar chat CLI",autoPlaySpeech:"Reproducir voz automáticamente",voiceInput:{startCapture:"Iniciar entrada de voz",stopCaptureAndInsert:"Detener entrada de voz e insertar la transcripcion",cancelCapture:"Cancelar entrada de voz",statusLabel:"Estado: {status}",transcriptLabel:"Transcripcion: {text}",errorLabel:"Error: {error}",recentEvents:"Eventos recientes",status:{idle:"Inactivo",capturing:"Escuchando",transcribing:"Transcribiendo",sending:"Insertando en la entrada",error:"Error"},browserSpeechUnsupported:"El reconocimiento de voz del navegador no es compatible con este navegador.",browserSpeechFailed:"Fallo el reconocimiento de voz del navegador.",browserSpeechFailedWithReason:"Fallo el reconocimiento de voz del navegador: {error}.",microphoneUnsupported:"La captura de microfono no es compatible con este navegador.",microphoneRecordingFailed:"Fallo la grabacion del microfono."}},jobs:{title:"Tareas programadas",createJob:"Crear tarea",editJob:"Editar tarea",noJobs:"No hay tareas programadas aun. Crea una para comenzar.",sortBy:"Ordenar",sortByName:"Por nombre",sortByTime:"Por fecha",sortByNameHint:"Ordenar por nombre",sortByTimeHint:"Ordenar por fecha",sortAsc:"Ascendente",sortDesc:"Descendente",name:"Nombre",namePlaceholder:"Nombre de la tarea",schedule:"Programacion (expresion Cron)",schedulePlaceholder:"ej. 0 9 * * *",quickPresets:"Presets rapidos",selectPreset:"Seleccionar un preset...",presetEveryMinute:"Cada minuto",presetEvery5Min:"Cada 5 minutos",presetEveryHour:"Cada hora",presetEveryDay:"Todos los dias a las 00:00",presetEveryDay9:"Todos los dias a las 09:00",presetEveryMonday:"Cada lunes a las 09:00",presetEveryMonth:"El dia 1 de cada mes a las 09:00",prompt:"Prompt",promptPlaceholder:"El prompt a ejecutar",skills:"Skills",skillsPlaceholder:"Seleccionar skills...",provider:"Provider",model:"Model",defaultProvider:"Default provider",defaultModel:"Default model",deliverTarget:"Destino de entrega",origin:"Origen",local:"Local",repeatCount:"Repeticiones (opcional)",modelPlaceholder:"Modelo por defecto",repeatPlaceholder:"Dejar vacio para infinito",jobCreated:"Tarea creada",jobUpdated:"Tarea actualizada",nameRequired:"El nombre es obligatorio",scheduleRequired:"La programacion es obligatoria",promptRequired:"El prompt es obligatorio",loadFailed:"Error al cargar la tarea",jobPaused:"Tarea en pausa",jobResumed:"Tarea reanudada",jobTriggered:"Job ejecutado",modelUpdated:"Modelo actualizado",jobDeleted:"Tarea eliminada",status:{running:"En ejecucion",paused:"En pausa",disabled:"Desactivada",scheduled:"Programada"},info:{model:"Modelo",provider:"Provider",schedule:"Programacion",lastRun:"Ultima ejecucion",nextRun:"Proxima ejecucion",deliver:"Entrega",repeat:"Repeticion"},action:{pause:"Pausar",pauseJob:"Pausar tarea",resume:"Reanudar",resumeJob:"Reanudar tarea",runNow:"Ejecutar ahora",triggerImmediately:"Ejecutar inmediatamente"},runHistory:{title:"Historial",runs:"ejecuciones",noRuns:"No se encontró historial."}},skills:{title:"Habilidades",targetFilter:"Runtime",targets:{hermes:"Hermes",claude:"Claude",codex:"Codex"},searchPlaceholder:"Buscar habilidades...",noMatch:"Ninguna habilidad coincide con tu busqueda",noSkills:"No se encontraron habilidades",backTo:"Volver a",attachedFiles:"Archivos adjuntos",loadFailed:"Error al cargar la habilidad",fileLoadFailed:"Error al cargar el archivo",modified:"Modificado por el usuario",archived:"Archivado",pinned:"Fijado",pin:"Fijar habilidad",unpin:"Desfijar habilidad",pinFailed:"Error al cambiar estado de fijacion",edit:"Editar",saving:"Guardando...",editorLabel:"Editor de skill",saveSuccess:"Habilidad guardada",saveFailed:"Error al guardar la habilidad",toggleFailed:"Error al activar/desactivar la habilidad",source:{builtin:"Integrado",hub:"Hub",local:"Local",external:"Externo"},delete:"Eliminar",deleteConfirm:'¿Eliminar la habilidad "{name}"? Esta acción no se puede deshacer.',deleteSuccess:"Habilidad eliminada",deleteFailed:"No se pudo eliminar",import:"Importar",importTitle:"Importar habilidad",importModeZip:"Zip",importModeFolder:"Carpeta",importHintZip:"Sube un archivo .zip con un directorio que contenga SKILL.md",importHintFolder:"Selecciona una carpeta local (debe contener SKILL.md)",importTargetCategory:"Categoría destino (opcional)",importTargetCategoryPlaceholder:"Vacío para colocar bajo misc",importSelectFile:"Elegir archivo .zip",importSelectFolder:"Elegir carpeta",importInvalidFile:"Solo se admiten archivos .zip",importFileCount:"archivos",importNoSelection:"Selecciona un archivo o carpeta primero",importSuccess:"Habilidad importada",importFailed:"Error al importar",path:{local:"Local",external:"Externo"},externalDirs:{manage:"Directorios externos",title:"Gestionar directorios externos",hint:"Gestiona config.skills.external_dirs. Admite ~ y $VAR; las rutas inexistentes se atenúan.",add:"Añadir directorio",placeholder:"/path/to/skills o ~/my-skills",empty:"Sin directorios externos",missing:"Ruta no encontrada",notDir:"No es un directorio",saveSuccess:"Directorios externos guardados",saveFailed:"Error al guardar",loadFailed:"Error al cargar directorios externos",removeRow:"Quitar"},pathCopied:"Ruta copiada",pathCopyFailed:"Error al copiar la ruta",reloadHint:"Sesiones activas: ejecuta /reload-skills; las nuevas la cargan automáticamente.",writeApprovalButton:"Pendientes {count}",writeApprovalTitle:"Escrituras pendientes de revision",writeApprovalDescription:"Aprueba o rechaza escrituras de memoria y skills preparadas por Hermes Agent.",writeApprovalRefresh:"Actualizar",writeApprovalEmpty:"No hay escrituras pendientes.",writeApprovalUnsupported:"Esta version de Hermes Agent no admite revision de escrituras. Actualiza Hermes Agent para usar esta funcion.",writeApprovalMemory:"Memoria",writeApprovalSkills:"Skills",writeApprovalViewDiff:"Revisar",writeApprovalHideDiff:"Ocultar",writeApprovalNoDiff:"No hay diferencias disponibles.",writeApprovalLoadFailed:"No se pudieron cargar las escrituras pendientes",writeApprovalDiffFailed:"No se pudieron cargar los detalles de escritura",writeApprovalActionFailed:"No se pudo resolver la escritura pendiente",writeApprovalApproved:"Escritura aprobada",writeApprovalRejected:"Escritura rechazada",writeApprovalApprove:"Aprobar",writeApprovalReject:"Rechazar",writeApprovalPendingMemoryWrite:"Escritura de memoria pendiente",writeApprovalCurrentFile:"Archivo actual {file}",writeApprovalProposedFile:"Archivo propuesto {file}",writeApprovalDiffSection:"Diferencias",writeApprovalPatchOldStringMissing:"No se encontro el old_string del parche en el archivo actual {file}; aprobarlo no cambiara el archivo.",writeApprovalRequestedOldString:"old_string solicitado",writeApprovalCurrentReadFailed:"El archivo actual {file} no se pudo leer como texto UTF-8.",writeApprovalDeleteSkill:"Esta aprobacion elimina el skill {skill}.",writeApprovalRemoveFile:"Esta aprobacion elimina {file} del skill {skill}."},plugins:{title:"Plugins",refresh:"Actualizar",notice:"Inventario de manifests de plugins Hermes detectables. Los metadatos de descubrimiento se leen sin cargar código de plugins. Los plugins de usuario standalone se pueden activar o desactivar aquí; los cambios se aplican en nuevas sesiones Hermes.",loadFailed:"No se pudieron cargar los plugins",updateFailed:"No se pudo actualizar el plugin",enableSuccess:"{name} activado",disableSuccess:"{name} desactivado",commandCopied:"Comando copiado",searchPlaceholder:"Buscar key, nombre, descripción, ruta...",source:"Origen",kind:"Tipo",statusTitle:"Estado",configStatus:"config: {status}",notAvailable:"n/a",copyCommand:"Copiar comando",managedElsewhere:"gestionado en otro lugar",noMatch:"Ningún plugin coincide con los filtros actuales",enabled:"activado",disabled:"desactivado",summary:{total:"Total",active:"Activado / auto",inactive:"Inactivo",disabled:"Desactivado",providerManaged:"Gestionado por provider"},status:{enabled:"Activado","auto-active":"Autoactivo",inactive:"Inactivo",disabled:"Desactivado","provider-managed":"Gestionado por provider"},statusLabel:{enabled:"Activado por configuración","auto-active":"Autoactivo",inactive:"Inactivo",disabled:"Desactivado","provider-managed":"Gestionado por provider"},configStatuses:{enabled:"activado",disabled:"desactivado","not-enabled":"no activado",auto:"auto","provider-managed":"gestionado por provider"},table:{plugin:"Plugin",status:"Estado",source:"Origen",kind:"Tipo",capabilities:"Capacidades",path:"Ruta / entrypoint",manage:"Gestionar"},capabilities:{tools:"{count} herramientas",hooks:"{count} hooks",env:"{count} env"},metadata:{agentRoot:"Raíz del agente",python:"Python",scanCwd:"Escanear cwd",projectPlugins:"Plugins del proyecto"}},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:"Memoria",refresh:"Actualizar",loadFailed:"Error al cargar la memoria",myNotes:"Mis notas",noNotes:"Sin notas aun.",notesPlaceholder:"Escribe tus notas...",userProfile:"Perfil de usuario",noProfile:"Sin perfil aun.",profilePlaceholder:"Escribe tu perfil...",soul:"Alma",noSoul:"Sin configuracion de alma aun.",soulPlaceholder:"Escribe la configuracion del alma..."},models:{title:"Modelos",addProvider:"Anadir proveedor",noProviderPromptTitle:"No hay proveedor de modelos configurado",noProviderPromptMessage:'El perfil actual "{profile}" no tiene ningun proveedor de modelos configurado. Quieres abrir la configuracion de modelos?',noProviderPromptLater:"Ahora no",noProviderPromptAction:"Ir a configuracion",refreshModelCache:"Actualizar cache de modelos",refreshModelCacheLoading:"Actualizando cache de modelos...",refreshModelCacheSuccess:"Cache de modelos actualizado",refreshModelCacheFailed:"No se pudo actualizar el cache de modelos",refreshModels:"Actualizar modelos",restoreModels:"Restaurar la lista anterior",refreshModelsConfirmTitle:"Confirmar cambios en la lista de modelos",refreshModelsConfirmContent:"Esta actualización eliminará {removed} modelo(s) y añadirá {added}. Se eliminarán: {removedList}",refreshModelsConfirmAction:"Reemplazar la lista de modelos",refreshModelsSuccess:"Lista de modelos actualizada ({count} modelos, {unavailable} no disponibles)",refreshModelsFailed:"No se pudieron actualizar los modelos del proveedor",restoreModelsSuccess:"Lista de modelos anterior restaurada ({count} modelos)",restoreModelsFailed:"No se pudo restaurar la lista de modelos anterior",providerType:"Tipo de proveedor",preset:"Preajuste",custom:"Personalizado",selectProvider:"Seleccionar proveedor",chooseProvider:"Elige un proveedor...",name:"Nombre",autoGeneratedName:"Generado automaticamente desde la URL base",baseUrl:"URL base",region:"Región",regionIntl:"Internacional",regionCn:"China continental",baseUrlPlaceholder:"ej. https://api.example.com/v1",apiKey:"Clave API",apiKeyPlaceholder:"sk-...",defaultModel:"Modelo predeterminado",selectOrInput:"Seleccionar o ingresar un modelo...",selectModel:"Seleccionar un modelo...",providerAdded:"Proveedor anadido",providerDeleted:"Proveedor eliminado",providerCredentialsCleared:"Credenciales del proveedor borradas",clearProviderCredentials:"Borrar credenciales",clearCredentialsConfirm:'¿Borrar las credenciales guardadas de "{name}"? Este proveedor integrado seguira apareciendo y podra usarse de nuevo cuando se configuren credenciales.',disableProvider:"Desactivar proveedor",disableProviderConfirm:'¿Desactivar el proveedor integrado "{name}"? El proveedor seguira siendo integrado y podra reactivarse mas tarde.',providerDisabled:"Proveedor desactivado",defaultProviderUpdated:"Proveedor predeterminado actualizado",defaultProviderUpdateFailed:"No se pudo actualizar el proveedor predeterminado",defaultModelUpdated:"Modelo predeterminado actualizado",defaultModelUpdateFailed:"No se pudo actualizar el modelo predeterminado",deleteProvider:"Eliminar proveedor",deleteConfirm:'Estas seguro de que quieres eliminar "{name}"?',codexLoginTitle:"Inicio de sesión de OpenAI Codex",codexWaiting:"Ingrese este código en la página de autorización para iniciar sesión:",codexCopyCode:"Código copiado",codexOpenLink:"Abrir página de autorización",codexApproved:"Inicio de sesión exitoso",codexExpired:"La autorización ha expirado. Por favor, inténtelo de nuevo.",nousLoginTitle:"Inicio de sesión de Nous Portal",nousWaiting:"Ingrese este código en la página de autorización:",nousCopyCode:"Código copiado",nousOpenLink:"Abrir página de autorización",nousApproved:"Inicio de sesión exitoso",nousDenied:"Autorización denegada",nousExpired:"Autorización expirada",copilotLoginTitle:"Inicio de sesión de GitHub Copilot",copilotWaiting:"Abra GitHub e introduzca el código de dispositivo a continuación para autorizar. La ventana se cerrará automáticamente tras la aprobación.",copilotCopyCode:"Código copiado",copilotOpenLink:"Abrir la página de autorización de GitHub",copilotApproved:"¡Inicio de sesión exitoso!",copilotDenied:"Autorización denegada.",copilotExpired:"El enlace de autorización ha caducado. Vuelva a intentarlo.",copilotAddDetectedTitle:"GitHub Copilot detectado",copilotAddDetected:"Se detectó un token OAuth de GitHub Copilot en este equipo. Haz clic en Agregar para habilitar Copilot en Hermes.",copilotAddSourceEnv:"Origen: ~/.hermes/.env (COPILOT_GITHUB_TOKEN)",copilotAddSourceGhCli:"Origen: gh CLI (gh auth token)",copilotAddSourceAppsJson:"Origen: extensión Copilot de VS Code (apps.json)",copilotDeleteHintEnv:"Esto borrará COPILOT_GITHUB_TOKEN en ~/.hermes/.env. Otras herramientas no se verán afectadas.",copilotDeleteHintGhCli:"Copilot se ocultará de Hermes. Tu sesión de gh CLI no se verá afectada — `gh auth status` seguirá mostrando que estás conectado.",copilotDeleteHintAppsJson:"Copilot se ocultará de Hermes. La extensión Copilot de VS Code seguirá conectada.",customBadge:"PERSONALIZADO",previewBadge:"VISTA PREVIA",disabledBadge:"NO DISPONIBLE",disabledTooltip:"Este modelo no está disponible para tu cuenta.",customModelPlaceholder:"ID de modelo no listado",customModelHint:"Para modelos compatibles con el proveedor que la API no devuelve; no es un cambio de nombre visible. Enter para cargar.",noProviders:"No se encontraron proveedores. Anade un proveedor personalizado para comenzar.",clearVisibleModels:"Borrar selección",generalTitle:"Modelos generales",combinationTitle:"Conjuntos de modelos",combinationSubtitle:"Configura presets de MoA: los modelos de referencia aportan perspectivas primero y luego un modelo agregador produce la respuesta final y las llamadas a herramientas.",combinationPreset:"Preset",combinationName:"Nombre",combinationAddModel:"Agregar conjunto de modelos",combinationEditModel:"Editar conjunto de modelos",combinationNewPreset:"Nuevo preset",combinationPresetPlaceholder:"p. ej. review",combinationAddPreset:"Agregar preset",combinationSetDefault:"Establecer como predeterminado",combinationEnabled:"Activar referencias",combinationReferenceModels:"Modelos de referencia",combinationReferenceModel:"Modelo de referencia",combinationAddReference:"Agregar modelo de referencia",combinationAggregator:"Modelo agregador",combinationReferenceTemperature:"Temperatura de referencia",combinationAggregatorTemperature:"Temperatura del agregador",combinationMaxTokens:"Tokens maximos",combinationNotSet:"Sin configurar",combinationSaved:"Conjunto de modelos guardado",combinationLoadFailed:"No se pudo cargar el conjunto de modelos",combinationSaveFailed:"No se pudo guardar el conjunto de modelos",combinationPresetExists:"El preset ya existe",combinationNameRequired:"Introduce un nombre para el conjunto de modelos",combinationNameInvalid:"El nombre solo puede contener letras, numeros, guiones bajos, guiones y puntos",combinationReferenceRequired:"Agrega al menos un modelo de referencia",combinationAggregatorRequired:"Selecciona un modelo agregador",auxiliaryTitle:"Modelos auxiliares",auxiliarySubtitle:"Sobrescrituras de modelo para tareas secundarias como compresión, visión, aprobaciones, MCP y mantenimiento en segundo plano.",auxiliaryRefresh:"Actualizar",auxiliaryTask:"Tarea",auxiliaryTimeout:"Tiempo de espera",auxiliaryDownloadTimeout:"Tiempo de espera de descarga",auxiliaryActions:"Acciones",auxiliaryDefault:"Predeterminado",auxiliaryCustomEndpoint:"Endpoint personalizado",auxiliaryProviderAuto:"Automático",auxiliaryProviderMain:"Modelo principal",auxiliaryProviderPlaceholder:"auto, main o clave del proveedor",auxiliaryDownloadShort:"descarga",auxiliaryExtraBody:"JSON de cuerpo extra",auxiliaryClear:"Restablecer",auxiliarySaved:"Modelos auxiliares guardados",auxiliaryLoadFailed:"No se pudieron cargar los modelos auxiliares",auxiliarySaveFailed:"No se pudieron guardar los modelos auxiliares",auxiliaryInvalidExtraBody:"El cuerpo extra debe ser un objeto JSON",auxiliaryTaskCompression:"Compresión",auxiliaryTaskVision:"Visión",auxiliaryTaskWebExtract:"Extracción web",auxiliaryTaskSkillsHub:"Centro de habilidades",auxiliaryTaskApproval:"Aprobación",auxiliaryTaskMcp:"MCP",auxiliaryTaskTitleGeneration:"Generación de títulos",auxiliaryTaskTriageSpecifier:"Especificador de triage",auxiliaryTaskKanbanDecomposer:"Descomposición de Kanban",auxiliaryTaskProfileDescriber:"Descripción de perfil",auxiliaryTaskCurator:"Curador",auxiliaryTaskSessionSearch:"Búsqueda de sesiones",auxiliaryTaskFlushMemories:"Guardar memorias",currentDefault:"Predeterminado actual",defaultShort:"Predeterminado",setDefaultProvider:"Establecer como proveedor predeterminado",setDefault:"Establecer como predeterminado",builtIn:"Integrado",customType:"Personalizado",provider:"Proveedor",contextLength:"Longitud del contexto",contextLengthPlaceholder:"ej. 256000 (opcional)",apiMode:"Modo API",local:"Local ({host})",selectProviderRequired:"Por favor, selecciona un proveedor",baseUrlRequired:"La URL base es obligatoria",apiKeyRequired:"La clave API es obligatoria",modelRequired:"El modelo predeterminado es obligatorio",enterBaseUrl:"Por favor, introduce primero la URL base",unexpectedFormat:"Formato de respuesta inesperado",foundModels:"{count} modelos encontrados",fetchFailed:"Error al obtener los modelos",xaiWaiting:"Completa la autorización en la página de xAI abierta. La ventana se cerrará automáticamente al aprobarse.",xaiOpenLink:"Abrir página de autorización de xAI",xaiLoginTitle:"Inicio de sesión OAuth de xAI Grok",xaiExpired:"El enlace de autorización expiró. Inténtalo de nuevo.",xaiCopyLink:"Copiar enlace de autorización",xaiApproved:"¡Inicio de sesión correcto!",anthropicLoginTitle:"Inicio de sesión OAuth de Claude",anthropicWaiting:"Completa la autorización en Claude y pega aquí el código devuelto.",anthropicOpenLink:"Abrir página de autorización de Claude",anthropicCopyLink:"Copiar enlace de autorización",anthropicCodePlaceholder:"Pega el código de autorización...",anthropicSubmitCode:"Enviar código",anthropicApproved:"¡Inicio de sesión correcto!",anthropicExpired:"La autorización expiró. Inténtalo de nuevo.",minimaxLoginTitle:"Inicio de sesión de MiniMax Coding Plan",minimaxRegionHint:"Elige la región MiniMax de tu cuenta de Coding Plan.",minimaxGlobal:"Global",minimaxChina:"China",minimaxStart:"Iniciar autorización",minimaxWaiting:"Abre la página de autorización de MiniMax e introduce este código. La ventana se cerrará automáticamente tras la aprobación.",minimaxOpenLink:"Abrir página de autorización de MiniMax",minimaxApproved:"¡Inicio de sesión correcto!",minimaxExpired:"La autorización expiró. Inténtalo de nuevo.",visibilitySelectOne:"Mantén al menos un modelo visible",visibilitySaved:"Modelos visibles guardados",visibilitySaveFailed:"No se pudieron guardar los modelos visibles",visibilityHint:"Solo afecta al selector de modelos y a la página de modelos de Web UI. No modifica la configuración provider/model de Hermes CLI; las llamadas siguen usando el ID original del modelo.",showAllModels:"Mostrar todos los modelos",searchPlaceholder:"Buscar modelos...",noResults:"Sin resultados",noModels:"Sin modelos",removeCustomModel:"Eliminar este modelo no listado",refresh:"Actualizar lista de modelos (recargar config.yaml)",more:"más",models:"Lista de modelos",manageVisibleModelsFor:"Gestionar modelos visibles de {name}",manageVisibleModels:"Gestionar modelos visibles",getApiKey:"Obtener API Key",count:"modelos",aliasUseOriginal:"Restaurar ID original",aliasTitleFor:"Nombre visible de {model}",aliasTitle:"Nombre visible del modelo",aliasSaveFailed:"No se pudo guardar el nombre visible",aliasPlaceholder:"Dejar vacío para usar el ID original del modelo",aliasManageFor:"Nombres visibles de {provider}",aliasManage:"Nombres visibles",aliasHint:"Solo cambia el nombre visible en Web UI. Hermes sigue recibiendo el ID original del modelo.",aliasEdit:"Renombrar",aliasCanonical:"ID original: {model}"},profiles:{title:"Perfiles",create:"Crear perfil",import:"Importar",export:"Exportar",rename:"Renombrar",delete:"Eliminar",switchTo:"Cambiar Hermes Profile",switchConfirm:"Esto ejecutara `hermes profile use {name}` y cambiara el active profile de Hermes CLI. Continuar?",switchSuccess:'Hermes active profile cambiado a "{name}"',switchFailed:"Error al cambiar Hermes Profile. Es posible que la pasarela necesite un reinicio manual.",createSuccess:'Perfil "{name}" creado',createFailed:"Error al crear el perfil",renameSuccess:"Perfil renombrado",renameFailed:"Error al renombrar el perfil",deleteConfirm:'Estas seguro de que quieres eliminar el perfil "{name}"?',deleteSuccess:"Perfil eliminado",deleteFailed:"Error al eliminar el perfil",exportSuccess:"Perfil exportado",exportFailed:"Error al exportar el perfil",exportTimeout:"Se agotó el tiempo de exportación. Este perfil es demasiado grande para archivarlo: normalmente son las cachés y los entornos virtuales del workspace los que lo agrandan.",importTimeout:"La importación agotó el tiempo mientras el servidor descomprimía el archivo. Inténtalo de nuevo en un almacenamiento más rápido o impórtalo con Hermes CLI.",importSuccess:"Perfil importado",importFailed:"Error al importar el perfil",importSelectFile:"Seleccionar archivo de archivo",importInvalidFile:"Por favor, selecciona un archivo valido (.tar.gz, .tgz, .gz, .zip)",name:"Nombre del perfil",namePlaceholder:"Solo letras, numeros y guiones",nameValidation:"El nombre del perfil solo puede contener letras minúsculas, números, guiones bajos y guiones",newName:"Nuevo nombre",newNamePlaceholder:"Introduce un nuevo nombre",cloneFromCurrent:"Clonar desde el perfil actual",cloneCleanupNotice:"Al clonar se omiten automáticamente las credenciales exclusivas de plataforma (Weixin / Telegram / Slack, etc.) para evitar conflictos con el perfil de origen",cloneStrippedCredentials:"Se eliminaron {count} credenciales exclusivas: {list}",cloneDisabledPlatforms:"Se deshabilitaron {count} plataforma(s): {list}",cloneStrippedConfigCredentials:"Se eliminaron {count} credencial(es) integradas de config.yaml: {list}",archivePath:"Ruta del archivo",archivePathPlaceholder:"Ruta del servidor al archivo de archivo",importName:"Nombre del perfil (opcional)",importNamePlaceholder:"Dejar vacio para usar el nombre del archivo",active:"Activo",model:"Modelo",gateway:"Pasarela",alias:"Alias",provider:"Proveedor",path:"Ruta",skills:"Habilidades",hasEnv:"Tiene .env",hasSoulMd:"Tiene soul.md",noProfiles:"No se encontraron perfiles. Crea uno para comenzar.",avatar:{title:"Avatar personalizado",customize:"Personalizar avatar",upload:"Subir imagen",random:"Generar aleatorio",reset:"Restaurar predeterminado",hint:"PNG, JPEG o WebP, máximo 1 MB",invalidType:"Elige una imagen PNG, JPEG o WebP",tooLarge:"La imagen del avatar no puede superar 1 MB",saveSuccess:"Avatar guardado",saveFailed:"No se pudo guardar el avatar",resetSuccess:"Avatar predeterminado restaurado",resetFailed:"No se pudo restaurar el avatar predeterminado"},runtime:{activeProfile:"Actual: {name}",bridgeWorker:"Estado del Bridge",gateway:"Puerta de enlace",active:"Activo",activeTag:"Actual",idle:"Inactivo",checking:"Comprobando",running:"En ejecución",stopped:"Detenido",restartGateway:"Reiniciar gateway",restartProfile:"Reiniciar perfil",switchProfile:"Cambiar perfil frontend",gatewayRestarted:"Gateway reiniciado: {name}",gatewayRestartFailed:"No se pudo reiniciar el gateway",profileRestarted:"Perfil reiniciado: {name}",profileRestartFailed:"No se pudo reiniciar el perfil"}},logs:{title:"Registros",all:"Todos",searchPlaceholder:"Buscar...",refresh:"Actualizar",noEntries:"Sin entradas de registro"},theme:{title:"Tema",saved:"Tema guardado",saveFailed:"No se pudo guardar el tema",reset:"Restaurar valores",resetSuccess:"Tema predeterminado restaurado",appearance:"Apariencia",appearanceHint:"Los cambios se previsualizan en toda la interfaz",mode:"Brillo",modeHint:"Elige una paleta clara u oscura",modeSystem:"Seguir al sistema",modeLight:"Claro",modeDark:"Oscuro",style:"Estilo",styleHint:"Elige el carácter de la interfaz",styleInk:"Tinta",styleComic:"Cómic",fontSize:"Tamaño del texto",fontSizeHint:"Tamaño base de la interfaz y las conversaciones",textColor:"Color del texto",textColorHint:"Los tonos secundarios se generan automáticamente",accentColor:"Color de selección",accentColorHint:"Se usa en elementos activos, selecciones y botones principales",background:"Imagen de fondo",backgroundHint:"Sube un fondo personal para el espacio de trabajo",backgroundTypeError:"Usa una imagen PNG, JPEG, WebP o GIF",backgroundSizeError:"La imagen debe ocupar 10 MB o menos",backgroundUploaded:"Imagen de fondo actualizada",backgroundUploadFailed:"No se pudo subir la imagen de fondo",backgroundRemoved:"Imagen de fondo eliminada",backgroundRemoveFailed:"No se pudo eliminar la imagen de fondo",backgroundReplace:"Cambiar imagen",backgroundUpload:"Subir imagen",backgroundRemove:"Eliminar",backgroundEmpty:"Sin imagen de fondo",backgroundNote:"La imagen se guarda con tu cuenta. La caché local evita parpadeos.",preview:"Vista previa",previewTitle:"Tu espacio, tu ambiente",previewText:"Los colores de texto y selección se aplican a toda la interfaz.",previewAction:"Acción seleccionada"},settings:{title:"Configuracion",saved:"Guardado",saveFailed:"Error al guardar",tabs:{display:"Pantalla",account:"Cuenta actual",users:"Gestion de cuentas",webhooks:"Webhooks",agent:"Agente",proxy:"Proxy",memory:"Memoria",compression:"Compresion",session:"Sesion",privacy:"Privacidad",apiServer:"Servidor API",models:"Modelos",voice:"Voz"},webhooks:{title:"Webhooks",description:"Envía eventos del ciclo de vida de Chat Run a sistemas externos sin bloquear la ejecución del chat.",deliveryNote:"La entrega usa una cola en memoria limitada. Los endpoints se procesan en paralelo y cada endpoint conserva el orden de los eventos. Las entregas pendientes no se conservan al reiniciar el servidor.",createTitle:"Añadir webhook",editTitle:"Editar webhook",allProfiles:"Todos los perfiles",queued:"{count} en cola",deleteConfirm:"¿Eliminar este webhook? También se descartarán sus entregas pendientes.",localInboxTitle:"Bandeja de pruebas local",localInboxDescription:"{count} eventos recientes recibidos por el receptor de prueba integrado. Solo se guardan en memoria y se borran al reiniciar el servidor.",localInboxEmpty:"Aún no se han recibido eventos de prueba locales.",localInboxPayloadTitle:"Payload de webhook recibido",clearInboxConfirm:"¿Borrar todos los eventos de la bandeja de pruebas local?",columns:{name:"Nombre",url:"URL",events:"Eventos",profiles:"Perfiles",status:"Estado",actions:"Acciones",receivedAt:"Recibido",event:"Evento",eventId:"ID del evento",deliveryId:"ID de entrega"},events:{messageCreated:"Mensaje de usuario creado",runQueued:"Ejecución en cola",runStarted:"Ejecución iniciada",toolStarted:"Herramienta iniciada",toolCompleted:"Herramienta completada",toolFailed:"Herramienta fallida",approvalRequested:"Aprobación solicitada",approvalResolved:"Aprobación resuelta",clarificationRequested:"Aclaración solicitada",clarificationResolved:"Aclaración resuelta",completed:"Ejecución completada",failed:"Ejecución fallida"},status:{enabled:"Activado",disabled:"Desactivado"},runtime:{idle:"Inactivo",delivering:"Entregando",retrying:"Reintentando",success:"Entregado",failed:"Fallido",dropped:"Descartado"},actions:{add:"Añadir webhook",localTest:"Usar receptor de prueba local",test:"Probar",enable:"Activar",disable:"Desactivar",refresh:"Actualizar",clear:"Borrar",view:"Ver"},form:{name:"Nombre",localTestName:"Prueba local de webhook",namePlaceholder:"Por ejemplo: Notificaciones de operaciones",url:"URL del endpoint",secret:"Secreto de firma",secretPlaceholder:"Secreto opcional para la firma HMAC-SHA256",secretKeepPlaceholder:"Déjalo vacío para conservar el secreto actual",clearSecret:"Eliminar el secreto guardado",events:"Eventos",profiles:"Perfiles",profilesPlaceholder:"Déjalo vacío para recibir todos los perfiles",maxRetries:"Reintentos tras el primer fallo (0–10)",includeContent:"Incluir el texto final del asistente",includeContentHint:"La respuesta final puede contener información sensible. Nunca se incluyen el razonamiento, los prompts del sistema ni los argumentos de herramientas.",includeUserContent:"Incluir el texto del mensaje del usuario",includeUserContentHint:"Los mensajes de usuario pueden contener información sensible. Está desactivado de forma predeterminada y no incluye prompts del sistema, razonamiento, argumentos ni resultados de herramientas.",allowPrivateNetwork:"Permitir direcciones de red privadas o locales",allowPrivateNetworkHint:"Actívalo solo para endpoints internos de confianza. El DNS se vuelve a comprobar en cada entrega.",enabled:"Activado"},messages:{required:"El nombre y la URL son obligatorios",eventRequired:"Selecciona al menos un evento",loadFailed:"No se pudieron cargar los webhooks",saved:"Webhook guardado",saveFailed:"No se pudo guardar el webhook",deleted:"Webhook eliminado",deleteFailed:"No se pudo eliminar el webhook",testSucceeded:"Webhook de prueba entregado",testFailed:"Falló el webhook de prueba",localTestFailed:"No se pudo crear el receptor de prueba local",inboxLoadFailed:"No se pudieron cargar los eventos de prueba locales",inboxCleared:"Eventos de prueba locales borrados",inboxClearFailed:"No se pudieron borrar los eventos de prueba locales"}},display:{streaming:"Respuestas en streaming",streamingHint:"Mostrar respuestas de la IA en tiempo real",compact:"Modo compacto",compactHint:"Reducir el espaciado entre mensajes",showReasoning:"Mostrar razonamiento",showReasoningHint:"Mostrar el proceso de pensamiento del modelo",showCost:"Mostrar costo",showCostHint:"Mostrar uso de tokens en las respuestas",inlineDiffs:"Diffs en linea",inlineDiffsHint:"Mostrar cambios de codigo en linea",bellOnComplete:"Sonido de finalizacion",bellOnCompleteHint:"Reproducir un sonido cuando la IA termina",notifyOnComplete:"Notificacion de finalizacion",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:"Mostrar una notificacion del sistema cuando la IA termina",notifyOnCompleteMacHint:"En macOS, permite las notificaciones del navegador en Ajustes del Sistema.",notifyOnCompleteDenied:"Permiso de notificacion denegado",notifyOnCompleteInsecure:"Las notificaciones del navegador requieren HTTPS o localhost",notifyOnCompleteUnsupported:"Este navegador no admite notificaciones",notifyOnCompleteTest:"Notificaciones activadas.",notifyOnCompleteTestButton:"Probar",notifyOnCompleteTesting:"Enviando notificacion de prueba...",notifyOnCompleteTestSent:"Notificacion de prueba enviada",notifyOnCompleteTestFailed:"No se pudo enviar la notificacion de prueba",busyInputMode:"Modo de entrada ocupada",busyInputModeHint:"Permitir entrada mientras la IA procesa",theme:"Tema",themeHint:"Elige claro, oscuro o seguir la preferencia del sistema",themeLight:"Claro",themeDark:"Oscuro",themeSystem:"Sistema",chatInputHeight:"Altura de entrada del chat",chatInputHeightHint:"Altura predeterminada de la entrada del chat en escritorio, en píxeles. En móvil se mantiene automática."},agent:{maxTurns:"Turnos maximos",maxTurnsHint:"Rondas maximas de interaccion por conversacion",gatewayTimeout:"Tiempo de espera de la pasarela",gatewayTimeoutHint:"Tiempo de espera de la peticion en segundos",restartDrainTimeout:"Tiempo de drenado al reiniciar",restartDrainTimeoutHint:"Tiempo de drenado antes de reiniciar en segundos",toolEnforcement:"Aplicacion de herramientas",toolEnforcementHint:"Controlar el modo de ejecucion de llamadas a herramientas",auto:"Automatico",always:"Siempre",never:"Nunca"},gatewayAutoStart:{title:"Inicio automático de gateway",description:"Controla qué gateways de perfiles Hermes locales inicia la Web UI al arrancar. Se guarda en la configuración de la Web UI, no en el config.yaml del perfil.",enabled:"Iniciar gateways automáticamente",enabledHint:"Si está desactivado, el arranque no iniciará automáticamente ningún gateway de perfil.",management:"Gateway unificado",managementHint:"Requiere Hermes Agent 0.17.0 o posterior. Al activarlo, Web UI escribe multiplex_profiles para que el gateway default sirva todos los perfiles; otros perfiles no pueden configurar entradas de mensajeria separadas como Feishu, Weixin o QQBot. Al desactivarlo elimina esa configuración.",managementAuto:"Automático",managementPerProfile:"Un gateway por perfil",managementUnified:"Gateway default unificado",mode:"Política de perfiles",modeHint:"Inicia todos los perfiles detectados o solo la lista incluida explícitamente.",modeAll:"Todos los perfiles detectados",modeInclude:"Solo perfiles incluidos",include:"Perfiles incluidos",includeHint:"Nombres de perfil separados por comas. En modo de inclusión, una lista vacía no inicia ninguno.",exclude:"Perfiles excluidos",excludeHint:"Nombres de perfil separados por comas que se omiten después de aplicar la política.",profileListPlaceholder:"default, reviewer"},proxy:{title:"Proxy del gateway",description:"Configura variables de entorno de proxy para el gateway del perfil seleccionado. Los cambios reinician el gateway para que las plataformas de mensajeria usen la nueva red.",httpsProxy:"HTTPS_PROXY",httpsProxyHint:"Proxy para solicitudes HTTPS. Normalmente es el valor principal.",httpProxy:"HTTP_PROXY",httpProxyHint:"Proxy para solicitudes HTTP simples.",allProxy:"ALL_PROXY",allProxyHint:"Proxy de respaldo cuando no hay un proxy especifico del protocolo.",noProxy:"NO_PROXY",noProxyHint:"Hosts o dominios separados por comas que no deben usar proxy.",save:"Guardar ajustes de proxy"},memory:{enabled:"Activar memoria",enabledHint:"Permitir que la IA recuerde el contexto de la conversacion",userProfile:"Perfil de usuario",userProfileHint:"Permitir que la IA recuerde las preferencias del usuario",charLimit:"Limite de caracteres de memoria",charLimitHint:"Maximo de caracteres para MEMORY.md",userCharLimit:"Limite de caracteres del perfil de usuario",userCharLimitHint:"Maximo de caracteres para USER.md"},compression:{enabled:"Activar compresion",enabledHint:"Comprimir automaticamente el historial largo antes de superar el contexto del modelo",threshold:"Umbral de compresion",thresholdHint:"Iniciar compresion cuando los tokens estimados superen esta proporcion del contexto",targetRatio:"Proporcion objetivo",targetRatioHint:"Tamano objetivo del historial tras comprimir como proporcion del contexto",protectLastN:"Proteger mensajes recientes",protectLastNHint:"Mantener sin comprimir esta cantidad de mensajes recientes",protectFirstN:"Proteger primeros mensajes",protectFirstNHint:"Mantener sin comprimir esta cantidad de mensajes iniciales"},session:{mode:"Modo de reinicio",modeHint:"Condicion de activacion del reinicio de sesion",modeBoth:"Inactividad + Programado",modeIdle:"Solo inactividad",modeDaily:"Solo programado",modeNone:"Nunca (solo manual)",idleMinutes:"Tiempo de inactividad",idleMinutesHint:"Tiempo de espera antes del reinicio automatico (minutos)",atHour:"Hora de reinicio programado",humanOnly:"Mostrar solo sesiones humanas",humanOnlyHint:"Oculta por defecto el ruido de subagentes y del monitor de sesiones",liveMonitorHumanOnly:"Monitor en vivo: mostrar solo sesiones humanas",liveMonitorHumanOnlyHint:"Oculta por defecto el ruido de subagentes y del monitor de sesiones en el monitor en vivo",atHourHint:"Reiniciar sesion a esta hora todos los dias",requireAuth:"Autorizacion de sesion",requireAuthHint:"Requerir autorizacion para operaciones de sesion",memoryWriteApproval:"Revisar escrituras de memoria",memoryWriteApprovalHint:"Preparar las escrituras de memoria de Hermes Agent para aprobacion antes de guardarlas.",skillsWriteApproval:"Revisar escrituras de skills",skillsWriteApprovalHint:"Preparar los cambios de skills de Hermes Agent para aprobacion antes de guardarlos.",writeApprovalTitle:"Escrituras pendientes de revision",writeApprovalDescription:"Aprueba o rechaza escrituras de memoria y skills preparadas por Hermes Agent.",writeApprovalRefresh:"Actualizar",writeApprovalEmpty:"No hay escrituras pendientes.",writeApprovalMemory:"Memoria",writeApprovalSkills:"Skills",writeApprovalViewDiff:"Revisar",writeApprovalHideDiff:"Ocultar",writeApprovalNoDiff:"No hay diferencias disponibles.",writeApprovalLoadFailed:"No se pudieron cargar las escrituras pendientes",writeApprovalDiffFailed:"No se pudieron cargar los detalles de escritura",writeApprovalActionFailed:"No se pudo resolver la escritura pendiente",writeApprovalApproved:"Escritura aprobada",writeApprovalRejected:"Escritura rechazada",writeApprovalApprove:"Aprobar",writeApprovalReject:"Rechazar",writeApprovalPendingMemoryWrite:"Escritura de memoria pendiente",writeApprovalCurrentFile:"Archivo actual {file}",writeApprovalProposedFile:"Archivo propuesto {file}",writeApprovalDiffSection:"Diferencias",writeApprovalPatchOldStringMissing:"No se encontro el old_string del parche en el archivo actual {file}; aprobarlo no cambiara el archivo.",writeApprovalRequestedOldString:"old_string solicitado",writeApprovalCurrentReadFailed:"El archivo actual {file} no se pudo leer como texto UTF-8.",writeApprovalDeleteSkill:"Esta aprobacion elimina el skill {skill}.",writeApprovalRemoveFile:"Esta aprobacion elimina {file} del skill {skill}."},privacy:{redactPii:"Ocultar informacion personal",redactPiiHint:"Detectar y ocultar automaticamente informacion sensible (contrasenas, claves, etc.)"},apiServer:{enable:"Activar",enableHint:"Activar servidor API",host:"Host",hostHint:"Direccion de escucha",port:"Puerto",portHint:"Puerto de escucha",key:"Clave",keyHint:"Clave de acceso API",cors:"Origenes CORS",corsHint:"Fuentes cross-origin permitidas"},voice:{activeTtsApi:"API TTS activa",activeSttApi:"API STT activa",ttsProvidersTitle:"Proveedores TTS",ttsProvidersDescription:"Gestiona integraciones de texto a voz para reproducir respuestas del asistente y vistas previas de voz.",sttProvidersTitle:"Proveedores STT",sttProvidersDescription:"Gestiona integraciones de voz a texto usadas por el microfono y el flujo de entrada por voz.",localSttModelTitle:"STT local chino-inglés",localSttModelDescription:"Reconocimiento privado en este dispositivo, sin subir audio a la nube.",localSttModelUnavailable:"Descarga y valida el modelo STT local antes de activarlo.",localSttModelReady:"Listo",localSttModelDownloading:"Descargando",localSttModelNotInstalled:"No instalado",localSttLanguages:"Idiomas",localSttLanguagesValue:"Chino + inglés",localSttDownloadSize:"Tamaño de descarga",localSttRuntime:"Runtime",localSttDownloadCf:"Descargar desde Cloudflare",localSttDownloadGithub:"Descargar desde GitHub",localSttBackgroundHint:"La descarga, verificación, extracción y validación se ejecutan en segundo plano.",localSttDownloadFailed:"Falló la descarga del modelo STT local: {error}",localSttStage:{queued:"Esperando descarga…",resolve:"Preparando descarga…",download:"Descargando modelo…",verify:"Verificando checksum…",extract:"Extrayendo modelo…",validate:"Validando modelo…",install:"Instalando modelo…",completed:"El modelo está listo",failed:"Descarga fallida"},hermesConfigTitle:"Configuracion de Hermes Agent",hermesConfigDescription:"Los proveedores nativos existentes permanecen en el perfil de Hermes; los del Web UI aparecen como Hermes Studio.",hermesActiveProvider:"Proveedor activo",hermesConfiguredProviders:"Proveedores configurados",hermesStudioProvider:"Hermes Studio",providerSpeed:"Velocidad",providerSampleRate:"Frecuencia de muestreo",providerBitRate:"Tasa de bits",providerGroupId:"ID de grupo",providerVolume:"Volumen",providerEmotion:"Emocion",providerDiarize:"Diarizacion de hablantes",providerFormatText:"Formatear transcripcion",providerTagAudioEvents:"Etiquetar eventos de audio",optionEnabled:"Activado",optionDisabled:"Desactivado",nativeProvider:"Proveedor nativo de Hermes",selectNativeProvider:"Seleccionar proveedor nativo de Hermes",useHermesStudioProvider:"Usar proveedor 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:"Ninguno seleccionado",keyStored:"Guardada",keyMissing:"Falta",customApi:"API",localBuiltin:"Local integrado",ttsCardHint:"Proveedor de sintesis de voz",sttCardHint:"Proveedor de transcripcion de voz",setActive:"Activar",testAction:"Probar",connect:"Conectar",presetEdgeTtsLabel:"Edge TTS",presetEdgeTtsDescription:"Voces en la nube gratuitas de alta calidad de Microsoft Edge.",presetOpenaiTtsLabel:"OpenAI TTS",presetMimoTtsLabel:"MiMo TTS",presetDoubaoTtsLabel:"Volcengine Doubao TTS",presetCustomTtsLabel:"TTS personalizado",presetBrowserSttLabel:"STT del navegador",presetBrowserSttDescription:"API nativa de reconocimiento de voz del navegador.",presetOpenaiWhisperLabel:"OpenAI Whisper",presetGroqSttLabel:"Groq STT",presetDoubaoSttLabel:"Volcengine Doubao STT",presetCustomSttLabel:"STT personalizado",apiCompatibility:"Compatibilidad de API",openaiCompatible:"Compatible con OpenAI",manualCustomEndpoint:"Endpoint personalizado manual",connectionStep:"Conexion",discoveryManualHint:"Endpoint personalizado manual seleccionado. El descubrimiento de modelos no esta disponible; introduce el nombre del modelo manualmente.",discoveryCredentialHint:"Introduce Base URL y API key, luego conecta para obtener los modelos disponibles.",discoveryNoAutoProbeHint:"No se envian solicitudes mientras escribes. Usa Connect cuando las credenciales esten listas.",apiKeyConnectPlaceholder:"Pega la API key para conectar; las claves guardadas nunca se muestran",connectFetchModels:"Conectar y obtener modelos",modelRecommendedSuffix:"recomendado",modelConnectManualHint:"Conecta para autocompletar o introduce manualmente.",modelRequiredConnectManual:"El modelo es obligatorio. Conecta para autocompletar o introduce manualmente.",apiKeyRequired:"La API key es obligatoria.",apiKeyRequiredForDiscovery:"La API key es obligatoria para obtener modelos.",baseUrlRequired:"Base URL es obligatoria.",baseUrlHttpsRequired:"Usa http:// o https://.",baseUrlInvalid:"Introduce una Base URL valida, incluyendo https://.",discoveryFailedManualFallback:"No se pudieron obtener modelos. Aun puedes introducir el nombre del modelo manualmente.",completeRequiredProviderFields:"Completa los campos obligatorios del provider antes de guardar.",fetchingModels:"Obteniendo modelos...",recommendedModel:"Recomendado: {model}.",useRecommendedModel:"Usar este.",modelsDiscovered:"{count} modelos descubiertos. Se selecciona el modelo recomendado cuando el campo esta vacio.",remove:"Eliminar",testSuccess:"Prueba completada",testTextRequired:"Introduce texto antes de probar.",keyMissingForTest:"Agrega una clave API antes de probar este proveedor.",testing:"Probando...",transcribing:"Transcribiendo...",browserSttTestHint:"El STT del navegador se prueba desde el microfono del chat.",sttEmptyAudio:"No se capturo audio. Intentalo de nuevo.",sttTestSuccess:"Transcripcion completada",sttRecordingHint:"Grabando... haz clic en Detener para transcribir.",keepStoredKeyPlaceholder:"Dejar en blanco para conservar la clave guardada",apiKeyPlaceholder:"Introduce la clave API",lastTest:"Ultima prueba",notTested:"—",recording:"Grabando",testFailedShort:"Fallo",testFailedSummary:"La prueba fallo. Revisa la configuracion del proveedor e intentalo de nuevo.",showDetails:"Mostrar detalles",hideDetails:"Ocultar detalles",moreActions:"Mas",moreActionsFor:"Mas acciones para {provider}",addTtsApi:"Agregar API TTS",addSttApi:"Agregar API STT",active:"Activo",builtin:"Integrado",connected:"Conectado",disconnected:"Desconectado",source:"Origen",model:"Modelo",voice:"Voz",doubaoVoiceHint:"Selecciona una voz de Seed TTS 2.0; el campo de recurso se actualiza automaticamente.",apiKey:"Clave API",confirmDeleteSecret:"Eliminar la clave API guardada para esta API de voz?",ttsTitle:"Texto a voz",ttsSaved:"Configuracion TTS guardada en el servidor",ttsSaveFailed:"No se pudo guardar la configuracion TTS",ttsTestSaved:"Audicion correcta; configuracion TTS guardada en el servidor",ttsTestSaving:"Guardando configuracion TTS antes de la audicion...",ttsMissingBaseUrl:"La Base URL es obligatoria antes de probar. Introduce un endpoint del proveedor y vuelve a probar.",ttsMissingApiKey:"La clave API es obligatoria antes de probar. Pega la clave o guarda primero una clave del servidor.",ttsCleared:"Clave TTS guardada eliminada",ttsClearFailed:"No se pudo eliminar la clave TTS guardada",storedBaseUrlsTitle:"Base URLs guardadas",storedBaseUrlsHint:"Endpoints de voz guardados. Los campos superiores solo limpian el valor actual; elimina endpoints guardados aquí.",storedBaseUrlsEmpty:"No hay Base URLs de voz personalizadas guardadas en el servidor.",storedBaseUrlDelete:"Eliminar URL",storedApiKeysTitle:"API keys guardadas",storedApiKeysHint:"Lista enmascarada de claves de voz guardadas en el servidor. Solo muestra uso y origen; nunca muestra la key completa.",storedApiKeysEmpty:"No hay API keys de voz guardadas en el servidor.",storedKeyKindTts:"TTS",storedKeyKindStt:"STT",storedApiKeyMasked:"[stored]",storedApiKeyDelete:"Eliminar key",baseUrlPresetClear:"Borrar URL",baseUrlPresetCleared:"Base URL borrada del campo.",baseUrlPresetDelete:"Eliminar URL",baseUrlPresetDeleted:"URL base eliminada de la lista guardada.",baseUrlPresetDeleteFailed:"No se pudo eliminar la URL base guardada.",ttsPendingSecret:"La nueva clave se guardara",ttsStoredSecret:"El servidor tiene una clave guardada: {value}",ttsClearKey:"Eliminar clave guardada",sttTitle:"Voz a texto",sttProvider:"Proveedor STT",sttProviderHint:"Elige como se transcribe la entrada de voz",sttProviderBrowser:"Navegador",sttProviderOpenai:"Compatible con OpenAI",sttProviderCustom:"Personalizado",sttBrowserHint:"Usa el reconocimiento de voz integrado del navegador cuando este disponible.",sttApiKey:"Clave API",sttApiKeyHint:"Guardada en el servidor para proveedores STT que requieren autenticacion.",sttStoredSecret:"Clave del servidor guardada: {value}",sttPendingSecret:"Clave del servidor guardada: se actualizara al guardar",sttClearKey:"Eliminar clave guardada",sttModel:"Modelo",sttModelHint:"Modelo de voz a texto que se usara.",sttLanguage:"Idioma",sttLanguageHint:"Pista de idioma opcional, como en o zh.",sttPrompt:"Prompt",sttPromptHint:"Prompt de transcripcion opcional.",sttAudioTranscode:"Transcodificación de audio",sttAudioTranscodeNone:"Enviar audio original",sttAudioTranscodeFfmpeg:"Convertir a WAV con ffmpeg",sttBaseUrl:"Base URL",sttBaseUrlHint:"Endpoint personalizado de voz a texto compatible con OpenAI.",sttSave:"Guardar configuracion STT",sttSaved:"Configuracion STT guardada en el servidor.",sttSaveFailed:"No se pudo guardar la configuracion STT.",sttCleared:"Se elimino el secreto STT guardado del servidor.",sttClearFailed:"No se pudo eliminar el secreto STT guardado.",sttActiveSaved:"Proveedor STT activo guardado en el servidor.",sttSaveActive:"Guardar proveedor STT activo",sttEndpointHint:"Endpoint final de transcripcion: {endpoint}",sttTestTitle:"Probar voz a texto",sttTestButton:"Probar API STT",sttTestStopButton:"Detener y transcribir",sttTestBackendOnly:"La prueba de API STT esta disponible para proveedores compatibles con OpenAI y personalizados.",sttTestRecording:"Grabando muestra de prueba... haz clic en Detener y transcribir al terminar.",sttTestTranscribing:"Transcribiendo muestra de prueba...",sttTestEmpty:"No se capturo audio para la prueba STT.",sttTestSucceeded:"Prueba STT correcta.",sttTestFailed:"La prueba STT fallo: {error} — {hint}",sttFailureHintMissingConfig:"Comprueba que el proveedor este guardado con Base URL/modelo y una clave API antes de probar.",sttFailureHintAuth:"Comprueba la clave API. Si ya habia una clave guardada, pega de nuevo la clave actual y guarda antes de probar.",sttFailureHintForbidden:"La clave llego al proveedor, pero no tiene permiso para este modelo STT o cuenta. Revisa el acceso o la facturacion del proveedor.",sttFailureHintEndpointModel:"Comprueba la Base URL y el modelo. Para Groq, usa {endpoint} con whisper-large-v3-turbo u otro modelo STT de Groq.",sttFailureHintModel:"Comprueba que el modelo STT seleccionado exista y este habilitado para esta cuenta.",sttFailureHintQuota:"El proveedor informa problemas de cuota, facturacion o limite de frecuencia. Revisa la cuota/facturacion o reintenta mas tarde.",sttFailureHintNetworkCustom:"El servidor no pudo alcanzar el endpoint STT personalizado. Comprueba que {endpoint} sea accesible desde el servidor Web UI y compatible con OpenAI.",sttFailureHintNetwork:"El servidor Web UI no pudo alcanzar el proveedor STT. Revisa red/proxy/firewall y reintenta.",sttFailureHintAudio:"El audio grabado estaba vacio o fue rechazado. Prueba con una muestra corta y clara, permite acceso al microfono o reintenta en Chrome.",sttFailureHintGenericCustom:"Comprueba clave API, Base URL, modelo y el endpoint final {endpoint}.",sttFailureHintGeneric:"Comprueba clave API, modelo y acceso de la cuenta del proveedor, luego reintenta.",sttTestRecordFailed:"No se pudo iniciar la grabacion del microfono: {error}",sttTestTranscript:"Transcripcion: {text}",ttsProvider:"Proveedor TTS",ttsProviderHint:"Elija el motor de texto a voz para la reproduccion de mensajes",providerWebSpeech:"WebSpeech API (Navegador)",providerOpenai:"OpenAI TTS",providerCustom:"Endpoint personalizado (compatible con OpenAI)",providerEdge:"Edge TTS (Gratuito, sin clave API)",webspeechVoice:"Voz",webspeechVoiceHint:"Seleccione una voz de su navegador o sistema operativo",webspeechVoicePlaceholder:"Auto (voz predeterminada)",openaiKey:"Clave API",openaiKeyHint:"Su clave API de OpenAI con acceso TTS",openaiUrl:"URL base de API",openaiUrlHint:"ej. https://api.openai.com/v1/audio/speech",openaiModel:"Modelo",openaiModelHint:"tts-1 (mas rapido) / tts-1-hd (mayor calidad)",openaiVoice:"Voz",openaiVoiceHint:"Voz a utilizar para la sintesis",customHint:"Utilice cualquier API TTS compatible con OpenAI — funciona con GPT-SoVITS, CosyVoice, etc.",customUrl:"URL de API",customUrlHint:"URL base de su servicio TTS",customUrlPlaceholder:"Direccion configurada en el adaptador local, ej. http://127.0.0.1:9880",customApiKey:"Clave API (opcional)",customApiKeyHint:"Algunos endpoints personalizados requieren autenticacion",customApiKeyPlaceholder:"Dejar en blanco si no es necesario",edgeHint:"Impulsado por Microsoft Edge TTS (node-edge-tts).",edgeUrl:"URL del adaptador",edgeUrlHint:"Direccion del adaptador Edge TTS, ej. http://127.0.0.1:9882",edgeUrlPlaceholder:"http://127.0.0.1:9882",edgeVoice:"Voz",edgeVoiceHint:"Seleccione una voz para la sintesis de voz",edgeRate:"Velocidad",edgeRateHint:"Ajustar velocidad del habla (0.5x ~ 2.0x)",edgePitch:"Tono",edgePitchHint:"Ajustar tono del habla (-20 ~ +20 Hz)",testTitle:"Prueba de voz",testText:"Texto de prueba",testTextPlaceholder:"Ingrese texto para probar...",testTextDefault:"Hola, esta es una prueba de voz.",testButton:"Probar",testButtonPlaying:"Reproduciendo...",testFailed:"Prueba fallida: {error}",providerMimo:"MiMo TTS",mimoHint:"Xiaomi MiMo TTS — voces predefinidas, diseño de voz y clonación de voz",mimoApiKey:"Clave API",mimoApiKeyHint:"Obtenga su clave en platform.xiaomimimo.com",mimoApiKeyPlaceholder:"Clave API MiMo",mimoAuthMode:"Modo de autenticación",mimoAuthModeHint:"Formato de encabezado requerido por el endpoint MiMo seleccionado",mimoAuthModeBearer:"Token Bearer (Authorization)",mimoAuthModeApiKey:"Encabezado API key (api-key)",mimoAuthModeBoth:"Ambos encabezados",mimoBaseUrl:"URL base",mimoBaseUrlHint:"URL del endpoint de la API MiMo",mimoModel:"Modelo",mimoModelHint:"Seleccione el modelo de síntesis de voz",mimoModelPreset:"Voces predefinidas",mimoModelVoiceDesign:"Diseño de voz",mimoModelVoiceClone:"Clonación de voz",mimoVoice:"Voz",mimoVoiceHint:"Seleccione una voz predefinida",mimoVoiceDesignPrompt:"Descripción de voz",mimoVoiceDesignPromptHint:"Describa las características de voz deseadas",mimoVoiceDesignPromptPlaceholder:"Ej: Una voz femenina cálida y joven, algo lenta, con tono magnético",mimoCloneAudio:"Subir audio",mimoCloneAudioHint:"Suba una muestra de audio para clonación (mp3/wav, máx. 10 MB)",mimoCloneAudioUpload:"Elegir archivo",mimoCloneAudioClear:"Borrar",mimoStylePrompt:"Indicador de estilo",mimoStylePromptHint:"Opcional — describa el estilo de habla en lenguaje natural",mimoStylePromptPlaceholder:"Ej: Tono brillante y animado, ritmo rápido"},lockedIps:{title:"IPs bloqueadas",count:"{count} bloqueadas",empty:"Sin IPs bloqueadas",unlock:"Desbloquear",unlockAll:"Desbloquear todo",unlockAllConfirm:"Desbloquear todas las IPs?",unlocked:"IP desbloqueada",allUnlocked:"{count} IPs desbloqueadas",type:{password:"Password",token:"API token",pairing:"Device pairing"}},userAvatar:{title:"Avatar de usuario",upload:"Subir imagen",random:"Generar aleatorio",reset:"Restablecer predeterminado",hint:"Admite PNG, JPEG y WebP hasta 1 MB; se comprime automáticamente por debajo de 500 KB.",invalidType:"Elige una imagen PNG, JPEG o WebP",tooLarge:"La imagen del avatar debe ser de 1 MB o menos",saveSuccess:"Avatar guardado",saveFailed:"No se pudo guardar el avatar",resetSuccess:"Avatar restablecido",resetFailed:"No se pudo restablecer el avatar"},models:{apiKey:"API Key",apiKeyPlaceholder:"Introduce API Key",noProviders:"No hay proveedores configurados",save:"Guardar",saveFailed:"Error al guardar",saved:"Guardado"}},githubPreview:{title:"Vista previa de versión",description:"Clona el tag de GitHub seleccionado en el espacio de vista previa de Web UI, instala dependencias y lo ejecuta con los puertos de desarrollo.",refresh:"Actualizar",selectTag:"Selecciona un tag",prepare:"Preparar código",install:"Instalar dependencias",start:"Iniciar vista previa",stop:"Detener",note:"El código de vista previa se guarda bajo el directorio de datos de Web UI. Producción sigue en el puerto 8648; la vista previa usa frontend 8651 y backend 8650.",path:"Ruta de vista previa",webuiHome:"Datos de vista previa",currentTag:"Tag actual",repoReady:"Repositorio listo",dependencies:"Dependencias instaladas",running:"Estado",notRunning:"No ejecutándose",open:"Abrir vista previa",log:"Ruta del log de acciones",logOutput:"Salida de logs",actionLog:"Log de acciones",devLog:"Log del servidor dev",yes:"Sí",no:"No",actionFailed:"Acción fallida",nodeEnvironmentMissing:"No se detectó Node/npm. Instala Node.js y vuelve a intentarlo.",prepareSuccess:"Código de vista previa listo",installSuccess:"Dependencias instaladas",startSuccess:"Vista previa completada",stopSuccess:"Vista previa detenida"},codingAgents:{title:"Agentes de código",notice:"No todos los proveedores y modelos son compatibles.",claudeDescription:"CLI de Anthropic para tareas únicas en print mode y sesiones interactivas de código.",codexDescription:"CLI de OpenAI y flujo del proveedor openai-codex de Hermes para tareas de repositorio.",copyCommand:"Copiar",commandCopied:"Comando copiado",commandCopyFailed:"Error al copiar",refresh:"Actualizar",checking:"Comprobando",installStatus:"Estado de instalación",installed:"Instalado",notInstalled:"No instalado",installRequired:"{agent} no está instalado. Instálalo antes de crear una sesión.",installNow:"Instalar",installing:"Instalando",installSuccess:"Instalado",installFailed:"Error de instalación",installFailedHermesHint:"La instalación falló. Pide a Hermes que lo instale por ti.",installFailureReason:"Motivo",nodeEnvironmentMissing:"No se detectó Node/npm. Instala Node.js y vuelve a intentarlo.",deleteNow:"Eliminar",deleting:"Eliminando",deleteSuccess:"Eliminado",deleteFailed:"Error al eliminar",configFiles:"Archivos de configuración",profileScope:"Perfil",providerScope:"Proveedor",providerPlaceholder:"p. ej. custom:glm",modelScope:"Modelo",modelPlaceholder:"Selecciona modelo",launchModeScope:"Modo de inicio",launchModeGlobal:"Configuración global",launchModeScoped:"Proveedor y modelo",protocolScope:"Protocolo",protocolOpenAiChat:"OpenAI Chat Completions (/v1/chat/completions)",protocolOpenAiResponses:"OpenAI Responses (/v1/responses)",protocolAnthropicMessages:"Anthropic Messages (/v1/messages)",reloadConfig:"Recargar configuración",configFileNotCreated:"No creado",configLoadFailed:"No se pudo leer el archivo de configuración",loadFailed:"No se pudieron inspeccionar los agentes de código",launch:"Iniciar",launchTitle:"Iniciar agente de código",nativeTerminal:"Terminal nativa",builtInTerminal:"Terminal integrada",launchPrepared:"Configuración de inicio preparada",launchPrepareFailed:"No se pudo preparar la configuración de inicio",nativeLaunchStarted:"Terminal nativa abierta",nativeLaunchFailed:"No se pudo abrir la terminal nativa",terminalTitle:"Terminal del agente de código",loadProvidersFailed:"No se pudieron cargar proveedores del perfil actual",selectProviderModel:"Selecciona un proveedor y un modelo",launchConfigDir:"Directorio de configuración de inicio",launchCommand:"Comando de inicio",table:{tool:"Herramienta",kind:"Paso",command:"Comando",note:"Nota",action:"Acción"},kinds:{install:"Instalar",auth:"Autenticación",health:"Salud",run:"Ejecutar"},notes:{claudeInstall:"Instala la CLI de Claude Code globalmente.",codexInstall:"Instala la CLI de Codex globalmente.",claudeAuth:"Comprueba el inicio de sesión de Claude Code; ejecuta claude una vez si falta.",codexAuth:"Agrega credenciales OAuth de OpenAI Codex gestionadas por Hermes.",claudeHealth:"Comprueba el actualizador y el estado de la CLI local.",codexHealth:"Confirma que la CLI de Codex está disponible en PATH.",claudeRun:"Print mode es la ruta más limpia para tareas únicas impulsadas por API.",codexRun:"Las tareas únicas de Codex deben ejecutarse dentro de un repositorio git."}},platform:{requireMention:"Requerir mencion {'@'}",requireMentionGroup:"Requerir mencion {'@'} en grupos para responder",requireMentionChannel:"Requerir mencion {'@'} en canales para responder",requireMentionRoom:"Requerir mencion {'@'} en salas para responder",reactions:"Reacciones",reactionsHint:"Reaccionar a mensajes con emoji",freeResponseChats:"Chats de respuesta libre",freeResponseChatsHint:"IDs de chats que responden sin mencion {'@'} (separados por comas)",freeResponseChannels:"Canales de respuesta libre",freeResponseChannelsHint:"IDs de canales que responden sin mencion {'@'} (separados por comas)",freeResponseRooms:"Salas de respuesta libre",freeResponseRoomsHint:"IDs de salas que responden sin mencion {'@'} (separados por comas)",mentionPatterns:"Patrones de mencion personalizados",mentionPatternsHint:"Patrones de activacion adicionales",autoThread:"Hilo automatico",autoThreadHint:"Crear automaticamente hilos de respuesta despues de mencion {'@'}",autoThreadHintRoom:"Crear automaticamente hilos de respuesta en salas",dmMentionThreads:"Hilos de mencion en MD",dmMentionThreadsHint:"Usar hilos de respuesta para menciones en mensajes directos",allowBots:"Permitir mensajes de bots",allowBotsHint:"Responder a mensajes de otros bots",allowedChannels:"Canales permitidos",allowedChannelsHint:"Lista blanca de IDs de canales (separados por comas)",ignoredChannels:"Canales ignorados",ignoredChannelsHint:"Canales donde el bot nunca responde (separados por comas)",noThreadChannels:"Canales sin hilo",noThreadChannelsHint:"Canales donde el bot responde sin hilos (separados por comas)",exclusiveTokenWarning:"Esta plataforma usa bloqueo exclusivo de token. Cada perfil debe usar un token de identidad distinto para evitar conflictos con otros perfiles.",clearCredentials:"Borrar credenciales",clearCredentialsConfirm:"¿Borrar las credenciales guardadas de «{name}»? Se conservarán el comportamiento del canal y los controles de acceso.",credentialsCleared:"Credenciales del canal borradas",clearCredentialsFailed:"No se pudieron borrar las credenciales del canal",clearCredentialsUnsaved:"Guarda o descarta los cambios del canal antes de borrar las credenciales.",clearCredentialsGatewayRestartFailed:"Las credenciales se borraron, pero no se pudo reiniciar automáticamente la puerta de enlace.",clearCredentialsGatewayRestartDisabled:"Las credenciales se borraron, pero el reinicio automático de la puerta de enlace está desactivado. Reiníciala manualmente.",botToken:"Token del bot",botTokenHint:"Token del bot del portal de desarrolladores",proxyUrl:"URL del proxy",proxyUrlHint:"Proxy opcional de la plataforma. Admite http://, https:// y socks5://",accessToken:"Token de acceso",accessTokenHint:"Token de acceso de Matrix",homeserver:"URL del homeserver",homeserverHint:"URL del homeserver de Matrix",matrixUserId:"ID de usuario de Matrix",matrixUserIdHint:"Obligatorio con contrasena; opcional con token",matrixPassword:"Contrasena de Matrix",matrixPasswordHint:"Alternativa al token de acceso",appId:"ID de aplicacion",appIdHint:"ID de aplicacion de Feishu",appSecret:"Secreto de aplicacion",appSecretHint:"Secreto de aplicacion de Feishu",encryptKey:"Clave de cifrado",encryptKeyHint:"Clave de cifrado de Feishu",verificationToken:"Token de verificación",verificationTokenHint:"Token de verificación de Feishu",clientId:"ID de cliente",clientIdHint:"ID de cliente de DingTalk",clientSecret:"Secreto de cliente",clientSecretHint:"Secreto de cliente de DingTalk",cardTemplateId:"ID de plantilla de tarjeta IA",cardTemplateIdHint:"ID de plantilla de tarjeta IA de DingTalk; déjelo vacío para desactivar las tarjetas IA",botId:"ID del bot",botIdHint:"ID del bot de WeCom",wecomSecretHint:"Secreto del bot de WeCom",waEnabled:"Activar WhatsApp",waEnabledHint:"Activar WhatsApp mediante emparejamiento por codigo QR",weixinToken:"Token de Weixin",weixinTokenHint:"Desde el inicio de sesion QR de la CLI de weixin (hermes weixin)",accountId:"ID de cuenta",accountIdHint:"ID de cuenta de Weixin",qrLogin:"Inicio de sesion QR",qrRelogin:"Volver a iniciar sesion",qrFetching:"Obteniendo codigo QR...",qrScanHint:"Escanea con WeChat para iniciar sesion",qrScanedHint:"Escaneado, por favor confirma en el telefono...",qqSandboxHint:"Habilitar entorno sandbox (para pruebas)",qqSandbox:"Modo sandbox",qqQrScanHint:"Escanea el código QR con QQ o abre el enlace en el teléfono para completar la vinculación",qqMarkdownHint:"Habilitar mensajes con formato Markdown (algunos clientes pueden no soportarlo)",qqMarkdown:"Soporte Markdown",qqAppSecretHint:"App Secret del bot de QQ Open Platform",qqAppSecret:"App Secret",qqAppIdHint:"App ID del bot de QQ Open Platform",qqAppId:"App ID",allowedUsersHint:"Lista blanca de IDs de usuario u OpenID, separados por comas",allowedUsers:"Usuarios permitidos",allowAllUsersHint:"Permite mensajes de cualquier usuario; desactívalo para usar la lista blanca",allowAllUsers:"Permitir todos los usuarios"},language:{label:"Idioma",zh:"中文",en:"English",es:"Espanol"},terminal:{sessions:"Sesiones",newTab:"Nueva terminal",closeSession:"Cerrar esta sesion?",sessionExited:"Finalizada",processExited:"Proceso finalizado con codigo {code}",noSessions:"No hay sesiones de terminal",connectionFailed:"No se pudo conectar al terminal",connectionError:"Error de conexión",connectionClosed:"Conexión cerrada"},usage:{title:"Estadisticas de uso",refresh:"Actualizar",totalTokens:"Total de tokens",inputTokens:"Entrada",outputTokens:"Salida",totalSessions:"Total de sesiones",avgPerDay:"~{n}/dia de promedio",estimatedCost:"Costo est.",cacheHitRate:"Tasa de acierto de cache",modelBreakdown:"Desglose por modelo",agentBreakdown:"Desglose por agente",agents:{hermes:"Hermes Agent",claudeCode:"Claude Code",codex:"Codex",ekkoAgent:"Ekko Agent",unknown:"Desconocido"},dailyTrend:"Uso diario",date:"Fecha",tokens:"Tokens",cache:"Caché",cacheRead:"Lectura de caché",cacheWrite:"Escritura de caché",sessions:"Sesiones",cost:"Costo",noData:"Sin datos de uso"},skillsUsage:{title:"Uso de habilidades",subtitle:"Sigue las cargas y ediciones de habilidades en sesiones de Hermes",refresh:"Actualizar",periodSelector:"Periodo de uso de habilidades",periodLabel:"{days} d",summary:"Resumen",totalActions:"Acciones",loads:"Cargas",edits:"Ed.",distinctSkills:"Habs.",topSkills:"Top habs.",dailyTrend:"Tendencia diaria",periodSummary:"Últimos {days} días",skill:"Hab.",share:"%",lastUsed:"Últ. uso",noData:"No hay datos de uso de habilidades",loadFailed:"No se pudo cargar el uso de habilidades",otherSkills:"Otras habs."},workflow:{title:"Workflow",profile:"Perfil",namePlaceholder:"Nombre del Workflow",canvasAriaLabel:"Lienzo del Workflow",workspace:{title:"Seleccionar espacio de trabajo",select:"Seleccionar espacio de trabajo",clear:"Limpiar espacio de trabajo"},actions:{newWorkflow:"Nuevo Workflow",addNode:"Añadir nodo",createWorkflowFirst:"Crea primero un Workflow",reset:"Restablecer",startExecution:"Iniciar ejecución",executionPending:"La ejecución del Workflow aún no está conectada",executionStarted:"Ejecución del Workflow iniciada",executionCompleted:"Ejecución del Workflow completada",executionFailed:"La ejecución del Workflow ha fallado",rerunDownstreamKeepNode:"Conservar este nodo y ejecutar los siguientes",rerunDownstreamClearNode:"Limpiar este nodo y ejecutar los siguientes",rerunDownstreamStarted:"Reejecución de los nodos siguientes iniciada",rerunFromNodeStarted:"Reejecución iniciada desde este nodo",rerunFailed:"La reejecución del Workflow ha fallado",deleteNode:"Eliminar nodo",deleteEdge:"Eliminar conexión",editEdge:"Editar conexión",undo:"Deshacer",importWorkflow:"Importar Workflow",exportWorkflow:"Exportar Workflow",imported:"Workflow importado",exported:"Workflow exportado",importFailed:"Error al importar el Workflow",exportFailed:"Error al exportar el Workflow"},batch:{toggle:"Selección múltiple",selectAll:"Seleccionar todo",confirmDelete:"¿Eliminar los {count} Workflows seleccionados?",deleteSuccess:"Se eliminaron {count} Workflows",deletePartial:"No se pudieron eliminar {failed} Workflows",deleteFailed:"Error en la eliminación múltiple"},validation:{nodesRequired:"Añade al menos un nodo",nodeNameRequired:"El nodo {node} necesita un nombre",providerRequired:"El nodo {node} necesita un proveedor",modelRequired:"El nodo {node} necesita un modelo",apiModeRequired:"El nodo {node} necesita un modo de API",inputRequired:"El nodo {node} necesita una entrada",invalidEdge:"Una conexión hace referencia a un nodo inexistente",invalidConnectionDirection:"Las conexiones deben ir de la salida derecha a la entrada izquierda",orphanNode:"El nodo {node} no está conectado al Workflow",disconnectedFlow:"El Workflow no puede dividirse en varios flujos desconectados",cycle:"El Workflow contiene un ciclo. Ajusta las conexiones antes de guardar."},stats:{nodes:"nodos",edges:"conexiones"},runs:{title:"Historial de ejecuciones",refresh:"Actualizar",empty:"No hay ejecuciones",startNodes:"{count} nodos iniciales",snapshotIndicator:"Instantánea inmutable del inicio de esta ejecución",show:"Mostrar historial",hide:"Ocultar historial",nodeSessionTitle:"Sesión del nodo - {node}",noNodeSession:"Este nodo aún no tiene una sesión registrada",loadNodeSessionFailed:"No se pudo cargar la sesión del nodo",stop:"Detener ejecución",stopRequested:"Detención solicitada",stopFailed:"No se pudo detener la ejecución",delete:"Eliminar registro",deleteSuccess:"Registro de ejecución eliminado"},inspector:{selected:"Nodo seleccionado",none:"Ningún nodo seleccionado"},agents:{planner:"Planificador",researcher:"Investigador",builder:"Implementador",reviewer:"Revisor"},models:{default:"Modelo predeterminado",fast:"Modelo rápido",reasoning:"Modelo de razonamiento"},initialNodes:{node1:"Nodo 1",node2:"Nodo 2",node3:"Nodo 3",plan:"Planificar",execute:"Ejecutar",review:"Revisar"},initialPrompts:{node1:"Introduce la entrada de este nodo.",node2:"Introduce la entrada de este nodo.",node3:"Introduce la entrada de este nodo.",plan:"Divide la solicitud en pasos realizables.",execute:"Ejecuta los pasos de implementación y genera los entregables.",review:"Revisa la calidad del resultado e identifica el trabajo de seguimiento."},newNodeTitle:"Nodo {count}",schedule:{title:"Programaciones de flujo de trabajo",manage:"Gestionar programaciones",createTitle:"Crear programación",editTitle:"Editar programación",create:"Crear programación",save:"Guardar programación",edit:"Editar programación",delete:"Eliminar programación",deleteConfirm:"¿Eliminar esta programación?",deleted:"Programación eliminada",enable:"Activar programación",disable:"Desactivar programación",enabled:"Activada",disabled:"Desactivada",empty:"Aún no hay programaciones",cron:"Programación Cron",cronPlaceholder:"p. ej., 0 9 * * * o {'@'}daily",timezone:"Zona horaria",timezonePlaceholder:"Zona horaria IANA, p. ej., Asia/Shanghai",initialInput:"Entrada inicial",initialInputPlaceholder:"Entrada opcional para cada ejecución programada",startNodes:"Nodos iniciales",startNodesPlaceholder:"Nodos iniciales predeterminados del flujo",timeout:"Tiempo de espera total (minutos)",timeoutPlaceholder:"Sin límite",policies:"Concurrencia: omitir · Ejecuciones perdidas: omitir",lastScheduled:"Última programación",nextRun:"Próxima ejecución",lastRun:"Última ejecución",never:"Nunca",loadFailed:"No se pudieron cargar las programaciones",saveFailed:"No se pudo guardar la programación",saved:"Programación guardada",deleteFailed:"No se pudo eliminar la programación",required:"La programación Cron y la zona horaria son obligatorias",reset:"Restablecer",presets:{hourly:"Cada hora",daily:"Diaria",weekly:"Semanal",monthly:"Mensual"}},evidence:{historyPage:"Historial de ejecuciones",detailsPage:"Detalles de ejecución",backToRuns:"Volver al historial",resultStatus:"Estado",duration:"Duración",budgetLabel:"Presupuesto",actualExecution:"Ejecutado",otherJudgments:"Otras decisiones",loopEvents:"Eventos de bucle",evaluatedNotExecuted:"Evaluado, no ejecutado",ariaLabel:"Detalles de ejecución del Workflow",title:"Detalles de ejecución",count:"{count} elementos",intro:"Muestra las decisiones de ruta, las iteraciones de bucle y los nodos excepcionales de esta ejecución.",empty:"Sin detalles de ejecución",loadFailed:"No se pudieron cargar los detalles de ejecución guardados",summaryTitle:"Resultado de la ejecución",blockedAt:"Bloqueado en {gate}",actualPath:"Ruta real",noActualPath:"No se utilizó ninguna ruta",pathChecks:"Decisiones de ruta",selectedPaths:"Rutas utilizadas",otherPaths:"Otras decisiones y eventos",selectedCount:"{count} utilizadas",otherCount:"{count} no utilizadas",eventCount:"{count} eventos",showOtherPaths:"Mostrar otros detalles ({count})",hideOtherPaths:"Ocultar otros detalles",runDetails:"Detalles de ejecución",actualPathSteps:"Pasos de la ruta real",nodeBudgetDetails:"Detalles del presupuesto de tiempo",condition:"Condición",conditionMatched:"Coincidió",conditionNotMatched:"No coincidió",sourceOutcome:"Resultado del nodo",sourceReturned:"Respuesta normal",sourceFailed:"Falló la ejecución",sourceSkippedStatus:"No ejecutado",checkedData:"Datos comprobados",entireReplyText:"Texto completo de la respuesta",errorText:"Texto del error",jsonFieldValue:"Valor de un campo JSON",advancedPathValue:"Valor de la ruta avanzada",comparison:"Comparación",textToFind:"Texto que buscar",expectedFieldValue:"Valor esperado del campo",parsedBusinessDecision:"Decisión de negocio interpretada",failedGateLabel:"Paso fallido (valor del campo failed_gate)",failedGateValue:"Paso fallido (valor del campo failed_gate): {gate}",decisions:{blocked:"Bloqueado",released:"Publicado",verified:"Verificado",skipped:"No requiere acción"},node:"Nodo excepcional",edge:"Ruta",loop:"Bucle",unknownNode:"Nodo desconocido",pathTitle:"{source} → {target}",loopPass:"Iteración {count} del bucle",exceptionalNode:"Este nodo no terminó con normalidad.",loopPassNamed:"{node} · iteración {count}",technical:"Información técnica",recordId:"ID de registro",sequence:"Secuencia",rawStatus:"Estado original",rawRoute:"Ruta",rawReason:"Motivo",iterationPath:"Ruta de iteración",expectedValue:"Resultado esperado",actualValue:"Resultado real del paso anterior",judgmentDetails:"Decisión de la conexión",connectionResult:"Resultado de la conexión",appliesWhen:"Se usa cuando",explanation:"Explicación",technicalStatus:{pathUsed:"Esta conexión se utilizó",pathNotUsed:"Esta conexión no se utilizó"},technicalRoute:{success:"Solo cuando el nodo anterior responde con normalidad",failure:"Solo cuando falla la ejecución del nodo anterior",always:"Independientemente del resultado del nodo anterior"},technicalReason:{conditionNotMatched:"La respuesta anterior no cumplió la condición de esta conexión."},statuses:{taken:"Utilizada",notTaken:"No utilizada",evaluationFailed:"Error de evaluación",timedOut:"Tiempo agotado",blocked:"Bloqueado"},routes:{success:"Continuó tras el éxito",failure:"Continuó tras el fallo",always:"Continuó con cualquier resultado"},reasons:{evaluationFailed:"Falló la evaluación de la ruta",conditionNotMatched:"La condición no coincidió",iterationLimitReached:"Se alcanzó el máximo de iteraciones",routeNotMatched:"La ruta no coincidió",pathSelected:"Se utilizó esta ruta.",pathEvaluatedNotUsed:"Esta conexión se evaluó como candidata, pero ningún nodo de destino la consumió.",sourceSkipped:"El nodo de origen no se ejecutó, por lo que esta ruta no formó parte de la ejecución.",failureRouteAfterSuccess:"El nodo de origen respondió normalmente; esta ruta solo se usa cuando falla la ejecución.",successRouteAfterFailure:"El nodo de origen falló; esta ruta solo se usa cuando responde normalmente.",businessBlocked:"«{source}» detuvo el flujo ({decision}): {reason}. Por eso no se ejecutó «{target}».",businessBlockedWithCondition:"«{source}» detuvo el flujo ({decision}): {reason}. Para continuar se requería «{expected}», pero el resultado anterior fue «{actual}». Por eso no se ejecutó «{target}».",conditionMismatchDetail:"Para continuar se requería «{expected}», pero el resultado anterior fue «{actual}». Por eso no se ejecutó «{target}»."},loopOutcomes:{continued:"La condición coincidió; continúa la siguiente iteración",iterationLimitReached:"Se detuvo en el máximo de iteraciones",conditionNotMatched:"Se detuvo porque la condición no coincidió",finished:"Bucle finalizado"}},budget:{runTitle:"Elegir presupuesto de tiempo del Run",rerunTitle:"Elegir presupuesto de tiempo del Rerun",totalLabel:"Presupuesto total del Run",customMinutes:"Minutos personalizados",customPlaceholder:"Minutos",invalidCustom:"El presupuesto personalizado debe estar entre 0,1 y 1440 minutos",help:"Es una fecha límite absoluta compartida por todo el Run. Cada nodo recibe solo el tiempo restante y los bucles no reinician el presupuesto.",options:{unlimited:"Sin fecha límite",30:"30 minutos",60:"60 minutos",90:"90 minutos",custom:"Personalizado"},unlimitedSummary:"Sin fecha límite",unlimitedHelp:"Este Run no tiene una fecha límite configurada.",summary:"Total {total} · Transcurrido {elapsed} · Restante {remaining}",deadline:"Fecha límite: {deadline}",nodeStartRemaining:"Presupuesto total restante al iniciar el nodo: {remaining}"},edgeEditor:{title:"Editar conexión",guideIntro:"Primero elige el resultado exigido del nodo de origen. Después no inspecciones la respuesta, comprueba literalmente todo el texto o compara el valor de un campo JSON analizado.",connectionSummary:"{source} → {target}",selfLoopDescription:"“{node}” volverá a ejecutarse a sí mismo.",continueAfter:"Continuar después de",optionalCheck:"Comprobación de contenido opcional",runTarget:"Luego",runTargetAction:"Ejecutar {target}",noContentCheck:"No inspeccionar la respuesta",sourceResultStep:"1. Resultado del nodo de origen",replyDataStep:"2. Datos de respuesta que comprobar",nextStep:"3. Luego",replyDataQuestion:"¿Qué datos de la respuesta deben comprobarse?",requiredSourceResult:"Resultado exigido del nodo de origen",loopSummary:"Vuelve a {target}",loopScope:"Nodos del bucle: {nodes}",historyLabel:"Etiqueta de historial (opcional)",advancedSettings:"Configuración avanzada",historyNode:"Nodo mostrado en el historial",historyNodePlaceholder:"Seleccionar nombre de nodo",continueWhen:"Continuar cuando",compareUsing:"Comparar con",expectedType:"Tipo del valor esperado",expectedValue:"Valor esperado",routeChoices:{success:"La fuente respondió normalmente",failure:"Falló la ejecución de la fuente",always:"Cualquier resultado"},operatorChoices:{equals:"Igual a",not_equals:"Distinto de",contains:"Contiene",not_contains:"No contiene",exists:"Existe",not_exists:"No existe",greater_than:"Mayor que",greater_than_or_equal:"Mayor o igual que",less_than:"Menor que",less_than_or_equal:"Menor o igual que",in:"Está en la lista",not_in:"No está en la lista"},loopMissingForwardPath:"Esta conexión de retorno no tiene una ruta hacia delante que repetir.",loopNotNatural:"Este bucle tiene otra ruta de entrada, por lo que no se repetiría de forma predecible.",loopDuplicateScope:"Dos conexiones de retorno definen los mismos nodos del bucle.",loopPartialOverlap:"Los bucles pueden estar separados o totalmente anidados, pero no solaparse parcialmente.",loopDuplicateHistoryLabel:"Cada etiqueta de historial de bucle debe ser única.",route:"Ruta",routes:{success:"Solo éxito (success)",failure:"Solo fallo (failure)",always:"Siempre (always)"},routeHelp:"Primero se comprueba el resultado del nodo de origen; si hay una condición, también debe coincidir.",routeExample:"Ejemplo: success para el flujo normal, failure para errores y always para limpieza.",conditionPath:"¿Qué debe comprobar esta conexión?",conditionPathPlaceholder:"Ruta avanzada, por ejemplo output",conditionPathOptions:{routeOnly:"No inspeccionar la respuesta",outputRecommended:"Texto completo de la respuesta correcta (output, recomendado)",output:"Texto completo de la respuesta correcta (output)",outputJson:"Valor de un campo JSON (outputJson.*)",errorRecommended:"Texto completo del error (error, recomendado)",error:"Texto completo del error (error)",custom:"Ruta de datos avanzada"},structuredOutputPathPlaceholder:"Ruta del campo JSON, por ejemplo outputJson.route_token",structuredOutputHelp:"Analiza una respuesta JSON completa o exactamente un bloque fenced json. Si falta, es inválido o hay varios bloques JSON, outputJson no está disponible y la condición no coincide.",conditionPathHelp:{success:"Para success se recomienda output. Elige “Solo ruta” si no necesitas comprobar la respuesta.",failure:"Para failure se recomienda error. Elige “Solo ruta” si no necesitas comprobar el error.",always:"Usa output para respuestas correctas o error para fallos; “Solo ruta” omite la comprobación."},operator:"Operador",operators:{equals:"Igual (equals)",not_equals:"Distinto (not_equals)",contains:"Contiene (contains)",not_contains:"No contiene (not_contains)",exists:"Existe (exists)",not_exists:"No existe (not_exists)",greater_than:"Mayor que (greater_than)",greater_than_or_equal:"Mayor o igual (greater_than_or_equal)",less_than:"Menor que (less_than)",less_than_or_equal:"Menor o igual (less_than_or_equal)",in:"Está en la lista (in)",not_in:"No está en la lista (not_in)"},operatorHelp:{equals:"Valor y tipo deben ser exactamente iguales.",not_equals:"El valor o el tipo son diferentes.",contains:"El texto contiene otro texto o el array contiene el elemento.",not_contains:"El texto o array no contiene el elemento.",exists:"Coincide si existe la ruta; no requiere valor.",not_exists:"Coincide si falta la ruta; no requiere valor.",greater_than:"Ambos lados deben ser números JSON; el valor real es mayor.",greater_than_or_equal:"Ambos lados deben ser números JSON; el valor real es mayor o igual.",less_than:"Ambos lados deben ser números JSON; el valor real es menor.",less_than_or_equal:"Ambos lados deben ser números JSON; el valor real es menor o igual.",in:"Valor debe ser un array JSON que contenga el valor real.",not_in:"Valor debe ser un array JSON que no contenga el valor real."},value:"Valor",invalidConditionValue:"El valor de condición debe ser JSON válido",conditionValuePlaceholder:'JSON: "texto", 42, true, ["a"]',valueType:"Tipo de valor",valueTypes:{string:"Cadena",number:"Número",boolean:"Booleano",null:"Nulo",array:"Array",object:"Objeto"},valueTypeHelp:"Elige cómo se interpreta y valida el valor. El tipo se infiere del valor JSON guardado y no se almacena por separado.",conditionValuePlaceholders:{string:"Texto, por ejemplo APPROVED",number:"Número, por ejemplo 42",boolean:"true o false",null:"null",array:'Array JSON, por ejemplo ["a", 2]',object:`Objeto JSON, por ejemplo {'{'}"status":"ready"{'}'}`},invalidValueTypes:{string:"El valor debe ser texto.",number:"El valor debe ser un número válido.",boolean:"El valor debe ser true o false.",null:"El valor debe ser null.",array:"El valor debe ser un array válido.",object:"El valor debe ser un objeto válido."},valueHelp:"Introduce un valor del tipo seleccionado. Los objetos y arrays usan JSON; las cadenas se escriben sin comillas JSON.",expectedReplyText:"Texto que buscar",expectedFieldValue:"Valor esperado del campo",rawTextValueHelp:"Se comprueba literalmente todo el texto de la respuesta. Con “Contiene”, el texto puede aparecer en una clave o un valor JSON; no se consulta un campo JSON concreto.",jsonFieldValueHelp:"Se compara el valor de la ruta outputJson indicada, no el nombre del campo. Ejemplo: outputJson.failed_gate es igual a quality-container-setup.",canvasLabel:{withValue:"{subject} {operator} «{value}»",withoutValue:"{subject} {operator}",join:"{route} · {condition}"},conditionSemantics:"Regla que se comprueba realmente",rawTextComparisonHelp:"El operador seleccionado es {operator}. Se aplica al texto completo, no a un campo JSON. Contiene/No contiene puede encontrar texto en una clave o valor JSON; Igual/Distinto compara la respuesta completa con el valor configurado.",jsonFieldComparisonHelp:"Lee el valor de {path}. {operator} compara ese value con «{value}» y nunca el nombre del campo.",rawTextExistenceHelp:"Solo comprueba que esté disponible el texto completo, no que exista una clave JSON.",jsonFieldExistenceHelp:"Solo comprueba si existe el campo JSON de {path}; no compara su valor.",rawTextOperatorHelp:{equals:"Coincide solo si el texto completo de la respuesta es exactamente igual a «{value}». No lee ni compara la value de un campo JSON.",not_equals:"Coincide solo si el texto completo de la respuesta es distinto de «{value}». No lee ni compara la value de un campo JSON.",contains:"Busca «{value}» en todo el texto de la respuesta. Puede coincidir en una JSON key o una JSON value; no es una búsqueda de campo JSON.",not_contains:"Coincide solo si «{value}» no aparece en ninguna parte del texto completo, ni en una JSON key ni en una JSON value. No es una búsqueda de campo JSON.",exists:"Coincide cuando está disponible el texto completo de la respuesta. No comprueba si existe una JSON key.",not_exists:"Coincide cuando no hay texto completo de respuesta. No comprueba si falta una JSON key."},jsonFieldOperatorHelp:{equals:"Lee la value del campo en {path}. Coincide solo si ese valor es exactamente igual a «{value}»; nunca compara el nombre del campo.",not_equals:"Lee la value del campo en {path}. Coincide solo si ese valor es distinto de «{value}»; nunca compara el nombre del campo.",contains:"Lee la value del campo en {path} y comprueba si contiene «{value}»; nunca busca en el nombre del campo.",not_contains:"Lee la value del campo en {path}. Coincide solo si no contiene «{value}»; nunca busca en el nombre del campo.",exists:"Coincide cuando existe el campo JSON en {path}. No compara la value del campo.",not_exists:"Coincide cuando falta el campo JSON en {path}. No compara la value del campo."},feedback:"Bucle de retroalimentación",feedbackHelp:"Marca esta conexión de retorno como un bucle limitado. Solo repite mientras coincidan ruta y condición.",maxIterations:"Iteraciones máximas",maxIterationsHelp:"Total de pasadas del bucle, de 1 a 100; también se aplica el presupuesto global.",invalidIterations:"Las iteraciones máximas deben ser un entero entre 1 y 100",loopId:"Identidad del bucle",loopIdPlaceholder:"Selecciona automático o escribe un ID",loopIdAutomatic:"Automático (recomendado) · {id}",loopIdHelp:"Solo identifica el bucle en el historial; no cambia cuándo se ejecuta. Déjalo automático salvo diseños avanzados.",invalidLoopId:"El formato del ID del bucle no es válido"},node:{title:"Nombre del nodo",agent:"Agente",model:"Modelo",apiMode:"Modo de API",input:"Entrada",approvalRequired:"Aprobación tras el nodo",join:"Estrategia de unión",joinAll:"Todas las rutas entrantes",joinAny:"Cualquier ruta entrante",joinAllHelp:"Se ejecuta solo si se toman todas las rutas entrantes; si alguna no coincide, se omite.",joinAnyHelp:"Se ejecuta una vez con la primera ruta tomada; se omite solo si ninguna coincide.",promptPlaceholder:"Describe qué debe hacer este agente...",skillsPlaceholder:"Escribe una habilidad y pulsa Entrar para añadirla",uploadImages:"Subir imágenes"},status:{idle:"Inactivo",queued:"En cola",running:"En ejecución",pending_approval:"Pendiente de aprobación",completed:"Completado",skipped:"Omitido",failed:"Fallido",approval_rejected:"Aprobación rechazada",canceled:"Cancelado"}},groupChat:{agentLinkButton:"Añadir tu Agent",agentOwner:"Propietario: {name}",agentLinkTitle:"Añadir un Agent a esta sala",agentLinkDescription:"Conecta tu propio servicio Hermes. El servicio establece una conexión saliente cifrada; la sala nunca recibe tus credenciales ni acceso a tu espacio de trabajo.",agentLinkTargetUrl:"URL de tu servicio Hermes",agentLinkTargetPlaceholder:"http://127.0.0.1:8748 or https://your-hermes.example.com",agentLinkTargetRequired:"Introduce la URL de un servicio Hermes.",agentLinkInvalidTarget:"Introduce un origen HTTP o HTTPS sin credenciales, ruta, consulta ni fragmento.",agentLinkOpenTarget:"Iniciar sesión y elegir un Agent",agentLinkPopupBlocked:"La ventana de autorización fue bloqueada. Permite las ventanas emergentes para esta página e inténtalo de nuevo.",agentLinkParentUnavailable:"La ventana de autorización perdió la conexión con la página de invitación. Ciérrala y vuelve a empezar.",agentLinkParentUnconfirmed:"La página de invitación no confirmó esta solicitud. Déjala abierta y reinicia la autorización.",agentLinkIncompleteConfiguration:"Selecciona un Profile, un proveedor y un modelo completos antes de solicitar acceso.",agentLinkWaitingApproval:"Esperando que el propietario apruebe este Agent…",agentLinkApproved:"Aprobado. Conectando tu Agent…",agentLinkConnected:"Tu Agent está conectado a la sala.",agentLinkError:"No se pudo conectar este Agent.",agentLinkRejected:"El propietario rechazó esta solicitud de Agent.",agentLinkExpired:"Esta solicitud de Agent ha caducado. Inicia una nueva.",agentLinkPairingCode:"Código de vinculación manual",agentLinkPairingCodeHint:"Si la ventana de autorización no puede comunicarse con esta página, pega allí este código de corta duración.",agentLinkCopyCode:"Copiar código de vinculación",agentLinkAuthorizeTitle:"Autorizar Agent del chat grupal",agentLinkAuthorizeDescription:"Elige un Agent local para conectarlo. El grupo puede enviarle mensajes, pero no puede explorar tu espacio de trabajo local.",agentLinkSelectAgent:"Agent",agentLinkRequestConnection:"Solicitar conexión",agentLinkOrPairingCode:"o usar un código de vinculación manual",agentLinkPairingCodePlaceholder:"Pega un código de vinculación HGC1",agentLinkConnect:"Conectar Agent",agentLinkSecurityHint:"Aprueba solo salas que reconozcas. Los tickets de vinculación son de un solo uso y caducan pronto.",agentLinkLoadFailed:"No se pudieron cargar los Agents locales.",agentLinkConnectFailed:"No se pudo conectar el Agent seleccionado.",agentLinkInvalidPairingCode:"Este código de vinculación no es válido.",agentLinkClose:"Cerrar",agentLinkApprovalMismatch:"La solicitud de conexión cambió después de aprobarla. Revisa el Agent e inténtalo de nuevo.",guestAgentsDisabled:"El propietario no ha habilitado los Agents de invitados.",guestAgentSettings:"Conexiones de Agents invitados",allowGuestAgents:"Permitir que los miembros añadan sus propios Agents",maxGuestAgentsPerMember:"Máximo de Agents por miembro",ownerApprovalHint:"Cada Agent sigue necesitando la aprobación explícita del propietario.",allowRemoteWorkspaceAccess:"Permitir que Agents remotos lean y escriban en el espacio de trabajo del grupo",remoteWorkspaceAccessHint:"Al activarlo, los Agents remotos aprobados reciben acceso temporal en cada ejecución. Los archivos sensibles y las rutas externas siguen bloqueados.",agentPairingRequestTitle:"Solicitud de conexión de Agent",agentPairingRequestDescription:"{user} quiere conectar un Agent desde {origin}.",approveAgent:"Aprobar Agent",rejectAgent:"Rechazar",agentPairingApproved:"Conexión del Agent aprobada",agentPairingRejected:"Conexión del Agent rechazada",emptyState:"Inicia una conversación grupal",title:"Chat grupal",refactorNoticeTitle:"Actualización del chat grupal",refactorNoticeMessage:"El chat grupal se ha rediseñado por completo. Si no puedes chatear en una sala, crea una nueva.",createRoom:"Crear sala",joinByCode:"Unirse con código",shareTitle:"Unirse a la conversación",shareSubtitle:"Introduce el código de invitación para entrar sin iniciar sesión.",shareCodeHint:"Esta invitación solo permite acceder a su sala de chat grupal.",shareInvalidCode:"El código no es válido o se ha actualizado. Pide un enlace nuevo a quien lo compartió.",shareJoining:"Entrando al chat grupal…",shareNameSubtitle:"Elige un nombre antes de entrar en la sala.",shareNameConflict:"Ese nombre ya se usa en esta sala. Elige otro.",shareNameReserved:"Ese nombre está reservado. Elige otro.",shareEnterRoom:"Entrar en la sala",roomName:"Nombre de la sala",roomNamePlaceholder:"Introduce el nombre de la sala",inviteCode:"Código de invitación",autoGenerate:"Generar automáticamente",noRooms:"Aún no hay salas",localRooms:"Local",remoteRooms:"Remoto",remoteRoomOffline:"La conexión remota está desconectada.",renameRemoteRoom:"Renombrar sala remota",renameRemoteRoomHint:"Solo cambia cómo se muestra la sala en este dispositivo.",remoteRoomRenamed:"Nombre visible de la sala remota actualizado",remoteRoomRenameFailed:"No se pudo actualizar el nombre visible de la sala remota",leaveRemoteRoom:"Salir de la sala",leaveRemoteRoomConfirm:"¿Salir de «{name}»? Se eliminarán de la sala remota todos los Agents conectados desde este dispositivo y sus registros locales.",remoteRoomLeft:"Has salido de la sala remota",remoteRoomLeaveFailed:"No se pudo salir de la sala remota",remoteRoomLeavePartial:"Se eliminaron los registros locales, pero no se pudo avisar a {count} conexión(es) de Agent porque la sala remota estaba desconectada.",selectOrCreate:"Selecciona o crea una sala para empezar a chatear",agents:"Agentes",allAgents:"Todos los Agents",addAgent:"Añadir agente",agentType:"Agente",agentTypes:{hermes:"Hermes",ekko:"Ekko",codex:"Codex",claude:"Claude"},selectProfile:"Seleccionar un Profile",agentAdded:"Agente añadido",selectRoomFirst:"Selecciona primero una sala",agentAlreadyInRoom:"Este agente ya está en la sala",agentAddFailedCount:"No se añadieron {count} agente(s): {details}",editAgentTitle:"Editar {name}",removeMember:"Expulsar",memberRemoved:"{name} fue expulsado de la sala",memberRemovedNotice:"El propietario te expulsó de esta sala. Puedes volver a entrar mientras la invitación siga siendo válida.",noAgents:"No hay agentes en esta sala",members:"{count} miembros",roomCreated:"Sala creada",roomDeleted:"Sala eliminada",roomCloned:"Sala clonada",cloneRoom:"Clonar sala",copyRoomLink:"Copiar enlace de la sala",manualCopyRoomLinkHint:"El navegador no pudo copiar automáticamente. Selecciona el enlace y cópialo manualmente.",deleteRoomConfirm:"¿Eliminar esta sala?",clearContext:"Borrar contexto",clearContextConfirm:"¿Borrar el contexto de esta sala? Se eliminarán los mensajes y las instantáneas de compresión, pero se conservarán los agentes y los miembros.",contextCleared:"Contexto borrado",you:"Tú",joined:"Te has unido a la sala",joinFailed:"No se pudo entrar en la sala",inputPlaceholder:"Escribe un mensaje... (Intro para enviar)",messageDisplayLimit:"El chat grupal muestra hasta 600 mensajes",enterCode:"Introduce el código de invitación",yourName:"Tu nombre",yourNamePlaceholder:"Introduce tu nombre visible",yourDescription:"Descripción (opcional)",yourDescriptionPlaceholder:"Cuéntales a los demás quién eres...",agentName:"Nombre del agente",agentNamePlaceholder:"Nombre personalizado (vacío para usar el nombre del Profile)",agentDesc:"Descripción del agente",agentDescPlaceholder:"Describe qué hace este agente...",agentReplying:"está respondiendo...",agentCompressing:"está comprimiendo el contexto...",compressionSettings:"Ajustes de compresión",triggerTokens:"Tokens de activación",triggerTokensDesc:"Umbral de tokens que activa la compresión del contexto",maxHistoryTokens:"Tokens máximos del historial",maxHistoryTokensDesc:"Máximo de tokens del contexto comprimido enviado al LLM",tailMessageCount:"Mensajes recientes conservados",tailMessageCountDesc:"Número de mensajes recientes que se conservan sin cambios tras la compresión",compressionConfig:"Configuración de compresión",compressionSaved:"Configuración de compresión guardada",roomSettings:"Configuración de sala",inviteCodeSettings:"Configuración del código de invitación",inviteCodePlaceholder:"Introduce un nuevo código de invitación",generateInviteCode:"Generar código de invitación",inviteCodeRotateHint:"Al actualizarlo, el código anterior deja de servir para nuevas uniones.",inviteCodeUpdated:"Código de invitación actualizado",inviteCodeUpdateFailed:"No se pudo actualizar el código de invitación",saveCompression:"Guardar compresión",compressNow:"Comprimir ahora",compressingInProgress:"Compresión en curso; espera un momento",summarySettings:"Resumen continuo",summarySettingsDesc:"Un Ekko Agent limpio actualiza el resumen compartido tras un número fijo de turnos humanos.",summaryProvider:"Proveedor del resumen",summaryProviderPlaceholder:"Seleccionar proveedor",summaryModel:"Modelo del resumen",summaryModelPlaceholder:"Seleccionar modelo",summaryApiMode:"Modo de API",summaryEveryTurns:"Resumir cada N turnos",summaryEveryTurnsDesc:"Un turno equivale a un mensaje humano.",summaryConfigSaved:"Configuración del resumen guardada",summaryConfigurationRequired:"Esta sala aún no tiene resumidor. Selecciona perfil, proveedor, modelo y modo de API, y guarda.",summaryConfigurationOwnerRequired:"Esta sala aún no tiene resumidor. Pide a un administrador que lo configure antes de enviar mensajes.",saveSummaryConfig:"Guardar configuración",currentSummary:"Resumen actual",summaryStatus:{idle:"Pendiente",summarizing:"Resumiendo",success:"Correcto",failed:"Falló"},summaryUpdatedAt:"Última actualización",summarizedTurns:"Turnos resumidos",summaryAnchor:"Ancla del resumen",summaryMessagesAbove:"Mensajes anteriores resumidos",summaryNoAnchor:"Aún no hay ancla",summaryContent:"Contenido del resumen",summaryEmpty:"Aún no hay resumen",summaryEditKeepsAnchor:"Editar el texto no mueve el ancla actual.",saveSummary:"Guardar resumen",summaryUpdated:"Resumen actualizado",summaryNever:"Nunca",summaryLoadFailed:"No se pudo cargar el resumen de la sala"},files:{attachToChat:"Añadir al chat",attachFailed:"No se pudo añadir el archivo al chat",previewMode:"Vista previa",sourceMode:"Código fuente",tableMode:"Tabla",worksheet:"Hoja",htmlPreviewTitle:"Vista previa HTML aislada",previewLoading:"Cargando vista previa...",previewFailed:"Vista previa no disponible",previewMimeMismatch:"El tipo de archivo no coincide con el formato de vista previa.",downloadInstead:"Descargar en su lugar",previousPage:"Anterior",nextPage:"Siguiente",pageStatus:"Página {page} de {total}",zoom:"Zoom",pdfPageLimit:"Solo se muestran las primeras {count} páginas.",tableTruncated:"La vista previa se ha limitado. Descarga el archivo para ver todas las filas y columnas."},changelog:{new_0_6_40_1:"Esta versión cubre los 40 PR fusionados desde v0.6.39: salas remotas seguras, STT local, programación de Workflow, aprobaciones globales, webhooks de Chat Run, MCU y fiabilidad de Coding Agent",new_0_6_40_2:"El chat grupal añade salas compartidas seguras y Agents remotos, estabiliza la transferencia, presencia y revocación de Agents, conserva avatares de propietarios sin conexión y permite copiar manualmente el enlace cuando no está disponible la API del portapapeles (#2408, #2410, #2411, #2415, #2423)",new_0_6_40_3:"Los Agents remotos pueden transferir archivos y subirlos a workspaces en la nube. Las solicitudes de no propietarios aplican límites más estrictos al workspace, la información sensible y la memoria privada, con rutas de propiedad y aprobación corregidas (#2413, #2430, #2433, #2435)",new_0_6_40_4:"El chat grupal deja de migrar Agent Links antiguos y separa listas plegables de salas locales y remotas, con alias locales, navegación a la página compartida y limpieza completa al salir (#2424, #2459)",new_0_6_40_5:"El historial grupal ya no se poda automáticamente. Los resultados de herramientas con menciones se guardan con IDs acotados, y se corrigen herramientas huérfanas, alineación y rutas de aprobación, además del bloqueo del bucle durante el conteo de tokens (#2390, #2420, #2426, #2427, #2429, #2445)",new_0_6_40_6:"La actividad de sesiones recientes y del chat grupal responde antes, y el panel de herramientas se expande con una animación fluida (#2389, #2414)",new_0_6_40_7:"Las aprobaciones globales pueden adoptar solicitudes existentes, mostrar vistas previas de comandos más claras y enviar notificaciones del sistema para acciones pendientes (#2406, #2425, #2432)",new_0_6_40_8:"El nuevo STT local chino-inglés en streaming basado en sherpa-onnx conserva las últimas palabras con silencio final y usa búferes compatibles con Electron en macOS y Windows (#2447, #2448, #2461)",new_0_6_40_9:"Workflow incorpora ejecuciones programadas duraderas y una interfaz completa para crear, editar, activar, desactivar y eliminar horarios (#2434, #2441)",new_0_6_40_10:"Se añaden webhooks del ciclo de vida de Chat Run, se elimina el endpoint antiguo sin uso y el servidor obtiene un endpoint ligero de disponibilidad (#2422, #2452, #2453)",new_0_6_40_11:"MCU puede elegir entre los runtimes Ekko y Hermes Agent, mientras que los avatares de Global Agent y los indicadores de estado de MCU ahora se resuelven correctamente (#2438, #2442)",new_0_6_40_12:"Coding Agent exige una identidad de ejecución y corrige el aislamiento de persistencia en Windows, tiempos de espera MCP, reproducción de reasoning entre modelos, estimaciones de contexto y guías de Studio duplicadas (#2387, #2392, #2395, #2396, #2398, #2416)",new_0_6_40_13:"Los preajustes de MoA permiten configurar el esfuerzo de razonamiento por modelo y la generación de imágenes desactiva el almacenamiento Responses para evitar retención remota innecesaria (#2439, #2449)",new_0_6_39_1:"Ekko Agent ahora inicializa sus recursos de forma explícita, ejecuta código Node.js o Python limitado tras la aprobación de la herramienta y puede pausar una ejecución en primer plano para pedir aclaraciones de texto o de opción múltiple antes de continuar (#2362, #2368)",new_0_6_39_2:"Group Chat espera la confirmación de entrada a la sala antes de enviar, corrigiendo errores intermitentes «Not in room» al reconectar. La escritura se envía como heartbeat limitado y solo aparece como una luz de respiración sin texto en los avatares de otros miembros (#2373)",new_0_6_39_3:"Los eventos de herramientas de Coding Agent en Single Chat y Group Chat siguen ahora el ciclo del CLI nativo y emiten un único inicio cuando terminan los argumentos, eliminando tarjetas duplicadas o bloqueadas y el JSON mostrado carácter a carácter en salas grandes (#2366, #2372)",new_0_6_39_4:"Los prompts de Coding Agent se envían por stdin, conservando entradas multilínea e imágenes y evitando el límite de comandos de Windows. Group Chat tampoco interrumpe trabajos activos de Codex, Claude Code o Ekko tras dos minutos fijos (#2354, #2357)",new_0_6_39_5:"Codex usa el JSONL nativo y la salida del proceso como estado final durante desconexiones recuperables del proxy Provider, evitando que un trabajo terminado aparezca como fallo en Group Chat (#2375)",new_0_6_39_6:"Gestión de versiones valida que el Runtime esté completo y muestra el motivo del fallback de escritorio. Los Runtime inválidos no pueden activarse y se ocultan los controles de descarga o cambio del Web UI porque las actualizaciones siguen llegando con el instalador de escritorio (#2353)",new_0_6_39_7:"Los encabezados de ejecución de Group Chat muestran solo el nombre del Agent y eliminan descripciones repetidas para agrupar los mensajes con mayor claridad (#2352)",new_0_6_39_8:"Las conexiones remotas del ESP32-C3 mantienen Socket.IO activo durante la búsqueda, reutilizan búferes de voz limitados, se reconectan con espera progresiva y conservan la sesión ante desconexiones temporales de Studio, haciendo más rápidas y fiables la búsqueda remota y las interacciones de voz (#2383)",new_0_6_38_1:"Al iniciar, el escritorio de Windows repara las rutas relativas de Python no válidas que las actualizaciones del Agent dejan en entornos Hermes Runtime almacenados, y restaura CLI, registros y Gateway tras actualizar, cambiar de Runtime o migrar el almacenamiento",new_0_6_38_2:"El catálogo de compatibilidad del sitio web vuelve a reconocer Hermes 0.19.0 para mantener disponibles las descargas de escritorio y las comprobaciones correspondientes (#2348)",new_0_6_37_1:"La prioridad de esta versión con 14 PR es la reconstrucción completa de Group Chat: cada Agent puede elegir de forma independiente su Profile, Provider, modelo, modo API, nivel de razonamiento, identidad y workspace (#2334)",new_0_6_37_2:"Las salas ahora inician ejecuciones nuevas y aisladas y agrupan cada respuesta con su reasoning y herramientas. También incorporan un resumen progresivo compartido y editable con estado y límites, menciones de Agent, paneles de sala/workspace y guía de migración. La voz automática prepara por adelantado el TTS de distintos Profile, limita la síntesis a una tarea por Profile y reproduce en FIFO estricto, por lo que una respuesta nueva no sustituye el audio en curso (#2334)",new_0_6_37_3:"MiniMax Coding Plan OAuth admite las regiones Global y China, y las credenciales autorizadas de Codex, xAI, Anthropic, Nous y MiniMax se actualizan mediante el Runtime Bridge persistente (#2337)",new_0_6_37_4:"ESP32-C3 v1/v2 añaden escucha automática opcional con VAD local, audio previo, finalización por silencio y supresión durante la reproducción, conservando el control push-to-talk (#2338)",new_0_6_37_5:"MCU Global Agent usa ahora el modo de voz conciso de Ekko, puede delegar trabajo seguro en segundo plano, conserva historial y workspaces y deja de enviar resultados de herramientas demasiado grandes al dispositivo (#2326)",new_0_6_37_6:"Los TTS personalizados y compatibles con OpenAI reintentan automáticamente formatos de audio admitidos por el Provider y convierten salidas no MP3 para reproducirlas en Hermes (#2328)",new_0_6_37_7:"La importación y exportación de Profiles dispone de hasta diez minutos, muestra errores de tiempo claros, aísla archivos simultáneos, sanea nombres y elimina archivos temporales (#2310, #2324)",new_0_6_37_8:"Hermes Agent Bridge aplica valores de razonamiento específicos por modelo y conserva las anulaciones explícitas por ejecución y el fallback anterior (#2325)",new_0_6_37_9:"Gestión de versiones muestra por separado la versión real de Hermes Agent instalada y la ruta Runtime, y aclara el alcance de la actualización CLI y la necesidad de cerrar Studio por completo (#2323)",new_0_6_37_10:"Los árboles de archivos workspace usan una sangría menor para mantener visibles los nombres muy anidados (#2340)",new_0_6_37_11:"El escritorio usa por defecto Hermes Agent 0.20.0 desde código fijado, fija Node/npm portátiles, acepta launchers regenerados en Windows, actualiza sin Python del sistema y mantiene oculto el Gateway administrado (#2321, #2344)",new_0_6_37_12:"La migración de almacenamiento Runtime en Windows procesa enlaces creados por actualizaciones sin permisos de administrador, reajusta Python, admite rutas Unicode y actualiza los shims CLI/MCP en el primer reinicio (#2345)",new_0_6_37_13:"La firma de escritorio para macOS usa un keychain temporal explícito compatible con el modo estricto de los runners macOS 26 en ambas arquitecturas (#2315)",new_0_6_36_1:"Esta versión incluye los 28 PR fusionados después de 0.6.35, con mejoras de voz, árabe y RTL, App Relay, fiabilidad de agentes, experiencia de chat, Kanban, Journey, subtítulos MCU y registros de solicitudes de Ekko",new_0_6_36_2:"La configuración de voz se unifica en Modelos para proveedores nativos de Hermes y de la Web UI; Custom TTS permite elegir voz y Edge TTS acepta cualquier Voice ID con opciones en árabe (#2260, #2265, #2267)",new_0_6_36_3:"El árabe y la compatibilidad RTL integral abarcan ahora el flujo del documento, Naive UI, chat, chat grupal, Workflow, capas, cajones, dirección por bloque y términos de Profile corregidos (#2269, #2270, #2271, #2273, #2277, #2294, #2303)",new_0_6_36_4:"Las delegaciones activas en segundo plano mantienen viva su sesión de Agent Bridge hasta finalizar, evitando que la limpieza por inactividad interrumpa tareas largas (#2254)",new_0_6_36_5:"La lista de agentes del chat grupal vuelve a responder a clics en escritorio y la ventana principal puede reducirse hasta 769 px sin entrar en el diseño móvil (#2259, #2263)",new_0_6_36_6:"Los workspace diffs de Codex, Claude Code y Ekko aparecen únicamente en el mensaje exacto del asistente que los generó, tanto en chats activos como restaurados y grupales (#2264)",new_0_6_36_7:"Los README en inglés y chino reflejan ahora el producto y la CLI actuales, y se eliminó del sitio web el manual obsoleto ligado a la versión 0.6.12 (#2268)",new_0_6_36_8:"Un App Relay independiente y sin interfaz añade emparejamiento seguro y acceso remoto autenticado a APIs locales permitidas y al streaming del chat sin exponer Studio directamente (#2275)",new_0_6_36_9:"Desktop Agent Browser puede leer de forma segura textos accesibles largos por páginas y activar controles cuya referencia del snapshot corresponde a texto visible (#2278)",new_0_6_36_10:"El chat incorpora controles de Provider anclados, restauración del desplazamiento por mensaje, barras compactas de herramientas y terminal, vistas previas completas y workspace diffs a todo lo ancho (#2279, #2282, #2283, #2293)",new_0_6_36_11:"Las nuevas sesiones de Ekko reciben workspaces predeterminados aislados por Profile, mientras que los existentes y los elegidos explícitamente no cambian (#2289)",new_0_6_36_12:"Los resultados de aprobación de Memory y Skill son ahora estructurados y serializados, evitando falsos mensajes de éxito y escrituras simultáneas en el mismo Profile (#2295)",new_0_6_36_13:"Kanban añade archivado fiable de tareas y un tablero desplazable, mientras Journey se convierte en un mapa compacto y determinista de relaciones entre Memory y Skill (#2296, #2297)",new_0_6_36_14:"El reasoning en vivo permanece estable entre herramientas, se restaura en el mensaje o herramienta correctos y deja de crear burbujas vacías de subagentes (#2299)",new_0_6_36_15:"La voz del MCU muestra ahora subtítulos GB2312 sincronizados y paginados en ESP32-C3 v1 y v2 sin interrumpir la reproducción de audio (#2305)",new_0_6_36_16:"Ekko escribe ahora un registro compacto model.request por intento de modelo, incluida la compresión de contexto, y omite tool_choice cuando no hay herramientas (#2311)",new_0_6_35_1:"La memoria persistente de Ekko Agent ya está habilitada en producción, con almacenamiento SQLite aislado por perfil, un presupuesto de recuperación automática de 4.000 tokens, una búsqueda de relevancia mejorada en toda la memoria y un manejo más seguro de las solicitudes al modelo (#2246)",new_0_6_34_1:"Esta versión incluye los 21 PR fusionados después de 0.6.33: temas por usuario, mejoras de Ekko y Coding Agent, escritorio y navegador, automatización y correcciones de fiabilidad",new_0_6_34_2:"Cada cuenta puede personalizar el tamaño y color del texto, el color de acento y el fondo del workspace con superficies translúcidas coherentes; las ventanas de Windows y los ajustes del navegador siguen el tema, y los comandos del navegador de Ekko ya se inician correctamente en Windows (#2242, #2243, #2244)",new_0_6_34_3:"Ekko está disponible en producción con descubrimiento de Skill bajo demanda y entrada multimodal; la evolución protegida de Skills, los logs aislados por Profile, la persistencia del protocolo y los resúmenes de razonamiento de Responses mejoran su seguridad y capacidad (#2215, #2236)",new_0_6_34_4:"La memoria de Ekko incorpora clases estructuradas y deterministas para preferencias, relaciones, hábitos, objetivos a largo plazo y más; las conversaciones largas usan ahora el ciclo compartido de compresión de contexto basado en snapshots (#2229, #2230)",new_0_6_34_5:"Las ejecuciones de Coding Agent conservan imágenes entre Codex, Claude Code y protocolos Provider con alcance, recortan salidas de herramientas demasiado grandes en Responses y aíslan por sesión la configuración de ejecución y los eventos tardíos (#2222, #2232, #2238)",new_0_6_34_6:"La comprobación de capacidades de Hermes Workflow ya no rechaza destinos válidos sin metadatos de modo API; Kanban se adapta a las tareas y vistas de adjuntos de Hermes Agent 0.19, y Cron Ejecutar ahora se inicia de forma segura en segundo plano con una validación de creación más estricta (#2239, #2216, #2228)",new_0_6_34_7:"El escritorio añade ventanas de chat independientes y enfocadas, permite automatizar campos de contraseña, pago y archivos en el navegador, y conserva por separado el nombre y la descripción de cada miembro humano en cada sala de Group Chat (#2209, #2210, #2212)",new_0_6_34_8:"El comando /yolo por sesión alterna la omisión de aprobaciones, desaparece el límite visual de 200 turnos del Agent, Markdown conserva las comillas ASCII rectas y el catálogo pt-BR recupera los signos diacríticos que faltaban (#2223, #2225, #2234, #2221)",new_0_6_34_9:"Los dispositivos ESP32-C3 incorporan un modo de espera conectado configurable que reduce el consumo inactivo sin perder Wi-Fi, sesión, Profile ni Socket.IO, con activación inmediata y tiempo de espera persistente (#2218)",new_0_6_33_1:"Esta versión incluye los 16 PR fusionados después de 0.6.32: Agent Browser de escritorio, evidencias y plazos de ejecución de Workflow, interacción con archivos y chats, actualización de modelos Provider y mejoras de fiabilidad",new_0_6_33_2:"El escritorio incorpora un Agent Browser visible con varias pestañas, Profiles aislados, controles de proxy, almacenamiento y descargas, cookies persistentes cifradas, acciones de Agent protegidas y descubrimiento diferido de herramientas MCP (#2177, #2182)",new_0_6_33_3:"Los enlaces de chats individuales y grupales y las vistas HTML autenticadas se abren en el navegador integrado; también mejoran el espaciado de permisos, los iconos de navegación multiplataforma y la coordinación entre barra lateral y barra de título en Windows (#2191, #2194, #2198)",new_0_6_33_4:"Las ejecuciones de Workflow conservan la vista inmutable del inicio, muestran un plazo total para Run/Rerun con tiempo transcurrido y restante, y presentan historial y detalles en páginas basadas en la ruta realmente consumida (#2171, #2173, #2180)",new_0_6_33_5:"Los archivos se pueden pegar directamente en chats individuales o grupales, o adjuntar desde el menú contextual del workspace; las columnas de metadatos compactas dejan más espacio para los nombres (#2175, #2176)",new_0_6_33_6:"Cada Provider configurado puede actualizar su catálogo por separado, confirmar eliminaciones, conservar modelos predeterminados no disponibles y restaurar una vez; se incluyen Provider OAuth, localización completa y control del autocompletado de formularios (#2115)",new_0_6_33_7:"Los estados de interrupción y pausa se aíslan por sesión para que los chats en segundo plano no alteren el botón de parada activo; las selecciones de texto y los campos del escritorio también incorporan acciones nativas con clic derecho (#2203, #2204)",new_0_6_33_8:"El cierre, la actualización y la instalación de escritorio usan una finalización gradual con límite y solo fuerzan los árboles de procesos restantes de Agent Bridge, MCP, navegador y Web UI tras vencer el plazo de limpieza (#2193)",new_0_6_33_9:"Las sesiones de voz MCU aíslan los resultados en primer y segundo plano, mientras los nombres de herramientas MCP compatibles con MiniMax respetan el límite del Provider sin romper clientes existentes (#2181, #2169)",new_0_6_32_1:"Esta versión incluye los 14 PR fusionados después de 0.6.31: organización y compresión de sesiones, chat grupal, enrutamiento de Workflow, Skill Bundles, memoria de Ekko, Hermes 0.19 y marco de escritorio",new_0_6_32_2:"Las menciones del chat grupal ya funcionan después de texto CJK, emojis y puntuación; los propietarios pueden ver, generar y rotar códigos de invitación en los ajustes de la sala (#2133, #2141)",new_0_6_32_3:"Workflow conserva el origen de cada ejecución de Hermes Bridge durante transferencias y reconexiones; los nodos Codex y Claude Code con ámbito pueden usar protocolos compatibles con su launcher para destinos válidos con API Key (#2137, #2154)",new_0_6_32_4:"Las sesiones incorporan categorías globales, búsqueda más precisa que entiende Markdown y compresión por cursor que limita el historial y mantiene la corrección ante ediciones, ramas y ejecuciones simultáneas; el diseño de compresión está documentado por completo (#2139, #2143, #2145, #2146)",new_0_6_32_5:"Los Skill Bundles del Profile se pueden crear, explorar, ejecutar y eliminar directamente desde el chat, mostrando claramente los Skills incluidos (#2156)",new_0_6_32_6:"La memoria de Ekko usa ahora un único modelo canónico aislado por Profile, con cambios validados por revisión, mejor auditoría de fuentes y filtrado de relevancia más estricto (#2159)",new_0_6_32_7:"Los mensajes intermedios del asistente de Hermes 0.19 se transmiten y guardan como burbujas separadas; los chats individuales normales pueden entregar de forma asíncrona resultados duraderos de delegaciones en segundo plano (#2160)",new_0_6_32_8:"Las nuevas compilaciones del Runtime de escritorio, rutas alternativas y shims de CLI para Windows usan Hermes Agent 0.19.0 de forma predeterminada (#2161)",new_0_6_32_9:"Los controles de ventana se integran en el marco de la página: los semáforos de macOS están en la barra lateral, los controles de Windows sobre el contenido principal y Linux mantiene la decoración nativa (#2162)",new_0_6_32_10:"La documentación de desarrollo admite tanto el checkout actual como worktrees de Git aislados opcionales (#2155)"}};export{e as default};
|
|
1
|
+
var e={browser:{title:"Navegador",settings:"Ajustes del navegador",desktopOnly:"El navegador integrado solo está disponible en Hermes Studio Desktop.",newTab:"Nueva pestaña",back:"Atrás",forward:"Adelante",reload:"Recargar",stop:"Detener",addressPlaceholder:"Buscar o escribir una dirección",selectElement:"Seleccionar elemento",selectRegion:"Seleccionar región",annotationPlaceholder:"Describe qué debe revisar o cambiar el Agent…",selectionData:"Datos de selección del navegador",annotationAdded:"Captura añadida al cuadro de chat",annotationCount:"{count} anotación(es)",annotationLabel:"Anotación {index}",clearAnnotations:"Borrar anotaciones",finishAnnotation:"Listo",agent:"Agent",agentControlling:"{agent} controla esta pestaña",agentWaiting:"{agent} espera tu confirmación",takeOver:"Tomar control",tabCrashed:"Esta pestaña falló.",recoverTab:"Recargar pestaña",profiles:"Perfiles",profileName:"Nombre del perfil",addProfile:"Añadir perfil",currentProfile:"Perfil activo",switchProfile:"Cambiar perfil",editProfile:"Editar perfil",profileDirectory:"Directorio del perfil",downloadDirectory:"Directorio de descargas",profileRootDirectory:"Directorio raíz del perfil",chooseProfileRootDirectory:"Elegir un directorio vacío",profileRootDirectoryHint:"Elige un directorio vacío. Los datos usarán {data} y las descargas {download}.",proxy:"Proxy",proxyMode:"Modo de proxy",proxyDirect:"Conexión directa",proxySystem:"Proxy del sistema",proxyCustom:"Proxy personalizado",proxyServer:"Servidor proxy",proxyServerPlaceholder:"Por ejemplo: http://127.0.0.1:7890 o socks5://127.0.0.1:1080",askBeforeDownload:"Preguntar dónde guardar",downloadConflictPolicy:"Nombres duplicados",uniquifyDownloads:"Crear un nombre único",askOnConflict:"Preguntar si existe",downloads:"Descargas",downloadStateProgressing:"Descargando",downloadStateCompleted:"Completado",downloadStateCancelled:"Cancelado",downloadStateInterrupted:"Interrumpido",downloadStateBlocked:"Bloqueado",permissions:"Permisos",permissionsHint:"Los permisos de páginas remotas se deniegan por defecto y se registran aquí.",blocked:"Bloqueado",profileSwitchTitle:"¿Cambiar de perfil?",profileSwitchWarning:"Pueden interrumpirse {agents} operación(es) Agent, {downloads} descarga(s) y {annotations} anotación(es).",deleteProfileTitle:"¿Eliminar perfil?",deleteProfileWarning:"Los datos gestionados irán a la papelera. Los directorios personalizados se conservan.",clearCache:"Borrar caché",clearPermissionAudit:"Borrar registro de permisos",clearSiteData:"Borrar datos de sitios",clearSiteDataWarning:"Borra sesiones, cookies y almacenamiento local del perfil seleccionado.",dataCleared:"Datos del navegador borrados",loadFailed:"No se pudo iniciar el navegador integrado"},kanban:{board:{defaultArchiveUnavailable:"El tablero predeterminado no se puede archivar"},action:{archive:"Archivar tarea",archiveConfirm:"¿Archivar esta tarea completada?"},message:{taskArchived:"Tarea archivada"}},login:{title:"Hermes Studio",description:"Introduce tu nombre de usuario y contrasena para continuar.",placeholder:"Token de acceso",submit:"Iniciar sesion",tokenRequired:"Por favor, introduce tu token de acceso",invalidToken:"Token invalido",connectionFailed:"No se puede conectar al servidor",passwordLogin:"Contrasena",tokenLogin:"Token",usernamePlaceholder:"Nombre de usuario",passwordPlaceholder:"Contrasena",defaultCredentialsHint:"Nombre de usuario predeterminado: admin. Contrasena predeterminada: 123456.",credentialsRequired:"Por favor, introduzca nombre de usuario y contrasena",invalidCredentials:"Nombre de usuario o contrasena incorrectos",tooManyAttempts:"Demasiados intentos fallidos, por favor intente mas tarde",lockResetHint:"Si este es su servidor, borre el bloqueo de inicio de sesion con:",defaultLoginResetHint:"Para restablecer la contrasena admin predeterminada, ejecute:",desktopLockResetHint:"Too many failed login attempts. Open the system tray menu and choose Reset Login to reset the password.",sessionExpired:"La sesion expiro. Inicia sesion de nuevo.",accessDenied:"No tienes permiso para acceder a este recurso.",passwordMismatch:"Las contrasenas no coinciden",passwordTooShort:"La contrasena debe tener al menos 6 caracteres",setupSuccess:"Login con contrasena configurado correctamente",passwordChanged:"Contrasena cambiada correctamente",passwordRemoved:"Login con contrasena eliminado",setupPassword:"Configurar login con contrasena",changePassword:"Cambiar contrasena",changeUsername:"Cambiar nombre de usuario",removePasswordLogin:"Eliminar",username:"Nombre de usuario",currentPassword:"Contrasena actual",newPassword:"Nueva contrasena",confirmPassword:"Confirmar contrasena",newUsername:"Nuevo nombre de usuario",usernameChanged:"Nombre de usuario cambiado correctamente",usernameTooShort:"El nombre de usuario debe tener al menos 2 caracteres",setupDescription:"Administra el nombre de usuario y la contrasena usados para iniciar sesion.",removeConfirm:"El login con contrasena es obligatorio para las cuentas de usuario.",passwordLoginNotConfigured:"Login con contrasena no configurado",passwordLoginConfigured:"Cuenta actual: {username}",defaultCredentialTitle:"Cambia la cuenta y contrasena predeterminadas",defaultCredentialMessage:"La cuenta actual aun usa el nombre de usuario o la contrasena predeterminados. Para evitar accesos no autorizados, cambia cuanto antes el nombre de usuario y la contrasena de la cuenta actual.",defaultCredentialAction:"Cambiar ahora",defaultCredentialLater:"Recordar mas tarde"},users:{title:"Gestion de cuentas",description:"Crea usuarios, asigna roles y controla que perfiles pueden usar los administradores normales.",create:"Crear usuario",edit:"Editar usuario",username:"Nombre de usuario",role:"Rol",statusLabel:"Estado",profiles:"Perfiles accesibles",profilesPlaceholder:"Selecciona perfiles accesibles",allProfiles:"Todos los perfiles",noProfiles:"Sin perfiles asignados",lastLogin:"Ultimo inicio",newPasswordOptional:"Nueva contrasena (dejar vacio para conservar)",loadFailed:"No se pudieron cargar los usuarios",deleteConfirm:"Eliminar este usuario?",enable:"Activar",disable:"Desactivar",roles:{superAdmin:"Super admin",admin:"Admin"},status:{active:"Activo",disabled:"Desactivado"}},common:{loading:"Cargando...",cancel:"Cancelar",retry:"Reintentar",reset:"Restablecer",delete:"Eliminar",edit:"Editar",save:"Guardar",saved:"Guardado",update:"Actualizar",create:"Crear",saveFailed:"Error al guardar",deleteFailed:"Error al eliminar",ok:"OK",copied:"Copiado",copy:"Copiar",noData:"Sin datos",fetch:"Obtener",add:"Anadir",enable:"Activar",disable:"Desactivar",configured:"Configurado",notConfigured:"No configurado",confirm:"Confirmar",expand:"Expandir",collapse:"Contraer",stop:"Detener",start:"Iniciar",expired:"Expirado"},mcp:{title:"Servidores MCP",loadFailed:"Error al cargar servidores MCP",reloadAll:"Recargar todos",refresh:"Actualizar",total:"Total",connected:"Conectado",disconnected:"Desconectado",tools:"herramientas",tool:"Herramientas",searchPlaceholder:"Buscar servidores...",addServer:"+ Agregar servidor",zeroTools:"0 herramientas",loading:"Cargando...",empty:"No hay servidores MCP configurados",reloaded:"{server} recargado",reloadedAll:"Todos los servidores MCP recargados",reloadFailed:"Error al recargar",serverAdded:'Servidor "{name}" agregado',addFailed:"Error al agregar servidor",serverUpdated:'Servidor "{name}" actualizado',updateFailed:"Error al actualizar servidor",saveFailed:"Error al guardar",serverRemoved:'"{name}" eliminado',enabled:"Habilitado: {name}",disabled:"Deshabilitado: {name}",connectedStatus:"Conectado",disconnectedStatus:"Desconectado",disabledStatus:"Deshabilitado",toolList:"Lista de herramientas",count:" ",more:"más",removeFailed:"Error al eliminar servidor",testOk:"Prueba OK — {count} herramientas disponibles",testEmpty:"La prueba no devolvio herramientas",testFailed:"Error en la prueba",edit:"Editar",test:"Probar",reload:"Recargar",remove:"Eliminar",confirmRemove:'¿Eliminar servidor "{name}"?',cancel:"Cancelar",add:"Agregar",save:"Guardar",addTitle:"Agregar servidor MCP",editTitle:"Editar servidor MCP",invalidJson:"JSON inválido",invalidYaml:"Formato YAML no válido",invalidConfig:"Configuración no válida",invalidServerConfig:"Configuración del servidor no válida",missingCommandOrUrl:"Debe incluir command o url",manageTools:"Gestionar herramientas",toolsVisibilityTitle:"Gestión de visibilidad de herramientas",fetchTools:"Obtener lista de herramientas",fetchToolsFailed:"Error al obtener la lista de herramientas",toolsMode:"Modo:",toolsModeAll:"Todas",toolsModeInclude:"Incluir",toolsModeExclude:"Excluir",toolsListHeader:"Nombre de herramienta",toolsEmpty:"No hay herramientas disponibles, primero obtenga la lista de herramientas",toolsSummaryAll:"{count} herramientas en total, todas habilitadas",toolsSummaryInclude:"{total} herramientas en total, {count} seleccionadas",toolsSummaryExclude:"{total} herramientas en total, {count} excluidas",toolsVisibilitySaved:"Visibilidad de herramientas guardada",toolsSelectAll:"Seleccionar todo",toolsClearSelection:"Borrar selección",toolsExcludeAll:"Excluir todo",toolsClearExcluded:"Borrar exclusiones"},sidebar:{chat:"Chat",backToChat:"Volver",search:"Buscar",apiRelay:"API Relay",history:"Historial",jobs:"Tareas programadas",models:"Modelos",profiles:"Perfiles",plugins:"Plugins",mcp:"MCP",petdex:"Pets",skills:"Habilidades",memory:"Memoria",logs:"Registros",usage:"Uso",performance:"Rendimiento",journey:"Trayectoria",skillsUsage:"Uso de habilidades",channels:"Canales",terminal:"Terminal",browser:"Navegador",singleChat:"Chat",globalAgent:"Global Agent",files:"Archivos",devices:"Dispositivos",groupChat:"Chat grupal",groupConversation:"Conversación",groupConversationShort:"Conv.",groupAgent:"Agente",groupAgentShort:"Ag.",groupSystem:"Sistema",groupSystemShort:"Sist",groupMonitoring:"Monitoreo",groupMonitoringShort:"Mon.",theme:"Tema",settings:"Configuracion",connected:"Conectado",disconnected:"Desconectado",updateTip:'Ejecuta "hermes-web-ui update" en la terminal para actualizar',updateVersion:"Actualizar a v{version}",reloadClientVersion:"Recargar para v{version}",updating:"Actualizando...",updateSuccess:"Actualizacion completada. Actualiza la pagina en breve. Si no se inicia despues de un tiempo, inicialo manualmente.",updateFailed:"Error al actualizar",logout:"Cerrar sesion",nodeVersionWarning:"Se detecto Node.js v{version}. Actualiza a la version 23 o posterior.",changelog:"Registro de cambios",noChangelog:"No hay registro de cambios",versionManagement:"Gestión de versiones",updateAvailableLabel:"(Nueva versión)",dockerUpdateTitle:"Actualización Docker",dockerUpdateGuide:"En el entorno Docker, extraiga la imagen más reciente y vuelva a crear el contenedor:",dockerUpdateNote:"Sus datos se conservarán después de recrear el contenedor.",kanban:"Kanban",workflow:"Workflow",groupTools:"Herramientas",groupToolsShort:"Herr.",codingAgents:"Agentes de código",versionPreview:"Vista previa de versión",groupPlatform:"Plataforma",gateways:"Puertas de enlace",expand:"Expandir menú",collapse:"Contraer menú"},runtimeVersions:{title:"Gestión de versiones",runtimeTitle:"Hermes Runtime",currentHermesAgentVersion:"Versión actual de Hermes Agent",activeRuntimeDirectory:"Ruta del Runtime activo",cliUpdateDescription:"En Hermes Runtime 0.19.1 y posteriores, el siguiente comando solo actualiza el Hermes Agent integrado. No actualiza la aplicación de escritorio Hermes Studio ni la Web UI. Cierra Hermes Studio por completo antes de ejecutarlo:",webUiTitle:"Web UI",platform:"Plataforma",currentWebUi:"Web UI actual",activeVersion:"Versión activa",runtimeDirectory:"Directorio de almacenamiento de Runtime",chooseRuntimeDirectory:"Elegir directorio",resetRuntimeDirectory:"Usar valor del sistema",runtimeDirectoryHint:"El Runtime actual se copiará y verificará antes de iniciar los servicios locales en el próximo reinicio. El almacenamiento anterior se conserva y las futuras descargas de Runtime se guardan aquí.",runtimeDirectorySaved:"Migración de Runtime programada. Reinicia Hermes Studio para ejecutarla.",runtimeMigrationPending:"Destino de migración pendiente: {directory}",runtimeMigrationFailed:"La migración del almacenamiento falló; se sigue usando el almacenamiento anterior",runtimeActivationFailed:"No se pudo iniciar el Runtime seleccionado; Hermes Studio está usando otra versión instalada",active:"Activa",installed:"Instalada",download:"Descargar",downloadGithub:"Descargar desde GitHub",downloadCf:"Descargar desde Cloudflare",github:"GitHub",cf:"Cloudflare",useVersion:"Usar en el próximo reinicio",deleteVersion:"Eliminar",deleteRuntimeConfirm:"¿Eliminar Hermes Runtime {version}?",deleteWebUiConfirm:"¿Eliminar Web UI {version}?",deleteRuntimeSuccess:"Runtime eliminado",deleteWebUiSuccess:"Web UI eliminado",refresh:"Actualizar",noVersions:"No hay versiones disponibles",remoteLoadFailed:"No se pudieron cargar las versiones remotas",downloadTasks:"Tareas de descarga",downloadStarted:"Descarga iniciada",activateSuccess:"Selección de versión guardada. Reinicia Hermes Studio para usarla.",jobStatus:{queued:"En cola",running:"En ejecución",completed:"Completada",failed:"Fallida"},jobStageStatus:{queued:"En cola",resolve:"Resolviendo",download:"Descargando",verify:"Verificando",extract:"Extrayendo",install:"Instalando",completed:"Completada",failed:"Fallida"},jobStage:{queued:"En cola",download:"Descargando",resolveRuntime:"Resolviendo paquete Runtime",verifyRuntime:"Verificando archivo Runtime",extractRuntime:"Extrayendo archivo Runtime",installRuntime:"Instalando Runtime",resolveWebUi:"Resolviendo paquete Web UI",verifyWebUi:"Verificando archivo Web UI",extractWebUi:"Extrayendo archivo Web UI",installWebUi:"Instalando Web UI",completed:"Completada",failed:"Fallida"}},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:"Remoto",connected:"Conectado",disconnected:"Desconectado",remoteConnect:"Conectar remoto",remoteConnected:"Remoto conectado",remoteConnectFailed:"Error al conectar remoto",remoteDisconnect:"Desconectar",remoteDisconnected:"Remoto desconectado",remoteDisconnectFailed:"Error al desconectar remoto",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:"Dispositivos",count:"{count} dispositivos",lastScanned:"Último escaneo: {time}",refresh:"Actualizar",empty:"No se encontraron dispositivos",computer:"Equipo",endpointLabel:"Extremo",statusLabel:"Estado",online:"Online",offline:"Offline",address:"Dirección",os:"Sistema operativo",agentVersion:"Agent",webUiVersion:"Web UI",responseMs:"Latencia",lastSeen:"Visto por última vez",open:"Abrir",never:"Nunca",unknown:"Desconocido",loadFailed:"No se pudieron cargar los dispositivos",scanFailed:"No se pudieron escanear los dispositivos",updateFailed:"No se pudo actualizar el dispositivo",duplicateRequest:"Ya existe una solicitud de emparejamiento pendiente",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:"Procesada",unprocessed:"Sin procesar",deleteHistory:"Eliminar registro",deleteHistoryConfirm:"¿Eliminar este registro de solicitud y revocar el acceso de conexión de este dispositivo?",requests:"Solicitudes",requestsWithCount:"Solicitudes ({count})",noRequests:"No hay solicitudes",requestPairing:"Solicitar emparejamiento",paired:"Emparejado",approve:"Aprobar",reject:"Rechazar",block:"Bloquear",unblock:"Desbloquear",inboundStatus:{none:"Puede solicitar",pending:"Pendiente",approved:"Aprobado",rejected:"Rechazado",blocked:"Bloqueado"},outboundStatus:{none:"Sin emparejar",pending:"Solicitado",approved:"Emparejado",rejected:"Rechazado",blocked:"Bloqueado"},endpoint:{web:"Web",desktop:"Escritorio",custom:"Personalizado"}},performance:{title:"Rendimiento",subtitle:"Supervisa recursos del sistema, Bridge Broker, Workers y sesiones activas",refresh:"Actualizar",autoRefreshOn:"Actualización automática",autoRefreshOff:"Actualización manual",loadFailed:"No se pudieron cargar las métricas de rendimiento",systemCpu:"CPU del sistema",systemMemory:"Memoria del sistema",activeSessions:"Sesiones activas",runningSessions:"En ejecución {count}",workers:"Workers",totalWorkerMemory:"Memoria total de Worker",processes:"Procesos",uptime:"Tiempo activo",running:"En ejecución",stopped:"Detenido",workerMemory:"Memoria de Worker",lastUpdated:"Actualizado",profile:"Profile",memory:"Memoria",sessions:"Sesiones",runningActiveSessions:"En ejecución / Activas",lastUsed:"Último uso",status:"Estado",noWorkers:"Sin Workers",sessionsByProfile:"Sesiones por Profile",noActiveSessions:"No hay sesiones activas"},journey:{title:"Trayectoria de aprendizaje",play:"Reproducir trayectoria",pause:"Pausar trayectoria",refresh:"Actualizar",categorySelection:"Selección de categorías",nodeKinds:"Tipos de nodo",description:"Descripción",canvasInstructions:"Usa las flechas para previsualizar nodos, Enter para abrir detalles y Escape para borrar la selección.",loadFailed:"No se pudo cargar la trayectoria",nodes:"Nodos",edges:"Conexiones",skills:"Habilidades",memories:"Memorias",clusters:"Grupos",profile:"Profile",source:"Origen",learnedSkills:"Habilidades aprendidas",memorySkillEdges:"Enlaces de memoria",allKinds:"Todos los tipos",allCategories:"Todas las categorias",searchPlaceholder:"Buscar nodos",noClusters:"Sin grupos",noNodes:"Sin nodos de trayectoria",noCategory:"Sin categoria",category:"Categoria",useCount:"Usos",createdBy:"Creado por",timestamp:"Hora",pinned:"Fijado"},drawer:{terminal:"Terminal",files:"Espacio de trabajo"},subagent:{title:"Tarea en segundo plano",noGoal:"Tarea en segundo plano sin título",open:"Abrir salida en directo de la tarea",close:"Cerrar salida de la tarea",waiting:"Esperando salida en directo…",tool:"Herramienta",tools:"{count} herramientas",tokens:"{input} entrada · {output} salida",started:"Iniciada",running:"En ejecución",completed:"Completada",failed:"Fallida",cancelled:"Cancelada",interrupted:"Interrumpida"},realtimeVoice:{title:"Voz en tiempo real",mode:"Modo de voz",open:"Abrir voz en tiempo real",back:"Volver al chat",connected:"Enlace de voz listo",turnMode:"Vista previa en tiempo real · por turnos",browserStt:"Navegador",browserTts:"Navegador",untitledSession:"Conversación sin título",sessionMissing:"La conversación no está disponible.",backendStreamRequired:"La voz en tiempo real en móviles y escritorio requiere un proveedor de transcripción de servidor configurado.",networkUnavailableNoFallback:"El reconocimiento de voz del navegador no tiene conexión y no hay un STT alternativo utilizable configurado.",liveTranscript:"Transcripción en directo",transcriptPlaceholder:"Toca el núcleo de voz y empieza a hablar",recentTurns:"Turnos recientes",you:"Tú",mute:"Silenciar salida",unmute:"Activar sonido",finishTurn:"Finalizar turno",speak:"Empezar a hablar",end:"Finalizar",status:{idle:"Listo",paused:"Micrófono apagado",listening:"Escuchando",processing:"Transcribiendo",thinking:"{agent} está pensando",speaking:"{agent} está hablando",error:"Enlace de voz interrumpido"},hint:{idle:"Toca el centro para iniciar un turno de voz",paused:"Activa el micrófono cuando estés listo",listening:"Haz una pausa para enviar o toca para finalizar",listeningManual:"Grabando. Toca el centro otra vez para detener y transcribir",processing:"Convirtiendo tu voz en texto",thinking:"Tu mensaje se envió a la conversación actual",speaking:"Puedes interrumpir en cualquier momento",error:"Toca el centro para intentarlo de nuevo"}},chat:{contextRemaining:"restante",contextClickToEdit:"Haz clic para editar la longitud del contexto",contextEditTitle:"Editar longitud del contexto",contextEditDesc:"Establecer el límite de longitud del contexto para el modelo actual (en tokens)",contextEditPlaceholder:"Ingresa la longitud del contexto",contextEditHint:"Valores comunes: 256k (Hermes predeterminado), 128k (GPT-4), 32k (GPT-3.5)",contextEditSave:"Guardar",contextEditCancel:"Cancelar",contextEditInvalid:"Por favor ingresa una longitud de contexto válida",contextEditSuccess:"Longitud del contexto actualizada",contextEditFailed:"Error en la actualización",emptyState:"Inicia una conversacion con Hermes Agent",emptyStateAgent:"Inicia una conversacion con {agent}",viewOlderInHistory:"Ver mensajes anteriores en el historial",scrollToBottom:"Ir al final",outlineTitle:"Esquema de la conversación",outlineEmpty:"Sin contenido de conversación",outlineUserQuestion:"Pregunta del usuario",inputPlaceholder:"Escribe un mensaje... (Enter para enviar, Shift+Enter para nueva linea)",inputHeightResizeHint:"Arrastra para cambiar la altura del cuadro de chat y haz doble clic para restablecerla.",slashCommandArgs:{message:"<mensaje>",title:"<titulo>",text:"<texto>"},slashCommands:{usage:"Calcular el uso de la sesión actual",status:"Mostrar estado de sesión y cola",yolo:"Alternar el modo YOLO de la sesión y omitir aprobaciones de comandos peligrosos",abort:"Detener la ejecución activa de Bridge",queue:"Poner un mensaje en cola tras la ejecución activa",learn:"Aprender un skill reutilizable desde fuentes descritas",plan:"Escribir un plan de implementación en Markdown",goal:"Set a standing goal that continues across turns",goalStatus:"Show the active goal status",goalPause:"Pause the active goal loop",goalResume:"Resume the paused goal loop",goalDone:"Complete and clear the active goal",goalClear:"Clear the active goal",subgoal:"Add a criterion to the active goal",clear:"Limpiar la vista actual",clearHistory:"Eliminar el historial de mensajes guardado de esta sesión",title:"Renombrar esta sesión",compress:"Ejecutar compresión de contexto cuando esté inactiva",steer:"Enviar texto de guía a la ejecución activa de Bridge",destroy:"Liberar el agente Bridge de esta sesión",reloadMcp:"Recargar servidores MCP",reloadSkills:"Recargar comandos de skills",bundles:"Explorar bundles de skills",bundlesCreate:"Crear un bundle de skills"},bundlePicker:{title:"Bundles de skills",create:"Crear bundle",searchPlaceholder:"Buscar bundles...",skillCount:"{count} skills",skillsLabel:"Skills",noSkills:"No hay skills configurados",deleteBundle:"Eliminar {name}",deleteTitle:"Eliminar bundle",deleteConfirm:"¿Eliminar “{name}” de este perfil? Esta acción no se puede deshacer.",deleteFailed:"No se pudo eliminar el bundle",deleted:"Bundle eliminado",noBundles:"Aún no hay bundles. Crea uno para combinar varios skills.",noMatch:"No hay bundles coincidentes"},bundleCreator:{title:"Crear bundle de skills",name:"Nombre",namePlaceholder:"p. ej., PR Review Team",nameHint:"Usa letras inglesas, números, espacios, guiones o guiones bajos.",description:"Descripción",descriptionPlaceholder:"¿Para qué se debe usar este bundle?",skills:"Skills",skillsPlaceholder:"Selecciona uno o más skills",nameRequired:"Introduce un nombre para el bundle",nameInvalid:"Usa un nombre en inglés con al menos una letra",skillsRequired:"Selecciona al menos un skill",skillsLoadFailed:"No se pudieron cargar los skills",createFailed:"No se pudo crear el bundle",created:"Bundle creado"},attachFiles:"Adjuntar archivos",reasoningEffort:{tooltip:"Esfuerzo de razonamiento",defaultLabel:"Predeterminado",options:{default:"Predeterminado (config.yaml)",none:"Ninguno",minimal:"Mínimo",low:"Bajo",medium:"Medio",high:"Alto",max:"Max",xhigh:"Extra alto",ultra:"Ultra"}},showToolCalls:"Mostrar llamadas de herramientas",hideToolCalls:"Ocultar llamadas de herramientas",messageQueue:"Cola de mensajes",removeQueuedMessage:"Quitar mensaje de la cola",stop:"Detener",send:"Enviar",contextUsed:"Contexto utilizado:",sessions:"Sesiones",webUiSessions:"Sesiones",allProfiles:"Todos los perfiles",profileMissingModelsTip:'El perfil "{profile}" no tiene proveedor ni modelo disponible para esta sesión',sessionScopeHint:"Chat solo muestra sesiones de Web UI/API Server. Las sesiones de CLI, Telegram, Discord, Cron y otros canales son de solo lectura en Historial.",openHistory:"Abrir historial",hermesHistory:"Historial de Hermes",historyScopeHint:"Sesiones del historial de Hermes del perfil actual, de solo lectura y agrupadas por origen.",noSessions:"Sin sesiones",recent:"Recientes",recentCount:"Cantidad de sesiones recientes",loadMoreSessions:"Cargar más sesiones",newChat:"Nuevo chat",category:"Categoría",uncategorized:"Sin categoría",categoryPlaceholder:"Seleccionar o crear una categoría",categoryCreateHint:"Escribe un nombre y pulsa Enter para crearla.",categoryCreated:"Categoría «{name}» creada",categoryCreateFailed:"No se pudo crear la categoría",categoryLoadFailed:"No se pudieron cargar las categorías",moveToCategory:"Mover a categoría",categoryUpdated:"Categoría actualizada",categoryUpdateFailed:"No se pudo actualizar la categoría",renameCategory:"Renombrar categoría",deleteCategory:"Eliminar categoría",enterCategoryName:"Introduce el nombre de la categoría",confirmDeleteCategory:"¿Eliminar «{name}»? Sus sesiones pasarán a Sin categoría.",categoryRenamed:"Categoría renombrada",categoryRenameFailed:"No se pudo renombrar la categoría",categoryDeleted:"Categoría eliminada",categoryDeleteFailed:"No se pudo eliminar la categoría",agent:"Agent",approvalKicker:"Permiso de herramienta",toolResultUnavailable:"Ejecución interrumpida; no se recibió resultado",approvalCommand:"Comando que se ejecutará",approvalTitle:"Revisar llamada de herramienta antes de ejecutar",approvalAgree:"Aceptar",approvalAllowOnce:"Permitir una vez",approvalAllowSession:"Permitir sesión",approvalAlways:"Siempre",approvalDeny:"Denegar",clarifyKicker:"El agente necesita aclaración",clarifyTitle:"El agente tiene una pregunta para usted",clarifyPlaceholder:"Escriba su respuesta...",clarifySubmit:"Responder",clarifyDismiss:"Descartar",deleteSession:"Eliminar esta sesion?",toggleBatchMode:"Selección por lotes",selectAll:"Seleccionar todo",confirmBatchDelete:"¿Eliminar {count} sesiones seleccionadas?",batchDeleteSuccess:"{count} sesiones eliminadas",batchDeletePartial:"{failed} sesiones fallaron al eliminar",batchDeleteFailed:"Error al eliminar por lotes",importToWebUi:"Importar a Web UI",importSessionSuccess:"Sesion importada a Web UI",importSessionAlreadyExists:"La sesion ya existe en Web UI",importSessionFailed:"Error al importar la sesion",sessionDeleted:"Sesion eliminada",rename:"Renombrar",archiveSession:"Archivar",unarchiveSession:"Desarchivar",pin:"Fijar",unpin:"Desfijar",pinned:"Fijados",chatMode:"Modo de chat",liveMode:"En vivo",liveSessions:"Sesiones en vivo",recentBadge:"Reciente",linkedSessions:"{count} vinculadas",noVisibleMessages:"No hay mensajes visibles para humanos.",monitorRoleUser:"Usuario",monitorRoleAssistant:"Asistente",copySessionLink:"Copiar enlace de sesión",openSessionInNewTab:"Abrir en una nueva pestaña",openSessionInNewWindow:"Abrir en una nueva ventana",sessionLinkCopied:"Session link copied",copySessionId:"Copiar ID de sesión",export:"Exportar",editConfig:"Editar configuración",exportFull:"Exportación completa (JSON)",exportCompressed:"Exportación comprimida (TXT)",exportCompressing:"Comprimiendo contexto, espere...",exportSuccess:"Sesión exportada",exportFailed:"Error al exportar",renamed:"Renombrada",renameFailed:"Error al renombrar",sessionArchived:"Sesión archivada",archiveSessionFailed:"No se pudo archivar la sesión",sessionUnarchived:"Sesión desarchivada",unarchiveSessionFailed:"No se pudo desarchivar la sesión",renameSession:"Renombrar sesion",sessionNotFound:"Sesion no encontrada",enterNewTitle:"Introduce un nuevo titulo",other:"Otro",runFailed:"Error en la ejecucion",error:"Error",tool:"Herramienta",arguments:"Argumentos",result:"Resultado",workspaceChanges:"Cambios del workspace",changedFiles:"{files} archivos modificados",changesThisTurn:"Cambios de este turno",diffUnavailable:"Diff no disponible",binaryFileDiffUnavailable:"Diff no disponible para archivos binarios",truncated:"... (truncado)",unchangedLines:"{count} líneas sin cambios",executionDuration:"Tiempo de ejecución",thinkingLabel:"Pensamiento",thinkingInProgress:"Pensando",thinkingShow:"Mostrar pensamiento",thinkingHide:"Ocultar pensamiento",thinkingDuration:"Observado {duration}",thinkingChars:"{count} caracteres",copyBubble:"Copiar mensaje",copiedBubble:"Mensaje copiado",copyFailed:"Error al copiar",referenceMessage:"Citar mensaje",cancelReference:"Cancelar cita",playSpeech:"Reproducir voz",pauseSpeech:"Pausa",resumeSpeech:"Reanudar",stopSpeech:"Detener",speechNotSupported:"Reproducción de voz no soportada en este navegador",searchEnterHint:"Enter para abrir · Esc para cerrar",searchHint:"Cmd/Ctrl+K",searchScope:"Alcance de búsqueda: solo base de datos local de sesiones de Web UI; no incluye sesiones históricas Hermes de solo lectura.",searchFailed:"No se pudieron buscar sesiones",searchNoSnippet:"No hay resumen disponible",searchNoResults:"No hay sesiones que coincidan",searchRecent:"Sesión reciente",searchEmpty:"Sesiones recientes",searchPlaceholder:"Buscar sesiones...",searchSubtitle:"Buscar por título o contenido de mensajes",searchTitle:"Buscar sesiones",stopGateway:"Detener gateway",start:"Iniciar",workspaceSetFailed:"No se pudo definir el workspace",workspaceSet:"Workspace definido",workspacePlaceholder:"Introduce la ruta del proyecto, p. ej. /home/user/project",folderPickerEmpty:"(Vacío)",folderPickerNoFolders:"No hay carpetas de workspace",folderPickerSelected:"Seleccionado:",workspaceDefault:"Predeterminado",workspaceDefaultTooltip:"Este espacio de trabajo está definido como predeterminado y se rellenará automáticamente en chats nuevos",workspacePin:"Definir como espacio de trabajo predeterminado",workspaceUnpin:"Quitar espacio de trabajo predeterminado",workspaceRecent:"Reciente",defaultWorkspace:"Espacio de trabajo predeterminado",more:"Más",workspace:"Espacio de trabajo",setWorkspaceTitle:"Definir workspace de sesión",setWorkspace:"Definir workspace",modelSetFailed:"No se pudo definir el modelo",modelSet:"Modelo definido",modelSwitching:"Cambiando de modelo...",setModelTitle:"Definir modelo de sesión",standardModels:"Modelos estándar",moaPresets:"Combinaciones MoA",noMoaPresets:"No hay combinaciones MoA disponibles",modelType:"Tipo de modelo",setModel:"Definir modelo",newCliChat:"Nuevo CLI",cliEmptyState:"Iniciar chat CLI",autoPlaySpeech:"Reproducir voz automáticamente",voiceInput:{startCapture:"Iniciar entrada de voz",stopCaptureAndInsert:"Detener entrada de voz e insertar la transcripcion",cancelCapture:"Cancelar entrada de voz",statusLabel:"Estado: {status}",transcriptLabel:"Transcripcion: {text}",errorLabel:"Error: {error}",recentEvents:"Eventos recientes",status:{idle:"Inactivo",capturing:"Escuchando",transcribing:"Transcribiendo",sending:"Insertando en la entrada",error:"Error"},browserSpeechUnsupported:"El reconocimiento de voz del navegador no es compatible con este navegador.",browserSpeechFailed:"Fallo el reconocimiento de voz del navegador.",browserSpeechFailedWithReason:"Fallo el reconocimiento de voz del navegador: {error}.",microphoneUnsupported:"La captura de microfono no es compatible con este navegador.",microphoneRecordingFailed:"Fallo la grabacion del microfono."}},jobs:{title:"Tareas programadas",createJob:"Crear tarea",editJob:"Editar tarea",noJobs:"No hay tareas programadas aun. Crea una para comenzar.",sortBy:"Ordenar",sortByName:"Por nombre",sortByTime:"Por fecha",sortByNameHint:"Ordenar por nombre",sortByTimeHint:"Ordenar por fecha",sortAsc:"Ascendente",sortDesc:"Descendente",name:"Nombre",namePlaceholder:"Nombre de la tarea",schedule:"Programacion (expresion Cron)",schedulePlaceholder:"ej. 0 9 * * *",quickPresets:"Presets rapidos",selectPreset:"Seleccionar un preset...",presetEveryMinute:"Cada minuto",presetEvery5Min:"Cada 5 minutos",presetEveryHour:"Cada hora",presetEveryDay:"Todos los dias a las 00:00",presetEveryDay9:"Todos los dias a las 09:00",presetEveryMonday:"Cada lunes a las 09:00",presetEveryMonth:"El dia 1 de cada mes a las 09:00",prompt:"Prompt",promptPlaceholder:"El prompt a ejecutar",skills:"Skills",skillsPlaceholder:"Seleccionar skills...",provider:"Provider",model:"Model",defaultProvider:"Default provider",defaultModel:"Default model",deliverTarget:"Destino de entrega",origin:"Origen",local:"Local",repeatCount:"Repeticiones (opcional)",modelPlaceholder:"Modelo por defecto",repeatPlaceholder:"Dejar vacio para infinito",jobCreated:"Tarea creada",jobUpdated:"Tarea actualizada",nameRequired:"El nombre es obligatorio",scheduleRequired:"La programacion es obligatoria",promptRequired:"El prompt es obligatorio",loadFailed:"Error al cargar la tarea",jobPaused:"Tarea en pausa",jobResumed:"Tarea reanudada",jobTriggered:"Job ejecutado",modelUpdated:"Modelo actualizado",jobDeleted:"Tarea eliminada",status:{running:"En ejecucion",paused:"En pausa",disabled:"Desactivada",scheduled:"Programada"},info:{model:"Modelo",provider:"Provider",schedule:"Programacion",lastRun:"Ultima ejecucion",nextRun:"Proxima ejecucion",deliver:"Entrega",repeat:"Repeticion"},action:{pause:"Pausar",pauseJob:"Pausar tarea",resume:"Reanudar",resumeJob:"Reanudar tarea",runNow:"Ejecutar ahora",triggerImmediately:"Ejecutar inmediatamente"},runHistory:{title:"Historial",runs:"ejecuciones",noRuns:"No se encontró historial."}},skills:{title:"Habilidades",targetFilter:"Runtime",targets:{hermes:"Hermes",claude:"Claude",codex:"Codex"},searchPlaceholder:"Buscar habilidades...",noMatch:"Ninguna habilidad coincide con tu busqueda",noSkills:"No se encontraron habilidades",backTo:"Volver a",attachedFiles:"Archivos adjuntos",loadFailed:"Error al cargar la habilidad",fileLoadFailed:"Error al cargar el archivo",modified:"Modificado por el usuario",archived:"Archivado",pinned:"Fijado",pin:"Fijar habilidad",unpin:"Desfijar habilidad",pinFailed:"Error al cambiar estado de fijacion",edit:"Editar",saving:"Guardando...",editorLabel:"Editor de skill",saveSuccess:"Habilidad guardada",saveFailed:"Error al guardar la habilidad",toggleFailed:"Error al activar/desactivar la habilidad",source:{builtin:"Integrado",hub:"Hub",local:"Local",external:"Externo"},delete:"Eliminar",deleteConfirm:'¿Eliminar la habilidad "{name}"? Esta acción no se puede deshacer.',deleteSuccess:"Habilidad eliminada",deleteFailed:"No se pudo eliminar",import:"Importar",importTitle:"Importar habilidad",importModeZip:"Zip",importModeFolder:"Carpeta",importHintZip:"Sube un archivo .zip con un directorio que contenga SKILL.md",importHintFolder:"Selecciona una carpeta local (debe contener SKILL.md)",importTargetCategory:"Categoría destino (opcional)",importTargetCategoryPlaceholder:"Vacío para colocar bajo misc",importSelectFile:"Elegir archivo .zip",importSelectFolder:"Elegir carpeta",importInvalidFile:"Solo se admiten archivos .zip",importFileCount:"archivos",importNoSelection:"Selecciona un archivo o carpeta primero",importSuccess:"Habilidad importada",importFailed:"Error al importar",path:{local:"Local",external:"Externo"},externalDirs:{manage:"Directorios externos",title:"Gestionar directorios externos",hint:"Gestiona config.skills.external_dirs. Admite ~ y $VAR; las rutas inexistentes se atenúan.",add:"Añadir directorio",placeholder:"/path/to/skills o ~/my-skills",empty:"Sin directorios externos",missing:"Ruta no encontrada",notDir:"No es un directorio",saveSuccess:"Directorios externos guardados",saveFailed:"Error al guardar",loadFailed:"Error al cargar directorios externos",removeRow:"Quitar"},pathCopied:"Ruta copiada",pathCopyFailed:"Error al copiar la ruta",reloadHint:"Sesiones activas: ejecuta /reload-skills; las nuevas la cargan automáticamente.",writeApprovalButton:"Pendientes {count}",writeApprovalTitle:"Escrituras pendientes de revision",writeApprovalDescription:"Aprueba o rechaza escrituras de memoria y skills preparadas por Hermes Agent.",writeApprovalRefresh:"Actualizar",writeApprovalEmpty:"No hay escrituras pendientes.",writeApprovalUnsupported:"Esta version de Hermes Agent no admite revision de escrituras. Actualiza Hermes Agent para usar esta funcion.",writeApprovalMemory:"Memoria",writeApprovalSkills:"Skills",writeApprovalViewDiff:"Revisar",writeApprovalHideDiff:"Ocultar",writeApprovalNoDiff:"No hay diferencias disponibles.",writeApprovalLoadFailed:"No se pudieron cargar las escrituras pendientes",writeApprovalDiffFailed:"No se pudieron cargar los detalles de escritura",writeApprovalActionFailed:"No se pudo resolver la escritura pendiente",writeApprovalApproved:"Escritura aprobada",writeApprovalRejected:"Escritura rechazada",writeApprovalApprove:"Aprobar",writeApprovalReject:"Rechazar",writeApprovalPendingMemoryWrite:"Escritura de memoria pendiente",writeApprovalCurrentFile:"Archivo actual {file}",writeApprovalProposedFile:"Archivo propuesto {file}",writeApprovalDiffSection:"Diferencias",writeApprovalPatchOldStringMissing:"No se encontro el old_string del parche en el archivo actual {file}; aprobarlo no cambiara el archivo.",writeApprovalRequestedOldString:"old_string solicitado",writeApprovalCurrentReadFailed:"El archivo actual {file} no se pudo leer como texto UTF-8.",writeApprovalDeleteSkill:"Esta aprobacion elimina el skill {skill}.",writeApprovalRemoveFile:"Esta aprobacion elimina {file} del skill {skill}."},plugins:{title:"Plugins",refresh:"Actualizar",notice:"Inventario de manifests de plugins Hermes detectables. Los metadatos de descubrimiento se leen sin cargar código de plugins. Los plugins de usuario standalone se pueden activar o desactivar aquí; los cambios se aplican en nuevas sesiones Hermes.",loadFailed:"No se pudieron cargar los plugins",updateFailed:"No se pudo actualizar el plugin",enableSuccess:"{name} activado",disableSuccess:"{name} desactivado",commandCopied:"Comando copiado",searchPlaceholder:"Buscar key, nombre, descripción, ruta...",source:"Origen",kind:"Tipo",statusTitle:"Estado",configStatus:"config: {status}",notAvailable:"n/a",copyCommand:"Copiar comando",managedElsewhere:"gestionado en otro lugar",noMatch:"Ningún plugin coincide con los filtros actuales",enabled:"activado",disabled:"desactivado",summary:{total:"Total",active:"Activado / auto",inactive:"Inactivo",disabled:"Desactivado",providerManaged:"Gestionado por provider"},status:{enabled:"Activado","auto-active":"Autoactivo",inactive:"Inactivo",disabled:"Desactivado","provider-managed":"Gestionado por provider"},statusLabel:{enabled:"Activado por configuración","auto-active":"Autoactivo",inactive:"Inactivo",disabled:"Desactivado","provider-managed":"Gestionado por provider"},configStatuses:{enabled:"activado",disabled:"desactivado","not-enabled":"no activado",auto:"auto","provider-managed":"gestionado por provider"},table:{plugin:"Plugin",status:"Estado",source:"Origen",kind:"Tipo",capabilities:"Capacidades",path:"Ruta / entrypoint",manage:"Gestionar"},capabilities:{tools:"{count} herramientas",hooks:"{count} hooks",env:"{count} env"},metadata:{agentRoot:"Raíz del agente",python:"Python",scanCwd:"Escanear cwd",projectPlugins:"Plugins del proyecto"}},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:"Memoria",refresh:"Actualizar",loadFailed:"Error al cargar la memoria",myNotes:"Mis notas",noNotes:"Sin notas aun.",notesPlaceholder:"Escribe tus notas...",userProfile:"Perfil de usuario",noProfile:"Sin perfil aun.",profilePlaceholder:"Escribe tu perfil...",soul:"Alma",noSoul:"Sin configuracion de alma aun.",soulPlaceholder:"Escribe la configuracion del alma..."},models:{title:"Modelos",addProvider:"Anadir proveedor",noProviderPromptTitle:"No hay proveedor de modelos configurado",noProviderPromptMessage:'El perfil actual "{profile}" no tiene ningun proveedor de modelos configurado. Quieres abrir la configuracion de modelos?',noProviderPromptLater:"Ahora no",noProviderPromptAction:"Ir a configuracion",refreshModelCache:"Actualizar cache de modelos",refreshModelCacheLoading:"Actualizando cache de modelos...",refreshModelCacheSuccess:"Cache de modelos actualizado",refreshModelCacheFailed:"No se pudo actualizar el cache de modelos",refreshModels:"Actualizar modelos",restoreModels:"Restaurar la lista anterior",refreshModelsConfirmTitle:"Confirmar cambios en la lista de modelos",refreshModelsConfirmContent:"Esta actualización eliminará {removed} modelo(s) y añadirá {added}. Se eliminarán: {removedList}",refreshModelsConfirmAction:"Reemplazar la lista de modelos",refreshModelsSuccess:"Lista de modelos actualizada ({count} modelos, {unavailable} no disponibles)",refreshModelsFailed:"No se pudieron actualizar los modelos del proveedor",restoreModelsSuccess:"Lista de modelos anterior restaurada ({count} modelos)",restoreModelsFailed:"No se pudo restaurar la lista de modelos anterior",providerType:"Tipo de proveedor",preset:"Preajuste",custom:"Personalizado",selectProvider:"Seleccionar proveedor",chooseProvider:"Elige un proveedor...",name:"Nombre",autoGeneratedName:"Generado automaticamente desde la URL base",baseUrl:"URL base",region:"Región",regionIntl:"Internacional",regionCn:"China continental",baseUrlPlaceholder:"ej. https://api.example.com/v1",apiKey:"Clave API",apiKeyPlaceholder:"sk-...",defaultModel:"Modelo predeterminado",selectOrInput:"Seleccionar o ingresar un modelo...",selectModel:"Seleccionar un modelo...",providerAdded:"Proveedor anadido",providerDeleted:"Proveedor eliminado",providerCredentialsCleared:"Credenciales del proveedor borradas",clearProviderCredentials:"Borrar credenciales",clearCredentialsConfirm:'¿Borrar las credenciales guardadas de "{name}"? Este proveedor integrado seguira apareciendo y podra usarse de nuevo cuando se configuren credenciales.',disableProvider:"Desactivar proveedor",disableProviderConfirm:'¿Desactivar el proveedor integrado "{name}"? El proveedor seguira siendo integrado y podra reactivarse mas tarde.',providerDisabled:"Proveedor desactivado",defaultProviderUpdated:"Proveedor predeterminado actualizado",defaultProviderUpdateFailed:"No se pudo actualizar el proveedor predeterminado",defaultModelUpdated:"Modelo predeterminado actualizado",defaultModelUpdateFailed:"No se pudo actualizar el modelo predeterminado",deleteProvider:"Eliminar proveedor",deleteConfirm:'Estas seguro de que quieres eliminar "{name}"?',codexLoginTitle:"Inicio de sesión de OpenAI Codex",codexWaiting:"Ingrese este código en la página de autorización para iniciar sesión:",codexCopyCode:"Código copiado",codexOpenLink:"Abrir página de autorización",codexApproved:"Inicio de sesión exitoso",codexExpired:"La autorización ha expirado. Por favor, inténtelo de nuevo.",nousLoginTitle:"Inicio de sesión de Nous Portal",nousWaiting:"Ingrese este código en la página de autorización:",nousCopyCode:"Código copiado",nousOpenLink:"Abrir página de autorización",nousApproved:"Inicio de sesión exitoso",nousDenied:"Autorización denegada",nousExpired:"Autorización expirada",copilotLoginTitle:"Inicio de sesión de GitHub Copilot",copilotWaiting:"Abra GitHub e introduzca el código de dispositivo a continuación para autorizar. La ventana se cerrará automáticamente tras la aprobación.",copilotCopyCode:"Código copiado",copilotOpenLink:"Abrir la página de autorización de GitHub",copilotApproved:"¡Inicio de sesión exitoso!",copilotDenied:"Autorización denegada.",copilotExpired:"El enlace de autorización ha caducado. Vuelva a intentarlo.",copilotAddDetectedTitle:"GitHub Copilot detectado",copilotAddDetected:"Se detectó un token OAuth de GitHub Copilot en este equipo. Haz clic en Agregar para habilitar Copilot en Hermes.",copilotAddSourceEnv:"Origen: ~/.hermes/.env (COPILOT_GITHUB_TOKEN)",copilotAddSourceGhCli:"Origen: gh CLI (gh auth token)",copilotAddSourceAppsJson:"Origen: extensión Copilot de VS Code (apps.json)",copilotDeleteHintEnv:"Esto borrará COPILOT_GITHUB_TOKEN en ~/.hermes/.env. Otras herramientas no se verán afectadas.",copilotDeleteHintGhCli:"Copilot se ocultará de Hermes. Tu sesión de gh CLI no se verá afectada — `gh auth status` seguirá mostrando que estás conectado.",copilotDeleteHintAppsJson:"Copilot se ocultará de Hermes. La extensión Copilot de VS Code seguirá conectada.",customBadge:"PERSONALIZADO",previewBadge:"VISTA PREVIA",disabledBadge:"NO DISPONIBLE",disabledTooltip:"Este modelo no está disponible para tu cuenta.",customModelPlaceholder:"ID de modelo no listado",customModelHint:"Para modelos compatibles con el proveedor que la API no devuelve; no es un cambio de nombre visible. Enter para cargar.",noProviders:"No se encontraron proveedores. Anade un proveedor personalizado para comenzar.",clearVisibleModels:"Borrar selección",generalTitle:"Modelos generales",combinationTitle:"Conjuntos de modelos",combinationSubtitle:"Configura presets de MoA: los modelos de referencia aportan perspectivas primero y luego un modelo agregador produce la respuesta final y las llamadas a herramientas.",combinationPreset:"Preset",combinationName:"Nombre",combinationAddModel:"Agregar conjunto de modelos",combinationEditModel:"Editar conjunto de modelos",combinationNewPreset:"Nuevo preset",combinationPresetPlaceholder:"p. ej. review",combinationAddPreset:"Agregar preset",combinationSetDefault:"Establecer como predeterminado",combinationEnabled:"Activar referencias",combinationReferenceModels:"Modelos de referencia",combinationReferenceModel:"Modelo de referencia",combinationAddReference:"Agregar modelo de referencia",combinationAggregator:"Modelo agregador",combinationReferenceTemperature:"Temperatura de referencia",combinationAggregatorTemperature:"Temperatura del agregador",combinationMaxTokens:"Tokens maximos",combinationNotSet:"Sin configurar",combinationSaved:"Conjunto de modelos guardado",combinationLoadFailed:"No se pudo cargar el conjunto de modelos",combinationSaveFailed:"No se pudo guardar el conjunto de modelos",combinationPresetExists:"El preset ya existe",combinationNameRequired:"Introduce un nombre para el conjunto de modelos",combinationNameInvalid:"El nombre solo puede contener letras, numeros, guiones bajos, guiones y puntos",combinationReferenceRequired:"Agrega al menos un modelo de referencia",combinationAggregatorRequired:"Selecciona un modelo agregador",auxiliaryTitle:"Modelos auxiliares",auxiliarySubtitle:"Sobrescrituras de modelo para tareas secundarias como compresión, visión, aprobaciones, MCP y mantenimiento en segundo plano.",auxiliaryRefresh:"Actualizar",auxiliaryTask:"Tarea",auxiliaryTimeout:"Tiempo de espera",auxiliaryDownloadTimeout:"Tiempo de espera de descarga",auxiliaryActions:"Acciones",auxiliaryDefault:"Predeterminado",auxiliaryCustomEndpoint:"Endpoint personalizado",auxiliaryProviderAuto:"Automático",auxiliaryProviderMain:"Modelo principal",auxiliaryProviderPlaceholder:"auto, main o clave del proveedor",auxiliaryDownloadShort:"descarga",auxiliaryExtraBody:"JSON de cuerpo extra",auxiliaryClear:"Restablecer",auxiliarySaved:"Modelos auxiliares guardados",auxiliaryLoadFailed:"No se pudieron cargar los modelos auxiliares",auxiliarySaveFailed:"No se pudieron guardar los modelos auxiliares",auxiliaryInvalidExtraBody:"El cuerpo extra debe ser un objeto JSON",auxiliaryTaskCompression:"Compresión",auxiliaryTaskVision:"Visión",auxiliaryTaskWebExtract:"Extracción web",auxiliaryTaskSkillsHub:"Centro de habilidades",auxiliaryTaskApproval:"Aprobación",auxiliaryTaskMcp:"MCP",auxiliaryTaskTitleGeneration:"Generación de títulos",auxiliaryTaskTriageSpecifier:"Especificador de triage",auxiliaryTaskKanbanDecomposer:"Descomposición de Kanban",auxiliaryTaskProfileDescriber:"Descripción de perfil",auxiliaryTaskCurator:"Curador",auxiliaryTaskSessionSearch:"Búsqueda de sesiones",auxiliaryTaskFlushMemories:"Guardar memorias",currentDefault:"Predeterminado actual",defaultShort:"Predeterminado",setDefaultProvider:"Establecer como proveedor predeterminado",setDefault:"Establecer como predeterminado",builtIn:"Integrado",customType:"Personalizado",provider:"Proveedor",contextLength:"Longitud del contexto",contextLengthPlaceholder:"ej. 256000 (opcional)",apiMode:"Modo API",local:"Local ({host})",selectProviderRequired:"Por favor, selecciona un proveedor",baseUrlRequired:"La URL base es obligatoria",apiKeyRequired:"La clave API es obligatoria",modelRequired:"El modelo predeterminado es obligatorio",enterBaseUrl:"Por favor, introduce primero la URL base",unexpectedFormat:"Formato de respuesta inesperado",foundModels:"{count} modelos encontrados",fetchFailed:"Error al obtener los modelos",xaiWaiting:"Completa la autorización en la página de xAI abierta. La ventana se cerrará automáticamente al aprobarse.",xaiOpenLink:"Abrir página de autorización de xAI",xaiLoginTitle:"Inicio de sesión OAuth de xAI Grok",xaiExpired:"El enlace de autorización expiró. Inténtalo de nuevo.",xaiCopyLink:"Copiar enlace de autorización",xaiApproved:"¡Inicio de sesión correcto!",anthropicLoginTitle:"Inicio de sesión OAuth de Claude",anthropicWaiting:"Completa la autorización en Claude y pega aquí el código devuelto.",anthropicOpenLink:"Abrir página de autorización de Claude",anthropicCopyLink:"Copiar enlace de autorización",anthropicCodePlaceholder:"Pega el código de autorización...",anthropicSubmitCode:"Enviar código",anthropicApproved:"¡Inicio de sesión correcto!",anthropicExpired:"La autorización expiró. Inténtalo de nuevo.",minimaxLoginTitle:"Inicio de sesión de MiniMax Coding Plan",minimaxRegionHint:"Elige la región MiniMax de tu cuenta de Coding Plan.",minimaxGlobal:"Global",minimaxChina:"China",minimaxStart:"Iniciar autorización",minimaxWaiting:"Abre la página de autorización de MiniMax e introduce este código. La ventana se cerrará automáticamente tras la aprobación.",minimaxOpenLink:"Abrir página de autorización de MiniMax",minimaxApproved:"¡Inicio de sesión correcto!",minimaxExpired:"La autorización expiró. Inténtalo de nuevo.",visibilitySelectOne:"Mantén al menos un modelo visible",visibilitySaved:"Modelos visibles guardados",visibilitySaveFailed:"No se pudieron guardar los modelos visibles",visibilityHint:"Solo afecta al selector de modelos y a la página de modelos de Web UI. No modifica la configuración provider/model de Hermes CLI; las llamadas siguen usando el ID original del modelo.",showAllModels:"Mostrar todos los modelos",searchPlaceholder:"Buscar modelos...",noResults:"Sin resultados",noModels:"Sin modelos",removeCustomModel:"Eliminar este modelo no listado",refresh:"Actualizar lista de modelos (recargar config.yaml)",more:"más",models:"Lista de modelos",manageVisibleModelsFor:"Gestionar modelos visibles de {name}",manageVisibleModels:"Gestionar modelos visibles",getApiKey:"Obtener API Key",count:"modelos",aliasUseOriginal:"Restaurar ID original",aliasTitleFor:"Nombre visible de {model}",aliasTitle:"Nombre visible del modelo",aliasSaveFailed:"No se pudo guardar el nombre visible",aliasPlaceholder:"Dejar vacío para usar el ID original del modelo",aliasManageFor:"Nombres visibles de {provider}",aliasManage:"Nombres visibles",aliasHint:"Solo cambia el nombre visible en Web UI. Hermes sigue recibiendo el ID original del modelo.",aliasEdit:"Renombrar",aliasCanonical:"ID original: {model}"},profiles:{title:"Perfiles",create:"Crear perfil",import:"Importar",export:"Exportar",rename:"Renombrar",delete:"Eliminar",switchTo:"Cambiar Hermes Profile",switchConfirm:"Esto ejecutara `hermes profile use {name}` y cambiara el active profile de Hermes CLI. Continuar?",switchSuccess:'Hermes active profile cambiado a "{name}"',switchFailed:"Error al cambiar Hermes Profile. Es posible que la pasarela necesite un reinicio manual.",createSuccess:'Perfil "{name}" creado',createFailed:"Error al crear el perfil",renameSuccess:"Perfil renombrado",renameFailed:"Error al renombrar el perfil",deleteConfirm:'Estas seguro de que quieres eliminar el perfil "{name}"?',deleteSuccess:"Perfil eliminado",deleteFailed:"Error al eliminar el perfil",exportSuccess:"Perfil exportado",exportFailed:"Error al exportar el perfil",exportTimeout:"Se agotó el tiempo de exportación. Este perfil es demasiado grande para archivarlo: normalmente son las cachés y los entornos virtuales del workspace los que lo agrandan.",importTimeout:"La importación agotó el tiempo mientras el servidor descomprimía el archivo. Inténtalo de nuevo en un almacenamiento más rápido o impórtalo con Hermes CLI.",importSuccess:"Perfil importado",importFailed:"Error al importar el perfil",importSelectFile:"Seleccionar archivo de archivo",importInvalidFile:"Por favor, selecciona un archivo valido (.tar.gz, .tgz, .gz, .zip)",name:"Nombre del perfil",namePlaceholder:"Solo letras, numeros y guiones",nameValidation:"El nombre del perfil solo puede contener letras minúsculas, números, guiones bajos y guiones",newName:"Nuevo nombre",newNamePlaceholder:"Introduce un nuevo nombre",cloneFromCurrent:"Clonar desde el perfil actual",cloneCleanupNotice:"Al clonar se omiten automáticamente las credenciales exclusivas de plataforma (Weixin / Telegram / Slack, etc.) para evitar conflictos con el perfil de origen",cloneStrippedCredentials:"Se eliminaron {count} credenciales exclusivas: {list}",cloneDisabledPlatforms:"Se deshabilitaron {count} plataforma(s): {list}",cloneStrippedConfigCredentials:"Se eliminaron {count} credencial(es) integradas de config.yaml: {list}",archivePath:"Ruta del archivo",archivePathPlaceholder:"Ruta del servidor al archivo de archivo",importName:"Nombre del perfil (opcional)",importNamePlaceholder:"Dejar vacio para usar el nombre del archivo",active:"Activo",model:"Modelo",gateway:"Pasarela",alias:"Alias",provider:"Proveedor",path:"Ruta",skills:"Habilidades",hasEnv:"Tiene .env",hasSoulMd:"Tiene soul.md",noProfiles:"No se encontraron perfiles. Crea uno para comenzar.",avatar:{title:"Avatar personalizado",customize:"Personalizar avatar",upload:"Subir imagen",random:"Generar aleatorio",reset:"Restaurar predeterminado",hint:"PNG, JPEG o WebP, máximo 1 MB",invalidType:"Elige una imagen PNG, JPEG o WebP",tooLarge:"La imagen del avatar no puede superar 1 MB",saveSuccess:"Avatar guardado",saveFailed:"No se pudo guardar el avatar",resetSuccess:"Avatar predeterminado restaurado",resetFailed:"No se pudo restaurar el avatar predeterminado"},runtime:{activeProfile:"Actual: {name}",bridgeWorker:"Estado del Bridge",gateway:"Puerta de enlace",active:"Activo",activeTag:"Actual",idle:"Inactivo",checking:"Comprobando",running:"En ejecución",stopped:"Detenido",restartGateway:"Reiniciar gateway",restartProfile:"Reiniciar perfil",switchProfile:"Cambiar perfil frontend",gatewayRestarted:"Gateway reiniciado: {name}",gatewayRestartFailed:"No se pudo reiniciar el gateway",profileRestarted:"Perfil reiniciado: {name}",profileRestartFailed:"No se pudo reiniciar el perfil"}},logs:{title:"Registros",all:"Todos",searchPlaceholder:"Buscar...",refresh:"Actualizar",noEntries:"Sin entradas de registro"},theme:{title:"Tema",saved:"Tema guardado",saveFailed:"No se pudo guardar el tema",reset:"Restaurar valores",resetSuccess:"Tema predeterminado restaurado",appearance:"Apariencia",appearanceHint:"Los cambios se previsualizan en toda la interfaz",mode:"Brillo",modeHint:"Elige una paleta clara u oscura",modeSystem:"Seguir al sistema",modeLight:"Claro",modeDark:"Oscuro",style:"Estilo",styleHint:"Elige el carácter de la interfaz",styleInk:"Tinta",styleComic:"Cómic",fontSize:"Tamaño del texto",fontSizeHint:"Tamaño base de la interfaz y las conversaciones",textColor:"Color del texto",textColorHint:"Los tonos secundarios se generan automáticamente",accentColor:"Color de selección",accentColorHint:"Se usa en elementos activos, selecciones y botones principales",background:"Imagen de fondo",backgroundHint:"Sube un fondo personal para el espacio de trabajo",backgroundTypeError:"Usa una imagen PNG, JPEG, WebP o GIF",backgroundSizeError:"La imagen debe ocupar 10 MB o menos",backgroundUploaded:"Imagen de fondo actualizada",backgroundUploadFailed:"No se pudo subir la imagen de fondo",backgroundRemoved:"Imagen de fondo eliminada",backgroundRemoveFailed:"No se pudo eliminar la imagen de fondo",backgroundReplace:"Cambiar imagen",backgroundUpload:"Subir imagen",backgroundRemove:"Eliminar",backgroundEmpty:"Sin imagen de fondo",backgroundNote:"La imagen se guarda con tu cuenta. La caché local evita parpadeos.",preview:"Vista previa",previewTitle:"Tu espacio, tu ambiente",previewText:"Los colores de texto y selección se aplican a toda la interfaz.",previewAction:"Acción seleccionada"},settings:{title:"Configuracion",saved:"Guardado",saveFailed:"Error al guardar",tabs:{display:"Pantalla",account:"Cuenta actual",users:"Gestion de cuentas",webhooks:"Webhooks",agent:"Agente",proxy:"Proxy",memory:"Memoria",compression:"Compresion",session:"Sesion",privacy:"Privacidad",apiServer:"Servidor API",models:"Modelos",voice:"Voz"},webhooks:{title:"Webhooks",description:"Envía eventos del ciclo de vida de Chat Run a sistemas externos sin bloquear la ejecución del chat.",deliveryNote:"La entrega usa una cola en memoria limitada. Los endpoints se procesan en paralelo y cada endpoint conserva el orden de los eventos. Las entregas pendientes no se conservan al reiniciar el servidor.",createTitle:"Añadir webhook",editTitle:"Editar webhook",allProfiles:"Todos los perfiles",queued:"{count} en cola",deleteConfirm:"¿Eliminar este webhook? También se descartarán sus entregas pendientes.",localInboxTitle:"Bandeja de pruebas local",localInboxDescription:"{count} eventos recientes recibidos por el receptor de prueba integrado. Solo se guardan en memoria y se borran al reiniciar el servidor.",localInboxEmpty:"Aún no se han recibido eventos de prueba locales.",localInboxPayloadTitle:"Payload de webhook recibido",clearInboxConfirm:"¿Borrar todos los eventos de la bandeja de pruebas local?",columns:{name:"Nombre",url:"URL",events:"Eventos",profiles:"Perfiles",status:"Estado",actions:"Acciones",receivedAt:"Recibido",event:"Evento",eventId:"ID del evento",deliveryId:"ID de entrega"},events:{messageCreated:"Mensaje de usuario creado",runQueued:"Ejecución en cola",runStarted:"Ejecución iniciada",toolStarted:"Herramienta iniciada",toolCompleted:"Herramienta completada",toolFailed:"Herramienta fallida",approvalRequested:"Aprobación solicitada",approvalResolved:"Aprobación resuelta",clarificationRequested:"Aclaración solicitada",clarificationResolved:"Aclaración resuelta",completed:"Ejecución completada",failed:"Ejecución fallida"},status:{enabled:"Activado",disabled:"Desactivado"},runtime:{idle:"Inactivo",delivering:"Entregando",retrying:"Reintentando",success:"Entregado",failed:"Fallido",dropped:"Descartado"},actions:{add:"Añadir webhook",localTest:"Usar receptor de prueba local",test:"Probar",enable:"Activar",disable:"Desactivar",refresh:"Actualizar",clear:"Borrar",view:"Ver"},form:{name:"Nombre",localTestName:"Prueba local de webhook",namePlaceholder:"Por ejemplo: Notificaciones de operaciones",url:"URL del endpoint",secret:"Secreto de firma",secretPlaceholder:"Secreto opcional para la firma HMAC-SHA256",secretKeepPlaceholder:"Déjalo vacío para conservar el secreto actual",clearSecret:"Eliminar el secreto guardado",events:"Eventos",profiles:"Perfiles",profilesPlaceholder:"Déjalo vacío para recibir todos los perfiles",maxRetries:"Reintentos tras el primer fallo (0–10)",includeContent:"Incluir el texto final del asistente",includeContentHint:"La respuesta final puede contener información sensible. Nunca se incluyen el razonamiento, los prompts del sistema ni los argumentos de herramientas.",includeUserContent:"Incluir el texto del mensaje del usuario",includeUserContentHint:"Los mensajes de usuario pueden contener información sensible. Está desactivado de forma predeterminada y no incluye prompts del sistema, razonamiento, argumentos ni resultados de herramientas.",allowPrivateNetwork:"Permitir direcciones de red privadas o locales",allowPrivateNetworkHint:"Actívalo solo para endpoints internos de confianza. El DNS se vuelve a comprobar en cada entrega.",enabled:"Activado"},messages:{required:"El nombre y la URL son obligatorios",eventRequired:"Selecciona al menos un evento",loadFailed:"No se pudieron cargar los webhooks",saved:"Webhook guardado",saveFailed:"No se pudo guardar el webhook",deleted:"Webhook eliminado",deleteFailed:"No se pudo eliminar el webhook",testSucceeded:"Webhook de prueba entregado",testFailed:"Falló el webhook de prueba",localTestFailed:"No se pudo crear el receptor de prueba local",inboxLoadFailed:"No se pudieron cargar los eventos de prueba locales",inboxCleared:"Eventos de prueba locales borrados",inboxClearFailed:"No se pudieron borrar los eventos de prueba locales"}},display:{streaming:"Respuestas en streaming",streamingHint:"Mostrar respuestas de la IA en tiempo real",compact:"Modo compacto",compactHint:"Reducir el espaciado entre mensajes",showReasoning:"Mostrar razonamiento",showReasoningHint:"Mostrar el proceso de pensamiento del modelo",showCost:"Mostrar costo",showCostHint:"Mostrar uso de tokens en las respuestas",inlineDiffs:"Diffs en linea",inlineDiffsHint:"Mostrar cambios de codigo en linea",bellOnComplete:"Sonido de finalizacion",bellOnCompleteHint:"Reproducir un sonido cuando la IA termina",notifyOnComplete:"Notificacion de finalizacion",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:"Mostrar una notificacion del sistema cuando la IA termina",notifyOnCompleteMacHint:"En macOS, permite las notificaciones del navegador en Ajustes del Sistema.",notifyOnCompleteDenied:"Permiso de notificacion denegado",notifyOnCompleteInsecure:"Las notificaciones del navegador requieren HTTPS o localhost",notifyOnCompleteUnsupported:"Este navegador no admite notificaciones",notifyOnCompleteTest:"Notificaciones activadas.",notifyOnCompleteTestButton:"Probar",notifyOnCompleteTesting:"Enviando notificacion de prueba...",notifyOnCompleteTestSent:"Notificacion de prueba enviada",notifyOnCompleteTestFailed:"No se pudo enviar la notificacion de prueba",busyInputMode:"Modo de entrada ocupada",busyInputModeHint:"Permitir entrada mientras la IA procesa",theme:"Tema",themeHint:"Elige claro, oscuro o seguir la preferencia del sistema",themeLight:"Claro",themeDark:"Oscuro",themeSystem:"Sistema",chatInputHeight:"Altura de entrada del chat",chatInputHeightHint:"Altura predeterminada de la entrada del chat en escritorio, en píxeles. En móvil se mantiene automática."},agent:{maxTurns:"Turnos maximos",maxTurnsHint:"Rondas maximas de interaccion por conversacion",gatewayTimeout:"Tiempo de espera de la pasarela",gatewayTimeoutHint:"Tiempo de espera de la peticion en segundos",restartDrainTimeout:"Tiempo de drenado al reiniciar",restartDrainTimeoutHint:"Tiempo de drenado antes de reiniciar en segundos",toolEnforcement:"Aplicacion de herramientas",toolEnforcementHint:"Controlar el modo de ejecucion de llamadas a herramientas",auto:"Automatico",always:"Siempre",never:"Nunca"},gatewayAutoStart:{title:"Inicio automático de gateway",description:"Controla qué gateways de perfiles Hermes locales inicia la Web UI al arrancar. Se guarda en la configuración de la Web UI, no en el config.yaml del perfil.",enabled:"Iniciar gateways automáticamente",enabledHint:"Si está desactivado, el arranque no iniciará automáticamente ningún gateway de perfil.",management:"Gateway unificado",managementHint:"Requiere Hermes Agent 0.17.0 o posterior. Al activarlo, Web UI escribe multiplex_profiles para que el gateway default sirva todos los perfiles; otros perfiles no pueden configurar entradas de mensajeria separadas como Feishu, Weixin o QQBot. Al desactivarlo elimina esa configuración.",managementAuto:"Automático",managementPerProfile:"Un gateway por perfil",managementUnified:"Gateway default unificado",mode:"Política de perfiles",modeHint:"Inicia todos los perfiles detectados o solo la lista incluida explícitamente.",modeAll:"Todos los perfiles detectados",modeInclude:"Solo perfiles incluidos",include:"Perfiles incluidos",includeHint:"Nombres de perfil separados por comas. En modo de inclusión, una lista vacía no inicia ninguno.",exclude:"Perfiles excluidos",excludeHint:"Nombres de perfil separados por comas que se omiten después de aplicar la política.",profileListPlaceholder:"default, reviewer"},proxy:{title:"Proxy del gateway",description:"Configura variables de entorno de proxy para el gateway del perfil seleccionado. Los cambios reinician el gateway para que las plataformas de mensajeria usen la nueva red.",httpsProxy:"HTTPS_PROXY",httpsProxyHint:"Proxy para solicitudes HTTPS. Normalmente es el valor principal.",httpProxy:"HTTP_PROXY",httpProxyHint:"Proxy para solicitudes HTTP simples.",allProxy:"ALL_PROXY",allProxyHint:"Proxy de respaldo cuando no hay un proxy especifico del protocolo.",noProxy:"NO_PROXY",noProxyHint:"Hosts o dominios separados por comas que no deben usar proxy.",save:"Guardar ajustes de proxy"},memory:{enabled:"Activar memoria",enabledHint:"Permitir que la IA recuerde el contexto de la conversacion",userProfile:"Perfil de usuario",userProfileHint:"Permitir que la IA recuerde las preferencias del usuario",charLimit:"Limite de caracteres de memoria",charLimitHint:"Maximo de caracteres para MEMORY.md",userCharLimit:"Limite de caracteres del perfil de usuario",userCharLimitHint:"Maximo de caracteres para USER.md"},compression:{enabled:"Activar compresion",enabledHint:"Comprimir automaticamente el historial largo antes de superar el contexto del modelo",threshold:"Umbral de compresion",thresholdHint:"Iniciar compresion cuando los tokens estimados superen esta proporcion del contexto",targetRatio:"Proporcion objetivo",targetRatioHint:"Tamano objetivo del historial tras comprimir como proporcion del contexto",protectLastN:"Proteger mensajes recientes",protectLastNHint:"Mantener sin comprimir esta cantidad de mensajes recientes",protectFirstN:"Proteger primeros mensajes",protectFirstNHint:"Mantener sin comprimir esta cantidad de mensajes iniciales"},session:{mode:"Modo de reinicio",modeHint:"Condicion de activacion del reinicio de sesion",modeBoth:"Inactividad + Programado",modeIdle:"Solo inactividad",modeDaily:"Solo programado",modeNone:"Nunca (solo manual)",idleMinutes:"Tiempo de inactividad",idleMinutesHint:"Tiempo de espera antes del reinicio automatico (minutos)",atHour:"Hora de reinicio programado",humanOnly:"Mostrar solo sesiones humanas",humanOnlyHint:"Oculta por defecto el ruido de subagentes y del monitor de sesiones",liveMonitorHumanOnly:"Monitor en vivo: mostrar solo sesiones humanas",liveMonitorHumanOnlyHint:"Oculta por defecto el ruido de subagentes y del monitor de sesiones en el monitor en vivo",atHourHint:"Reiniciar sesion a esta hora todos los dias",requireAuth:"Autorizacion de sesion",requireAuthHint:"Requerir autorizacion para operaciones de sesion",memoryWriteApproval:"Revisar escrituras de memoria",memoryWriteApprovalHint:"Preparar las escrituras de memoria de Hermes Agent para aprobacion antes de guardarlas.",skillsWriteApproval:"Revisar escrituras de skills",skillsWriteApprovalHint:"Preparar los cambios de skills de Hermes Agent para aprobacion antes de guardarlos.",writeApprovalTitle:"Escrituras pendientes de revision",writeApprovalDescription:"Aprueba o rechaza escrituras de memoria y skills preparadas por Hermes Agent.",writeApprovalRefresh:"Actualizar",writeApprovalEmpty:"No hay escrituras pendientes.",writeApprovalMemory:"Memoria",writeApprovalSkills:"Skills",writeApprovalViewDiff:"Revisar",writeApprovalHideDiff:"Ocultar",writeApprovalNoDiff:"No hay diferencias disponibles.",writeApprovalLoadFailed:"No se pudieron cargar las escrituras pendientes",writeApprovalDiffFailed:"No se pudieron cargar los detalles de escritura",writeApprovalActionFailed:"No se pudo resolver la escritura pendiente",writeApprovalApproved:"Escritura aprobada",writeApprovalRejected:"Escritura rechazada",writeApprovalApprove:"Aprobar",writeApprovalReject:"Rechazar",writeApprovalPendingMemoryWrite:"Escritura de memoria pendiente",writeApprovalCurrentFile:"Archivo actual {file}",writeApprovalProposedFile:"Archivo propuesto {file}",writeApprovalDiffSection:"Diferencias",writeApprovalPatchOldStringMissing:"No se encontro el old_string del parche en el archivo actual {file}; aprobarlo no cambiara el archivo.",writeApprovalRequestedOldString:"old_string solicitado",writeApprovalCurrentReadFailed:"El archivo actual {file} no se pudo leer como texto UTF-8.",writeApprovalDeleteSkill:"Esta aprobacion elimina el skill {skill}.",writeApprovalRemoveFile:"Esta aprobacion elimina {file} del skill {skill}."},privacy:{redactPii:"Ocultar informacion personal",redactPiiHint:"Detectar y ocultar automaticamente informacion sensible (contrasenas, claves, etc.)"},apiServer:{enable:"Activar",enableHint:"Activar servidor API",host:"Host",hostHint:"Direccion de escucha",port:"Puerto",portHint:"Puerto de escucha",key:"Clave",keyHint:"Clave de acceso API",cors:"Origenes CORS",corsHint:"Fuentes cross-origin permitidas"},voice:{activeTtsApi:"API TTS activa",activeSttApi:"API STT activa",ttsProvidersTitle:"Proveedores TTS",ttsProvidersDescription:"Gestiona integraciones de texto a voz para reproducir respuestas del asistente y vistas previas de voz.",sttProvidersTitle:"Proveedores STT",sttProvidersDescription:"Gestiona integraciones de voz a texto usadas por el microfono y el flujo de entrada por voz.",localSttModelTitle:"STT local chino-inglés",localSttModelDescription:"Reconocimiento privado en este dispositivo, sin subir audio a la nube.",localSttModelUnavailable:"Descarga y valida el modelo STT local antes de activarlo.",localSttModelReady:"Listo",localSttModelDownloading:"Descargando",localSttModelNotInstalled:"No instalado",localSttLanguages:"Idiomas",localSttLanguagesValue:"Chino + inglés",localSttDownloadSize:"Tamaño de descarga",localSttRuntime:"Runtime",localSttDownloadCf:"Descargar desde Cloudflare",localSttDownloadGithub:"Descargar desde GitHub",localSttBackgroundHint:"La descarga, verificación, extracción y validación se ejecutan en segundo plano.",localSttDownloadFailed:"Falló la descarga del modelo STT local: {error}",localSttStage:{queued:"Esperando descarga…",resolve:"Preparando descarga…",download:"Descargando modelo…",verify:"Verificando checksum…",extract:"Extrayendo modelo…",validate:"Validando modelo…",install:"Instalando modelo…",completed:"El modelo está listo",failed:"Descarga fallida"},hermesConfigTitle:"Configuracion de Hermes Agent",hermesConfigDescription:"Los proveedores nativos existentes permanecen en el perfil de Hermes; los del Web UI aparecen como Hermes Studio.",hermesActiveProvider:"Proveedor activo",hermesConfiguredProviders:"Proveedores configurados",hermesStudioProvider:"Hermes Studio",providerSpeed:"Velocidad",providerSampleRate:"Frecuencia de muestreo",providerBitRate:"Tasa de bits",providerGroupId:"ID de grupo",providerVolume:"Volumen",providerEmotion:"Emocion",providerDiarize:"Diarizacion de hablantes",providerFormatText:"Formatear transcripcion",providerTagAudioEvents:"Etiquetar eventos de audio",optionEnabled:"Activado",optionDisabled:"Desactivado",nativeProvider:"Proveedor nativo de Hermes",selectNativeProvider:"Seleccionar proveedor nativo de Hermes",useHermesStudioProvider:"Usar proveedor 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:"Ninguno seleccionado",keyStored:"Guardada",keyMissing:"Falta",customApi:"API",localBuiltin:"Local integrado",ttsCardHint:"Proveedor de sintesis de voz",sttCardHint:"Proveedor de transcripcion de voz",setActive:"Activar",testAction:"Probar",connect:"Conectar",presetEdgeTtsLabel:"Edge TTS",presetEdgeTtsDescription:"Voces en la nube gratuitas de alta calidad de Microsoft Edge.",presetOpenaiTtsLabel:"OpenAI TTS",presetMimoTtsLabel:"MiMo TTS",presetDoubaoTtsLabel:"Volcengine Doubao TTS",presetCustomTtsLabel:"TTS personalizado",presetBrowserSttLabel:"STT del navegador",presetBrowserSttDescription:"API nativa de reconocimiento de voz del navegador.",presetOpenaiWhisperLabel:"OpenAI Whisper",presetGroqSttLabel:"Groq STT",presetDoubaoSttLabel:"Volcengine Doubao STT",presetCustomSttLabel:"STT personalizado",apiCompatibility:"Compatibilidad de API",openaiCompatible:"Compatible con OpenAI",manualCustomEndpoint:"Endpoint personalizado manual",connectionStep:"Conexion",discoveryManualHint:"Endpoint personalizado manual seleccionado. El descubrimiento de modelos no esta disponible; introduce el nombre del modelo manualmente.",discoveryCredentialHint:"Introduce Base URL y API key, luego conecta para obtener los modelos disponibles.",discoveryNoAutoProbeHint:"No se envian solicitudes mientras escribes. Usa Connect cuando las credenciales esten listas.",apiKeyConnectPlaceholder:"Pega la API key para conectar; las claves guardadas nunca se muestran",connectFetchModels:"Conectar y obtener modelos",modelRecommendedSuffix:"recomendado",modelConnectManualHint:"Conecta para autocompletar o introduce manualmente.",modelRequiredConnectManual:"El modelo es obligatorio. Conecta para autocompletar o introduce manualmente.",apiKeyRequired:"La API key es obligatoria.",apiKeyRequiredForDiscovery:"La API key es obligatoria para obtener modelos.",baseUrlRequired:"Base URL es obligatoria.",baseUrlHttpsRequired:"Usa http:// o https://.",baseUrlInvalid:"Introduce una Base URL valida, incluyendo https://.",discoveryFailedManualFallback:"No se pudieron obtener modelos. Aun puedes introducir el nombre del modelo manualmente.",completeRequiredProviderFields:"Completa los campos obligatorios del provider antes de guardar.",fetchingModels:"Obteniendo modelos...",recommendedModel:"Recomendado: {model}.",useRecommendedModel:"Usar este.",modelsDiscovered:"{count} modelos descubiertos. Se selecciona el modelo recomendado cuando el campo esta vacio.",remove:"Eliminar",testSuccess:"Prueba completada",testTextRequired:"Introduce texto antes de probar.",keyMissingForTest:"Agrega una clave API antes de probar este proveedor.",testing:"Probando...",transcribing:"Transcribiendo...",browserSttTestHint:"El STT del navegador se prueba desde el microfono del chat.",sttEmptyAudio:"No se capturo audio. Intentalo de nuevo.",sttTestSuccess:"Transcripcion completada",sttRecordingHint:"Grabando... haz clic en Detener para transcribir.",keepStoredKeyPlaceholder:"Dejar en blanco para conservar la clave guardada",apiKeyPlaceholder:"Introduce la clave API",lastTest:"Ultima prueba",notTested:"—",recording:"Grabando",testFailedShort:"Fallo",testFailedSummary:"La prueba fallo. Revisa la configuracion del proveedor e intentalo de nuevo.",showDetails:"Mostrar detalles",hideDetails:"Ocultar detalles",moreActions:"Mas",moreActionsFor:"Mas acciones para {provider}",addTtsApi:"Agregar API TTS",addSttApi:"Agregar API STT",active:"Activo",builtin:"Integrado",connected:"Conectado",disconnected:"Desconectado",source:"Origen",model:"Modelo",voice:"Voz",doubaoVoiceHint:"Selecciona una voz de Seed TTS 2.0; el campo de recurso se actualiza automaticamente.",apiKey:"Clave API",confirmDeleteSecret:"Eliminar la clave API guardada para esta API de voz?",ttsTitle:"Texto a voz",ttsSaved:"Configuracion TTS guardada en el servidor",ttsSaveFailed:"No se pudo guardar la configuracion TTS",ttsTestSaved:"Audicion correcta; configuracion TTS guardada en el servidor",ttsTestSaving:"Guardando configuracion TTS antes de la audicion...",ttsMissingBaseUrl:"La Base URL es obligatoria antes de probar. Introduce un endpoint del proveedor y vuelve a probar.",ttsMissingApiKey:"La clave API es obligatoria antes de probar. Pega la clave o guarda primero una clave del servidor.",ttsCleared:"Clave TTS guardada eliminada",ttsClearFailed:"No se pudo eliminar la clave TTS guardada",storedBaseUrlsTitle:"Base URLs guardadas",storedBaseUrlsHint:"Endpoints de voz guardados. Los campos superiores solo limpian el valor actual; elimina endpoints guardados aquí.",storedBaseUrlsEmpty:"No hay Base URLs de voz personalizadas guardadas en el servidor.",storedBaseUrlDelete:"Eliminar URL",storedApiKeysTitle:"API keys guardadas",storedApiKeysHint:"Lista enmascarada de claves de voz guardadas en el servidor. Solo muestra uso y origen; nunca muestra la key completa.",storedApiKeysEmpty:"No hay API keys de voz guardadas en el servidor.",storedKeyKindTts:"TTS",storedKeyKindStt:"STT",storedApiKeyMasked:"[stored]",storedApiKeyDelete:"Eliminar key",baseUrlPresetClear:"Borrar URL",baseUrlPresetCleared:"Base URL borrada del campo.",baseUrlPresetDelete:"Eliminar URL",baseUrlPresetDeleted:"URL base eliminada de la lista guardada.",baseUrlPresetDeleteFailed:"No se pudo eliminar la URL base guardada.",ttsPendingSecret:"La nueva clave se guardara",ttsStoredSecret:"El servidor tiene una clave guardada: {value}",ttsClearKey:"Eliminar clave guardada",sttTitle:"Voz a texto",sttProvider:"Proveedor STT",sttProviderHint:"Elige como se transcribe la entrada de voz",sttProviderBrowser:"Navegador",sttProviderOpenai:"Compatible con OpenAI",sttProviderCustom:"Personalizado",sttBrowserHint:"Usa el reconocimiento de voz integrado del navegador cuando este disponible.",sttApiKey:"Clave API",sttApiKeyHint:"Guardada en el servidor para proveedores STT que requieren autenticacion.",sttStoredSecret:"Clave del servidor guardada: {value}",sttPendingSecret:"Clave del servidor guardada: se actualizara al guardar",sttClearKey:"Eliminar clave guardada",sttModel:"Modelo",sttModelHint:"Modelo de voz a texto que se usara.",sttLanguage:"Idioma",sttLanguageHint:"Pista de idioma opcional, como en o zh.",sttPrompt:"Prompt",sttPromptHint:"Prompt de transcripcion opcional.",sttAudioTranscode:"Transcodificación de audio",sttAudioTranscodeNone:"Enviar audio original",sttAudioTranscodeFfmpeg:"Convertir a WAV con ffmpeg",sttBaseUrl:"Base URL",sttBaseUrlHint:"Endpoint personalizado de voz a texto compatible con OpenAI.",sttSave:"Guardar configuracion STT",sttSaved:"Configuracion STT guardada en el servidor.",sttSaveFailed:"No se pudo guardar la configuracion STT.",sttCleared:"Se elimino el secreto STT guardado del servidor.",sttClearFailed:"No se pudo eliminar el secreto STT guardado.",sttActiveSaved:"Proveedor STT activo guardado en el servidor.",sttSaveActive:"Guardar proveedor STT activo",sttEndpointHint:"Endpoint final de transcripcion: {endpoint}",sttTestTitle:"Probar voz a texto",sttTestButton:"Probar API STT",sttTestStopButton:"Detener y transcribir",sttTestBackendOnly:"La prueba de API STT esta disponible para proveedores compatibles con OpenAI y personalizados.",sttTestRecording:"Grabando muestra de prueba... haz clic en Detener y transcribir al terminar.",sttTestTranscribing:"Transcribiendo muestra de prueba...",sttTestEmpty:"No se capturo audio para la prueba STT.",sttTestSucceeded:"Prueba STT correcta.",sttTestFailed:"La prueba STT fallo: {error} — {hint}",sttFailureHintMissingConfig:"Comprueba que el proveedor este guardado con Base URL/modelo y una clave API antes de probar.",sttFailureHintAuth:"Comprueba la clave API. Si ya habia una clave guardada, pega de nuevo la clave actual y guarda antes de probar.",sttFailureHintForbidden:"La clave llego al proveedor, pero no tiene permiso para este modelo STT o cuenta. Revisa el acceso o la facturacion del proveedor.",sttFailureHintEndpointModel:"Comprueba la Base URL y el modelo. Para Groq, usa {endpoint} con whisper-large-v3-turbo u otro modelo STT de Groq.",sttFailureHintModel:"Comprueba que el modelo STT seleccionado exista y este habilitado para esta cuenta.",sttFailureHintQuota:"El proveedor informa problemas de cuota, facturacion o limite de frecuencia. Revisa la cuota/facturacion o reintenta mas tarde.",sttFailureHintNetworkCustom:"El servidor no pudo alcanzar el endpoint STT personalizado. Comprueba que {endpoint} sea accesible desde el servidor Web UI y compatible con OpenAI.",sttFailureHintNetwork:"El servidor Web UI no pudo alcanzar el proveedor STT. Revisa red/proxy/firewall y reintenta.",sttFailureHintAudio:"El audio grabado estaba vacio o fue rechazado. Prueba con una muestra corta y clara, permite acceso al microfono o reintenta en Chrome.",sttFailureHintGenericCustom:"Comprueba clave API, Base URL, modelo y el endpoint final {endpoint}.",sttFailureHintGeneric:"Comprueba clave API, modelo y acceso de la cuenta del proveedor, luego reintenta.",sttTestRecordFailed:"No se pudo iniciar la grabacion del microfono: {error}",sttTestTranscript:"Transcripcion: {text}",ttsProvider:"Proveedor TTS",ttsProviderHint:"Elija el motor de texto a voz para la reproduccion de mensajes",providerWebSpeech:"WebSpeech API (Navegador)",providerOpenai:"OpenAI TTS",providerCustom:"Endpoint personalizado (compatible con OpenAI)",providerEdge:"Edge TTS (Gratuito, sin clave API)",webspeechVoice:"Voz",webspeechVoiceHint:"Seleccione una voz de su navegador o sistema operativo",webspeechVoicePlaceholder:"Auto (voz predeterminada)",openaiKey:"Clave API",openaiKeyHint:"Su clave API de OpenAI con acceso TTS",openaiUrl:"URL base de API",openaiUrlHint:"ej. https://api.openai.com/v1/audio/speech",openaiModel:"Modelo",openaiModelHint:"tts-1 (mas rapido) / tts-1-hd (mayor calidad)",openaiVoice:"Voz",openaiVoiceHint:"Voz a utilizar para la sintesis",customHint:"Utilice cualquier API TTS compatible con OpenAI — funciona con GPT-SoVITS, CosyVoice, etc.",customUrl:"URL de API",customUrlHint:"URL base de su servicio TTS",customUrlPlaceholder:"Direccion configurada en el adaptador local, ej. http://127.0.0.1:9880",customApiKey:"Clave API (opcional)",customApiKeyHint:"Algunos endpoints personalizados requieren autenticacion",customApiKeyPlaceholder:"Dejar en blanco si no es necesario",edgeHint:"Impulsado por Microsoft Edge TTS (node-edge-tts).",edgeUrl:"URL del adaptador",edgeUrlHint:"Direccion del adaptador Edge TTS, ej. http://127.0.0.1:9882",edgeUrlPlaceholder:"http://127.0.0.1:9882",edgeVoice:"Voz",edgeVoiceHint:"Seleccione una voz para la sintesis de voz",edgeRate:"Velocidad",edgeRateHint:"Ajustar velocidad del habla (0.5x ~ 2.0x)",edgePitch:"Tono",edgePitchHint:"Ajustar tono del habla (-20 ~ +20 Hz)",testTitle:"Prueba de voz",testText:"Texto de prueba",testTextPlaceholder:"Ingrese texto para probar...",testTextDefault:"Hola, esta es una prueba de voz.",testButton:"Probar",testButtonPlaying:"Reproduciendo...",testFailed:"Prueba fallida: {error}",providerMimo:"MiMo TTS",mimoHint:"Xiaomi MiMo TTS — voces predefinidas, diseño de voz y clonación de voz",mimoApiKey:"Clave API",mimoApiKeyHint:"Obtenga su clave en platform.xiaomimimo.com",mimoApiKeyPlaceholder:"Clave API MiMo",mimoAuthMode:"Modo de autenticación",mimoAuthModeHint:"Formato de encabezado requerido por el endpoint MiMo seleccionado",mimoAuthModeBearer:"Token Bearer (Authorization)",mimoAuthModeApiKey:"Encabezado API key (api-key)",mimoAuthModeBoth:"Ambos encabezados",mimoBaseUrl:"URL base",mimoBaseUrlHint:"URL del endpoint de la API MiMo",mimoModel:"Modelo",mimoModelHint:"Seleccione el modelo de síntesis de voz",mimoModelPreset:"Voces predefinidas",mimoModelVoiceDesign:"Diseño de voz",mimoModelVoiceClone:"Clonación de voz",mimoVoice:"Voz",mimoVoiceHint:"Seleccione una voz predefinida",mimoVoiceDesignPrompt:"Descripción de voz",mimoVoiceDesignPromptHint:"Describa las características de voz deseadas",mimoVoiceDesignPromptPlaceholder:"Ej: Una voz femenina cálida y joven, algo lenta, con tono magnético",mimoCloneAudio:"Subir audio",mimoCloneAudioHint:"Suba una muestra de audio para clonación (mp3/wav, máx. 10 MB)",mimoCloneAudioUpload:"Elegir archivo",mimoCloneAudioClear:"Borrar",mimoStylePrompt:"Indicador de estilo",mimoStylePromptHint:"Opcional — describa el estilo de habla en lenguaje natural",mimoStylePromptPlaceholder:"Ej: Tono brillante y animado, ritmo rápido"},lockedIps:{title:"IPs bloqueadas",count:"{count} bloqueadas",empty:"Sin IPs bloqueadas",unlock:"Desbloquear",unlockAll:"Desbloquear todo",unlockAllConfirm:"Desbloquear todas las IPs?",unlocked:"IP desbloqueada",allUnlocked:"{count} IPs desbloqueadas",type:{password:"Password",token:"API token",pairing:"Device pairing"}},userAvatar:{title:"Avatar de usuario",upload:"Subir imagen",random:"Generar aleatorio",reset:"Restablecer predeterminado",hint:"Admite PNG, JPEG y WebP hasta 1 MB; se comprime automáticamente por debajo de 500 KB.",invalidType:"Elige una imagen PNG, JPEG o WebP",tooLarge:"La imagen del avatar debe ser de 1 MB o menos",saveSuccess:"Avatar guardado",saveFailed:"No se pudo guardar el avatar",resetSuccess:"Avatar restablecido",resetFailed:"No se pudo restablecer el avatar"},models:{apiKey:"API Key",apiKeyPlaceholder:"Introduce API Key",noProviders:"No hay proveedores configurados",save:"Guardar",saveFailed:"Error al guardar",saved:"Guardado"}},githubPreview:{title:"Vista previa de versión",description:"Clona el tag de GitHub seleccionado en el espacio de vista previa de Web UI, instala dependencias y lo ejecuta con los puertos de desarrollo.",refresh:"Actualizar",selectTag:"Selecciona un tag",prepare:"Preparar código",install:"Instalar dependencias",start:"Iniciar vista previa",stop:"Detener",note:"El código de vista previa se guarda bajo el directorio de datos de Web UI. Producción sigue en el puerto 8648; la vista previa usa frontend 8651 y backend 8650.",path:"Ruta de vista previa",webuiHome:"Datos de vista previa",currentTag:"Tag actual",repoReady:"Repositorio listo",dependencies:"Dependencias instaladas",running:"Estado",notRunning:"No ejecutándose",open:"Abrir vista previa",log:"Ruta del log de acciones",logOutput:"Salida de logs",actionLog:"Log de acciones",devLog:"Log del servidor dev",yes:"Sí",no:"No",actionFailed:"Acción fallida",nodeEnvironmentMissing:"No se detectó Node/npm. Instala Node.js y vuelve a intentarlo.",prepareSuccess:"Código de vista previa listo",installSuccess:"Dependencias instaladas",startSuccess:"Vista previa completada",stopSuccess:"Vista previa detenida"},codingAgents:{title:"Agentes de código",notice:"No todos los proveedores y modelos son compatibles.",claudeDescription:"CLI de Anthropic para tareas únicas en print mode y sesiones interactivas de código.",codexDescription:"CLI de OpenAI y flujo del proveedor openai-codex de Hermes para tareas de repositorio.",copyCommand:"Copiar",commandCopied:"Comando copiado",commandCopyFailed:"Error al copiar",refresh:"Actualizar",checking:"Comprobando",installStatus:"Estado de instalación",installed:"Instalado",notInstalled:"No instalado",installRequired:"{agent} no está instalado. Instálalo antes de crear una sesión.",installNow:"Instalar",installing:"Instalando",installSuccess:"Instalado",installFailed:"Error de instalación",installFailedHermesHint:"La instalación falló. Pide a Hermes que lo instale por ti.",installFailureReason:"Motivo",nodeEnvironmentMissing:"No se detectó Node/npm. Instala Node.js y vuelve a intentarlo.",deleteNow:"Eliminar",deleting:"Eliminando",deleteSuccess:"Eliminado",deleteFailed:"Error al eliminar",configFiles:"Archivos de configuración",profileScope:"Perfil",providerScope:"Proveedor",providerPlaceholder:"p. ej. custom:glm",modelScope:"Modelo",modelPlaceholder:"Selecciona modelo",launchModeScope:"Modo de inicio",launchModeGlobal:"Configuración global",launchModeScoped:"Proveedor y modelo",protocolScope:"Protocolo",protocolOpenAiChat:"OpenAI Chat Completions (/v1/chat/completions)",protocolOpenAiResponses:"OpenAI Responses (/v1/responses)",protocolAnthropicMessages:"Anthropic Messages (/v1/messages)",reloadConfig:"Recargar configuración",configFileNotCreated:"No creado",configLoadFailed:"No se pudo leer el archivo de configuración",loadFailed:"No se pudieron inspeccionar los agentes de código",launch:"Iniciar",launchTitle:"Iniciar agente de código",nativeTerminal:"Terminal nativa",builtInTerminal:"Terminal integrada",launchPrepared:"Configuración de inicio preparada",launchPrepareFailed:"No se pudo preparar la configuración de inicio",nativeLaunchStarted:"Terminal nativa abierta",nativeLaunchFailed:"No se pudo abrir la terminal nativa",terminalTitle:"Terminal del agente de código",loadProvidersFailed:"No se pudieron cargar proveedores del perfil actual",selectProviderModel:"Selecciona un proveedor y un modelo",launchConfigDir:"Directorio de configuración de inicio",launchCommand:"Comando de inicio",table:{tool:"Herramienta",kind:"Paso",command:"Comando",note:"Nota",action:"Acción"},kinds:{install:"Instalar",auth:"Autenticación",health:"Salud",run:"Ejecutar"},notes:{claudeInstall:"Instala la CLI de Claude Code globalmente.",codexInstall:"Instala la CLI de Codex globalmente.",claudeAuth:"Comprueba el inicio de sesión de Claude Code; ejecuta claude una vez si falta.",codexAuth:"Agrega credenciales OAuth de OpenAI Codex gestionadas por Hermes.",claudeHealth:"Comprueba el actualizador y el estado de la CLI local.",codexHealth:"Confirma que la CLI de Codex está disponible en PATH.",claudeRun:"Print mode es la ruta más limpia para tareas únicas impulsadas por API.",codexRun:"Las tareas únicas de Codex deben ejecutarse dentro de un repositorio git."}},platform:{requireMention:"Requerir mencion {'@'}",requireMentionGroup:"Requerir mencion {'@'} en grupos para responder",requireMentionChannel:"Requerir mencion {'@'} en canales para responder",requireMentionRoom:"Requerir mencion {'@'} en salas para responder",reactions:"Reacciones",reactionsHint:"Reaccionar a mensajes con emoji",freeResponseChats:"Chats de respuesta libre",freeResponseChatsHint:"IDs de chats que responden sin mencion {'@'} (separados por comas)",freeResponseChannels:"Canales de respuesta libre",freeResponseChannelsHint:"IDs de canales que responden sin mencion {'@'} (separados por comas)",freeResponseRooms:"Salas de respuesta libre",freeResponseRoomsHint:"IDs de salas que responden sin mencion {'@'} (separados por comas)",mentionPatterns:"Patrones de mencion personalizados",mentionPatternsHint:"Patrones de activacion adicionales",autoThread:"Hilo automatico",autoThreadHint:"Crear automaticamente hilos de respuesta despues de mencion {'@'}",autoThreadHintRoom:"Crear automaticamente hilos de respuesta en salas",dmMentionThreads:"Hilos de mencion en MD",dmMentionThreadsHint:"Usar hilos de respuesta para menciones en mensajes directos",allowBots:"Permitir mensajes de bots",allowBotsHint:"Responder a mensajes de otros bots",allowedChannels:"Canales permitidos",allowedChannelsHint:"Lista blanca de IDs de canales (separados por comas)",ignoredChannels:"Canales ignorados",ignoredChannelsHint:"Canales donde el bot nunca responde (separados por comas)",noThreadChannels:"Canales sin hilo",noThreadChannelsHint:"Canales donde el bot responde sin hilos (separados por comas)",exclusiveTokenWarning:"Esta plataforma usa bloqueo exclusivo de token. Cada perfil debe usar un token de identidad distinto para evitar conflictos con otros perfiles.",clearCredentials:"Borrar credenciales",clearCredentialsConfirm:"¿Borrar las credenciales guardadas de «{name}»? Se conservarán el comportamiento del canal y los controles de acceso.",credentialsCleared:"Credenciales del canal borradas",clearCredentialsFailed:"No se pudieron borrar las credenciales del canal",clearCredentialsUnsaved:"Guarda o descarta los cambios del canal antes de borrar las credenciales.",clearCredentialsGatewayRestartFailed:"Las credenciales se borraron, pero no se pudo reiniciar automáticamente la puerta de enlace.",clearCredentialsGatewayRestartDisabled:"Las credenciales se borraron, pero el reinicio automático de la puerta de enlace está desactivado. Reiníciala manualmente.",botToken:"Token del bot",botTokenHint:"Token del bot del portal de desarrolladores",proxyUrl:"URL del proxy",proxyUrlHint:"Proxy opcional de la plataforma. Admite http://, https:// y socks5://",accessToken:"Token de acceso",accessTokenHint:"Token de acceso de Matrix",homeserver:"URL del homeserver",homeserverHint:"URL del homeserver de Matrix",matrixUserId:"ID de usuario de Matrix",matrixUserIdHint:"Obligatorio con contrasena; opcional con token",matrixPassword:"Contrasena de Matrix",matrixPasswordHint:"Alternativa al token de acceso",appId:"ID de aplicacion",appIdHint:"ID de aplicacion de Feishu",appSecret:"Secreto de aplicacion",appSecretHint:"Secreto de aplicacion de Feishu",encryptKey:"Clave de cifrado",encryptKeyHint:"Clave de cifrado de Feishu",verificationToken:"Token de verificación",verificationTokenHint:"Token de verificación de Feishu",clientId:"ID de cliente",clientIdHint:"ID de cliente de DingTalk",clientSecret:"Secreto de cliente",clientSecretHint:"Secreto de cliente de DingTalk",cardTemplateId:"ID de plantilla de tarjeta IA",cardTemplateIdHint:"ID de plantilla de tarjeta IA de DingTalk; déjelo vacío para desactivar las tarjetas IA",botId:"ID del bot",botIdHint:"ID del bot de WeCom",wecomSecretHint:"Secreto del bot de WeCom",waEnabled:"Activar WhatsApp",waEnabledHint:"Activar WhatsApp mediante emparejamiento por codigo QR",weixinToken:"Token de Weixin",weixinTokenHint:"Desde el inicio de sesion QR de la CLI de weixin (hermes weixin)",accountId:"ID de cuenta",accountIdHint:"ID de cuenta de Weixin",qrLogin:"Inicio de sesion QR",qrRelogin:"Volver a iniciar sesion",qrFetching:"Obteniendo codigo QR...",qrScanHint:"Escanea con WeChat para iniciar sesion",qrScanedHint:"Escaneado, por favor confirma en el telefono...",qqSandboxHint:"Habilitar entorno sandbox (para pruebas)",qqSandbox:"Modo sandbox",qqQrScanHint:"Escanea el código QR con QQ o abre el enlace en el teléfono para completar la vinculación",qqMarkdownHint:"Habilitar mensajes con formato Markdown (algunos clientes pueden no soportarlo)",qqMarkdown:"Soporte Markdown",qqAppSecretHint:"App Secret del bot de QQ Open Platform",qqAppSecret:"App Secret",qqAppIdHint:"App ID del bot de QQ Open Platform",qqAppId:"App ID",allowedUsersHint:"Lista blanca de IDs de usuario u OpenID, separados por comas",allowedUsers:"Usuarios permitidos",allowAllUsersHint:"Permite mensajes de cualquier usuario; desactívalo para usar la lista blanca",allowAllUsers:"Permitir todos los usuarios"},language:{label:"Idioma",zh:"中文",en:"English",es:"Espanol"},terminal:{sessions:"Sesiones",newTab:"Nueva terminal",closeSession:"Cerrar esta sesion?",sessionExited:"Finalizada",processExited:"Proceso finalizado con codigo {code}",noSessions:"No hay sesiones de terminal",connectionFailed:"No se pudo conectar al terminal",connectionError:"Error de conexión",connectionClosed:"Conexión cerrada"},usage:{title:"Estadisticas de uso",refresh:"Actualizar",totalTokens:"Total de tokens",inputTokens:"Entrada",outputTokens:"Salida",totalSessions:"Total de sesiones",avgPerDay:"~{n}/dia de promedio",estimatedCost:"Costo est.",cacheHitRate:"Tasa de acierto de cache",modelBreakdown:"Desglose por modelo",agentBreakdown:"Desglose por agente",agents:{hermes:"Hermes Agent",claudeCode:"Claude Code",codex:"Codex",ekkoAgent:"Ekko Agent",unknown:"Desconocido"},dailyTrend:"Uso diario",date:"Fecha",tokens:"Tokens",cache:"Caché",cacheRead:"Lectura de caché",cacheWrite:"Escritura de caché",sessions:"Sesiones",cost:"Costo",noData:"Sin datos de uso"},skillsUsage:{title:"Uso de habilidades",subtitle:"Sigue las cargas y ediciones de habilidades en sesiones de Hermes",refresh:"Actualizar",periodSelector:"Periodo de uso de habilidades",periodLabel:"{days} d",summary:"Resumen",totalActions:"Acciones",loads:"Cargas",edits:"Ed.",distinctSkills:"Habs.",topSkills:"Top habs.",dailyTrend:"Tendencia diaria",periodSummary:"Últimos {days} días",skill:"Hab.",share:"%",lastUsed:"Últ. uso",noData:"No hay datos de uso de habilidades",loadFailed:"No se pudo cargar el uso de habilidades",otherSkills:"Otras habs."},workflow:{title:"Workflow",profile:"Perfil",namePlaceholder:"Nombre del Workflow",canvasAriaLabel:"Lienzo del Workflow",workspace:{title:"Seleccionar espacio de trabajo",select:"Seleccionar espacio de trabajo",clear:"Limpiar espacio de trabajo"},actions:{newWorkflow:"Nuevo Workflow",addNode:"Añadir nodo",createWorkflowFirst:"Crea primero un Workflow",reset:"Restablecer",startExecution:"Iniciar ejecución",executionPending:"La ejecución del Workflow aún no está conectada",executionStarted:"Ejecución del Workflow iniciada",executionCompleted:"Ejecución del Workflow completada",executionFailed:"La ejecución del Workflow ha fallado",rerunDownstreamKeepNode:"Conservar este nodo y ejecutar los siguientes",rerunDownstreamClearNode:"Limpiar este nodo y ejecutar los siguientes",rerunDownstreamStarted:"Reejecución de los nodos siguientes iniciada",rerunFromNodeStarted:"Reejecución iniciada desde este nodo",rerunFailed:"La reejecución del Workflow ha fallado",deleteNode:"Eliminar nodo",deleteEdge:"Eliminar conexión",editEdge:"Editar conexión",undo:"Deshacer",importWorkflow:"Importar Workflow",exportWorkflow:"Exportar Workflow",imported:"Workflow importado",exported:"Workflow exportado",importFailed:"Error al importar el Workflow",exportFailed:"Error al exportar el Workflow"},batch:{toggle:"Selección múltiple",selectAll:"Seleccionar todo",confirmDelete:"¿Eliminar los {count} Workflows seleccionados?",deleteSuccess:"Se eliminaron {count} Workflows",deletePartial:"No se pudieron eliminar {failed} Workflows",deleteFailed:"Error en la eliminación múltiple"},validation:{nodesRequired:"Añade al menos un nodo",nodeNameRequired:"El nodo {node} necesita un nombre",providerRequired:"El nodo {node} necesita un proveedor",modelRequired:"El nodo {node} necesita un modelo",apiModeRequired:"El nodo {node} necesita un modo de API",inputRequired:"El nodo {node} necesita una entrada",invalidEdge:"Una conexión hace referencia a un nodo inexistente",invalidConnectionDirection:"Las conexiones deben ir de la salida derecha a la entrada izquierda",orphanNode:"El nodo {node} no está conectado al Workflow",disconnectedFlow:"El Workflow no puede dividirse en varios flujos desconectados",cycle:"El Workflow contiene un ciclo. Ajusta las conexiones antes de guardar."},stats:{nodes:"nodos",edges:"conexiones"},runs:{title:"Historial de ejecuciones",refresh:"Actualizar",empty:"No hay ejecuciones",startNodes:"{count} nodos iniciales",snapshotIndicator:"Instantánea inmutable del inicio de esta ejecución",show:"Mostrar historial",hide:"Ocultar historial",nodeSessionTitle:"Sesión del nodo - {node}",noNodeSession:"Este nodo aún no tiene una sesión registrada",loadNodeSessionFailed:"No se pudo cargar la sesión del nodo",stop:"Detener ejecución",stopRequested:"Detención solicitada",stopFailed:"No se pudo detener la ejecución",delete:"Eliminar registro",deleteSuccess:"Registro de ejecución eliminado"},inspector:{selected:"Nodo seleccionado",none:"Ningún nodo seleccionado"},agents:{planner:"Planificador",researcher:"Investigador",builder:"Implementador",reviewer:"Revisor"},models:{default:"Modelo predeterminado",fast:"Modelo rápido",reasoning:"Modelo de razonamiento"},initialNodes:{node1:"Nodo 1",node2:"Nodo 2",node3:"Nodo 3",plan:"Planificar",execute:"Ejecutar",review:"Revisar"},initialPrompts:{node1:"Introduce la entrada de este nodo.",node2:"Introduce la entrada de este nodo.",node3:"Introduce la entrada de este nodo.",plan:"Divide la solicitud en pasos realizables.",execute:"Ejecuta los pasos de implementación y genera los entregables.",review:"Revisa la calidad del resultado e identifica el trabajo de seguimiento."},newNodeTitle:"Nodo {count}",schedule:{title:"Programaciones de flujo de trabajo",manage:"Gestionar programaciones",createTitle:"Crear programación",editTitle:"Editar programación",create:"Crear programación",save:"Guardar programación",edit:"Editar programación",delete:"Eliminar programación",deleteConfirm:"¿Eliminar esta programación?",deleted:"Programación eliminada",enable:"Activar programación",disable:"Desactivar programación",enabled:"Activada",disabled:"Desactivada",empty:"Aún no hay programaciones",cron:"Programación Cron",cronPlaceholder:"p. ej., 0 9 * * * o {'@'}daily",timezone:"Zona horaria",timezonePlaceholder:"Zona horaria IANA, p. ej., Asia/Shanghai",initialInput:"Entrada inicial",initialInputPlaceholder:"Entrada opcional para cada ejecución programada",startNodes:"Nodos iniciales",startNodesPlaceholder:"Nodos iniciales predeterminados del flujo",timeout:"Tiempo de espera total (minutos)",timeoutPlaceholder:"Sin límite",policies:"Concurrencia: omitir · Ejecuciones perdidas: omitir",lastScheduled:"Última programación",nextRun:"Próxima ejecución",lastRun:"Última ejecución",never:"Nunca",loadFailed:"No se pudieron cargar las programaciones",saveFailed:"No se pudo guardar la programación",saved:"Programación guardada",deleteFailed:"No se pudo eliminar la programación",required:"La programación Cron y la zona horaria son obligatorias",reset:"Restablecer",presets:{hourly:"Cada hora",daily:"Diaria",weekly:"Semanal",monthly:"Mensual"}},evidence:{historyPage:"Historial de ejecuciones",detailsPage:"Detalles de ejecución",backToRuns:"Volver al historial",resultStatus:"Estado",duration:"Duración",budgetLabel:"Presupuesto",actualExecution:"Ejecutado",otherJudgments:"Otras decisiones",loopEvents:"Eventos de bucle",evaluatedNotExecuted:"Evaluado, no ejecutado",ariaLabel:"Detalles de ejecución del Workflow",title:"Detalles de ejecución",count:"{count} elementos",intro:"Muestra las decisiones de ruta, las iteraciones de bucle y los nodos excepcionales de esta ejecución.",empty:"Sin detalles de ejecución",loadFailed:"No se pudieron cargar los detalles de ejecución guardados",summaryTitle:"Resultado de la ejecución",blockedAt:"Bloqueado en {gate}",actualPath:"Ruta real",noActualPath:"No se utilizó ninguna ruta",pathChecks:"Decisiones de ruta",selectedPaths:"Rutas utilizadas",otherPaths:"Otras decisiones y eventos",selectedCount:"{count} utilizadas",otherCount:"{count} no utilizadas",eventCount:"{count} eventos",showOtherPaths:"Mostrar otros detalles ({count})",hideOtherPaths:"Ocultar otros detalles",runDetails:"Detalles de ejecución",actualPathSteps:"Pasos de la ruta real",nodeBudgetDetails:"Detalles del presupuesto de tiempo",condition:"Condición",conditionMatched:"Coincidió",conditionNotMatched:"No coincidió",sourceOutcome:"Resultado del nodo",sourceReturned:"Respuesta normal",sourceFailed:"Falló la ejecución",sourceSkippedStatus:"No ejecutado",checkedData:"Datos comprobados",entireReplyText:"Texto completo de la respuesta",errorText:"Texto del error",jsonFieldValue:"Valor de un campo JSON",advancedPathValue:"Valor de la ruta avanzada",comparison:"Comparación",textToFind:"Texto que buscar",expectedFieldValue:"Valor esperado del campo",parsedBusinessDecision:"Decisión de negocio interpretada",failedGateLabel:"Paso fallido (valor del campo failed_gate)",failedGateValue:"Paso fallido (valor del campo failed_gate): {gate}",decisions:{blocked:"Bloqueado",released:"Publicado",verified:"Verificado",skipped:"No requiere acción"},node:"Nodo excepcional",edge:"Ruta",loop:"Bucle",unknownNode:"Nodo desconocido",pathTitle:"{source} → {target}",loopPass:"Iteración {count} del bucle",exceptionalNode:"Este nodo no terminó con normalidad.",loopPassNamed:"{node} · iteración {count}",technical:"Información técnica",recordId:"ID de registro",sequence:"Secuencia",rawStatus:"Estado original",rawRoute:"Ruta",rawReason:"Motivo",iterationPath:"Ruta de iteración",expectedValue:"Resultado esperado",actualValue:"Resultado real del paso anterior",judgmentDetails:"Decisión de la conexión",connectionResult:"Resultado de la conexión",appliesWhen:"Se usa cuando",explanation:"Explicación",technicalStatus:{pathUsed:"Esta conexión se utilizó",pathNotUsed:"Esta conexión no se utilizó"},technicalRoute:{success:"Solo cuando el nodo anterior responde con normalidad",failure:"Solo cuando falla la ejecución del nodo anterior",always:"Independientemente del resultado del nodo anterior"},technicalReason:{conditionNotMatched:"La respuesta anterior no cumplió la condición de esta conexión."},statuses:{taken:"Utilizada",notTaken:"No utilizada",evaluationFailed:"Error de evaluación",timedOut:"Tiempo agotado",blocked:"Bloqueado"},routes:{success:"Continuó tras el éxito",failure:"Continuó tras el fallo",always:"Continuó con cualquier resultado"},reasons:{evaluationFailed:"Falló la evaluación de la ruta",conditionNotMatched:"La condición no coincidió",iterationLimitReached:"Se alcanzó el máximo de iteraciones",routeNotMatched:"La ruta no coincidió",pathSelected:"Se utilizó esta ruta.",pathEvaluatedNotUsed:"Esta conexión se evaluó como candidata, pero ningún nodo de destino la consumió.",sourceSkipped:"El nodo de origen no se ejecutó, por lo que esta ruta no formó parte de la ejecución.",failureRouteAfterSuccess:"El nodo de origen respondió normalmente; esta ruta solo se usa cuando falla la ejecución.",successRouteAfterFailure:"El nodo de origen falló; esta ruta solo se usa cuando responde normalmente.",businessBlocked:"«{source}» detuvo el flujo ({decision}): {reason}. Por eso no se ejecutó «{target}».",businessBlockedWithCondition:"«{source}» detuvo el flujo ({decision}): {reason}. Para continuar se requería «{expected}», pero el resultado anterior fue «{actual}». Por eso no se ejecutó «{target}».",conditionMismatchDetail:"Para continuar se requería «{expected}», pero el resultado anterior fue «{actual}». Por eso no se ejecutó «{target}»."},loopOutcomes:{continued:"La condición coincidió; continúa la siguiente iteración",iterationLimitReached:"Se detuvo en el máximo de iteraciones",conditionNotMatched:"Se detuvo porque la condición no coincidió",finished:"Bucle finalizado"}},budget:{runTitle:"Elegir presupuesto de tiempo del Run",rerunTitle:"Elegir presupuesto de tiempo del Rerun",totalLabel:"Presupuesto total del Run",customMinutes:"Minutos personalizados",customPlaceholder:"Minutos",invalidCustom:"El presupuesto personalizado debe estar entre 0,1 y 1440 minutos",help:"Es una fecha límite absoluta compartida por todo el Run. Cada nodo recibe solo el tiempo restante y los bucles no reinician el presupuesto.",options:{unlimited:"Sin fecha límite",30:"30 minutos",60:"60 minutos",90:"90 minutos",custom:"Personalizado"},unlimitedSummary:"Sin fecha límite",unlimitedHelp:"Este Run no tiene una fecha límite configurada.",summary:"Total {total} · Transcurrido {elapsed} · Restante {remaining}",deadline:"Fecha límite: {deadline}",nodeStartRemaining:"Presupuesto total restante al iniciar el nodo: {remaining}"},edgeEditor:{title:"Editar conexión",guideIntro:"Primero elige el resultado exigido del nodo de origen. Después no inspecciones la respuesta, comprueba literalmente todo el texto o compara el valor de un campo JSON analizado.",connectionSummary:"{source} → {target}",selfLoopDescription:"“{node}” volverá a ejecutarse a sí mismo.",continueAfter:"Continuar después de",optionalCheck:"Comprobación de contenido opcional",runTarget:"Luego",runTargetAction:"Ejecutar {target}",noContentCheck:"No inspeccionar la respuesta",sourceResultStep:"1. Resultado del nodo de origen",replyDataStep:"2. Datos de respuesta que comprobar",nextStep:"3. Luego",replyDataQuestion:"¿Qué datos de la respuesta deben comprobarse?",requiredSourceResult:"Resultado exigido del nodo de origen",loopSummary:"Vuelve a {target}",loopScope:"Nodos del bucle: {nodes}",historyLabel:"Etiqueta de historial (opcional)",advancedSettings:"Configuración avanzada",historyNode:"Nodo mostrado en el historial",historyNodePlaceholder:"Seleccionar nombre de nodo",continueWhen:"Continuar cuando",compareUsing:"Comparar con",expectedType:"Tipo del valor esperado",expectedValue:"Valor esperado",routeChoices:{success:"La fuente respondió normalmente",failure:"Falló la ejecución de la fuente",always:"Cualquier resultado"},operatorChoices:{equals:"Igual a",not_equals:"Distinto de",contains:"Contiene",not_contains:"No contiene",exists:"Existe",not_exists:"No existe",greater_than:"Mayor que",greater_than_or_equal:"Mayor o igual que",less_than:"Menor que",less_than_or_equal:"Menor o igual que",in:"Está en la lista",not_in:"No está en la lista"},loopMissingForwardPath:"Esta conexión de retorno no tiene una ruta hacia delante que repetir.",loopNotNatural:"Este bucle tiene otra ruta de entrada, por lo que no se repetiría de forma predecible.",loopDuplicateScope:"Dos conexiones de retorno definen los mismos nodos del bucle.",loopPartialOverlap:"Los bucles pueden estar separados o totalmente anidados, pero no solaparse parcialmente.",loopDuplicateHistoryLabel:"Cada etiqueta de historial de bucle debe ser única.",route:"Ruta",routes:{success:"Solo éxito (success)",failure:"Solo fallo (failure)",always:"Siempre (always)"},routeHelp:"Primero se comprueba el resultado del nodo de origen; si hay una condición, también debe coincidir.",routeExample:"Ejemplo: success para el flujo normal, failure para errores y always para limpieza.",conditionPath:"¿Qué debe comprobar esta conexión?",conditionPathPlaceholder:"Ruta avanzada, por ejemplo output",conditionPathOptions:{routeOnly:"No inspeccionar la respuesta",outputRecommended:"Texto completo de la respuesta correcta (output, recomendado)",output:"Texto completo de la respuesta correcta (output)",outputJson:"Valor de un campo JSON (outputJson.*)",errorRecommended:"Texto completo del error (error, recomendado)",error:"Texto completo del error (error)",custom:"Ruta de datos avanzada"},structuredOutputPathPlaceholder:"Ruta del campo JSON, por ejemplo outputJson.route_token",structuredOutputHelp:"Analiza una respuesta JSON completa o exactamente un bloque fenced json. Si falta, es inválido o hay varios bloques JSON, outputJson no está disponible y la condición no coincide.",conditionPathHelp:{success:"Para success se recomienda output. Elige “Solo ruta” si no necesitas comprobar la respuesta.",failure:"Para failure se recomienda error. Elige “Solo ruta” si no necesitas comprobar el error.",always:"Usa output para respuestas correctas o error para fallos; “Solo ruta” omite la comprobación."},operator:"Operador",operators:{equals:"Igual (equals)",not_equals:"Distinto (not_equals)",contains:"Contiene (contains)",not_contains:"No contiene (not_contains)",exists:"Existe (exists)",not_exists:"No existe (not_exists)",greater_than:"Mayor que (greater_than)",greater_than_or_equal:"Mayor o igual (greater_than_or_equal)",less_than:"Menor que (less_than)",less_than_or_equal:"Menor o igual (less_than_or_equal)",in:"Está en la lista (in)",not_in:"No está en la lista (not_in)"},operatorHelp:{equals:"Valor y tipo deben ser exactamente iguales.",not_equals:"El valor o el tipo son diferentes.",contains:"El texto contiene otro texto o el array contiene el elemento.",not_contains:"El texto o array no contiene el elemento.",exists:"Coincide si existe la ruta; no requiere valor.",not_exists:"Coincide si falta la ruta; no requiere valor.",greater_than:"Ambos lados deben ser números JSON; el valor real es mayor.",greater_than_or_equal:"Ambos lados deben ser números JSON; el valor real es mayor o igual.",less_than:"Ambos lados deben ser números JSON; el valor real es menor.",less_than_or_equal:"Ambos lados deben ser números JSON; el valor real es menor o igual.",in:"Valor debe ser un array JSON que contenga el valor real.",not_in:"Valor debe ser un array JSON que no contenga el valor real."},value:"Valor",invalidConditionValue:"El valor de condición debe ser JSON válido",conditionValuePlaceholder:'JSON: "texto", 42, true, ["a"]',valueType:"Tipo de valor",valueTypes:{string:"Cadena",number:"Número",boolean:"Booleano",null:"Nulo",array:"Array",object:"Objeto"},valueTypeHelp:"Elige cómo se interpreta y valida el valor. El tipo se infiere del valor JSON guardado y no se almacena por separado.",conditionValuePlaceholders:{string:"Texto, por ejemplo APPROVED",number:"Número, por ejemplo 42",boolean:"true o false",null:"null",array:'Array JSON, por ejemplo ["a", 2]',object:`Objeto JSON, por ejemplo {'{'}"status":"ready"{'}'}`},invalidValueTypes:{string:"El valor debe ser texto.",number:"El valor debe ser un número válido.",boolean:"El valor debe ser true o false.",null:"El valor debe ser null.",array:"El valor debe ser un array válido.",object:"El valor debe ser un objeto válido."},valueHelp:"Introduce un valor del tipo seleccionado. Los objetos y arrays usan JSON; las cadenas se escriben sin comillas JSON.",expectedReplyText:"Texto que buscar",expectedFieldValue:"Valor esperado del campo",rawTextValueHelp:"Se comprueba literalmente todo el texto de la respuesta. Con “Contiene”, el texto puede aparecer en una clave o un valor JSON; no se consulta un campo JSON concreto.",jsonFieldValueHelp:"Se compara el valor de la ruta outputJson indicada, no el nombre del campo. Ejemplo: outputJson.failed_gate es igual a quality-container-setup.",canvasLabel:{withValue:"{subject} {operator} «{value}»",withoutValue:"{subject} {operator}",join:"{route} · {condition}"},conditionSemantics:"Regla que se comprueba realmente",rawTextComparisonHelp:"El operador seleccionado es {operator}. Se aplica al texto completo, no a un campo JSON. Contiene/No contiene puede encontrar texto en una clave o valor JSON; Igual/Distinto compara la respuesta completa con el valor configurado.",jsonFieldComparisonHelp:"Lee el valor de {path}. {operator} compara ese value con «{value}» y nunca el nombre del campo.",rawTextExistenceHelp:"Solo comprueba que esté disponible el texto completo, no que exista una clave JSON.",jsonFieldExistenceHelp:"Solo comprueba si existe el campo JSON de {path}; no compara su valor.",rawTextOperatorHelp:{equals:"Coincide solo si el texto completo de la respuesta es exactamente igual a «{value}». No lee ni compara la value de un campo JSON.",not_equals:"Coincide solo si el texto completo de la respuesta es distinto de «{value}». No lee ni compara la value de un campo JSON.",contains:"Busca «{value}» en todo el texto de la respuesta. Puede coincidir en una JSON key o una JSON value; no es una búsqueda de campo JSON.",not_contains:"Coincide solo si «{value}» no aparece en ninguna parte del texto completo, ni en una JSON key ni en una JSON value. No es una búsqueda de campo JSON.",exists:"Coincide cuando está disponible el texto completo de la respuesta. No comprueba si existe una JSON key.",not_exists:"Coincide cuando no hay texto completo de respuesta. No comprueba si falta una JSON key."},jsonFieldOperatorHelp:{equals:"Lee la value del campo en {path}. Coincide solo si ese valor es exactamente igual a «{value}»; nunca compara el nombre del campo.",not_equals:"Lee la value del campo en {path}. Coincide solo si ese valor es distinto de «{value}»; nunca compara el nombre del campo.",contains:"Lee la value del campo en {path} y comprueba si contiene «{value}»; nunca busca en el nombre del campo.",not_contains:"Lee la value del campo en {path}. Coincide solo si no contiene «{value}»; nunca busca en el nombre del campo.",exists:"Coincide cuando existe el campo JSON en {path}. No compara la value del campo.",not_exists:"Coincide cuando falta el campo JSON en {path}. No compara la value del campo."},feedback:"Bucle de retroalimentación",feedbackHelp:"Marca esta conexión de retorno como un bucle limitado. Solo repite mientras coincidan ruta y condición.",maxIterations:"Iteraciones máximas",maxIterationsHelp:"Total de pasadas del bucle, de 1 a 100; también se aplica el presupuesto global.",invalidIterations:"Las iteraciones máximas deben ser un entero entre 1 y 100",loopId:"Identidad del bucle",loopIdPlaceholder:"Selecciona automático o escribe un ID",loopIdAutomatic:"Automático (recomendado) · {id}",loopIdHelp:"Solo identifica el bucle en el historial; no cambia cuándo se ejecuta. Déjalo automático salvo diseños avanzados.",invalidLoopId:"El formato del ID del bucle no es válido"},node:{title:"Nombre del nodo",agent:"Agente",model:"Modelo",apiMode:"Modo de API",input:"Entrada",approvalRequired:"Aprobación tras el nodo",join:"Estrategia de unión",joinAll:"Todas las rutas entrantes",joinAny:"Cualquier ruta entrante",joinAllHelp:"Se ejecuta solo si se toman todas las rutas entrantes; si alguna no coincide, se omite.",joinAnyHelp:"Se ejecuta una vez con la primera ruta tomada; se omite solo si ninguna coincide.",promptPlaceholder:"Describe qué debe hacer este agente...",skillsPlaceholder:"Escribe una habilidad y pulsa Entrar para añadirla",uploadImages:"Subir imágenes"},status:{idle:"Inactivo",queued:"En cola",running:"En ejecución",pending_approval:"Pendiente de aprobación",completed:"Completado",skipped:"Omitido",failed:"Fallido",approval_rejected:"Aprobación rechazada",canceled:"Cancelado"}},groupChat:{agentLinkButton:"Añadir tu Agent",agentOwner:"Propietario: {name}",agentLinkTitle:"Añadir un Agent a esta sala",agentLinkDescription:"Conecta tu propio servicio Hermes. El servicio establece una conexión saliente cifrada; la sala nunca recibe tus credenciales ni acceso a tu espacio de trabajo.",agentLinkTargetUrl:"URL de tu servicio Hermes",agentLinkTargetPlaceholder:"http://127.0.0.1:8748 or https://your-hermes.example.com",agentLinkTargetRequired:"Introduce la URL de un servicio Hermes.",agentLinkInvalidTarget:"Introduce un origen HTTP o HTTPS sin credenciales, ruta, consulta ni fragmento.",agentLinkOpenTarget:"Iniciar sesión y elegir un Agent",agentLinkPopupBlocked:"La ventana de autorización fue bloqueada. Permite las ventanas emergentes para esta página e inténtalo de nuevo.",agentLinkParentUnavailable:"La ventana de autorización perdió la conexión con la página de invitación. Ciérrala y vuelve a empezar.",agentLinkParentUnconfirmed:"La página de invitación no confirmó esta solicitud. Déjala abierta y reinicia la autorización.",agentLinkIncompleteConfiguration:"Selecciona un Profile, un proveedor y un modelo completos antes de solicitar acceso.",agentLinkWaitingApproval:"Esperando que el propietario apruebe este Agent…",agentLinkApproved:"Aprobado. Conectando tu Agent…",agentLinkConnected:"Tu Agent está conectado a la sala.",agentLinkError:"No se pudo conectar este Agent.",agentLinkRejected:"El propietario rechazó esta solicitud de Agent.",agentLinkExpired:"Esta solicitud de Agent ha caducado. Inicia una nueva.",agentLinkPairingCode:"Código de vinculación manual",agentLinkPairingCodeHint:"Si la ventana de autorización no puede comunicarse con esta página, pega allí este código de corta duración.",agentLinkCopyCode:"Copiar código de vinculación",agentLinkAuthorizeTitle:"Autorizar Agent del chat grupal",agentLinkAuthorizeDescription:"Elige un Agent local para conectarlo. El grupo puede enviarle mensajes, pero no puede explorar tu espacio de trabajo local.",agentLinkSelectAgent:"Agent",agentLinkRequestConnection:"Solicitar conexión",agentLinkOrPairingCode:"o usar un código de vinculación manual",agentLinkPairingCodePlaceholder:"Pega un código de vinculación HGC1",agentLinkConnect:"Conectar Agent",agentLinkSecurityHint:"Aprueba solo salas que reconozcas. Los tickets de vinculación son de un solo uso y caducan pronto.",agentLinkLoadFailed:"No se pudieron cargar los Agents locales.",agentLinkConnectFailed:"No se pudo conectar el Agent seleccionado.",agentLinkInvalidPairingCode:"Este código de vinculación no es válido.",agentLinkClose:"Cerrar",agentLinkApprovalMismatch:"La solicitud de conexión cambió después de aprobarla. Revisa el Agent e inténtalo de nuevo.",guestAgentsDisabled:"El propietario no ha habilitado los Agents de invitados.",guestAgentSettings:"Conexiones de Agents invitados",allowGuestAgents:"Permitir que los miembros añadan sus propios Agents",maxGuestAgentsPerMember:"Máximo de Agents por miembro",ownerApprovalHint:"Cada Agent sigue necesitando la aprobación explícita del propietario.",allowRemoteWorkspaceAccess:"Permitir que Agents remotos lean y escriban en el espacio de trabajo del grupo",remoteWorkspaceAccessHint:"Al activarlo, los Agents remotos aprobados reciben acceso temporal en cada ejecución. Los archivos sensibles y las rutas externas siguen bloqueados.",agentPairingRequestTitle:"Solicitud de conexión de Agent",agentPairingRequestDescription:"{user} quiere conectar un Agent desde {origin}.",approveAgent:"Aprobar Agent",rejectAgent:"Rechazar",agentPairingApproved:"Conexión del Agent aprobada",agentPairingRejected:"Conexión del Agent rechazada",emptyState:"Inicia una conversación grupal",title:"Chat grupal",refactorNoticeTitle:"Actualización del chat grupal",refactorNoticeMessage:"El chat grupal se ha rediseñado por completo. Si no puedes chatear en una sala, crea una nueva.",createRoom:"Crear sala",joinByCode:"Unirse con código",shareTitle:"Unirse a la conversación",shareSubtitle:"Introduce el código de invitación para entrar sin iniciar sesión.",shareCodeHint:"Esta invitación solo permite acceder a su sala de chat grupal.",shareInvalidCode:"El código no es válido o se ha actualizado. Pide un enlace nuevo a quien lo compartió.",shareJoining:"Entrando al chat grupal…",shareNameSubtitle:"Elige un nombre antes de entrar en la sala.",shareNameConflict:"Ese nombre ya se usa en esta sala. Elige otro.",shareNameReserved:"Ese nombre está reservado. Elige otro.",shareEnterRoom:"Entrar en la sala",roomName:"Nombre de la sala",roomNamePlaceholder:"Introduce el nombre de la sala",inviteCode:"Código de invitación",autoGenerate:"Generar automáticamente",noRooms:"Aún no hay salas",localRooms:"Local",remoteRooms:"Remoto",remoteRoomOffline:"La conexión remota está desconectada.",renameRemoteRoom:"Renombrar sala remota",renameRemoteRoomHint:"Solo cambia cómo se muestra la sala en este dispositivo.",remoteRoomRenamed:"Nombre visible de la sala remota actualizado",remoteRoomRenameFailed:"No se pudo actualizar el nombre visible de la sala remota",leaveRemoteRoom:"Salir de la sala",leaveRemoteRoomConfirm:"¿Salir de «{name}»? Se eliminarán de la sala remota todos los Agents conectados desde este dispositivo y sus registros locales.",remoteRoomLeft:"Has salido de la sala remota",remoteRoomLeaveFailed:"No se pudo salir de la sala remota",remoteRoomLeavePartial:"Se eliminaron los registros locales, pero no se pudo avisar a {count} conexión(es) de Agent porque la sala remota estaba desconectada.",selectOrCreate:"Selecciona o crea una sala para empezar a chatear",agents:"Agentes",allAgents:"Todos los Agents",addAgent:"Añadir agente",agentType:"Agente",agentTypes:{hermes:"Hermes",ekko:"Ekko",codex:"Codex",claude:"Claude"},selectProfile:"Seleccionar un Profile",agentAdded:"Agente añadido",selectRoomFirst:"Selecciona primero una sala",agentAlreadyInRoom:"Este agente ya está en la sala",agentAddFailedCount:"No se añadieron {count} agente(s): {details}",editAgentTitle:"Editar {name}",removeMember:"Expulsar",memberRemoved:"{name} fue expulsado de la sala",memberRemovedNotice:"El propietario te expulsó de esta sala. Puedes volver a entrar mientras la invitación siga siendo válida.",noAgents:"No hay agentes en esta sala",members:"{count} miembros",roomCreated:"Sala creada",roomDeleted:"Sala eliminada",roomCloned:"Sala clonada",cloneRoom:"Clonar sala",copyRoomLink:"Copiar enlace de la sala",manualCopyRoomLinkHint:"El navegador no pudo copiar automáticamente. Selecciona el enlace y cópialo manualmente.",deleteRoomConfirm:"¿Eliminar esta sala?",clearContext:"Borrar contexto",clearContextConfirm:"¿Borrar el contexto de esta sala? Se eliminarán los mensajes y las instantáneas de compresión, pero se conservarán los agentes y los miembros.",contextCleared:"Contexto borrado",you:"Tú",joined:"Te has unido a la sala",joinFailed:"No se pudo entrar en la sala",inputPlaceholder:"Escribe un mensaje... (Intro para enviar)",messageDisplayLimit:"El chat grupal muestra hasta 600 mensajes",enterCode:"Introduce el código de invitación",yourName:"Tu nombre",yourNamePlaceholder:"Introduce tu nombre visible",yourDescription:"Descripción (opcional)",yourDescriptionPlaceholder:"Cuéntales a los demás quién eres...",agentName:"Nombre del agente",agentNamePlaceholder:"Nombre personalizado (vacío para usar el nombre del Profile)",agentDesc:"Descripción del agente",agentDescPlaceholder:"Describe qué hace este agente...",agentReplying:"está respondiendo...",agentCompressing:"está comprimiendo el contexto...",compressionSettings:"Ajustes de compresión",triggerTokens:"Tokens de activación",triggerTokensDesc:"Umbral de tokens que activa la compresión del contexto",maxHistoryTokens:"Tokens máximos del historial",maxHistoryTokensDesc:"Máximo de tokens del contexto comprimido enviado al LLM",tailMessageCount:"Mensajes recientes conservados",tailMessageCountDesc:"Número de mensajes recientes que se conservan sin cambios tras la compresión",compressionConfig:"Configuración de compresión",compressionSaved:"Configuración de compresión guardada",roomSettings:"Configuración de sala",inviteCodeSettings:"Configuración del código de invitación",inviteCodePlaceholder:"Introduce un nuevo código de invitación",generateInviteCode:"Generar código de invitación",inviteCodeRotateHint:"Al actualizarlo, el código anterior deja de servir para nuevas uniones.",inviteCodeUpdated:"Código de invitación actualizado",inviteCodeUpdateFailed:"No se pudo actualizar el código de invitación",saveCompression:"Guardar compresión",compressNow:"Comprimir ahora",compressingInProgress:"Compresión en curso; espera un momento",summarySettings:"Resumen continuo",summarySettingsDesc:"Un Ekko Agent limpio actualiza el resumen compartido tras un número fijo de turnos humanos.",summaryProvider:"Proveedor del resumen",summaryProviderPlaceholder:"Seleccionar proveedor",summaryModel:"Modelo del resumen",summaryModelPlaceholder:"Seleccionar modelo",summaryApiMode:"Modo de API",summaryEveryTurns:"Resumir cada N turnos",summaryEveryTurnsDesc:"Un turno equivale a un mensaje humano.",summaryConfigSaved:"Configuración del resumen guardada",summaryConfigurationRequired:"Esta sala aún no tiene resumidor. Selecciona perfil, proveedor, modelo y modo de API, y guarda.",summaryConfigurationOwnerRequired:"Esta sala aún no tiene resumidor. Pide a un administrador que lo configure antes de enviar mensajes.",saveSummaryConfig:"Guardar configuración",currentSummary:"Resumen actual",summaryStatus:{idle:"Pendiente",summarizing:"Resumiendo",success:"Correcto",failed:"Falló"},summaryUpdatedAt:"Última actualización",summarizedTurns:"Turnos resumidos",summaryAnchor:"Ancla del resumen",summaryMessagesAbove:"Mensajes anteriores resumidos",summaryNoAnchor:"Aún no hay ancla",summaryContent:"Contenido del resumen",summaryEmpty:"Aún no hay resumen",summaryEditKeepsAnchor:"Editar el texto no mueve el ancla actual.",saveSummary:"Guardar resumen",summaryUpdated:"Resumen actualizado",summaryNever:"Nunca",summaryLoadFailed:"No se pudo cargar el resumen de la sala"},files:{attachToChat:"Añadir al chat",attachFailed:"No se pudo añadir el archivo al chat",previewMode:"Vista previa",sourceMode:"Código fuente",tableMode:"Tabla",worksheet:"Hoja",htmlPreviewTitle:"Vista previa HTML aislada",previewLoading:"Cargando vista previa...",previewFailed:"Vista previa no disponible",previewMimeMismatch:"El tipo de archivo no coincide con el formato de vista previa.",downloadInstead:"Descargar en su lugar",previousPage:"Anterior",nextPage:"Siguiente",pageStatus:"Página {page} de {total}",zoom:"Zoom",pdfPageLimit:"Solo se muestran las primeras {count} páginas.",tableTruncated:"La vista previa se ha limitado. Descarga el archivo para ver todas las filas y columnas."},changelog:{new_0_6_41_1:"El STT local ahora funciona de forma fiable en instalaciones npm de Hermes Web UI al fijar los runtimes nativos de sherpa-onnx a la misma versión que el wrapper de Node.js en macOS, Windows y Linux (#2464)",new_0_6_40_1:"Esta versión cubre los 40 PR fusionados desde v0.6.39: salas remotas seguras, STT local, programación de Workflow, aprobaciones globales, webhooks de Chat Run, MCU y fiabilidad de Coding Agent",new_0_6_40_2:"El chat grupal añade salas compartidas seguras y Agents remotos, estabiliza la transferencia, presencia y revocación de Agents, conserva avatares de propietarios sin conexión y permite copiar manualmente el enlace cuando no está disponible la API del portapapeles (#2408, #2410, #2411, #2415, #2423)",new_0_6_40_3:"Los Agents remotos pueden transferir archivos y subirlos a workspaces en la nube. Las solicitudes de no propietarios aplican límites más estrictos al workspace, la información sensible y la memoria privada, con rutas de propiedad y aprobación corregidas (#2413, #2430, #2433, #2435)",new_0_6_40_4:"El chat grupal deja de migrar Agent Links antiguos y separa listas plegables de salas locales y remotas, con alias locales, navegación a la página compartida y limpieza completa al salir (#2424, #2459)",new_0_6_40_5:"El historial grupal ya no se poda automáticamente. Los resultados de herramientas con menciones se guardan con IDs acotados, y se corrigen herramientas huérfanas, alineación y rutas de aprobación, además del bloqueo del bucle durante el conteo de tokens (#2390, #2420, #2426, #2427, #2429, #2445)",new_0_6_40_6:"La actividad de sesiones recientes y del chat grupal responde antes, y el panel de herramientas se expande con una animación fluida (#2389, #2414)",new_0_6_40_7:"Las aprobaciones globales pueden adoptar solicitudes existentes, mostrar vistas previas de comandos más claras y enviar notificaciones del sistema para acciones pendientes (#2406, #2425, #2432)",new_0_6_40_8:"El nuevo STT local chino-inglés en streaming basado en sherpa-onnx conserva las últimas palabras con silencio final y usa búferes compatibles con Electron en macOS y Windows (#2447, #2448, #2461)",new_0_6_40_9:"Workflow incorpora ejecuciones programadas duraderas y una interfaz completa para crear, editar, activar, desactivar y eliminar horarios (#2434, #2441)",new_0_6_40_10:"Se añaden webhooks del ciclo de vida de Chat Run, se elimina el endpoint antiguo sin uso y el servidor obtiene un endpoint ligero de disponibilidad (#2422, #2452, #2453)",new_0_6_40_11:"MCU puede elegir entre los runtimes Ekko y Hermes Agent, mientras que los avatares de Global Agent y los indicadores de estado de MCU ahora se resuelven correctamente (#2438, #2442)",new_0_6_40_12:"Coding Agent exige una identidad de ejecución y corrige el aislamiento de persistencia en Windows, tiempos de espera MCP, reproducción de reasoning entre modelos, estimaciones de contexto y guías de Studio duplicadas (#2387, #2392, #2395, #2396, #2398, #2416)",new_0_6_40_13:"Los preajustes de MoA permiten configurar el esfuerzo de razonamiento por modelo y la generación de imágenes desactiva el almacenamiento Responses para evitar retención remota innecesaria (#2439, #2449)",new_0_6_39_1:"Ekko Agent ahora inicializa sus recursos de forma explícita, ejecuta código Node.js o Python limitado tras la aprobación de la herramienta y puede pausar una ejecución en primer plano para pedir aclaraciones de texto o de opción múltiple antes de continuar (#2362, #2368)",new_0_6_39_2:"Group Chat espera la confirmación de entrada a la sala antes de enviar, corrigiendo errores intermitentes «Not in room» al reconectar. La escritura se envía como heartbeat limitado y solo aparece como una luz de respiración sin texto en los avatares de otros miembros (#2373)",new_0_6_39_3:"Los eventos de herramientas de Coding Agent en Single Chat y Group Chat siguen ahora el ciclo del CLI nativo y emiten un único inicio cuando terminan los argumentos, eliminando tarjetas duplicadas o bloqueadas y el JSON mostrado carácter a carácter en salas grandes (#2366, #2372)",new_0_6_39_4:"Los prompts de Coding Agent se envían por stdin, conservando entradas multilínea e imágenes y evitando el límite de comandos de Windows. Group Chat tampoco interrumpe trabajos activos de Codex, Claude Code o Ekko tras dos minutos fijos (#2354, #2357)",new_0_6_39_5:"Codex usa el JSONL nativo y la salida del proceso como estado final durante desconexiones recuperables del proxy Provider, evitando que un trabajo terminado aparezca como fallo en Group Chat (#2375)",new_0_6_39_6:"Gestión de versiones valida que el Runtime esté completo y muestra el motivo del fallback de escritorio. Los Runtime inválidos no pueden activarse y se ocultan los controles de descarga o cambio del Web UI porque las actualizaciones siguen llegando con el instalador de escritorio (#2353)",new_0_6_39_7:"Los encabezados de ejecución de Group Chat muestran solo el nombre del Agent y eliminan descripciones repetidas para agrupar los mensajes con mayor claridad (#2352)",new_0_6_39_8:"Las conexiones remotas del ESP32-C3 mantienen Socket.IO activo durante la búsqueda, reutilizan búferes de voz limitados, se reconectan con espera progresiva y conservan la sesión ante desconexiones temporales de Studio, haciendo más rápidas y fiables la búsqueda remota y las interacciones de voz (#2383)",new_0_6_38_1:"Al iniciar, el escritorio de Windows repara las rutas relativas de Python no válidas que las actualizaciones del Agent dejan en entornos Hermes Runtime almacenados, y restaura CLI, registros y Gateway tras actualizar, cambiar de Runtime o migrar el almacenamiento",new_0_6_38_2:"El catálogo de compatibilidad del sitio web vuelve a reconocer Hermes 0.19.0 para mantener disponibles las descargas de escritorio y las comprobaciones correspondientes (#2348)",new_0_6_37_1:"La prioridad de esta versión con 14 PR es la reconstrucción completa de Group Chat: cada Agent puede elegir de forma independiente su Profile, Provider, modelo, modo API, nivel de razonamiento, identidad y workspace (#2334)",new_0_6_37_2:"Las salas ahora inician ejecuciones nuevas y aisladas y agrupan cada respuesta con su reasoning y herramientas. También incorporan un resumen progresivo compartido y editable con estado y límites, menciones de Agent, paneles de sala/workspace y guía de migración. La voz automática prepara por adelantado el TTS de distintos Profile, limita la síntesis a una tarea por Profile y reproduce en FIFO estricto, por lo que una respuesta nueva no sustituye el audio en curso (#2334)",new_0_6_37_3:"MiniMax Coding Plan OAuth admite las regiones Global y China, y las credenciales autorizadas de Codex, xAI, Anthropic, Nous y MiniMax se actualizan mediante el Runtime Bridge persistente (#2337)",new_0_6_37_4:"ESP32-C3 v1/v2 añaden escucha automática opcional con VAD local, audio previo, finalización por silencio y supresión durante la reproducción, conservando el control push-to-talk (#2338)",new_0_6_37_5:"MCU Global Agent usa ahora el modo de voz conciso de Ekko, puede delegar trabajo seguro en segundo plano, conserva historial y workspaces y deja de enviar resultados de herramientas demasiado grandes al dispositivo (#2326)",new_0_6_37_6:"Los TTS personalizados y compatibles con OpenAI reintentan automáticamente formatos de audio admitidos por el Provider y convierten salidas no MP3 para reproducirlas en Hermes (#2328)",new_0_6_37_7:"La importación y exportación de Profiles dispone de hasta diez minutos, muestra errores de tiempo claros, aísla archivos simultáneos, sanea nombres y elimina archivos temporales (#2310, #2324)",new_0_6_37_8:"Hermes Agent Bridge aplica valores de razonamiento específicos por modelo y conserva las anulaciones explícitas por ejecución y el fallback anterior (#2325)",new_0_6_37_9:"Gestión de versiones muestra por separado la versión real de Hermes Agent instalada y la ruta Runtime, y aclara el alcance de la actualización CLI y la necesidad de cerrar Studio por completo (#2323)",new_0_6_37_10:"Los árboles de archivos workspace usan una sangría menor para mantener visibles los nombres muy anidados (#2340)",new_0_6_37_11:"El escritorio usa por defecto Hermes Agent 0.20.0 desde código fijado, fija Node/npm portátiles, acepta launchers regenerados en Windows, actualiza sin Python del sistema y mantiene oculto el Gateway administrado (#2321, #2344)",new_0_6_37_12:"La migración de almacenamiento Runtime en Windows procesa enlaces creados por actualizaciones sin permisos de administrador, reajusta Python, admite rutas Unicode y actualiza los shims CLI/MCP en el primer reinicio (#2345)",new_0_6_37_13:"La firma de escritorio para macOS usa un keychain temporal explícito compatible con el modo estricto de los runners macOS 26 en ambas arquitecturas (#2315)",new_0_6_36_1:"Esta versión incluye los 28 PR fusionados después de 0.6.35, con mejoras de voz, árabe y RTL, App Relay, fiabilidad de agentes, experiencia de chat, Kanban, Journey, subtítulos MCU y registros de solicitudes de Ekko",new_0_6_36_2:"La configuración de voz se unifica en Modelos para proveedores nativos de Hermes y de la Web UI; Custom TTS permite elegir voz y Edge TTS acepta cualquier Voice ID con opciones en árabe (#2260, #2265, #2267)",new_0_6_36_3:"El árabe y la compatibilidad RTL integral abarcan ahora el flujo del documento, Naive UI, chat, chat grupal, Workflow, capas, cajones, dirección por bloque y términos de Profile corregidos (#2269, #2270, #2271, #2273, #2277, #2294, #2303)",new_0_6_36_4:"Las delegaciones activas en segundo plano mantienen viva su sesión de Agent Bridge hasta finalizar, evitando que la limpieza por inactividad interrumpa tareas largas (#2254)",new_0_6_36_5:"La lista de agentes del chat grupal vuelve a responder a clics en escritorio y la ventana principal puede reducirse hasta 769 px sin entrar en el diseño móvil (#2259, #2263)",new_0_6_36_6:"Los workspace diffs de Codex, Claude Code y Ekko aparecen únicamente en el mensaje exacto del asistente que los generó, tanto en chats activos como restaurados y grupales (#2264)",new_0_6_36_7:"Los README en inglés y chino reflejan ahora el producto y la CLI actuales, y se eliminó del sitio web el manual obsoleto ligado a la versión 0.6.12 (#2268)",new_0_6_36_8:"Un App Relay independiente y sin interfaz añade emparejamiento seguro y acceso remoto autenticado a APIs locales permitidas y al streaming del chat sin exponer Studio directamente (#2275)",new_0_6_36_9:"Desktop Agent Browser puede leer de forma segura textos accesibles largos por páginas y activar controles cuya referencia del snapshot corresponde a texto visible (#2278)",new_0_6_36_10:"El chat incorpora controles de Provider anclados, restauración del desplazamiento por mensaje, barras compactas de herramientas y terminal, vistas previas completas y workspace diffs a todo lo ancho (#2279, #2282, #2283, #2293)",new_0_6_36_11:"Las nuevas sesiones de Ekko reciben workspaces predeterminados aislados por Profile, mientras que los existentes y los elegidos explícitamente no cambian (#2289)",new_0_6_36_12:"Los resultados de aprobación de Memory y Skill son ahora estructurados y serializados, evitando falsos mensajes de éxito y escrituras simultáneas en el mismo Profile (#2295)",new_0_6_36_13:"Kanban añade archivado fiable de tareas y un tablero desplazable, mientras Journey se convierte en un mapa compacto y determinista de relaciones entre Memory y Skill (#2296, #2297)",new_0_6_36_14:"El reasoning en vivo permanece estable entre herramientas, se restaura en el mensaje o herramienta correctos y deja de crear burbujas vacías de subagentes (#2299)",new_0_6_36_15:"La voz del MCU muestra ahora subtítulos GB2312 sincronizados y paginados en ESP32-C3 v1 y v2 sin interrumpir la reproducción de audio (#2305)",new_0_6_36_16:"Ekko escribe ahora un registro compacto model.request por intento de modelo, incluida la compresión de contexto, y omite tool_choice cuando no hay herramientas (#2311)",new_0_6_35_1:"La memoria persistente de Ekko Agent ya está habilitada en producción, con almacenamiento SQLite aislado por perfil, un presupuesto de recuperación automática de 4.000 tokens, una búsqueda de relevancia mejorada en toda la memoria y un manejo más seguro de las solicitudes al modelo (#2246)",new_0_6_34_1:"Esta versión incluye los 21 PR fusionados después de 0.6.33: temas por usuario, mejoras de Ekko y Coding Agent, escritorio y navegador, automatización y correcciones de fiabilidad",new_0_6_34_2:"Cada cuenta puede personalizar el tamaño y color del texto, el color de acento y el fondo del workspace con superficies translúcidas coherentes; las ventanas de Windows y los ajustes del navegador siguen el tema, y los comandos del navegador de Ekko ya se inician correctamente en Windows (#2242, #2243, #2244)",new_0_6_34_3:"Ekko está disponible en producción con descubrimiento de Skill bajo demanda y entrada multimodal; la evolución protegida de Skills, los logs aislados por Profile, la persistencia del protocolo y los resúmenes de razonamiento de Responses mejoran su seguridad y capacidad (#2215, #2236)",new_0_6_34_4:"La memoria de Ekko incorpora clases estructuradas y deterministas para preferencias, relaciones, hábitos, objetivos a largo plazo y más; las conversaciones largas usan ahora el ciclo compartido de compresión de contexto basado en snapshots (#2229, #2230)",new_0_6_34_5:"Las ejecuciones de Coding Agent conservan imágenes entre Codex, Claude Code y protocolos Provider con alcance, recortan salidas de herramientas demasiado grandes en Responses y aíslan por sesión la configuración de ejecución y los eventos tardíos (#2222, #2232, #2238)",new_0_6_34_6:"La comprobación de capacidades de Hermes Workflow ya no rechaza destinos válidos sin metadatos de modo API; Kanban se adapta a las tareas y vistas de adjuntos de Hermes Agent 0.19, y Cron Ejecutar ahora se inicia de forma segura en segundo plano con una validación de creación más estricta (#2239, #2216, #2228)",new_0_6_34_7:"El escritorio añade ventanas de chat independientes y enfocadas, permite automatizar campos de contraseña, pago y archivos en el navegador, y conserva por separado el nombre y la descripción de cada miembro humano en cada sala de Group Chat (#2209, #2210, #2212)",new_0_6_34_8:"El comando /yolo por sesión alterna la omisión de aprobaciones, desaparece el límite visual de 200 turnos del Agent, Markdown conserva las comillas ASCII rectas y el catálogo pt-BR recupera los signos diacríticos que faltaban (#2223, #2225, #2234, #2221)",new_0_6_34_9:"Los dispositivos ESP32-C3 incorporan un modo de espera conectado configurable que reduce el consumo inactivo sin perder Wi-Fi, sesión, Profile ni Socket.IO, con activación inmediata y tiempo de espera persistente (#2218)",new_0_6_33_1:"Esta versión incluye los 16 PR fusionados después de 0.6.32: Agent Browser de escritorio, evidencias y plazos de ejecución de Workflow, interacción con archivos y chats, actualización de modelos Provider y mejoras de fiabilidad",new_0_6_33_2:"El escritorio incorpora un Agent Browser visible con varias pestañas, Profiles aislados, controles de proxy, almacenamiento y descargas, cookies persistentes cifradas, acciones de Agent protegidas y descubrimiento diferido de herramientas MCP (#2177, #2182)",new_0_6_33_3:"Los enlaces de chats individuales y grupales y las vistas HTML autenticadas se abren en el navegador integrado; también mejoran el espaciado de permisos, los iconos de navegación multiplataforma y la coordinación entre barra lateral y barra de título en Windows (#2191, #2194, #2198)",new_0_6_33_4:"Las ejecuciones de Workflow conservan la vista inmutable del inicio, muestran un plazo total para Run/Rerun con tiempo transcurrido y restante, y presentan historial y detalles en páginas basadas en la ruta realmente consumida (#2171, #2173, #2180)",new_0_6_33_5:"Los archivos se pueden pegar directamente en chats individuales o grupales, o adjuntar desde el menú contextual del workspace; las columnas de metadatos compactas dejan más espacio para los nombres (#2175, #2176)",new_0_6_33_6:"Cada Provider configurado puede actualizar su catálogo por separado, confirmar eliminaciones, conservar modelos predeterminados no disponibles y restaurar una vez; se incluyen Provider OAuth, localización completa y control del autocompletado de formularios (#2115)",new_0_6_33_7:"Los estados de interrupción y pausa se aíslan por sesión para que los chats en segundo plano no alteren el botón de parada activo; las selecciones de texto y los campos del escritorio también incorporan acciones nativas con clic derecho (#2203, #2204)",new_0_6_33_8:"El cierre, la actualización y la instalación de escritorio usan una finalización gradual con límite y solo fuerzan los árboles de procesos restantes de Agent Bridge, MCP, navegador y Web UI tras vencer el plazo de limpieza (#2193)",new_0_6_33_9:"Las sesiones de voz MCU aíslan los resultados en primer y segundo plano, mientras los nombres de herramientas MCP compatibles con MiniMax respetan el límite del Provider sin romper clientes existentes (#2181, #2169)",new_0_6_32_1:"Esta versión incluye los 14 PR fusionados después de 0.6.31: organización y compresión de sesiones, chat grupal, enrutamiento de Workflow, Skill Bundles, memoria de Ekko, Hermes 0.19 y marco de escritorio",new_0_6_32_2:"Las menciones del chat grupal ya funcionan después de texto CJK, emojis y puntuación; los propietarios pueden ver, generar y rotar códigos de invitación en los ajustes de la sala (#2133, #2141)",new_0_6_32_3:"Workflow conserva el origen de cada ejecución de Hermes Bridge durante transferencias y reconexiones; los nodos Codex y Claude Code con ámbito pueden usar protocolos compatibles con su launcher para destinos válidos con API Key (#2137, #2154)",new_0_6_32_4:"Las sesiones incorporan categorías globales, búsqueda más precisa que entiende Markdown y compresión por cursor que limita el historial y mantiene la corrección ante ediciones, ramas y ejecuciones simultáneas; el diseño de compresión está documentado por completo (#2139, #2143, #2145, #2146)",new_0_6_32_5:"Los Skill Bundles del Profile se pueden crear, explorar, ejecutar y eliminar directamente desde el chat, mostrando claramente los Skills incluidos (#2156)",new_0_6_32_6:"La memoria de Ekko usa ahora un único modelo canónico aislado por Profile, con cambios validados por revisión, mejor auditoría de fuentes y filtrado de relevancia más estricto (#2159)",new_0_6_32_7:"Los mensajes intermedios del asistente de Hermes 0.19 se transmiten y guardan como burbujas separadas; los chats individuales normales pueden entregar de forma asíncrona resultados duraderos de delegaciones en segundo plano (#2160)",new_0_6_32_8:"Las nuevas compilaciones del Runtime de escritorio, rutas alternativas y shims de CLI para Windows usan Hermes Agent 0.19.0 de forma predeterminada (#2161)",new_0_6_32_9:"Los controles de ventana se integran en el marco de la página: los semáforos de macOS están en la barra lateral, los controles de Windows sobre el contenido principal y Linux mantiene la decoración nativa (#2162)",new_0_6_32_10:"La documentación de desarrollo admite tanto el checkout actual como worktrees de Git aislados opcionales (#2155)"}};export{e as default};
|