@wrongstack/webui 1.0.24 → 1.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/dist/assets/AgentRosterView-udJ14GYq.js +12 -0
  2. package/dist/assets/{AnalyticsDashboard-DgqJODVI.js → AnalyticsDashboard-DwF-0cUA.js} +1 -1
  3. package/dist/assets/AudienceMemoryPanel-DpBGeZv_.js +3 -0
  4. package/dist/assets/ChangesView-BfM0T_aS.js +3 -0
  5. package/dist/assets/ChimeraReviewsView-Q_5C4DU1.js +1 -0
  6. package/dist/assets/ChronicleDashboard-D6LnZzhy.js +1 -0
  7. package/dist/assets/CodeEditor-DonrWH9u.js +2 -0
  8. package/dist/assets/CodeMap-Dxtc378S.js +1 -0
  9. package/dist/assets/{CronJobsPanel-GTK038V9.js → CronJobsPanel-Cn2PQO_p.js} +1 -1
  10. package/dist/assets/{DeadCodeScanPanel-DX4OEuyp.js → DeadCodeScanPanel-Mc5py-kJ.js} +1 -1
  11. package/dist/assets/{DebugDashboard-CKp3sa_k.js → DebugDashboard-D0LRcT4J.js} +1 -1
  12. package/dist/assets/{DesignGalleryView-DVUTYaP6.js → DesignGalleryView-DAD-wRUc.js} +1 -1
  13. package/dist/assets/GoalView-CqeSw0tK.js +1 -0
  14. package/dist/assets/KanbanView-V-bkFftp.js +3 -0
  15. package/dist/assets/{MailboxDetailView-CylnzTVc.js → MailboxDetailView-CTEjap3r.js} +1 -1
  16. package/dist/assets/{MemoryDrawer-DJ0Y98Z8.js → MemoryDrawer-RCduY0FV.js} +1 -1
  17. package/dist/assets/MemoryManager-B-p6-Bic.js +1 -0
  18. package/dist/assets/{ProcessMonitor-BnQ3vJtn.js → ProcessMonitor-B9tpPo4r.js} +1 -1
  19. package/dist/assets/PromptJournalView-DVNqlac9.js +1 -0
  20. package/dist/assets/ProviderTestView-mmfpnAbZ.js +1 -0
  21. package/dist/assets/QueuePanel-BB9qozjm.js +1 -0
  22. package/dist/assets/{RefreshDebugView-s6MyGpPq.js → RefreshDebugView-CCCWzq29.js} +1 -1
  23. package/dist/assets/{RepositoryHistoryView-CWi_Zo3F.js → RepositoryHistoryView-RQVRkkUU.js} +2 -2
  24. package/dist/assets/RequirementIntakeView-D_JRhgzW.js +1 -0
  25. package/dist/assets/{SageTabs-D6eTg3ix.js → SageTabs--k2hQTvl.js} +2 -2
  26. package/dist/assets/{SddFlowGraph-B-ptkFX6.js → SddFlowGraph-DKrrRXKy.js} +1 -1
  27. package/dist/assets/SddHub-B5XO56oY.js +2 -0
  28. package/dist/assets/{SessionInspectView-NSpj5WEN.js → SessionInspectView-j3VJwXNi.js} +1 -1
  29. package/dist/assets/SessionList-CCVHBseu.js +1 -0
  30. package/dist/assets/{SessionsDashboard-mF4PzdKY.js → SessionsDashboard-DsM7sXQw.js} +1 -1
  31. package/dist/assets/SetupScreen-DeuR8Y8S.js +1 -0
  32. package/dist/assets/{SkillDetailView-B9BFyB1i.js → SkillDetailView-BeZyGIpW.js} +3 -3
  33. package/dist/assets/TechStackView-CpSMRQE0.js +2 -0
  34. package/dist/assets/TerminalPanel-BVJ5w-5R.js +1 -0
  35. package/dist/assets/activity-BS2aW_NN.js +10 -0
  36. package/dist/assets/activity-CR2KFruY.js +10 -0
  37. package/dist/assets/activity-Cd0qM2Hx.js +10 -0
  38. package/dist/assets/activity-DyXRoY2s.js +10 -0
  39. package/dist/assets/activity-bBAOetvE.js +10 -0
  40. package/dist/assets/activity-fI3Jy_jD.js +10 -0
  41. package/dist/assets/activity-t6fUmVjo.js +10 -0
  42. package/dist/assets/{button-BbeB5Qm8.js → button-UuKTnoM-.js} +1 -1
  43. package/dist/assets/chat-9GLubejR.js +1 -0
  44. package/dist/assets/chat-B50ssTLh.js +1 -0
  45. package/dist/assets/chat-CDioiM1L.js +1 -0
  46. package/dist/assets/chat-Cll_3gXD.js +1 -0
  47. package/dist/assets/chat-Cqhc6jQa.js +1 -0
  48. package/dist/assets/chat-DN1MggWt.js +1 -0
  49. package/dist/assets/chat-fyvZyUZM.js +1 -0
  50. package/dist/assets/chat-store-uzGtJfDz.js +1 -0
  51. package/dist/assets/{codemap-activity-store-Ha7XbGgq.js → codemap-activity-store-WjfEZe4_.js} +1 -1
  52. package/dist/assets/config-store-P5_updTQ.js +21 -0
  53. package/dist/assets/{dialog-b-Ai37sa.js → dialog-BDUaV5gY.js} +1 -1
  54. package/dist/assets/{empty-state-pfuS5znr.js → empty-state-BzoEa04Q.js} +1 -1
  55. package/dist/assets/{fonts-DRGbd-AM.js → fonts-C303yVU_.js} +2 -2
  56. package/dist/assets/i18n-t7rIS4DB.js +3 -0
  57. package/dist/assets/index-B4ELbNoz.js +181 -0
  58. package/dist/assets/index-qdrakcnP.css +1 -0
  59. package/dist/assets/{input-BA6D2L3K.js → input-DMnC2O7-.js} +1 -1
  60. package/dist/assets/{mailbox-store-ZQO_Rv6E.js → mailbox-store-DyOOYbni.js} +1 -1
  61. package/dist/assets/{roster-ws-Cv_PHlEV.js → roster-ws-szSqUkqP.js} +1 -1
  62. package/dist/assets/settings-BMHZcBqe.js +1 -0
  63. package/dist/assets/settings-BQ5J8WXE.js +1 -0
  64. package/dist/assets/settings-BfNJfO4z.js +1 -0
  65. package/dist/assets/settings-ClDQ01ie.js +1 -0
  66. package/dist/assets/settings-DD31lC4f.js +1 -0
  67. package/dist/assets/settings-Da3EIcna.js +1 -0
  68. package/dist/assets/settings-Dl_QM2QZ.js +1 -0
  69. package/dist/assets/{shared-BFJvAYzX.js → shared-CLNEiW00.js} +1 -1
  70. package/dist/assets/stores-Cx52UOxM.js +7 -0
  71. package/dist/assets/toasts-3tM1krOo.js +1 -0
  72. package/dist/assets/toasts-BrHW33qA.js +1 -0
  73. package/dist/assets/toasts-Buww129h.js +1 -0
  74. package/dist/assets/toasts-CSN9Fy47.js +1 -0
  75. package/dist/assets/toasts-DOoYxbHd.js +1 -0
  76. package/dist/assets/toasts-DkDnbhs_.js +1 -0
  77. package/dist/assets/toasts-Jo4VH13n.js +1 -0
  78. package/dist/assets/ui-store-DI0iusYZ.js +1 -0
  79. package/dist/assets/{utils-CKsqCaP8.js → utils-B21Devim.js} +1 -1
  80. package/dist/assets/{vector-memory-panel-YWv6xcza.js → vector-memory-panel-DnX-ODHC.js} +1 -1
  81. package/dist/assets/{vendor-V3ydTHqN.js → vendor-BfBvt432.js} +28 -28
  82. package/dist/assets/{view-navigation-CpIPxhZp.js → view-navigation-Cvrp_uJm.js} +1 -1
  83. package/dist/components/BrowserLivePane.d.ts +2 -0
  84. package/dist/components/ChangesView.d.ts +3 -1
  85. package/dist/components/ChatInput/chat-input-bars.d.ts +1 -1
  86. package/dist/components/ChatInput/image-attachments.d.ts +19 -2
  87. package/dist/components/ChatInput/slash-routing.d.ts +18 -0
  88. package/dist/components/ChatInput/use-paste-drop.d.ts +3 -0
  89. package/dist/components/ChatInput/use-prompt-queue-view.d.ts +13 -0
  90. package/dist/components/ChatView/BackgroundShellStrip.d.ts +16 -0
  91. package/dist/components/ChatView/TerminalStrip.d.ts +8 -0
  92. package/dist/components/CodeMap.d.ts +0 -12
  93. package/dist/components/GoalPanel.d.ts +2 -1
  94. package/dist/components/ImageDiffView.d.ts +12 -0
  95. package/dist/components/KanbanTaskExecution.d.ts +64 -0
  96. package/dist/components/KanbanTaskInspector.d.ts +1 -1
  97. package/dist/components/MessageBubble/AttachmentGallery.d.ts +1 -1
  98. package/dist/components/MessageBubble/GeneratedImagePreview.d.ts +10 -0
  99. package/dist/components/SessionTabBar/summaries.d.ts +4 -0
  100. package/dist/components/SettingsPanel/LimitsSection.d.ts +7 -0
  101. package/dist/components/SettingsPanel/MCPSection.d.ts +1 -37
  102. package/dist/components/SettingsPanel/MCPServerCards.d.ts +67 -0
  103. package/dist/components/SettingsPanel/MCPServerDialog.d.ts +11 -0
  104. package/dist/components/SettingsPanel/PreferenceControls.d.ts +8 -0
  105. package/dist/components/SettingsPanel/ProviderSavedProfiles.d.ts +50 -0
  106. package/dist/components/SettingsPanel/ProviderSection.d.ts +2 -79
  107. package/dist/components/SettingsPanel/SettingsNavigation.d.ts +12 -0
  108. package/dist/components/SettingsPanel/brain-section-options.d.ts +1 -2
  109. package/dist/components/SettingsPanel/provider-section-types.d.ts +79 -0
  110. package/dist/components/SidePanel/SessionList.d.ts +1 -34
  111. package/dist/components/SidePanel/session-history.d.ts +61 -0
  112. package/dist/components/SystemPromptPresetEditor.d.ts +9 -0
  113. package/dist/components/TerminalPanel.d.ts +8 -1
  114. package/dist/components/WorkspaceDock.d.ts +2 -2
  115. package/dist/components/review/ReviewDiff.d.ts +21 -0
  116. package/dist/components/review/ReviewTray.d.ts +15 -0
  117. package/dist/components/review/review-diff-model.d.ts +31 -0
  118. package/dist/components/use-code-map-flow.d.ts +25 -0
  119. package/dist/components/use-office-map-canvas.d.ts +1 -1
  120. package/dist/components/use-office-map-topology.d.ts +31 -0
  121. package/dist/hooks/use-live-browser.d.ts +7 -0
  122. package/dist/hooks/useWebSocket.d.ts +1 -2
  123. package/dist/hooks/ws-handlers/goal-handlers.d.ts +2 -0
  124. package/dist/hooks/ws-handlers/prompt-queue-handlers.d.ts +18 -0
  125. package/dist/index.css +3013 -3013
  126. package/dist/index.html +18 -18
  127. package/dist/index.js +97375 -92924
  128. package/dist/lib/compact-file-tree.d.ts +30 -0
  129. package/dist/lib/project-image.d.ts +26 -0
  130. package/dist/lib/provider-warm.d.ts +3 -0
  131. package/dist/lib/ws-client-session-methods.d.ts +2 -0
  132. package/dist/lib/ws-client.d.ts +3 -0
  133. package/dist/stores/chat-lane-data.d.ts +153 -0
  134. package/dist/stores/chat-lanes.d.ts +3 -174
  135. package/dist/stores/chat-queue-helpers.d.ts +9 -0
  136. package/dist/stores/chat-store-types.d.ts +3 -0
  137. package/dist/stores/chat-store.d.ts +1 -1
  138. package/dist/stores/context-editor-store.d.ts +1 -1
  139. package/dist/stores/fleet-transcript.d.ts +14 -0
  140. package/dist/stores/git-changes-store.d.ts +3 -0
  141. package/dist/stores/goal-run-store.d.ts +8 -0
  142. package/dist/stores/goal-state-store.d.ts +3 -0
  143. package/dist/stores/goal-store.d.ts +9 -11
  144. package/dist/stores/local-prefs-defaults.d.ts +340 -0
  145. package/dist/stores/local-prefs.d.ts +2 -318
  146. package/dist/stores/notification-store.d.ts +9 -0
  147. package/dist/stores/review-store.d.ts +54 -0
  148. package/dist/stores/session-activity.d.ts +33 -0
  149. package/dist/stores/session-tab-store.d.ts +1 -46
  150. package/dist/stores/terminal-strip-store.d.ts +26 -0
  151. package/dist/stores/ui-store-chrome.d.ts +1 -1
  152. package/dist/stores/ui-store-persist.d.ts +2 -2
  153. package/dist/stores/ui-store-types.d.ts +3 -3
  154. package/dist/stores/ui-store.d.ts +5 -5
  155. package/dist/types/brain.d.ts +4 -2
  156. package/dist/types/client-message.d.ts +119 -11
  157. package/dist/types/prompt-queue.d.ts +55 -0
  158. package/dist/types/protocol-core.d.ts +4 -216
  159. package/dist/types/runtime.d.ts +3 -38
  160. package/dist/types/server-message-files.d.ts +22 -0
  161. package/dist/types/server-message-mcp.d.ts +30 -0
  162. package/dist/types/server-message-system.d.ts +110 -0
  163. package/dist/types/server-message.d.ts +4 -3
  164. package/dist/types/system.d.ts +2 -24
  165. package/package.json +10 -9
  166. package/dist/assets/AgentRosterView-Dq8Xa0WK.js +0 -12
  167. package/dist/assets/AudienceMemoryPanel-BVGdDVTT.js +0 -3
  168. package/dist/assets/ChangesView-BVyLENBb.js +0 -1
  169. package/dist/assets/ChimeraReviewsView-CTuxzgTC.js +0 -1
  170. package/dist/assets/ChronicleDashboard-BRP7D6RZ.js +0 -1
  171. package/dist/assets/CodeEditor-k3z3M0NG.js +0 -2
  172. package/dist/assets/CodeMap-CvHNQZEF.js +0 -1
  173. package/dist/assets/GoalView-D8G8e8YG.js +0 -1
  174. package/dist/assets/KanbanView-BMXGDqGo.js +0 -3
  175. package/dist/assets/MemoryManager-DfcsYPUB.js +0 -1
  176. package/dist/assets/PromptJournalView-D7k8Yh5a.js +0 -1
  177. package/dist/assets/ProviderTestView-DSd6kkWT.js +0 -1
  178. package/dist/assets/QueuePanel-79KiyZWD.js +0 -1
  179. package/dist/assets/RequirementIntakeView-D_Ea20fx.js +0 -1
  180. package/dist/assets/SddHub-CSVfLGpr.js +0 -2
  181. package/dist/assets/SessionList-BYRCs1AK.js +0 -1
  182. package/dist/assets/SetupScreen-BUZeJSZi.js +0 -1
  183. package/dist/assets/TechStackView-CXJilX0M.js +0 -2
  184. package/dist/assets/TerminalPanel-CAXevSAa.js +0 -1
  185. package/dist/assets/activity-B3wutYIE.js +0 -10
  186. package/dist/assets/activity-Be03cc7g.js +0 -10
  187. package/dist/assets/activity-CiYZ3y4e.js +0 -10
  188. package/dist/assets/activity-CmIA2MhR.js +0 -10
  189. package/dist/assets/activity-Cp5GhldB.js +0 -10
  190. package/dist/assets/activity-DFCf7l5d.js +0 -10
  191. package/dist/assets/activity-EbNUY7Ci.js +0 -10
  192. package/dist/assets/chat-6dE2AJNN.js +0 -1
  193. package/dist/assets/chat-B3AJmhGD.js +0 -1
  194. package/dist/assets/chat-BHsbpaVt.js +0 -1
  195. package/dist/assets/chat-BITJe8-v.js +0 -1
  196. package/dist/assets/chat-U-Jjb8_k.js +0 -1
  197. package/dist/assets/chat-_Xp5fDnj.js +0 -1
  198. package/dist/assets/chat-mSbSzPl5.js +0 -1
  199. package/dist/assets/chat-store-C7InoWAO.js +0 -1
  200. package/dist/assets/config-store-BbL0WxLE.js +0 -21
  201. package/dist/assets/i18n-Dv97urcO.js +0 -3
  202. package/dist/assets/index-CON0Nbm4.css +0 -1
  203. package/dist/assets/index-DX6tHUzs.js +0 -177
  204. package/dist/assets/settings-BCvuzOJ6.js +0 -1
  205. package/dist/assets/settings-DMPKd-4K.js +0 -1
  206. package/dist/assets/settings-DxQ2452f.js +0 -1
  207. package/dist/assets/settings-Dz3StaVx.js +0 -1
  208. package/dist/assets/settings-EBW1mlXc.js +0 -1
  209. package/dist/assets/settings-Er2LHp9d.js +0 -1
  210. package/dist/assets/settings-EzznCDaX.js +0 -1
  211. package/dist/assets/stores-DXn5tdr7.js +0 -7
  212. package/dist/assets/toasts-BsmyGP95.js +0 -1
  213. package/dist/assets/toasts-CgXHu8ZB.js +0 -1
  214. package/dist/assets/toasts-DZ6HdKgG.js +0 -1
  215. package/dist/assets/toasts-DizCJjAR.js +0 -1
  216. package/dist/assets/toasts-NC2MT4uN.js +0 -1
  217. package/dist/assets/toasts-bPl097de.js +0 -1
  218. package/dist/assets/toasts-tCVo15mP.js +0 -1
  219. package/dist/assets/ui-store-DxDwFHNK.js +0 -1
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-core-wiHys0m2.js";import{t as r}from"./utils-CKsqCaP8.js";var i=e(t(),1),a=n(),o=i.forwardRef(({className:e,type:t,...n},i)=>(0,a.jsx)(`input`,{type:t,className:r(`flex h-10 min-w-0 w-full rounded-none border border-input bg-background px-3 py-2 text-sm transition-colors hover:border-foreground/30 ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 aria-invalid:border-destructive aria-invalid:focus-visible:ring-destructive disabled:cursor-not-allowed disabled:opacity-50`,e),ref:i,...n}));o.displayName=`Input`;export{o as t};
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-core-wiHys0m2.js";import{t as r}from"./utils-B21Devim.js";var i=e(t(),1),a=n(),o=i.forwardRef(({className:e,type:t,...n},i)=>(0,a.jsx)(`input`,{type:t,className:r(`flex h-10 min-w-0 w-full rounded-none border border-input bg-background px-3 py-2 text-sm transition-colors hover:border-foreground/30 ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 aria-invalid:border-destructive aria-invalid:focus-visible:ring-destructive disabled:cursor-not-allowed disabled:opacity-50`,e),ref:i,...n}));o.displayName=`Input`;export{o as t};
@@ -1 +1 @@
1
- import{vo as e}from"./vendor-V3ydTHqN.js";var t=e()(e=>({snapshot:null,agentText:``,error:null,startedRunId:null,activeHubTab:`project`,prefilledGoal:``,setSnapshot:t=>{if(t.discarded||t.phase===`idle`&&!t.sessionId){e({snapshot:null,agentText:``,error:null});return}e({snapshot:t,error:null,...t.lastAgentText?{agentText:t.lastAgentText}:{}})},setAgentText:t=>e({agentText:t}),setError:t=>e({error:t}),setStartedRunId:t=>e({startedRunId:t}),setActiveHubTab:t=>e({activeHubTab:t}),setPrefilledGoal:t=>e({prefilledGoal:t}),reset:()=>e({snapshot:null,agentText:``,error:null,startedRunId:null,activeHubTab:`project`,prefilledGoal:``})})),n=100,r=50,i=216e5,a=`@session:`;function o(e){if(e===`*`||e===`all`)return{scope:`project`};if(e.startsWith(a)){let t=e.slice(9);return t.length===0?{scope:`agent`}:{scope:`session`,recipientSessionId:t}}return{scope:`agent`}}var s=e()(e=>({messages:[],agents:[],lastCompaction:null,setMessages:t=>e({messages:t.map(e=>{if(e.scope!==void 0)return e;let t=o(e.to);return{...e,...t}}).sort((e,t)=>(Date.parse(t.timestamp)||0)-(Date.parse(e.timestamp)||0)).slice(0,n)}),setAgents:t=>e(()=>{let e=Date.now()-i,n=t.filter(t=>{if(t.online)return!0;let n=Date.parse(t.lastSeenAt);return!Number.isFinite(n)||n>=e});return n.length<=r?{agents:n}:{agents:[...n].sort((e,t)=>{let n=Date.parse(e.lastSeenAt)||0;return(Date.parse(t.lastSeenAt)||0)-n}).slice(0,r)}}),setLastCompaction:t=>e({lastCompaction:t}),removeAgent:t=>e(e=>({agents:e.agents.filter(e=>e.agentId!==t)}))}));function c(e){return e.messages.filter(e=>!e.completed&&(e.readByCount??0)===0).length}export{t as i,c as n,s as r,o as t};
1
+ import{xo as e}from"./vendor-BfBvt432.js";var t=e()(e=>({snapshot:null,agentText:``,error:null,startedRunId:null,activeHubTab:`project`,prefilledGoal:``,setSnapshot:t=>{if(t.discarded||t.phase===`idle`&&!t.sessionId){e({snapshot:null,agentText:``,error:null});return}e({snapshot:t,error:null,...t.lastAgentText?{agentText:t.lastAgentText}:{}})},setAgentText:t=>e({agentText:t}),setError:t=>e({error:t}),setStartedRunId:t=>e({startedRunId:t}),setActiveHubTab:t=>e({activeHubTab:t}),setPrefilledGoal:t=>e({prefilledGoal:t}),reset:()=>e({snapshot:null,agentText:``,error:null,startedRunId:null,activeHubTab:`project`,prefilledGoal:``})})),n=100,r=50,i=216e5,a=`@session:`;function o(e){if(e===`*`||e===`all`)return{scope:`project`};if(e.startsWith(a)){let t=e.slice(9);return t.length===0?{scope:`agent`}:{scope:`session`,recipientSessionId:t}}return{scope:`agent`}}var s=e()(e=>({messages:[],agents:[],lastCompaction:null,setMessages:t=>e({messages:t.map(e=>{if(e.scope!==void 0)return e;let t=o(e.to);return{...e,...t}}).sort((e,t)=>(Date.parse(t.timestamp)||0)-(Date.parse(e.timestamp)||0)).slice(0,n)}),setAgents:t=>e(()=>{let e=Date.now()-i,n=t.filter(t=>{if(t.online)return!0;let n=Date.parse(t.lastSeenAt);return!Number.isFinite(n)||n>=e});return n.length<=r?{agents:n}:{agents:[...n].sort((e,t)=>{let n=Date.parse(e.lastSeenAt)||0;return(Date.parse(t.lastSeenAt)||0)-n}).slice(0,r)}}),setLastCompaction:t=>e({lastCompaction:t}),removeAgent:t=>e(e=>({agents:e.agents.filter(e=>e.agentId!==t)}))}));function c(e){return e.messages.filter(e=>!e.completed&&(e.readByCount??0)===0).length}export{t as i,c as n,s as r,o as t};
@@ -1 +1 @@
1
- import{K as e}from"./config-store-BbL0WxLE.js";import{n as t}from"./utils-CKsqCaP8.js";var n=new Map,r=15e3;function i(e){return e.startsWith(`agent-roster.`)&&e.length>13?e.slice(13):void 0}function a(a,o,s){return new Promise((c,l)=>{let u=e(),d=t(),f=!1,p=[],m=e=>{if(!f){f=!0;for(let e of p)e();p=[],n.delete(a),e()}},h=e=>{let t=e,n=t&&typeof t==`object`?t.payload??t:e;if(!(n&&typeof n==`object`&&`requestId`in n&&typeof n.requestId==`string`&&n.requestId!==d)){if(n&&typeof n==`object`&&`error`in n&&typeof n.error==`string`){m(()=>l(Error(n.error)));return}m(()=>c(n))}};u.connect().then(()=>{if(f)return;let e=n.get(a);e&&(e.cleanup(),e.reject(Error(`Roster request "${a}" superseded by new request`)),n.delete(a)),n.set(a,{reject:e=>m(()=>l(e)),cleanup:()=>{for(let e of p)e();p=[],f||n.delete(a)}});let t=u.on(a,h);p.push(t);let c=i(a);if(c){let e=u.on(c,h);p.push(e)}if(s){if(s.aborted){m(()=>l(new DOMException(`Aborted`,`AbortError`)));return}let e=()=>m(()=>l(new DOMException(`Aborted`,`AbortError`)));s.addEventListener(`abort`,e,{once:!0}),p.push(()=>s.removeEventListener(`abort`,e))}let g=setTimeout(()=>m(()=>l(Error(`Roster request "${a}" timed out`))),r);p.push(()=>clearTimeout(g)),u.send({type:a,payload:{...o,requestId:d}})}).catch(e=>m(()=>l(e)))})}export{a as t};
1
+ import{j as e}from"./config-store-P5_updTQ.js";import{n as t}from"./utils-B21Devim.js";var n=new Map,r=15e3;function i(e){return e.startsWith(`agent-roster.`)&&e.length>13?e.slice(13):void 0}function a(a,o,s){return new Promise((c,l)=>{let u=e(),d=t(),f=!1,p=[],m=e=>{if(!f){f=!0;for(let e of p)e();p=[],n.delete(a),e()}},h=e=>{let t=e,n=t&&typeof t==`object`?t.payload??t:e;if(!(n&&typeof n==`object`&&`requestId`in n&&typeof n.requestId==`string`&&n.requestId!==d)){if(n&&typeof n==`object`&&`error`in n&&typeof n.error==`string`){m(()=>l(Error(n.error)));return}m(()=>c(n))}};u.connect().then(()=>{if(f)return;let e=n.get(a);e&&(e.cleanup(),e.reject(Error(`Roster request "${a}" superseded by new request`)),n.delete(a)),n.set(a,{reject:e=>m(()=>l(e)),cleanup:()=>{for(let e of p)e();p=[],f||n.delete(a)}});let t=u.on(a,h);p.push(t);let c=i(a);if(c){let e=u.on(c,h);p.push(e)}if(s){if(s.aborted){m(()=>l(new DOMException(`Aborted`,`AbortError`)));return}let e=()=>m(()=>l(new DOMException(`Aborted`,`AbortError`)));s.addEventListener(`abort`,e,{once:!0}),p.push(()=>s.removeEventListener(`abort`,e))}let g=setTimeout(()=>m(()=>l(Error(`Roster request "${a}" timed out`))),r);p.push(()=>clearTimeout(g)),u.send({type:a,payload:{...o,requestId:d}})}).catch(e=>m(()=>l(e)))})}export{a as t};
@@ -0,0 +1 @@
1
+ var e=`Ajustes`,t=`Configura cada aspecto de tu espacio de trabajo de agente.`,n={browse:`Explorar`,search:`Buscar un ajuste…`,clearSearch:`Borrar búsqueda`,noResults:`No hay ajustes coincidentes`,workspace:`Espacio de trabajo`,models:`Modelos y conexiones`,behavior:`Comportamiento del agente`,system:`Sistema y seguridad`,label:`Secciones de ajustes`},r={title:`Prueba de proveedor`,description:`Prueba proveedores y suscripciones guardados; revisa cuota, autenticación, latencia y límites de tokens.`,open:`Abrir prueba de proveedor`},i={general:`General`,provider:`Proveedor`,connection:`Conexiones`,agent:`Agente`,execution:`Ejecución`,fallbacks:`Fallbacks`,routing:`Enrutamiento`,fleet:`Flota`,integrations:`Integraciones`,chimera:`Chimera`,context:`Contexto`,logs:`Registros`,security:`Seguridad`,display:`Pantalla`,displayDesc:`Apariencia del workbench, chip de estado, temporizadores de refine e interruptores de inyección de memoria/herramienta — refleja el SettingsPicker del TUI.`,generalDesc:`Apariencia, idioma y preferencias de pantalla — refleja el selector de ajustes de la TUI.`,providerDesc:`Claves de API, proveedores guardados y el catálogo de proveedores.`,connectionDesc:`URL del servidor WebSocket y estado de la conexión.`,agentDesc:`Autonomía, refinamiento de prompts, razonamiento y enrutamiento de modelos.`,executionDesc:`Límites de iteraciones, comportamiento de salida y cortacircuitos de procesos.`,fallbacksDesc:`Cadena de respaldo de modelos, favoritos y perfiles de respaldo con nombre.`,routingDesc:`Matriz de rutas de modelos por fase y por rol.`,fleetDesc:`Concurrencia de subagentes, streaming y predicción del siguiente paso.`,integrationsDesc:`Cliente HQ, servidores MCP y notificaciones de Telegram.`,chimeraDesc:`Configuración del agente de revisión de código posterior a la sesión.`,contextDesc:`Interruptores de funciones, estrategia de contexto, compactador y controles de plugins.`,logsDesc:`Nivel de registro, detalle de auditoría, alcance de acceso al sistema de archivos y flujo de depuración.`,securityDesc:`Control de decisiones Brain, agente sombra y acceso a herramientas.`,fonts:`Fuentes`,fontsDesc:`Fuentes de interfaz, chat, editor y terminal; tamaño, interlineado y ligaduras.`,jev:`Jev`,jevDesc:`TypeSafe / Jev`},a={heading:`Modelo`,loading:`Cargando modelos...`,notFound:`No se encontraron modelos para este proveedor. El catálogo podría estar vacío o cargándose.`,selectProviderFirst:`Selecciona un proveedor primero`,context:`{{count}}k contexto`},o={providerHealth:{heading:`Estado de proveedores`,hint:`Qué pares de proveedor/modelo están saludables, degradados o bloqueados, y por qué.`,refresh:`Actualizar`,empty:`Aún no hay proveedores supervisados.`,summary:`{{blocked}} bloqueados · {{degraded}} degradados · {{healthy}} saludables`,totalFailures:`fallos`,rateLimits:`límites de tasa`,state:{blocked:`Bloqueado`,degraded:`Degradado`,healthy:`Saludable`},blocked:`Bloqueado`,degraded:`Degradado`,consecutive:`fallos consecutivos`,retryNow:`Reintentar ahora`,clear:`Limpiar`,allHealthy:`Todos los proveedores supervisados están saludables.`,statSuccesses:`éxitos`,statFailures:`fallos`,statRateLimits:`límites de tasa`,statConsecutive:`consecutivos`,lastError:`Último error`,recentErrors:`Errores recientes`,autoRecovery:`Recuperación automática a las`,expired:`Expirado`,remainingSecs:`{{secs}} s`,remainingMins:`{{mins}} min`,remainingHours:`{{hours}} h {{mins}} min`,explainHealthy:`Responde con normalidad.`,explain402:`Límite de facturación alcanzado (402). Bloqueado unos 15 minutos hasta restablecer la cuota.`,explain403quota:`Límite de uso alcanzado para este ciclo de facturación. Bloqueado hasta el siguiente restablecimiento (unos 15 min).`,explain403auth:`Error de permisos/autenticación. No reintentable: comprueba la clave API y los permisos de acceso.`,explain429:`Límite de tasa alcanzado (429). Restricción temporal con recuperación automática.`,explain529:`Servidor sobrecargado (529). El proveedor está bajo una carga intensa.`,explain5xx:`Error del servidor ({{status}}). Problema temporal del backend.`,explainNetwork:`Red inaccesible. Comprueba tu conexión o la página de estado del proveedor.`,explainTimeout:`La solicitud agotó el tiempo (408). El proveedor tardó demasiado en responder.`,explainStreamHang:`El flujo se detuvo (599). El proveedor dejó de responder a mitad del mensaje.`,explainQuota:`Cuota agotada. Bloqueado hasta la ventana de restablecimiento.`,explainUnknown:`Tipo de fallo: {{kind}} / estado: {{status}}.`},wsUrlLabel:`URL del servidor WebSocket`,wsUrlPlaceholder:`ws://localhost:3456`,wsUrlHint:`URL del servidor WebSocket del agente. El servidor se ejecuta junto con el CLI.`,startingHeading:`Iniciar el servidor WebSocket`,startingBody:`Para desarrollo, ejecuta ./dev.ps1 desde la raíz del repo (opcionalmente establece WS_HOST/WS_PORT antes). De lo contrario, lanza la WebUI con la CLI: wstack --webui.`,healthHeading:`Estado de conexiones`,healthHint:`Informe en vivo de propiedad, almacenamiento, cola, observador y latencia de los servicios.`,healthRefresh:`Actualizar`,healthLoading:`Comprobando servicios…`,healthUnknown:`Estado desconocido`,healthDisconnected:`El WebSocket de WebUI está desconectado.`,healthRestartRequired:`Reinicia el backend una vez para activar el informe de conexiones.`,healthOptional:`Bajo demanda`,endpointInvalidBadge:`ruta de socket demasiado larga`,endpointInvalidRemedy:`La ruta del socket IPC supera el límite de longitud de esta plataforma, por lo que el daemon compartido no puede iniciarse. Las consultas recurren a un modo local de proceso más lento. Solución: establezca un TMPDIR más corto (p. ej. export TMPDIR=/tmp) y reinicie WrongStack.`,healthCounts:`{{healthy}} sanos · {{attention}} atención · {{sleeping}} inactivos`,healthOverall:{healthy:`Servicios requeridos sanos`,degraded:`Servicio requerido degradado`,error:`Servicio requerido no disponible`},healthStatus:{healthy:`Sano`,degraded:`Degradado`,offline:`Inactivo`,unavailable:`No disponible`,error:`Error`},services:{kanban:{label:`Kanban IPC`},mailbox:{label:`Mailbox IPC`}},serviceActionRestart:`Reiniciar {{label}}`,webuiTransport:`Transporte de WebUI`,serviceAutoRestarting:`Reiniciando automáticamente…`},s={removeProfileConfirm:`¿Eliminar el perfil «{{alias}}» y todas sus claves?`,removeProfileBody:`Se eliminarán las credenciales guardadas y las referencias a esta cuenta en las rutas de modelos.`,deleteKeyConfirm:`¿Eliminar la clave «{{label}}» de «{{alias}}»?`,addProfile:`Añadir cuenta / perfil de autenticación`,profileAlias:`Alias del perfil de autenticación`,profileHint:`Cada cuenta tiene su propio alias y credenciales. Los destinos de respaldo son alias/modelo.`,profileExists:`El perfil «{{alias}}» ya existe. Elige otro alias.`,operationTimeout:`El servidor no responde. Comprueba la conexión e inténtalo de nuevo.`,savedProviderCount_one:`{{count}} proveedor`,savedProviderCount_other:`{{count}} proveedores`,keyCount_one:`{{count}} clave configurada`,keyCount_other:`{{count}} claves configuradas`,activeKeyCount_one:`{{count}} clave activa`,activeKeyCount_other:`{{count}} claves activas`,subscriptionHeading:`Inicio de sesión con suscripción`,apiKeysHeading:`Proveedores de clave de API`,apiKeysBody:`Elige un proveedor del catálogo y añade una clave de API, o gestiona los proveedores guardados.`,tabCatalog:`Catálogo`,tabSaved:`Guardados ({{count}})`,searchPlaceholder:`Buscar entre {{count}} proveedores (nombre / id / familia)…`,loadingCatalog:`Cargando catálogo...`,noMatch:`Ningún proveedor coincide con «{{query}}».`,configured:`Configurado`,reachable:`Alcanzable`,envVar:`ENV: {{var}}`,modelCount_one:`{{count}} modelo`,modelCount_other:`{{count}} modelos`,keyPlaceholder:`Clave de API de {{name}}`,orEnv:`O define {{env}} en el entorno.`,addApiKey:`Añadir clave de API`,manageKeys:`Gestiona tus claves de API y configuraciones de proveedor`,addProvider:`Añadir proveedor`,addCustomHeading:`Añadir proveedor personalizado`,localServers:`Servidores locales — haz clic para autocompletar:`,providerIdPlaceholder:`ID del proveedor (p.ej. my-llm-server)`,apiKeyOptionalPlaceholder:`Clave de API (opcional)`,noSaved:`Aún no hay proveedores guardados`,noSavedHint:`Añade un proveedor para empezar`,apiKeysLabel:`Claves de API`,addKey:`Añadir clave`,noKeys:`Ninguna clave configurada`,active:`Activa`,setActive:`Definir como activa`,keyLabelPlaceholder:`Etiqueta de la clave (p.ej. default, production)`,apiKeyPlaceholder:`Clave de API`,saveKey:`Guardar clave`,savedToast:`Clave guardada para {{name}}`},c={addCustom:`Añadir modelo personalizado`,addCustomTitle:`Añadir modelo personalizado`,addFromCatalog:`Añadir desde el catálogo`,catalogSearchPlaceholder:`Buscar en el catálogo de models.dev…`,catalogSearchTitle:`Buscar en el catálogo de models.dev`,colActions:`Acciones`,colCaps:`Capacidades`,colContext:`Contexto`,colCost:`Coste`,colModalities:`Modalidades`,colModel:`Modelo`,colOutput:`Salida`,colSource:`Origen`,editModel:`Editar modelo`,emptyState:`Aún no hay modelos: añade desde el catálogo o crea un modelo personalizado.`,fieldContext:`Ventana de contexto`,fieldCostInput:`Coste de entrada`,fieldCostOutput:`Coste de salida`,fieldDescription:`Descripción`,fieldFamily:`Familia`,fieldInputLimit:`Límite de entrada`,fieldInputModalities:`Modalidades de entrada`,fieldLastUpdated:`Última actualización`,fieldName:`Nombre`,fieldOutput:`Salida máxima`,fieldOutputModalities:`Modalidades de salida`,fieldReleaseDate:`Fecha de publicación`,modelAdded:`{{model}} añadido`,modelRemoved:`{{model}} eliminado`,modelSaved:`{{model}} guardado`,noResults:`No se encontraron modelos`,removeModel:`Eliminar modelo`,sectionCapabilities:`Indicadores de capacidades`,sectionDates:`Fechas`,sectionIdentity:`Identidad`,sectionLimits:`Límites`,sectionModalities:`Modalidades`,sectionPricing:`Precios (por 1M tokens, USD)`,tabForm:`Formulario`,tabRawJson:`JSON sin procesar`,typeToSearch:`Escribe para buscar…`,useModel:`Usar {{model}}`,usingModel:`Usando {{model}}`,filterPlaceholder:`Filtrar modelos…`},l={status:{connected:`Conectado`,connecting:`Conectando`,sleeping:`Inactivo`,discovering:`Descubriendo`,error:`Error`,stopped:`Detenido`,unknown:`Desconocido`},disabled:`Los servidores MCP están deshabilitados.`,wakeTitle:`Despertar servidor`,sleepTitle:`Poner en reposo`,discoverTitle:`Descubrir herramientas`,editTitle:`Editar`,removeTitle:`Eliminar`,statusLabel:`Estado:`,enabledLabel:`Activado:`,yes:`Sí`,no:`No`,descriptionLabel:`Descripción:`,pidLabel:`PID:`,errorLabel:`Error:`,toolsLabel:`Herramientas ({{count}}):`,noTools:`Aún no se han descubierto herramientas`,serverNameRequired:`El nombre del servidor es obligatorio`,dialogTitleEdit:`Editar servidor MCP`,dialogTitleAdd:`Añadir servidor MCP`,dialogTitleAddCustom:`Añadir servidor MCP personalizado`,fieldName:`Nombre`,fieldNamePlaceholder:`p.ej. github, filesystem`,fieldTransport:`Transporte`,fieldUrl:`URL`,fieldCommand:`Comando`,fieldCommandPlaceholder:`p.ej. npx`,fieldArgs:`Args`,fieldArgsHint:`(separados por espacios)`,fieldArgsPlaceholder:`p.ej. -y @modelcontextprotocol/server-github`,fieldEnv:`Variables de entorno`,fieldEnvHint:`(KEY=valor, una por línea)`,fieldDescription:`Descripción`,fieldDescriptionPlaceholder:`Servidor MCP de GitHub para acceso al repositorio`,enableServer:`Activar servidor`,lazyConnect:`Conexión diferida`,lazyConnectHint:`(no iniciar hasta la primera llamada; entra en reposo al estar inactivo)`,saveChanges:`Guardar cambios`,addServer:`Añadir servidor`,requires:`Requiere: {{vars}}`,added:`Añadido`,heading:`Servidores MCP`,summary:`{{connected}} conectados · {{sleeping}} inactivos · {{total}} en total`,addCustom:`Personalizado`,tabRecommended:`Recomendados`,tabServers:`Servidores`,tabAddCustom:`Personalizado`,recommendedBody:`Añadido con un clic para servidores MCP populares. Haz clic en Añadir para preconfigurar y luego confirma. Los servidores que requieren credenciales necesitarán sus variables de entorno antes de usarse.`,loadingServers:`Cargando servidores...`,noServers:`No hay servidores MCP configurados`,noServersHint:`Cambia a la pestaña Recomendados para añadir servidores populares, o Personalizado para los tuyos.`,addCustomBody:`Configura un servidor MCP personalizado con transporte stdio, SSE o HTTP.`,addCustomBodyHint:`Para servidores populares usa mejor la pestaña Recomendados — todo está preconfigurado.`,removeConfirmTitle:`¿Eliminar el servidor «{{name}}»?`,removeConfirmBody:`Esto elimina el servidor MCP de tu configuración.`,toastAdded:`Servidor «{{name}}» añadido`,toastRemoved:`Servidor «{{name}}» eliminado`,toastDiscovered:`Descubiertas {{count}} herramientas de «{{name}}»`,toastSleeping:`El servidor «{{name}}» está inactivo`,toastConnected:`Servidor «{{name}}» conectado`,toastReconnected:`Servidor «{{name}}» reconectado`,toastDisconnected:`Servidor «{{name}}» desconectado: {{reason}}`,toastError:`Servidor «{{name}}» error: {{error}}`,authRequired:`Inicio de sesión requerido`,authorized:`Autorizado`,authorizeTitle:`Autorizar con OAuth`,authSignOutTitle:`Eliminar credenciales de OAuth`,authSignOutBody:`¿Eliminar las credenciales de OAuth guardadas de «{{name}}»? Tendrás que autorizar de nuevo.`,authPromptTitle:`Termina de iniciar sesión en «{{name}}»`,authPromptBody:`Abre la página de autorización y aprueba el acceso. Este panel se actualiza cuando el proveedor redirige de vuelta.`,authPromptOpen:`Abrir página de autorización`,toastAuthorized:`«{{name}}» autorizado`,toastAuthFailed:`«{{name}}» necesita autorización{{suffix}}`},u={title:`¿Borrar la allowlist guardada?`,body_one:`Esto eliminará el modelo fijado para {{provider}}. El selector de modelos volverá al catálogo models.dev.`,body_other:`Esto eliminará los {{count}} modelos fijados para {{provider}}. El selector de modelos volverá al catálogo models.dev.`,undoHint:`Puedes deshacerlo durante 8 segundos tras confirmar.`,keepTitle:`Conservar allowlist (Esc)`,clearTitle:`Borrar allowlist (Enter)`,clear:`Borrar allowlist`},d={termsWarning:`Inicia sesión con una suscripción en lugar de una clave API. Usar una suscripción fuera de su cliente oficial puede violar los Términos del proveedor — tu cuenta podría ser limitada o baneada. Una clave API es la vía sancionada para uso programático.`,signIn:`Iniciar sesión`,waitingBrowser:`Esperando tu inicio de sesión…`,openSignIn:`Abrir página de inicio de sesión`,pasteLoopbackBusy:`Puerto loopback ocupado — pega la URL de redirección`,pasteCantReach:`¿El navegador no llega a este servidor? Pega la URL de redirección`,submit:`Enviar`,enterCode:`Introduce este código en la página de verificación:`,openVerification:`Abrir página de verificación`,waitingCode:`Esperando autorización…`,exchanging:`Intercambiando tokens…`,fetchingModels:`Obteniendo modelos…`,signedIn:`Sesión iniciada.`,signedInToast:`Sesión iniciada — {{provider}}`,signInFailed:`Inicio de sesión fallido`,accountCount_one:`{{count}} cuenta guardada`,accountCount_other:`{{count}} cuentas guardadas`,active:`Activo`,inactive:`Inactivo`,retry:`Reintentar`,retryLogin:`Re-autenticar esta cuenta`,newAccount:`Nueva cuenta`,aliasPlaceholder:`ej. {{default}}`},f={showThinkingLabel:`Mostrar registros de razonamiento`,showThinkingHint:`Muestra los bloques de razonamiento completados en el historial del chat.`,groupToolCallsLabel:`Agrupar llamadas de herramientas`,groupToolCallsHint:`Agrupa las llamadas consecutivas de herramientas en un solo indicador.`,autoCollapseInputLabel:`Plegar el compositor bajo el historial`,autoCollapseInputHint:`Al cargar una sesión con mensajes, plegar el compositor bajo el historial. Desactivado por defecto — el compositor permanece expandido hasta que lo pliegues manualmente.`,themeHeading:`Tema`,themeLight:`Claro`,themeDark:`Oscuro`,themeSystem:`Sistema`,themeSystemHint:`Sistema sigue tu preferencia de claro/oscuro del sistema operativo.`,preferencesHeading:`Preferencias`,compactDensity:`Densidad compacta`,compactDensityHint:`Espaciado más reducido en todo el chat.`,soundOnComplete:`Sonido al completar`,soundOnCompleteHint:`Reproduce un tono suave cuando termina una ejecución.`,titleAnimation:`Animación del título`,titleAnimationHint:`Muestra un título animado en la terminal del CLI.`,thinkingWordLabel:`Palabra de razonamiento (CLI/TUI)`,thinkingWordHint:`Palabra mostrada en el chip de estado de la TUI. Una sola palabra corta.`,statuslineModeLabel:`Modo de línea de estado (CLI/TUI)`,statuslineModeHint:`Densidad de la línea de estado de la TUI.`,statuslineModeDetailed:`Detallado`,statuslineModeMinimum:`Mínimo`,statuslineModeNoColor:`Sin color`,animationStyleLabel:`Estilo de animación (CLI/TUI)`,animationStyleHint:`Animación del chip de estado de trabajo de la TUI.`,animationStyleRainbow:`Arcoíris`,animationStyleWave:`Onda`,animationStylePulse:`Pulso`,animationStyleDots:`Puntos`,animationStyleBreathe:`Respiración`,animationStyleStatic:`Estático`,animationStyleCycle:`Ciclo`,languageHeading:`Idioma`,languageLabel:`Idioma de la interfaz`,languageHint:`Cambia solo el texto de la interfaz. Los prompts, las habilidades y la salida del modelo no se ven afectados.`,paletteHeading:`Paleta de colores`,paletteSwitcherTitle:`Paleta de colores`,paletteHint:`Elige el color principal (y sus derivados). Las superficies neutras permanecen igual.`,paletteSignal:`Señal`,paletteEmeraldGold:`Esmeralda y dorado`,paletteBlueNavy:`Azul marino`,palettePurplePink:`Violeta y rosa`,paletteCyanTeal:`Cian y verde azulado`,paletteRoseCopper:`Rosa y cobre`,paletteIndigoAmber:`Índigo y ámbar`,paletteSageSand:`Salvia y arena`,paletteSlateViolet:`Pizarra y violeta`,paletteCoralMint:`Coral y menta`,paletteArcticEmber:`Ártico y brasa`,paletteMossRust:`Musgo y óxido`},p={autonomyHeading:`Autonomía y Comportamiento`,autonomyModeLabel:`Modo de autonomía`,autonomyModeHint:`Qué tan independientemente procede el agente entre turnos.`,autonomyModeOff:`Desactivado — control manual total`,autonomyModeSuggest:`Sugerir — sugiere los siguientes pasos`,autonomyModeAuto:`Auto — breve retardo de confirmación`,autonomyModeEternal:`Eterno — autónomo hasta completar el objetivo`,autonomyModeEternalParallel:`Eterno Paralelo — flota multi-agente`,autoProceedDelayLabel:`Retardo de auto-progreso`,autoProceedDelayHint:`Milisegundos antes de que el agente auto-progrese en modo Auto. 0 = inmediato.`,yoloLabel:`Modo YOLO`,yoloHint:`Ejecutar llamadas de herramientas sin preguntar, salvo los tipos de dano listados abajo.`,yoloConfirmHeading:`Preguntar igualmente por`,yoloConfirmIntro:`YOLO ejecuta todo lo demas sin supervision. Estos son los tipos de dano ante los que se detiene y te pregunta.`,yoloConfirmLockedNote:`Estos dos siempre preguntan. Escriben los archivos que deciden si se te pregunta, asi que desactivarlos dejaria al agente apagar su propio sistema de aprobacion.`,yoloKindLocked:`siempre pregunta`,yoloKind:{"disk-wipe":{label:`Borrar un disco`,hint:`mkfs, dd a un dispositivo en bruto, format C:, bomba fork`},"system-halt":{label:`Apagar o reiniciar`,hint:`shutdown, reboot`},"delete-outside":{label:`Borrar fuera del proyecto`,hint:`borrado recursivo forzado que sale del proyecto o alcanza una raiz del sistema o del home`},"git-history":{label:`Reescribir el historial de git`,hint:`reset --hard, clean -f, push --force, filter-branch`},publish:{label:`Publicar o desplegar`,hint:`npm publish, docker push, kubectl delete namespace`},"download-and-run":{label:`Ejecutar codigo descargado`,hint:`curl | sh y cargas en linea que descargan y ejecutan`},"bulk-delete":{label:`Borrar en masa`,hint:`find -exec rm, rmSync en linea sobre muchas rutas`},"agent-state":{label:`Escribir el estado propio de WrongStack`,hint:`config.json, trust.json, auth.json`},"credential-bind":{label:`Vincular una clave API a un endpoint`,hint:`adjuntar una clave conocida a una URL de proveedor`}},refineHeading:`Refinamiento de Prompt`,enableRefineLabel:`Activar refinamiento`,enableRefineHint:`Reescribe los prompts antes de enviar — instrucciones más claras, mejores resultados.`,refineDelayLabel:`Retardo de refinamiento`,refineDelayHint:`Cuenta atrás antes del envío automático del prompt refinado.`,refineLanguageLabel:`Idioma de refinamiento`,refineLanguageHint:`Conserva tu idioma o traduce al inglés para el modelo.`,refineLanguageOriginal:`Original — conserva tu idioma`,refineLanguageEnglish:`Inglés — traducir al inglés`,refinerProviderLabel:`Proveedor del refinador`,refinerProviderHint:`Id del proveedor para el refinamiento de objetivos. Vacío = usar el proveedor de la sesión.`,refinerProviderDefault:`Proveedor de la sesión`,refinerModelLabel:`Modelo del refinador`,refinerModelHint:`Id del modelo para el refinamiento de objetivos. Vacío = usar el modelo de la sesión.`,refinerModelDefault:`Modelo de la sesión`,refinerProfileLabel:`Perfil de fallback del refinador`,refinerProfileHint:`Perfil de fallback con nombre para el refinamiento de objetivos. Anula el proveedor y el modelo.`,refinerProfileDefault:`Ninguno — usar proveedor y modelo o los valores predeterminados de la sesión`,reasoningHeading:`Razonamiento y Caché`,reasoningModeLabel:`Modo de razonamiento`,reasoningModeHint:`Controla cómo el modelo usa el pensamiento extendido. Auto = predeterminado del proveedor.`,reasoningModeAuto:`Auto — predeterminado del proveedor`,reasoningModeOn:`Activado — forzar pensamiento`,reasoningModeOff:`Desactivado — desactivar pensamiento`,reasoningEffortLabel:`Esfuerzo de razonamiento`,reasoningEffortAuto:`Auto (general)`,reasoningEffortAutoHint:`Ajuste general: {{value}}`,reasoningEffortHint:`Cuánto compute gasta el modelo pensando. Solo se envía cuando el modelo lo soporta.`,reasoningEffortNone:`Ninguno`,reasoningEffortMinimal:`Mínimo`,reasoningEffortLow:`Bajo`,reasoningEffortMedium:`Medio`,reasoningEffortHigh:`Alto`,reasoningEffortXhigh:`Muy alto`,reasoningEffortMax:`Máx`,preserveThinkingLabel:`Preservar pensamiento`,preserveThinkingHint:`Conserva los bloques de razonamiento entre turnos para la continuidad del contexto.`,cacheTtlLabel:`TTL de caché`,cacheTtlHint:`Tiempo de vida de la caché de prompts. 1h cuesta más al escribir pero ahorra en relecturas (Anthropic).`,cacheTtlDefault:`Predeterminado — predeterminado del proveedor`,cacheTtl5m:`5 minutos`,cacheTtl1h:`1 hora`,capsHint:`Usa wstack models caps para comprobar qué soporta el modelo actual. Los ajustes no soportados se omiten silenciosamente por petición.`,routingHeading:`Enrutado de modelo`,routingRouteKey:`Clave de ruta de modelo`,routingPhasesGroup:`Fases`,routingRolesGroup:`Roles {{label}}`,routingCustomGroup:`Rutas personalizadas existentes`,routingTargetAria:`Destino de la ruta de modelo`,routingTargetEmpty:`— Borrar ruta —`,routingTargetProfilesGroup:`Perfiles de fallback`,routingTargetModelsGroup:`Modelos (proveedor/modelo)`,routingSet:`Establecer`,routingReasoningModeAria:`Modo razonamiento nueva ruta`,routingReasoningEffortAria:`Esfuerzo razonamiento nueva ruta`,routingReasoningPreserveAria:`Preservación razonamiento nueva ruta`,routingReasoningModeFor:`Modo razonamiento para {{key}}`,routingReasoningEffortFor:`Esfuerzo razonamiento para {{key}}`,routingReasoningPreserveFor:`Preservación razonamiento para {{key}}`,noRoutes:`Aún no hay rutas de modelo.`,leaderModel:`modelo líder`,autonomyDelayMsLabel:`Retraso de continuación automática`,autonomyDelayMsHint:`Milisegundos antes de que el agente continúe automáticamente en modo Auto. 0 = inmediato.`,refineCountdownLabel:`Cuenta atrás de refinamiento`,refineCountdownHint:`Período de gracia antes del envío automático del prompt refinado (milisegundos).`,reasoningEffortModelSet:`niveles del modelo activo`,reasoningEffortUnsupported:`No ofrecido por este modelo (admitidos: {{levels}}): la opción se omitirá.`},m={heading:`Ejecución`,maxIterationsLabel:`Iteraciones máx por run`,unlimitedLabel:`Sin límite`,maxIterationsHint:`Tope estricto de turnos LLM por agent.run().`,autoProceedMaxIterationsLabel:`Iteraciones máx de auto-progreso`,autoProceedMaxIterationsHint:`Detiene el auto-progreso tras N iteraciones. 0 = ilimitado.`,confirmExitLabel:`Confirmar antes de salir`,confirmExitHint:`El primer Ctrl+C aborta el trabajo, el segundo confirma la salida.`,chimeLabel:`Timbre al completar`,chimeHint:`Campana de terminal cuando termina un run de agente.`,breakerLabel:`Cortacircuitos de procesos`,breakerHint:`Bloquea bash/exec tras fallos repetidos; al dispararse arma la cuenta atrás de kill/reset.`,breakerTimeoutLabel:`Tiempo de kill/reset del cortacircuitos`,breakerTimeoutHint:`Retardo antes del kill/reset automático al dispararse. 0 = recuperación manual.`,availabilityHeading:`Calendario de disponibilidad de proveedor/modelo`,availabilityHint:`Evita que ejecuciones autónomas y nocturnas usen ciertos proveedores o modelos en ventanas recurrentes.`},h={heading:`Modelos de respaldo / Round-robin`,body:`Cuando el modelo activo es rate-limitado (429/529), da error 5xx o se cuelga — tras sus propios retries — el agente rota al siguiente modelo de esta cadena. También usado por defecto para los sub-agentes workers de SDD.`,autoFallbackLabel:`Fallback automático`,autoFallbackHint:`Cuando la cadena de arriba está vacía, deriva una automáticamente de tus proveedores con clave.`,favoritesOnlyLabel:`Solo favoritos`,favoritesOnlyHint:`Cuando el fallback automático deriva una cadena, restríngela a tus modelos favoritos.`,profilesHeading:`Perfiles de respaldo / Round-robin`,addProfile:`Añadir`,noProfiles:`Aún no hay perfiles de fallback con nombre.`,createDefault:`Crear predeterminado desde el modelo activo`,useChain:`Usar cadena`,setLeader:`Establecer líder`,profileEmpty:`El perfil está vacío.`,favoritesHeading:`Modelos favoritos`,favoritesEmpty:`Los favoritos se muestran primero y pueden restringir el fallback automático.`,addModelToProfile:`Añadir modelo al perfil…`,addFavoriteModel:`Añadir modelo favorito…`,inactive:`inactivo`},g={heading:`Flota y Streaming`,fleetChatVerbosityLabel:`Transmitir eventos de flota`,fleetChatVerbosityHint:`Muestra la actividad live de sub-agentes en el panel de flota.`,maxConcurrentLabel:`Sub-agentes concurrentes máx`,maxConcurrentHint:`Número máximo de sub-agentes que pueden correr simultáneamente.`,nextPredictionLabel:`Predicción del siguiente paso`,nextPredictionHint:`Tras completar un turno, predice los probables pasos siguientes.`,nextStepsToolLabel:`Herramienta nextsteps`,nextStepsToolHint:`Permite al agente registrar sus sugerencias con una llamada de herramienta en lugar de escribir el bloque a mano. Se aplica en la próxima sesión.`},_={hqHeading:`Cliente HQ`,hqPublishingLabel:`Publicación HQ`,hqPublishingHint:`Publica esta sesión WebUI/cliente en WrongStack HQ. Los clientes de la misma máquina pueden auto-descubrir la auth HQ local; los remotos usan la URL/token de abajo.`,hqUrlLabel:`URL HQ`,hqUrlHint:`Déjalo vacío para auto-descubrimiento en la misma máquina.`,hqTokenLabel:`Token de cliente HQ`,hqRawContentLabel:`Contenido HQ sin procesar`,hqRawContentHint:`Enviar vistas previas de contenido sin procesar a HQ en lugar de vistas previas redactadas.`,wrongProxyHeading:`WrongProxy / WrongTrace`,wrongProxyEnabledLabel:`Redirigir las URL base a través del proxy local`,wrongProxyEnabledHint:`Cuando está activado, la URL base de cada proveedor se reescribe a través del proxy configurado (por defecto http://localhost:3444/proxy/<host><path>). openai-codex queda excluido: habla directamente con el backend de ChatGPT mediante un token OAuth.`,wrongProxyUrlLabel:`URL del proxy`,wrongProxyUrlHint:`Dónde escucha el daemon proxy local. El sistema sondea periódicamente <url>/api/health; un daemon inalcanzable desactiva la reescritura sin reintentar en cada pulsación.`,wrongProxyChangesApply:`Los cambios se aplican de inmediato a las solicitudes siguientes, sin necesidad de reiniciar.`,telegramHeading:`Notificaciones de Telegram`,telegramSessionEndLabel:`Fin de sesión`,telegramSessionEndHint:`Envía un resumen cuando termina una sesión.`,telegramDelegateLabel:`Delegado terminado`,telegramDelegateHint:`Envía una nota humanizada cuando un sub-agente completa.`,telegramLongToolLabel:`Herramientas largas`,telegramLongToolHint:`Notifica cuando una herramienta excede {{ms}}ms. 0 para desactivar.`,telegramChangesApply:`Los cambios se aplican inmediatamente.`,telegramNotConfigured:`Telegram no está configurado. Ejecuta /telegram-setup en la CLI para conectar un bot primero.`,heading:`Integrations`,disabledHint:`Habilite la función en la pestaña Contexto para usar esta sección.`},v={chimeraDedicatedHeading:`Chimera — Revisión de Código Post-sesión`,chimeraDedicatedHint:`Revisión automatizada de calidad de código que se ejecuta tras cada sesión del agente.`,chimeraSectionEnabled:`Revisión post-sesión (Chimera)`,chimeraSectionEnabledHint:`Ejecuta un agente de revisión tras cada iteración.`,chimeraProviderLabel:`Proveedor Chimera`,chimeraProviderHint:`Proveedor para el agente de revisión. Selecciona uno de tus proveedores configurados.`,chimeraProviderSessionDefault:`Predeterminado de la sesión`,chimeraModelLabel:`Modelo`,chimeraModelSessionDefault:`Predeterminado de la sesión`,chimeraModelHint:`Modelo para el agente de revisión. Requiere un proveedor primero.`,chimeraMaxFilesLabel:`Máx. archivos por revisión`,chimeraMaxFilesHint:`Número máximo de archivos modificados incluidos en una sola revisión.`,chimeraAutoFixLabel:`Modo auto-corrección`,chimeraAutoFixHint:`Si el agente de revisión debe aplicar correcciones automáticamente.`,chimeraAutoFixOff:`No — solo revisar`,chimeraAutoFixAsk:`Preguntar — confirmar antes de aplicar`,chimeraAutoFixAuto:`Auto — aplicar sin confirmación`,autoReviewCascadeOnLabel:`Cascada en`,autoReviewCascadeOnHint:`Cuando una revisión encuentra problemas con esta severidad o superior, lanza agentes de seguimiento.`,autoReviewCascadeOnOff:`Desactivado`,autoReviewCascadeOnHigh:`Alta o superior`,autoReviewCascadeOnCritical:`Solo crítica`,chimeraPickModel:`Elegir modelo para Chimera`,chimeraPickModelHint:`Selecciona un proveedor y modelo para la revisión post-sesión.`,autoReviewSectionEnabled:`Revisión entre-sesión (Auto-Review)`,autoReviewSectionEnabledHint:`Ejecuta un revisor entre sesiones en cada cambio de archivo.`,autoReviewFallbackProfileLabel:`Perfil de respaldo / Round-robin`,autoReviewFallbackProfileHint:`Perfil de modelos para auto-revisión; proporciona el conjunto de respaldo y los modelos para round-robin o selección aleatoria.`,autoReviewFallbackProfileNone:`Ninguno — usar proveedor+modelo o valores por defecto`,autoReviewModelSelectionLabel:`Selección del perfil`,autoReviewModelSelectionHint:`Elige el siguiente modelo del perfil en orden o un modelo inicial aleatorio para cada revisión.`,autoReviewModelSelectionRoundRobin:`Round-robin — seguir el orden del perfil`,autoReviewModelSelectionRandom:`Aleatorio — elegir del perfil`,autoReviewFallbackModelsLabel:`Modelos de respaldo / Round-robin`,autoReviewFallbackModelsEmpty:`Sin modelos de respaldo / round-robin configurados`,autoReviewFallbackModelsHint:`Modelos del perfil o cadena global; forman el conjunto de selección y la cadena de reintentos.`,autoReviewModelLabel:`Modelo`,autoReviewModelHint:`Modelo para el agente de auto-revisión. Requiere un proveedor primero.`,autoReviewDebounceLabel:`Intervalo de debounce (ms)`,autoReviewDebounceHint:`Intervalo mínimo entre activaciones de revisión tras un cambio.`,autoReviewMaxFilesLabel:`Máx. archivos por lote`,autoReviewMaxFilesHint:`Archivos por llamada de auto-revisión.`,autoReviewMaxConcurrentLabel:`Máx. revisiones concurrentes`,autoReviewMaxConcurrentHint:`Límite de subagentes de revisión en paralelo.`,autoReviewCascadeLabel:`Cascada en`,autoReviewCascadeHint:`Umbral del agente de seguimiento — activa security-scanner y bug-hunter por encima de esta gravedad.`,autoReviewCascadeOff:`No — sin cascada`,autoReviewCascadeCritical:`Crítico — solo hallazgos críticos`,autoReviewCascadeHigh:`Alto — hallazgos críticos o altos`,autoReviewPickModel:`Elegir modelo de Auto-Review`,autoReviewPickModelHint:`Selecciona un proveedor y modelo, o un perfil de respaldo, para la auto-revisión.`,pluginsPerPluginHint:`Activa o desactiva plugins individuales. Los cambios surten efecto en la próxima sesión.`},y={flagsHeading:`Indicadores de Funciones`,mcpLabel:`Servidores MCP`,mcpHint:`Habilita las integraciones Model Context Protocol.`,pluginsLabel:`Plugins`,pluginsHint:`Carga y ejecuta los plugins instalados por el usuario.`,memoryLabel:`Memoria`,memoryHint:`Persiste y recupera hechos entre sesiones.`,skillsLabel:`Habilidades`,skillsHint:`Carga prompts de habilidades específicas del dominio.`,modelsRegistryLabel:`Registro de modelos`,modelsRegistryHint:`Usa el catálogo models.dev para el descubrimiento de proveedores.`,indexOnStartLabel:`Indexar al inicio`,indexOnStartHint:`Construye el índice de símbolos del código al iniciar la sesión.`,pluginsPerPluginHeading:`🔌 Controles por Plugin`,pluginSearch:`Buscar plugins`,pluginEnabledOnly:`Solo activos`,pluginNoMatches:`Ningún plugin coincide con este filtro.`,pluginsPerPluginHint:`Activa o desactiva plugins individualmente. Los cambios se aplican en la próxima sesión.`,pluginChimera:`Chimera — revisión de código post-sesión`,pluginSkills:`Skills — biblioteca y creación de habilidades`,pluginPrompts:`Prompts — biblioteca y generación de prompts`,pluginCostTracker:`Cost Tracker — seguimiento de tokens y costos`,pluginTelegram:`Telegram — bot de notificaciones`,pluginErrorLens:`Error Lens — diagnóstico de fallos`,pluginSecretScanner:`Secret Scanner — detección de credenciales`,pluginLintGate:`Lint Gate — lint antes de iterar`,pluginDiffSummary:`Diff Summary — diffs compactos`,pluginDepGuard:`Dep Guard — reglas de dependencias`,pluginTypeGate:`Type Gate — verificación de tipos antes de iterar`,pluginInjectionShield:`Injection Shield — inyección de prompts`,pluginPromptFirewall:`Prompt Firewall — filtrado de entrada`,pluginTokenBudget:`Token Budget — límites de tokens`,pluginLoopBreaker:`Loop Breaker — detección de bucles`,heading:`Contexto y Depuración`,autoCompactLabel:`Auto-compactar contexto`,autoCompactHint:`Recorta automáticamente la ventana de contexto cerca de los límites.`,compactorStrategyLabel:`Estrategia de compactación`,compactorStrategyHint:`Cómo se compacta el contexto cuando crece demasiado.`,compactorStrategyHybrid:`Híbrida — reglas rápidas (predeterminado)`,compactorStrategyIntelligent:`Inteligente — resumen LLM`,compactorStrategySelective:`Selectiva — selección guiada por LLM`,contextModeLabel:`Modo de contexto`,contextModeHint:`Política de ventana de contexto — equilibrado es el predeterminado.`,contextModeBalanced:`Equilibrado — uso normal del contexto`,contextModeFrugal:`Frugal — uso conservador de tokens`,contextModeDeep:`Profundo — contexto mayor para tareas complejas`,tokenSavingLabel:`Modo de ahorro de tokens`,tokenSavingHint:`Controla los esquemas directos y el prompt del sistema de la próxima sesión.`,tokenSavingAuto:`Auto — adaptar el prompt a la ventana del modelo`,tokenSavingOff:`Desactivado — sin ahorro`,tokenSavingMinimal:`Mínimo — optimización básica`,tokenSavingLight:`Ligero — reducción moderada`,tokenSavingMedium:`Medio — ahorros significativos`,tokenSavingAggressive:`Agresivo — superficie directa y prompt mínimos`},b={logLevelLabel:`Nivel de log`,logLevelHint:`Severidad mínima para el logging del lado servidor.`,logLevelDebug:`Debug — todo`,logLevelInfo:`Info — flujo normal`,logLevelWarn:`Warn — solo problemas`,logLevelError:`Error — solo fallos`,auditLevelLabel:`Nivel de auditoría`,auditLevelHint:`Nivel de detalle para los logs de auditoría de sesión.`,auditLevelMinimal:`Mínimo — solo errores`,auditLevelStandard:`Estándar — llamadas de herramientas + errores`,auditLevelFull:`Completo — cada evento (logs grandes)`,fsAccessLabel:`Acceso al sistema de archivos`,fsAccessHint:`Alcance de las herramientas de archivos. Se aplica en la próxima sesión.`,fsAccessUnrestricted:`Sin restricciones — cualquier ruta`,fsAccessProject:`Proyecto — limitado a la raíz del proyecto`,debugStreamLabel:`Flujo de depuración`,debugStreamHint:`Volcado hex SSE sin procesar al stderr del servidor para depurar proveedores.`,heading:`Logs & Debug`},x={heading:`Security & Monitoring`,brainHeading:`🧠 Brain: control de decisiones`,brainHint:`Modelos de decisión, consejo, escalado y límite de riesgo: se aplican al instante y se guardan en la configuración global.`,shadowHeading:`👁 Agente sombra: monitor de flota`,shadowHint:`El agente sombra supervisa todos los agentes de la flota, hace seguimiento de sus tareas y detecta anomalías.`,toolsHeading:`🔧 Tool Access Control`,toolsHint:`Activa o desactiva herramientas concretas. Las herramientas que modifican aparecen en ámbar.`,breakerHeading:`Process Circuit Breaker`,breakerHint:`Restringe bash/exec tras fallos repetidos; al saltar, inicia la cuenta atrás de detención/reinicio.`},S={switchingTo:`Cambiando a {{provider}} / {{model}}…`,switching:`Cambiando modelo…`,switchingToTarget:`Cambiando a {{target}}…`,previousModel:`modelo anterior`,modelSwitchedNextRequest:`Modelo cambiado: {{from}} → {{to}}. Activo para la siguiente solicitud LLM.`,modelSwitchedRunActive:`Modelo cambiado: {{from}} → {{to}}. Activo para la siguiente solicitud LLM; la ejecución actual continúa sin reiniciarse.`,fallbackExists:`El perfil de fallback "{{name}}" ya existe`,selectProviderModelFirst:`Selecciona un proveedor y un modelo primero`,defaultProfileCreated:`Perfil de fallback predeterminado creado`,profileEmpty:`El perfil de fallback "{{name}}" está vacío`,leaderSetFrom:`Líder establecido desde {{name}}`,modelSwitchTimeout:`Cambio de modelo agotado. Por favor, inténtelo de nuevo.`},C={workbenchHeading:`Apariencia del workbench`,workbenchHint:`Alterna la visibilidad de las superficies del workbench en la vista de chat.`,showModelReasoningLabel:`Mostrar razonamiento del modelo`,showModelReasoningHint:`Renderiza bloques de razonamiento/thinking del LLM en el historial del chat (paridad con TUI).`,showAgentSwarmPanelLabel:`Panel de enjambre de agentes`,showAgentSwarmPanelHint:`Controla dónde se muestra el panel de enjambre (fleet + cola de misiones).`,swarmPanelBottom:`Panel inferior`,swarmPanelSidebar:`Barra lateral derecha`,swarmPanelOff:`Desactivado`,titleAnimationLabel:`Animación del título`,titleAnimationHint:`Anima el título de la terminal/pestaña con el estado de ejecución (paridad con TUI).`,keyboardShortcutsLabel:`Atajos de teclado`,keyboardShortcutsHint:`Habilitar atajos de teclado globales (Ctrl+K, Alt+1..4, etc.). Desactivado por defecto.`,statusChipHeading:`Chip de estado y línea de estado`,statusChipHint:`Estilo visual para la línea de estado TUI/CLI y el chip de trabajo.`,thinkingWordLabel:`Palabra de razonamiento`,thinkingWordHint:`Palabra corta única que se muestra en el chip de estado TUI mientras el agente trabaja.`,thinkingWordInvalid:`Usa una sola palabra de hasta 16 letras, números, guiones bajos o guiones.`,statuslineModeLabel:`Modo de línea de estado`,statuslineModeHint:`Densidad de la barra de estado de TUI.`,statuslineModeMinimum:`Mínimo`,statuslineModeDetailed:`Detallado`,statuslineModeNoColor:`Sin color`,animationStyleLabel:`Estilo de animación`,animationStyleHint:`Animación del chip de trabajo de TUI.`,animationStyleRainbow:`Arcoíris`,animationStyleWave:`Onda`,animationStylePulse:`Pulso`,animationStyleDots:`Puntos`,animationStyleBreathe:`Respiración`,animationStyleStatic:`Estático`,animationStyleCycle:`Ciclo`,refineHeading:`Cuenta atrás de refine y diffs`,refineHint:`Configura la cuenta atrás previa al refine y el umbral del pie de resumen de multi-diff.`,preRefineSecondsLabel:`Cuenta atrás previa al refine`,preRefineSecondsHint:`Periodo de gracia antes de que el refiner arranque (segundos). 0 = saltar la cuenta atrás y refinar inmediatamente.`,preRefineSecondsPresets:`Preajustes: {{presets}} segundos (0 = desactivado).`,multiDiffSummaryLabel:`Resumen de multi-diff`,multiDiffSummaryHint:`Número mínimo de archivos antes de que aparezca el pie agregado 'N archivos · +X -Y' sobre los bloques por archivo.`,multiDiffSummaryPresets:`Preajustes: {{presets}} (0 = desactivado).`,memoryHeading:`Herramienta read e inyección de memoria SAGE`,memoryHint:`Alterna lo que la herramienta read incluye y cuándo se muestran los bloques de memoria SAGE en los resultados.`,readSymbolsLabel:`Leer símbolos`,readSymbolsHint:`Cuando está activo, la herramienta read incluye símbolos del índice de código junto al contenido del archivo.`,showSageMemoryInjectLabel:`Mostrar SAGE Memory Inject`,showSageMemoryInjectHint:`Cuando está activo, muestra los bloques de inyección de memoria SAGE en los resultados de herramientas.`,sageMemoryInjectThresholdLabel:`Umbral de SAGE Memory Inject`,sageMemoryInjectThresholdHint:`Fuerza mínima de relación requerida para una memoria SAGE inyectada (0.72–0.95).`,footnote:`Estos ajustes reflejan el picker /settings del TUI. Los interruptores se aplican en vivo; algunos campos requieren reiniciar la sesión.`,sageRelaxed:`0,72 (relajado)`,sageDefault:`0,85 (predeterminado)`,sageStrict:`0,95 (estricto)`},w=`Borrar preferencias locales`,T=`Cancelar`,E=`¿Borrar las preferencias de este navegador?`,D=`Borra las preferencias guardadas en este navegador y recarga la página. Los ajustes conectados se vuelven a cargar desde el servidor.`,O=`Borrar y recargar`,k=JSON.parse(`{"heading":"Brain","headingHint":"Modelos de decisión, consejo, escalada y techo de riesgo — aplicados en vivo, guardados en la configuración global.","riskHeading":"Techo de autonomía","escalationHeading":"Escalada","escalationModeLabel":"Modo","escalationModeHint":"Headless: el Brain nunca bloquea esperando a un humano — las escaladas sin respuesta se resuelven mediante la política terminal segura. Aplica a sesiones CLI/TUI; el Brain WebUI independiente siempre es headless.","escalationDecisionTimeoutLabel":"Tiempo de espera de decisión","escalationDecisionTimeoutHint":"Presupuesto de tiempo por llamada LLM para una decisión del Brain.","escalationHumanTimeoutLabel":"Tiempo de espera de respuesta humana","escalationHumanTimeoutHint":"Modo interactivo: cuánto puede esperar un aviso de escalada antes de que lo resuelva la política terminal.","escalationTerminalPolicyLabel":"Política terminal","escalationTerminalPolicyHint":"Cómo se resuelve una escalada headless sin humano disponible. Conservadora acepta una opción recomendada en riesgo bajo/medio; denegar-todo nunca autoacepta; continuar-con-recomendación acepta una opción recomendada en CUALQUIER riesgo.","escalationDecisionLogSizeLabel":"Tamaño del registro de decisiones","escalationDecisionLogSizeHint":"Registro de decisiones en memoria rotativo conservado para la vista de estado.","rulesHeading":"Reglas deterministas","rulesConfigured":"{{count}} configuradas","rulesBody":"Evaluadas antes de cualquier llamada al proveedor — gana la primera coincidencia. Edítalas en el archivo de configuración global; esta vista es de solo lectura.","rulesOff":"desactivada","rulesDropped":"{{count}} regla(s) descartada(s)","heuristicsHeading":"Heurísticas","heuristicsBody":"Suposiciones de patrones gratuitas que resuelven una pregunta antes de que se ejecute un modelo. Todas activadas por defecto — apaga aquella cuya suposición sea incorrecta para tu carga de trabajo.","heuristicsLowRiskLabel":"Respuesta automática de bajo riesgo","heuristicsLowRiskHint":"Responde automáticamente solicitudes de bajo riesgo que ya llevan una opción recomendada.","heuristicsBlockedLabel":"Bloqueado-resuelto","heuristicsBlockedHint":"'blocked …' más un marcador de resolución explícito en el contexto se resuelve como continuar.","heuristicsDeadlockLabel":"Omitir punto muerto","heuristicsDeadlockHint":"'deadlock' más unidades de trabajo fallidas en el contexto se resuelve como omitir y continuar.","heuristicsRetryLabel":"Reintentos agotados","heuristicsRetryHint":"'failed'/'retry' más reintentos claramente agotados marca la unidad como fallida y continúa.","heuristicsPingLabel":"Ping de continuación","heuristicsPingHint":"Un ping simple de continuar/proceder sin alternativa en competencia se resuelve como continuar.","heuristicsMarkers":"Marcadores: {{markers}}","qualityHeading":"Calidad LLM","qualityCircuit_one":"circuito {{state}} · {{count}} fallo","qualityCircuit_other":"circuito {{state}} · {{count}} fallos","qualityResponseBudgetLabel":"Presupuesto de respuesta","qualityResponseBudgetHint":"Tokens de salida por llamada de decisión. Una respuesta del Brain es una decisión más una justificación de una frase.","qualityRejectLabel":"Rechazar respuestas inciertas","qualityRejectHint":"Trata una respuesta rechazada o vacía como 'este nivel no pudo decidir' en lugar de aceptarla como respuesta.","qualityMinConfidenceLabel":"Confianza mínima","qualityMinConfidenceHint":"Rechaza respuestas cuya confianza autodeclarada esté por debajo. Las respuestas sin confianza declarada siempre pasan.","qualityDenyTerminalLabel":"La denegación es terminal","qualityDenyTerminalHint":"Si una denegación del nivel LLM único termina la decisión. 'when-decided' hace terminal una negativa real mientras las fallas de infraestructura siguen escalando.","traceHeading":"Traza de reproducción","traceRecordLabel":"Registrar trazas de decisión","traceRecordHint":"JSONL por decisión de cada nivel, objetivo de pool y voto del consejo, con tiempos y uso de tokens. Desactivado por defecto — activarlo escribe contenido de decisiones en disco.","traceContentLabel":"Contenido de la traza","traceContentHint":"'full' conserva pregunta y contexto (necesario para reproducir una decisión); 'redacted' trunca el texto libre; 'none' registra solo metadatos.","cacheHeading":"Caché de decisiones","cacheStats":"{{hits}} aciertos / {{misses}} fallos · {{size}} activos","cacheReplayLabel":"Reproducir veredictos idénticos","cacheReplayHint":"Reutiliza un veredicto previo del consejo/LLM para una pregunta idéntica repetida. Los niveles deterministas y preguntar-a-un-humano nunca se guardan en caché; una decisión que el registro observa fallida se expulsa.","cacheLifetimeLabel":"Vida de las entradas","cacheLifetimeHint":"Cuánto tiempo un veredicto en caché sigue siendo reproducible.","cacheMaxEntriesLabel":"Entradas máximas","cacheMaxEntriesHint":"Límite de veredictos en caché activos.","monitorHeading":"Monitor","monitorBody":"Autoactivación por señales de socorro. El monitor se construye una vez al arrancar, por lo que estos ajustes aplican a la próxima sesión en lugar de en vivo.","monitorWatchLabel":"Vigilar señales de socorro","monitorWatchHint":"Rachas de fallos de herramientas, tormentas de errores, bloqueos de agentes y churn de archivos activan el Brain por sí solos.","monitorPolicyLabel":"Política de señales","monitorPolicyHint":"Cómo se resuelve una señal detectada. 'llm' consulta al Brain; 'steer' interviene siempre y 'observe' nunca — ambos sin llamada al proveedor.","modelsHeading":"Modelos de decisión","modelsSessionBadge":"modelo de sesión","modelsResolvedBadge":"{{resolved}}/{{total}} resueltos","modelsUseSessionLabel":"Usar el modelo de sesión","modelsUseSessionHint":"Decidir con el modelo que ejecuta la sesión. Apagar añadiendo modelos abajo.","modelsAddModel":"Añadir modelo","modelsPoolStrategyLabel":"Estrategia de pool","modelsPoolStrategyHint":"Respaldo: el primer modelo es primario, el resto se prueba en orden al fallar. Round-robin: las decisiones rotan por el pool.","councilHeading":"Consejo","councilConvened":"convocado","councilDisabled":"desactivado","councilEnableLabel":"Activar consejo multi-LLM","councilEnableHint":"Las preguntas de alto riesgo se votan por escaños independientes (ejecutor / escéptico-con-veto / auditor) en lugar de un solo modelo. Requiere ≥2 votantes resolubles (escaños explícitos abajo, o un pool de ≥2 modelos).","councilSeatsDerived":"Escaños derivados del pool: {{seats}}","councilCustomLens":"Lente de decisión personalizada — enviada tal cual al escaño.","councilCustomOption":"{{persona}} (personalizado)","councilVeto":"veto","councilAddVoter":"Añadir votante","councilRiskFloorLabel":"Piso de riesgo","councilRiskFloorHint":"Riesgo mínimo de pregunta que convoca al consejo en lugar del nivel mono-modelo.","councilJudge":"Juez","councilJudgeDesc":"Modelo de desempate que ve la justificación de cada voto.","councilResolved":"resuelto: {{model}}","councilAlsoVoter":"⚠ también votante","councilAuto":"auto","councilPick":"Elegir…","councilAutoReset":"Auto","councilQuorumLabel":"Quórum","councilQuorumHint":"Fracción de escaños que debe devolver un voto válido.","councilApprovalLabel":"Aprobación","councilApprovalHint":"Fracción del peso de votos emitidos que la opción ganadora debe superar.","councilPerSeatTimeoutLabel":"Tiempo de espera por escaño","councilPerSeatTimeoutHint":"Presupuesto de tiempo para el voto de un solo escaño. Más lento que el tiempo de decisión significa que un escaño bloqueado retiene el voto.","councilMaxConcurrencyLabel":"Concurrencia máxima","councilMaxConcurrencyHint":"Cuántos escaños votan en paralelo. Redúcelo cuando el pool comparte un proveedor con límite de tasa.","councilDistinctnessLabel":"Distinción de escaños","councilDistinctnessHint":"Rechazar escaños duplicados: 'model' exige modelos distintos, 'provider' proveedores independientes para que una caída no pueda inclinar el voto.","councilVoterBudgetLabel":"Presupuesto de respuesta del votante","councilVoterBudgetHint":"Tokens de salida por llamada de asiento — los modelos de razonamiento gastan sus tokens de pensamiento de este presupuesto.","councilRoundsLabel":"Rondas de deliberación","councilRoundsHint":"La ronda 1 es independiente. En las siguientes, cada asiento ve los votos de los demás y puede revisar su postura. Solo se cuenta la última ronda, y cada ronda cuesta una llamada más por asiento.","councilJudgeBudgetLabel":"Presupuesto de respuesta del juez","councilJudgeBudgetHint":"Tokens de salida para la llamada del juez de desempate.","councilSeatTemplate":"Plantilla de escaño:","ledgerHeading":"Registro de decisiones","ledgerRecordLabel":"Registrar decisiones + resultados","ledgerRecordHint":"Persiste cada decisión y su resultado observado; los resultados pasados similares se reinyectan en futuros prompts del Brain.","ledgerAutoDenyLabel":"Auto-denegar tras fallos","ledgerAutoDenyHint":"Denegar de forma determinista (sin LLM) cuando este número de aprobaciones consecutivas de un grupo de decisiones terminó en fallos observados.","ledgerMemoryEntriesLabel":"Entradas en memoria","ledgerMemoryEntriesHint":"Tamaño del anillo en memoria y número de entradas pasadas cargadas del disco al arrancar.","ledgerRetryWindowLabel":"Ventana de reintento de intervención","ledgerRetryWindowHint":"Una intervención del monitor del mismo tipo que se vuelve a disparar en esta ventana marca la guía anterior como fallida.","recentHeading":"Decisiones recientes ({{count}})","recentEmpty":"Aún no se han registrado decisiones en esta sesión.","optInteractive":"Interactivo (preguntarme)","optHeadless":"Headless (nunca preguntar)","optConservative":"Conservador (predeterminado)","optDenyAll":"Denegar todo","optContinueRecommended":"Continuar con recomendación","optNeverDefault":"Nunca (predeterminado)","optWhenDecided":"Cuando se decida","optAlways":"Siempre","optFullDefault":"Completo (predeterminado)","optRedacted":"Redactado","optMetadataOnly":"Solo metadatos","optConsultBrain":"Consultar al Brain (predeterminado)","optAlwaysSteer":"Guiar siempre","optObserveOnly":"Solo observar","optFallback":"Respaldo","optRoundRobin":"Round-robin","optMediumPlus":"Medio+","optHighPlus":"Alto+","optCriticalOnly":"Solo crítico","optNoneDefault":"Ninguno (predeterminado)","optDistinctModels":"Modelos distintos","optDistinctProviders":"Proveedores distintos","optDefault3":"Predeterminado (3)","optOff":"Desactivado","pickPoolTitle":"Añadir modelo de pool Brain","pickPoolHint":"Pool de decisión ordenado — el primero es primario.","pickVoterTitle":"Añadir votante al consejo","pickVoterHint":"El diálogo permanece abierto — añade ≥2 votantes y luego cierra.","pickJudgeTitle":"Elegir juez del consejo","pickJudgeHint":"Desempate que ve cada voto.","persistError":"Ajustes aplicados en vivo pero no guardados.","riskCopy":{"off":"Un humano decide todo","low":"Decidir automáticamente solo riesgo bajo","medium":"Decidir automáticamente hasta riesgo medio","high":"Decidir automáticamente hasta riesgo alto","all":"Decidir automáticamente todo"},"rulesConfigured_one":"{{count}} configurada","rulesConfigured_other":"{{count}} configuradas"}`),A={default15s:`Predeterminado (15 s)`,waitForever:`Esperar indefinidamente`,defaultHalf:`Predeterminado (0,5)`,all:`Todos`,n200Default:`200 (predeterminado)`,offDefault:`Desactivado (predeterminado)`,n20Default:`20 (predeterminado)`,m5Default:`5 min (predeterminado)`,default:`Predeterminado`,oneSerial:`1 (en serie)`,roundsOff:`1 (sin deliberación)`,default500:`Predeterminado (500)`,default10m:`Predeterminado (10 min)`},j={capToolCall:`Llamada a herramienta`,capReasoning:`Razonamiento`,capTemperature:`Temperatura`,capAttachment:`Adjunto`,capStructuredOutput:`Salida estructurada`,capOpenWeights:`Pesos abiertos`},M={presetsHeading:`Conjuntos de fuentes`,presetsHint:`Un conjunto ajusta todas las funciones a la vez; las fuentes se descargan solo al usarse por primera vez.`,presets:{workbench:{label:`Taller`,description:`El aspecto predeterminado del banco de trabajo.`},plex:{label:`IBM Plex`,description:`Una sola familia técnica de principio a fin.`},modern:{label:`Moderno`,description:`Inter neutra con JetBrains Mono para el código.`},geist:{label:`Geist`,description:`Combinación nítida de Geist Sans y Mono.`},classic:{label:`Clásico`,description:`Source Sans, Serif y Code Pro de Adobe.`},editorial:{label:`Editorial`,description:`Títulos con serifa y una fuente de chat de libro.`},readable:{label:`Legible`,description:`Fuentes muy legibles para sesiones largas.`},friendly:{label:`Amigable`,description:`Formas redondeadas y relajadas con Fira Code.`},monospace:{label:`Monoespaciada`,description:`Monoespaciada en todas partes, estilo terminal.`},system:{label:`Sistema`,description:`Fuentes del sistema operativo, sin descargas.`}},rolesHeading:`Fuentes por función`,rolesHint:`Cambia cualquier función sobre el conjunto. Las marcadas con «Igual que» siguen a su función principal.`,roles:{ui:{label:`Interfaz y paneles`,hint:`Botones, menús, barras laterales, listas y ajustes.`},display:{label:`Títulos`,hint:`Títulos de página y de sección.`},reading:{label:`Chat y documentos`,hint:`Respuestas del asistente, markdown y mensajes del buzón.`},code:{label:`Código en línea y datos`,hint:`Bloques de código, registros, ID y datos tabulares.`},editor:{label:`Editor de código`,hint:`Editor de archivos Monaco y vista de diferencias.`},terminal:{label:`Terminal`,hint:`Sesiones de terminal integradas.`}},fromPreset:`Conjunto ({{name}})`,inherit:`Igual que {{role}} ({{name}})`,categories:{sans:`Sans serif`,serif:`Serif`,mono:`Monoespaciada`},systemTag:`sistema`,sizeHeading:`Tamaño y espaciado`,sizeHint:`El tamaño del texto de la interfaz escala todos los paneles; los del editor y la terminal se definen en píxeles.`,sizePresets:{compact:`Compacto`,normal:`Normal`,comfortable:`Cómodo`,large:`Grande`,custom:`Personalizado`},controls:{uiScale:{label:`Tamaño del texto de la interfaz`,hint:`Escala el texto de paneles, chat y diálogos.`},editorFontSize:{label:`Tamaño de fuente del editor`,hint:`Editor Monaco y vista de diferencias.`},codeLineHeight:{label:`Interlineado del código`,hint:`Editor, vista de diferencias y bloques de código.`},terminalFontSize:{label:`Tamaño de fuente de la terminal`,hint:`Terminal integrada.`},terminalLineHeight:{label:`Interlineado de la terminal`,hint:`Espaciado entre filas de la terminal.`},ligatures:{label:`Ligaduras de código`,hint:`Une => !== >= en un solo glifo en fuentes compatibles (Fira Code, Cascadia, JetBrains Mono…). No se aplica en la terminal.`}},previewHeading:`Vista previa en vivo`,preview:{heading:`Refactorizar el cargador de sesiones`,body:`El agente leyó 12 archivos y propuso un cambio en dos pasos. Revisa las diferencias antes de aplicarlo.`,label:`Etiqueta de interfaz`},resetAll:`Restablecer todos los ajustes de fuentes`,resetOverrides:`Quitar cambios por función`},N={description:`Manage the decision provider and see where Jev is used.`,loading:`Loading Jev settings…`,timeout:`No response from server. Reconnect and retry.`,route:`Decision provider`,routeChange:`Changing provider clears the previous key, endpoint and model. Enter a new key or use the provider environment variable.`,key:`API key`,keyHint:`Leave blank to keep the current key`,removeKey:`Remove saved key (environment key may still apply)`,endpoint:`Endpoint override`,model:`Model override`,defaultHint:`Empty uses provider default`,requestTimeout:`Request timeout (ms)`,featureHint:`Switches permit Jev usage. Actual use also depends on the prerequisites and triggers below.`,save:`Save Jev settings`,test:`Test saved connection`,testHint:`The test sends one small billed request. Save changes first. Restart existing sessions to apply all consumers.`,activity:`Jev activity`,activityHint:`Refreshes every 3 seconds. Last 300 requests in this server process, across its sessions. No prompts, credentials or raw errors. Disk log rotates at 5 MB. Answered means a typed response, not necessarily a decision accepted by the consumer.`,filter:`Feature`,all:`All`,empty:`No matching Jev requests yet. Test the connection or use an enabled feature.`,features:{brain:`Brain decisions`,memoryTriage:`Memory triage`,topicShift:`Topic changes`,memoryRecall:`Memory recall`,compaction:`Context compaction`,kanbanVerify:`Kanban verification`,modelTier:`Subagent model tier`,semanticLint:`Semantic lint`,tool:`Herramienta de decisión del agente`,skillSuggestion:`Skill suggestions`,fleetDispatch:`Fleet dispatch`},readinessScope:`These are saved profile conditions, not the live state of every session. A request below means the service was called, not that its answer was accepted.`,unknownReadiness:`Readiness unavailable on this server`,unsaved:`Unsaved change`,lastRequest:`Last runtime request`,notObserved:`No runtime request in the displayed recent log.`,contextStrategy:`Profile compaction strategy`,contextScope:`Selective enables the Jev selection path. Save changes and restart existing sessions; a session-specific strategy can override this profile setting.`,openContext:`Open session context settings`,configureTiers:`Configure model tiers`,tiersHint:`Enable tiers and define at least two levels, cheapest first. Set their models or fallback profiles and a default tier. Changes here save immediately.`,checkHeading:`Live capability checks`,checkHint:`Runs 22 synthetic cases across all 11 features using the saved account, including disabled features. Makes billed API calls, sends no project content and changes no feature settings. Passing does not prove workload quality or that a session uses the feature.`,checkAll:`Test all 11 features`,checkRunning:`Running live checks…`,expected:`Expected`,actual:`Actual`,includeChecks:`Include diagnostic requests`,selfTest:`Diagnostic`,account:{ready:`Account configured`,unconfigured:`Account required`,unusable:`Account settings invalid`},readiness:{disabled:`Disabled`,"account-required":`Account required`,blocked:`Setup required`,conditional:`Configured · waiting for trigger`},reasons:{disabled:`This feature is not permitted to use Jev.`,"account-required":`Configure a valid Jev account first.`,"selective-required":`Jev selection requires selective compaction; hybrid and intelligent do not use this selector.`,"tiers-disabled":`The model tier system is disabled.`,"tiers-required":`Define at least two model tiers.`,"skills-disabled":`The global skills feature is disabled.`,"trigger-required":`Runs only when its trigger conditions are met.`,"memory-disabled":`Memory or SAGE is disabled.`,"recall-injection-required":`SAGE turn context recall is disabled; the Jev recall filter requires this path.`},triggers:{brain:`Runs before later decision tiers; uncertain answers defer.`,memoryTriage:`Runs during triage value evaluation and merge decisions.`,topicShift:`Runs when topic-change prechecks require a judgment; repeated results may be cached.`,memoryRecall:`Filters candidates returned by SAGE turn context recall; cached judgments are reused.`,compaction:`Rates middle conversation turns during selective compaction; requires a provider and sufficient history.`,kanbanVerify:`Judges open agent-type criteria against changed files and their diff.`,modelTier:`Suggests a tier for delegations with no explicit model/tier and no matching role/phase route.`,semanticLint:`Runs when the semantic lint command finds candidates; it is not an automatic edit watcher.`,tool:`Se ejecuta cuando un agente llama a jev con evidencia y preguntas tipadas.`,skillSuggestion:`Requires skills enabled, at least two skills, and gate/fit thresholds; results may be cached.`,fleetDispatch:`Runs only for ambiguous routing with multiple candidate roles.`},recallTurnContext:`SAGE turn context recall`,recallTurnHint:`Adds relevant memories to each new turn; the Jev recall filter runs on this path. Memory and SAGE must also be enabled. Save and restart existing sessions.`},P={title:e,subtitle:t,navigation:n,providerTest:r,tabs:i,model:a,connection:o,provider:s,providerModels:c,mcp:l,allowlist:u,oauth:d,general:f,agent:p,execution:m,fallbacks:h,fleet:g,integrations:_,features:v,context:y,logs:b,security:x,toast:S,display:C,resetLabel:w,cancel:T,resetConfirmTitle:E,resetConfirmBody:D,resetConfirmAction:O,brain:k,brainOpt:A,modelSchema:j,fonts:M,jev:N};export{p as agent,u as allowlist,k as brain,A as brainOpt,T as cancel,o as connection,y as context,P as default,C as display,m as execution,h as fallbacks,v as features,g as fleet,M as fonts,f as general,_ as integrations,N as jev,b as logs,l as mcp,a as model,j as modelSchema,n as navigation,d as oauth,s as provider,c as providerModels,r as providerTest,O as resetConfirmAction,D as resetConfirmBody,E as resetConfirmTitle,w as resetLabel,x as security,t as subtitle,i as tabs,e as title,S as toast};
@@ -0,0 +1 @@
1
+ var e=`Settings`,t=`Configure every aspect of your agent workspace`,n={browse:`Browse`,search:`Find a setting…`,clearSearch:`Clear search`,noResults:`No matching settings`,workspace:`Workspace`,models:`Models & connections`,behavior:`Agent behavior`,system:`System & safety`,label:`Settings sections`},r={title:`Provider Test`,description:`Test saved providers and subscriptions; inspect quota, authentication, latency, and token-limit failures.`,open:`Open Provider Test`},i={general:`General`,provider:`Provider`,connection:`Connections`,agent:`Agent`,execution:`Execution`,fallbacks:`Fallbacks`,routing:`Routing`,fleet:`Fleet`,integrations:`Integrations`,chimera:`Chimera`,context:`Context`,logs:`Logs`,security:`Security`,display:`Display`,displayDesc:`Workbench chrome, status chip, refine timers, and tool/memory injection toggles — mirrors the TUI SettingsPicker.`,generalDesc:`Appearance, language, and display preferences — mirrors the TUI SettingsPicker.`,providerDesc:`API keys, saved providers, and the provider catalog.`,connectionDesc:`WebSocket server URL and connection health.`,agentDesc:`Autonomy, prompt refinement, reasoning, and model routing.`,executionDesc:`Iteration caps, exit behavior, and process circuit breaker.`,fallbacksDesc:`Model fallback chain, favorites, and named fallback profiles.`,routingDesc:`Per-phase and per-role model route matrix.`,fleetDesc:`Subagent concurrency, streaming, and next-step prediction.`,integrationsDesc:`HQ client, MCP servers, and Telegram notifications.`,chimeraDesc:`Post-session code review agent configuration.`,contextDesc:`Feature flags, context strategy, compactor, and plugin controls.`,logsDesc:`Log level, audit detail, filesystem access scope, and debug stream.`,securityDesc:`Brain decision control, shadow agent, and tool access.`,fonts:`Fonts`,fontsDesc:`Interface, chat, editor and terminal fonts; size, line height, and ligatures.`,jev:`Jev`,jevDesc:`TypeSafe / Jev`},a={themeHeading:`Theme`,themeLight:`Light`,themeDark:`Dark`,themeSystem:`System`,themeSystemHint:`System follows your OS-level light/dark preference.`,preferencesHeading:`Display Preferences`,compactDensity:`Compact density`,compactDensityHint:`Tighter spacing throughout the chat.`,soundOnComplete:`Sound on completion`,soundOnCompleteHint:`Play a soft chime when a run finishes.`,titleAnimation:`Title animation`,titleAnimationHint:`Show animated terminal title in the CLI.`,showThinkingLabel:`Show thinking logs`,showThinkingHint:`Display completed reasoning blocks in the chat history.`,groupToolCallsLabel:`Group tool calls`,groupToolCallsHint:`Collapse consecutive tool calls into a single chip.`,autoCollapseInputLabel:`Auto-collapse input under history`,autoCollapseInputHint:`When a session with messages loads, collapse the composer under the history. Off by default — input stays expanded until you collapse it manually.`,languageHeading:`Language`,languageLabel:`Interface language`,languageHint:`Changes only the interface text. Prompts, skills, and model output are not affected.`,statuslineModeLabel:`Statusline mode (CLI/TUI)`,statuslineModeHint:`Density of the TUI statusline.`,statuslineModeDetailed:`Detailed`,statuslineModeMinimum:`Minimum`,statuslineModeNoColor:`No color`,animationStyleLabel:`Animation style (CLI/TUI)`,animationStyleHint:`Animation for the TUI working-state chip.`,animationStyleRainbow:`Rainbow`,animationStyleWave:`Wave`,animationStylePulse:`Pulse`,animationStyleDots:`Dots`,animationStyleBreathe:`Breathe`,animationStyleStatic:`Static`,animationStyleCycle:`Cycle`,thinkingWordLabel:`Thinking word (CLI/TUI)`,thinkingWordHint:`Word shown in the TUI status chip. Single short word.`,paletteHeading:`Color palette`,paletteSwitcherTitle:`Color palette`,paletteHint:`Pick the main color (and its derivatives). Neutral surfaces stay the same.`,paletteSignal:`Signal`,paletteEmeraldGold:`Emerald & Gold`,paletteBlueNavy:`Blue Navy`,palettePurplePink:`Purple & Pink`,paletteCyanTeal:`Cyan & Teal`,paletteRoseCopper:`Rose & Copper`,paletteIndigoAmber:`Indigo & Amber`,paletteSageSand:`Sage & Sand`,paletteSlateViolet:`Slate & Violet`,paletteCoralMint:`Coral & Mint`,paletteArcticEmber:`Arctic & Ember`,paletteMossRust:`Moss & Rust`},o={heading:`Model`,loading:`Loading models...`,notFound:`No models found for this provider. The catalog might be empty or still loading.`,selectProviderFirst:`Select a provider first`,context:`{{count}}k context`},s={providerHealth:{heading:`Provider Health`,hint:`Which provider/model pairs are healthy, degraded, or blocked — and why.`,refresh:`Refresh`,empty:`No providers tracked yet.`,summary:`{{blocked}} blocked · {{degraded}} degraded · {{healthy}} healthy`,totalFailures:`failures`,rateLimits:`rate limits`,state:{blocked:`Blocked`,degraded:`Degraded`,healthy:`Healthy`},blocked:`Blocked`,degraded:`Degraded`,consecutive:`consecutive failures`,retryNow:`Retry now`,clear:`Clear`,allHealthy:`All tracked providers are healthy.`,statSuccesses:`successes`,statFailures:`failures`,statRateLimits:`rate limits`,statConsecutive:`consecutive`,lastError:`Last error`,recentErrors:`Recent errors`,autoRecovery:`Auto-recovers at`,expired:`Expired`,remainingSecs:`{{secs}}s`,remainingMins:`{{mins}}m`,remainingHours:`{{hours}}h {{mins}}m`,explainHealthy:`Responding normally.`,explain402:`Billing limit reached (402). Blocked for ~15 minutes until quota resets.`,explain403quota:`Usage limit reached for this billing cycle. Blocked until the next cycle resets (~15 min).`,explain403auth:`Permission/auth error. Non-retryable — check your API key and access rights.`,explain429:`Rate limit hit (429). Temporary throttle — recovers automatically.`,explain529:`Server overloaded (529). The provider is under heavy load.`,explain5xx:`Server error ({{status}}). Temporary backend issue.`,explainNetwork:`Network unreachable. Check your internet or the provider's status page.`,explainTimeout:`Request timed out (408). The provider was slow to respond.`,explainStreamHang:`Stream stalled (599). The provider stopped mid-response.`,explainQuota:`Quota exhausted. Blocked until the reset window.`,explainUnknown:`Failure kind: {{kind}} / status: {{status}}.`},wsUrlLabel:`WebSocket Server URL`,wsUrlPlaceholder:`ws://localhost:3456`,wsUrlHint:`URL of the agent WebSocket server. The server runs alongside the CLI.`,startingHeading:`Starting the WebSocket Server`,startingBody:`For development, run ./dev.ps1 from the repo root (optionally set WS_HOST/WS_PORT first). Otherwise launch the WebUI with the CLI: wstack --webui.`,healthHeading:`Connection health`,healthHint:`Live ownership, storage, queue, watcher, and latency report for project services.`,healthRefresh:`Refresh`,healthLoading:`Checking services…`,healthUnknown:`Health unknown`,healthDisconnected:`The WebUI WebSocket is disconnected.`,healthRestartRequired:`Restart the backend once to activate connection health reporting.`,healthOptional:`On demand`,endpointInvalidBadge:`socket path too long`,endpointInvalidRemedy:`The IPC socket path exceeds this platform's length limit, so the shared daemon cannot start. Queries fall back to a slower process-local mode. Remedy: set a shorter TMPDIR (e.g. export TMPDIR=/tmp) and restart WrongStack.`,healthCounts:`{{healthy}} healthy · {{attention}} attention · {{sleeping}} sleeping`,healthOverall:{healthy:`Required services healthy`,degraded:`Required service degraded`,error:`Required service unavailable`},healthStatus:{healthy:`Healthy`,degraded:`Degraded`,offline:`Sleeping`,unavailable:`Unavailable`,error:`Error`},services:{kanban:{label:`Kanban IPC`},mailbox:{label:`Mailbox IPC`}},serviceActionRestart:`Restart {{label}}`,webuiTransport:`WebUI transport`,serviceAutoRestarting:`Auto-restarting…`},c={removeProfileConfirm:`Remove auth profile “{{alias}}” and all its keys?`,removeProfileBody:`Saved credentials and references to this account in model routing will be removed.`,deleteKeyConfirm:`Delete key “{{label}}” from “{{alias}}”?`,addProfile:`Add account / auth profile`,profileAlias:`Auth profile alias`,profileHint:`Each account has its own alias and credential. Fallback targets are alias/model.`,profileExists:`Auth profile “{{alias}}” already exists. Choose another alias.`,operationTimeout:`No response from the server. Check the connection and try again.`,subscriptionHeading:`Subscription login`,apiKeysHeading:`API key providers`,apiKeysBody:`Pick a provider from the catalog and add an API key, or manage saved providers.`,tabCatalog:`Catalog`,tabSaved:`Saved ({{count}})`,searchPlaceholder:`Search {{count}} providers (name / id / family)…`,loadingCatalog:`Loading catalog...`,noMatch:`No providers match "{{query}}".`,configured:`Configured`,reachable:`Reachable`,envVar:`ENV: {{var}}`,modelCount_one:`{{count}} model`,modelCount_other:`{{count}} models`,keyPlaceholder:`{{name}} API key`,orEnv:`Or set {{env}} in the environment instead.`,addApiKey:`Add API key`,manageKeys:`Manage your API keys and provider configurations`,addProvider:`Add Provider`,addCustomHeading:`Add Custom Provider`,localServers:`Local servers — click to pre-fill:`,providerIdPlaceholder:`Provider ID (e.g. my-llm-server)`,apiKeyOptionalPlaceholder:`API Key (optional)`,noSaved:`No saved providers yet`,noSavedHint:`Add a provider to get started`,apiKeysLabel:`API Keys`,savedProviderCount_one:`{{count}} provider`,savedProviderCount_other:`{{count}} providers`,keyCount_one:`{{count}} key configured`,keyCount_other:`{{count}} keys configured`,activeKeyCount_one:`{{count}} active key`,activeKeyCount_other:`{{count}} active keys`,addKey:`Add Key`,noKeys:`No keys configured`,active:`Active`,setActive:`Set Active`,keyLabelPlaceholder:`Key label (e.g. default, production)`,apiKeyPlaceholder:`API key`,saveKey:`Save Key`,savedToast:`Saved key for {{name}}`},l={addCustom:`Add custom model`,addCustomTitle:`Add custom model`,addFromCatalog:`Add from catalog`,catalogSearchPlaceholder:`Search models.dev catalog…`,catalogSearchTitle:`Search models.dev catalog`,colActions:`Actions`,colCaps:`Capabilities`,colContext:`Context`,colCost:`Cost`,colModalities:`Modalities`,colModel:`Model`,colOutput:`Output`,colSource:`Source`,editModel:`Edit model`,emptyState:`No models yet — add from the catalog or create a custom model.`,fieldContext:`Context window`,fieldCostInput:`Input cost`,fieldCostOutput:`Output cost`,fieldDescription:`Description`,fieldFamily:`Family`,fieldInputLimit:`Input limit`,fieldInputModalities:`Input modalities`,fieldLastUpdated:`Last updated`,fieldName:`Name`,fieldOutput:`Max output`,fieldOutputModalities:`Output modalities`,fieldReleaseDate:`Release date`,modelAdded:`Added {{model}}`,modelRemoved:`Removed {{model}}`,modelSaved:`Saved {{model}}`,noResults:`No models found`,removeModel:`Remove model`,sectionCapabilities:`Capability flags`,sectionDates:`Dates`,sectionIdentity:`Identity`,sectionLimits:`Limits`,sectionModalities:`Modalities`,sectionPricing:`Pricing (per 1M tokens, USD)`,tabForm:`Form`,tabRawJson:`Raw JSON`,typeToSearch:`Type to search the catalog…`,useModel:`Use {{model}}`,usingModel:`Using {{model}}`,filterPlaceholder:`Filter models…`},u={status:{connected:`Connected`,connecting:`Connecting`,sleeping:`Sleeping`,discovering:`Discovering`,error:`Error`,stopped:`Stopped`,unknown:`Unknown`},disabled:`MCP servers are disabled.`,wakeTitle:`Wake server`,sleepTitle:`Sleep server`,discoverTitle:`Discover tools`,editTitle:`Edit`,removeTitle:`Remove`,statusLabel:`Status:`,enabledLabel:`Enabled:`,yes:`Yes`,no:`No`,descriptionLabel:`Description:`,pidLabel:`PID:`,errorLabel:`Error:`,toolsLabel:`Tools ({{count}}):`,noTools:`No tools discovered yet`,serverNameRequired:`Server name is required`,dialogTitleEdit:`Edit MCP Server`,dialogTitleAdd:`Add MCP Server`,dialogTitleAddCustom:`Add Custom MCP Server`,fieldName:`Name`,fieldNamePlaceholder:`e.g., github, filesystem`,fieldTransport:`Transport`,fieldUrl:`URL`,fieldCommand:`Command`,fieldCommandPlaceholder:`e.g., npx`,fieldArgs:`Args`,fieldArgsHint:`(space-separated)`,fieldArgsPlaceholder:`e.g., -y @modelcontextprotocol/server-github`,fieldEnv:`Env vars`,fieldEnvHint:`(KEY=value, one per line)`,fieldDescription:`Description`,fieldDescriptionPlaceholder:`GitHub MCP server for repository access`,enableServer:`Enable server`,lazyConnect:`Lazy connect`,lazyConnectHint:`(don't start until first tool call; auto-sleeps when idle)`,saveChanges:`Save Changes`,addServer:`Add Server`,requires:`Requires: {{vars}}`,added:`Added`,heading:`MCP Servers`,summary:`{{connected}} connected · {{sleeping}} sleeping · {{total}} total`,addCustom:`Add Custom`,tabRecommended:`Recommended`,tabServers:`Servers`,tabAddCustom:`Add Custom`,recommendedBody:`One-click add for popular MCP servers. Click Add to pre-fill the configuration, then confirm. Servers requiring credentials will need their env vars set before use.`,loadingServers:`Loading servers...`,noServers:`No MCP servers configured`,noServersHint:`Switch to the Recommended tab to add popular servers, or Add Custom for your own.`,addCustomBody:`Configure a custom MCP server with stdio, SSE, or HTTP transport.`,addCustomBodyHint:`For popular servers, use the Recommended tab instead — everything is pre-configured for you.`,removeConfirmTitle:`Remove server "{{name}}"?`,removeConfirmBody:`This removes the MCP server from your configuration.`,toastAdded:`Server "{{name}}" added`,toastRemoved:`Server "{{name}}" removed`,toastDiscovered:`Discovered {{count}} tools from "{{name}}"`,toastSleeping:`Server "{{name}}" is now sleeping`,toastConnected:`Server "{{name}}" connected`,toastReconnected:`Server "{{name}}" reconnected`,toastDisconnected:`Server "{{name}}" disconnected: {{reason}}`,toastError:`Server "{{name}}" error: {{error}}`,authRequired:`Sign-in required`,authorized:`Authorized`,authorizeTitle:`Authorize with OAuth`,authSignOutTitle:`Remove OAuth credentials`,authSignOutBody:`Remove the stored OAuth credentials for "{{name}}"? You will need to authorize again.`,authPromptTitle:`Finish signing in to "{{name}}"`,authPromptBody:`Open the authorization page and approve access. This panel updates when the provider redirects back.`,authPromptOpen:`Open authorization page`,toastAuthorized:`Authorized "{{name}}"`,toastAuthFailed:`"{{name}}" needs authorization{{suffix}}`},d={title:`Clear saved allowlist?`,body_one:`This will remove the pinned model for {{provider}}. The model picker will fall back to the models.dev catalog.`,body_other:`This will remove the {{count}} pinned models for {{provider}}. The model picker will fall back to the models.dev catalog.`,undoHint:`You can undo this for 8 seconds after confirming.`,keepTitle:`Keep the allowlist (Esc)`,clearTitle:`Clear the allowlist (Enter)`,clear:`Clear allowlist`},f={termsWarning:`Sign in with a subscription instead of an API key. Using a subscription outside its official client may violate the provider's Terms — your account could be rate-limited or banned. An API key is the sanctioned path for programmatic use.`,signIn:`Sign in`,waitingBrowser:`Waiting for you to sign in…`,openSignIn:`Open sign-in page`,pasteLoopbackBusy:`Loopback port busy — paste the redirect URL`,pasteCantReach:`Browser can't reach this server? Paste the redirect URL`,submit:`Submit`,enterCode:`Enter this code at the verification page:`,openVerification:`Open verification page`,waitingCode:`Waiting for authorization…`,exchanging:`Exchanging tokens…`,fetchingModels:`Fetching models…`,signedIn:`Signed in.`,signedInToast:`Signed in — {{provider}}`,signInFailed:`Sign-in failed`,accountCount_one:`{{count}} account saved`,accountCount_other:`{{count}} accounts saved`,active:`Active`,inactive:`Inactive`,retry:`Retry`,retryLogin:`Re-authenticate this account`,newAccount:`New account`,aliasPlaceholder:`e.g. {{default}}`},p={autonomyHeading:`Autonomy & Behavior`,autonomyModeLabel:`Autonomy mode`,autonomyModeHint:`How independently the agent proceeds between turns.`,autonomyModeOff:`Off — full manual control`,autonomyModeSuggest:`Suggest — suggests next steps`,autonomyModeAuto:`Auto — brief confirmation delay`,autonomyModeEternal:`Eternal — autonomous until goal done`,autonomyModeEternalParallel:`Eternal Parallel — multi-agent fleet`,autoProceedDelayLabel:`Auto-proceed delay`,autoProceedDelayHint:`Milliseconds before the agent auto-proceeds in Auto mode. 0 = immediate.`,yoloLabel:`YOLO mode`,yoloHint:`Run tool calls without asking — except the damaging kinds listed below.`,yoloConfirmHeading:`Still ask about`,yoloConfirmIntro:`YOLO runs everything else unattended. These are the kinds of damage it stops and asks you about first.`,yoloConfirmLockedNote:`These two always ask. They write the files that decide whether you get asked at all, so turning them off would let the agent switch its own approval system off.`,yoloKindLocked:`always asks`,yoloKind:{"disk-wipe":{label:`Wipe a disk`,hint:`mkfs, dd to a raw device, format C:, fork bomb`},"system-halt":{label:`Shut down or restart`,hint:`shutdown, reboot`},"delete-outside":{label:`Delete outside the project`,hint:`recursive force-delete that leaves the project, or hits a system or home root`},"git-history":{label:`Rewrite git history`,hint:`reset --hard, clean -f, push --force, filter-branch`},publish:{label:`Publish or deploy`,hint:`npm publish, docker push, kubectl delete namespace`},"download-and-run":{label:`Run downloaded code`,hint:`curl | sh, and inline payloads that fetch then execute`},"bulk-delete":{label:`Delete in bulk`,hint:`find -exec rm, inline rmSync across many paths`},"agent-state":{label:`Write WrongStack's own state`,hint:`config.json, trust.json, auth.json`},"credential-bind":{label:`Bind an API key to an endpoint`,hint:`attaching a well-known key to a provider URL`}},refineHeading:`Prompt Refinement`,enableRefineLabel:`Enable refine`,enableRefineHint:`Rewrite prompts before sending — clearer instructions, better results.`,refineDelayLabel:`Refine delay`,refineDelayHint:`Countdown before the refined prompt auto-sends.`,refineLanguageLabel:`Refine language`,refineLanguageHint:`Keep your language or translate to English for the model.`,refineLanguageOriginal:`Original — keep your language`,refineLanguageEnglish:`English — translate to English`,refinerProviderLabel:`Refiner provider`,refinerProviderHint:`Provider for goal refinement. Select one from your configured providers.`,refinerProviderDefault:`Session provider`,refinerModelLabel:`Refiner model`,refinerModelHint:`Model for goal refinement. Requires a refiner provider first.`,refinerModelDefault:`Session model`,refinerProfileLabel:`Refiner fallback profile`,refinerProfileHint:`Named fallback profile for goal refinement. Overrides provider+model.`,refinerProfileDefault:`None — use provider+model or session defaults`,reasoningHeading:`Reasoning & Cache`,reasoningModeLabel:`Reasoning mode`,reasoningModeHint:`Control how the model uses extended thinking. Auto = provider default.`,reasoningModeAuto:`Auto — provider default`,reasoningModeOn:`On — force thinking on`,reasoningModeOff:`Off — force thinking off`,reasoningEffortLabel:`Reasoning effort`,reasoningEffortAuto:`Auto (general)`,reasoningEffortAutoHint:`Project setting: {{value}}`,reasoningEffortHint:`How much compute the model spends thinking. Only sent when the model supports it.`,reasoningEffortNone:`None`,reasoningEffortMinimal:`Minimal`,reasoningEffortLow:`Low`,reasoningEffortMedium:`Medium`,reasoningEffortHigh:`High`,reasoningEffortXhigh:`Extra High`,reasoningEffortMax:`Max`,preserveThinkingLabel:`Preserve thinking`,preserveThinkingHint:`Keep reasoning blocks across turns for context continuity.`,cacheTtlLabel:`Cache TTL`,cacheTtlHint:`Prompt cache time-to-live. 1h costs more on write but saves on repeat reads (Anthropic).`,cacheTtlDefault:`Default — provider default`,cacheTtl5m:`5 minutes`,cacheTtl1h:`1 hour`,capsHint:`Use wstack models caps to check what the current model supports. Unsupported settings are silently omitted per-request.`,routingHeading:`Model Routing`,routingRouteKey:`Route key`,routingPhasesGroup:`Phases`,routingRolesGroup:`Roles — {{label}}`,routingCustomGroup:`Existing custom routes`,routingTargetAria:`Model route target`,routingTargetEmpty:`— Clear route —`,routingTargetProfilesGroup:`Fallback Profiles`,routingTargetModelsGroup:`Models (provider/model)`,routingSet:`Set`,routingReasoningModeAria:`New route reasoning mode`,routingReasoningEffortAria:`New route reasoning effort`,routingReasoningPreserveAria:`New route reasoning preservation`,routingReasoningModeFor:`Reasoning mode for {{key}}`,routingReasoningEffortFor:`Reasoning effort for {{key}}`,routingReasoningPreserveFor:`Reasoning preservation for {{key}}`,noRoutes:`No model routes yet.`,leaderModel:`leader model`,autonomyDelayMsLabel:`Auto-proceed delay`,autonomyDelayMsHint:`Milliseconds before the agent auto-proceeds in Auto mode. 0 = immediate.`,refineCountdownLabel:`Refine countdown`,refineCountdownHint:`Grace period before the refined prompt auto-sends (milliseconds).`,reasoningEffortModelSet:`levels offered by the active model`,reasoningEffortUnsupported:`Not offered by this model (supported: {{levels}}) — the setting will be omitted.`},m={heading:`Execution`,maxIterationsLabel:`Max iterations per run`,unlimitedLabel:`Unlimited`,maxIterationsHint:`Maximum LLM turns per run. 0 = unlimited.`,autoProceedMaxIterationsLabel:`Auto-proceed max iterations`,autoProceedMaxIterationsHint:`Stop auto-proceed after N iterations. 0 = unlimited.`,confirmExitLabel:`Confirm before exit`,confirmExitHint:`First Ctrl+C aborts work, second confirms exit.`,chimeLabel:`Chime on completion`,chimeHint:`Terminal bell when an agent run finishes.`,breakerLabel:`Process circuit breaker`,breakerHint:`Gate bash/exec after repeated failures; trips arm the kill/reset countdown.`,breakerTimeoutLabel:`Breaker kill/reset timeout`,breakerTimeoutHint:`Delay before automatic kill/reset when the breaker trips. 0 = manual recovery.`,availabilityHeading:`Provider/model availability calendar`,availabilityHint:`Prevent autonomous and overnight runs from using selected providers or models during recurring windows.`},h={chimeraDedicatedHeading:`Chimera — Post-session Code Review`,chimeraDedicatedHint:`Automated code quality review that runs after every agent session. Catches regressions, anti-patterns, and potential bugs.`,chimeraSectionEnabled:`Post-session review (Chimera)`,chimeraSectionEnabledHint:`Run a code review agent after every iteration.`,chimeraProviderLabel:`Chimera provider`,chimeraProviderHint:`Provider for the review agent. Select one from your configured providers.`,chimeraProviderSessionDefault:`Session default`,chimeraModelLabel:`Model`,chimeraModelSessionDefault:`Session default`,chimeraModelHint:`Model for the review agent. Requires a provider first.`,chimeraMaxFilesLabel:`Max files per review`,chimeraMaxFilesHint:`Maximum number of changed files included in a single review call.`,chimeraAutoFixLabel:`Auto-fix mode`,chimeraAutoFixHint:`Whether the review agent should automatically apply fixes for issues it finds.`,chimeraAutoFixOff:`Off — review only`,chimeraAutoFixAsk:`Ask — confirm before applying`,chimeraAutoFixAuto:`Auto — apply without confirmation`,autoReviewCascadeOnLabel:`Cascade on`,autoReviewCascadeOnHint:`When a review finds issues at or above this severity, spawn follow-up agents.`,autoReviewCascadeOnOff:`Off`,autoReviewCascadeOnHigh:`High or above`,autoReviewCascadeOnCritical:`Critical only`,chimeraPickModel:`Pick provider/model for Chimera`,chimeraPickModelHint:`Select a provider and model for post-session code review.`,autoReviewSectionEnabled:`Mid-session review (Auto-Review)`,autoReviewSectionEnabledHint:`Run a review agent mid-session on every file change.`,autoReviewFallbackProfileLabel:`Fallback / Round-robin profile`,autoReviewFallbackProfileHint:`Named model profile for auto-review. It supplies the fallback pool and the models used by round-robin or random selection.`,autoReviewFallbackProfileNone:`None — use provider+model or session defaults`,autoReviewModelSelectionLabel:`Profile selection`,autoReviewModelSelectionHint:`Choose the next profile model in order, or pick a random starting model for each review.`,autoReviewModelSelectionRoundRobin:`Round-robin — iterate in profile order`,autoReviewModelSelectionRandom:`Random — pick from the profile`,autoReviewFallbackModelsLabel:`Fallback / Round-robin models`,autoReviewFallbackModelsEmpty:`No fallback / round-robin models configured`,autoReviewFallbackModelsHint:`Models resolved from the selected profile or global chain; they form both the selection pool and the retry chain.`,autoReviewModelLabel:`Model`,autoReviewModelHint:`Model for the auto-review agent. Requires a provider first.`,autoReviewDebounceLabel:`Debounce interval (ms)`,autoReviewDebounceHint:`Minimum gap between review triggers after a file change.`,autoReviewMaxFilesLabel:`Max files per batch`,autoReviewMaxFilesHint:`Files per auto-review call.`,autoReviewMaxConcurrentLabel:`Max concurrent reviews`,autoReviewMaxConcurrentHint:`Parallel review subagent cap.`,autoReviewCascadeLabel:`Cascade on`,autoReviewCascadeHint:`Follow-up agent threshold — spawns security-scanner and bug-hunter above this severity.`,autoReviewCascadeOff:`Off — no cascade`,autoReviewCascadeCritical:`Critical — only critical findings`,autoReviewCascadeHigh:`High — critical or high findings`,autoReviewPickModel:`Pick provider/model for Auto-Review`,autoReviewPickModelHint:`Select a provider and model, or a named fallback profile, for mid-session auto-review.`,pluginsPerPluginHint:`Enable or disable individual plugins. Changes take effect on next session.`},g={heading:`Fallback / Round-robin Models`,body:`These ordered model chains support failover and profile-based round-robin selection. On rate limits, 5xx errors, or stalls, the agent retries on the next available model.`,autoFallbackLabel:`Auto fallback`,autoFallbackHint:`When the chain above is empty, auto-derive one from your keyed providers.`,favoritesOnlyLabel:`Favorites only`,favoritesOnlyHint:`When auto fallback derives a chain, restrict it to your favorite models.`,profilesHeading:`Fallback / Round-robin Profiles`,addProfile:`Add`,noProfiles:`No named fallback profiles yet.`,createDefault:`Create default from active model`,useChain:`Use chain`,setLeader:`Set leader`,profileEmpty:`Profile is empty.`,favoritesHeading:`Favorite Models`,favoritesEmpty:`Favorites are shown first and can constrain auto fallback.`,addModelToProfile:`Add model to profile…`,addFavoriteModel:`Add favorite model…`,inactive:`inactive`},_={heading:`Fleet & Streaming`,fleetChatVerbosityLabel:`Stream fleet events`,fleetChatVerbosityHint:`Show live subagent activity in the fleet panel.`,maxConcurrentLabel:`Max concurrent subagents`,maxConcurrentHint:`Maximum number of subagents that can run simultaneously.`,nextPredictionLabel:`Next-step prediction`,nextPredictionHint:`After a turn completes, predict likely next steps.`,nextStepsToolLabel:`Nextsteps tool`,nextStepsToolHint:`Let the agent record its follow-up suggestions with a tool call instead of writing the block by hand. Applies to the next session.`},v={heading:`Integrations`,hqHeading:`HQ Client`,hqPublishingLabel:`HQ publishing`,hqPublishingHint:`Publish this WebUI/client session to WrongStack HQ.`,hqUrlLabel:`HQ URL`,hqUrlHint:`Leave empty for same-machine auto-discovery.`,hqTokenLabel:`HQ client token`,hqRawContentLabel:`Raw HQ content`,hqRawContentHint:`Send raw content previews to HQ instead of redacted previews.`,wrongProxyHeading:`WrongProxy / WrongTrace`,wrongProxyEnabledLabel:`Route base URLs through the local proxy`,wrongProxyEnabledHint:`When enabled, every provider's base URL is rewritten through the configured proxy (default http://localhost:3444/proxy/<host><path>). openai-codex is excluded — it talks directly to the ChatGPT backend with an OAuth-issued token.`,wrongProxyUrlLabel:`Proxy URL`,wrongProxyUrlHint:`Where the local proxy daemon listens. The system periodically probes <url>/api/health; an unreachable daemon disables rewriting without retrying every keystroke.`,wrongProxyChangesApply:`Changes apply immediately to subsequent requests — no restart needed.`,telegramHeading:`Telegram Notifications`,telegramSessionEndLabel:`Session end`,telegramSessionEndHint:`Send a summary when a session ends.`,telegramDelegateLabel:`Delegate finished`,telegramDelegateHint:`Send a humanized note when a subagent completes.`,telegramLongToolLabel:`Long-running tools`,telegramLongToolHint:`Notify when a tool exceeds {{ms}}ms. Set 0 to disable.`,telegramChangesApply:`Changes apply immediately.`,telegramNotConfigured:`Telegram is not configured.`,disabledHint:`Enable the feature in the Context tab to use this section.`},y={heading:`Context & Memory`,flagsHeading:`Feature Flags`,memoryLabel:`Memory`,memoryHint:`Persist and recall facts across sessions.`,skillsLabel:`Skills`,skillsHint:`Load domain-specific skill prompts.`,indexOnStartLabel:`Index on start`,indexOnStartHint:`Build the codebase symbol index at session start.`,mcpLabel:`MCP servers`,mcpHint:`Enable Model Context Protocol integrations.`,pluginsLabel:`Plugins`,pluginsHint:`Load and run user-installed plugins.`,modelsRegistryLabel:`Models registry`,modelsRegistryHint:`Use the models.dev catalog for provider discovery.`,autoCompactLabel:`Auto-compact context`,autoCompactHint:`Automatically trim the context window when near limits.`,compactorStrategyLabel:`Compactor strategy`,compactorStrategyHint:`How the context is compacted when it grows too large.`,compactorStrategyHybrid:`Hybrid — fast rules (default)`,compactorStrategyIntelligent:`Intelligent — LLM summarization`,compactorStrategySelective:`Selective — LLM-driven selection`,contextModeLabel:`Context mode`,contextModeHint:`Context window policy — balanced is the default.`,contextModeBalanced:`Balanced — normal context usage`,contextModeFrugal:`Frugal — conservative token use`,contextModeDeep:`Deep — larger context for complex tasks`,tokenSavingLabel:`Token-saving mode`,tokenSavingHint:`Controls the next session's direct tool schemas and system prompt size.`,tokenSavingAuto:`Auto — adapt prompt to the model window`,tokenSavingOff:`Off — no token saving`,tokenSavingMinimal:`Minimal — basic optimization`,tokenSavingLight:`Light — moderate reduction`,tokenSavingMedium:`Medium — significant savings`,tokenSavingAggressive:`Aggressive — smallest direct surface and prompt`,pluginsPerPluginHeading:`🔌 Per-Plugin Controls`,pluginSearch:`Search plugins`,pluginEnabledOnly:`Enabled only`,pluginNoMatches:`No plugins match this filter.`,pluginsPerPluginHint:`Enable or disable individual plugins. Changes take effect on next session.`,pluginChimera:`Chimera — post-session code review`,pluginSkills:`Skills — skill library & authoring`,pluginPrompts:`Prompts — prompt library & gen`,pluginCostTracker:`Cost Tracker — token & cost tracking`,pluginTelegram:`Telegram — notification bot`,pluginErrorLens:`Error Lens — failure diagnostics`,pluginSecretScanner:`Secret Scanner — credential detection`,pluginLintGate:`Lint Gate — lint before iteration`,pluginDiffSummary:`Diff Summary — compact diffs`,pluginDepGuard:`Dep Guard — dependency rules`,pluginTypeGate:`Type Gate — typecheck before iteration`,pluginInjectionShield:`Injection Shield — prompt injection`,pluginPromptFirewall:`Prompt Firewall — input filtering`,pluginTokenBudget:`Token Budget — token limits`,pluginLoopBreaker:`Loop Breaker — runaway detection`},b={heading:`Logs & Debug`,logLevelLabel:`Log level`,logLevelHint:`Minimum severity for server-side logging.`,logLevelDebug:`Debug — everything`,logLevelInfo:`Info — normal flow`,logLevelWarn:`Warn — problems only`,logLevelError:`Error — failures only`,auditLevelLabel:`Audit level`,auditLevelHint:`Detail level for session audit logs.`,auditLevelMinimal:`Minimal — errors only`,auditLevelStandard:`Standard — tool calls + errors`,auditLevelFull:`Full — every event (large logs)`,fsAccessLabel:`Filesystem access`,fsAccessHint:`Scope of the file tools. Applies on the next session.`,fsAccessUnrestricted:`Unrestricted — any path`,fsAccessProject:`Project — confined to project root`,debugStreamLabel:`Debug stream`,debugStreamHint:`Raw SSE hex-dump to the server stderr for provider debugging.`},x={heading:`Security & Monitoring`,brainHeading:`🧠 Brain — Decision Control`,brainHint:`Decision models, council, escalation and risk ceiling — applied live, saved to the global config.`,shadowHeading:`👁 Shadow Agent — Fleet Monitor`,shadowHint:`The Shadow Agent monitors all fleet agents, tracks their tasks, and detects anomalies.`,toolsHeading:`🔧 Tool Access Control`,toolsHint:`Enable or disable individual tools. Mutating tools are marked in amber.`,breakerHeading:`Process Circuit Breaker`,breakerHint:`Gate bash/exec after repeated failures; trips arm the kill/reset countdown.`},S={switchingTo:`Switching to {{provider}} / {{model}}…`,switching:`Switching model…`,switchingToTarget:`Switching to {{target}}…`,previousModel:`previous model`,modelSwitchedNextRequest:`Model switched: {{from}} → {{to}}. Active for the next LLM request.`,modelSwitchedRunActive:`Model switched: {{from}} → {{to}}. Active for the next LLM request; the current run continues and is not restarted.`,fallbackExists:`Fallback profile "{{name}}" already exists`,selectProviderModelFirst:`Select a provider and model first`,defaultProfileCreated:`Default fallback profile created`,profileEmpty:`Fallback profile "{{name}}" is empty`,leaderSetFrom:`Leader set from {{name}}`,modelSwitchTimeout:`Model switch timed out. Please try again.`},C={workbenchHeading:`Workbench chrome`,workbenchHint:`Toggle visibility of workbench surfaces in the chat view.`,showModelReasoningLabel:`Show model reasoning`,showModelReasoningHint:`Render LLM reasoning/thinking blocks in chat history (TUI parity).`,showAgentSwarmPanelLabel:`Agent swarm panel`,showAgentSwarmPanelHint:`Controls where the agent swarm (fleet + mission queue) is displayed.`,swarmPanelBottom:`Bottom panel`,swarmPanelSidebar:`Right sidebar`,swarmPanelOff:`Off`,titleAnimationLabel:`Title animation`,titleAnimationHint:`Animate the terminal/tab title with run-state status (TUI parity).`,keyboardShortcutsLabel:`Keyboard shortcuts`,keyboardShortcutsHint:`Enable global keyboard shortcuts (Ctrl+K, Alt+1..4, Vim keys, etc.). Off by default.`,statusChipHeading:`Status chip & statusline`,statusChipHint:`Visual style for the TUI/CLI statusline and working-state chip.`,thinkingWordLabel:`Thinking word`,thinkingWordHint:`Single short word shown in the TUI status chip while the agent is working.`,thinkingWordInvalid:`Use one word of up to 16 letters, numbers, underscores, or hyphens.`,statuslineModeLabel:`Statusline mode`,statuslineModeHint:`Density of the TUI statusline rail.`,statuslineModeMinimum:`Minimum`,statuslineModeDetailed:`Detailed`,statuslineModeNoColor:`No color`,animationStyleLabel:`Animation style`,animationStyleHint:`Animation for the TUI working-state chip.`,animationStyleRainbow:`Rainbow`,animationStyleWave:`Wave`,animationStylePulse:`Pulse`,animationStyleDots:`Dots`,animationStyleBreathe:`Breathe`,animationStyleStatic:`Static`,animationStyleCycle:`Cycle`,refineHeading:`Refine countdown & diffs`,refineHint:`Configure the pre-refine grace countdown and the multi-diff summary footer cutoff.`,preRefineSecondsLabel:`Pre-refine countdown`,preRefineSecondsHint:`Grace period before the refiner starts (seconds). 0 = skip the countdown and refine immediately.`,preRefineSecondsPresets:`Presets: {{presets}} seconds (0 = off).`,multiDiffSummaryLabel:`Multi-diff summary`,multiDiffSummaryHint:`Minimum number of files before the aggregate 'N files · +X -Y' footer is shown above per-file blocks.`,multiDiffSummaryPresets:`Presets: {{presets}} (0 = off).`,memoryHeading:`Read tool & SAGE memory injection`,memoryHint:`Toggle what the read tool includes and when SAGE memory blocks are surfaced in tool results.`,readSymbolsLabel:`Read symbols`,readSymbolsHint:`When true, the read tool includes codebase-index symbols alongside file content.`,showSageMemoryInjectLabel:`Show SAGE Memory Inject`,showSageMemoryInjectHint:`When true, surface SAGE memory-injection blocks in tool results.`,sageMemoryInjectThresholdLabel:`SAGE Memory Inject threshold`,sageMemoryInjectThresholdHint:`Minimum relation strength required for an injected SAGE memory (0.72–0.95).`,footnote:`Settings here mirror the TUI /settings picker. Toggles apply live; some fields require a session restart.`,sageRelaxed:`0.72 (relaxed)`,sageDefault:`0.85 (default)`,sageStrict:`0.95 (strict)`},w=`Clear local preferences`,T=`Cancel`,E=`Clear this browser’s preferences?`,D=`Clears preferences stored in this browser and reloads the page. Connected settings are loaded again from the server.`,O=`Clear and reload`,k={heading:`Brain`,headingHint:`Decision models, council, escalation and risk ceiling — applied live, saved to the global config.`,riskHeading:`Autonomy ceiling`,escalationHeading:`Escalation`,escalationModeLabel:`Mode`,escalationModeHint:`Headless: the Brain never blocks on a human — unanswered escalations resolve via the safe terminal policy. Applies to CLI/TUI sessions; the standalone WebUI Brain is always headless.`,escalationDecisionTimeoutLabel:`Decision timeout`,escalationDecisionTimeoutHint:`Per-LLM-call time budget for one Brain decision.`,escalationHumanTimeoutLabel:`Human answer timeout`,escalationHumanTimeoutHint:`Interactive mode: how long an escalation prompt may wait before the terminal policy resolves it.`,escalationTerminalPolicyLabel:`Terminal policy`,escalationTerminalPolicyHint:`How a headless escalation resolves with no human available. Conservative accepts a recommended option at low/medium risk; deny-all never auto-accepts; continue-on-recommended accepts a recommended option at ANY risk.`,escalationDecisionLogSizeLabel:`Decision log size`,escalationDecisionLogSizeHint:`Rolling in-memory decision log kept for the status view.`,rulesHeading:`Deterministic rules`,rulesConfigured:`{{count}} configured`,rulesBody:`Evaluated before any provider call — first match wins. Edit them in the global config file; this view is read-only.`,rulesOff:`off`,rulesDropped:`{{count}} rule(s) dropped`,heuristicsHeading:`Heuristics`,heuristicsBody:`Free pattern guesses that settle a question before any model runs. All on by default — turn one off when its guess is wrong for your workload.`,heuristicsLowRiskLabel:`Low-risk auto-answer`,heuristicsLowRiskHint:`Auto-answer low-risk requests that already carry a recommended option.`,heuristicsBlockedLabel:`Blocked-resolved`,heuristicsBlockedHint:`'blocked …' plus an explicit resolution marker in the context resolves to continue.`,heuristicsDeadlockLabel:`Deadlock skip`,heuristicsDeadlockHint:`'deadlock' plus failed work units in the context resolves to skip and continue.`,heuristicsRetryLabel:`Retry exhausted`,heuristicsRetryHint:`'failed'/'retry' plus demonstrably exhausted retries marks the unit failed and moves on.`,heuristicsPingLabel:`Continue ping`,heuristicsPingHint:`A bare continue/proceed ping with no competing alternative resolves to continue.`,heuristicsMarkers:`Markers: {{markers}}`,qualityHeading:`LLM quality`,qualityCircuit_one:`circuit {{state}} · {{count}} fail`,qualityCircuit_other:`circuit {{state}} · {{count}} fails`,qualityResponseBudgetLabel:`Response budget`,qualityResponseBudgetHint:`Output tokens per decision call. A Brain response is one decision plus a one-sentence rationale.`,qualityRejectLabel:`Reject uncertain answers`,qualityRejectHint:`Treat a declined or empty response as 'this tier could not decide' instead of accepting it as an answer.`,qualityMinConfidenceLabel:`Minimum confidence`,qualityMinConfidenceHint:`Reject answers whose self-reported confidence is below this. Responses reporting no confidence always pass.`,qualityDenyTerminalLabel:`Deny is terminal`,qualityDenyTerminalHint:`Whether a deny from the single-LLM tier ends the decision. 'when-decided' makes a genuine refusal terminal while infrastructure failures still escalate.`,traceHeading:`Replay trace`,traceRecordLabel:`Record decision traces`,traceRecordHint:`Per-decision JSONL of every tier, pool target and council vote, with timings and token usage. Off by default — enabling it writes decision content to disk.`,traceContentLabel:`Trace content`,traceContentHint:`'full' keeps question and context (needed to replay a decision); 'redacted' truncates free text; 'none' records metadata only.`,cacheHeading:`Decision cache`,cacheStats:`{{hits}} hit / {{misses}} miss · {{size}} live`,cacheReplayLabel:`Replay identical verdicts`,cacheReplayHint:`Reuse a previous council/LLM verdict for an identical repeated question. Deterministic tiers and ask-human are never cached; a decision the ledger observes to have failed is evicted.`,cacheLifetimeLabel:`Entry lifetime`,cacheLifetimeHint:`How long a cached verdict stays replayable.`,cacheMaxEntriesLabel:`Maximum entries`,cacheMaxEntriesHint:`Cap on live cached verdicts.`,monitorHeading:`Monitor`,monitorBody:`Distress-signal self-activation. The monitor is built once at boot, so these apply to the next session rather than live.`,monitorWatchLabel:`Watch for distress signals`,monitorWatchHint:`Tool-failure streaks, error storms, agent stalls and file churn engage the Brain on their own.`,monitorPolicyLabel:`Signal policy`,monitorPolicyHint:`How a detected signal resolves. 'llm' consults the Brain; 'steer' always intervenes and 'observe' never does — both without a provider call.`,modelsHeading:`Decision models`,modelsSessionBadge:`session model`,modelsResolvedBadge:`{{resolved}}/{{total}} resolved`,modelsUseSessionLabel:`Use session model`,modelsUseSessionHint:`Decide with whatever model the session is running. Turn off by adding models below.`,modelsAddModel:`Add model`,modelsPoolStrategyLabel:`Pool strategy`,modelsPoolStrategyHint:`Fallback: first model is primary, the rest are tried in order on failure. Round-robin: decisions rotate across the pool.`,councilHeading:`Council`,councilConvened:`convened`,councilDisabled:`disabled`,councilEnableLabel:`Enable multi-LLM council`,councilEnableHint:`High-stakes questions are voted on by independent seats (executor / skeptic-with-veto / auditor) instead of one model. Needs ≥2 resolvable voters (explicit seats below, or a ≥2-model pool).`,councilSeatsDerived:`Seats derived from the pool: {{seats}}`,councilCustomLens:`Custom decision lens — sent to the seat verbatim.`,councilCustomOption:`{{persona}} (custom)`,councilVeto:`veto`,councilAddVoter:`Add voter`,councilRiskFloorLabel:`Risk floor`,councilRiskFloorHint:`Minimum question risk that convenes the council instead of the single-model tier.`,councilJudge:`Judge`,councilJudgeDesc:`Tie-breaker model that sees every vote's rationale.`,councilResolved:`resolved: {{model}}`,councilAlsoVoter:`⚠ also a voter`,councilAuto:`auto`,councilPick:`Pick…`,councilAutoReset:`Auto`,councilQuorumLabel:`Quorum`,councilQuorumHint:`Fraction of seats that must return a valid vote.`,councilApprovalLabel:`Approval`,councilApprovalHint:`Fraction of cast vote weight the winning option must exceed.`,councilPerSeatTimeoutLabel:`Per-seat timeout`,councilPerSeatTimeoutHint:`Time budget for a single seat's vote. Slower than the decision timeout means one stalled seat holds up the vote.`,councilMaxConcurrencyLabel:`Max concurrency`,councilMaxConcurrencyHint:`How many seats vote in parallel. Lower this when the pool shares one rate-limited provider.`,councilDistinctnessLabel:`Seat distinctness`,councilDistinctnessHint:`Reject duplicate seats: 'model' requires distinct models, 'provider' requires independent providers so one outage cannot sway the vote.`,councilVoterBudgetLabel:`Voter response budget`,councilVoterBudgetHint:`Output tokens per seat call — reasoning models spend thinking tokens from this budget.`,councilRoundsLabel:`Deliberation rounds`,councilRoundsHint:`Round 1 is independent. Later rounds show each seat the others’ ballots so it can revise. Only the last round is tallied — and every round costs one more call per seat.`,councilJudgeBudgetLabel:`Judge response budget`,councilJudgeBudgetHint:`Output tokens for the tie-breaking judge call.`,councilSeatTemplate:`Seat template:`,ledgerHeading:`Decision ledger`,ledgerRecordLabel:`Record decisions + outcomes`,ledgerRecordHint:`Persists every decision and its observed outcome; similar past outcomes are fed back into future Brain prompts.`,ledgerAutoDenyLabel:`Auto-deny after failures`,ledgerAutoDenyHint:`Deny deterministically (no LLM) once this many consecutive approvals of a decision group ended in observed failures.`,ledgerMemoryEntriesLabel:`In-memory entries`,ledgerMemoryEntriesHint:`Ring size held in memory, and the number of past entries seeded from disk at boot.`,ledgerRetryWindowLabel:`Intervention retry window`,ledgerRetryWindowHint:`A same-kind monitor intervention re-firing inside this window marks the previous steer as a failure.`,recentHeading:`Recent decisions ({{count}})`,recentEmpty:`No decisions recorded yet this session.`,optInteractive:`Interactive (ask me)`,optHeadless:`Headless (never ask)`,optConservative:`Conservative (default)`,optDenyAll:`Deny all`,optContinueRecommended:`Continue on recommended`,optNeverDefault:`Never (default)`,optWhenDecided:`When decided`,optAlways:`Always`,optFullDefault:`Full (default)`,optRedacted:`Redacted`,optMetadataOnly:`Metadata only`,optConsultBrain:`Consult the Brain (default)`,optAlwaysSteer:`Always steer`,optObserveOnly:`Observe only`,optFallback:`Fallback`,optRoundRobin:`Round-robin`,optMediumPlus:`Medium+`,optHighPlus:`High+`,optCriticalOnly:`Critical only`,optNoneDefault:`None (default)`,optDistinctModels:`Distinct models`,optDistinctProviders:`Distinct providers`,optDefault3:`Default (3)`,optOff:`Off`,pickPoolTitle:`Add Brain pool model`,pickPoolHint:`Ordered decision pool — first is primary.`,pickVoterTitle:`Add council voter`,pickVoterHint:`Dialog stays open — add ≥2 voters, then close.`,pickJudgeTitle:`Pick council judge`,pickJudgeHint:`Tie-breaker that sees every vote.`,persistError:`Settings applied live but not saved.`,riskCopy:{off:`Human decides everything`,low:`Auto-decide low risk only`,medium:`Auto-decide up to medium risk`,high:`Auto-decide up to high risk`,all:`Auto-decide everything`},rulesConfigured_one:`{{count}} configured`,rulesConfigured_other:`{{count}} configured`},A={default15s:`Default (15s)`,waitForever:`Wait forever`,defaultHalf:`Default (0.5)`,all:`All`,n200Default:`200 (default)`,offDefault:`Off (default)`,n20Default:`20 (default)`,m5Default:`5m (default)`,default:`Default`,oneSerial:`1 (serial)`,roundsOff:`1 (no deliberation)`,default500:`Default (500)`,default10m:`Default (10m)`},j={capToolCall:`Tool call`,capReasoning:`Reasoning`,capTemperature:`Temperature`,capAttachment:`Attachment`,capStructuredOutput:`Structured output`,capOpenWeights:`Open weights`},M={presetsHeading:`Font presets`,presetsHint:`A preset sets every role at once; fonts download only when first used.`,presets:{workbench:{label:`Workbench`,description:`The default operator-workbench look.`},plex:{label:`IBM Plex`,description:`One engineered family end to end.`},modern:{label:`Modern`,description:`Neutral Inter with JetBrains Mono for code.`},geist:{label:`Geist`,description:`A crisp Geist sans and mono pairing.`},classic:{label:`Classic`,description:`Adobe's Source Sans, Serif, and Code Pro.`},editorial:{label:`Editorial`,description:`Serif headings and a bookish chat font.`},readable:{label:`Readable`,description:`High-legibility faces for long sessions.`},friendly:{label:`Friendly`,description:`Rounded, relaxed shapes with Fira Code.`},monospace:{label:`Monospace`,description:`Monospace everywhere, terminal style.`},system:{label:`System`,description:`Your OS fonts, nothing downloaded.`}},rolesHeading:`Fonts by role`,rolesHint:`Override any role on top of the preset. Roles marked “Same as” follow their parent role.`,roles:{ui:{label:`Interface & panels`,hint:`Buttons, menus, sidebars, lists, and settings.`},display:{label:`Headings`,hint:`Page and section titles.`},reading:{label:`Chat & documents`,hint:`Assistant replies, markdown, and mailbox messages.`},code:{label:`Inline code & data`,hint:`Code blocks, logs, IDs, and tabular readouts.`},editor:{label:`Code editor`,hint:`Monaco file editor and diff view.`},terminal:{label:`Terminal`,hint:`Integrated terminal sessions.`}},fromPreset:`Preset ({{name}})`,inherit:`Same as {{role}} ({{name}})`,categories:{sans:`Sans serif`,serif:`Serif`,mono:`Monospace`},systemTag:`system`,sizeHeading:`Size & spacing`,sizeHint:`Interface text size scales every panel; editor and terminal sizes are set in pixels.`,sizePresets:{compact:`Compact`,normal:`Normal`,comfortable:`Comfortable`,large:`Large`,custom:`Custom`},controls:{uiScale:{label:`Interface text size`,hint:`Scales text across panels, chat, and dialogs.`},editorFontSize:{label:`Editor font size`,hint:`Monaco editor and diff view.`},codeLineHeight:{label:`Code line height`,hint:`Editor, diff view, and code blocks.`},terminalFontSize:{label:`Terminal font size`,hint:`Integrated terminal.`},terminalLineHeight:{label:`Terminal line height`,hint:`Row spacing in the terminal.`},ligatures:{label:`Code ligatures`,hint:`Joins => !== >= into single glyphs in fonts that support it (Fira Code, Cascadia, JetBrains Mono…). Not applied in the terminal.`}},previewHeading:`Live preview`,preview:{heading:`Refactor the session loader`,body:`The agent read 12 files and proposed a two-step change. Review the diff before applying it.`,label:`Interface label`},resetAll:`Reset all font settings`,resetOverrides:`Clear role overrides`},N={description:`Manage the decision provider and see where Jev is used.`,loading:`Loading Jev settings…`,timeout:`No response from server. Reconnect and retry.`,route:`Decision provider`,routeChange:`Changing provider clears the previous key, endpoint and model. Enter a new key or use the provider environment variable.`,key:`API key`,keyHint:`Leave blank to keep the current key`,removeKey:`Remove saved key (environment key may still apply)`,endpoint:`Endpoint override`,model:`Model override`,defaultHint:`Empty uses provider default`,requestTimeout:`Request timeout (ms)`,featureHint:`Switches permit Jev usage. Actual use also depends on the prerequisites and triggers below.`,save:`Save Jev settings`,test:`Test saved connection`,testHint:`The test sends one small billed request. Save changes first. Restart existing sessions to apply all consumers.`,activity:`Jev activity`,activityHint:`Refreshes every 3 seconds. Last 300 requests in this server process, across its sessions. No prompts, credentials or raw errors. Disk log rotates at 5 MB. Answered means a typed response, not necessarily a decision accepted by the consumer.`,filter:`Feature`,all:`All`,empty:`No matching Jev requests yet. Test the connection or use an enabled feature.`,features:{brain:`Brain decisions`,memoryTriage:`Memory triage`,topicShift:`Topic changes`,memoryRecall:`Memory recall`,compaction:`Context compaction`,kanbanVerify:`Kanban verification`,modelTier:`Subagent model tier`,semanticLint:`Semantic lint`,tool:`Agent decision tool`,skillSuggestion:`Skill suggestions`,fleetDispatch:`Fleet dispatch`},readinessScope:`These are saved profile conditions, not the live state of every session. A request below means the service was called, not that its answer was accepted.`,unknownReadiness:`Readiness unavailable on this server`,unsaved:`Unsaved change`,lastRequest:`Last runtime request`,notObserved:`No runtime request in the displayed recent log.`,contextStrategy:`Profile compaction strategy`,contextScope:`Selective enables the Jev selection path. Save changes and restart existing sessions; a session-specific strategy can override this profile setting.`,openContext:`Open session context settings`,configureTiers:`Configure model tiers`,tiersHint:`Enable tiers and define at least two levels, cheapest first. Set their models or fallback profiles and a default tier. Changes here save immediately.`,checkHeading:`Live capability checks`,checkHint:`Runs 22 synthetic cases across all 11 features using the saved account, including disabled features. Makes billed API calls, sends no project content and changes no feature settings. Passing does not prove workload quality or that a session uses the feature.`,checkAll:`Test all 11 features`,checkRunning:`Running live checks…`,expected:`Expected`,actual:`Actual`,includeChecks:`Include diagnostic requests`,selfTest:`Diagnostic`,account:{ready:`Account configured`,unconfigured:`Account required`,unusable:`Account settings invalid`},readiness:{disabled:`Disabled`,"account-required":`Account required`,blocked:`Setup required`,conditional:`Configured · waiting for trigger`},reasons:{disabled:`This feature is not permitted to use Jev.`,"account-required":`Configure a valid Jev account first.`,"selective-required":`Jev selection requires selective compaction; hybrid and intelligent do not use this selector.`,"tiers-disabled":`The model tier system is disabled.`,"tiers-required":`Define at least two model tiers.`,"skills-disabled":`The global skills feature is disabled.`,"trigger-required":`Runs only when its trigger conditions are met.`,"memory-disabled":`Memory or SAGE is disabled.`,"recall-injection-required":`SAGE turn context recall is disabled; the Jev recall filter requires this path.`},triggers:{brain:`Runs before later decision tiers; uncertain answers defer.`,memoryTriage:`Runs during triage value evaluation and merge decisions.`,topicShift:`Runs when topic-change prechecks require a judgment; repeated results may be cached.`,memoryRecall:`Filters candidates returned by SAGE turn context recall; cached judgments are reused.`,compaction:`Rates middle conversation turns during selective compaction; requires a provider and sufficient history.`,kanbanVerify:`Judges open agent-type criteria against changed files and their diff.`,modelTier:`Suggests a tier for delegations with no explicit model/tier and no matching role/phase route.`,semanticLint:`Runs when the semantic lint command finds candidates; it is not an automatic edit watcher.`,tool:`Runs when an agent calls the jev tool with evidence and typed questions.`,skillSuggestion:`Requires skills enabled, at least two skills, and gate/fit thresholds; results may be cached.`,fleetDispatch:`Runs only for ambiguous routing with multiple candidate roles.`},recallTurnContext:`SAGE turn context recall`,recallTurnHint:`Adds relevant memories to each new turn; the Jev recall filter runs on this path. Memory and SAGE must also be enabled. Save and restart existing sessions.`},P={title:e,subtitle:t,navigation:n,providerTest:r,tabs:i,general:a,model:o,connection:s,provider:c,providerModels:l,mcp:u,allowlist:d,oauth:f,agent:p,execution:m,features:h,fallbacks:g,fleet:_,integrations:v,context:y,logs:b,security:x,toast:S,display:C,resetLabel:w,cancel:T,resetConfirmTitle:E,resetConfirmBody:D,resetConfirmAction:O,brain:k,brainOpt:A,modelSchema:j,fonts:M,jev:N};export{p as agent,d as allowlist,k as brain,A as brainOpt,T as cancel,s as connection,y as context,P as default,C as display,m as execution,g as fallbacks,h as features,_ as fleet,M as fonts,a as general,v as integrations,N as jev,b as logs,u as mcp,o as model,j as modelSchema,n as navigation,f as oauth,c as provider,l as providerModels,r as providerTest,O as resetConfirmAction,D as resetConfirmBody,E as resetConfirmTitle,w as resetLabel,x as security,t as subtitle,i as tabs,e as title,S as toast};
@@ -0,0 +1 @@
1
+ var e=`Einstellungen`,t=`Konfiguriere jeden Aspekt deines Agenten-Arbeitsbereichs`,n={browse:`Durchsuchen`,search:`Einstellung suchen…`,clearSearch:`Suche löschen`,noResults:`Keine passenden Einstellungen`,workspace:`Arbeitsbereich`,models:`Modelle und Verbindungen`,behavior:`Agentenverhalten`,system:`System und Sicherheit`,label:`Einstellungsbereiche`},r={title:`Anbietertest`,description:`Gespeicherte Anbieter und Abonnements testen; Kontingent-, Authentifizierungs-, Latenz- und Tokenlimitfehler prüfen.`,open:`Anbietertest öffnen`},i={general:`Allgemein`,provider:`Anbieter`,connection:`Verbindungen`,agent:`Agent`,execution:`Ausführung`,fallbacks:`Fallbacks`,routing:`Routing`,fleet:`Flotte`,integrations:`Integrationen`,chimera:`Chimera`,context:`Kontext`,logs:`Protokolle`,security:`Sicherheit`,display:`Anzeige`,displayDesc:`Workbench-Optik, Status-Chip, Refine-Timer und Tool-/Memory-Injection-Schalter — spiegelt den TUI-SettingsPicker.`,generalDesc:`Darstellung, Sprache und Anzeigeeinstellungen — spiegelt die TUI-Einstellungsauswahl.`,providerDesc:`API-Schlüssel, gespeicherte Anbieter und der Anbieterkatalog.`,connectionDesc:`WebSocket-Server-URL und Verbindungsstatus.`,agentDesc:`Autonomie, Prompt-Verfeinerung, Reasoning und Modell-Routing.`,executionDesc:`Iterationslimits, Beenden-Verhalten und Prozess-Schutzschalter.`,fallbacksDesc:`Modell-Fallback-Kette, Favoriten und benannte Fallback-Profile.`,routingDesc:`Modell-Routing-Matrix pro Phase und Rolle.`,fleetDesc:`Gleichzeitige Subagenten, Streaming und Vorhersage nächster Schritte.`,integrationsDesc:`HQ-Client, MCP-Server und Telegram-Benachrichtigungen.`,chimeraDesc:`Konfiguration des Code-Review-Agents nach der Sitzung.`,contextDesc:`Feature-Flags, Kontextstrategie, Komprimierer und Plugin-Steuerung.`,logsDesc:`Protokollebene, Prüfdetails, Dateisystem-Zugriffsbereich und Debug-Stream.`,securityDesc:`Brain-Entscheidungskontrolle, Schatten-Agent und Tool-Zugriff.`,fonts:`Schriften`,fontsDesc:`Schriften für Oberfläche, Chat, Editor und Terminal; Größe, Zeilenhöhe und Ligaturen.`,jev:`Jev`,jevDesc:`TypeSafe / Jev`},a={heading:`Modell`,loading:`Modelle werden geladen...`,notFound:`Keine Modelle für diesen Anbieter gefunden. Der Katalog könnte leer sein oder noch laden.`,selectProviderFirst:`Zuerst einen Anbieter wählen`,context:`{{count}}k Kontext`},o={providerHealth:{heading:`Anbieterstatus`,hint:`Welche Anbieter-/Modellpaare gesund, eingeschränkt oder blockiert sind — und warum.`,refresh:`Aktualisieren`,empty:`Noch keine Anbieter erfasst.`,summary:`{{blocked}} blockiert · {{degraded}} eingeschränkt · {{healthy}} gesund`,totalFailures:`Fehler`,rateLimits:`Ratenlimits`,state:{blocked:`Blockiert`,degraded:`Eingeschränkt`,healthy:`Gesund`},blocked:`Blockiert`,degraded:`Eingeschränkt`,consecutive:`aufeinanderfolgende Fehler`,retryNow:`Jetzt erneut versuchen`,clear:`Löschen`,allHealthy:`Alle erfassten Anbieter sind gesund.`,statSuccesses:`Erfolge`,statFailures:`Fehler`,statRateLimits:`Ratenlimits`,statConsecutive:`aufeinanderfolgend`,lastError:`Letzter Fehler`,recentErrors:`Letzte Fehler`,autoRecovery:`Automatische Wiederherstellung um`,expired:`Abgelaufen`,remainingSecs:`{{secs}} s`,remainingMins:`{{mins}} min`,remainingHours:`{{hours}} h {{mins}} min`,explainHealthy:`Antwortet normal.`,explain402:`Abrechnungslimit erreicht (402). Etwa 15 Minuten blockiert, bis das Kontingent zurückgesetzt wird.`,explain403quota:`Nutzungslimit für diesen Abrechnungszeitraum erreicht. Bis zum nächsten Zurücksetzen blockiert (ca. 15 min).`,explain403auth:`Berechtigungs-/Authentifizierungsfehler. Nicht wiederholbar — API-Schlüssel und Zugriffsrechte prüfen.`,explain429:`Ratenlimit erreicht (429). Vorübergehende Drosselung — automatische Wiederherstellung.`,explain529:`Server überlastet (529). Der Anbieter ist stark ausgelastet.`,explain5xx:`Serverfehler ({{status}}). Vorübergehendes Backend-Problem.`,explainNetwork:`Netzwerk nicht erreichbar. Internetverbindung oder Statusseite des Anbieters prüfen.`,explainTimeout:`Zeitüberschreitung der Anfrage (408). Der Anbieter hat zu langsam geantwortet.`,explainStreamHang:`Stream angehalten (599). Der Anbieter hat mitten in der Antwort aufgehört.`,explainQuota:`Kontingent aufgebraucht. Bis zum Zurücksetzen blockiert.`,explainUnknown:`Fehlertyp: {{kind}} / Status: {{status}}.`},wsUrlLabel:`WebSocket-Server-URL`,wsUrlPlaceholder:`ws://localhost:3456`,wsUrlHint:`URL des Agent-WebSocket-Servers. Der Server läuft neben dem CLI.`,startingHeading:`Den WebSocket-Server starten`,startingBody:`Für die Entwicklung ./dev.ps1 vom Repo-Root ausführen (optional zuvor WS_HOST/WS_PORT setzen). Andernfalls die WebUI über die CLI starten: wstack --webui.`,healthHeading:`Verbindungszustand`,healthHint:`Live-Bericht zu Besitz, Speicher, Warteschlange, Watcher und Latenz der Projektdienste.`,healthRefresh:`Aktualisieren`,healthLoading:`Dienste werden geprüft…`,healthUnknown:`Zustand unbekannt`,healthDisconnected:`Die WebUI-WebSocket-Verbindung ist getrennt.`,healthRestartRequired:`Backend einmal neu starten, um den Verbindungsbericht zu aktivieren.`,healthOptional:`Bei Bedarf`,endpointInvalidBadge:`Socket-Pfad zu lang`,endpointInvalidRemedy:`Der IPC-Socket-Pfad überschreitet die Längenbeschränkung dieser Plattform, daher kann der gemeinsame Daemon nicht gestartet werden. Abfragen fallen auf einen langsameren prozesslokalen Modus zurück. Abhilfe: Setzen Sie ein kürzeres TMPDIR (z. B. export TMPDIR=/tmp) und starten Sie WrongStack neu.`,healthCounts:`{{healthy}} gesund · {{attention}} beachten · {{sleeping}} inaktiv`,healthOverall:{healthy:`Erforderliche Dienste gesund`,degraded:`Erforderlicher Dienst eingeschränkt`,error:`Erforderlicher Dienst nicht verfügbar`},healthStatus:{healthy:`Gesund`,degraded:`Eingeschränkt`,offline:`Inaktiv`,unavailable:`Nicht verfügbar`,error:`Fehler`},services:{kanban:{label:`Kanban IPC`},mailbox:{label:`Mailbox IPC`}},serviceActionRestart:`Neustarten {{label}}`,webuiTransport:`WebUI-Transport`,serviceAutoRestarting:`Automatischer Neustart…`},s={removeProfileConfirm:`Auth-Profil „{{alias}}“ und alle Schlüssel entfernen?`,removeProfileBody:`Gespeicherte Zugangsdaten und Verweise auf dieses Konto im Modell-Routing werden entfernt.`,deleteKeyConfirm:`Schlüssel „{{label}}“ aus „{{alias}}“ löschen?`,addProfile:`Konto / Auth-Profil hinzufügen`,profileAlias:`Alias des Auth-Profils`,profileHint:`Jedes Konto hat einen eigenen Alias und eigene Zugangsdaten. Fallback-Ziele sind alias/modell.`,profileExists:`Das Auth-Profil „{{alias}}“ existiert bereits. Wählen Sie einen anderen Alias.`,operationTimeout:`Keine Antwort vom Server. Prüfen Sie die Verbindung und versuchen Sie es erneut.`,savedProviderCount_one:`{{count}} Anbieter`,savedProviderCount_other:`{{count}} Anbieter`,keyCount_one:`{{count}} Schlüssel konfiguriert`,keyCount_other:`{{count}} Schlüssel konfiguriert`,activeKeyCount_one:`{{count}} aktiver Schlüssel`,activeKeyCount_other:`{{count}} aktive Schlüssel`,subscriptionHeading:`Abonnement-Anmeldung`,apiKeysHeading:`API-Schlüssel-Anbieter`,apiKeysBody:`Wähle einen Anbieter aus dem Katalog und füge einen API-Schlüssel hinzu oder verwalte gespeicherte Anbieter.`,tabCatalog:`Katalog`,tabSaved:`Gespeichert ({{count}})`,searchPlaceholder:`{{count}} Anbieter durchsuchen (Name / ID / Familie)…`,loadingCatalog:`Katalog wird geladen...`,noMatch:`Keine Anbieter passen zu „{{query}}“.`,configured:`Konfiguriert`,reachable:`Erreichbar`,envVar:`ENV: {{var}}`,modelCount_one:`{{count}} Modell`,modelCount_other:`{{count}} Modelle`,keyPlaceholder:`{{name}} API-Schlüssel`,orEnv:`Oder stattdessen {{env}} in der Umgebung setzen.`,addApiKey:`API-Schlüssel hinzufügen`,manageKeys:`Verwalte deine API-Schlüssel und Anbieterkonfigurationen`,addProvider:`Anbieter hinzufügen`,addCustomHeading:`Benutzerdefinierten Anbieter hinzufügen`,localServers:`Lokale Server — zum Ausfüllen klicken:`,providerIdPlaceholder:`Anbieter-ID (z.B. my-llm-server)`,apiKeyOptionalPlaceholder:`API-Schlüssel (optional)`,noSaved:`Noch keine gespeicherten Anbieter`,noSavedHint:`Füge einen Anbieter hinzu, um loszulegen`,apiKeysLabel:`API-Schlüssel`,addKey:`Schlüssel hinzufügen`,noKeys:`Keine Schlüssel konfiguriert`,active:`Aktiv`,setActive:`Als aktiv setzen`,keyLabelPlaceholder:`Schlüsselbezeichnung (z.B. default, production)`,apiKeyPlaceholder:`API-Schlüssel`,saveKey:`Schlüssel speichern`,savedToast:`Schlüssel für {{name}} gespeichert`},c={addCustom:`Benutzerdefiniertes Modell hinzufügen`,addCustomTitle:`Benutzerdefiniertes Modell hinzufügen`,addFromCatalog:`Aus Katalog hinzufügen`,catalogSearchPlaceholder:`models.dev-Katalog durchsuchen…`,catalogSearchTitle:`models.dev-Katalog durchsuchen`,colActions:`Aktionen`,colCaps:`Fähigkeiten`,colContext:`Kontext`,colCost:`Kosten`,colModalities:`Modalitäten`,colModel:`Modell`,colOutput:`Ausgabe`,colSource:`Quelle`,editModel:`Modell bearbeiten`,emptyState:`Noch keine Modelle — aus dem Katalog hinzufügen oder ein benutzerdefiniertes Modell erstellen.`,fieldContext:`Kontextfenster`,fieldCostInput:`Eingabekosten`,fieldCostOutput:`Ausgabekosten`,fieldDescription:`Beschreibung`,fieldFamily:`Familie`,fieldInputLimit:`Eingabelimit`,fieldInputModalities:`Eingabe-Modalitäten`,fieldLastUpdated:`Zuletzt aktualisiert`,fieldName:`Name`,fieldOutput:`Max. Ausgabe`,fieldOutputModalities:`Ausgabe-Modalitäten`,fieldReleaseDate:`Veröffentlichungsdatum`,modelAdded:`{{model}} hinzugefügt`,modelRemoved:`{{model}} entfernt`,modelSaved:`{{model}} gespeichert`,noResults:`Keine Modelle gefunden`,removeModel:`Modell entfernen`,sectionCapabilities:`Fähigkeits-Flags`,sectionDates:`Daten`,sectionIdentity:`Identität`,sectionLimits:`Grenzen`,sectionModalities:`Modalitäten`,sectionPricing:`Preise (pro 1M Token, USD)`,tabForm:`Formular`,tabRawJson:`Rohes JSON`,typeToSearch:`Zum Suchen tippen…`,useModel:`{{model}} verwenden`,usingModel:`{{model}} wird verwendet`,filterPlaceholder:`Modelle filtern…`},l={status:{connected:`Verbunden`,connecting:`Verbinden`,sleeping:`Ruhend`,discovering:`Entdecken`,error:`Fehler`,stopped:`Gestoppt`,unknown:`Unbekannt`},disabled:`MCP-Server sind deaktiviert.`,wakeTitle:`Server wecken`,sleepTitle:`Server schlafen legen`,discoverTitle:`Tools entdecken`,editTitle:`Bearbeiten`,removeTitle:`Entfernen`,statusLabel:`Status:`,enabledLabel:`Aktiviert:`,yes:`Ja`,no:`Nein`,descriptionLabel:`Beschreibung:`,pidLabel:`PID:`,errorLabel:`Fehler:`,toolsLabel:`Tools ({{count}}):`,noTools:`Noch keine Tools entdeckt`,serverNameRequired:`Servername ist erforderlich`,dialogTitleEdit:`MCP-Server bearbeiten`,dialogTitleAdd:`MCP-Server hinzufügen`,dialogTitleAddCustom:`Benutzerdefinierten MCP-Server hinzufügen`,fieldName:`Name`,fieldNamePlaceholder:`z.B. github, filesystem`,fieldTransport:`Transport`,fieldUrl:`URL`,fieldCommand:`Befehl`,fieldCommandPlaceholder:`z.B. npx`,fieldArgs:`Args`,fieldArgsHint:`(leerzeichengetrennt)`,fieldArgsPlaceholder:`z.B. -y @modelcontextprotocol/server-github`,fieldEnv:`Env-Variablen`,fieldEnvHint:`(KEY=Wert, eine pro Zeile)`,fieldDescription:`Beschreibung`,fieldDescriptionPlaceholder:`GitHub-MCP-Server für Repository-Zugriff`,enableServer:`Server aktivieren`,lazyConnect:`Verzögert verbinden`,lazyConnectHint:`(erst beim ersten Tool-Aufruf starten; bei Inaktivität automatisch schlafen)`,saveChanges:`Änderungen speichern`,addServer:`Server hinzufügen`,requires:`Erfordert: {{vars}}`,added:`Hinzugefügt`,heading:`MCP-Server`,summary:`{{connected}} verbunden · {{sleeping}} ruhend · {{total}} gesamt`,addCustom:`Benutzerdefiniert`,tabRecommended:`Empfohlen`,tabServers:`Server`,tabAddCustom:`Benutzerdefiniert`,recommendedBody:`One-Click-Hinzufügen für beliebte MCP-Server. Klicke auf Hinzufügen, um die Konfiguration vorzuausfüllen, und bestätige dann. Server mit Anmeldeinformationen benötigen ihre Env-Variablen vor der Nutzung.`,loadingServers:`Server werden geladen...`,noServers:`Keine MCP-Server konfiguriert`,noServersHint:`Wechsle zum Tab Empfohlen, um beliebte Server hinzuzufügen, oder Benutzerdefiniert für eigene.`,addCustomBody:`Konfiguriere einen benutzerdefinierten MCP-Server mit stdio-, SSE- oder HTTP-Transport.`,addCustomBodyHint:`Für beliebte Server nutze stattdessen den Tab Empfohlen — alles ist vorkonfiguriert.`,removeConfirmTitle:`Server „{{name}}“ entfernen?`,removeConfirmBody:`Dies entfernt den MCP-Server aus deiner Konfiguration.`,toastAdded:`Server „{{name}}“ hinzugefügt`,toastRemoved:`Server „{{name}}“ entfernt`,toastDiscovered:`{{count}} Tools von „{{name}}“ entdeckt`,toastSleeping:`Server „{{name}}“ ruht jetzt`,toastConnected:`Server „{{name}}“ verbunden`,toastReconnected:`Server „{{name}}“ neu verbunden`,toastDisconnected:`Server „{{name}}“ getrennt: {{reason}}`,toastError:`Server „{{name}}“ Fehler: {{error}}`,authRequired:`Anmeldung erforderlich`,authorized:`Autorisiert`,authorizeTitle:`Mit OAuth autorisieren`,authSignOutTitle:`OAuth-Anmeldedaten entfernen`,authSignOutBody:`Gespeicherte OAuth-Anmeldedaten für „{{name}}“ entfernen? Sie müssen sich erneut autorisieren.`,authPromptTitle:`Anmeldung bei „{{name}}“ abschließen`,authPromptBody:`Öffnen Sie die Autorisierungsseite und bestätigen Sie den Zugriff. Dieses Panel aktualisiert sich, sobald der Anbieter zurückleitet.`,authPromptOpen:`Autorisierungsseite öffnen`,toastAuthorized:`„{{name}}“ autorisiert`,toastAuthFailed:`„{{name}}“ benötigt eine Autorisierung{{suffix}}`},u={title:`Gespeicherte Allowlist löschen?`,body_one:`Dies entfernt das angeheftete Modell für {{provider}}. Die Modellauswahl fällt auf den models.dev-Katalog zurück.`,body_other:`Dies entfernt die {{count}} angehefteten Modelle für {{provider}}. Die Modellauswahl fällt auf den models.dev-Katalog zurück.`,undoHint:`Sie können dies 8 Sekunden nach dem Bestätigen rückgängig machen.`,keepTitle:`Allowlist behalten (Esc)`,clearTitle:`Allowlist löschen (Enter)`,clear:`Allowlist löschen`},d={termsWarning:`Mit einem Abonnement statt einem API-Schlüssel anmelden. Ein Abonnement außerhalb seines offiziellen Clients zu nutzen, kann die Nutzungsbedingungen des Anbieters verletzen — Ihr Konto könnte ratenlimitiert oder gesperrt werden. Ein API-Schlüssel ist der sanktionierte Weg für programmatische Nutzung.`,signIn:`Anmelden`,waitingBrowser:`Warte auf Ihre Anmeldung…`,openSignIn:`Anmeldeseite öffnen`,pasteLoopbackBusy:`Loopback-Port belegt — Redirect-URL einfügen`,pasteCantReach:`Browser erreicht diesen Server nicht? Redirect-URL einfügen`,submit:`Absenden`,enterCode:`Diesen Code auf der Verifizierungsseite eingeben:`,openVerification:`Verifizierungsseite öffnen`,waitingCode:`Warte auf Autorisierung…`,exchanging:`Tokens werden ausgetauscht…`,fetchingModels:`Modelle werden geladen…`,signedIn:`Angemeldet.`,signedInToast:`Angemeldet — {{provider}}`,signInFailed:`Anmeldung fehlgeschlagen`,accountCount_one:`{{count}} Konto gespeichert`,accountCount_other:`{{count}} Konten gespeichert`,active:`Aktiv`,inactive:`Inaktiv`,retry:`Erneut`,retryLogin:`Dieses Konto erneut authentifizieren`,newAccount:`Neues Konto`,aliasPlaceholder:`z.B. {{default}}`},f={showThinkingLabel:`Thinking-Protokolle anzeigen`,showThinkingHint:`Abgeschlossene Reasoning-Blöcke im Chatverlauf anzeigen.`,groupToolCallsLabel:`Tool-Aufrufe gruppieren`,groupToolCallsHint:`Aufeinanderfolgende Tool-Aufrufe in einem Chip zusammenfassen.`,autoCollapseInputLabel:`Composer unter Verlauf einklappen`,autoCollapseInputHint:`Wenn eine Sitzung mit Nachrichten geladen wird, den Composer unter dem Verlauf einklappen. Standardmäßig aus — der Composer bleibt ausgeklappt, bis du ihn manuell einklappst.`,themeHeading:`Design`,themeLight:`Hell`,themeDark:`Dunkel`,themeSystem:`System`,themeSystemHint:`System folgt deiner Hell-/Dunkel-Einstellung auf Betriebssystemebene.`,preferencesHeading:`Einstellungen`,compactDensity:`Kompakte Dichte`,compactDensityHint:`Engerer Abstand im gesamten Chat.`,soundOnComplete:`Ton bei Fertigstellung`,soundOnCompleteHint:`Spielt einen sanften Ton, wenn ein Durchlauf abgeschlossen ist.`,titleAnimation:`Titelanimation`,titleAnimationHint:`Animierten Terminal-Titel im CLI anzeigen.`,thinkingWordLabel:`Denkwort (CLI/TUI)`,thinkingWordHint:`Wort im TUI-Status-Chip. Ein einzelnes kurzes Wort.`,statuslineModeLabel:`Statuszeilen-Modus (CLI/TUI)`,statuslineModeHint:`Detailgrad der TUI-Statuszeile.`,statuslineModeDetailed:`Detailliert`,statuslineModeMinimum:`Minimal`,statuslineModeNoColor:`Ohne Farbe`,animationStyleLabel:`Animationsstil (CLI/TUI)`,animationStyleHint:`Animation für den TUI-Arbeitsstatus-Chip.`,animationStyleRainbow:`Regenbogen`,animationStyleWave:`Welle`,animationStylePulse:`Puls`,animationStyleDots:`Punkte`,animationStyleBreathe:`Atmen`,animationStyleStatic:`Statisch`,animationStyleCycle:`Zyklus`,languageHeading:`Sprache`,languageLabel:`Oberflächensprache`,languageHint:`Ändert nur den Oberflächentext. Prompts, Skills und Modellausgaben bleiben unberührt.`,paletteHeading:`Farbpalette`,paletteSwitcherTitle:`Farbpalette`,paletteHint:`Wähle die Hauptfarbe (und ihre Ableitungen). Neutrale Flächen bleiben gleich.`,paletteSignal:`Signal`,paletteEmeraldGold:`Smaragd & Gold`,paletteBlueNavy:`Marineblau`,palettePurplePink:`Violett & Pink`,paletteCyanTeal:`Cyan & Türkis`,paletteRoseCopper:`Rosa & Kupfer`,paletteIndigoAmber:`Indigo & Bernstein`,paletteSageSand:`Salbei & Sand`,paletteSlateViolet:`Schiefer & Violett`,paletteCoralMint:`Koralle & Minze`,paletteArcticEmber:`Arktis & Glut`,paletteMossRust:`Moos & Rost`},p={autonomyHeading:`Autonomie & Verhalten`,autonomyModeLabel:`Autonomie-Modus`,autonomyModeHint:`Wie unabhängig der Agent zwischen Zügen fortfährt.`,autonomyModeOff:`Aus — volle manuelle Kontrolle`,autonomyModeSuggest:`Vorschlagen — schlägt nächste Schritte vor`,autonomyModeAuto:`Auto — kurze Bestätigungsverzögerung`,autonomyModeEternal:`Eternal — autonom bis Ziel erreicht`,autonomyModeEternalParallel:`Eternal Parallel — Multi-Agent-Flotte`,autoProceedDelayLabel:`Auto-Fortsetzen-Verzögerung`,autoProceedDelayHint:`Millisekunden bevor der Agent im Auto-Modus fortfährt. 0 = sofort.`,yoloLabel:`YOLO-Modus`,yoloHint:`Werkzeugaufrufe ohne Rueckfrage ausfuehren - ausser den unten aufgefuehrten Schadensarten.`,yoloConfirmHeading:`Trotzdem fragen bei`,yoloConfirmIntro:`YOLO fuehrt alles andere unbeaufsichtigt aus. Bei diesen Schadensarten haelt es an und fragt zuerst nach.`,yoloConfirmLockedNote:`Diese beiden fragen immer. Sie schreiben die Dateien, die darueber entscheiden, ob ueberhaupt gefragt wird - sie abzuschalten hiesse, den Agenten sein eigenes Freigabesystem abschalten zu lassen.`,yoloKindLocked:`fragt immer`,yoloKind:{"disk-wipe":{label:`Datentraeger loeschen`,hint:`mkfs, dd auf ein Rohgeraet, format C:, Fork-Bombe`},"system-halt":{label:`Herunterfahren oder neu starten`,hint:`shutdown, reboot`},"delete-outside":{label:`Ausserhalb des Projekts loeschen`,hint:`rekursives Loeschen, das das Projekt verlaesst oder ein System-/Home-Verzeichnis trifft`},"git-history":{label:`Git-Historie umschreiben`,hint:`reset --hard, clean -f, push --force, filter-branch`},publish:{label:`Veroeffentlichen oder ausrollen`,hint:`npm publish, docker push, kubectl delete namespace`},"download-and-run":{label:`Heruntergeladenen Code ausfuehren`,hint:`curl | sh und Inline-Payloads, die laden und ausfuehren`},"bulk-delete":{label:`Massenhaft loeschen`,hint:`find -exec rm, Inline-rmSync ueber viele Pfade`},"agent-state":{label:`WrongStacks eigenen Zustand schreiben`,hint:`config.json, trust.json, auth.json`},"credential-bind":{label:`API-Schluessel an einen Endpunkt binden`,hint:`einen bekannten Schluessel an eine Anbieter-URL haengen`}},refineHeading:`Prompt-Verfeinerung`,enableRefineLabel:`Verfeinerung aktivieren`,enableRefineHint:`Prompts vor dem Senden umschreiben — klarere Anweisungen, bessere Ergebnisse.`,refineDelayLabel:`Verfeinerungs-Verzögerung`,refineDelayHint:`Countdown bevor der verfeinerte Prompt automatisch gesendet wird.`,refineLanguageLabel:`Verfeinerungs-Sprache`,refineLanguageHint:`Ihre Sprache behalten oder für das Modell ins Englische übersetzen.`,refineLanguageOriginal:`Original — Sprache behalten`,refineLanguageEnglish:`Englisch — ins Englische übersetzen`,refinerProviderLabel:`Verfeinerungs-Provider`,refinerProviderHint:`Provider-ID für die Zielverfeinerung. Leer = Provider der Sitzung verwenden.`,refinerProviderDefault:`Sitzungs-Provider`,refinerModelLabel:`Verfeinerungs-Modell`,refinerModelHint:`Modell-ID für die Zielverfeinerung. Leer = Modell der Sitzung verwenden.`,refinerModelDefault:`Sitzungsmodell`,refinerProfileLabel:`Fallback-Profil für die Verfeinerung`,refinerProfileHint:`Benanntes Fallback-Profil für die Zielverfeinerung. Überschreibt Provider und Modell.`,refinerProfileDefault:`Keines — Provider und Modell oder Sitzungsstandards verwenden`,reasoningHeading:`Reasoning & Cache`,reasoningModeLabel:`Reasoning-Modus`,reasoningModeHint:`Steuern, wie das Modell Extended Thinking nutzt. Auto = Anbieter-Standard.`,reasoningModeAuto:`Auto — Anbieter-Standard`,reasoningModeOn:`An — Thinking erzwingen`,reasoningModeOff:`Aus — Thinking deaktivieren`,reasoningEffortLabel:`Reasoning-Aufwand`,reasoningEffortAuto:`Auto (allgemein)`,reasoningEffortAutoHint:`Projekteinstellung: {{value}}`,reasoningEffortHint:`Wie viel Compute das Modell fürs Denken aufwendet. Nur gesendet, wenn das Modell es unterstützt.`,reasoningEffortNone:`Keine`,reasoningEffortMinimal:`Minimal`,reasoningEffortLow:`Niedrig`,reasoningEffortMedium:`Mittel`,reasoningEffortHigh:`Hoch`,reasoningEffortXhigh:`Sehr hoch`,reasoningEffortMax:`Max`,preserveThinkingLabel:`Thinking bewahren`,preserveThinkingHint:`Reasoning-Blöcke über Züge hinweg für Kontextkontinuität behalten.`,cacheTtlLabel:`Cache-TTL`,cacheTtlHint:`Prompt-Cache-Time-to-Live. 1h kostet mehr beim Schreiben, spart aber bei wiederholten Lesevorgängen (Anthropic).`,cacheTtlDefault:`Standard — Anbieter-Standard`,cacheTtl5m:`5 Minuten`,cacheTtl1h:`1 Stunde`,capsHint:`Verwenden Sie wstack models caps um zu prüfen, was das aktuelle Modell unterstützt. Nicht unterstützte Einstellungen werden pro Anfrage still weggelassen.`,routingHeading:`Modell-Routing`,routingRouteKey:`Modell-Routen-Schlüssel`,routingPhasesGroup:`Phasen`,routingRolesGroup:`{{label}} Rollen`,routingCustomGroup:`Benutzerdefinierte bestehende Routen`,routingTargetAria:`Ziel der Modellroute`,routingTargetEmpty:`— Route löschen —`,routingTargetProfilesGroup:`Fallback-Profile`,routingTargetModelsGroup:`Modelle (Provider/Modell)`,routingSet:`Setzen`,routingReasoningModeAria:`Reasoning-Modus neue Route`,routingReasoningEffortAria:`Reasoning-Aufwand neue Route`,routingReasoningPreserveAria:`Reasoning-Bewahrung neue Route`,routingReasoningModeFor:`Reasoning-Modus für {{key}}`,routingReasoningEffortFor:`Reasoning-Aufwand für {{key}}`,routingReasoningPreserveFor:`Reasoning-Bewahrung für {{key}}`,noRoutes:`Noch keine Modell-Routen.`,leaderModel:`Leader-Modell`,autonomyDelayMsLabel:`Verzögerung der automatischen Fortsetzung`,autonomyDelayMsHint:`Millisekunden, bevor der Agent im Auto-Modus automatisch fortfährt. 0 = sofort.`,refineCountdownLabel:`Verfeinerungs-Countdown`,refineCountdownHint:`Gnadenfrist, bevor der verfeinerte Prompt automatisch gesendet wird (Millisekunden).`,reasoningEffortModelSet:`Stufen des aktiven Modells`,reasoningEffortUnsupported:`Von diesem Modell nicht angeboten (unterstützt: {{levels}}) — die Einstellung wird weggelassen.`},m={heading:`Ausführung`,maxIterationsLabel:`Max. Iterationen pro Run`,unlimitedLabel:`Unbegrenzt`,maxIterationsHint:`Feste Obergrenze für LLM-Züge pro agent.run().`,autoProceedMaxIterationsLabel:`Auto-Fortsetzen max. Iterationen`,autoProceedMaxIterationsHint:`Auto-Fortsetzen nach N Iterationen stoppen. 0 = unbegrenzt.`,confirmExitLabel:`Vor Exit bestätigen`,confirmExitHint:`Erstes Ctrl+C bricht Arbeit ab, zweites bestätigt Exit.`,chimeLabel:`Chime bei Fertigstellung`,chimeHint:`Terminal-Glocke, wenn ein Agent-Run endet.`,breakerLabel:`Prozess-Schutzschalter`,breakerHint:`Sperrt bash/exec nach wiederholten Fehlern; beim Auslösen startet der Kill/Reset-Countdown.`,breakerTimeoutLabel:`Kill/Reset-Timeout des Schutzschalters`,breakerTimeoutHint:`Verzögerung bis zum automatischen Kill/Reset nach dem Auslösen. 0 = manuelle Wiederherstellung.`,availabilityHeading:`Verfügbarkeitskalender für Anbieter/Modelle`,availabilityHint:`Verhindert, dass autonome und nächtliche Ausführungen ausgewählte Anbieter oder Modelle in wiederkehrenden Fenstern verwenden.`},h={heading:`Fallback-/Round-robin-Modelle`,body:`Wenn das aktive Modell rate-limited (429/529), 5xx-Fehler oder hängt — nach eigenen Retries — rotiert der Agent zum nächsten Modell dieser Kette. Auch Standard für SDD-Worker-Subagents.`,autoFallbackLabel:`Auto-Fallback`,autoFallbackHint:`Wenn die Kette oben leer ist, automatisch von Ihren gespeicherten Anbietern ableiten.`,favoritesOnlyLabel:`Nur Favoriten`,favoritesOnlyHint:`Wenn Auto-Fallback eine Kette ableitet, auf Ihre Favoriten beschränken.`,profilesHeading:`Fallback-/Round-robin-Profile`,addProfile:`Hinzufügen`,noProfiles:`Noch keine benannten Fallback-Profile.`,createDefault:`Standard aus aktivem Modell erstellen`,useChain:`Kette verwenden`,setLeader:`Leader setzen`,profileEmpty:`Profil ist leer.`,favoritesHeading:`Favoriten-Modelle`,favoritesEmpty:`Favoriten werden zuerst angezeigt und können Auto-Fallback einschränken.`,addModelToProfile:`Modell zum Profil hinzufügen…`,addFavoriteModel:`Favoritenmodell hinzufügen…`,inactive:`inaktiv`},g={heading:`Flotte & Streaming`,fleetChatVerbosityLabel:`Flotten-Events streamen`,fleetChatVerbosityHint:`Live-Subagent-Aktivität im Flotten-Panel zeigen.`,maxConcurrentLabel:`Max. gleichzeitige Subagents`,maxConcurrentHint:`Maximale Anzahl gleichzeitig laufender Subagents.`,nextPredictionLabel:`Next-Step-Vorhersage`,nextPredictionHint:`Nach Abschluss eines Zugs wahrscheinliche nächste Schritte vorhersagen.`,nextStepsToolLabel:`Nextsteps-Tool`,nextStepsToolHint:`Der Agent kann seine Folgevorschläge per Tool-Aufruf hinterlegen, statt den Block selbst zu schreiben. Gilt ab der nächsten Sitzung.`},_={hqHeading:`HQ-Client`,hqPublishingLabel:`HQ-Veröffentlichung`,hqPublishingHint:`Diese WebUI/Client-Sitzung bei WrongStack HQ veröffentlichen. Gleichmaschinige Clients können lokales HQ-Auth auto-entdecken; Remote-Clients nutzen untenstehende URL/Token.`,hqUrlLabel:`HQ-URL`,hqUrlHint:`Für Auto-Discovery auf gleicher Maschine leer lassen.`,hqTokenLabel:`HQ-Client-Token`,hqRawContentLabel:`Rohe HQ-Inhalte`,hqRawContentHint:`Rohe Inhaltsvorschauen statt geschwärzter Vorschauen an HQ senden.`,wrongProxyHeading:`WrongProxy / WrongTrace`,wrongProxyEnabledLabel:`Basis-URLs über den lokalen Proxy leiten`,wrongProxyEnabledHint:`Wenn aktiviert, wird die Basis-URL jedes Anbieters über den konfigurierten Proxy umgeschrieben (Standard http://localhost:3444/proxy/<host><path>). openai-codex ist ausgeschlossen — es kommuniziert direkt mit dem ChatGPT-Backend über ein OAuth-Token.`,wrongProxyUrlLabel:`Proxy-URL`,wrongProxyUrlHint:`Wo der lokale Proxy-Daemon lauscht. Das System prüft periodisch <url>/api/health; ein nicht erreichbarer Daemon deaktiviert die Umschreibung, ohne bei jedem Tastendruck erneut zu versuchen.`,wrongProxyChangesApply:`Änderungen gelten sofort für nachfolgende Anfragen — kein Neustart erforderlich.`,telegramHeading:`Telegram-Benachrichtigungen`,telegramSessionEndLabel:`Sitzungsende`,telegramSessionEndHint:`Zusammenfassung senden, wenn eine Sitzung endet.`,telegramDelegateLabel:`Delegat fertig`,telegramDelegateHint:`Vermenschlichte Notiz senden, wenn ein Subagent fertig ist.`,telegramLongToolLabel:`Langlaufende Tools`,telegramLongToolHint:`Benachrichtigen, wenn ein Tool {{ms}}ms überschreitet. 0 zum Deaktivieren.`,telegramChangesApply:`Änderungen werden sofort angewendet.`,telegramNotConfigured:`Telegram ist nicht konfiguriert. Führen Sie /telegram-setup in der CLI aus, um zuerst einen Bot zu verbinden.`,heading:`Integrationen`,disabledHint:`Aktivieren Sie die Funktion im Kontext-Tab, um diesen Bereich zu nutzen.`},v={chimeraDedicatedHeading:`Chimera — Code-Review nach der Sitzung`,chimeraDedicatedHint:`Automatisierte Code-Qualitätsprüfung nach jeder Agentensitzung.`,chimeraSectionEnabled:`Post-Session-Review (Chimera)`,chimeraSectionEnabledHint:`Nach jeder Iteration einen Code-Review-Agenten ausführen.`,chimeraProviderLabel:`Chimera-Anbieter`,chimeraProviderHint:`Anbieter für den Review-Agenten. Aus konfigurierten Anbietern wählen.`,chimeraProviderSessionDefault:`Sitzungsstandard`,chimeraModelLabel:`Modell`,chimeraModelSessionDefault:`Sitzungsstandard`,chimeraModelHint:`Modell für den Review-Agenten. Erfordert zuerst einen Anbieter.`,chimeraMaxFilesLabel:`Max. Dateien pro Review`,chimeraMaxFilesHint:`Maximale Anzahl geänderter Dateien pro Review-Aufruf.`,chimeraAutoFixLabel:`Auto-Fix-Modus`,chimeraAutoFixHint:`Ob der Review-Agent Funde automatisch korrigieren soll.`,chimeraAutoFixOff:`Aus — nur Review`,chimeraAutoFixAsk:`Fragen — vor Anwendung bestätigen`,chimeraAutoFixAuto:`Auto — ohne Bestätigung anwenden`,autoReviewCascadeOnLabel:`Kaskade ab`,autoReviewCascadeOnHint:`Wenn ein Review Funde dieses oder höheren Schweregrads findet, Folgeagenten starten.`,autoReviewCascadeOnOff:`Aus`,autoReviewCascadeOnHigh:`Hoch oder höher`,autoReviewCascadeOnCritical:`Nur kritisch`,chimeraPickModel:`Anbieter/Modell für Chimera wählen`,chimeraPickModelHint:`Anbieter und Modell für das Post-Session-Code-Review wählen.`,autoReviewSectionEnabled:`Mid-Session-Review (Auto-Review)`,autoReviewSectionEnabledHint:`Bei jeder Dateiänderung während der Sitzung einen Review-Agenten ausführen.`,autoReviewFallbackProfileLabel:`Fallback-/Round-robin-Profil`,autoReviewFallbackProfileHint:`Benanntes Modellprofil für Auto-Review; liefert Fallback-Pool und Modelle für Round-robin oder Zufallsauswahl.`,autoReviewFallbackProfileNone:`Keines — Anbieter+Modell oder Sitzungsstandard`,autoReviewModelSelectionLabel:`Profilauswahl`,autoReviewModelSelectionHint:`Wählt das nächste Profilmodell der Reihe nach oder ein zufälliges Startmodell pro Review.`,autoReviewModelSelectionRoundRobin:`Round-robin — in Profilreihenfolge`,autoReviewModelSelectionRandom:`Zufällig — aus dem Profil wählen`,autoReviewFallbackModelsLabel:`Fallback-/Round-robin-Modelle`,autoReviewFallbackModelsEmpty:`Keine Fallback-/Round-robin-Modelle konfiguriert`,autoReviewFallbackModelsHint:`Modelle aus Profil oder globaler Kette; sie bilden Auswahlpool und Wiederholungskette.`,autoReviewModelLabel:`Modell`,autoReviewModelHint:`Modell für Auto-Review-Agent. Erfordert zuerst einen Anbieter.`,autoReviewDebounceLabel:`Entprellintervall (ms)`,autoReviewDebounceHint:`Mindestabstand zwischen Reviews nach Dateiänderung.`,autoReviewMaxFilesLabel:`Max. Dateien pro Batch`,autoReviewMaxFilesHint:`Dateien pro Auto-Review-Aufruf.`,autoReviewMaxConcurrentLabel:`Max. gleichzeitige Reviews`,autoReviewMaxConcurrentHint:`Limit für parallele Review-Subagents.`,autoReviewCascadeLabel:`Kaskade bei`,autoReviewCascadeHint:`Schwellwert für Folgeagenten — startet Sicherheits- und Bug-Scanner.`,autoReviewCascadeOff:`Aus — keine Kaskade`,autoReviewCascadeCritical:`Kritisch — nur kritische Funde`,autoReviewCascadeHigh:`Hoch — kritische oder hohe Funde`,autoReviewPickModel:`Anbieter/Modell für Auto-Review wählen`,autoReviewPickModelHint:`Anbieter/Modell oder Fallback-Profil für Auto-Review wählen.`,pluginsPerPluginHint:`Einzelne Plugins aktivieren oder deaktivieren. Änderungen werden mit der nächsten Sitzung wirksam.`},y={flagsHeading:`Feature-Flags`,mcpLabel:`MCP-Server`,mcpHint:`Model Context Protocol-Integrationen aktivieren.`,pluginsLabel:`Plugins`,pluginsHint:`Vom Nutzer installierte Plugins laden und ausführen.`,memoryLabel:`Speicher`,memoryHint:`Fakten sitzungsübergreifend speichern und abrufen.`,skillsLabel:`Skills`,skillsHint:`Domänenspezifische Skill-Prompts laden.`,modelsRegistryLabel:`Modell-Registry`,modelsRegistryHint:`Das models.dev-Katalog zur Anbieter-Entdeckung nutzen.`,indexOnStartLabel:`Beim Start indizieren`,indexOnStartHint:`Symbol-Index der Codebasis beim Sitzungsstart aufbauen.`,pluginsPerPluginHeading:`🔌 Pro-Plugin-Steuerung`,pluginSearch:`Plugins suchen`,pluginEnabledOnly:`Nur aktivierte`,pluginNoMatches:`Keine Plugins entsprechen diesem Filter.`,pluginsPerPluginHint:`Einzelne Plugins aktivieren oder deaktivieren. Änderungen werden mit der nächsten Sitzung wirksam.`,pluginChimera:`Chimera — Code-Review nach Sitzungsende`,pluginSkills:`Skills — Skill-Bibliothek & -Erstellung`,pluginPrompts:`Prompts — Prompt-Bibliothek & Generierung`,pluginCostTracker:`Cost Tracker — Token- & Kostenverfolgung`,pluginTelegram:`Telegram — Benachrichtigungsbot`,pluginErrorLens:`Error Lens — Fehlerdiagnose`,pluginSecretScanner:`Secret Scanner — Zugangsdaten-Erkennung`,pluginLintGate:`Lint Gate — Lint vor Iteration`,pluginDiffSummary:`Diff Summary — kompakte Diffs`,pluginDepGuard:`Dep Guard — Abhängigkeitsregeln`,pluginTypeGate:`Type Gate — Typecheck vor Iteration`,pluginInjectionShield:`Injection Shield — Prompt-Injection`,pluginPromptFirewall:`Prompt Firewall — Eingabefilterung`,pluginTokenBudget:`Token Budget — Token-Limits`,pluginLoopBreaker:`Loop Breaker — Erkennung außer Kontrolle`,heading:`Kontext & Debug`,autoCompactLabel:`Kontext auto-kompaktieren`,autoCompactHint:`Kontextfenster in der Nähe von Limits automatisch kürzen.`,compactorStrategyLabel:`Compaktor-Strategie`,compactorStrategyHint:`Wie der Kontext komprimiert wird, wenn er zu groß wird.`,compactorStrategyHybrid:`Hybrid — schnelle Regeln (Standard)`,compactorStrategyIntelligent:`Intelligent — LLM-Zusammenfassung`,compactorStrategySelective:`Selektiv — LLM-gesteuerte Auswahl`,contextModeLabel:`Kontext-Modus`,contextModeHint:`Kontextfenster-Richtlinie — balanced ist Standard.`,contextModeBalanced:`Ausgewogen — normale Kontextnutzung`,contextModeFrugal:`Sparsam — konservative Token-Nutzung`,contextModeDeep:`Tief — größerer Kontext für komplexe Aufgaben`,tokenSavingLabel:`Token-Sparmodus`,tokenSavingHint:`Steuert direkte Tool-Schemas und die System-Prompt-Größe der nächsten Sitzung.`,tokenSavingAuto:`Auto — Prompt an das Modellfenster anpassen`,tokenSavingOff:`Aus — kein Token-Sparen`,tokenSavingMinimal:`Minimal — grundlegende Optimierung`,tokenSavingLight:`Leicht — moderate Reduktion`,tokenSavingMedium:`Mittel — erhebliche Einsparungen`,tokenSavingAggressive:`Aggressiv — kleinste direkte Oberfläche und Prompt`},b={logLevelLabel:`Log-Level`,logLevelHint:`Mindest-Schweregrad für serverseitiges Logging.`,logLevelDebug:`Debug — alles`,logLevelInfo:`Info — normaler Ablauf`,logLevelWarn:`Warn — nur Probleme`,logLevelError:`Error — nur Fehler`,auditLevelLabel:`Audit-Level`,auditLevelHint:`Detaillierungsgrad für Sitzungs-Audit-Logs.`,auditLevelMinimal:`Minimal — nur Fehler`,auditLevelStandard:`Standard — Tool-Aufrufe + Fehler`,auditLevelFull:`Voll — jedes Ereignis (große Logs)`,fsAccessLabel:`Dateisystemzugriff`,fsAccessHint:`Geltungsbereich der Datei-Tools. Gilt ab der nächsten Sitzung.`,fsAccessUnrestricted:`Uneingeschränkt — beliebiger Pfad`,fsAccessProject:`Projekt — auf das Projektverzeichnis beschränkt`,debugStreamLabel:`Debug-Stream`,debugStreamHint:`Roher SSE-Hexdump auf stderr des Servers zum Provider-Debugging.`,heading:`Logs & Debug`},x={heading:`Sicherheit & Überwachung`,brainHeading:`🧠 Brain – Entscheidungssteuerung`,brainHint:`Entscheidungsmodelle, Council, Eskalation und Risikoobergrenze – sofort wirksam, in der globalen Konfiguration gespeichert.`,shadowHeading:`👁 Schatten-Agent – Flottenmonitor`,shadowHint:`Der Schatten-Agent überwacht alle Flottenagenten, verfolgt ihre Aufgaben und erkennt Anomalien.`,toolsHeading:`🔧 Tool Access Control`,toolsHint:`Einzelne Tools aktivieren oder deaktivieren. Verändernde Tools sind bernsteinfarben markiert.`,breakerHeading:`Prozess-Schutzschalter`,breakerHint:`bash/exec nach wiederholten Fehlern sperren; ein Auslösen startet den Kill-/Reset-Countdown.`},S={switchingTo:`Wechseln zu {{provider}} / {{model}}…`,switching:`Modell wird gewechselt…`,switchingToTarget:`Wechsel zu {{target}}…`,previousModel:`vorheriges Modell`,modelSwitchedNextRequest:`Modell gewechselt: {{from}} → {{to}}. Aktiv für die nächste LLM-Anfrage.`,modelSwitchedRunActive:`Modell gewechselt: {{from}} → {{to}}. Aktiv für die nächste LLM-Anfrage; der aktuelle Lauf wird fortgesetzt und nicht neu gestartet.`,fallbackExists:`Fallback-Profil "{{name}}" existiert bereits`,selectProviderModelFirst:`Wählen Sie zuerst einen Anbieter und ein Modell`,defaultProfileCreated:`Standard-Fallback-Profil erstellt`,profileEmpty:`Fallback-Profil "{{name}}" ist leer`,leaderSetFrom:`Leader aus {{name}} gesetzt`,modelSwitchTimeout:`Zeitüberschreitung beim Modellwechsel. Bitte erneut versuchen.`},C={workbenchHeading:`Workbench-Optik`,workbenchHint:`Sichtbarkeit der Workbench-Oberflächen im Chat umschalten.`,showModelReasoningLabel:`Modell-Reasoning anzeigen`,showModelReasoningHint:`LLM-Reasoning/Thinking-Blöcke im Chatverlauf rendern (TUI-Parität).`,showAgentSwarmPanelLabel:`Agent-Schwarm-Panel`,showAgentSwarmPanelHint:`Steuert, wo das Agent-Schwarm-Panel (Fleet + Mission Queue) angezeigt wird.`,swarmPanelBottom:`Unteres Panel`,swarmPanelSidebar:`Rechte Seitenleiste`,swarmPanelOff:`Aus`,titleAnimationLabel:`Titelanimation`,titleAnimationHint:`Terminal-/Tab-Titel mit Laufstatus animieren (TUI-Parität).`,keyboardShortcutsLabel:`Tastenkürzel`,keyboardShortcutsHint:`Globale Tastenkürzel (Strg+K, Alt+1..4, usw.) aktivieren. Standardmäßig deaktiviert.`,statusChipHeading:`Status-Chip & Statuszeile`,statusChipHint:`Visueller Stil für die TUI/CLI-Statuszeile und den Arbeits-Chip.`,thinkingWordLabel:`Denkwort`,thinkingWordHint:`Einzelnes kurzes Wort, das im TUI-Status-Chip angezeigt wird, während der Agent arbeitet.`,thinkingWordInvalid:`Ein Wort mit höchstens 16 Buchstaben, Ziffern, Unterstrichen oder Bindestrichen eingeben.`,statuslineModeLabel:`Statuszeilen-Modus`,statuslineModeHint:`Detailgrad der TUI-Statusleiste.`,statuslineModeMinimum:`Minimal`,statuslineModeDetailed:`Detailliert`,statuslineModeNoColor:`Ohne Farbe`,animationStyleLabel:`Animationsstil`,animationStyleHint:`Animation für den TUI-Arbeits-Chip.`,animationStyleRainbow:`Regenbogen`,animationStyleWave:`Welle`,animationStylePulse:`Puls`,animationStyleDots:`Punkte`,animationStyleBreathe:`Atmen`,animationStyleStatic:`Statisch`,animationStyleCycle:`Wechselnd`,refineHeading:`Refine-Countdown & Diffs`,refineHint:`Grace-Countdown vor dem Refiner und Mindestanzahl von Dateien für die Multi-Diff-Fußzeile konfigurieren.`,preRefineSecondsLabel:`Vor-Refine-Countdown`,preRefineSecondsHint:`Wartezeit vor dem Refiner in Sekunden. 0 = Countdown überspringen und sofort verfeinern.`,preRefineSecondsPresets:`Voreinstellungen: {{presets}} Sekunden (0 = aus).`,multiDiffSummaryLabel:`Multi-Diff-Zusammenfassung`,multiDiffSummaryHint:`Mindestanzahl von Dateien, ab der die aggregierte 'N Dateien · +X -Y' Fußzeile über den Einzelblöcken erscheint.`,multiDiffSummaryPresets:`Voreinstellungen: {{presets}} (0 = aus).`,memoryHeading:`Read-Tool & SAGE-Memory-Injection`,memoryHint:`Umschalten, was das Read-Tool enthält und wann SAGE-Memory-Blöcke in Tool-Ergebnissen erscheinen.`,readSymbolsLabel:`Symbole lesen`,readSymbolsHint:`Wenn aktiv, enthält das Read-Tool Codebase-Index-Symbole neben dem Datei-Inhalt.`,showSageMemoryInjectLabel:`SAGE Memory Inject anzeigen`,showSageMemoryInjectHint:`Wenn aktiv, werden SAGE-Memory-Injection-Blöcke in Tool-Ergebnissen angezeigt.`,sageMemoryInjectThresholdLabel:`SAGE-Memory-Inject-Schwelle`,sageMemoryInjectThresholdHint:`Mindest-Beziehungsstärke für eine injizierte SAGE-Memory (0.72–0.95).`,footnote:`Diese Einstellungen spiegeln den TUI- /settings-Picker wider. Schalter wirken sofort; einige Felder erfordern einen Session-Neustart.`,sageRelaxed:`0,72 (locker)`,sageDefault:`0,85 (Standard)`,sageStrict:`0,95 (streng)`},w=`Lokale Einstellungen löschen`,T=`Abbrechen`,E=`Einstellungen dieses Browsers löschen?`,D=`Löscht die in diesem Browser gespeicherten Einstellungen und lädt die Seite neu. Verbundene Einstellungen werden erneut vom Server geladen.`,O=`Löschen und neu laden`,k=JSON.parse(`{"heading":"Brain","headingHint":"Entscheidungsmodelle, Rat, Eskalation und Risiko-Decke — live angewendet, in der globalen Konfiguration gespeichert.","riskHeading":"Autonomie-Decke","escalationHeading":"Eskalation","escalationModeLabel":"Modus","escalationModeHint":"Headless: Das Brain blockiert nie auf einen Menschen — unbeantwortete Eskalationen werden über die sichere Endrichtlinie aufgelöst. Gilt für CLI/TUI-Sitzungen; das eigenständige WebUI-Brain ist immer headless.","escalationDecisionTimeoutLabel":"Entscheidungs-Timeout","escalationDecisionTimeoutHint":"Zeitbudget pro LLM-Aufruf für eine Brain-Entscheidung.","escalationHumanTimeoutLabel":"Timeout für menschliche Antwort","escalationHumanTimeoutHint":"Interaktiver Modus: Wie lange ein Eskalations-Prompt warten darf, bevor die Endrichtlinie ihn auflöst.","escalationTerminalPolicyLabel":"Endrichtlinie","escalationTerminalPolicyHint":"Wie eine headless-Eskalation ohne verfügbaren Menschen aufgelöst wird. Konservativ akzeptiert eine empfohlene Option bei niedrigem/mittlerem Risiko; alles-ablehnen akzeptiert nie automatisch; mit-Empfehlung-fortfahren akzeptiert eine empfohlene Option bei JEDEM Risiko.","escalationDecisionLogSizeLabel":"Größe des Entscheidungsprotokolls","escalationDecisionLogSizeHint":"Rollierendes In-Memory-Entscheidungsprotokoll für die Statusansicht.","rulesHeading":"Deterministische Regeln","rulesConfigured":"{{count}} konfiguriert","rulesBody":"Wird vor jedem Provider-Aufruf ausgewertet — der erste Treffer gewinnt. Bearbeiten Sie sie in der globalen Konfigurationsdatei; diese Ansicht ist schreibgeschützt.","rulesOff":"aus","rulesDropped":"{{count}} Regel(n) verworfen","heuristicsHeading":"Heuristiken","heuristicsBody":"Kostenlose Mustervermutungen, die eine Frage lösen, bevor ein Modell läuft. Standardmäßig alle an — schalten Sie eine aus, wenn ihre Vermutung für Ihre Arbeitslast falsch ist.","heuristicsLowRiskLabel":"Automatische Antwort bei niedrigem Risiko","heuristicsLowRiskHint":"Beantwortet risikoarme Anfragen automatisch, die bereits eine empfohlene Option tragen.","heuristicsBlockedLabel":"Blockiert-aufgelöst","heuristicsBlockedHint":"'blocked …' plus ein expliziter Auflösungsmarker im Kontext löst zu „fortfahren\\" auf.","heuristicsDeadlockLabel":"Deadlock überspringen","heuristicsDeadlockHint":"'deadlock' plus fehlgeschlagene Arbeitseinheiten im Kontext löst zu „überspringen und fortfahren\\" auf.","heuristicsRetryLabel":"Wiederholungen erschöpft","heuristicsRetryHint":"'failed'/'retry' plus nachweislich erschöpfte Wiederholungen markiert die Einheit als fehlgeschlagen und fährt fort.","heuristicsPingLabel":"Fortfahren-Ping","heuristicsPingHint":"Ein bloßer Fortfahren/Weiter-Ping ohne konkurrierende Alternative löst zu „fortfahren\\" auf.","heuristicsMarkers":"Marker: {{markers}}","qualityHeading":"LLM-Qualität","qualityCircuit_one":"Schaltung {{state}} · {{count}} Fehler","qualityCircuit_other":"Schaltung {{state}} · {{count}} Fehler","qualityResponseBudgetLabel":"Antwortbudget","qualityResponseBudgetHint":"Ausgabetoken pro Entscheidungsaufruf. Eine Brain-Antwort ist eine Entscheidung plus eine Begründung in einem Satz.","qualityRejectLabel":"Unsichere Antworten ablehnen","qualityRejectHint":"Behandelt eine abgelehnte oder leere Antwort als „diese Stufe konnte nicht entscheiden\\", statt sie als Antwort zu akzeptieren.","qualityMinConfidenceLabel":"Mindestkonfidenz","qualityMinConfidenceHint":"Lehnt Antworten ab, deren selbst gemeldete Konfidenz darunter liegt. Antworten ohne Konfidenzangabe bestehen immer.","qualityDenyTerminalLabel":"Ablehnung ist terminal","qualityDenyTerminalHint":"Ob eine Ablehnung aus der Einzel-LLM-Stufe die Entscheidung beendet. 'when-decided' macht eine echte Ablehnung terminal, während Infrastrukturfehler weiter eskalieren.","traceHeading":"Replay-Spur","traceRecordLabel":"Entscheidungsspuren aufzeichnen","traceRecordHint":"JSONL pro Entscheidung jeder Stufe, jedes Pool-Ziels und jeder Ratsabstimmung, mit Zeiten und Token-Nutzung. Standardmäßig aus — Aktivieren schreibt Entscheidungsinhalte auf die Festplatte.","traceContentLabel":"Spurinhalt","traceContentHint":"'full' behält Frage und Kontext (nötig zum Replay einer Entscheidung); 'redacted' kürzt Freitext; 'none' zeichnet nur Metadaten auf.","cacheHeading":"Entscheidungs-Cache","cacheStats":"{{hits}} Treffer / {{misses}} Fehlschlag · {{size}} live","cacheReplayLabel":"Identische Urteile wiedergeben","cacheReplayHint":"Verwendet ein früheres Rats-/LLM-Urteil für eine identische wiederholte Frage wieder. Deterministische Stufen und Frage-an-Mensch werden nie gecacht; ein Urteil, das das Protokoll als fehlgeschlagen beobachtet, wird entfernt.","cacheLifetimeLabel":"Eintragslebensdauer","cacheLifetimeHint":"Wie lange ein gecachtes Urteil wiedergebbar bleibt.","cacheMaxEntriesLabel":"Maximale Einträge","cacheMaxEntriesHint":"Obergrenze für live gecachte Urteile.","monitorHeading":"Monitor","monitorBody":"Selbstaktivierung bei Notfallsignalen. Der Monitor wird einmal beim Start gebaut, daher gelten diese Einstellungen für die nächste Sitzung statt live.","monitorWatchLabel":"Auf Notfallsignale achten","monitorWatchHint":"Tool-Fehlerketten, Fehlerstürme, Agent-Staus und Datei-Churn aktivieren das Brain von selbst.","monitorPolicyLabel":"Signalrichtlinie","monitorPolicyHint":"Wie ein erkanntes Signal aufgelöst wird. 'llm' konsultiert das Brain; 'steer' greift immer ein und 'observe' nie — beide ohne Provider-Aufruf.","modelsHeading":"Entscheidungsmodelle","modelsSessionBadge":"Sitzungsmodell","modelsResolvedBadge":"{{resolved}}/{{total}} aufgelöst","modelsUseSessionLabel":"Sitzungsmodell verwenden","modelsUseSessionHint":"Mit dem Modell entscheiden, das die Sitzung ausführt. Durch Hinzufügen von Modellen unten ausschalten.","modelsAddModel":"Modell hinzufügen","modelsPoolStrategyLabel":"Pool-Strategie","modelsPoolStrategyHint":"Fallback: Das erste Modell ist primär, der Rest wird bei Fehlern der Reihe nach versucht. Round-Robin: Entscheidungen rotieren durch den Pool.","councilHeading":"Rat","councilConvened":"einberufen","councilDisabled":"deaktiviert","councilEnableLabel":"Multi-LLM-Rat aktivieren","councilEnableHint":"Fragen mit hohem Einsatz werden von unabhängigen Sitzen (Ausführender / Skeptiker-mit-Veto / Prüfer) statt von einem Modell abgestimmt. Erfordert ≥2 auflösbare Wähler (explizite Sitze unten oder ein Pool mit ≥2 Modellen).","councilSeatsDerived":"Aus dem Pool abgeleitete Sitze: {{seats}}","councilCustomLens":"Benutzerdefinierte Entscheidungslinse — wird dem Sitz wörtlich gesendet.","councilCustomOption":"{{persona}} (benutzerdefiniert)","councilVeto":"Veto","councilAddVoter":"Wähler hinzufügen","councilRiskFloorLabel":"Risiko-Untergrenze","councilRiskFloorHint":"Mindestfragenrisiko, das den Rat statt der Einzelmodell-Stufe einberuft.","councilJudge":"Richter","councilJudgeDesc":"Stichentscheid-Modell, das die Begründung jeder Stimme sieht.","councilResolved":"aufgelöst: {{model}}","councilAlsoVoter":"⚠ auch ein Wähler","councilAuto":"auto","councilPick":"Auswählen…","councilAutoReset":"Auto","councilQuorumLabel":"Quorum","councilQuorumHint":"Anteil der Sitze, die eine gültige Stimme abgeben müssen.","councilApprovalLabel":"Zustimmung","councilApprovalHint":"Anteil des abgegebenen Stimmengewichts, den die Gewinneroption überschreiten muss.","councilPerSeatTimeoutLabel":"Timeout pro Sitz","councilPerSeatTimeoutHint":"Zeitbudget für die Stimme eines einzelnen Sitzes. Langsamer als das Entscheidungs-Timeout bedeutet, dass ein hängender Sitz die Abstimmung aufhält.","councilMaxConcurrencyLabel":"Max. Parallelität","councilMaxConcurrencyHint":"Wie viele Sitze parallel abstimmen. Verringern, wenn der Pool einen ratenbegrenzten Provider teilt.","councilDistinctnessLabel":"Sitzverschiedenheit","councilDistinctnessHint":"Doppelte Sitze ablehnen: 'model' erfordert verschiedene Modelle, 'provider' unabhängige Provider, damit ein Ausfall die Abstimmung nicht kippen kann.","councilVoterBudgetLabel":"Wähler-Antwortbudget","councilVoterBudgetHint":"Ausgabetoken pro Sitzaufruf — Reasoning-Modelle verbrauchen ihre Denk-Token aus diesem Budget.","councilRoundsLabel":"Beratungsrunden","councilRoundsHint":"Runde 1 ist unabhängig. In späteren Runden sieht jeder Sitz die Stimmen der anderen und kann seine Position überdenken. Nur die letzte Runde zählt — und jede Runde kostet einen weiteren Aufruf pro Sitz.","councilJudgeBudgetLabel":"Richter-Antwortbudget","councilJudgeBudgetHint":"Ausgabetoken für den stichentscheidenden Richteraufruf.","councilSeatTemplate":"Sitzvorlage:","ledgerHeading":"Entscheidungsprotokoll","ledgerRecordLabel":"Entscheidungen + Ergebnisse aufzeichnen","ledgerRecordHint":"Speichert jede Entscheidung und ihr beobachtetes Ergebnis; ähnliche vergangene Ergebnisse fließen in zukünftige Brain-Prompts ein.","ledgerAutoDenyLabel":"Nach Fehlern automatisch ablehnen","ledgerAutoDenyHint":"Deterministisch ablehnen (ohne LLM), sobald so viele aufeinanderfolgende Genehmigungen einer Entscheidungsgruppe in beobachteten Fehlern endeten.","ledgerMemoryEntriesLabel":"In-Memory-Einträge","ledgerMemoryEntriesHint":"Ringgröße im Speicher und Anzahl der beim Start von der Festplatte geladenen früheren Einträge.","ledgerRetryWindowLabel":"Interventions-Wiederholungsfenster","ledgerRetryWindowHint":"Eine gleichartige Monitor-Intervention, die innerhalb dieses Fensters erneut auslöst, markiert die vorherige Steuerung als Fehlschlag.","recentHeading":"Letzte Entscheidungen ({{count}})","recentEmpty":"In dieser Sitzung wurden noch keine Entscheidungen aufgezeichnet.","optInteractive":"Interaktiv (mich fragen)","optHeadless":"Headless (nie fragen)","optConservative":"Konservativ (Standard)","optDenyAll":"Alles ablehnen","optContinueRecommended":"Mit Empfehlung fortfahren","optNeverDefault":"Nie (Standard)","optWhenDecided":"Wenn entschieden","optAlways":"Immer","optFullDefault":"Voll (Standard)","optRedacted":"Gekürzt","optMetadataOnly":"Nur Metadaten","optConsultBrain":"Brain konsultieren (Standard)","optAlwaysSteer":"Immer steuern","optObserveOnly":"Nur beobachten","optFallback":"Fallback","optRoundRobin":"Round-Robin","optMediumPlus":"Mittel+","optHighPlus":"Hoch+","optCriticalOnly":"Nur kritisch","optNoneDefault":"Keine (Standard)","optDistinctModels":"Verschiedene Modelle","optDistinctProviders":"Verschiedene Provider","optDefault3":"Standard (3)","optOff":"Aus","pickPoolTitle":"Brain-Pool-Modell hinzufügen","pickPoolHint":"Geordneter Entscheidungspool — der erste ist primär.","pickVoterTitle":"Ratsmitglied hinzufügen","pickVoterHint":"Dialog bleibt offen — ≥2 Wähler hinzufügen, dann schließen.","pickJudgeTitle":"Ratsrichter wählen","pickJudgeHint":"Stichentscheid, der jede Stimme sieht.","persistError":"Einstellungen live angewendet, aber nicht gespeichert.","riskCopy":{"off":"Ein Mensch entscheidet alles","low":"Nur niedriges Risiko automatisch entscheiden","medium":"Automatisch bis mittleres Risiko entscheiden","high":"Automatisch bis hohes Risiko entscheiden","all":"Alles automatisch entscheiden"},"rulesConfigured_one":"{{count}} konfiguriert","rulesConfigured_other":"{{count}} konfiguriert"}`),A={default15s:`Standard (15 s)`,waitForever:`Unbegrenzt warten`,defaultHalf:`Standard (0,5)`,all:`Alle`,n200Default:`200 (Standard)`,offDefault:`Aus (Standard)`,n20Default:`20 (Standard)`,m5Default:`5 min (Standard)`,default:`Standard`,oneSerial:`1 (seriell)`,roundsOff:`1 (keine Beratung)`,default500:`Standard (500)`,default10m:`Standard (10 min)`},j={capToolCall:`Tool-Aufruf`,capReasoning:`Reasoning`,capTemperature:`Temperatur`,capAttachment:`Anhang`,capStructuredOutput:`Strukturierte Ausgabe`,capOpenWeights:`Offene Gewichte`},M={presetsHeading:`Schrift-Vorlagen`,presetsHint:`Eine Vorlage setzt alle Rollen auf einmal; Schriften werden erst bei der ersten Nutzung geladen.`,presets:{workbench:{label:`Werkbank`,description:`Der Standard-Look der Operator-Werkbank.`},plex:{label:`IBM Plex`,description:`Eine technische Schriftfamilie durchgehend.`},modern:{label:`Modern`,description:`Neutrale Inter mit JetBrains Mono für Code.`},geist:{label:`Geist`,description:`Klare Kombination aus Geist Sans und Mono.`},classic:{label:`Klassisch`,description:`Adobes Source Sans, Serif und Code Pro.`},editorial:{label:`Editorial`,description:`Serifen-Überschriften und eine buchartige Chat-Schrift.`},readable:{label:`Lesbar`,description:`Gut lesbare Schriften für lange Sitzungen.`},friendly:{label:`Freundlich`,description:`Runde, entspannte Formen mit Fira Code.`},monospace:{label:`Monospace`,description:`Überall Monospace, im Terminal-Stil.`},system:{label:`System`,description:`Schriften des Betriebssystems, kein Download.`}},rolesHeading:`Schriften nach Rolle`,rolesHint:`Überschreibe jede Rolle zusätzlich zur Vorlage. Mit „Wie …“ markierte Rollen folgen ihrer übergeordneten Rolle.`,roles:{ui:{label:`Oberfläche & Panels`,hint:`Schaltflächen, Menüs, Seitenleisten, Listen und Einstellungen.`},display:{label:`Überschriften`,hint:`Seiten- und Abschnittstitel.`},reading:{label:`Chat & Dokumente`,hint:`Assistentenantworten, Markdown und Postfachnachrichten.`},code:{label:`Inline-Code & Daten`,hint:`Codeblöcke, Logs, IDs und Tabellenwerte.`},editor:{label:`Code-Editor`,hint:`Monaco-Dateieditor und Diff-Ansicht.`},terminal:{label:`Terminal`,hint:`Integrierte Terminalsitzungen.`}},fromPreset:`Vorlage ({{name}})`,inherit:`Wie {{role}} ({{name}})`,categories:{sans:`Serifenlos`,serif:`Serif`,mono:`Monospace`},systemTag:`System`,sizeHeading:`Größe & Abstand`,sizeHint:`Die Textgröße der Oberfläche skaliert alle Panels; Editor- und Terminalgrößen werden in Pixeln festgelegt.`,sizePresets:{compact:`Kompakt`,normal:`Normal`,comfortable:`Komfortabel`,large:`Groß`,custom:`Benutzerdefiniert`},controls:{uiScale:{label:`Textgröße der Oberfläche`,hint:`Skaliert Text in Panels, Chat und Dialogen.`},editorFontSize:{label:`Schriftgröße im Editor`,hint:`Monaco-Editor und Diff-Ansicht.`},codeLineHeight:{label:`Zeilenhöhe für Code`,hint:`Editor, Diff-Ansicht und Codeblöcke.`},terminalFontSize:{label:`Schriftgröße im Terminal`,hint:`Integriertes Terminal.`},terminalLineHeight:{label:`Zeilenhöhe im Terminal`,hint:`Zeilenabstand im Terminal.`},ligatures:{label:`Code-Ligaturen`,hint:`Verbindet => !== >= in unterstützenden Schriften (Fira Code, Cascadia, JetBrains Mono…) zu einer Glyphe. Gilt nicht im Terminal.`}},previewHeading:`Live-Vorschau`,preview:{heading:`Den Sitzungslader umbauen`,body:`Der Agent hat 12 Dateien gelesen und eine zweistufige Änderung vorgeschlagen. Prüfe den Diff vor dem Anwenden.`,label:`Oberflächen-Label`},resetAll:`Alle Schrifteinstellungen zurücksetzen`,resetOverrides:`Rollen-Überschreibungen löschen`},N={description:`Manage the decision provider and see where Jev is used.`,loading:`Loading Jev settings…`,timeout:`No response from server. Reconnect and retry.`,route:`Decision provider`,routeChange:`Changing provider clears the previous key, endpoint and model. Enter a new key or use the provider environment variable.`,key:`API key`,keyHint:`Leave blank to keep the current key`,removeKey:`Remove saved key (environment key may still apply)`,endpoint:`Endpoint override`,model:`Model override`,defaultHint:`Empty uses provider default`,requestTimeout:`Request timeout (ms)`,featureHint:`Switches permit Jev usage. Actual use also depends on the prerequisites and triggers below.`,save:`Save Jev settings`,test:`Test saved connection`,testHint:`The test sends one small billed request. Save changes first. Restart existing sessions to apply all consumers.`,activity:`Jev activity`,activityHint:`Refreshes every 3 seconds. Last 300 requests in this server process, across its sessions. No prompts, credentials or raw errors. Disk log rotates at 5 MB. Answered means a typed response, not necessarily a decision accepted by the consumer.`,filter:`Feature`,all:`All`,empty:`No matching Jev requests yet. Test the connection or use an enabled feature.`,features:{brain:`Brain decisions`,memoryTriage:`Memory triage`,topicShift:`Topic changes`,memoryRecall:`Memory recall`,compaction:`Context compaction`,kanbanVerify:`Kanban verification`,modelTier:`Subagent model tier`,semanticLint:`Semantic lint`,tool:`Entscheidungswerkzeug für Agenten`,skillSuggestion:`Skill suggestions`,fleetDispatch:`Fleet dispatch`},readinessScope:`These are saved profile conditions, not the live state of every session. A request below means the service was called, not that its answer was accepted.`,unknownReadiness:`Readiness unavailable on this server`,unsaved:`Unsaved change`,lastRequest:`Last runtime request`,notObserved:`No runtime request in the displayed recent log.`,contextStrategy:`Profile compaction strategy`,contextScope:`Selective enables the Jev selection path. Save changes and restart existing sessions; a session-specific strategy can override this profile setting.`,openContext:`Open session context settings`,configureTiers:`Configure model tiers`,tiersHint:`Enable tiers and define at least two levels, cheapest first. Set their models or fallback profiles and a default tier. Changes here save immediately.`,checkHeading:`Live capability checks`,checkHint:`Runs 22 synthetic cases across all 11 features using the saved account, including disabled features. Makes billed API calls, sends no project content and changes no feature settings. Passing does not prove workload quality or that a session uses the feature.`,checkAll:`Test all 11 features`,checkRunning:`Running live checks…`,expected:`Expected`,actual:`Actual`,includeChecks:`Include diagnostic requests`,selfTest:`Diagnostic`,account:{ready:`Account configured`,unconfigured:`Account required`,unusable:`Account settings invalid`},readiness:{disabled:`Disabled`,"account-required":`Account required`,blocked:`Setup required`,conditional:`Configured · waiting for trigger`},reasons:{disabled:`This feature is not permitted to use Jev.`,"account-required":`Configure a valid Jev account first.`,"selective-required":`Jev selection requires selective compaction; hybrid and intelligent do not use this selector.`,"tiers-disabled":`The model tier system is disabled.`,"tiers-required":`Define at least two model tiers.`,"skills-disabled":`The global skills feature is disabled.`,"trigger-required":`Runs only when its trigger conditions are met.`,"memory-disabled":`Memory or SAGE is disabled.`,"recall-injection-required":`SAGE turn context recall is disabled; the Jev recall filter requires this path.`},triggers:{brain:`Runs before later decision tiers; uncertain answers defer.`,memoryTriage:`Runs during triage value evaluation and merge decisions.`,topicShift:`Runs when topic-change prechecks require a judgment; repeated results may be cached.`,memoryRecall:`Filters candidates returned by SAGE turn context recall; cached judgments are reused.`,compaction:`Rates middle conversation turns during selective compaction; requires a provider and sufficient history.`,kanbanVerify:`Judges open agent-type criteria against changed files and their diff.`,modelTier:`Suggests a tier for delegations with no explicit model/tier and no matching role/phase route.`,semanticLint:`Runs when the semantic lint command finds candidates; it is not an automatic edit watcher.`,tool:`Wird ausgeführt, wenn ein Agent jev mit Belegen und typisierten Fragen aufruft.`,skillSuggestion:`Requires skills enabled, at least two skills, and gate/fit thresholds; results may be cached.`,fleetDispatch:`Runs only for ambiguous routing with multiple candidate roles.`},recallTurnContext:`SAGE turn context recall`,recallTurnHint:`Adds relevant memories to each new turn; the Jev recall filter runs on this path. Memory and SAGE must also be enabled. Save and restart existing sessions.`},P={title:e,subtitle:t,navigation:n,providerTest:r,tabs:i,model:a,connection:o,provider:s,providerModels:c,mcp:l,allowlist:u,oauth:d,general:f,agent:p,execution:m,fallbacks:h,fleet:g,integrations:_,features:v,context:y,logs:b,security:x,toast:S,display:C,resetLabel:w,cancel:T,resetConfirmTitle:E,resetConfirmBody:D,resetConfirmAction:O,brain:k,brainOpt:A,modelSchema:j,fonts:M,jev:N};export{p as agent,u as allowlist,k as brain,A as brainOpt,T as cancel,o as connection,y as context,P as default,C as display,m as execution,h as fallbacks,v as features,g as fleet,M as fonts,f as general,_ as integrations,N as jev,b as logs,l as mcp,a as model,j as modelSchema,n as navigation,d as oauth,s as provider,c as providerModels,r as providerTest,O as resetConfirmAction,D as resetConfirmBody,E as resetConfirmTitle,w as resetLabel,x as security,t as subtitle,i as tabs,e as title,S as toast};