@wrongstack/webui 0.310.0 → 0.310.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 (58) hide show
  1. package/dist/assets/{AgentRosterView-D65_58jj.js → AgentRosterView-DAci8zSJ.js} +1 -1
  2. package/dist/assets/{AnalyticsDashboard-DOc43lwL.js → AnalyticsDashboard-BltY_7sZ.js} +1 -1
  3. package/dist/assets/{AudienceMemoryPanel-BLpp2tHi.js → AudienceMemoryPanel-uMGOcvUl.js} +1 -1
  4. package/dist/assets/{ChangesView-DgBKkM9W.js → ChangesView-QgbkAV21.js} +1 -1
  5. package/dist/assets/{ChronicleDashboard-DTQBK3sz.js → ChronicleDashboard-CjC3Tpdp.js} +1 -1
  6. package/dist/assets/{CodeEditor-C_i1OpFY.js → CodeEditor-BjIBUPk8.js} +1 -1
  7. package/dist/assets/{CodeMap-DAiZc6KR.js → CodeMap-BpOQHHcp.js} +1 -1
  8. package/dist/assets/{ConfirmModal-e_pAJNXI.js → ConfirmModal-DNp4NzCY.js} +1 -1
  9. package/dist/assets/{CronJobsPanel-Bd9yYc54.js → CronJobsPanel-DyxLGNzd.js} +1 -1
  10. package/dist/assets/{DeadCodeScanPanel-DX6kTHMe.js → DeadCodeScanPanel-Qf3HU4hj.js} +1 -1
  11. package/dist/assets/{DebugDashboard-DzZ2VgUh.js → DebugDashboard-D0nD5Mi-.js} +1 -1
  12. package/dist/assets/{DesignGalleryView-C6V81Ve6.js → DesignGalleryView-CzSTqD9U.js} +1 -1
  13. package/dist/assets/{GoalView-D8IvL8gu.js → GoalView-CZHQeAKT.js} +1 -1
  14. package/dist/assets/{KanbanView-CgAYUWMt.js → KanbanView-DRox56Vn.js} +1 -1
  15. package/dist/assets/{MailboxDetailView-DVhX5QJL.js → MailboxDetailView-D6Ywy9n_.js} +1 -1
  16. package/dist/assets/{MemoryDrawer-8sFKIDFT.js → MemoryDrawer--0NW-5zb.js} +1 -1
  17. package/dist/assets/{MemoryManager-UVJcZ8F1.js → MemoryManager-Dpsvz_n_.js} +1 -1
  18. package/dist/assets/{ModelPicker-BX3TyLGh.js → ModelPicker-CBQqO9xG.js} +1 -1
  19. package/dist/assets/{OfficeMapPanel-CGquZdpA.js → OfficeMapPanel-D1oaHb4z.js} +1 -1
  20. package/dist/assets/{ProcessMonitor-DWRyMBcK.js → ProcessMonitor-Bhu8vdfD.js} +1 -1
  21. package/dist/assets/{PromptJournalView-D7cxTV4b.js → PromptJournalView-C1-hyXix.js} +1 -1
  22. package/dist/assets/{QueuePanel-BHC0oZuW.js → QueuePanel-CuDxuazR.js} +1 -1
  23. package/dist/assets/{RefreshDebugView-CYtfPKpz.js → RefreshDebugView-BxVmfUp2.js} +1 -1
  24. package/dist/assets/{RequirementIntakeView-CqK3EO7I.js → RequirementIntakeView-BiEvDV41.js} +1 -1
  25. package/dist/assets/{SageTabs-twWj7FY5.js → SageTabs-BE4m8VUY.js} +2 -2
  26. package/dist/assets/{SddFlowGraph-DRoJjwE7.js → SddFlowGraph-_8Xuc_cU.js} +1 -1
  27. package/dist/assets/{SddHub-GEtMx-VT.js → SddHub-B2kE8AiT.js} +1 -1
  28. package/dist/assets/{SessionInspectView-Bj3lSgGC.js → SessionInspectView-DOLLUo3T.js} +1 -1
  29. package/dist/assets/{SessionList-Q2e5-_66.js → SessionList-BhXjS40z.js} +1 -1
  30. package/dist/assets/{SessionsDashboard-zMKgGHVE.js → SessionsDashboard-tfMU0z-y.js} +1 -1
  31. package/dist/assets/{SetupScreen-OTuQXHs_.js → SetupScreen-CXE-RhNU.js} +1 -1
  32. package/dist/assets/{SkillDetailView-DOuDqdnT.js → SkillDetailView-DCkPQZ5H.js} +1 -1
  33. package/dist/assets/{SpecsView-DCXc8NKW.js → SpecsView-DKAxgGNr.js} +1 -1
  34. package/dist/assets/{TechStackView-DBYyTF6H.js → TechStackView-99ogOMkD.js} +1 -1
  35. package/dist/assets/{TerminalPanel-D8ZfgplP.js → TerminalPanel-CUwCc0Hv.js} +1 -1
  36. package/dist/assets/{Toaster-tBe1ZrKx.js → Toaster-AH2vaxrX.js} +1 -1
  37. package/dist/assets/i18n-n_1tBMdC.js +2 -0
  38. package/dist/assets/{index-Cyhuj8ku.js → index-gKjRx1pQ.js} +4 -4
  39. package/dist/assets/{settings-DfID_cS9.js → settings-BhmwkYVs.js} +1 -1
  40. package/dist/assets/settings-BpSRCuSL.js +1 -0
  41. package/dist/assets/settings-BvbMvXxL.js +1 -0
  42. package/dist/assets/settings-Dk78XWnd.js +1 -0
  43. package/dist/assets/settings-Mh81dlWD.js +1 -0
  44. package/dist/assets/settings-_V6PolUx.js +1 -0
  45. package/dist/assets/settings-koX3yNr7.js +1 -0
  46. package/dist/assets/{stores-D9Ng0JyF.js → stores-d8rhzRAc.js} +1 -1
  47. package/dist/assets/{useWebSocket-B2jKc_G4.js → useWebSocket-Co9oG6EI.js} +1 -1
  48. package/dist/index.html +8 -8
  49. package/dist/index.js +91 -2
  50. package/dist/stores/local-prefs.d.ts +13 -0
  51. package/package.json +9 -9
  52. package/dist/assets/i18n-dLvHUYek.js +0 -2
  53. package/dist/assets/settings-B36QpLU8.js +0 -1
  54. package/dist/assets/settings-B8Hgh9_X.js +0 -1
  55. package/dist/assets/settings-B8uABeWU.js +0 -1
  56. package/dist/assets/settings-CSwU_zzD.js +0 -1
  57. package/dist/assets/settings-FXJ8SsEh.js +0 -1
  58. package/dist/assets/settings-RQKnX4dA.js +0 -1
