@wrongstack/webui 0.299.0 → 0.301.0

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 (180) hide show
  1. package/dist/assets/AgentRosterView-BV6ysoGs.js +9 -0
  2. package/dist/assets/{AnalyticsDashboard-D58kSekC.js → AnalyticsDashboard-UWNP8zjE.js} +1 -1
  3. package/dist/assets/AudienceMemoryPanel-DwDKbvSA.js +3 -0
  4. package/dist/assets/ChangesView-DuVlGWkD.js +1 -0
  5. package/dist/assets/ChronicleDashboard-cs16n708.js +1 -0
  6. package/dist/assets/CodeEditor-sr50ljZN.js +1 -0
  7. package/dist/assets/CodeMap-CtK-C8gK.js +1 -0
  8. package/dist/assets/ConfirmModal-ndS17YwF.js +1 -0
  9. package/dist/assets/CronJobsPanel-Dovomns5.js +1 -0
  10. package/dist/assets/DeadCodeScanPanel-DjR4LLMs.js +2 -0
  11. package/dist/assets/DebugDashboard-jK1yp3qS.js +1 -0
  12. package/dist/assets/DesignGalleryView-CqXlEUzE.js +1 -0
  13. package/dist/assets/GoalView-CGNLrnA4.js +1 -0
  14. package/dist/assets/KanbanView--tAf_K7N.js +3 -0
  15. package/dist/assets/{MailboxDetailView-ZcKcOEAe.js → MailboxDetailView-0TBzZTdN.js} +1 -1
  16. package/dist/assets/MemoryManager-CDK_MO8A.js +1 -0
  17. package/dist/assets/{ModelPicker-DvNLZzkm.js → ModelPicker-BbBZuQwR.js} +1 -1
  18. package/dist/assets/OfficeMapPanel-68sVzHRD.js +4 -0
  19. package/dist/assets/OfficeMapPanel-D6yTfGIT.css +1 -0
  20. package/dist/assets/{ProcessMonitor-2nSk6sXA.js → ProcessMonitor-gFwiF8gX.js} +1 -1
  21. package/dist/assets/{QueuePanel-4KBBWFxj.js → QueuePanel-Cx-isRGl.js} +1 -1
  22. package/dist/assets/{RefreshDebugView-D3XnE53y.js → RefreshDebugView-C9tdu6Ld.js} +1 -1
  23. package/dist/assets/RequirementIntakeView-cPEw-RpV.js +1 -0
  24. package/dist/assets/SageTabs-BbK6VFO0.js +2 -0
  25. package/dist/assets/SddHub-NKvDRECi.js +2 -0
  26. package/dist/assets/SessionInspectView-DPG5qWhj.js +1 -0
  27. package/dist/assets/SessionList-ncl-20X_.js +1 -0
  28. package/dist/assets/SessionsDashboard-D23UVLr4.js +1 -0
  29. package/dist/assets/SetupScreen-D3XQ8MGk.js +1 -0
  30. package/dist/assets/{SkillDetailView-D7EQ2XtV.js → SkillDetailView-DDPhVFet.js} +1 -1
  31. package/dist/assets/SpecsView-afIS0QpX.js +1 -0
  32. package/dist/assets/TechStackView-kQ2OGxxw.js +1 -0
  33. package/dist/assets/{TerminalPanel-BL9ZPGJt.js → TerminalPanel-GcJWeldW.js} +1 -1
  34. package/dist/assets/{Toaster-CJI70aa-.js → Toaster-CgQA9256.js} +1 -1
  35. package/dist/assets/activity-B-cvKIfT.js +9 -0
  36. package/dist/assets/activity-Ba3aMzvo.js +9 -0
  37. package/dist/assets/activity-CRTVZ5A4.js +9 -0
  38. package/dist/assets/activity-DsSuflRW.js +9 -0
  39. package/dist/assets/activity-DxDRJ8kN.js +9 -0
  40. package/dist/assets/activity-VI776bUZ.js +9 -0
  41. package/dist/assets/activity-nVmsmqAI.js +9 -0
  42. package/dist/assets/chat-BPuAsrkF.js +1 -0
  43. package/dist/assets/chat-BfQBSiII.js +1 -0
  44. package/dist/assets/chat-BnkVCZ3Q.js +1 -0
  45. package/dist/assets/chat-CR2B97dj.js +1 -0
  46. package/dist/assets/chat-CdiY7G6Z.js +1 -0
  47. package/dist/assets/chat-DResBrkV.js +1 -0
  48. package/dist/assets/chat-Di8o0wDz.js +1 -0
  49. package/dist/assets/chat-store-DbxFVDwi.js +17 -0
  50. package/dist/assets/{common-DMM-xyW3.js → common-BXJbu5Y-.js} +1 -1
  51. package/dist/assets/{common-C9ikgX7d.js → common-BiNu_WzQ.js} +1 -1
  52. package/dist/assets/common-COVxQ0FV.js +1 -0
  53. package/dist/assets/{common-D29Zdkxb.js → common-Ch7JihXD.js} +1 -1
  54. package/dist/assets/{common-DoUBSHRY.js → common-DPaTeTls.js} +1 -1
  55. package/dist/assets/{common-vdwxzODB.js → common-DdGpRh8j.js} +1 -1
  56. package/dist/assets/{common-C5hY-d_0.js → common-pI6fYZW3.js} +1 -1
  57. package/dist/assets/i18n-COgumVF5.js +2 -0
  58. package/dist/assets/index-CtpViiZy.js +132 -0
  59. package/dist/assets/index-fIsq43fR.css +1 -0
  60. package/dist/assets/mailbox-store-C1mzoSqJ.js +1 -0
  61. package/dist/assets/{progress-ring-61A-xUEl.js → progress-ring-D_48qsBl.js} +1 -1
  62. package/dist/assets/{roster-ws-Dfg_187V.js → roster-ws-Da57e_sI.js} +1 -1
  63. package/dist/assets/session-store-Df7_hhe9.js +1 -0
  64. package/dist/assets/settings-Bb7_utQE.js +1 -0
  65. package/dist/assets/settings-Bd8zMwvC.js +1 -0
  66. package/dist/assets/settings-DdFgBMAw.js +1 -0
  67. package/dist/assets/settings-De6sXIFO.js +1 -0
  68. package/dist/assets/settings-E8SKMLxq.js +1 -0
  69. package/dist/assets/settings-zIY9-ivF.js +1 -0
  70. package/dist/assets/settings-zKBcRjqE.js +1 -0
  71. package/dist/assets/stores-ChEnUmic.js +7 -0
  72. package/dist/assets/ui-store-CE4-TlwB.js +1 -0
  73. package/dist/assets/useWebSocket-_gk4MRJz.js +29 -0
  74. package/dist/assets/{view-navigation-DxfiZrXS.js → view-navigation-DIDEcp4V.js} +1 -1
  75. package/dist/assets/ws-client-TTMa0XaT.js +1 -0
  76. package/dist/components/AgentCard.d.ts +21 -0
  77. package/dist/components/AgentsPage.d.ts +0 -3
  78. package/dist/components/AutonomyPicker.d.ts +1 -1
  79. package/dist/components/ChatInput/refine-panel-host.d.ts +2 -2
  80. package/dist/components/ChatView/auto-collapse.d.ts +42 -0
  81. package/dist/components/ConfirmModal.d.ts +7 -2
  82. package/dist/components/FallbackModal.d.ts +2 -0
  83. package/dist/components/KanbanBoardState.d.ts +1 -1
  84. package/dist/components/KanbanVerificationDashboard.d.ts +0 -6
  85. package/dist/components/SettingsPanel/PluginToggleList.d.ts +11 -3
  86. package/dist/components/SettingsPanel/ShadowSection.d.ts +18 -1
  87. package/dist/components/SettingsPanel/brain-section-options.d.ts +27 -55
  88. package/dist/components/TaskCard.d.ts +0 -1
  89. package/dist/components/TaskRiskPanel.d.ts +10 -3
  90. package/dist/components/TechStackView/shared.d.ts +11 -6
  91. package/dist/components/ThemeProvider.d.ts +6 -1
  92. package/dist/components/agent-roster-data.d.ts +2 -1
  93. package/dist/components/index.d.ts +0 -1
  94. package/dist/hooks/useWebSocket.d.ts +10 -2
  95. package/dist/hooks/ws-handlers/files-mailbox-handlers.d.ts +1 -0
  96. package/dist/hooks/ws-handlers/misc-handlers.d.ts +13 -0
  97. package/dist/hooks/ws-handlers/session-handlers.d.ts +1 -0
  98. package/dist/index.css +62 -0
  99. package/dist/index.html +18 -17
  100. package/dist/index.js +26640 -12728
  101. package/dist/lib/file-icons.d.ts +3 -3
  102. package/dist/lib/kanban-board-active.d.ts +19 -0
  103. package/dist/lib/palettes.d.ts +37 -0
  104. package/dist/lib/plugin-enablement.d.ts +1 -1
  105. package/dist/lib/ws-client.d.ts +24 -4
  106. package/dist/providers.json +7 -7
  107. package/dist/stores/config-store.d.ts +9 -1
  108. package/dist/stores/context-editor-store.d.ts +9 -1
  109. package/dist/stores/fallback-store.d.ts +30 -0
  110. package/dist/stores/fleet-store.d.ts +14 -1
  111. package/dist/stores/index.d.ts +2 -0
  112. package/dist/stores/local-prefs.d.ts +13 -0
  113. package/dist/stores/mailbox-store.d.ts +2 -0
  114. package/dist/stores/session-store.d.ts +9 -1
  115. package/dist/stores/ui-store.d.ts +2 -0
  116. package/dist/types/brain.d.ts +2 -0
  117. package/dist/types/client-message.d.ts +19 -2
  118. package/dist/types/protocol-core.d.ts +21 -0
  119. package/dist/types/runtime.d.ts +22 -0
  120. package/dist/types/server-message.d.ts +15 -4
  121. package/package.json +9 -9
  122. package/dist/assets/AgentRosterView-BqojERFR.js +0 -11
  123. package/dist/assets/AudienceMemoryPanel-Cc1UkbDl.js +0 -3
  124. package/dist/assets/ChangesView-BKU80ANq.js +0 -1
  125. package/dist/assets/ChronicleDashboard-CvCS1Dj1.js +0 -1
  126. package/dist/assets/CodeEditor-BHZQhx_8.js +0 -1
  127. package/dist/assets/CodeMap-qllGEFLB.js +0 -1
  128. package/dist/assets/CronJobsPanel-DD5mhZ4Q.js +0 -1
  129. package/dist/assets/DeadCodeScanPanel-PB-c8et_.js +0 -2
  130. package/dist/assets/DebugDashboard-Q8QiVflQ.js +0 -1
  131. package/dist/assets/DesignGalleryView-CGOtWO7s.js +0 -1
  132. package/dist/assets/GoalView-Dlk42vW7.js +0 -1
  133. package/dist/assets/KanbanView-DIP6kKmU.js +0 -3
  134. package/dist/assets/MemoryManager-B7620q_K.js +0 -1
  135. package/dist/assets/OfficeMapPanel-BFIF-EMt.css +0 -1
  136. package/dist/assets/OfficeMapPanel-DKJNTtOZ.js +0 -4
  137. package/dist/assets/RequirementIntakeView-BMxlf8bt.js +0 -1
  138. package/dist/assets/SageTabs-g1hO2hJ0.js +0 -2
  139. package/dist/assets/SddHub-Kv_TbTgT.js +0 -2
  140. package/dist/assets/SessionInspectView-PnKTvyvP.js +0 -1
  141. package/dist/assets/SessionList-BeinIC-h.js +0 -1
  142. package/dist/assets/SessionsDashboard-DEG_BylE.js +0 -1
  143. package/dist/assets/SetupScreen-DxJwZ1OZ.js +0 -1
  144. package/dist/assets/SpecsView-Fm7pYYcj.js +0 -1
  145. package/dist/assets/TechStackView-Bo_UenRF.js +0 -1
  146. package/dist/assets/activity-BCgOEWgR.js +0 -5
  147. package/dist/assets/activity-BQ0zqkw2.js +0 -5
  148. package/dist/assets/activity-CAovbq3e.js +0 -5
  149. package/dist/assets/activity-CFQyCvgu.js +0 -5
  150. package/dist/assets/activity-CdQf7zRK.js +0 -5
  151. package/dist/assets/activity-DACvyn2-.js +0 -5
  152. package/dist/assets/activity-DOwYydU-.js +0 -5
  153. package/dist/assets/chat-CRmMDzCb.js +0 -1
  154. package/dist/assets/chat-CwnuX7tG.js +0 -1
  155. package/dist/assets/chat-DLn1hY01.js +0 -1
  156. package/dist/assets/chat-DSEq1Bdz.js +0 -1
  157. package/dist/assets/chat-DxLD17ER.js +0 -1
  158. package/dist/assets/chat-DzPxYALH.js +0 -1
  159. package/dist/assets/chat-OunddzYy.js +0 -1
  160. package/dist/assets/chat-store-CtOyUCdF.js +0 -17
  161. package/dist/assets/common-BfVFjVhf.js +0 -1
  162. package/dist/assets/i18n-B0hsnanh.js +0 -2
  163. package/dist/assets/index-DHdO0CRE.js +0 -132
  164. package/dist/assets/index-DKrFQ76m.css +0 -1
  165. package/dist/assets/mailbox-store-D8TvJsuk.js +0 -1
  166. package/dist/assets/session-store-b2KGFwkX.js +0 -1
  167. package/dist/assets/settings-B5xal2R3.js +0 -1
  168. package/dist/assets/settings-BHtFy8EG.js +0 -1
  169. package/dist/assets/settings-Bss5hBla.js +0 -1
  170. package/dist/assets/settings-BzrLCVRP.js +0 -1
  171. package/dist/assets/settings-C7RdvmLZ.js +0 -1
  172. package/dist/assets/settings-Dd94HoV6.js +0 -1
  173. package/dist/assets/settings-Dm9THFe8.js +0 -1
  174. package/dist/assets/stores-BptlyD_v.js +0 -7
  175. package/dist/assets/ui-store-BsBnjO3w.js +0 -1
  176. package/dist/assets/useWebSocket-Bc4S0N4r.js +0 -29
  177. package/dist/assets/ws-client-DqFoX4jJ.js +0 -1
  178. package/dist/components/AgentsMonitor.d.ts +0 -26
  179. package/dist/components/FleetMonitor.d.ts +0 -21
  180. package/dist/lib/accent-colors.d.ts +0 -136
