@nocobase/app-plugin-agents 2.0.0-beta.6 → 2.0.0-beta.8

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 (220) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +4 -2
  3. package/dist/client/chat/controller.d.ts.map +1 -1
  4. package/dist/client/chat/controller.js +3 -2
  5. package/dist/client/chat/controller.js.map +1 -1
  6. package/dist/client/chat/notices.d.ts +12 -0
  7. package/dist/client/chat/notices.d.ts.map +1 -0
  8. package/dist/client/chat/notices.js +15 -0
  9. package/dist/client/chat/notices.js.map +1 -0
  10. package/dist/client/chat/submissions.d.ts +16 -0
  11. package/dist/client/chat/submissions.d.ts.map +1 -1
  12. package/dist/client/chat/submissions.js +22 -0
  13. package/dist/client/chat/submissions.js.map +1 -1
  14. package/dist/client/chat.d.ts +1 -0
  15. package/dist/client/chat.d.ts.map +1 -1
  16. package/dist/client/chat.js +1 -0
  17. package/dist/client/chat.js.map +1 -1
  18. package/dist/client/components/page-container.js +1 -1
  19. package/dist/client/components/page-container.js.map +1 -1
  20. package/dist/client/components/ui/alert-dialog.d.ts +3 -1
  21. package/dist/client/components/ui/alert-dialog.d.ts.map +1 -1
  22. package/dist/client/components/ui/alert-dialog.js +2 -2
  23. package/dist/client/components/ui/alert-dialog.js.map +1 -1
  24. package/dist/client/locales/de-DE.d.ts.map +1 -1
  25. package/dist/client/locales/de-DE.js +134 -109
  26. package/dist/client/locales/de-DE.js.map +1 -1
  27. package/dist/client/locales/en-US.d.ts +1 -0
  28. package/dist/client/locales/en-US.d.ts.map +1 -1
  29. package/dist/client/locales/en-US.js +3 -2
  30. package/dist/client/locales/en-US.js.map +1 -1
  31. package/dist/client/locales/es-ES.d.ts.map +1 -1
  32. package/dist/client/locales/es-ES.js +211 -186
  33. package/dist/client/locales/es-ES.js.map +1 -1
  34. package/dist/client/locales/fr-FR.d.ts.map +1 -1
  35. package/dist/client/locales/fr-FR.js +143 -118
  36. package/dist/client/locales/fr-FR.js.map +1 -1
  37. package/dist/client/locales/id-ID.d.ts.map +1 -1
  38. package/dist/client/locales/id-ID.js +132 -107
  39. package/dist/client/locales/id-ID.js.map +1 -1
  40. package/dist/client/locales/index.d.ts.map +1 -1
  41. package/dist/client/locales/index.js +2 -0
  42. package/dist/client/locales/index.js.map +1 -1
  43. package/dist/client/locales/ja-JP.d.ts.map +1 -1
  44. package/dist/client/locales/ja-JP.js +215 -190
  45. package/dist/client/locales/ja-JP.js.map +1 -1
  46. package/dist/client/locales/ko-KR.d.ts +5 -0
  47. package/dist/client/locales/ko-KR.d.ts.map +1 -0
  48. package/dist/client/locales/ko-KR.js +1311 -0
  49. package/dist/client/locales/ko-KR.js.map +1 -0
  50. package/dist/client/locales/pt-BR.d.ts.map +1 -1
  51. package/dist/client/locales/pt-BR.js +205 -180
  52. package/dist/client/locales/pt-BR.js.map +1 -1
  53. package/dist/client/locales/ru-RU.d.ts +5 -0
  54. package/dist/client/locales/ru-RU.d.ts.map +1 -0
  55. package/dist/client/locales/ru-RU.js +1341 -0
  56. package/dist/client/locales/ru-RU.js.map +1 -0
  57. package/dist/client/locales/runtimes.en-US.d.ts +1 -0
  58. package/dist/client/locales/runtimes.en-US.d.ts.map +1 -1
  59. package/dist/client/locales/runtimes.en-US.js +3 -2
  60. package/dist/client/locales/runtimes.en-US.js.map +1 -1
  61. package/dist/client/locales/runtimes.zh-CN.d.ts.map +1 -1
  62. package/dist/client/locales/runtimes.zh-CN.js +3 -2
  63. package/dist/client/locales/runtimes.zh-CN.js.map +1 -1
  64. package/dist/client/locales/vi-VN.d.ts.map +1 -1
  65. package/dist/client/locales/vi-VN.js +171 -146
  66. package/dist/client/locales/vi-VN.js.map +1 -1
  67. package/dist/client/locales/zh-CN.d.ts.map +1 -1
  68. package/dist/client/locales/zh-CN.js +3 -2
  69. package/dist/client/locales/zh-CN.js.map +1 -1
  70. package/dist/client/locales/zh-TW.d.ts.map +1 -1
  71. package/dist/client/locales/zh-TW.js +148 -123
  72. package/dist/client/locales/zh-TW.js.map +1 -1
  73. package/dist/client/pages/runtimes/quota.d.ts +3 -2
  74. package/dist/client/pages/runtimes/quota.d.ts.map +1 -1
  75. package/dist/client/pages/runtimes/quota.js +8 -3
  76. package/dist/client/pages/runtimes/quota.js.map +1 -1
  77. package/dist/client/pages/runtimes/runner-tools.d.ts.map +1 -1
  78. package/dist/client/pages/runtimes/runner-tools.js +7 -16
  79. package/dist/client/pages/runtimes/runner-tools.js.map +1 -1
  80. package/dist/client/pages/usage/date-range-picker.d.ts.map +1 -1
  81. package/dist/client/pages/usage/date-range-picker.js +3 -1
  82. package/dist/client/pages/usage/date-range-picker.js.map +1 -1
  83. package/dist/database/migrations/.manifest.json +8 -0
  84. package/dist/database/migrations/202611070001_ag_run_runner_pin.d.ts +4 -0
  85. package/dist/database/migrations/202611070001_ag_run_runner_pin.d.ts.map +1 -0
  86. package/dist/database/migrations/202611070001_ag_run_runner_pin.js +17 -0
  87. package/dist/database/migrations/202611070001_ag_run_runner_pin.js.map +1 -0
  88. package/dist/database/migrations/202611080002_ag_run_failure_params.d.ts +4 -0
  89. package/dist/database/migrations/202611080002_ag_run_failure_params.d.ts.map +1 -0
  90. package/dist/database/migrations/202611080002_ag_run_failure_params.js +17 -0
  91. package/dist/database/migrations/202611080002_ag_run_failure_params.js.map +1 -0
  92. package/dist/package.json +1 -1
  93. package/dist/server/composition.d.ts +2 -0
  94. package/dist/server/composition.d.ts.map +1 -1
  95. package/dist/server/composition.js +1 -1
  96. package/dist/server/composition.js.map +1 -1
  97. package/dist/server/core/agents/agent.service.d.ts +2 -1
  98. package/dist/server/core/agents/agent.service.d.ts.map +1 -1
  99. package/dist/server/core/agents/agent.service.js.map +1 -1
  100. package/dist/server/core/agents/agent.store.d.ts +2 -2
  101. package/dist/server/core/agents/agent.store.d.ts.map +1 -1
  102. package/dist/server/core/agents/agent.store.js +8 -2
  103. package/dist/server/core/agents/agent.store.js.map +1 -1
  104. package/dist/server/core/brief/brief.d.ts +10 -5
  105. package/dist/server/core/brief/brief.d.ts.map +1 -1
  106. package/dist/server/core/brief/brief.js +36 -13
  107. package/dist/server/core/brief/brief.js.map +1 -1
  108. package/dist/server/core/brief/index.d.ts +1 -1
  109. package/dist/server/core/brief/index.d.ts.map +1 -1
  110. package/dist/server/core/brief/index.js +1 -1
  111. package/dist/server/core/brief/index.js.map +1 -1
  112. package/dist/server/core/runs/claim.d.ts +13 -3
  113. package/dist/server/core/runs/claim.d.ts.map +1 -1
  114. package/dist/server/core/runs/claim.js +203 -36
  115. package/dist/server/core/runs/claim.js.map +1 -1
  116. package/dist/server/core/runs/extensions.d.ts +4 -1
  117. package/dist/server/core/runs/extensions.d.ts.map +1 -1
  118. package/dist/server/core/runs/extensions.js +3 -1
  119. package/dist/server/core/runs/extensions.js.map +1 -1
  120. package/dist/server/core/runs/git-credentials.d.ts.map +1 -1
  121. package/dist/server/core/runs/git-credentials.js +24 -2
  122. package/dist/server/core/runs/git-credentials.js.map +1 -1
  123. package/dist/server/core/runs/identity.d.ts.map +1 -1
  124. package/dist/server/core/runs/identity.js +9 -0
  125. package/dist/server/core/runs/identity.js.map +1 -1
  126. package/dist/server/core/runs/lifecycle.d.ts.map +1 -1
  127. package/dist/server/core/runs/lifecycle.js +14 -0
  128. package/dist/server/core/runs/lifecycle.js.map +1 -1
  129. package/dist/server/core/runs/ports.d.ts +7 -0
  130. package/dist/server/core/runs/ports.d.ts.map +1 -1
  131. package/dist/server/core/runs/ports.js.map +1 -1
  132. package/dist/server/core/runs/preview.d.ts +1 -4
  133. package/dist/server/core/runs/preview.d.ts.map +1 -1
  134. package/dist/server/core/runs/preview.js +10 -5
  135. package/dist/server/core/runs/preview.js.map +1 -1
  136. package/dist/server/core/runs/quota-wait.d.ts +7 -0
  137. package/dist/server/core/runs/quota-wait.d.ts.map +1 -0
  138. package/dist/server/core/runs/quota-wait.js +56 -0
  139. package/dist/server/core/runs/quota-wait.js.map +1 -0
  140. package/dist/server/core/runs/run-data-purge.d.ts.map +1 -1
  141. package/dist/server/core/runs/run-data-purge.js +1 -0
  142. package/dist/server/core/runs/run-data-purge.js.map +1 -1
  143. package/dist/server/core/runs/run.service.d.ts +13 -0
  144. package/dist/server/core/runs/run.service.d.ts.map +1 -1
  145. package/dist/server/core/runs/run.service.js +84 -3
  146. package/dist/server/core/runs/run.service.js.map +1 -1
  147. package/dist/server/core/runs/run.store.d.ts +2 -0
  148. package/dist/server/core/runs/run.store.d.ts.map +1 -1
  149. package/dist/server/core/runs/run.store.js +3 -0
  150. package/dist/server/core/runs/run.store.js.map +1 -1
  151. package/dist/server/core/runs/sweeper.d.ts.map +1 -1
  152. package/dist/server/core/runs/sweeper.js +2 -0
  153. package/dist/server/core/runs/sweeper.js.map +1 -1
  154. package/dist/server/core/runs/transitions.d.ts +1 -0
  155. package/dist/server/core/runs/transitions.d.ts.map +1 -1
  156. package/dist/server/core/runs/transitions.js +15 -1
  157. package/dist/server/core/runs/transitions.js.map +1 -1
  158. package/dist/server/core/runs/workload.d.ts +1 -1
  159. package/dist/server/core/runs/workload.d.ts.map +1 -1
  160. package/dist/server/core/runs/workload.js +19 -4
  161. package/dist/server/core/runs/workload.js.map +1 -1
  162. package/dist/server/kernel/clock.d.ts +2 -0
  163. package/dist/server/kernel/clock.d.ts.map +1 -1
  164. package/dist/server/kernel/clock.js +14 -0
  165. package/dist/server/kernel/clock.js.map +1 -1
  166. package/dist/server/kernel/events.d.ts +4 -1
  167. package/dist/server/kernel/events.d.ts.map +1 -1
  168. package/dist/server/kernel/events.js.map +1 -1
  169. package/dist/server/locales/de-DE.js +3 -3
  170. package/dist/server/locales/de-DE.js.map +1 -1
  171. package/dist/server/locales/es-ES.js +6 -6
  172. package/dist/server/locales/es-ES.js.map +1 -1
  173. package/dist/server/locales/fr-FR.js +4 -4
  174. package/dist/server/locales/fr-FR.js.map +1 -1
  175. package/dist/server/locales/id-ID.js +5 -5
  176. package/dist/server/locales/id-ID.js.map +1 -1
  177. package/dist/server/locales/index.d.ts.map +1 -1
  178. package/dist/server/locales/index.js +2 -0
  179. package/dist/server/locales/index.js.map +1 -1
  180. package/dist/server/locales/ja-JP.d.ts.map +1 -1
  181. package/dist/server/locales/ja-JP.js +6 -6
  182. package/dist/server/locales/ja-JP.js.map +1 -1
  183. package/dist/server/locales/ko-KR.d.ts +5 -0
  184. package/dist/server/locales/ko-KR.d.ts.map +1 -0
  185. package/dist/server/locales/ko-KR.js +59 -0
  186. package/dist/server/locales/ko-KR.js.map +1 -0
  187. package/dist/server/locales/pt-BR.js +6 -6
  188. package/dist/server/locales/pt-BR.js.map +1 -1
  189. package/dist/server/locales/ru-RU.d.ts +5 -0
  190. package/dist/server/locales/ru-RU.d.ts.map +1 -0
  191. package/dist/server/locales/ru-RU.js +59 -0
  192. package/dist/server/locales/ru-RU.js.map +1 -0
  193. package/dist/server/locales/vi-VN.js +6 -6
  194. package/dist/server/locales/vi-VN.js.map +1 -1
  195. package/dist/server/locales/zh-TW.d.ts.map +1 -1
  196. package/dist/server/locales/zh-TW.js +6 -6
  197. package/dist/server/locales/zh-TW.js.map +1 -1
  198. package/dist/server/routes/admin.d.ts.map +1 -1
  199. package/dist/server/routes/admin.js +27 -1
  200. package/dist/server/routes/admin.js.map +1 -1
  201. package/dist/server/routes/runners/admin.d.ts.map +1 -1
  202. package/dist/server/routes/runners/admin.js +3 -3
  203. package/dist/server/routes/runners/admin.js.map +1 -1
  204. package/dist/server/routes/runners/runner.d.ts.map +1 -1
  205. package/dist/server/routes/runners/runner.js +13 -22
  206. package/dist/server/routes/runners/runner.js.map +1 -1
  207. package/dist/server/routes/schemas.d.ts +4 -0
  208. package/dist/server/routes/schemas.d.ts.map +1 -1
  209. package/dist/server/routes/schemas.js +17 -4
  210. package/dist/server/routes/schemas.js.map +1 -1
  211. package/dist/server/runners/runner.service.d.ts.map +1 -1
  212. package/dist/server/runners/runner.service.js +17 -5
  213. package/dist/server/runners/runner.service.js.map +1 -1
  214. package/dist/shared/briefs.d.ts +2 -6
  215. package/dist/shared/briefs.d.ts.map +1 -1
  216. package/dist/shared/runs.d.ts +4 -0
  217. package/dist/shared/runs.d.ts.map +1 -1
  218. package/dist/shared/runs.js.map +1 -1
  219. package/package.json +12 -12
  220. package/skills/nocobase-app-plugin-agents/references/runners.md +1 -1