package/dist/index.js CHANGED
@@ -188,7 +188,11 @@ var init_local_prefs = __esm({
188
188
  autoReviewMaxFilesPerBatch: 15,
189
189
  autoReviewMaxConcurrentReviews: 2,
190
190
  autoReviewCascadeOn: "off",
191
- pluginsEnabled: {}
191
+ pluginsEnabled: {},
192
+ // WrongProxy / WrongTrace. Master switch defaults to off so the feature
193
+ // ships silent; URL defaults to the dev-script daemon's documented port.
194
+ wrongProxyEnabled: false,
195
+ wrongProxyUrl: "http://localhost:8000"
192
196
  };
193
197
  useLocalPrefs = create()(
194
198
  persist(
@@ -203,7 +207,16 @@ var init_local_prefs = __esm({
203
207
  }),
204
208
  {
205
209
  name: "wrongstack-local-prefs",
206
- version: 15,
210
+ version: 16,
211
+ // v16 (2026-08-24): added WrongProxy / WrongTrace toggles. The
212
+ // master switch defaults to off (existing users see no behavior
213
+ // change); the URL defaults to http://localhost:8000 (the dev-script
214
+ // daemon port documented in the WRONGTRACE dev script). The probe
215
+ // in `proxy-probe.ts` only fires when the toggle is on, so existing
216
+ // users pay no cost. Older stores are backfilled via DEFAULTS spread
217
+ // + the explicit migration guard at the bottom; no remap is needed
218
+ // because the fields have no historical alias in localStorage.
219
+ //
207
220
  // v15 (2026-08-04): added autoCollapseInput (display toggle). Default
208
221
  // false — the chat input no longer auto-collapses under the history.
209
222
  // Older stores are backfilled via DEFAULTS spread + the explicit
@@ -303,6 +316,10 @@ var init_local_prefs = __esm({
303
316
  if (typeof p.breakerAutoKillResetMs !== "number") p.breakerAutoKillResetMs = 6e4;
304
317
  if (p.fsAccess !== "unrestricted" && p.fsAccess !== "project") p.fsAccess = "unrestricted";
305
318
  if (typeof p.debugStream !== "boolean") p.debugStream = false;
319
+ if (typeof p.wrongProxyEnabled !== "boolean") p.wrongProxyEnabled = false;
320
+ if (typeof p.wrongProxyUrl !== "string" || p.wrongProxyUrl.trim().length === 0) {
321
+ p.wrongProxyUrl = "http://localhost:8000";
322
+ }
306
323
  if (typeof p.chimeraEnabled !== "boolean") p.chimeraEnabled = true;
307
324
  if (typeof p.chimeraProvider !== "string") p.chimeraProvider = "";
308
325
  if (typeof p.chimeraModel !== "string") p.chimeraModel = "";
@@ -4743,6 +4760,12 @@ var require_settings = __commonJS({
4743
4760
  hqTokenLabel: "HQ client token",
4744
4761
  hqRawContentLabel: "Raw HQ content",
4745
4762
  hqRawContentHint: "Send raw content previews to HQ instead of redacted previews.",
4763
+ wrongProxyHeading: "WrongProxy / WrongTrace",
4764
+ wrongProxyEnabledLabel: "Route base URLs through the local proxy",
4765
+ wrongProxyEnabledHint: "When enabled, every provider's base URL is rewritten through the configured proxy (default http://localhost:8000/proxy/<host><path>). openai-codex is excluded \u2014 it talks directly to the ChatGPT backend with an OAuth-issued token.",
4766
+ wrongProxyUrlLabel: "Proxy URL",
4767
+ wrongProxyUrlHint: "Where the local proxy daemon listens. The system periodically probes <url>/api/health; an unreachable daemon disables rewriting without retrying every keystroke.",
4768
+ wrongProxyChangesApply: "Changes apply immediately to subsequent requests \u2014 no restart needed.",
4746
4769
  telegramHeading: "Telegram Notifications",
4747
4770
  telegramSessionEndLabel: "Session end",
4748
4771
  telegramSessionEndHint: "Send a summary when a session ends.",
@@ -9596,6 +9619,12 @@ var require_settings2 = __commonJS({
9596
9619
  hqTokenLabel: "HQ-Client-Token",
9597
9620
  hqRawContentLabel: "Rohe HQ-Inhalte",
9598
9621
  hqRawContentHint: "Rohe Inhaltsvorschauen statt geschw\xE4rzter Vorschauen an HQ senden.",
9622
+ wrongProxyHeading: "WrongProxy / WrongTrace",
9623
+ wrongProxyEnabledLabel: "Basis-URLs \xFCber den lokalen Proxy leiten",
9624
+ wrongProxyEnabledHint: "Wenn aktiviert, wird die Basis-URL jedes Anbieters \xFCber den konfigurierten Proxy umgeschrieben (Standard http://localhost:8000/proxy/<host><path>). openai-codex ist ausgeschlossen \u2014 es kommuniziert direkt mit dem ChatGPT-Backend \xFCber ein OAuth-Token.",
9625
+ wrongProxyUrlLabel: "Proxy-URL",
9626
+ wrongProxyUrlHint: "Wo der lokale Proxy-Daemon lauscht. Das System pr\xFCft periodisch <url>/api/health; ein nicht erreichbarer Daemon deaktiviert die Umschreibung, ohne bei jedem Tastendruck erneut zu versuchen.",
9627
+ wrongProxyChangesApply: "\xC4nderungen gelten sofort f\xFCr nachfolgende Anfragen \u2014 kein Neustart erforderlich.",
9599
9628
  telegramHeading: "Telegram-Benachrichtigungen",
9600
9629
  telegramSessionEndLabel: "Sitzungsende",
9601
9630
  telegramSessionEndHint: "Zusammenfassung senden, wenn eine Sitzung endet.",
@@ -14504,6 +14533,12 @@ var require_settings3 = __commonJS({
14504
14533
  hqTokenLabel: "Token de cliente HQ",
14505
14534
  hqRawContentLabel: "Contenido HQ sin procesar",
14506
14535
  hqRawContentHint: "Enviar vistas previas de contenido sin procesar a HQ en lugar de vistas previas redactadas.",
14536
+ wrongProxyHeading: "WrongProxy / WrongTrace",
14537
+ wrongProxyEnabledLabel: "Redirigir las URL base a trav\xE9s del proxy local",
14538
+ wrongProxyEnabledHint: "Cuando est\xE1 activado, la URL base de cada proveedor se reescribe a trav\xE9s del proxy configurado (por defecto http://localhost:8000/proxy/<host><path>). openai-codex queda excluido: habla directamente con el backend de ChatGPT mediante un token OAuth.",
14539
+ wrongProxyUrlLabel: "URL del proxy",
14540
+ wrongProxyUrlHint: "D\xF3nde escucha el daemon proxy local. El sistema sondea peri\xF3dicamente <url>/api/health; un daemon inalcanzable desactiva la reescritura sin reintentar en cada pulsaci\xF3n.",
14541
+ wrongProxyChangesApply: "Los cambios se aplican de inmediato a las solicitudes siguientes, sin necesidad de reiniciar.",
14507
14542
  telegramHeading: "Notificaciones de Telegram",
14508
14543
  telegramSessionEndLabel: "Fin de sesi\xF3n",
14509
14544
  telegramSessionEndHint: "Env\xEDa un resumen cuando termina una sesi\xF3n.",
@@ -19413,6 +19448,12 @@ var require_settings4 = __commonJS({
19413
19448
  hqTokenLabel: "Token client HQ",
19414
19449
  hqRawContentLabel: "Contenu HQ brut",
19415
19450
  hqRawContentHint: "Envoyer des aper\xE7us de contenu bruts \xE0 HQ au lieu d'aper\xE7us caviard\xE9s.",
19451
+ wrongProxyHeading: "WrongProxy / WrongTrace",
19452
+ wrongProxyEnabledLabel: "Router les URL de base via le proxy local",
19453
+ wrongProxyEnabledHint: "Lorsqu'il est activ\xE9, l'URL de base de chaque fournisseur est r\xE9\xE9crite via le proxy configur\xE9 (par d\xE9faut http://localhost:8000/proxy/<host><path>). openai-codex est exclu : il communique directement avec le backend ChatGPT avec un jeton OAuth.",
19454
+ wrongProxyUrlLabel: "URL du proxy",
19455
+ wrongProxyUrlHint: "O\xF9 \xE9coute le daemon proxy local. Le syst\xE8me interroge p\xE9riodiquement <url>/api/health ; un daemon injoignable d\xE9sactive la r\xE9\xE9criture sans r\xE9essayer \xE0 chaque frappe.",
19456
+ wrongProxyChangesApply: "Les modifications s'appliquent imm\xE9diatement aux requ\xEAtes suivantes \u2014 aucun red\xE9marrage requis.",
19416
19457
  telegramHeading: "Notifications Telegram",
19417
19458
  telegramSessionEndLabel: "Fin de session",
19418
19459
  telegramSessionEndHint: "Envoyer un r\xE9sum\xE9 quand une session se termine.",
@@ -24322,6 +24363,12 @@ var require_settings5 = __commonJS({
24322
24363
  hqTokenLabel: "Token client HQ",
24323
24364
  hqRawContentLabel: "Contenuto HQ grezzo",
24324
24365
  hqRawContentHint: "Invia anteprime di contenuto grezze a HQ invece di anteprime censurate.",
24366
+ wrongProxyHeading: "WrongProxy / WrongTrace",
24367
+ wrongProxyEnabledLabel: "Instrada gli URL base attraverso il proxy locale",
24368
+ wrongProxyEnabledHint: "Quando attivo, l'URL base di ogni provider viene riscritto attraverso il proxy configurato (predefinito http://localhost:8000/proxy/<host><path>). openai-codex \xE8 escluso: parla direttamente con il backend ChatGPT tramite un token OAuth.",
24369
+ wrongProxyUrlLabel: "URL del proxy",
24370
+ wrongProxyUrlHint: "Dove ascolta il daemon proxy locale. Il sistema verifica periodicamente <url>/api/health; un daemon irraggiungibile disabilita la riscrittura senza riprovare a ogni pressione di tasto.",
24371
+ wrongProxyChangesApply: "Le modifiche si applicano immediatamente alle richieste successive \u2014 nessun riavvio necessario.",
24325
24372
  telegramHeading: "Notifiche Telegram",
24326
24373
  telegramSessionEndLabel: "Fine sessione",
24327
24374
  telegramSessionEndHint: "Invia un riepilogo quando una sessione finisce.",
@@ -29230,6 +29277,12 @@ var require_settings6 = __commonJS({
29230
29277
  hqTokenLabel: "Token do cliente HQ",
29231
29278
  hqRawContentLabel: "Conte\xFAdo HQ bruto",
29232
29279
  hqRawContentHint: "Enviar pr\xE9-visualiza\xE7\xF5es de conte\xFAdo brutas para HQ em vez de pr\xE9-visualiza\xE7\xF5es redigidas.",
29280
+ wrongProxyHeading: "WrongProxy / WrongTrace",
29281
+ wrongProxyEnabledLabel: "Rotear URLs base pelo proxy local",
29282
+ wrongProxyEnabledHint: "Quando ativado, a URL base de cada provedor \xE9 reescrita pelo proxy configurado (padr\xE3o http://localhost:8000/proxy/<host><path>). openai-codex \xE9 exclu\xEDdo \u2014 ele fala diretamente com o backend do ChatGPT usando um token OAuth.",
29283
+ wrongProxyUrlLabel: "URL do proxy",
29284
+ wrongProxyUrlHint: "Onde o daemon proxy local escuta. O sistema verifica periodicamente <url>/api/health; um daemon inacess\xEDvel desativa a reescrita sem tentar novamente a cada tecla.",
29285
+ wrongProxyChangesApply: "As altera\xE7\xF5es se aplicam imediatamente \xE0s pr\xF3ximas requisi\xE7\xF5es \u2014 sem necessidade de reiniciar.",
29233
29286
  telegramHeading: "Notifica\xE7\xF5es do Telegram",
29234
29287
  telegramSessionEndLabel: "Fim de sess\xE3o",
29235
29288
  telegramSessionEndHint: "Envia um resumo quando uma sess\xE3o termina.",
@@ -34138,6 +34191,12 @@ var require_settings7 = __commonJS({
34138
34191
  hqTokenLabel: "HQ istemci token\u0131",
34139
34192
  hqRawContentLabel: "Ham HQ i\xE7eri\u011Fi",
34140
34193
  hqRawContentHint: "HQ'ya sans\xFCrlenmi\u015F \xF6nizlemeler yerine ham i\xE7erik \xF6nizlemeleri g\xF6nder.",
34194
+ wrongProxyHeading: "WrongProxy / WrongTrace",
34195
+ wrongProxyEnabledLabel: "Temel URL'leri yerel proxy \xFCzerinden y\xF6nlendir",
34196
+ wrongProxyEnabledHint: "Etkinle\u015Ftirildi\u011Finde, her sa\u011Flay\u0131c\u0131n\u0131n temel URL'si yap\u0131land\u0131r\u0131lm\u0131\u015F proxy \xFCzerinden yeniden yaz\u0131l\u0131r (varsay\u0131lan http://localhost:8000/proxy/<host><path>). openai-codex hari\xE7 tutulur \u2014 OAuth belirteciyle do\u011Frudan ChatGPT arka ucuyla konu\u015Fur.",
34197
+ wrongProxyUrlLabel: "Proxy URL'si",
34198
+ wrongProxyUrlHint: "Yerel proxy daemon'unun dinledi\u011Fi adres. Sistem periyodik olarak <url>/api/health'i yoklar; ula\u015F\u0131lamayan daemon, her tu\u015Fa bas\u0131\u015Fta yeniden denemeden yeniden yazmay\u0131 devre d\u0131\u015F\u0131 b\u0131rak\u0131r.",
34199
+ wrongProxyChangesApply: "De\u011Fi\u015Fiklikler sonraki isteklere an\u0131nda uygulan\u0131r \u2014 yeniden ba\u015Flatma gerekmez.",
34141
34200
  telegramHeading: "Telegram Bildirimleri",
34142
34201
  telegramSessionEndLabel: "Oturum sonu",
34143
34202
  telegramSessionEndHint: "Bir oturum bitti\u011Finde \xF6zet g\xF6nder.",
@@ -113528,6 +113587,36 @@ function IntegrationsSection({ syncPref }) {
113528
113587
  const { t } = useTranslation();
113529
113588
  const localPrefs = useLocalPrefs();
113530
113589
  return /* @__PURE__ */ jsxs121("div", { className: "space-y-6", children: [
113590
+ /* @__PURE__ */ jsxs121("div", { className: "rounded-xl border border-border/70 bg-card/80 p-5 shadow-sm", children: [
113591
+ /* @__PURE__ */ jsxs121("div", { className: "flex items-start gap-3 mb-4", children: [
113592
+ /* @__PURE__ */ jsx128("span", { className: "flex h-9 w-9 shrink-0 items-center justify-center rounded-lg border border-primary/20 bg-primary/10 text-primary", children: /* @__PURE__ */ jsx128(Server3, { className: "h-5 w-5" }) }),
113593
+ /* @__PURE__ */ jsx128("div", { children: /* @__PURE__ */ jsx128("h3", { className: "text-sm font-semibold", children: t("settings:integrations.wrongProxyHeading") }) })
113594
+ ] }),
113595
+ /* @__PURE__ */ jsxs121("div", { className: "space-y-3", children: [
113596
+ /* @__PURE__ */ jsx128(
113597
+ PreferenceToggle,
113598
+ {
113599
+ label: t("settings:integrations.wrongProxyEnabledLabel"),
113600
+ hint: t("settings:integrations.wrongProxyEnabledHint"),
113601
+ value: localPrefs.wrongProxyEnabled,
113602
+ onChange: () => syncPref("wrongProxyEnabled", !localPrefs.wrongProxyEnabled)
113603
+ }
113604
+ ),
113605
+ /* @__PURE__ */ jsxs121("div", { className: "space-y-1", children: [
113606
+ /* @__PURE__ */ jsx128("span", { className: "text-sm font-medium", children: t("settings:integrations.wrongProxyUrlLabel") }),
113607
+ /* @__PURE__ */ jsx128(
113608
+ Input,
113609
+ {
113610
+ value: localPrefs.wrongProxyUrl,
113611
+ placeholder: "http://localhost:8000",
113612
+ onChange: (e) => syncPref("wrongProxyUrl", e.target.value)
113613
+ }
113614
+ ),
113615
+ /* @__PURE__ */ jsx128("p", { className: "text-xs text-muted-foreground", children: t("settings:integrations.wrongProxyUrlHint") })
113616
+ ] }),
113617
+ /* @__PURE__ */ jsx128("p", { className: "text-xs text-muted-foreground", children: t("settings:integrations.wrongProxyChangesApply") })
113618
+ ] })
113619
+ ] }),
113531
113620
  /* @__PURE__ */ jsxs121("div", { className: "rounded-xl border border-border/70 bg-card/80 p-5 shadow-sm", children: [
113532
113621
  /* @__PURE__ */ jsxs121("div", { className: "flex items-start gap-3 mb-4", children: [
113533
113622
  /* @__PURE__ */ jsx128("span", { className: "flex h-9 w-9 shrink-0 items-center justify-center rounded-lg border border-primary/20 bg-primary/10 text-primary", children: /* @__PURE__ */ jsx128(Server3, { className: "h-5 w-5" }) }),
@@ -192,6 +192,19 @@ export interface LocalPrefs {
192
192
  autoReviewMaxConcurrentReviews: number;
193
193
  /** Cascade severity threshold: when a review finds findings at or above this level, spawn follow-up agents. */
194
194
  autoReviewCascadeOn: 'off' | 'critical' | 'high';
195
+ /**
196
+ * Master switch. When true AND the daemon at `wrongProxyUrl` is
197
+ * reachable, every provider's base URL flows through
198
+ * `${wrongProxyUrl}/proxy/<host><path>`. Excluded providers
199
+ * (openai-codex) flow through unchanged.
200
+ */
201
+ wrongProxyEnabled: boolean;
202
+ /**
203
+ * Where the local proxy daemon listens. Default `http://localhost:8000`.
204
+ * User-editable via WebUI `IntegrationsSection` and TUI SettingsPicker.
205
+ * Periodic probe targets `<wrongProxyUrl>/api/health`; 2xx → active.
206
+ */
207
+ wrongProxyUrl: string;
195
208
  set: (patch: Partial<LocalPrefs>) => void;
196
209
  reset: () => void;
197
210
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrongstack/webui",
3
- "version": "0.310.0",
3
+ "version": "0.310.1",
4
4
  "license": "MIT",
5
5
  "description": "Browser-based WebUI for WrongStack — React + Vite frontend. The WebSocket backend lives in the separate @wrongstack/webui-server package (extracted in PR #018b to remove the CLI -> @wrongstack/webui/server cross-package edge).",
6
6
  "keywords": [
@@ -76,13 +76,13 @@
76
76
  "tailwind-merge": "^3.6.0",
77
77
  "virtua": "^0.50.4",
78
78
  "zustand": "^5.0.15",
79
- "@wrongstack/core": "0.310.0",
80
- "@wrongstack/kanban": "0.310.0",
81
- "@wrongstack/tools": "0.310.0",
82
- "@wrongstack/providers": "0.310.0",
83
- "@wrongstack/plugins": "0.310.0",
84
- "@wrongstack/webui-protocol": "0.310.0",
85
- "@wrongstack/webui-server": "0.310.0"
79
+ "@wrongstack/core": "0.310.1",
80
+ "@wrongstack/providers": "0.310.1",
81
+ "@wrongstack/tools": "0.310.1",
82
+ "@wrongstack/webui-protocol": "0.310.1",
83
+ "@wrongstack/webui-server": "0.310.1",
84
+ "@wrongstack/kanban": "0.310.1",
85
+ "@wrongstack/plugins": "0.310.1"
86
86
  },
87
87
  "optionalDependencies": {
88
88
  "node-pty": "1.2.0-beta.14"
@@ -104,7 +104,7 @@
104
104
  "typescript": "^7.0.2",
105
105
  "vite": "^8.2.2",
106
106
  "vitest": "^4.1.11",
107
- "@wrongstack/sdd": "0.310.0"
107
+ "@wrongstack/sdd": "0.310.1"
108
108
  },
109
109
  "scripts": {
110
110
  "dev": "vite",
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/activity-COQ9xSFu.js","assets/rolldown-runtime-hePW80VL.js","assets/chat-CzaGXz_W.js","assets/commandPalette-BovBiPec.js","assets/common-BBHmIHQW.js","assets/settings-DfID_cS9.js","assets/setup-DfcCCvUO.js","assets/toasts-DOfXc7Rt.js"])))=>i.map(i=>d[i]);
2
- import{Ha as e,Ra as t,Ua as n,Va as r,za as i}from"./vendor-DZ9_OO6N.js";import{t as a}from"./activity-COQ9xSFu.js";import{t as o}from"./chat-CzaGXz_W.js";import{t as s}from"./commandPalette-BovBiPec.js";import{t as c}from"./common-BBHmIHQW.js";import{t as l}from"./settings-DfID_cS9.js";import{t as u}from"./setup-DfcCCvUO.js";import{t as d}from"./toasts-DOfXc7Rt.js";import{s as f}from"./monaco-BCqJp2xW.js";var p=(e,t,n)=>{let r=t.lastIndexOf(`?`),i=e[r===-1||r<t.lastIndexOf(`/`)?t:t.slice(0,r)];return i?typeof i==`function`?i():Promise.resolve(i):new Promise((e,r)=>{(typeof queueMicrotask==`function`?queueMicrotask:setTimeout)(r.bind(null,Error(`Unknown variable dynamic import: `+t+(t.split(`/`).length===n?``:`. Note that variables only represent file names one level deep.`))))})},m=[`en`,`tr`,`de`,`fr`,`it`,`es`,`pt-BR`],h=[{code:`en`,name:`English`},{code:`tr`,name:`Türkçe`},{code:`de`,name:`Deutsch`},{code:`fr`,name:`Français`},{code:`it`,name:`Italiano`},{code:`es`,name:`Español`},{code:`pt-BR`,name:`Português (Brasil)`}],g=new Set(m);function _(){return typeof navigator>`u`||!navigator.language?`en`:y(navigator.language)}function v(e){return!e||typeof e!=`string`?_():y(e)}function y(e){let t=e.trim().toLowerCase();if(!t)return`en`;if(g.has(t))return t;let n=t.split(`-`)[0];return n&&g.has(n)?n:n===`pt`?`pt-BR`:`en`}var b={autonomy:`auto`,autonomyDelayMs:45e3,autoProceedMaxIterations:50,yolo:!0,maxIterations:500,chime:!1,confirmExit:!0,fleetChatVerbosity:`off`,nextPrediction:!1,nextStepsTool:!1,fallbackModels:[],fallbackProfiles:{},favoriteModels:[],favoriteModelsOnly:!1,modelMatrix:{},fallbackAuto:!0,modelAvailabilitySchedule:[],featureMcp:!0,featurePlugins:!0,featureMemory:!0,featureSkills:!0,featureModelsRegistry:!0,indexOnStart:!0,contextAutoCompact:!0,contextStrategy:`hybrid`,contextMode:`balanced`,tokenSavingTier:`auto`,maxConcurrent:10,titleAnimation:!0,logLevel:`info`,auditLevel:`standard`,enhanceEnabled:!0,enhanceDelayMs:6e4,enhanceCountdownMs:3e3,enhanceLanguage:`original`,refinerProvider:``,refinerModel:``,refinerFallbackProfile:``,thinkingWord:`thinking`,statuslineMode:`minimum`,animationStyle:`rainbow`,showThinkingLogs:!0,groupToolCalls:!0,autoCollapseInput:!1,showModelReasoning:!0,showAgentSwarmPanel:`bottom`,allowOutsideProjectRoot:!0,reasoningMode:`auto`,reasoningEffort:`high`,reasoningPreserve:!1,cacheTtl:`default`,breakerEnabled:!1,breakerAutoKillResetMs:6e4,fsAccess:`unrestricted`,debugStream:!1,hqEnabled:!1,hqUrl:``,hqToken:``,hqRawContent:!1,tgConfigured:!1,tgSessionEnd:!1,tgDelegate:!0,tgLongToolMs:3e4,uiLocale:_(),chimeraAutoFix:`off`,readSymbols:!1,showSageMemoryInject:!1,sageMemoryInjectThreshold:.85,preRefineSeconds:3,multiDiffSummaryThreshold:5,chimeraEnabled:!0,chimeraProvider:``,chimeraModel:``,chimeraMaxFiles:15,autoReviewEnabled:!1,autoReviewProvider:``,autoReviewModel:``,autoReviewFallbackProfile:``,autoReviewModelSelection:`round-robin`,autoReviewFallbackModels:[],autoReviewDebounceMs:15e3,autoReviewMaxFilesPerBatch:15,autoReviewMaxConcurrentReviews:2,autoReviewCascadeOn:`off`,pluginsEnabled:{}},x=i()(t(e=>({...b,set:t=>e(t),reset:()=>e(b)}),{name:`wrongstack-local-prefs`,version:15,migrate:(e,t)=>{let n=e??{};return t<12&&n.autoReviewDebounceMs===5e3&&(n.autoReviewDebounceMs=15e3),typeof n.fleetChatVerbosity!=`string`&&(n.fleetChatVerbosity=n.streamFleet===!0?`full`:(n.streamFleet,`off`),delete n.streamFleet),n.fleetChatVerbosity!==`off`&&n.fleetChatVerbosity!==`full`&&(n.fleetChatVerbosity=`off`),[`hybrid`,`intelligent`,`selective`].includes(n.contextStrategy)||(n.contextStrategy=`hybrid`),n.auditLevel===`verbose`&&(n.auditLevel=`full`),[`minimal`,`standard`,`full`].includes(n.auditLevel)||(n.auditLevel=`standard`),typeof n.autoProceedMaxIterations!=`number`&&(n.autoProceedMaxIterations=50),(!n.fallbackProfiles||typeof n.fallbackProfiles!=`object`||Array.isArray(n.fallbackProfiles))&&(n.fallbackProfiles={}),Array.isArray(n.favoriteModels)||(n.favoriteModels=[]),typeof n.favoriteModelsOnly!=`boolean`&&(n.favoriteModelsOnly=!1),Array.isArray(n.modelAvailabilitySchedule)||(n.modelAvailabilitySchedule=[]),(!n.modelMatrix||typeof n.modelMatrix!=`object`||Array.isArray(n.modelMatrix))&&(n.modelMatrix={}),(typeof n.uiLocale!=`string`||!n.uiLocale)&&(n.uiLocale=_()),typeof n.breakerEnabled!=`boolean`&&(n.breakerEnabled=!1),typeof n.breakerAutoKillResetMs!=`number`&&(n.breakerAutoKillResetMs=6e4),n.fsAccess!==`unrestricted`&&n.fsAccess!==`project`&&(n.fsAccess=`unrestricted`),typeof n.debugStream!=`boolean`&&(n.debugStream=!1),typeof n.chimeraEnabled!=`boolean`&&(n.chimeraEnabled=!0),typeof n.chimeraProvider!=`string`&&(n.chimeraProvider=``),typeof n.chimeraModel!=`string`&&(n.chimeraModel=``),n.chimeraAutoFix!==`off`&&n.chimeraAutoFix!==`ask`&&n.chimeraAutoFix!==`auto`&&(n.chimeraAutoFix=`off`),(typeof n.chimeraMaxFiles!=`number`||!Number.isFinite(n.chimeraMaxFiles)||n.chimeraMaxFiles<1)&&(n.chimeraMaxFiles=15),typeof n.autoReviewEnabled!=`boolean`&&(n.autoReviewEnabled=!1),typeof n.autoReviewProvider!=`string`&&(n.autoReviewProvider=``),typeof n.autoReviewModel!=`string`&&(n.autoReviewModel=``),typeof n.autoReviewFallbackProfile!=`string`&&(n.autoReviewFallbackProfile=``),n.autoReviewModelSelection!==`round-robin`&&n.autoReviewModelSelection!==`random`&&(n.autoReviewModelSelection=`round-robin`),Array.isArray(n.autoReviewFallbackModels)||(n.autoReviewFallbackModels=[]),(typeof n.autoReviewDebounceMs!=`number`||!Number.isFinite(n.autoReviewDebounceMs)||n.autoReviewDebounceMs<0)&&(n.autoReviewDebounceMs=15e3),(typeof n.autoReviewMaxFilesPerBatch!=`number`||!Number.isFinite(n.autoReviewMaxFilesPerBatch)||n.autoReviewMaxFilesPerBatch<1)&&(n.autoReviewMaxFilesPerBatch=15),(typeof n.autoReviewMaxConcurrentReviews!=`number`||!Number.isFinite(n.autoReviewMaxConcurrentReviews)||n.autoReviewMaxConcurrentReviews<1)&&(n.autoReviewMaxConcurrentReviews=2),n.autoReviewCascadeOn!==`off`&&n.autoReviewCascadeOn!==`critical`&&n.autoReviewCascadeOn!==`high`&&(n.autoReviewCascadeOn=`off`),typeof n.showModelReasoning!=`boolean`&&(n.showModelReasoning=!0),typeof n.autoCollapseInput!=`boolean`&&(n.autoCollapseInput=!1),typeof n.showAgentSwarmPanel==`boolean`?n.showAgentSwarmPanel=n.showAgentSwarmPanel?`bottom`:`off`:(typeof n.showAgentSwarmPanel!=`string`||![`bottom`,`sidebar`,`off`].includes(n.showAgentSwarmPanel))&&(n.showAgentSwarmPanel=`bottom`),typeof n.allowOutsideProjectRoot!=`boolean`&&(n.allowOutsideProjectRoot=!0),typeof n.readSymbols!=`boolean`&&(n.readSymbols=!1),typeof n.showSageMemoryInject!=`boolean`&&(n.showSageMemoryInject=!1),(typeof n.sageMemoryInjectThreshold!=`number`||!Number.isFinite(n.sageMemoryInjectThreshold)||n.sageMemoryInjectThreshold<0||n.sageMemoryInjectThreshold>1)&&(n.sageMemoryInjectThreshold=.85),(typeof n.preRefineSeconds!=`number`||!Number.isFinite(n.preRefineSeconds)||n.preRefineSeconds<0)&&(n.preRefineSeconds=3),(typeof n.multiDiffSummaryThreshold!=`number`||!Number.isFinite(n.multiDiffSummaryThreshold)||n.multiDiffSummaryThreshold<0)&&(n.multiDiffSummaryThreshold=5),n},partialize:e=>{let{hqToken:t,...n}=e;return n},merge:(e,t)=>{let{hqToken:n,...r}=e??{};return{...t,...r,hqToken:``}}})),S=[`common`,`activity`,`chat`,`commandPalette`,`settings`,`setup`,`toasts`];function C(){try{return v(x.getState().uiLocale)}catch{return`en`}}n.use(r).use(e((e,t)=>p(Object.assign({"./locales/de/activity.json":()=>f(()=>import(`./activity-D3ZccGOh.js`),[]),"./locales/de/chat.json":()=>f(()=>import(`./chat-BnkVCZ3Q.js`),[]),"./locales/de/commandPalette.json":()=>f(()=>import(`./commandPalette-aaAou3Tl.js`),[]),"./locales/de/common.json":()=>f(()=>import(`./common-C3PzxyXg.js`),[]),"./locales/de/settings.json":()=>f(()=>import(`./settings-B36QpLU8.js`),[]),"./locales/de/setup.json":()=>f(()=>import(`./setup-DD8rKpQU.js`),[]),"./locales/de/toasts.json":()=>f(()=>import(`./toasts-CFzweRH5.js`),[]),"./locales/en/activity.json":()=>f(()=>import(`./activity-COQ9xSFu.js`).then(e=>e.n),__vite__mapDeps([0,1])),"./locales/en/chat.json":()=>f(()=>import(`./chat-CzaGXz_W.js`).then(e=>e.n),__vite__mapDeps([2,1])),"./locales/en/commandPalette.json":()=>f(()=>import(`./commandPalette-BovBiPec.js`).then(e=>e.n),__vite__mapDeps([3,1])),"./locales/en/common.json":()=>f(()=>import(`./common-BBHmIHQW.js`).then(e=>e.n),__vite__mapDeps([4,1])),"./locales/en/settings.json":()=>f(()=>import(`./settings-DfID_cS9.js`).then(e=>e.n),__vite__mapDeps([5,1])),"./locales/en/setup.json":()=>f(()=>import(`./setup-DfcCCvUO.js`).then(e=>e.n),__vite__mapDeps([6,1])),"./locales/en/toasts.json":()=>f(()=>import(`./toasts-DOfXc7Rt.js`).then(e=>e.n),__vite__mapDeps([7,1])),"./locales/es/activity.json":()=>f(()=>import(`./activity-YMES6OPI.js`),[]),"./locales/es/chat.json":()=>f(()=>import(`./chat-BPuAsrkF.js`),[]),"./locales/es/commandPalette.json":()=>f(()=>import(`./commandPalette-Nlxs0V7J.js`),[]),"./locales/es/common.json":()=>f(()=>import(`./common-CUWL8eNX.js`),[]),"./locales/es/settings.json":()=>f(()=>import(`./settings-B8uABeWU.js`),[]),"./locales/es/setup.json":()=>f(()=>import(`./setup-COxU-AT_.js`),[]),"./locales/es/toasts.json":()=>f(()=>import(`./toasts-BwQJwYLe.js`),[]),"./locales/fr/activity.json":()=>f(()=>import(`./activity-zlMMaNE1.js`),[]),"./locales/fr/chat.json":()=>f(()=>import(`./chat-BfQBSiII.js`),[]),"./locales/fr/commandPalette.json":()=>f(()=>import(`./commandPalette-Dfk74u87.js`),[]),"./locales/fr/common.json":()=>f(()=>import(`./common-xPePelft.js`),[]),"./locales/fr/settings.json":()=>f(()=>import(`./settings-RQKnX4dA.js`),[]),"./locales/fr/setup.json":()=>f(()=>import(`./setup-CMteRkTs.js`),[]),"./locales/fr/toasts.json":()=>f(()=>import(`./toasts-BCDGDcyq.js`),[]),"./locales/it/activity.json":()=>f(()=>import(`./activity-BA8C9ueU.js`),[]),"./locales/it/chat.json":()=>f(()=>import(`./chat-CR2B97dj.js`),[]),"./locales/it/commandPalette.json":()=>f(()=>import(`./commandPalette-CUh_kgfp.js`),[]),"./locales/it/common.json":()=>f(()=>import(`./common-DuR5FTPN.js`),[]),"./locales/it/settings.json":()=>f(()=>import(`./settings-CSwU_zzD.js`),[]),"./locales/it/setup.json":()=>f(()=>import(`./setup-pPW1kVR_.js`),[]),"./locales/it/toasts.json":()=>f(()=>import(`./toasts-Dm12Nq8t.js`),[]),"./locales/pt-BR/activity.json":()=>f(()=>import(`./activity-CuJqhGz7.js`),[]),"./locales/pt-BR/chat.json":()=>f(()=>import(`./chat-DResBrkV.js`),[]),"./locales/pt-BR/commandPalette.json":()=>f(()=>import(`./commandPalette-tFxIIhvU.js`),[]),"./locales/pt-BR/common.json":()=>f(()=>import(`./common-CvSB5NM3.js`),[]),"./locales/pt-BR/settings.json":()=>f(()=>import(`./settings-B8Hgh9_X.js`),[]),"./locales/pt-BR/setup.json":()=>f(()=>import(`./setup-BOYK0I6-.js`),[]),"./locales/pt-BR/toasts.json":()=>f(()=>import(`./toasts-frBt6fvE.js`),[]),"./locales/tr/activity.json":()=>f(()=>import(`./activity-BYnOci5N.js`),[]),"./locales/tr/chat.json":()=>f(()=>import(`./chat-Di8o0wDz.js`),[]),"./locales/tr/commandPalette.json":()=>f(()=>import(`./commandPalette-CGMq-qlP.js`),[]),"./locales/tr/common.json":()=>f(()=>import(`./common-DT2FL9xN.js`),[]),"./locales/tr/settings.json":()=>f(()=>import(`./settings-FXJ8SsEh.js`),[]),"./locales/tr/setup.json":()=>f(()=>import(`./setup-Bd23KLtt.js`),[]),"./locales/tr/toasts.json":()=>f(()=>import(`./toasts-DDYQsJV8.js`),[])}),`./locales/${e}/${t}.json`,4))).init({lng:C(),fallbackLng:`en`,supportedLngs:[...m],ns:[...S],defaultNS:`common`,partialBundledLanguages:!0,resources:{en:{common:c,activity:a,chat:o,commandPalette:s,settings:l,setup:u,toasts:d}},interpolation:{escapeValue:!1},react:{useSuspense:!1},returnNull:!1});function w(e){typeof document<`u`&&(document.documentElement.lang=e)}w(n.language||`en`),x.subscribe((e,t)=>{let r=e.uiLocale;r&&r!==t.uiLocale&&r!==n.language&&n.changeLanguage(r).then(()=>w(r))});function T(){window.wrongstackDesktopHost?.onLocaleChanged?.(e=>{if(!e)return;let t=v(e);if(t===n.language)return;let r=x.getState();r.uiLocale!==t&&r.set({uiLocale:t}),n.changeLanguage(t).then(()=>w(t))})}try{T()}catch{}export{h as n,x as t};
@@ -1 +0,0 @@
1
- var e=`Einstellungen`,t=`Konfiguriere jeden Aspekt deines Agenten-Arbeitsbereichs`,n={general:`Allgemein`,provider:`Anbieter`,connection:`Verbindungen`,agent:`Agent`,execution:`Ausführung`,fallbacks:`Fallbacks`,routing:`Routing`,fleet:`Flotte`,integrations:`Integrationen`,chimera:`Chimera`,context:`Kontext`,logs:`Protokolle`,security:`Sicherheit`,display:`Anzeige`,displayDesc:`Workbench-Optik, Status-Chip, Refine-Timer und Tool-/Memory-Injection-Schalter — spiegelt den TUI-SettingsPicker.`,generalDesc:`Darstellung, Sprache und Anzeigeeinstellungen — spiegelt die TUI-Einstellungsauswahl.`,providerDesc:`API-Schlüssel, gespeicherte Anbieter und der Anbieterkatalog.`,connectionDesc:`WebSocket-Server-URL und Verbindungsstatus.`,agentDesc:`Autonomie, Prompt-Verfeinerung, Reasoning und Modell-Routing.`,executionDesc:`Iterationslimits, Beenden-Verhalten und Prozess-Schutzschalter.`,fallbacksDesc:`Modell-Fallback-Kette, Favoriten und benannte Fallback-Profile.`,routingDesc:`Modell-Routing-Matrix pro Phase und Rolle.`,fleetDesc:`Gleichzeitige Subagenten, Streaming und Vorhersage nächster Schritte.`,integrationsDesc:`HQ-Client, MCP-Server und Telegram-Benachrichtigungen.`,chimeraDesc:`Konfiguration des Code-Review-Agents nach der Sitzung.`,contextDesc:`Feature-Flags, Kontextstrategie, Komprimierer und Plugin-Steuerung.`,logsDesc:`Protokollebene, Prüfdetails, Dateisystem-Zugriffsbereich und Debug-Stream.`,securityDesc:`Brain-Entscheidungskontrolle, Schatten-Agent und Tool-Zugriff.`},r={heading:`Modell`,loading:`Modelle werden geladen...`,notFound:`Keine Modelle für diesen Anbieter gefunden. Der Katalog könnte leer sein oder noch laden.`,selectProviderFirst:`Zuerst einen Anbieter wählen`,context:`{{count}}k Kontext`},i={wsUrlLabel:`WebSocket-Server-URL`,wsUrlPlaceholder:`ws://localhost:3456`,wsUrlHint:`URL des Agent-WebSocket-Servers. Der Server läuft neben dem CLI.`,startingHeading:`Den WebSocket-Server starten`,startingBody:`Für die Entwicklung ./dev.ps1 vom Repo-Root ausführen (optional zuvor WS_HOST/WS_PORT setzen). Andernfalls die WebUI über die CLI starten: wstack --webui.`,healthHeading:`Verbindungszustand`,healthHint:`Live-Bericht zu Besitz, Speicher, Warteschlange, Watcher und Latenz der Projektdienste.`,healthRefresh:`Aktualisieren`,healthLoading:`Dienste werden geprüft…`,healthUnknown:`Zustand unbekannt`,healthDisconnected:`Die WebUI-WebSocket-Verbindung ist getrennt.`,healthRestartRequired:`Backend einmal neu starten, um den Verbindungsbericht zu aktivieren.`,healthOptional:`Bei Bedarf`,endpointInvalidBadge:`Socket-Pfad zu lang`,endpointInvalidRemedy:`Der IPC-Socket-Pfad überschreitet die Längenbeschränkung dieser Plattform, daher kann der gemeinsame Daemon nicht gestartet werden. Abfragen fallen auf einen langsameren prozesslokalen Modus zurück. Abhilfe: Setzen Sie ein kürzeres TMPDIR (z. B. export TMPDIR=/tmp) und starten Sie WrongStack neu.`,healthCounts:`{{healthy}} gesund · {{attention}} beachten · {{sleeping}} inaktiv`,healthOverall:{healthy:`Erforderliche Dienste gesund`,degraded:`Erforderlicher Dienst eingeschränkt`,error:`Erforderlicher Dienst nicht verfügbar`},healthStatus:{healthy:`Gesund`,degraded:`Eingeschränkt`,offline:`Inaktiv`,unavailable:`Nicht verfügbar`,error:`Fehler`},services:{kanban:{label:`Kanban IPC`},mailbox:{label:`Mailbox IPC`}},serviceActionRestart:`Neustarten {{label}}`,webuiTransport:`WebUI-Transport`,serviceAutoRestarting:`Automatischer Neustart…`},a={savedProviderCount_one:`{{count}} Anbieter`,savedProviderCount_other:`{{count}} Anbieter`,keyCount_one:`{{count}} Schlüssel konfiguriert`,keyCount_other:`{{count}} Schlüssel konfiguriert`,activeKeyCount_one:`{{count}} aktiver Schlüssel`,activeKeyCount_other:`{{count}} aktive Schlüssel`,subscriptionHeading:`Abonnement-Anmeldung`,apiKeysHeading:`API-Schlüssel-Anbieter`,apiKeysBody:`Wähle einen Anbieter aus dem Katalog und füge einen API-Schlüssel hinzu oder verwalte gespeicherte Anbieter.`,tabCatalog:`Katalog`,tabSaved:`Gespeichert ({{count}})`,searchPlaceholder:`{{count}} Anbieter durchsuchen (Name / ID / Familie)…`,loadingCatalog:`Katalog wird geladen...`,noMatch:`Keine Anbieter passen zu „{{query}}“.`,configured:`Konfiguriert`,reachable:`Erreichbar`,envVar:`ENV: {{var}}`,modelCount_one:`{{count}} Modell`,modelCount_other:`{{count}} Modelle`,keyPlaceholder:`{{name}} API-Schlüssel`,orEnv:`Oder stattdessen {{env}} in der Umgebung setzen.`,addApiKey:`API-Schlüssel hinzufügen`,manageKeys:`Verwalte deine API-Schlüssel und Anbieterkonfigurationen`,addProvider:`Anbieter hinzufügen`,addCustomHeading:`Benutzerdefinierten Anbieter hinzufügen`,localServers:`Lokale Server — zum Ausfüllen klicken:`,providerIdPlaceholder:`Anbieter-ID (z.B. my-llm-server)`,apiKeyOptionalPlaceholder:`API-Schlüssel (optional)`,noSaved:`Noch keine gespeicherten Anbieter`,noSavedHint:`Füge einen Anbieter hinzu, um loszulegen`,apiKeysLabel:`API-Schlüssel`,addKey:`Schlüssel hinzufügen`,noKeys:`Keine Schlüssel konfiguriert`,active:`Aktiv`,setActive:`Als aktiv setzen`,keyLabelPlaceholder:`Schlüsselbezeichnung (z.B. default, production)`,apiKeyPlaceholder:`API-Schlüssel`,saveKey:`Schlüssel speichern`,savedToast:`Schlüssel für {{name}} gespeichert`},o={addCustom:`Benutzerdefiniertes Modell hinzufügen`,addCustomTitle:`Benutzerdefiniertes Modell hinzufügen`,addFromCatalog:`Aus Katalog hinzufügen`,catalogSearchPlaceholder:`models.dev-Katalog durchsuchen…`,catalogSearchTitle:`models.dev-Katalog durchsuchen`,colActions:`Aktionen`,colCaps:`Fähigkeiten`,colContext:`Kontext`,colCost:`Kosten`,colModalities:`Modalitäten`,colModel:`Modell`,colOutput:`Ausgabe`,colSource:`Quelle`,editModel:`Modell bearbeiten`,emptyState:`Noch keine Modelle — aus dem Katalog hinzufügen oder ein benutzerdefiniertes Modell erstellen.`,fieldContext:`Kontextfenster`,fieldCostInput:`Eingabekosten`,fieldCostOutput:`Ausgabekosten`,fieldDescription:`Beschreibung`,fieldFamily:`Familie`,fieldInputLimit:`Eingabelimit`,fieldInputModalities:`Eingabe-Modalitäten`,fieldLastUpdated:`Zuletzt aktualisiert`,fieldName:`Name`,fieldOutput:`Max. Ausgabe`,fieldOutputModalities:`Ausgabe-Modalitäten`,fieldReleaseDate:`Veröffentlichungsdatum`,modelAdded:`{{model}} hinzugefügt`,modelRemoved:`{{model}} entfernt`,modelSaved:`{{model}} gespeichert`,noResults:`Keine Modelle gefunden`,removeModel:`Modell entfernen`,sectionCapabilities:`Fähigkeits-Flags`,sectionDates:`Daten`,sectionIdentity:`Identität`,sectionLimits:`Grenzen`,sectionModalities:`Modalitäten`,sectionPricing:`Preise (pro 1M Token, USD)`,tabForm:`Formular`,tabRawJson:`Rohes JSON`,typeToSearch:`Zum Suchen tippen…`,useModel:`{{model}} verwenden`,usingModel:`{{model}} wird verwendet`,filterPlaceholder:`Modelle filtern…`},s={status:{connected:`Verbunden`,connecting:`Verbinden`,sleeping:`Ruhend`,discovering:`Entdecken`,error:`Fehler`,stopped:`Gestoppt`,unknown:`Unbekannt`},disabled:`MCP-Server sind deaktiviert.`,wakeTitle:`Server wecken`,sleepTitle:`Server schlafen legen`,discoverTitle:`Tools entdecken`,editTitle:`Bearbeiten`,removeTitle:`Entfernen`,statusLabel:`Status:`,enabledLabel:`Aktiviert:`,yes:`Ja`,no:`Nein`,descriptionLabel:`Beschreibung:`,pidLabel:`PID:`,errorLabel:`Fehler:`,toolsLabel:`Tools ({{count}}):`,noTools:`Noch keine Tools entdeckt`,serverNameRequired:`Servername ist erforderlich`,dialogTitleEdit:`MCP-Server bearbeiten`,dialogTitleAdd:`MCP-Server hinzufügen`,dialogTitleAddCustom:`Benutzerdefinierten MCP-Server hinzufügen`,fieldName:`Name`,fieldNamePlaceholder:`z.B. github, filesystem`,fieldTransport:`Transport`,fieldUrl:`URL`,fieldCommand:`Befehl`,fieldCommandPlaceholder:`z.B. npx`,fieldArgs:`Args`,fieldArgsHint:`(leerzeichengetrennt)`,fieldArgsPlaceholder:`z.B. -y @modelcontextprotocol/server-github`,fieldEnv:`Env-Variablen`,fieldEnvHint:`(KEY=Wert, eine pro Zeile)`,fieldDescription:`Beschreibung`,fieldDescriptionPlaceholder:`GitHub-MCP-Server für Repository-Zugriff`,enableServer:`Server aktivieren`,lazyConnect:`Verzögert verbinden`,lazyConnectHint:`(erst beim ersten Tool-Aufruf starten; bei Inaktivität automatisch schlafen)`,saveChanges:`Änderungen speichern`,addServer:`Server hinzufügen`,requires:`Erfordert: {{vars}}`,added:`Hinzugefügt`,heading:`MCP-Server`,summary:`{{connected}} verbunden · {{sleeping}} ruhend · {{total}} gesamt`,addCustom:`Benutzerdefiniert`,tabRecommended:`Empfohlen`,tabServers:`Server`,tabAddCustom:`Benutzerdefiniert`,recommendedBody:`One-Click-Hinzufügen für beliebte MCP-Server. Klicke auf Hinzufügen, um die Konfiguration vorzuausfüllen, und bestätige dann. Server mit Anmeldeinformationen benötigen ihre Env-Variablen vor der Nutzung.`,loadingServers:`Server werden geladen...`,noServers:`Keine MCP-Server konfiguriert`,noServersHint:`Wechsle zum Tab Empfohlen, um beliebte Server hinzuzufügen, oder Benutzerdefiniert für eigene.`,addCustomBody:`Konfiguriere einen benutzerdefinierten MCP-Server mit stdio-, SSE- oder HTTP-Transport.`,addCustomBodyHint:`Für beliebte Server nutze stattdessen den Tab Empfohlen — alles ist vorkonfiguriert.`,removeConfirmTitle:`Server „{{name}}“ entfernen?`,removeConfirmBody:`Dies entfernt den MCP-Server aus deiner Konfiguration.`,toastAdded:`Server „{{name}}“ hinzugefügt`,toastRemoved:`Server „{{name}}“ entfernt`,toastDiscovered:`{{count}} Tools von „{{name}}“ entdeckt`,toastSleeping:`Server „{{name}}“ ruht jetzt`,toastConnected:`Server „{{name}}“ verbunden`,toastReconnected:`Server „{{name}}“ neu verbunden`,toastDisconnected:`Server „{{name}}“ getrennt: {{reason}}`,toastError:`Server „{{name}}“ Fehler: {{error}}`},c={title:`Gespeicherte Allowlist löschen?`,body_one:`Dies entfernt das angeheftete Modell für {{provider}}. Die Modellauswahl fällt auf den models.dev-Katalog zurück.`,body_other:`Dies entfernt die {{count}} angehefteten Modelle für {{provider}}. Die Modellauswahl fällt auf den models.dev-Katalog zurück.`,undoHint:`Sie können dies 8 Sekunden nach dem Bestätigen rückgängig machen.`,keepTitle:`Allowlist behalten (Esc)`,clearTitle:`Allowlist löschen (Enter)`,clear:`Allowlist löschen`},l={termsWarning:`Mit einem Abonnement statt einem API-Schlüssel anmelden. Ein Abonnement außerhalb seines offiziellen Clients zu nutzen, kann die Nutzungsbedingungen des Anbieters verletzen — Ihr Konto könnte ratenlimitiert oder gesperrt werden. Ein API-Schlüssel ist der sanktionierte Weg für programmatische Nutzung.`,signIn:`Anmelden`,waitingBrowser:`Warte auf Ihre Anmeldung…`,openSignIn:`Anmeldeseite öffnen`,pasteLoopbackBusy:`Loopback-Port belegt — Redirect-URL einfügen`,pasteCantReach:`Browser erreicht diesen Server nicht? Redirect-URL einfügen`,submit:`Absenden`,enterCode:`Diesen Code auf der Verifizierungsseite eingeben:`,openVerification:`Verifizierungsseite öffnen`,waitingCode:`Warte auf Autorisierung…`,exchanging:`Tokens werden ausgetauscht…`,fetchingModels:`Modelle werden geladen…`,signedIn:`Angemeldet.`,signedInToast:`Angemeldet — {{provider}}`,signInFailed:`Anmeldung fehlgeschlagen`,accountCount_one:`{{count}} Konto gespeichert`,accountCount_other:`{{count}} Konten gespeichert`,active:`Aktiv`,inactive:`Inaktiv`,retry:`Erneut`,retryLogin:`Dieses Konto erneut authentifizieren`,newAccount:`Neues Konto`,aliasPlaceholder:`z.B. {{default}}`},u={showThinkingLabel:`Thinking-Protokolle anzeigen`,showThinkingHint:`Abgeschlossene Reasoning-Blöcke im Chatverlauf anzeigen.`,groupToolCallsLabel:`Tool-Aufrufe gruppieren`,groupToolCallsHint:`Aufeinanderfolgende Tool-Aufrufe in einem Chip zusammenfassen.`,autoCollapseInputLabel:`Composer unter Verlauf einklappen`,autoCollapseInputHint:`Wenn eine Sitzung mit Nachrichten geladen wird, den Composer unter dem Verlauf einklappen. Standardmäßig aus — der Composer bleibt ausgeklappt, bis du ihn manuell einklappst.`,themeHeading:`Design`,themeLight:`Hell`,themeDark:`Dunkel`,themeSystem:`System`,themeSystemHint:`System folgt deiner Hell-/Dunkel-Einstellung auf Betriebssystemebene.`,preferencesHeading:`Einstellungen`,compactDensity:`Kompakte Dichte`,compactDensityHint:`Engerer Abstand im gesamten Chat.`,soundOnComplete:`Ton bei Fertigstellung`,soundOnCompleteHint:`Spielt einen sanften Ton, wenn ein Durchlauf abgeschlossen ist.`,titleAnimation:`Titelanimation`,titleAnimationHint:`Animierten Terminal-Titel im CLI anzeigen.`,thinkingWordLabel:`Denkwort (CLI/TUI)`,thinkingWordHint:`Wort im TUI-Status-Chip. Ein einzelnes kurzes Wort.`,statuslineModeLabel:`Statuszeilen-Modus (CLI/TUI)`,statuslineModeHint:`Detailgrad der TUI-Statuszeile.`,statuslineModeDetailed:`Detailliert`,statuslineModeMinimum:`Minimal`,statuslineModeNoColor:`Ohne Farbe`,animationStyleLabel:`Animationsstil (CLI/TUI)`,animationStyleHint:`Animation für den TUI-Arbeitsstatus-Chip.`,animationStyleRainbow:`Regenbogen`,animationStyleWave:`Welle`,animationStylePulse:`Puls`,animationStyleDots:`Punkte`,animationStyleBreathe:`Atmen`,animationStyleCycle:`Zyklus`,languageHeading:`Sprache`,languageLabel:`Oberflächensprache`,languageHint:`Ändert nur den Oberflächentext. Prompts, Skills und Modellausgaben bleiben unberührt.`,paletteHeading:`Farbpalette`,paletteSwitcherTitle:`Farbpalette`,paletteHint:`Wähle die Hauptfarbe (und ihre Ableitungen). Neutrale Flächen bleiben gleich.`,paletteSignal:`Signal`,paletteEmeraldGold:`Smaragd & Gold`,paletteBlueNavy:`Marineblau`,palettePurplePink:`Violett & Pink`,paletteCyanTeal:`Cyan & Türkis`,paletteRoseCopper:`Rosa & Kupfer`,paletteIndigoAmber:`Indigo & Bernstein`,paletteSageSand:`Salbei & Sand`,paletteSlateViolet:`Schiefer & Violett`,paletteCoralMint:`Koralle & Minze`,paletteArcticEmber:`Arktis & Glut`,paletteMossRust:`Moos & Rost`},d={autonomyHeading:`Autonomie & Verhalten`,autonomyModeLabel:`Autonomie-Modus`,autonomyModeHint:`Wie unabhängig der Agent zwischen Zügen fortfährt.`,autonomyModeOff:`Aus — volle manuelle Kontrolle`,autonomyModeSuggest:`Vorschlagen — schlägt nächste Schritte vor`,autonomyModeAuto:`Auto — kurze Bestätigungsverzögerung`,autonomyModeEternal:`Eternal — autonom bis Ziel erreicht`,autonomyModeEternalParallel:`Eternal Parallel — Multi-Agent-Flotte`,autoProceedDelayLabel:`Auto-Fortsetzen-Verzögerung`,autoProceedDelayHint:`Millisekunden bevor der Agent im Auto-Modus fortfährt. 0 = sofort.`,yoloLabel:`YOLO-Modus`,yoloHint:`Tool-Bestätigungs-Prompts umgehen — der Agent läuft ohne Nachfrage.`,refineHeading:`Prompt-Verfeinerung`,enableRefineLabel:`Verfeinerung aktivieren`,enableRefineHint:`Prompts vor dem Senden umschreiben — klarere Anweisungen, bessere Ergebnisse.`,refineDelayLabel:`Verfeinerungs-Verzögerung`,refineDelayHint:`Countdown bevor der verfeinerte Prompt automatisch gesendet wird.`,refineLanguageLabel:`Verfeinerungs-Sprache`,refineLanguageHint:`Ihre Sprache behalten oder für das Modell ins Englische übersetzen.`,refineLanguageOriginal:`Original — Sprache behalten`,refineLanguageEnglish:`Englisch — ins Englische übersetzen`,refinerProviderLabel:`Verfeinerungs-Provider`,refinerProviderHint:`Provider-ID für die Zielverfeinerung. Leer = Provider der Sitzung verwenden.`,refinerProviderDefault:`Sitzungs-Provider`,refinerModelLabel:`Verfeinerungs-Modell`,refinerModelHint:`Modell-ID für die Zielverfeinerung. Leer = Modell der Sitzung verwenden.`,refinerModelDefault:`Sitzungsmodell`,refinerProfileLabel:`Fallback-Profil für die Verfeinerung`,refinerProfileHint:`Benanntes Fallback-Profil für die Zielverfeinerung. Überschreibt Provider und Modell.`,refinerProfileDefault:`Keines — Provider und Modell oder Sitzungsstandards verwenden`,reasoningHeading:`Reasoning & Cache`,reasoningModeLabel:`Reasoning-Modus`,reasoningModeHint:`Steuern, wie das Modell Extended Thinking nutzt. Auto = Anbieter-Standard.`,reasoningModeAuto:`Auto — Anbieter-Standard`,reasoningModeOn:`An — Thinking erzwingen`,reasoningModeOff:`Aus — Thinking deaktivieren`,reasoningEffortLabel:`Reasoning-Aufwand`,reasoningEffortHint:`Wie viel Compute das Modell fürs Denken aufwendet. Nur gesendet, wenn das Modell es unterstützt.`,reasoningEffortNone:`Keine`,reasoningEffortMinimal:`Minimal`,reasoningEffortLow:`Niedrig`,reasoningEffortMedium:`Mittel`,reasoningEffortHigh:`Hoch`,reasoningEffortXhigh:`Sehr hoch`,reasoningEffortMax:`Max`,preserveThinkingLabel:`Thinking bewahren`,preserveThinkingHint:`Reasoning-Blöcke über Züge hinweg für Kontextkontinuität behalten.`,cacheTtlLabel:`Cache-TTL`,cacheTtlHint:`Prompt-Cache-Time-to-Live. 1h kostet mehr beim Schreiben, spart aber bei wiederholten Lesevorgängen (Anthropic).`,cacheTtlDefault:`Standard — Anbieter-Standard`,cacheTtl5m:`5 Minuten`,cacheTtl1h:`1 Stunde`,capsHint:`Verwenden Sie wstack models caps um zu prüfen, was das aktuelle Modell unterstützt. Nicht unterstützte Einstellungen werden pro Anfrage still weggelassen.`,routingHeading:`Modell-Routing`,routingRouteKey:`Modell-Routen-Schlüssel`,routingPhasesGroup:`Phasen`,routingRolesGroup:`{{label}} Rollen`,routingCustomGroup:`Benutzerdefinierte bestehende Routen`,routingTargetAria:`Ziel der Modellroute`,routingTargetEmpty:`— Route löschen —`,routingTargetProfilesGroup:`Fallback-Profile`,routingTargetModelsGroup:`Modelle (Provider/Modell)`,routingSet:`Setzen`,routingReasoningModeAria:`Reasoning-Modus neue Route`,routingReasoningEffortAria:`Reasoning-Aufwand neue Route`,routingReasoningPreserveAria:`Reasoning-Bewahrung neue Route`,routingReasoningModeFor:`Reasoning-Modus für {{key}}`,routingReasoningEffortFor:`Reasoning-Aufwand für {{key}}`,routingReasoningPreserveFor:`Reasoning-Bewahrung für {{key}}`,noRoutes:`Noch keine Modell-Routen.`,leaderModel:`Leader-Modell`,autonomyDelayMsLabel:`Verzögerung der automatischen Fortsetzung`,autonomyDelayMsHint:`Millisekunden, bevor der Agent im Auto-Modus automatisch fortfährt. 0 = sofort.`,refineCountdownLabel:`Verfeinerungs-Countdown`,refineCountdownHint:`Gnadenfrist, bevor der verfeinerte Prompt automatisch gesendet wird (Millisekunden).`,reasoningEffortModelSet:`Stufen des aktiven Modells`},f={heading:`Ausführung`,maxIterationsLabel:`Max. Iterationen pro Run`,maxIterationsHint:`Feste Obergrenze für LLM-Züge pro agent.run().`,autoProceedMaxIterationsLabel:`Auto-Fortsetzen max. Iterationen`,autoProceedMaxIterationsHint:`Auto-Fortsetzen nach N Iterationen stoppen. 0 = unbegrenzt.`,confirmExitLabel:`Vor Exit bestätigen`,confirmExitHint:`Erstes Ctrl+C bricht Arbeit ab, zweites bestätigt Exit.`,chimeLabel:`Chime bei Fertigstellung`,chimeHint:`Terminal-Glocke, wenn ein Agent-Run endet.`,breakerLabel:`Prozess-Schutzschalter`,breakerHint:`Sperrt bash/exec nach wiederholten Fehlern; beim Auslösen startet der Kill/Reset-Countdown.`,breakerTimeoutLabel:`Kill/Reset-Timeout des Schutzschalters`,breakerTimeoutHint:`Verzögerung bis zum automatischen Kill/Reset nach dem Auslösen. 0 = manuelle Wiederherstellung.`,availabilityHeading:`Verfügbarkeitskalender für Anbieter/Modelle`,availabilityHint:`Verhindert, dass autonome und nächtliche Ausführungen ausgewählte Anbieter oder Modelle in wiederkehrenden Fenstern verwenden.`},p={heading:`Fallback-/Round-robin-Modelle`,body:`Wenn das aktive Modell rate-limited (429/529), 5xx-Fehler oder hängt — nach eigenen Retries — rotiert der Agent zum nächsten Modell dieser Kette. Auch Standard für SDD-Worker-Subagents.`,autoFallbackLabel:`Auto-Fallback`,autoFallbackHint:`Wenn die Kette oben leer ist, automatisch von Ihren gespeicherten Anbietern ableiten.`,favoritesOnlyLabel:`Nur Favoriten`,favoritesOnlyHint:`Wenn Auto-Fallback eine Kette ableitet, auf Ihre Favoriten beschränken.`,profilesHeading:`Fallback-/Round-robin-Profile`,addProfile:`Hinzufügen`,noProfiles:`Noch keine benannten Fallback-Profile.`,createDefault:`Standard aus aktivem Modell erstellen`,useChain:`Kette verwenden`,setLeader:`Leader setzen`,profileEmpty:`Profil ist leer.`,favoritesHeading:`Favoriten-Modelle`,favoritesEmpty:`Favoriten werden zuerst angezeigt und können Auto-Fallback einschränken.`,addModelToProfile:`Modell zum Profil hinzufügen…`,addFavoriteModel:`Favoritenmodell hinzufügen…`,inactive:`inaktiv`},m={heading:`Flotte & Streaming`,fleetChatVerbosityLabel:`Flotten-Events streamen`,fleetChatVerbosityHint:`Live-Subagent-Aktivität im Flotten-Panel zeigen.`,maxConcurrentLabel:`Max. gleichzeitige Subagents`,maxConcurrentHint:`Maximale Anzahl gleichzeitig laufender Subagents.`,nextPredictionLabel:`Next-Step-Vorhersage`,nextPredictionHint:`Nach Abschluss eines Zugs wahrscheinliche nächste Schritte vorhersagen.`,nextStepsToolLabel:`Nextsteps-Tool`,nextStepsToolHint:`Der Agent kann seine Folgevorschläge per Tool-Aufruf hinterlegen, statt den Block selbst zu schreiben. Gilt ab der nächsten Sitzung.`},h={hqHeading:`HQ-Client`,hqPublishingLabel:`HQ-Veröffentlichung`,hqPublishingHint:`Diese WebUI/Client-Sitzung bei WrongStack HQ veröffentlichen. Gleichmaschinige Clients können lokales HQ-Auth auto-entdecken; Remote-Clients nutzen untenstehende URL/Token.`,hqUrlLabel:`HQ-URL`,hqUrlHint:`Für Auto-Discovery auf gleicher Maschine leer lassen.`,hqTokenLabel:`HQ-Client-Token`,hqRawContentLabel:`Rohe HQ-Inhalte`,hqRawContentHint:`Rohe Inhaltsvorschauen statt geschwärzter Vorschauen an HQ senden.`,telegramHeading:`Telegram-Benachrichtigungen`,telegramSessionEndLabel:`Sitzungsende`,telegramSessionEndHint:`Zusammenfassung senden, wenn eine Sitzung endet.`,telegramDelegateLabel:`Delegat fertig`,telegramDelegateHint:`Vermenschlichte Notiz senden, wenn ein Subagent fertig ist.`,telegramLongToolLabel:`Langlaufende Tools`,telegramLongToolHint:`Benachrichtigen, wenn ein Tool {{ms}}ms überschreitet. 0 zum Deaktivieren.`,telegramChangesApply:`Änderungen werden sofort angewendet.`,telegramNotConfigured:`Telegram ist nicht konfiguriert. Führen Sie /telegram-setup in der CLI aus, um zuerst einen Bot zu verbinden.`,heading:`Integrationen`,disabledHint:`Aktivieren Sie die Funktion im Kontext-Tab, um diesen Bereich zu nutzen.`},g={chimeraDedicatedHeading:`Chimera — Code-Review nach der Sitzung`,chimeraDedicatedHint:`Automatisierte Code-Qualitätsprüfung nach jeder Agentensitzung.`,chimeraSectionEnabled:`Post-Session-Review (Chimera)`,chimeraSectionEnabledHint:`Nach jeder Iteration einen Code-Review-Agenten ausführen.`,chimeraProviderLabel:`Chimera-Anbieter`,chimeraProviderHint:`Anbieter für den Review-Agenten. Aus konfigurierten Anbietern wählen.`,chimeraProviderSessionDefault:`Sitzungsstandard`,chimeraModelLabel:`Modell`,chimeraModelSessionDefault:`Sitzungsstandard`,chimeraModelHint:`Modell für den Review-Agenten. Erfordert zuerst einen Anbieter.`,chimeraMaxFilesLabel:`Max. Dateien pro Review`,chimeraMaxFilesHint:`Maximale Anzahl geänderter Dateien pro Review-Aufruf.`,chimeraAutoFixLabel:`Auto-Fix-Modus`,chimeraAutoFixHint:`Ob der Review-Agent Funde automatisch korrigieren soll.`,chimeraAutoFixOff:`Aus — nur Review`,chimeraAutoFixAsk:`Fragen — vor Anwendung bestätigen`,chimeraAutoFixAuto:`Auto — ohne Bestätigung anwenden`,autoReviewCascadeOnLabel:`Kaskade ab`,autoReviewCascadeOnHint:`Wenn ein Review Funde dieses oder höheren Schweregrads findet, Folgeagenten starten.`,autoReviewCascadeOnOff:`Aus`,autoReviewCascadeOnHigh:`Hoch oder höher`,autoReviewCascadeOnCritical:`Nur kritisch`,chimeraPickModel:`Anbieter/Modell für Chimera wählen`,chimeraPickModelHint:`Anbieter und Modell für das Post-Session-Code-Review wählen.`,autoReviewSectionEnabled:`Mid-Session-Review (Auto-Review)`,autoReviewSectionEnabledHint:`Bei jeder Dateiänderung während der Sitzung einen Review-Agenten ausführen.`,autoReviewFallbackProfileLabel:`Fallback-/Round-robin-Profil`,autoReviewFallbackProfileHint:`Benanntes Modellprofil für Auto-Review; liefert Fallback-Pool und Modelle für Round-robin oder Zufallsauswahl.`,autoReviewFallbackProfileNone:`Keines — Anbieter+Modell oder Sitzungsstandard`,autoReviewModelSelectionLabel:`Profilauswahl`,autoReviewModelSelectionHint:`Wählt das nächste Profilmodell der Reihe nach oder ein zufälliges Startmodell pro Review.`,autoReviewModelSelectionRoundRobin:`Round-robin — in Profilreihenfolge`,autoReviewModelSelectionRandom:`Zufällig — aus dem Profil wählen`,autoReviewFallbackModelsLabel:`Fallback-/Round-robin-Modelle`,autoReviewFallbackModelsEmpty:`Keine Fallback-/Round-robin-Modelle konfiguriert`,autoReviewFallbackModelsHint:`Modelle aus Profil oder globaler Kette; sie bilden Auswahlpool und Wiederholungskette.`,autoReviewModelLabel:`Modell`,autoReviewModelHint:`Modell für Auto-Review-Agent. Erfordert zuerst einen Anbieter.`,autoReviewDebounceLabel:`Entprellintervall (ms)`,autoReviewDebounceHint:`Mindestabstand zwischen Reviews nach Dateiänderung.`,autoReviewMaxFilesLabel:`Max. Dateien pro Batch`,autoReviewMaxFilesHint:`Dateien pro Auto-Review-Aufruf.`,autoReviewMaxConcurrentLabel:`Max. gleichzeitige Reviews`,autoReviewMaxConcurrentHint:`Limit für parallele Review-Subagents.`,autoReviewCascadeLabel:`Kaskade bei`,autoReviewCascadeHint:`Schwellwert für Folgeagenten — startet Sicherheits- und Bug-Scanner.`,autoReviewCascadeOff:`Aus — keine Kaskade`,autoReviewCascadeCritical:`Kritisch — nur kritische Funde`,autoReviewCascadeHigh:`Hoch — kritische oder hohe Funde`,autoReviewPickModel:`Anbieter/Modell für Auto-Review wählen`,autoReviewPickModelHint:`Anbieter/Modell oder Fallback-Profil für Auto-Review wählen.`,pluginsPerPluginHint:`Einzelne Plugins aktivieren oder deaktivieren. Änderungen werden mit der nächsten Sitzung wirksam.`},_={flagsHeading:`Feature-Flags`,mcpLabel:`MCP-Server`,mcpHint:`Model Context Protocol-Integrationen aktivieren.`,pluginsLabel:`Plugins`,pluginsHint:`Vom Nutzer installierte Plugins laden und ausführen.`,memoryLabel:`Speicher`,memoryHint:`Fakten sitzungsübergreifend speichern und abrufen.`,skillsLabel:`Skills`,skillsHint:`Domänenspezifische Skill-Prompts laden.`,modelsRegistryLabel:`Modell-Registry`,modelsRegistryHint:`Das models.dev-Katalog zur Anbieter-Entdeckung nutzen.`,indexOnStartLabel:`Beim Start indizieren`,indexOnStartHint:`Symbol-Index der Codebasis beim Sitzungsstart aufbauen.`,pluginsPerPluginHeading:`🔌 Pro-Plugin-Steuerung`,pluginsPerPluginHint:`Einzelne Plugins aktivieren oder deaktivieren. Änderungen werden mit der nächsten Sitzung wirksam.`,pluginChimera:`Chimera — Code-Review nach Sitzungsende`,pluginSkills:`Skills — Skill-Bibliothek & -Erstellung`,pluginPrompts:`Prompts — Prompt-Bibliothek & Generierung`,pluginCostTracker:`Cost Tracker — Token- & Kostenverfolgung`,pluginTelegram:`Telegram — Benachrichtigungsbot`,pluginKnowledgeGraph:`Knowledge Graph — dauerhafte Fakten`,pluginErrorLens:`Error Lens — Fehlerdiagnose`,pluginTodoTracker:`Todo Tracker — dauerhafte Aufgaben`,pluginSecretScanner:`Secret Scanner — Zugangsdaten-Erkennung`,pluginLintGate:`Lint Gate — Lint vor Iteration`,pluginDiffSummary:`Diff Summary — kompakte Diffs`,pluginDepGuard:`Dep Guard — Abhängigkeitsregeln`,pluginTypeGate:`Type Gate — Typecheck vor Iteration`,pluginInjectionShield:`Injection Shield — Prompt-Injection`,pluginPromptFirewall:`Prompt Firewall — Eingabefilterung`,pluginTokenBudget:`Token Budget — Token-Limits`,pluginLoopBreaker:`Loop Breaker — Erkennung außer Kontrolle`,heading:`Kontext & Debug`,autoCompactLabel:`Kontext auto-kompaktieren`,autoCompactHint:`Kontextfenster in der Nähe von Limits automatisch kürzen.`,compactorStrategyLabel:`Compaktor-Strategie`,compactorStrategyHint:`Wie der Kontext komprimiert wird, wenn er zu groß wird.`,compactorStrategyHybrid:`Hybrid — schnelle Regeln (Standard)`,compactorStrategyIntelligent:`Intelligent — LLM-Zusammenfassung`,compactorStrategySelective:`Selektiv — LLM-gesteuerte Auswahl`,contextModeLabel:`Kontext-Modus`,contextModeHint:`Kontextfenster-Richtlinie — balanced ist Standard.`,contextModeBalanced:`Ausgewogen — normale Kontextnutzung`,contextModeFrugal:`Sparsam — konservative Token-Nutzung`,contextModeDeep:`Tief — größerer Kontext für komplexe Aufgaben`,tokenSavingLabel:`Token-Sparmodus`,tokenSavingHint:`Steuert direkte Tool-Schemas und die System-Prompt-Größe der nächsten Sitzung.`,tokenSavingAuto:`Auto — Prompt an das Modellfenster anpassen`,tokenSavingOff:`Aus — kein Token-Sparen`,tokenSavingMinimal:`Minimal — grundlegende Optimierung`,tokenSavingLight:`Leicht — moderate Reduktion`,tokenSavingMedium:`Mittel — erhebliche Einsparungen`,tokenSavingAggressive:`Aggressiv — kleinste direkte Oberfläche und Prompt`},v={logLevelLabel:`Log-Level`,logLevelHint:`Mindest-Schweregrad für serverseitiges Logging.`,logLevelDebug:`Debug — alles`,logLevelInfo:`Info — normaler Ablauf`,logLevelWarn:`Warn — nur Probleme`,logLevelError:`Error — nur Fehler`,auditLevelLabel:`Audit-Level`,auditLevelHint:`Detaillierungsgrad für Sitzungs-Audit-Logs.`,auditLevelMinimal:`Minimal — nur Fehler`,auditLevelStandard:`Standard — Tool-Aufrufe + Fehler`,auditLevelFull:`Voll — jedes Ereignis (große Logs)`,fsAccessLabel:`Dateisystemzugriff`,fsAccessHint:`Geltungsbereich der Datei-Tools. Gilt ab der nächsten Sitzung.`,fsAccessUnrestricted:`Uneingeschränkt — beliebiger Pfad`,fsAccessProject:`Projekt — auf das Projektverzeichnis beschränkt`,debugStreamLabel:`Debug-Stream`,debugStreamHint:`Roher SSE-Hexdump auf stderr des Servers zum Provider-Debugging.`,heading:`Logs & Debug`},y={heading:`Sicherheit & Überwachung`,brainHeading:`🧠 Brain – Entscheidungssteuerung`,brainHint:`Entscheidungsmodelle, Council, Eskalation und Risikoobergrenze – sofort wirksam, in der globalen Konfiguration gespeichert.`,shadowHeading:`👁 Schatten-Agent – Flottenmonitor`,shadowHint:`Der Schatten-Agent überwacht alle Flottenagenten, verfolgt ihre Aufgaben und erkennt Anomalien.`,toolsHeading:`🔧 Tool Access Control`,toolsHint:`Einzelne Tools aktivieren oder deaktivieren. Verändernde Tools sind bernsteinfarben markiert.`,breakerHeading:`Prozess-Schutzschalter`,breakerHint:`bash/exec nach wiederholten Fehlern sperren; ein Auslösen startet den Kill-/Reset-Countdown.`},b={switchingTo:`Wechseln zu {{provider}} / {{model}}…`,switching:`Modell wird gewechselt…`,switchingToTarget:`Wechsel zu {{target}}…`,previousModel:`vorheriges Modell`,modelSwitchedNextRequest:`Modell gewechselt: {{from}} → {{to}}. Aktiv für die nächste LLM-Anfrage.`,modelSwitchedRunActive:`Modell gewechselt: {{from}} → {{to}}. Aktiv für die nächste LLM-Anfrage; der aktuelle Lauf wird fortgesetzt und nicht neu gestartet.`,fallbackExists:`Fallback-Profil "{{name}}" existiert bereits`,selectProviderModelFirst:`Wählen Sie zuerst einen Anbieter und ein Modell`,defaultProfileCreated:`Standard-Fallback-Profil erstellt`,profileEmpty:`Fallback-Profil "{{name}}" ist leer`,leaderSetFrom:`Leader aus {{name}} gesetzt`,modelSwitchTimeout:`Zeitüberschreitung beim Modellwechsel. Bitte erneut versuchen.`},x={workbenchHeading:`Workbench-Optik`,workbenchHint:`Sichtbarkeit der Workbench-Oberflächen im Chat umschalten.`,showModelReasoningLabel:`Modell-Reasoning anzeigen`,showModelReasoningHint:`LLM-Reasoning/Thinking-Blöcke im Chatverlauf rendern (TUI-Parität).`,showAgentSwarmPanelLabel:`Agent-Schwarm-Panel`,showAgentSwarmPanelHint:`Steuert, wo das Agent-Schwarm-Panel (Fleet + Mission Queue) angezeigt wird.`,swarmPanelBottom:`Unteres Panel`,swarmPanelSidebar:`Rechte Seitenleiste`,swarmPanelOff:`Aus`,titleAnimationLabel:`Titelanimation`,titleAnimationHint:`Terminal-/Tab-Titel mit Laufstatus animieren (TUI-Parität).`,statusChipHeading:`Status-Chip & Statuszeile`,statusChipHint:`Visueller Stil für die TUI/CLI-Statuszeile und den Arbeits-Chip.`,thinkingWordLabel:`Denkwort`,thinkingWordHint:`Einzelnes kurzes Wort, das im TUI-Status-Chip angezeigt wird, während der Agent arbeitet.`,statuslineModeLabel:`Statuszeilen-Modus`,statuslineModeHint:`Detailgrad der TUI-Statusleiste.`,statuslineModeMinimum:`Minimal`,statuslineModeDetailed:`Detailliert`,statuslineModeNoColor:`Ohne Farbe`,animationStyleLabel:`Animationsstil`,animationStyleHint:`Animation für den TUI-Arbeits-Chip.`,animationStyleRainbow:`Regenbogen`,animationStyleWave:`Welle`,animationStylePulse:`Puls`,animationStyleDots:`Punkte`,animationStyleBreathe:`Atmen`,animationStyleCycle:`Wechselnd`,refineHeading:`Refine-Countdown & Diffs`,refineHint:`Grace-Countdown vor dem Refiner und Mindestanzahl von Dateien für die Multi-Diff-Fußzeile konfigurieren.`,preRefineSecondsLabel:`Vor-Refine-Countdown`,preRefineSecondsHint:`Wartezeit vor dem Refiner in Sekunden. 0 = Countdown überspringen und sofort verfeinern.`,preRefineSecondsPresets:`Voreinstellungen: {{presets}} Sekunden (0 = aus).`,multiDiffSummaryLabel:`Multi-Diff-Zusammenfassung`,multiDiffSummaryHint:`Mindestanzahl von Dateien, ab der die aggregierte 'N Dateien · +X -Y' Fußzeile über den Einzelblöcken erscheint.`,multiDiffSummaryPresets:`Voreinstellungen: {{presets}} (0 = aus).`,memoryHeading:`Read-Tool & SAGE-Memory-Injection`,memoryHint:`Umschalten, was das Read-Tool enthält und wann SAGE-Memory-Blöcke in Tool-Ergebnissen erscheinen.`,readSymbolsLabel:`Symbole lesen`,readSymbolsHint:`Wenn aktiv, enthält das Read-Tool Codebase-Index-Symbole neben dem Datei-Inhalt.`,showSageMemoryInjectLabel:`SAGE Memory Inject anzeigen`,showSageMemoryInjectHint:`Wenn aktiv, werden SAGE-Memory-Injection-Blöcke in Tool-Ergebnissen angezeigt.`,sageMemoryInjectThresholdLabel:`SAGE-Memory-Inject-Schwelle`,sageMemoryInjectThresholdHint:`Mindest-Beziehungsstärke für eine injizierte SAGE-Memory (0.72–0.95).`,footnote:`Diese Einstellungen spiegeln den TUI- /settings-Picker wider. Schalter wirken sofort; einige Felder erfordern einen Session-Neustart.`,sageRelaxed:`0,72 (locker)`,sageDefault:`0,85 (Standard)`,sageStrict:`0,95 (streng)`},S=`Zurücksetzen`,C=`Abbrechen`,w=`Alle Einstellungen zurücksetzen?`,T=`Dadurch werden die Standardeinstellungen wiederhergestellt und die Seite neu geladen.`,E=`Zurücksetzen`,D=JSON.parse(`{"heading":"Brain","headingHint":"Entscheidungsmodelle, Rat, Eskalation und Risiko-Decke — live angewendet, in der globalen Konfiguration gespeichert.","riskHeading":"Autonomie-Decke","escalationHeading":"Eskalation","escalationModeLabel":"Modus","escalationModeHint":"Headless: Das Brain blockiert nie auf einen Menschen — unbeantwortete Eskalationen werden über die sichere Endrichtlinie aufgelöst. Gilt für CLI/TUI-Sitzungen; das eigenständige WebUI-Brain ist immer headless.","escalationDecisionTimeoutLabel":"Entscheidungs-Timeout","escalationDecisionTimeoutHint":"Zeitbudget pro LLM-Aufruf für eine Brain-Entscheidung.","escalationHumanTimeoutLabel":"Timeout für menschliche Antwort","escalationHumanTimeoutHint":"Interaktiver Modus: Wie lange ein Eskalations-Prompt warten darf, bevor die Endrichtlinie ihn auflöst.","escalationTerminalPolicyLabel":"Endrichtlinie","escalationTerminalPolicyHint":"Wie eine headless-Eskalation ohne verfügbaren Menschen aufgelöst wird. Konservativ akzeptiert eine empfohlene Option bei niedrigem/mittlerem Risiko; alles-ablehnen akzeptiert nie automatisch; mit-Empfehlung-fortfahren akzeptiert eine empfohlene Option bei JEDEM Risiko.","escalationDecisionLogSizeLabel":"Größe des Entscheidungsprotokolls","escalationDecisionLogSizeHint":"Rollierendes In-Memory-Entscheidungsprotokoll für die Statusansicht.","rulesHeading":"Deterministische Regeln","rulesConfigured":"{{count}} konfiguriert","rulesBody":"Wird vor jedem Provider-Aufruf ausgewertet — der erste Treffer gewinnt. Bearbeiten Sie sie in der globalen Konfigurationsdatei; diese Ansicht ist schreibgeschützt.","rulesOff":"aus","rulesDropped":"{{count}} Regel(n) verworfen","heuristicsHeading":"Heuristiken","heuristicsBody":"Kostenlose Mustervermutungen, die eine Frage lösen, bevor ein Modell läuft. Standardmäßig alle an — schalten Sie eine aus, wenn ihre Vermutung für Ihre Arbeitslast falsch ist.","heuristicsLowRiskLabel":"Automatische Antwort bei niedrigem Risiko","heuristicsLowRiskHint":"Beantwortet risikoarme Anfragen automatisch, die bereits eine empfohlene Option tragen.","heuristicsBlockedLabel":"Blockiert-aufgelöst","heuristicsBlockedHint":"'blocked …' plus ein expliziter Auflösungsmarker im Kontext löst zu „fortfahren\\" auf.","heuristicsDeadlockLabel":"Deadlock überspringen","heuristicsDeadlockHint":"'deadlock' plus fehlgeschlagene Arbeitseinheiten im Kontext löst zu „überspringen und fortfahren\\" auf.","heuristicsRetryLabel":"Wiederholungen erschöpft","heuristicsRetryHint":"'failed'/'retry' plus nachweislich erschöpfte Wiederholungen markiert die Einheit als fehlgeschlagen und fährt fort.","heuristicsPingLabel":"Fortfahren-Ping","heuristicsPingHint":"Ein bloßer Fortfahren/Weiter-Ping ohne konkurrierende Alternative löst zu „fortfahren\\" auf.","heuristicsMarkers":"Marker: {{markers}}","qualityHeading":"LLM-Qualität","qualityCircuit_one":"Schaltung {{state}} · {{count}} Fehler","qualityCircuit_other":"Schaltung {{state}} · {{count}} Fehler","qualityResponseBudgetLabel":"Antwortbudget","qualityResponseBudgetHint":"Ausgabetoken pro Entscheidungsaufruf. Eine Brain-Antwort ist eine Entscheidung plus eine Begründung in einem Satz.","qualityRejectLabel":"Unsichere Antworten ablehnen","qualityRejectHint":"Behandelt eine abgelehnte oder leere Antwort als „diese Stufe konnte nicht entscheiden\\", statt sie als Antwort zu akzeptieren.","qualityMinConfidenceLabel":"Mindestkonfidenz","qualityMinConfidenceHint":"Lehnt Antworten ab, deren selbst gemeldete Konfidenz darunter liegt. Antworten ohne Konfidenzangabe bestehen immer.","qualityDenyTerminalLabel":"Ablehnung ist terminal","qualityDenyTerminalHint":"Ob eine Ablehnung aus der Einzel-LLM-Stufe die Entscheidung beendet. 'when-decided' macht eine echte Ablehnung terminal, während Infrastrukturfehler weiter eskalieren.","traceHeading":"Replay-Spur","traceRecordLabel":"Entscheidungsspuren aufzeichnen","traceRecordHint":"JSONL pro Entscheidung jeder Stufe, jedes Pool-Ziels und jeder Ratsabstimmung, mit Zeiten und Token-Nutzung. Standardmäßig aus — Aktivieren schreibt Entscheidungsinhalte auf die Festplatte.","traceContentLabel":"Spurinhalt","traceContentHint":"'full' behält Frage und Kontext (nötig zum Replay einer Entscheidung); 'redacted' kürzt Freitext; 'none' zeichnet nur Metadaten auf.","cacheHeading":"Entscheidungs-Cache","cacheStats":"{{hits}} Treffer / {{misses}} Fehlschlag · {{size}} live","cacheReplayLabel":"Identische Urteile wiedergeben","cacheReplayHint":"Verwendet ein früheres Rats-/LLM-Urteil für eine identische wiederholte Frage wieder. Deterministische Stufen und Frage-an-Mensch werden nie gecacht; ein Urteil, das das Protokoll als fehlgeschlagen beobachtet, wird entfernt.","cacheLifetimeLabel":"Eintragslebensdauer","cacheLifetimeHint":"Wie lange ein gecachtes Urteil wiedergebbar bleibt.","cacheMaxEntriesLabel":"Maximale Einträge","cacheMaxEntriesHint":"Obergrenze für live gecachte Urteile.","monitorHeading":"Monitor","monitorBody":"Selbstaktivierung bei Notfallsignalen. Der Monitor wird einmal beim Start gebaut, daher gelten diese Einstellungen für die nächste Sitzung statt live.","monitorWatchLabel":"Auf Notfallsignale achten","monitorWatchHint":"Tool-Fehlerketten, Fehlerstürme, Agent-Staus und Datei-Churn aktivieren das Brain von selbst.","monitorPolicyLabel":"Signalrichtlinie","monitorPolicyHint":"Wie ein erkanntes Signal aufgelöst wird. 'llm' konsultiert das Brain; 'steer' greift immer ein und 'observe' nie — beide ohne Provider-Aufruf.","modelsHeading":"Entscheidungsmodelle","modelsSessionBadge":"Sitzungsmodell","modelsResolvedBadge":"{{resolved}}/{{total}} aufgelöst","modelsUseSessionLabel":"Sitzungsmodell verwenden","modelsUseSessionHint":"Mit dem Modell entscheiden, das die Sitzung ausführt. Durch Hinzufügen von Modellen unten ausschalten.","modelsAddModel":"Modell hinzufügen","modelsPoolStrategyLabel":"Pool-Strategie","modelsPoolStrategyHint":"Fallback: Das erste Modell ist primär, der Rest wird bei Fehlern der Reihe nach versucht. Round-Robin: Entscheidungen rotieren durch den Pool.","councilHeading":"Rat","councilConvened":"einberufen","councilDisabled":"deaktiviert","councilEnableLabel":"Multi-LLM-Rat aktivieren","councilEnableHint":"Fragen mit hohem Einsatz werden von unabhängigen Sitzen (Ausführender / Skeptiker-mit-Veto / Prüfer) statt von einem Modell abgestimmt. Erfordert ≥2 auflösbare Wähler (explizite Sitze unten oder ein Pool mit ≥2 Modellen).","councilSeatsDerived":"Aus dem Pool abgeleitete Sitze: {{seats}}","councilCustomLens":"Benutzerdefinierte Entscheidungslinse — wird dem Sitz wörtlich gesendet.","councilCustomOption":"{{persona}} (benutzerdefiniert)","councilVeto":"Veto","councilAddVoter":"Wähler hinzufügen","councilRiskFloorLabel":"Risiko-Untergrenze","councilRiskFloorHint":"Mindestfragenrisiko, das den Rat statt der Einzelmodell-Stufe einberuft.","councilJudge":"Richter","councilJudgeDesc":"Stichentscheid-Modell, das die Begründung jeder Stimme sieht.","councilResolved":"aufgelöst: {{model}}","councilAlsoVoter":"⚠ auch ein Wähler","councilAuto":"auto","councilPick":"Auswählen…","councilAutoReset":"Auto","councilQuorumLabel":"Quorum","councilQuorumHint":"Anteil der Sitze, die eine gültige Stimme abgeben müssen.","councilApprovalLabel":"Zustimmung","councilApprovalHint":"Anteil des abgegebenen Stimmengewichts, den die Gewinneroption überschreiten muss.","councilPerSeatTimeoutLabel":"Timeout pro Sitz","councilPerSeatTimeoutHint":"Zeitbudget für die Stimme eines einzelnen Sitzes. Langsamer als das Entscheidungs-Timeout bedeutet, dass ein hängender Sitz die Abstimmung aufhält.","councilMaxConcurrencyLabel":"Max. Parallelität","councilMaxConcurrencyHint":"Wie viele Sitze parallel abstimmen. Verringern, wenn der Pool einen ratenbegrenzten Provider teilt.","councilDistinctnessLabel":"Sitzverschiedenheit","councilDistinctnessHint":"Doppelte Sitze ablehnen: 'model' erfordert verschiedene Modelle, 'provider' unabhängige Provider, damit ein Ausfall die Abstimmung nicht kippen kann.","councilVoterBudgetLabel":"Wähler-Antwortbudget","councilVoterBudgetHint":"Ausgabetoken pro Sitzaufruf — Reasoning-Modelle verbrauchen ihre Denk-Token aus diesem Budget.","councilJudgeBudgetLabel":"Richter-Antwortbudget","councilJudgeBudgetHint":"Ausgabetoken für den stichentscheidenden Richteraufruf.","councilSeatTemplate":"Sitzvorlage:","ledgerHeading":"Entscheidungsprotokoll","ledgerRecordLabel":"Entscheidungen + Ergebnisse aufzeichnen","ledgerRecordHint":"Speichert jede Entscheidung und ihr beobachtetes Ergebnis; ähnliche vergangene Ergebnisse fließen in zukünftige Brain-Prompts ein.","ledgerAutoDenyLabel":"Nach Fehlern automatisch ablehnen","ledgerAutoDenyHint":"Deterministisch ablehnen (ohne LLM), sobald so viele aufeinanderfolgende Genehmigungen einer Entscheidungsgruppe in beobachteten Fehlern endeten.","ledgerMemoryEntriesLabel":"In-Memory-Einträge","ledgerMemoryEntriesHint":"Ringgröße im Speicher und Anzahl der beim Start von der Festplatte geladenen früheren Einträge.","ledgerRetryWindowLabel":"Interventions-Wiederholungsfenster","ledgerRetryWindowHint":"Eine gleichartige Monitor-Intervention, die innerhalb dieses Fensters erneut auslöst, markiert die vorherige Steuerung als Fehlschlag.","recentHeading":"Letzte Entscheidungen ({{count}})","recentEmpty":"In dieser Sitzung wurden noch keine Entscheidungen aufgezeichnet.","optInteractive":"Interaktiv (mich fragen)","optHeadless":"Headless (nie fragen)","optConservative":"Konservativ (Standard)","optDenyAll":"Alles ablehnen","optContinueRecommended":"Mit Empfehlung fortfahren","optNeverDefault":"Nie (Standard)","optWhenDecided":"Wenn entschieden","optAlways":"Immer","optFullDefault":"Voll (Standard)","optRedacted":"Gekürzt","optMetadataOnly":"Nur Metadaten","optConsultBrain":"Brain konsultieren (Standard)","optAlwaysSteer":"Immer steuern","optObserveOnly":"Nur beobachten","optFallback":"Fallback","optRoundRobin":"Round-Robin","optMediumPlus":"Mittel+","optHighPlus":"Hoch+","optCriticalOnly":"Nur kritisch","optNoneDefault":"Keine (Standard)","optDistinctModels":"Verschiedene Modelle","optDistinctProviders":"Verschiedene Provider","optDefault3":"Standard (3)","optOff":"Aus","pickPoolTitle":"Brain-Pool-Modell hinzufügen","pickPoolHint":"Geordneter Entscheidungspool — der erste ist primär.","pickVoterTitle":"Ratsmitglied hinzufügen","pickVoterHint":"Dialog bleibt offen — ≥2 Wähler hinzufügen, dann schließen.","pickJudgeTitle":"Ratsrichter wählen","pickJudgeHint":"Stichentscheid, der jede Stimme sieht.","persistError":"Einstellungen live angewendet, aber nicht gespeichert.","riskCopy":{"off":"Ein Mensch entscheidet alles","low":"Nur niedriges Risiko automatisch entscheiden","medium":"Automatisch bis mittleres Risiko entscheiden","high":"Automatisch bis hohes Risiko entscheiden","all":"Alles automatisch entscheiden"},"rulesConfigured_one":"{{count}} konfiguriert","rulesConfigured_other":"{{count}} konfiguriert"}`),O={default15s:`Standard (15 s)`,waitForever:`Unbegrenzt warten`,defaultHalf:`Standard (0,5)`,all:`Alle`,n200Default:`200 (Standard)`,offDefault:`Aus (Standard)`,n20Default:`20 (Standard)`,m5Default:`5 min (Standard)`,default:`Standard`,oneSerial:`1 (seriell)`,default500:`Standard (500)`,default10m:`Standard (10 min)`},k={capToolCall:`Tool-Aufruf`,capReasoning:`Reasoning`,capTemperature:`Temperatur`,capAttachment:`Anhang`,capStructuredOutput:`Strukturierte Ausgabe`,capOpenWeights:`Offene Gewichte`},A={title:e,subtitle:t,tabs:n,model:r,connection:i,provider:a,providerModels:o,mcp:s,allowlist:c,oauth:l,general:u,agent:d,execution:f,fallbacks:p,fleet:m,integrations:h,features:g,context:_,logs:v,security:y,toast:b,display:x,resetLabel:S,cancel:C,resetConfirmTitle:w,resetConfirmBody:T,resetConfirmAction:E,brain:D,brainOpt:O,modelSchema:k};export{d as agent,c as allowlist,D as brain,O as brainOpt,C as cancel,i as connection,_ as context,A as default,x as display,f as execution,p as fallbacks,g as features,m as fleet,u as general,h as integrations,v as logs,s as mcp,r as model,k as modelSchema,l as oauth,a as provider,o as providerModels,E as resetConfirmAction,T as resetConfirmBody,w as resetConfirmTitle,S as resetLabel,y as security,t as subtitle,n as tabs,e as title,b as toast};
@@ -1 +0,0 @@
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.`,generalDesc:`Aparência, idioma e preferências de exibição — espelha o seletor de configurações da TUI.`,providerDesc:`Chaves de API, provedores salvos e o catálogo de provedores.`,connectionDesc:`URL do servidor WebSocket e saúde da conexão.`,agentDesc:`Autonomia, refinamento de prompts, raciocínio e roteamento de modelos.`,executionDesc:`Limites de iterações, comportamento de saída e disjuntor de processo.`,fallbacksDesc:`Cadeia de fallback de modelos, favoritos e perfis de fallback nomeados.`,routingDesc:`Matriz de roteamento de modelos por fase e por função.`,fleetDesc:`Concorrência de subagentes, streaming e previsão do próximo passo.`,integrationsDesc:`Cliente HQ, servidores MCP e notificações do Telegram.`,chimeraDesc:`Configuração do agente de revisão de código pós-sessão.`,contextDesc:`Flags de recursos, estratégia de contexto, compactador e controles de plugins.`,logsDesc:`Nível de log, detalhe de auditoria, escopo de acesso ao sistema de arquivos e stream de depuração.`,securityDesc:`Controle de decisão Brain, agente sombra e acesso a ferramentas.`},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}}`,webuiTransport:`Transporte do WebUI`,serviceAutoRestarting:`Reiniciando automaticamente…`},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={addCustom:`Adicionar modelo personalizado`,addCustomTitle:`Adicionar modelo personalizado`,addFromCatalog:`Adicionar do catálogo`,catalogSearchPlaceholder:`Pesquisar no catálogo models.dev…`,catalogSearchTitle:`Pesquisar no catálogo models.dev`,colActions:`Ações`,colCaps:`Capacidades`,colContext:`Contexto`,colCost:`Custo`,colModalities:`Modalidades`,colModel:`Modelo`,colOutput:`Saída`,colSource:`Origem`,editModel:`Editar modelo`,emptyState:`Nenhum modelo ainda — adicione do catálogo ou crie um modelo personalizado.`,fieldContext:`Janela de contexto`,fieldCostInput:`Custo de entrada`,fieldCostOutput:`Custo de saída`,fieldDescription:`Descrição`,fieldFamily:`Família`,fieldInputLimit:`Limite de entrada`,fieldInputModalities:`Modalidades de entrada`,fieldLastUpdated:`Última atualização`,fieldName:`Nome`,fieldOutput:`Saída máxima`,fieldOutputModalities:`Modalidades de saída`,fieldReleaseDate:`Data de lançamento`,modelAdded:`{{model}} adicionado`,modelRemoved:`{{model}} removido`,modelSaved:`{{model}} salvo`,noResults:`Nenhum modelo encontrado`,removeModel:`Remover modelo`,sectionCapabilities:`Indicadores de capacidades`,sectionDates:`Datas`,sectionIdentity:`Identidade`,sectionLimits:`Limites`,sectionModalities:`Modalidades`,sectionPricing:`Preços (por 1M de tokens, USD)`,tabForm:`Formulário`,tabRawJson:`JSON bruto`,typeToSearch:`Digite para pesquisar…`,useModel:`Usar {{model}}`,usingModel:`Usando {{model}}`,filterPlaceholder:`Filtrar modelos…`},s={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}}`},c={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`},l={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}}`},u={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.`,autoCollapseInputLabel:`Recolher editor sob o histórico`,autoCollapseInputHint:`Ao carregar uma sessão com mensagens, recolher o editor sob o histórico. Desativado por padrão — o editor permanece expandido até ser recolhido manualmente.`,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.`,paletteHeading:`Paleta de cores`,paletteSwitcherTitle:`Paleta de cores`,paletteHint:`Escolha a cor principal (e suas derivadas). As superfícies neutras permanecem as mesmas.`,paletteSignal:`Sinal`,paletteEmeraldGold:`Esmeralda e dourado`,paletteBlueNavy:`Azul-marinho`,palettePurplePink:`Roxo e rosa`,paletteCyanTeal:`Ciano e verde-azulado`,paletteRoseCopper:`Rosa e cobre`,paletteIndigoAmber:`Índigo e âmbar`,paletteSageSand:`Salvia e areia`,paletteSlateViolet:`Lousa e violeta`,paletteCoralMint:`Coral e hortelã`,paletteArcticEmber:`Ártico e brasa`,paletteMossRust:`Musgo e ferrugem`},d={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`,autonomyDelayMsLabel:`Atraso de continuação automática`,autonomyDelayMsHint:`Milissegundos antes de o agente continuar automaticamente no modo Auto. 0 = imediato.`,refineCountdownLabel:`Contagem regressiva de refinamento`,refineCountdownHint:`Período de carência antes do envio automático do prompt refinado (milissegundos).`,reasoningEffortModelSet:`níveis do modelo ativo`},f={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.`},p={heading:`Modelos fallback / round-robin`,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 fallback / round-robin`,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`},m={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.`,nextStepsToolLabel:`Ferramenta nextsteps`,nextStepsToolHint:`Permite que o agente registre as sugestões com uma chamada de ferramenta em vez de escrever o bloco manualmente. Vale na próxima sessão.`},h={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.`},g={chimeraDedicatedHeading:`Chimera — Post-session Code Review`,chimeraDedicatedHint:`Automated code quality review that runs after every agent session. Catches regressions, anti-patterns, and potential bugs.`,chimeraSectionEnabled:`Post-session review (Chimera)`,chimeraSectionEnabledHint:`Run a code review agent after every iteration.`,chimeraProviderLabel:`Chimera provider`,chimeraProviderHint:`Provider for the review agent. Select one from your configured providers.`,chimeraProviderSessionDefault:`Session default`,chimeraModelLabel:`Model`,chimeraModelSessionDefault:`Session default`,chimeraModelHint:`Model for the review agent. Requires a provider first.`,chimeraMaxFilesLabel:`Max files per review`,chimeraMaxFilesHint:`Maximum number of changed files included in a single review call.`,chimeraAutoFixLabel:`Auto-fix mode`,chimeraAutoFixHint:`Whether the review agent should automatically apply fixes for issues it finds.`,chimeraAutoFixOff:`Off — review only`,chimeraAutoFixAsk:`Ask — confirm before applying`,chimeraAutoFixAuto:`Auto — apply without confirmation`,autoReviewCascadeOnLabel:`Cascata em`,autoReviewCascadeOnHint:`Quando uma revisão encontra problemas nesta gravidade ou superior, inicia agentes de acompanhamento.`,autoReviewCascadeOnOff:`Desativado`,autoReviewCascadeOnHigh:`Alta ou superior`,autoReviewCascadeOnCritical:`Apenas crítica`,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:`Perfil fallback / round-robin`,autoReviewFallbackProfileHint:`Perfil de modelos para auto-review; fornece o pool de fallback e os modelos para round-robin ou seleção aleatória.`,autoReviewFallbackProfileNone:`None — use provider+model or session defaults`,autoReviewModelSelectionLabel:`Seleção do perfil`,autoReviewModelSelectionHint:`Escolhe o próximo modelo na ordem ou um modelo inicial aleatório para cada revisão.`,autoReviewModelSelectionRoundRobin:`Round-robin — ordem do perfil`,autoReviewModelSelectionRandom:`Aleatório — escolher do perfil`,autoReviewFallbackModelsLabel:`Modelos fallback / round-robin`,autoReviewFallbackModelsEmpty:`Nenhum modelo fallback / round-robin configurado`,autoReviewFallbackModelsHint:`Modelos do perfil ou cadeia global; formam o pool de seleção e a cadeia de nova tentativa.`,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.`},_={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:`Controla os esquemas diretos e o prompt do sistema da próxima sessão.`,tokenSavingAuto:`Auto — adaptar o prompt à janela do modelo`,tokenSavingOff:`Desativado — sem economia`,tokenSavingMinimal:`Mínimo — otimização básica`,tokenSavingLight:`Leve — redução moderada`,tokenSavingMedium:`Médio — economias significativas`,tokenSavingAggressive:`Agressivo — menor superfície direta e prompt`},v={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`},y={heading:`Security & Monitoring`,brainHeading:`🧠 Brain — Controle de decisões`,brainHint:`Modelos de decisão, conselho, escalonamento e teto de risco — aplicados na hora e salvos na configuração global.`,shadowHeading:`👁 Agente sombra — Monitor da frota`,shadowHint:`O agente sombra monitora todos os agentes da frota, acompanha suas tarefas e detecta anomalias.`,toolsHeading:`🔧 Tool Access Control`,toolsHint:`Ative ou desative ferramentas individuais. Ferramentas que alteram dados aparecem em âmbar.`,breakerHeading:`Process Circuit Breaker`,breakerHint:`Restringe bash/exec após falhas repetidas; o acionamento inicia a contagem regressiva de encerramento/reinício.`},b={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.`},x={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.`,sageRelaxed:`0,72 (relaxado)`,sageDefault:`0,85 (padrão)`,sageStrict:`0,95 (rigoroso)`},S=`Redefinir`,C=`Cancelar`,w=`Redefinir todas as preferências?`,T=`Isso restaura as configurações padrão e recarrega a página.`,E=`Redefinir`,D=JSON.parse(`{"heading":"Brain","headingHint":"Modelos de decisão, conselho, escalada e teto de risco — aplicados em tempo real, salvos na configuração global.","riskHeading":"Teto de autonomia","escalationHeading":"Escalada","escalationModeLabel":"Modo","escalationModeHint":"Headless: o Brain nunca bloqueia esperando um humano — escaladas sem resposta são resolvidas pela política terminal segura. Aplica-se a sessões CLI/TUI; o Brain WebUI independente é sempre headless.","escalationDecisionTimeoutLabel":"Tempo limite de decisão","escalationDecisionTimeoutHint":"Orçamento de tempo por chamada LLM para uma decisão do Brain.","escalationHumanTimeoutLabel":"Tempo limite de resposta humana","escalationHumanTimeoutHint":"Modo interativo: quanto tempo um aviso de escalada pode esperar antes que a política terminal o resolva.","escalationTerminalPolicyLabel":"Política terminal","escalationTerminalPolicyHint":"Como uma escalada headless é resolvida sem humano disponível. Conservador aceita uma opção recomendada em risco baixo/médio; negar-tudo nunca aceita automaticamente; continuar-com-recomendação aceita uma opção recomendada em QUALQUER risco.","escalationDecisionLogSizeLabel":"Tamanho do registro de decisões","escalationDecisionLogSizeHint":"Registro de decisões em memória rotativo mantido para a visão de status.","rulesHeading":"Regras determinísticas","rulesConfigured":"{{count}} configurada(s)","rulesBody":"Avaliadas antes de qualquer chamada ao provedor — a primeira correspondência vence. Edite-as no arquivo de configuração global; esta visão é somente leitura.","rulesOff":"desativada","rulesDropped":"{{count}} regra(s) descartada(s)","heuristicsHeading":"Heurísticas","heuristicsBody":"Suposições de padrão gratuitas que resolvem uma pergunta antes que um modelo execute. Todas ativas por padrão — desligue aquela cuja suposição esteja errada para sua carga de trabalho.","heuristicsLowRiskLabel":"Resposta automática de baixo risco","heuristicsLowRiskHint":"Responda automaticamente solicitações de baixo risco que já trazem uma opção recomendada.","heuristicsBlockedLabel":"Bloqueado-resolvido","heuristicsBlockedHint":"'blocked …' mais um marcador de resolução explícito no contexto resolve como continuar.","heuristicsDeadlockLabel":"Pular impasse","heuristicsDeadlockHint":"'deadlock' mais unidades de trabalho falhas no contexto resolve como pular e continuar.","heuristicsRetryLabel":"Novas tentativas esgotadas","heuristicsRetryHint":"'failed'/'retry' mais novas tentativas comprovadamente esgotadas marca a unidade como falha e segue.","heuristicsPingLabel":"Ping de continuação","heuristicsPingHint":"Um simples ping de continuar/prosseguir sem alternativa concorrente resolve como continuar.","heuristicsMarkers":"Marcadores: {{markers}}","qualityHeading":"Qualidade LLM","qualityCircuit_one":"circuito {{state}} · {{count}} falha","qualityCircuit_other":"circuito {{state}} · {{count}} falhas","qualityResponseBudgetLabel":"Orçamento de resposta","qualityResponseBudgetHint":"Tokens de saída por chamada de decisão. Uma resposta do Brain é uma decisão mais uma justificativa de uma frase.","qualityRejectLabel":"Rejeitar respostas incertas","qualityRejectHint":"Trata uma resposta recusada ou vazia como 'este nível não pôde decidir' em vez de aceitá-la como resposta.","qualityMinConfidenceLabel":"Confiança mínima","qualityMinConfidenceHint":"Rejeita respostas cuja confiança autodeclarada esteja abaixo disso. Respostas sem confiança declarada sempre passam.","qualityDenyTerminalLabel":"A recusa é terminal","qualityDenyTerminalHint":"Se uma recusa do nível LLM único encerra a decisão. 'when-decided' torna terminal uma recusa genuína enquanto falhas de infraestrutura ainda escalam.","traceHeading":"Trilha de replay","traceRecordLabel":"Registrar trilhas de decisão","traceRecordHint":"JSONL por decisão de cada nível, alvo do pool e voto do conselho, com tempos e uso de tokens. Desativado por padrão — ativar grava o conteúdo das decisões em disco.","traceContentLabel":"Conteúdo da trilha","traceContentHint":"'full' mantém pergunta e contexto (necessário para reproduzir uma decisão); 'redacted' trunca texto livre; 'none' registra apenas metadados.","cacheHeading":"Cache de decisões","cacheStats":"{{hits}} acertos / {{misses}} erros · {{size}} ativos","cacheReplayLabel":"Reproduzir vereditos idênticos","cacheReplayHint":"Reutiliza um veredito anterior do conselho/LLM para uma pergunta idêntica repetida. Níveis determinísticos e perguntar-a-um-humano nunca são armazenados; uma decisão que o registro observa como falha é expulsa.","cacheLifetimeLabel":"Vida das entradas","cacheLifetimeHint":"Por quanto tempo um veredito em cache continua reproduzível.","cacheMaxEntriesLabel":"Entradas máximas","cacheMaxEntriesHint":"Limite de vereditos ativos em cache.","monitorHeading":"Monitor","monitorBody":"Auto-ativação por sinais de sofrimento. O monitor é construído uma vez na inicialização, então estes ajustes valem para a próxima sessão, não em tempo real.","monitorWatchLabel":"Vigiar sinais de sofrimento","monitorWatchHint":"Sequências de falhas de ferramentas, tempestades de erros, travamentos de agentes e churn de arquivos acionam o Brain sozinhos.","monitorPolicyLabel":"Política de sinais","monitorPolicyHint":"Como um sinal detectado é resolvido. 'llm' consulta o Brain; 'steer' sempre intervém e 'observe' nunca — ambos sem chamada ao provedor.","modelsHeading":"Modelos de decisão","modelsSessionBadge":"modelo da sessão","modelsResolvedBadge":"{{resolved}}/{{total}} resolvidos","modelsUseSessionLabel":"Usar modelo da sessão","modelsUseSessionHint":"Decidir com o modelo que a sessão está executando. Desligar adicionando modelos abaixo.","modelsAddModel":"Adicionar modelo","modelsPoolStrategyLabel":"Estratégia do pool","modelsPoolStrategyHint":"Fallback: o primeiro modelo é primário, os demais são tentados em ordem na falha. Round-robin: as decisões rotacionam pelo pool.","councilHeading":"Conselho","councilConvened":"convocado","councilDisabled":"desativado","councilEnableLabel":"Ativar conselho multi-LLM","councilEnableHint":"Perguntas de alto risco são votadas por assentos independentes (executor / cético-com-veto / auditor) em vez de um único modelo. Exige ≥2 votantes resolvíveis (assentos explícitos abaixo, ou um pool de ≥2 modelos).","councilSeatsDerived":"Assentos derivados do pool: {{seats}}","councilCustomLens":"Lente de decisão personalizada — enviada ao assento literalmente.","councilCustomOption":"{{persona}} (personalizado)","councilVeto":"veto","councilAddVoter":"Adicionar votante","councilRiskFloorLabel":"Piso de risco","councilRiskFloorHint":"Risco mínimo da pergunta que convoca o conselho em vez do nível mono-modelo.","councilJudge":"Juiz","councilJudgeDesc":"Modelo de desempate que vê a justificativa de cada voto.","councilResolved":"resolvido: {{model}}","councilAlsoVoter":"⚠ também votante","councilAuto":"auto","councilPick":"Escolher…","councilAutoReset":"Auto","councilQuorumLabel":"Quórum","councilQuorumHint":"Fração de assentos que deve retornar um voto válido.","councilApprovalLabel":"Aprovação","councilApprovalHint":"Fração do peso dos votos emitidos que a opção vencedora deve exceder.","councilPerSeatTimeoutLabel":"Tempo limite por assento","councilPerSeatTimeoutHint":"Orçamento de tempo para o voto de um único assento. Mais lento que o tempo de decisão significa que um assento travado segura o voto.","councilMaxConcurrencyLabel":"Concorrência máxima","councilMaxConcurrencyHint":"Quantos assentos votam em paralelo. Reduza quando o pool compartilha um provedor com limite de taxa.","councilDistinctnessLabel":"Distinção de assentos","councilDistinctnessHint":"Rejeita assentos duplicados: 'model' exige modelos distintos, 'provider' provedores independentes para que uma queda não possa influenciar o voto.","councilVoterBudgetLabel":"Orçamento de resposta do votante","councilVoterBudgetHint":"Tokens de saída por chamada de assento — modelos de raciocínio gastam seus tokens de pensamento deste orçamento.","councilJudgeBudgetLabel":"Orçamento de resposta do juiz","councilJudgeBudgetHint":"Tokens de saída para a chamada do juiz de desempate.","councilSeatTemplate":"Modelo de assento:","ledgerHeading":"Registro de decisões","ledgerRecordLabel":"Registrar decisões + resultados","ledgerRecordHint":"Persiste cada decisão e seu resultado observado; resultados passados semelhantes são realimentados em prompts futuros do Brain.","ledgerAutoDenyLabel":"Auto-recusar após falhas","ledgerAutoDenyHint":"Recusar deterministicamente (sem LLM) quando este número de aprovações consecutivas de um grupo de decisões terminou em falhas observadas.","ledgerMemoryEntriesLabel":"Entradas em memória","ledgerMemoryEntriesHint":"Tamanho do anel em memória e o número de entradas passadas carregadas do disco na inicialização.","ledgerRetryWindowLabel":"Janela de nova tentativa de intervenção","ledgerRetryWindowHint":"Uma intervenção do monitor do mesmo tipo que se reativa nesta janela marca a orientação anterior como falha.","recentHeading":"Decisões recentes ({{count}})","recentEmpty":"Nenhuma decisão registrada nesta sessão.","optInteractive":"Interativo (pergunte-me)","optHeadless":"Headless (nunca perguntar)","optConservative":"Conservador (padrão)","optDenyAll":"Negar tudo","optContinueRecommended":"Continuar com recomendação","optNeverDefault":"Nunca (padrão)","optWhenDecided":"Quando decidido","optAlways":"Sempre","optFullDefault":"Completo (padrão)","optRedacted":"Redigido","optMetadataOnly":"Somente metadados","optConsultBrain":"Consultar o Brain (padrão)","optAlwaysSteer":"Orientar sempre","optObserveOnly":"Apenas observar","optFallback":"Fallback","optRoundRobin":"Round-robin","optMediumPlus":"Médio+","optHighPlus":"Alto+","optCriticalOnly":"Somente crítico","optNoneDefault":"Nenhum (padrão)","optDistinctModels":"Modelos distintos","optDistinctProviders":"Provedores distintos","optDefault3":"Padrão (3)","optOff":"Desativado","pickPoolTitle":"Adicionar modelo ao pool do Brain","pickPoolHint":"Pool de decisão ordenado — o primeiro é primário.","pickVoterTitle":"Adicionar votante ao conselho","pickVoterHint":"A caixa de diálogo permanece aberta — adicione ≥2 votantes e depois feche.","pickJudgeTitle":"Escolher juiz do conselho","pickJudgeHint":"Desempate que vê cada voto.","persistError":"Configurações aplicadas em tempo real, mas não salvas.","riskCopy":{"off":"Um humano decide tudo","low":"Decidir automaticamente apenas baixo risco","medium":"Decidir automaticamente até risco médio","high":"Decidir automaticamente até alto risco","all":"Decidir automaticamente tudo"},"rulesConfigured_one":"{{count}} configurada","rulesConfigured_other":"{{count}} configuradas"}`),O={default15s:`Padrão (15 s)`,waitForever:`Esperar indefinidamente`,defaultHalf:`Padrão (0,5)`,all:`Todos`,n200Default:`200 (padrão)`,offDefault:`Desativado (padrão)`,n20Default:`20 (padrão)`,m5Default:`5 min (padrão)`,default:`Padrão`,oneSerial:`1 (serial)`,default500:`Padrão (500)`,default10m:`Padrão (10 min)`},k={capToolCall:`Chamada de ferramenta`,capReasoning:`Raciocínio`,capTemperature:`Temperatura`,capAttachment:`Anexo`,capStructuredOutput:`Saída estruturada`,capOpenWeights:`Pesos abertos`},A={title:e,subtitle:t,tabs:n,model:r,connection:i,provider:a,providerModels:o,mcp:s,allowlist:c,oauth:l,general:u,agent:d,execution:f,fallbacks:p,fleet:m,integrations:h,features:g,context:_,logs:v,security:y,toast:b,display:x,resetLabel:S,cancel:C,resetConfirmTitle:w,resetConfirmBody:T,resetConfirmAction:E,brain:D,brainOpt:O,modelSchema:k};export{d as agent,c as allowlist,D as brain,O as brainOpt,C as cancel,i as connection,_ as context,A as default,x as display,f as execution,p as fallbacks,g as features,m as fleet,u as general,h as integrations,v as logs,s as mcp,r as model,k as modelSchema,l as oauth,a as provider,o as providerModels,E as resetConfirmAction,T as resetConfirmBody,w as resetConfirmTitle,S as resetLabel,y as security,t as subtitle,n as tabs,e as title,b as toast};