@@ -0,0 +1,9 @@
1
+ var e={chat:`Session`,agents:`Agents`,history:`Historique`,files:`Fichiers`,changes:`Modifications`,mailbox:`Boîte aux lettres`,skills:`Compétences`,worktrees:`Worktrees`,design:`Design Studio`,officemap:`Plan du bureau`,settings:`Paramètres`,sddhub:`SDD`,goal:`Goal`,memory:`Mémoire`,fleet:`Flotte`,inspector:`Inspecteur`,prompts:`Prompts`,kanban:`Kanban`,codemap:`CodeMap`,techstack:`TechStack`,chronicle:`Chronicle`,intake:`Exigences`,roster:`Effectif d'agents`},t={returnToChat:`{{name}} — retour au chat`,returnToChatDefault:`WrongStack — retour au chat`},n={connected:`Connecté`,disconnected:`Déconnecté`,idle:`Inactif`,thinking:`Réflexion`,running:`En cours`,waiting:`En attente`,done:`Terminé`,stopped:`Arrêté`},r={moreWithHidden:`Plus, {{count}} éléments masqués`,moreOptions:`Plus d'options`,moreCompactHidden:`Plus — {{count}} panneaux/vues masqués, palette, thème, moniteurs`,moreCompact:`Plus — palette, thème, moniteurs`,moreFull:`Plus — palette, thème, raccourcis, moniteurs`,commandPalette:`Palette de commandes`,keyboardShortcuts:`Raccourcis clavier`,panels:`Panneaux`,views:`Vues`,theme:`Thème`,monitors:`Moniteurs`,fleetMonitor:`Inspecteur de flotte`},i={dragHint:`Glisser pour redimensionner · double-clic pour réinitialiser`,collapse:`Réduire le panneau (Ctrl+\\)`},a={openDashboard:`Ouvrir le tableau de bord des sessions`},o={pending:`en attente…`,empty:`Aucun agent pour le moment`,emptyHint:`Les sous-agents apparaissent ici lorsque la flotte est active.`,runningCount:`{{count}} en cours`,totalCount:`{{count}} au total`,openFull:`Ouvrir l'inspecteur de flotte`,agentsLive:`AGENTS · LIVE`,doneCount:`{{count}} terminés`,failedCount:`{{count}} échecs`,modelsLabel:`modèles`,shownLabel:`affichés`,totalLabel:`total`,leaderFleetTotals:`(leader {{leader}} · flotte {{fleet}})`,navHintJk:`j/k ou ↑↓ pour naviguer`,escCloseDetail:`· Échap pour fermer le détail`,noAgentsRunning:`Aucun agent en cours.`,contextUsage:`Utilisation du contexte`,lastToolLabel:`dernier :`,unknownSession:`Session inconnue`,sessionCopyTitle:`Session : {{sid}} — cliquer pour copier`,sessionWord:`session`,agentsCountSuffix_one:`{{count}} agent`,agentsCountSuffix_other:`{{count}} agents`,sessionTitle:`Session : {{sid}}`,projectSuffix:` · Projet : {{name}}`,statusIdle:`inactif`,filterAll:`Tous`,filterRunning:`En cours`,filterDone:`Terminés`,filterCompleted:`Terminés`,filterFailed:`Échoués`,clearFinished:`Effacer`,clearFinishedTitle:`Supprimer les agents terminés`,rosterHint:`Flèches pour naviguer · Entrée pour développer`,itSuffix:`it.`,tcSuffix:`app.`,toolLog:`Journal des outils`,showAll:`Tout afficher`,showFewer:`Afficher moins`,streaming:`Diffusion en direct`,failure:`Échec`,timeout:`Délai dépassé`,reRun:`Relancer`,reRunTitle:`Relancer cet agent (pas encore implémenté)`,lastToolCalls_one:`Dernier appel d’outil ({{count}})`,lastToolCalls_other:`Derniers appels d’outils ({{count}})`,config:`Configuration`,configProvider:`Fournisseur`,configModel:`Modèle`,configDescription:`Description`,configTaskId:`ID de tâche`,transcript:`Transcription`,openInspector:`Ouvrir dans l’inspecteur de flotte`,emptyFilteredTitle:`Aucun agent ne correspond au filtre`,emptyFilteredHint:`Modifiez ou effacez le filtre pour afficher tous les agents.`,emptyFilteredClear:`Tout afficher`,emptyFinishedTitle:`Toutes les tâches sont terminées`,emptyFinishedHint:`Tous les agents ont terminé — effacez les agents terminés ou créez de nouvelles tâches pour voir l’activité ici.`,emptyFinishedStats:`{{completed}} terminés · {{failed}} échecs`},s={fileCount_one:`{{count}} fichier`,fileCount_other:`{{count}} fichiers`,refreshTitle:`Actualiser les modifications`,loading:`Chargement des modifications…`,clean:`Aucune modification — l'arbre de travail est propre.`,selectPrompt:`Sélectionnez un fichier modifié pour voir son diff.`,unified:`Unifié`,unifiedTitle:`Diff unifié`,edit:`Modifier`,editTitle:`Diff côte à côte modifiable`,loadingDiff:`Chargement du diff…`,diffTimeout:`Le diff n'est pas arrivé. Le fichier a peut-être changé ou la connexion a été perdue.`,binary:`Fichier binaire — diff non affiché.`,tooLarge:`Fichier trop volumineux pour le diff.`},c={openAgentsPanel:`Ouvrir le panneau des agents (flotte en direct)`,hidePanel:`Masquer le panneau Inspecteur`,label:`Inspecteur`,openAudit:`Ouvrir l'onglet Audit`,tabFleet:`Flotte`,tabAgents:`Agents`,tabAudit:`Audit`,tabCouncil:`Council`,councilCount:`{{count}} panel`,councilCount_other:`{{count}} panels`,councilClear:`Vider`,councilEmpty:`Aucun council n'a encore été convoqué dans cette session.`,councilEmptyHint:`Le Brain convoque un panel multi-modèles pour les questions atteignant ou dépassant son seuil de risque council. Configurable dans Paramètres › Brain › Council.`,collapseAria:`Réduire le panneau Inspecteur`,collapseTitle:`Réduire (Échap)`,noAgentsActive:`Aucun agent actif`,agentsAppearHint:`Les agents apparaissent ici lorsque la flotte est active.`,selected:`{{name}} (sélectionné)`},l={header:`Prochaines étapes`,autoSubmitting:`envoi automatique dans`,clickToFill:`cliquer pour remplir`,clickToFillTitle:`Cliquez pour remplir : {{text}}`,auto:`auto`,willAutoSubmit:`Envoi automatique après le compte à rebours`,autoFilling:`Remplissage en cours`,autoModeIdle:`Auto — en attente du marqueur auto="true"`,nSelected:`{{count}} sélectionnés`,submitN:`Envoyer {{count}}`,deselectTitle:`Désélectionner`,selectTitle:`Sélectionner pour l'envoi groupé`,nSelected_one:`{{count}} sélectionné`,nSelected_other:`{{count}} sélectionnés`,submitN_one:`Envoyer {{count}}`,submitN_other:`Envoyer {{count}}`},u={onlineCount:`{{count}} en ligne`,messages:`Messages`,compose:`Rédiger un message`,recipient:`Destinataire`,messageType:`Type`,audience:`Audience`,audienceAll:`Tous les agents`,audienceLeaders:`Leaders uniquement`,priority:`Priorité`,priorityLow:`Basse`,priorityNormal:`Normale`,priorityHigh:`Haute`,subjectPlaceholder:`Objet (facultatif)`,bodyPlaceholder:`Message`,leadersOnlyHint:`Seuls les agents leaders et les interfaces leader peuvent recevoir ce message.`,leadersLabel:`leaders`,send:`Envoyer`,sending:`Envoi…`,sent:`Envoyé`,sendFailed:`Échec de l’envoi du message.`,defaultSubject:`Message WebUI`,deleteAllTitle:`Supprimer tous les messages`,deleteAll:`Tout supprimer`,deleting:`Suppression…`,purgeTitle:`Purger les messages obsolètes/orphelins`,purge:`Purger`,purging:`Purge…`,compact:`Compacter`,compacting:`Compactage…`,compactTitle:`Compactage auto : supprimer expirés, lus par tous et obsolètes`,compactRemoved:`{{count}} supprimés`,compactExpired:`{{count}} expirés`,compactReadByAll:`{{count}} lus par tous`,compactStale:`{{count}} obsolètes`,compactRemaining:`{{count}} restants`,newLabel:`NOUVEAU`,empty:`Aucun message pour le moment.`,offlineCount:`+{{count}} hors ligne`,timeNow:`maintenant`,deleteAllConfirmTitle_one:`Supprimer {{count}} message ?`,deleteAllConfirmTitle_other:`Supprimer tous les {{count}} messages ?`,deleteAllConfirmBody:`Le fichier de boîte aux lettres est tronqué pour chaque agent. Action irréversible.`,purgeConfirmTitle:`Purger les messages obsolètes ?`,purgeConfirmBody:`Supprime les messages terminés de plus d'un jour et les messages incomplets de plus de 7 jours. Les messages actifs sont conservés.`,type:{note:`Note`,ask:`Question`,assign:`Affectation`,steer:`Orienter`,btw:`Au passage`,broadcast:`Diffusion`,status:`Statut`,result:`Résultat`,review:`Revue`},emptyDetail:`Aucun message sélectionné`,emptyDetailHint:`Cliquez sur un message dans le panneau Boîte aux lettres pour l'afficher ici.`,readBy:`Lu par`,backToChat:`Retour au chat`,completed:`Terminé`,everyone:`tout le monde`,closeTitle:`Fermer (Échap)`,replyTo:`En réponse à : {{id}}`,completedBy:`Terminé par {{name}}`,completedByAt:`Terminé par {{name}} le {{time}}`,outcome:`Résultat :`,task:`Tâche :`,messageNotFound:`Message introuvable`,messageNotFoundHint:`Ce message a peut-être été supprimé ou purgé.`,sessionLabel:`Session`,sessionScope:`Session {{sid}}`,sessionScopeTitle:`Uniquement remis aux agents de la session {{sid}}`,projectLabel:`Projet`,projectScope:`Projet (tous les agents)`,directScope:`Direct`,scopeLabel:`Portée`},d={recentSessions:`Sessions récentes`,deleteEmptyTitle_one:`Supprimer {{count}} session vide ?`,deleteEmptyTitle_other:`Supprimer {{count}} sessions vides ?`,deleteEmptyConfirmBody:`Les sessions sans aucune utilisation de jetons sont supprimées du disque.`,filterPlaceholder:`Filtrer par titre, modèle, fournisseur…`,clearFilter:`Effacer le filtre`,noHistory:`Aucun historique`,noHistoryHint:`Vos conversations apparaîtront ici`,noMatches:`Aucun résultat`,noMatchesHint:`Essayez un autre filtre`,group:{favorites:`Favoris`,today:`Aujourd'hui`,yesterday:`Hier`,thisWeek:`Cette semaine`,earlier:`Plus ancien`},nicknamePlaceholder:`Surnom`,empty:`(vide)`,resuming:`reprise…`,active:`actif`,renameTitleNickname:`{{nickname}} — original : {{title}}`,renameTitle:`{{title}}
2
+
3
+ Double-cliquez pour renommer`,unfavorite:`Retirer des favoris`,markFavorite:`Marquer comme favori`,deleteSessionConfirmTitle:`Supprimer la session ?`,deleteSessionConfirmBody:`"{{name}}" sera supprimée du disque. Action irréversible.`,deleteSessionTitle:`Supprimer la session`,rename:`Renommer la session`,renameAction:`Renommer`,resume:`Reprendre la session`,resumeShort:`Reprendre`,workspaceEyebrow:`Contrôle de session`,workspaceTitle:`Sessions`,workspaceHint:`Recherchez, inspectez, épinglez et reprenez toutes les conversations du projet.`,tabs:{history:`Historique`,live:`Sessions en direct`},filters:{all:`Toutes`,favorites:`Favoris`,active:`Actives`,completed:`Terminées`,issues:`Problèmes`},status:{active:`Active`,completed:`Terminée`,error:`Erreur`,timeout:`Expiration`,aborted:`Annulée`,saved:`Session sauvegardée`},sort:{label:`Trier les sessions`,recent:`Plus récentes`,tokens:`Plus de jetons`,activity:`Plus d'activité`},stats:{sessions:`Sessions`,tokens:`Jetons`,tools:`Appels d'outils`,files:`Fichiers modifiés`,errors:`Erreurs`},inspect:`Inspecter la session`},f={actions:{abort:`Interrompre`,newSession:`Nouvelle session`,export:`Exporter`,compact:`Compresser`,newSessionConfirm:`Êtes-vous sûr ?`,newSessionConfirmMessage:`Une tâche est toujours en cours. Démarrer quand même une nouvelle session ?`,newSessionTitle:`Démarrer une nouvelle session (Ctrl+N)`,exportTitle:`Exporter le chat en markdown (Ctrl+E)`,compactTitle:`Compresser la fenêtre de contexte`,clearTitle:`Effacer le contexte (Ctrl+L)`},model:`Modèle`,modelTitle:`Changer de modèle (Ctrl+M)`,context:`Contexte`,contextTitle:`Cliquez pour un détail du contexte`,sessionLabel:`Session`,stats:{messages:`Messages`,elapsed:`Écoulé`,tokens:`Jetons`,cost:`Coût`,iteration:`Itération`,agents:`Agents`,tokensSub:`{{in}} entrée / {{out}} sortie`,iterationOf:`sur {{max}}`,agentsRunning:`{{count}} en cours`},plan:`Plan`,planComplete:`{{pct}}% terminé`,pinned:`Épinglés`,quickSettings:`Réglages rapides`,autonomy:`Autonomie`,autonomyTitle:`Arrêter l'exécution automatique des étapes suivantes. Désactivez pour interrompre la boucle autonome de l'agent`,autonomyOptions:{off:`Désactivé`,suggest:`Suggérer`,auto:`Auto`,eternal:`Perpétuel`,"eternal-parallel":`Perpétuel Parallèle`},yolo:`Mode YOLO`,yoloTitle:`Ignorer les confirmations d'outils`,refine:`Affiner les prompts`,refineTitle:`Réécrire les prompts avant l'envoi`,sound:`Son à la fin`,soundTitle:`Jouer un doux carillon à la fin d'une exécution`,sessionId:`session {{id}}`},p={status:{running:`en cours`,completed:`terminé`,failed:`échoué`,timeout:`expiré`,stopped:`arrêté`},leader:`leader`,providerModel:`Fournisseur / Modèle`,elapsed:`Écoulé`,running:`en cours…`,iterations:`Itérations`,toolCalls:`Appels d'outils`,cost:`Coût`,budgetExtensions:`Extensions de budget`,activity:`Activité`,contextWindow:`Fenêtre de contexte`,tokensUsed:`{{used}} / {{max}} jetons`,toolRunning:`en cours…`,lastTool:`dernier outil`,error:`Erreur`,finalOutput:`Sortie finale`,copyOutput:`Copier la sortie`,liveOutput:`Sortie en direct`,waitingOutput:`En attente de sortie…`,outputHint:`La sortie apparaît ici à mesure que l'agent diffuse du texte.`,toolLog:`Journal d'outils ({{count}} appels)`,fail:`échec`,moreTools:`+{{count}} outils de plus`,cardRunning:`en cours {{tool}}`,cardLastTool:`dernier : {{tool}}`,contextPercent:`Contexte {{pct}} %`,doneCount:`{{count}} terminé(s)`,errCount:`{{count}} err`,statusRunning:`en cours`,statusDone:`terminé`,statusFailed:`échec`,statusTimeout:`délai dépassé`,statusStopped:`arrêté`,hittingLimitTitle:`⚡ atteint la limite {{kind}} ({{used}}/{{limit}})`,budgetExt_one:`{{count}} extension de budget`,budgetExt_other:`{{count}} extensions de budget`,extendedTimes_one:`L'agent a étendu son budget {{count}} fois pour des tâches longues`,extendedTimes_other:`L'agent a étendu son budget {{count}} fois pour des tâches longues`,errorLabel:`Erreur`,failureReason:`Raison de l'échec`,failed:`Échec`},m={wsNotConnected:`WebSocket non connecté`,noData:`Aucune donnée de débogage reçue. Le serveur ne prend peut-être pas en charge le débogage de contexte.`,title:`Décomposition du contexte`,windowUsage:`Utilisation de la fenêtre`,contextMode:`Mode de contexte`,fetching:`Récupération de la décomposition du contexte…`,systemPrompt:`Prompt système`,tools:`Outils`,messages:`Messages`,tokenAllocation:`Allocation des jetons`,systemTitle:`Système : {{tokens}}`,toolsTitle:`Outils : {{tokens}}`,messagesTitle:`Messages : {{tokens}}`,system:`Système`,toolBreakdown:`Décomposition des outils`,messagesSummary:`Messages ({{count}}) — {{total}} tok`,barWithTokens:`Fenêtre de contexte : {{tokens}} / {{max}} jetons ({{pct}})`,barPct:`Fenêtre de contexte : {{pct}}`,barClick:` — cliquez pour la répartition`},h={header:`✨ Affiner le prompt`,autoSend:`envoi auto dans {{count}} s`,cancelTitle:`Annuler (Échap)`,editLabel:`Modifier le prompt affiné :`,editPlaceholder:`Modifier le prompt affiné...`,useEdit:`Utiliser la modif.`,original:`Original`,refined:`Affiné`,yourLanguage:`(votre langue)`,refinedTitle:`Cliquez ou appuyez sur Entrée pour utiliser cette version`,copyToInputTitle:`Copier dans la saisie sans envoyer`,english:`Anglais`,englishTitle:`Appuyez sur e pour la version anglaise`,hintRefined:`affiné`,hintEnglish:`Anglais`,hintOriginal:`original`,hintEdit:`modifier`,hintRetry:`réessayer`,edit:`Modifier`,useRefined:`Utiliser l'affiné`,langOriginal:`Original`,langEnglish:`English`,languageTitle:`Changer la langue de raffinement par défaut — Original ou anglais`,yolo:`YOLO`,yoloTitle:`Ignorer les confirmations d'outils`,refining:`Refining…`,sendAsIs:`Send as-is`,failedHeader:`Refinement failed`,retry:`Retry (more time)`,retryBetter:`Réessayer mieux`,retryFallback:`Retry with {{model}}`,pickModel:`Another model…`,pickModelTitle:`Relancer le raffinement avec un autre modèle`,pickModelHint:`Choisissez un fournisseur/modèle pour relancer ce raffinement. Le modèle de votre session reste inchangé.`,countdownHeader:`✨ L'amélioration commence dans…`,countdownYourMessage:`Votre message`,countdownHint:`L'amélioration commence dans {{seconds}}s. Cliquez sur « Envoyer tel quel » pour ignorer.`,countdownStartNow:`Améliorer maintenant`,countdownSendAsIs:`Envoyer tel quel`,cancelRefineSendOriginal:`Annuler et envoyer l'original`},g={heading:`Spécifications`,subtitle:`Afficher et gérer le développement piloté par les spécifications`,empty:`Aucune spec trouvée. Utilisez {{command}} pour en créer une.`,tasks:`Tâches ({{count}})`,doneCount:`{{count}} terminée(s)`,runningCount:`{{count}} en cours`,pendingCount:`{{count}} en attente`,runTitle:`Exécuter cette spec comme un job multi-agents en direct`,run:`Exécuter`,runAsSdd:`Exécuter en SDD`,runAsSddTitle:`Lancer un run SDD multi-agents en parallèle (worktrees, vérification, board live)`,runAsGoal:`Exécuter en Goal`,runAsGoalTitle:`Lancer un Goal par phases depuis les colonnes de tâches de cette spec`,list:`Liste`,graph:`Graphe`,loadingTasks:`Chargement des tâches…`},_={heading:`Vérificateur de résilience F5`,subtitle:`Confirme que la dernière session active, la transcription et l'état de l'UI survivent à un rafraîchissement de page. Ouvrez cette vue, puis appuyez sur F5 — chaque ligne verte doit rester verte.`,recordProbe:`Enregistrer une sonde`,latestSession:`Dernière session active`,restoredLocal:`Restauré depuis localStorage`,sessionIdExtra:`id de session : {{id}}`,noSessionYet:`aucune session n'a encore été démarrée`,activePointer:`Pointeur de session active`,lastVisited:`horodatage lastVisitedAt`,never:`jamais`,persistedEnv:`Environnement persisté`,transcriptRehydrate:`Réhydratation de la transcription`,localTranscript:`Transcription locale récupérée`,messagesExtra:`{{count}} messages, {{queued}} en file`,noMessages:`0 message`,noBleed:`Pas de fuite entre sessions`,bleedExtra:`lié={{bound}} vs actif={{active}}`,transcriptBinds:`la transcription se lie à la session active`,uiWorkspace:`Espace de travail UI`,noneValue:`(aucun)`,payloadSize:`Charge utile localStorage (4 clés) : {{count}} caractères`,probeLog:`Journal des sondes`,noProbes:`Aucune sonde pour le moment — appuyez sur le bouton « Enregistrer une sonde » en haut, ou sur F5 dans cette vue, pour enregistrer un contrôle de réhydratation.`,simulatedF5:`F5 simulé : relance de persist rehydrate`},v={status:{pending:`En attente`,in_progress:`En cours`,review:`Revue`,failed:`Échoué`,completed:`Terminé`,queued:`En file`,blocked:`Bloqué`,cancelled:`Annulé`},newTaskTitle:`Nouvelle tâche`,newTaskPlaceholder:`Titre de la tâche…`,addTask:`Ajouter la tâche`,empty:`Aucune phase pour l'instant — lancez une exécution Goal pour remplir le tableau.`,summary:`{{phases}} phases · {{tasks}} tâches`,phases:`Phases`,statusTab:`Statut`,dropHere:`Déposer les tâches ici`,emptySpec:`Aucune tâche dans cette spec pour le moment.`,depGraphHeading:`Graphe de dépendances`,worktreePrefix:`worktree : {{branch}}`},y={trendUp:`En hausse`,trendDown:`En baisse`,trendStable:`Stable`,heading:`Tableau de bord de débogage`,subtitle:`Surveillance en temps réel pour WrongStack WebUI`,refreshLabel:`Actualiser :`,lastUpdated:`Dernière mise à jour : {{time}}`,fetchFailed:`Échec de la récupération des métriques`,fileWatcher:`Observateur de fichiers`,watcherStatus:`Statut de l'observateur`,running:`En cours`,stopped:`Arrêté`,activeProjects:`Projets actifs`,projectsWatched:`Projets surveillés`,fileChanges:`Modifications de fichiers`,totalDetected:`Total détecté`,filesProcessed:`Fichiers traités`,afterHash:`Après filtre de hachage`,broadcastsSent:`Diffusions envoyées`,toClients:`Aux clients WebUI`,debounceResets:`Réinitialisations anti-rebond`,rapidWrites:`Écritures rapides successives`,avgDebounce:`Délai anti-rebond moyen`,actualDelay:`Délai réel appliqué`,totalDelay:`Délai total`,sumDelays:`Somme de tous les délais`,browserPerf:`Performances du navigateur`,heapUsed:`Tas utilisé`,jsHeap:`Tas JavaScript`,heapTotal:`Tas total`,totalHeap:`Taille totale du tas`,pageUptime:`Durée de la page`,sinceLoad:`Depuis le chargement`,rawData:`Données brutes`},b={allowlistTitle:`Liste des modèles autorisés`,modelCount_one:`{{count}} modèle`,modelCount_other:`{{count}} modèles`,using:`Utilisé`,noModelPicked:`(aucun modèle choisi)`,clearAllowlist:`Vider la liste autorisée`,clearAllowlistAria:`Vider la liste autorisée pour {{provider}}`,refresh:`Actualiser depuis le serveur`,refreshAria:`Actualiser la liste des modèles pour {{provider}}`,probing:`Vérification…`,searchPlaceholder:`Rechercher des modèles…`,use:`Utiliser`,useModelAria:`Utiliser le modèle {{model}} pour {{provider}}`},x={expandChip:`Déplier {{label}}`,collapseChip:`Replier {{label}}`,ahead:`{{count}} en avance`,behind:`{{count}} en retard`,linesAdded:`{{count}} lignes ajoutées`,linesDeleted:`{{count}} lignes supprimées`,untrackedFiles:`{{count}} fichiers non suivis`,customizeTitle:`Personnaliser les puces du dock`,dockChips:`Puces du dock`,noActiveGoal:`Aucun objectif actif`,noActiveGoalDetail:`Lancez un objectif depuis le chat ou la commande goal.`,closeWorkspaceInspector:`Fermer l'inspecteur d'espace de travail`,goal:`Objectif`,goalState:`État de l'objectif`,goalStateDetail:`Objectif actif et progression`,fleet:`Flotte`,fleetDetail:`Effectif d'agents en direct et activité`,work:`Travail`,workDetail:`To-dos, tâches et plan`,worktrees:`Worktrees`,worktreesDetail:`Branches et voies parallèles`,collab:`Collab`,collabDetail:`Participants à la session et commandes`,inspector:`Inspecteur d'espace de travail`,inspectorNamed:`Inspecteur d'espace de travail {{name}}`,workspace:`Espace de travail`,workspaceDetails:`Détails de l'espace de travail`},S={leaderBadge:`LEADER`,iters:`Itér.`,tools:`Outils`,activityBins:`Activité (12 bins)`,streamingOutput:`Sortie en flux`,recentTools:`Outils récents`,finalOutput:`Sortie finale`,heading:`Moniteur d'agents`,prevAgent:`Agent précédent`,nextAgent:`Agent suivant`,closeAria:`Fermer le moniteur d'agents`,hintPage:`←→ page`,hintNavigate:`↑↓ naviguer dans la liste`,hintEsc:`Esc fermer`},C={resize:`Redimensionner les terminaux`,labelSingular:`Terminal`,labelPlural:`Terminaux`,projectShell:`Shell du projet`,maxTerminals:`Maximum {{count}} terminaux`,newTerminal:`Nouveau terminal`,restart:`Redémarrer le terminal actif`,closeAll:`Fermer tous les terminaux`,closeDock:"Fermer le dock de terminal (Ctrl+`)",closeTab:`Fermer {{name}}`,processExited:`[processus terminé avec le code {{code}}]`},w={liveStream:`Flux en direct`,events_one:`{{count}} événement`,events_other:`{{count}} événements`,interruptTitle:`Arrêter coopérativement cet agent à sa prochaine étape (pas un kill de processus)`,interrupt:`⏸ Interrompre`,interrupting:`…`,loading:`Chargement de la session…`,done:`✓✓ terminé`,read:`✓ lu`,delivered:`⏳ livré`,agent:`Agent`,you:`Vous`,working:`{{name}} · en cours`,claude:`Claude`,priority:`Priorité`,placeholder:`{{label}} → cette session…`,send:`Envoyer`,sendHint:`⌘/Ctrl+Entrée pour envoyer · visible à la prochaine itération de l'agent`,msgType:{steerLabel:`🔄 Orienter`,steerHint:`Ajuster le comportement en cours de tâche`,askLabel:`❓ Demander`,askHint:`Question — attend une réponse`,assignLabel:`📋 Assigner`,assignHint:`Une tâche à traiter`,noteLabel:`💬 Note`,noteHint:`Pour info, non urgent`},sentRunning:`Livré — l'agent en cours le verra à sa prochaine étape`,sentIdle:`Livré — la cible est inactive ; apparaît dans sa boîte, lu à la prochaine exécution`,sentFailed:`Échec : {{error}}`,interruptReason:`L'opérateur a demandé l'arrêt depuis Fleet HQ`,interruptSent:`Interruption envoyée — l'agent s'arrête à la prochaine étape (pas un kill)`,interruptFailed:`Échec de l'interruption : {{error}}`},T={empty:`Aucun effet de bord enregistré pour le moment.`,emptyHint:`Les commandes bash, installations de paquets et requêtes réseau apparaîtront ici.`,heading:`Effets de bord`,exportTitle:`Exporter les effets de bord filtrés en CSV`,all:`Tous`,colTime:`Heure`,colTool:`Outil`,colRisk:`Risque`,colDetail:`Détail`,colOutcome:`Résultat`},E={elapsedHm:`il y a {{h}}h {{m}}m`,elapsedMs:`il y a {{m}}m {{s}}s`,elapsedS:`il y a {{s}}s`,heading:`Moniteur de flotte`,clientsHeading:`Clients connectés`,terminal:`Terminal`,webui:`UI Web`,repl:`REPL`,totalConnected:`connectés au total`,mailQueue:`File d'attente`,total:`Total`,open:`Ouverts`,unread:`Non lus`,agents:`Agents`,messagesSub:`messages`,uncompletedSub:`inachevés`,waitingSub:`en attente`,ofTotal:`sur {{count}} au total`,agentRoster:`Registre des agents`,liveMailActivity:`Activité mail en direct`,noActivity:`Aucune activité récente`,mailboxAgents:`Agents de la boîte`,noMailboxAgents:`Aucun agent enregistré`,moreCount:`+{{count}} de plus`,agentFallback:`agent`,fleetAgents:`Agents de la flotte`,noFleetAgents:`Aucun agent de flotte en cours`,iter:`itér.`,mailType:{sent:`Envoyé`,delivered:`Livré`,read:`Lu`,completed:`Terminé`}},D={status:{pending:`en attente`,queued:`en file`,in_progress:`en cours`,blocked:`bloqué`,review:`revue`,failed:`échoué`,completed:`terminé`,cancelled:`annulé`},activityHeading:`Activité`,feedEmpty:`Rien pour l'instant — les événements apparaissent ici à mesure que les agents prennent et terminent des tâches.`,destroyTitle:`Détruire le projet SDD ?`,destroyDesc:`Cela efface le run et son travail. Irréversible (le revert optionnel préserve l'historique).`,stopRun:`Arrêter le run`,stopRunAgents_one:`Arrêter le run ({{count}} agent actif)`,stopRunAgents_other:`Arrêter le run ({{count}} agents actifs)`,removeWorktreesAll:`Supprimer tous les worktrees git + branches wstack/ap/* — y compris le travail non fusionné`,removeWorktreesCount_one:`Supprimer {{count}} worktree git + branches wstack/ap/* — y compris le travail non fusionné`,removeWorktreesCount_other:`Supprimer {{count}} worktrees git + branches wstack/ap/* — y compris le travail non fusionné`,deleteArtifacts:`Supprimer tous les artefacts SDD (specs, graphe de tâches, board, session)`,revertMerged_one:`Revert aussi {{count}} commit fusionné`,revertMerged_other:`Revert aussi {{count}} commits fusionnés`,revertHint:`Ajoute des commits de revert (historique préservé). Refusé si l'arbre de travail est sale.`,baseBranchFallback:`la branche de base`,noteLeaveMerged:`Les commits fusionnés resteront sur la branche de base. Cochez la case ci-dessus pour les annuler aussi.`,noteAbandon:`Assurez-vous de vraiment vouloir abandonner ce run.`,destroying:`Destruction…`,destroyAll:`Tout détruire`,kanbanBacklog:`Backlog`,kanbanReady:`Prêt`,kanbanRunning:`En cours`,kanbanReview:`Revue`,kanbanFailed:`Échec`,kanbanDone:`Terminé`,kanbanEmpty:`vide`},O={collapseToLines:`Réduire aux {{count}} premières lignes`,showAllLines:`Afficher les {{total}} lignes ({{more}} de plus)`,exitCode:`code de sortie :`,jsonLines:`JSON · {{count}} lignes`,collapse:`réduire`,expand:`déplier`},k={heading:`Design Studio — Galerie`,kitsCount:`{{count}} kits`,searchPlaceholder:`Rechercher des kits…`,stackTitle:`Stack pour Use + Materialize`,wrote:`{{path}} écrit`,materializeFailed:`Échec de matérialisation : {{error}}`,verifyError:`Vérifier : {{error}}`,verifyOffPalette:`Vérifier : {{pct}} % on-palette — {{count}} off-palette dans {{files}} fichier(s)`,verifyClean:`Vérifier : propre ✓ ({{files}} fichier(s) on-palette)`,writing:`Écriture du fichier de thème…`,scanning:`Analyse des fichiers UI…`,active:`Actif`,reapply:`Réappliquer`,use:`Utiliser`,materializeTitle:`Écrire les tokens dans un fichier de thème {{stack}}`,materialize:`Matérialiser`,verifyTitle:`Scanner les fichiers UI pour les couleurs hors palette`,verify:`Vérifier`,colors:`Couleurs`},A={summary_one:`{{count}} phase · {{pct}} % terminé`,summary_other:`{{count}} phases · {{pct}} % terminé`,switchBoard:`Changer de tableau`,boardsCount_one:`{{count}} tableau…`,boardsCount_other:`{{count}} tableaux…`,toggleAutonomousTitle:`Basculer le mode autonome`,autonomous:`Autonome`,manual:`Manuel`,resumeTitle:`Reprendre l'exécution`,pauseTitle:`Mettre en pause`,resume:`Reprendre`,pause:`Pause`,stopTitle:`Arrêter l'exécution — annule les agents en cours immédiatement`,stop:`Arrêter`,newTitle:`Effacer ce tableau et démarrer une nouvelle exécution Goal`,newLabel:`Nouveau`,revertConfirm:`Annuler les commits de l'exécution ?`,revertTitle:`Annuler cette exécution — git-revert des commits déposés et suppression des worktrees`,revert:`Annuler`,goal:`Objectif`,planning:`Planification des phases…`,planningBody:`Votre objectif a été reçu. WrongStack le décompose en phases et tâches — le tableau apparaît ici dès que le plan est prêt.`,startHeading:`Démarrer un plan de phases`,startBody:`Décrivez ce que vous voulez construire. WrongStack planifie les phases et tâches, puis les exécute — observez et pilotez l'exécution sur le tableau.`,startPlaceholder:`ex. Construire une API REST de gestion d'utilisateurs avec Express et SQLite...`,isolateLabel:`Isoler chaque phase dans son propre worktree git`,startButton:`Démarrer Goal`,ctrlHint:`Ctrl+Entrée pour démarrer`,isolateOn:`les phases tournent dans des worktrees isolés, fusionnés en squash`,isolateOff:`les phases tournent directement sur la branche courante`,lanes:`Voies`,graph:`Graphe`,planningAck:`🚀 **Goal** — compris. Je planifie les phases pour votre objectif…`,assess:{analyzing:`Analyse de la portée de l'objectif…`,realistic:`✓ La portée semble réaliste`,durationConcern:`⚠ Problème de durée`,durationClaimed:`Durée indiquée : {{duration}}`,recommendation:`Recommandé : {{duration}}`,concerns:`Préoccupations`,analysisFailed:`Impossible d'analyser la portée de l'objectif`,override:`Démarrer quand même`,overrideTitle:`Effacer l'avertissement et activer le bouton de démarrage`,disableTitle:`Cet objectif a une durée irréaliste — utilisez "Démarrer quand même" pour passer outre`},multiBoardLabel:`Diviser en plusieurs tableaux kanban`,verifyTasksLabel:`Exiger une vérification pour chaque tâche`,chimeraReviewLabel:`Activer la révision automatique chimera`},j={noObservers:`Aucun observateur en direct`,observerTitle:`Rejoindre comme observateur en lecture seule (Phase 1)`,observerRole:`observateur`,annotatorTitle:`Rejoindre comme annotateur — laisser des notes sur les appels d'outils (Phase 2)`,annotatorRole:`annotateur`,controllerTitle:`Rejoindre comme contrôleur — peut mettre en pause la boucle de l'agent (Phase 3)`,controllerRole:`contrôleur`,errorPrefix:`Collab : {{error}}`,dismiss:`ignorer`,observers_one:`{{count}} observateur`,observers_other:`{{count}} observateurs`,annotationsTitle:`{{count}} annotation(s) ouverte(s) — annotateurs en train de réviser`,notes_one:`{{count}} note`,notes_other:`{{count}} notes`,pausedTitle:`Boucle de l'agent en pause — un contrôleur révise`,paused:`en pause`,joinedTitle:`Rejoint {{time}}`,grantTitle:`Donner le contrôle — promouvoir ce participant au contrôleur`,injectTitle:`Injecter un résultat synthétique pour un appel d'outil en cours`,inject:`Injecter`,resumeTitle:`Reprendre la boucle de l'agent`,resume:`Reprendre`,pauseTitle:`Mettre en pause l'agent avant le prochain appel d'outil`,pauseAgent:`Mettre en pause l'agent`,leaveTitle:`Quitter la session d'observation`,leave:`Quitter`,injectToolResult:`Injecter un résultat d'outil`,close:`fermer`,targetTool:`id tool_use cible`,targetPlaceholder:`choisir un appel en cours ou saisir un id tool_use`,toolFallback:`outil`,noPendingTools:`Aucun appel d'outil en cours — saisissez un id tool_use ou mettez l'agent en pause d'abord.`,resultContent:`Contenu du résultat`,resultPlaceholder:`Résultat d'outil synthétique fourni à l'agent au lieu d'exécuter l'outil`,markError:`marquer comme erreur`,reasonPlaceholder:`raison (journal d'audit)`,queueInjection:`File d'injection`,controllerInjection:`injection contrôleur`},M={connected:`Connecté`,reconnecting:`Reconnexion au backend (tentative {{attempt}}) — nouvel essai dans {{remaining}} s`,disconnected:`Déconnecté du backend`,retry:`Réessayer`,retryTitle:`Réessayer la connexion maintenant`,dismissTitle:`Ignorer (la puce dans la barre supérieure affiche toujours le statut)`},N={modePrefix:`mode :`,activeTitle:`Mode actif`,heading:`Mode`,defaultName:`Par défaut`,defaultDesc:`Comportement standard de l'agent`},P={clickTitle:`Cliquez pour la répartition des coûts par tour`,heading:`Répartition des coûts`,noPricing:`Aucune tarification pour le modèle actuel — les valeurs de coût sont nulles.`,noTurns:`Aucun tour terminé pour le moment. Lancez un prompt pour voir le coût par tour ici.`,topExpensive_one:`Tour le plus cher`,topExpensive_other:`Les {{count}} tours les plus chers`},F={runDefault:`Par défaut du run`,useRunDefault:`Utiliser le défaut du run`,filterPlaceholder:`Filtrer les modèles…`,loading:`Chargement des modèles…`,noMatch:`Aucune correspondance`},I={heading:`Changer de modèle`,filterPlaceholder:`Filtrer les fournisseurs et modèles…`,providerFilter:`Fournisseur`,providerFilterAll:`Tous les fournisseurs`,noSavedProviders:`Aucun fournisseur enregistré — enregistrez d'abord une clé dans les Paramètres.`,noMatch:`Aucun modèle correspondant`,active:`actif`},L={todos:`À faire`,tasks:`Tâches`,plan:`Plan`},R={toggleAria:`Basculer : {{content}}`,removeTitle:`Supprimer la tâche`,removeAria:`Supprimer « {{content}} »`,completedCount_one:`{{count}} terminée`,completedCount_other:`{{count}} terminées`},z={start:`Démarrer`,complete:`Terminer`,retry:`Réessayer`,assign:`Affecter`,assignTitle:`Affecter un agent`,unassigned:`Non affecté`,statusPending:`En attente`,statusInProgress:`En cours`,statusBlocked:`Bloqué`,statusFailed:`Échec`,statusReview:`Revue`,statusDone:`Terminé`,startTitle:`Démarrer`,completeTitle:`Terminer`,fail:`Échouer`,failTitle:`Marquer comme échoué`,boardCount:`{{total}} tâches · {{done}} terminées`},B={toolCalls_one:`{{count}} appel d'outil`,toolCalls_other:`{{count}} appels d'outil`},V={removeTitle:`Supprimer la référence`,linesCount_one:`{{count}} ligne`,linesCount_other:`{{count}} lignes`},H={statusOpen:`Ouvert`,statusInProgress:`En cours`,statusDone:`Terminé`,startTitle:`Démarrer`,doneTitle:`Marquer comme terminé`,reopenTitle:`Rouvrir`,reopen:`Rouvrir`},U={heading:`@ Fichiers`,noMatch:`Aucun fichier ne correspond à « {{query}} »`,searching:`Recherche dans le projet…`,selectInsertEscDismiss:`↑/↓ sélectionner · ↵ insérer · Échap fermer`},W={dismiss:`Ignorer`},G={placeholder:`Rechercher dans le chat…`,prevHit:`Résultat précédent`,nextHit:`Résultat suivant`,close:`Fermer (Esc)`},K={statusPending:`En attente`,statusReady:`Prêt`,statusRunning:`En cours`,statusPaused:`En pause`,statusCompleted:`Terminé`,statusFailed:`Échec`,statusSkipped:`Ignoré`,heading:`Phases`,autonomousOn:`● Autonome`,autonomousOff:`○ Manuel`,autonomousOnTitle:`Mode autonome actif — cliquer pour mettre en pause`,autonomousOffTitle:`Mode manuel — cliquer pour activer l'autonome`,overallProgress:`Progression globale`,tasksSuffix:`{{done}}/{{total}} tâches`,agentsSuffix_one:`{{count}} agent`,agentsSuffix_other:`{{count}} agents`},q={triggerTitle:`Mode de fenêtre de contexte`,ctxPrefix:`ctx :`,opsHeading:`Opérations de contexte`,compactNow:`Compacter maintenant`,compactNowDesc:`Élider les anciennes sorties d'outil`,compactAggressive:`Compaction agressive`,compactAggressiveDesc:`Élision maximale maintenant`,repairContext:`Réparer le contexte`,repairDesc:`Corriger les blocs tool-use orphelins`,debugContext:`Déboguer le contexte`,debugDesc:`Répartition de la taille par section`,windowHeading:`Fenêtre de contexte`,keepElide:`garder {{k}} récents · élider {{t}}+ jetons`,fallbackName:`Équilibré`,fallbackDesc:`Compaction roulante par défaut`},J={kindAssistant:`Assistant`,kindThinking:`Réflexion`,kindToolCall:`Appel d'outil`,kindToolResult:`Résultat d'outil`,kindError:`Erreur`,kindStatus:`Statut`,kindSystem:`Système`,title:`Historique du chat`,copyTitle:`Copier l'historique du chat de l'agent`,empty:`Pas encore d'historique de chat pour cet agent.`},Y={heading:`Mode d'autonomie`,titlePrefix:`Autonomie : {{label}}`,descOff:`Contrôle manuel total — l'agent attend votre saisie.`,descSuggest:`L'agent suggère les prochaines étapes mais attend une approbation.`,descAuto:`L'agent continue automatiquement après un bref délai de confirmation.`,descEternal:`L'agent fonctionne de façon autonome jusqu'à la fin de l'objectif.`,descEternalParallel:`Exécution autonome multi-agents — mode flotte.`,labelOff:`Désactivé`,labelSuggest:`Suggérer`,labelAuto:`Auto`,labelEternal:`Éternel`,labelEternalParallel:`Éternel parallèle`},X={heading:`File d'attente des messages`,subtitle:`{{count}} en file · messages envoyés avant la fin de l'agent`,btwTitle:`Au passage — envoyé en suivi sans interrompre l'agent en cours`,steerTitle:`Piloter — interrompt l'agent en cours et le redirige avec ce message`,queueTitle:`En file — retenu jusqu'à la fin du run de l'agent, puis envoyé dans l'ordre`,sortNewestTitle:`Trié du plus récent — cliquer pour trier du plus ancien`,sortOldestTitle:`Trié du plus ancien — cliquer pour trier du plus récent`,newest:`Plus récent`,oldest:`Plus ancien`,clear:`Vider`,clearTitle:`Effacer tous les messages en file`,closeTitle:`Fermer`,emptyTitle:`La file est vide`,emptyBody:`Utilisez les boutons btw / steer / ajouter à la file à côté de l'entrée pour ajouter des messages. Les éléments en file sont envoyés dans l'ordre à la fin du run de l'agent.`,removeTitle:`Retirer de la file`,clearDispatchedTitle:`Effacer les messages en file — les notes déjà envoyées ne peuvent pas être rétractées`,dispatchedTitle:`Déjà envoyé à l'agent`,dispatchedLabel:`Envoyé`,footer:`Les messages sont envoyés dans l'ordre d'arrivée à la fin du run de l'agent. Utilisez le tri pour voir les plus récents d'abord.`},Z={heading:`Points de contrôle de session`,countSuffix_one:`{{count}} point de contrôle`,countSuffix_other:`{{count}} points de contrôle`,description:`Rembobiner la session à n'importe quel point de contrôle. Les messages et modifications de fichiers reviennent à ce point — le LLM continue comme si rien ne s'était passé après.`,emptyTitle:`Pas encore de points de contrôle`,emptyBody:`Les points de contrôle sont créés automatiquement à chaque message envoyé. Envoyez quelques messages et revenez.`,latest:`récent`,msgSuffix_one:`{{count}} msg`,msgSuffix_other:`{{count}} msgs`,footerPre:`Cliquer un point de contrôle pour rembobiner`,footerPost:`pour fermer`},Q={statusActive:`Actif`,statusPaused:`En pause`,statusDone:`Terminé`,statusFailed:`Échec`,statusAbandoned:`Abandonné`,heading:`Objectif`,refined:`Raffiné`,progress:`Progression`,iterations:`itérations`,deliverables:`Livrables`,recentActivity:`Activité récente`},$={cleanTitle_one:`Nettoyer {{count}} worktree orphelin ?`,cleanTitle_other:`Nettoyer {{count}} worktrees orphelins ?`,cleanMessage:`Supprime forcément chaque worktree git + branche wstack/ap laissé par des runs précédents. Le travail non fusionné dedans est perdu.`,cleanConfirm:`Nettoyer les orphelins`,orphanCount_one:`{{count}} worktree orphelin de runs précédents`,orphanCount_other:`{{count}} worktrees orphelins de runs précédents`,andMore:`…et {{count}} de plus`,cleanButtonTitle:`Supprimer forcément tous les worktrees + branches orphelins`,removed_one:`✓ {{count}} worktree orphelin supprimé.`,removed_other:`✓ {{count}} worktrees orphelins supprimés.`,cleanupFailed:`échec du nettoyage`,lanesHeading:`Worktrees`,base:`base`,isolatedCount_one:`{{count}} isolé`,isolatedCount_other:`{{count}} isolés`,statusAllocating:`allocation`,statusActive:`actif`,statusCommitting:`commit`,statusMerging:`fusion`,statusMerged:`fusionné`,statusConflict:`conflit`,statusFailed:`échec`,conflictBadge:`CONFLIT`,graphAria:`Graphe de branches worktree à partir de {{base}}`,mergedLabel:`✓ fusionné → {{base}}`},ee={heading:`Processus en cours`,subtitle:`{{active}} actifs · {{total}} total`,killAll:`Tout tuer`,emptyTitle:`Aucun processus suivi`,emptyBody:`Les processus apparaissent ici quand l'agent lance des outils bash ou exec. Les processus actifs affichent une LED pulsante.`,pidLabel:`PID {{pid}}`,protected:`protégé`,protectedTitle:`Protégé — survit à kill/killAll`,background:`en arrière-plan`,backgroundTitle:`Tâche détachée — continue après l’arrêt de la CLI/WebUI`,confirmKillBackground:`Terminer le processus détaché en arrière-plan {{pid}} ?`,confirmKillAll:`Terminer les {{count}} processus en cours ?`,killTitle:`Tuer PID {{pid}}`},te={tooLarge:`Diff omis (fichier trop volumineux pour un rendu en ligne).`},ne={placeholder:`Ajouter un modèle de repli…`,emptyHint:`Essayés dans l'ordre quand le modèle principal est limité ou bloqué.`,moveUp:`Monter`,moveDown:`Descendre`},re={loading:`Chargement des sessions...`,apiUnavailable:`API de session indisponible :`,empty:`Aucune session en direct. Ouvrez une autre instance wstack pour la voir ici.`,heading:`Sessions en direct ({{count}})`,autoRefresh:`actualisation toutes les 5 s`,pidLabel:`PID {{pid}}`,agentMeta:`{{iter}} itér · {{tools}} outils · {{ago}}`,andMore:`... et {{count}} de plus`,noAgents:`Aucun agent`},ie={applyTitle:`Écrire la version modifiée sur le disque`,applying:`Application…`,applied:`Appliqué`,apply:`Appliquer`},ae={showStack_one:`Afficher la trace de pile ({{count}} cadre)`,showStack_other:`Afficher la trace de pile ({{count}} cadres)`,hideStack_one:`Masquer la trace de pile ({{count}} cadre)`,hideStack_other:`Masquer la trace de pile ({{count}} cadres)`},oe={liveHeading:`Live`,clients:`Clients`,agents:`Agents`,model:`Modèle`,mode:`Mode`,toolCalls:`Appels d'outils`,displayHeading:`Affichage`,statsHud:`HUD stats`,legends:`Légendes`,minimap:`Minicarte`,zoomControls:`Contrôles zoom`,animateWires:`Animer les fils`,backgroundHeading:`Arrière-plan`,bgDots:`Points`,bgLines:`Lignes`,bgCross:`Croix`,bgNone:`Aucun`},se={noParams:`(aucun paramètre)`,itemCount_one:`{{count}} élément`,itemCount_other:`{{count}} éléments`,keyCount_one:`{{count}} clé`,keyCount_other:`{{count}} clés`},ce={roleYou:`Vous`,roleTool:`Outil`,roleThinking:`Réflexion`,roleAssistant:`Assistant`,inputLabel:`Entrée`,downloadTitle:`Télécharger comme fichier`,empty:`(vide)`,hideDetails:`Masquer les détails`,showDetails:`Afficher les détails`,showDetailsLines_one:`Afficher les détails ({{count}} ligne)`,showDetailsLines_other:`Afficher les détails ({{count}} lignes)`,editHint:`⌘/Ctrl+Entrée pour enregistrer · Échap pour annuler`,saveResend:`Enregistrer et renvoyer`,thinkingProcess:`Processus de réflexion`,thinkingMeta:`itér {{iter}} · {{dur}} · {{lines}}`,replay:`relecture`,linesSuffix_one:`{{count}} ligne`,linesSuffix_other:`{{count}} lignes`,copyLog:`Copier le journal`,showFullLog:`Afficher le journal complet`,typing:`Écrit…`,noContent:`Aucun contenu`,imageNotRetained:`L'aperçu de l'image n'est pas conservé après actualisation`,failedToSend:`⚠ Échec de l'envoi`,autoPaused:`⚠️ _Avance auto en pause — nombre maximum de tours automatiques consécutifs atteint. Saisissez quelque chose pour continuer (l'autonomie reste activée)._`,autoLoopHalted:`⚠️ _Envoi automatique arrêté car la même invite s'est répétée. L'autonomie reste active ; saisissez une nouvelle invite pour réinitialiser la protection contre les boucles._`,rsIterations:`Itérations : {{n}}`,rsTools:`Appels d'outils : {{n}}`,rsElapsed:`Écoulé : {{s}}`,rsCost:`Coût : {{c}}`,useInput:`Entrée : {{n}}`,useOutput:`Sortie : {{n}}`,useCacheRead:`Lecture cache : {{n}}`,useCost:`Coût : {{c}}`,renderedLabel:`Rendu`,rawLabel:`Brut`,showRenderedTitle:`Afficher le markdown rendu`,showRawTitle:`Afficher la source markdown brute`,editTitle:`Modifier et renvoyer ce prompt`,editLabel:`Modifier`,unpinTitle:`Détacher`,pinTitle:`Épingler cette réponse`,pinnedLabel:`Épinglé`,pinLabel:`Épingler`,regenerateTitle:`Régénérer cette réponse`,retryLabel:`Réessayer`},le={toolFallback:`outil`,toolFailed:`Outil échoué`},ue={heading:`Raccourcis clavier`,footerPre:`Appuyez sur`,footerPost:`à tout moment pour rouvrir cette liste.`,sectionGlobal:`Global`,sectionTuiParity:`Parité panneau TUI`,sectionFleet:`Flotte & Agents`,sectionChatInput:`Saisie du chat`,sectionChat:`Chat`,sectionChatNav:`Navigation du chat (hors saisie)`,dCommandPalette:`Ouvrir la palette de commandes`,dShowOverlay:`Afficher cette overlay de raccourcis`,dToggleSidebar:`Basculer la barre latérale`,dOpenPanel:`Ouvrir le panneau latéral (Session, Agents, Historique, Fichiers, Changes, Messagerie, Compétences, Office Map)`,dDesignStudio:`Ouvrir le panneau Design Studio`,dWorktrees:`Ouvrir le panneau Worktrees`,dSettings:`Ouvrir Paramètres`,dMemory:`Ouvrir Memory`,dFocusInput:`Focaliser la saisie du message`,dSessionPanel:`Panneau de session`,dFleetOverlay:`Overlay moniteur de flotte`,dAgentsOverlay:`Overlay moniteur d'agents`,dWorktreeMonitor:`Moniteur de worktrees`,dPlanPanel:`Panneau plan`,dTodosPanel:`Panneau todos`,dQueuePanel:`Panneau file`,dProcessMonitor:`Moniteur de processus`,dGoalPanel:`Panneau objectif`,dSessionsDashboard:`Tableau des sessions`,dOfficeMap:`Office map du coordinateur`,dDockPicker:`Sélecteur de puces du dock`,dOpenFleet:`Ouvrir l'overlay moniteur de flotte`,dOpenAgents:`Ouvrir l'overlay moniteur d'agents`,dNavigateAgents:`Naviguer parmi les agents`,dSelectAgent:`Sélectionner l'agent focalisé`,dCloseOverlay:`Fermer l'overlay actif`,dSendMessage:`Envoyer le message`,dNewline:`Insérer un saut de ligne`,dRecallPrev:`Rappeler le prompt précédent (entrée vide)`,dRecallNext:`Rappeler le prompt suivant`,dSlashPopup:`Ouvrir le popup de commandes slash`,dAutocomplete:`Auto-compléter la commande surlignée`,dDismissPopup:`Fermer le popup / vider l'entrée`,dSearchChat:`Rechercher dans le chat actuel`,dClearContext:`Vider le contexte (comme /clear)`,dNewSession:`Démarrer une nouvelle session (comme /new)`,dExportMarkdown:`Exporter le chat en markdown`,dModelSwitcher:`Overlay sélecteur de modèle rapide`,dCompactDensity:`Basculer la densité UI compacte`,dAbortRun:`Abandonner le run en cours (pendant l'exécution)`,dFocusNext:`Focaliser le message suivant (alias : ↓)`,dFocusPrev:`Focaliser le message précédent (alias : ↑)`,dJumpFirst:`Aller au premier message`,dJumpLast:`Aller au dernier message`,dCopyFocused:`Copier le texte du message focalisé`,dClearFocused:`Effacer le message focalisé`},de={titleFallback:`Tableau SDD en direct`,defaultModelTitle:`Modèle worker par défaut au niveau du run (les overrides par tâche priment)`,graphLabel:`Graphe`,kanbanLabel:`Kanban`,retryAllTitle:`Remettre chaque tâche échouée en pending`,retryFailed:`Réessayer échouées ({{count}})`,resume:`Reprendre`,pause:`Pause`,stop:`Arrêter`,cleanTitle:`Supprimer les worktrees git + branches wstack/ap du run`,cleanWorktrees:`Nettoyer worktrees`,rollbackTitle:`Revert {{count}} commit(s) fusionné(s) sur {{base}}`,rollback:`Rollback ({{count}})`,stopping:`Arrêt…`,destroying:`Destruction…`,destroyTitle:`Arrêter, supprimer tous les worktrees, revert optionnel des commits fusionnés et supprimer le projet SDD`,destroy:`Détruire`,statDone:`faits`,statRunning:`en cours`,statFailed:`échec`,statWave:`vague`,statElapsed:`écoulé`,noActiveWorkers:`aucun worker actif`,deadlock:`Impasse — tâches bloquées par un travail échoué :`,noRunTitle:`Aucun run SDD actif.`,noRunBody:`Démarrez-en un via l'assistant New SDD Project ou /sdd execute dans la CLI — les agents apparaissent ici en direct, chacun dans un worktree isolé.`,clickTaskHint:`cliquer une tâche pour les détails`,lcClean:`Nettoyage`,lcRollback:`Rollback`,lcDestroy:`Destruction`,lcFailed:`{{op}} échoué : {{reason}}`,lcUnknownError:`erreur inconnue`,lcWorktrees_one:`{{count}} worktree supprimé`,lcWorktrees_other:`{{count}} worktrees supprimés`,lcCommits_one:`{{count}} commit reverti`,lcCommits_other:`{{count}} commits revertis`,lcDeleted:`supprimé {{items}}`,lcNothing:`rien à faire`,lcNote:`{{op}} : {{body}} — note : {{reason}}`,lcOk:`{{op}} : {{body}}`},fe={backTitle:`Retour à l'activité`,expandTitle:`Agrandir les détails de la tâche`,collapseTitle:`Réduire les détails de la tâche`,eventLog:`Journal des événements de la tâche`,newestFirst:`plus récents d'abord`,noEvents:`Aucune activité n'a encore été enregistrée pour cette tâche.`,workingOn:`travaille sur cette tâche`,assigned:`assigné`,metaPriority:`Priorité`,metaType:`Type`,metaDuration:`Durée`,metaElapsed:`Écoulé`,metaRetries:`Tentatives`,metaWorktree:`Worktree`,workerModel:`Modèle worker`,runDefault:`défaut du run : {{model}}`,runDefaultPlaceholder:`Défaut du run`,runDefaultPlaceholderModel:`Défaut du run ({{model}})`,verificationCmd:`Commande de vérification`,gatesCompletion:`valide la complétion (exit 0)`,verifyPlaceholder:`ex. pnpm vitest run path/to/file`,addVerify:`+ Ajouter une commande de vérification`,description:`Description`,timeline:`Chronologie`,dependsOn:`Dépend de`,blocks:`Bloque`,newWorkerPlaceholder:`Nom du nouveau worker…`,confirmStop:`Arrêter cette tâche en cours ?`,confirmDelete:`Supprimer cette tâche du run ?`,retryTitle:`Remettre cette tâche en pending`,reassign:`Réassigner`,stopTitle:`Abandonner le worker sur cette tâche`,splitTitle:`Diviser cette tâche en sous-tâches confiées à des workers séparés`,split:`Diviser`,splitHint:`Une sous-tâche par ligne — Titre :: description (description facultative)`,splitPlaceholder:`Écrire la couche données :: ajouter le dépôt
4
+ Câbler l'UI`,splitInto:`Diviser en sous-tâches`,deleteTitle:`Retirer cette tâche non démarrée du run`},pe={phaseStart:`Démarrer`,phaseInterview:`Entretien`,phaseSpecReview:`Revue spec`,phasePlanning:`Planification`,phaseTaskReview:`Revue tâches`,phaseRunning:`En cours`,phaseDone:`Terminé`,titleFallback:`Nouveau projet SDD`,questionsSuffix:`{{cur}}/{{max}} questions`,tasksSuffix:`{{count}} tâches`,runCfgTitle:`Config du run — modèle par défaut + chaîne de repli`,modelsLabel:`Modèles`,startRun:`Démarrer le run`,defaultWorkerModel:`Modèle worker par défaut`,leaderDefaultPlaceholder:`Leader / défaut de session`,useSessionDefault:`Utiliser le défaut de session`,fallbackChain:`Chaîne de repli`,appliesToAll:`S'applique à chaque tâche. Override par tâche depuis le board live après le démarrage.`,parallelAgents:`Agents parallèles`,isolateWorktrees:`Isoler dans des worktrees git`,worktreeOn:`Chaque tâche tourne dans son propre worktree, squash-mergé à la fin.`,worktreeOff:`Les tâches tournent directement sur la branche courante (pas d'isolation).`,planDecompose:`Découper automatiquement les grosses tâches`,planDecomposeOn:`Avant le dispatch, découpe les tâches que le moteur d'atomicité marque comme trop grandes.`,planDecomposeOff:`Garde le graphe de tâches approuvé tel quel (découpe possible à l'exécution si une tâche échoue).`,goalPrompt:`Que voulez-vous construire ?`,goalPlaceholder:`ex. Ajouter un login OAuth (Google + GitHub) avec gestion de session`,startingInterview:`Démarrage de l'entretien…`,startInterview:`Démarrer l'entretien`,introBody:`Un agent isolé vous interviewe pour bâtir une spec, la décompose en un graphe de tâches ordonné par dépendances, puis une vraie flotte multi-agents l'exécute — à suivre en direct sur le board. En cas de refresh ou de redémarrage, l'entretien reprend automatiquement.`,taskGraphSummary:`Graphe de tâches · {{count}} tâches, ordonné par dépendances`,dragToExplore:`glisser pour explorer`,show:`afficher`,goalLabel:`Objectif`,implementationPlan:`Plan d'implémentation`,approveSpec:`Approuver la spec → planifier l'implémentation`,approveTasks:`Approuver les tâches`,approvePlan:`Approuver le plan`,answerPlaceholder:`Répondre à la question…`,changePlaceholder:`Demander un changement…`,resumeBanner:`Entretien repris d'une session précédente — continuez là où vous vous êtes arrêté.`,openLiveBoard:`Ouvrir le board live`,discardInterview:`Abandonner et recommencer`,discardTitle:`Abandonner cet entretien et effacer la session enregistrée`},me={emptyDir:`vide`,loadFailed:`Échec du chargement des fichiers : {{error}}`,expandAllTitle:`Déplier tous les dossiers`,expandAll:`Tout déplier`,collapseAllTitle:`Replier tous les dossiers`,collapse:`Replier`,folders_one:`{{count}} dossier`,folders_other:`{{count}} dossiers`,currentDirTitle:`Dossier courant : {{path}}`,navigateToTitle:`Aller à {{path}}`,filesSuffix_one:`{{count}} fichier`,filesSuffix_other:`{{count}} fichiers`,goToDir:`aller au dossier`,navigateParentTitle:`Aller au dossier parent de {{path}}`,parentDirectory:`dossier parent`,noFiles:`Aucun fichier trouvé`,copyAbsPath:`Copier le chemin absolu`,copyRelPath:`Copier le chemin relatif`,openInTerminal:`Ouvrir dans le terminal`,openInFileManager:`Ouvrir dans le gestionnaire de fichiers`,mentionInChat:`Mentionner dans le chat`,copyPath:`Copier le chemin`},he={sendSelectionAction:`Envoyer la sélection au chat`,noFilesOpen:`Aucun fichier ouvert`,selectToEdit:`Sélectionnez un fichier dans l'explorateur pour éditer`,sendSelectedTitle:`Envoyer les lignes sélectionnées au chat`,mentionFileTitle:`Mentionner ce fichier dans le chat`,sendToChat:`Envoyer au chat`,mentionFile:`Mentionner le fichier`,loadingEditor:`Chargement de l'éditeur…`,selectTab:`Sélectionnez un onglet pour voir son contenu`},ge={title:`Activité du fichier`,overview:`Aperçu`,changes:`Modifications`,context:`Contexte`,logs:`Journaux`,lines:`lignes`,resizeHint:`Faites glisser pour redimensionner · double-cliquez pour réinitialiser`,refresh:`Actualiser les preuves du fichier`,evidenceCount_one:`{{count}} événement`,evidenceCount_other:`{{count}} événements`,mutations30m:`Modifications · 30 min`,sessions:`Sessions`,actors:`Acteurs`,linkedWork:`Travail lié`,workLinks:`Kanban / tâche`,recentActivity:`Activité récente du fichier`,events:`événements`,noEvidence:`Aucune activité n'est encore attribuée à ce fichier.`,noSessions:`Aucune attribution de session.`,noActors:`Aucune attribution d'acteur.`,noWorkLinks:`Aucun lien Kanban, SDD ou tâche enregistré.`,taskOrTodo:`Task / tâche`,loadingEvidence:`Chargement des preuves du fichier…`,gitToBuffer:`Git HEAD → tampon Monaco actuel`,savedToBuffer:`Dernière version enregistrée → tampon Monaco actuel`,unsaved:`tampon non enregistré`,lifetimeTitle:`Tout l’historique`,lifetimeChanges:`modifications`,lifetimeSessions:`sessions`,lifetimeTasks:`tâches`,lifetimeBoards:`tableaux`,lifetimeSince:`depuis {{date}}`,lifetimeTools:`via {{tools}}`,level:{quiet:`stable`,active:`actif`,churn:`forte rotation`},analysisTitle:{quiet:`Aucune rotation récente`,active:`Ce fichier est en cours de modification`,churn:`Modifications répétées détectées`},analysisBody:{quiet:`Aucune modification attribuée n'a été enregistrée au cours des 30 dernières minutes.`,active:`{{mutations}} modifications par {{actors}} acteurs dans {{sessions}} sessions au cours des 30 dernières minutes.`,churn:`Forte rotation : {{mutations}} modifications par {{actors}} acteurs dans {{sessions}} sessions. Vérifiez les travaux qui se chevauchent avant la prochaine modification.`}},_e={loading:`Chargement des analytics…`,heading:`Tableau Analytics`,autoRefresh:`actualisation toutes les 10 s`,liveSessions:`Sessions en direct`,agents:`Agents`,agentsActive:`{{count}} actifs`,totalEvents:`Événements totaux`,categoriesSub:`{{count}} catégories`,toolCalls:`Appels d'outils`,iterationsSub:`{{count}} itérations`,sessionCost:`Coût de session`,tokensSub:`{{input}} entrée / {{output}} sortie`,sessionDuration:`Durée de session`,messagesSub:`{{count}} messages`,eventsByCategory:`Événements par catégorie`,noEvents:`Aucun événement enregistré.`,topEvents:`Top événements`,activeSessionUsage:`Utilisation session active`,provider:`Fournisseur`,model:`Modèle`,inputTokens:`Jetons d'entrée`,outputTokens:`Jetons de sortie`,cacheRatio:`Ratio cache`,filesRead:`Fichiers lus`,noSession:`Aucune session active ou en attente de données…`,healthErrors:`Santé & erreurs`,errorEvents:`Événements d'erreur`,warningEvents:`Événements d'avertissement`,cacheHitRate:`Taux de hit cache`,totalCategories:`Catégories totales`,waitingData:`En attente de données…`,recentEvents:`Événements récents`,noRecentEvents:`Aucun événement récent. Interagissez avec l'UI pour générer des événements.`},ve={heading:`Bibliothèque de prompts`,searchPlaceholder:`Rechercher des prompts…`,newPrompt:`+ Nouveau prompt`,all:`Tous`,recent:`🕘 Récents`,favorites:`★ Favoris`,noMatch:`Aucun prompt ne correspond.`,newPromptHeading:`Nouveau prompt`,titlePlaceholder:`Titre *`,descPlaceholder:`Description sur une ligne`,categoryPlaceholder:`Catégorie`,tagsPlaceholder:`tags, séparés, par virgule`,contentPlaceholder:`Contenu du prompt * — {{name}} pour les variables`,variables:`Variables`,addVar:`+ var`,varNamePlaceholder:`nom`,varDescPlaceholder:`description`,removeVarTitle:`Supprimer la variable`,required:`requis`,multiline:`multiligne`,enumPlaceholder:`enum : a, b, c`,savePrompt:`Enregistrer le prompt`,saveFailed:`Impossible d'enregistrer le prompt.`,titleContentRequired:`Le titre et le contenu sont requis.`,toggleFavoriteTitle:`Basculer le favori`,selectOption:`— choisir —`,fillMissing:`Remplir : {{missing}}`,insertIntoChat:`Insérer dans le chat`,selectPromptHint:`Sélectionnez un prompt pour prévisualiser et insérer.`},ye={scopeProject:`Projet`,scopeGlobal:`Global`,scopeBundled:`Intégré`,timeoutError:`Délai de la requête dépassé. Veuillez réessayer.`,updateFailed:`Mise à jour échouée`,saveFailed:`Échec de l'enregistrement`,uninstallFailed:`Désinstallation échouée`,noSkillSelected:`Aucune compétence sélectionnée`,selectSkillHint:`Sélectionnez une compétence dans la barre latérale pour voir sa doc`,goToChat:`Aller au chat`,openSourceRepo:`Ouvrir le dépôt source`,copySourceUrl:`Copier l'URL source`,updatedLabel:`↑ Mis à jour : {{list}}`,upToDateLabel:`— À jour : {{list}}`,errorsLabel:`✗ {{list}}`,checkUpdatesTitle:`Vérifier les mises à jour`,exportTitle:`Exporter la compétence en .md`,editTitle:`Modifier la compétence`,uninstallTitle:`Désinstaller la compétence`,closeTitle:`Fermer et aller au chat`,backTitle:`Reculer`,forwardTitle:`Avancer`,relatedFiles:`Fichiers liés`,references:`Références`,goToSkillTitle:`Aller à {{name}}`,loadingContent:`Chargement du contenu…`,editingLabel:`Modification de {{name}}`,editStats:`{{lines}} lignes · {{words}} mots · {{chars}} caractères`,charsWarningFmt:`⚠ {{used}} Mo / {{limit}} Mo`,draftSaved:`Brouillon enregistré`,draftRestored:`Brouillon restauré`,discardDraft:`Supprimer le brouillon`,splitViewTitle:`Vue scindée`,hidePreviewTitle:`Masquer l'aperçu`,contentPlaceholder:`Contenu de la compétence (markdown)...`,loadFailed:`Échec du chargement du contenu`,noContent:`Aucun contenu disponible`,uninstallSkillHeading:`Désinstaller la compétence`,uninstallConfirm:`Désinstaller {{name}} ?`,uninstallRemovePath:`Cela supprimera la compétence de {{path}} et est irréversible.`,uninstallAction:`Désinstaller`},be={sessionStats:`Stats de session`,clients:`Clients`,input:`Entrée`,output:`Sortie`,cost:`Coût`,agentsSuffix:`agents`,upPrefix:`depuis {{time}}`,webuiClient:`Client WebUI`,disconnected:`Déconnecté`,connected:`Connecté`,tuiClient:`Client TUI`,terminal:`Terminal`,repl:`REPL`,coordinator:`COORDINATEUR`,fleetSummary:`Résumé de la flotte`,toolCallsLabel:`Appels d'outils`,tokensLabel:`Jetons`,coordinatingFleet:`Coordonne la flotte`,donePrefix:`✓ terminé ·`,failedPrefix:`✕ échec ·`,seenPrefix:`vu il y a {{time}}`,availableDesk:`Bureau libre`,mailboxHub:`Centre de messagerie`,unreadSuffix_one:`{{count}} non lu`,unreadSuffix_other:`{{count}} non lus`,allClear:`Tout est lu`,total:`Total`,unreadLabel:`Non lus`,liveActivity:`Activité en direct`,waitingActivity:`En attente d'activité…`,now:`maintenant`,fleetHq:`QG de flotte WrongStack`,live:`EN DIRECT`,legendStatus:`Statut`,legendActive:`Actif`,legendIdle:`Inactif`,legendError:`Erreur`,legendConnections:`Connexions`,legendMail:`Mail`,legendTask:`Tâche`,legendStatusConn:`Statut`,arrange:`Réorganiser`,arrangeTitle:`Disposer les nœuds pour les adapter à la zone disponible`,feed:`Flux`,feedTitle:`Basculer le flux d'activité en direct`,broadcast:`Diffuser`,broadcastTitle:`Diffuser un message à chaque session live du projet`,broadcastToAll:`Diffuser à toutes les sessions`,broadcastPlaceholder:`Message à chaque agent live du projet…`,broadcastSendHint:`⌘/Ctrl+Entrée pour envoyer`,openFullView:`Ouvrir la vue complète des opérations`,rowStatus:`Statut`,rowModel:`Modèle`,rowTool:`Outil`,rowIterations:`Itérations`,rowToolCalls:`Appels d'outils`,rowTokensIn:`Jetons entrants`,rowTokensOut:`Jetons sortants`,rowTokensTotal:`Jetons totaux`,rowContext:`Contexte`,rowCost:`Coût`,rowLastSeen:`Dernière vue`,rowSurface:`Surface`,rowBranch:`Branche`,rowPid:`PID`,rowDir:`Rép.`,rowAgents:`Agents`,rowUptime:`Disponibilité`,rowConnections:`Connexions`,rowTotalMessages:`Messages totaux`,rowUnread:`Non lus`,recent:`Récents`,noSubject:`(sans objet)`,fullOperationStream:`Flux complet des opérations`,closeEsc:`Fermer (Échap)`,idleDesk:`Bureau inactif`,fleetHqLabel:`QG de flotte`,clientsSuffix_one:`{{count}} client`,clientsSuffix_other:`{{count}} clients`,taskFallback:`tâche`,controlLabel:`contrôle`},xe={installTitle:`Installer une compétence`,createTitle:`Créer une compétence`,exportTitle:`Exporter toutes les compétences en .zip`,checkUpdatesTitle:`Vérifier les mises à jour (toutes)`,searchPlaceholder:`Rechercher des compétences…`,loading:`Chargement…`,noSkills:`Aucune compétence installée`,noMatch:`Aucune compétence ne correspond au filtre`,noDescription:`Aucune description`,scopeForeign:`Externe`,installHeading:`Installer la Compétence`,installHint:`Entrez une référence de dépôt GitHub (owner/repo) ou une URL complète.`,installPlaceholder:`ex. wrongstack/skill-name ou https://github.com/owner/repo`,installScope:`Portée d'installation :`,installBtn:`Installer`,installedMsg:`Installée : {{names}}`,installFailed:`Échec de l'installation`,createHeading:`Créer une Compétence`,createHint:`Scaffold une nouvelle compétence. La première ligne est le déclencheur.`,nameLabel:`Nom`,namePlaceholder:`ex. ma-nouvelle-compétence`,descLabel:`Description / Déclencheur`,descPlaceholder:`Utiliser cette compétence quand <situation>.
5
+ Déclencheurs : l'utilisateur dit "mot-clé", "autre".`,saveIn:`Enregistrer dans :`,createBtn:`Créer la Compétence`,createdMsg:`Créée : {{name}}`,createFailed:`Échec de la création`},Se={noEvents:`Aucun événement.`},Ce={pickHint:`Choisir un kit — l'agent s'y conformera.`,gallery:`Galerie`,galleryTitle:`Ouvrir la galerie d'aperçu en direct`,stackTitle:`Stack cible`,loading:`Chargement des kits…`,notFound:`Aucun kit de design trouvé.`,bestFor:`Idéal pour :`,light:`Clair`,dark:`Sombre`,tune:`Ajuster`,font:`Police`,set:`Définir`,spaceGrotesk:`Space Grotesk…`,aaHeading:`Aa Titre`,theQuickBrownFoxJumpsOver:`Portez ce vieux whisky au juge blond qui fume.`,primary:`Principal`,ghost:`Fantôme`,badge:`Badge`,inputField:`Champ de saisie…`,radius:`Rayon`,density:`Densité`,motion:`Mouvement`},we={detached:`(détaché)`,count_one:`{{count}} worktree`,count_other:`{{count}} worktrees`,baseSuffix:` · base {{base}}`,baseLabel:`base`,cleanOrphans:`Nettoyer les orphelins`,cleanOrphansTitle:`Supprimer tous les worktrees orphelins`,liveBusyTitle:`Un run est actif — arrêtez-le d'abord`,rescanTitle:`Re-scanner`,removed_one:`{{count}} worktree supprimé.`,removed_other:`{{count}} worktrees supprimés.`,failed:`Échec`,mergedIntoBase:`{{branch}} fusionné dans la base.`,conflictMerge:`Conflit en fusionnant {{branch}} : {{files}}`,seeGit:`voir git`,mergeFailed:`Échec de la fusion : {{reason}}`,unknownReason:`inconnu`,mergeConfirmTitle:`Fusionner {{branch}} dans {{base}} ?`,mergeConfirmMsg:`Squash-fusionne cette branche sur la branche de base. S'annule proprement en cas de conflit.`,mergeAction:`Fusionner`,removeConfirmTitle:`Supprimer {{branch}} ?`,removeConfirmMsg:`Supprime forcément le checkout du worktree et efface sa branche. Le travail non fusionné est perdu.`,empty:`Aucun worktree.`,emptyHint:`Les runs SDD / Goal créent des worktrees isolés ici. Les orphelins des runs plantés apparaissent aussi.`,actOpenTerm:`Ouvrir dans le terminal`,actOpenFolder:`Ouvrir le dossier`,actViewChanges:`Voir les modifications`,actMerge:`Fusionner vers la base`,actRemove:`Supprimer / annuler`,live:`actif`,noUncommitted:`Aucune modification non validée`,commitsAhead_one:`{{count}} commit en avance`,commitsAhead_other:`{{count}} commits en avance`,more:`…{{count}} de plus`},Te={heading:`Plan de bureau`,headingHint:`Visualisez votre flotte comme un plan de bureau avec le statut des agents en direct.`,statAgents:`Agents`,statMail:`Courriel`,unreadSuffix:` non lu`,sectionView:`Affichage`,sectionDisplay:`Affichage`,sectionBackground:`Arrière-plan`,sectionRecent:`Activité récente`,eventsTrackedSuffix:` événements suivis`,recentHint:`Les envois de courriel, les spawns d'agents et les changements de statut apparaissent ici.`,sectionShortcuts:`Raccourcis`,sectionLegend:`Légende`,hudLabel:`HUD`,hudDesc:`Afficher l'overlay des statistiques de session en temps réel`,hudToggle:`Activer le HUD`,minimapLabel:`Mini-carte`,minimapDesc:`Afficher la mini-carte d'aperçu`,minimapToggle:`Activer la mini-carte`,controlsLabel:`Contrôles`,controlsDesc:`Afficher les contrôles de zoom et d'ajustement`,controlsToggle:`Activer les contrôles`,animateLabel:`Animer les arêtes`,animateDesc:`Animer le flux sur les connexions actives`,animateToggle:`Activer l'animation des arêtes`,legendLabel:`Afficher la légende`,legendDesc:`Afficher la légende de statut et de connexion`,legendToggle:`Activer la légende`,feedLabel:`Flux en direct`,feedDesc:`Bande inférieure de l'activité inter-processus récente`,feedToggle:`Activer le flux en direct`,fitView:`Ajuster`,zoomIn:`Zoom avant`,zoomOut:`Zoom arrière`,resetZoom:`Réinitialiser le zoom`,legendActive:`Actif (en cours)`,legendIdle:`Inactif`,legendError:`Erreur`,legendOffline:`Hors ligne`,bg:{dots:`Points`,lines:`Lignes`,cross:`Croix`,none:`Aucun`}},Ee={liveProjectOffice:`Bureau du projet en direct`,agents:`agents`,working:`actifs`,toolCalls:`appels d’outils`,office:`Bureau`,topology:`Topologie`,officeDescription:`Bureaux et travail des agents en direct`,topologyDescription:`Clients, agents et connexions`,team:`Équipe`,liveDesk:`Bureau en direct et travail entrant`,lastActions:`Travaux récents`,leadAgent:`Agent principal`,agent:`Agent`,callsCount:`{{count}} appels`,recent:`Récent`,noCalls:`Aucun appel terminé`,telemetryReconnect:`Reconnectez ce terminal pour démarrer l’historique des outils`,thinking:`Réflexion`,waiting:`En attente de travail`,preparing:`Préparation de l’action suivante…`,deskReady:`Le bureau est prêt`,toolCall:`Appel d’outil`,execution:`Exécution`,started:`Début`,duration:`Durée`,session:`Session`,target:`Cible`,resultSize:`Taille du résultat`,lines:`lignes`,bytes:`octets`,tokens:`tokens`,input:`Entrée`,outputPreview:`Aperçu de la sortie`,readyTitle:`Le bureau est prêt`,readyBody:`Les agents prendront place dès qu’ils rejoindront ce projet.`,liveEvent:`flux d’événements en direct`,connectedSessions_one:`{{count}} session connectée`,connectedSessions_other:`{{count}} sessions connectées`,detailHint:`cliquez sur une action pour afficher les détails exacts d’entrée et de résultat`,officeBriefing:`Briefing du bureau`,leaderPrompt:`Dernier prompt du leader`,activeInstruction:`Instruction active`,telemetryWaiting:`Reconnectez ce terminal pour recevoir les instructions en direct`,syncWaiting:`synchronisation en attente`,todoTelemetryWaiting:`Reconnectez ce terminal pour recevoir la liste des tâches en direct`,taskNotReported:`L’agent travaille, mais aucune description de tâche n’a été signalée`,noPrompt:`Aucun prompt reçu dans cette session`,activeTodos:`Tâches actives`,todoProgress:`{{done}}/{{total}} terminées`,allTodosDone:`Toutes les tâches sont terminées`,noActiveTodos:`Aucune tâche active`,moreTodos:`+{{count}} autres`,currentTask:`Tâche actuelle`,task:`Tâche`,promptReceived:`Reçu`,todos:`Tâches`,todoStatus:{pending:`En attente`,in_progress:`En cours`,completed:`Terminée`},breakRoom:`Salle de pause`,onBreak:`{{count}} en pause`,desksEmpty:`Tout le monde est en pause — les bureaux sont prêts pour la prochaine tâche`,files:`FICHIERS`,read:`LECTURE`,write:`ÉCRITURE`,edit:`ÉDITION`,term:`TERM`,live:`EN DIRECT`,uniqueFilesTouched:`Fichiers uniques touchés`,fileReads:`Lectures de fichiers`,filesWritten:`Fichiers écrits`,filesEdited:`Fichiers modifiés`,linesAddedAndRemoved:`Lignes ajoutées et supprimées`,terminalCommands:`Commandes du terminal`,incomingAndOutgoingMail:`Courrier entrant et sortant`,sessionActivityTotals:`Totaux d'activité de la session`,closeToolDetails:`Fermer les détails de l'outil`,closeDetails:`Fermer les détails`,closeMailDetails:`Fermer les détails du courrier`,closeTaskDetails:`Fermer les détails de la tâche`,closeOfficeBriefing:`Fermer le briefing du bureau`,priority:`Priorité`,route:`Route`},De={injectedHeading:`Mémoire SAGE injectée`,memoriesLabel_one:`{{count}} souvenir`,memoriesLabel_other:`{{count}} souvenirs`},Oe={tabProject:`Projet SDD`,tabBoard:`Tableau SDD en direct`,tabSpecs:`Spécifications`},ke={label:`Panneau latéral`},Ae={deleteTitle:`Supprimer cette mémoire ?`,backToList:`Retour à la liste des mémoires`,copyId:`Copier l'ID de la mémoire`,deletedMemory:`Mémoire supprimée`,anchorCursorHint:`La plage de lignes du curseur correspond à l'ancre de cette mémoire`,statusDeleted:`supprimée`,statusSuperseded:`remplacée`,restoreTitle:`Restaurer cette mémoire à l'état actif`,supersededJumpTitle:`Cette version est remplacée — passer à la version active`,acceptSuggestionTitle:`Accepter la suggestion de suppression de l'hygiène — la mémoire sera oubliée`,rejectSuggestionTitle:`Rejeter la suggestion — la mémoire reste telle quelle et pourra être re-suggérée`,updateTitle:`Mettre à jour le contenu de la mémoire — le versionnage crée un nouvel enregistrement actif`,promoteTitle:"Promouvoir en `permanent` — l'hygiène ne le réaffichera jamais",openRecordTitle:`Ouvrir l'enregistrement complet dans MemoryManager`,fileDrawerAria:`Tiroir de mémoire de fichier`,requeryTitle:`Re-interroger ce fichier`,closeDrawerAria:`Fermer le tiroir`,closeDrawerTitle:`Fermer le tiroir de mémoire`,showRecoverable:`Afficher les récupérables (supprimées)`,cursorBoostTitle:`Boost du curseur`,fileScopedTitle:`Limité au fichier`,mentionedInTitle:`Mentionné dans`,editorKnowledge:`Connaissance`,editorContentPlaceholder:`Exemple : l'état de la WebUI appartient aux stores Zustand ; les messages du serveur les mettent à jour via des gestionnaires WebSocket singleton.`,editorImportance:`Importance`,editorConfidence:`Confiance`,editorFreshness:`Fraîcheur`,editorAnchors:`Ancres`,editorSymbolPlaceholder:`Nom du symbole`,editorRelationships:`Relations`,searchAria:`Rechercher des mémoires`,searchPlaceholder:`Rechercher contenu, IDs, tags, ancres…`,clearSearchAria:`Effacer la recherche`,audienceFilterAria:`Filtrer uniquement les mémoires à audience`,audienceFilterTitle:`Afficher uniquement les mémoires à audience`,clearFiltersAria:`Effacer tous les filtres`,clearFiltersTitle:`Effacer tous les filtres`,allStatuses:`Tous les statuts`,allKinds:`Toutes les sortes`,tagsLabel:`Tags`,popularTags:`Tags populaires`,graphAria:`Graphe des relations de mémoire`,graphFullscreenAria:`Ouvrir le graphe en plein écran`,clearTracesTitle:`Effacer toutes les traces`,closePanelTitle:`Fermer le panneau`,traceMatched:`correspond`,traceInjected:`injecté`,traceFiltered:`filtré`,traceActive:`actif`,traceExited:`sorti`,traceScore:`score`,traceError:`erreur`,lifecycleAria:`Registre en direct du cycle de vie de la mémoire`,listAria:`Mémoires`,emptyTitle:`Le contexte à long terme de votre projet`,emptyVerifiedAnchors:`Ancres vérifiées`,emptyTypedRelations:`Relations typées`,emptyAgentRecall:`Rappel d'agent`,lensesAria:`Lentilles de mémoire SAGE`,loadingSage:`Chargement de SAGE`,loadingAudience:`Chargement des mémoires d'audience`,storeUnavailable:`Store de mémoire indisponible`,backToChat:`Retour au chat`,sageHeading:`SAGE`,refreshAria:`Actualiser les mémoires`,tabMemories:`Mémoires`,tabActive:`Actives`,tabNeedsReview:`À examiner`,tabGraphEdges:`Arêtes du graphe`,libraryAria:`Bibliothèque de mémoires`,viewAria:`Vue des mémoires`,detailAria:`Détail de la mémoire`,fileForDrawerAria:`Fichier pour le tiroir de mémoire`,cursorLabel:`curseur`,reviewLabel:`examen`,hygieneReviewTitle:`Examen d'hygiène : {{reason}} ({{days}} j)`,updatedSuffix:`mise à jour {{date}}`,actionRecover:`Récupérer`,actionGoToActive:`Aller à la version active`,actionAcceptDeletion:`Accepter la suppression`,actionKeep:`Conserver`,actionUpdate:`Mettre à jour`,actionMarkPermanent:`Marquer comme permanent`,actionShowFull:`Afficher tout`,itemLabel:`mémoires`,noFile:`(aucun fichier)`,memoriesCount_one:`{{count}} mémoire`,memoriesCount_other:`{{count}} mémoires`,pendingReviewCount_one:`{{count}} examen en attente`,pendingReviewCount_other:`{{count}} examens en attente`,supersededCount:`{{count}} remplacée(s)`,linesRange:`lignes {{start}}–{{end}}`,emptyOpenFile:`Ouvrez un fichier pour voir ses mémoires.`,loadingMemories:`Chargement des mémoires…`,errorPrefix:`Erreur : {{message}}`,emptyNoMemories:`Aucune mémoire attachée à {{file}} pour l'instant.`,pendingAccepting:`acceptation…`,pendingKeeping:`conservation…`,pendingUpdating:`mise à jour…`,pendingMarking:`marquage…`,pendingRecovering:`récupération…`,deletedNeverPolicy:`Cet enregistrement est réservé à l'audit et porte une interdiction absolue : il ne peut jamais entrer dans le contexte LLM.`,deletedEligiblePolicy:`L'enregistrement est inactif et ne peut être modifié, mais reste admissible comme preuve historique lorsque la récupération le juge pertinent.`,deletingLabel:`Suppression…`,actionDeleteMemory:`Supprimer la mémoire`,copiedNotice:`ID de mémoire copié.`,revisionSuffix:`révision {{n}}`,memoryRelationships:`Relations de mémoire`,captureMemory:`Capturer une mémoire`,editMemory:`Modifier la mémoire`,editorCreateHint:`Ajoutez des connaissances durables avec des métadonnées de récupération.`,editorEditHint:`Mettez à jour le contenu sans perdre la provenance.`,createMemory:`Créer la mémoire`,saveChanges:`Enregistrer les modifications`,addAnchor:`Ajouter une ancre`,noAnchors:`Aucune ancre pour l'instant — ajoutez-en une pour améliorer la précision de récupération`,loadingGraph:`chargement du vrai graphe…`,graphStats:`{{nodes}} nœuds · {{edges}} arêtes`,lifecycleHeading:`Cycle de vie de la mémoire`,statusWaiting:`en attente`,statusLive:`en direct · {{count}}/100`,noMatching:`Aucune mémoire correspondante`,buildGraph:`Construire votre graphe de mémoires`,clearFilters:`Effacer les filtres`,createFirst:`Créer la première mémoire`,captureButton:`Capturer une mémoire`,memoryCaptured:`Mémoire capturée.`,memoryUpdated:`Mémoire mise à jour.`,liveStore:`store en direct`,reconnecting:`reconnexion`,newMemory:`Nouvelle mémoire`,hideFileDrawer:`Masquer le tiroir de mémoire de fichier`,showFileDrawer:`Afficher le tiroir de mémoire de fichier`,hideDrawer:`Masquer le tiroir`,showDrawer:`Afficher le tiroir`,editorCharCount:`{{count}} caractères`,editorContentLabel:`Contenu de la mémoire`,editorKind:`Type`,editorScope:`Portée`,editorLifecycleStatus:`Statut du cycle de vie`,editorSupersedes:`Remplace`,editorContradicts:`Contredit`,filterByStatus:`Filtrer par statut`,filterByKind:`Filtrer par type`,graphHeading:`Graphe de relations`,graphHeadingFull:`Graphe de relations — {{id}}`,graphOpenFullscreen:`Ouvrir en plein écran`,projectKnowledge:`connaissances du projet`,sageSubtitle:`Inspectez, connectez, organisez et retirez le contexte durable utilisé entre les sessions d'agents.`,emptyBody:`Sélectionnez une mémoire pour inspecter ses métadonnées et son graphe de relations, ou capturez des connaissances que les futurs agents devront récupérer automatiquement.`,tabDeleted:`Supprimées`,fileDrawerLabel:`Tiroir de fichiers`,selectFilePlaceholder:`— sélectionner un fichier —`,memoryCountSummary:`{{shown}} de {{total}} mémoires`,updatedSortLabel:`mis à jour ↓`,tabAllMemories:`Toutes les mémoires`,tabAllMemoriesHint:`Inspecter, organiser, retirer`,tabAudience:`Ciblées`,tabAudienceHint:`Guidage routé vers les agents`,editorRelationshipsHint:`Référencez des ID de mémoire exacts. Les relations sont validées et les arêtes du graphe reconstruites par SAGE.`,editorTaskTypes:`Types de tâches`,createAction:`Créer`,mutationTimeout:`{{verb}} expiré. Votre brouillon est toujours là.`,loadingSageContent:`Chargement du contenu SAGE`,injectorActiveInContext:`Actif dans le contexte`,injectorInjectionHistory:`Historique des injections`,injectorContextTransitions:`Transitions de contexte`,metaCreated:`Créée`,metaUpdated:`Mise à jour`,metaLastAccessed:`Dernier accès`,metaLastVerified:`Dernière vérification`,referencedUnavailable:`Mémoire référencée indisponible`,emptyFiltered:`Modifiez les filtres ou effacez la requête de recherche.`,emptyCapture:`Capturez des faits durables, des décisions, des conventions et des notes liées à des fichiers pour chaque agent.`,memoryUnavailable:`La mémoire est indisponible ou a été supprimée.`,staleConflicts:`obsolètes + conflits`},je={enableLayer:`Activer cette couche de limite`,outsideScope:`Hors périmètre`,askPermission:`Demander la permission`,alwaysBlock:`Toujours bloquer`,allow:`Autoriser`,allowSelectors:`Sélecteurs autorisés`,denySelectors:`Sélecteurs refusés`,crossPathSelectors:`Le shell « Autoriser » est opaque et peut traverser des sélecteurs de chemin.`,removeLayer:`Supprimer la couche`,taskInspector:`Inspecteur de tâches`,task:`Tâche`,dispatched:`Envoyée`,collapseDetails:`Réduire les détails de la tâche`,taskBoundary:`Limite de tâche`,title:`Titre`,managedStage:`Étape gérée`,status:`Statut`,priority:`Priorité`,type:`Type`,labelsCommaSeparated:`Étiquettes (séparées par des virgules)`,dueDatePlaceholder:`Date d'échéance (ISO ou AAAA-MM-JJ)`,estimatedHours:`Heures estimées`,actualHours:`Heures réelles`,selectBlockingTasks:`Sélectionner les tâches bloquantes…`,selectSequentialChain:`Ajouter des tâches à une chaîne séquentielle…`,enforceChainOrder:`Imposer l'ordre de la chaîne comme dépendances`,assignmentReason:`Motif de changement / affectation (persisté dans l'activité)`,managedLifecycle:`Transition du cycle de vie géré`,kanbanAgentTransition:`Transition de l'agent Kanban`,completedAction:`Action terminée / action du relecteur`,progressComment:`Commentaire d'avancement véridique (obligatoire)`,evidenceUrl:`URL de la pièce jointe de preuve`,source:`Source`,taskId:`ID de tâche`,run:`Exécuter`,column:`Colonne`,primaryModelSource:`Source du modèle principal`,selectProviderModel:`Sélectionner le fournisseur / modèle exact…`,fallbackProfile:`Profil de secours (le premier modèle est le principal)`,selectProfile:`Sélectionner un profil configuré…`,fallbackModels:`Modèles de secours`,addFallbackModel:`Ajouter un modèle de secours…`,role:`Rôle`,selectRole:`Sélectionner un rôle…`,assignSkills:`Attribuer les compétences requises…`,restrictTools:`Restreindre à des outils spécifiques…`,agentNameOptional:`Nom de l'agent (facultatif)`,retryPolicy:`Politique de nouvelle tentative`,maxAttempts:`Tentatives max.`,costCeilingUsd:`Plafond de coût USD`,grantCapability:`Accorder une capacité…`,targetBoard:`Tableau cible`,boardPresence:`Présence au tableau`,liveBoardUsers:`Utilisateurs actifs du tableau`,kanbanAgent:`Agent Kanban`,watchThisBoard:`Surveiller ce tableau`,supervisorEngine:`Moteur superviseur`,kanbanAgentModelSource:`Source du modèle de l'agent Kanban`,supervisorSkills:`Compétences du superviseur`,forceLoadSkills:`Forcer le chargement des compétences agentiques…`,extraFallbackModels:`Modèles de secours supplémentaires`,optionalFallbacks:`Secours ordonnés facultatifs…`,queueHealth:`Santé de la file`,claimableTasks:`Tâches réclamables`,runningAssignments:`Affectations en cours`,inReview:`En revue`,manuallyBlocked:`Bloquées manuellement`,failedTasks:`Tâches échouées`,blockedByDeps:`Tâches prêtes/en attente bloquées par des dépendances`,expiredLeases:`Affectations de bail expirées`,healthy:`sain`,costCeilingSum:`Somme des costCeilingUsd pour les tâches en cours/en file`,liveRunSteer:`Exécution en direct — pilotez-la d'ici`,openLiveRun:`Ouvrir la vue d'exécution en direct (SDD Hub)`,runAsLiveJob:`Exécuter ce tableau en tant que job d'agent en direct :`,startAsGoal:`Démarrer en tant qu'objectif`,startAsSdd:`Démarrer en tant que SDD`,runControls:`Contrôles d'exécution`,workerModel:`Modèle worker`,setModelForTask:`Définir le modèle pour cette tâche…`,newWorkerName:`Nouveau nom de worker`,duration:`Durée`,liveRun:`Exécution en direct`,lastResult:`Dernier résultat`,definitionOfDone:`Définition de terminé`,failingChecks:`Vérifications échouées`,evidenceMissing:`Preuves manquantes (contrôles agent/conseil sans références)`,needsDecomposition:`Nécessite une décomposition`,decompositionPending:`Propositions de décomposition en attente d'approbation`,noOutstanding:`Aucun problème de vérification ou de décomposition en suspens sur ce tableau.`,kanban:`Kanban`,newBoard:`Nouveau tableau`,createBoard:`Créer un tableau`,deleteTask:`Supprimer la tâche`,runFailed:`exécution échouée`,splitPendingApproval:`division en attente d'approbation`,newTask:`Nouvelle tâche`,addTask:`Ajouter une tâche`,newColumn:`Nouvelle colonne`,addColumn:`Ajouter une colonne`,duplicateBoard:`Dupliquer le tableau`,deleteBoard:`Supprimer le tableau`,boardBoundary:`Limite du tableau`,noBoardSelected:`Aucun tableau Kanban sélectionné.`,expandDetails:`Agrandir les détails de la tâche`,elapsed:`Écoulé`,assigned:`Affecté`,configuredAgentRoute:`la route d'agent configurée`,subagent:`Sous-agent`,checkedAgo:`vérifié il y a {{ago}}`,notChecked:`non vérifié`,auditInterval:`Intervalle d'audit (secondes)`,statusReady:`prêt`,statusRunning:`en cours`,statusReview:`en revue`,statusBlocked:`bloqué`,statusFailed:`échoué`,statusBlockedByDeps:`bloqué par dépendances`,statusStale:`obsolète`,runningCost:"~${{cost}} coût en cours",actionPause:`Pause`,actionResume:`Reprendre`,actionRetryFailed:`Réessayer les échecs`,actionStop:`Arrêter`,actionReassign:`Réaffecter`,actionRunNow:`Exécuter maintenant`,deleteTaskAria:`Supprimer la tâche : {{title}}`,activityNoteTemplate:`{{action}} de WebUI vers {{target}}.`},Me={heading:`Tâches planifiées`,subtitle:`Tâches récurrentes planifiées gérées par le plugin cron.`,statusDisabled:`Désactivé`,statusOverdue:`En retard`,statusActive:`Actif`,jobCount_one:`{{count}} tâche`,jobCount_other:`{{count}} tâches`,enabledCount:`{{count}} activées`,overdueCount:`{{count}} en retard`,totalRuns:`{{count}} exécutions au total`,maxConcurrent:`max {{count}} simultanées`,emptyTitle:`Aucune tâche cron planifiée.`,emptyUse:`Utilisez`,emptyToAdd:`pour en ajouter.`,thStatus:`Statut`,thName:`Nom`,thInterval:`Intervalle`,thRuns:`Exécutions`,thNextRun:`Prochaine exécution`,thLastRun:`Dernière exécution`,thAction:`Action`,lastFiredAtTitle:`Dernier déclenchement à {{time}}`,footerUse:`Utilisez`,footerToAdd:`pour ajouter,`,footerToRemove:`pour supprimer.`},Ne={refreshRosterData:`Actualiser les données du roster`,liveEmpty:`Les agents apparaissent ici lorsque des sous-agents sont générés`,fleetInspector:`Inspecteur de flotte`,openAgentsPanel:`Ouvrir le panneau des agents`,toolCalls:`Appels d'outils`,running:`En cours`,projectAgents:`Agents du projet`,createOrCloneTitle:`Créer ou cloner un agent de projet`,createOrCloneHint:`Héritez de n'importe quel agent du roster comme modèle, puis développez une identité, une politique d'exécution et un historique appris indépendants.`,cloneFromRole:`Cloner à partir du rôle du roster`,cloneHint:`Le prompt, les outils, les compétences et les valeurs par défaut sont hérités. L'apprentissage et les modifications ultérieures restent isolés au nouvel agent.`,displayName:`Nom affiché`,descriptionPlaceholder:`Détient les workflows X, Y et Z de ce projet et vérifie leurs résultats.`,creating:`Création…`,noCustomizations:`Aucune personnalisation pour le moment`,selectAgentEmpty:`Sélectionnez un agent pour modifier les personnalisations`,saving:`Enregistrement…`,saveFailed:`Échec de l'enregistrement`,failed:`Échec`,learningResumed:`Apprentissage automatique repris`,optimizationEmptyToast:`L'optimisation a produit un résultat vide. Réessayez.`,noActiveModelToast:`Aucun modèle actif sur le serveur. Optimisation envoyée à l'agent de discussion.`,learningsEmpty:`Les entrées d'apprentissage apparaissent lorsque les agents capturent des sorties`,allRosterAgents:`Tous les agents du roster`,optimizing:`Optimisation…`,paused:`en pause`,selectLearningAgent:`Sélectionnez un agent pour voir les détails d'apprentissage`,learningOn:`Apprentissage activé`,lastCapture:`Dernière capture`,lifetimeCaptures:`Captures totales`,learningsLimitExceeded:`Les données apprises dépassent la limite souple ({{bytes}}B / 8 192B). Optimisez pour synthétiser les entrées brutes en un document consolidé et réduire le volume du contexte.`,newPending:`nouveau en attente`,viewAction:`Voir`,applying:`Application…`,searchPlaceholder:`Rechercher des agents par nom, rôle ou description…`,maxIterations:`Itérations max.`,maxToolCalls:`Appels d'outils max.`,projectCustomizations:`Personnalisations du projet`,learnedEntries:`entrées apprises`,teachFailed:`Échec de l'enseignement`,selectRoleEmpty:`Sélectionnez un rôle à inspecter ou modifier`,captureLearned:`Capturer l'apprentissage`,teachThisAgent:`Enseigner à cet agent`,teachPlaceholder:`Décrivez ce que vous voulez que cet agent fasse mieux… p. ex. « Cet agent doit toujours vérifier les versions sur npm avant de recommander »`,heading:`Effectif d'agents`,headerSummary:`{{customized}} personnalisés · {{entries}} entrées apprises`,tabLive:`Flotte en direct`,tabCatalog:`Catalogue d'effectif`,tabLearning:`Auto-apprentissage`,tabCustomize:`Personnalisation`,learning:`apprentissage`,learningPaused:`Apprentissage en pause`,autoLearningPaused:`Apprentissage automatique en pause`,toolsCount_one:`{{count}} outil`,toolsCount_other:`{{count}} outils`,maxItShort:`{{value}} itér. max`,customizedBadge:`Personnalisé`,needsSummary:`⚠ Résumé requis`,timeout:`Délai`,learnedEntriesCount_one:`{{count}} entrée apprise`,learnedEntriesCount_other:`{{count}} entrées apprises`,sessionCapturesCount_one:`{{count}} capture de session`,sessionCapturesCount_other:`{{count}} captures de session`,noAgentsMatch:`Aucun agent ne correspond à « {{query}} »`,footerRosterRoles_one:`rôle d'effectif`,footerRosterRoles_other:`rôles d'effectif`,footerCustomized:`personnalisés`,footerTotalLearned_one:`entrée apprise au total`,footerTotalLearned_other:`entrées apprises au total`,clone:`+ Cloner`,abc:`ABC`,abcGeneratedFromName:`abc (généré à partir du nom)`,roleIdOptional:`ID de rôle (facultatif)`,purpose:`Objectif`,taskTypesCommaOrOnePer:`Types de tâches (séparés par des virgules ou un par ligne)`,cancel:`Annuler`,selectAnAgentToEditCustomizations:`Sélectionnez un agent pour modifier les personnalisations`,llmImprove:`Amélioration LLM`,reset:`Réinitialiser`,editIdentityMd:`Modifier identity.md`,editLearnedMd:`Modifier learned.md`,editConfigJson:`Modifier config.json`,runtimePolicy:`Politique d'exécution`,retry:`Réessayer`,noSelfLearningDataYet:`Aucune donnée d'auto-apprentissage`,review:`examiner →`,selectAnAgentToViewLearning:`Sélectionnez un agent pour voir les détails d'apprentissage`,entries:`Entrées`,size:`Taille`,optimizeLearnings:`Optimiser les acquis`,keep:`Conserver`,drop:`Supprimer`,describeACommandPatternOrBehavior:`Décrivez une commande, un motif ou un comportement que cet agent doit mémoriser.`,eGAlwaysUsePnpmForThisProject:`p. ex. Toujours utiliser pnpm pour ce projet`,teach:`Enseigner`,noActiveFleetAgents:`Aucun agent de flotte actif`,clear:`Effacer`,agentsTotal:`agents au total`,leader:`Leader`,iterations:`Itérations`,cost:`Coût`,context:`Contexte`,contextWindow:`Fenêtre de contexte`,error:`Erreur`,filterAll:`Tout ({{count}})`,filterRunning:`En cours ({{count}})`,filterDone:`Terminé ({{count}})`,filterFailed:`Échoué ({{count}})`,optimizeAll:`Tout optimiser ({{count}})`,policyUpdateFailed:`Échec de la mise à jour de la politique`,noRawEntries:`Aucune entrée brute à optimiser.`,optimizedOk:`Optimisé. Connaissances consolidées mises à jour.`,emptySynthesis:`Le modèle a renvoyé un résultat vide. Rien n'a été modifié — réessayez.`,consolidatedWithModel:`Acquis consolidés avec {{model}}.`,consolidatedPlain:`Acquis consolidés.`,resetConfirm:`Réinitialiser toutes les données propres au projet pour l'agent « {{role}} » ?`,loadCustomizationFailed:`Échec du chargement de la personnalisation`,loadRuntimePolicyFailed:`Échec du chargement de la politique d'exécution`,runtimePolicySaveFailed:`Échec de l'enregistrement de la politique d'exécution`,llmImprovementFailed:`Échec de l'amélioration par le LLM`,agentCreationFailed:`Échec de la création de l'agent`,noActiveModelMsg:`Aucun modèle actif sur le serveur — l'optimisation a été envoyée à l'agent de chat.`,optimizationFailed:`Échec de l'optimisation`,bulkOptimizationFailed:`Échec de l'optimisation groupée`,taskTypesPlaceholder:`Flux X
6
+ Analyse Y
7
+ Vérification Z`},Pe={generic:{name:`Agent de projet générique`,summary:`Modèle flexible pouvant être cloné en rôles de projet apprenant de façon autonome.`},"audit-log":{name:`Journal d'audit`,summary:`Analyse les journaux de session, les flux d'événements et les traces système.`},"bug-hunter":{name:`Chasseur de bugs`,summary:`Analyse le code à la recherche de bugs, de code smells et d'anti-patterns.`},"refactor-planner":{name:`Planificateur de refactorisation`,summary:`Analyse la structure du code et produit des plans de refactorisation par phases.`},"security-scanner":{name:`Scanner de sécurité`,summary:`Analyse le code, les configurations et les dépendances pour détecter les problèmes de sécurité.`},critic:{name:`Critique`,summary:`Évalue les décisions, les plans et les implémentations.`},"shadow-agent":{name:`Agent fantôme`,summary:`Agent de surveillance en arrière-plan qui suit la santé de la flotte.`},executor:{name:`Exécuteur`,summary:`Exécuteur de tâches polyvalent pour le travail délégué.`},chimera:{name:`Chimera`,summary:`Revue de la qualité du code des fichiers modifiés après la session.`},researcher:{name:`Chercheur`,summary:`Spécialiste de la recherche web et de la collecte de données.`},"tech-stack":{name:`Validateur de pile technique`,summary:`Valide les choix de paquets, bibliothèques et frameworks.`},orchestrator:{name:`Orchestrateur`,summary:`Coordonne l'exécution des tâches multi-agents.`},supervisor:{name:`Superviseur`,summary:`Supervise l'exécution des sous-agents et gère les escalades.`},"quality-gate":{name:`Porte qualité`,summary:`Applique les portes qualité aux implémentations.`},architect:{name:`Architecte`,summary:`Prend les décisions de conception et d'architecture.`},"prompt-engineer":{name:`Ingénieur de prompts`,summary:`Conçoit et optimise les prompts système.`},mnemosyne:{name:`Mnemosyne`,summary:`Curateur de mémoire — vérifie et maintient l'intégrité de SAGE.`},autophase:{name:`AutoPhase`,summary:`Gère l'exécution autonome des tâches en plusieurs phases.`}},Fe={heading:`Effectif personnalisé`,loading:`Chargement de l'effectif personnalisé…`,loadFailed:`Échec du chargement de l'effectif`,invalidJson:`JSON invalide`,noImprovement:`Aucune suggestion d'amélioration générée.`,improveFailed:`Échec de l'amélioration par le LLM`,behaviorSaved:`Comportement enregistré dans learned.md`,saveFailedServer:`Échec de l'enregistrement — consultez les journaux du serveur`,emptyTitle:`Aucun agent d'effectif personnalisé`,emptyBody:`Les agents propres au projet apparaissent ici lorsque vous créez ou modifiez des fichiers sous`,createExecutorIdentity:`+ Créer l'identité de l'exécuteur`,entries:`Entrées`,size:`Taille`,sessionCaptures:`Captures de session`,editIdentity:`Modifier identity.md`,editLearned:`Modifier learned.md`,editConfig:`Modifier config.json`,reviewEntries:`Examiner les entrées ({{count}})`,reviewLearnedEntries:`Examiner les entrées apprises ({{kept}}/{{total}} conservées)`,applySelection:`Appliquer la sélection`,keep:`✓ Conserver`,drop:`✗ Supprimer`,identityPlaceholder:`# Identité de projet pour {{role}}
8
+
9
+ Décrivez le rôle de cet agent dans le projet…`,teachHint:`Décrivez une commande, un motif ou un comportement que cet agent doit mémoriser. Enregistré dans`,teachInputPlaceholder:`p. ex. « Toujours utiliser pnpm pour ce projet »`,teach:`Enseigner`,llmImprove:`Amélioration LLM`,improve:`Améliorer`,dismiss:`Ignorer`},Ie={heading:`Renseignements sur la tâche`,none:`Aucune`,eventsCount_one:`{{count}} événement`,eventsCount_other:`{{count}} événements`,stagePrefix:`étape :`,legacyStage:`hérité`,priorityPrefix:`priorité :`,typePrefix:`type :`,inferredType:`déduit`,whyHere:`Pourquoi ici :`,unresolvedBlockers_one:`{{count}} blocage non résolu`,unresolvedBlockers_other:`{{count}} blocages non résolus`,ownershipRuntime:`Propriété et exécution`,owner:`Propriétaire`,assignee:`Assigné à`,agentId:`ID d'agent`,agentNameRole:`Nom / rôle de l'agent`,runStatus:`État d'exécution`,subagent:`Sous-agent`,runTask:`Tâche d'exécution`,sessionS:`Session(s)`,usersPresence:`Utilisateurs / présence`,modelRouteFallback:`Routage du modèle et repli`,routingMode:`Mode de routage`,primary:`Principal`,provider:`Fournisseur`,model:`Modèle`,fallbackRoute:`Route de repli`,skills:`Compétences`,tools:`Outils`,capabilities:`Capacités`,executionPolicyOutcome:`Politique d'exécution et résultat`,attempts:`Tentatives`,retryPolicy:`Politique de reprise`,costCeiling:`Plafond de coût`,failuresDone:`Échecs / terminé`,checks:`Vérifications`,lastFailure:`Dernier échec`,result:`Résultat`,timingAuditCoverage:`Chronologie et couverture d'audit`,created:`Créé`,updated:`Mis à jour`,due:`Échéance`,dispatched:`Envoyé`,completed:`Terminé`,duration:`Durée`,heartbeat:`Battement`,leaseExpires:`Expiration du bail`,actors:`Acteurs`,dependenciesChainProvenance:`Dépendances, chaîne et provenance`,dependencies:`Dépendances`,otherRelations:`Autres relations`,chain:`Chaîne`,originSystem:`Système d'origine`,originIds:`ID d'origine`,taskId:`ID de tâche`,boardId:`ID de tableau`},Le={chat:`Discussion`,settings:`Paramètres`,sageMemory:`Mémoire SAGE`,agentRoster:`Effectif d'agents`,contextDashboard:`Tableau de bord du contexte`,setup:`Configuration`,goal:`Objectif`,sddHub:`Hub SDD`,kanban:`Kanban`,sessions:`Sessions`,sessionInspect:`Inspection de session`,chronicle:`Chronicle`,requirementsIntake:`Recueil des exigences`,debugDashboard:`Tableau de bord de débogage`,refreshDebug:`Débogage du rafraîchissement`,editor:`Éditeur`,changes:`Modifications`,mailbox:`Boîte de réception`,designGallery:`Galerie de design`,skill:`Compétence`,officeMap:`Plan du bureau`,analytics:`Analytique`,codemap:`CodeMap`,techstack:`TechStack`,deadcode:`Analyse du code mort`,terminal:`Terminal`,inspector:`Inspecteur`,workspaceInspector:`Inspecteur d'espace de travail`,processMonitor:`Moniteur de processus`,queue:`File d'attente`,cronJobs:`Tâches cron`},Re={heading:`Mémoire d'audience`,subheading:`Consignes acheminées vers les agents correspondants`,statMemories:`Mémoires`,statRoles:`Rôles`,statTasks:`Tâches`,statModes:`Modes`,fieldMemory:`Mémoire`,fieldKind:`Type`,fieldTaskTypes:`Types de tâches`,selectors:`Sélecteurs d'audience`,selectorsHint:`Séparez les valeurs par des virgules. Au moins un sélecteur est requis.`,scopeRemoved:`Portée d'audience supprimée. La mémoire est désormais générale.`,deleted:`Mémoire d'audience supprimée.`,copiedAsJson_one:`{{count}} mémoire d'audience copiée en JSON.`,copiedAsJson_other:`{{count}} mémoires d'audience copiées en JSON.`,copyFailed:`Échec de la copie du JSON dans le presse-papiers.`,noValidInJson:`Aucune mémoire valide avec portée d'audience n'a été trouvée dans le JSON.`,queuedForImport_one:`{{count}} mémoire mise en file pour l'import`,queuedForImport_other:`{{count}} mémoires mises en file pour l'import`,skippedSuffix_one:` ; {{count}} entrée non valide a été ignorée.`,skippedSuffix_other:` ; {{count}} entrées non valides ont été ignorées.`,clearFilter:`Effacer le filtre`,noMatching:`Aucune mémoire correspondante`,noMatchingHint:`Essayez un autre rôle, tâche, mode ou expression.`,deleteTitle:`Supprimer cette mémoire d'audience ?`,deleteBody:`Cela retire la mémoire de l'usage actif. Pour la conserver comme consigne générale du projet, annulez et utilisez plutôt l'action de retrait de portée.`,emptyTitle:`Acheminez les consignes vers les bons agents`,emptyBody:`Limitez une mémoire par rôle, type de tâche ou mode de fonctionnement. Les agents correspondants la reçoivent automatiquement.`,addScoped:`Ajouter une mémoire ciblée`,createTitle:`Ajouter une mémoire ciblée par audience`,createBody:`Cette consigne n'est injectée que si un agent correspond à au moins un sélecteur fourni.`,importTitle:`Importer des mémoires d'audience`,importBodyBefore:`Collez le JSON produit ici ou par`,importBodyAfter:`Les entrées sans sélecteur d'audience valide sont ignorées.`,jsonArray:`Tableau JSON`,importAction:`Importer les mémoires`,searchAudienceMemories:`Rechercher dans les mémoires d'audience`,clearAudienceMemorySearch:`Effacer la recherche de mémoires d'audience`,refreshAudienceMemories:`Actualiser les mémoires d'audience`,importAudienceMemories:`Importer des mémoires d'audience`,copyAudienceMemoriesAsJson:`Copier les mémoires d'audience en JSON`,dismissMessage:`Fermer le message`,loadingAudienceMemories:`Chargement des mémoires d'audience`,refresh:`Actualiser`,importJson:`Importer le JSON`,copyJson:`Copier le JSON`,makeGeneralMemory:`Rendre la mémoire générale`,delete:`Supprimer`,searchTextRoleTaskOrMode:`Rechercher un texte, un rôle, une tâche ou un mode…`,whatShouldMatchingAgentsRemember:`Que doivent retenir les agents correspondants ?`,reviewerRefactorPlanner:`reviewer, refactor-planner`,reviewRefactorBugfix:`review, refactor, bugfix`,teachCodeReview:`teach, code-review`},ze={techstack:`TechStack`,staleGt24h:`obsolète >24 h`,refresh:`Actualiser`,analyze:`Analyser`,retry:`Réessayer`,dependencies:`Dépendances`,outdated:`Obsolètes`,vulnerable:`Vulnérables`,findings:`Constats`,package:`Paquet`,installedLatest:`Installé → Dernière`,status:`État`,constraint:`Contrainte`,locked:`Verrouillé`,latestStable:`Dernière stable`,license:`Licence`,wanted:`Souhaitée`,resolvable:`Résoluble`,purl:`PURL`,registryFlags:`Indicateurs du registre`,evidence:`Preuves`,noEvidenceRecorded:`Aucune preuve enregistrée.`,nothingFlaggedRunADeepDive:`Rien de signalé. Lancez une analyse approfondie pour que le modèle recherche ce paquet sur le web.`,backToDependencyList:`Retour à la liste des dépendances`,dependencyList:`Liste des dépendances`,dependencyDetail:`Détail de la dépendance`,selectADependencyToSeeIts:`Sélectionnez une dépendance pour voir ses versions, preuves et constats.`,requiresAManualPackageChoice:`Nécessite un choix manuel du paquet.`,noRemediationNeeded:`Aucune correction nécessaire.`,noWorkspacesDetected:`Aucun espace de travail détecté.`,loadingSnapshot:`Chargement de l'instantané…`,noInventoryYet:`Pas encore d'inventaire`,scanThisProject:`Analyser ce projet`,noFindingsRun:`Aucun constat. Lancez`,toCheckVersionsAndAdvisoriesAgainst:`pour vérifier les versions et les avis auprès des registres en amont, puis interpréter les résultats.`,offlineReReadManifestsAndLockfiles:`Hors ligne : relire les manifestes et fichiers de verrouillage`,checkRegistriesAndAdvisoriesThenInterpretTheResultsWithTheModel:`Vérifier les registres et les avis, puis interpréter les résultats avec le modèle`,exportSnapshotAsJson:`Exporter l'instantané en JSON`,cancelJob:`Annuler la tâche`,showOnlyDependenciesThisProjectDeclaresItself:`Afficher uniquement les dépendances déclarées par ce projet`,clearAllFilters:`Effacer tous les filtres`,searchByPackageName:`Rechercher par nom de paquet…`,searchDependencies:`Rechercher des dépendances`,clearSearch:`Effacer la recherche`,directOnly:`Directes uniquement`,filterByEcosystem:`Filtrer par écosystème`,allEcosystems:`Tous les écosystèmes`,filterByStatus:`Filtrer par état`,allStatuses:`Tous les états`,sortDependencies:`Trier les dépendances`,sortNeedsAttention:`Trier : nécessite attention`,sortMostOutOfDate:`Trier : les plus obsolètes`,sortName:`Trier : nom`,tabDependencies:`Dépendances`,tabFindings:`Constats`,tabWorkspaces:`Espaces de travail`,tabTrends:`Tendances`,tabRemediation:`Remédiation`,majorsBehind:`versions majeures de retard`,knownAdvisories:`avis connus`},Be={current:`À jour`,update_available_safe:`Mise à jour disponible`,update_available_breaking:`Mise à jour majeure`,vulnerable:`Vulnérable`,deprecated:`Déprécié`,yanked:`Retiré`,unmaintained_suspected:`Non maintenu ?`,blocked_by_constraints:`Bloqué`,private_or_unresolved:`Privé`,local_path:`Chemin local`,git_dependency:`Git`,unsupported:`Non pris en charge`,unknown:`Inconnu`},Ve={critical:`Critique`,high:`Élevée`,medium:`Moyenne`,low:`Faible`,info:`Info`},He={none:`Aucune action`,upgrade_patch:`Mise à niveau corrective`,upgrade_minor:`Mise à niveau mineure`,upgrade_major:`Mise à niveau majeure`,replace:`Remplacer`,remove:`Supprimer`,investigate:`Examiner`},Ue={full:`Complète`,partial:`Partielle`,partialNote:`limitée`,unsupported:`Non prise en charge`,unsupportedNote:`au mieux`},We={codeAtlas:`Atlas du code`,architectureIntelligence:`Renseignements d'architecture`,codeMapBreadcrumb:`Fil d'Ariane de la carte du code`,back:`Retour`,layers:`Couches`,relations:`Relations`,all:`TOUT`,keepTheFullTreeShowTheStrongestRelationsAndSelectedNeighbourhood:`Conserver l'arbre complet, afficher les relations les plus fortes et le voisinage sélectionné`,renderEveryNodeAndRelationInThisScope:`Afficher tous les nœuds et relations de cette portée`,mappingRelationships:`Cartographie des relations`,onceThenReopenThisView:`une fois, puis rouvrez cette vue.`,noIndexedNodesAtThisLevel:`Aucun nœud indexé à ce niveau.`,noResolvedRelationsInThisScope:`Aucune relation résolue dans cette portée`,theUpgradedIndexWillRebuildAnd:`L'index mis à niveau se reconstruira et résoudra automatiquement les liens d'appel, d'import et de type.`,liveOperation:`Opération en direct`,openSymbolMap:`Ouvrir la carte des symboles`,closeActivity:`Fermer l'activité`,noActivityRecordedForThisFile:`Aucune activité enregistrée pour ce fichier.`,fsVerified:`fs vérifié`,activeNow:`Actif maintenant`,eventStream:`Flux d'événements`,selectANodeOrWaitFor:`Sélectionnez un nœud ou attendez un agent`,relationsAppearOnSelectionToolCalls:`Les relations apparaissent à la sélection. Les appels d'outils et les accès au système de fichiers externes défilent ici en direct.`,live:`EN DIRECT`,correlated:`~ corrélé`,correlatedFromTheOnlyActiveTool:`Corrélé depuis le seul outil actif`,liveAgentOperations:`Opérations d'agents en direct`,follow:`Suivre`,automaticallyEnterTheFileFunctionUsedByTheNewestVisibleAgent:`Entrer automatiquement dans le fichier/la fonction utilisé par l'agent visible le plus récent`,agent:`Agent`,allAgents:`TOUS LES AGENTS`,filesystemConfirmed:`Système de fichiers confirmé`,filterCodemapByAgentAndSession:`Filtrer CodeMap par agent et session`,incoming:`Entrantes`,outgoing:`Sortantes`,clearSelection:`Effacer la sélection`,relationInspector:`Inspecteur de relations`,agentsOnThisNode:`Agents sur ce nœud`,noRelationshipsInThisView:`Aucune relation dans cette vue.`,activity:`Activité`,whoDependsOnThis:`Qui en dépend`,whatThisDependsOn:`Ce dont cela dépend`},Ge={codingIntelligence:`Renseignements de codage`,chronicle:`CHRONICLE`,llmAgentToolAndFileEvidence:`Preuves LLM, agent, outil et fichier — reliées de la décision au changement de code.`,tokenEconomics:`Économie des tokens`,freshInput:`entrée nouvelle`,cacheRead:`lecture de cache`,cacheHit:`succès de cache`,estimatedCost:`coût estimé`,modelReliability:`Fiabilité du modèle`,taskOutcomes:`Résultats des tâches`,apply:`Appliquer`,clear:`Effacer`,time:`Heure`,signal:`Signal`,outcome:`Résultat`,modelAgent:`Modèle / agent`,resource:`Ressource`,evidenceLineage:`Preuves et traçabilité`,collectorHealthy:`Collecteur opérationnel`,lineageTruncatedAtSafetyLimit:`Traçabilité tronquée à la limite de sécurité.`,refreshEvidence:`Actualiser les preuves`,searchEventEvidence:`Rechercher des preuves d'événement`,fileOrDirectory:`Fichier ou répertoire`,provider:`Fournisseur`,model:`Modèle`,session:`Session`,llmRequests:`Requêtes LLM`,agentWork:`Travail des agents`,toolCalls:`Appels d'outils`,fileEvidence:`Preuves de fichier`,retries:`Nouvelles tentatives`,providerP95:`Fournisseur p95`,evidenceHash:`Empreinte de preuve`,sequence:`Séquence`,signalAllSignals:`Tous les signaux`,signalLlm:`LLM`,signalAgents:`Agents`,signalTools:`Outils`,signalFiles:`Fichiers`,signalFailures:`Échecs`},Ke={loadingSessionInspection:`Chargement de l'inspection de session…`,backToSessions:`Retour aux sessions`,noSessionSelected:`Aucune session sélectionnée`,selectASessionFromTheSessions:`Sélectionnez une session dans le tableau de bord Sessions ou la barre latérale pour l'inspecter.`,refresh:`Actualiser`,filterEvents:`Filtrer les événements…`,eventTimeline:`Chronologie des événements`,noEventsMatchTheFilter:`Aucun événement ne correspond au filtre.`,toolBreakdown:`Répartition des outils`,fileChanges:`Modifications de fichiers`,tokens:`Tokens`,messages:`Messages`,iterations:`Itérations`,toolCalls:`Appels d'outils`,files:`Fichiers`,compactions:`Compactages`,events:`Événements`,outcomeCompleted:`Terminé`,outcomeError:`Erreur`,outcomeTimeout:`Expiré`,outcomeAborted:`Interrompu`,outcomeUnknown:`Inconnu`},qe={protectedSystemAgentRequiredToolsAnd:`Agent système protégé : les outils et capacités requis sont conservés, les budgets minimaux sont imposés, les horaires restent indicatifs et la récupération d'urgence du modèle reste activée afin que les opérations essentielles ne puissent pas être désactivées.`,providerAndModelPolicy:`Politique de fournisseur et de modèle`,restrictThisAgentToAnExplicit:`Restreindre cet agent à une liste blanche de modèles explicite`,allowedModels:`Modèles autorisés`,orderedFallbackChain:`Chaîne de repli ordonnée`,workspaceAndIsolation:`Espace de travail et isolation`,projectRelativeWorkingDirectory:`Répertoire de travail relatif au projet`,gitWorktreeIsolation:`Isolation par worktree Git`,automatic:`Automatique`,required:`Requis`,off:`Désactivé`,limits:`Limites`,workingHours:`Heures de travail`,enforce:`Imposer`,advisory:`Indicatif`,cancel:`Annuler`,useProjectDefaultModel:`Utiliser le modèle par défaut du projet`,addAllowedModel:`Ajouter un modèle autorisé`,addFallbackModel:`Ajouter un modèle de repli`,packagesWebui:`packages/webui`,europeKiev:`Europe/Kiev`},Je={riskAuditQuality:`Risque et qualité d'audit`,noDeterministicTaskRisksDetected:`Aucun risque de tâche déterministe détecté.`,next:`Suivant :`,auditScore:`audit {{score}}/100`,criticalCount:`{{count}} critique(s)`,itemLabel:`constats de risque`,covEvents:`Événements`,covActor:`Acteur`,covSession:`Session`,covReasons:`Motifs`,covRoute:`Route`,covOutcome:`Résultat`,cat:{operational:`opérationnel`,audit:`audit`},sev:{critical:`critique`,warning:`avertissement`,info:`info`},overdueTitle:`La tâche est en retard`,overdueDetail:`L'échéance {{dueDate}} est dépassée alors que l'état est {{status}}.`,overdueFix:`Replanifiez l'échéance ou consignez le blocage et la réponse du responsable.`,missingDependencyTitle:`Les références de dépendances sont rompues`,missingDependencyDetail_one:`{{count}} tâche de dépendance est introuvable.`,missingDependencyDetail_other:`{{count}} tâches de dépendance sont introuvables.`,missingDependencyFix:`Réparez ou supprimez les ID de dépendances manquants avant l'envoi.`,unresolvedDependencyTitle:`Des dépendances ne sont pas résolues`,unresolvedDependencyDetail_one:`{{count}} tâche de dépendance bloque encore l'exécution.`,unresolvedDependencyDetail_other:`{{count}} tâches de dépendance bloquent encore l'exécution.`,unresolvedDependencyFix:`Terminez les dépendances ou levez-les explicitement par un événement de décision.`,assignmentFailedTitle:`La dernière exécution de l'agent a échoué`,assignmentFailedDetail:`{{reason}}`,assignmentFailedDetailGeneric:`L'état de l'affectation est « échoué ».`,assignmentFailedFix:`Examinez les preuves de la tentative échouée, ajustez le routage, puis réessayez ou bloquez la tâche.`,retryExhaustedTitle:`Le budget de reprise est épuisé`,retryExhaustedDetail:`{{used}}/{{max}} tentatives ont été consommées.`,retryExhaustedFix:`Escaladez pour obtenir une nouvelle route ou augmentez explicitement le budget de tentatives.`,leaseExpiredTitle:`Le bail d'affectation a expiré`,leaseExpiredDetail:`Le bail a expiré le {{expiresAt}} alors que l'état d'exécution est {{status}}.`,leaseExpiredFix:`Récupérez, libérez ou relancez l'affectation obsolète.`,staleHeartbeatTitle:`Le battement de l'agent est obsolète`,staleHeartbeatDetail:`Aucun battement n'a été enregistré depuis {{since}}.`,staleHeartbeatFix:`Inspectez le sous-agent/l'exécution et récupérez l'affectation si elle n'est plus active.`,noAssignmentTitle:`La tâche en cours n'a pas d'affectation`,noAssignmentDetail:`La tâche déclare un travail actif mais n'a aucune affectation d'agent inspectable.`,noAssignmentFix:`Affectez un agent ou remettez la tâche en état prêt/bloqué.`,failedChecksTitle:`Les vérifications d'acceptation ont échoué`,failedChecksDetail_one:`{{count}} vérification d'achèvement a échoué.`,failedChecksDetail_other:`{{count}} vérifications d'achèvement ont échoué.`,failedChecksFix:`Résolvez les preuves d'acceptation en échec ou levez-les explicitement.`,pendingChecksTitle:`La tâche terminée a encore des vérifications en attente`,pendingChecksDetail_one:`{{count}} vérification d'acceptation est encore en attente.`,pendingChecksDetail_other:`{{count}} vérifications d'acceptation sont encore en attente.`,pendingChecksFix:`Remettez la tâche en revue ou terminez les vérifications manquantes.`,noEventsTitle:`Aucun événement d'activité durable chargé`,noEventsDetail:`L'état actuel ne peut être rattaché à aucun événement de tâche en ajout seul.`,noEventsFix:`Actualisez l'activité ; migrez l'état hérité ou enregistrez un événement d'observation.`,noProvenanceTitle:`La provenance de création est manquante`,noProvenanceDetail:`La plage d'événements chargée ne contient pas task.created.`,noProvenanceFix:`Chargez un historique plus profond ou consignez explicitement l'origine héritée.`,actorCoverageTitle:`Certaines mutations n'ont pas d'acteur`,actorCoverageDetail:`La couverture des acteurs est de {{percent}} %.`,actorCoverageFix:`Assurez-vous que chaque mutation de route/outil fournit une identité d'agent ou d'opérateur.`,sessionCoverageTitle:`Certaines mutations n'ont pas de session`,sessionCoverageDetail:`La couverture des sessions est de {{percent}} %.`,sessionCoverageFix:`Propagez l'identité de session dans tous les contextes d'événements de tâche.`,reasonCoverageTitle:`La justification des décisions est insuffisante`,reasonCoverageDetail:`Seulement {{percent}} % des mutations incluent un motif ou un résultat.`,reasonCoverageFix:`Utilisez les champs motif de changement et décision/résultat pour les mutations significatives.`,noRouteTitle:`La route d'exécution n'est pas inspectable`,noRouteDetail:`L'affectation n'a ni mode de routage, ni fournisseur, ni modèle.`,noRouteFix:`Réaffectez avec des métadonnées de routage explicites (session/fixe/repli).`,missingTerminalEvidenceTitle:`L'exécution terminale n'a ni résultat ni preuve d'erreur`,missingTerminalEvidenceDetail:`L'affectation s'est terminée en {{status}} sans sortie inspectable.`,missingTerminalEvidenceFix:`Consignez le résultat/l'erreur final et les preuves associées.`},Ye={requirementsIntake:`Recueil des exigences`,collectAndPreserveSoftwareDevelopmentRequests:`Collecter et conserver les demandes de développement logiciel sous forme d'enregistrements structurés`,retry:`Réessayer`,fileANewRequest:`Déposer une nouvelle demande`,fileANewIntake:`Créer un nouvel enregistrement`,requestText:`Texte de la demande`,storedVerbatimAsTheRecordApos:`Enregistré tel quel comme demande d'origine — jamais réécrit.`,titleOptional:`Titre (facultatif)`,shortDisplayTitle:`Titre d'affichage court`,type:`Type`,priority:`Priorité`,clear:`Effacer`,records:`Enregistrements`,intakeRecords:`Enregistrements de recueil`,loading:`Chargement…`,noIntakeRecordsYetFileThe:`Aucun enregistrement pour l'instant — créez le premier ci-dessus.`,describeTheFeatureBugFixRefactorOrChange:`Décrivez la fonctionnalité, la correction, la refactorisation ou le changement…`},Xe={verificationReport:`Rapport de vérification`,checkResults:`Résultats des vérifications`,fileScope:`Portée des fichiers`,subTasks:`Sous-tâches`,expected:`Attendu`,actual:`Réel`,total:`Total`,completed:`Terminé`,failed:`Échoué`,verdictPassed:`Réussi`,verdictFailed:`Échoué`,verdictIncomplete:`Incomplet`,checkPassed:`Réussi`,checkFailed:`Échoué`,checkSkipped:`Ignoré`,checkError:`Erreur`,verdictNeedsHuman:`Revue requise`},Ze={activityLedger:`Registre d'activité`,noActivityMatchesThisFilter:`Aucune activité ne correspond à ce filtre.`,fullEventPayload:`Charge utile complète de l'événement`,taskActivity:`Activité de la tâche`,copyFilteredActivityJson:`Copier le JSON d'activité filtré`,downloadFullActivityJson:`Télécharger le JSON d'activité complet`,searchAgentSessionModelResultField:`Rechercher agent, session, modèle, résultat, champ…`,copyVisibleTaskActivityJson:`Copier le JSON d'activité visible`,downloadFullTaskActivityJson:`Télécharger le JSON complet de l'activité de la tâche`,refreshTaskActivity:`Actualiser l'activité de la tâche`,searchTaskActivity:`Rechercher dans l'activité de la tâche`,clearTaskActivitySearch:`Effacer la recherche d'activité`},Qe={contextDashboard:`Tableau de bord du contexte`,contextPressure:`Pression du contexte`,contextComposition:`Composition du contexte`,thresholdMap:`Carte des seuils`,compactionEngine:`Moteur de compactage`,perAgentFootprint:`Empreinte par agent`,tokenMetrics:`Métriques de tokens`,session:`Session`,refreshDebugData:`Actualiser les données de débogage`,currentPosition:`Position actuelle`,compactTrigger:`Déclencheur de compactage`,hardLimit:`Limite stricte`,nextTrigger:`Prochain déclencheur`,recommendation:`Recommandation`,used:`Utilisé`,free:`Libre`,capacity:`Capacité`,model:`Modèle`,mode:`Mode`,contextMode:`Mode de contexte`,iteration:`Itération`,uptime:`Durée de fonctionnement`,provider:`Fournisseur`,project:`Projet`,fetchingCompositionData:`Récupération des données de composition...`,noCompositionDataAvailableYetRun:`Aucune donnée de composition. Lancez une itération d'agent pour la remplir.`,toolBreakdown:`Répartition des outils`,strategy:`Stratégie`,auto:`auto ✓`,current:`Actuel`,estRecovery:`Récupération est.`,utilization:`Utilisation`,zoneSafe:`Sûr`,zoneSafeDesc:`fonctionnement normal`,zoneWarning:`Avertissement`,zoneWarningDesc:`compactage conseillé`,zoneCritical:`Critique`,zoneCriticalDesc:`compacter maintenant`,zoneDanger:`Danger`,zoneDangerDesc:`contexte presque plein`,systemPrompt:`Prompt système`,tools:`Outils`,messages:`Messages`},$e={webuiServerProcess:`Processus du serveur WebUI`,liveWrongstackProcesses:`Processus WrongStack actifs`,surface:`Surface`,memory:`Mémoire`,growthSignal:`Croissance / signal`,workload:`Charge de travail`,hqOfflineQueue:`File d'attente hors ligne HQ`,resourcesHotspot:`Ressources / point chaud`,waitingForHeapFlightRecorderSamples:`En attente d'échantillons de l'enregistreur de tas…`,codebaseIndexServer:`Serveur d'index du code`,processRamRss:`RAM du processus (RSS)`,v8HeapLimit:`Limite du tas V8`,serverUptime:`Durée de fonctionnement du serveur`,connection:`Connexion`,indexRamRss:`RAM de l'index (RSS)`,indexWorkload:`Charge de l'index`,indexWatcher:`Observateur d'index`,oldSpaceCeiling:`Plafond old-space configuré`,sinceProcessStart:`Depuis le démarrage du processus`},et={codeTree:`Arbre du code`,openFileMap:`Ouvrir la carte des fichiers`,findPackageFileSymbol:`Trouver un paquet, un fichier, un symbole…`,clearSearch:`Effacer la recherche`,noMatchInLoadedBranches:`Aucune correspondance dans les branches chargées.`,expandAPackageToSearchIts:`Développez un paquet pour rechercher dans ses fichiers.`,clickToFocusDoubleClickTo:`Cliquez pour cibler · double-cliquez pour entrer`,branchesStayOpenWhileTheMap:`Les branches restent ouvertes pendant que la carte change`},tt={recordDecisionOutcome:`Enregistrer la décision / le résultat`,whatWasDecidedAttemptedOrProduced:`Qu'a-t-on décidé, tenté ou produit ?`,optionalEvidenceRationaleCommandLinkOrFailureDetail:`Preuves, justification, commande, lien ou détail d'échec facultatifs…`,taskActivityKind:`Type d'activité de tâche`,taskActivityOutcome:`Résultat de l'activité de tâche`,recordTaskDecisionOrOutcome:`Enregistrer la décision ou le résultat de la tâche`,taskActivityDetails:`Détails de l'activité de tâche`},nt={europeKiev:`Europe/Kiev`,doNotUseInsideThisWindow:`Ne pas utiliser dans cette plage`,useOnlyInsideThisWindow:`Utiliser uniquement dans cette plage`,applyThisScheduleToTheWhole:`Appliquer cet horaire à tout le fournisseur`,doNotUseDuringSelectedTimes:`Ne pas utiliser aux heures sélectionnées`,useOnlyDuringSelectedTimes:`Utiliser uniquement aux heures sélectionnées`,addSchedule:`Ajouter un horaire`},rt={decomposition:`Décomposition`,thisTaskShouldBeSplitBefore:`Cette tâche doit être divisée avant l'envoi :`,approve:`Approuver`,reject:`Rejeter`,approveAmpSplit:`Approuver et diviser`,parent:`Parent`},it={noTasksOnThisBoardYet:`Aucune tâche sur ce tableau pour l'instant.`,proposalPending:`proposition en attente`,verifyUnverified:`non vérifié`,verifyVerifying:`vérification…`,verifyVerified:`vérifié`,verifyFailed:`échec de la vérification`,verifyNeedsReview:`revue requise`,verifyIncomplete:`incomplet`},at={providerModelAvailability:`Disponibilité fournisseur/modèle`,refreshStatus:`Actualiser l'état`,lastError:`Dernière erreur :`,reopenHalfOpenProbe:`Rouvrir (sonde semi-ouverte)`,clearTracking:`Effacer le suivi`,wrongstackRoutesAroundActiveSchedulesAnd:`WrongStack contourne automatiquement les horaires actifs et les modèles défaillants, puis rétablit les routes rétablies lors de leur prochaine utilisation éligible. Cliquez sur une entrée pour les détails et les commandes manuelles.`},ot={editContextWindow:`Modifier la fenêtre de contexte`,messages:`Messages`,currentIteration:`Itération actuelle`,chatTranscript:`Transcription du chat`,edit:`Modifier`,top:`Haut`,thinking:`Réflexion…`,toolWord:`outil`,runningTool:`Exécution de {{tool}}…`,runningTools:`Exécution de {{count}} outils ({{preview}})…`,writingReply:`Rédaction de la réponse…`,thinkingNextStep:`Réflexion sur l'étape suivante…`,autoCollapse:`↕️ Repli auto`,reasoning:`🧠 Raisonnement`,groupTools:`🔧 Grouper les outils`,compact:`📦 Compact`,providerLimit:`Limite fournisseur {{limit}}`,providerLimitDecreased:`La fenêtre de contexte du fournisseur est passée de {{previous}} à {{current}} tokens.`},st={tokenAllocation:`Répartition des tokens`,toolBreakdown:`Répartition des outils`,messageBreakdown:`Répartition des messages`,refresh:`Actualiser`,toolsRegistered:`Outils enregistrés`},ct={contextWindowEditor:`Éditeur de fenêtre de contexte`,system:`Système`,messages:`Messages`,total:`Total`,loadingContextSnapshot:`Chargement de l'instantané du contexte…`,repairPreviewWillRemove:`Aperçu de réparation : va supprimer`,agentRunningApplyDisabled:`Agent en cours — application désactivée`,providerLimitDecreased:`La fenêtre de contexte du fournisseur est passée de {{previous}} à {{current}} tokens. La récupération utilise désormais cette limite avant la prochaine requête.`,clear:`Effacer`},lt={descriptionWorkingContext:`Description / contexte de travail`,dependencies:`Dépendances`,taskChainSelectionOrder:`Chaîne de tâches (ordre de sélection)`,saveTaskContract:`Enregistrer le contrat de tâche`,fixedProviderModel:`Fournisseur / modèle fixe`,forceLoadedIntoTheWorker:`· chargé de force dans le worker`,blankFullDefaultToolset:`· vide = jeu d'outils par défaut complet`,advanced:`Avancé`,blankSafeDefaults:`· vide = valeurs par défaut sûres`,assign:`Affecter`,dispatch:`Envoyer`,copy:`Copier`,transfer:`Transférer`},ut={writeTheDurableFactOrDecision:`Rédigez le fait ou la décision durable dans un langage complet et interrogeable.`,bindKnowledgeToFilesSymbolsPackages:`Associez la connaissance à des fichiers, symboles, paquets, tests, chemins Git ou commandes.`,audienceOptional:`Audience (facultatif)`,targetThisMemoryToSpecificAgent:`Ciblez cette mémoire sur des types d'agents précis. Laissez vide pour la mémoire générale du projet.`,roles:`Rôles`,modes:`Modes`,architectureWebuiWorkflow:`architecture, webui, workflow`,memIdMemId:`mem_id, mem_id`,reviewerRefactorPlanner:`reviewer, refactor-planner`,reviewRefactorBugfix:`review, refactor, bugfix`,teachCodeReview:`teach, code-review`},dt={contextMemoryMonitor:`Moniteur de mémoire de contexte`,exactProviderBoundPresence:`présence exacte liée au fournisseur`,noSageHasEnteredThisSession:`Aucun SAGE n'est encore entré dans ce contexte de session.`,memoryPresence:`Présence en mémoire`,cameWent:`Entré / sorti`},ft={modelId:`model-id`},pt={httpLocalhostCallbackCode:`http://localhost:.../callback?code=…`},mt={baseUrlOptionalEGHttpLocalhost11434V1:`URL de base (facultatif, p. ex. http://localhost:11434/v1)`,anthropic:`Anthropic`,openai:`OpenAI`,openaiCompatible:`Compatible OpenAI`,google:`Google`},ht={url:`URL :`,models:`Modèles :`,linkedin:`LinkedIn`,telegram:`Telegram`,whatsapp:`WhatsApp`,reddit:`Reddit`,facebook:`Facebook`,email:`E-mail`},gt={searchChat:`Rechercher dans le chat`,commandPalette:`Palette de commandes`,switchModel:`Changer de modèle`,settings:`Paramètres`,search:`Rechercher`,command:`Commande`,model:`Modèle`},_t={agentRoster:`Effectif d'agents`},vt={save:`Enregistrer`,auditNow:`Auditer maintenant`,fixedProviderModel:`Fournisseur / modèle fixe`,deterministicModeUsesNoProviderModel:`Le mode déterministe n'utilise ni fournisseur, ni modèle, ni token, ni facturation. Il corrige les dérives d'affectation/état/colonne et récupère les baux expirés.`},yt={deadCodeScan:`🔍 Analyse du code mort`,actionPlan:`📋 Plan d'action`,totalSymbols:`Symboles au total`,alive:`Vivants`,dead:`Morts`},bt={tui:`TUI`,webui:`WebUI`,repl:`REPL`,out:`SORTI`},xt={previousPage:`Page précédente`,nextPage:`Page suivante`,previous:`Précédent`,next:`Suivant`},St={historyFilters:`Filtres d'historique`},Ct={sessions:`Sessions`,active:`Actives`,agents:`Agents`,status:`État`,runtime:`Durée d'exécution`},wt={shadowAgent:`Agent fantôme`,running:`● en cours`,stopped:`○ arrêté`,agentId:`ID d'agent :`,theShadowAgentMonitorsAllFleet:`L'agent fantôme surveille tous les agents de la flotte, suit leurs tâches et détecte les anomalies (pics de tâches, agents bloqués, boucles de boîte aux lettres).`},Tt={verificationRunningChecksAreBeingExecuted:`Vérification en cours — les contrôles s'exécutent…`,reRunVerification:`Relancer la vérification`,unverified:`Non vérifié`,noVerificationReportExistsForThis:`— aucun rapport de vérification n'existe encore pour cette tâche.`,runVerification:`Lancer la vérification`},Et={filterToolsByNameOrOwner:`Filtrer les outils par nom ou propriétaire…`,toolsList:`Liste des outils`,params:`Paramètres :`,tools:`Outils`,loadingTools:`Chargement des outils…`},Dt={dismiss:`Ignorer`,run:`Exécutez`,wstackUpdate:`wstack update`,orYourPackageManagerToUpgrade:`(ou votre gestionnaire de paquets) pour mettre à niveau.`},Ot={prioCrit:`Crit.`,prioHigh:`Élevée`,prioMed:`Moy.`,prioLow:`Faible`},kt={agent:`Agent`,role:`Rôle`,modelSource:`Source du modèle`,model:`Modèle`,attempt:`Tentative`,costCeiling:`Plafond de coût`,fallbackProfile:`Profil de repli`,fallbacks:`Replis`,skills:`Compétences`,tools:`Outils`,leaseExpires:`Expiration du bail`},At={skipToContent:`Aller au contenu`},jt={fleetIdle:`Flotte inactive`},Mt={clearSearch:`Effacer la recherche`,memoryAudienceExport:`/memory audience export`},Nt={sourceChanges:`Modifications du code`,sourceControl:`Contrôle de code source`},Pt={selectTabCompleteEnterDispatchEsc:`↑/↓ sélectionner · Tab compléter · Entrée envoyer · Échap fermer`},Ft={promptLibrary:`Bibliothèque de prompts`},It={filter:`Filtrer…`},Lt={chronicleOwnership:`Propriété de Chronicle`,inlineFallback:`REPLI EN LIGNE`},Rt={incomingRelationships:`Relations entrantes`,outgoingRelationships:`Relations sortantes`},zt={input1m:`entrée /1 M`,output1m:`sortie /1 M`,cache1m:`cache /1 M`},Bt={judgeUsed:`juge utilisé`,panelNotDiverse:`panel peu diversifié`,veto:`veto`},Vt={boardPolicyRemainsAuthoritativeThisTask:`La politique du tableau reste prioritaire. Cette politique de tâche ne peut que restreindre cette portée.`,shellOpaqueTools:`Shell / outils opaques`,saveBoundary:`Enregistrer la limite`},Ht={addAVerifiableCompletionCheck:`Ajouter une vérification d'achèvement vérifiable…`,completionChecks:`Vérifications d'achèvement`},Ut={sageWillMarkTheRecordDeleted:`SAGE marquera l'enregistrement comme supprimé, retirera les arêtes du graphe et nettoiera les références des mémoires liées. L'enregistrement reste dans la piste d'audit mais ne peut pas être restauré depuis cette page.`},Wt={navigateEnterSelectEscClose:`↑/↓ naviguer · Entrée sélectionner · Échap fermer`},Gt={fallbackProfiles:`Profils de repli`,noFallbackProfilesConfigured:`Aucun profil de repli configuré.`},Kt={openTheMirroredKanbanBoardSForThisRunOnePerDependencyWave:`Ouvrir le(s) tableau(x) kanban miroir de cette exécution (un par vague de dépendances)`},qt={thinking:`réflexion`},Jt={fallback1:`fallback1`},Yt={configureHowSubagentsAndFleetOperations:`Configurez le comportement des sous-agents et des opérations de flotte.`},Xt={sessionModel:`(modèle de session)`},Zt={httpHost3499:`http://host:3499`,clientTokenFromWstackHq:`Jeton client issu de wstack --hq`,mcpServers:`Serveurs MCP`},Qt={httpsMcpExampleComMcp:`https://mcp.example.com/mcp`,operationalHealth:`État opérationnel`,failuresTransportProtocolTool:`Échecs (transport/protocole/outil)`,callLatencyP50P95:`Latence des appels p50/p95`,reconnectWakeSleep:`Reconnexion / réveil / veille`,callsInFlightPeak:`Appels en cours / pic`},$t={tools:`outils`,reasoning:`raisonnement`,vision:`vision`},en={eGMyLlm:`p. ex. my-llm`,eGHttpLocalhost11434V1:`p. ex. http://localhost:11434/v1`},tn={executionAttempts:`Tentatives d'exécution`,error:`Erreur :`,result:`Résultat :`},nn={notifications:`Notifications`},rn={copyApiKeyToClipboard:`Copier la clé API dans le presse-papiers`},an={progress:`Progression`},on={nav:e,brand:t,status:n,menu:r,sidePanel:i,history:a,agents:o,changes:s,inspector:c,nextSteps:l,mailbox:u,sessions:d,sessionPanel:f,fleet:p,context:m,refine:h,specs:g,refresh:_,board:v,debug:y,providerModels:b,dock:x,agentsMonitor:S,terminal:C,sessionWatch:w,sideEffects:T,monitor:E,sdd:D,toolResult:O,design:k,goalRun:A,collab:j,connection:M,mode:N,cost:P,model:F,modelSwitcher:I,work:L,todos:R,task:z,toolGroup:B,fileRef:V,plan:H,filePicker:U,toast:W,search:G,phase:K,ctxMode:q,transcript:J,autonomy:Y,queue:X,checkpoint:Z,goal:Q,worktree:$,process:ee,diff:te,fallback:ne,liveSessions:re,monacoDiff:ie,errorBody:ae,officeMap:oe,toolInput:se,message:ce,watch:le,shortcuts:ue,sddBoard:de,sddTask:fe,sddWizard:pe,fileExplorer:me,codeEditor:he,fileActivity:ge,analytics:_e,promptLib:ve,skillDetail:ye,office:be,skillsList:xe,timeline:Se,designStudio:Ce,worktrees:we,officeSettings:Te,agentOffice:Ee,sageMemory:De,sddhub:Oe,sidebar:ke,memoryManager:Ae,kanban:je,cronJobs:Me,agentRoster:Ne,rosterRoles:Pe,customRoster:Fe,taskIntel:Ie,panels:Le,audienceMem:Re,techStack:ze,techStackStatus:Be,techStackSeverity:Ve,techStackAction:He,techStackCoverage:Ue,codeMap:We,chronicle:Ge,sessionInspect:Ke,runtimePolicy:qe,taskRisk:Je,reqIntake:Ye,verifyReport:Xe,taskTimeline:Ze,ctxDash:Qe,debugDash:$e,codeMapTree:et,kanbanRecorder:tt,availability:nt,kanbanDecomp:rt,kanbanTree:it,providerWait:at,chatView:ot,ctxBreakdown:st,ctxEditor:ct,kanbanInspector:lt,memEditor:ut,ctxMonitor:dt,modelSchema:ft,oauth:pt,provider:mt,providerKey:ht,topbar:gt,agentsPanel:_t,boardChrome:vt,deadCode:yt,hud:bt,pagination:xt,sessionList:St,sessionsDash:Ct,shadow:wt,taskVerify:Tt,toolsSec:Et,updateBanner:Dt,depGraph:Ot,kanbanRun:kt,app:At,fleetSummaryBar:jt,audienceMemoryPanel:Mt,changesView:Nt,slashpopup:Pt,chatInput:Ft,chipMultiSelect:It,chroniclePipelineStrip:Lt,codeMapVisuals:Rt,costChip:zt,councilLogTimeline:Bt,kanbanBoundaryEditor:Vt,kanbanTaskCompletionChecks:Ht,deleteMemoryDialog:Ut,modelPickDialog:Wt,modelSelectDialog:Gt,sddBoardView:Kt,displaySection:qt,fallbacksSection:Jt,fleetSection:Yt,index:Xt,integrationsSection:Zt,mCPSection:Qt,modelListEditor:$t,customProviderSection:en,taskExecutionAttempts:tn,toaster:nn,apikeydisplay:rn,progressring:an};export{Ee as agentOffice,Ne as agentRoster,o as agents,S as agentsMonitor,_t as agentsPanel,_e as analytics,rn as apikeydisplay,At as app,Re as audienceMem,Mt as audienceMemoryPanel,Y as autonomy,nt as availability,v as board,vt as boardChrome,t as brand,s as changes,Nt as changesView,Ft as chatInput,ot as chatView,Z as checkpoint,It as chipMultiSelect,Ge as chronicle,Lt as chroniclePipelineStrip,he as codeEditor,We as codeMap,et as codeMapTree,Rt as codeMapVisuals,j as collab,M as connection,m as context,P as cost,zt as costChip,Bt as councilLogTimeline,Me as cronJobs,st as ctxBreakdown,Qe as ctxDash,ct as ctxEditor,q as ctxMode,dt as ctxMonitor,en as customProviderSection,Fe as customRoster,yt as deadCode,y as debug,$e as debugDash,on as default,Ut as deleteMemoryDialog,Ot as depGraph,k as design,Ce as designStudio,te as diff,qt as displaySection,x as dock,ae as errorBody,ne as fallback,Jt as fallbacksSection,ge as fileActivity,me as fileExplorer,U as filePicker,V as fileRef,p as fleet,Yt as fleetSection,jt as fleetSummaryBar,Q as goal,A as goalRun,a as history,bt as hud,Xt as index,c as inspector,Zt as integrationsSection,je as kanban,Vt as kanbanBoundaryEditor,rt as kanbanDecomp,lt as kanbanInspector,tt as kanbanRecorder,kt as kanbanRun,Ht as kanbanTaskCompletionChecks,it as kanbanTree,re as liveSessions,Qt as mCPSection,u as mailbox,ut as memEditor,Ae as memoryManager,r as menu,ce as message,N as mode,F as model,$t as modelListEditor,Wt as modelPickDialog,ft as modelSchema,Gt as modelSelectDialog,I as modelSwitcher,ie as monacoDiff,E as monitor,e as nav,l as nextSteps,pt as oauth,be as office,oe as officeMap,Te as officeSettings,xt as pagination,Le as panels,K as phase,H as plan,ee as process,an as progressring,ve as promptLib,mt as provider,ht as providerKey,b as providerModels,at as providerWait,X as queue,h as refine,_ as refresh,Ye as reqIntake,Pe as rosterRoles,qe as runtimePolicy,De as sageMemory,D as sdd,de as sddBoard,Kt as sddBoardView,fe as sddTask,pe as sddWizard,Oe as sddhub,G as search,Ke as sessionInspect,St as sessionList,f as sessionPanel,w as sessionWatch,d as sessions,Ct as sessionsDash,wt as shadow,ue as shortcuts,T as sideEffects,i as sidePanel,ke as sidebar,ye as skillDetail,xe as skillsList,Pt as slashpopup,g as specs,n as status,z as task,tn as taskExecutionAttempts,Ie as taskIntel,Je as taskRisk,Ze as taskTimeline,Tt as taskVerify,ze as techStack,He as techStackAction,Ue as techStackCoverage,Ve as techStackSeverity,Be as techStackStatus,C as terminal,Se as timeline,W as toast,nn as toaster,R as todos,B as toolGroup,se as toolInput,O as toolResult,Et as toolsSec,gt as topbar,J as transcript,Dt as updateBanner,Xe as verifyReport,le as watch,L as work,$ as worktree,we as worktrees};
@@ -0,0 +1,9 @@
1
+ import{n as ee}from"./rolldown-runtime-QTnfLwEv.js";var te=ee({agentOffice:()=>Ae,agentRoster:()=>Ie,agents:()=>s,agentsMonitor:()=>C,agentsPanel:()=>yt,analytics:()=>xe,apikeydisplay:()=>on,app:()=>Mt,audienceMem:()=>Be,audienceMemoryPanel:()=>Pt,autonomy:()=>X,availability:()=>it,board:()=>y,boardChrome:()=>bt,brand:()=>t,changes:()=>c,changesView:()=>Ft,chatInput:()=>Lt,chatView:()=>ct,checkpoint:()=>Q,chipMultiSelect:()=>Rt,chronicle:()=>qe,chroniclePipelineStrip:()=>zt,codeEditor:()=>ye,codeMap:()=>Ke,codeMapTree:()=>nt,codeMapVisuals:()=>Bt,collab:()=>N,connection:()=>n,context:()=>h,cost:()=>F,costChip:()=>Vt,councilLogTimeline:()=>Ht,cronJobs:()=>Fe,ctxBreakdown:()=>lt,ctxDash:()=>et,ctxEditor:()=>ut,ctxMode:()=>J,ctxMonitor:()=>pt,customProviderSection:()=>nn,customRoster:()=>Re,deadCode:()=>xt,debug:()=>b,debugDash:()=>tt,default:()=>cn,deleteMemoryDialog:()=>Gt,depGraph:()=>At,design:()=>j,designStudio:()=>De,diff:()=>ae,displaySection:()=>Yt,dock:()=>S,errorBody:()=>le,fallback:()=>oe,fallbacksSection:()=>Xt,fileActivity:()=>be,fileExplorer:()=>ve,filePicker:()=>W,fileRef:()=>H,fleet:()=>m,fleetSection:()=>Zt,fleetSummaryBar:()=>Nt,goal:()=>ne,goalRun:()=>M,history:()=>o,hud:()=>St,index:()=>Qt,inspector:()=>l,integrationsSection:()=>$t,kanban:()=>Pe,kanbanBoundaryEditor:()=>Ut,kanbanDecomp:()=>at,kanbanInspector:()=>dt,kanbanRecorder:()=>rt,kanbanRun:()=>jt,kanbanTaskCompletionChecks:()=>Wt,kanbanTree:()=>ot,liveSessions:()=>se,mCPSection:()=>en,mailbox:()=>d,memEditor:()=>ft,memoryManager:()=>Ne,menu:()=>i,message:()=>fe,mode:()=>P,model:()=>I,modelListEditor:()=>tn,modelPickDialog:()=>Kt,modelSchema:()=>mt,modelSelectDialog:()=>qt,modelSwitcher:()=>L,monacoDiff:()=>ce,monitor:()=>D,nav:()=>e,nextSteps:()=>u,oauth:()=>ht,office:()=>we,officeMap:()=>ue,officeSettings:()=>ke,pagination:()=>Ct,panels:()=>ze,phase:()=>q,plan:()=>U,process:()=>ie,progressring:()=>sn,promptLib:()=>Se,provider:()=>gt,providerKey:()=>_t,providerModels:()=>x,providerWait:()=>st,queue:()=>Z,refine:()=>g,refresh:()=>v,reqIntake:()=>Ze,rosterRoles:()=>Le,runtimePolicy:()=>Ye,sageMemory:()=>A,sdd:()=>O,sddBoard:()=>he,sddBoardView:()=>Jt,sddTask:()=>ge,sddWizard:()=>_e,sddhub:()=>je,search:()=>K,sessionInspect:()=>Je,sessionList:()=>wt,sessionPanel:()=>p,sessionWatch:()=>T,sessions:()=>f,sessionsDash:()=>Tt,shadow:()=>Et,shortcuts:()=>me,sideEffects:()=>E,sidePanel:()=>a,sidebar:()=>Me,skillDetail:()=>Ce,skillsList:()=>Te,slashpopup:()=>It,specs:()=>_,status:()=>r,task:()=>B,taskExecutionAttempts:()=>rn,taskIntel:()=>$,taskRisk:()=>Xe,taskTimeline:()=>$e,taskVerify:()=>Dt,techStack:()=>Ve,techStackAction:()=>We,techStackCoverage:()=>Ge,techStackSeverity:()=>Ue,techStackStatus:()=>He,terminal:()=>w,timeline:()=>Ee,toast:()=>G,toaster:()=>an,todos:()=>z,toolGroup:()=>V,toolInput:()=>de,toolResult:()=>k,toolsSec:()=>Ot,topbar:()=>vt,transcript:()=>Y,updateBanner:()=>kt,verifyReport:()=>Qe,watch:()=>pe,work:()=>R,worktree:()=>re,worktrees:()=>Oe}),e={chat:`Session`,agents:`Agents`,history:`History`,files:`Files`,changes:`Changes`,mailbox:`Mailbox`,skills:`Skills`,worktrees:`Worktrees`,design:`Design Studio`,officemap:`Office Map`,settings:`Settings`,sddhub:`SDD`,goal:`Goal`,memory:`Memory`,fleet:`Fleet`,inspector:`Inspector`,prompts:`Prompts`,kanban:`Kanban`,codemap:`CodeMap`,techstack:`TechStack`,chronicle:`Chronicle`,intake:`Requirements`,roster:`Agent Roster`},t={returnToChat:`{{name}} — return to chat`,returnToChatDefault:`WrongStack — return to chat`},n={connected:`Connected`,disconnected:`Disconnected from backend`,reconnecting:`Reconnecting to backend (attempt {{attempt}}) — retrying in {{remaining}}s`,retry:`Retry now`,retryTitle:`Retry connection now`,dismissTitle:`Dismiss (chip in topbar still shows status)`},r={connected:`Connected`,disconnected:`Disconnected`,idle:`Idle`,thinking:`Thinking`,running:`Running`,waiting:`Waiting`,done:`Done`,stopped:`Stopped`},i={moreWithHidden:`More, {{count}} hidden items`,moreOptions:`More options`,moreCompactHidden:`More — {{count}} hidden panels/views, palette, theme, monitors`,moreCompact:`More — palette, theme, monitors`,moreFull:`More — palette, theme, shortcuts, monitors`,commandPalette:`Command Palette`,keyboardShortcuts:`Keyboard Shortcuts`,panels:`Panels`,views:`Views`,theme:`Theme`,monitors:`Monitors`,fleetMonitor:`Fleet Inspector`},a={dragHint:`Drag to resize · double-click to reset`,collapse:`Collapse panel (Ctrl+\\)`},o={openDashboard:`Open sessions dashboard`},s={pending:`pending…`,empty:`No agents yet`,emptyHint:`Subagents appear here when the fleet is active.`,runningCount:`{{count}} running`,totalCount:`{{count}} total`,openFull:`Open fleet inspector`,agentsLive:`AGENTS · LIVE`,doneCount:`{{count}} done`,failedCount:`{{count}} failed`,modelsLabel:`models`,shownLabel:`shown`,totalLabel:`total`,leaderFleetTotals:`(leader {{leader}} · fleet {{fleet}})`,navHintJk:`j/k or ↑↓ to navigate`,escCloseDetail:`· Esc to close detail`,noAgentsRunning:`No agents running.`,contextUsage:`Context Usage`,lastToolLabel:`last:`,unknownSession:`Unknown session`,sessionCopyTitle:`Session: {{sid}} — click to copy ID`,sessionWord:`session`,agentsCountSuffix_one:`{{count}} agent`,agentsCountSuffix_other:`{{count}} agents`,sessionTitle:`Session: {{sid}}`,projectSuffix:` · Project: {{name}}`,statusIdle:`idle`,filterAll:`All`,filterRunning:`Running`,filterDone:`Done`,filterCompleted:`Done`,filterFailed:`Failed`,clearFinished:`Clear`,clearFinishedTitle:`Remove finished agents`,rosterHint:`Arrow keys to navigate · Enter to expand`,itSuffix:`it`,tcSuffix:`tc`,toolLog:`Tool Log`,showAll:`Show all`,showFewer:`Show fewer`,streaming:`Streaming`,failure:`Failure`,timeout:`Timeout`,reRun:`Re-run`,reRunTitle:`Re-run this agent (not yet implemented)`,lastToolCalls_one:`Last {{count}} tool call`,lastToolCalls_other:`Last {{count}} tool calls`,config:`Config`,configProvider:`Provider`,configModel:`Model`,configDescription:`Description`,configTaskId:`Task ID`,transcript:`Transcript`,openInspector:`Open in Fleet Inspector`,emptyFilteredTitle:`No agents match the filter`,emptyFilteredHint:`Change the filter or clear it to see all agents.`,emptyFilteredClear:`Show all`,emptyFinishedTitle:`All tasks complete`,emptyFinishedHint:`All agents have finished — clear finished or spawn new tasks to see activity here.`,emptyFinishedStats:`{{completed}} done · {{failed}} failed`},c={fileCount_one:`{{count}} file`,fileCount_other:`{{count}} files`,refreshTitle:`Refresh changes`,loading:`Loading changes…`,clean:`No changes — working tree is clean.`,selectPrompt:`Select a changed file to view its diff.`,unified:`Unified`,unifiedTitle:`Unified diff`,edit:`Edit`,editTitle:`Side-by-side editable diff`,loadingDiff:`Loading diff…`,diffTimeout:`The diff didn't arrive. The file may have changed or the connection dropped.`,binary:`Binary file — diff not shown.`,tooLarge:`File too large to diff.`},l={openAgentsPanel:`Open Agents panel (live fleet)`,hidePanel:`Hide inspector panel`,label:`Inspector`,openAudit:`Open Audit tab`,tabFleet:`Fleet`,tabAgents:`Agents`,tabAudit:`Audit`,tabCouncil:`Council`,councilCount:`{{count}} panel`,councilCount_other:`{{count}} panels`,councilClear:`Clear`,councilEmpty:`No council has convened yet in this session.`,councilEmptyHint:`The Brain convenes a multi-model panel for questions at or above its council risk floor. Configure it under Settings › Brain › Council.`,collapseAria:`Collapse inspector panel`,collapseTitle:`Collapse (Esc)`,noAgentsActive:`No agents active`,agentsAppearHint:`Agents appear here when the fleet is active.`,selected:`{{name}} (selected)`},u={header:`Next steps`,autoSubmitting:`auto-submitting in`,clickToFill:`click to fill input`,clickToFillTitle:`Click to fill: {{text}}`,auto:`auto`,willAutoSubmit:`Will auto-submit after countdown`,autoFilling:`Filling in`,autoModeIdle:`Auto — waiting for auto="true" marker`,nSelected:`{{count}} selected`,submitN:`Submit {{count}}`,deselectTitle:`Deselect`,selectTitle:`Select for batch submit`,nSelected_one:`{{count}} selected`,nSelected_other:`{{count}} selected`,submitN_one:`Submit {{count}}`,submitN_other:`Submit {{count}}`},d={onlineCount:`{{count}} online`,messages:`Messages`,compose:`Compose message`,recipient:`Recipient`,messageType:`Type`,audience:`Audience`,audienceAll:`All agents`,audienceLeaders:`Leaders only`,priority:`Priority`,priorityLow:`Low`,priorityNormal:`Normal`,priorityHigh:`High`,subjectPlaceholder:`Subject (optional)`,bodyPlaceholder:`Message body`,leadersOnlyHint:`Only leader agents and leader surfaces can consume this message.`,leadersLabel:`leaders`,send:`Send`,sending:`Sending…`,sent:`Sent`,sendFailed:`Mailbox send failed.`,defaultSubject:`WebUI message`,deleteAllTitle:`Delete all messages`,deleteAll:`Delete all`,deleting:`Deleting…`,purgeTitle:`Purge stale/orphaned messages`,purge:`Purge`,purging:`Purging…`,compact:`Compact`,compacting:`Compacting…`,compactTitle:`Auto-compact: remove expired, read-by-all, and stale messages`,compactRemoved:`Removed {{count}}`,compactExpired:`{{count}} expired`,compactReadByAll:`{{count}} read-by-all`,compactStale:`{{count}} stale`,compactRemaining:`{{count}} remaining`,newLabel:`NEW`,empty:`No messages yet.`,offlineCount:`+{{count}} offline`,timeNow:`now`,deleteAllConfirmTitle_one:`Delete {{count}} message?`,deleteAllConfirmTitle_other:`Delete all {{count}} messages?`,deleteAllConfirmBody:`The mailbox file is truncated for every agent. This cannot be undone.`,purgeConfirmTitle:`Purge stale messages?`,purgeConfirmBody:`Removes completed messages older than 1 day and incomplete messages older than 7 days. Active messages are preserved.`,type:{note:`Note`,ask:`Question`,assign:`Assignment`,steer:`Steer`,btw:`By the way`,broadcast:`Broadcast`,status:`Status`,result:`Result`,review:`Review`},emptyDetail:`No message selected`,emptyDetailHint:`Click a message in the Mailbox panel to view it here.`,readBy:`Read by`,backToChat:`Back to chat`,completed:`Completed`,everyone:`everyone`,closeTitle:`Close (Esc)`,replyTo:`In reply to: {{id}}`,completedBy:`Completed by {{name}}`,completedByAt:`Completed by {{name}} at {{time}}`,outcome:`Outcome:`,task:`Task:`,messageNotFound:`Message not found`,messageNotFoundHint:`This message may have been deleted or purged.`,sessionLabel:`Session`,sessionScope:`Session {{sid}}`,sessionScopeTitle:`Only delivered to agents in session {{sid}}`,projectLabel:`Project`,projectScope:`Project (every agent)`,directScope:`Direct`,scopeLabel:`Scope`},f={recentSessions:`Recent sessions`,deleteEmptyTitle_one:`Delete {{count}} empty session?`,deleteEmptyTitle_other:`Delete {{count}} empty sessions?`,deleteEmptyConfirmBody:`Sessions without any token usage are removed from disk.`,filterPlaceholder:`Filter title, model, provider…`,clearFilter:`Clear filter`,noHistory:`No history yet`,noHistoryHint:`Your conversations will appear here`,noMatches:`No matches`,noMatchesHint:`Try a different filter`,group:{favorites:`Favorites`,today:`Today`,yesterday:`Yesterday`,thisWeek:`This week`,earlier:`Earlier`},nicknamePlaceholder:`Nickname`,empty:`(empty)`,resuming:`resuming…`,active:`active`,renameTitleNickname:`{{nickname}} — original: {{title}}`,renameTitle:`{{title}}
2
+
3
+ Double-click to rename`,unfavorite:`Unfavorite`,markFavorite:`Mark as favorite`,deleteSessionConfirmTitle:`Delete session?`,deleteSessionConfirmBody:`"{{name}}" will be removed from disk. This cannot be undone.`,deleteSessionTitle:`Delete session`,rename:`Session name`,renameAction:`Rename`,resume:`Resume session`,resumeShort:`Resume`,workspaceEyebrow:`Conversation control`,workspaceTitle:`Sessions`,workspaceHint:`Search, inspect, pin and resume every project conversation.`,tabs:{history:`History`,live:`Live sessions`},filters:{all:`All`,favorites:`Pinned`,active:`Active`,completed:`Completed`,issues:`Issues`},status:{active:`Active`,completed:`Completed`,error:`Error`,timeout:`Timed out`,aborted:`Aborted`,saved:`Saved session`},sort:{label:`Sort sessions`,recent:`Recent`,tokens:`Most tokens`,activity:`Most activity`},stats:{sessions:`Sessions`,tokens:`Tokens`,tools:`Tool calls`,files:`Files changed`,errors:`Errors`},inspect:`Inspect session`},p={actions:{abort:`Abort`,newSession:`New session`,export:`Export`,compact:`Compact`,newSessionConfirm:`Are you sure?`,newSessionConfirmMessage:`A job is still in progress. Start a new session anyway?`,newSessionTitle:`Start a new session (Ctrl+N)`,exportTitle:`Export chat as markdown (Ctrl+E)`,compactTitle:`Compact the context window`,clearTitle:`Clear context (Ctrl+L)`},model:`Model`,modelTitle:`Change model (Ctrl+M)`,context:`Context`,contextTitle:`Click for a context breakdown`,sessionLabel:`Session`,stats:{messages:`Messages`,elapsed:`Elapsed`,tokens:`Tokens`,cost:`Cost`,iteration:`Iteration`,agents:`Agents`,tokensSub:`{{in}} in / {{out}} out`,iterationOf:`of {{max}}`,agentsRunning:`{{count}} running`},plan:`Plan`,planComplete:`{{pct}}% complete`,pinned:`Pinned`,quickSettings:`Quick settings`,autonomy:`Autonomy`,autonomyTitle:`Stop auto-running next steps. Toggle off to halt the agent's autonomous loop`,autonomyOptions:{off:`Off`,suggest:`Suggest`,auto:`Auto`,eternal:`Eternal`,"eternal-parallel":`Eternal Parallel`},yolo:`YOLO mode`,yoloTitle:`Bypass tool confirmation prompts`,refine:`Refine prompts`,refineTitle:`Rewrite prompts before sending`,sound:`Sound on completion`,soundTitle:`Play a soft chime when a run finishes`,sessionId:`session {{id}}`},m={status:{running:`running`,completed:`done`,failed:`failed`,timeout:`timeout`,stopped:`stopped`},leader:`leader`,providerModel:`Provider / Model`,elapsed:`Elapsed`,running:`running…`,iterations:`Iterations`,toolCalls:`Tool Calls`,cost:`Cost`,budgetExtensions:`Budget Extensions`,activity:`Activity`,contextWindow:`Context window`,tokensUsed:`{{used}} / {{max}} tokens`,toolRunning:`running…`,lastTool:`last tool`,error:`Error`,finalOutput:`Final Output`,copyOutput:`Copy output`,liveOutput:`Live Output`,waitingOutput:`Waiting for output…`,outputHint:`Output appears here as the agent streams text.`,toolLog:`Tool Log ({{count}} calls)`,fail:`fail`,moreTools:`+{{count}} more tools`,cardRunning:`running {{tool}}`,cardLastTool:`last: {{tool}}`,contextPercent:`Context {{pct}}%`,doneCount:`{{count}} done`,errCount:`{{count}} err`,statusRunning:`running`,statusDone:`done`,statusFailed:`failed`,statusTimeout:`timeout`,statusStopped:`stopped`,hittingLimitTitle:`⚡ hitting {{kind}} limit ({{used}}/{{limit}})`,budgetExt_one:`{{count}} Budget Extension`,budgetExt_other:`{{count}} Budget Extensions`,extendedTimes_one:`Agent extended its budget {{count}} time due to long-running tasks`,extendedTimes_other:`Agent extended its budget {{count}} times due to long-running tasks`,errorLabel:`Error`,failureReason:`Failure Reason`,failed:`Failed`},h={wsNotConnected:`WebSocket not connected`,noData:`No debug data received. The server may not support context debugging.`,title:`Context Breakdown`,windowUsage:`Window Usage`,contextMode:`Context Mode`,fetching:`Fetching context breakdown…`,systemPrompt:`System Prompt`,tools:`Tools`,messages:`Messages`,tokenAllocation:`Token Allocation`,systemTitle:`System: {{tokens}}`,toolsTitle:`Tools: {{tokens}}`,messagesTitle:`Messages: {{tokens}}`,system:`System`,toolBreakdown:`Tool Breakdown`,messagesSummary:`Messages ({{count}}) — {{total}} tok`,barWithTokens:`Context window: {{tokens}} / {{max}} tokens ({{pct}})`,barPct:`Context window: {{pct}}`,barClick:` — click for breakdown`},g={header:`✨ Refine Prompt`,autoSend:`auto-send in {{count}}s`,cancelTitle:`Cancel (Esc)`,editLabel:`Edit refined prompt:`,editPlaceholder:`Edit the refined prompt...`,useEdit:`Use Edit`,original:`Original`,refined:`Refined`,yourLanguage:`(your language)`,refinedTitle:`Click or press Enter to use this version`,copyToInputTitle:`Copy to input without sending`,english:`English`,englishTitle:`Press e to use English version`,hintRefined:`refined`,hintEnglish:`English`,hintOriginal:`original`,hintEdit:`edit`,hintRetry:`retry`,edit:`Edit`,useRefined:`Use Refined`,langOriginal:`Original`,langEnglish:`English`,languageTitle:`Switch default refine language — Original vs English`,yolo:`YOLO`,yoloTitle:`Bypass tool confirmation prompts`,refining:`Refining…`,sendAsIs:`Send as-is`,failedHeader:`Refinement failed`,retry:`Retry (more time)`,retryBetter:`Try again better`,retryFallback:`Retry with {{model}}`,pickModel:`Another model…`,pickModelTitle:`Retry refinement with another model`,pickModelHint:`Pick a provider/model to re-run this refinement on. Your session model stays unchanged.`,countdownHeader:`✨ Refining starts in…`,countdownYourMessage:`Your message`,countdownHint:`Refining starts in {{seconds}}s. Click "Send as-is" to skip.`,countdownStartNow:`Refine now`,countdownSendAsIs:`Send as-is`,cancelRefineSendOriginal:`Cancel & send original`},_={heading:`Specifications`,subtitle:`View and manage specification-driven development`,empty:`No specs found. Use {{command}} to create one.`,tasks:`Tasks ({{count}})`,doneCount:`{{count}} done`,runningCount:`{{count}} running`,pendingCount:`{{count}} pending`,runTitle:`Run this spec as a live multi-agent job`,run:`Run`,runAsSdd:`Run as SDD`,runAsSddTitle:`Start a multi-agent SDD parallel run (worktrees, verification, live board)`,runAsGoal:`Run as Goal`,runAsGoalTitle:`Start a phased Goal run from this spec's task columns`,list:`List`,graph:`Graph`,loadingTasks:`Loading tasks…`},v={heading:`F5 Resilience Verifier`,subtitle:`Confirms the latest active session, transcript, and UI state survive a page refresh. Open this view, then press F5 — every green row should remain green.`,recordProbe:`Record probe`,latestSession:`Latest active session`,restoredLocal:`Restored from localStorage`,sessionIdExtra:`session id: {{id}}`,noSessionYet:`no session has been started yet`,activePointer:`Active session pointer`,lastVisited:`lastVisitedAt timestamp`,never:`never`,persistedEnv:`Persisted environment`,transcriptRehydrate:`Chat transcript rehydration`,localTranscript:`Local transcript recovered`,messagesExtra:`{{count}} messages, {{queued}} queued`,noMessages:`0 messages`,noBleed:`No cross-session bleed`,bleedExtra:`bound={{bound}} vs active={{active}}`,transcriptBinds:`transcript binds to the active session`,uiWorkspace:`UI workspace`,noneValue:`(none)`,payloadSize:`localStorage payload (4 keys): {{count}} chars`,probeLog:`Probe log`,noProbes:`No probes yet — press the "Record probe" button at the top, or press F5 in this view, to record a rehydration check.`,simulatedF5:`simulated F5: re-running persist rehydrate`},y={status:{pending:`Pending`,in_progress:`In Progress`,review:`Review`,failed:`Failed`,completed:`Done`,queued:`Queued`,blocked:`Blocked`,cancelled:`Cancelled`},newTaskTitle:`New task`,newTaskPlaceholder:`Task title…`,addTask:`Add task`,empty:`No phases yet — start a Goal run to populate the board.`,summary:`{{phases}} phases · {{tasks}} tasks`,phases:`Phases`,statusTab:`Status`,dropHere:`Drop tasks here`,emptySpec:`No tasks in this spec yet.`,depGraphHeading:`Dependency Graph`,worktreePrefix:`worktree: {{branch}}`},b={trendUp:`Increasing`,trendDown:`Decreasing`,trendStable:`Stable`,heading:`Debug Dashboard`,subtitle:`Real-time monitoring for WrongStack WebUI`,refreshLabel:`Refresh:`,lastUpdated:`Last updated: {{time}}`,fetchFailed:`Failed to fetch metrics`,fileWatcher:`File Watcher`,watcherStatus:`Watcher Status`,running:`Running`,stopped:`Stopped`,activeProjects:`Active Projects`,projectsWatched:`Projects being watched`,fileChanges:`File Changes`,totalDetected:`Total detected`,filesProcessed:`Files Processed`,afterHash:`After hash filter`,broadcastsSent:`Broadcasts Sent`,toClients:`To WebUI clients`,debounceResets:`Debounce Resets`,rapidWrites:`Rapid successive writes`,avgDebounce:`Avg Debounce Delay`,actualDelay:`Actual delay applied`,totalDelay:`Total Delay`,sumDelays:`Sum of all delays`,browserPerf:`Browser Performance`,heapUsed:`Heap Used`,jsHeap:`JavaScript heap`,heapTotal:`Heap Total`,totalHeap:`Total heap size`,pageUptime:`Page Uptime`,sinceLoad:`Since page load`,rawData:`Raw Data`},x={allowlistTitle:`Model allowlist`,modelCount_one:`{{count}} model`,modelCount_other:`{{count}} models`,using:`Using`,noModelPicked:`(no model picked)`,clearAllowlist:`Clear allowlist`,clearAllowlistAria:`Clear saved allowlist for {{provider}}`,refresh:`Refresh from server`,refreshAria:`Refresh model list for {{provider}}`,probing:`Probing…`,searchPlaceholder:`Search models…`,use:`Use`,useModelAria:`Use model {{model}} for {{provider}}`},S={expandChip:`Expand {{label}}`,collapseChip:`Collapse {{label}}`,ahead:`{{count}} ahead`,behind:`{{count}} behind`,linesAdded:`{{count}} lines added`,linesDeleted:`{{count}} lines deleted`,untrackedFiles:`{{count}} untracked files`,customizeTitle:`Customize dock chips`,dockChips:`Dock chips`,noActiveGoal:`No active goal`,noActiveGoalDetail:`Start a goal from chat or the goal command.`,closeWorkspaceInspector:`Close workspace inspector`,goal:`Goal`,goalState:`Goal State`,goalStateDetail:`Active objective and progress`,fleet:`Fleet`,fleetDetail:`Live agent roster and activity`,work:`Work`,workDetail:`Todos, tasks, and plan`,worktrees:`Worktrees`,worktreesDetail:`Parallel branches and lanes`,collab:`Collab`,collabDetail:`Session participants and controls`,inspector:`Workspace inspector`,inspectorNamed:`{{name}} workspace inspector`,workspace:`Workspace`,workspaceDetails:`Workspace details`},C={leaderBadge:`LEADER`,iters:`Iters`,tools:`Tools`,activityBins:`Activity (12 bins)`,streamingOutput:`Streaming output`,recentTools:`Recent tools`,finalOutput:`Final output`,heading:`Agents Monitor`,prevAgent:`Previous agent`,nextAgent:`Next agent`,closeAria:`Close agents monitor`,hintPage:`←→ page`,hintNavigate:`↑↓ navigate list`,hintEsc:`Esc close`},w={resize:`Resize terminals`,labelSingular:`Terminal`,labelPlural:`Terminals`,projectShell:`Project shell`,maxTerminals:`Maximum {{count}} terminals`,newTerminal:`New terminal`,restart:`Restart active terminal`,closeAll:`Close all terminals`,closeDock:"Close terminal dock (Ctrl+`)",closeTab:`Close {{name}}`,processExited:`[process exited with code {{code}}]`},T={liveStream:`Live stream`,events_one:`{{count}} event`,events_other:`{{count}} events`,interruptTitle:`Cooperatively stop this agent at its next step (not a process kill)`,interrupt:`⏸ Interrupt`,interrupting:`…`,loading:`Loading session…`,done:`✓✓ done`,read:`✓ read`,delivered:`⏳ delivered`,agent:`Agent`,you:`You`,working:`{{name}} · working`,claude:`Claude`,priority:`Priority`,placeholder:`{{label}} → this session…`,send:`Send`,sendHint:`⌘/Ctrl+Enter to send · seen on the agent's next iteration`,msgType:{steerLabel:`🔄 Steer`,steerHint:`Adjust behavior mid-task`,askLabel:`❓ Ask`,askHint:`Question — expects a reply`,assignLabel:`📋 Assign`,assignHint:`A task to act on`,noteLabel:`💬 Note`,noteHint:`FYI, non-urgent`},sentRunning:`Delivered — the running agent sees it on its next step`,sentIdle:`Delivered — target is idle; appears in its mailbox, read when it next runs`,sentFailed:`Failed: {{error}}`,interruptReason:`Operator requested stop from Fleet HQ`,interruptSent:`Interrupt sent — agent stops at its next step (not a kill)`,interruptFailed:`Interrupt failed: {{error}}`},E={empty:`No side effects recorded yet.`,emptyHint:`Bash commands, package installs, and network requests will appear here.`,heading:`Side Effects`,exportTitle:`Export filtered side effects as CSV`,all:`All`,colTime:`Time`,colTool:`Tool`,colRisk:`Risk`,colDetail:`Detail`,colOutcome:`Outcome`},D={elapsedHm:`{{h}}h {{m}}m ago`,elapsedMs:`{{m}}m {{s}}s ago`,elapsedS:`{{s}}s ago`,heading:`Fleet Monitor`,clientsHeading:`Connected Clients`,terminal:`Terminal`,webui:`Web UI`,repl:`REPL`,totalConnected:`total connected`,mailQueue:`Mail Queue`,total:`Total`,open:`Open`,unread:`Unread`,agents:`Agents`,messagesSub:`messages`,uncompletedSub:`uncompleted`,waitingSub:`waiting`,ofTotal:`of {{count}} total`,agentRoster:`Agent Roster`,liveMailActivity:`Live Mail Activity`,noActivity:`No recent activity`,mailboxAgents:`Mailbox Agents`,noMailboxAgents:`No agents registered`,moreCount:`+{{count}} more`,agentFallback:`agent`,fleetAgents:`Fleet Agents`,noFleetAgents:`No fleet agents running`,iter:`iter`,mailType:{sent:`Sent`,delivered:`Delivered`,read:`Read`,completed:`Completed`}},O={status:{pending:`pending`,queued:`queued`,in_progress:`running`,blocked:`blocked`,review:`review`,failed:`failed`,completed:`done`,cancelled:`cancelled`},activityHeading:`Activity`,feedEmpty:`Nothing yet — events appear here as agents pick up and finish tasks.`,destroyTitle:`Destroy SDD project?`,destroyDesc:`This wipes the run and its work. It cannot be undone (the optional commit revert is history-preserving).`,stopRun:`Stop the run`,stopRunAgents_one:`Stop the run ({{count}} agent working)`,stopRunAgents_other:`Stop the run ({{count}} agents working)`,removeWorktreesAll:`Remove all git worktrees + wstack/ap/* branches — including un-merged work`,removeWorktreesCount_one:`Remove {{count}} git worktree + wstack/ap/* branches — including un-merged work`,removeWorktreesCount_other:`Remove {{count}} git worktrees + wstack/ap/* branches — including un-merged work`,deleteArtifacts:`Delete all SDD artifacts (specs, task graph, board, session)`,revertMerged_one:`Also revert {{count}} merged commit`,revertMerged_other:`Also revert {{count}} merged commits`,revertHint:`Adds revert commits (history preserved). Refused if the working tree is dirty.`,baseBranchFallback:`the base branch`,noteLeaveMerged:`Merged commits will be left on the base branch. Tick the box above to undo them too.`,noteAbandon:`Make sure you really want to abandon this run.`,destroying:`Destroying…`,destroyAll:`Destroy everything`,kanbanBacklog:`Backlog`,kanbanReady:`Ready`,kanbanRunning:`Running`,kanbanReview:`Review`,kanbanFailed:`Failed`,kanbanDone:`Done`,kanbanEmpty:`empty`},k={collapseToLines:`Collapse to first {{count}} lines`,showAllLines:`Show all {{total}} lines ({{more}} more)`,exitCode:`exit code:`,jsonLines:`JSON · {{count}} lines`,collapse:`collapse`,expand:`expand`},A={injectedHeading:`SAGE Memory Injected`,memoriesLabel_one:`{{count}} memory`,memoriesLabel_other:`{{count}} memories`},j={heading:`Design Studio — Gallery`,kitsCount:`{{count}} kits`,searchPlaceholder:`Search kits…`,stackTitle:`Stack for Use + Materialize`,wrote:`Wrote {{path}}`,materializeFailed:`Materialize failed: {{error}}`,verifyError:`Verify: {{error}}`,verifyOffPalette:`Verify: {{pct}}% on-palette — {{count}} off-palette in {{files}} file(s)`,verifyClean:`Verify: clean ✓ ({{files}} file(s) on-palette)`,writing:`Writing theme file…`,scanning:`Scanning UI files…`,active:`Active`,reapply:`Reapply`,use:`Use`,materializeTitle:`Write tokens to a {{stack}} theme file`,materialize:`Materialize`,verifyTitle:`Scan UI files for off-palette colors`,verify:`Verify`,colors:`Colors`},M={summary_one:`{{count}} phase · {{pct}}% complete`,summary_other:`{{count}} phases · {{pct}}% complete`,switchBoard:`Switch board`,boardsCount_one:`{{count}} board…`,boardsCount_other:`{{count}} boards…`,toggleAutonomousTitle:`Toggle autonomous mode`,autonomous:`Autonomous`,manual:`Manual`,resumeTitle:`Resume the run`,pauseTitle:`Pause the run`,resume:`Resume`,pause:`Pause`,stopTitle:`Stop the run — aborts in-flight agents immediately`,stop:`Stop`,newTitle:`Clear this board and start a new Goal run`,newLabel:`New`,revertConfirm:`Revert run's commits?`,revertTitle:`Undo this run — git-revert the commits it landed and remove its worktrees`,revert:`Revert`,goal:`Goal`,planning:`Planning phases…`,planningBody:`Your goal was received. WrongStack is breaking it into phases and tasks — the board appears here the moment the plan is ready.`,startHeading:`Start a Phase Plan`,startBody:`Describe what you want to build. WrongStack will plan phases and tasks, then execute them — watch and steer the run on the board.`,startPlaceholder:`e.g. Build a REST API for user management with Express and SQLite...`,isolateLabel:`Isolate each phase in its own git worktree`,startButton:`Start Goal`,ctrlHint:`Ctrl+Enter to start`,isolateOn:`phases run in isolated worktrees, squash-merged back`,isolateOff:`phases run directly on the current branch`,lanes:`Lanes`,graph:`Graph`,planningAck:`🚀 **Goal** — got it. Planning phases for your goal now…`,assess:{analyzing:`Analyzing goal scope…`,realistic:`✓ Scope looks realistic`,durationConcern:`⚠ Duration concern`,durationClaimed:`Claimed duration: {{duration}}`,recommendation:`Recommended: {{duration}}`,concerns:`Concerns`,analysisFailed:`Could not analyze goal scope`,override:`Start anyway`,overrideTitle:`Clear the assessment warning and enable the start button`,disableTitle:`This goal has an unrealistic duration assessment — use "Start anyway" to override`},multiBoardLabel:`Split into multiple kanban boards`,verifyTasksLabel:`Require verification for each task`,chimeraReviewLabel:`Enable chimera auto-review`},N={noObservers:`No live observers`,observerTitle:`Join as a read-only observer (Phase 1)`,observerRole:`observer`,annotatorTitle:`Join as an annotator — leave inline notes on tool calls (Phase 2)`,annotatorRole:`annotator`,controllerTitle:`Join as a controller — can pause the agent loop (Phase 3)`,controllerRole:`controller`,errorPrefix:`Collab: {{error}}`,dismiss:`dismiss`,observers_one:`{{count}} observer`,observers_other:`{{count}} observers`,annotationsTitle:`{{count}} open annotation(s) — annotators reviewing this session`,notes_one:`{{count}} note`,notes_other:`{{count}} notes`,pausedTitle:`Agent loop is paused — a controller is reviewing`,paused:`paused`,joinedTitle:`Joined {{time}}`,grantTitle:`Grant control — promote this participant to controller`,injectTitle:`Inject a synthetic result for an in-flight tool call`,inject:`Inject`,resumeTitle:`Resume the agent loop`,resume:`Resume`,pauseTitle:`Pause the agent before the next tool call`,pauseAgent:`Pause agent`,leaveTitle:`Leave the observer session`,leave:`Leave`,injectToolResult:`Inject tool result`,close:`close`,targetTool:`Target tool_use id`,targetPlaceholder:`pick an in-flight call or type a tool_use id`,toolFallback:`tool`,noPendingTools:`No in-flight tool calls — type a tool_use id to pre-queue, or pause the agent first.`,resultContent:`Result content`,resultPlaceholder:`Synthetic tool result fed to the agent in place of running the tool`,markError:`mark as error`,reasonPlaceholder:`reason (audit log)`,queueInjection:`Queue injection`,controllerInjection:`controller injection`},P={modePrefix:`mode:`,activeTitle:`Active mode`,heading:`Mode`,defaultName:`Default`,defaultDesc:`Standard agent behaviour`},F={clickTitle:`Click for per-turn cost breakdown`,heading:`Cost breakdown`,noPricing:`No pricing for the current model — cost figures are zero.`,noTurns:`No completed turns yet. Run a prompt to see per-turn cost here.`,topExpensive_one:`Top {{count}} expensive turn`,topExpensive_other:`Top {{count}} expensive turns`},I={runDefault:`Run default`,useRunDefault:`Use run default`,filterPlaceholder:`Filter models…`,loading:`Loading models…`,noMatch:`No match`},L={heading:`Switch model`,filterPlaceholder:`Filter providers and models…`,providerFilter:`Provider`,providerFilterAll:`All providers`,noSavedProviders:`No saved providers — register a key in Settings first.`,noMatch:`No matching models`,active:`active`},R={todos:`Todos`,tasks:`Tasks`,plan:`Plan`},z={toggleAria:`Toggle: {{content}}`,removeTitle:`Remove todo`,removeAria:`Remove "{{content}}"`,completedCount_one:`{{count}} completed`,completedCount_other:`{{count}} completed`},B={start:`Start`,complete:`Complete`,retry:`Retry`,assign:`Assign`,assignTitle:`Assign agent`,unassigned:`Unassigned`,statusPending:`Pending`,statusInProgress:`In Progress`,statusBlocked:`Blocked`,statusFailed:`Failed`,statusReview:`Review`,statusDone:`Done`,startTitle:`Start`,completeTitle:`Complete`,fail:`Fail`,failTitle:`Mark failed`,boardCount:`{{total}} tasks · {{done}} completed`},V={toolCalls_one:`{{count}} tool call`,toolCalls_other:`{{count}} tool calls`},H={removeTitle:`Remove reference`,linesCount_one:`{{count}} line`,linesCount_other:`{{count}} lines`},U={statusOpen:`Open`,statusInProgress:`In Progress`,statusDone:`Done`,startTitle:`Start`,doneTitle:`Mark done`,reopenTitle:`Reopen`,reopen:`Reopen`},W={heading:`@ Files`,noMatch:`No files match "{{query}}"`,searching:`Searching project…`,selectInsertEscDismiss:`↑/↓ select · ↵ insert · Esc dismiss`},G={dismiss:`Dismiss`},K={placeholder:`Search in chat…`,prevHit:`Previous hit`,nextHit:`Next hit`,close:`Close (Esc)`},q={statusPending:`Pending`,statusReady:`Ready`,statusRunning:`Running`,statusPaused:`Paused`,statusCompleted:`Completed`,statusFailed:`Failed`,statusSkipped:`Skipped`,heading:`Phases`,autonomousOn:`● Autonomous`,autonomousOff:`○ Manual`,autonomousOnTitle:`Autonomous mode active — click to pause`,autonomousOffTitle:`Manual mode — click to enable autonomous`,overallProgress:`Overall Progress`,tasksSuffix:`{{done}}/{{total}} tasks`,agentsSuffix_one:`{{count}} agent`,agentsSuffix_other:`{{count}} agents`},J={triggerTitle:`Context-window mode`,ctxPrefix:`ctx:`,opsHeading:`Context Operations`,compactNow:`Compact Now`,compactNowDesc:`Elide old tool output`,compactAggressive:`Compact Aggressive`,compactAggressiveDesc:`Maximum elision now`,repairContext:`Repair Context`,repairDesc:`Fix orphan tool-use blocks`,debugContext:`Debug Context`,debugDesc:`Size breakdown per section`,windowHeading:`Context Window`,keepElide:`keep {{k}} recent · elide {{t}}+ tokens`,fallbackName:`Balanced`,fallbackDesc:`Default rolling compaction`},Y={kindAssistant:`Assistant`,kindThinking:`Thinking`,kindToolCall:`Tool call`,kindToolResult:`Tool result`,kindError:`Error`,kindStatus:`Status`,kindSystem:`System`,title:`Chat history`,copyTitle:`Copy agent chat history`,empty:`No chat history for this agent yet.`},X={heading:`Autonomy Mode`,titlePrefix:`Autonomy: {{label}}`,descOff:`Full manual control — agent waits for your input.`,descSuggest:`Agent suggests next steps but waits for approval.`,descAuto:`Agent auto-proceeds after brief confirmation delay.`,descEternal:`Agent runs autonomously until goal is complete.`,descEternalParallel:`Multi-agent autonomous execution — fleet mode.`,labelOff:`Off`,labelSuggest:`Suggest`,labelAuto:`Auto`,labelEternal:`Eternal`,labelEternalParallel:`Eternal Parallel`},Z={heading:`Message Queue`,subtitle:`{{count}} queued · messages sent before the agent finishes`,btwTitle:`By-the-way — sent as follow-up without interrupting the running agent`,steerTitle:`Steer — interrupts the running agent and redirects it with this message`,queueTitle:`Queued — held until the current agent run completes, then sent in order`,sortNewestTitle:`Sorted newest first — click to sort oldest first`,sortOldestTitle:`Sorted oldest first — click to sort newest first`,newest:`Newest`,oldest:`Oldest`,clear:`Clear`,clearTitle:`Clear all queued messages`,closeTitle:`Close`,emptyTitle:`Queue is empty`,emptyBody:`Use the btw / steer / add queue buttons beside the input to add messages. Queued items are sent in order when the current agent run completes.`,removeTitle:`Remove from queue`,clearDispatchedTitle:`Clear queued messages — already-sent notes cannot be retracted`,dispatchedTitle:`Already sent to the agent`,dispatchedLabel:`Sent`,footer:`Messages are sent in arrival order when the current agent run completes. Use the sort toggle to view newest-first.`},Q={heading:`Session Checkpoints`,countSuffix_one:`{{count}} checkpoint`,countSuffix_other:`{{count}} checkpoints`,description:`Rewind the session to any checkpoint. Messages and file changes revert to that point — the LLM continues from there as if nothing happened after.`,emptyTitle:`No checkpoints yet`,emptyBody:`Checkpoints are automatically created each time you send a message. Send a few messages and come back.`,latest:`latest`,msgSuffix_one:`{{count}} msg`,msgSuffix_other:`{{count}} msgs`,footerPre:`Click any checkpoint to rewind`,footerPost:`to close`},ne={statusActive:`Active`,statusPaused:`Paused`,statusDone:`Done`,statusFailed:`Failed`,statusAbandoned:`Abandoned`,heading:`Goal`,refined:`Refined`,progress:`Progress`,iterations:`iterations`,deliverables:`Deliverables`,recentActivity:`Recent Activity`},re={cleanTitle_one:`Clean {{count}} orphaned worktree?`,cleanTitle_other:`Clean {{count}} orphaned worktrees?`,cleanMessage:`Force-removes every leftover git worktree + wstack/ap branch from previous runs. Un-merged work in them is discarded.`,cleanConfirm:`Clean orphans`,orphanCount_one:`{{count}} orphaned worktree from previous runs`,orphanCount_other:`{{count}} orphaned worktrees from previous runs`,andMore:`…and {{count}} more`,cleanButtonTitle:`Force-remove all orphaned worktrees + branches`,removed_one:`✓ Removed {{count}} orphaned worktree.`,removed_other:`✓ Removed {{count}} orphaned worktrees.`,cleanupFailed:`cleanup failed`,lanesHeading:`Worktrees`,base:`base`,isolatedCount_one:`{{count}} isolated`,isolatedCount_other:`{{count}} isolated`,statusAllocating:`allocating`,statusActive:`active`,statusCommitting:`committing`,statusMerging:`merging`,statusMerged:`merged`,statusConflict:`conflict`,statusFailed:`failed`,conflictBadge:`CONFLICT`,graphAria:`Worktree branch graph off {{base}}`,mergedLabel:`✓ merged → {{base}}`},ie={heading:`Running Processes`,subtitle:`{{active}} active · {{total}} total`,killAll:`Kill All`,emptyTitle:`No processes tracked`,emptyBody:`Processes appear here when the agent runs bash or exec tools. Active processes show a pulsing LED.`,pidLabel:`PID {{pid}}`,protected:`protected`,protectedTitle:`Protected — survives kill/killAll`,background:`background`,backgroundTitle:`Detached job — survives CLI/WebUI shutdown`,confirmKillBackground:`Terminate detached background process {{pid}}?`,confirmKillAll:`Terminate all {{count}} running processes?`,killTitle:`Kill PID {{pid}}`},ae={tooLarge:`Diff omitted (file too large to render inline).`},oe={placeholder:`Add a fallback model…`,emptyHint:`Tried in order when the primary model rate-limits or stalls.`,moveUp:`Move up`,moveDown:`Move down`},se={loading:`Loading sessions...`,apiUnavailable:`Session API unavailable:`,empty:`No live sessions. Open another wstack instance to see it here.`,heading:`Live Sessions ({{count}})`,autoRefresh:`auto-refresh every 5s`,pidLabel:`PID {{pid}}`,agentMeta:`{{iter}} iter · {{tools}} tools · {{ago}}`,andMore:`... and {{count}} more`,noAgents:`No agents`},ce={applyTitle:`Write the edited version back to disk`,applying:`Applying…`,applied:`Applied`,apply:`Apply`},le={showStack_one:`Show stack trace ({{count}} frame)`,showStack_other:`Show stack trace ({{count}} frames)`,hideStack_one:`Hide stack trace ({{count}} frame)`,hideStack_other:`Hide stack trace ({{count}} frames)`},ue={liveHeading:`Live`,clients:`Clients`,agents:`Agents`,model:`Model`,mode:`Mode`,toolCalls:`Tool calls`,displayHeading:`Display`,statsHud:`Stats HUD`,legends:`Legends`,minimap:`Minimap`,zoomControls:`Zoom controls`,animateWires:`Animate wires`,backgroundHeading:`Background`,bgDots:`Dots`,bgLines:`Lines`,bgCross:`Cross`,bgNone:`None`},de={noParams:`(no params)`,itemCount_one:`{{count}} item`,itemCount_other:`{{count}} items`,keyCount_one:`{{count}} key`,keyCount_other:`{{count}} keys`},fe={roleYou:`You`,roleTool:`Tool`,roleThinking:`Thinking`,roleAssistant:`Assistant`,inputLabel:`Input`,downloadTitle:`Download as file`,empty:`(empty)`,hideDetails:`Hide details`,showDetails:`Show details`,showDetailsLines_one:`Show details ({{count}} line)`,showDetailsLines_other:`Show details ({{count}} lines)`,editHint:`⌘/Ctrl+Enter to save · Esc to cancel`,saveResend:`Save & resend`,thinkingProcess:`Model Reasoning`,thinkingMeta:`iter {{iter}} · {{dur}} · {{lines}}`,replay:`replay`,linesSuffix_one:`{{count}} line`,linesSuffix_other:`{{count}} lines`,copyLog:`Copy log`,showFullLog:`Show full log`,typing:`Typing…`,noContent:`No content`,imageNotRetained:`Image preview not kept after refresh`,failedToSend:`⚠ Failed to send`,autoPaused:`⚠️ _Auto-proceed paused — maximum consecutive automatic turns reached. Type anything to continue (autonomy stays on)._`,autoLoopHalted:`⚠️ _Auto-submit halted because the same prompt repeated. Autonomy remains on; enter a new prompt to reset the loop guard._`,rsIterations:`Iterations: {{n}}`,rsTools:`Tool calls: {{n}}`,rsElapsed:`Elapsed: {{s}}`,rsCost:`Cost: {{c}}`,useInput:`Input: {{n}}`,useOutput:`Output: {{n}}`,useCacheRead:`Cache read: {{n}}`,useCost:`Cost: {{c}}`,renderedLabel:`Rendered`,rawLabel:`Raw`,showRenderedTitle:`Show rendered markdown`,showRawTitle:`Show raw markdown source`,editTitle:`Edit & resend this prompt`,editLabel:`Edit`,unpinTitle:`Unpin`,pinTitle:`Pin this answer`,pinnedLabel:`Pinned`,pinLabel:`Pin`,regenerateTitle:`Regenerate this response`,retryLabel:`Retry`},pe={toolFallback:`tool`,toolFailed:`Tool failed`},me={heading:`Keyboard shortcuts`,footerPre:`Press`,footerPost:`any time to reopen this list.`,sectionGlobal:`Global`,sectionTuiParity:`TUI Panel Parity`,sectionFleet:`Fleet & Agents`,sectionChatInput:`Chat input`,sectionChat:`Chat`,sectionChatNav:`Chat navigation (when not typing)`,dCommandPalette:`Open command palette`,dShowOverlay:`Show this shortcuts overlay`,dToggleSidebar:`Toggle sidebar`,dOpenPanel:`Open side panel (Session, Agents, History, Files, Changes, Mailbox, Skills, Office Map)`,dDesignStudio:`Open Design Studio side panel`,dWorktrees:`Open Worktrees side panel`,dSettings:`Open Settings`,dMemory:`Open Memory`,dFocusInput:`Focus the message input`,dSessionPanel:`Session panel`,dFleetOverlay:`Fleet monitor overlay`,dAgentsOverlay:`Agents monitor overlay`,dWorktreeMonitor:`Worktree monitor`,dPlanPanel:`Plan panel`,dTodosPanel:`Todos panel`,dQueuePanel:`Queue panel`,dProcessMonitor:`Process monitor`,dGoalPanel:`Goal panel`,dSessionsDashboard:`Sessions dashboard`,dOfficeMap:`Coordinator office map`,dDockPicker:`Dock chip picker`,dOpenFleet:`Open Fleet Monitor overlay`,dOpenAgents:`Open Agents Monitor overlay`,dNavigateAgents:`Navigate agents in monitor`,dSelectAgent:`Select focused agent`,dCloseOverlay:`Close active overlay`,dSendMessage:`Send message`,dNewline:`Insert a newline`,dRecallPrev:`Recall previous prompt (in empty input)`,dRecallNext:`Recall next prompt`,dSlashPopup:`Open slash command popup`,dAutocomplete:`Autocomplete highlighted command`,dDismissPopup:`Dismiss popup / clear input`,dSearchChat:`Search within current chat`,dClearContext:`Clear context (same as /clear)`,dNewSession:`Start a new session (same as /new)`,dExportMarkdown:`Export chat as markdown`,dModelSwitcher:`Quick model switcher overlay`,dCompactDensity:`Toggle compact UI density`,dAbortRun:`Abort the current run (when running)`,dFocusNext:`Focus next message (alias: ↓)`,dFocusPrev:`Focus previous message (alias: ↑)`,dJumpFirst:`Jump to first message`,dJumpLast:`Jump to last message`,dCopyFocused:`Copy focused message text`,dClearFocused:`Clear focused message`},he={titleFallback:`Live SDD Board`,defaultModelTitle:`Run-level default worker model (per-task overrides take precedence)`,graphLabel:`Graph`,kanbanLabel:`Kanban`,retryAllTitle:`Requeue every failed task to pending`,retryFailed:`Retry failed ({{count}})`,resume:`Resume`,pause:`Pause`,stop:`Stop`,cleanTitle:`Remove the run's git worktrees + wstack/ap branches`,cleanWorktrees:`Clean worktrees`,rollbackTitle:`Revert {{count}} merged commit(s) on {{base}}`,rollback:`Rollback ({{count}})`,stopping:`Stopping…`,destroying:`Destroying…`,destroyTitle:`Stop, remove all worktrees, optionally revert merged commits, and delete the SDD project`,destroy:`Destroy`,statDone:`done`,statRunning:`running`,statFailed:`failed`,statWave:`wave`,statElapsed:`elapsed`,noActiveWorkers:`no active workers`,deadlock:`Deadlock — tasks blocked by failed work:`,noRunTitle:`No active SDD run.`,noRunBody:`Start one from the New SDD Project wizard, or via /sdd execute in the CLI — agents appear here live, each working an isolated worktree.`,clickTaskHint:`click a task for details`,lcClean:`Clean`,lcRollback:`Rollback`,lcDestroy:`Destroy`,lcFailed:`{{op}} failed: {{reason}}`,lcUnknownError:`unknown error`,lcWorktrees_one:`{{count}} worktree removed`,lcWorktrees_other:`{{count}} worktrees removed`,lcCommits_one:`{{count}} commit reverted`,lcCommits_other:`{{count}} commits reverted`,lcDeleted:`deleted {{items}}`,lcNothing:`nothing to do`,lcNote:`{{op}}: {{body}} — note: {{reason}}`,lcOk:`{{op}}: {{body}}`},ge={backTitle:`Back to activity`,expandTitle:`Expand task details`,collapseTitle:`Collapse task details`,eventLog:`Task event log`,newestFirst:`newest first`,noEvents:`No task activity has been recorded yet.`,workingOn:`working on this task`,assigned:`assigned`,metaPriority:`Priority`,metaType:`Type`,metaDuration:`Duration`,metaElapsed:`Elapsed`,metaRetries:`Retries`,metaWorktree:`Worktree`,workerModel:`Worker model`,runDefault:`run default: {{model}}`,runDefaultPlaceholder:`Run default`,runDefaultPlaceholderModel:`Run default ({{model}})`,verificationCmd:`Verification command`,gatesCompletion:`gates completion (exit 0)`,verifyPlaceholder:`e.g. pnpm vitest run path/to/file`,addVerify:`+ Add verification command`,description:`Description`,timeline:`Timeline`,dependsOn:`Depends on`,blocks:`Blocks`,newWorkerPlaceholder:`New worker name…`,confirmStop:`Stop this running task?`,confirmDelete:`Delete this task from the run?`,retryTitle:`Requeue this task to pending`,reassign:`Reassign`,stopTitle:`Abort the worker on this task`,splitTitle:`Split this task into sub-tasks delegated to separate workers`,split:`Split`,splitHint:`One sub-task per line — Title :: description (description optional)`,splitPlaceholder:`Write the data layer :: add the repository
4
+ Wire the UI`,splitInto:`Split into sub-tasks`,deleteTitle:`Remove this not-started task from the run`},_e={phaseStart:`Start`,phaseInterview:`Interview`,phaseSpecReview:`Spec Review`,phasePlanning:`Planning`,phaseTaskReview:`Task Review`,phaseRunning:`Running`,phaseDone:`Done`,titleFallback:`New SDD Project`,questionsSuffix:`{{cur}}/{{max}} questions`,tasksSuffix:`{{count}} tasks`,runCfgTitle:`Run config — default model + fallback chain`,modelsLabel:`Models`,startRun:`Start Run`,defaultWorkerModel:`Default worker model`,leaderDefaultPlaceholder:`Leader / session default`,useSessionDefault:`Use session default`,fallbackChain:`Fallback chain`,appliesToAll:`Applies to every task. Override per-task from the live board after the run starts.`,parallelAgents:`Parallel agents`,isolateWorktrees:`Isolate in git worktrees`,worktreeOn:`Each task runs in its own worktree, squash-merged back on completion.`,worktreeOff:`Tasks run directly on the current branch (no isolation).`,planDecompose:`Auto-split large tasks`,planDecomposeOn:`Before dispatch, split tasks the atomicity engine flags as too large.`,planDecomposeOff:`Keep the approved task graph as-is (still split at runtime if a task fails).`,goalPrompt:`What do you want to build?`,goalPlaceholder:`e.g. Add OAuth login (Google + GitHub) with session management`,startingInterview:`Starting interview…`,startInterview:`Start Interview`,introBody:`An isolated agent interviews you to build a spec, decomposes it into a dependency-ordered task graph, then a real multi-agent fleet executes it — watch live on the board. If you refresh or restart, the interview resumes automatically.`,taskGraphSummary:`Task graph · {{count}} tasks, dependency-ordered`,dragToExplore:`drag to explore`,show:`show`,goalLabel:`Goal`,implementationPlan:`Implementation plan`,approveSpec:`Approve spec → plan implementation`,approveTasks:`Approve tasks`,approvePlan:`Approve plan`,answerPlaceholder:`Answer the question…`,changePlaceholder:`Request a change…`,resumeBanner:`Resumed interview from a previous session — continue where you left off.`,openLiveBoard:`Open live board`,discardInterview:`Discard & start over`,discardTitle:`Abandon this interview and clear the saved session`},ve={emptyDir:`empty`,loadFailed:`Failed to load files: {{error}}`,expandAllTitle:`Expand all directories`,expandAll:`Expand all`,collapseAllTitle:`Collapse all directories`,collapse:`Collapse`,folders_one:`{{count}} folder`,folders_other:`{{count}} folders`,currentDirTitle:`Current directory: {{path}}`,navigateToTitle:`Navigate to {{path}}`,filesSuffix_one:`{{count}} file`,filesSuffix_other:`{{count}} files`,goToDir:`go to dir`,navigateParentTitle:`Navigate to parent directory of {{path}}`,parentDirectory:`parent directory`,noFiles:`No files found`,copyAbsPath:`Copy absolute path`,copyRelPath:`Copy relative path`,openInTerminal:`Open in terminal`,openInFileManager:`Open in file manager`,mentionInChat:`Mention in chat`,copyPath:`Copy path`},ye={sendSelectionAction:`Send selection to chat`,noFilesOpen:`No files open`,selectToEdit:`Select a file from the explorer to start editing`,sendSelectedTitle:`Send selected lines to chat`,mentionFileTitle:`Mention this file in chat`,sendToChat:`Send to chat`,mentionFile:`Mention file`,loadingEditor:`Loading editor…`,selectTab:`Select a tab to view its content`},be={title:`File activity`,overview:`Overview`,changes:`Changes`,context:`Context`,logs:`Logs`,lines:`lines`,resizeHint:`Drag to resize · double-click to reset`,refresh:`Refresh file evidence`,evidenceCount_one:`{{count}} event`,evidenceCount_other:`{{count}} events`,mutations30m:`Edits · 30m`,sessions:`Sessions`,actors:`Actors`,linkedWork:`Work links`,lifetimeTitle:`All history`,lifetimeChanges:`changes`,lifetimeSessions:`sessions`,lifetimeTasks:`tasks`,lifetimeBoards:`boards`,lifetimeSince:`since {{date}}`,lifetimeTools:`via {{tools}}`,workLinks:`Kanban / todo`,recentActivity:`Recent file activity`,events:`events`,noEvidence:`No activity has been attributed to this file yet.`,noSessions:`No session attribution yet.`,noActors:`No actor attribution yet.`,noWorkLinks:`No Kanban, SDD or todo link recorded.`,taskOrTodo:`Task / todo`,loadingEvidence:`Loading file evidence…`,gitToBuffer:`Git HEAD → current Monaco buffer`,savedToBuffer:`Last saved version → current Monaco buffer`,unsaved:`unsaved buffer`,level:{quiet:`quiet`,active:`active`,churn:`high churn`},analysisTitle:{quiet:`No recent edit churn`,active:`This file is being changed`,churn:`Repeated edits detected`},analysisBody:{quiet:`No attributed mutations were recorded in the last 30 minutes.`,active:`{{mutations}} mutations across {{actors}} actors and {{sessions}} sessions in the last 30 minutes.`,churn:`High churn: {{mutations}} mutations across {{actors}} actors and {{sessions}} sessions. Check overlapping work before the next edit.`}},xe={loading:`Loading analytics…`,heading:`Analytics Dashboard`,autoRefresh:`auto-refresh every 10s`,liveSessions:`Live Sessions`,agents:`Agents`,agentsActive:`{{count}} active`,totalEvents:`Total Events`,categoriesSub:`{{count}} categories`,toolCalls:`Tool Calls`,iterationsSub:`{{count}} iterations`,sessionCost:`Session Cost`,tokensSub:`{{input}} in / {{output}} out`,sessionDuration:`Session Duration`,messagesSub:`{{count}} messages`,eventsByCategory:`Events by Category`,noEvents:`No events recorded yet.`,topEvents:`Top Events`,activeSessionUsage:`Active Session Usage`,provider:`Provider`,model:`Model`,inputTokens:`Input Tokens`,outputTokens:`Output Tokens`,cacheRatio:`Cache Ratio`,filesRead:`Files Read`,noSession:`No active session or waiting for data…`,healthErrors:`Health & Errors`,errorEvents:`Error events`,warningEvents:`Warning events`,cacheHitRate:`Cache hit rate`,totalCategories:`Total categories`,waitingData:`Waiting for data…`,recentEvents:`Recent Events`,noRecentEvents:`No recent events. Interact with the UI to generate events.`},Se={heading:`Prompt library`,searchPlaceholder:`Search prompts…`,newPrompt:`+ New prompt`,all:`All`,recent:`🕘 Recent`,favorites:`★ Favorites`,noMatch:`No prompts match.`,newPromptHeading:`New prompt`,titlePlaceholder:`Title *`,descPlaceholder:`One-line description`,categoryPlaceholder:`Category`,tagsPlaceholder:`tags, comma, separated`,contentPlaceholder:`Prompt content * — use {{name}} for variables`,variables:`Variables`,addVar:`+ var`,varNamePlaceholder:`name`,varDescPlaceholder:`description`,removeVarTitle:`Remove variable`,required:`required`,multiline:`multiline`,enumPlaceholder:`enum: a, b, c`,savePrompt:`Save prompt`,saveFailed:`Could not save the prompt.`,titleContentRequired:`Title and content are required.`,toggleFavoriteTitle:`Toggle favorite`,selectOption:`— select —`,fillMissing:`Fill: {{missing}}`,insertIntoChat:`Insert into chat`,selectPromptHint:`Select a prompt to preview and insert.`},Ce={scopeProject:`Project`,scopeGlobal:`Global`,scopeBundled:`Bundled`,timeoutError:`Request timed out. Please try again.`,updateFailed:`Update failed`,saveFailed:`Save failed`,uninstallFailed:`Uninstall failed`,noSkillSelected:`No skill selected`,selectSkillHint:`Select a skill from the sidebar to view its documentation`,goToChat:`Go to chat`,openSourceRepo:`Open source repo`,copySourceUrl:`Copy source URL`,updatedLabel:`↑ Updated: {{list}}`,upToDateLabel:`— Up to date: {{list}}`,errorsLabel:`✗ {{list}}`,checkUpdatesTitle:`Check for updates`,exportTitle:`Export skill as .md`,editTitle:`Edit skill`,uninstallTitle:`Uninstall skill`,closeTitle:`Close and go to chat`,backTitle:`Go back`,forwardTitle:`Go forward`,relatedFiles:`Related Files`,references:`References`,goToSkillTitle:`Go to {{name}}`,loadingContent:`Loading skill content…`,editingLabel:`Editing {{name}}`,editStats:`{{lines}} lines · {{words}} words · {{chars}} chars`,charsWarningFmt:`⚠ {{used}} MB / {{limit}} MB`,draftSaved:`Draft saved`,draftRestored:`Draft restored`,discardDraft:`Discard draft`,splitViewTitle:`Split view`,hidePreviewTitle:`Hide preview`,contentPlaceholder:`Skill content (markdown)...`,loadFailed:`Failed to load skill content`,noContent:`No skill content available`,uninstallSkillHeading:`Uninstall Skill`,uninstallConfirm:`Uninstall {{name}}?`,uninstallRemovePath:`This will remove the skill from {{path}} and cannot be undone.`,uninstallAction:`Uninstall`},we={sessionStats:`Session Stats`,clients:`Clients`,input:`Input`,output:`Output`,cost:`Cost`,agentsSuffix:`agents`,upPrefix:`up {{time}}`,webuiClient:`WebUI Client`,disconnected:`Disconnected`,connected:`Connected`,tuiClient:`TUI Client`,terminal:`Terminal`,repl:`REPL`,coordinator:`COORDINATOR`,fleetSummary:`Fleet summary`,toolCallsLabel:`Tool calls`,tokensLabel:`Tokens`,coordinatingFleet:`Coordinating fleet`,donePrefix:`✓ done ·`,failedPrefix:`✕ failed ·`,seenPrefix:`seen {{time}}`,availableDesk:`Available desk`,mailboxHub:`Mailbox Hub`,unreadSuffix_one:`{{count}} unread`,unreadSuffix_other:`{{count}} unread`,allClear:`All clear`,total:`Total`,unreadLabel:`Unread`,liveActivity:`Live activity`,waitingActivity:`Waiting for activity…`,now:`now`,fleetHq:`WrongStack Fleet HQ`,live:`LIVE`,legendStatus:`Status`,legendActive:`Active`,legendIdle:`Idle`,legendError:`Error`,legendConnections:`Connections`,legendMail:`Mail`,legendTask:`Task`,legendStatusConn:`Status`,arrange:`Arrange`,arrangeTitle:`Arrange nodes to fit the available canvas`,feed:`Feed`,feedTitle:`Toggle the live activity feed`,broadcast:`Broadcast`,broadcastTitle:`Broadcast a message to every live session in this project`,broadcastToAll:`Broadcast to all sessions`,broadcastPlaceholder:`Message every live agent in this project…`,broadcastSendHint:`⌘/Ctrl+Enter to send`,openFullView:`Open full operation view`,rowStatus:`Status`,rowModel:`Model`,rowTool:`Tool`,rowIterations:`Iterations`,rowToolCalls:`Tool calls`,rowTokensIn:`Tokens in`,rowTokensOut:`Tokens out`,rowTokensTotal:`Tokens total`,rowContext:`Context`,rowCost:`Cost`,rowLastSeen:`Last seen`,rowSurface:`Surface`,rowBranch:`Branch`,rowPid:`PID`,rowDir:`Dir`,rowAgents:`Agents`,rowUptime:`Uptime`,rowConnections:`Connections`,rowTotalMessages:`Total messages`,rowUnread:`Unread`,recent:`Recent`,noSubject:`(no subject)`,fullOperationStream:`Full operation stream`,closeEsc:`Close (Esc)`,idleDesk:`Idle desk`,fleetHqLabel:`Fleet HQ`,clientsSuffix_one:`{{count}} client`,clientsSuffix_other:`{{count}} clients`,taskFallback:`task`,controlLabel:`control`},Te={installTitle:`Install skill`,createTitle:`Create skill`,exportTitle:`Export all skills as .zip`,checkUpdatesTitle:`Check for updates (all skills)`,searchPlaceholder:`Search skills…`,loading:`Loading…`,noSkills:`No skills installed`,noMatch:`No skills match filter`,noDescription:`No description`,scopeForeign:`Foreign`,installHeading:`Install Skill`,installHint:`Enter a GitHub repository reference (owner/repo) or full URL.`,installPlaceholder:`e.g. wrongstack/skill-name or https://github.com/owner/repo`,installScope:`Install scope:`,installBtn:`Install`,installedMsg:`Installed: {{names}}`,installFailed:`Installation failed`,createHeading:`Create Skill`,createHint:`Scaffold a new skill. The first line is the trigger; additional lines form the description.`,nameLabel:`Name`,namePlaceholder:`e.g. my-new-skill`,descLabel:`Description / Trigger`,descPlaceholder:`Use this skill when <trigger situation>.
5
+ Triggers: user says "keyword", "another".`,saveIn:`Save in:`,createBtn:`Create Skill`,createdMsg:`Created: {{name}}`,createFailed:`Creation failed`},Ee={noEvents:`No events yet.`},De={pickHint:`Pick a kit — the agent will adhere to it.`,gallery:`Gallery`,galleryTitle:`Open live preview gallery`,stackTitle:`Target stack`,loading:`Loading kits…`,notFound:`No design kits found.`,bestFor:`Best for:`,light:`Light`,dark:`Dark`,tune:`Tune`,font:`Font`,set:`Set`,spaceGrotesk:`Space Grotesk…`,aaHeading:`Aa Heading`,theQuickBrownFoxJumpsOver:`The quick brown fox jumps over the lazy dog.`,primary:`Primary`,ghost:`Ghost`,badge:`Badge`,inputField:`Input field…`,radius:`Radius`,density:`Density`,motion:`Motion`},Oe={detached:`(detached)`,count_one:`{{count}} worktree`,count_other:`{{count}} worktrees`,baseSuffix:` · base {{base}}`,baseLabel:`base`,cleanOrphans:`Clean orphans`,cleanOrphansTitle:`Remove all orphaned worktrees`,liveBusyTitle:`A run is live — stop it first`,rescanTitle:`Rescan`,removed_one:`Removed {{count}} worktree.`,removed_other:`Removed {{count}} worktrees.`,failed:`Failed`,mergedIntoBase:`Merged {{branch}} into base.`,conflictMerge:`Conflict merging {{branch}}: {{files}}`,seeGit:`see git`,mergeFailed:`Merge failed: {{reason}}`,unknownReason:`unknown`,mergeConfirmTitle:`Merge {{branch}} into {{base}}?`,mergeConfirmMsg:`Squash-merges this branch onto the base branch. Aborts cleanly if it conflicts.`,mergeAction:`Merge`,removeConfirmTitle:`Remove {{branch}}?`,removeConfirmMsg:`Force-removes the worktree checkout and deletes its branch. Un-merged work is discarded.`,empty:`No worktrees.`,emptyHint:`SDD / Goal runs create isolated worktrees here. Orphans from crashed runs show up too.`,actOpenTerm:`Open in terminal`,actOpenFolder:`Open folder`,actViewChanges:`View changes`,actMerge:`Merge to base`,actRemove:`Remove / discard`,live:`live`,noUncommitted:`No uncommitted changes`,commitsAhead_one:`{{count}} commit ahead`,commitsAhead_other:`{{count}} commits ahead`,more:`…{{count}} more`},ke={heading:`Office Map`,headingHint:`Visualize your fleet as an office floor plan with live agent status.`,statAgents:`Agents`,statMail:`Mail`,unreadSuffix:` unread`,sectionView:`View`,sectionDisplay:`Display`,sectionBackground:`Background`,sectionRecent:`Recent Activity`,eventsTrackedSuffix:` events tracked`,recentHint:`Mail sends, agent spawns, and status changes appear here.`,sectionShortcuts:`Shortcuts`,sectionLegend:`Legend`,hudLabel:`HUD`,hudDesc:`Show real-time session stats overlay`,hudToggle:`Toggle HUD`,minimapLabel:`Minimap`,minimapDesc:`Show the overview minimap`,minimapToggle:`Toggle minimap`,controlsLabel:`Controls`,controlsDesc:`Show zoom and fit controls`,controlsToggle:`Toggle controls`,animateLabel:`Animate edges`,animateDesc:`Animate flow on active connections`,animateToggle:`Toggle edge animation`,legendLabel:`Show legend`,legendDesc:`Display status and connection legend`,legendToggle:`Toggle legend`,feedLabel:`Live feed`,feedDesc:`Bottom strip of recent cross-process activity`,feedToggle:`Toggle live feed`,fitView:`Fit view`,zoomIn:`Zoom in`,zoomOut:`Zoom out`,resetZoom:`Reset zoom`,legendActive:`Active (running)`,legendIdle:`Idle`,legendError:`Error`,legendOffline:`Offline`,bg:{dots:`Dots`,lines:`Lines`,cross:`Cross`,none:`None`}},Ae={liveProjectOffice:`Live project office`,agents:`agents`,working:`working`,toolCalls:`tool calls`,office:`Office`,topology:`Topology`,officeDescription:`Live agent desks and work`,topologyDescription:`Clients, agents and connections`,team:`Team`,liveDesk:`Live desk & incoming work`,lastActions:`Recent work`,leadAgent:`Lead agent`,agent:`Agent`,callsCount:`{{count}} calls`,recent:`Recent`,noCalls:`No completed calls yet`,telemetryReconnect:`Reconnect this terminal to start tool history`,thinking:`Thinking`,waiting:`Waiting for work`,preparing:`Preparing the next action…`,deskReady:`Desk is ready`,toolCall:`Tool call`,execution:`Execution`,started:`Started`,duration:`Duration`,session:`Session`,target:`Target`,resultSize:`Result size`,lines:`lines`,bytes:`bytes`,tokens:`tokens`,input:`Input`,outputPreview:`Output preview`,readyTitle:`The office is ready`,readyBody:`Agents will take a desk as soon as they join this project.`,liveEvent:`live event stream`,connectedSessions_one:`{{count}} connected session`,connectedSessions_other:`{{count}} connected sessions`,detailHint:`click any action for exact input and result details`,officeBriefing:`Office briefing`,leaderPrompt:`Leader's latest prompt`,activeInstruction:`Active instruction`,telemetryWaiting:`Reconnect this terminal to receive live instructions`,syncWaiting:`waiting for sync`,todoTelemetryWaiting:`Reconnect this terminal to receive the live todo list`,taskNotReported:`Working, but no task description was reported`,noPrompt:`No prompt received in this session yet`,activeTodos:`Active todos`,todoProgress:`{{done}}/{{total}} done`,allTodosDone:`All todos completed`,noActiveTodos:`No active todos yet`,moreTodos:`+{{count}} more`,currentTask:`Current task`,task:`Task`,promptReceived:`Received`,todos:`Todos`,todoStatus:{pending:`Pending`,in_progress:`In progress`,completed:`Completed`},breakRoom:`Break room`,onBreak:`{{count}} on break`,desksEmpty:`Everyone is on break — the desks are ready for the next task`,files:`FILES`,read:`READ`,write:`WRITE`,edit:`EDIT`,term:`TERM`,live:`LIVE`,uniqueFilesTouched:`Unique files touched`,fileReads:`File reads`,filesWritten:`Files written`,filesEdited:`Files edited`,linesAddedAndRemoved:`Lines added and removed`,terminalCommands:`Terminal commands`,incomingAndOutgoingMail:`Incoming and outgoing mail`,sessionActivityTotals:`Session activity totals`,closeToolDetails:`Close tool details`,closeDetails:`Close details`,closeMailDetails:`Close mail details`,closeTaskDetails:`Close task details`,closeOfficeBriefing:`Close office briefing`,priority:`Priority`,route:`Route`},je={tabProject:`SDD Project`,tabBoard:`Live SDD Board`,tabSpecs:`Specifications`},Me={label:`Side panel`},Ne={deleteTitle:`Delete this memory?`,backToList:`Back to memory list`,copyId:`Copy memory ID`,deletedMemory:`Deleted memory`,anchorCursorHint:`Cursor line range matches this memory's anchor`,statusDeleted:`deleted`,statusSuperseded:`superseded`,restoreTitle:`Restore this memory to active status`,supersededJumpTitle:`This version is superseded — jump to the active version`,acceptSuggestionTitle:`Accept hygiene's deletion suggestion — memory will be forgotten`,rejectSuggestionTitle:`Reject the suggestion — memory stays as-is and may be re-suggested later`,updateTitle:`Update the memory's content — versioning creates a new active record`,promoteTitle:"Promote to `permanent` — hygiene will never surface this again",openRecordTitle:`Open the full record in MemoryManager`,fileDrawerAria:`File memory drawer`,requeryTitle:`Re-query for this file`,closeDrawerAria:`Close drawer`,closeDrawerTitle:`Close memory drawer`,showRecoverable:`Show recoverable (deleted)`,cursorBoostTitle:`Cursor boost`,fileScopedTitle:`File-scoped`,mentionedInTitle:`Mentioned in`,editorKnowledge:`Knowledge`,editorContentPlaceholder:`Example: WebUI state is owned by Zustand stores; server messages update those stores through singleton WebSocket handlers.`,editorImportance:`Importance`,editorConfidence:`Confidence`,editorFreshness:`Freshness`,editorAnchors:`Anchors`,editorSymbolPlaceholder:`Symbol name`,editorRelationships:`Relationships`,searchAria:`Search memories`,searchPlaceholder:`Search content, IDs, tags, anchors…`,clearSearchAria:`Clear search`,audienceFilterAria:`Filter audience-scoped only`,audienceFilterTitle:`Show only audience-scoped memories`,clearFiltersAria:`Clear all filters`,clearFiltersTitle:`Clear all filters`,allStatuses:`All statuses`,allKinds:`All kinds`,tagsLabel:`Tags`,popularTags:`Popular tags`,graphAria:`Memory relationship graph`,graphFullscreenAria:`Open full screen graph`,clearTracesTitle:`Clear all traces`,closePanelTitle:`Close panel`,traceMatched:`matched`,traceInjected:`injected`,traceFiltered:`filtered`,traceActive:`active`,traceExited:`exited`,traceScore:`score`,traceError:`error`,lifecycleAria:`Memory lifecycle live ledger`,listAria:`Memories`,emptyTitle:`Your project's long-term context`,emptyVerifiedAnchors:`Verified anchors`,emptyTypedRelations:`Typed relations`,emptyAgentRecall:`Agent recall`,lensesAria:`SAGE memory lenses`,loadingSage:`Loading SAGE`,loadingAudience:`Loading audience memories`,storeUnavailable:`Memory store unavailable`,backToChat:`Back to chat`,sageHeading:`SAGE`,refreshAria:`Refresh memories`,tabMemories:`Memories`,tabActive:`Active`,tabNeedsReview:`Needs review`,tabGraphEdges:`Graph edges`,libraryAria:`Memory library`,viewAria:`Memory view`,detailAria:`Memory detail`,fileForDrawerAria:`File for memory drawer`,cursorLabel:`cursor`,reviewLabel:`review`,hygieneReviewTitle:`Hygiene review: {{reason}} ({{days}}d old)`,updatedSuffix:`updated {{date}}`,actionRecover:`Recover`,actionGoToActive:`Go to active`,actionAcceptDeletion:`Accept Deletion`,actionKeep:`Keep`,actionUpdate:`Update`,actionMarkPermanent:`Mark as Permanent`,actionShowFull:`Show full`,itemLabel:`memories`,noFile:`(no file)`,memoriesCount_one:`{{count}} memory`,memoriesCount_other:`{{count}} memories`,pendingReviewCount_one:`{{count}} pending review`,pendingReviewCount_other:`{{count}} pending reviews`,supersededCount:`{{count}} superseded`,linesRange:`lines {{start}}–{{end}}`,emptyOpenFile:`Open a file to see its memories.`,loadingMemories:`Loading memories…`,errorPrefix:`Error: {{message}}`,emptyNoMemories:`No memories attached to {{file}} yet.`,pendingAccepting:`accepting…`,pendingKeeping:`keeping…`,pendingUpdating:`updating…`,pendingMarking:`marking…`,pendingRecovering:`recovering…`,deletedNeverPolicy:`This record is audit-only and carries an absolute ban: it can never enter LLM context.`,deletedEligiblePolicy:`The record is inactive and cannot be edited, but remains eligible as historical evidence when retrieval finds it relevant.`,deletingLabel:`Deleting…`,actionDeleteMemory:`Delete memory`,copiedNotice:`Memory ID copied.`,revisionSuffix:`revision {{n}}`,memoryRelationships:`Memory relationships`,captureMemory:`Capture a memory`,editMemory:`Edit memory`,editorCreateHint:`Add durable knowledge with retrieval metadata.`,editorEditHint:`Update content without losing provenance.`,createMemory:`Create memory`,saveChanges:`Save changes`,addAnchor:`Add anchor`,noAnchors:`No anchors yet — add one to improve retrieval precision`,loadingGraph:`loading real graph…`,graphStats:`{{nodes}} nodes · {{edges}} edges`,lifecycleHeading:`Memory lifecycle`,statusWaiting:`waiting`,statusLive:`live · {{count}}/100`,noMatching:`No matching memories`,buildGraph:`Build your memory graph`,clearFilters:`Clear filters`,createFirst:`Create first memory`,captureButton:`Capture memory`,memoryCaptured:`Memory captured.`,memoryUpdated:`Memory updated.`,liveStore:`live store`,reconnecting:`reconnecting`,newMemory:`New memory`,hideFileDrawer:`Hide file memory drawer`,showFileDrawer:`Show file memory drawer`,hideDrawer:`Hide drawer`,showDrawer:`Show drawer`,editorCharCount:`{{count}} chars`,editorContentLabel:`Memory content`,editorKind:`Kind`,editorScope:`Scope`,editorLifecycleStatus:`Lifecycle status`,editorSupersedes:`Supersedes`,editorContradicts:`Contradicts`,filterByStatus:`Filter by status`,filterByKind:`Filter by kind`,graphHeading:`Relationship map`,graphHeadingFull:`Relationship map — {{id}}`,graphOpenFullscreen:`Open full screen`,projectKnowledge:`project knowledge`,sageSubtitle:`Inspect, connect, curate, and retire durable context used across agent sessions.`,emptyBody:`Select a memory to inspect its metadata and relationship graph, or capture knowledge that future agents should retrieve automatically.`,tabDeleted:`Deleted`,fileDrawerLabel:`File drawer`,selectFilePlaceholder:`— select a file —`,memoryCountSummary:`{{shown}} of {{total}} memories`,updatedSortLabel:`updated ↓`,tabAllMemories:`All memories`,tabAllMemoriesHint:`Inspect, curate, retire`,tabAudience:`Audience-scoped`,tabAudienceHint:`Guidance routed to agents`,editorRelationshipsHint:`Reference exact memory IDs. Relationships are validated and graph edges are rebuilt by SAGE.`,editorTaskTypes:`Task types`,createAction:`Create`,mutationTimeout:`{{verb}} timed out. Your draft is still here.`,loadingSageContent:`Loading SAGE content`,injectorActiveInContext:`Active in context`,injectorInjectionHistory:`Injection history`,injectorContextTransitions:`Context transitions`,metaCreated:`Created`,metaUpdated:`Updated`,metaLastAccessed:`Last accessed`,metaLastVerified:`Last verified`,referencedUnavailable:`Referenced memory is unavailable`,emptyFiltered:`Change the filters or clear the search query.`,emptyCapture:`Capture durable facts, decisions, conventions, and file-bound notes for every agent.`,memoryUnavailable:`Memory is unavailable or has been removed.`,staleConflicts:`stale + conflicts`},Pe={enableLayer:`Enable this boundary layer`,outsideScope:`Outside scope`,askPermission:`Ask permission`,alwaysBlock:`Always block`,allow:`Allow`,allowSelectors:`Allow selectors`,denySelectors:`Deny selectors`,crossPathSelectors:`Shell “Allow” is opaque and can cross path selectors.`,removeLayer:`Remove layer`,taskInspector:`Task inspector`,task:`Task`,dispatched:`Dispatched`,collapseDetails:`Collapse task details`,taskBoundary:`Task boundary`,title:`Title`,managedStage:`Managed stage`,status:`Status`,priority:`Priority`,type:`Type`,labelsCommaSeparated:`Labels (comma separated)`,dueDatePlaceholder:`Due date (ISO or YYYY-MM-DD)`,estimatedHours:`Estimated hours`,actualHours:`Actual hours`,selectBlockingTasks:`Select blocking tasks…`,selectSequentialChain:`Add tasks to a sequential chain…`,enforceChainOrder:`Enforce chain order as dependencies`,assignmentReason:`Change / assignment reason (persisted to activity)`,managedLifecycle:`Managed lifecycle transition`,kanbanAgentTransition:`Kanban Agent transition`,completedAction:`Completed action / reviewer action`,progressComment:`Truthful progress comment (required)`,evidenceUrl:`Evidence attachment URL`,source:`Source`,taskId:`Task ID`,run:`Run`,column:`Column`,primaryModelSource:`Primary model source`,selectProviderModel:`Select exact provider / model…`,fallbackProfile:`Fallback profile (first model is primary)`,selectProfile:`Select configured profile…`,fallbackModels:`Fallback models`,addFallbackModel:`Add fallback model…`,role:`Role`,selectRole:`Select a role…`,assignSkills:`Assign required skills…`,restrictTools:`Restrict to specific tools…`,agentNameOptional:`Agent name (optional)`,retryPolicy:`Retry policy`,maxAttempts:`Max attempts`,costCeilingUsd:`Cost ceiling USD`,grantCapability:`Grant a capability…`,targetBoard:`Target board`,boardPresence:`Board presence`,liveBoardUsers:`Live board users`,kanbanAgent:`Kanban Agent`,watchThisBoard:`Watch this board`,supervisorEngine:`Supervisor engine`,kanbanAgentModelSource:`Kanban Agent model source`,supervisorSkills:`Supervisor skills`,forceLoadSkills:`Force-load agentic skills…`,extraFallbackModels:`Extra fallback models`,optionalFallbacks:`Optional ordered fallbacks…`,queueHealth:`Queue health`,claimableTasks:`Claimable tasks`,runningAssignments:`Running assignments`,inReview:`In review`,manuallyBlocked:`Manually blocked`,failedTasks:`Failed tasks`,blockedByDeps:`Ready/pending tasks blocked by dependencies`,expiredLeases:`Expired lease assignments`,healthy:`healthy`,costCeilingSum:`Sum of costCeilingUsd for running/queued tasks`,liveRunSteer:`Live run — steer it from here`,openLiveRun:`Open the live run view (SDD Hub)`,runAsLiveJob:`Run this board as a live agent job:`,startAsGoal:`Start as Goal`,startAsSdd:`Start as SDD`,runControls:`Run controls`,workerModel:`Worker model`,setModelForTask:`Set model for this task…`,newWorkerName:`New worker name`,duration:`Duration`,liveRun:`Live run`,lastResult:`Last result`,definitionOfDone:`Definition of Done`,failingChecks:`Failing checks`,evidenceMissing:`Evidence missing (agent/council checks without backing refs)`,needsDecomposition:`Needs decomposition`,decompositionPending:`Decomposition proposals awaiting approval`,noOutstanding:`No outstanding verification or decomposition issues on this board.`,kanban:`Kanban`,newBoard:`New board`,createBoard:`Create board`,deleteTask:`Delete task`,runFailed:`run failed`,splitPendingApproval:`split pending approval`,newTask:`New task`,addTask:`Add task`,newColumn:`New column`,addColumn:`Add column`,duplicateBoard:`Duplicate board`,deleteBoard:`Delete board`,boardBoundary:`Board boundary`,noBoardSelected:`No kanban board selected.`,expandDetails:`Expand task details`,elapsed:`Elapsed`,assigned:`Assigned`,configuredAgentRoute:`the configured agent route`,subagent:`Subagent`,checkedAgo:`checked {{ago}} ago`,notChecked:`not checked`,auditInterval:`Audit interval (seconds)`,statusReady:`ready`,statusRunning:`running`,statusReview:`review`,statusBlocked:`blocked`,statusFailed:`failed`,statusBlockedByDeps:`blocked by deps`,statusStale:`stale`,runningCost:"~${{cost}} running cost",actionPause:`Pause`,actionResume:`Resume`,actionRetryFailed:`Retry failed`,actionStop:`Stop`,actionReassign:`Reassign`,actionRunNow:`Run now`,deleteTaskAria:`Delete task: {{title}}`,activityNoteTemplate:`{{action}} from WebUI to {{target}}.`},Fe={heading:`Cron Jobs`,subtitle:`Scheduled recurring tasks managed by the cron plugin.`,statusDisabled:`Disabled`,statusOverdue:`Overdue`,statusActive:`Active`,jobCount_one:`{{count}} job`,jobCount_other:`{{count}} jobs`,enabledCount:`{{count}} enabled`,overdueCount:`{{count}} overdue`,totalRuns:`{{count}} total runs`,maxConcurrent:`max {{count}} concurrent`,emptyTitle:`No cron jobs scheduled.`,emptyUse:`Use`,emptyToAdd:`to add one.`,thStatus:`Status`,thName:`Name`,thInterval:`Interval`,thRuns:`Runs`,thNextRun:`Next Run`,thLastRun:`Last Run`,thAction:`Action`,lastFiredAtTitle:`Last fired at {{time}}`,footerUse:`Use`,footerToAdd:`to add,`,footerToRemove:`to remove.`},Ie={refreshRosterData:`Refresh roster data`,liveEmpty:`Agents appear here when subagents spawn`,fleetInspector:`Fleet Inspector`,openAgentsPanel:`Open Agents panel`,toolCalls:`Tool Calls`,running:`Running`,projectAgents:`Project Agents`,createOrCloneTitle:`Create or Clone Project Agent`,createOrCloneHint:`Inherit any roster agent as a template, then develop an independent identity, runtime policy and learned history.`,cloneFromRole:`Clone from roster role`,cloneHint:`Prompt, tools, skills and defaults are inherited. Learning and later edits remain isolated to the new agent.`,displayName:`Display name`,descriptionPlaceholder:`Own X, Y and Z workflows for this project and verify their results.`,creating:`Creating…`,noCustomizations:`No customizations yet`,selectAgentEmpty:`Select an agent to edit customizations`,saving:`Saving…`,saveFailed:`Save failed`,failed:`Failed`,learningResumed:`Automatic learning resumed`,optimizationEmptyToast:`Optimization produced an empty result. Try again.`,noActiveModelToast:`No active model on server. Optimization sent to the chat agent.`,learningsEmpty:`Learning entries appear when agents capture output`,allRosterAgents:`All Roster Agents`,optimizing:`Optimizing…`,paused:`paused`,selectLearningAgent:`Select an agent to view learning details`,learningOn:`Learning on`,lastCapture:`Last Capture`,lifetimeCaptures:`Lifetime Captures`,learningsLimitExceeded:`Learned data exceeds soft limit ({{bytes}}B / 8,192B). Optimize to synthesize raw entries into a consolidated document and reduce context volume.`,newPending:`new pending`,viewAction:`View`,applying:`Applying…`,searchPlaceholder:`Search agents by name, role, or description…`,maxIterations:`Max Iterations`,maxToolCalls:`Max Tool Calls`,projectCustomizations:`Project Customizations`,learnedEntries:`learned entries`,teachFailed:`Teach failed`,selectRoleEmpty:`Select a role to inspect or edit`,captureLearned:`Capture learned`,teachThisAgent:`Teach this agent`,teachPlaceholder:`Describe what you want this agent to do better… e.g. 'This agent should always verify versions from npm before recommending'`,heading:`Agent Roster`,headerSummary:`{{customized}} customized · {{entries}} learned entries`,tabLive:`Live Fleet`,tabCatalog:`Roster Catalog`,tabLearning:`Self-Learning`,tabCustomize:`Customization`,learning:`learning`,learningPaused:`Learning paused`,autoLearningPaused:`Automatic learning paused`,toolsCount_one:`{{count}} tool`,toolsCount_other:`{{count}} tools`,maxItShort:`{{value}} max it`,customizedBadge:`Customized`,needsSummary:`⚠ Needs summary`,timeout:`Timeout`,learnedEntriesCount_one:`{{count}} learned entry`,learnedEntriesCount_other:`{{count}} learned entries`,sessionCapturesCount_one:`{{count}} session capture`,sessionCapturesCount_other:`{{count}} session captures`,noAgentsMatch:`No agents match "{{query}}"`,footerRosterRoles_one:`roster role`,footerRosterRoles_other:`roster roles`,footerCustomized:`customized`,footerTotalLearned_one:`total learned entry`,footerTotalLearned_other:`total learned entries`,clone:`+ Clone`,abc:`ABC`,abcGeneratedFromName:`abc (generated from name)`,roleIdOptional:`Role id (optional)`,purpose:`Purpose`,taskTypesCommaOrOnePer:`Task types (comma or one per line)`,cancel:`Cancel`,selectAnAgentToEditCustomizations:`Select an agent to edit customizations`,llmImprove:`LLM Improve`,reset:`Reset`,editIdentityMd:`Edit identity.md`,editLearnedMd:`Edit learned.md`,editConfigJson:`Edit config.json`,runtimePolicy:`Runtime policy`,retry:`Retry`,noSelfLearningDataYet:`No self-learning data yet`,review:`review →`,selectAnAgentToViewLearning:`Select an agent to view learning details`,entries:`Entries`,size:`Size`,optimizeLearnings:`Optimize Learnings`,keep:`Keep`,drop:`Drop`,describeACommandPatternOrBehavior:`Describe a command, pattern, or behavior you want this agent to remember.`,eGAlwaysUsePnpmForThisProject:`e.g. Always use pnpm for this project`,teach:`Teach`,noActiveFleetAgents:`No active fleet agents`,clear:`Clear`,agentsTotal:`agents total`,leader:`Leader`,iterations:`Iterations`,cost:`Cost`,context:`Context`,contextWindow:`Context Window`,error:`Error`,filterAll:`All ({{count}})`,filterRunning:`Running ({{count}})`,filterDone:`Done ({{count}})`,filterFailed:`Failed ({{count}})`,optimizeAll:`Optimize All ({{count}})`,policyUpdateFailed:`Policy update failed`,noRawEntries:`No raw entries to optimize yet.`,optimizedOk:`Optimized. Consolidated knowledge updated.`,emptySynthesis:`The model returned an empty result. Nothing was changed — try again.`,consolidatedWithModel:`Learnings consolidated with {{model}}.`,consolidatedPlain:`Learnings consolidated.`,resetConfirm:`Reset all project-specific data for agent "{{role}}"?`,loadCustomizationFailed:`Failed to load customization`,loadRuntimePolicyFailed:`Failed to load runtime policy`,runtimePolicySaveFailed:`Runtime policy save failed`,llmImprovementFailed:`LLM improvement failed`,agentCreationFailed:`Agent creation failed`,noActiveModelMsg:`No active model on server — optimization sent to chat agent instead.`,optimizationFailed:`Optimization failed`,bulkOptimizationFailed:`Bulk optimization failed`,taskTypesPlaceholder:`X workflow
6
+ Y analysis
7
+ Z verification`},Le={generic:{name:`Generic Project Agent`,summary:`Flexible template that can be cloned into independently learning project roles.`},"audit-log":{name:`Audit Log`,summary:`Analyzes session logs, event streams, and system traces.`},"bug-hunter":{name:`Bug Hunter`,summary:`Scans code for bugs, code smells, and anti-patterns.`},"refactor-planner":{name:`Refactor Planner`,summary:`Analyzes code structure and produces phased refactoring plans.`},"security-scanner":{name:`Security Scanner`,summary:`Scans code, configs, and dependencies for security issues.`},critic:{name:`Critic`,summary:`Evaluates decisions, plans, and implementations.`},"shadow-agent":{name:`Shadow Agent`,summary:`Background monitoring agent that watches fleet health.`},executor:{name:`Executor`,summary:`General-purpose task executor for delegated work.`},chimera:{name:`Chimera`,summary:`Post-session code quality review of changed files.`},researcher:{name:`Researcher`,summary:`Web research and data gathering specialist.`},"tech-stack":{name:`Tech Stack Validator`,summary:`Validates package/library/framework choices.`},orchestrator:{name:`Orchestrator`,summary:`Coordinates multi-agent task execution.`},supervisor:{name:`Supervisor`,summary:`Oversees subagent execution and handles escalations.`},"quality-gate":{name:`Quality Gate`,summary:`Enforces quality gates on implementations.`},architect:{name:`Architect`,summary:`Makes design and architecture decisions.`},"prompt-engineer":{name:`Prompt Engineer`,summary:`Designs and optimizes system prompts.`},mnemosyne:{name:`Mnemosyne`,summary:`Memory curator — reviews and maintains SAGE integrity.`},autophase:{name:`AutoPhase`,summary:`Manages multi-phase autonomous task execution.`}},Re={heading:`Custom Roster`,loading:`Loading custom roster…`,loadFailed:`Failed to load roster`,invalidJson:`Invalid JSON`,noImprovement:`No improvement suggestion generated.`,improveFailed:`LLM improve failed`,behaviorSaved:`Behavior saved to learned.md`,saveFailedServer:`Save failed — see server logs`,emptyTitle:`No Custom Roster Agents`,emptyBody:`Project-custom agents appear here when you create or edit files under`,createExecutorIdentity:`+ Create executor identity`,entries:`Entries`,size:`Size`,sessionCaptures:`Session Captures`,editIdentity:`Edit identity.md`,editLearned:`Edit learned.md`,editConfig:`Edit config.json`,reviewEntries:`Review entries ({{count}})`,reviewLearnedEntries:`Review learned entries ({{kept}}/{{total}} kept)`,applySelection:`Apply selection`,keep:`✓ Keep`,drop:`✗ Drop`,identityPlaceholder:`# Project identity for {{role}}
8
+
9
+ Describe this agent's role in the project…`,teachHint:`Describe a command, pattern, or behavior you want this agent to remember. Saved to`,teachInputPlaceholder:`e.g. "Always use pnpm for this project"`,teach:`Teach`,llmImprove:`LLM Improve`,improve:`Improve`,dismiss:`Dismiss`},$={heading:`Task intelligence`,none:`None`,eventsCount_one:`{{count}} event`,eventsCount_other:`{{count}} events`,stagePrefix:`stage:`,legacyStage:`legacy`,priorityPrefix:`priority:`,typePrefix:`type:`,inferredType:`inferred`,whyHere:`Why here:`,unresolvedBlockers_one:`{{count}} unresolved blocker`,unresolvedBlockers_other:`{{count}} unresolved blockers`,ownershipRuntime:`Ownership & runtime`,owner:`Owner`,assignee:`Assignee`,agentId:`Agent ID`,agentNameRole:`Agent name / role`,runStatus:`Run status`,subagent:`Subagent`,runTask:`Run task`,sessionS:`Session(s)`,usersPresence:`Users / presence`,modelRouteFallback:`Model route & fallback`,routingMode:`Routing mode`,primary:`Primary`,provider:`Provider`,model:`Model`,fallbackRoute:`Fallback route`,skills:`Skills`,tools:`Tools`,capabilities:`Capabilities`,executionPolicyOutcome:`Execution policy & outcome`,attempts:`Attempts`,retryPolicy:`Retry policy`,costCeiling:`Cost ceiling`,failuresDone:`Failures / done`,checks:`Checks`,lastFailure:`Last failure`,result:`Result`,timingAuditCoverage:`Timing & audit coverage`,created:`Created`,updated:`Updated`,due:`Due`,dispatched:`Dispatched`,completed:`Completed`,duration:`Duration`,heartbeat:`Heartbeat`,leaseExpires:`Lease expires`,actors:`Actors`,dependenciesChainProvenance:`Dependencies, chain & provenance`,dependencies:`Dependencies`,otherRelations:`Other relations`,chain:`Chain`,originSystem:`Origin system`,originIds:`Origin IDs`,taskId:`Task ID`,boardId:`Board ID`},ze={chat:`Chat`,settings:`Settings`,sageMemory:`SAGE Memory`,agentRoster:`Agent Roster`,contextDashboard:`Context Dashboard`,setup:`Setup`,goal:`Goal`,sddHub:`SDD Hub`,kanban:`Kanban`,sessions:`Sessions`,sessionInspect:`Session Inspect`,chronicle:`Chronicle`,requirementsIntake:`Requirements Intake`,debugDashboard:`Debug Dashboard`,refreshDebug:`Refresh Debug`,editor:`Editor`,changes:`Changes`,mailbox:`Mailbox`,designGallery:`Design Gallery`,skill:`Skill`,officeMap:`Office Map`,analytics:`Analytics`,codemap:`CodeMap`,techstack:`TechStack`,deadcode:`Dead Code Scan`,terminal:`Terminal`,inspector:`Inspector`,workspaceInspector:`Workspace Inspector`,processMonitor:`Process Monitor`,queue:`Queue`,cronJobs:`Cron Jobs`},Be={heading:`Audience Memory`,subheading:`Guidance routed to matching agents`,statMemories:`Memories`,statRoles:`Roles`,statTasks:`Tasks`,statModes:`Modes`,fieldMemory:`Memory`,fieldKind:`Kind`,fieldTaskTypes:`Task types`,selectors:`Audience selectors`,selectorsHint:`Comma-separate multiple values. At least one selector is required.`,scopeRemoved:`Audience scope removed. The memory is now general.`,deleted:`Audience memory deleted.`,copiedAsJson_one:`{{count}} audience memory copied as JSON.`,copiedAsJson_other:`{{count}} audience memories copied as JSON.`,copyFailed:`Failed to copy JSON to the clipboard.`,noValidInJson:`No valid audience-scoped memories were found in the JSON.`,queuedForImport_one:`{{count}} memory queued for import`,queuedForImport_other:`{{count}} memories queued for import`,skippedSuffix_one:`; {{count}} invalid entry was skipped.`,skippedSuffix_other:`; {{count}} invalid entries were skipped.`,clearFilter:`Clear filter`,noMatching:`No matching memories`,noMatchingHint:`Try another role, task, mode, or phrase.`,deleteTitle:`Delete this audience memory?`,deleteBody:`This removes the memory from active use. To keep it as general project guidance, cancel and use the un-scope action instead.`,emptyTitle:`Route guidance to the right agents`,emptyBody:`Scope a memory by role, task type, or operating mode. Matching agents receive it automatically.`,addScoped:`Add scoped memory`,createTitle:`Add audience-scoped memory`,createBody:`This guidance is injected only when an agent matches at least one supplied selector.`,importTitle:`Import audience memories`,importBodyBefore:`Paste the JSON produced here or by`,importBodyAfter:`Entries without a valid audience selector are skipped.`,jsonArray:`JSON array`,importAction:`Import memories`,searchAudienceMemories:`Search audience memories`,clearAudienceMemorySearch:`Clear audience memory search`,refreshAudienceMemories:`Refresh audience memories`,importAudienceMemories:`Import audience memories`,copyAudienceMemoriesAsJson:`Copy audience memories as JSON`,dismissMessage:`Dismiss message`,loadingAudienceMemories:`Loading audience memories`,refresh:`Refresh`,importJson:`Import JSON`,copyJson:`Copy JSON`,makeGeneralMemory:`Make general memory`,delete:`Delete`,searchTextRoleTaskOrMode:`Search text, role, task or mode…`,whatShouldMatchingAgentsRemember:`What should matching agents remember?`,reviewerRefactorPlanner:`reviewer, refactor-planner`,reviewRefactorBugfix:`review, refactor, bugfix`,teachCodeReview:`teach, code-review`},Ve={techstack:`TechStack`,staleGt24h:`stale >24h`,refresh:`Refresh`,analyze:`Analyze`,retry:`Retry`,dependencies:`Dependencies`,outdated:`Outdated`,vulnerable:`Vulnerable`,findings:`Findings`,package:`Package`,installedLatest:`Installed → Latest`,status:`Status`,constraint:`Constraint`,locked:`Locked`,latestStable:`Latest stable`,license:`License`,wanted:`Wanted`,resolvable:`Resolvable`,purl:`PURL`,registryFlags:`Registry flags`,evidence:`Evidence`,noEvidenceRecorded:`No evidence recorded.`,nothingFlaggedRunADeepDive:`Nothing flagged. Run a deep dive to have the model research this package against the web.`,backToDependencyList:`Back to dependency list`,dependencyList:`Dependency list`,dependencyDetail:`Dependency detail`,selectADependencyToSeeIts:`Select a dependency to see its versions, evidence, and findings.`,requiresAManualPackageChoice:`Requires a manual package choice.`,noRemediationNeeded:`No remediation needed.`,noWorkspacesDetected:`No workspaces detected.`,loadingSnapshot:`Loading snapshot…`,noInventoryYet:`No inventory yet`,scanThisProject:`Scan this project`,noFindingsRun:`No findings. Run`,toCheckVersionsAndAdvisoriesAgainst:`to check versions and advisories against upstream registries, then interpret the results.`,offlineReReadManifestsAndLockfiles:`Offline: re-read manifests and lockfiles`,checkRegistriesAndAdvisoriesThenInterpretTheResultsWithTheModel:`Check registries and advisories, then interpret the results with the model`,exportSnapshotAsJson:`Export snapshot as JSON`,cancelJob:`Cancel job`,showOnlyDependenciesThisProjectDeclaresItself:`Show only dependencies this project declares itself`,clearAllFilters:`Clear all filters`,searchByPackageName:`Search by package name…`,searchDependencies:`Search dependencies`,clearSearch:`Clear search`,directOnly:`Direct only`,filterByEcosystem:`Filter by ecosystem`,allEcosystems:`All ecosystems`,filterByStatus:`Filter by status`,allStatuses:`All statuses`,sortDependencies:`Sort dependencies`,sortNeedsAttention:`Sort: needs attention`,sortMostOutOfDate:`Sort: most out of date`,sortName:`Sort: name`,tabDependencies:`Dependencies`,tabFindings:`Findings`,tabWorkspaces:`Workspaces`,tabTrends:`Trends`,tabRemediation:`Remediation`,majorsBehind:`majors behind`,knownAdvisories:`known advisories`},He={current:`Current`,update_available_safe:`Update available`,update_available_breaking:`Major update`,vulnerable:`Vulnerable`,deprecated:`Deprecated`,yanked:`Yanked`,unmaintained_suspected:`Unmaintained?`,blocked_by_constraints:`Blocked`,private_or_unresolved:`Private`,local_path:`Local path`,git_dependency:`Git`,unsupported:`Unsupported`,unknown:`Unknown`},Ue={critical:`Critical`,high:`High`,medium:`Medium`,low:`Low`,info:`Info`},We={none:`No action`,upgrade_patch:`Patch upgrade`,upgrade_minor:`Minor upgrade`,upgrade_major:`Major upgrade`,replace:`Replace`,remove:`Remove`,investigate:`Investigate`},Ge={full:`Full`,partial:`Partial`,partialNote:`limited`,unsupported:`Unsupported`,unsupportedNote:`best-effort`},Ke={codeAtlas:`Code Atlas`,architectureIntelligence:`Architecture intelligence`,codeMapBreadcrumb:`Code map breadcrumb`,back:`Back`,layers:`Layers`,relations:`Relations`,all:`ALL`,keepTheFullTreeShowTheStrongestRelationsAndSelectedNeighbourhood:`Keep the full tree, show the strongest relations and selected neighbourhood`,renderEveryNodeAndRelationInThisScope:`Render every node and relation in this scope`,mappingRelationships:`Mapping relationships`,onceThenReopenThisView:`once, then reopen this view.`,noIndexedNodesAtThisLevel:`No indexed nodes at this level.`,noResolvedRelationsInThisScope:`No resolved relations in this scope`,theUpgradedIndexWillRebuildAnd:`The upgraded index will rebuild and resolve call/import/type links automatically.`,liveOperation:`Live operation`,openSymbolMap:`Open symbol map`,closeActivity:`Close activity`,noActivityRecordedForThisFile:`No activity recorded for this file yet.`,fsVerified:`fs verified`,activeNow:`Active now`,eventStream:`Event stream`,selectANodeOrWaitFor:`Select a node or wait for an agent`,relationsAppearOnSelectionToolCalls:`Relations appear on selection. Tool calls and external filesystem touches stream here live.`,live:`LIVE`,correlated:`~ correlated`,correlatedFromTheOnlyActiveTool:`Correlated from the only active tool`,liveAgentOperations:`Live agent operations`,follow:`Follow`,automaticallyEnterTheFileFunctionUsedByTheNewestVisibleAgent:`Automatically enter the file/function used by the newest visible agent`,agent:`Agent`,allAgents:`ALL AGENTS`,filesystemConfirmed:`Filesystem confirmed`,filterCodemapByAgentAndSession:`Filter CodeMap by agent and session`,incoming:`Incoming`,outgoing:`Outgoing`,clearSelection:`Clear selection`,relationInspector:`Relation inspector`,agentsOnThisNode:`Agents on this node`,noRelationshipsInThisView:`No relationships in this view.`,activity:`Activity`,whoDependsOnThis:`Who depends on this`,whatThisDependsOn:`What this depends on`},qe={codingIntelligence:`Coding Intelligence`,chronicle:`CHRONICLE`,llmAgentToolAndFileEvidence:`LLM, agent, tool and file evidence — connected from decision to code change.`,tokenEconomics:`Token economics`,freshInput:`fresh input`,cacheRead:`cache read`,cacheHit:`cache hit`,estimatedCost:`estimated cost`,modelReliability:`Model reliability`,taskOutcomes:`Task outcomes`,apply:`Apply`,clear:`Clear`,time:`Time`,signal:`Signal`,outcome:`Outcome`,modelAgent:`Model / agent`,resource:`Resource`,evidenceLineage:`Evidence & lineage`,collectorHealthy:`Collector healthy`,lineageTruncatedAtSafetyLimit:`Lineage truncated at safety limit.`,refreshEvidence:`Refresh evidence`,searchEventEvidence:`Search event evidence`,fileOrDirectory:`File or directory`,provider:`Provider`,model:`Model`,session:`Session`,llmRequests:`LLM requests`,agentWork:`Agent work`,toolCalls:`Tool calls`,fileEvidence:`File evidence`,retries:`Retries`,providerP95:`Provider p95`,evidenceHash:`Evidence hash`,sequence:`Sequence`,signalAllSignals:`All signals`,signalLlm:`LLM`,signalAgents:`Agents`,signalTools:`Tools`,signalFiles:`Files`,signalFailures:`Failures`},Je={loadingSessionInspection:`Loading session inspection…`,backToSessions:`Back to sessions`,noSessionSelected:`No session selected`,selectASessionFromTheSessions:`Select a session from the Sessions dashboard or sidebar to inspect it.`,refresh:`Refresh`,filterEvents:`Filter events…`,eventTimeline:`Event timeline`,noEventsMatchTheFilter:`No events match the filter.`,toolBreakdown:`Tool breakdown`,fileChanges:`File changes`,tokens:`Tokens`,messages:`Messages`,iterations:`Iterations`,toolCalls:`Tool calls`,files:`Files`,compactions:`Compactions`,events:`Events`,outcomeCompleted:`Completed`,outcomeError:`Error`,outcomeTimeout:`Timed out`,outcomeAborted:`Aborted`,outcomeUnknown:`Unknown`},Ye={protectedSystemAgentRequiredToolsAnd:`Protected system agent: required tools and capabilities are retained, minimum budgets are enforced, working hours remain advisory, and emergency model recovery stays enabled so core operations cannot be disabled.`,providerAndModelPolicy:`Provider and model policy`,restrictThisAgentToAnExplicit:`Restrict this agent to an explicit model allowlist`,allowedModels:`Allowed models`,orderedFallbackChain:`Ordered fallback chain`,workspaceAndIsolation:`Workspace and isolation`,projectRelativeWorkingDirectory:`Project-relative working directory`,gitWorktreeIsolation:`Git worktree isolation`,automatic:`Automatic`,required:`Required`,off:`Off`,limits:`Limits`,workingHours:`Working hours`,enforce:`Enforce`,advisory:`Advisory`,cancel:`Cancel`,useProjectDefaultModel:`Use project default model`,addAllowedModel:`Add allowed model`,addFallbackModel:`Add fallback model`,packagesWebui:`packages/webui`,europeKiev:`Europe/Kiev`},Xe={riskAuditQuality:`Risk & audit quality`,noDeterministicTaskRisksDetected:`No deterministic task risks detected.`,next:`Next:`,auditScore:`audit {{score}}/100`,criticalCount:`{{count}} critical`,itemLabel:`risk findings`,covEvents:`Events`,covActor:`Actor`,covSession:`Session`,covReasons:`Reasons`,covRoute:`Route`,covOutcome:`Outcome`,cat:{operational:`operational`,audit:`audit`},sev:{critical:`critical`,warning:`warning`,info:`info`},overdueTitle:`Task is overdue`,overdueDetail:`Due date {{dueDate}} has passed while status is {{status}}.`,overdueFix:`Re-plan the due date or record the blocker and owner response.`,missingDependencyTitle:`Dependency references are broken`,missingDependencyDetail_one:`{{count}} dependency task cannot be found.`,missingDependencyDetail_other:`{{count}} dependency tasks cannot be found.`,missingDependencyFix:`Repair or remove the missing dependency IDs before dispatch.`,unresolvedDependencyTitle:`Dependencies are unresolved`,unresolvedDependencyDetail_one:`{{count}} dependency task still blocks execution.`,unresolvedDependencyDetail_other:`{{count}} dependency tasks still block execution.`,unresolvedDependencyFix:`Complete dependencies or explicitly waive them with a decision event.`,assignmentFailedTitle:`Latest agent run failed`,assignmentFailedDetail:`{{reason}}`,assignmentFailedDetailGeneric:`Assignment status is failed.`,assignmentFailedFix:`Review the failed attempt evidence, adjust routing, then retry or block the task.`,retryExhaustedTitle:`Retry budget is exhausted`,retryExhaustedDetail:`{{used}}/{{max}} attempts have been consumed.`,retryExhaustedFix:`Escalate for a new route or explicitly increase the attempt budget.`,leaseExpiredTitle:`Assignment lease has expired`,leaseExpiredDetail:`Lease expired at {{expiresAt}} while run status is {{status}}.`,leaseExpiredFix:`Recover, release, or retry the stale assignment.`,staleHeartbeatTitle:`Agent heartbeat is stale`,staleHeartbeatDetail:`No heartbeat has been recorded since {{since}}.`,staleHeartbeatFix:`Inspect the subagent/run and recover the assignment if it is no longer alive.`,noAssignmentTitle:`In-progress task has no assignment`,noAssignmentDetail:`The task claims active work but has no inspectable agent assignment.`,noAssignmentFix:`Assign an agent or return the task to ready/blocked.`,failedChecksTitle:`Acceptance checks failed`,failedChecksDetail_one:`{{count}} completion check failed.`,failedChecksDetail_other:`{{count}} completion checks failed.`,failedChecksFix:`Resolve or explicitly waive failed acceptance evidence.`,pendingChecksTitle:`Completed task still has pending checks`,pendingChecksDetail_one:`{{count}} acceptance check remains pending.`,pendingChecksDetail_other:`{{count}} acceptance checks remain pending.`,pendingChecksFix:`Move the task back to review or complete the missing checks.`,noEventsTitle:`No durable activity events loaded`,noEventsDetail:`Current state cannot be traced to an append-only task event.`,noEventsFix:`Refresh activity; migrate legacy state or record an observation event.`,noProvenanceTitle:`Creation provenance is missing`,noProvenanceDetail:`The loaded event range does not contain task.created.`,noProvenanceFix:`Load deeper history or record the legacy origin explicitly.`,actorCoverageTitle:`Some mutations have no actor`,actorCoverageDetail:`Actor coverage is {{percent}}%.`,actorCoverageFix:`Ensure every route/tool mutation supplies agent or operator identity.`,sessionCoverageTitle:`Some mutations have no session`,sessionCoverageDetail:`Session coverage is {{percent}}%.`,sessionCoverageFix:`Propagate session identity into all task event contexts.`,reasonCoverageTitle:`Decision rationale is sparse`,reasonCoverageDetail:`Only {{percent}}% of mutations include a reason or outcome.`,reasonCoverageFix:`Use the change-reason and decision/outcome fields for meaningful mutations.`,noRouteTitle:`Execution route is not inspectable`,noRouteDetail:`Assignment has no routing mode, provider, or model.`,noRouteFix:`Reassign with explicit session/fixed/fallback routing metadata.`,missingTerminalEvidenceTitle:`Terminal run has no result or error evidence`,missingTerminalEvidenceDetail:`Assignment ended as {{status}} without an inspectable output.`,missingTerminalEvidenceFix:`Record the final result/error and supporting evidence.`},Ze={requirementsIntake:`Requirements Intake`,collectAndPreserveSoftwareDevelopmentRequests:`Collect and preserve software development requests as structured intake records`,retry:`Retry`,fileANewRequest:`File a new request`,fileANewIntake:`File a new intake`,requestText:`Request text`,storedVerbatimAsTheRecordApos:`Stored verbatim as the record's original request — never rewritten.`,titleOptional:`Title (optional)`,shortDisplayTitle:`Short display title`,type:`Type`,priority:`Priority`,clear:`Clear`,records:`Records`,intakeRecords:`Intake records`,loading:`Loading…`,noIntakeRecordsYetFileThe:`No intake records yet — file the first one above.`,describeTheFeatureBugFixRefactorOrChange:`Describe the feature, bug fix, refactor, or change…`},Qe={verificationReport:`Verification Report`,checkResults:`Check Results`,fileScope:`File Scope`,subTasks:`Sub-Tasks`,expected:`Expected`,actual:`Actual`,total:`Total`,completed:`Completed`,failed:`Failed`,verdictPassed:`Passed`,verdictFailed:`Failed`,verdictIncomplete:`Incomplete`,checkPassed:`Passed`,checkFailed:`Failed`,checkSkipped:`Skipped`,checkError:`Error`,verdictNeedsHuman:`Needs Review`},$e={activityLedger:`Activity ledger`,noActivityMatchesThisFilter:`No activity matches this filter.`,fullEventPayload:`Full event payload`,taskActivity:`Task activity`,copyFilteredActivityJson:`Copy filtered activity JSON`,downloadFullActivityJson:`Download full activity JSON`,searchAgentSessionModelResultField:`Search agent, session, model, result, field…`,copyVisibleTaskActivityJson:`Copy visible task activity JSON`,downloadFullTaskActivityJson:`Download full task activity JSON`,refreshTaskActivity:`Refresh task activity`,searchTaskActivity:`Search task activity`,clearTaskActivitySearch:`Clear task activity search`},et={contextDashboard:`Context Dashboard`,contextPressure:`Context Pressure`,contextComposition:`Context Composition`,thresholdMap:`Threshold Map`,compactionEngine:`Compaction Engine`,perAgentFootprint:`Per-Agent Footprint`,tokenMetrics:`Token Metrics`,session:`Session`,refreshDebugData:`Refresh debug data`,currentPosition:`Current position`,compactTrigger:`Compact trigger`,hardLimit:`Hard limit`,nextTrigger:`Next trigger`,recommendation:`Recommendation`,used:`Used`,free:`Free`,capacity:`Capacity`,model:`Model`,mode:`Mode`,contextMode:`Context mode`,iteration:`Iteration`,uptime:`Uptime`,provider:`Provider`,project:`Project`,fetchingCompositionData:`Fetching composition data...`,noCompositionDataAvailableYetRun:`No composition data available yet. Run an agent iteration to populate.`,toolBreakdown:`Tool breakdown`,strategy:`Strategy`,auto:`auto ✓`,current:`Current`,estRecovery:`Est. recovery`,utilization:`Utilization`,zoneSafe:`Safe`,zoneSafeDesc:`normal operation`,zoneWarning:`Warning`,zoneWarningDesc:`compaction advised`,zoneCritical:`Critical`,zoneCriticalDesc:`compact now`,zoneDanger:`Danger`,zoneDangerDesc:`context nearly full`,systemPrompt:`System Prompt`,tools:`Tools`,messages:`Messages`},tt={webuiServerProcess:`WebUI Server Process`,liveWrongstackProcesses:`Live WrongStack Processes`,surface:`Surface`,memory:`Memory`,growthSignal:`Growth / signal`,workload:`Workload`,hqOfflineQueue:`HQ offline queue`,resourcesHotspot:`Resources / hotspot`,waitingForHeapFlightRecorderSamples:`Waiting for heap flight-recorder samples…`,codebaseIndexServer:`Codebase Index Server`,processRamRss:`Process RAM (RSS)`,v8HeapLimit:`V8 Heap Limit`,serverUptime:`Server Uptime`,connection:`Connection`,indexRamRss:`Index RAM (RSS)`,indexWorkload:`Index Workload`,indexWatcher:`Index Watcher`,oldSpaceCeiling:`Configured old-space ceiling`,sinceProcessStart:`Since process start`},nt={codeTree:`Code tree`,openFileMap:`Open file map`,findPackageFileSymbol:`Find package, file, symbol…`,clearSearch:`Clear search`,noMatchInLoadedBranches:`No match in loaded branches.`,expandAPackageToSearchIts:`Expand a package to search its files.`,clickToFocusDoubleClickTo:`Click to focus · double-click to enter`,branchesStayOpenWhileTheMap:`Branches stay open while the map changes`},rt={recordDecisionOutcome:`Record decision / outcome`,whatWasDecidedAttemptedOrProduced:`What was decided, attempted, or produced?`,optionalEvidenceRationaleCommandLinkOrFailureDetail:`Optional evidence, rationale, command, link, or failure detail…`,taskActivityKind:`Task activity kind`,taskActivityOutcome:`Task activity outcome`,recordTaskDecisionOrOutcome:`Record task decision or outcome`,taskActivityDetails:`Task activity details`},it={europeKiev:`Europe/Kiev`,doNotUseInsideThisWindow:`Do not use inside this window`,useOnlyInsideThisWindow:`Use only inside this window`,applyThisScheduleToTheWhole:`Apply this schedule to the whole provider`,doNotUseDuringSelectedTimes:`Do not use during selected times`,useOnlyDuringSelectedTimes:`Use only during selected times`,addSchedule:`Add schedule`},at={decomposition:`Decomposition`,thisTaskShouldBeSplitBefore:`This task should be split before dispatch:`,approve:`Approve`,reject:`Reject`,approveAmpSplit:`Approve & split`,parent:`Parent`},ot={noTasksOnThisBoardYet:`No tasks on this board yet.`,proposalPending:`proposal pending`,verifyUnverified:`unverified`,verifyVerifying:`verifying…`,verifyVerified:`verified`,verifyFailed:`verification failed`,verifyNeedsReview:`needs review`,verifyIncomplete:`incomplete`},st={providerModelAvailability:`Provider/model availability`,refreshStatus:`Refresh status`,lastError:`Last error:`,reopenHalfOpenProbe:`Reopen (half-open probe)`,clearTracking:`Clear tracking`,wrongstackRoutesAroundActiveSchedulesAnd:`WrongStack routes around active schedules and unhealthy models automatically, then restores recovered routes on their next eligible use. Click an entry for details and manual controls.`},ct={editContextWindow:`Edit context window`,messages:`Messages`,currentIteration:`Current iteration`,chatTranscript:`Chat transcript`,edit:`Edit`,top:`Top`,thinking:`Thinking…`,toolWord:`tool`,runningTool:`Running {{tool}}…`,runningTools:`Running {{count}} tools ({{preview}})…`,writingReply:`Writing reply…`,thinkingNextStep:`Thinking about the next step…`,autoCollapse:`↕️ Auto-collapse`,reasoning:`🧠 Reasoning`,groupTools:`🔧 Group Tools`,compact:`📦 Compact`,providerLimit:`Provider limit {{limit}}`,providerLimitDecreased:`Provider context window decreased from {{previous}} to {{current}} tokens.`},lt={tokenAllocation:`Token Allocation`,toolBreakdown:`Tool Breakdown`,messageBreakdown:`Message Breakdown`,refresh:`Refresh`,toolsRegistered:`Tools registered`},ut={contextWindowEditor:`Context Window Editor`,system:`System`,messages:`Messages`,total:`Total`,loadingContextSnapshot:`Loading context snapshot…`,repairPreviewWillRemove:`Repair preview: will remove`,agentRunningApplyDisabled:`Agent running — apply disabled`,providerLimitDecreased:`Provider context window decreased from {{previous}} to {{current}} tokens. Context recovery now uses the provider limit before the next request.`,clear:`Clear`},dt={descriptionWorkingContext:`Description / working context`,dependencies:`Dependencies`,taskChainSelectionOrder:`Task chain (selection order)`,saveTaskContract:`Save task contract`,fixedProviderModel:`Fixed provider / model`,forceLoadedIntoTheWorker:`· force-loaded into the worker`,blankFullDefaultToolset:`· blank = full default toolset`,advanced:`Advanced`,blankSafeDefaults:`· blank = safe defaults`,assign:`Assign`,dispatch:`Dispatch`,copy:`Copy`,transfer:`Transfer`},ft={writeTheDurableFactOrDecision:`Write the durable fact or decision in complete, searchable language.`,bindKnowledgeToFilesSymbolsPackages:`Bind knowledge to files, symbols, packages, tests, Git paths, or commands.`,audienceOptional:`Audience (Optional)`,targetThisMemoryToSpecificAgent:`Target this memory to specific agent types. Leave empty for general project memory.`,roles:`Roles`,modes:`Modes`,architectureWebuiWorkflow:`architecture, webui, workflow`,memIdMemId:`mem_id, mem_id`,reviewerRefactorPlanner:`reviewer, refactor-planner`,reviewRefactorBugfix:`review, refactor, bugfix`,teachCodeReview:`teach, code-review`},pt={contextMemoryMonitor:`Context Memory Monitor`,exactProviderBoundPresence:`exact provider-bound presence`,noSageHasEnteredThisSession:`No SAGE has entered this session context yet.`,memoryPresence:`Memory presence`,cameWent:`Came / went`},mt={modelId:`model-id`},ht={httpLocalhostCallbackCode:`http://localhost:.../callback?code=…`},gt={baseUrlOptionalEGHttpLocalhost11434V1:`Base URL (optional, e.g. http://localhost:11434/v1)`,anthropic:`Anthropic`,openai:`OpenAI`,openaiCompatible:`OpenAI Compatible`,google:`Google`},_t={url:`URL:`,models:`Models:`,linkedin:`LinkedIn`,telegram:`Telegram`,whatsapp:`WhatsApp`,reddit:`Reddit`,facebook:`Facebook`,email:`Email`},vt={searchChat:`Search chat`,commandPalette:`Command palette`,switchModel:`Switch model`,settings:`Settings`,search:`Search`,command:`Command`,model:`Model`},yt={agentRoster:`Agent roster`},bt={save:`Save`,auditNow:`Audit now`,fixedProviderModel:`Fixed provider / model`,deterministicModeUsesNoProviderModel:`Deterministic mode uses no provider, model, token, or billing. It repairs assignment/status/column drift and recovers expired leases.`},xt={deadCodeScan:`🔍 Dead-Code Scan`,actionPlan:`📋 Action Plan`,totalSymbols:`Total Symbols`,alive:`Alive`,dead:`Dead`},St={tui:`TUI`,webui:`WebUI`,repl:`REPL`,out:`OUT`},Ct={previousPage:`Previous page`,nextPage:`Next page`,previous:`Previous`,next:`Next`},wt={historyFilters:`History filters`},Tt={sessions:`Sessions`,active:`Active`,agents:`Agents`,status:`Status`,runtime:`Runtime`},Et={shadowAgent:`Shadow Agent`,running:`● running`,stopped:`○ stopped`,agentId:`Agent ID:`,theShadowAgentMonitorsAllFleet:`The Shadow Agent monitors all fleet agents, tracks their tasks, and detects anomalies (spike tasks, stuck agents, mailbox loops).`},Dt={verificationRunningChecksAreBeingExecuted:`Verification running — checks are being executed…`,reRunVerification:`Re-run verification`,unverified:`Unverified`,noVerificationReportExistsForThis:`— no verification report exists for this task yet.`,runVerification:`Run verification`},Ot={filterToolsByNameOrOwner:`Filter tools by name or owner…`,toolsList:`Tools list`,params:`Params:`,tools:`Tools`,loadingTools:`Loading tools…`},kt={dismiss:`Dismiss`,run:`Run`,wstackUpdate:`wstack update`,orYourPackageManagerToUpgrade:`(or your package manager) to upgrade.`},At={prioCrit:`Crit`,prioHigh:`High`,prioMed:`Med`,prioLow:`Low`},jt={agent:`Agent`,role:`Role`,modelSource:`Model source`,model:`Model`,attempt:`Attempt`,costCeiling:`Cost ceiling`,fallbackProfile:`Fallback profile`,fallbacks:`Fallbacks`,skills:`Skills`,tools:`Tools`,leaseExpires:`Lease expires`},Mt={skipToContent:`Skip to content`},Nt={fleetIdle:`Fleet idle`},Pt={clearSearch:`Clear search`,memoryAudienceExport:`/memory audience export`},Ft={sourceChanges:`Source changes`,sourceControl:`Source control`},It={selectTabCompleteEnterDispatchEsc:`↑/↓ select · Tab complete · Enter dispatch · Esc dismiss`},Lt={promptLibrary:`Prompt library`},Rt={filter:`Filter…`},zt={chronicleOwnership:`Chronicle ownership`,inlineFallback:`INLINE FALLBACK`},Bt={incomingRelationships:`Incoming relationships`,outgoingRelationships:`Outgoing relationships`},Vt={input1m:`input /1M`,output1m:`output /1M`,cache1m:`cache /1M`},Ht={judgeUsed:`judge used`,panelNotDiverse:`panel not diverse`,veto:`veto`},Ut={boardPolicyRemainsAuthoritativeThisTask:`Board policy remains authoritative. This task policy can only narrow that scope.`,shellOpaqueTools:`Shell / opaque tools`,saveBoundary:`Save boundary`},Wt={addAVerifiableCompletionCheck:`Add a verifiable completion check…`,completionChecks:`Completion checks`},Gt={sageWillMarkTheRecordDeleted:`SAGE will mark the record deleted, remove graph edges, and clean references from related memories. The record remains in the audit trail but cannot be restored from this page.`},Kt={navigateEnterSelectEscClose:`↑/↓ navigate · Enter select · Esc close`},qt={fallbackProfiles:`Fallback Profiles`,noFallbackProfilesConfigured:`No fallback profiles configured.`},Jt={openTheMirroredKanbanBoardSForThisRunOnePerDependencyWave:`Open the mirrored kanban board(s) for this run (one per dependency wave)`},Yt={thinking:`thinking`},Xt={fallback1:`fallback1`},Zt={configureHowSubagentsAndFleetOperations:`Configure how subagents and fleet operations behave.`},Qt={sessionModel:`(session model)`},$t={httpHost3499:`http://host:3499`,clientTokenFromWstackHq:`Client token from wstack --hq`,mcpServers:`MCP Servers`},en={httpsMcpExampleComMcp:`https://mcp.example.com/mcp`,operationalHealth:`Operational health`,failuresTransportProtocolTool:`Failures (transport/protocol/tool)`,callLatencyP50P95:`Call latency p50/p95`,reconnectWakeSleep:`Reconnect / wake / sleep`,callsInFlightPeak:`Calls in flight / peak`},tn={tools:`tools`,reasoning:`reasoning`,vision:`vision`},nn={eGMyLlm:`e.g. my-llm`,eGHttpLocalhost11434V1:`e.g. http://localhost:11434/v1`},rn={executionAttempts:`Execution attempts`,error:`Error:`,result:`Result:`},an={notifications:`Notifications`},on={copyApiKeyToClipboard:`Copy API key to clipboard`},sn={progress:`Progress`},cn={nav:e,brand:t,connection:n,status:r,menu:i,sidePanel:a,history:o,agents:s,changes:c,inspector:l,nextSteps:u,mailbox:d,sessions:f,sessionPanel:p,fleet:m,context:h,refine:g,specs:_,refresh:v,board:y,debug:b,providerModels:x,dock:S,agentsMonitor:C,terminal:w,sessionWatch:T,sideEffects:E,monitor:D,sdd:O,toolResult:k,sageMemory:A,design:j,goalRun:M,collab:N,mode:P,cost:F,model:I,modelSwitcher:L,work:R,todos:z,task:B,toolGroup:V,fileRef:H,plan:U,filePicker:W,toast:G,search:K,phase:q,ctxMode:J,transcript:Y,autonomy:X,queue:Z,checkpoint:Q,goal:ne,worktree:re,process:ie,diff:ae,fallback:oe,liveSessions:se,monacoDiff:ce,errorBody:le,officeMap:ue,toolInput:de,message:fe,watch:pe,shortcuts:me,sddBoard:he,sddTask:ge,sddWizard:_e,fileExplorer:ve,codeEditor:ye,fileActivity:be,analytics:xe,promptLib:Se,skillDetail:Ce,office:we,skillsList:Te,timeline:Ee,designStudio:De,worktrees:Oe,officeSettings:ke,agentOffice:Ae,sddhub:je,sidebar:Me,memoryManager:Ne,kanban:Pe,cronJobs:Fe,agentRoster:Ie,rosterRoles:Le,customRoster:Re,taskIntel:$,panels:ze,audienceMem:Be,techStack:Ve,techStackStatus:He,techStackSeverity:Ue,techStackAction:We,techStackCoverage:Ge,codeMap:Ke,chronicle:qe,sessionInspect:Je,runtimePolicy:Ye,taskRisk:Xe,reqIntake:Ze,verifyReport:Qe,taskTimeline:$e,ctxDash:et,debugDash:tt,codeMapTree:nt,kanbanRecorder:rt,availability:it,kanbanDecomp:at,kanbanTree:ot,providerWait:st,chatView:ct,ctxBreakdown:lt,ctxEditor:ut,kanbanInspector:dt,memEditor:ft,ctxMonitor:pt,modelSchema:mt,oauth:ht,provider:gt,providerKey:_t,topbar:vt,agentsPanel:yt,boardChrome:bt,deadCode:xt,hud:St,pagination:Ct,sessionList:wt,sessionsDash:Tt,shadow:Et,taskVerify:Dt,toolsSec:Ot,updateBanner:kt,depGraph:At,kanbanRun:jt,app:Mt,fleetSummaryBar:Nt,audienceMemoryPanel:Pt,changesView:Ft,slashpopup:It,chatInput:Lt,chipMultiSelect:Rt,chroniclePipelineStrip:zt,codeMapVisuals:Bt,costChip:Vt,councilLogTimeline:Ht,kanbanBoundaryEditor:Ut,kanbanTaskCompletionChecks:Wt,deleteMemoryDialog:Gt,modelPickDialog:Kt,modelSelectDialog:qt,sddBoardView:Jt,displaySection:Yt,fallbacksSection:Xt,fleetSection:Zt,index:Qt,integrationsSection:$t,mCPSection:en,modelListEditor:tn,customProviderSection:nn,taskExecutionAttempts:rn,toaster:an,apikeydisplay:on,progressring:sn};export{te as n,cn as t};