@@ -1,5 +1,3 @@
1
- import runtimesEnUS from './runtimes.en-US.js';
2
- import chatEnUS from './chat.en-US.js';
3
1
  const frFR = {
4
2
  modelSuggestions: {
5
3
  design: 'Raisonnement le plus avancé : propositions, architecture, enquêtes difficiles et revue des modifications importantes ; aussi implémentation courante et modifications entre paquets.',
@@ -55,7 +53,7 @@ const frFR = {
55
53
  title: 'Supprimer les modifications non enregistrées ?',
56
54
  },
57
55
  errors: {
58
- boundRunnerIncompatible: 'Ce runner ne peut pas exécuter l’Agent sélectionné. Changez de runner ou démarrez une nouvelle conversation.',
56
+ boundRunnerIncompatible: 'Cet environnement ne peut pas exécuter l’Agent sélectionné. Changez d’environnement pour continuer.',
59
57
  CONFLICT: 'Entre-temps, cela a changé. Rechargez et réessayez.',
60
58
  REVISION_CONFLICT: 'Entre-temps, cela a changé. Rechargez et réessayez.',
61
59
  FORBIDDEN: "Vous n'êtes pas autorisé à faire cela.",
@@ -100,26 +98,26 @@ const frFR = {
100
98
  agents: {
101
99
  unavailableNow: 'Indisponible actuellement',
102
100
  title: 'Agents',
103
- description: 'Ajoutez des agents à partir des modèles signalés par les exécuteurs. Le Lead Agent confie chaque étape d’une tâche à l’agent dont la description convient.',
104
- fromRunners: 'Agents des exécuteurs',
101
+ description: 'Ajoutez des Agents à partir des modèles signalés par les environnements d’exécution. Le Lead Agent confie chaque étape d’une tâche à l’Agent dont la description correspond.',
102
+ fromRunners: 'Agents des environnements d’exécution',
105
103
  display: {
106
104
  search: 'Rechercher des modèles ou des fournisseurs',
107
105
  select: 'Sélectionnez {{name}}',
108
106
  showDisabled: 'Afficher désactivés',
109
107
  hideDisabled: 'Masquer désactivés',
110
108
  },
111
- filterLabel: 'Afficher les agents',
109
+ filterLabel: 'Afficher les Agents',
112
110
  filters: {
113
111
  all: 'Tous les {{count}}',
114
112
  enabled: 'Activé {{count}}',
115
- unreported: 'Aucun exécuteur {{count}}',
113
+ unreported: 'Aucun environnement d’exécution {{count}}',
116
114
  },
117
- loadFailed: 'Impossible de charger les agents',
115
+ loadFailed: 'Impossible de charger les Agents',
118
116
  loadMore: 'Charger plus',
119
- emptyTitle: "Aucun agent pour l'instant",
120
- emptyDescription: 'Connectez un exécuteur disposant d’un outil de codage avec une session ouverte, puis ajoutez un agent depuis « Modèles disponibles ».',
121
- noneInFilter: 'Aucun agent ici.',
122
- howToAdd: 'Pour ajouter un agent, installez un outil de codage sur un exécuteur et connectez-vous pour utiliser un modèle disponible. Une fois le modèle signalé par l’exécuteur, ajoutez l’agent depuis « Modèles disponibles » en décrivant ses points forts. Il est activé dès son ajout. Un agent disponible uniquement sur des exécuteurs personnels ne travaille que sur les tâches lancées par leurs propriétaires.',
117
+ emptyTitle: "Aucun Agent pour l'instant",
118
+ emptyDescription: 'Connectez un environnement d’exécution disposant d’un outil de codage avec une session ouverte, puis ajoutez un Agent depuis « Modèles disponibles ».',
119
+ noneInFilter: 'Aucun Agent ici.',
120
+ howToAdd: 'Pour ajouter un Agent, installez un outil de développement sur un environnement d’exécution et connectez-vous à un modèle que vous pouvez utiliser : une fois signalé par l’environnement, ajoutez-le depuis Modèles disponibles en décrivant ses points forts. Un Agent présent uniquement sur des environnements personnels ne travaille que sur les tâches lancées par leurs propriétaires.',
123
121
  goodAtMissing: 'Pas encore écrit',
124
122
  columns: {
125
123
  agent: 'Agent',
@@ -129,14 +127,14 @@ const frFR = {
129
127
  state: 'Statut',
130
128
  },
131
129
  where: {
132
- none: 'Aucun exécuteur',
130
+ none: 'Aucun environnement d’exécution',
133
131
  team_one: "Exécuteur d'équipe {{count}}",
134
132
  team_other: "Exécuteurs de l'équipe {{count}}",
135
133
  personal_one: 'Exécuteur personnel {{count}} en ligne',
136
134
  personal_other: 'Exécuteurs personnels {{count}} en ligne',
137
135
  both: 'Équipe {{team}} · Personnel {{personal}}',
138
136
  names: '{{names}}',
139
- noneOnline: 'Aucun exécuteur en ligne actuellement',
137
+ noneOnline: 'Aucun environnement d’exécution en ligne actuellement',
140
138
  personalOnly: 'Exécuteurs personnels uniquement',
141
139
  lastReported: 'Dernier rapport {{when}}',
142
140
  team_many: "Exécuteurs de l'équipe {{count}}",
@@ -145,7 +143,7 @@ const frFR = {
145
143
  state: {
146
144
  enabled: 'Activé',
147
145
  disabled: 'Désactivé',
148
- unreported: 'Aucun exécuteur',
146
+ unreported: 'Aucun environnement d’exécution',
149
147
  },
150
148
  effort: {
151
149
  default: "Valeur par défaut de l'outil",
@@ -159,14 +157,14 @@ const frFR = {
159
157
  ultra: 'Ultra',
160
158
  },
161
159
  enable: {
162
- reportedBy_one: 'Rapporté par le exécuteur {{count}} en ligne : {{names}}.',
163
- reportedBy_other: 'Rapporté par les exécuteurs de {{count}} en ligne : {{names}}.',
164
- noRunnerNow: "Aucun exécuteur qui l'a n'est en ligne actuellement.",
165
- goodAtHint: "Le Lead Agent décide ce qu'il doit donner à cet agent par ces mots. Dites ce qui convient et ce qui ne convient pas.",
160
+ reportedBy_one: 'Rapporté par le environnement d’exécution {{count}} en ligne : {{names}}.',
161
+ reportedBy_other: 'Rapporté par les environnements d’exécution de {{count}} en ligne : {{names}}.',
162
+ noRunnerNow: "Aucun environnement d’exécution qui l'a n'est en ligne actuellement.",
163
+ goodAtHint: "Le Lead Agent décide ce qu'il doit donner à cet Agent par ces mots. Dites ce qui convient et ce qui ne convient pas.",
166
164
  goodAtRequired: "Écrivez ce pour quoi il est bon avant de l'activer.",
167
165
  effortHint: "Le Lead Agent ne peut pas le modifier lorsqu'il lui confie le travail.",
168
- personalOnly: "Seuls les exécuteurs personnels l'ont : le Lead Agent ne lui confie le travail que sur les problèmes lancés par ses propriétaires.",
169
- reportedBy_many: 'Rapporté par les exécuteurs de {{count}} en ligne : {{names}}.',
166
+ personalOnly: 'Seuls des environnements personnels l’ont : le Lead Agent ne lui confie que les tâches lancées par leurs propriétaires.',
167
+ reportedBy_many: 'Rapporté par les environnements d’exécution de {{count}} en ligne : {{names}}.',
170
168
  },
171
169
  edit: {
172
170
  button: 'Modifier',
@@ -176,9 +174,9 @@ const frFR = {
176
174
  done: '{{name}} enregistré',
177
175
  },
178
176
  available: {
179
- open: 'Ajouter un agent',
177
+ open: 'Ajouter un Agent',
180
178
  title: 'Modèles disponibles',
181
- description: 'Seuls les outils cochés sur l’environnement d’exécution sont détectés et apparaissent ici. Les combinaisons recommandées par l’application se créent et s’activent d’elles-mêmes dès qu’un exécuteur les signale ; ajoutez-en un agent à partir de n’importe quelle autre.',
179
+ description: 'Seuls les outils cochés sur l’environnement d’exécution sont détectés et apparaissent ici. Les combinaisons recommandées par l’application se créent et s’activent d’elles-mêmes dès qu’un environnement d’exécution les signale ; ajoutez-en un Agent à partir de n’importe quelle autre.',
182
180
  recommended: 'Activé automatiquement dès le signalement',
183
181
  added: 'Ajouté',
184
182
  add: 'Ajouter',
@@ -200,23 +198,23 @@ const frFR = {
200
198
  group_one: '{{tool}} · {{count}} modèle · {{runners}}',
201
199
  group_other: '{{tool}} · {{count}} modèles · {{runners}}',
202
200
  group_many: '{{tool}} · {{count}} modèles · {{runners}}',
203
- runners_one: '{{count}} exécuteur',
204
- runners_other: '{{count}} exécuteurs',
205
- runners_many: '{{count}} exécuteurs',
201
+ runners_one: '{{count}} environnement d’exécution',
202
+ runners_other: '{{count}} environnements d’exécution',
203
+ runners_many: '{{count}} environnements d’exécution',
206
204
  noModels: 'Aucun modèle ici.',
207
205
  selectedCount_one: '{{count}} sélectionné',
208
206
  selectedCount_other: '{{count}} sélectionnés',
209
207
  selectedCount_many: '{{count}} sélectionnés',
210
208
  addSelected: 'Ajouter {{count}}',
211
- confirmTitle_one: 'Ajouter {{count}} agent',
212
- confirmTitle_other: 'Ajouter {{count}} agents',
209
+ confirmTitle_one: 'Ajouter {{count}} Agent',
210
+ confirmTitle_other: 'Ajouter {{count}} Agents',
213
211
  confirmTitle_many: 'Ajouter {{count}} agents',
214
212
  confirmAction_one: 'Ajouter {{count}}',
215
213
  confirmAction_other: 'Ajouter {{count}}',
216
214
  confirmAction_many: 'Ajouter {{count}}',
217
215
  goodAtNeeded: 'En quoi est-il bon ?',
218
- addedCount_one: '{{count}} agent ajouté.',
219
- addedCount_other: '{{count}} agents ajoutés.',
216
+ addedCount_one: '{{count}} Agent ajouté.',
217
+ addedCount_other: '{{count}} Agents ajoutés.',
220
218
  addedCount_many: '{{count}} agents ajoutés.',
221
219
  addedPartial: '{{succeeded}} ajoutés, {{failed}} n’ont pas pu être ajoutés. Raison sous chacun.',
222
220
  addFailed: '{{failed}} n’ont pas pu être ajoutés. Raison sous chacun ; réessayez.',
@@ -224,32 +222,32 @@ const frFR = {
224
222
  },
225
223
  agentTypes: {
226
224
  label: "Type d'agent",
227
- question: "Quel genre d'agent?",
225
+ question: "Quel genre d'Agent?",
228
226
  online: 'En ligne',
229
227
  runner: 'Exécuteur',
230
228
  onlineHint: "Réponses en quelques secondes sur le serveur via un service de modèle. Aucun runtime n'est nécessaire ; il ne peut pas toucher au code.",
231
229
  runnerHint: 'Pilote un outil de codage sur un runtime et travaille dans un répertoire de travail : code, fichiers, commandes.',
232
- immutable: "Un agent garde son type ; créer un autre agent pour l'autre type.",
230
+ immutable: "Un Agent garde son type ; créer un autre Agent pour l'autre type.",
233
231
  onServer: 'Sur le serveur',
234
232
  filterAll: 'Tous types',
235
- noneOfType: 'Aucun agent de ce type.',
233
+ noneOfType: 'Aucun Agent de ce type.',
236
234
  },
237
235
  agentSkills: {
238
236
  title: 'Compétences',
239
- description: "Manuels que l'agent lit lorsqu'une tâche correspond à sa description. Placé dans son répertoire de travail avant chaque exécution.",
237
+ description: "Manuels que l'Agent lit lorsqu'une tâche correspond à sa description. Placé dans son répertoire de travail avant chaque exécution.",
240
238
  manage: 'Gérer les compétences',
241
239
  placeholder: 'Sélectionner les compétences',
242
240
  empty: "Aucune compétence pour l'instant.",
243
241
  save: 'Sauvegarder les compétences',
244
- descriptionOnline: "Manuels que l'agent lit lorsqu'une tâche correspond à sa description, dans un bac à sable en lecture seule sur le serveur.",
245
- onlineScripts: "Les scripts ne sont pas exécutés pour les agents en ligne : l'agent peut les lire, pas les exécuter.",
242
+ descriptionOnline: "Manuels que l'Agent lit lorsqu'une tâche correspond à sa description, dans un bac à sable en lecture seule sur le serveur.",
243
+ onlineScripts: "Les scripts ne sont pas exécutés pour les Agents en ligne : l'Agent peut les lire, pas les exécuter.",
246
244
  skippedScripts: ': {{paths}}',
247
245
  pathSeparator: ', ',
248
246
  },
249
247
  brief: {
250
248
  preview: "Aperçu de l'invite complète",
251
249
  previewTitle: "Aperçu de l'invite complète",
252
- previewDescription: "Quelle série de cet agent serait envoyée maintenant, sur un sujet inventé. Rien n'est mis en file d'attente.",
250
+ previewDescription: "Quelle série de cet Agent serait envoyée maintenant, sur un sujet inventé. Rien n'est mis en file d'attente.",
253
251
  scenario: 'Scénario',
254
252
  sample: 'Sur un sujet inventé : {{subject}}. Les valeurs marquées [échantillon] sont constituées.',
255
253
  previewFailed: "Impossible d'afficher l'invite complète.",
@@ -258,9 +256,9 @@ const frFR = {
258
256
  rendered: 'Rendu',
259
257
  raw: 'Brut',
260
258
  platform: 'Règles et tâches de la plateforme · à propos des caractères {{size}} (anglais)',
261
- platformNote: "Les règles de la plateforme sont envoyées en anglais ; l'agent répond toujours dans votre langue.",
259
+ platformNote: "Les règles de la plateforme sont envoyées en anglais ; l'Agent répond toujours dans votre langue.",
262
260
  agentPrompt: "Invite de l'agent (écrite par vous)",
263
- noAgentPrompt: "Cet agent n'a pas d'invite propre.",
261
+ noAgentPrompt: "Cet Agent n'a pas d'invite propre.",
264
262
  firstMessage: 'Premier message',
265
263
  empty: 'Vide',
266
264
  previewPlaceholders: "Les notes entre crochets sur le runtime sont remplies par le runtime qui l'exécute : ses répertoires de travail et les invites d'initialisation des répertoires qu'il vient de préparer.",
@@ -275,7 +273,7 @@ const frFR = {
275
273
  },
276
274
  envVars: {
277
275
  title: "Variables d'environnement",
278
- description: "Transmis à l'outil de codage à chaque exécution et masqué dans les enregistrements d'exécution ; les valeurs ne s’affichent plus après l’enregistrement. Toute personne pouvant utiliser un agent partagé peut recevoir ces valeurs sur son propre ordinateur ; marquez les secrets à haut risque « Exécutions d'équipe uniquement ».",
276
+ description: "Transmis à l'outil de codage à chaque exécution et masqué dans les enregistrements d'exécution ; les valeurs ne s’affichent plus après l’enregistrement. Toute personne pouvant utiliser un Agent partagé peut recevoir ces valeurs sur son propre ordinateur ; marquez les secrets à haut risque « Exécutions d'équipe uniquement ».",
279
277
  add: 'Ajouter une variable',
280
278
  addTitle: "Ajouter une variable d'environnement",
281
279
  editTitle: 'Remplacer {{name}}',
@@ -286,7 +284,7 @@ const frFR = {
286
284
  valueTooLong: 'La valeur est supérieure à 8 Ko.',
287
285
  keepValueHint: 'Laissez-le vide pour conserver la valeur actuelle.',
288
286
  teamRunnersOnly: "Runtimes d'équipe uniquement",
289
- teamRunnersOnlyHint: "Sans cela, une exécution envoie la valeur au runtime qui la prend, y compris le runtime personnel de toute personne susceptible d'utiliser l'agent. Avec lui, seul un runtime d'équipe effectue des exécutions qui obtiennent cette variable.",
287
+ teamRunnersOnlyHint: "Sans cela, une exécution envoie la valeur au runtime qui la prend, y compris le runtime personnel de toute personne susceptible d'utiliser l'Agent. Avec lui, seul un runtime d'équipe effectue des exécutions qui obtiennent cette variable.",
290
288
  teamRunnersOnlyBadge: "Runtimes d'équipe uniquement",
291
289
  fromRunner: 'Extraire du runtime',
292
290
  fromRunnerHint: "Aucune valeur n'est conservée ici : le runtime qui effectue une exécution la fournit depuis sa propre machine, définie ici avec {{command}} ou transmise avec `--pass-env`. Un environnement d'exécution qui ne le fournit pas échoue avant son démarrage.",
@@ -331,7 +329,7 @@ const frFR = {
331
329
  },
332
330
  scopeVariables: {
333
331
  title: 'Variables et secrets',
334
- description: 'Donné à chaque agent travaillant ici. Des variables plus spécifiques (celui d’un répertoire de travail, puis celui de l’agent) l’emportent.',
332
+ description: 'Donné à chaque Agent travaillant ici. Des variables plus spécifiques (celui d’un répertoire de travail, puis celui de l’Agent) l’emportent.',
335
333
  },
336
334
  scopes: {
337
335
  workdir: 'Répertoire de travail',
@@ -343,7 +341,7 @@ const frFR = {
343
341
  usage: {
344
342
  otherUse: {
345
343
  title: 'Autre utilisation du modèle',
346
- description: "Appels de modèles en dehors des exécutions d'agents, comme l'indexation et la recherche dans la base de connaissances.",
344
+ description: "Appels de modèles en dehors des exécutions d'Agents, comme l'indexation et la recherche dans la base de connaissances.",
347
345
  purpose: 'Utiliser',
348
346
  source: 'Interrogé par',
349
347
  model: 'Modèle',
@@ -356,7 +354,7 @@ const frFR = {
356
354
  },
357
355
  },
358
356
  title: 'Utilisation',
359
- description: "Quelles sont les exécutions d'agent utilisées et leur coût aux prix actuels des modèles.",
357
+ description: "Quelles sont les exécutions d'Agent utilisées et leur coût aux prix actuels des modèles.",
360
358
  loadFailed: "Impossible de charger l'utilisation",
361
359
  groupBy: 'Regrouper par',
362
360
  groupByValue: 'Groupe par {{group}}',
@@ -378,7 +376,7 @@ const frFR = {
378
376
  filters: {
379
377
  allGroups: 'Tous : {{group}}',
380
378
  agent: 'Agent',
381
- allAgents: 'Tous les agents',
379
+ allAgents: 'Tous les Agents',
382
380
  person: 'Réveillé par',
383
381
  allPeople: 'Tout le monde',
384
382
  range: 'Plage de dates',
@@ -413,7 +411,7 @@ const frFR = {
413
411
  },
414
412
  defaultSkills: {
415
413
  title: 'Compétences par défaut',
416
- description: 'Chaque agent travaillant ici acquiert également ces compétences.',
414
+ description: 'Chaque Agent travaillant ici acquiert également ces compétences.',
417
415
  save: 'Sauvegarder les compétences',
418
416
  saved: 'Compétences par défaut enregistrées.',
419
417
  },
@@ -430,7 +428,7 @@ const frFR = {
430
428
  filters: {
431
429
  agent: 'Agent',
432
430
  status: 'Statut',
433
- allAgents: 'Tous les agents',
431
+ allAgents: 'Tous les Agents',
434
432
  allStatuses: 'Tous les statuts',
435
433
  },
436
434
  noMatch: 'Aucune exécution ne correspond à ces filtres.',
@@ -443,7 +441,7 @@ const frFR = {
443
441
  retried: "Exécution à nouveau en file d'attente",
444
442
  viewBrief: "Afficher l'invite complète",
445
443
  briefTitle: 'Invite complète',
446
- briefDescription: "Ce qu'on a dit à l'agent lors de la dernière réclamation de ce run.",
444
+ briefDescription: "Ce qu'on a dit à l'Agent lors de la dernière réclamation de ce run.",
447
445
  briefOf: 'Tentative {{attempt}}, réclamation {{time}}',
448
446
  briefUnavailable: "Aucune invite complète n'est disponible pour cette exécution.",
449
447
  processDataCleared: "Les données du processus d'exécution ont été effacées dans le cadre de la stratégie de rétention.",
@@ -487,7 +485,7 @@ const frFR = {
487
485
  transcript: {
488
486
  title: 'Transcription de l’exécution',
489
487
  notFound: "Cette exécution n'existe pas.",
490
- waiting: "En attente du démarrage de l'agent…",
488
+ waiting: "En attente du démarrage de l'Agent…",
491
489
  empty: "Cette exécution n'a enregistré aucun événement.",
492
490
  fetchFailed: 'Impossible de récupérer de nouveaux événements. Nouvelle tentative…',
493
491
  expand: 'Afficher tout',
@@ -495,10 +493,10 @@ const frFR = {
495
493
  summary_one: "Création d'un événement {{created}} · {{count}}",
496
494
  summary_other: 'Événements {{created}} · {{count}} créés',
497
495
  took: 'a pris {{duration}}',
498
- pendingInputs_one: "Commentaire {{count}} en attente de l'agent",
499
- pendingInputs_other: "Commentaires {{count}} en attente de l'agent",
500
- inputDelivered_one: "Remis à l'agent",
501
- inputDelivered_other: "Entrées {{count}} fournies à l'agent",
496
+ pendingInputs_one: "Commentaire {{count}} en attente de l'Agent",
497
+ pendingInputs_other: "Commentaires {{count}} en attente de l'Agent",
498
+ inputDelivered_one: "Remis à l'Agent",
499
+ inputDelivered_other: "Entrées {{count}} fournies à l'Agent",
502
500
  tokens: 'Jetons {{input}} entrants, {{output}} sortants',
503
501
  kinds: {
504
502
  text: 'Agent',
@@ -526,29 +524,30 @@ const frFR = {
526
524
  leaseExpired: "Le moteur d'exécution a arrêté de générer des rapports.",
527
525
  startTimeout: "Le moteur d'exécution n'a pas démarré l'exécution à temps.",
528
526
  cancelled: 'Annulé.',
529
- idleTimeout: "L'agent cesse de progresser.",
527
+ idleTimeout: "L'Agent cesse de progresser.",
530
528
  setupFailed: "Le run n'a pas pu être préparé.",
531
529
  cliUnavailable: "Le moteur d'exécution n'a pas pu installer la CLI de l'application.",
532
530
  workspaceBusy: 'Le répertoire de travail est occupé ; en attendant une autre tentative.',
533
531
  checkoutFailed: "L'extraction du référentiel a échoué.",
534
532
  toolAuth: "L'outil de codage n'est pas connecté au runtime.",
535
533
  toolQuota: "L'outil de codage n'a plus de quota.",
534
+ sessionUnavailable: 'La session d’origine de l’outil de programmation n’a pas pu être reprise.',
536
535
  toolRateLimit: "L'outil de codage était limité en débit.",
537
536
  toolNetwork: "L'outil de codage n'a pas pu atteindre son service.",
538
537
  toolProcess: "L'outil de codage s'est arrêté de manière inattendue.",
539
538
  contextOverflow: 'La conversation est devenue trop longue pour le modèle.',
540
539
  delegatedQueueTimeout: "Expiration du délai d'attente de la file d'attente de délégation ; retiré",
541
- queuedExpired: 'Aucun runtime n’a pris le temps d’exécution.',
542
- modelUnavailable: 'Le modèle de l’agent n’est pas disponible.',
543
- stepLimit: "L'agent a appelé tools trop souvent sans répondre.",
540
+ queuedExpired: 'Aucun runtime n’a pris le environnement d’exécution.',
541
+ modelUnavailable: 'Le modèle de l’Agent n’est pas disponible.',
542
+ stepLimit: "L'Agent a appelé tools trop souvent sans répondre.",
544
543
  policyRefused: 'Aucune politique d’exécution ne lui permet d’effectuer ce travail.',
545
544
  prepareNetwork: "Le moteur d'exécution n'a pas pu atteindre l'hôte du référentiel lors de la préparation de l'exécution.",
546
- repoAccessUnavailable: "L’accréditation d’un référentiel ne pouvait pas être délivrée pour l’instant ; l'exécution sera réessayée.",
545
+ repoAccessUnavailable: 'L’accès au dépôt est temporairement indisponible.',
547
546
  repoAccessDenied: 'L’application ne délivrera pas d’informations d’identification pour l’un des référentiels de l’exécution.',
548
547
  unknown: "L'exécution a échoué.",
549
548
  },
550
549
  runtimes: {
551
- pathHint: runtimesEnUS.runtimes.pathHint,
550
+ pathHint: 'Le runner trouve les outils de développement avec son propre PATH. Dans un terminal où which codex / which claude fonctionne, relancez nocobase-runner service install et redémarrez le service (ou relancez nocobase-runner start) pour qu’il obtienne le bon PATH.',
552
551
  quota: {
553
552
  workspaceStatus: {
554
553
  active: 'Les travaux continuent',
@@ -574,13 +573,13 @@ const frFR = {
574
573
  since: 'depuis {{time}}',
575
574
  marks_one: 'Quota {{count}}',
576
575
  marks_other: 'Quotas {{count}}',
577
- queueHint: "Un agent au quota peut toujours être sélectionné. Les travaux seront mis en file d'attente avec leur délai d'attente existant.",
576
+ queueHint: "Un Agent au quota peut toujours être sélectionné. Les travaux seront mis en file d'attente avec leur délai d'attente existant.",
578
577
  partial: 'Fonctionne sur {{available}} · {{blocked}} au quota',
579
578
  workspaceSize: "Taille de l'espace de travail : {{value}}",
580
579
  providers_one: 'Fournisseur {{count}} au quota',
581
580
  providers_other: 'Fournisseurs {{count}} au quota',
582
581
  runColumns: {
583
- issue: 'Problème/conversation',
582
+ issue: 'Tâche / conversation',
584
583
  agent: 'Agent',
585
584
  status: 'Statut',
586
585
  started: 'Démarré',
@@ -616,11 +615,12 @@ const frFR = {
616
615
  near: 'Proche de la limite',
617
616
  clear: 'Effacer',
618
617
  clearMark: 'Effacer la marque',
619
- confirm: 'Effacer cette marque ? {{target}} retrouve du travail.',
618
+ confirmTitle: 'Effacer la marque de quota de {{target}} ?',
619
+ confirm: 'Ne l’effacez qu’après avoir confirmé que le quota est rétabli. {{target}} retrouve du travail immédiatement ; si le quota est encore épuisé, la prochaine exécution le marque à nouveau.',
620
620
  observed: 'Dernier rapport {{time}}',
621
621
  usedPercent: '{{percent}}% utilisé',
622
622
  ok: "D'accord",
623
- hint: "Les heures de réinitialisation connues rétablissent automatiquement l'éligibilité. Pour les réinitialisations inconnues, restaurez le quota et effacez la marque. Seuls le propriétaire du runtime et les administrateurs peuvent effacer les marques.",
623
+ hint: 'Une marque s’efface d’elle-même à l’heure de réinitialisation connue, ou quand l’outil signale à nouveau du quota disponible. Ne l’effacez à la main qu’après avoir confirmé que le quota est rétabli. Seuls le propriétaire du runtime et les administrateurs peuvent effacer les marques.',
624
624
  marks_many: 'Quotas {{count}}',
625
625
  providers_many: 'Fournisseurs {{count}} au quota',
626
626
  },
@@ -646,14 +646,14 @@ const frFR = {
646
646
  ended: 'Terminé',
647
647
  active: 'Les travaux continuent',
648
648
  unknown: 'Impossible de confirmer si le travail est terminé',
649
- oldRunner: "Ce exécuteur n'a pas fourni de raisons de diagnostic",
649
+ oldRunner: "Ce environnement d’exécution n'a pas fourni de raisons de diagnostic",
650
650
  noCleanup: "Le résultat du nettoyage local n'a pas été reçu",
651
651
  discardsUntracked: 'Le nettoyage supprimera les fichiers non suivis',
652
652
  decision: {
653
653
  settled: 'Travaux terminés; des contrôles de nettoyage locaux sont requis',
654
654
  active: 'Les travaux continuent',
655
655
  runNotFound: 'Impossible de confirmer : exécution introuvable',
656
- ownershipUnknown: "Impossible de confirmer : la propriété du exécuteur n'a pas pu être vérifiée",
656
+ ownershipUnknown: "Impossible de confirmer : la propriété du environnement d’exécution n'a pas pu être vérifiée",
657
657
  ambiguousSubject: "Impossible de confirmer : clé d'objet ambiguë",
658
658
  bindingUnavailable: "Impossible de confirmer : l'application n'a pas de liaison d'espace de travail",
659
659
  subjectUnknown: "Impossible de confirmer : la demande n'a pas pu résoudre le sujet",
@@ -669,11 +669,11 @@ const frFR = {
669
669
  },
670
670
  },
671
671
  title: 'Environnements d’exécution',
672
- description: "Les environnements d'exécution qui exécutent les agents et les outils de codage signalés par chacun.",
672
+ description: "Les environnements d'exécution qui exécutent les Agents et les outils de codage signalés par chacun.",
673
673
  add: "Ajouter un environnement d'exécution",
674
674
  loadFailed: 'Impossible de charger les runtimes',
675
675
  emptyTitle: "Aucun environnement d'exécution connecté pour le moment",
676
- emptyDescription: "Une fois qu'un runtime est connecté, les agents d'exécution y travaillent avec ses outils de codage.",
676
+ emptyDescription: "Une fois qu'un runtime est connecté, les Agents d'exécution y travaillent avec ses outils de codage.",
677
677
  noneConnected: 'Aucun runtime n’est connecté.',
678
678
  revokedList_one: 'Exécution révoquée {{count}}',
679
679
  revokedList_other: "Les environnements d'exécution {{count}} ont été révoqués.",
@@ -719,12 +719,12 @@ const frFR = {
719
719
  title: 'Variables de cette machine',
720
720
  description: "Les variables qu'il fournit aux exécutions qui les extraient du runtime, par leur nom ; les valeurs restent sur la machine. Définissez-en un ici avec `nocobase-runner env set NAME`, ou transmettez-le avec `--pass-env NAME`.",
721
721
  none: 'Aucun : une exécution qui prend une variable du runtime échoue ici avant de démarrer.',
722
- unknown: 'Non signalé : son runner est plus ancien que cette fonctionnalité. Mettez à jour le exécuteur pour les voir.',
722
+ unknown: 'Non signalé : son runner est plus ancien que cette fonctionnalité. Mettez à jour le environnement d’exécution pour les voir.',
723
723
  },
724
724
  jobs: {
725
725
  allow: 'Autoriser les tâches de build',
726
726
  hint: 'Les builds et autres étapes configurées par cette application sont exécutés sans modèle. Ce runtime rapporte : {{kinds}}.',
727
- unsupported: "Le programme d'exécution de ce runtime ne prend pas de tâches. Mettez à jour le exécuteur pour l'activer.",
727
+ unsupported: "Le programme d'exécution de ce runtime ne prend pas de tâches. Mettez à jour le environnement d’exécution pour l'activer.",
728
728
  },
729
729
  noTools: 'Aucun outil de codage trouvé',
730
730
  actionsFor: 'Actions pour {{name}}',
@@ -763,10 +763,10 @@ const frFR = {
763
763
  },
764
764
  upgradeRequired: {
765
765
  title: 'Ce runtime nécessite une mise à niveau',
766
- older: "Son exécuteur {{version}} parle le protocole d'agent {{protocol}} ; cette application nécessite le protocole {{required}}. Il reste connecté mais n'exécute rien jusqu'à ce qu'il soit mis à jour.",
767
- newer: "Son runner {{version}} parle le protocole d'agent {{protocol}}, plus récent que cette application (protocole {{required}}). Il reste connecté mais n'exécute rien jusqu'à ce qu'il exécute un exécuteur servi par cette application.",
766
+ older: "Son environnement d’exécution {{version}} parle le protocole d'Agent {{protocol}} ; cette application nécessite le protocole {{required}}. Il reste connecté mais n'exécute rien jusqu'à ce qu'il soit mis à jour.",
767
+ newer: "Son runner {{version}} parle le protocole d'Agent {{protocol}}, plus récent que cette application (protocole {{required}}). Il reste connecté mais n'exécute rien jusqu'à ce qu'il exécute un environnement d’exécution servi par cette application.",
768
768
  latest: "Cette application sert le programme d'exécution {{latest}}. Exécutez ceci sur son hôte pour le mettre à jour :",
769
- noLatest: 'Installez un exécuteur qui parle le protocole {{required}}, ou exécutez-le sur son hôte pour le mettre à jour :',
769
+ noLatest: 'Installez un environnement d’exécution qui parle le protocole {{required}}, ou exécutez-le sur son hôte pour le mettre à jour :',
770
770
  reinstall: 'Son runner ne précise pas comment il a été installé. Installez-le à nouveau sur son hôte avec la commande de Add runtime.',
771
771
  },
772
772
  tool: {
@@ -783,7 +783,7 @@ const frFR = {
783
783
  version: 'Version {{version}}',
784
784
  },
785
785
  trust: {
786
- isolationHint: runtimesEnUS.runtimes.trust.isolationHint,
786
+ isolationHint: 'Pour les environnements d’exécution personnels comme partagés, exécutez le runner dans une machine virtuelle ou un environnement isolé : les Agents ont un accès complet et le runner n’est pas un bac à sable.',
787
787
  label: 'Pour qui ça marche',
788
788
  team: 'Équipe',
789
789
  teamHint: "Exécute le travail que tout membre de l'équipe commence, avec ses variables et ses secrets. Pour les serveurs partagés et les machines virtuelles.",
@@ -809,9 +809,9 @@ const frFR = {
809
809
  show: 'Version {{version}} : un runner plus récent est disponible',
810
810
  available: 'Mise à jour disponible',
811
811
  badge: 'Évolutif',
812
- title: 'Un exécuteur plus récent pour {{name}}',
812
+ title: 'Un environnement d’exécution plus récent pour {{name}}',
813
813
  description: '{{version}} installée, cette application sert {{latest}}.',
814
- hint: "Il se met à jour lorsqu'aucun agent n'est en cours d'exécution. Pour le mettre à jour maintenant, exécutez-le sur son hôte.",
814
+ hint: "Il se met à jour lorsqu'aucun Agent n'est en cours d'exécution. Pour le mettre à jour maintenant, exécutez-le sur son hôte.",
815
815
  },
816
816
  revoke: {
817
817
  title: "Révoquer les informations d'identification de {{name}} ?",
@@ -828,9 +828,19 @@ const frFR = {
828
828
  revokedList_many: "Les environnements d'exécution {{count}} ont été révoqués.",
829
829
  },
830
830
  connect: {
831
- ...runtimesEnUS.connect,
831
+ manual: 'Ou installez-le vous-même',
832
+ promptTitle: 'Laisser un Agent le configurer',
833
+ promptCopy: 'Copier l’instruction pour l’Agent',
834
+ promptShow: 'Voir l’instruction',
835
+ promptHide: 'Masquer l’instruction',
836
+ promptHint: 'Copiez cette instruction vers un Agent (Claude Code, Codex, etc.) sur la machine cible : il effectuera les étapes ci-dessous à votre place. Elle contient un identifiant à usage unique : ne la donnez qu’à cet Agent.',
837
+ windowsPowerShell: '1. Installez WSL : exécutez dans PowerShell, puis redémarrez Windows :',
838
+ windowsUbuntu: '2. Ouvrez Ubuntu et exécutez la commande Linux ci-dessous. Installez Node.js et les outils de développement dans WSL Ubuntu.',
839
+ windowsNetwork: 'Si WSL n’a pas accès à Internet, activez la mise en réseau en miroir dans WSL.',
840
+ promptWindows: 'D’ABORD, détermine si tu t’exécutes dans WSL Ubuntu. Si tu n’es PAS dans WSL Ubuntu, ARRÊTE-TOI : n’exécute aucune commande d’installation ou d’enregistrement. Dis à l’utilisateur d’exécuter wsl --install dans PowerShell, de redémarrer Windows, puis d’ouvrir l’Agent dans WSL Ubuntu et de relancer cette instruction. Poursuis les étapes ci-dessous UNIQUEMENT dans WSL Ubuntu. Installe Node.js et les outils de développement dans WSL. Si WSL n’a pas accès à Internet, active la mise en réseau en miroir.\n\n',
841
+ promptBody: 'Configure cette machine comme environnement d’exécution NocoBase. Utilise une machine virtuelle ou un environnement isolé : les Agents ont un accès complet et le runner n’est pas un bac à sable.\n\nVérifie que Node.js 24 ou plus récent est présent et que ces outils de développement sont installés et connectés : {{tools}}. Utilise leurs méthodes d’installation officielles, pas les paquets snap.\n\nExécute cette commande d’enregistrement à usage unique pour installer le runner et la CLI de l’application, l’enregistrer et installer son service en arrière-plan :\n{{command}}\n\nRésous les problèmes de configuration courants : assure-toi que le PATH du service contient les outils de développement (vérifie which codex / which claude dans le terminal d’installation, puis relance nocobase-runner service install et redémarre le service) ; configure le proxy nécessaire pour les téléchargements et pour le service ; résous les droits d’installation globale npm avec un préfixe appartenant à l’utilisateur ou un gestionnaire de versions Node, sans sudo npm install.\n\nTermine par nocobase-runner status et confirme la connexion et les outils de développement. Signale-moi les étapes de connexion ou de réseau qu’il me reste à faire. Traite l’identifiant d’enregistrement comme un secret et ne l’inclus pas dans ton rapport.',
832
842
  title: "Ajouter un environnement d'exécution",
833
- description: "Exécutez la commande ci-dessous sur un hôte sur lequel un outil de codage est installé : un serveur, une VM ou votre propre appareil. Les agents y fonctionnent avec un accès complet, en tant qu'utilisateur qui exécute le exécuteur, et peuvent lire et modifier tout ce que l'utilisateur peut faire, clés SSH et autres informations d'identification incluses. Le runner n'est pas une barrière de sécurité : exécutez-le en tant qu'utilisateur dédié, dans un conteneur ou dans une VM.",
843
+ description: "Exécutez la commande ci-dessous sur un hôte sur lequel un outil de codage est installé : un serveur, une VM ou votre propre appareil. Les agents y fonctionnent avec un accès complet, en tant qu'utilisateur qui exécute le environnement d’exécution, et peuvent lire et modifier tout ce que l'utilisateur peut faire, clés SSH et autres informations d'identification incluses. Le runner n'est pas une barrière de sécurité : exécutez-le en tant qu'utilisateur dédié, dans un conteneur ou dans une VM.",
834
844
  createCredential: "Générer la commande d'installation",
835
845
  advanced: 'Avancé : limites par outil de codage',
836
846
  run: 'Exécutez ceci sur cet hôte. Il télécharge le runner (nocobase-runner) et la CLI de cette application à partir de cette application, enregistre le runner et le démarre à la connexion :',
@@ -856,8 +866,23 @@ const frFR = {
856
866
  },
857
867
  chat: {
858
868
  // Keep new guidance available in English until this locale is translated.
859
- executionFailed: chatEnUS.chat.executionFailed,
860
- fileInputFailures: chatEnUS.chat.fileInputFailures,
869
+ executionFailed: 'L’exécution a échoué. Relisez la conversation enregistrée avant de réessayer.',
870
+ fileInputFailures: {
871
+ imageCapability: 'L’entrée d’images n’est pas configurée pour ce modèle. Passez à un modèle dont la prise en charge des images est vérifiée.',
872
+ unsupportedFormat: 'L’entrée pour ce format de pièce jointe n’est pas configurée pour le modèle sélectionné, et aucun extracteur de texte local ne le prend en charge. Utilisez un format de document pris en charge ou un modèle dont la prise en charge des fichiers est vérifiée.',
873
+ formatMismatch: 'Le nom du fichier joint et son type de média indiquent des formats de document différents. Vérifiez le format du fichier et téléversez-le à nouveau.',
874
+ invalidInline: 'Les données du fichier joint sont invalides ou trop volumineuses. Téléversez-le à nouveau ou utilisez un fichier plus petit.',
875
+ fileTooLarge: 'Une pièce jointe dépasse sa taille maximale. Utilisez un fichier plus petit.',
876
+ inputTooLarge: 'Les pièces jointes de la conversation dépassent la limite d’entrée. Utilisez des fichiers plus petits ou démarrez une nouvelle conversation.',
877
+ documentTooLarge: 'La pièce jointe dépasse la limite de texte extrait. Utilisez un fichier plus petit.',
878
+ contextTooLarge: 'Les pièces jointes de la conversation dépassent la limite de texte extrait. Utilisez des fichiers plus petits ou démarrez une nouvelle conversation.',
879
+ fileCount: 'La conversation dépasse la limite de 100 fichiers en entrée. Démarrez une nouvelle conversation.',
880
+ nativeFileCount: 'La conversation dépasse la limite configurée de fichiers natifs. Utilisez moins de pièces jointes ou convertissez-les en un document texte pris en charge.',
881
+ unreadable: 'La pièce jointe ne contient aucun texte lisible. Les documents numérisés nécessitent l’OCR.',
882
+ extractionFailed: 'Impossible d’extraire le texte de la pièce jointe. Vérifiez que le document est lisible et téléversez-le à nouveau.',
883
+ extractionTimeout: 'L’extraction du texte de la pièce jointe a expiré. Utilisez un fichier plus petit ou réessayez.',
884
+ preparationFailed: 'Impossible de préparer la pièce jointe. Vérifiez votre accès et le format du fichier, puis réessayez.',
885
+ },
861
886
  untitled: 'Conversation sans titre',
862
887
  renamed: 'Renommé',
863
888
  archivedNamed: 'Archivé « {{title}} »',
@@ -870,23 +895,23 @@ const frFR = {
870
895
  agentArchived: 'Non activé',
871
896
  forbidden: 'Non disponible pour vous',
872
897
  noModel: "Configurez d'abord un modèle de chat",
873
- noRunner: 'Aucun exécuteur en ligne, ne peut être choisi',
874
- othersPersonal: "Seuls les exécuteurs personnels des autres l'ont",
898
+ noRunner: 'Aucun environnement d’exécution en ligne, ne peut être choisi',
899
+ othersPersonal: "Seuls les environnements d’exécution personnels des autres l'ont",
875
900
  modelUnavailable: 'Modèle indisponible',
876
901
  },
877
902
  offline: {
878
- fallbackDone: 'Cette conversation utilise désormais un autre agent',
903
+ fallbackDone: 'Cette conversation utilise désormais un autre Agent',
879
904
  restoreDone: 'Rebasculé',
880
- newSession: "L'agent démarre une nouvelle session et lit cette conversation.",
905
+ newSession: "L'Agent démarre une nouvelle session et lit cette conversation.",
881
906
  },
882
907
  notice: {
883
908
  switchedToDefault: "Passé à {{name}}, la valeur par défaut du système, jusqu'à ce que {{own}} soit de retour.",
884
- switchedToOnline: "{{own}} n'a pas de exécuteur pour vous maintenant, donc {{name}} répond jusqu'à ce que {{own}} soit de retour.",
885
- onlineFallbackUnavailable: "L'agent de secours en ligne ne peut pas répondre ({{reason}}). Cette conversation reste avec {{own}} en attendant un exécuteur.",
909
+ switchedToOnline: "{{own}} n'a pas de environnement d’exécution pour vous maintenant, donc {{name}} répond jusqu'à ce que {{own}} soit de retour.",
910
+ onlineFallbackUnavailable: "L'Agent de secours en ligne ne peut pas répondre ({{reason}}). Cette conversation reste avec {{own}} en attendant un environnement d’exécution.",
886
911
  switchedAgent: 'Passage à {{name}} en conservant l’historique de cette conversation.',
887
912
  switchedBack: 'De retour avec {{name}}.',
888
- runFailed: "L'agent s'arrête avant de répondre.",
889
- runFailedReason: "L'agent s'arrête avant de répondre : {{reason}}",
913
+ runFailed: "L'Agent s'arrête avant de répondre.",
914
+ runFailedReason: "L'Agent s'arrête avant de répondre : {{reason}}",
890
915
  runCancelled: 'Annulation demandée.',
891
916
  },
892
917
  consultation: {
@@ -901,19 +926,19 @@ const frFR = {
901
926
  },
902
927
  agents: {
903
928
  personalOnly: 'Exécuteurs personnels uniquement',
904
- hint: "Répertorie les agents activés et explique pourquoi on ne peut pas vous répondre maintenant. Les réponses courent sur un exécuteur : la première réponse attend qu'on la prenne, généralement quelques secondes.",
905
- chooseFor: 'Choisissez un agent',
906
- empty: 'Aucun agent que vous ne pouvez choisir',
907
- none: 'Aucun agent',
929
+ hint: "Répertorie les Agents activés et explique pourquoi on ne peut pas vous répondre maintenant. Les réponses courent sur un environnement d’exécution : la première réponse attend qu'on la prenne, généralement quelques secondes.",
930
+ chooseFor: 'Choisissez un Agent',
931
+ empty: 'Aucun Agent que vous ne pouvez choisir',
932
+ none: 'Aucun Agent',
908
933
  unknown: 'Agent inconnu',
909
- placeholder: 'Choisissez un agent',
934
+ placeholder: 'Choisissez un Agent',
910
935
  myDefault: 'Mon défaut',
911
936
  systemDefault: 'Valeur par défaut du système',
912
937
  },
913
938
  },
914
939
  chatProfile: {
915
- loadFailed: 'Impossible de charger les paramètres de votre agent',
916
- defaultAgent: 'Mon agent de chat par défaut',
940
+ loadFailed: 'Impossible de charger les paramètres de votre Agent',
941
+ defaultAgent: 'My Agent de chat par défaut',
917
942
  systemDefault: 'Valeur par défaut du système',
918
943
  systemDefaultNamed: 'Valeur par défaut du système ({{name}})',
919
944
  noDefault: "Aucune valeur par défaut du système n'est définie.",
@@ -921,11 +946,11 @@ const frFR = {
921
946
  },
922
947
  models: {
923
948
  title: 'Modèles',
924
- description: "Les services modèles que les agents en ligne appellent et les modèles que chacun propose : modèles de chat pour les agents, modèles d'intégration et de reclassement pour la recherche.",
949
+ description: "Les services modèles que les Agents en ligne appellent et les modèles que chacun propose : modèles de chat pour les Agents, modèles d'intégration et de reclassement pour la recherche.",
925
950
  },
926
951
  defaultModel: {
927
952
  title: 'Modèle de discussion par défaut',
928
- description: "Les agents en ligne sans modèle de leur propre réponse, comme un nouvel agent ou un agent fourni avec l'application.",
953
+ description: "Les Agents en ligne sans modèle de leur propre réponse, comme un nouvel Agent ou un Agent fourni avec l'application.",
929
954
  none: "Aucun modèle de chat n'est encore activé. Ajoutez un service de modèle et activez un modèle de discussion : le premier devient le modèle par défaut.",
930
955
  saved: 'Le modèle de discussion par défaut est désormais {{model}}.',
931
956
  },
@@ -939,7 +964,7 @@ const frFR = {
939
964
  loadFailed: 'Impossible de charger les services de modèles',
940
965
  empty: {
941
966
  title: 'Pas encore de service modèle',
942
- description: 'Une fois que vous avez ajouté un service modèle, les agents en ligne peuvent répondre via celui-ci.',
967
+ description: 'Une fois que vous avez ajouté un service modèle, les Agents en ligne peuvent répondre via celui-ci.',
943
968
  readOnly: "Demandez à un administrateur d'ajouter un service modèle.",
944
969
  },
945
970
  add: {
@@ -964,7 +989,7 @@ const frFR = {
964
989
  turnedOff: '{{title}} est éteint.',
965
990
  name: 'Nom',
966
991
  enabled: 'Activé',
967
- enabledHint: "Les agents en ligne ne peuvent utiliser ses modèles que lorsqu'il est activé.",
992
+ enabledHint: "Les Agents en ligne ne peuvent utiliser ses modèles que lorsqu'il est activé.",
968
993
  saved: '{{title}} enregistré.',
969
994
  delete: 'Supprimer',
970
995
  deleteTitle: 'Supprimer {{title}} ?',
@@ -987,7 +1012,7 @@ const frFR = {
987
1012
  },
988
1013
  models: {
989
1014
  title: 'Modèles',
990
- description: "Vérifiez les modèles proposés par ce service et indiquez à quoi chacun sert : les modèles de chat répondent aux agents, intègrent le texte d'index des modèles pour la recherche, reclassent les modèles dans l'ordre des résultats de recherche. Un modèle d'intégration peut demander des vecteurs d'une taille.",
1015
+ description: "Vérifiez les modèles proposés par ce service et indiquez à quoi chacun sert : les modèles de chat répondent aux Agents, intègrent le texte d'index des modèles pour la recherche, reclassent les modèles dans l'ordre des résultats de recherche. Un modèle d'intégration peut demander des vecteurs d'une taille.",
991
1016
  fetching: 'Récupération des modèles du fournisseur…',
992
1017
  fetchFailed: 'Le fournisseur ne liste pas ses modèles : {{message}}',
993
1018
  fetch: 'Récupérer des modèles',
@@ -1085,10 +1110,10 @@ const frFR = {
1085
1110
  loadFailed: 'Impossible de charger les compétences',
1086
1111
  backToList: 'Retour aux compétences',
1087
1112
  emptyTitle: "Aucune compétence pour l'instant",
1088
- emptyDescription: "Une fois que vous avez ajouté une compétence, les agents lisent son SKILL.md chaque fois qu'une tâche l'exige.",
1113
+ emptyDescription: "Une fois que vous avez ajouté une compétence, les Agents lisent son SKILL.md chaque fois qu'une tâche l'exige.",
1089
1114
  emptyReadOnly: "Demandez à un administrateur d'ajouter une compétence.",
1090
1115
  content: 'SKILL.md',
1091
- contentHint: 'Le nom du dossier est le nom du dossier de la compétence : le modifier renomme la compétence. La description indique aux agents quand la lire.',
1116
+ contentHint: 'Le nom du dossier est le nom du dossier de la compétence : le modifier renomme la compétence. La description indique aux Agents quand la lire.',
1092
1117
  contentTooLarge: 'SKILL.md est plus grand que {{max}}.',
1093
1118
  emptyContent: "Cette compétence n'a pas encore de contenu.",
1094
1119
  created: 'Compétence créée "{{name}}"',
@@ -1101,14 +1126,14 @@ const frFR = {
1101
1126
  edit: 'Modifier',
1102
1127
  delete: 'Supprimer la compétence',
1103
1128
  deleteTitle: 'Supprimer la compétence "{{name}}" ?',
1104
- deleteDescription: 'Tout agent et tout lieu utilisant cette compétence par défaut la perd.',
1129
+ deleteDescription: 'Tout Agent et tout lieu utilisant cette compétence par défaut la perd.',
1105
1130
  readOnly: "Seuls le créateur de la compétence et les administrateurs de l'espace de travail peuvent modifier cette compétence.",
1106
1131
  conflict: "Quelqu'un d'autre vient de modifier cette compétence. La dernière version est chargée ; essayer à nouveau.",
1107
1132
  conflictTitle: "Quelqu'un d'autre vient de modifier cette compétence",
1108
1133
  conflictDraft: "Quelqu'un a enregistré une nouvelle version après que vous ayez commencé à modifier, vos modifications n'ont donc pas été enregistrées. Copiez ce que vous souhaitez conserver, puis chargez la dernière version et modifiez-la à nouveau.",
1109
1134
  loadLatest: 'Charger la dernière version',
1110
1135
  mountedAgents: 'Agents attachés',
1111
- noAgents: 'Pas encore attaché à un agent.',
1136
+ noAgents: 'Pas encore attaché à un Agent.',
1112
1137
  defaults: 'Compétence par défaut de : {{places}}.',
1113
1138
  defaultsSeparator: ', ',
1114
1139
  files: 'Fichiers',
@@ -1121,7 +1146,7 @@ const frFR = {
1121
1146
  binaryFile: 'Fichier binaire, {{size}}. Il ne peut pas être modifié ici.',
1122
1147
  executable: 'Exécutable',
1123
1148
  scriptBadge: 'Scénario',
1124
- scriptsNote: 'Possède des scripts : les agents en ligne peuvent les lire mais ne les exécutent jamais',
1149
+ scriptsNote: 'Possède des scripts : les Agents en ligne peuvent les lire mais ne les exécutent jamais',
1125
1150
  compatibility: 'Compatibilité : {{value}}',
1126
1151
  fileContent: 'Contenu de {{path}}',
1127
1152
  export: 'Exporter',
@@ -1152,8 +1177,8 @@ const frFR = {
1152
1177
  name: 'Nom',
1153
1178
  renameTitle: 'Renommer "{{name}}"',
1154
1179
  conventional: {
1155
- scripts: "Les agents de code peuvent s'exécuter. Les agents en ligne le lisent uniquement.",
1156
- references: 'Les agents de documentation lisent quand ils en ont besoin.',
1180
+ scripts: "Les Agents de code peuvent s'exécuter. Les Agents en ligne le lisent uniquement.",
1181
+ references: 'Les Agents de documentation lisent quand ils en ont besoin.',
1157
1182
  assets: 'Modèles, images et autres ressources.',
1158
1183
  },
1159
1184
  problems: {
@@ -1188,7 +1213,7 @@ const frFR = {
1188
1213
  },
1189
1214
  },
1190
1215
  template: {
1191
- description: "Que fait cette compétence et quand un agent doit l'utiliser.",
1216
+ description: "Que fait cette compétence et quand un Agent doit l'utiliser.",
1192
1217
  title: 'Nouvelle compétence',
1193
1218
  whenToUse: 'Quand utiliser',
1194
1219
  whenToUseHint: 'Décrire les tâches qui font appel à cette compétence.',
@@ -1207,7 +1232,7 @@ const frFR = {
1207
1232
  },
1208
1233
  versions: {
1209
1234
  title: 'Versions',
1210
- description: 'Chaque enregistrement crée une nouvelle version ; les agents reçoivent toujours la plus récente.',
1235
+ description: 'Chaque enregistrement crée une nouvelle version ; les Agents reçoivent toujours la plus récente.',
1211
1236
  current: 'Actuel',
1212
1237
  compare: 'Comparer',
1213
1238
  compareTitle: 'Version {{version}} → version {{current}}',
@@ -1215,7 +1240,7 @@ const frFR = {
1215
1240
  unchanged: 'inchangé',
1216
1241
  restore: 'Restaurer',
1217
1242
  restoreTitle: 'Restaurer la version {{version}} ?',
1218
- restoreDescription: "Elle est à nouveau enregistrée en tant que version la plus récente ; les agents l'obtiennent lors de leur prochaine exécution. Rien n'est perdu : la version actuelle reste dans l'historique.",
1243
+ restoreDescription: "Elle est à nouveau enregistrée en tant que version la plus récente ; les Agents l'obtiennent lors de leur prochaine exécution. Rien n'est perdu : la version actuelle reste dans l'historique.",
1219
1244
  restored: 'Version restaurée {{version}} comme version {{current}}.',
1220
1245
  },
1221
1246
  },
@@ -1224,22 +1249,22 @@ const frFR = {
1224
1249
  reasons: {
1225
1250
  updatePending: 'Runner en attente de mise à jour ; le nouveau travail est suspendu',
1226
1251
  pruning: 'Exécuteur nettoyant magasin partagé; le nouveau travail est suspendu',
1227
- toolNotInstalled: "Aucun exécuteur connecté n'a installé cet outil",
1228
- incompatible: 'Les exécuteurs connectés ne prennent pas en charge cette charge de travail ; mise à niveau requise',
1252
+ toolNotInstalled: "Aucun environnement d’exécution connecté n'a installé cet outil",
1253
+ incompatible: 'Les environnements d’exécution connectés ne prennent pas en charge cette charge de travail ; mise à niveau requise',
1229
1254
  restricted: "Restrictions liées à la stratégie d'exécution, au répertoire ou aux variables",
1230
1255
  unknown: "L'éligibilité à la charge de travail n'est pas établie",
1231
- agentArchived: "L'agent est archivé",
1256
+ agentArchived: "L'Agent est archivé",
1232
1257
  delayed: 'Prévu pour {{until}}',
1233
1258
  noRunnerOnline: "Pas d'exécution en ligne",
1234
1259
  runnersOffline: "Ses environnements d'exécution sont hors ligne",
1235
1260
  toolQuota: 'Quota de l’outil épuisé ; réinitialisation : {{until}}',
1236
1261
  toolUnavailable: 'Outil non connecté, désactivé ou modèle demandé indisponible ({{tool}})',
1237
- noSharedRunner: 'Seuls les exécuteurs personnels des autres personnes sont en ligne',
1262
+ noSharedRunner: 'Seuls les environnements d’exécution personnels des autres personnes sont en ligne',
1238
1263
  missingFeatures: "Aucun moteur d'exécution ne prend en charge {{features}}",
1239
1264
  secretsNotAllowed: "Nécessite un environnement d'exécution en équipe : {{variables}} est uniquement destiné aux environnements d'exécution en équipe.",
1240
1265
  sameWorkActive: 'Après la course, déjà dessus',
1241
1266
  concurrencyFull: 'Accès simultané complet ({{active}}/{{limit}})',
1242
- runnersBusy: 'Les exécuteurs compatibles sont pleins',
1267
+ runnersBusy: 'Les environnements d’exécution compatibles sont pleins',
1243
1268
  toolSlotsFull: 'Emplacements {{tool}} pleins ({{used}}/{{limit}})',
1244
1269
  setupRetrying: 'La préparation a échoué ; nouvelle tentative : {{detail}}',
1245
1270
  next: 'Next pour un runtime gratuit',
@@ -1258,8 +1283,8 @@ const frFR = {
1258
1283
  actions: {
1259
1284
  edit: {
1260
1285
  title: 'Agents de changement et compétences',
1261
- description: "Modifier les paramètres, les compétences et les variables d'un agent, l'archiver, le restaurer et le supprimer, et modifier les compétences. Un agent ne dispose d'aucune capacité autre que celle de l'éditeur.",
1262
- related: "Agents de changement et compétences (agents qu'ils possèdent et compétences qu'ils ont créées)",
1286
+ description: "Modifier les paramètres, les compétences et les variables d'un Agent, l'archiver, le restaurer et le supprimer, et modifier les compétences. Un Agent ne dispose d'aucune capacité autre que celle de l'éditeur.",
1287
+ related: "Agents de changement et compétences (Agents qu'ils possèdent et compétences qu'ils ont créées)",
1263
1288
  relatedLabel: "Agents que je possède et compétences que j'ai créées",
1264
1289
  relatedHint: "Agents dont je suis propriétaire et compétences que j'ai créées",
1265
1290
  all: 'Agents de changement et compétences (tous)',
@@ -1282,11 +1307,11 @@ const frFR = {
1282
1307
  keyScopes: {
1283
1308
  agents: {
1284
1309
  title: 'Agents',
1285
- description: "Voir agents, compétences et courses ; changer d'agent et de compétence, annuler et réessayer les exécutions.",
1310
+ description: "Voir Agents, compétences et courses ; changer d'Agent et de compétence, annuler et réessayer les exécutions.",
1286
1311
  },
1287
1312
  runners: {
1288
1313
  title: 'Environnements d’exécution',
1289
- description: "Voir exécuteurs et jetons d'inscription ; gérer les exécuteurs.",
1314
+ description: "Voir environnements d’exécution et jetons d'inscription ; gérer les environnements d’exécution.",
1290
1315
  },
1291
1316
  prices: {
1292
1317
  title: 'Tarifs des modèles',