@wrongstack/webui 0.298.0 → 0.298.1

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 (95) hide show
  1. package/dist/assets/{AgentRosterView-C8j2NuD1.js → AgentRosterView-C26RCdot.js} +4 -4
  2. package/dist/assets/{AnalyticsDashboard-D2_HYmYw.js → AnalyticsDashboard-CEjjV3bX.js} +1 -1
  3. package/dist/assets/{AudienceMemoryPanel-SzXptIQj.js → AudienceMemoryPanel-CnfZC8x0.js} +2 -2
  4. package/dist/assets/{ChangesView-D31wr7_h.js → ChangesView-D0BiTbs8.js} +1 -1
  5. package/dist/assets/ChronicleDashboard-BZ4XOcvf.js +1 -0
  6. package/dist/assets/CodeEditor-BlqaT56D.js +1 -0
  7. package/dist/assets/CodeMap-Bj5tjjW5.js +1 -0
  8. package/dist/assets/{CronJobsPanel-C9shS0P2.js → CronJobsPanel-F6nhZtfg.js} +1 -1
  9. package/dist/assets/{DeadCodeScanPanel-CHud_Ugp.js → DeadCodeScanPanel-C9sLNUUc.js} +1 -1
  10. package/dist/assets/{DebugDashboard-DmqpGXnx.js → DebugDashboard-D8BLcLjI.js} +1 -1
  11. package/dist/assets/{DesignGalleryView-CnAHpKa1.js → DesignGalleryView-B8mE5nGy.js} +1 -1
  12. package/dist/assets/GoalView-DIx7Zr4a.js +1 -0
  13. package/dist/assets/KanbanView-DshzDwq1.js +3 -0
  14. package/dist/assets/{MailboxDetailView-CQtHeWVs.js → MailboxDetailView-BJXpXjtm.js} +1 -1
  15. package/dist/assets/MemoryManager-B-S5oREO.js +1 -0
  16. package/dist/assets/{ModelPicker-Dt0wCi90.js → ModelPicker-CNHhT2SO.js} +1 -1
  17. package/dist/assets/OfficeMapPanel-CBN9uG80.js +4 -0
  18. package/dist/assets/{ProcessMonitor-Dq760Vqm.js → ProcessMonitor-Cc8LsfTh.js} +1 -1
  19. package/dist/assets/{QueuePanel-ZcJliKcY.js → QueuePanel-B0NXFwEt.js} +1 -1
  20. package/dist/assets/{RefreshDebugView-SivBV0LN.js → RefreshDebugView-DLst_piS.js} +1 -1
  21. package/dist/assets/{SageTabs-CGrc4PuM.js → SageTabs-NwMcr4Pq.js} +2 -2
  22. package/dist/assets/SddHub-CpRHXmjm.js +2 -0
  23. package/dist/assets/SessionsDashboard-C5dXb0iJ.js +1 -0
  24. package/dist/assets/SetupScreen-B81fcNgP.js +1 -0
  25. package/dist/assets/SkillDetailView-BTvgE_MD.js +3 -0
  26. package/dist/assets/{SpecsView-CzYtHNbj.js → SpecsView-DhuaZcOl.js} +1 -1
  27. package/dist/assets/TechStackView-BXmfl2qY.js +1 -0
  28. package/dist/assets/{TerminalPanel-BRSYloOD.js → TerminalPanel-DjruTcb6.js} +1 -1
  29. package/dist/assets/{Toaster-Bd6ckyrP.js → Toaster-BmyghnqJ.js} +1 -1
  30. package/dist/assets/{button-Clh96jMK.js → button-BMECp1cg.js} +1 -1
  31. package/dist/assets/{chat-Du7n7HZ7.js → chat-CRmMDzCb.js} +1 -1
  32. package/dist/assets/{chat-VkTBQmmx.js → chat-CwnuX7tG.js} +1 -1
  33. package/dist/assets/{chat-BJzPxfyr.js → chat-DLn1hY01.js} +1 -1
  34. package/dist/assets/{chat-IRKmQ6we.js → chat-DSEq1Bdz.js} +1 -1
  35. package/dist/assets/{chat-C7ybebfi.js → chat-DxLD17ER.js} +1 -1
  36. package/dist/assets/{chat-BRBVFl4h.js → chat-DzPxYALH.js} +1 -1
  37. package/dist/assets/{chat-Bkom8vQo.js → chat-OunddzYy.js} +1 -1
  38. package/dist/assets/{chat-store-CWhuSNod.js → chat-store-B2CjP2Zl.js} +2 -2
  39. package/dist/assets/{codemap-activity-store-C1XWbXeZ.js → codemap-activity-store-Cz0_AHqt.js} +1 -1
  40. package/dist/assets/codemap-index-store-B-XLZpJu.js +1 -0
  41. package/dist/assets/{dialog-DYJUM0p1.js → dialog-BJef9ZZo.js} +1 -1
  42. package/dist/assets/{empty-state-BV-Y8c35.js → empty-state-BGzRrNXI.js} +1 -1
  43. package/dist/assets/{i18n-DOuSY1L8.js → i18n-2wGPPdl_.js} +2 -2
  44. package/dist/assets/index-DeA8UyiB.css +1 -0
  45. package/dist/assets/index-x6-rLl5H.js +132 -0
  46. package/dist/assets/{input-CW-Yw2Wu.js → input-Bd10nfMj.js} +1 -1
  47. package/dist/assets/{mailbox-store-_8voaug1.js → mailbox-store-D3omLzBk.js} +1 -1
  48. package/dist/assets/progress-ring-BEULkQ1r.js +1 -0
  49. package/dist/assets/{roster-ws-q8Cp6us7.js → roster-ws-BmV_3U6w.js} +1 -1
  50. package/dist/assets/{session-store-D4JWBP5w.js → session-store-ZMNU48xK.js} +1 -1
  51. package/dist/assets/{settings-B9EPDhAL.js → settings-BF0lRxlj.js} +1 -1
  52. package/dist/assets/{settings-DWIDXI2K.js → settings-CP6cwqHD.js} +1 -1
  53. package/dist/assets/{settings-tyKsHhya.js → settings-D0rWEhMg.js} +1 -1
  54. package/dist/assets/{settings-r_KOGrbF.js → settings-DFCaP02p.js} +1 -1
  55. package/dist/assets/{settings-BoXoFVdx.js → settings-DHix1ZPL.js} +1 -1
  56. package/dist/assets/{settings-BBNOO9wC.js → settings-eEzjNzsC.js} +1 -1
  57. package/dist/assets/{settings-CkXKHC77.js → settings-kp_aIgcX.js} +1 -1
  58. package/dist/assets/{shared-DidGznBo.js → shared-CrX8iE-U.js} +1 -1
  59. package/dist/assets/{stores-CpZiOiOP.js → stores-DyQOSkkD.js} +2 -2
  60. package/dist/assets/ui-store-di6oY7cy.js +1 -0
  61. package/dist/assets/{useWebSocket-BTXT0rOW.js → useWebSocket-BVFPigcY.js} +16 -16
  62. package/dist/assets/{utils-DxDx8yib.js → utils-CwJvjOcH.js} +1 -1
  63. package/dist/assets/{vendor-BTDGplXK.js → vendor-BTTkQ9Tn.js} +27 -27
  64. package/dist/assets/{view-navigation-BRtuAwZo.js → view-navigation-BMRzqGbq.js} +1 -1
  65. package/dist/assets/ws-client-B0-KwuTK.js +1 -0
  66. package/dist/components/MemoryManager/MemoryInjectorPanel.d.ts +19 -0
  67. package/dist/components/SettingsPanel/PluginToggleList.d.ts +11 -1
  68. package/dist/hooks/ws-handlers/misc-handlers.d.ts +1 -0
  69. package/dist/index.html +22 -22
  70. package/dist/index.js +7803 -7535
  71. package/dist/lib/sage-block.d.ts +18 -23
  72. package/dist/stores/local-prefs.d.ts +2 -2
  73. package/dist/stores/types.d.ts +2 -1
  74. package/dist/types/server-message.d.ts +11 -0
  75. package/package.json +10 -9
  76. package/dist/assets/ChronicleDashboard-B7P4f1hr.js +0 -1
  77. package/dist/assets/CodeEditor-BRDwx8Y-.js +0 -1
  78. package/dist/assets/CodeMap-uabWaeJH.js +0 -1
  79. package/dist/assets/GoalView-DaptZIKr.js +0 -1
  80. package/dist/assets/KanbanView-DA5Ulb8C.js +0 -3
  81. package/dist/assets/MemoryManager-BWuSS0Pg.js +0 -1
  82. package/dist/assets/OfficeMapPanel-CUNRI3X7.js +0 -4
  83. package/dist/assets/SddHub-oU47Hv8Y.js +0 -2
  84. package/dist/assets/SessionsDashboard-Dp-Mr844.js +0 -1
  85. package/dist/assets/SetupScreen-BWA_dTU0.js +0 -1
  86. package/dist/assets/SkillDetailView-DmRgd_uu.js +0 -3
  87. package/dist/assets/TechStackView-p9PKj9pQ.js +0 -1
  88. package/dist/assets/codemap-index-store-DDT3gP6t.js +0 -1
  89. package/dist/assets/index-C09Opuro.css +0 -1
  90. package/dist/assets/index-DxZTscTk.js +0 -132
  91. package/dist/assets/progress-ring-DPV94fM-.js +0 -1
  92. package/dist/assets/ui-store-C-oyG_br.js +0 -1
  93. package/dist/assets/ws-client-DqIqzkfU.js +0 -1
  94. package/dist/components/MemoryManager/MemoryInjectorTrace.d.ts +0 -3
  95. package/dist/components/SageMemoryCard.d.ts +0 -19
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{Ca as t,et as n}from"./vendor-BTDGplXK.js";import{t as r}from"./utils-DxDx8yib.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 w-full rounded-md border border-input bg-card/70 px-3 py-2 text-sm shadow-sm 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 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-QTnfLwEv.js";import{et as t,wa as n}from"./vendor-BTTkQ9Tn.js";import{t as r}from"./utils-CwJvjOcH.js";var i=e(n(),1),a=t(),o=i.forwardRef(({className:e,type:t,...n},i)=>(0,a.jsx)(`input`,{type:t,className:r(`flex h-10 w-full rounded-md border border-input bg-card/70 px-3 py-2 text-sm shadow-sm 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 disabled:cursor-not-allowed disabled:opacity-50`,e),ref:i,...n}));o.displayName=`Input`;export{o as t};
@@ -1 +1 @@
1
- import{_a as e}from"./vendor-BTDGplXK.js";var t=50,n=360*60*1e3,r=`@session:`;function i(e){if(e===`*`||e===`all`)return{scope:`project`};if(e.startsWith(r)){let t=e.slice(9);return t.length===0?{scope:`agent`}:{scope:`session`,recipientSessionId:t}}return{scope:`agent`}}var a=e()(e=>({messages:[],agents:[],lastCompaction:null,setMessages:t=>e({messages:t.map(e=>{if(e.scope!==void 0)return e;let t=i(e.to);return{...e,...t}}).slice(-100)}),setAgents:r=>e(()=>{let e=Date.now()-n,i=r.filter(t=>{if(t.online)return!0;let n=Date.parse(t.lastSeenAt);return!Number.isFinite(n)||n>=e});return i.length<=t?{agents:i}:{agents:[...i].sort((e,t)=>{let n=Date.parse(e.lastSeenAt)||0;return(Date.parse(t.lastSeenAt)||0)-n}).slice(0,t)}}),setLastCompaction:t=>e({lastCompaction:t})}));function o(e){return e.messages.filter(e=>!e.completed&&(e.readByCount??0)===0).length}export{o as n,a as r,i as t};
1
+ import{va as e}from"./vendor-BTTkQ9Tn.js";var t=50,n=360*60*1e3,r=`@session:`;function i(e){if(e===`*`||e===`all`)return{scope:`project`};if(e.startsWith(r)){let t=e.slice(9);return t.length===0?{scope:`agent`}:{scope:`session`,recipientSessionId:t}}return{scope:`agent`}}var a=e()(e=>({messages:[],agents:[],lastCompaction:null,setMessages:t=>e({messages:t.map(e=>{if(e.scope!==void 0)return e;let t=i(e.to);return{...e,...t}}).slice(-100)}),setAgents:r=>e(()=>{let e=Date.now()-n,i=r.filter(t=>{if(t.online)return!0;let n=Date.parse(t.lastSeenAt);return!Number.isFinite(n)||n>=e});return i.length<=t?{agents:i}:{agents:[...i].sort((e,t)=>{let n=Date.parse(e.lastSeenAt)||0;return(Date.parse(t.lastSeenAt)||0)-n}).slice(0,t)}}),setLastCompaction:t=>e({lastCompaction:t})}));function o(e){return e.messages.filter(e=>!e.completed&&(e.readByCount??0)===0).length}export{o as n,a as r,i as t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{$i as t,Gn as n,Ht as r,Nt as i,Oi as a,Ri as o,Wi as s,_ as c,_r as l,a as u,c as d,et as f,f as p,fn as m,h,i as g,nn as _,nt as v,r as y,rr as b,s as x,u as S,vt as C,wa as w,ya as T,yr as E}from"./vendor-BTTkQ9Tn.js";import"./i18n-2wGPPdl_.js";import{t as D}from"./utils-CwJvjOcH.js";var O=e(w(),1),k={pending:{label:`Pending`,icon:a,text:`text-muted-foreground`,ring:`border-border/70 bg-muted/45`,dot:`bg-muted-foreground`,hex:`hsl(var(--muted-foreground))`},queued:{label:`Ready`,icon:a,text:`text-primary`,ring:`border-primary/35 bg-primary/10`,dot:`bg-primary`,hex:`hsl(var(--primary))`},in_progress:{label:`Running`,icon:n,spin:!0,text:`text-warning`,ring:`border-warning/45 bg-warning/10`,dot:`bg-warning`,hex:`hsl(var(--warning))`},blocked:{label:`Blocked`,icon:a,text:`text-destructive`,ring:`border-destructive/30 bg-destructive/10`,dot:`bg-destructive`,hex:`hsl(var(--destructive))`},review:{label:`Review`,icon:a,text:`text-primary`,ring:`border-primary/35 bg-primary/10`,dot:`bg-primary`,hex:`hsl(var(--info))`},failed:{label:`Failed`,icon:v,text:`text-destructive`,ring:`border-destructive/45 bg-destructive/10`,dot:`bg-destructive`,hex:`hsl(var(--destructive))`},completed:{label:`Done`,icon:o,text:`text-success`,ring:`border-success/35 bg-success/10`,dot:`bg-success`,hex:`hsl(var(--success))`},cancelled:{label:`Cancelled`,icon:t,text:`text-muted-foreground`,ring:`border-border/70 bg-muted/45`,dot:`bg-muted-foreground`,hex:`hsl(var(--muted-foreground))`}};function A(e){return k[e]??k.pending}var j={critical:{text:`text-destructive`,chip:`bg-destructive/10 text-destructive`},high:{text:`text-warning`,chip:`bg-warning/12 text-warning`},medium:{text:`text-primary`,chip:`bg-primary/10 text-primary`},low:{text:`text-muted-foreground`,chip:`bg-muted text-muted-foreground`}};function M(e){return j[e]??j.medium}var N={running:`border-primary/35 bg-primary/10 text-primary`,paused:`border-warning/35 bg-warning/10 text-warning`,stopped:`border-border/70 bg-muted text-muted-foreground`,completed:`border-success/35 bg-success/10 text-success`,failed:`border-destructive/35 bg-destructive/10 text-destructive`,deadlocked:`border-destructive/35 bg-destructive/10 text-destructive`,idle:`border-border bg-muted text-muted-foreground`},P=[`bg-warning`,`bg-primary`,`bg-success`,`bg-destructive`,`bg-secondary`,`bg-muted-foreground`,`bg-accent`],F={started:{icon:m,color:`text-warning`},completed:{icon:o,color:`text-success`},failed:{icon:v,color:`text-destructive`},retrying:{icon:_,color:`text-warning`},wave:{icon:b,color:`text-primary`},deadlock:{icon:C,color:`text-destructive`},verification_failed:{icon:r,color:`text-destructive`},conflict:{icon:l,color:`text-warning`},split:{icon:i,color:`text-primary`},supervisor:{icon:s,color:`text-primary`}};function I(e){let t=e.trim().split(/\s+/);return((t[0]?.[0]??``)+(t[1]?.[0]??``)).toUpperCase()||`·`}function L(e){let t=Math.max(0,Math.floor(e/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60);return n<60?t%60?`${n}m ${t%60}s`:`${n}m`:`${Math.floor(n/60)}h ${n%60}m`}function R(e,t){let n=Math.max(0,Math.floor((t-e)/1e3));if(n<60)return`${n}s`;let r=Math.floor(n/60);return r<60?`${r}m`:`${Math.floor(r/60)}h`}var z=f(),B=300,V=128,H=240,U={pending:{ring:`border-border/70`,chip:`bg-muted text-muted-foreground`,dot:`bg-muted-foreground`},queued:{ring:`border-primary/35`,chip:`bg-primary/10 text-primary`,dot:`bg-primary`},in_progress:{ring:`border-warning/45`,chip:`bg-warning/12 text-warning`,dot:`bg-warning`},blocked:{ring:`border-destructive/30`,chip:`bg-destructive/10 text-destructive`,dot:`bg-destructive`},review:{ring:`border-primary/35`,chip:`bg-primary/10 text-primary`,dot:`bg-primary`},failed:{ring:`border-destructive/45`,chip:`bg-destructive/10 text-destructive`,dot:`bg-destructive`},completed:{ring:`border-success/35`,chip:`bg-success/12 text-success`,dot:`bg-success`},cancelled:{ring:`border-border/70`,chip:`bg-muted text-muted-foreground`,dot:`bg-muted-foreground`}};function W({data:e}){let t=e.task,{t:r}=T(),i=U[t.displayStatus],s=t.displayStatus===`in_progress`,l=t.displayStatus===`completed`?o:t.displayStatus===`failed`?v:s?n:a;return(0,z.jsxs)(`div`,{className:D(`sdd-node-enter group relative rounded-lg border bg-card/95 px-2.5 py-2 text-left shadow-lg backdrop-blur`,i.ring,s&&`sdd-node-running`,t.displayStatus===`completed`&&`sdd-node-complete`,t.displayStatus===`failed`&&`sdd-node-failed`,e.onTaskClick&&`hover:brightness-125`),style:{width:H,animationDelay:`${Math.min(e.index*45,600)}ms`},children:[e.onTaskClick&&(0,z.jsx)(`button`,{type:`button`,"aria-label":r(`activity:sdd.openTask`,{title:t.title,defaultValue:`Open task: ${t.title}`}),className:`absolute inset-0 z-10 cursor-pointer rounded-lg`,onClick:()=>e.onTaskClick?.(t.id)}),(0,z.jsx)(x,{type:`target`,position:c.Left,isConnectable:!1,className:`!h-1.5 !w-1.5 !border-0 !bg-border`}),(0,z.jsx)(x,{type:`source`,position:c.Right,isConnectable:!1,className:`!h-1.5 !w-1.5 !border-0 !bg-border`}),(0,z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,z.jsx)(l,{className:D(`h-3.5 w-3.5`,s&&`animate-spin`,i.chip.split(` `).find(e=>e.startsWith(`text`)))}),(0,z.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:t.shortId}),(0,z.jsx)(`span`,{className:D(`font-mono text-[10px] font-bold uppercase`,M(t.priority).text),children:t.priority[0]}),(0,z.jsx)(`span`,{className:D(`ml-auto rounded px-1.5 py-px text-[9px] font-medium`,i.chip),children:r(`activity:sdd.status.${t.displayStatus}`)})]}),(0,z.jsx)(`p`,{className:`mt-1 line-clamp-2 text-[11px] leading-snug text-foreground`,children:t.title}),(t.agentName||t.worktreeBranch)&&(0,z.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-1.5`,children:[t.agentName&&(0,z.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,z.jsx)(`span`,{className:D(`flex h-4 w-4 items-center justify-center rounded-full text-[8px] font-bold text-white`,s?`bg-warning sdd-agent-live`:`bg-muted-foreground`),children:I(t.agentName)}),(0,z.jsx)(`span`,{className:`max-w-[88px] truncate text-[10px] text-muted-foreground`,children:t.agentName})]}),t.retries?(0,z.jsxs)(`span`,{className:`flex items-center gap-0.5 text-[9px] text-destructive`,children:[(0,z.jsx)(_,{className:`h-2.5 w-2.5`}),t.retries]}):null,t.worktreeBranch&&(0,z.jsxs)(`span`,{className:`ml-auto flex items-center gap-0.5 text-[9px] text-muted-foreground`,title:t.worktreeBranch,children:[(0,z.jsx)(E,{className:`h-2.5 w-2.5`}),(0,z.jsx)(`span`,{className:`max-w-[70px] truncate`,children:t.worktreeBranch.replace(/^.*\//,``)})]})]})]})}function G({data:e}){return(0,z.jsx)(`div`,{className:`whitespace-nowrap text-[11px] font-bold uppercase text-muted-foreground`,children:e.label})}var K={task:W,colLabel:G};function q(e,t,n){let r=new Map(e.map(e=>[e.shortId,e])),i=[],a=0;t.forEach((e,t)=>{i.push({id:`__col_${t}`,position:{x:t*B,y:-52},data:{label:e.label},draggable:!1,selectable:!1,type:`colLabel`,style:{pointerEvents:`none`}}),e.taskIds.forEach((e,o)=>{let s=r.get(e);s&&i.push({id:s.id,position:{x:t*B,y:o*V},data:{task:s,index:a++,onTaskClick:n},type:`task`,draggable:!0})})});let o=[];for(let t of e)for(let e of t.deps){let n=r.get(e);if(!n)continue;let i=n.displayStatus===`completed`&&(t.displayStatus===`in_progress`||t.displayStatus===`queued`);o.push({id:`${n.id}->${t.id}`,source:n.id,target:t.id,animated:i,className:i?`sdd-edge-flow`:void 0,style:{stroke:A(t.displayStatus).hex,strokeWidth:i?2.2:1.4,opacity:t.displayStatus===`pending`?.4:.85}})}return{nodes:i,edges:o}}function J({tasks:e,columns:t,onTaskClick:n}){let{fitView:r}=h(),{nodes:i,edges:a}=(0,O.useMemo)(()=>q(e,t,n),[e,t,n]),o=e.length;return(0,O.useEffect)(()=>{let e=setTimeout(()=>r({padding:.18,duration:400}),60);return()=>clearTimeout(e)},[o,r]),(0,z.jsxs)(p,{nodes:i,edges:a,nodeTypes:K,fitView:!0,fitViewOptions:{padding:.18},minZoom:.2,maxZoom:1.6,proOptions:{hideAttribution:!0},nodesConnectable:!1,elementsSelectable:!!n,children:[(0,z.jsx)(y,{variant:g.Dots,gap:22,size:1,color:`hsl(var(--border))`}),(0,z.jsx)(u,{showInteractive:!1,className:`!bottom-2 !left-2`}),(0,z.jsx)(d,{pannable:!0,zoomable:!0,nodeStrokeWidth:2,maskColor:`hsl(var(--background) / 0.65)`,nodeColor:e=>{let t=e.data?.task?.displayStatus;return t?A(t).hex:`hsl(var(--muted-foreground))`},className:`!bottom-2 !right-2 !h-24 !w-40 overflow-hidden rounded-md border border-border/70 bg-card`})]})}function Y({tasks:e,columns:t,onTaskClick:n}){return(0,z.jsx)(S,{children:(0,z.jsx)(J,{tasks:e,columns:t,onTaskClick:n})})}function X({pct:e}){let t=(0,O.useId)(),n=2*Math.PI*26,r=n-Math.max(0,Math.min(100,e))/100*n;return(0,z.jsxs)(`div`,{className:`relative h-16 w-16 shrink-0`,children:[(0,z.jsxs)(`svg`,{viewBox:`0 0 64 64`,className:`h-16 w-16 -rotate-90`,role:`img`,"aria-label":`Progress`,children:[(0,z.jsx)(`circle`,{cx:`32`,cy:`32`,r:26,fill:`none`,stroke:`hsl(var(--muted))`,strokeWidth:`6`}),(0,z.jsx)(`circle`,{cx:`32`,cy:`32`,r:26,fill:`none`,stroke:`url(#${t})`,strokeWidth:`6`,strokeLinecap:`round`,strokeDasharray:n,strokeDashoffset:r,style:{transition:`stroke-dashoffset 0.6s cubic-bezier(0.16,1,0.3,1)`}}),(0,z.jsx)(`defs`,{children:(0,z.jsxs)(`linearGradient`,{id:t,x1:`0`,y1:`0`,x2:`1`,y2:`1`,children:[(0,z.jsx)(`stop`,{offset:`0%`,stopColor:`hsl(var(--primary))`}),(0,z.jsx)(`stop`,{offset:`100%`,stopColor:`hsl(var(--info))`})]})})]}),(0,z.jsxs)(`div`,{className:`absolute inset-0 flex items-center justify-center text-sm font-bold text-foreground`,children:[Math.round(e),`%`]})]})}export{N as a,L as c,F as i,M as l,Y as n,I as o,P as r,R as s,X as t,A as u};
@@ -1 +1 @@
1
- import{t as e}from"./ws-client-DqIqzkfU.js";var t=new Map,n=15e3;function r(e){return e.startsWith(`agent-roster.`)&&e.length>13?e.slice(13):void 0}function i(i,a,o){return new Promise((s,c)=>{let l=e(),u=!1,d=[],f=e=>{if(!u){u=!0;for(let e of d)e();d=[],t.delete(i),e()}},p=e=>{let t=e,n=t&&typeof t==`object`?t.payload??t:e;if(n&&typeof n==`object`&&`error`in n&&typeof n.error==`string`){f(()=>c(Error(n.error)));return}f(()=>s(n))};l.connect().then(()=>{if(u)return;let e=t.get(i);e&&(e.cleanup(),e.reject(Error(`Roster request "${i}" superseded by new request`)),t.delete(i)),t.set(i,{reject:e=>f(()=>c(e)),cleanup:()=>{for(let e of d)e();d=[],u||t.delete(i)}});let s=l.on(i,p);d.push(s);let m=r(i);if(m){let e=l.on(m,p);d.push(e)}if(o){if(o.aborted){f(()=>c(new DOMException(`Aborted`,`AbortError`)));return}let e=()=>f(()=>c(new DOMException(`Aborted`,`AbortError`)));o.addEventListener(`abort`,e,{once:!0}),d.push(()=>o.removeEventListener(`abort`,e))}let h=setTimeout(()=>f(()=>c(Error(`Roster request "${i}" timed out`))),n);d.push(()=>clearTimeout(h)),l.send({type:i,payload:a})}).catch(e=>f(()=>c(e)))})}export{i as t};
1
+ import{t as e}from"./ws-client-B0-KwuTK.js";var t=new Map,n=15e3;function r(e){return e.startsWith(`agent-roster.`)&&e.length>13?e.slice(13):void 0}function i(i,a,o){return new Promise((s,c)=>{let l=e(),u=!1,d=[],f=e=>{if(!u){u=!0;for(let e of d)e();d=[],t.delete(i),e()}},p=e=>{let t=e,n=t&&typeof t==`object`?t.payload??t:e;if(n&&typeof n==`object`&&`error`in n&&typeof n.error==`string`){f(()=>c(Error(n.error)));return}f(()=>s(n))};l.connect().then(()=>{if(u)return;let e=t.get(i);e&&(e.cleanup(),e.reject(Error(`Roster request "${i}" superseded by new request`)),t.delete(i)),t.set(i,{reject:e=>f(()=>c(e)),cleanup:()=>{for(let e of d)e();d=[],u||t.delete(i)}});let s=l.on(i,p);d.push(s);let m=r(i);if(m){let e=l.on(m,p);d.push(e)}if(o){if(o.aborted){f(()=>c(new DOMException(`Aborted`,`AbortError`)));return}let e=()=>f(()=>c(new DOMException(`Aborted`,`AbortError`)));o.addEventListener(`abort`,e,{once:!0}),d.push(()=>o.removeEventListener(`abort`,e))}let h=setTimeout(()=>f(()=>c(Error(`Roster request "${i}" timed out`))),n);d.push(()=>clearTimeout(h)),l.send({type:i,payload:a})}).catch(e=>f(()=>c(e)))})}export{i as t};
@@ -1 +1 @@
1
- import{_a as e,ga as t}from"./vendor-BTDGplXK.js";var n=1,r=e()(t(e=>({session:null,totalTokens:{input:0,output:0,cacheRead:0,cacheWrite:0},lastInputTokens:0,cost:0,startTime:null,maxContext:0,inputCost:0,outputCost:0,cacheReadCost:0,projectName:``,projectRoot:``,cwd:``,mode:`default`,modes:[],contextMode:`balanced`,contextModes:[],iteration:null,todos:[],lastVisitedAt:0,appVersion:``,latestVersion:``,updateAvailable:!1,droppedTools:0,setSession:t=>e({session:t,lastVisitedAt:Date.now()}),updateUsage:t=>e(e=>{let n=t.input+(t.cacheRead??0)+(t.cacheWrite??0),r=t.cacheRead??0,i=t.cacheWrite??0;return{totalTokens:{input:e.totalTokens.input+t.input,output:e.totalTokens.output+t.output,cacheRead:(e.totalTokens.cacheRead??0)+r,cacheWrite:(e.totalTokens.cacheWrite??0)+i},lastInputTokens:n||e.lastInputTokens}}),addCost:t=>e(e=>({cost:e.cost+t})),startSession:t=>e({session:t,startTime:Date.now(),iteration:null,lastInputTokens:0,totalTokens:{input:0,output:0,cacheRead:0,cacheWrite:0},cost:0,lastVisitedAt:Date.now(),droppedTools:0}),endSession:()=>e({session:null,startTime:null,iteration:null,droppedTools:0}),setEnv:t=>e(e=>({maxContext:t.maxContext??e.maxContext,projectRoot:t.projectRoot??e.projectRoot,projectName:t.projectName??e.projectName,cwd:t.cwd??e.cwd,mode:t.mode??e.mode,contextMode:t.contextMode??e.contextMode,inputCost:t.inputCost??e.inputCost,outputCost:t.outputCost??e.outputCost,cacheReadCost:t.cacheReadCost??e.cacheReadCost})),setIteration:t=>e({iteration:t}),setContextUsage:(t,n)=>e(e=>({lastInputTokens:t,maxContext:n??e.maxContext})),setModes:t=>e({modes:t}),setContextModes:t=>e({contextModes:t}),setTodos:t=>e({todos:t}),setUpdateInfo:t=>e({appVersion:t.appVersion,latestVersion:t.latestVersion,updateAvailable:t.updateAvailable}),setDroppedTools:t=>e({droppedTools:t})}),{name:`wrongstack-session`,version:n,partialize:e=>({session:e.session,projectName:e.projectName,projectRoot:e.projectRoot,cwd:e.cwd,mode:e.mode,contextMode:e.contextMode,lastVisitedAt:e.lastVisitedAt,lastInputTokens:e.lastInputTokens}),migrate:(e,t)=>{if(t>n)return null;let r=e??{};return r.session!==null&&r.session!==void 0&&typeof r.session!=`object`?null:{session:r.session??null,projectName:typeof r.projectName==`string`?r.projectName:``,projectRoot:typeof r.projectRoot==`string`?r.projectRoot:``,cwd:typeof r.cwd==`string`?r.cwd:``,mode:typeof r.mode==`string`?r.mode:`default`,contextMode:typeof r.contextMode==`string`?r.contextMode:`balanced`,lastVisitedAt:typeof r.lastVisitedAt==`number`?r.lastVisitedAt:0}},onRehydrateStorage:()=>(e,t)=>{t||typeof window<`u`&&(window.__wrongstackSessionRehydrated=!0)}}));export{r as t};
1
+ import{_a as e,va as t}from"./vendor-BTTkQ9Tn.js";var n=1,r=t()(e(e=>({session:null,totalTokens:{input:0,output:0,cacheRead:0,cacheWrite:0},lastInputTokens:0,cost:0,startTime:null,maxContext:0,inputCost:0,outputCost:0,cacheReadCost:0,projectName:``,projectRoot:``,cwd:``,mode:`default`,modes:[],contextMode:`balanced`,contextModes:[],iteration:null,todos:[],lastVisitedAt:0,appVersion:``,latestVersion:``,updateAvailable:!1,droppedTools:0,setSession:t=>e({session:t,lastVisitedAt:Date.now()}),updateUsage:t=>e(e=>{let n=t.input+(t.cacheRead??0)+(t.cacheWrite??0),r=t.cacheRead??0,i=t.cacheWrite??0;return{totalTokens:{input:e.totalTokens.input+t.input,output:e.totalTokens.output+t.output,cacheRead:(e.totalTokens.cacheRead??0)+r,cacheWrite:(e.totalTokens.cacheWrite??0)+i},lastInputTokens:n||e.lastInputTokens}}),addCost:t=>e(e=>({cost:e.cost+t})),startSession:t=>e({session:t,startTime:Date.now(),iteration:null,lastInputTokens:0,totalTokens:{input:0,output:0,cacheRead:0,cacheWrite:0},cost:0,lastVisitedAt:Date.now(),droppedTools:0}),endSession:()=>e({session:null,startTime:null,iteration:null,droppedTools:0}),setEnv:t=>e(e=>({maxContext:t.maxContext??e.maxContext,projectRoot:t.projectRoot??e.projectRoot,projectName:t.projectName??e.projectName,cwd:t.cwd??e.cwd,mode:t.mode??e.mode,contextMode:t.contextMode??e.contextMode,inputCost:t.inputCost??e.inputCost,outputCost:t.outputCost??e.outputCost,cacheReadCost:t.cacheReadCost??e.cacheReadCost})),setIteration:t=>e({iteration:t}),setContextUsage:(t,n)=>e(e=>({lastInputTokens:t,maxContext:n??e.maxContext})),setModes:t=>e({modes:t}),setContextModes:t=>e({contextModes:t}),setTodos:t=>e({todos:t}),setUpdateInfo:t=>e({appVersion:t.appVersion,latestVersion:t.latestVersion,updateAvailable:t.updateAvailable}),setDroppedTools:t=>e({droppedTools:t})}),{name:`wrongstack-session`,version:n,partialize:e=>({session:e.session,projectName:e.projectName,projectRoot:e.projectRoot,cwd:e.cwd,mode:e.mode,contextMode:e.contextMode,lastVisitedAt:e.lastVisitedAt,lastInputTokens:e.lastInputTokens}),migrate:(e,t)=>{if(t>n)return null;let r=e??{};return r.session!==null&&r.session!==void 0&&typeof r.session!=`object`?null:{session:r.session??null,projectName:typeof r.projectName==`string`?r.projectName:``,projectRoot:typeof r.projectRoot==`string`?r.projectRoot:``,cwd:typeof r.cwd==`string`?r.cwd:``,mode:typeof r.mode==`string`?r.mode:`default`,contextMode:typeof r.contextMode==`string`?r.contextMode:`balanced`,lastVisitedAt:typeof r.lastVisitedAt==`number`?r.lastVisitedAt:0}},onRehydrateStorage:()=>(e,t)=>{t||typeof window<`u`&&(window.__wrongstackSessionRehydrated=!0)}}));export{r as t};
@@ -1 +1 @@
1
- var e=`Ajustes`,t=`Configura cada aspecto de tu espacio de trabajo de agente.`,n={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.`},r={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`},i={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}}`},a={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}}`},o={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}}`},s={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`},c={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}}`},l={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.`,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`,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.`,accentCyan:`Cian`,accentBlue:`Azul`,accentEmerald:`Esmeralda`,accentViolet:`Violeta`,accentRose:`Rosa`,accentAmber:`Ámbar`},u={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:`Omitir los prompts de confirmación de herramientas — el agente corre sin preguntar.`,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`,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`},d={heading:`Ejecución`,maxIterationsLabel:`Iteraciones máx por run`,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.`},f={heading:`Fallbacks de modelo`,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 fallback`,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`},p={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.`},m={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.`,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.`},h={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`,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`,autoReviewFallbackProfileHint:`Perfil nombrado para el agente de auto-revisión. Anula proveedor+modelo.`,autoReviewFallbackProfileNone:`Ninguno — usar proveedor+modelo o valores por defecto`,autoReviewFallbackModelsLabel:`Modelos de respaldo`,autoReviewFallbackModelsEmpty:`Sin modelos de respaldo configurados`,autoReviewFallbackModelsHint:`Modelos que la cadena de respaldo resuelve desde el perfil o la cadena global.`,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.`},g={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`,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`,pluginKnowledgeGraph:`Knowledge Graph — hechos persistentes`,pluginErrorLens:`Error Lens — diagnóstico de fallos`,pluginTodoTracker:`Todo Tracker — tareas persistentes`,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:`Cuán agresivamente reducir el uso de tokens.`,tokenSavingOff:`Desactivado — sin ahorro`,tokenSavingMinimal:`Mínimo — optimización básica`,tokenSavingLight:`Ligero — reducción moderada`,tokenSavingMedium:`Medio — ahorros significativos`,tokenSavingAggressive:`Agresivo — compresión máxima`},_={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`},v={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.`},y={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.`},b={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:`Mostrar panel de enjambre de agentes`,showAgentSwarmPanelHint:`Renderiza el panel persistente de enjambre de agentes y cola de misiones bajo la línea de estado (paridad con TUI).`,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).`,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.`,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`,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.`},x={title:e,subtitle:t,tabs:n,model:r,connection:i,provider:a,mcp:o,allowlist:s,oauth:c,general:l,agent:u,execution:d,fallbacks:f,fleet:p,integrations:m,features:h,context:g,logs:_,security:v,toast:y,display:b};export{u as agent,s as allowlist,i as connection,g as context,x as default,b as display,d as execution,f as fallbacks,h as features,p as fleet,l as general,m as integrations,_ as logs,o as mcp,r as model,c as oauth,a as provider,v as security,t as subtitle,n as tabs,e as title,y as toast};
1
+ var e=`Ajustes`,t=`Configura cada aspecto de tu espacio de trabajo de agente.`,n={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.`},r={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`},i={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}}`},a={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}}`},o={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}}`},s={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`},c={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}}`},l={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.`,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`,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.`,accentCyan:`Cian`,accentBlue:`Azul`,accentEmerald:`Esmeralda`,accentViolet:`Violeta`,accentRose:`Rosa`,accentAmber:`Ámbar`},u={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:`Omitir los prompts de confirmación de herramientas — el agente corre sin preguntar.`,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`,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`},d={heading:`Ejecución`,maxIterationsLabel:`Iteraciones máx por run`,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.`},f={heading:`Fallbacks de modelo`,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 fallback`,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`},p={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.`},m={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.`,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.`},h={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`,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`,autoReviewFallbackProfileHint:`Perfil nombrado para el agente de auto-revisión. Anula proveedor+modelo.`,autoReviewFallbackProfileNone:`Ninguno — usar proveedor+modelo o valores por defecto`,autoReviewFallbackModelsLabel:`Modelos de respaldo`,autoReviewFallbackModelsEmpty:`Sin modelos de respaldo configurados`,autoReviewFallbackModelsHint:`Modelos que la cadena de respaldo resuelve desde el perfil o la cadena global.`,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.`},g={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`,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`,pluginKnowledgeGraph:`Knowledge Graph — hechos persistentes`,pluginErrorLens:`Error Lens — diagnóstico de fallos`,pluginTodoTracker:`Todo Tracker — tareas persistentes`,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:`Cuán agresivamente reducir el uso de tokens.`,tokenSavingOff:`Desactivado — sin ahorro`,tokenSavingMinimal:`Mínimo — optimización básica`,tokenSavingLight:`Ligero — reducción moderada`,tokenSavingMedium:`Medio — ahorros significativos`,tokenSavingAggressive:`Agresivo — compresión máxima`},_={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`},v={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.`},y={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.`},b={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).`,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.`,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`,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.`},x={title:e,subtitle:t,tabs:n,model:r,connection:i,provider:a,mcp:o,allowlist:s,oauth:c,general:l,agent:u,execution:d,fallbacks:f,fleet:p,integrations:m,features:h,context:g,logs:_,security:v,toast:y,display:b};export{u as agent,s as allowlist,i as connection,g as context,x as default,b as display,d as execution,f as fallbacks,h as features,p as fleet,l as general,m as integrations,_ as logs,o as mcp,r as model,c as oauth,a as provider,v as security,t as subtitle,n as tabs,e as title,y as toast};
@@ -1 +1 @@
1
- var e=`Paramètres`,t=`Configure every aspect of your agent workspace`,n={general:`Général`,provider:`Fournisseur`,connection:`Connexions`,agent:`Agent`,execution:`Exécution`,fallbacks:`Fallbacks`,routing:`Routage`,fleet:`Flotte`,integrations:`Intégrations`,chimera:`Chimera`,context:`Contexte`,logs:`Journaux`,security:`Sécurité`,display:`Affichage`,displayDesc:`Apparence du workbench, puce d’état, minuteurs de refine et bascules d’injection d’outil/mémoire — reflète le SettingsPicker du TUI.`},r={heading:`Modèle`,loading:`Chargement des modèles...`,notFound:`Aucun modèle trouvé pour ce fournisseur. Le catalogue est peut-être vide ou en cours de chargement.`,selectProviderFirst:`Sélectionnez d'abord un fournisseur`,context:`{{count}}k contexte`},i={wsUrlLabel:`URL du serveur WebSocket`,wsUrlPlaceholder:`ws://localhost:3456`,wsUrlHint:`URL du serveur WebSocket de l'agent. Le serveur fonctionne en parallèle du CLI.`,startingHeading:`Démarrage du serveur WebSocket`,startingBody:`Pour le développement, lancez ./dev.ps1 depuis la racine du repo (définissez éventuellement WS_HOST/WS_PORT avant). Sinon, lancez la WebUI avec la CLI : wstack --webui.`,healthHeading:`État des connexions`,healthHint:`Rapport en direct sur le propriétaire, le stockage, la file, la surveillance et la latence.`,healthRefresh:`Actualiser`,healthLoading:`Vérification des services…`,healthUnknown:`État inconnu`,healthDisconnected:`Le WebSocket de la WebUI est déconnecté.`,healthRestartRequired:`Redémarrez le backend une fois pour activer le rapport de connexion.`,healthOptional:`À la demande`,endpointInvalidBadge:`chemin du socket trop long`,endpointInvalidRemedy:`Le chemin du socket IPC dépasse la limite de longueur de cette plateforme, donc le démon partagé ne peut pas démarrer. Les requêtes tombent en mode local de processus plus lent. Solution : définissez un TMPDIR plus court (par ex. export TMPDIR=/tmp) et redémarrez WrongStack.`,healthCounts:`{{healthy}} sains · {{attention}} attention · {{sleeping}} en veille`,healthOverall:{healthy:`Services requis sains`,degraded:`Service requis dégradé`,error:`Service requis indisponible`},healthStatus:{healthy:`Sain`,degraded:`Dégradé`,offline:`En veille`,unavailable:`Indisponible`,error:`Erreur`},services:{kanban:{label:`Kanban IPC`},mailbox:{label:`Mailbox IPC`}},serviceActionRestart:`Redémarrer {{label}}`},a={savedProviderCount_one:`{{count}} fournisseur`,savedProviderCount_other:`{{count}} fournisseurs`,keyCount_one:`{{count}} clé configurée`,keyCount_other:`{{count}} clés configurées`,activeKeyCount_one:`{{count}} clé active`,activeKeyCount_other:`{{count}} clés actives`,subscriptionHeading:`Connexion par abonnement`,apiKeysHeading:`Fournisseurs de clés API`,apiKeysBody:`Choisissez un fournisseur dans le catalogue et ajoutez une clé API, ou gérez les fournisseurs enregistrés.`,tabCatalog:`Catalogue`,tabSaved:`Enregistrés ({{count}})`,searchPlaceholder:`Rechercher {{count}} fournisseurs (nom / id / famille)…`,loadingCatalog:`Chargement du catalogue...`,noMatch:`Aucun fournisseur ne correspond à « {{query}} ».`,configured:`Configuré`,reachable:`Accessible`,envVar:`ENV : {{var}}`,modelCount_one:`{{count}} modèle`,modelCount_other:`{{count}} modèles`,keyPlaceholder:`Clé API {{name}}`,orEnv:`Ou définissez {{env}} dans l'environnement à la place.`,addApiKey:`Ajouter une clé API`,manageKeys:`Gérez vos clés API et configurations de fournisseur`,addProvider:`Ajouter un fournisseur`,addCustomHeading:`Ajouter un fournisseur personnalisé`,localServers:`Serveurs locaux — cliquez pour pré-remplir :`,providerIdPlaceholder:`ID du fournisseur (ex. my-llm-server)`,apiKeyOptionalPlaceholder:`Clé API (facultatif)`,noSaved:`Aucun fournisseur enregistré`,noSavedHint:`Ajoutez un fournisseur pour démarrer`,apiKeysLabel:`Clés API`,addKey:`Ajouter une clé`,noKeys:`Aucune clé configurée`,active:`Active`,setActive:`Définir comme active`,keyLabelPlaceholder:`Libellé de la clé (ex. default, production)`,apiKeyPlaceholder:`Clé API`,saveKey:`Enregistrer la clé`,savedToast:`Clé enregistrée pour {{name}}`},o={status:{connected:`Connecté`,connecting:`Connexion`,sleeping:`En veille`,discovering:`Découverte`,error:`Erreur`,stopped:`Arrêté`,unknown:`Inconnu`},disabled:`Les serveurs MCP sont désactivés.`,wakeTitle:`Réveiller le serveur`,sleepTitle:`Mettre en veille`,discoverTitle:`Découvrir les outils`,editTitle:`Modifier`,removeTitle:`Supprimer`,statusLabel:`Statut :`,enabledLabel:`Activé :`,yes:`Oui`,no:`Non`,descriptionLabel:`Description :`,pidLabel:`PID :`,errorLabel:`Erreur :`,toolsLabel:`Outils ({{count}}) :`,noTools:`Aucun outil découvert pour le moment`,serverNameRequired:`Le nom du serveur est requis`,dialogTitleEdit:`Modifier le serveur MCP`,dialogTitleAdd:`Ajouter un serveur MCP`,dialogTitleAddCustom:`Ajouter un serveur MCP personnalisé`,fieldName:`Nom`,fieldNamePlaceholder:`ex. github, filesystem`,fieldTransport:`Transport`,fieldUrl:`URL`,fieldCommand:`Commande`,fieldCommandPlaceholder:`ex. npx`,fieldArgs:`Args`,fieldArgsHint:`(séparés par des espaces)`,fieldArgsPlaceholder:`ex. -y @modelcontextprotocol/server-github`,fieldEnv:`Variables d'env`,fieldEnvHint:`(KEY=valeur, une par ligne)`,fieldDescription:`Description`,fieldDescriptionPlaceholder:`Serveur MCP GitHub pour l'accès au dépôt`,enableServer:`Activer le serveur`,lazyConnect:`Connexion différée`,lazyConnectHint:`(ne démarre qu'au premier appel d'outil ; se met en veille quand inactif)`,saveChanges:`Enregistrer`,addServer:`Ajouter le serveur`,requires:`Requiert : {{vars}}`,added:`Ajouté`,heading:`Serveurs MCP`,summary:`{{connected}} connecté(s) · {{sleeping}} en veille · {{total}} au total`,addCustom:`Personnalisé`,tabRecommended:`Recommandés`,tabServers:`Serveurs`,tabAddCustom:`Personnalisé`,recommendedBody:`Ajout en un clic pour les serveurs MCP populaires. Cliquez sur Ajouter pour pré-remplir la configuration, puis confirmez. Les serveurs nécessitant des identifiants devront avoir leurs variables d'env définies avant usage.`,loadingServers:`Chargement des serveurs...`,noServers:`Aucun serveur MCP configuré`,noServersHint:`Passez à l'onglet Recommandés pour ajouter des serveurs populaires, ou Personnalisé pour les vôtres.`,addCustomBody:`Configurez un serveur MCP personnalisé avec transport stdio, SSE ou HTTP.`,addCustomBodyHint:`Pour les serveurs populaires, utilisez plutôt l'onglet Recommandés — tout est préconfiguré.`,removeConfirmTitle:`Supprimer le serveur « {{name}} » ?`,removeConfirmBody:`Cela supprime le serveur MCP de votre configuration.`,toastAdded:`Serveur « {{name}} » ajouté`,toastRemoved:`Serveur « {{name}} » supprimé`,toastDiscovered:`{{count}} outils découverts depuis « {{name}} »`,toastSleeping:`Le serveur « {{name}} » est en veille`,toastConnected:`Serveur « {{name}} » connecté`,toastReconnected:`Serveur « {{name}} » reconnecté`,toastDisconnected:`Serveur « {{name}} » déconnecté : {{reason}}`,toastError:`Serveur « {{name}} » erreur : {{error}}`},s={title:`Effacer la allowlist enregistrée ?`,body_one:`Cela supprimera le modèle épinglé pour {{provider}}. Le sélecteur de modèle reviendra au catalogue models.dev.`,body_other:`Cela supprimera les {{count}} modèles épinglés pour {{provider}}. Le sélecteur de modèle reviendra au catalogue models.dev.`,undoHint:`Vous pouvez annuler pendant 8 secondes après confirmation.`,keepTitle:`Conserver l'allowlist (Échap)`,clearTitle:`Effacer l'allowlist (Entrée)`,clear:`Effacer l'allowlist`},c={termsWarning:`Connectez-vous avec un abonnement au lieu d'une clé API. Utiliser un abonnement en dehors de son client officiel peut enfreindre les Conditions du fournisseur — votre compte pourrait être limité ou banni. Une clé API est la voie sanctifiée pour un usage programmatique.`,signIn:`Se connecter`,waitingBrowser:`En attente de votre connexion…`,openSignIn:`Ouvrir la page de connexion`,pasteLoopbackBusy:`Port loopback occupé — collez l'URL de redirection`,pasteCantReach:`Le navigateur n'atteint pas ce serveur ? Collez l'URL de redirection`,submit:`Soumettre`,enterCode:`Saisissez ce code sur la page de vérification :`,openVerification:`Ouvrir la page de vérification`,waitingCode:`En attente d'autorisation…`,exchanging:`Échange des tokens…`,fetchingModels:`Récupération des modèles…`,signedIn:`Connecté.`,signedInToast:`Connecté — {{provider}}`,signInFailed:`Échec de la connexion`,accountCount_one:`{{count}} compte enregistré`,accountCount_other:`{{count}} comptes enregistrés`,active:`Actif`,inactive:`Inactif`,retry:`Réessayer`,retryLogin:`Ré-authentifier ce compte`,newAccount:`Nouveau compte`,aliasPlaceholder:`ex. {{default}}`},l={showThinkingLabel:`Afficher les journaux de raisonnement`,showThinkingHint:`Affiche les blocs de raisonnement terminés dans l'historique du chat.`,groupToolCallsLabel:`Regrouper les appels d'outils`,groupToolCallsHint:`Regroupe les appels d'outils consécutifs dans une seule puce.`,themeHeading:`Thème`,themeLight:`Clair`,themeDark:`Sombre`,themeSystem:`Système`,themeSystemHint:`Système suit votre préférence clair/sombre définie au niveau du système d'exploitation.`,preferencesHeading:`Préférences`,compactDensity:`Densité compacte`,compactDensityHint:`Espacement plus serré dans tout le chat.`,soundOnComplete:`Son à la fin de l'exécution`,soundOnCompleteHint:`Émet une douce sonnerie quand une exécution se termine.`,titleAnimation:`Animation du titre`,titleAnimationHint:`Affiche un titre de terminal animé dans le CLI.`,thinkingWordLabel:`Mot de réflexion (CLI/TUI)`,thinkingWordHint:`Mot affiché dans la puce d'état de la TUI. Un seul mot court.`,statuslineModeLabel:`Mode de la ligne d'état (CLI/TUI)`,statuslineModeHint:`Densité de la ligne d'état de la TUI.`,statuslineModeDetailed:`Détaillé`,statuslineModeMinimum:`Minimal`,statuslineModeNoColor:`Sans couleur`,animationStyleLabel:`Style d'animation (CLI/TUI)`,animationStyleHint:`Animation de la puce d'activité de la TUI.`,animationStyleRainbow:`Arc-en-ciel`,animationStyleWave:`Vague`,animationStylePulse:`Pulsation`,animationStyleDots:`Points`,animationStyleBreathe:`Respiration`,animationStyleCycle:`Cycle`,languageHeading:`Langue`,languageLabel:`Langue de l'interface`,languageHint:`Modifie uniquement le texte de l'interface. Les prompts, les compétences et la sortie du modèle ne sont pas affectés.`,accentCyan:`Cyan`,accentBlue:`Bleu`,accentEmerald:`Émeraude`,accentViolet:`Violet`,accentRose:`Rose`,accentAmber:`Ambre`},u={autonomyHeading:`Autonomie & Comportement`,autonomyModeLabel:`Mode d'autonomie`,autonomyModeHint:`Indépendance de l'agent entre les tours.`,autonomyModeOff:`Désactivé — contrôle manuel complet`,autonomyModeSuggest:`Suggérer — suggère les prochaines étapes`,autonomyModeAuto:`Auto — court délai de confirmation`,autonomyModeEternal:`Éternel — autonome jusqu'à la fin de l'objectif`,autonomyModeEternalParallel:`Éternel Parallèle — flotte multi-agents`,autoProceedDelayLabel:`Délai d'avance automatique`,autoProceedDelayHint:`Millisecondes avant que l'agent avance automatiquement en mode Auto. 0 = immédiat.`,yoloLabel:`Mode YOLO`,yoloHint:`Contourner les confirmations d'outils — l'agent s'exécute sans demander.`,refineHeading:`Affinage du prompt`,enableRefineLabel:`Activer l'affinage`,enableRefineHint:`Réécrire les prompts avant l'envoi — instructions plus claires, meilleurs résultats.`,refineDelayLabel:`Délai d'affinage`,refineDelayHint:`Compte à rebours avant l'envoi automatique du prompt affiné.`,refineLanguageLabel:`Langue d'affinage`,refineLanguageHint:`Conserver votre langue ou traduire en anglais pour le modèle.`,refineLanguageOriginal:`Original — conserver votre langue`,refineLanguageEnglish:`Anglais — traduire en anglais`,refinerProviderLabel:`Fournisseur d'affinage`,refinerProviderHint:`Id du fournisseur pour l'affinage d'objectif. Vide = fournisseur de la session.`,refinerProviderDefault:`Fournisseur de la session`,refinerModelLabel:`Modèle d'affinage`,refinerModelHint:`Id du modèle pour l'affinage d'objectif. Vide = modèle de la session.`,refinerModelDefault:`Modèle de la session`,refinerProfileLabel:`Profil de fallback de l'affinage`,refinerProfileHint:`Profil de fallback nommé pour l'affinage d'objectif. Remplace le fournisseur et le modèle.`,refinerProfileDefault:`Aucun — utiliser le fournisseur et le modèle ou les valeurs par défaut de la session`,reasoningHeading:`Raisonnement & Cache`,reasoningModeLabel:`Mode de raisonnement`,reasoningModeHint:`Contrôler comment le modèle utilise la pensée étendue. Auto = valeur du fournisseur.`,reasoningModeAuto:`Auto — valeur du fournisseur`,reasoningModeOn:`Activé — forcer la pensée`,reasoningModeOff:`Désactivé — désactiver la pensée`,reasoningEffortLabel:`Effort de raisonnement`,reasoningEffortHint:`Quantité de calcul que le modèle consacre à la pensée. Envoyé seulement si le modèle le supporte.`,reasoningEffortNone:`Aucun`,reasoningEffortMinimal:`Minimal`,reasoningEffortLow:`Faible`,reasoningEffortMedium:`Moyen`,reasoningEffortHigh:`Élevé`,reasoningEffortXhigh:`Très élevé`,reasoningEffortMax:`Max`,preserveThinkingLabel:`Préserver la pensée`,preserveThinkingHint:`Conserver les blocs de raisonnement entre les tours pour la continuité du contexte.`,cacheTtlLabel:`TTL du cache`,cacheTtlHint:`Durée de vie du cache de prompt. 1h coûte plus à l'écriture mais économise en relectures (Anthropic).`,cacheTtlDefault:`Par défaut — valeur du fournisseur`,cacheTtl5m:`5 minutes`,cacheTtl1h:`1 heure`,capsHint:`Utilisez wstack models caps pour vérifier ce que le modèle actuel supporte. Les réglages non supportés sont omis silencieusement par requête.`,routingHeading:`Routage de modèle`,routingRouteKey:`Clé de route de modèle`,routingPhasesGroup:`Phases`,routingRolesGroup:`Rôles {{label}}`,routingCustomGroup:`Routes personnalisées existantes`,routingTargetAria:`Cible de la route de modèle`,routingTargetEmpty:`— Effacer la route —`,routingTargetProfilesGroup:`Profils de fallback`,routingTargetModelsGroup:`Modèles (fournisseur/modèle)`,routingSet:`Définir`,routingReasoningModeAria:`Mode de raisonnement nouvelle route`,routingReasoningEffortAria:`Effort de raisonnement nouvelle route`,routingReasoningPreserveAria:`Préservation raisonnement nouvelle route`,routingReasoningModeFor:`Mode de raisonnement pour {{key}}`,routingReasoningEffortFor:`Effort de raisonnement pour {{key}}`,routingReasoningPreserveFor:`Préservation raisonnement pour {{key}}`,noRoutes:`Aucune route de modèle pour l'instant.`,leaderModel:`modèle leader`},d={heading:`Exécution`,maxIterationsLabel:`Itérations max par run`,maxIterationsHint:`Plafond strict de tours LLM par agent.run().`,autoProceedMaxIterationsLabel:`Itérations max d'avance auto`,autoProceedMaxIterationsHint:`Arrêter l'avance auto après N itérations. 0 = illimité.`,confirmExitLabel:`Confirmer avant de quitter`,confirmExitHint:`Premier Ctrl+C annule le travail, second confirme la sortie.`,chimeLabel:`Carillon à la fin`,chimeHint:`Cloche du terminal quand un run d'agent se termine.`,breakerLabel:`Disjoncteur de processus`,breakerHint:`Bloque bash/exec après des échecs répétés ; le déclenchement arme le compte à rebours kill/reset.`,breakerTimeoutLabel:`Délai kill/reset du disjoncteur`,breakerTimeoutHint:`Délai avant le kill/reset automatique après déclenchement. 0 = récupération manuelle.`,availabilityHeading:`Provider/model availability calendar`,availabilityHint:`Prevent autonomous and overnight runs from using selected providers or models during recurring windows.`},f={heading:`Fallbacks de modèle`,body:`Quand le modèle actif est rate-limité (429/529), en erreur 5xx ou bloqué — après ses propres retries — l'agent passe au modèle suivant de cette chaîne. Aussi utilisé par défaut pour les sous-agents workers SDD.`,autoFallbackLabel:`Fallback auto`,autoFallbackHint:`Quand la chaîne ci-dessus est vide, en dériver une automatiquement depuis vos fournisseurs clés.`,favoritesOnlyLabel:`Favoris uniquement`,favoritesOnlyHint:`Quand le fallback auto dérive une chaîne, la restreindre à vos modèles favoris.`,profilesHeading:`Profils de fallback`,addProfile:`Ajouter`,noProfiles:`Aucun profil de fallback nommé pour l'instant.`,createDefault:`Créer le défaut depuis le modèle actif`,useChain:`Utiliser la chaîne`,setLeader:`Définir le leader`,profileEmpty:`Le profil est vide.`,favoritesHeading:`Modèles favoris`,favoritesEmpty:`Les favoris sont affichés en premier et peuvent contraindre le fallback auto.`,addModelToProfile:`Ajouter un modèle au profil…`,addFavoriteModel:`Ajouter un modèle favori…`,inactive:`inactif`},p={heading:`Flotte & Streaming`,fleetChatVerbosityLabel:`Streamer les événements de flotte`,fleetChatVerbosityHint:`Afficher l'activité live des sous-agents dans le panneau de flotte.`,maxConcurrentLabel:`Sous-agents simultanés max`,maxConcurrentHint:`Nombre maximum de sous-agents pouvant tourner simultanément.`,nextPredictionLabel:`Prédiction des prochaines étapes`,nextPredictionHint:`Après un tour, prédire les prochaines étapes probables.`},m={hqHeading:`Client HQ`,hqPublishingLabel:`Publication HQ`,hqPublishingHint:`Publier cette session WebUI/client vers WrongStack HQ. Les clients de même machine peuvent auto-découvrir l'auth HQ locale ; les clients distants utilisent l'URL/token ci-dessous.`,hqUrlLabel:`URL HQ`,hqUrlHint:`Laisser vide pour l'auto-découverte sur même machine.`,hqTokenLabel:`Token client HQ`,hqRawContentLabel:`Contenu HQ brut`,hqRawContentHint:`Envoyer des aperçus de contenu bruts à HQ au lieu d'aperçus caviardés.`,telegramHeading:`Notifications Telegram`,telegramSessionEndLabel:`Fin de session`,telegramSessionEndHint:`Envoyer un résumé quand une session se termine.`,telegramDelegateLabel:`Délégué terminé`,telegramDelegateHint:`Envoyer une note humanisée quand un sous-agent termine.`,telegramLongToolLabel:`Outils longs`,telegramLongToolHint:`Notifier quand un outil dépasse {{ms}}ms. 0 pour désactiver.`,telegramChangesApply:`Les changements s'appliquent immédiatement.`,telegramNotConfigured:`Telegram n'est pas configuré. Lancez /telegram-setup dans la CLI pour connecter un bot d'abord.`,heading:`Integrations`,disabledHint:`Activez la fonctionnalité dans l'onglet Contexte pour utiliser cette section.`},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`,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 profile`,autoReviewFallbackProfileHint:`Named fallback profile for the auto-review agent. Overrides provider+model.`,autoReviewFallbackProfileNone:`None — use provider+model or session defaults`,autoReviewFallbackModelsLabel:`Fallback models`,autoReviewFallbackModelsEmpty:`No fallback models configured`,autoReviewFallbackModelsHint:`Models the auto-review fallback chain resolves from the profile or the global 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={flagsHeading:`Indicateurs de fonctionnalités`,mcpLabel:`Serveurs MCP`,mcpHint:`Activer les intégrations Model Context Protocol.`,pluginsLabel:`Plugins`,pluginsHint:`Charger et exécuter les plugins installés par l'utilisateur.`,memoryLabel:`Mémoire`,memoryHint:`Persister et rappeler des faits entre les sessions.`,skillsLabel:`Compétences`,skillsHint:`Charger les prompts de compétences spécifiques au domaine.`,modelsRegistryLabel:`Registre des modèles`,modelsRegistryHint:`Utiliser le catalogue models.dev pour la découverte des fournisseurs.`,indexOnStartLabel:`Indexer au démarrage`,indexOnStartHint:`Construire l'index des symboles du codebase au démarrage de la session.`,pluginsPerPluginHeading:`🔌 Per-Plugin Controls`,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`,pluginKnowledgeGraph:`Knowledge Graph — persistent facts`,pluginErrorLens:`Error Lens — failure diagnostics`,pluginTodoTracker:`Todo Tracker — persistent todos`,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`,heading:`Contexte & Débogage`,autoCompactLabel:`Compacter le contexte auto`,autoCompactHint:`Réduire automatiquement la fenêtre de contexte près des limites.`,compactorStrategyLabel:`Stratégie de compactage`,compactorStrategyHint:`Comment le contexte est compacté quand il devient trop grand.`,compactorStrategyHybrid:`Hybride — règles rapides (défaut)`,compactorStrategyIntelligent:`Intelligent — résumé LLM`,compactorStrategySelective:`Sélectif — sélection pilotée par LLM`,contextModeLabel:`Mode de contexte`,contextModeHint:`Politique de fenêtre de contexte — équilibré par défaut.`,contextModeBalanced:`Équilibré — usage normal du contexte`,contextModeFrugal:`Frugal — usage conservateur de tokens`,contextModeDeep:`Profond — contexte plus large pour tâches complexes`,tokenSavingLabel:`Mode d'économie de tokens`,tokenSavingHint:`Quelle agressivité pour réduire l'usage des tokens.`,tokenSavingOff:`Désactivé — aucune économie`,tokenSavingMinimal:`Minimal — optimisation de base`,tokenSavingLight:`Léger — réduction modérée`,tokenSavingMedium:`Moyen — économies significatives`,tokenSavingAggressive:`Agressif — compression maximale`},_={logLevelLabel:`Niveau de log`,logLevelHint:`Sévérité minimale pour le logging côté serveur.`,logLevelDebug:`Debug — tout`,logLevelInfo:`Info — flux normal`,logLevelWarn:`Warn — problèmes uniquement`,logLevelError:`Error — échecs uniquement`,auditLevelLabel:`Niveau d'audit`,auditLevelHint:`Niveau de détail pour les logs d'audit de session.`,auditLevelMinimal:`Minimal — erreurs uniquement`,auditLevelStandard:`Standard — appels d'outils + erreurs`,auditLevelFull:`Complet — chaque événement (logs volumineux)`,fsAccessLabel:`Accès au système de fichiers`,fsAccessHint:`Portée des outils de fichiers. Appliqué à la prochaine session.`,fsAccessUnrestricted:`Illimité — tout chemin`,fsAccessProject:`Projet — limité à la racine du projet`,debugStreamLabel:`Flux de débogage`,debugStreamHint:`Dump hexadécimal SSE brut vers stderr du serveur pour déboguer les fournisseurs.`,heading:`Logs & Debug`},v={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.`},y={switchingTo:`Basculement vers {{provider}} / {{model}}…`,switching:`Changement de modèle…`,switchingToTarget:`Basculement vers {{target}}…`,previousModel:`modèle précédent`,modelSwitchedNextRequest:`Modèle changé : {{from}} → {{to}}. Actif pour la prochaine requête LLM.`,modelSwitchedRunActive:`Modèle changé : {{from}} → {{to}}. Actif pour la prochaine requête LLM ; l’exécution actuelle continue sans redémarrer.`,fallbackExists:`Le profil de fallback « {{name}} » existe déjà`,selectProviderModelFirst:`Sélectionnez d'abord un fournisseur et un modèle`,defaultProfileCreated:`Profil de fallback par défaut créé`,profileEmpty:`Le profil de fallback « {{name}} » est vide`,leaderSetFrom:`Leader défini depuis {{name}}`,modelSwitchTimeout:`Le changement de modèle a expiré. Veuillez réessayer.`},b={workbenchHeading:`Apparence du workbench`,workbenchHint:`Afficher ou masquer les surfaces du workbench dans la vue de chat.`,showModelReasoningLabel:`Afficher le raisonnement du modèle`,showModelReasoningHint:`Affiche les blocs de raisonnement/thinking du LLM dans l’historique du chat (parité TUI).`,showAgentSwarmPanelLabel:`Afficher le panneau essaim d’agents`,showAgentSwarmPanelHint:`Affiche le panneau persistant essaim d’agents et file de missions sous la ligne d’état (parité TUI).`,titleAnimationLabel:`Animation du titre`,titleAnimationHint:`Anime le titre du terminal/onglet avec l’état d’exécution (parité TUI).`,statusChipHeading:`Puce d’état et ligne d’état`,statusChipHint:`Style visuel pour la ligne d’état TUI/CLI et la puce de travail.`,thinkingWordLabel:`Mot de réflexion`,thinkingWordHint:`Mot court unique affiché dans la puce d’état TUI pendant que l’agent travaille.`,statuslineModeLabel:`Mode ligne d’état`,statuslineModeHint:`Densité de la barre d’état TUI.`,statuslineModeMinimum:`Minimum`,statuslineModeDetailed:`Détaillé`,statuslineModeNoColor:`Sans couleur`,animationStyleLabel:`Style d’animation`,animationStyleHint:`Animation de la puce de travail TUI.`,animationStyleRainbow:`Arc-en-ciel`,animationStyleWave:`Vague`,animationStylePulse:`Pulsation`,animationStyleDots:`Points`,animationStyleBreathe:`Respiration`,animationStyleCycle:`Cycle`,refineHeading:`Compte à rebours du refine et diffs`,refineHint:`Configurer le compte à rebours préalable au refine et le seuil du pied de résumé multi-diff.`,preRefineSecondsLabel:`Compte à rebours pré-refine`,preRefineSecondsHint:`Délai de grâce avant le démarrage du refiner (secondes). 0 = sauter le compte à rebours et raffiner immédiatement.`,preRefineSecondsPresets:`Préréglages : {{presets}} secondes (0 = désactivé).`,multiDiffSummaryLabel:`Résumé multi-diff`,multiDiffSummaryHint:`Nombre minimum de fichiers avant l'affichage du pied agrégé « N fichiers · +X -Y » au-dessus des blocs par fichier.`,multiDiffSummaryPresets:`Préréglages : {{presets}} (0 = désactivé).`,memoryHeading:`Outil read et injection de mémoire SAGE`,memoryHint:`Active ce que l’outil read inclut et quand les blocs mémoire SAGE apparaissent dans les résultats d’outil.`,readSymbolsLabel:`Lire les symboles`,readSymbolsHint:`Lorsqu’activé, l’outil read inclut les symboles de l’index de code avec le contenu du fichier.`,showSageMemoryInjectLabel:`Afficher SAGE Memory Inject`,showSageMemoryInjectHint:`Lorsqu’activé, affiche les blocs d’injection de mémoire SAGE dans les résultats d’outil.`,sageMemoryInjectThresholdLabel:`Seuil de SAGE Memory Inject`,sageMemoryInjectThresholdHint:`Force de relation minimale requise pour une mémoire SAGE injectée (0.72–0.95).`,footnote:`Ces paramètres reflètent le picker /settings du TUI. Les bascules s’appliquent en direct ; certains champs nécessitent un redémarrage de session.`},x={title:e,subtitle:t,tabs:n,model:r,connection:i,provider:a,mcp:o,allowlist:s,oauth:c,general:l,agent:u,execution:d,fallbacks:f,fleet:p,integrations:m,features:h,context:g,logs:_,security:v,toast:y,display:b};export{u as agent,s as allowlist,i as connection,g as context,x as default,b as display,d as execution,f as fallbacks,h as features,p as fleet,l as general,m as integrations,_ as logs,o as mcp,r as model,c as oauth,a as provider,v as security,t as subtitle,n as tabs,e as title,y as toast};
1
+ var e=`Paramètres`,t=`Configure every aspect of your agent workspace`,n={general:`Général`,provider:`Fournisseur`,connection:`Connexions`,agent:`Agent`,execution:`Exécution`,fallbacks:`Fallbacks`,routing:`Routage`,fleet:`Flotte`,integrations:`Intégrations`,chimera:`Chimera`,context:`Contexte`,logs:`Journaux`,security:`Sécurité`,display:`Affichage`,displayDesc:`Apparence du workbench, puce d’état, minuteurs de refine et bascules d’injection d’outil/mémoire — reflète le SettingsPicker du TUI.`},r={heading:`Modèle`,loading:`Chargement des modèles...`,notFound:`Aucun modèle trouvé pour ce fournisseur. Le catalogue est peut-être vide ou en cours de chargement.`,selectProviderFirst:`Sélectionnez d'abord un fournisseur`,context:`{{count}}k contexte`},i={wsUrlLabel:`URL du serveur WebSocket`,wsUrlPlaceholder:`ws://localhost:3456`,wsUrlHint:`URL du serveur WebSocket de l'agent. Le serveur fonctionne en parallèle du CLI.`,startingHeading:`Démarrage du serveur WebSocket`,startingBody:`Pour le développement, lancez ./dev.ps1 depuis la racine du repo (définissez éventuellement WS_HOST/WS_PORT avant). Sinon, lancez la WebUI avec la CLI : wstack --webui.`,healthHeading:`État des connexions`,healthHint:`Rapport en direct sur le propriétaire, le stockage, la file, la surveillance et la latence.`,healthRefresh:`Actualiser`,healthLoading:`Vérification des services…`,healthUnknown:`État inconnu`,healthDisconnected:`Le WebSocket de la WebUI est déconnecté.`,healthRestartRequired:`Redémarrez le backend une fois pour activer le rapport de connexion.`,healthOptional:`À la demande`,endpointInvalidBadge:`chemin du socket trop long`,endpointInvalidRemedy:`Le chemin du socket IPC dépasse la limite de longueur de cette plateforme, donc le démon partagé ne peut pas démarrer. Les requêtes tombent en mode local de processus plus lent. Solution : définissez un TMPDIR plus court (par ex. export TMPDIR=/tmp) et redémarrez WrongStack.`,healthCounts:`{{healthy}} sains · {{attention}} attention · {{sleeping}} en veille`,healthOverall:{healthy:`Services requis sains`,degraded:`Service requis dégradé`,error:`Service requis indisponible`},healthStatus:{healthy:`Sain`,degraded:`Dégradé`,offline:`En veille`,unavailable:`Indisponible`,error:`Erreur`},services:{kanban:{label:`Kanban IPC`},mailbox:{label:`Mailbox IPC`}},serviceActionRestart:`Redémarrer {{label}}`},a={savedProviderCount_one:`{{count}} fournisseur`,savedProviderCount_other:`{{count}} fournisseurs`,keyCount_one:`{{count}} clé configurée`,keyCount_other:`{{count}} clés configurées`,activeKeyCount_one:`{{count}} clé active`,activeKeyCount_other:`{{count}} clés actives`,subscriptionHeading:`Connexion par abonnement`,apiKeysHeading:`Fournisseurs de clés API`,apiKeysBody:`Choisissez un fournisseur dans le catalogue et ajoutez une clé API, ou gérez les fournisseurs enregistrés.`,tabCatalog:`Catalogue`,tabSaved:`Enregistrés ({{count}})`,searchPlaceholder:`Rechercher {{count}} fournisseurs (nom / id / famille)…`,loadingCatalog:`Chargement du catalogue...`,noMatch:`Aucun fournisseur ne correspond à « {{query}} ».`,configured:`Configuré`,reachable:`Accessible`,envVar:`ENV : {{var}}`,modelCount_one:`{{count}} modèle`,modelCount_other:`{{count}} modèles`,keyPlaceholder:`Clé API {{name}}`,orEnv:`Ou définissez {{env}} dans l'environnement à la place.`,addApiKey:`Ajouter une clé API`,manageKeys:`Gérez vos clés API et configurations de fournisseur`,addProvider:`Ajouter un fournisseur`,addCustomHeading:`Ajouter un fournisseur personnalisé`,localServers:`Serveurs locaux — cliquez pour pré-remplir :`,providerIdPlaceholder:`ID du fournisseur (ex. my-llm-server)`,apiKeyOptionalPlaceholder:`Clé API (facultatif)`,noSaved:`Aucun fournisseur enregistré`,noSavedHint:`Ajoutez un fournisseur pour démarrer`,apiKeysLabel:`Clés API`,addKey:`Ajouter une clé`,noKeys:`Aucune clé configurée`,active:`Active`,setActive:`Définir comme active`,keyLabelPlaceholder:`Libellé de la clé (ex. default, production)`,apiKeyPlaceholder:`Clé API`,saveKey:`Enregistrer la clé`,savedToast:`Clé enregistrée pour {{name}}`},o={status:{connected:`Connecté`,connecting:`Connexion`,sleeping:`En veille`,discovering:`Découverte`,error:`Erreur`,stopped:`Arrêté`,unknown:`Inconnu`},disabled:`Les serveurs MCP sont désactivés.`,wakeTitle:`Réveiller le serveur`,sleepTitle:`Mettre en veille`,discoverTitle:`Découvrir les outils`,editTitle:`Modifier`,removeTitle:`Supprimer`,statusLabel:`Statut :`,enabledLabel:`Activé :`,yes:`Oui`,no:`Non`,descriptionLabel:`Description :`,pidLabel:`PID :`,errorLabel:`Erreur :`,toolsLabel:`Outils ({{count}}) :`,noTools:`Aucun outil découvert pour le moment`,serverNameRequired:`Le nom du serveur est requis`,dialogTitleEdit:`Modifier le serveur MCP`,dialogTitleAdd:`Ajouter un serveur MCP`,dialogTitleAddCustom:`Ajouter un serveur MCP personnalisé`,fieldName:`Nom`,fieldNamePlaceholder:`ex. github, filesystem`,fieldTransport:`Transport`,fieldUrl:`URL`,fieldCommand:`Commande`,fieldCommandPlaceholder:`ex. npx`,fieldArgs:`Args`,fieldArgsHint:`(séparés par des espaces)`,fieldArgsPlaceholder:`ex. -y @modelcontextprotocol/server-github`,fieldEnv:`Variables d'env`,fieldEnvHint:`(KEY=valeur, une par ligne)`,fieldDescription:`Description`,fieldDescriptionPlaceholder:`Serveur MCP GitHub pour l'accès au dépôt`,enableServer:`Activer le serveur`,lazyConnect:`Connexion différée`,lazyConnectHint:`(ne démarre qu'au premier appel d'outil ; se met en veille quand inactif)`,saveChanges:`Enregistrer`,addServer:`Ajouter le serveur`,requires:`Requiert : {{vars}}`,added:`Ajouté`,heading:`Serveurs MCP`,summary:`{{connected}} connecté(s) · {{sleeping}} en veille · {{total}} au total`,addCustom:`Personnalisé`,tabRecommended:`Recommandés`,tabServers:`Serveurs`,tabAddCustom:`Personnalisé`,recommendedBody:`Ajout en un clic pour les serveurs MCP populaires. Cliquez sur Ajouter pour pré-remplir la configuration, puis confirmez. Les serveurs nécessitant des identifiants devront avoir leurs variables d'env définies avant usage.`,loadingServers:`Chargement des serveurs...`,noServers:`Aucun serveur MCP configuré`,noServersHint:`Passez à l'onglet Recommandés pour ajouter des serveurs populaires, ou Personnalisé pour les vôtres.`,addCustomBody:`Configurez un serveur MCP personnalisé avec transport stdio, SSE ou HTTP.`,addCustomBodyHint:`Pour les serveurs populaires, utilisez plutôt l'onglet Recommandés — tout est préconfiguré.`,removeConfirmTitle:`Supprimer le serveur « {{name}} » ?`,removeConfirmBody:`Cela supprime le serveur MCP de votre configuration.`,toastAdded:`Serveur « {{name}} » ajouté`,toastRemoved:`Serveur « {{name}} » supprimé`,toastDiscovered:`{{count}} outils découverts depuis « {{name}} »`,toastSleeping:`Le serveur « {{name}} » est en veille`,toastConnected:`Serveur « {{name}} » connecté`,toastReconnected:`Serveur « {{name}} » reconnecté`,toastDisconnected:`Serveur « {{name}} » déconnecté : {{reason}}`,toastError:`Serveur « {{name}} » erreur : {{error}}`},s={title:`Effacer la allowlist enregistrée ?`,body_one:`Cela supprimera le modèle épinglé pour {{provider}}. Le sélecteur de modèle reviendra au catalogue models.dev.`,body_other:`Cela supprimera les {{count}} modèles épinglés pour {{provider}}. Le sélecteur de modèle reviendra au catalogue models.dev.`,undoHint:`Vous pouvez annuler pendant 8 secondes après confirmation.`,keepTitle:`Conserver l'allowlist (Échap)`,clearTitle:`Effacer l'allowlist (Entrée)`,clear:`Effacer l'allowlist`},c={termsWarning:`Connectez-vous avec un abonnement au lieu d'une clé API. Utiliser un abonnement en dehors de son client officiel peut enfreindre les Conditions du fournisseur — votre compte pourrait être limité ou banni. Une clé API est la voie sanctifiée pour un usage programmatique.`,signIn:`Se connecter`,waitingBrowser:`En attente de votre connexion…`,openSignIn:`Ouvrir la page de connexion`,pasteLoopbackBusy:`Port loopback occupé — collez l'URL de redirection`,pasteCantReach:`Le navigateur n'atteint pas ce serveur ? Collez l'URL de redirection`,submit:`Soumettre`,enterCode:`Saisissez ce code sur la page de vérification :`,openVerification:`Ouvrir la page de vérification`,waitingCode:`En attente d'autorisation…`,exchanging:`Échange des tokens…`,fetchingModels:`Récupération des modèles…`,signedIn:`Connecté.`,signedInToast:`Connecté — {{provider}}`,signInFailed:`Échec de la connexion`,accountCount_one:`{{count}} compte enregistré`,accountCount_other:`{{count}} comptes enregistrés`,active:`Actif`,inactive:`Inactif`,retry:`Réessayer`,retryLogin:`Ré-authentifier ce compte`,newAccount:`Nouveau compte`,aliasPlaceholder:`ex. {{default}}`},l={showThinkingLabel:`Afficher les journaux de raisonnement`,showThinkingHint:`Affiche les blocs de raisonnement terminés dans l'historique du chat.`,groupToolCallsLabel:`Regrouper les appels d'outils`,groupToolCallsHint:`Regroupe les appels d'outils consécutifs dans une seule puce.`,themeHeading:`Thème`,themeLight:`Clair`,themeDark:`Sombre`,themeSystem:`Système`,themeSystemHint:`Système suit votre préférence clair/sombre définie au niveau du système d'exploitation.`,preferencesHeading:`Préférences`,compactDensity:`Densité compacte`,compactDensityHint:`Espacement plus serré dans tout le chat.`,soundOnComplete:`Son à la fin de l'exécution`,soundOnCompleteHint:`Émet une douce sonnerie quand une exécution se termine.`,titleAnimation:`Animation du titre`,titleAnimationHint:`Affiche un titre de terminal animé dans le CLI.`,thinkingWordLabel:`Mot de réflexion (CLI/TUI)`,thinkingWordHint:`Mot affiché dans la puce d'état de la TUI. Un seul mot court.`,statuslineModeLabel:`Mode de la ligne d'état (CLI/TUI)`,statuslineModeHint:`Densité de la ligne d'état de la TUI.`,statuslineModeDetailed:`Détaillé`,statuslineModeMinimum:`Minimal`,statuslineModeNoColor:`Sans couleur`,animationStyleLabel:`Style d'animation (CLI/TUI)`,animationStyleHint:`Animation de la puce d'activité de la TUI.`,animationStyleRainbow:`Arc-en-ciel`,animationStyleWave:`Vague`,animationStylePulse:`Pulsation`,animationStyleDots:`Points`,animationStyleBreathe:`Respiration`,animationStyleCycle:`Cycle`,languageHeading:`Langue`,languageLabel:`Langue de l'interface`,languageHint:`Modifie uniquement le texte de l'interface. Les prompts, les compétences et la sortie du modèle ne sont pas affectés.`,accentCyan:`Cyan`,accentBlue:`Bleu`,accentEmerald:`Émeraude`,accentViolet:`Violet`,accentRose:`Rose`,accentAmber:`Ambre`},u={autonomyHeading:`Autonomie & Comportement`,autonomyModeLabel:`Mode d'autonomie`,autonomyModeHint:`Indépendance de l'agent entre les tours.`,autonomyModeOff:`Désactivé — contrôle manuel complet`,autonomyModeSuggest:`Suggérer — suggère les prochaines étapes`,autonomyModeAuto:`Auto — court délai de confirmation`,autonomyModeEternal:`Éternel — autonome jusqu'à la fin de l'objectif`,autonomyModeEternalParallel:`Éternel Parallèle — flotte multi-agents`,autoProceedDelayLabel:`Délai d'avance automatique`,autoProceedDelayHint:`Millisecondes avant que l'agent avance automatiquement en mode Auto. 0 = immédiat.`,yoloLabel:`Mode YOLO`,yoloHint:`Contourner les confirmations d'outils — l'agent s'exécute sans demander.`,refineHeading:`Affinage du prompt`,enableRefineLabel:`Activer l'affinage`,enableRefineHint:`Réécrire les prompts avant l'envoi — instructions plus claires, meilleurs résultats.`,refineDelayLabel:`Délai d'affinage`,refineDelayHint:`Compte à rebours avant l'envoi automatique du prompt affiné.`,refineLanguageLabel:`Langue d'affinage`,refineLanguageHint:`Conserver votre langue ou traduire en anglais pour le modèle.`,refineLanguageOriginal:`Original — conserver votre langue`,refineLanguageEnglish:`Anglais — traduire en anglais`,refinerProviderLabel:`Fournisseur d'affinage`,refinerProviderHint:`Id du fournisseur pour l'affinage d'objectif. Vide = fournisseur de la session.`,refinerProviderDefault:`Fournisseur de la session`,refinerModelLabel:`Modèle d'affinage`,refinerModelHint:`Id du modèle pour l'affinage d'objectif. Vide = modèle de la session.`,refinerModelDefault:`Modèle de la session`,refinerProfileLabel:`Profil de fallback de l'affinage`,refinerProfileHint:`Profil de fallback nommé pour l'affinage d'objectif. Remplace le fournisseur et le modèle.`,refinerProfileDefault:`Aucun — utiliser le fournisseur et le modèle ou les valeurs par défaut de la session`,reasoningHeading:`Raisonnement & Cache`,reasoningModeLabel:`Mode de raisonnement`,reasoningModeHint:`Contrôler comment le modèle utilise la pensée étendue. Auto = valeur du fournisseur.`,reasoningModeAuto:`Auto — valeur du fournisseur`,reasoningModeOn:`Activé — forcer la pensée`,reasoningModeOff:`Désactivé — désactiver la pensée`,reasoningEffortLabel:`Effort de raisonnement`,reasoningEffortHint:`Quantité de calcul que le modèle consacre à la pensée. Envoyé seulement si le modèle le supporte.`,reasoningEffortNone:`Aucun`,reasoningEffortMinimal:`Minimal`,reasoningEffortLow:`Faible`,reasoningEffortMedium:`Moyen`,reasoningEffortHigh:`Élevé`,reasoningEffortXhigh:`Très élevé`,reasoningEffortMax:`Max`,preserveThinkingLabel:`Préserver la pensée`,preserveThinkingHint:`Conserver les blocs de raisonnement entre les tours pour la continuité du contexte.`,cacheTtlLabel:`TTL du cache`,cacheTtlHint:`Durée de vie du cache de prompt. 1h coûte plus à l'écriture mais économise en relectures (Anthropic).`,cacheTtlDefault:`Par défaut — valeur du fournisseur`,cacheTtl5m:`5 minutes`,cacheTtl1h:`1 heure`,capsHint:`Utilisez wstack models caps pour vérifier ce que le modèle actuel supporte. Les réglages non supportés sont omis silencieusement par requête.`,routingHeading:`Routage de modèle`,routingRouteKey:`Clé de route de modèle`,routingPhasesGroup:`Phases`,routingRolesGroup:`Rôles {{label}}`,routingCustomGroup:`Routes personnalisées existantes`,routingTargetAria:`Cible de la route de modèle`,routingTargetEmpty:`— Effacer la route —`,routingTargetProfilesGroup:`Profils de fallback`,routingTargetModelsGroup:`Modèles (fournisseur/modèle)`,routingSet:`Définir`,routingReasoningModeAria:`Mode de raisonnement nouvelle route`,routingReasoningEffortAria:`Effort de raisonnement nouvelle route`,routingReasoningPreserveAria:`Préservation raisonnement nouvelle route`,routingReasoningModeFor:`Mode de raisonnement pour {{key}}`,routingReasoningEffortFor:`Effort de raisonnement pour {{key}}`,routingReasoningPreserveFor:`Préservation raisonnement pour {{key}}`,noRoutes:`Aucune route de modèle pour l'instant.`,leaderModel:`modèle leader`},d={heading:`Exécution`,maxIterationsLabel:`Itérations max par run`,maxIterationsHint:`Plafond strict de tours LLM par agent.run().`,autoProceedMaxIterationsLabel:`Itérations max d'avance auto`,autoProceedMaxIterationsHint:`Arrêter l'avance auto après N itérations. 0 = illimité.`,confirmExitLabel:`Confirmer avant de quitter`,confirmExitHint:`Premier Ctrl+C annule le travail, second confirme la sortie.`,chimeLabel:`Carillon à la fin`,chimeHint:`Cloche du terminal quand un run d'agent se termine.`,breakerLabel:`Disjoncteur de processus`,breakerHint:`Bloque bash/exec après des échecs répétés ; le déclenchement arme le compte à rebours kill/reset.`,breakerTimeoutLabel:`Délai kill/reset du disjoncteur`,breakerTimeoutHint:`Délai avant le kill/reset automatique après déclenchement. 0 = récupération manuelle.`,availabilityHeading:`Provider/model availability calendar`,availabilityHint:`Prevent autonomous and overnight runs from using selected providers or models during recurring windows.`},f={heading:`Fallbacks de modèle`,body:`Quand le modèle actif est rate-limité (429/529), en erreur 5xx ou bloqué — après ses propres retries — l'agent passe au modèle suivant de cette chaîne. Aussi utilisé par défaut pour les sous-agents workers SDD.`,autoFallbackLabel:`Fallback auto`,autoFallbackHint:`Quand la chaîne ci-dessus est vide, en dériver une automatiquement depuis vos fournisseurs clés.`,favoritesOnlyLabel:`Favoris uniquement`,favoritesOnlyHint:`Quand le fallback auto dérive une chaîne, la restreindre à vos modèles favoris.`,profilesHeading:`Profils de fallback`,addProfile:`Ajouter`,noProfiles:`Aucun profil de fallback nommé pour l'instant.`,createDefault:`Créer le défaut depuis le modèle actif`,useChain:`Utiliser la chaîne`,setLeader:`Définir le leader`,profileEmpty:`Le profil est vide.`,favoritesHeading:`Modèles favoris`,favoritesEmpty:`Les favoris sont affichés en premier et peuvent contraindre le fallback auto.`,addModelToProfile:`Ajouter un modèle au profil…`,addFavoriteModel:`Ajouter un modèle favori…`,inactive:`inactif`},p={heading:`Flotte & Streaming`,fleetChatVerbosityLabel:`Streamer les événements de flotte`,fleetChatVerbosityHint:`Afficher l'activité live des sous-agents dans le panneau de flotte.`,maxConcurrentLabel:`Sous-agents simultanés max`,maxConcurrentHint:`Nombre maximum de sous-agents pouvant tourner simultanément.`,nextPredictionLabel:`Prédiction des prochaines étapes`,nextPredictionHint:`Après un tour, prédire les prochaines étapes probables.`},m={hqHeading:`Client HQ`,hqPublishingLabel:`Publication HQ`,hqPublishingHint:`Publier cette session WebUI/client vers WrongStack HQ. Les clients de même machine peuvent auto-découvrir l'auth HQ locale ; les clients distants utilisent l'URL/token ci-dessous.`,hqUrlLabel:`URL HQ`,hqUrlHint:`Laisser vide pour l'auto-découverte sur même machine.`,hqTokenLabel:`Token client HQ`,hqRawContentLabel:`Contenu HQ brut`,hqRawContentHint:`Envoyer des aperçus de contenu bruts à HQ au lieu d'aperçus caviardés.`,telegramHeading:`Notifications Telegram`,telegramSessionEndLabel:`Fin de session`,telegramSessionEndHint:`Envoyer un résumé quand une session se termine.`,telegramDelegateLabel:`Délégué terminé`,telegramDelegateHint:`Envoyer une note humanisée quand un sous-agent termine.`,telegramLongToolLabel:`Outils longs`,telegramLongToolHint:`Notifier quand un outil dépasse {{ms}}ms. 0 pour désactiver.`,telegramChangesApply:`Les changements s'appliquent immédiatement.`,telegramNotConfigured:`Telegram n'est pas configuré. Lancez /telegram-setup dans la CLI pour connecter un bot d'abord.`,heading:`Integrations`,disabledHint:`Activez la fonctionnalité dans l'onglet Contexte pour utiliser cette section.`},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`,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 profile`,autoReviewFallbackProfileHint:`Named fallback profile for the auto-review agent. Overrides provider+model.`,autoReviewFallbackProfileNone:`None — use provider+model or session defaults`,autoReviewFallbackModelsLabel:`Fallback models`,autoReviewFallbackModelsEmpty:`No fallback models configured`,autoReviewFallbackModelsHint:`Models the auto-review fallback chain resolves from the profile or the global 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={flagsHeading:`Indicateurs de fonctionnalités`,mcpLabel:`Serveurs MCP`,mcpHint:`Activer les intégrations Model Context Protocol.`,pluginsLabel:`Plugins`,pluginsHint:`Charger et exécuter les plugins installés par l'utilisateur.`,memoryLabel:`Mémoire`,memoryHint:`Persister et rappeler des faits entre les sessions.`,skillsLabel:`Compétences`,skillsHint:`Charger les prompts de compétences spécifiques au domaine.`,modelsRegistryLabel:`Registre des modèles`,modelsRegistryHint:`Utiliser le catalogue models.dev pour la découverte des fournisseurs.`,indexOnStartLabel:`Indexer au démarrage`,indexOnStartHint:`Construire l'index des symboles du codebase au démarrage de la session.`,pluginsPerPluginHeading:`🔌 Per-Plugin Controls`,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`,pluginKnowledgeGraph:`Knowledge Graph — persistent facts`,pluginErrorLens:`Error Lens — failure diagnostics`,pluginTodoTracker:`Todo Tracker — persistent todos`,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`,heading:`Contexte & Débogage`,autoCompactLabel:`Compacter le contexte auto`,autoCompactHint:`Réduire automatiquement la fenêtre de contexte près des limites.`,compactorStrategyLabel:`Stratégie de compactage`,compactorStrategyHint:`Comment le contexte est compacté quand il devient trop grand.`,compactorStrategyHybrid:`Hybride — règles rapides (défaut)`,compactorStrategyIntelligent:`Intelligent — résumé LLM`,compactorStrategySelective:`Sélectif — sélection pilotée par LLM`,contextModeLabel:`Mode de contexte`,contextModeHint:`Politique de fenêtre de contexte — équilibré par défaut.`,contextModeBalanced:`Équilibré — usage normal du contexte`,contextModeFrugal:`Frugal — usage conservateur de tokens`,contextModeDeep:`Profond — contexte plus large pour tâches complexes`,tokenSavingLabel:`Mode d'économie de tokens`,tokenSavingHint:`Quelle agressivité pour réduire l'usage des tokens.`,tokenSavingOff:`Désactivé — aucune économie`,tokenSavingMinimal:`Minimal — optimisation de base`,tokenSavingLight:`Léger — réduction modérée`,tokenSavingMedium:`Moyen — économies significatives`,tokenSavingAggressive:`Agressif — compression maximale`},_={logLevelLabel:`Niveau de log`,logLevelHint:`Sévérité minimale pour le logging côté serveur.`,logLevelDebug:`Debug — tout`,logLevelInfo:`Info — flux normal`,logLevelWarn:`Warn — problèmes uniquement`,logLevelError:`Error — échecs uniquement`,auditLevelLabel:`Niveau d'audit`,auditLevelHint:`Niveau de détail pour les logs d'audit de session.`,auditLevelMinimal:`Minimal — erreurs uniquement`,auditLevelStandard:`Standard — appels d'outils + erreurs`,auditLevelFull:`Complet — chaque événement (logs volumineux)`,fsAccessLabel:`Accès au système de fichiers`,fsAccessHint:`Portée des outils de fichiers. Appliqué à la prochaine session.`,fsAccessUnrestricted:`Illimité — tout chemin`,fsAccessProject:`Projet — limité à la racine du projet`,debugStreamLabel:`Flux de débogage`,debugStreamHint:`Dump hexadécimal SSE brut vers stderr du serveur pour déboguer les fournisseurs.`,heading:`Logs & Debug`},v={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.`},y={switchingTo:`Basculement vers {{provider}} / {{model}}…`,switching:`Changement de modèle…`,switchingToTarget:`Basculement vers {{target}}…`,previousModel:`modèle précédent`,modelSwitchedNextRequest:`Modèle changé : {{from}} → {{to}}. Actif pour la prochaine requête LLM.`,modelSwitchedRunActive:`Modèle changé : {{from}} → {{to}}. Actif pour la prochaine requête LLM ; l’exécution actuelle continue sans redémarrer.`,fallbackExists:`Le profil de fallback « {{name}} » existe déjà`,selectProviderModelFirst:`Sélectionnez d'abord un fournisseur et un modèle`,defaultProfileCreated:`Profil de fallback par défaut créé`,profileEmpty:`Le profil de fallback « {{name}} » est vide`,leaderSetFrom:`Leader défini depuis {{name}}`,modelSwitchTimeout:`Le changement de modèle a expiré. Veuillez réessayer.`},b={workbenchHeading:`Apparence du workbench`,workbenchHint:`Afficher ou masquer les surfaces du workbench dans la vue de chat.`,showModelReasoningLabel:`Afficher le raisonnement du modèle`,showModelReasoningHint:`Affiche les blocs de raisonnement/thinking du LLM dans l’historique du chat (parité TUI).`,showAgentSwarmPanelLabel:`Panneau agent swarm`,showAgentSwarmPanelHint:`Contrôle l'emplacement du panneau agent swarm (fleet + file de missions).`,swarmPanelBottom:`Panneau inférieur`,swarmPanelSidebar:`Barre latérale droite`,swarmPanelOff:`Désactivé`,titleAnimationLabel:`Animation du titre`,titleAnimationHint:`Anime le titre du terminal/onglet avec l’état d’exécution (parité TUI).`,statusChipHeading:`Puce d’état et ligne d’état`,statusChipHint:`Style visuel pour la ligne d’état TUI/CLI et la puce de travail.`,thinkingWordLabel:`Mot de réflexion`,thinkingWordHint:`Mot court unique affiché dans la puce d’état TUI pendant que l’agent travaille.`,statuslineModeLabel:`Mode ligne d’état`,statuslineModeHint:`Densité de la barre d’état TUI.`,statuslineModeMinimum:`Minimum`,statuslineModeDetailed:`Détaillé`,statuslineModeNoColor:`Sans couleur`,animationStyleLabel:`Style d’animation`,animationStyleHint:`Animation de la puce de travail TUI.`,animationStyleRainbow:`Arc-en-ciel`,animationStyleWave:`Vague`,animationStylePulse:`Pulsation`,animationStyleDots:`Points`,animationStyleBreathe:`Respiration`,animationStyleCycle:`Cycle`,refineHeading:`Compte à rebours du refine et diffs`,refineHint:`Configurer le compte à rebours préalable au refine et le seuil du pied de résumé multi-diff.`,preRefineSecondsLabel:`Compte à rebours pré-refine`,preRefineSecondsHint:`Délai de grâce avant le démarrage du refiner (secondes). 0 = sauter le compte à rebours et raffiner immédiatement.`,preRefineSecondsPresets:`Préréglages : {{presets}} secondes (0 = désactivé).`,multiDiffSummaryLabel:`Résumé multi-diff`,multiDiffSummaryHint:`Nombre minimum de fichiers avant l'affichage du pied agrégé « N fichiers · +X -Y » au-dessus des blocs par fichier.`,multiDiffSummaryPresets:`Préréglages : {{presets}} (0 = désactivé).`,memoryHeading:`Outil read et injection de mémoire SAGE`,memoryHint:`Active ce que l’outil read inclut et quand les blocs mémoire SAGE apparaissent dans les résultats d’outil.`,readSymbolsLabel:`Lire les symboles`,readSymbolsHint:`Lorsqu’activé, l’outil read inclut les symboles de l’index de code avec le contenu du fichier.`,showSageMemoryInjectLabel:`Afficher SAGE Memory Inject`,showSageMemoryInjectHint:`Lorsqu’activé, affiche les blocs d’injection de mémoire SAGE dans les résultats d’outil.`,sageMemoryInjectThresholdLabel:`Seuil de SAGE Memory Inject`,sageMemoryInjectThresholdHint:`Force de relation minimale requise pour une mémoire SAGE injectée (0.72–0.95).`,footnote:`Ces paramètres reflètent le picker /settings du TUI. Les bascules s’appliquent en direct ; certains champs nécessitent un redémarrage de session.`},x={title:e,subtitle:t,tabs:n,model:r,connection:i,provider:a,mcp:o,allowlist:s,oauth:c,general:l,agent:u,execution:d,fallbacks:f,fleet:p,integrations:m,features:h,context:g,logs:_,security:v,toast:y,display:b};export{u as agent,s as allowlist,i as connection,g as context,x as default,b as display,d as execution,f as fallbacks,h as features,p as fleet,l as general,m as integrations,_ as logs,o as mcp,r as model,c as oauth,a as provider,v as security,t as subtitle,n as tabs,e as title,y as toast};
@@ -1 +1 @@
1
- var e=`Configurações`,t=`Configure every aspect of your agent workspace`,n={general:`Geral`,provider:`Provedor`,connection:`Conexões`,agent:`Agente`,execution:`Execução`,fallbacks:`Fallbacks`,routing:`Roteamento`,fleet:`Frota`,integrations:`Integrações`,chimera:`Chimera`,context:`Contexto`,logs:`Registros`,security:`Segurança`,display:`Exibição`,displayDesc:`Aparência do workbench, chip de status, temporizadores de refine e alternâncias de injeção de ferramenta/memória — reflete o SettingsPicker do TUI.`},r={heading:`Modelo`,loading:`Carregando modelos...`,notFound:`Nenhum modelo encontrado para este provedor. O catálogo pode estar vazio ou ainda carregando.`,selectProviderFirst:`Selecione um provedor primeiro`,context:`{{count}}k contexto`},i={wsUrlLabel:`URL do servidor WebSocket`,wsUrlPlaceholder:`ws://localhost:3456`,wsUrlHint:`URL do servidor WebSocket do agente. O servidor é executado junto com o CLI.`,startingHeading:`Iniciando o servidor WebSocket`,startingBody:`Para desenvolvimento, execute ./dev.ps1 da raiz do repo (opcionalmente defina WS_HOST/WS_PORT antes). Caso contrário, inicie a WebUI com a CLI: wstack --webui.`,healthHeading:`Saúde das conexões`,healthHint:`Relatório ao vivo de propriedade, armazenamento, fila, observador e latência dos serviços.`,healthRefresh:`Atualizar`,healthLoading:`Verificando serviços…`,healthUnknown:`Saúde desconhecida`,healthDisconnected:`O WebSocket da WebUI está desconectado.`,healthRestartRequired:`Reinicie o backend uma vez para ativar o relatório de conexões.`,healthOptional:`Sob demanda`,endpointInvalidBadge:`caminho do socket muito longo`,endpointInvalidRemedy:`O caminho do socket IPC excede o limite de comprimento desta plataforma, então o daemon compartilhado não pode iniciar. As consultas recorrem a um modo local de processo mais lento. Remédio: defina um TMPDIR mais curto (ex. export TMPDIR=/tmp) e reinicie o WrongStack.`,healthCounts:`{{healthy}} saudáveis · {{attention}} atenção · {{sleeping}} inativos`,healthOverall:{healthy:`Serviços obrigatórios saudáveis`,degraded:`Serviço obrigatório degradado`,error:`Serviço obrigatório indisponível`},healthStatus:{healthy:`Saudável`,degraded:`Degradado`,offline:`Inativo`,unavailable:`Indisponível`,error:`Erro`},services:{kanban:{label:`Kanban IPC`},mailbox:{label:`Mailbox IPC`}},serviceActionRestart:`Reiniciar {{label}}`},a={savedProviderCount_one:`{{count}} provedor`,savedProviderCount_other:`{{count}} provedores`,keyCount_one:`{{count}} chave configurada`,keyCount_other:`{{count}} chaves configuradas`,activeKeyCount_one:`{{count}} chave ativa`,activeKeyCount_other:`{{count}} chaves ativas`,subscriptionHeading:`Login com assinatura`,apiKeysHeading:`Provedores de chave de API`,apiKeysBody:`Escolha um provedor do catálogo e adicione uma chave de API, ou gerencie os provedores salvos.`,tabCatalog:`Catálogo`,tabSaved:`Salvos ({{count}})`,searchPlaceholder:`Pesquisar entre {{count}} provedores (nome / id / família)…`,loadingCatalog:`Carregando catálogo...`,noMatch:`Nenhum provedor corresponde a "{{query}}".`,configured:`Configurado`,reachable:`Acessível`,envVar:`ENV: {{var}}`,modelCount_one:`{{count}} modelo`,modelCount_other:`{{count}} modelos`,keyPlaceholder:`Chave de API do {{name}}`,orEnv:`Ou defina {{env}} no ambiente.`,addApiKey:`Adicionar chave de API`,manageKeys:`Gerencie suas chaves de API e configurações de provedor`,addProvider:`Adicionar provedor`,addCustomHeading:`Adicionar provedor personalizado`,localServers:`Servidores locais — clique para preencher:`,providerIdPlaceholder:`ID do provedor (ex. my-llm-server)`,apiKeyOptionalPlaceholder:`Chave de API (opcional)`,noSaved:`Nenhum provedor salvo`,noSavedHint:`Adicione um provedor para começar`,apiKeysLabel:`Chaves de API`,addKey:`Adicionar chave`,noKeys:`Nenhuma chave configurada`,active:`Ativa`,setActive:`Definir como ativa`,keyLabelPlaceholder:`Rótulo da chave (ex. default, production)`,apiKeyPlaceholder:`Chave de API`,saveKey:`Salvar chave`,savedToast:`Chave salva para {{name}}`},o={status:{connected:`Conectado`,connecting:`Conectando`,sleeping:`Inativo`,discovering:`Descobrindo`,error:`Erro`,stopped:`Parado`,unknown:`Desconhecido`},disabled:`Os servidores MCP estão desativados.`,wakeTitle:`Acordar servidor`,sleepTitle:`Colocar em repouso`,discoverTitle:`Descobrir ferramentas`,editTitle:`Editar`,removeTitle:`Remover`,statusLabel:`Status:`,enabledLabel:`Ativado:`,yes:`Sim`,no:`Não`,descriptionLabel:`Descrição:`,pidLabel:`PID:`,errorLabel:`Erro:`,toolsLabel:`Ferramentas ({{count}}):`,noTools:`Nenhuma ferramenta descoberta ainda`,serverNameRequired:`O nome do servidor é obrigatório`,dialogTitleEdit:`Editar servidor MCP`,dialogTitleAdd:`Adicionar servidor MCP`,dialogTitleAddCustom:`Adicionar servidor MCP personalizado`,fieldName:`Nome`,fieldNamePlaceholder:`ex. github, filesystem`,fieldTransport:`Transporte`,fieldUrl:`URL`,fieldCommand:`Comando`,fieldCommandPlaceholder:`ex. npx`,fieldArgs:`Args`,fieldArgsHint:`(separados por espaços)`,fieldArgsPlaceholder:`ex. -y @modelcontextprotocol/server-github`,fieldEnv:`Variáveis de ambiente`,fieldEnvHint:`(KEY=valor, uma por linha)`,fieldDescription:`Descrição`,fieldDescriptionPlaceholder:`Servidor MCP do GitHub para acesso ao repositório`,enableServer:`Ativar servidor`,lazyConnect:`Conexão preguiçosa`,lazyConnectHint:`(não inicia até a primeira chamada; hiberna quando ocioso)`,saveChanges:`Salvar alterações`,addServer:`Adicionar servidor`,requires:`Requer: {{vars}}`,added:`Adicionado`,heading:`Servidores MCP`,summary:`{{connected}} conectados · {{sleeping}} inativos · {{total}} no total`,addCustom:`Personalizado`,tabRecommended:`Recomendados`,tabServers:`Servidores`,tabAddCustom:`Personalizado`,recommendedBody:`Adição com um clique para servidores MCP populares. Clique em Adicionar para preencher a configuração e depois confirme. Servidores que exigem credenciais precisarão de suas variáveis de ambiente antes do uso.`,loadingServers:`Carregando servidores...`,noServers:`Nenhum servidor MCP configurado`,noServersHint:`Mude para a aba Recomendados para adicionar servidores populares, ou Personalizado para os seus.`,addCustomBody:`Configure um servidor MCP personalizado com transporte stdio, SSE ou HTTP.`,addCustomBodyHint:`Para servidores populares, use a aba Recomendados — tudo já está pré-configurado.`,removeConfirmTitle:`Remover o servidor "{{name}}"?`,removeConfirmBody:`Isso remove o servidor MCP da sua configuração.`,toastAdded:`Servidor "{{name}}" adicionado`,toastRemoved:`Servidor "{{name}}" removido`,toastDiscovered:`Descobertas {{count}} ferramentas de "{{name}}"`,toastSleeping:`O servidor "{{name}}" está inativo`,toastConnected:`Servidor "{{name}}" conectado`,toastReconnected:`Servidor "{{name}}" reconectado`,toastDisconnected:`Servidor "{{name}}" desconectado: {{reason}}`,toastError:`Servidor "{{name}}" erro: {{error}}`},s={title:`Limpar a allowlist salva?`,body_one:`Isso removerá o modelo fixado para {{provider}}. O seletor de modelos voltará ao catálogo models.dev.`,body_other:`Isso removerá os {{count}} modelos fixados para {{provider}}. O seletor de modelos voltará ao catálogo models.dev.`,undoHint:`Você pode desfazer por 8 segundos após confirmar.`,keepTitle:`Manter allowlist (Esc)`,clearTitle:`Limpar allowlist (Enter)`,clear:`Limpar allowlist`},c={termsWarning:`Entre com uma assinatura em vez de uma chave de API. Usar uma assinatura fora de seu cliente oficial pode violar os Termos do provedor — sua conta pode ser limitada ou banida. Uma chave de API é o caminho sancionado para uso programático.`,signIn:`Entrar`,waitingBrowser:`Aguardando seu login…`,openSignIn:`Abrir página de login`,pasteLoopbackBusy:`Porta loopback ocupada — cole a URL de redirecionamento`,pasteCantReach:`O navegador não alcança este servidor? Cole a URL de redirecionamento`,submit:`Enviar`,enterCode:`Insira este código na página de verificação:`,openVerification:`Abrir página de verificação`,waitingCode:`Aguardando autorização…`,exchanging:`Trocando tokens…`,fetchingModels:`Buscando modelos…`,signedIn:`Conectado.`,signedInToast:`Conectado — {{provider}}`,signInFailed:`Login falhou`,accountCount_one:`{{count}} conta salva`,accountCount_other:`{{count}} contas salvas`,active:`Ativo`,inactive:`Inativo`,retry:`Repetir`,retryLogin:`Reautenticar esta conta`,newAccount:`Nova conta`,aliasPlaceholder:`ex. {{default}}`},l={showThinkingLabel:`Mostrar registros de raciocínio`,showThinkingHint:`Exibe os blocos de raciocínio concluídos no histórico do chat.`,groupToolCallsLabel:`Agrupar chamadas de ferramentas`,groupToolCallsHint:`Agrupa chamadas consecutivas de ferramentas em um único indicador.`,themeHeading:`Tema`,themeLight:`Claro`,themeDark:`Escuro`,themeSystem:`Sistema`,themeSystemHint:`Sistema segue a preferência claro/escuro do seu sistema operacional.`,preferencesHeading:`Preferências`,compactDensity:`Densidade compacta`,compactDensityHint:`Espaçamento mais estreito em todo o chat.`,soundOnComplete:`Som ao concluir`,soundOnCompleteHint:`Reproduz um toque suave quando uma execução termina.`,titleAnimation:`Animação do título`,titleAnimationHint:`Mostrar título animado do terminal no CLI.`,thinkingWordLabel:`Palavra de raciocínio (CLI/TUI)`,thinkingWordHint:`Palavra exibida no chip de status da TUI. Uma única palavra curta.`,statuslineModeLabel:`Modo da linha de status (CLI/TUI)`,statuslineModeHint:`Densidade da linha de status da TUI.`,statuslineModeDetailed:`Detalhado`,statuslineModeMinimum:`Mínimo`,statuslineModeNoColor:`Sem cor`,animationStyleLabel:`Estilo de animação (CLI/TUI)`,animationStyleHint:`Animação do chip de trabalho da TUI.`,animationStyleRainbow:`Arco-íris`,animationStyleWave:`Onda`,animationStylePulse:`Pulso`,animationStyleDots:`Pontos`,animationStyleBreathe:`Respiração`,animationStyleCycle:`Ciclo`,languageHeading:`Idioma`,languageLabel:`Idioma da interface`,languageHint:`Altera apenas o texto da interface. Prompts, skills e a saída do modelo não são afetados.`,accentCyan:`Ciano`,accentBlue:`Azul`,accentEmerald:`Esmeralda`,accentViolet:`Violeta`,accentRose:`Rosa`,accentAmber:`Âmbar`},u={autonomyHeading:`Autonomia e Comportamento`,autonomyModeLabel:`Modo de autonomia`,autonomyModeHint:`Quão independentemente o agente prossegue entre turnos.`,autonomyModeOff:`Desativado — controle manual total`,autonomyModeSuggest:`Sugerir — sugere os próximos passos`,autonomyModeAuto:`Auto — breve atraso de confirmação`,autonomyModeEternal:`Eterno — autônomo até o objetivo concluído`,autonomyModeEternalParallel:`Eterno Paralelo — frota multi-agente`,autoProceedDelayLabel:`Atraso de auto-prosseguir`,autoProceedDelayHint:`Milissegundos antes de o agente auto-prosseguir no modo Auto. 0 = imediato.`,yoloLabel:`Modo YOLO`,yoloHint:`Ignorar os prompts de confirmação de ferramentas — o agente roda sem perguntar.`,refineHeading:`Refinamento de Prompt`,enableRefineLabel:`Ativar refinamento`,enableRefineHint:`Reescreve os prompts antes de enviar — instruções mais claras, melhores resultados.`,refineDelayLabel:`Atraso de refinamento`,refineDelayHint:`Contagem regressiva antes do envio automático do prompt refinado.`,refineLanguageLabel:`Idioma de refinamento`,refineLanguageHint:`Mantenha seu idioma ou traduza para inglês para o modelo.`,refineLanguageOriginal:`Original — mantenha seu idioma`,refineLanguageEnglish:`Inglês — traduzir para inglês`,refinerProviderLabel:`Provedor do refinador`,refinerProviderHint:`Id do provedor para o refinamento de objetivos. Vazio = usar o provedor da sessão.`,refinerProviderDefault:`Provedor da sessão`,refinerModelLabel:`Modelo do refinador`,refinerModelHint:`Id do modelo para o refinamento de objetivos. Vazio = usar o modelo da sessão.`,refinerModelDefault:`Modelo da sessão`,refinerProfileLabel:`Perfil de fallback do refinador`,refinerProfileHint:`Perfil de fallback nomeado para refinamento de objetivos. Substitui o provedor e o modelo.`,refinerProfileDefault:`Nenhum — usar provedor e modelo ou os padrões da sessão`,reasoningHeading:`Raciocínio e Cache`,reasoningModeLabel:`Modo de raciocínio`,reasoningModeHint:`Controla como o modelo usa o pensamento estendido. Auto = padrão do provedor.`,reasoningModeAuto:`Auto — padrão do provedor`,reasoningModeOn:`Ligado — forçar pensamento`,reasoningModeOff:`Desligado — desativar pensamento`,reasoningEffortLabel:`Esforço de raciocínio`,reasoningEffortHint:`Quanto compute o modelo gasta pensando. Enviado apenas quando o modelo suporta.`,reasoningEffortNone:`Nenhum`,reasoningEffortMinimal:`Mínimo`,reasoningEffortLow:`Baixo`,reasoningEffortMedium:`Médio`,reasoningEffortHigh:`Alto`,reasoningEffortXhigh:`Muito alto`,reasoningEffortMax:`Máx`,preserveThinkingLabel:`Preservar pensamento`,preserveThinkingHint:`Mantém os blocos de raciocínio entre turnos para continuidade de contexto.`,cacheTtlLabel:`TTL de cache`,cacheTtlHint:`Tempo de vida do cache de prompt. 1h custa mais na escrita mas economiza em releituras (Anthropic).`,cacheTtlDefault:`Padrão — padrão do provedor`,cacheTtl5m:`5 minutos`,cacheTtl1h:`1 hora`,capsHint:`Use wstack models caps para verificar o que o modelo atual suporta. Configurações não suportadas são omitidas silenciosamente por requisição.`,routingHeading:`Roteamento de modelo`,routingRouteKey:`Chave de rota de modelo`,routingPhasesGroup:`Fases`,routingRolesGroup:`Funções {{label}}`,routingCustomGroup:`Rotas personalizadas existentes`,routingTargetAria:`Destino da rota de modelo`,routingTargetEmpty:`— Limpar rota —`,routingTargetProfilesGroup:`Perfis de fallback`,routingTargetModelsGroup:`Modelos (provedor/modelo)`,routingSet:`Definir`,routingReasoningModeAria:`Modo raciocínio nova rota`,routingReasoningEffortAria:`Esforço raciocínio nova rota`,routingReasoningPreserveAria:`Preservação raciocínio nova rota`,routingReasoningModeFor:`Modo raciocínio para {{key}}`,routingReasoningEffortFor:`Esforço raciocínio para {{key}}`,routingReasoningPreserveFor:`Preservação raciocínio para {{key}}`,noRoutes:`Ainda não há rotas de modelo.`,leaderModel:`modelo líder`},d={heading:`Execução`,maxIterationsLabel:`Iterações máx por run`,maxIterationsHint:`Teto rígido de turnos LLM por agent.run().`,autoProceedMaxIterationsLabel:`Iterações máx de auto-prosseguir`,autoProceedMaxIterationsHint:`Para o auto-prosseguir após N iterações. 0 = ilimitado.`,confirmExitLabel:`Confirmar antes de sair`,confirmExitHint:`Primeiro Ctrl+C aborta o trabalho, segundo confirma a saída.`,chimeLabel:`Som ao concluir`,chimeHint:`Campainha do terminal quando um run de agente termina.`,breakerLabel:`Disjuntor de processos`,breakerHint:`Bloqueia bash/exec após falhas repetidas; ao disparar, arma a contagem de kill/reset.`,breakerTimeoutLabel:`Tempo de kill/reset do disjuntor`,breakerTimeoutHint:`Atraso antes do kill/reset automático ao disparar. 0 = recuperação manual.`,availabilityHeading:`Provider/model availability calendar`,availabilityHint:`Prevent autonomous and overnight runs from using selected providers or models during recurring windows.`},f={heading:`Fallbacks de modelo`,body:`Quando o modelo ativo é rate-limitado (429/529), dá erro 5xx ou trava — após suas próprias retentativas — o agente rotaciona para o próximo modelo desta cadeia. Também usado como padrão para os sub-agentes workers do SDD.`,autoFallbackLabel:`Fallback automático`,autoFallbackHint:`Quando a cadeia acima está vazia, derive uma automaticamente de seus provedores com chave.`,favoritesOnlyLabel:`Apenas favoritos`,favoritesOnlyHint:`Quando o fallback automático deriva uma cadeia, restrinja-a aos seus modelos favoritos.`,profilesHeading:`Perfis de fallback`,addProfile:`Adicionar`,noProfiles:`Ainda não há perfis de fallback nomeados.`,createDefault:`Criar padrão a partir do modelo ativo`,useChain:`Usar cadeia`,setLeader:`Definir líder`,profileEmpty:`O perfil está vazio.`,favoritesHeading:`Modelos favoritos`,favoritesEmpty:`Os favoritos são mostrados primeiro e podem restringir o fallback automático.`,addModelToProfile:`Adicionar modelo ao perfil…`,addFavoriteModel:`Adicionar modelo favorito…`,inactive:`inativo`},p={heading:`Frota e Streaming`,fleetChatVerbosityLabel:`Transmitir eventos da frota`,fleetChatVerbosityHint:`Mostra a atividade ao vivo dos sub-agentes no painel da frota.`,maxConcurrentLabel:`Sub-agentes concorrentes máx`,maxConcurrentHint:`Número máximo de sub-agentes que podem rodar simultaneamente.`,nextPredictionLabel:`Previsão do próximo passo`,nextPredictionHint:`Após um turno, prevê os prováveis próximos passos.`},m={hqHeading:`Cliente HQ`,hqPublishingLabel:`Publicação HQ`,hqPublishingHint:`Publica esta sessão WebUI/cliente no WrongStack HQ. Clientes da mesma máquina podem auto-descobrir a auth HQ local; clientes remotos usam a URL/token abaixo.`,hqUrlLabel:`URL HQ`,hqUrlHint:`Deixe vazio para auto-descoberta na mesma máquina.`,hqTokenLabel:`Token do cliente HQ`,hqRawContentLabel:`Conteúdo HQ bruto`,hqRawContentHint:`Enviar pré-visualizações de conteúdo brutas para HQ em vez de pré-visualizações redigidas.`,telegramHeading:`Notificações do Telegram`,telegramSessionEndLabel:`Fim de sessão`,telegramSessionEndHint:`Envia um resumo quando uma sessão termina.`,telegramDelegateLabel:`Delegado concluído`,telegramDelegateHint:`Envia uma nota humanizada quando um sub-agente conclui.`,telegramLongToolLabel:`Ferramentas longas`,telegramLongToolHint:`Notifica quando uma ferramenta excede {{ms}}ms. 0 para desativar.`,telegramChangesApply:`As mudanças se aplicam imediatamente.`,telegramNotConfigured:`O Telegram não está configurado. Execute /telegram-setup na CLI para conectar um bot primeiro.`,heading:`Integrations`,disabledHint:`Ative o recurso na aba Contexto para usar esta seção.`},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`,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 profile`,autoReviewFallbackProfileHint:`Named fallback profile for the auto-review agent. Overrides provider+model.`,autoReviewFallbackProfileNone:`None — use provider+model or session defaults`,autoReviewFallbackModelsLabel:`Fallback models`,autoReviewFallbackModelsEmpty:`No fallback models configured`,autoReviewFallbackModelsHint:`Models the auto-review fallback chain resolves from the profile or the global 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={flagsHeading:`Sinalizadores de Recursos`,mcpLabel:`Servidores MCP`,mcpHint:`Habilita integrações Model Context Protocol.`,pluginsLabel:`Plugins`,pluginsHint:`Carrega e executa plugins instalados pelo usuário.`,memoryLabel:`Memória`,memoryHint:`Persiste e recupera fatos entre sessões.`,skillsLabel:`Habilidades`,skillsHint:`Carrega prompts de habilidades específicas do domínio.`,modelsRegistryLabel:`Registro de modelos`,modelsRegistryHint:`Usa o catálogo models.dev para descoberta de provedores.`,indexOnStartLabel:`Indexar ao iniciar`,indexOnStartHint:`Constrói o índice de símbolos do código ao iniciar a sessão.`,pluginsPerPluginHeading:`🔌 Per-Plugin Controls`,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`,pluginKnowledgeGraph:`Knowledge Graph — persistent facts`,pluginErrorLens:`Error Lens — failure diagnostics`,pluginTodoTracker:`Todo Tracker — persistent todos`,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`,heading:`Contexto e Depuração`,autoCompactLabel:`Auto-compactar contexto`,autoCompactHint:`Apara automaticamente a janela de contexto perto dos limites.`,compactorStrategyLabel:`Estratégia de compactação`,compactorStrategyHint:`Como o contexto é compactado quando cresce demais.`,compactorStrategyHybrid:`Híbrida — regras rápidas (padrão)`,compactorStrategyIntelligent:`Inteligente — resumo LLM`,compactorStrategySelective:`Seletiva — seleção guiada por LLM`,contextModeLabel:`Modo de contexto`,contextModeHint:`Política de janela de contexto — equilibrado é o padrão.`,contextModeBalanced:`Equilibrado — uso normal do contexto`,contextModeFrugal:`Frugal — uso conservador de tokens`,contextModeDeep:`Profundo — contexto maior para tarefas complexas`,tokenSavingLabel:`Modo de economia de tokens`,tokenSavingHint:`Quão agressivamente reduzir o uso de tokens.`,tokenSavingOff:`Desativado — sem economia`,tokenSavingMinimal:`Mínimo — otimização básica`,tokenSavingLight:`Leve — redução moderada`,tokenSavingMedium:`Médio — economias significativas`,tokenSavingAggressive:`Agressivo — compressão máxima`},_={logLevelLabel:`Nível de log`,logLevelHint:`Severidade mínima para logging do lado servidor.`,logLevelDebug:`Debug — tudo`,logLevelInfo:`Info — fluxo normal`,logLevelWarn:`Warn — apenas problemas`,logLevelError:`Error — apenas falhas`,auditLevelLabel:`Nível de auditoria`,auditLevelHint:`Nível de detalhe para logs de auditoria de sessão.`,auditLevelMinimal:`Mínimo — apenas erros`,auditLevelStandard:`Padrão — chamadas de ferramentas + erros`,auditLevelFull:`Completo — cada evento (logs grandes)`,fsAccessLabel:`Acesso ao sistema de arquivos`,fsAccessHint:`Escopo das ferramentas de arquivo. Aplica-se na próxima sessão.`,fsAccessUnrestricted:`Irrestrito — qualquer caminho`,fsAccessProject:`Projeto — limitado à raiz do projeto`,debugStreamLabel:`Fluxo de depuração`,debugStreamHint:`Dump hex SSE bruto no stderr do servidor para depurar provedores.`,heading:`Logs & Debug`},v={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.`},y={switchingTo:`Mudando para {{provider}} / {{model}}…`,switching:`Mudando o modelo…`,switchingToTarget:`Mudando para {{target}}…`,previousModel:`modelo anterior`,modelSwitchedNextRequest:`Modelo alterado: {{from}} → {{to}}. Ativo na próxima solicitação ao LLM.`,modelSwitchedRunActive:`Modelo alterado: {{from}} → {{to}}. Ativo na próxima solicitação ao LLM; a execução atual continua sem reiniciar.`,fallbackExists:`O perfil de fallback "{{name}}" já existe`,selectProviderModelFirst:`Selecione um provedor e um modelo primeiro`,defaultProfileCreated:`Perfil de fallback padrão criado`,profileEmpty:`O perfil de fallback "{{name}}" está vazio`,leaderSetFrom:`Líder definido a partir de {{name}}`,modelSwitchTimeout:`Troca de modelo expirou. Por favor, tente novamente.`},b={workbenchHeading:`Aparência do workbench`,workbenchHint:`Alterna a visibilidade das superfícies do workbench na vista de chat.`,showModelReasoningLabel:`Mostrar raciocínio do modelo`,showModelReasoningHint:`Renderiza blocos de raciocínio/thinking do LLM no histórico do chat (paridade com TUI).`,showAgentSwarmPanelLabel:`Mostrar painel de enxame de agentes`,showAgentSwarmPanelHint:`Renderiza o painel persistente de enxame de agentes e fila de missões abaixo da barra de status (paridade com TUI).`,titleAnimationLabel:`Animação do título`,titleAnimationHint:`Anima o título do terminal/aba com o estado de execução (paridade com TUI).`,statusChipHeading:`Chip de status e barra de status`,statusChipHint:`Estilo visual para a barra de status TUI/CLI e o chip de trabalho.`,thinkingWordLabel:`Palavra de raciocínio`,thinkingWordHint:`Palavra curta única exibida no chip de status TUI enquanto o agente trabalha.`,statuslineModeLabel:`Modo da barra de status`,statuslineModeHint:`Densidade da barra de status TUI.`,statuslineModeMinimum:`Mínimo`,statuslineModeDetailed:`Detalhado`,statuslineModeNoColor:`Sem cor`,animationStyleLabel:`Estilo de animação`,animationStyleHint:`Animação do chip de trabalho TUI.`,animationStyleRainbow:`Arco-íris`,animationStyleWave:`Onda`,animationStylePulse:`Pulso`,animationStyleDots:`Pontos`,animationStyleBreathe:`Respiração`,animationStyleCycle:`Ciclo`,refineHeading:`Contagem regressiva do refine e diffs`,refineHint:`Configura a contagem regressiva pré-refine e o limite mínimo de arquivos para o rodapé de resumo multi-diff.`,preRefineSecondsLabel:`Contagem regressiva pré-refine`,preRefineSecondsHint:`Período de carência antes do refiner iniciar (segundos). 0 = pula a contagem e refina imediatamente.`,preRefineSecondsPresets:`Predefinições: {{presets}} segundos (0 = desativado).`,multiDiffSummaryLabel:`Resumo multi-diff`,multiDiffSummaryHint:`Número mínimo de arquivos antes que o rodapé agregado 'N arquivos · +X -Y' apareça acima dos blocos por arquivo.`,multiDiffSummaryPresets:`Predefinições: {{presets}} (0 = desativado).`,memoryHeading:`Ferramenta read e injeção de memória SAGE`,memoryHint:`Alterna o que a ferramenta read inclui e quando blocos de memória SAGE aparecem nos resultados de ferramentas.`,readSymbolsLabel:`Ler símbolos`,readSymbolsHint:`Quando ativo, a ferramenta read inclui símbolos do índice do código junto com o conteúdo do arquivo.`,showSageMemoryInjectLabel:`Mostrar SAGE Memory Inject`,showSageMemoryInjectHint:`Quando ativo, mostra blocos de injeção de memória SAGE nos resultados de ferramentas.`,sageMemoryInjectThresholdLabel:`Limite de SAGE Memory Inject`,sageMemoryInjectThresholdHint:`Força mínima de relação necessária para uma memória SAGE injetada (0.72–0.95).`,footnote:`Estas configurações refletem o picker /settings do TUI. Alternâncias aplicam-se ao vivo; alguns campos exigem reinício da sessão.`},x={title:e,subtitle:t,tabs:n,model:r,connection:i,provider:a,mcp:o,allowlist:s,oauth:c,general:l,agent:u,execution:d,fallbacks:f,fleet:p,integrations:m,features:h,context:g,logs:_,security:v,toast:y,display:b};export{u as agent,s as allowlist,i as connection,g as context,x as default,b as display,d as execution,f as fallbacks,h as features,p as fleet,l as general,m as integrations,_ as logs,o as mcp,r as model,c as oauth,a as provider,v as security,t as subtitle,n as tabs,e as title,y as toast};
1
+ var e=`Configurações`,t=`Configure every aspect of your agent workspace`,n={general:`Geral`,provider:`Provedor`,connection:`Conexões`,agent:`Agente`,execution:`Execução`,fallbacks:`Fallbacks`,routing:`Roteamento`,fleet:`Frota`,integrations:`Integrações`,chimera:`Chimera`,context:`Contexto`,logs:`Registros`,security:`Segurança`,display:`Exibição`,displayDesc:`Aparência do workbench, chip de status, temporizadores de refine e alternâncias de injeção de ferramenta/memória — reflete o SettingsPicker do TUI.`},r={heading:`Modelo`,loading:`Carregando modelos...`,notFound:`Nenhum modelo encontrado para este provedor. O catálogo pode estar vazio ou ainda carregando.`,selectProviderFirst:`Selecione um provedor primeiro`,context:`{{count}}k contexto`},i={wsUrlLabel:`URL do servidor WebSocket`,wsUrlPlaceholder:`ws://localhost:3456`,wsUrlHint:`URL do servidor WebSocket do agente. O servidor é executado junto com o CLI.`,startingHeading:`Iniciando o servidor WebSocket`,startingBody:`Para desenvolvimento, execute ./dev.ps1 da raiz do repo (opcionalmente defina WS_HOST/WS_PORT antes). Caso contrário, inicie a WebUI com a CLI: wstack --webui.`,healthHeading:`Saúde das conexões`,healthHint:`Relatório ao vivo de propriedade, armazenamento, fila, observador e latência dos serviços.`,healthRefresh:`Atualizar`,healthLoading:`Verificando serviços…`,healthUnknown:`Saúde desconhecida`,healthDisconnected:`O WebSocket da WebUI está desconectado.`,healthRestartRequired:`Reinicie o backend uma vez para ativar o relatório de conexões.`,healthOptional:`Sob demanda`,endpointInvalidBadge:`caminho do socket muito longo`,endpointInvalidRemedy:`O caminho do socket IPC excede o limite de comprimento desta plataforma, então o daemon compartilhado não pode iniciar. As consultas recorrem a um modo local de processo mais lento. Remédio: defina um TMPDIR mais curto (ex. export TMPDIR=/tmp) e reinicie o WrongStack.`,healthCounts:`{{healthy}} saudáveis · {{attention}} atenção · {{sleeping}} inativos`,healthOverall:{healthy:`Serviços obrigatórios saudáveis`,degraded:`Serviço obrigatório degradado`,error:`Serviço obrigatório indisponível`},healthStatus:{healthy:`Saudável`,degraded:`Degradado`,offline:`Inativo`,unavailable:`Indisponível`,error:`Erro`},services:{kanban:{label:`Kanban IPC`},mailbox:{label:`Mailbox IPC`}},serviceActionRestart:`Reiniciar {{label}}`},a={savedProviderCount_one:`{{count}} provedor`,savedProviderCount_other:`{{count}} provedores`,keyCount_one:`{{count}} chave configurada`,keyCount_other:`{{count}} chaves configuradas`,activeKeyCount_one:`{{count}} chave ativa`,activeKeyCount_other:`{{count}} chaves ativas`,subscriptionHeading:`Login com assinatura`,apiKeysHeading:`Provedores de chave de API`,apiKeysBody:`Escolha um provedor do catálogo e adicione uma chave de API, ou gerencie os provedores salvos.`,tabCatalog:`Catálogo`,tabSaved:`Salvos ({{count}})`,searchPlaceholder:`Pesquisar entre {{count}} provedores (nome / id / família)…`,loadingCatalog:`Carregando catálogo...`,noMatch:`Nenhum provedor corresponde a "{{query}}".`,configured:`Configurado`,reachable:`Acessível`,envVar:`ENV: {{var}}`,modelCount_one:`{{count}} modelo`,modelCount_other:`{{count}} modelos`,keyPlaceholder:`Chave de API do {{name}}`,orEnv:`Ou defina {{env}} no ambiente.`,addApiKey:`Adicionar chave de API`,manageKeys:`Gerencie suas chaves de API e configurações de provedor`,addProvider:`Adicionar provedor`,addCustomHeading:`Adicionar provedor personalizado`,localServers:`Servidores locais — clique para preencher:`,providerIdPlaceholder:`ID do provedor (ex. my-llm-server)`,apiKeyOptionalPlaceholder:`Chave de API (opcional)`,noSaved:`Nenhum provedor salvo`,noSavedHint:`Adicione um provedor para começar`,apiKeysLabel:`Chaves de API`,addKey:`Adicionar chave`,noKeys:`Nenhuma chave configurada`,active:`Ativa`,setActive:`Definir como ativa`,keyLabelPlaceholder:`Rótulo da chave (ex. default, production)`,apiKeyPlaceholder:`Chave de API`,saveKey:`Salvar chave`,savedToast:`Chave salva para {{name}}`},o={status:{connected:`Conectado`,connecting:`Conectando`,sleeping:`Inativo`,discovering:`Descobrindo`,error:`Erro`,stopped:`Parado`,unknown:`Desconhecido`},disabled:`Os servidores MCP estão desativados.`,wakeTitle:`Acordar servidor`,sleepTitle:`Colocar em repouso`,discoverTitle:`Descobrir ferramentas`,editTitle:`Editar`,removeTitle:`Remover`,statusLabel:`Status:`,enabledLabel:`Ativado:`,yes:`Sim`,no:`Não`,descriptionLabel:`Descrição:`,pidLabel:`PID:`,errorLabel:`Erro:`,toolsLabel:`Ferramentas ({{count}}):`,noTools:`Nenhuma ferramenta descoberta ainda`,serverNameRequired:`O nome do servidor é obrigatório`,dialogTitleEdit:`Editar servidor MCP`,dialogTitleAdd:`Adicionar servidor MCP`,dialogTitleAddCustom:`Adicionar servidor MCP personalizado`,fieldName:`Nome`,fieldNamePlaceholder:`ex. github, filesystem`,fieldTransport:`Transporte`,fieldUrl:`URL`,fieldCommand:`Comando`,fieldCommandPlaceholder:`ex. npx`,fieldArgs:`Args`,fieldArgsHint:`(separados por espaços)`,fieldArgsPlaceholder:`ex. -y @modelcontextprotocol/server-github`,fieldEnv:`Variáveis de ambiente`,fieldEnvHint:`(KEY=valor, uma por linha)`,fieldDescription:`Descrição`,fieldDescriptionPlaceholder:`Servidor MCP do GitHub para acesso ao repositório`,enableServer:`Ativar servidor`,lazyConnect:`Conexão preguiçosa`,lazyConnectHint:`(não inicia até a primeira chamada; hiberna quando ocioso)`,saveChanges:`Salvar alterações`,addServer:`Adicionar servidor`,requires:`Requer: {{vars}}`,added:`Adicionado`,heading:`Servidores MCP`,summary:`{{connected}} conectados · {{sleeping}} inativos · {{total}} no total`,addCustom:`Personalizado`,tabRecommended:`Recomendados`,tabServers:`Servidores`,tabAddCustom:`Personalizado`,recommendedBody:`Adição com um clique para servidores MCP populares. Clique em Adicionar para preencher a configuração e depois confirme. Servidores que exigem credenciais precisarão de suas variáveis de ambiente antes do uso.`,loadingServers:`Carregando servidores...`,noServers:`Nenhum servidor MCP configurado`,noServersHint:`Mude para a aba Recomendados para adicionar servidores populares, ou Personalizado para os seus.`,addCustomBody:`Configure um servidor MCP personalizado com transporte stdio, SSE ou HTTP.`,addCustomBodyHint:`Para servidores populares, use a aba Recomendados — tudo já está pré-configurado.`,removeConfirmTitle:`Remover o servidor "{{name}}"?`,removeConfirmBody:`Isso remove o servidor MCP da sua configuração.`,toastAdded:`Servidor "{{name}}" adicionado`,toastRemoved:`Servidor "{{name}}" removido`,toastDiscovered:`Descobertas {{count}} ferramentas de "{{name}}"`,toastSleeping:`O servidor "{{name}}" está inativo`,toastConnected:`Servidor "{{name}}" conectado`,toastReconnected:`Servidor "{{name}}" reconectado`,toastDisconnected:`Servidor "{{name}}" desconectado: {{reason}}`,toastError:`Servidor "{{name}}" erro: {{error}}`},s={title:`Limpar a allowlist salva?`,body_one:`Isso removerá o modelo fixado para {{provider}}. O seletor de modelos voltará ao catálogo models.dev.`,body_other:`Isso removerá os {{count}} modelos fixados para {{provider}}. O seletor de modelos voltará ao catálogo models.dev.`,undoHint:`Você pode desfazer por 8 segundos após confirmar.`,keepTitle:`Manter allowlist (Esc)`,clearTitle:`Limpar allowlist (Enter)`,clear:`Limpar allowlist`},c={termsWarning:`Entre com uma assinatura em vez de uma chave de API. Usar uma assinatura fora de seu cliente oficial pode violar os Termos do provedor — sua conta pode ser limitada ou banida. Uma chave de API é o caminho sancionado para uso programático.`,signIn:`Entrar`,waitingBrowser:`Aguardando seu login…`,openSignIn:`Abrir página de login`,pasteLoopbackBusy:`Porta loopback ocupada — cole a URL de redirecionamento`,pasteCantReach:`O navegador não alcança este servidor? Cole a URL de redirecionamento`,submit:`Enviar`,enterCode:`Insira este código na página de verificação:`,openVerification:`Abrir página de verificação`,waitingCode:`Aguardando autorização…`,exchanging:`Trocando tokens…`,fetchingModels:`Buscando modelos…`,signedIn:`Conectado.`,signedInToast:`Conectado — {{provider}}`,signInFailed:`Login falhou`,accountCount_one:`{{count}} conta salva`,accountCount_other:`{{count}} contas salvas`,active:`Ativo`,inactive:`Inativo`,retry:`Repetir`,retryLogin:`Reautenticar esta conta`,newAccount:`Nova conta`,aliasPlaceholder:`ex. {{default}}`},l={showThinkingLabel:`Mostrar registros de raciocínio`,showThinkingHint:`Exibe os blocos de raciocínio concluídos no histórico do chat.`,groupToolCallsLabel:`Agrupar chamadas de ferramentas`,groupToolCallsHint:`Agrupa chamadas consecutivas de ferramentas em um único indicador.`,themeHeading:`Tema`,themeLight:`Claro`,themeDark:`Escuro`,themeSystem:`Sistema`,themeSystemHint:`Sistema segue a preferência claro/escuro do seu sistema operacional.`,preferencesHeading:`Preferências`,compactDensity:`Densidade compacta`,compactDensityHint:`Espaçamento mais estreito em todo o chat.`,soundOnComplete:`Som ao concluir`,soundOnCompleteHint:`Reproduz um toque suave quando uma execução termina.`,titleAnimation:`Animação do título`,titleAnimationHint:`Mostrar título animado do terminal no CLI.`,thinkingWordLabel:`Palavra de raciocínio (CLI/TUI)`,thinkingWordHint:`Palavra exibida no chip de status da TUI. Uma única palavra curta.`,statuslineModeLabel:`Modo da linha de status (CLI/TUI)`,statuslineModeHint:`Densidade da linha de status da TUI.`,statuslineModeDetailed:`Detalhado`,statuslineModeMinimum:`Mínimo`,statuslineModeNoColor:`Sem cor`,animationStyleLabel:`Estilo de animação (CLI/TUI)`,animationStyleHint:`Animação do chip de trabalho da TUI.`,animationStyleRainbow:`Arco-íris`,animationStyleWave:`Onda`,animationStylePulse:`Pulso`,animationStyleDots:`Pontos`,animationStyleBreathe:`Respiração`,animationStyleCycle:`Ciclo`,languageHeading:`Idioma`,languageLabel:`Idioma da interface`,languageHint:`Altera apenas o texto da interface. Prompts, skills e a saída do modelo não são afetados.`,accentCyan:`Ciano`,accentBlue:`Azul`,accentEmerald:`Esmeralda`,accentViolet:`Violeta`,accentRose:`Rosa`,accentAmber:`Âmbar`},u={autonomyHeading:`Autonomia e Comportamento`,autonomyModeLabel:`Modo de autonomia`,autonomyModeHint:`Quão independentemente o agente prossegue entre turnos.`,autonomyModeOff:`Desativado — controle manual total`,autonomyModeSuggest:`Sugerir — sugere os próximos passos`,autonomyModeAuto:`Auto — breve atraso de confirmação`,autonomyModeEternal:`Eterno — autônomo até o objetivo concluído`,autonomyModeEternalParallel:`Eterno Paralelo — frota multi-agente`,autoProceedDelayLabel:`Atraso de auto-prosseguir`,autoProceedDelayHint:`Milissegundos antes de o agente auto-prosseguir no modo Auto. 0 = imediato.`,yoloLabel:`Modo YOLO`,yoloHint:`Ignorar os prompts de confirmação de ferramentas — o agente roda sem perguntar.`,refineHeading:`Refinamento de Prompt`,enableRefineLabel:`Ativar refinamento`,enableRefineHint:`Reescreve os prompts antes de enviar — instruções mais claras, melhores resultados.`,refineDelayLabel:`Atraso de refinamento`,refineDelayHint:`Contagem regressiva antes do envio automático do prompt refinado.`,refineLanguageLabel:`Idioma de refinamento`,refineLanguageHint:`Mantenha seu idioma ou traduza para inglês para o modelo.`,refineLanguageOriginal:`Original — mantenha seu idioma`,refineLanguageEnglish:`Inglês — traduzir para inglês`,refinerProviderLabel:`Provedor do refinador`,refinerProviderHint:`Id do provedor para o refinamento de objetivos. Vazio = usar o provedor da sessão.`,refinerProviderDefault:`Provedor da sessão`,refinerModelLabel:`Modelo do refinador`,refinerModelHint:`Id do modelo para o refinamento de objetivos. Vazio = usar o modelo da sessão.`,refinerModelDefault:`Modelo da sessão`,refinerProfileLabel:`Perfil de fallback do refinador`,refinerProfileHint:`Perfil de fallback nomeado para refinamento de objetivos. Substitui o provedor e o modelo.`,refinerProfileDefault:`Nenhum — usar provedor e modelo ou os padrões da sessão`,reasoningHeading:`Raciocínio e Cache`,reasoningModeLabel:`Modo de raciocínio`,reasoningModeHint:`Controla como o modelo usa o pensamento estendido. Auto = padrão do provedor.`,reasoningModeAuto:`Auto — padrão do provedor`,reasoningModeOn:`Ligado — forçar pensamento`,reasoningModeOff:`Desligado — desativar pensamento`,reasoningEffortLabel:`Esforço de raciocínio`,reasoningEffortHint:`Quanto compute o modelo gasta pensando. Enviado apenas quando o modelo suporta.`,reasoningEffortNone:`Nenhum`,reasoningEffortMinimal:`Mínimo`,reasoningEffortLow:`Baixo`,reasoningEffortMedium:`Médio`,reasoningEffortHigh:`Alto`,reasoningEffortXhigh:`Muito alto`,reasoningEffortMax:`Máx`,preserveThinkingLabel:`Preservar pensamento`,preserveThinkingHint:`Mantém os blocos de raciocínio entre turnos para continuidade de contexto.`,cacheTtlLabel:`TTL de cache`,cacheTtlHint:`Tempo de vida do cache de prompt. 1h custa mais na escrita mas economiza em releituras (Anthropic).`,cacheTtlDefault:`Padrão — padrão do provedor`,cacheTtl5m:`5 minutos`,cacheTtl1h:`1 hora`,capsHint:`Use wstack models caps para verificar o que o modelo atual suporta. Configurações não suportadas são omitidas silenciosamente por requisição.`,routingHeading:`Roteamento de modelo`,routingRouteKey:`Chave de rota de modelo`,routingPhasesGroup:`Fases`,routingRolesGroup:`Funções {{label}}`,routingCustomGroup:`Rotas personalizadas existentes`,routingTargetAria:`Destino da rota de modelo`,routingTargetEmpty:`— Limpar rota —`,routingTargetProfilesGroup:`Perfis de fallback`,routingTargetModelsGroup:`Modelos (provedor/modelo)`,routingSet:`Definir`,routingReasoningModeAria:`Modo raciocínio nova rota`,routingReasoningEffortAria:`Esforço raciocínio nova rota`,routingReasoningPreserveAria:`Preservação raciocínio nova rota`,routingReasoningModeFor:`Modo raciocínio para {{key}}`,routingReasoningEffortFor:`Esforço raciocínio para {{key}}`,routingReasoningPreserveFor:`Preservação raciocínio para {{key}}`,noRoutes:`Ainda não há rotas de modelo.`,leaderModel:`modelo líder`},d={heading:`Execução`,maxIterationsLabel:`Iterações máx por run`,maxIterationsHint:`Teto rígido de turnos LLM por agent.run().`,autoProceedMaxIterationsLabel:`Iterações máx de auto-prosseguir`,autoProceedMaxIterationsHint:`Para o auto-prosseguir após N iterações. 0 = ilimitado.`,confirmExitLabel:`Confirmar antes de sair`,confirmExitHint:`Primeiro Ctrl+C aborta o trabalho, segundo confirma a saída.`,chimeLabel:`Som ao concluir`,chimeHint:`Campainha do terminal quando um run de agente termina.`,breakerLabel:`Disjuntor de processos`,breakerHint:`Bloqueia bash/exec após falhas repetidas; ao disparar, arma a contagem de kill/reset.`,breakerTimeoutLabel:`Tempo de kill/reset do disjuntor`,breakerTimeoutHint:`Atraso antes do kill/reset automático ao disparar. 0 = recuperação manual.`,availabilityHeading:`Provider/model availability calendar`,availabilityHint:`Prevent autonomous and overnight runs from using selected providers or models during recurring windows.`},f={heading:`Fallbacks de modelo`,body:`Quando o modelo ativo é rate-limitado (429/529), dá erro 5xx ou trava — após suas próprias retentativas — o agente rotaciona para o próximo modelo desta cadeia. Também usado como padrão para os sub-agentes workers do SDD.`,autoFallbackLabel:`Fallback automático`,autoFallbackHint:`Quando a cadeia acima está vazia, derive uma automaticamente de seus provedores com chave.`,favoritesOnlyLabel:`Apenas favoritos`,favoritesOnlyHint:`Quando o fallback automático deriva uma cadeia, restrinja-a aos seus modelos favoritos.`,profilesHeading:`Perfis de fallback`,addProfile:`Adicionar`,noProfiles:`Ainda não há perfis de fallback nomeados.`,createDefault:`Criar padrão a partir do modelo ativo`,useChain:`Usar cadeia`,setLeader:`Definir líder`,profileEmpty:`O perfil está vazio.`,favoritesHeading:`Modelos favoritos`,favoritesEmpty:`Os favoritos são mostrados primeiro e podem restringir o fallback automático.`,addModelToProfile:`Adicionar modelo ao perfil…`,addFavoriteModel:`Adicionar modelo favorito…`,inactive:`inativo`},p={heading:`Frota e Streaming`,fleetChatVerbosityLabel:`Transmitir eventos da frota`,fleetChatVerbosityHint:`Mostra a atividade ao vivo dos sub-agentes no painel da frota.`,maxConcurrentLabel:`Sub-agentes concorrentes máx`,maxConcurrentHint:`Número máximo de sub-agentes que podem rodar simultaneamente.`,nextPredictionLabel:`Previsão do próximo passo`,nextPredictionHint:`Após um turno, prevê os prováveis próximos passos.`},m={hqHeading:`Cliente HQ`,hqPublishingLabel:`Publicação HQ`,hqPublishingHint:`Publica esta sessão WebUI/cliente no WrongStack HQ. Clientes da mesma máquina podem auto-descobrir a auth HQ local; clientes remotos usam a URL/token abaixo.`,hqUrlLabel:`URL HQ`,hqUrlHint:`Deixe vazio para auto-descoberta na mesma máquina.`,hqTokenLabel:`Token do cliente HQ`,hqRawContentLabel:`Conteúdo HQ bruto`,hqRawContentHint:`Enviar pré-visualizações de conteúdo brutas para HQ em vez de pré-visualizações redigidas.`,telegramHeading:`Notificações do Telegram`,telegramSessionEndLabel:`Fim de sessão`,telegramSessionEndHint:`Envia um resumo quando uma sessão termina.`,telegramDelegateLabel:`Delegado concluído`,telegramDelegateHint:`Envia uma nota humanizada quando um sub-agente conclui.`,telegramLongToolLabel:`Ferramentas longas`,telegramLongToolHint:`Notifica quando uma ferramenta excede {{ms}}ms. 0 para desativar.`,telegramChangesApply:`As mudanças se aplicam imediatamente.`,telegramNotConfigured:`O Telegram não está configurado. Execute /telegram-setup na CLI para conectar um bot primeiro.`,heading:`Integrations`,disabledHint:`Ative o recurso na aba Contexto para usar esta seção.`},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`,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 profile`,autoReviewFallbackProfileHint:`Named fallback profile for the auto-review agent. Overrides provider+model.`,autoReviewFallbackProfileNone:`None — use provider+model or session defaults`,autoReviewFallbackModelsLabel:`Fallback models`,autoReviewFallbackModelsEmpty:`No fallback models configured`,autoReviewFallbackModelsHint:`Models the auto-review fallback chain resolves from the profile or the global 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={flagsHeading:`Sinalizadores de Recursos`,mcpLabel:`Servidores MCP`,mcpHint:`Habilita integrações Model Context Protocol.`,pluginsLabel:`Plugins`,pluginsHint:`Carrega e executa plugins instalados pelo usuário.`,memoryLabel:`Memória`,memoryHint:`Persiste e recupera fatos entre sessões.`,skillsLabel:`Habilidades`,skillsHint:`Carrega prompts de habilidades específicas do domínio.`,modelsRegistryLabel:`Registro de modelos`,modelsRegistryHint:`Usa o catálogo models.dev para descoberta de provedores.`,indexOnStartLabel:`Indexar ao iniciar`,indexOnStartHint:`Constrói o índice de símbolos do código ao iniciar a sessão.`,pluginsPerPluginHeading:`🔌 Per-Plugin Controls`,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`,pluginKnowledgeGraph:`Knowledge Graph — persistent facts`,pluginErrorLens:`Error Lens — failure diagnostics`,pluginTodoTracker:`Todo Tracker — persistent todos`,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`,heading:`Contexto e Depuração`,autoCompactLabel:`Auto-compactar contexto`,autoCompactHint:`Apara automaticamente a janela de contexto perto dos limites.`,compactorStrategyLabel:`Estratégia de compactação`,compactorStrategyHint:`Como o contexto é compactado quando cresce demais.`,compactorStrategyHybrid:`Híbrida — regras rápidas (padrão)`,compactorStrategyIntelligent:`Inteligente — resumo LLM`,compactorStrategySelective:`Seletiva — seleção guiada por LLM`,contextModeLabel:`Modo de contexto`,contextModeHint:`Política de janela de contexto — equilibrado é o padrão.`,contextModeBalanced:`Equilibrado — uso normal do contexto`,contextModeFrugal:`Frugal — uso conservador de tokens`,contextModeDeep:`Profundo — contexto maior para tarefas complexas`,tokenSavingLabel:`Modo de economia de tokens`,tokenSavingHint:`Quão agressivamente reduzir o uso de tokens.`,tokenSavingOff:`Desativado — sem economia`,tokenSavingMinimal:`Mínimo — otimização básica`,tokenSavingLight:`Leve — redução moderada`,tokenSavingMedium:`Médio — economias significativas`,tokenSavingAggressive:`Agressivo — compressão máxima`},_={logLevelLabel:`Nível de log`,logLevelHint:`Severidade mínima para logging do lado servidor.`,logLevelDebug:`Debug — tudo`,logLevelInfo:`Info — fluxo normal`,logLevelWarn:`Warn — apenas problemas`,logLevelError:`Error — apenas falhas`,auditLevelLabel:`Nível de auditoria`,auditLevelHint:`Nível de detalhe para logs de auditoria de sessão.`,auditLevelMinimal:`Mínimo — apenas erros`,auditLevelStandard:`Padrão — chamadas de ferramentas + erros`,auditLevelFull:`Completo — cada evento (logs grandes)`,fsAccessLabel:`Acesso ao sistema de arquivos`,fsAccessHint:`Escopo das ferramentas de arquivo. Aplica-se na próxima sessão.`,fsAccessUnrestricted:`Irrestrito — qualquer caminho`,fsAccessProject:`Projeto — limitado à raiz do projeto`,debugStreamLabel:`Fluxo de depuração`,debugStreamHint:`Dump hex SSE bruto no stderr do servidor para depurar provedores.`,heading:`Logs & Debug`},v={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.`},y={switchingTo:`Mudando para {{provider}} / {{model}}…`,switching:`Mudando o modelo…`,switchingToTarget:`Mudando para {{target}}…`,previousModel:`modelo anterior`,modelSwitchedNextRequest:`Modelo alterado: {{from}} → {{to}}. Ativo na próxima solicitação ao LLM.`,modelSwitchedRunActive:`Modelo alterado: {{from}} → {{to}}. Ativo na próxima solicitação ao LLM; a execução atual continua sem reiniciar.`,fallbackExists:`O perfil de fallback "{{name}}" já existe`,selectProviderModelFirst:`Selecione um provedor e um modelo primeiro`,defaultProfileCreated:`Perfil de fallback padrão criado`,profileEmpty:`O perfil de fallback "{{name}}" está vazio`,leaderSetFrom:`Líder definido a partir de {{name}}`,modelSwitchTimeout:`Troca de modelo expirou. Por favor, tente novamente.`},b={workbenchHeading:`Aparência do workbench`,workbenchHint:`Alterna a visibilidade das superfícies do workbench na vista de chat.`,showModelReasoningLabel:`Mostrar raciocínio do modelo`,showModelReasoningHint:`Renderiza blocos de raciocínio/thinking do LLM no histórico do chat (paridade com TUI).`,showAgentSwarmPanelLabel:`Painel agent swarm`,showAgentSwarmPanelHint:`Controla onde o painel agent swarm (fleet + fila de missões) é exibido.`,swarmPanelBottom:`Painel inferior`,swarmPanelSidebar:`Barra lateral direita`,swarmPanelOff:`Desativado`,titleAnimationLabel:`Animação do título`,titleAnimationHint:`Anima o título do terminal/aba com o estado de execução (paridade com TUI).`,statusChipHeading:`Chip de status e barra de status`,statusChipHint:`Estilo visual para a barra de status TUI/CLI e o chip de trabalho.`,thinkingWordLabel:`Palavra de raciocínio`,thinkingWordHint:`Palavra curta única exibida no chip de status TUI enquanto o agente trabalha.`,statuslineModeLabel:`Modo da barra de status`,statuslineModeHint:`Densidade da barra de status TUI.`,statuslineModeMinimum:`Mínimo`,statuslineModeDetailed:`Detalhado`,statuslineModeNoColor:`Sem cor`,animationStyleLabel:`Estilo de animação`,animationStyleHint:`Animação do chip de trabalho TUI.`,animationStyleRainbow:`Arco-íris`,animationStyleWave:`Onda`,animationStylePulse:`Pulso`,animationStyleDots:`Pontos`,animationStyleBreathe:`Respiração`,animationStyleCycle:`Ciclo`,refineHeading:`Contagem regressiva do refine e diffs`,refineHint:`Configura a contagem regressiva pré-refine e o limite mínimo de arquivos para o rodapé de resumo multi-diff.`,preRefineSecondsLabel:`Contagem regressiva pré-refine`,preRefineSecondsHint:`Período de carência antes do refiner iniciar (segundos). 0 = pula a contagem e refina imediatamente.`,preRefineSecondsPresets:`Predefinições: {{presets}} segundos (0 = desativado).`,multiDiffSummaryLabel:`Resumo multi-diff`,multiDiffSummaryHint:`Número mínimo de arquivos antes que o rodapé agregado 'N arquivos · +X -Y' apareça acima dos blocos por arquivo.`,multiDiffSummaryPresets:`Predefinições: {{presets}} (0 = desativado).`,memoryHeading:`Ferramenta read e injeção de memória SAGE`,memoryHint:`Alterna o que a ferramenta read inclui e quando blocos de memória SAGE aparecem nos resultados de ferramentas.`,readSymbolsLabel:`Ler símbolos`,readSymbolsHint:`Quando ativo, a ferramenta read inclui símbolos do índice do código junto com o conteúdo do arquivo.`,showSageMemoryInjectLabel:`Mostrar SAGE Memory Inject`,showSageMemoryInjectHint:`Quando ativo, mostra blocos de injeção de memória SAGE nos resultados de ferramentas.`,sageMemoryInjectThresholdLabel:`Limite de SAGE Memory Inject`,sageMemoryInjectThresholdHint:`Força mínima de relação necessária para uma memória SAGE injetada (0.72–0.95).`,footnote:`Estas configurações refletem o picker /settings do TUI. Alternâncias aplicam-se ao vivo; alguns campos exigem reinício da sessão.`},x={title:e,subtitle:t,tabs:n,model:r,connection:i,provider:a,mcp:o,allowlist:s,oauth:c,general:l,agent:u,execution:d,fallbacks:f,fleet:p,integrations:m,features:h,context:g,logs:_,security:v,toast:y,display:b};export{u as agent,s as allowlist,i as connection,g as context,x as default,b as display,d as execution,f as fallbacks,h as features,p as fleet,l as general,m as integrations,_ as logs,o as mcp,r as model,c as oauth,a as provider,v as security,t as subtitle,n as tabs,e as title,y as toast};