@jossuealcala/madre 1.0.1 → 1.0.2

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 (172) hide show
  1. package/ADDITIONAL-TERMS.md +93 -0
  2. package/CHANGELOG.en.md +1945 -0
  3. package/CHANGELOG.md +34 -1
  4. package/CONTRIBUTING.md +1 -1
  5. package/LICENSE +661 -202
  6. package/NOTICE +26 -14
  7. package/README.en.md +245 -0
  8. package/README.md +19 -10
  9. package/TRADEMARKS.en.md +50 -0
  10. package/TRADEMARKS.md +33 -16
  11. package/bin/madre.mjs +2 -0
  12. package/docs/INTERNALS.md +6 -0
  13. package/docs/REFERENCE.md +11 -2
  14. package/docs/en/INTERNALS.md +103 -0
  15. package/docs/en/REFERENCE.md +339 -0
  16. package/docs/en/SDK.md +306 -0
  17. package/docs/en/training/README.md +59 -0
  18. package/docs/training/README.md +20 -8
  19. package/docs/training/train.sh +2 -1
  20. package/package.json +11 -3
  21. package/public/abduction.js +2 -0
  22. package/public/app.js +1549 -409
  23. package/public/attribution.js +71 -0
  24. package/public/brands.js +3 -1
  25. package/public/editor.js +2 -0
  26. package/public/es.js +620 -400
  27. package/public/i18n.js +25 -1
  28. package/public/index.html +13 -10
  29. package/public/inquiry.js +2 -0
  30. package/public/loader.js +2 -0
  31. package/public/macroverso.js +2 -0
  32. package/public/nostromo-engine.js +2 -0
  33. package/public/resay.js +6 -0
  34. package/public/review-ask.js +2 -0
  35. package/public/routing.js +23 -1
  36. package/public/salas-mac.css +21 -4
  37. package/public/salas-mac.html +5 -1
  38. package/public/salas-mac.js +53 -28
  39. package/public/salas.css +2 -0
  40. package/public/salas.html +1 -0
  41. package/public/salas.js +4 -2
  42. package/public/styles.css +957 -18
  43. package/public/syntax.js +2 -0
  44. package/public/touch.js +2 -0
  45. package/public/tour-chapters.js +2 -0
  46. package/public/tour.js +37 -0
  47. package/public/troubleshooting.js +18 -16
  48. package/src/adapters/claude.mjs +2 -0
  49. package/src/adapters/codex.mjs +2 -0
  50. package/src/adapters/gemini.mjs +3 -1
  51. package/src/adapters/madre.mjs +3 -1
  52. package/src/adapters/opencode.mjs +7 -3
  53. package/src/adapters/process.mjs +2 -0
  54. package/src/asking.mjs +2 -0
  55. package/src/auth-probe.mjs +3 -1
  56. package/src/bridge/devices.mjs +2 -0
  57. package/src/bridge/handoff.mjs +2 -0
  58. package/src/bridge/host.mjs +2 -0
  59. package/src/bridge/network.mjs +2 -0
  60. package/src/bridge/policy.mjs +3 -1
  61. package/src/bridge/qr.mjs +2 -0
  62. package/src/bridge/server.mjs +2 -0
  63. package/src/capabilities.mjs +2 -0
  64. package/src/chats.mjs +2 -0
  65. package/src/checkpoint.mjs +2 -0
  66. package/src/choices.mjs +2 -0
  67. package/src/cli-args.mjs +2 -0
  68. package/src/cold.mjs +2 -0
  69. package/src/commands.mjs +2 -0
  70. package/src/config.mjs +2 -0
  71. package/src/conversation-context.mjs +15 -1
  72. package/src/credentials.mjs +32 -3
  73. package/src/dataset.mjs +2 -0
  74. package/src/directives.mjs +2 -0
  75. package/src/distiller.mjs +2 -0
  76. package/src/embeddings.mjs +2 -0
  77. package/src/enlaces.mjs +6 -4
  78. package/src/event-store.mjs +2 -0
  79. package/src/exam.mjs +6 -4
  80. package/src/extensions.mjs +2 -0
  81. package/src/eyecat-watch.mjs +2 -0
  82. package/src/eyecat.mjs +2 -0
  83. package/src/file-ops.mjs +2 -0
  84. package/src/files.mjs +32 -0
  85. package/src/github.mjs +2 -0
  86. package/src/heartbeat.mjs +2 -0
  87. package/src/i18n.mjs +15 -1
  88. package/src/image-studio.mjs +2 -0
  89. package/src/json-file.mjs +2 -0
  90. package/src/launch.mjs +2 -0
  91. package/src/lease.mjs +5 -1
  92. package/src/lobby-work.mjs +2 -0
  93. package/src/local-ai.mjs +2 -0
  94. package/src/looks.mjs +2 -0
  95. package/src/maturity.mjs +3 -1
  96. package/src/mcp/connect.mjs +345 -0
  97. package/src/mcp/github-server.mjs +2 -0
  98. package/src/mcp/image-server.mjs +2 -0
  99. package/src/mcp/memory-server.mjs +2 -0
  100. package/src/mcp/proxy.mjs +153 -0
  101. package/src/mcp/smtp-server.mjs +2 -0
  102. package/src/memory-dashboard.mjs +2 -0
  103. package/src/memory-tools.mjs +2 -0
  104. package/src/memory.mjs +2 -0
  105. package/src/models.mjs +45 -3
  106. package/src/modules/ahp.mjs +2 -0
  107. package/src/modules/ash-policy.mjs +2 -0
  108. package/src/modules/ash.mjs +3 -1
  109. package/src/modules/bishop-plan.mjs +5 -3
  110. package/src/modules/bishop.mjs +13 -11
  111. package/src/modules/choices.mjs +2 -0
  112. package/src/modules/correo.mjs +2 -0
  113. package/src/modules/enlaces.mjs +2 -0
  114. package/src/modules/git-pulse.mjs +2 -0
  115. package/src/modules/github.mjs +2 -0
  116. package/src/modules/helpers.mjs +2 -0
  117. package/src/modules/image-studio.mjs +3 -1
  118. package/src/modules/index.mjs +4 -1
  119. package/src/modules/intents-calibration.mjs +2 -0
  120. package/src/modules/intents-desk.mjs +4 -2
  121. package/src/modules/intents-observe.mjs +2 -0
  122. package/src/modules/intents-policy.mjs +4 -1
  123. package/src/modules/intents-try.mjs +2 -0
  124. package/src/modules/intents.mjs +8 -6
  125. package/src/modules/mcp-connect.mjs +293 -0
  126. package/src/modules/ollama.mjs +3 -1
  127. package/src/modules/playwright.mjs +25 -10
  128. package/src/modules/ripley.mjs +2 -0
  129. package/src/modules/runs.mjs +5 -3
  130. package/src/modules/sdk.mjs +2 -0
  131. package/src/modules/updates.mjs +2 -0
  132. package/src/mother.mjs +2 -0
  133. package/src/ollama.mjs +2 -0
  134. package/src/outbound.mjs +7 -5
  135. package/src/override.mjs +2 -0
  136. package/src/ports.mjs +2 -0
  137. package/src/prices.mjs +2 -0
  138. package/src/privacy.mjs +2 -0
  139. package/src/quota-monitor.mjs +2 -0
  140. package/src/quota-sources.mjs +2 -0
  141. package/src/request-guard.mjs +2 -0
  142. package/src/review-ask.mjs +2 -0
  143. package/src/room/archivist.mjs +2 -0
  144. package/src/room/attachments.mjs +2 -0
  145. package/src/room/budget.mjs +2 -0
  146. package/src/room/context.mjs +2 -0
  147. package/src/room/control.mjs +7 -1
  148. package/src/room/copilot.mjs +76 -0
  149. package/src/room/economy.mjs +2 -0
  150. package/src/room/escalation.mjs +2 -0
  151. package/src/room/ghost.mjs +2 -0
  152. package/src/room/guard.mjs +2 -0
  153. package/src/room/prompt.mjs +13 -4
  154. package/src/room/returns.mjs +82 -0
  155. package/src/room/runs.mjs +4 -0
  156. package/src/room/vectors.mjs +2 -0
  157. package/src/room.mjs +209 -31
  158. package/src/router.mjs +2 -0
  159. package/src/runs.mjs +2 -0
  160. package/src/runtime-detection.mjs +2 -0
  161. package/src/salas.mjs +2 -0
  162. package/src/sentinel-errors.mjs +2 -0
  163. package/src/server-sentinel.mjs +2 -0
  164. package/src/server.mjs +141 -34
  165. package/src/setup.mjs +2 -0
  166. package/src/smtp.mjs +2 -0
  167. package/src/tour.mjs +2 -0
  168. package/src/updates.mjs +2 -0
  169. package/src/usage-sentinel.mjs +2 -0
  170. package/src/vault.mjs +2 -0
  171. package/src/verdict.mjs +3 -1
  172. package/src/whats-new.mjs +2 -0
package/public/es.js CHANGED
@@ -1,3 +1,5 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // MADRE · © 2026 Jossue Alcalá · GNU AGPL v3 with additional terms (Section 7): ADDITIONAL-TERMS.md
1
3
  // MADRE en español.
2
4
  //
3
5
  // La clave es la frase en inglés tal como está escrita en el código; el valor es lo que dice
@@ -15,14 +17,14 @@ export const ES = {
15
17
  'CREAR encendido: di qué quieres crear. Los archivos nuevos se guardan en su lugar dentro del proyecto; no se modifica nada de lo que ya existe.',
16
18
  'Compact prose. Nothing you write is altered; only the answers get shorter.':
17
19
  'Respuestas más cortas. Lo que tú escribes no cambia; solo se acortan las respuestas.',
18
- 'In this project: {on} output tokens is the middle turn with TOKEN SAVER ({onTurns} turns), {off} without it ({offTurns}). You choose when to ask for compact prose, so these are different tasks, not the same task twice.':
20
+ 'In this project, a typical answer uses {on} output tokens with TOKEN SAVER ({onTurns} answers) and {off} without it ({offTurns}). You choose when to ask for compact answers, so these are different tasks, not the same task twice.':
19
21
  'En este proyecto, una respuesta típica usa {on} tokens de salida con AHORRO DE TOKENS ({onTurns} respuestas) y {off} sin él ({offTurns}). Tú decides cuándo pedir respuestas compactas, así que se comparan tareas distintas, no la misma tarea dos veces.',
20
22
  '{n} uncharged': '{n} tokens no cobrados',
21
- '{cached} tokens this CLI read back from its own cache instead of charging them again (measured). {unsent} tokens of briefing the project never sent (estimated at {rate} characters per token). Neither is the Token saver: the Token saver shortens the answer, and that is the figure above the bubble.':
22
- '{cached} tokens que la app del agente leyó de su caché sin volver a cobrarlos (medido). {unsent} tokens que MADRE no tuvo que enviarle al agente (estimado a {rate} caracteres por token). Nada de esto es el Ahorro de tokens: ese acorta la respuesta y su cifra está arriba de la burbuja.',
23
+ "{cached} tokens this agent's app read back from its own cache, billed at a lower price than new input (measured). {unsent} tokens MADRE did not need to send the agent (estimated at {rate} characters per token). Neither is the Token saver: the Token saver shortens the answer, and its figure is above the bubble.":
24
+ '{cached} tokens que la app del agente leyó de su caché, cobrados a un precio menor que la entrada nueva (medido). {unsent} tokens que MADRE no tuvo que enviarle al agente (estimado a {rate} caracteres por token). Nada de esto es el Ahorro de tokens: ese acorta la respuesta y su cifra está arriba de la burbuja.',
23
25
  'TOKENS SAVED': 'TOKENS AHORRADOS',
24
26
  'input the CLI did not charge again · {pct} of the input': 'entrada que la app del agente no volvió a cobrar · {pct} de la entrada',
25
- 'SPENT IN': 'GASTADO EN ENTRADA',
27
+ 'SPENT ON INPUT': 'GASTADO EN ENTRADA',
26
28
  'input tokens actually charged': 'tokens de entrada realmente cobrados',
27
29
  '@madre can answer this from the project archive, on this computer, for no tokens · it read {why}':
28
30
  '@madre puede contestar esto desde la memoria del proyecto, en esta computadora, sin gastar tokens · consultó {why}',
@@ -46,11 +48,11 @@ export const ES = {
46
48
  '{level} was enough in {n} of your turns': '{level} alcanzó en {n} de tus respuestas',
47
49
  'From your use': 'De tu uso',
48
50
  // Probar un nivel más bajo en un solo mensaje.
49
- '{level} might be enough · try it on this one and Intenciones will notice': 'podría bastar {level} · pruébalo en esta pregunta e Intenciones lo tendrá en cuenta',
51
+ '{level} might be enough · try it on this one and MADRE will notice': 'podría bastar {level} · pruébalo en esta pregunta y MADRE lo tendrá en cuenta',
50
52
  'Trial': 'Prueba',
51
53
  'Try {level} on this one': 'Probar {level} en esta pregunta',
52
- 'This one goes at {level} · if it falls short, Intenciones will notice and go back to {from}': 'Esta pregunta va con {level} · si no alcanza, Intenciones lo notará y volverá a {from}',
53
- 'This one goes at {level} · if it falls short, Intenciones will notice and go back to the CLI default': 'Esta pregunta va con {level} · si no alcanza, Intenciones lo notará y volverá al nivel predeterminado del agente',
54
+ 'This one goes at {level} · if it falls short, MADRE will notice and go back to {from}': 'Esta pregunta va con {level} · si no alcanza, MADRE lo notará y volverá a {from}',
55
+ 'This one goes at {level} · if it falls short, MADRE will notice and go back to the agent\'s default level': 'Esta pregunta va con {level} · si no alcanza, MADRE lo notará y volverá al nivel predeterminado del agente',
54
56
  'Undo': 'Deshacer',
55
57
  '{level} fell short last time': '{level} no alcanzó la última vez',
56
58
  'Back to {level}': 'Volver a {level}',
@@ -71,23 +73,23 @@ export const ES = {
71
73
  'answered by @madre on this computer · no provider, no bill':
72
74
  'contestados por @madre en esta computadora · sin proveedor, sin factura',
73
75
  'OF EVERY TURN': 'DEL TOTAL',
74
- 'of the turns weighed in this project': 'de las respuestas contadas en este proyecto',
76
+ 'of the answers measured in this project': 'de las respuestas contadas en este proyecto',
75
77
  'A PAID TURN': 'UNA RESPUESTA PAGADA',
76
- 'the middle paid turn here · what the others cost, not what these would have':
78
+ 'the typical (median) paid answer here · what the others cost, not what these would have':
77
79
  'la respuesta pagada típica (la mediana) aquí · lo que costaron las otras, no lo que habrían costado estas',
78
80
  'These turns have no bill because nothing left this computer to answer them. MADRE does not say what they would have cost somewhere else: nobody measured that.':
79
81
  'Estas respuestas no tienen costo porque nada salió de esta computadora para contestarlas. MADRE no dice cuánto habrían costado con un proveedor: eso nadie lo midió.',
80
- '{pct} shorter with TOKEN SAVER, wider than this agent varies here (±{on} and ±{off})':
82
+ "{pct} shorter with TOKEN SAVER: more than this agent's normal variation here (±{on} and ±{off})":
81
83
  '{pct} más corta con AHORRO DE TOKENS: más que la variación normal de este agente aquí (±{on} y ±{off})',
82
- 'the difference fits inside how much this agent varies anyway (±{on} and ±{off}) · nothing to read yet':
84
+ 'the difference fits inside how much this agent varies anyway (±{on} and ±{off}) · no conclusion yet':
83
85
  'la diferencia cabe dentro de lo que este agente varía de todos modos (±{on} y ±{off}) · todavía no se puede sacar una conclusión',
84
86
  'on · agents may ask you to choose': 'encendido · los agentes pueden pedirte que elijas',
85
87
  'off · agents answer in prose': 'apagado · los agentes contestan en prosa',
86
88
  'Lets an agent hand a decision back to you as buttons instead of a paragraph, when the answer turns on three or more real options. Costs about 135 tokens of instruction per turn while it is on, counted in Spending like every other block.':
87
89
  'Deja que un agente te dé una decisión como botones en vez de un párrafo, cuando hay tres o más opciones reales. Mientras está encendido cuesta unos 135 tokens por respuesta, y se cuentan en Consumo.',
88
- 'Pressing one sends it to @{agent} · #3 and #4 ask for your keys first': 'Al presionar una se le manda a @{agent} · #3 y #4 te piden confirmar antes',
90
+ 'Pressing one sends it to @{agent} · #3 and #4 ask you to confirm first': 'Al presionar una se le manda a @{agent} · #3 y #4 te piden confirmar antes',
89
91
  '◉ decided here · {n}': '◉ decidido aquí · {n}',
90
- 'TURNS WEIGHED': 'RESPUESTAS CON COSTO',
92
+ 'ANSWERS BILLED': 'RESPUESTAS CON COSTO',
91
93
  '{n} characters': '{n} caracteres',
92
94
  ' · ALWAYS': ' · SIEMPRE',
93
95
  'Characters each block adds to one prompt.': 'Caracteres que cada bloque añade a cada mensaje para el agente',
@@ -96,12 +98,12 @@ export const ES = {
96
98
  'INPUT CHARGED': 'ENTRADA COBRADA',
97
99
  'fresh reading, plus what was written into a cache (billed too) · the cache read back is apart': 'texto nuevo leído, más lo que se guardó en una caché (también se cobra) · lo leído de la caché va aparte',
98
100
  'OUTPUT CHARGED': 'SALIDA COBRADA',
99
- 'tokens written back · the dearer half': 'tokens que escribe el agente en su respuesta · la parte más cara',
101
+ 'tokens the agent writes in its answer · the more expensive part': 'tokens que escribe el agente en su respuesta · la parte más cara',
100
102
  'read back from a cache (a fraction of the price, or of the plan) plus what was never sent': 'leído de una caché (una fracción del precio, o del plan) más lo que nunca se envió',
101
103
  'CAME FROM CACHE': 'LEÍDO DE CACHÉ',
102
104
  'of everything read, the share nobody charged twice': 'de todo lo leído, la parte que nadie cobró dos veces',
103
105
  'CHARACTERS PER TOKEN': 'CARACTERES POR TOKEN',
104
- 'what MADRE wrote against what the CLIs were charged for reading · not a tokenizer':
106
+ 'what MADRE wrote compared with what the agents were charged for reading · a ratio, not an exact count':
105
107
  'lo que MADRE escribió frente a lo que se cobró a los agentes por leer · es una proporción, no un conteo exacto',
106
108
  'AGENT': 'AGENTE',
107
109
  'INPUT': 'ENTRADA',
@@ -118,17 +120,21 @@ export const ES = {
118
120
  'You will type the project name, as always. Then @{agent} gets your permission and continues.':
119
121
  'Para confirmar, escribe el nombre del proyecto, como siempre. Después @{agent} recibe tu permiso y continúa.',
120
122
  '@{agent} gets your permission for one message and continues.': '@{agent} recibe tu permiso solo para este mensaje y continúa.',
121
- 'GRANT #{n} · LET IT GO ON': 'CONCEDER #{n} Y CONTINUAR',
123
+ 'GRANT #{n} AND CONTINUE': 'CONCEDER #{n} Y CONTINUAR',
122
124
  'GRANT #{n} · GIVE IT ANOTHER INSTRUCTION': 'CONCEDER #{n} Y AGREGAR INSTRUCCIONES',
123
125
  'Unlocks #{n} in the box below, so you can add instructions before sending.':
124
126
  'Activa el permiso #{n} en la caja de mensaje para que agregues instrucciones antes de enviar.',
125
127
  '#{n} {label} granted · @{agent} continues': '#{n} {label} concedido · @{agent} sigue',
126
128
  '#{n} {label} granted': '#{n} {label} concedido',
127
129
  'Permission granted: #{n} {label}. Go ahead with what you proposed.': 'Permiso concedido: #{n} {label}. Sigue con lo que propusiste.',
130
+ ' · for {m} min': ' · por {m} min',
131
+ 'GRANT #{n} FOR {m} MIN AND CONTINUE': 'CONCEDER #{n} · {m} MIN Y CONTINUAR',
132
+ 'How long the permission holds': 'Cuánto dura el permiso',
133
+ 'this message': 'este mensaje',
128
134
  'YOUR SERVERS': 'TUS SERVIDORES',
129
135
  'MADRE version': 'Versión de MADRE',
130
- 'COULD NOT READ THE PORTS': 'NO SE PUDO VER QUÉ SERVIDORES ESTÁN ACTIVOS',
131
- '{what} · refuses to be framed': '{what} · no se puede mostrar aquí dentro',
136
+ 'COULD NOT SEE WHICH SERVERS ARE RUNNING': 'NO SE PUDO VER QUÉ SERVIDORES ESTÁN ACTIVOS',
137
+ '{what} · cannot be shown in here': '{what} · no se puede mostrar aquí dentro',
132
138
  'Resize the browser': 'Cambiar el ancho del navegador',
133
139
  'Agents · {ready} of {total} ready · {who}': 'Agentes · {ready} de {total} listos · {who}',
134
140
  'The destination is outside this project.': 'El destino está fuera de este proyecto.',
@@ -156,14 +162,14 @@ export const ES = {
156
162
  'The source and the destination are the same path.': 'El origen y el destino son la misma ruta.',
157
163
  'A folder cannot be moved inside itself.': 'Una carpeta no se puede mover dentro de sí misma.',
158
164
  'Rename': 'Renombrar',
159
- 'HOLD': 'SIN CONFIRMAR',
160
- 'BRIDGE': 'CONFIRMADA',
161
- 'MED BAY': 'EN CUARENTENA',
162
- 'JETTISONED': 'DESCARTADA',
163
- 'ZONE': 'ESTADO',
164
- 'OUT OF CIRCULATION': 'NO SE USA',
165
+ 'UNCONFIRMED': 'SIN CONFIRMAR',
166
+ 'CONFIRMED': 'CONFIRMADA',
167
+ 'QUARANTINED': 'EN CUARENTENA',
168
+ 'DISCARDED': 'DESCARTADA',
169
+ 'STATUS': 'ESTADO',
170
+ 'NOT USED': 'NO SE USA',
165
171
  'No module by that name is loaded.': 'No hay ningún módulo cargado con ese nombre.',
166
- 'Gemini tried to hand this turn to one of its own subagents. MADRE does not allow that: a subagent answers outside the lease, so nothing it wrote would be checked, shown or undoable.':
172
+ 'Gemini tried to hand this task to one of its own subagents. MADRE does not allow that: a subagent answers outside the permission MADRE controls, so nothing it wrote would be checked, shown or undoable.':
167
173
  'Gemini intentó pasarle esta tarea a uno de sus propios subagentes. MADRE no lo permite: un subagente responde fuera del permiso que MADRE controla, así que nada de lo que escribiera se podría comprobar, mostrar ni deshacer.',
168
174
  'Ask again saying it should do the work itself, without subagents.':
169
175
  'Vuelve a pedirlo diciéndole que haga el trabajo él mismo, sin subagentes.',
@@ -171,7 +177,6 @@ export const ES = {
171
177
  ' · esta respuesta menciona {n} archivo(s) que no existen: {files}',
172
178
  ' · nothing was written this turn': ' · esta respuesta no escribió nada',
173
179
  'OPEN MODULES': 'ABRIR MÓDULOS',
174
- '{command} · listens on the whole network': '{command} · está abierto a toda tu red, no solo a esta computadora',
175
180
  '@{who} puts {agents} to work': '@{who} pone a trabajar a {agents}',
176
181
  '@{who} puts {agents} to work, then closes': '@{who} pone a trabajar a {agents} y luego cierra',
177
182
  '{n} step': '{n} paso',
@@ -186,31 +191,31 @@ export const ES = {
186
191
  'stopped by the human': 'detenido por ti',
187
192
  'This is how I want it done · the project keeps it as a preference':
188
193
  'Así lo quiero · el proyecto lo conserva como preferencia',
189
- 'Never do this again · what the project remembers from it is put out':
194
+ 'Never do this again · the project stops using what it remembers from this':
190
195
  'Nunca más · el proyecto deja de usar lo que recuerde de esto',
191
- 'A faded star is in MED BAY or JETTISONED: the archive keeps it and never hands it to a turn.':
196
+ 'A faded star is a quarantined or discarded memory: it is kept, but never used in answers.':
192
197
  'Una estrella apagada es una memoria en cuarentena o descartada: se guarda, pero nunca se usa en las respuestas.',
193
- 'Distilled and nobody has judged it. It travels into turns.':
198
+ 'A summarized note nobody has reviewed yet. It is used in answers.':
194
199
  'Nota resumida que nadie ha revisado todavía. Se usa en las respuestas.',
195
- 'You marked the reply it came from as good. It travels, confirmed.':
200
+ 'You marked the reply it came from as good. Confirmed: it is used in answers.':
196
201
  'Marcaste como buena la respuesta de la que salió. Confirmada: se usa en las respuestas.',
197
- 'Quarantined: it is false, or it came from a reply you marked bad. It never travels.':
198
- 'En cuarentena: es falsa, o salió de una respuesta que marcaste mal. Nunca se usa en las respuestas.',
199
- 'Put out of circulation and kept so it is not learned again. It never travels.':
202
+ 'Quarantined: it is false, or it came from a reply you marked bad. It is never used in answers.':
203
+ 'En cuarentena: es falsa, o salió de una respuesta que marcaste como mala. Nunca se usa en las respuestas.',
204
+ 'Discarded: kept only so it is not learned again. It is never used in answers.':
200
205
  'Descartada: se guarda solo para no volver a aprenderla. Nunca se usa en las respuestas.',
201
206
  'New file': 'Archivo nuevo',
202
207
  'New folder': 'Carpeta nueva',
203
208
  'NEW NAME': 'NOMBRE NUEVO',
204
209
  'NEW FILE': 'ARCHIVO NUEVO',
205
210
  'NEW FOLDER': 'CARPETA NUEVA',
206
- 'PROJECT DESIGNATION': 'CONFIRMA CON EL NOMBRE DEL PROYECTO',
211
+ 'CONFIRM WITH THE PROJECT NAME': 'CONFIRMA CON EL NOMBRE DEL PROYECTO',
207
212
  'OK': 'LISTO',
208
213
  'MOVE': 'MOVER',
209
214
  'That could not be done.': 'No se pudo completar la acción. Inténtalo de nuevo.',
210
215
  'NOTHING MATCHES {q}': 'NADA COINCIDE CON {q}',
211
- 'MADRE GUARDS THIS PATH · IT WILL ASK FOR THE DESIGNATION': 'UBICACIÓN PROTEGIDA · PIDE CONFIRMAR CON EL NOMBRE DEL PROYECTO',
212
- '{path} is a place MADRE guards.': '{path} es una ubicación protegida por MADRE. Escribe el nombre del proyecto para confirmar.',
213
- '{host} will not be framed': '{host} no permite mostrarse dentro de MADRE',
216
+ 'PROTECTED LOCATION · CONFIRM WITH THE PROJECT NAME': 'UBICACIÓN PROTEGIDA · PIDE CONFIRMAR CON EL NOMBRE DEL PROYECTO',
217
+ '{path} is a location MADRE protects. Type the project name to confirm.': '{path} es una ubicación protegida por MADRE. Escribe el nombre del proyecto para confirmar.',
218
+ '{host} does not allow being shown inside MADRE': '{host} no permite mostrarse dentro de MADRE',
214
219
  'The site answers with a rule that forbids any page from putting it inside a frame. It is the standard defence against clickjacking, and PREVIEW neither can nor should override it.':
215
220
  'El sitio tiene una regla que impide mostrarlo dentro de otra página. Es una protección estándar contra el clickjacking (engaños con clics), y VISTA PREVIA no puede ni debe saltársela.',
216
221
  'This server answers with a rule that forbids any page from putting it inside a frame — your own dev server may be setting it without you noticing. PREVIEW neither can nor should override it.':
@@ -235,7 +240,7 @@ export const ES = {
235
240
  'FROM THE CACHE': 'DE LA CACHÉ',
236
241
  'the CLI said it read these back instead of charging them again · measured':
237
242
  'la app del agente reportó que los reutilizó de la caché en vez de cobrarlos otra vez · medido',
238
- 'briefing a turn had no use for · estimated from characters, not measured':
243
+ 'part of what MADRE sends the agent that this answer did not need · estimated from characters, not measured':
239
244
  'parte de lo que MADRE le envía al agente que esa respuesta no iba a usar · estimado a partir de caracteres, no medido',
240
245
  'OF THE INPUT': 'DE LA ENTRADA',
241
246
  'the share of everything read that came back from a cache':
@@ -243,26 +248,26 @@ export const ES = {
243
248
  'One half is measured and the other is estimated, and they are never added without saying so. Neither of them is the Token saver: the Token saver shortens the answer, which is the next reading.':
244
249
  'Una cifra es medida y la otra estimada, y nunca se suman sin avisarte. Ninguna es el Ahorro de tokens: ese acorta las respuestas y se muestra en la sección siguiente.',
245
250
  'TOKEN SAVER ADDS': 'AHORRO DE TOKENS AÑADE',
246
- 'to every prompt it is on · measured, not estimated': 'a cada mensaje para el agente cuando está encendido · medido, no estimado',
251
+ 'to every prompt while it is on · measured, not estimated': 'a cada mensaje para el agente cuando está encendido · medido, no estimado',
247
252
  'IN TOKENS': 'EN TOKENS',
248
253
  'at {rate} characters per token · an estimate': 'a {rate} caracteres por token · una estimación',
249
254
  'TURNS CARRYING IT': 'RESPUESTAS QUE LO USARON',
250
- 'of the {n} weighed in this project': 'de las {n} medidas en este proyecto',
255
+ 'of the {n} measured in this project': 'de las {n} medidas en este proyecto',
251
256
  'What the Token saver costs is certain and measured here. What it saves is not: the shorter answer below is observed, never promised. Output is the dearer half of every bill, so the trade is usually favourable — MADRE does not turn it into money because it does not know your prices.':
252
257
  'Lo que cuesta el Ahorro de tokens está medido aquí. Lo que ahorra no es seguro: abajo se ve si las respuestas salen más cortas, pero no se promete. Lo que escribe el agente suele ser lo más caro, así que normalmente conviene. MADRE no lo pasa a dinero porque no conoce tus precios.',
253
258
  'WHAT THE TOKEN SAVER DOES TO AN ANSWER': 'QUÉ LE HACE EL AHORRO DE TOKENS A UNA RESPUESTA',
254
- 'No turns with the switch recorded yet. Leave the Token saver on for a few turns and off for a few more, and this fills.':
259
+ 'No answers recorded yet with the Token saver on and off. Leave it on for a few answers and off for a few more, and the comparison shows here.':
255
260
  'Aún no hay respuestas registradas con el Ahorro de tokens encendido y apagado. Déjalo encendido en algunas respuestas y apagado en otras, y aquí aparecerá la comparación.',
256
- 'WHERE EACH PROMPT GOES': 'CÓMO SE REPARTE CADA MENSAJE AL AGENTE',
257
- '{pct} of each prompt is the unchanging head a cache can match. MADRE wrote {chars} characters of the {input} input tokens you were charged for; the rest is what the CLIs read on their own.':
261
+ 'HOW EACH PROMPT IS SPLIT': 'CÓMO SE REPARTE CADA MENSAJE AL AGENTE',
262
+ "{pct} of each prompt is a fixed header the cache can reuse. MADRE wrote {chars} characters of the {input} input tokens you were charged for; the rest is what the agents' apps read on their own.":
258
263
  '{pct} de cada mensaje al agente es un encabezado fijo que la caché puede reutilizar. MADRE escribió {chars} caracteres de los {input} tokens de entrada que te cobraron; el resto es lo que las apps de los agentes leyeron por su cuenta.',
259
264
  'BY AGENT': 'POR AGENTE',
260
265
  'with TOKEN SAVER': 'con AHORRO DE TOKENS',
261
266
  'without TOKEN SAVER': 'sin AHORRO DE TOKENS',
262
267
  '{n}↑ · {turns} turns': '{n}↑ · {turns} respuestas',
263
- '{n} turns with TOKEN SAVER, {m} without · {min} of each before this can be read':
268
+ '{n} answers with TOKEN SAVER, {m} without · {min} of each are needed to compare':
264
269
  '{n} respuestas con AHORRO DE TOKENS, {m} sin AHORRO DE TOKENS · se necesitan {min} de cada tipo para comparar',
265
- 'The middle turn of each side, not an average. You choose when to ask for compact prose, so the two sides are different tasks, not the same task twice — MADRE does not claim a percentage saved.':
270
+ 'The median answer of each group, not an average. You choose when to ask for compact answers, so the two groups are different tasks, not the same task twice — MADRE does not claim a percentage saved.':
266
271
  'Se muestra la respuesta mediana de cada grupo, no un promedio. Tú decides cuándo pedir respuestas compactas, así que los dos grupos son tareas distintas, no la misma tarea repetida: por eso MADRE no afirma un porcentaje de ahorro.',
267
272
  'REVIEW · the local check found: {details}':
268
273
  'REVISAR · la comprobación local encontró: {details}',
@@ -273,25 +278,25 @@ export const ES = {
273
278
  '{count} {unit}, maximum {maximum}': '{count} {unit}, máximo {maximum}',
274
279
  'lines': 'líneas',
275
280
  'missing {value}': 'falta {value}',
276
- 'Off the record. Ask anything; nothing is saved, nobody else will remember it.':
281
+ 'Incognito. Ask anything; nothing is saved and the project will not remember it.':
277
282
  'Incógnito. Pregunta lo que quieras: no se guarda nada y el proyecto no lo va a recordar.',
278
283
  'EDIT unlocked. Say what to change in the project; every action runs without asking.':
279
284
  'EDITAR desbloqueado. Di qué cambiar en el proyecto: cada acción se ejecuta sin pedirte permiso.',
280
- 'Airlock open. Commands run; pushes and deploys leave the ship. Say exactly what should go out.':
285
+ '#4 FULL ACCESS unlocked. Commands run here, and changes are pushed or deployed outside your computer. Say exactly what should go out.':
281
286
  '#4 ACCESO TOTAL desbloqueado. Aquí se ejecutan comandos y se suben (push) o publican (deploy) cambios fuera de tu computadora. Di exactamente qué se debe subir o publicar.',
282
287
  'Type here, human. MADRE is listening.': 'Escribe aquí, humano. MADRE te escucha.',
283
288
  'Ask what the project remembers. @madre answers from memory with citations; it does not act.':
284
289
  'Pregunta qué recuerda el proyecto. @madre contesta desde la memoria y cita de dónde lo saca; no ejecuta nada.',
285
290
 
286
291
  // Los cinco modos de permiso. El nombre no se traduce; lo que hace, sí.
287
- 'Off the record. Nothing is saved; gone on reload.': 'Incógnito. No se guarda nada y se borra al recargar la página.',
288
- 'Read the project and talk about it. Writes nothing.': 'Lee el proyecto y habla de él. No escribe nada.',
289
- 'Add new files where they belong in the project. Existing files stay untouched.':
290
- 'Crea archivos nuevos donde les toca en el proyecto. Los que ya existen no se tocan.',
291
- 'Edit the project itself, no approval per action. Unlock required.':
292
- 'Edita el proyecto sin pedir permiso en cada paso. Pide confirmar para activarlo.',
293
- 'Run commands, push, deploy. What leaves the ship does not come back. Unlock, twice.':
294
- 'Ejecuta comandos, sube cambios (push) y publica (deploy). Lo que sale de tu computadora no se puede deshacer. Pide confirmar dos veces.',
292
+ 'Incognito. Nothing is saved; it is gone when you reload the page.': 'Incógnito. No se guarda nada y se borra al recargar la página.',
293
+ 'Read the project and talk about it, and plan with other agents. Writes nothing.': 'Lee el proyecto, habla de él y arma planes con otros agentes. No escribe nada.',
294
+ 'Add new files where they belong in the project, and plan with other agents. Existing files stay untouched.':
295
+ 'Crea archivos nuevos donde les toca en el proyecto y arma planes con otros agentes. Los que ya existen no se tocan.',
296
+ 'Edit the project itself, no approval per action, and plan with other agents. Unlock required.':
297
+ 'Edita el proyecto sin pedir permiso en cada paso y arma planes con otros agentes. Pide confirmar para activarlo.',
298
+ 'Run commands, push, deploy, and plan with other agents. What leaves your computer cannot be undone. Confirm twice.':
299
+ 'Ejecuta comandos, sube cambios (push), publica (deploy) y arma planes con otros agentes. Lo que sale de tu computadora no se puede deshacer. Pide confirmar dos veces.',
295
300
 
296
301
 
297
302
  // ── LA BARRA ──────────────────────────────────────────────────────────────
@@ -322,13 +327,13 @@ export const ES = {
322
327
  'Not on this computer.': 'No lo tienes instalado.',
323
328
  'Not on this computer · {command}': 'No lo tienes instalado · {command}',
324
329
  'version unknown': 'versión desconocida',
325
- 'FREE WAY IN': 'TIENE OPCIÓN GRATIS',
326
- 'PASTE KEY': 'PEGAR LLAVE DE API',
327
- 'signs in from its own prompt:': 'inicia sesión desde su propia terminal:',
330
+ 'HAS A FREE OPTION': 'TIENE OPCIÓN GRATIS',
331
+ 'PASTE API KEY': 'PEGAR LLAVE DE API',
332
+ 'signs in from your terminal:': 'inicia sesión desde tu terminal:',
328
333
  'Or do it from a terminal: {command}': 'O hazlo desde la terminal: {command}',
329
334
 
330
335
  // ── EL COMPOSITOR ─────────────────────────────────────────────────────────
331
- 'Creation lease: let the agent create files for this request, only inside .pulse/out/':
336
+ 'Permission to create: let the agent create files for this request, only inside .pulse/out/':
332
337
  'Permiso para crear: el agente puede crear archivos para esta petición, solo dentro de .pulse/out/',
333
338
  'Token saver: ask every agent for compact prose. Nothing you write is altered.':
334
339
  'Ahorro de tokens: pídele respuestas compactas a cada agente. Lo que tú escribes no cambia.',
@@ -342,7 +347,7 @@ export const ES = {
342
347
  'HUMAN ›': 'HUMANO ›',
343
348
  'HUMAN · INCOGNITO ›': 'HUMANO · INCÓGNITO ›',
344
349
  'HUMAN · CREATE ›': 'HUMANO · CREAR ›',
345
- 'CREW · EXPENDABLE ›': 'PRESCINDIBLE ›',
350
+ 'EXPENDABLE ›': 'PRESCINDIBLE ›',
346
351
  'INTRUDER ›': 'INTRUSO ›',
347
352
 
348
353
  // ── LA PÁGINA EN BLANCO ───────────────────────────────────────────────────
@@ -366,7 +371,7 @@ export const ES = {
366
371
  'TO': 'PARA',
367
372
  'AT': 'EN MODO',
368
373
  'IF YOU SENT': 'SI MANDARAS',
369
- 'the question you would send — the document rebuilds around it':
374
+ 'type the question you would send, and see here what MADRE would send the agent':
370
375
  'escribe la pregunta que enviarías y aquí verás lo que MADRE le mandaría al agente',
371
376
  'NOTHING IS SENT FROM HERE.': 'ES SOLO UNA VISTA PREVIA: NO SE ENVÍA NADA.',
372
377
  'What @{agent} would be told': 'Lo que se le diría a @{agent}',
@@ -408,7 +413,7 @@ export const ES = {
408
413
  'READ TO BUILD IT': 'SE LEYÓ PARA ARMARLO',
409
414
  '{m} MEMORIES · {q} EXACT QUOTES': '{m} MEMORIAS · {q} CITAS EXACTAS',
410
415
  'NOT COUNTED': 'NO CUENTA',
411
- 'NONE OF THEM WAS COUNTED AS RECALLED: ASKING WHAT THE PROJECT WOULD SAY IS NOT THE PROJECT SAYING IT':
416
+ 'NONE OF THEM COUNTS AS USED: THIS IS A PREVIEW, NOT A REAL ANSWER':
412
417
  'NINGUNA SE CUENTA COMO USADA: ESTO ES UNA VISTA PREVIA, NO UNA RESPUESTA REAL',
413
418
  'WEIGHT': 'PESO',
414
419
  "{ch} CH · ≈{tokens} TOKENS · ESTIMATED AT {rate} CH/TOKEN, NOT MEASURED: MADRE DOES NOT HAVE THE PROVIDER'S TOKENIZER":
@@ -429,7 +434,7 @@ export const ES = {
429
434
  'WHAT KEEPS IT TO THIS TURN': 'LO QUE LO LIMITA A ESTA RESPUESTA',
430
435
  'ENVIRONMENT IT IS GIVEN': 'VARIABLES DE ENTORNO QUE RECIBE',
431
436
  'NAMES ONLY. NO VALUE IS EVER SHOWN HERE.': 'SOLO NOMBRES. AQUÍ NUNCA SE MUESTRA UN VALOR.',
432
- 'SERVERS IT CAN CALL': 'HERRAMIENTAS CONECTADAS (MCP) QUE PUEDE USAR',
437
+ 'OUTSIDE TOOLS (MCP) IT CAN USE': 'HERRAMIENTAS EXTERNAS (MCP) QUE PUEDE USAR',
433
438
  'the archive of this project, read and written through MADRE':
434
439
  'la memoria de este proyecto, que lee y escribe a través de MADRE',
435
440
 
@@ -442,7 +447,7 @@ export const ES = {
442
447
  'cada mensaje que mandas a un agente que no es @madre',
443
448
  'you choose it every time you send a turn; @madre answers on this computer and sends nothing':
444
449
  'lo eliges cada vez que mandas un mensaje; @madre contesta en esta computadora y no manda nada',
445
- 'Google · Gemini embeddings':
450
+ 'Google · Gemini search by meaning':
446
451
  'Google · búsqueda por significado de Gemini',
447
452
  'The text of what is being embedded: the first 2000 characters of each memory, and the question a recall is made of.':
448
453
  'El texto que se usa para la búsqueda por significado: los primeros 2000 caracteres de cada memoria y la pregunta con la que se busca.',
@@ -454,7 +459,7 @@ export const ES = {
454
459
  'Google · modelo de imágenes de Gemini',
455
460
  'The prompt an agent wrote for an image.':
456
461
  'La instrucción que un agente escribió para una imagen.',
457
- 'an agent calls the image tool during a lease':
462
+ 'an agent uses the image tool during a permission to create':
458
463
  'cuando un agente usa la herramienta de imágenes durante un permiso para crear',
459
464
  'Modules › Images':
460
465
  'Módulos › Imágenes',
@@ -462,14 +467,14 @@ export const ES = {
462
467
  'el registro de npm',
463
468
  'The name of a package, to read the version of its latest release. Nothing about you or your project.':
464
469
  'El nombre de un paquete, para leer la versión de su última publicación. Nada sobre ti ni sobre tu proyecto.',
465
- 'at most once a day per package, while the release channel is on':
466
- 'como mucho una vez al día por paquete, mientras la búsqueda de versiones esté encendida',
470
+ 'at most once a day per package, while Look for new versions is on':
471
+ 'como mucho una vez al día por paquete, mientras «Buscar versiones nuevas» esté encendido',
467
472
  'Settings › Version and reports › Look for new versions · or PULSE_UPDATE_CHECK=0':
468
473
  'Ajustes › Versión y reportes › Buscar versiones nuevas · o PULSE_UPDATE_CHECK=0',
469
474
  'The name of a repository, to read the tag of its latest release. Nothing about you or your project.':
470
475
  'El nombre de un repositorio, para leer la etiqueta de su última publicación. Nada sobre ti ni sobre tu proyecto.',
471
- 'at most once a day per repository, while the release channel is on':
472
- 'como mucho una vez al día por repositorio, mientras la búsqueda de versiones esté encendida',
476
+ 'at most once a day per repository, while Look for new versions is on':
477
+ 'como mucho una vez al día por repositorio, mientras «Buscar versiones nuevas» esté encendido',
473
478
  'the author\'s error collector':
474
479
  'el servicio de reportes de errores del autor de MADRE',
475
480
  'An unknown condition: what broke, where in MADRE, and the version. Paths are cut back and your words are not in it.':
@@ -496,9 +501,9 @@ export const ES = {
496
501
  'el proveedor con el que OpenCode tiene sesión',
497
502
  'its own provider':
498
503
  'su propio proveedor',
499
- '1 request went to an address nothing here declares. A module can do that; nothing can do it unlogged.':
504
+ '1 request went to an address not on this list. A module can do that, but it is always logged.':
500
505
  '1 petición fue a una dirección que no aparece en esta lista. Un módulo puede hacerlo, pero siempre queda registrado.',
501
- '{n} requests went to an address nothing here declares. A module can do that; nothing can do it unlogged.':
506
+ '{n} requests went to addresses not on this list. A module can do that, but it is always logged.':
502
507
  '{n} peticiones fueron a direcciones que no aparecen en esta lista. Un módulo puede hacerlo, pero siempre queda registrado.',
503
508
  'Every request this process made went to an address declared above.':
504
509
  'Todas las peticiones de este proceso fueron a direcciones de la lista de arriba.',
@@ -623,8 +628,8 @@ export const ES = {
623
628
  'an MCP server per turn, started and stopped by the project':
624
629
  'un servidor de herramientas conectadas (MCP) en cada respuesta, que el proyecto enciende y apaga',
625
630
  // Bajo NECESITA es un requisito, no una acción: «necesita: se engancha» no concuerda.
626
- 'attached only inside a creation lease with the image scope on':
627
- 'solo se conecta dentro de un permiso para crear que tenga imágenes encendido',
631
+ 'attached only inside a permission to create with images on':
632
+ 'solo se conecta dentro de un permiso para crear con las imágenes activadas',
628
633
  'a Gemini API key with credits (the one the Gemini CLI stores, or GEMINI_API_KEY)':
629
634
  'una llave de API de Gemini con créditos (la que guarda la app de Gemini CLI, o GEMINI_API_KEY)',
630
635
 
@@ -635,54 +640,52 @@ export const ES = {
635
640
  'a push only when you type /git push confirm, after it shows what would leave':
636
641
  'un push solo cuando escribes /git push confirm, después de mostrarte qué se subiría',
637
642
 
638
- 'Asks every agent for compact prose without altering what you write. MADRE shows each turn\'s input, output and cache use; savings depend on the agent, task and cache, so no fixed percentage is promised.':
639
- 'Pide a cada agente que conteste de forma más breve, sin cambiar lo que tú escribes. MADRE muestra la entrada, la salida y el uso de caché de cada respuesta; el ahorro depende del agente, la tarea y el caché, así que no promete un porcentaje fijo.',
643
+ 'Asks every agent to answer briefly, so it uses less. What you write is not changed. Savings vary, so none are promised.': 'Pide a cada agente que conteste breve, para gastar menos. Lo que escribes no cambia. El ahorro varía, así que no se promete.',
640
644
  'nothing in the project': 'nada en el proyecto',
641
645
  'a switch in ~/.pulse/config.json': 'un interruptor en ~/.pulse/config.json',
642
646
 
643
647
  // AJUSTES: una sola ventana para todos los ajustes.
644
648
  'Search any setting': 'Busca cualquier ajuste',
645
649
  'You': 'Tú',
646
- 'How it looks and how the project works': 'Cómo se ve y cómo trabaja el proyecto',
650
+ 'How it looks, how it works and your files': 'Cómo se ve, cómo trabaja y tus archivos',
647
651
  'The agents': 'Los agentes',
648
- 'Who works, and what the project remembers': 'Quién trabaja y qué recuerda el proyecto',
652
+ 'Who works, what they remember and which outside tools they use': 'Quién trabaja, qué recuerda y qué herramientas externas usa',
649
653
  'System': 'Sistema',
650
654
  'Appearance': 'Apariencia',
651
- 'Project and turns': 'Proyecto y respuestas',
655
+ 'Work and limits': 'Trabajo y límites',
652
656
  'Memory': 'Memoria',
653
657
  'Privacy': 'Privacidad',
654
- 'Version and reports': 'Versión y reportes',
658
+ 'Updates and errors': 'Actualizaciones y errores',
655
659
  'Settings': 'Ajustes',
656
660
  'Auto': 'Auto',
657
661
  'Turns': 'Respuestas',
658
662
  'Kind of request': 'Tipo de pedido',
659
663
  'Level': 'Nivel',
660
664
  'Limits': 'Límites',
661
- 'Provider limits': 'Límites del proveedor',
662
665
  'Connection': 'Conexión',
663
666
  'Version': 'Versión',
664
- 'Sentinel': 'Monitor de fallas',
667
+ 'Error reports': 'Reportes de errores',
665
668
  'Several at once': 'Varias a la vez',
666
669
  'Several at once · {n}': 'Varias a la vez · {n}',
667
670
  'One conversation at a time': 'Una conversación a la vez',
668
671
  '{n} tokens per agent': '{n} tokens por agente',
669
672
  '{n} of {total} signed in': '{n} de {total} con sesión',
670
673
  '{agents} without a session': '{agents} sin sesión',
671
- 'This project has no memory index': 'Este proyecto todavía no tiene memoria para buscar',
674
+ 'This project has no memory yet': 'Este proyecto todavía no tiene memoria',
672
675
  'the cheapest agent': 'el agente más barato',
673
- 'Archived by {who} · smart search {how}': 'Resume la memoria: {who} · búsqueda por significado: {how}',
676
+ 'Notes by {who} · search by meaning {how}': 'Toma notas: {who} · busca por significado: {how}',
674
677
  '{n} hidden data items': '{n} datos ocultos',
675
678
  'No hidden data': 'Sin datos ocultos',
676
- 'keys redacted': 'llaves de API ocultas',
677
- 'keys not redacted': 'llaves de API visibles',
678
- 'auto-report on': 'reporte automático encendido',
679
- 'auto-report off': 'reporte automático apagado',
679
+ 'keys hidden': 'llaves ocultas',
680
+ 'keys visible': 'llaves visibles',
681
+ 'error reports sent': 'reportes de errores: se envían',
682
+ 'error reports kept here': 'reportes de errores: se quedan aquí',
680
683
  '{version} available': '{version} disponible',
681
684
  'up to date': 'al día',
682
685
  'not checked': 'sin revisar',
683
- '{version} is on npm': '{version} ya está en npm',
684
- 'Redact keys and e-mail addresses': 'Ocultar llaves de API y correos',
685
- 'Auto-report unknown conditions': 'Reportar automáticamente problemas desconocidos',
686
+ '{version} is out': 'Ya salió {version}',
687
+ 'Hide keys and emails': 'Ocultar llaves y correos',
688
+ 'Send error reports automatically': 'Enviar reportes de errores automáticamente',
686
689
  'Nothing called «{query}».': 'Nada se llama «{query}».',
687
690
  'The page reloads in the new language.': 'La página se recarga en el idioma nuevo.',
688
691
  'max plan steps saved: {n}.': 'pasos máximos por plan guardados: {n}.',
@@ -693,8 +696,7 @@ export const ES = {
693
696
  'agents no longer open plans.': 'los agentes ya no abren planes.',
694
697
 
695
698
  // INTENCIONES, en MODULES.
696
- 'Suggests how hard Claude Code and Codex should think for the message you are writing, from what was measured on this project. It suggests; you choose.':
697
- 'Sugiere cuánto deben pensar Claude Code y Codex para el mensaje que escribes, a partir de lo que se midió en este proyecto. Sugiere; tú eliges.',
699
+ 'Suggests how hard Claude Code and Codex should think about your message, based on what worked in this project. You decide.': 'Sugiere cuánto deben pensar Claude Code y Codex con tu mensaje, según lo que funcionó en este proyecto. Tú decides.',
698
700
  'its measurements next to the project, in intents.jsonl': 'sus mediciones junto al proyecto, en intents.jsonl',
699
701
  'on · suggests an effort when there is a reason to': 'encendido · sugiere un esfuerzo cuando hay una razón',
700
702
  'off · no suggestions under the Write box': 'apagado · sin sugerencias bajo la caja de Escribir',
@@ -743,7 +745,7 @@ export const ES = {
743
745
  'OPEN THE TEST': 'ABRIR LA PRUEBA',
744
746
  // La ventana de la prueba rápida, sobre la sala.
745
747
  'INTENCIONES': 'INTENCIONES',
746
- 'Intenciones · quick test': 'Intenciones · prueba rápida',
748
+ 'Suggested effort · quick test': 'Esfuerzo sugerido · prueba rápida',
747
749
  'QUICK TEST · YOU JUDGE, BLIND': 'PRUEBA RÁPIDA · TÚ JUZGAS, A CIEGAS',
748
750
  'lookups': 'búsquedas',
749
751
  'explanations': 'explicaciones',
@@ -786,16 +788,16 @@ export const ES = {
786
788
  'THE SAME': 'IGUAL',
787
789
  'THE SECOND': 'LA SEGUNDA',
788
790
  'The order changes from one question to the next. Length does not count.': 'El orden cambia en cada pregunta. Que una sea más larga no la hace mejor.',
789
- 'Intenciones is not available in this project.': 'Intenciones no está disponible en este proyecto.',
790
- 'Turn Intenciones on first.': 'Primero enciende Intenciones.',
791
+ 'Suggested effort is not available in this project.': 'El esfuerzo sugerido no está disponible en este proyecto.',
792
+ 'Turn Suggested effort on first.': 'Primero enciende Esfuerzo sugerido.',
791
793
  'A calibration is already running.': 'Ya hay una calibración en curso.',
792
794
  'No such test "{kind}".': 'No existe la prueba «{kind}».',
793
795
  '@{agent} takes no effort per turn, so there is nothing to calibrate.': '@{agent} no permite elegir el esfuerzo en cada respuesta, así que no hay nada que calibrar.',
794
796
  '@{agent} is not ready to answer.': '@{agent} no está listo para contestar.',
795
- '@{agent} is too close to the end of its window to spend turns on a test.': '@{agent} está muy cerca de su límite de uso en este periodo como para gastar respuestas en una prueba.',
797
+ '@{agent} is too close to its usage limit for this period to spend turns on a test.': '@{agent} está muy cerca de su límite de uso en este periodo como para gastar respuestas en una prueba.',
796
798
  'There is no impartial judge for @{agent}: another agent, or the local model, has to be ready.':
797
799
  'Para calificar a @{agent} hace falta un juez imparcial: otro agente o el modelo local tiene que estar listo.',
798
- 'Nothing left to ask @{agent} at this rung: the ledger has no new questions of the kinds this test reads.':
800
+ 'Nothing left to ask @{agent} at this level: the history has no new questions of the kinds this test uses.':
799
801
  'Ya no hay preguntas nuevas para @{agent} en este nivel: el historial no tiene más de los tipos que usa esta prueba.',
800
802
  'There is no pair waiting for an answer.': 'No hay ninguna comparación esperando tu respuesta.',
801
803
 
@@ -804,8 +806,7 @@ export const ES = {
804
806
  'scripts run in the frame · nothing leaves, nothing is stored, nothing reaches MADRE':
805
807
  'los scripts corren dentro del marco · no sale nada, no se guarda nada, nada llega a MADRE',
806
808
 
807
- 'Recall by meaning and memory distillation on this machine, through Ollama: no provider tokens, nothing leaves.':
808
- 'Búsqueda por significado y resumen de memorias en notas, en esta computadora con Ollama: no gasta tokens de ningún proveedor y nada sale de tu equipo.',
809
+ 'Searches and sums up the project\'s memory with local AI (Ollama): free, and nothing leaves your computer.': 'Busca y resume la memoria del proyecto con IA local (Ollama): gratis y sin que nada salga de tu computadora.',
809
810
  'a block in ~/.pulse/config.json': 'un bloque en ~/.pulse/config.json',
810
811
  "models in Ollama's own store when you press PULL": 'modelos en el almacén de Ollama cuando aprietas PULL',
811
812
  'Ollama running (the app, or ollama serve)': 'Ollama corriendo (la app, o ollama serve)',
@@ -818,7 +819,7 @@ export const ES = {
818
819
  'nada en el proyecto · las capturas se guardan en .pulse/out/<turno>/',
819
820
  'a browser per turn, started and stopped by the CLI': 'un navegador en cada respuesta, que la app del agente enciende y apaga',
820
821
  'no origin but this project is reachable through it': 'desde ese navegador no se puede abrir nada que no sea este proyecto',
821
- '@playwright/mcp and a chromium browser on this machine': '@playwright/mcp y un navegador chromium en esta computadora',
822
+ '@playwright/mcp and the browser you choose for it (chromium by default) on this machine': '@playwright/mcp y el navegador que elijas para él (chromium, si no eliges otro) en esta computadora',
822
823
  'PREVIEW on, to have pages to open': 'VISTA PREVIA encendida, para que haya páginas que abrir',
823
824
 
824
825
  // ── LAS FICHAS DE MÓDULO ──────────────────────────────────────────────────
@@ -877,26 +878,25 @@ export const ES = {
877
878
  'default timeout saved: {n}s.': 'tiempo límite por defecto guardado: {n}s.',
878
879
 
879
880
  // Memoria.
880
- 'archivist: the cheapest allowed agent goes first.': 'quien resume la memoria: va primero el agente permitido más barato.',
881
- 'archivist: @{agent} distils first.': 'quien resume la memoria: @{agent} resume primero.',
881
+ 'notes: the cheapest agent goes first.': 'notas: va primero el agente más barato.',
882
+ 'notes: @{agent} goes first.': 'notas: @{agent} va primero.',
882
883
  'ARCHIVIST': 'QUIÉN RESUME LA MEMORIA',
883
- 'distil every {n} exchanges.': 'resumir en notas cada {n} intercambios.',
884
+ 'notes every {n} exchanges.': 'notas cada {n} intercambios.',
884
885
  'or after {n} quiet minutes.': 'o después de {n} minutos en silencio.',
885
- "recall may take {n}% of each turn's context.": 'el recuerdo automático puede ocupar {n}% del contexto (lo que el agente lee) de cada respuesta.',
886
+ 'memories may take up to {n}% of what each agent reads.': 'las memorias pueden ocupar hasta {n}% de lo que lee cada agente.',
886
887
  'RECALL · % OF CONTEXT': 'RECUERDO AUTOMÁTICO · % DEL CONTEXTO',
887
- 'recall also carries what a memory keeps arriving with.': 'el recuerdo automático también incluye las memorias que suelen aparecer junto con otra.',
888
- 'recall carries only what the words and the meaning match.': 'el recuerdo automático incluye solo lo que coincide por palabras y por significado.',
888
+ 'related memories come along too.': 'también llegan las memorias relacionadas.',
889
+ 'only memories that match come along.': 'solo llegan las memorias que coinciden.',
889
890
  'AUTO · Ollama if running, else Gemini': 'AUTO · Ollama si está corriendo, si no Gemini',
890
891
  'local': 'local',
891
892
  ' · no model yet': ' · todavía sin modelo',
892
893
  'GEMINI · needs your key': 'GEMINI · necesita tu llave de API',
893
894
  'OFF · words only': 'APAGADO · solo busca por palabras',
894
- 'smart search: {what}.': 'búsqueda por significado ahora: {what}.',
895
- 'Diagnostics › someone has to keep the archive.': 'Diagnóstico › al menos un agente debe resumir la memoria.',
896
- 'archivists: {who}.': 'resumen la memoria: {who}.',
895
+ 'search by meaning: {what}.': 'búsqueda por significado ahora: {what}.',
896
+ 'Diagnostics › at least one agent has to take notes.': 'Diagnóstico › al menos un agente tiene que tomar notas.',
897
+ 'taking notes: {who}.': 'toman notas: {who}.',
897
898
  'Memory setting was not saved: {error}': 'El ajuste de memoria no se guardó: {error}',
898
- 'Write train.jsonl and valid.jsonl next to the ledger, redacted, in chat format for mlx-lm':
899
- 'Guarda train.jsonl y valid.jsonl junto al historial, con los datos privados ocultos, en formato de chat para mlx-lm',
899
+ 'Saves the training files in the project, with private data hidden': 'Guarda los archivos de entrenamiento en el proyecto, con los datos privados ocultos',
900
900
  'LOADING…': 'CARGANDO…',
901
901
  'Diagnostics › dataset exported: {n} pairs in {dir}': 'Diagnóstico › datos de entrenamiento exportados: {n} pares en {dir}',
902
902
  'Dataset export failed: {error}': 'La exportación de los datos de entrenamiento falló: {error}',
@@ -922,15 +922,15 @@ export const ES = {
922
922
  '@{agent} is now capped at #{n} {label}.': '@{agent} queda con permiso máximo #{n} {label}.',
923
923
  'The max mode was not saved: {error}': 'El permiso máximo no se guardó: {error}',
924
924
  'DEFAULT MODE': 'PERMISO AL EMPEZAR',
925
- 'Every message to this agent starts in CREATE: new files where they belong, existing files untouched. Plan steps to it too.':
925
+ 'Every message to this agent starts in #2 CREATE: it may add new files, but existing files stay untouched. Plan steps sent to it too.':
926
926
  'Cada mensaje a este agente empieza en #2 CREAR: puede agregar archivos nuevos, pero no toca los que ya existen. También aplica a los pasos de un plan.',
927
- 'Messages start read-only; unlock CREATE when you want files.':
927
+ 'Messages start in #1 CHAT ONLY; turn on #2 CREATE when you want files.':
928
928
  'Los mensajes empiezan en #1 SOLO CONVERSAR; activa #2 CREAR cuando quieras que cree archivos.',
929
929
  '@{agent} starts in #2 CREATE: every turn may add files to the project.':
930
930
  '@{agent} arranca en #2 CREAR: cada respuesta puede agregar archivos al proyecto.',
931
- '@{agent} starts read-only; unlock CREATE when you want files.':
931
+ '@{agent} starts in #1 CHAT ONLY; turn on #2 CREATE when you want files.':
932
932
  '@{agent} empieza en #1 SOLO CONVERSAR; activa #2 CREAR cuando quieras que cree archivos.',
933
- 'The default mode was not saved: {error}': 'El permiso al empezar no se guardó: {error}',
933
+ 'The starting mode was not saved: {error}': 'El modo inicial no se guardó: {error}',
934
934
  'RECHECK': 'REVISAR OTRA VEZ',
935
935
  '{command} · runs here, streamed to the project': '{command} · se ejecuta aquí y el resultado se ve en el proyecto',
936
936
  'The install could not start.': 'La instalación no pudo empezar. Inténtalo de nuevo.',
@@ -962,20 +962,19 @@ export const ES = {
962
962
  'BY DAY · TABLE': 'POR DÍA · TABLA',
963
963
  'NOTHING HAPPENED IN THESE DAYS.': 'NO PASÓ NADA EN ESTOS DÍAS.',
964
964
  'DAY': 'DÍA',
965
- 'How recalled memories arrived: found by the search, or carried along by the company they keep.':
966
- 'Cómo llegaron las memorias que se usaron: las encontró la búsqueda, o llegaron junto con otras memorias relacionadas.',
965
+ 'How used memories arrived: found by search, or brought along by a related one.': 'Cómo llegaron las memorias usadas: las encontró la búsqueda o llegaron con una relacionada.',
967
966
  'SEARCH': 'BÚSQUEDA',
968
967
  'CASCADE': 'CASCADA',
969
968
  'PASSES AT {n}': 'MÍNIMO PARA APROBAR: {n}',
970
- 'CAN THE ARCHIVE ANSWER WHAT THIS PROJECT ASKS?': '¿LA MEMORIA PUEDE CONTESTAR LO QUE ESTE PROYECTO PREGUNTA?',
971
- 'DOES THE ARCHIVE CONTRADICT ITSELF?': '¿LA MEMORIA SE CONTRADICE?',
972
- 'DOES THE LOCAL MODEL LAND WHERE THE AGENTS LANDED?': '¿EL MODELO LOCAL LLEGA A LAS MISMAS RESPUESTAS QUE LOS AGENTES?',
969
+ 'Does the memory have the answers?': '¿La memoria tiene las respuestas?',
970
+ 'Does the memory contradict itself?': '¿La memoria se contradice?',
971
+ 'Does the local AI answer like the agents?': '¿La IA local contesta como los agentes?',
973
972
  'Real questions from this project, recall run at the moment each one was asked, scored against the reply that was actually given. It asks whether the answer was already in the archive, not whether it was right.':
974
973
  'Preguntas reales de este proyecto. Para cada una, MADRE repite el recuerdo automático tal como habría sido en ese momento y lo compara con la respuesta que se dio. Mide si la respuesta ya estaba en la memoria, no si era correcta.',
975
- 'Contradictions EYECAT is still holding, what has been taken out of circulation, and whether aberrations are being filed more often lately than they used to be.':
974
+ 'Contradictions the memory reviewer has not settled yet, memories taken out of use, and whether doubtful memories are being filed more often lately than they used to be.':
976
975
  'Contradicciones que el revisor de memoria todavía no resuelve, memorias que se dejaron de usar, y si últimamente aparecen más memorias dudosas que antes.',
977
- 'Real questions answered here by a frontier CLI, asked again of the local model with this archive behind it, and compared against the answer given at the time. It takes minutes and spends nothing.':
978
- 'Preguntas reales que aquí contestó uno de tus agentes, hechas otra vez al modelo local con la memoria de este proyecto, y comparadas con la respuesta de aquel día. Tarda minutos y no gasta nada.',
976
+ "Real questions answered here by one of your agents, asked again of the Local AI with this project's memory behind it, and compared against the answer given at the time. It takes minutes and spends nothing.":
977
+ 'Preguntas reales que aquí contestó uno de tus agentes, hechas otra vez a la IA local con la memoria de este proyecto, y comparadas con la respuesta de aquel día. Tarda minutos y no gasta nada.',
979
978
  'PASSES': 'PASA',
980
979
  'NOT YET': 'TODAVÍA NO',
981
980
  'NOT RUN': 'SIN PROBAR',
@@ -995,10 +994,10 @@ export const ES = {
995
994
  'The test could not run: {error}': 'La prueba no pudo correr: {error}',
996
995
 
997
996
  // ── NOSTROMO ──────────────────────────────────────────────────────────────
998
- 'YELLOW DWARF': 'DECISIÓN · ESTRELLA AMARILLA',
999
- 'WHITE DWARF': 'HECHO · ESTRELLA BLANCA',
1000
- 'GREEN DWARF': 'PREFERENCIA · ESTRELLA VERDE',
1001
- 'BLUE DWARF': 'PREGUNTA · ESTRELLA AZUL',
997
+ 'YELLOW STAR': 'ESTRELLA AMARILLA',
998
+ 'WHITE STAR': 'ESTRELLA BLANCA',
999
+ 'GREEN STAR': 'ESTRELLA VERDE',
1000
+ 'BLUE STAR': 'ESTRELLA AZUL',
1002
1001
  'COLLAPSED': 'COLAPSADA',
1003
1002
  'MEMORY RESEARCH · LOADING…': 'INVESTIGACIÓN DE MEMORIA · CARGANDO…',
1004
1003
  'MEMORY RESEARCH': 'INVESTIGACIÓN DE MEMORIA',
@@ -1064,7 +1063,7 @@ export const ES = {
1064
1063
  '{recalled} of {total} memories have been reached for at least once': '{recalled} de {total} memorias se han usado al menos una vez',
1065
1064
  'Memories nobody has needed may be noise, or may simply not have come up yet. Ask the project about older decisions and see which ones answer.':
1066
1065
  'Las memorias que nadie ha necesitado pueden ser ruido, o simplemente no haber salido todavía. Pregúntale al proyecto por decisiones viejas y mira cuáles contestan.',
1067
- 'HOW WOVEN IT IS': 'QUÉ TAN CONECTADO ESTÁ',
1066
+ 'HOW CONNECTED IT IS': 'QUÉ TAN CONECTADO ESTÁ',
1068
1067
  '{connected} of {total} memories share a subject with another': '{connected} de {total} memorias comparten tema con otra',
1069
1068
  'An archive of unrelated notes is a list. Depth comes from returning to the same subjects.':
1070
1069
  'Una memoria de notas sueltas es solo una lista. La profundidad viene de volver a los mismos temas.',
@@ -1089,7 +1088,7 @@ export const ES = {
1089
1088
 
1090
1089
  // El veredicto: una frase y una sola cosa que hacer.
1091
1090
  'THE PROJECT': 'EL PROYECTO',
1092
- 'Settle the {n} contradictions EYECAT is holding. Until they are settled, everything built on this archive inherits them.':
1091
+ 'Settle the {n} contradictions the memory reviewer found. Until they are settled, everything built on this memory inherits them.':
1093
1092
  'Resuelve las {n} contradicciones que encontró el revisor de memoria. Hasta que las resuelvas, todo lo que se construya sobre la memoria las hereda.',
1094
1093
  'Answer the {n} questions the project wrote for itself. They are the holes this test is finding.':
1095
1094
  'Contesta las {n} preguntas que el proyecto anotó por su cuenta. Son los huecos que encontró esta prueba.',
@@ -1114,8 +1113,10 @@ export const ES = {
1114
1113
  ' and against a control': ' y comparadas con un grupo de control',
1115
1114
  '{hits} of {n} questions this project actually asked had their answer already in the archive, matched by {method}{control}.':
1116
1115
  '{hits} de {n} preguntas que este proyecto hizo de verdad ya tenían su respuesta en la memoria, emparejadas por {method}{control}.',
1117
- 'EYECAT is holding {n} contradictions nobody has settled.': 'El revisor de memoria encontró {n} contradicciones que nadie ha resuelto.',
1118
- 'Nothing is open, but aberrations are being filed more often lately than they used to be.':
1116
+ 'The memory reviewer found {n} contradictions nobody has settled.': 'El revisor de memoria encontró {n} contradicciones que nadie ha resuelto.',
1117
+ 'The memory reviewer found 1 contradiction nobody has settled.': 'El revisor de memoria encontró 1 contradicción que nadie ha resuelto.',
1118
+ 'Settle the contradiction the memory reviewer found. Until it is settled, everything built on this memory inherits it.': 'Resuelve la contradicción que encontró el revisor de memoria. Mientras no se resuelva, todo lo que se construya sobre esta memoria la hereda.',
1119
+ 'Nothing is open, but doubtful memories are being filed more often lately than they used to be.':
1119
1120
  'No hay nada abierto, pero últimamente se están archivando memorias dudosas más seguido que antes.',
1120
1121
  'Nothing contradicts anything: {standing} notes stand, {refuted} were taken out of circulation.':
1121
1122
  'Nada contradice nada: {standing} notas siguen en pie, {refuted} salieron de circulación.',
@@ -1130,21 +1131,21 @@ export const ES = {
1130
1131
 
1131
1132
  // ── MODULES · EYECAT · ECONOMÍA · EL SDK ──────────────────────────────────
1132
1133
  'MODULES › ': 'MÓDULOS › ',
1133
- '◉ EYECAT': '◉ REVISOR DE MEMORIA',
1134
+ '◉ MEMORY REVIEWER': '◉ REVISOR DE MEMORIA',
1134
1135
  'IN DOUBT': 'EN DUDA',
1135
1136
  'AGAINST': 'EN CONTRA',
1136
1137
  'WHAT SEEMS TRUE': 'LO QUE PARECE CIERTO',
1137
1138
  'IT IS FALSE': 'ES FALSA',
1138
- 'Files it as an aberration and takes the memory out of every turn. Reversible from the memory map.':
1139
- 'La marca como memoria dudosa y deja de usarla en las respuestas. Se puede deshacer desde el mapa de memoria.',
1139
+ 'Marks it as a doubtful memory and stops using it in answers. Reversible from the Memory map.':
1140
+ 'La marca como memoria dudosa y deja de usarla en las respuestas. Se puede deshacer desde el Mapa de memoria.',
1140
1141
  'IT STANDS': 'SE QUEDA',
1141
- 'The project was right. This pair is never raised again.': 'El proyecto tenía razón. Esta contradicción no se vuelve a señalar.',
1142
+ 'The project was right. This contradiction is never flagged again.': 'El proyecto tenía razón. Esta contradicción no se vuelve a señalar.',
1142
1143
  'DEV': 'DEV',
1143
1144
  'Diagnostics › a module is a .mjs file.': 'Diagnóstico › un módulo es un archivo .mjs.',
1144
1145
  'NOT NOW': 'AHORA NO',
1145
1146
  'The project rejected the message.': 'El proyecto rechazó el mensaje.',
1146
1147
  'SPENDING · THIS PROJECT': 'CONSUMO · ESTE PROYECTO',
1147
- 'NO TURNS WEIGHED YET · SEND A MESSAGE AND THIS FILLS': 'TODAVÍA NO HAY RESPUESTAS CON CONSUMO REGISTRADO · MANDA UN MENSAJE Y ESTO SE LLENA',
1148
+ 'NO SPENDING RECORDED YET · SEND A MESSAGE AND THIS FILLS': 'TODAVÍA NO HAY RESPUESTAS CON CONSUMO REGISTRADO · MANDA UN MENSAJE Y ESTO SE LLENA',
1148
1149
  'SPENDING UNAVAILABLE': 'CONSUMO NO DISPONIBLE',
1149
1150
  'LOCAL AI': 'IA LOCAL',
1150
1151
  'ROLES': 'FUNCIONES',
@@ -1166,10 +1167,9 @@ export const ES = {
1166
1167
  'provider/model': 'proveedor/modelo',
1167
1168
 
1168
1169
  // Privacidad, lo que faltaba.
1169
- 'Replace all hidden data already in the ledger, the index and the memories with the marker. Asks for the project name.':
1170
- 'Reemplaza con un marcador todos los datos ocultos que ya estén guardados en el historial, el índice y las memorias. Pide el nombre del proyecto para confirmar.',
1170
+ 'Hides these words everywhere they were already saved. Asks for the project name.': 'Oculta estas palabras en todo lo que ya se guardó. Pide el nombre del proyecto.',
1171
1171
  'REPLACED WITH': 'SE REEMPLAZAN CON',
1172
- 'redaction of keys and addresses': 'el tachado de llaves de API y correos',
1172
+ 'redaction of keys and e-mail addresses': 'el tachado de llaves de API y correos',
1173
1173
  'hiding of home paths': 'el ocultamiento de tu carpeta de usuario en las rutas',
1174
1174
  // Asking about something on the screen: the questions it raises.
1175
1175
  'SUGGESTED FOR THIS': 'SUGERIDAS PARA ESTO',
@@ -1203,7 +1203,7 @@ export const ES = {
1203
1203
  'AREA': 'ÁREA',
1204
1204
  'SPOT': 'PUNTO',
1205
1205
  'Stop pointing': 'Dejar de apuntar',
1206
- 'Press on the page where you mean': 'Toca la página donde quieres apuntar',
1206
+ 'Click on the page where you want to point': 'Toca la página donde quieres apuntar',
1207
1207
  'Drag over the part you mean': 'Arrastra sobre la parte a la que quieres apuntar',
1208
1208
  "Open one of the project's servers first, then point at it.": 'Primero abre uno de los servidores del proyecto; luego señala ahí lo que quieras.',
1209
1209
  'AREA · {w} × {h} PX': 'ÁREA · {w} × {h} PX',
@@ -1213,7 +1213,7 @@ export const ES = {
1213
1213
  // What the room asks itself, instead of the browser's grey box.
1214
1214
  'UNSAVED CHANGES': 'CAMBIOS SIN GUARDAR',
1215
1215
  'KEEP EDITING': 'SEGUIR EDITANDO',
1216
- 'LEAVE THEM': 'DESCARTARLOS',
1216
+ 'DISCARD THEM': 'DESCARTARLOS',
1217
1217
  'A FILE THE PROJECT GUARDS': 'UN ARCHIVO QUE EL PROYECTO PROTEGE',
1218
1218
  "the project folder's name": 'el nombre de la carpeta del proyecto',
1219
1219
  'THE FILE CHANGED ON DISK': 'EL ARCHIVO CAMBIÓ EN DISCO',
@@ -1348,7 +1348,7 @@ export const ES = {
1348
1348
  '1 private detail hidden': '1 dato privado oculto',
1349
1349
  '{n} private details hidden': '{n} datos privados ocultos',
1350
1350
  // Neutro a propósito: casi todas las clases son femeninas (decisión, pregunta, aberración).
1351
- 'memory · the human forgot a ': 'memoria · olvidada por ti · ',
1351
+ 'memory · you forgot a ': 'memoria · olvidada por ti · ',
1352
1352
  'memory used · {n}': 'memoria usada · {n}',
1353
1353
  'Show the memories this reply used': 'Ver las memorias que usó esta respuesta',
1354
1354
  'Layer': 'Capa',
@@ -1359,7 +1359,7 @@ export const ES = {
1359
1359
  'Mesh': 'Malla',
1360
1360
  'Intensity': 'Intensidad',
1361
1361
  'Blur': 'Desenfoque',
1362
- 'A photograph wears the project\'s ground as a layer or as a mesh of its own colours: choose how strong it is and how much the photograph blurs.': 'El fondo del proyecto puede ser una fotografía, como capa o como una malla con sus propios colores: elige qué tan intensa se ve y cuánto se desenfoca.',
1362
+ "The project's background can be a photograph, shown as a layer or as a mesh of its colors: choose how strong it looks and how much the photograph blurs.": 'El fondo del proyecto puede ser una fotografía, como capa o como una malla con los colores de la foto: elige qué tan intensa se ve y cuánto se desenfoca.',
1363
1363
  ' · {n} related': ' · {n} relacionadas',
1364
1364
  '◉ memory saved': '◉ memoria guardada',
1365
1365
  'Saved by @{agent} for every future turn · #{from}–#{through}. Click to see it in the memory map.':
@@ -1413,7 +1413,7 @@ export const ES = {
1413
1413
  '@{agent} waits for the turn writing in the project · one turn writes at a time': '@{agent} espera a la respuesta que está escribiendo en el proyecto · solo una respuesta escribe a la vez',
1414
1414
  'SERVING': 'EN MARCHA',
1415
1415
  'serving on :{port}': 'en marcha en :{port}',
1416
- 'serving on :{port} · listens on the whole network, so the project will not open it': 'en marcha en :{port} · está abierto a toda tu red, por eso el proyecto no lo abre',
1416
+ 'serving on :{port} · open to your whole network, so the project will not open it': 'en marcha en :{port} · está abierto a toda tu red, por eso el proyecto no lo abre',
1417
1417
  'OPEN IN YOUR SERVERS': 'ABRIR EN TUS SERVIDORES',
1418
1418
  'That command is not running.': 'Ese comando no está corriendo.',
1419
1419
  'what it left could not be read ({reason})': 'no se pudo leer lo que dejó ({reason})',
@@ -1421,7 +1421,7 @@ export const ES = {
1421
1421
  '{n} changes to existing files were put back: CREATE only adds.': '{n} cambios a archivos que ya existían se deshicieron: CREAR solo agrega archivos nuevos.',
1422
1422
  'RETRY WITH MORE TIME · {n}s': 'REINTENTAR CON MÁS TIEMPO · {n}s',
1423
1423
  'You were cut off by the time limit. These files already exist: {files}. Finish what is missing; do not start over.': 'Te cortó el tiempo límite. Estos archivos ya existen: {files}. Termina lo que falta; no empieces de nuevo.',
1424
- 'Diagnostics › #{n} needs its keys again: choose it on the mode chip before sending.': 'Diagnóstico › #{n} necesita que confirmes otra vez: elígelo en el selector de modo antes de enviar.',
1424
+ 'Diagnostics › #{n} needs you to confirm again: choose it in the mode selector before sending.': 'Diagnóstico › #{n} necesita que confirmes otra vez: elígelo en el selector de modo antes de enviar.',
1425
1425
  'IN THE BOX · SEND IT WHEN READY': 'EN LA CAJA · ENVÍALO CUANDO QUIERAS',
1426
1426
  'Git could not list the changes ({reason}). The restore point from before the turn is still there.': 'Git no pudo listar los cambios ({reason}). El punto de restauración de antes de la respuesta sigue ahí.',
1427
1427
  'UNDO · GO BACK TO THE RESTORE POINT': 'DESHACER · VOLVER AL PUNTO DE RESTAURACIÓN',
@@ -1431,14 +1431,14 @@ export const ES = {
1431
1431
  "project restored to the restore point before @{agent}'s turn · {restored} restored · {removed} removed":
1432
1432
  'proyecto restaurado a como estaba antes de la respuesta de @{agent} · {restored} restaurados · {removed} quitados',
1433
1433
  'RESEND TO @{agent} WITH CREATE': 'REENVIAR A @{agent} CON CREAR',
1434
- 'Send this same request from you, with a creation lease.': 'Vuelve a enviar esta misma petición a tu nombre, con permiso para crear archivos.',
1434
+ 'Send this same request again yourself, with permission to create files.': 'Vuelve a enviar esta misma petición tú mismo, con permiso para crear archivos.',
1435
1435
  'RESENT WITH CREATE': 'REENVIADO CON CREAR',
1436
1436
  'It could not be resent: {error}': 'No se pudo reenviar: {error}',
1437
1437
  'ALWAYS FOR THIS AGENT': 'SIEMPRE PARA ESTE AGENTE',
1438
1438
  'GRANT ONCE': 'PERMITIR UNA VEZ',
1439
1439
  'GRANT FOR PLAN': 'PERMITIR PARA EL PLAN',
1440
- 'Every remaining writable step of this plan shares one lease directory.':
1441
- 'Todos los pasos de este plan que todavía pueden escribir comparten la misma carpeta con permiso para crear.',
1440
+ 'Every remaining step of this plan that can write uses the same folder for new files.':
1441
+ 'Todos los pasos de este plan que todavía pueden escribir usan la misma carpeta para archivos nuevos.',
1442
1442
  'DENY': 'NEGAR',
1443
1443
  'anywhere in the project · existing files stay untouched': 'donde sea en el proyecto · los archivos que ya existen no se tocan',
1444
1444
  ' · scratch ': ' · borrador ',
@@ -1503,9 +1503,9 @@ export const ES = {
1503
1503
  'Deja de sugerir esta pregunta. No se borra ni se cambia nada.',
1504
1504
  'No theme shared with another memory yet.': 'Todavía no comparte tema con ninguna otra memoria.',
1505
1505
  'TAKEN DOWN': 'DADA DE BAJA',
1506
- 'This aberration took that memory out of every future turn.': 'Esta memoria dudosa dejó esa memoria fuera de las próximas respuestas.',
1506
+ 'This doubtful memory took that memory out of every future answer.': 'Esta memoria dudosa dejó esa memoria fuera de las próximas respuestas.',
1507
1507
  'REFUTES IT': 'LA CONTRADICE',
1508
- 'An aberration took this memory out of every future turn.': 'Una memoria dudosa dejó esta memoria fuera de las próximas respuestas.',
1508
+ 'A doubtful memory took this memory out of every future answer.': 'Una memoria dudosa dejó esta memoria fuera de las próximas respuestas.',
1509
1509
  'PRESS AGAIN TO FORGET · FOREVER': 'VUELVE A APRETAR PARA OLVIDAR · PARA SIEMPRE',
1510
1510
  'FORGET THIS MEMORY': 'OLVIDAR ESTA MEMORIA',
1511
1511
  'FORGETTING…': 'OLVIDANDO…',
@@ -1526,7 +1526,7 @@ export const ES = {
1526
1526
  'FACT': 'HECHO',
1527
1527
  'PREFERENCE': 'PREFERENCIA',
1528
1528
  'QUESTION': 'PREGUNTA',
1529
- 'ABERRATION': 'MEMORIA DUDOSA',
1529
+ 'DOUBTFUL MEMORY': 'MEMORIA DUDOSA',
1530
1530
  'UNUSED · 0': 'SIN USAR · 0',
1531
1531
  'ASK · 0': 'PREGUNTAR · 0',
1532
1532
  'RECENTER': 'CENTRAR',
@@ -1580,7 +1580,7 @@ export const ES = {
1580
1580
  '{step}: done': '{step}: hecho',
1581
1581
  'Hide the list': 'Ocultar la lista',
1582
1582
  'Each step ticks itself when you do it.': 'Cada paso se marca solo cuando lo haces.',
1583
- 'The list comes back from ? in Diagnostics.': 'Puedes volver a abrir la lista con el botón ? en Diagnóstico.',
1583
+ 'You can reopen the list with the ? button in Diagnostics.': 'Puedes volver a abrir la lista con el botón ? en Diagnóstico.',
1584
1584
  'First steps done: you know your way around MADRE.': 'Primeros pasos completos: ya sabes moverte por MADRE.',
1585
1585
  '{n} of {total}': '{n} de {total}',
1586
1586
  'Skip': 'Saltar',
@@ -1597,7 +1597,7 @@ export const ES = {
1597
1597
  'Take me there': 'Llévame ahí',
1598
1598
  "What's new in this version": 'Novedades de esta versión',
1599
1599
  // NOSTROMO: la mira sobre la enana elegida.
1600
- 'TARGET LOCKED': 'MEMORIA SELECCIONADA',
1600
+ 'MEMORY SELECTED': 'MEMORIA SELECCIONADA',
1601
1601
  'DRAG TO TURN · SHIFT+DRAG TO MOVE · WHEEL TO ZOOM · CLICK A MEMORY · DO NOT TOUCH THE CORE':
1602
1602
  'ARRASTRA PARA GIRAR · SHIFT+ARRASTRA PARA MOVER · RUEDA PARA ACERCAR · CLIC EN UNA MEMORIA · NO TOQUES EL NÚCLEO',
1603
1603
  '⚠ WARNING ⚠': '⚠ ADVERTENCIA ⚠',
@@ -1643,10 +1643,10 @@ export const ES = {
1643
1643
  'Agent usage': 'Uso del agente',
1644
1644
  'Memory map · memory research': 'Mapa de memoria · explora la memoria del proyecto',
1645
1645
  'Memory kinds': 'Tipos de memoria',
1646
- 'YELLOW DWARF · DECISION': 'ENANA AMARILLA · DECISIÓN',
1647
- 'WHITE DWARF · FACT': 'ENANA BLANCA · HECHO',
1648
- 'GREEN DWARF · PREFERENCE': 'ENANA VERDE · PREFERENCIA',
1649
- 'BLUE DWARF · QUESTION': 'ENANA AZUL · PREGUNTA',
1646
+ 'YELLOW STAR · DECISION': 'ESTRELLA AMARILLA · DECISIÓN',
1647
+ 'WHITE STAR · FACT': 'ESTRELLA BLANCA · HECHO',
1648
+ 'GREEN STAR · PREFERENCE': 'ESTRELLA VERDE · PREFERENCIA',
1649
+ 'BLUE STAR · QUESTION': 'ESTRELLA AZUL · PREGUNTA',
1650
1650
  'The memories nothing has ever reached for, that share a subject with nothing, and that have had their chances':
1651
1651
  'Muestra las memorias que nunca se han usado, que no comparten tema con ninguna otra y que ya tuvieron su oportunidad',
1652
1652
  'The questions this archive cannot answer yet, written from what it already holds':
@@ -1683,7 +1683,7 @@ export const ES = {
1683
1683
  'npm todavía no entrega {version}; una versión recién publicada puede tardar unos minutos. El proyecto sigue abierto: vuelve a intentarlo en un momento.',
1684
1684
  'Agents are still working. STOPALL or wait, then update.':
1685
1685
  'Los agentes siguen trabajando. Dale DETENER TODO o espera, y luego actualiza.',
1686
- 'Security is silent.': 'El módulo de Seguridad no respondió.',
1686
+ 'The Security module did not respond.': 'El módulo de Seguridad no respondió.',
1687
1687
  'No such conversation.': 'No existe esa conversación.',
1688
1688
  'That file is empty.': 'Ese archivo está vacío.',
1689
1689
  'A module file that big is not a module. Keep it under 400 KB.':
@@ -1773,8 +1773,8 @@ export const ES = {
1773
1773
  'Split the message, or raise the cap if your CLIs cope.': 'Divide el mensaje en partes, o sube el tope si las apps de tus agentes lo aguantan.',
1774
1774
 
1775
1775
  'Where the usage numbers come from': 'De dónde salen los números de uso',
1776
- 'Each sphere\'s usage shows the provider\'s real limit when the CLI publishes it: Codex writes its 5-hour and weekly windows (used %, reset time) into every session rollout under ~/.codex/sessions; Claude Code\'s /usage comes from Anthropic\'s OAuth usage endpoint; MADRE can ask it with the token Claude Code keeps in the keychain when you start with PULSE_CLAUDE_USAGE=1 (macOS may ask once to allow the keychain read). Gemini and OpenCode publish nothing locally, so their usage shows MADRE\'s own rolling 5-hour window of budget tokens. A window whose reset time has passed counts as empty until the CLI reports again, and the sentinel says "clear" when a full window resets.':
1777
- 'El uso de cada esfera muestra el límite real de tu plan cuando la app del agente lo publica: Codex escribe sus ventanas de 5 horas y semanal (% usado, hora de reinicio) en cada sesión bajo ~/.codex/sessions; el /usage de Claude Code viene del servicio de uso de Anthropic, y MADRE puede consultarlo con la credencial que Claude Code guarda en el llavero si arrancas con PULSE_CLAUDE_USAGE=1 (macOS puede pedirte permiso una vez para leer el llavero). Gemini y OpenCode no publican nada en tu computadora, así que su uso muestra la ventana propia de MADRE: las últimas 5 horas de tokens contra su límite de uso. Una ventana cuya hora de reinicio ya pasó cuenta como vacía hasta que la app vuelva a reportar, y el monitor de fallas dice «claro» cuando una ventana entera se reinicia.',
1776
+ 'Each sphere\'s usage shows the provider\'s real limit when the CLI publishes it: Codex writes its 5-hour and weekly windows (used %, reset time) into every session rollout under ~/.codex/sessions; Claude Code\'s /usage comes from Anthropic\'s OAuth usage endpoint; MADRE can ask it with the token Claude Code keeps in the keychain when you start with PULSE_CLAUDE_USAGE=1 (macOS may ask once to allow the keychain read). Gemini and OpenCode publish nothing locally, so their usage shows MADRE\'s own rolling 5-hour window of budget tokens. A window whose reset time has passed counts as empty until the CLI reports again, and the failure monitor says "clear" when a full window resets.':
1777
+ 'El uso de cada esfera muestra el límite real de tu plan cuando la app del agente lo publica: Codex escribe sus ventanas de 5 horas y semanal (% usado, hora de reinicio) en cada sesión bajo ~/.codex/sessions; el /usage de Claude Code viene del servicio de uso de Anthropic, y MADRE puede consultarlo con la credencial que Claude Code guarda en el llavero si arrancas con PULSE_CLAUDE_USAGE=1 (macOS puede pedirte permiso una vez para leer el llavero). Gemini y OpenCode no publican nada en tu computadora, así que su uso muestra la ventana propia de MADRE: las últimas 5 horas de tokens contra su límite de uso. Una ventana cuya hora de reinicio ya pasó cuenta como vacía hasta que la app vuelva a reportar, y el monitor de fallas dice «liberado» cuando una ventana entera se reinicia.',
1778
1778
  'Click a sphere to see both windows and when they reset. If a sphere\'s usage looks stale, run one turn with that agent: Codex only rewrites its limits when it runs. Set PULSE_OFFICIAL_QUOTA=0 to stop reading provider limits altogether.':
1779
1779
  'Haz clic en una esfera para ver las dos ventanas y cuándo se reinician. Si el uso de una esfera se ve viejo, pídele algo a ese agente: Codex solo actualiza sus límites cuando trabaja. Pon PULSE_OFFICIAL_QUOTA=0 para dejar de leer por completo los límites del proveedor.',
1780
1780
 
@@ -1807,19 +1807,19 @@ export const ES = {
1807
1807
  'Escribe STOPALL en la caja de Escribir, o pulsa DETENER TODO en la barra: se detienen todos los planes y todos los agentes que estén trabajando. Después pregunta a un agente a la vez.',
1808
1808
 
1809
1809
  'Gemini: generating images': 'Gemini: generar imágenes',
1810
- 'Gemini CLI 0.60 has no image-generation tool in headless mode, even though Google offers image models. MADRE fills the gap with the Images module: its own MCP server exposing generate_image on the Gemini API image models, attached to Gemini only inside a creation lease with the image scope on, billing your Gemini key.':
1811
- 'La app de Gemini 0.60 no puede generar imágenes cuando otra app la usa por detrás, aunque Google sí ofrece modelos de imagen. MADRE cubre ese hueco con el módulo Imágenes: su propia herramienta conectada (MCP) generate_image, que usa los modelos de imagen de la API de Gemini; se conecta a Gemini solo dentro de un permiso para crear con imágenes activado, y se cobra a tu llave de API de Gemini.',
1810
+ 'Gemini CLI 0.60 has no image-generation tool in headless mode, even though Google offers image models. MADRE fills the gap with the Images module: its own MCP server exposing generate_image on the Gemini API image models, attached to Gemini only inside a permission to create with images on, billing your Gemini key.':
1811
+ 'La app de Gemini 0.60 no puede generar imágenes cuando otra app la usa por detrás, aunque Google sí ofrece modelos de imagen. MADRE cubre ese hueco con el módulo Imágenes: su propia herramienta externa (MCP) generate_image, que usa los modelos de imagen de la API de Gemini; se conecta a Gemini solo dentro de un permiso para crear con imágenes activado, y se cobra a tu llave de API de Gemini.',
1812
1812
  'Turn Images on in Modules (it needs a Gemini API key with credits), then switch on Generate images for Gemini in Settings → Agents. Without the module, ask @codex or let the orchestrator route the image step to it.':
1813
1813
  'Enciende Imágenes en Módulos (necesita una llave de API de Gemini con créditos) y luego activa Generar imágenes para Gemini en Ajustes → Agentes. Sin el módulo, pídeselo a @codex o deja que el agente que coordina le pase ese paso.',
1814
1814
 
1815
1815
  'Claude Code: generating images': 'Claude Code: generar imágenes',
1816
- "Claude Code has no image-generation tool; Claude models describe and reason about images, they do not render them. The Images module gives Claude the MCP tool generate_image (MADRE's own server on the Gemini API), attached with --mcp-config only inside a creation lease.":
1817
- 'Claude Code no tiene herramienta para generar imágenes; los modelos de Claude describen y razonan sobre imágenes, pero no las dibujan. El módulo Imágenes le da a Claude la herramienta generate_image (una herramienta conectada, MCP, propia de MADRE que usa la API de Gemini), solo dentro de un permiso para crear.',
1816
+ "Claude Code has no image-generation tool; Claude models describe and reason about images, they do not render them. The Images module gives Claude the MCP tool generate_image (MADRE's own server on the Gemini API), attached with --mcp-config only inside a permission to create.":
1817
+ 'Claude Code no tiene herramienta para generar imágenes; los modelos de Claude describen y razonan sobre imágenes, pero no las dibujan. El módulo Imágenes le da a Claude la herramienta generate_image (una herramienta externa (MCP) propia de MADRE que usa la API de Gemini), solo dentro de un permiso para crear.',
1818
1818
  'Turn Images on in Modules, switch on Generate images for Claude in Settings → Agents, then use CREATE. Or route the image step to @codex.':
1819
1819
  'Enciende Imágenes en Módulos, activa Generar imágenes para Claude en Ajustes → Agentes y usa CREAR. O mándale ese paso a @codex.',
1820
1820
 
1821
1821
  'OpenCode: generating images': 'OpenCode: generar imágenes',
1822
- "OpenCode exposes no image-generation tool of its own. The Images module adds MADRE's MCP image server to OpenCode's ephemeral config inside a creation lease.":
1822
+ "OpenCode exposes no image-generation tool of its own. The Images module adds MADRE's MCP image server to OpenCode's ephemeral config inside a permission to create.":
1823
1823
  'OpenCode no tiene una herramienta propia para generar imágenes. El módulo Imágenes agrega la herramienta de imágenes de MADRE (MCP) a la configuración temporal de OpenCode, solo dentro de un permiso para crear.',
1824
1824
  'Turn Images on in Modules, switch on Generate images for OpenCode in Settings → Agents, then use CREATE. Or route the image step to @codex.':
1825
1825
  'Enciende Imágenes en Módulos, activa Generar imágenes para OpenCode en Ajustes → Agentes y usa CREAR. O mándale ese paso a @codex.',
@@ -1830,8 +1830,8 @@ export const ES = {
1830
1830
  "Switch on Web access for that agent in Settings → Agents; it saves at once. It applies to every turn of that agent; content fetched is sent to its provider.":
1831
1831
  'Activa Acceso a la web para ese agente en Ajustes → Agentes; se guarda al instante. Aplica a todas sus respuestas; lo que traiga de la web se envía a su proveedor.',
1832
1832
 
1833
- 'Commands and mentions in the field box': 'Comandos y menciones en el campo',
1834
- 'Type "/" for the project\'s commands: /create arms the lease, /image routes an image request to an agent that can draw, /stopall is the brake, /git (Git) and /ahp (Continuity) run read-only in the project and post a fact card everyone, agents included, can read. Type "@" to mention an agent; the name becomes a label. Type "!" to point at a project file ("!src/room.mjs:12-20" for lines): the agent reads it first. In the viewer, click a line number (Shift+click for a range) and REVIEW WITH sends those lines to an agent.':
1833
+ 'Commands and mentions in the Write box': 'Comandos y menciones en la caja de Escribir',
1834
+ 'Type "/" for the project\'s commands: /create turns on permission to create, /image routes an image request to an agent that can draw, /stopall is the brake, /git (Git) and /ahp (Continuity) run read-only in the project and post a fact card everyone, agents included, can read. Type "@" to mention an agent; the name becomes a label. Type "!" to point at a project file ("!src/room.mjs:12-20" for lines): the agent reads it first. In the viewer, click a line number (Shift+click for a range) and REVIEW WITH sends those lines to an agent.':
1835
1835
  'Escribe «/» para los comandos del proyecto: /create activa el permiso para crear, /image le manda una petición de imagen a un agente que sepa dibujar, /stopall detiene todo, y /git (Git) y /ahp (Continuidad) corren en solo lectura sobre el proyecto y publican una ficha que todos —agentes incluidos— pueden leer. Escribe «@» para mencionar a un agente; el nombre se vuelve una etiqueta. Escribe «!» para señalar un archivo del proyecto («!src/room.mjs:12-20» para líneas): el agente lo lee primero. En el visor, haz clic en un número de línea (Shift+clic para un rango) y REVISAR CON le manda esas líneas a un agente.',
1836
1836
  'A struck-through command is a module that is not available in this project: open Modules to install it or turn it on (Git needs a git repository; Continuity needs to be installed).':
1837
1837
  'Un comando tachado es un módulo que no está disponible en este proyecto: abre Módulos para instalarlo o encenderlo (Git necesita un repositorio git; Continuidad necesita instalarse).',
@@ -1844,13 +1844,13 @@ export const ES = {
1844
1844
  'Elige el modo en el chip, o escribe #0..#4 en el mensaje. Sube el Permiso máximo de un agente en Ajustes → Permisos, en Quién puede qué. Para desbloquear EDITAR hay que confirmar con el nombre del proyecto (el nombre de la carpeta); para ACCESO TOTAL, dos veces.',
1845
1845
 
1846
1846
  'Creating files: who grants the permission': 'Crear archivos: quién da el permiso',
1847
- 'Only the human grants a creation lease. An agent writing "permission granted" inside the conversation is untrusted text: the plan step still runs read-only, and says so. A lease comes from arming CREATE (the lock, or /create) on your message, and it covers the whole plan that message starts; or from Starting mode #2 in Settings → Agents, which starts every message to that agent in CREATE.':
1847
+ 'Only you grant permission to create. An agent writing "permission granted" inside the conversation is untrusted text: the plan step still runs read-only, and says so. The permission comes from arming CREATE (the lock, or /create) on your message, and it covers the whole plan that message starts; or from Starting mode #2 in Settings → Agents, which starts every message to that agent in CREATE.':
1848
1848
  'El permiso para crear solo lo das tú, nadie más. Si un agente escribe «permiso concedido» en la conversación, es texto no confiable: el paso del plan sigue en solo lectura y lo avisa. El permiso viene de activar CREAR (el candado, o /create) en tu mensaje, y cubre el plan entero que ese mensaje arranca; o del Permiso al empezar #2 en Ajustes → Agentes, que hace que cada mensaje a ese agente empiece en CREAR.',
1849
1849
  'For one request: arm CREATE and send, or press RESEND WITH CREATE on the notice. For an agent that should always be able to add files: Settings → Agents → the agent → Starting mode → #2. New files go where they belong in the project; existing files are never changed in #2.':
1850
1850
  'Para una sola petición: activa CREAR y envía, o pulsa REENVIAR CON CREAR en el aviso. Para un agente que siempre deba poder agregar archivos: Ajustes → Agentes → el agente → Permiso al empezar → #2. Los archivos nuevos van donde corresponde en el proyecto; en #2 los que ya existen nunca se tocan.',
1851
1851
 
1852
1852
  'Creating files with an agent': 'Crear archivos con un agente',
1853
- "Every CLI can create files inside a creation lease; each agent's Max mode says how far it may go, and nothing is created until you press CREATE.":
1853
+ "Every CLI can create files inside a permission to create; each agent's Max mode says how far it may go, and nothing is created until you press CREATE.":
1854
1854
  'Todas las apps de los agentes pueden crear archivos dentro de un permiso para crear; el Permiso máximo de cada agente dice hasta dónde puede llegar, y no se crea nada hasta que tú pulsas CREAR.',
1855
1855
  'Give the agent a Max mode of #2 or more in Settings → Permissions, then arm CREATE in the Write box for the request.':
1856
1856
  'Dale al agente un Permiso máximo de #2 o más en Ajustes → Permisos, y activa CREAR en la caja de Escribir para esa petición.',
@@ -1901,8 +1901,8 @@ export const ES = {
1901
1901
  'Memory map: opening, reading and forgetting': 'Mapa de memoria: abrir, leer y olvidar',
1902
1902
  'The Memory map is the human\'s view of the archive, from Diagnostics. Opening the memory asks for the project name: the name of the project folder, exactly as EDIT does; a wrong one answers UNABLE TO COMPUTE. Access stays open until the page reloads. Inside, every distilled memory is a planet around the project\'s core; drag to move, wheel to zoom, click a planet for its card. The only edit is FORGET (two presses): the note leaves every future turn, the ledger stays. If the archive answers SEALED with a number of minutes, wait them out: repeated strikes at the core close it for a while and the Write box reads INTRUDER until it opens again.':
1903
1903
  'El Mapa de memoria es la vista de la memoria para ti, desde Diagnóstico. Para abrirla hay que confirmar con el nombre del proyecto: el nombre de la carpeta, igual que en EDITAR; si es incorrecto, contesta IMPOSIBLE DE PROCESAR. El acceso sigue abierto hasta que recargues la página. Adentro, cada nota resumida es un planeta alrededor del núcleo del proyecto; arrastra para mover, usa la rueda para acercar y haz clic en un planeta para ver su ficha. Lo único que se puede cambiar es OLVIDAR (dos toques): la nota deja de usarse en las próximas respuestas y el historial no cambia. Si contesta SELLADO con un número de minutos, espéralos: varios intentos fallidos lo bloquean un rato y la caja de Escribir dice INTRUSO hasta que se vuelva a abrir.',
1904
- 'Type the folder name shown in the project header as the project name. To find a memory quickly, ask an agent to search instead. Do not strike the core.':
1905
- 'Escribe como nombre del proyecto el nombre de carpeta que aparece en su encabezado. Para encontrar una memoria rápido, mejor pídele a un agente que la busque. Evita probar nombres al azar: varios errores seguidos lo bloquean un rato.',
1904
+ 'Type the folder name shown in the project header as the project name. To find a memory quickly, ask an agent to search instead. Avoid guessing names: several wrong ones in a row lock the Memory map for a while.':
1905
+ 'Escribe como nombre del proyecto el nombre de carpeta que aparece en su encabezado. Para encontrar una memoria rápido, mejor pídele a un agente que la busque. Evita probar nombres al azar: varios errores seguidos bloquean el Mapa de memoria un rato.',
1906
1906
 
1907
1907
  'Preview: rendering HTML, SVG and Markdown in the viewer': 'Vista previa: ver HTML, SVG y Markdown en el visor',
1908
1908
  'With Preview on (in Modules), the file viewer renders .html and .svg through /preview/project/<path> inside a sealed frame: the page\'s own scripts run, but the frame has no origin, no network, no forms and no way to reach MADRE, and it loads CSS, JS, images and fonts only from the project through MADRE. Relative links work. Markdown renders in place; PREVIEW / SOURCE switches. Off, those files show as text with a note. 412 means Preview is off. Plain /api/files always serves HTML as text.':
@@ -1913,8 +1913,8 @@ export const ES = {
1913
1913
  'Ollama: local smart search and a local archivist': 'Ollama: búsqueda por significado y resúmenes de memoria, en esta Mac',
1914
1914
  'When Ollama runs on this machine with an embedding model and a chat model, MADRE embeds the memory locally (recall by meaning without any key) and distils memories with the local model first, before Gemini and the others. Nothing leaves the machine for remembering. Off or absent, everything falls back to the providers. The Local AI module, in Modules, shows what Ollama has, downloads the recommended models, and switches each role.':
1915
1915
  'Cuando Ollama corre en esta computadora con un modelo de búsqueda por significado y uno de chat, MADRE hace la búsqueda por significado aquí mismo (sin ninguna llave de API) y hace las notas resumidas con el modelo local primero, antes que con Gemini y los demás. Para recordar no sale nada de tu computadora. Si Ollama está apagado o no está instalado, todo vuelve a los proveedores. El módulo IA local, en Módulos, muestra qué tiene Ollama, te deja descargar los modelos recomendados y encender o apagar cada función.',
1916
- 'Install Ollama (ollama.com), start it, then open Local AI in Modules, press Check again and download the models it suggests. Set PULSE_OLLAMA_MODEL or PULSE_OLLAMA_EMBED_MODEL to prefer others; PULSE_EMBED_PROVIDER=gemini keeps embeddings on Gemini even with Ollama running.':
1917
- 'Instala Ollama (ollama.com), enciéndelo, luego abre IA local en Módulos, pulsa Revisar otra vez y descarga los modelos que sugiere. Pon PULSE_OLLAMA_MODEL o PULSE_OLLAMA_EMBED_MODEL para preferir otros; PULSE_EMBED_PROVIDER=gemini deja la búsqueda por significado en Gemini aunque Ollama esté corriendo.',
1916
+ 'Install Ollama (ollama.com), start it, then open Local AI in Modules, press RECHECK and download the models it suggests. Set PULSE_OLLAMA_MODEL or PULSE_OLLAMA_EMBED_MODEL to prefer others; PULSE_EMBED_PROVIDER=gemini keeps embeddings on Gemini even with Ollama running.':
1917
+ 'Instala Ollama (ollama.com), enciéndelo, luego abre IA local en Módulos, pulsa REVISAR OTRA VEZ y descarga los modelos que sugiere. Pon PULSE_OLLAMA_MODEL o PULSE_OLLAMA_EMBED_MODEL para preferir otros; PULSE_EMBED_PROVIDER=gemini deja la búsqueda por significado en Gemini aunque Ollama esté corriendo.',
1918
1918
 
1919
1919
  "@madre: the project's own memory, as an agent": '@madre: la memoria del proyecto, como agente',
1920
1920
  'When Ollama runs with a chat model, a fifth agent joins the project: @madre. It answers from the whole archive (distilled notes and exact quotes, cited as [#n]) and from what the message carries, locally, for free. It never writes, draws, browses or makes plans; when the project never discussed something it says so. Other agents may give it a plan step to check what was decided. It leaves the project when Ollama stops, and Diagnostics says so.':
@@ -1948,9 +1948,9 @@ export const ES = {
1948
1948
  "The panel on the left of the canvas lists them: open one, or start another at the bottom. Deleting one takes its transcript and nothing else — what the archivist distilled from it is the project's memory and stays. If MADRE says the project is already open, use that project and open a conversation inside it instead of starting a second server.":
1949
1949
  'El panel a la izquierda del lienzo las lista: abre una, o empieza otra desde abajo. Borrar una elimina su conversación y nada más: las notas resumidas que salieron de ella son memoria del proyecto y se quedan. Si MADRE dice que el proyecto ya está abierto, usa ese proyecto y abre una conversación dentro, en vez de arrancar un segundo servidor.',
1950
1950
 
1951
- 'Aberrations: what the project established is false': 'Memorias dudosas: lo que el proyecto ya sabe que es falso',
1952
- 'An aberration is a claim the project established is false, kept on purpose rather than deleted: it is what the local model learns not to repeat. It never travels into a turn, and the note it refutes is taken out of circulation with it — a refuted memory is never recalled again, by words or by meaning. EYECAT watches for two agents saying opposite things about the same subject and raises the pair for a third agent to judge, one that took no part in either side. Confirming files the aberration and quarantines what it refutes; dismissing says the project was right and the pair is never raised again. Forgetting an aberration gives its note back.':
1953
- 'Una memoria dudosa es una afirmación que el proyecto estableció como falsa, guardada a propósito en vez de borrada: es lo que el modelo local aprende a no repetir. Nunca se usa en una respuesta, y la nota que contradice deja de usarse con ella: una memoria refutada no se vuelve a recordar, ni por palabras ni por significado. MADRE vigila que dos agentes no digan cosas opuestas sobre el mismo tema y, si pasa, le pide a un tercer agente, que no participó en ninguno de los dos lados, que decida. Confirmar guarda la memoria dudosa y aparta lo que contradice; descartar dice que el proyecto tenía razón y ese par no se vuelve a señalar. Olvidar una memoria dudosa devuelve su nota.',
1951
+ 'Doubtful memories: what the project established is false': 'Memorias dudosas: lo que el proyecto ya sabe que es falso',
1952
+ 'A doubtful memory is a claim the project established is false, kept on purpose rather than deleted: it is what the local model learns not to repeat. It never travels into a turn, and the note it refutes is taken out of circulation with it — a refuted memory is never recalled again, by words or by meaning. The memory reviewer watches for two agents saying opposite things about the same subject and raises the pair for a third agent to judge, one that took no part in either side. Confirming files the doubtful memory and quarantines what it refutes; dismissing says the project was right and the pair is never raised again. Forgetting a doubtful memory puts the note it refuted back in use.':
1953
+ 'Una memoria dudosa es una afirmación que el proyecto estableció como falsa, guardada a propósito en vez de borrada: es lo que el modelo local aprende a no repetir. Nunca se usa en una respuesta, y la nota que contradice deja de usarse con ella: una memoria refutada no se vuelve a recordar, ni por palabras ni por significado. MADRE vigila que dos agentes no digan cosas opuestas sobre el mismo tema y, si pasa, le pide a un tercer agente, que no participó en ninguno de los dos lados, que decida. Confirmar guarda la memoria dudosa y aparta lo que contradice; descartar dice que el proyecto tenía razón y ese par no se vuelve a señalar. Olvidar una memoria dudosa vuelve a poner en uso la nota que contradecía.',
1954
1954
  'The Memory map shows them as collapsed bodies: open one to read what it took down, or clear it if the project was wrong about being wrong. The second test of the Memory review, in Settings → Memory, reports open contradictions.':
1955
1955
  'El Mapa de memoria las muestra como cuerpos colapsados: abre una para leer qué descartó, o quítala si el proyecto se equivocó al marcarla como falsa. La segunda prueba de la Revisión de la memoria, en Ajustes → Memoria, muestra las contradicciones pendientes.',
1956
1956
 
@@ -1967,7 +1967,7 @@ export const ES = {
1967
1967
  'El Mapa de memoria muestra SIN USAR · N en su encabezado cuando hay alguna; al apretarlo se marca cada una en el mapa. Abre una y su ficha te dice el número sin rodeos, con OLVIDAR a un toque. Preguntar por ella es la otra salida: el proyecto te escribe esa pregunta bajo PREGUNTAR.',
1968
1968
 
1969
1969
  'Memory review: whether the archive works': 'Revisión de la memoria: si de verdad funciona',
1970
- 'The six readings count what the archive is made of; they cannot say whether it works, because nothing about a pile of notes says whether the right one comes back when it is needed. COVERAGE takes real questions from this project, runs recall at the exact point each was asked, and scores what came back against the reply that was actually given. CONSISTENCY reads the contradictions EYECAT still holds and whether aberrations are being filed more often lately. MATCH puts real questions a frontier CLI answered back to the local model with this archive behind it. All three measure against a control, because everything in one project is about the same handful of subjects and any two pieces of it read as close to an embedder: to count, what the archive handed over has to beat what it would have handed over for a different question.':
1970
+ 'The six readings count what the archive is made of; they cannot say whether it works, because nothing about a pile of notes says whether the right one comes back when it is needed. COVERAGE takes real questions from this project, runs recall at the exact point each was asked, and scores what came back against the reply that was actually given. CONSISTENCY reads the contradictions the memory reviewer still holds and whether doubtful memories are being filed more often lately. MATCH asks the local model, with this archive behind it, real questions that one of your agents (Codex, Claude, Gemini or OpenCode) already answered. All three measure against a control, because everything in one project is about the same handful of subjects and any two pieces of it look alike to search by meaning: to count, what the archive handed over has to beat what it would have handed over for a different question.':
1971
1971
  'Las seis lecturas dicen de qué está hecha la memoria; no pueden decir si funciona, porque una pila de notas no dice si la correcta aparece cuando hace falta. COBERTURA toma preguntas reales de este proyecto, corre el recuerdo automático en el momento exacto en que se hizo cada una, y califica lo que encontró contra la respuesta que de verdad se dio. CONSISTENCIA revisa las contradicciones pendientes y si últimamente se guardan memorias dudosas más seguido. COINCIDENCIA le hace al modelo local preguntas reales que contestó uno de los agentes principales (Codex, Claude, Gemini u OpenCode), con esta memoria de apoyo. Las tres miden contra un control, porque en un proyecto todo habla del mismo puñado de temas y para la búsqueda por significado dos fragmentos cualesquiera parecen cercanos: para contar, lo que la memoria entregó tiene que ganarle a lo que habría entregado para otra pregunta.',
1972
1972
  'Read the one sentence and the one instruction at the top of Settings → Memory; the readings and the tests are in Analysis and tests, below it. The free test is read as the panel opens, the cheap one keeps itself fresh once a day while the embeddings are local, and the slow one is yours to start and to stop. None of them spends a provider turn.':
1973
1973
  'Lee la frase y la instrucción que están hasta arriba de Ajustes → Memoria; las lecturas y las pruebas están más abajo, en Análisis y pruebas. La prueba gratis se calcula al abrir el panel, la barata se actualiza una vez al día mientras la búsqueda por significado sea local, y la lenta la arrancas y la detienes tú. Ninguna gasta una respuesta de un proveedor.',
@@ -2011,7 +2011,7 @@ export const ES = {
2011
2011
 
2012
2012
  // ── LAS ESFERAS, EL GLOBO DE USO, EL CANAL DE RELEASES Y EL CENTINELA ─────
2013
2013
  'Ready': 'Listo',
2014
- 'Detected, adapter pending': 'Detectado, pero MADRE todavía no lo puede usar',
2014
+ 'Detected, but MADRE cannot use it yet': 'Detectado, pero MADRE todavía no lo puede usar',
2015
2015
  'Not installed': 'No está instalado',
2016
2016
  'Usage: local 5h window · {pct}% of {total} budget tokens': 'Uso: ventana local de 5 h · {pct}% de un límite de uso de {total} tokens',
2017
2017
  'Usage: local window · nothing used yet': 'Uso: ventana local · todavía no se ha usado',
@@ -2025,33 +2025,24 @@ export const ES = {
2025
2025
 
2026
2026
  // El globo de una esfera: lo que un agente lleva gastado.
2027
2027
  'read': 'lee',
2028
- 'image in': 've imágenes',
2028
+ 'sees images': 've imágenes',
2029
2029
  'create': 'crea',
2030
2030
  'image gen': 'genera imágenes',
2031
2031
  'web': 'web',
2032
2032
  'available': 'disponible',
2033
2033
  '{what}: not available from this CLI': '{what}: la app de este agente no lo puede hacer',
2034
- 'budget tokens · local 5h window': 'límite de uso en tokens · ventana local de 5 h',
2035
2034
  "of the provider's {window} limit": 'del límite de {window} del proveedor',
2036
2035
  ' · window reset': ' · ventana reiniciada',
2037
2036
  '{window} limit': 'límite de {window}',
2038
2037
  '{pct}% · resets {when}': '{pct}% · se reinicia {when}',
2039
- '{pct}% · reset, awaiting fresh data': '{pct}% · reiniciada, esperando datos nuevos',
2040
2038
  'reported': 'reportado',
2041
- '{when} by {who}': '{when} por {who}',
2042
2039
  'the CLI': 'la app del agente',
2043
2040
  'provider limit': 'límite del proveedor',
2044
2041
  '{pct}% used': '{pct}% usado',
2045
- 'not published by this CLI · Usage shows the local window': 'la app de este agente no lo informa · Uso muestra la ventana local',
2046
2042
  'local window': 'ventana local',
2047
- '{pct}% of {total} · 5h rolling': '{pct}% de {total} · últimas 5 h',
2048
2043
  ' · oldest turn drops {when}': ' · la respuesta más antigua deja de contar {when}',
2049
- 'unbounded': 'sin límite',
2050
- 'all-time in project': 'total del proyecto',
2051
2044
  'turns': 'respuestas',
2052
2045
  'last turn': 'última respuesta',
2053
- 'cost (reported)': 'costo (reportado)',
2054
- 'cost (estimated)': 'costo (estimado)',
2055
2046
  'Estimated at the API list price of {model} ({date}). Not a bill: a subscription may cost you nothing per turn.': 'Estimado al precio de lista de la API de {model} ({date}). No es un cobro: con una suscripción puede no costarte nada por respuesta.',
2056
2047
  'session': 'sesión',
2057
2048
  'unknown': 'sin determinar',
@@ -2060,22 +2051,16 @@ export const ES = {
2060
2051
  'not ready': 'no está listo',
2061
2052
  'via': 'vía',
2062
2053
  'timeout': 'tiempo límite',
2063
- "local window, not the provider's bill · ⚙ connections in Diagnostics":
2064
- 'ventana local, no la factura del proveedor · ⚙ conexiones en Diagnóstico',
2065
- 'provider limit as the CLI reports it · ⚙ connections in Diagnostics':
2066
- 'el límite del proveedor tal como lo informa la app del agente · ⚙ conexiones en Diagnóstico',
2067
2054
 
2068
2055
  // El canal de releases.
2069
2056
  'MADRE {latest} is on npm · you run {current}': 'Ya salió MADRE {latest} · tú tienes la {current}',
2070
2057
  'The update did not start: {error}': 'La actualización no arrancó: {error}',
2071
- 'Diagnostics › release channel on: one check a day.': 'Diagnóstico › búsqueda de actualizaciones encendida: MADRE revisa una vez al día.',
2072
- 'Diagnostics › release channel off: no request leaves for npm.': 'Diagnóstico › búsqueda de actualizaciones apagada: MADRE no consulta npm para nada.',
2058
+ 'Diagnostics › Look for new versions on: one check a day.': 'Diagnóstico › Buscar versiones nuevas encendido: MADRE revisa una vez al día.',
2059
+ 'Diagnostics › Look for new versions off: no request leaves for npm.': 'Diagnóstico › Buscar versiones nuevas apagado: MADRE no consulta npm para nada.',
2073
2060
  'The setting was not saved: {error}': 'El ajuste no se guardó: {error}',
2074
2061
 
2075
2062
  // El centinela.
2076
- 'SENTINEL': 'MONITOR DE FALLAS',
2077
- "Diagnostics › auto-report on: new unknown conditions go to the author's collector, redacted.":
2078
- 'Diagnóstico › reporte automático encendido: los problemas nuevos sin identificar se envían al autor de MADRE, con los datos sensibles tachados.',
2063
+ 'Diagnostics › error reports on: new errors go to MADRE\'s author, with private details removed.': 'Diagnóstico › reportes de errores encendidos: los errores nuevos se envían al autor de MADRE, sin datos privados.',
2079
2064
  'Diagnostics › auto-report off: reports stay here until you send one.':
2080
2065
  'Diagnóstico › reporte automático apagado: los reportes se quedan aquí hasta que tú envíes uno.',
2081
2066
  'project': 'proyecto',
@@ -2136,7 +2121,7 @@ export const ES = {
2136
2121
  'TRYING IT…': 'PROBÁNDOLO…',
2137
2122
  'only in its own draft folder ': 'solo en su carpeta de borrador ',
2138
2123
  ' · nothing else in the project': ' · nada más en el proyecto',
2139
- 'on · the browser does not start: {problem}': 'encendido · el navegador no arranca: {problem}',
2124
+ 'on · the browser does not start: {problem}. Install it with {command}.': 'encendido · el navegador no arranca: {problem}. Instálalo con {command}.',
2140
2125
  'Untitled': 'Sin título',
2141
2126
  'Files': 'Archivos',
2142
2127
  'The viewer': 'El visor',
@@ -2148,17 +2133,23 @@ export const ES = {
2148
2133
  'Before writing anything, ask me what I want to build and propose a plan in steps.': 'Antes de escribir nada, pregúntame qué quiero construir y propón un plan por pasos.',
2149
2134
  'Which stack would you use for a small web app that anyone can open, and why?': '¿Qué tecnología usarías para una app web pequeña que cualquiera pueda abrir, y por qué?',
2150
2135
  'First conversation': 'Primera conversación',
2151
- 'Fresh input of the middle turn with each tool server attached, against without it.': 'Tokens de entrada nuevos en una respuesta típica (la mediana), con cada servidor de herramientas conectado y sin él.',
2136
+ 'Fresh input tokens of a typical (median) turn with each outside tool (MCP) connected, and without it.': 'Tokens de entrada nuevos en una respuesta típica (la mediana), con cada herramienta externa (MCP) conectada y sin ella.',
2152
2137
  '@{agent} · {server}: {with} with it ({nWith} turns) · {without} without it ({nWithout} turns)': '@{agent} · {server}: {with} con él ({nWith} respuestas) · {without} sin él ({nWithout} respuestas)',
2153
2138
  'it did not answer within {seconds}s': 'no contestó en {seconds} s',
2154
2139
  'it exited with code {code} before it spoke': 'se cerró con el código {code} antes de responder',
2155
- 'TEST BROWSER did not start, so it stays off: {problem}. Install the server and its browser (npm install -g @playwright/mcp, then npx @playwright/mcp install-browser chrome-for-testing) and turn it on again.':
2156
- 'NAVEGADOR DE PRUEBAS no arrancó, así que se queda apagado: {problem}. Instala el servidor y su navegador (npm install -g @playwright/mcp, luego npx @playwright/mcp install-browser chrome-for-testing) y vuelve a encenderlo.',
2157
- '#{n} {label} is written in the message: its keys are asked for when you send it.': '#{n} {label} está escrito en el mensaje: se te pedirá confirmarlo al enviarlo.',
2140
+ 'TEST BROWSER did not start, so it stays off: {problem}. The browser server is installed; what is missing is the {browser} browser. Install it with {command} and turn it on again, or choose another browser in its settings.':
2141
+ 'NAVEGADOR DE PRUEBAS no arrancó, así que se queda apagado: {problem}. El servidor sí está instalado; lo que falta es el navegador {browser}. Instálalo con {command} y vuelve a encenderlo, o elige otro navegador en sus ajustes.',
2142
+ 'TEST BROWSER did not start, so it stays off: {problem}. Install the server and its browser ({server}, then {command}) and turn it on again.':
2143
+ 'NAVEGADOR DE PRUEBAS no arrancó, así que se queda apagado: {problem}. Instala el servidor y su navegador ({server}, luego {command}) y vuelve a encenderlo.',
2144
+ '#{n} {label} is written in the message: you will be asked to confirm it when you send it.': '#{n} {label} está escrito en el mensaje: se te pedirá confirmarlo al enviarlo.',
2158
2145
  'stopped at the {seconds}s limit': 'detenido al llegar al límite de {seconds} s',
2159
2146
  'stopped ({why})': 'detenido ({why})',
2160
2147
  'did not start': 'no arrancó',
2161
2148
  'exit {code}': 'salió con código {code}',
2149
+ 'went fine': 'salió bien',
2150
+ 'failed · code {code}': 'falló · código {code}',
2151
+ 'halted': 'detenido',
2152
+ '{n} lines': '{n} líneas',
2162
2153
  'asked by @{agent}': 'lo pidió @{agent}',
2163
2154
  '(no output)': '(sin salida)',
2164
2155
  'Files changed: {files}': 'Archivos cambiados: {files}',
@@ -2196,12 +2187,12 @@ export const ES = {
2196
2187
  'Permission mode for this message · {hint}': 'Modo de permiso de este mensaje · {hint}',
2197
2188
  'default model': 'modelo por defecto',
2198
2189
  ' · model for this request': ' · modelo para esta petición',
2199
- ' · ceiling #{cap}': ' · máximo permitido #{cap}',
2190
+ ' · max mode #{cap}': ' · permiso máximo #{cap}',
2200
2191
  'NOW': 'AHORA',
2201
2192
  'RAISE TO #{n} ›': 'SUBIR A #{n} ›',
2202
2193
  'LOCKED': 'BLOQUEADO',
2203
- 'KEY ×2': 'CONFIRMAR ×2',
2204
- 'KEY': 'CONFIRMAR',
2194
+ 'CONFIRM ×2': 'CONFIRMAR ×2',
2195
+ 'CONFIRM': 'CONFIRMAR',
2205
2196
  'DEFAULT': 'POR DEFECTO',
2206
2197
  "Above @{id}'s max mode (#{cap}). Raise it in Settings › Permissions.": 'Por encima del permiso máximo de @{id} (#{cap}). Súbelo en Ajustes › Permisos.',
2207
2198
  '@{id} is capped at #{cap}. This raises its max mode to #{n} in Settings › Permissions and opens the unlock.':
@@ -2252,7 +2243,7 @@ export const ES = {
2252
2243
  'Composing the answer…': 'Componiendo la respuesta…',
2253
2244
  'Almost there…': 'Ya casi…',
2254
2245
  'Reading…': 'Leyendo…',
2255
- 'Grepping the project…': 'Buscando en el proyecto…',
2246
+ 'Searching the project…': 'Buscando en el proyecto…',
2256
2247
  'Mapping the files…': 'Mapeando los archivos…',
2257
2248
  'Pondering…': 'Meditándolo…',
2258
2249
  'Connecting the pieces…': 'Conectando las piezas…',
@@ -2295,7 +2286,7 @@ export const ES = {
2295
2286
  'answering @{agent}': 'contestándole a @{agent}',
2296
2287
  'CHECK AGAIN': 'PROBARLO OTRA VEZ',
2297
2288
  'TRY IT ON THIS PROJECT': 'PROBARLO CON ESTE PROYECTO',
2298
- 'Came along because this project keeps carrying it with one of the others.':
2289
+ 'Came along because this project usually uses it together with another memory.':
2299
2290
  'Apareció porque en este proyecto suele usarse junto con otra memoria.',
2300
2291
  'The archive matched this to what you asked.': 'MADRE la relacionó con lo que preguntaste.',
2301
2292
  'Click to see it in the Memory map.': 'Haz clic para verla en el Mapa de memoria.',
@@ -2346,7 +2337,7 @@ export const ES = {
2346
2337
  // Lo que un agente puede hacer, dicho dentro de una frase: infinitivo, no el imperativo de
2347
2338
  // la etiqueta suelta de su ficha. «puede crea» era el botón metido en una oración.
2348
2339
  'read the project': 'leer el proyecto',
2349
- 'take images': 'recibir imágenes',
2340
+ 'receive images': 'recibir imágenes',
2350
2341
  'generate images': 'generar imágenes',
2351
2342
  'reach the web': 'consultar la web',
2352
2343
  'the project · local': 'el proyecto · local',
@@ -2357,7 +2348,9 @@ export const ES = {
2357
2348
  'no session': 'sin sesión',
2358
2349
  'CLICK A LINE NUMBER TO SELECT · SHIFT FOR A RANGE':
2359
2350
  'CLIC EN UN NÚMERO DE LÍNEA PARA SELECCIONAR · SHIFT PARA UN RANGO',
2360
- '{agent} wrote this file in this project': '{agent} escribió este archivo en este proyecto',
2351
+ 'Last changed by @{agent} · {when}': 'Último cambio: @{agent} · {when}',
2352
+ '@{agent} changed {file} here · {when}': '@{agent} cambió {file} aquí · {when}',
2353
+ 'Refresh files': 'Actualizar archivos',
2361
2354
  'Diagnostics › {name} declares {fields}, which this MADRE does not know. A typo, or a field from a newer version.':
2362
2355
  'Diagnóstico › {name} declara {fields}, que esta MADRE no conoce. Puede ser un error de escritura o un campo de una versión más nueva de MADRE.',
2363
2356
  // ── LA PROSA DENTRO DE LOS REMEDIOS ──────────────────────────────────────
@@ -2443,8 +2436,8 @@ export const ES = {
2443
2436
  '# Ajustes → Agentes → OpenCode → Generar imágenes',
2444
2437
  '# Settings → Agents → the agent → Web access':
2445
2438
  '# Ajustes → Agentes → el agente → Acceso a la web',
2446
- '# type / or @ in the field box':
2447
- '# escribe / o @ en el campo',
2439
+ '# type / or @ in the Write box':
2440
+ '# escribe / o @ en la caja de Escribir',
2448
2441
  '# chip: TO @codex #1 CHAT ONLY ▾ → choose':
2449
2442
  '# el chip: PARA @codex #1 SOLO CONVERSAR ▾ → elige',
2450
2443
  '# Settings → Permissions → Who may do what':
@@ -2489,7 +2482,7 @@ export const ES = {
2489
2482
  '# el proyecto → Conversaciones → NUEVA CONVERSACIÓN',
2490
2483
  '# the address of the open project is in the refusal itself':
2491
2484
  '# la dirección del proyecto abierto viene en el propio rechazo',
2492
- '# Diagnostics → Memory map → the dark bodies are aberrations':
2485
+ '# Diagnostics → Memory map → the dark bodies are doubtful memories':
2493
2486
  '# Diagnóstico → Mapa de memoria → los cuerpos oscuros son memorias dudosas',
2494
2487
  '# Settings → Memory → Analysis and tests → the second test':
2495
2488
  '# Ajustes → Memoria → Análisis y pruebas → la segunda prueba',
@@ -2549,10 +2542,10 @@ export const ES = {
2549
2542
  'Los agentes trabajan con normalidad. DETENER TODO se activa con una alerta de Diagnóstico; escribir STOPALL siempre funciona.',
2550
2543
  'Diagnostics › @{agent} limit window reset · {pct}% used now.':
2551
2544
  'Diagnóstico › se reinició el límite de uso de @{agent} · ahora va en {pct}%.',
2552
- 'Diagnostics › {what} was recorded by the sentinel. Open Diagnostics to report it.':
2545
+ 'Diagnostics › {what} was recorded by the failure monitor. Open Diagnostics to report it.':
2553
2546
  'Diagnóstico › el monitor de fallas registró {what}. Abre Diagnóstico para reportarlo.',
2554
2547
  'a crash': 'un cierre inesperado',
2555
- 'an unknown condition': 'un problema no identificado',
2548
+ 'an unexpected problem': 'un problema inesperado',
2556
2549
  'light': 'claro',
2557
2550
  'dark': 'oscuro',
2558
2551
  'could not list: {error}': 'no se pudo listar: {error}',
@@ -2586,8 +2579,8 @@ export const ES = {
2586
2579
  '{name} not installed · {why}': '{name} no está instalado · {why}',
2587
2580
  '{pct}% · judged by @{judge}': '{pct}% · evaluado por @{judge}',
2588
2581
  'judged by @{judge}': 'evaluado por @{judge}',
2589
- 'EYECAT could not be answered.': 'No se pudo responder al revisor de memoria.',
2590
- 'FILED AS AN ABERRATION · THE MEMORY IT REFUTES NO LONGER TRAVELS':
2582
+ 'Your answer did not reach the memory reviewer.': 'No se pudo enviar tu respuesta al revisor de memoria.',
2583
+ 'FILED AS A DOUBTFUL MEMORY · THE MEMORY IT REFUTES IS NO LONGER USED IN ANSWERS':
2591
2584
  'ARCHIVADA COMO MEMORIA DUDOSA · LA MEMORIA QUE CONTRADICE YA NO SE USA EN LAS RESPUESTAS',
2592
2585
  'THE PROJECT STANDS BY IT': 'EL PROYECTO LA SOSTIENE',
2593
2586
 
@@ -2609,7 +2602,7 @@ export const ES = {
2609
2602
  '{what} {latest} es la versión más nueva. Todavía no está en esta computadora.',
2610
2603
  '{what} {latest} is the newest, and it is what this computer has.':
2611
2604
  '{what} {latest} es la más nueva, y es la que tiene esta computadora.',
2612
- 'MADRE could not reach the place that knows about {what}.': 'MADRE no pudo revisar si hay una versión nueva de {what}.',
2605
+ 'MADRE could not check whether there is a newer {what}.': 'MADRE no pudo revisar si hay una versión nueva de {what}.',
2613
2606
  'Install {name}?': '¿Instalar {name}?',
2614
2607
  'Uninstall {name}?': '¿Desinstalar {name}?',
2615
2608
  'Keep it': 'Conservarlo',
@@ -2631,15 +2624,15 @@ export const ES = {
2631
2624
  'read back from the CLI cache, plus what was never sent': 'reutilizados de la caché (memoria temporal) del agente, más lo que nunca se envió',
2632
2625
  'FROM CACHE': 'DE LA CACHÉ',
2633
2626
  'NEVER SENT': 'NUNCA SE ENVIÓ',
2634
- 'briefing a turn had no use for': 'contexto de MADRE que esa respuesta no necesitaba',
2635
- 'SPENT OUT': 'GASTADO EN SALIDA',
2627
+ 'part of what MADRE sends the agent that this answer did not need': 'parte de lo que MADRE le manda al agente y esta respuesta no necesitaba',
2628
+ 'SPENT ON OUTPUT': 'GASTADO EN SALIDA',
2636
2629
  'output tokens, the dearer half': 'tokens de salida (lo que escriben los agentes), la parte más cara',
2637
2630
  'TURNS': 'RESPUESTAS',
2638
- 'weighed so far': 'medidas hasta ahora',
2631
+ 'measured so far': 'medidas hasta ahora',
2639
2632
  'SERVER': 'SERVIDOR',
2640
2633
  'running · {host}': 'encendido · {host}',
2641
2634
  'not running': 'apagado',
2642
- 'EMBEDDINGS': 'BÚSQUEDA POR SIGNIFICADO',
2635
+ 'SEARCH BY MEANING': 'BÚSQUEDA POR SIGNIFICADO',
2643
2636
  ' · off': ' · apagado',
2644
2637
  'no embedding model': 'sin modelo para búsqueda por significado',
2645
2638
  'no chat model': 'sin modelo de chat',
@@ -2666,8 +2659,8 @@ export const ES = {
2666
2659
  'AHORRO DE TOKENS ENCENDIDO · cada agente contesta de forma breve. Lo que tú escribes no se cambia.',
2667
2660
  'TOKEN SAVER OFF · agents answer at their own length.': 'AHORRO DE TOKENS APAGADO · los agentes contestan con el largo que quieran.',
2668
2661
  'Token saver could not change state: {error}': 'El ahorro de tokens no pudo cambiar de estado: {error}',
2669
- 'NO SWITCH': 'NO SE PUEDE APAGAR',
2670
- '{name} could not be switched.': '{name} no se pudo encender ni apagar.',
2662
+ 'CANNOT BE TURNED OFF': 'NO SE PUEDE APAGAR',
2663
+ '{name} could not be turned on or off.': '{name} no se pudo encender o apagar.',
2671
2664
  'IDE adapters for the agents detected here: {agents}.': 'Adaptadores para editores de código (IDE) de los agentes detectados aquí: {agents}.',
2672
2665
  'The reload failed: {error}': 'La recarga falló: {error}',
2673
2666
  "Remove {name}? Its file {file} is deleted. MADRE's own modules cannot be removed.":
@@ -2705,15 +2698,15 @@ export const ES = {
2705
2698
  'Memory map › {n} of {total} memories have had their chances and were never the answer. Ringed on the map.':
2706
2699
  'Mapa de memoria › {n} de {total} memorias han tenido oportunidad y nunca se han usado. Están marcadas en el mapa.',
2707
2700
  'UNUSED': 'SIN USAR',
2708
- '{pct}% of the same meaning': '{pct}% de parecido',
2709
- 'CLEAR THIS ABERRATION': 'QUITAR ESTA MEMORIA DUDOSA',
2701
+ '{pct}% similar in meaning': '{pct}% parecido en significado',
2702
+ 'REMOVE THIS DOUBTFUL MEMORY': 'QUITAR ESTA MEMORIA DUDOSA',
2710
2703
  'UNUSED · the archive has been opened {n} times since this was written and never once carried it, and it shares a subject with nothing':
2711
2704
  'SIN USAR · la memoria se ha consultado {n} veces desde que se escribió y ninguna vez se usó, y no comparte tema con nada',
2712
2705
  'MADRE has reached for this {n} times': 'MADRE ha usado esta memoria {n} veces',
2713
2706
  ' · last {when}': ' · la última {when}',
2714
2707
  'MADRE has not reached for this one yet': 'MADRE todavía no ha usado esta memoria',
2715
- 'company recorded since {when} · nothing since': 'MADRE anota con qué otras memorias se usa desde {when} · ninguna hasta ahora',
2716
- 'It has always travelled alone.': 'Siempre se ha usado sola.',
2708
+ 'MADRE has tracked what it is used with since {when} · nothing yet': 'MADRE anota con qué otras memorias se usa desde {when} · ninguna hasta ahora',
2709
+ 'It has always been used alone.': 'Siempre se ha usado sola.',
2717
2710
  'No turn has carried it since the project started keeping this trail.':
2718
2711
  'Ninguna respuesta la ha usado desde que el proyecto empezó a registrar esto.',
2719
2712
  'Diagnostics › memory forgotten: “{text}”. No future turn will read it.':
@@ -2806,7 +2799,7 @@ export const ES = {
2806
2799
  'the project': 'el proyecto',
2807
2800
  ' · distilled': ' · resumida en notas',
2808
2801
  'last turn: {who} · {when}': 'última respuesta: {who} · {when}',
2809
- 'Travelled into the same turn {n} {times} · last {when}':
2802
+ 'Used together in the same turn {n} {times} · last {when}':
2810
2803
  'Se usaron juntas en la misma respuesta {n} {times} · la última, {when}',
2811
2804
  'time': 'vez',
2812
2805
  'times': 'veces',
@@ -2817,7 +2810,7 @@ export const ES = {
2817
2810
  " · on the human's request": ' · a petición del humano',
2818
2811
  'Preview reports an error in the page: {message}{where}. Find the cause and propose the fix.':
2819
2812
  'La vista previa reporta un error en la página: {message}{where}. Encuentra la causa y propón el arreglo.',
2820
- '@madre runs on this machine and speaks for what the project remembers. "@madre, ask the agents …" opens a round with every agent online. To change files, write to a CLI agent.':
2813
+ '@madre runs on this machine and speaks for what the project remembers. "@madre, ask the agents …" opens a round with every agent online. To change files, write to one of the coding agents.':
2821
2814
  '@madre corre en esta computadora y responde con lo que el proyecto recuerda. «@madre, pregúntale a los agentes …» abre una ronda con todos los agentes en línea. Para cambiar archivos, escríbele a uno de los agentes de programación.',
2822
2815
  'Measured against this project {when}: it landed where the agents landed on {matched} of {n} real questions{verdict}':
2823
2816
  'Medido contra este proyecto {when}: coincidió con los agentes en {matched} de {n} preguntas reales{verdict}',
@@ -2866,9 +2859,12 @@ export const ES = {
2866
2859
  // Un comando que un agente te pide correr.
2867
2860
  'on · agents may ask you to run commands': 'encendido · los agentes pueden pedirte que corras comandos',
2868
2861
  'off · agents describe the command in prose': 'apagado · los agentes describen el comando en prosa',
2869
- 'Lets an agent ask you to run a command it cannot run in its mode (tests, a build, a linter). Each command is a button: nothing runs until you press it, it runs from the project root with no shell, a restore point is taken first, and the output comes back to the project. Costs about 300 tokens of instruction per turn below FULL ACCESS while it is on.':
2870
- 'Deja que un agente te pida correr un comando que su nivel de permiso no le deja correr (pruebas, un build, un linter). Cada comando es un botón y nada corre hasta que lo presionas. Corre desde la raíz del proyecto sin shell; antes se guarda un punto de restauración y el resultado vuelve al proyecto. Mientras está encendido, cuesta unos 300 tokens por respuesta en los niveles por debajo de #4 ACCESO TOTAL.',
2862
+ 'Lets an agent ask you to run a command it cannot run in its mode (tests, a build, a linter). Each command is a button: nothing runs until you press it, it runs from the project root with no shell, a restore point is taken first, and when it has run the output goes back to the agent that asked, which goes on. Costs about 300 tokens of instruction per turn below FULL ACCESS while it is on.':
2863
+ 'Deja que un agente te pida correr un comando que su nivel de permiso no le deja correr (pruebas, un build, un linter). Cada comando es un botón y nada corre hasta que lo presionas. Corre desde la carpeta principal del proyecto, sin terminal; antes se guarda un punto de restauración y, al terminar, el resultado vuelve al agente que lo pidió para que siga. Mientras está encendido, cuesta unos 300 tokens por respuesta en los niveles por debajo de #4 ACCESO TOTAL.',
2871
2864
  'Name the request and the line to run.': 'Di qué petición y qué línea correr.',
2865
+ 'Command requests are off. Enable them in MODULES.': 'Las peticiones de comandos están apagadas. Enciéndelas en Módulos.',
2866
+ 'A command is already running; wait for it to finish or press STOP ALL.': 'Ya corre un comando; espera a que termine o usa DETENER TODO.',
2867
+ '@{agent} is working in {mode} on this project; run it when its turn ends.': '@{agent} está trabajando en {mode} en este proyecto; córrelo cuando termine su respuesta.',
2872
2868
  '@{agent} asks you to run': '@{agent} te pide correr',
2873
2869
  'RUNNING': 'CORRIENDO',
2874
2870
  'WILL NOT RUN': 'NO CORRE',
@@ -2876,8 +2872,30 @@ export const ES = {
2876
2872
  'Does not run: it {why}.': 'No corre: {why}.',
2877
2873
  'Runs {command} from the project root, with no shell. A restore point is taken first.':
2878
2874
  'Ejecuta {command} en la carpeta principal del proyecto, sin terminal (shell). Antes se guarda un punto de restauración.',
2879
- 'Each line runs only when you press it · from the project root, no shell · the output comes back to the project':
2880
- 'Cada línea se ejecuta solo cuando la presionas · en la carpeta principal del proyecto, sin terminal · el resultado aparece en el proyecto',
2875
+ 'Each line runs when you press it · from the project root, no shell':
2876
+ 'Cada línea corre cuando la presionas · desde la carpeta principal del proyecto, sin terminal',
2877
+ 'When they have run, the output goes back to @{agent} and it goes on at #{n} {label}.':
2878
+ 'Al terminar, el resultado vuelve a @{agent} y sigue con #{n} {label}.',
2879
+ 'When they have run, the output goes back to @{agent} and it goes on.':
2880
+ 'Al terminar, el resultado vuelve a @{agent} y sigue.',
2881
+ 'RUN ALL · {n}': 'CORRER TODOS · {n}',
2882
+ 'Runs the lines one after another; it stops at the first one that fails.':
2883
+ 'Corre las líneas una tras otra; se detiene en la primera que falle.',
2884
+ 'HAND BACK WHAT RAN TO @{agent}': 'DEVOLVER LO QUE CORRIÓ A @{agent}',
2885
+ '@{agent} gets the output of the lines that ran and goes on without the rest.':
2886
+ '@{agent} recibe el resultado de las líneas que corrieron y sigue sin las demás.',
2887
+ 'Output handed back to @{agent}{at}': 'Resultado devuelto a @{agent}{at}',
2888
+ 'automatic · the commands ran': 'automático · ya corrieron los comandos',
2889
+ 'The command you asked for ran. Go on with what you proposed.': 'Ya corrió el comando que pediste. Sigue con lo que propusiste.',
2890
+ 'The {n} commands you asked for ran. Go on with what you proposed.': 'Ya corrieron los {n} comandos que pediste. Sigue con lo que propusiste.',
2891
+ '{n} of the {total} commands you asked for ran. Go on with what you proposed.': 'Corrieron {n} de los {total} comandos que pediste. Sigue con lo que propusiste.',
2892
+ 'Say which request to hand back.': 'Falta indicar qué petición devolver.',
2893
+ 'MADRE is closing.': 'MADRE se está cerrando.',
2894
+ 'Those results were already handed back.': 'Ese resultado ya se devolvió.',
2895
+ 'Nothing of that request has run yet.': 'Todavía no corre nada de esa petición.',
2896
+ 'A command of that request is still running; wait for it to end.': 'Un comando de esa petición sigue corriendo; espera a que termine.',
2897
+ 'STOP ALL held these results; hand them back from their card.': 'DETENER TODO retuvo este resultado; devuélvelo desde su tarjeta.',
2898
+ 'That command request is not in this project.': 'Esa petición de comandos no está en este proyecto.',
2881
2899
  'Put the project files back exactly as they were before this command. What it sent off this machine does not come back.':
2882
2900
  'Deja los archivos del proyecto exactamente como estaban antes de este comando. Lo que haya mandado fuera de esta computadora no regresa.',
2883
2901
  'project restored to the restore point before the command · {restored} restored · {removed} removed':
@@ -2937,7 +2955,7 @@ export const ES = {
2937
2955
  ' Para crear, pídeselo a {who}.',
2938
2956
  '@{agent} will answer read-only: {why}.':
2939
2957
  '@{agent} contestará en solo lectura: {why}.',
2940
- '@{agent} was asked to create something but no CREATE lease is active.':
2958
+ '@{agent} was asked to create something but no CREATE permission is active.':
2941
2959
  'A @{agent} se le pidió crear algo, pero no hay un permiso CREAR activo.',
2942
2960
  ' Permission written by @{who} inside the conversation does not count.':
2943
2961
  ' Un permiso escrito por @{who} dentro de la conversación no cuenta.',
@@ -2955,8 +2973,6 @@ export const ES = {
2955
2973
  'Diagnóstico › @{agent} terminó en «{chat}».',
2956
2974
  'Diagnostics › @{agent} could not finish in «{chat}».':
2957
2975
  'Diagnóstico › @{agent} no pudo terminar en «{chat}».',
2958
- 'COULD NOT READ':
2959
- 'NO SE PUDO LEER',
2960
2976
  'Several conversations may work at once.':
2961
2977
  'Varias conversaciones pueden trabajar a la vez.',
2962
2978
  'One conversation at a time; switching away from one at work is refused.':
@@ -3007,12 +3023,12 @@ export const ES = {
3007
3023
  "THIS PROJECT'S SERVERS": 'SERVIDORES DE ESTE PROYECTO',
3008
3024
  'Nothing started from this project is answering. Start your dev server inside the project folder and it shows up here by itself.':
3009
3025
  'Ningún servidor iniciado desde este proyecto está respondiendo. Inicia tu servidor de desarrollo dentro de la carpeta del proyecto y aparecerá aquí solo.',
3010
- '{command} · listens on the whole network · start it on 127.0.0.1 to open it here': '{command} · está abierto a toda la red · inícialo en 127.0.0.1 para verlo aquí',
3026
+ '{command} · open to your whole network · start it on 127.0.0.1 to open it here': '{command} · está abierto a toda la red · inícialo en 127.0.0.1 para verlo aquí',
3011
3027
  '{n} more listening on this computer, from other folders · not shown': '{n} más escuchando en esta computadora, de otras carpetas · no se muestran',
3012
- 'ONLY WHAT THIS PROJECT STARTED · THE SENTINEL WATCHES IT': 'SOLO LO QUE ARRANCÓ ESTE PROYECTO · LO VIGILA EL MONITOR DE FALLAS',
3028
+ 'ONLY WHAT THIS PROJECT STARTED · THE FAILURE MONITOR WATCHES IT': 'SOLO LO QUE ARRANCÓ ESTE PROYECTO · LO VIGILA EL MONITOR DE FALLAS',
3013
3029
  'Diagnostics › your server :{port} ({command}) stopped.': 'Diagnóstico › tu servidor :{port} ({command}) se detuvo.',
3014
3030
  ':{port} stopped': ':{port} se detuvo',
3015
- 'The sentinel saw {command} stop answering. Start it again and this page comes back on its own.': 'El monitor de fallas vio que {command} dejó de responder. Vuelve a iniciarlo y esta página regresa sola.',
3031
+ 'The failure monitor saw {command} stop answering. Start it again and this page comes back on its own.': 'El monitor de fallas vio que {command} dejó de responder. Vuelve a iniciarlo y esta página regresa sola.',
3016
3032
  'Float the browser as a window': 'Abrir el navegador en una ventana aparte',
3017
3033
  'Dock the browser beside the conversation': 'Acoplar el navegador junto a la conversación',
3018
3034
 
@@ -3065,7 +3081,7 @@ export const ES = {
3065
3081
  'Suggest how to improve this': 'Sugiere cómo mejorarlo',
3066
3082
  'Write tests for this': 'Escribe pruebas para esto',
3067
3083
  'Ask my own question': 'Hacer mi propia pregunta',
3068
- 'There are unsaved changes in this file. Leave them?': 'Hay cambios sin guardar en este archivo. ¿Descartarlos?',
3084
+ 'There are unsaved changes in this file. Discard them?': 'Hay cambios sin guardar en este archivo. ¿Descartarlos?',
3069
3085
  'READ': 'LEER',
3070
3086
  'EDIT': 'EDITAR',
3071
3087
  "This file is one the project guards. Type the project name to save it.": 'Este archivo es de los que el proyecto protege. Escribe el nombre del proyecto para guardarlo.',
@@ -3087,7 +3103,7 @@ export const ES = {
3087
3103
 
3088
3104
  'AUTO': 'AUTO',
3089
3105
 
3090
- 'Click a number to pick a line · drag for a run · Shift for a range · {mod} for one more': 'Haz clic en un número para elegir una línea · arrastra para elegir varias · Shift para un rango · {mod} para agregar otra',
3106
+ 'Click a number to pick a line · drag to pick several · Shift for a range · {mod} to add one more': 'Haz clic en un número para elegir una línea · arrastra para elegir varias · Shift para un rango · {mod} para agregar otra',
3091
3107
 
3092
3108
  'Ask': 'Preguntar',
3093
3109
  'Comment': 'Comentar',
@@ -3105,7 +3121,7 @@ export const ES = {
3105
3121
  'WHAT IS SENT': 'LO QUE SE ENVÍA',
3106
3122
  'LOCAL MODEL OFF': 'MODELO LOCAL APAGADO',
3107
3123
  'NOBODY YET': 'NADIE TODAVÍA',
3108
- 'PROJECT WINDOW': 'USO DEL PROYECTO',
3124
+ 'PROJECT USAGE': 'USO DEL PROYECTO',
3109
3125
  'OF {budget} TOKENS · 5H': 'DE {budget} TOKENS · 5H',
3110
3126
  'NO BUDGET SET': 'SIN LÍMITE',
3111
3127
  'ALL-TIME IN PROJECT': 'EN EL PROYECTO, DESDE SIEMPRE',
@@ -3117,13 +3133,13 @@ export const ES = {
3117
3133
  '{n} TOKENS IN THE PROJECT': '{n} TOKENS EN EL PROYECTO',
3118
3134
  'YOUR LOCAL MODEL': 'TU MODELO LOCAL',
3119
3135
  'NOT TRAINED FOR THIS PROJECT YET': 'SIN ENTRENAR PARA ESTE PROYECTO',
3120
- '{n} WITH A VECTOR': '{n} CON BÚSQUEDA POR SIGNIFICADO',
3136
+ '{n} SEARCHABLE BY MEANING': '{n} CON BÚSQUEDA POR SIGNIFICADO',
3121
3137
  'RECALL MATCHES WORDS ONLY': 'EL RECUERDO AUTOMÁTICO SOLO COMPARA PALABRAS',
3122
3138
  'LANDED WHERE THE AGENTS DID · {verdict}': 'COINCIDIÓ CON LOS AGENTES · {verdict}',
3123
3139
  'NOT MEASURED YET': 'SIN MEDIR TODAVÍA',
3124
3140
  'INSTALLED · {n}': 'INSTALADOS · {n}',
3125
3141
  'WHAT THE LOCAL MODEL DOES': 'QUÉ HACE EL MODELO LOCAL',
3126
- 'Turns each memory into a vector, so recall finds it by meaning.': 'Prepara cada memoria para que el recuerdo automático la encuentre por significado.',
3142
+ 'Prepares each memory so recall can find it by meaning.': 'Prepara cada memoria para que el recuerdo automático la encuentre por significado.',
3127
3143
  'Distils the exchanges into memories, on this computer.': 'Resume los intercambios en notas de memoria, en esta computadora.',
3128
3144
  'Answers in the project as the fifth agent.': 'Contesta en el proyecto como el quinto agente.',
3129
3145
  'WHO READS THE ARCHIVE': 'QUIÉN LEE LA MEMORIA',
@@ -3145,7 +3161,7 @@ export const ES = {
3145
3161
  // El interruptor de idioma.
3146
3162
 
3147
3163
  // AJUSTES, en bloques.
3148
- 'Give @{agent} a standing lease in SETTINGS → AGENTS: every turn may create files.': 'Dale a @{agent} un permiso fijo en AJUSTES → AGENTES: cada respuesta puede crear archivos.',
3164
+ 'Give @{agent} a standing permission in SETTINGS → AGENTS: every turn may create files.': 'Dale a @{agent} un permiso fijo en AJUSTES → AGENTES: cada respuesta puede crear archivos.',
3149
3165
  'Preview': 'Vista previa',
3150
3166
  'Your choices, in the bubbles the conversation draws.': 'Así se verán tus elecciones en los mensajes de la conversación.',
3151
3167
  'Automatic follows your system.': 'Automático usa el tema de tu sistema.',
@@ -3157,42 +3173,41 @@ export const ES = {
3157
3173
  'Back to default': 'Restablecer',
3158
3174
  'Copied': 'Copiado',
3159
3175
  '⚙ AGENTS IN SETTINGS': '⚙ AGENTES EN AJUSTES',
3160
- 'The archive could not be read.': 'No se pudo leer el archivo.',
3176
+ 'The memory could not be read.': 'No se pudo leer la memoria.',
3161
3177
  'Read at {time}': 'Leído a las {time}',
3162
- 'Nothing to read yet: the project has no archive.': 'Aún no hay nada que leer: el proyecto todavía no tiene memorias guardadas.',
3178
+ 'Nothing yet: the project has no memories saved.': 'Aún nada: el proyecto no tiene memorias guardadas.',
3163
3179
  '{n} this week': '{n} esta semana',
3164
3180
  'Exchanges': 'Intercambios',
3165
3181
  'Memories': 'Memorias',
3166
- 'Turns that recalled': 'Respuestas que usaron memorias',
3167
- 'Waiting': 'En espera',
3168
- 'Exchanges nobody has distilled yet.': 'Intercambios que aún no se resumen en notas.',
3169
- 'The archivist is up to date.': 'Todo está resumido en notas.',
3182
+ 'Answers that used memories': 'Respuestas que usaron memorias',
3183
+ 'Not noted yet': 'Aún sin pasar a notas',
3184
+ 'Exchanges not turned into notes yet.': 'Intercambios que aún no se pasan a notas.',
3185
+ 'All caught up.': 'Todo al día.',
3170
3186
  'Memory progress': 'Avance de la memoria',
3171
3187
  'Activity · last {n} days': 'Actividad · últimos {n} días',
3172
- 'What the archive is made of': 'De qué está hecha la memoria',
3188
+ 'What the memory holds': 'Qué guarda la memoria',
3173
3189
  'By kind': 'Por tipo',
3174
- 'By archivist': 'Por quien resume',
3175
- 'By zone': 'Por estado',
3176
- 'Recall and smart search': 'Recuerdo y búsqueda inteligente',
3190
+ 'By note-taker': 'Por quién tomó notas',
3191
+ 'By status': 'Por estado',
3192
+ 'Memories used and search by meaning': 'Memorias usadas y búsqueda por significado',
3177
3193
  'Search': 'Búsqueda',
3178
- 'Company': 'Relacionadas',
3179
3194
  'Nothing yet.': 'Nada todavía.',
3180
- 'Memories with a vector': 'Memorias con búsqueda por significado',
3181
- 'Exchanges with a vector': 'Intercambios con búsqueda por significado',
3182
- 'Smart search is off: recall matches words only.': 'La búsqueda inteligente está apagada: el recuerdo solo compara palabras.',
3183
- 'Memory review': 'Revisión de la memoria',
3195
+ 'Memories searchable by meaning': 'Memorias con búsqueda por significado',
3196
+ 'Exchanges searchable by meaning': 'Intercambios con búsqueda por significado',
3197
+ 'Search by meaning is off: memories are found by exact words only.': 'La búsqueda por significado está apagada: las memorias se encuentran solo por palabras exactas.',
3198
+ 'Memory checkup': 'Chequeo de la memoria',
3184
3199
  'Signing in…': 'Iniciando sesión…',
3185
3200
  'Signed in': 'Sesión iniciada',
3186
3201
  'Signed out': 'Sin sesión iniciada',
3187
3202
  'Unknown': 'Desconocido',
3188
3203
  'Session {detail}': 'Sesión {detail}',
3189
- 'Free way in': 'Plan gratuito',
3204
+ 'Free plan': 'Plan gratuito',
3190
3205
  'Generate images': 'Generar imágenes',
3191
3206
  'On for CREATE.': 'Activo cuando tiene permiso CREAR.',
3192
3207
  'Web access': 'Acceso a la web',
3193
3208
  'On in every turn.': 'Encendido en cada respuesta.',
3194
- 'This CLI has no way to do it.': 'La app de este agente no puede hacerlo.',
3195
- 'Not wired yet.': 'Aún sin conectar.',
3209
+ 'This agent can\'t do this.': 'Este agente no puede hacerlo.',
3210
+ 'Not available yet.': 'Todavía no disponible.',
3196
3211
  'Off.': 'Apagado.',
3197
3212
  'Ask Diagnostics how': 'Preguntarle a Diagnóstico cómo',
3198
3213
  'Max mode': 'Permiso máximo',
@@ -3205,109 +3220,103 @@ export const ES = {
3205
3220
  'Install': 'Instalar',
3206
3221
  'Sign in again': 'Iniciar sesión otra vez',
3207
3222
  'Sign in': 'Iniciar sesión',
3208
- 'It signs in from its own prompt:': 'Inicia sesión desde la app del agente, en tu terminal:',
3209
- 'This project has no memory index.': 'Este proyecto todavía no tiene memoria.',
3210
- 'The archive': 'La memoria',
3211
- 'Analysis and tests': 'Análisis y pruebas',
3223
+ 'To sign in, copy this into your Terminal app:': 'Para iniciar sesión, copia esto en tu app Terminal:',
3224
+ 'This project has no memory yet.': 'Este proyecto todavía no tiene memoria.',
3225
+ 'At a glance': 'De un vistazo',
3226
+ 'Details and checkups': 'Detalles y revisiones',
3212
3227
  'Refresh': 'Actualizar',
3213
- 'The archivist': 'Quien resume la memoria',
3214
- 'It reads what nobody has distilled and keeps the few notes worth remembering. The cheapest allowed agent goes first; a local model costs nothing and keeps everything on this machine.': 'Lee lo que aún no se ha resumido y guarda las pocas notas que vale la pena recordar. Va primero el agente permitido más barato; un modelo local no cuesta nada y deja todo en esta computadora.',
3215
- 'Who distils first': 'Quién resume primero',
3216
- 'Automatic · the cheapest allowed': 'Automático · el permitido más barato',
3228
+ 'Who takes notes': 'Quién toma notas',
3229
+ 'An agent rereads recent conversations and saves only what is worth remembering. The cheapest one goes first; local AI is free and private.': 'Un agente relee las conversaciones recientes y guarda solo lo que vale la pena recordar. Va primero el más barato; la IA local es gratis y privada.',
3230
+ 'Who takes notes first': 'Quién toma notas primero',
3231
+ 'Automatic · the cheapest one': 'Automático · el más barato',
3217
3232
  'local, free': 'local, gratis',
3218
- 'Who may distil': 'Quién puede resumir',
3219
- 'The lit ones may keep the archive.': 'Los agentes encendidos pueden resumir la memoria.',
3233
+ 'Who may take notes': 'Quién puede tomar notas',
3234
+ 'Only the agents switched on here take notes.': 'Solo los agentes encendidos aquí toman notas.',
3220
3235
  'Every': 'Cada',
3221
- 'Exchanges between one distillation and the next.': 'Intercambios entre un resumen y el siguiente.',
3236
+ 'How many exchanges pass before it takes notes again.': 'Cuántos intercambios pasan antes de volver a tomar notas.',
3222
3237
  'exchanges': 'intercambios',
3223
3238
  'Or after': 'O después de',
3224
- 'Quiet minutes that also start a distillation.': 'Minutos sin actividad que también inician un resumen.',
3239
+ 'Or take notes after this many quiet minutes.': 'O tomar notas tras estos minutos sin actividad.',
3225
3240
  'min': 'min',
3226
- 'Recall': 'Recuerdo',
3227
- 'What each turn carries from the archive, and how it finds it.': 'Qué memorias usa cada respuesta, y cómo las encuentra.',
3228
- 'Share of the context': 'Parte del contexto',
3229
- 'The most each turn may spend on memories.': 'Lo máximo que cada respuesta puede usar en memorias.',
3230
- 'Related': 'Relacionadas',
3231
- 'Two memories that keep arriving in the same turn travel together, however differently they read.': 'Si dos memorias suelen usarse en la misma respuesta, se usan juntas aunque digan cosas distintas.',
3232
- 'Smart search': 'Búsqueda inteligente',
3233
- 'Find by meaning, not only by words. Now: {what}.': 'Encuentra por significado, no solo por palabras. Ahora: {what}.',
3234
- 'Automatic · Ollama if running, else Gemini': 'Automático · Ollama si está encendido, si no Gemini',
3241
+ 'Using memories': 'Uso de memorias',
3242
+ 'How many memories each answer uses, and how they are found.': 'Cuántas memorias usa cada respuesta y cómo se encuentran.',
3243
+ 'Room for memories': 'Espacio para memorias',
3244
+ 'At most, how much of what an agent reads can be memories.': 'Cuánto de lo que lee un agente puede ser memoria, como máximo.',
3245
+ 'Related memories': 'Memorias relacionadas',
3246
+ 'Memories that are often used together are brought in together.': 'Las memorias que suelen usarse juntas se traen juntas.',
3247
+ 'Search by meaning': 'Buscar por significado',
3248
+ 'Finds memories by what they mean, not only by exact words. Now: {what}.': 'Encuentra memorias por lo que significan, no solo por palabras exactas. Ahora: {what}.',
3249
+ 'Automatic · Local AI if running, else Gemini': 'Automático · IA local si está encendida, si no Gemini',
3235
3250
  'no model yet': 'sin modelo aún',
3236
3251
  'Gemini · needs your key': 'Gemini · necesita tu llave de API',
3237
- 'Off · words only': 'Apagado · solo palabras',
3238
- 'Environment variables are set for memory; they win over these values on the next launch.': 'Hay variables de entorno para la memoria; tienen prioridad sobre estos valores la próxima vez que MADRE arranque.',
3239
- 'Dataset and training': 'Datos y entrenamiento',
3240
- 'Export what the project kept, train your model with it on this Mac, and @madre picks the result up.': 'Exporta lo que guardó el proyecto, entrena tu modelo con eso en esta Mac y @madre toma el resultado.',
3252
+ 'Off · exact words only': 'Apagado · solo palabras exactas',
3253
+ 'Some of these values are fixed by how MADRE was started; those win next time it starts.': 'Algunos valores los fija la forma en que se arrancó MADRE; esos mandan la próxima vez que arranque.',
3254
+ 'Train your own AI': 'Entrena tu propia IA',
3255
+ 'Advanced: export what the project learned, train a model on your computer, and @madre answers with it.': 'Avanzado: exporta lo que aprendió el proyecto, entrena un modelo en tu computadora y @madre contesta con él.',
3241
3256
  'Export': 'Exportar',
3242
- 'Dataset': 'Datos de entrenamiento',
3243
- 'Train your model · local, with MLX on Apple silicon': 'Entrenar tu modelo · local, con MLX en Apple silicon',
3244
- 'Export the dataset first. Each step is one command for your terminal: copy it, run it, come back. When the model exists in Ollama, @madre switches to it at the next recheck.': 'Primero exporta los datos de entrenamiento. Cada paso es un comando para tu terminal: cópialo, córrelo y regresa. Cuando el modelo exista en Ollama, @madre lo usa desde la siguiente revisión.',
3257
+ 'Training data': 'Datos de entrenamiento',
3245
3258
  'Last export {when} · {train} to train · {valid} to check': 'Última exportación {when} · {train} para entrenar · {valid} para validar',
3246
3259
  'Not exported yet.': 'Aún sin exportar.',
3247
3260
  'Trained model {model} in use.': 'Modelo entrenado {model} en uso.',
3248
3261
  'No trained model yet.': 'Aún no hay modelo entrenado.',
3249
3262
  'The training recipe is unavailable.': 'La receta de entrenamiento no está disponible.',
3250
- 'Once: a Python environment with mlx-lm': 'Una vez: un entorno de Python con mlx-lm',
3251
- 'Train the LoRA · base {model} for {gb} GB': 'Entrenar el ajuste del modelo (LoRA) · base {model} para {gb} GB',
3252
- 'Fuse the adapter into the base': 'Unir el ajuste con el modelo base',
3253
- 'Register it in Ollama as {model}': 'Registrarlo en Ollama como {model}',
3254
- 'Qwen needs a GGUF before Ollama reads it: {readme}, section 3, has the two lines. Then ask @madre ten things the project decided and five it never discussed before trusting it.': 'Qwen necesita un GGUF antes de que Ollama lo lea: {readme}, sección 3, tiene las dos líneas. Luego pregúntale a @madre diez cosas que el proyecto decidió y cinco que nunca discutió antes de confiar en él.',
3255
- 'One agent is enough to open the project. MADRE uses the session each CLI already has: install one here or sign it in, and the project opens by itself. The credentials stay in each CLI; MADRE only asks whether it is signed in.': 'Con un agente basta para abrir el proyecto. MADRE usa la sesión que la app de cada agente ya tiene: instala una aquí o inicia su sesión, y el proyecto se abre solo. Tus credenciales se quedan en la app de cada agente; MADRE solo pregunta si hay una sesión iniciada.',
3263
+ 'Register it in Ollama as {model}': 'Regístralo en Ollama como {model}',
3264
+ 'One agent is enough to start. MADRE uses the AI apps already on this computer: install one here or sign in, and the project opens. Your passwords stay in each app; MADRE only checks you are signed in.': 'Con un agente basta para empezar. MADRE usa las apps de IA que ya tienes en esta computadora: instala una aquí o inicia sesión, y el proyecto se abre. Tus contraseñas se quedan en cada app; MADRE solo revisa que hayas iniciado sesión.',
3256
3265
  'Plans': 'Planes',
3257
- 'When a turn may open a plan, and how long a plan may be.': 'Cuándo una respuesta puede abrir un plan, y qué tan largo puede ser.',
3266
+ 'Whether an agent may split a job into steps for the others.': 'Si un agente puede dividir un trabajo en pasos para los demás.',
3258
3267
  'Agents may make plans': 'Los agentes pueden hacer planes',
3259
3268
  'An agent may open a plan and hand its steps to the others.': 'Un agente puede abrir un plan y repartir sus pasos entre los demás.',
3260
3269
  'Steps per plan': 'Pasos por plan',
3261
3270
  'The most steps one plan may have.': 'Cuántos pasos puede tener un plan como máximo.',
3262
- 'Budget and waiting': 'Límite de uso y espera',
3271
+ 'Spending and waiting': 'Gasto y espera',
3263
3272
  'What each agent may spend, and how long the project waits for it.': 'Lo que cada agente puede gastar, y cuánto lo espera el proyecto.',
3264
- 'Tokens per agent': 'Tokens por agente',
3265
- 'Counted here, in each 5-hour window.': 'Se cuentan aquí, en periodos de 5 horas.',
3273
+ 'Usage limit per agent': 'Límite de uso por agente',
3274
+ 'Every 5 hours, in tokens: the unit AI use is measured in.': 'Cada 5 horas, en tokens: la unidad con que se mide el uso de la IA.',
3266
3275
  'Default time limit': 'Tiempo límite por defecto',
3267
3276
  'How long an agent may take before the project stops waiting. Each agent can have its own in Agents.': 'Cuánto puede tardar un agente antes de que el proyecto deje de esperar. Cada agente puede tener el suyo en Agentes.',
3268
- 'Gemini can go quiet before it answers anything; this is how long the project gives it.': 'A veces Gemini tarda en empezar a responder; esto es cuánto lo espera el proyecto.',
3277
+ 'Gemini sometimes takes a while to start; this is how long to wait for it.': 'A veces Gemini tarda en arrancar; aquí eliges cuánto tiempo esperarlo.',
3269
3278
  'Silence limit': 'Límite de silencio',
3270
3279
  'Seconds without any output before the attempt is dropped.': 'Segundos sin recibir nada antes de cancelar el intento.',
3271
3280
  'Retries': 'Reintentos',
3272
3281
  'How many times a silent attempt is tried again.': 'Cuántas veces se reintenta cuando no llega ninguna respuesta.',
3273
3282
  'Model': 'Modelo',
3274
- 'Hidden data': 'Datos ocultos',
3283
+ 'Words to hide': 'Palabras por ocultar',
3275
3284
  'Replaced with': 'Se reemplazan con',
3276
3285
  'Checking the project…': 'Revisando el proyecto…',
3277
3286
  'Erase private data': 'Borrar datos privados',
3278
3287
  'Write the terms first.': 'Primero escribe los términos.',
3279
- 'Still in the project: {events} events · {entries} indexed exchanges · {memories} memories.': 'Todavía en el proyecto: {events} eventos · {entries} intercambios indexados · {memories} memorias.',
3280
- 'The project is clean: no private term in the ledger, the index or the memories.': 'El proyecto está limpio: ningún término privado en el historial, el índice ni las memorias.',
3288
+ 'Still showing in {events} records · {entries} exchanges · {memories} memories.': 'Aún aparecen en {events} registros · {entries} intercambios · {memories} memorias.',
3289
+ 'All clean: none of these words is saved in the project.': 'Todo limpio: ninguna de estas palabras está guardada en el proyecto.',
3281
3290
  'One per line': 'Uno por línea',
3282
3291
  'What the project shows in their place.': 'Lo que el proyecto muestra en su lugar.',
3283
3292
  'The terms stay in config.json; the project only records how many. PULSE_PRIVATE_TERMS is set, so its terms are added on every launch.': 'Los términos se quedan en config.json; el proyecto solo registra cuántos. PULSE_PRIVATE_TERMS está definida, así que sus términos se suman en cada arranque.',
3284
- 'The terms stay in config.json; the project only records how many.': 'Los términos se quedan en config.json; el proyecto solo registra cuántos.',
3285
- 'Caught by their shape': 'Detectados por su forma',
3286
- 'Two guards that need no list.': 'Dos protecciones que no necesitan lista.',
3287
- 'Keys, tokens and e-mail addresses': 'Llaves de API, tokens y correos',
3288
- 'API keys, GitHub and npm tokens, JWTs and e-mail addresses are struck out wherever they appear.': 'Las llaves de API, los tokens de GitHub y npm, los JWT y los correos se tachan dondequiera que aparezcan.',
3289
- 'Your home path': 'Tu carpeta personal',
3293
+ 'The list stays on this computer; the project only notes how many words it has.': 'La lista se queda en esta computadora; el proyecto solo anota cuántas palabras tiene.',
3294
+ 'Hidden automatically': 'Se ocultan solos',
3295
+ 'No list needed: MADRE spots these on its own.': 'No hace falta lista: MADRE los reconoce sola.',
3296
+ 'Access keys and emails': 'Llaves de acceso y correos',
3297
+ 'Access keys, service tokens and email addresses are crossed out wherever they appear.': 'Las llaves de acceso, los tokens de servicios y los correos se tachan dondequiera que aparezcan.',
3298
+ 'Your home folder': 'Tu carpeta de usuario',
3290
3299
  '/Users/yourname becomes ~: a quoted path still reads, it just stops naming you.': '/Users/tunombre se muestra como ~: la ruta se sigue entendiendo, pero ya no lleva tu nombre.',
3291
3300
  'Already in the project': 'Ya en el proyecto',
3292
3301
  'What was recorded before a term was named stays as it was until you erase it.': 'Lo que se registró antes de nombrar un término se queda como estaba hasta que lo borres.',
3293
- 'Exposure': 'Qué queda expuesto',
3302
+ 'Still visible': 'Lo que sigue visible',
3294
3303
  'The exposure check is unavailable.': 'La revisión de lo que queda expuesto no está disponible.',
3295
3304
  'MADRE {latest} is on npm · you run {current} · open SETTINGS for the command': 'MADRE {latest} está en npm · tú usas la {current} · abre AJUSTES para ver el comando',
3296
3305
  'The version could not be read.': 'No se pudo leer la versión.',
3297
- 'It runs from the npx cache.': 'Corre desde la caché de npx.',
3298
- 'It runs from this project\'s node_modules.': 'Corre desde el node_modules de este proyecto.',
3299
- 'It is installed globally.': 'Está instalada de forma global.',
3306
+ 'Runs without being installed (npx).': 'Corre sin instalarse (npx).',
3307
+ 'Installed inside this project.': 'Instalada dentro de este proyecto.',
3308
+ 'Installed on this computer.': 'Instalada en esta computadora.',
3300
3309
  'It runs from source.': 'Corre desde el código fuente.',
3301
3310
  'Up to date': 'Al día',
3302
3311
  'Open': 'Abrir',
3303
3312
  'Look for new versions': 'Buscar versiones nuevas',
3304
- 'Once a day MADRE asks npm for the latest version: only the package name travels, the same request npx makes.': 'Una vez al día MADRE le pregunta a npm por la última versión: solo se envía el nombre del paquete, la misma petición que hace npx.',
3313
+ 'Once a day MADRE checks whether there\'s a new version. Only the app\'s name is sent.': 'Una vez al día MADRE revisa si hay una versión nueva. Solo se envía el nombre de la app.',
3305
3314
  'Set by PULSE_UPDATE_CHECK.': 'Lo fija PULSE_UPDATE_CHECK.',
3306
3315
  'Last check': 'Última revisión',
3307
3316
  'Not yet.': 'Aún no.',
3308
3317
  'Check now': 'Revisar ahora',
3309
3318
  'MADRE {version} is ready': 'MADRE {version} está lista',
3310
- 'Restart with it here: the project closes, installs and comes back on this same address in a few seconds. Nothing in the ledger is lost. Or run the command yourself.': 'Reinicia con ella aquí: el proyecto se cierra, se instala y vuelve en esta misma dirección en unos segundos. No se pierde nada del historial. O corre tú el comando.',
3319
+ 'Restart here: the project closes, updates and comes back in a few seconds. Nothing is lost. Or run the command yourself.': 'Reinicia aquí: el proyecto se cierra, se actualiza y vuelve en unos segundos. No se pierde nada. O corre tú el comando.',
3311
3320
  'Pull the repository and start it again.': 'Actualiza el repositorio (git pull) y vuelve a arrancarla.',
3312
3321
  'Restarting…': 'Reiniciando…',
3313
3322
  'Restart with {version}': 'Reiniciar con {version}',
@@ -3318,28 +3327,28 @@ export const ES = {
3318
3327
  'How much the project does at once. A conversation that takes its time keeps working while you write in it or open another.': 'Cuánto hace el proyecto a la vez. Una conversación que se tarda sigue trabajando mientras le escribes o abres otra.',
3319
3328
  'It could not be read.': 'No se pudo leer.',
3320
3329
  'Conversations at once': 'Conversaciones a la vez',
3321
- 'Turns per conversation': 'Respuestas por conversación',
3330
+ 'Answers per conversation': 'Respuestas por conversación',
3322
3331
  'On': 'Encendidas',
3323
3332
  'Blocked': 'Bloqueadas',
3324
3333
  'Not available': 'No disponibles',
3325
3334
  'Turn on': 'Encender',
3326
3335
  'Notifications': 'Notificaciones',
3327
3336
  'Always: only one conversation at a time may hold EDIT or FULL ACCESS of the project.': 'Siempre: solo una conversación a la vez puede tener EDITAR o ACCESO TOTAL del proyecto.',
3328
- 'It keeps the failures Diagnostics cannot explain, and crashes, with paths, names and keys removed. Nothing leaves this machine unless you send it.': 'Guarda las fallas que Diagnóstico no sabe explicar, y los cierres inesperados, sin rutas, nombres ni llaves. Nada sale de esta computadora a menos que tú lo mandes.',
3337
+ 'Keeps errors MADRE can\'t explain, with private details removed. Nothing leaves this computer unless you send it.': 'Guarda los errores que MADRE no sabe explicar, sin datos privados. Nada sale de esta computadora a menos que tú lo envíes.',
3329
3338
  '{n} reports · {unsent} not sent': '{n} reportes · {unsent} sin enviar',
3330
3339
  'Nothing to report': 'Nada que reportar',
3331
- 'Report automatically': 'Reportar automáticamente',
3332
- 'New unknown conditions go to the author\'s collector, redacted.': 'Las fallas nuevas que Diagnóstico no reconoce se envían al autor de MADRE, con los datos privados tachados.',
3333
- 'No collector is configured (PULSE_REPORT_URL).': 'No hay a dónde enviar los reportes: falta configurar PULSE_REPORT_URL.',
3340
+ 'Send reports automatically': 'Enviar reportes automáticamente',
3341
+ 'New errors go to MADRE\'s author, with private details removed.': 'Los errores nuevos se envían al autor de MADRE, sin datos privados.',
3342
+ 'Sending isn\'t set up in this copy of MADRE.': 'El envío no está configurado en esta copia de MADRE.',
3334
3343
  'On madre.run ↗': 'En madre.run ↗',
3335
3344
  'On GitHub ↗': 'En GitHub ↗',
3336
3345
  'Tell the author': 'Contarle al autor',
3337
3346
  'What failed, or what you wish MADRE did.': 'Lo que falló, o lo que quisieras que MADRE hiciera.',
3338
3347
  'Reports': 'Reportes',
3339
- 'Each one is redacted before it is kept. Read it in the issue before you send it.': 'Los datos privados se tachan antes de guardar cada reporte. Revísalo en GitHub antes de enviarlo.',
3348
+ 'Private details are removed from each one. You can read each report before sending it.': 'Cada uno se guarda sin datos privados. Puedes leerlo antes de enviarlo.',
3340
3349
  'Crash': 'Cierre inesperado',
3341
3350
  'Sent': 'Enviado',
3342
- 'A company, a brand, a domain: what an agent\'s own setup can leak into a reply. MADRE replaces them before the ledger, the archivist, the other agents or the dataset see them.': 'Una empresa, una marca, un dominio: lo que la configuración de un agente puede colar en su respuesta. MADRE los reemplaza antes de que los vean el historial, quien resume la memoria, los demás agentes o los datos de entrenamiento.',
3351
+ 'Names you don\'t want saved or shared: a company, a brand, a domain. MADRE swaps them out before anything is saved or reaches another agent.': 'Nombres que no quieres que se guarden ni se compartan: una empresa, una marca, un dominio. MADRE los cambia antes de guardar nada o pasárselo a otro agente.',
3343
3352
  'The key is written where the Gemini CLI looks for it, readable only by you. MADRE keeps no copy.': 'La llave de API se escribe donde la busca la app de Gemini CLI, y solo tú puedes leerla. MADRE no guarda copia.',
3344
3353
  'OpenCode brings no model of its own: pick the provider whose key you are pasting. The key is written where OpenCode looks for it, readable only by you. MADRE keeps no copy.': 'OpenCode no trae modelo propio: elige el proveedor cuya llave de API vas a pegar. La llave se escribe donde la busca OpenCode, y solo tú puedes leerla. MADRE no guarda copia.',
3345
3354
  'Gemini API key': 'API key de Gemini',
@@ -3351,9 +3360,9 @@ export const ES = {
3351
3360
  'The page reloads in it when you choose to.': 'La página se recarga en ese idioma cuando tú lo decidas.',
3352
3361
  'Opens your browser to sign in with ChatGPT.': 'Abre tu navegador para iniciar sesión con ChatGPT.',
3353
3362
  'Opens your browser to sign in with your Claude account.': 'Abre tu navegador para iniciar sesión con tu cuenta de Claude.',
3354
- 'Gemini signs in from its own prompt: run `gemini`, type /auth, pick "Use Gemini API key" (get one at aistudio.google.com/app/apikey) or Google login.': 'Gemini inicia sesión desde su propia terminal: corre `gemini`, escribe /auth y elige "Use Gemini API key" (consigue una en aistudio.google.com/app/apikey) o el inicio de sesión de Google.',
3363
+ 'Gemini signs in from your terminal: run `gemini`, type /auth, pick "Use Gemini API key" (get one at aistudio.google.com/app/apikey) or Google login.': 'Gemini inicia sesión desde tu terminal: corre `gemini`, escribe /auth y elige "Use Gemini API key" (consigue una en aistudio.google.com/app/apikey) o el inicio de sesión de Google.',
3355
3364
  'Pick a provider and paste its key or complete its OAuth flow.': 'Elige un proveedor y pega su llave de API o inicia sesión en su página.',
3356
- 'Files and servers': 'Archivos y servidores',
3365
+ 'Files and local sites': 'Archivos y sitios locales',
3357
3366
  'Files as a window': 'Archivos en ventana',
3358
3367
  'Files beside': 'Archivos al lado',
3359
3368
  'preview on': 'vista previa encendida',
@@ -3364,14 +3373,14 @@ export const ES = {
3364
3373
  'Beside': 'Al lado',
3365
3374
  'Window': 'Ventana',
3366
3375
  'Your servers': 'Tus servidores',
3367
- 'Your servers, the ones answering on this computer: docked beside the conversation, or floating.': 'Tus servidores, los que responden en esta computadora: acoplados junto a la conversación, o flotando.',
3376
+ 'Web pages your project runs on this computer: beside the conversation, or floating.': 'Las páginas web que tu proyecto corre en esta computadora: junto a la conversación o flotando.',
3368
3377
  'Docked': 'Acoplado',
3369
3378
  'It always opens beside the conversation: opening a file never splits the project on its own. From there it can float as a window.': 'Siempre se abre al lado de la conversación: abrir un archivo nunca divide la pantalla por sí solo. Desde ahí puedes sacarlo a una ventana.',
3370
3379
  'What they can show': 'Lo que pueden mostrar',
3371
- 'Two modules decide it; their switches are the same ones as in MODULES.': 'Lo deciden dos módulos; sus interruptores son los mismos que en MÓDULOS.',
3372
- 'HTML, SVG and Markdown from the project render in the file viewer, inside a frame that reaches nothing. Off, files show as source.': 'El HTML, el SVG y el Markdown del proyecto se dibujan en el visor, dentro de un marco aislado que no tiene acceso a nada más. Si está apagada, los archivos se ven como código.',
3373
- "Test browser": 'Navegador de pruebas',
3374
- 'A browser without a window that reaches only this project and the servers you start, on the turns that ask to look at a page.': 'Un navegador sin ventana que solo alcanza este proyecto y los servidores que tú arrancas, en las respuestas que necesitan ver una página.',
3380
+ 'These switches are the same ones as in MODULES.': 'Estos interruptores son los mismos que en MÓDULOS.',
3381
+ 'Web pages, images and documents show as they look, safely. Off, you see their code.': 'Páginas web, imágenes y documentos se ven tal como son, de forma segura. Apagada, ves su código.',
3382
+ 'Test browser': 'Navegador de pruebas',
3383
+ 'Agents can open and check your project\'s pages, without reaching anything else.': 'Los agentes pueden abrir y revisar las páginas de tu proyecto, sin llegar a nada más.',
3375
3384
  'Settings for files and servers': 'Ajustes de archivos y servidores',
3376
3385
  'Always': 'Siempre',
3377
3386
  'Turned on': 'Encendido',
@@ -3393,7 +3402,7 @@ export const ES = {
3393
3402
  'Put the file in one of these folders. A file somebody else wrote goes in with + Add a module, and MADRE checks it before it runs.': 'Pon el archivo en una de estas carpetas. Un archivo que escribió alguien más se agrega con + Agregar un módulo, y MADRE lo revisa antes de que corra.',
3394
3403
  'Reload modules': 'Recargar módulos',
3395
3404
  'Load it': 'Cárgalo',
3396
- 'Press reload and it appears on the board with its own card, no restart.': 'Presiona Recargar módulos y aparece en el tablero con su propia tarjeta, sin reiniciar.',
3405
+ 'Press Reload modules and it appears on the board with its own card, no restart.': 'Presiona Recargar módulos y aparece en el tablero con su propia tarjeta, sin reiniciar.',
3397
3406
  'If it talks to a service': 'Si habla con un servicio',
3398
3407
  'Connecting to a service from outside is almost always possible, if that service lets you get your own key in minutes and revoke it. Your module declares the key it needs, where it reaches and which of its tools send; MADRE draws the field, answers for the traffic and holds sending until #4 FULL ACCESS.': 'Casi siempre puedes conectar un servicio externo, si te deja crear tu propia llave de API en minutos y revocarla. Tu módulo dice qué llave de API necesita, a dónde se envía y qué herramientas mandan datos. MADRE muestra el campo para la llave, se encarga de las conexiones y bloquea los envíos hasta que actives #4 ACCESO TOTAL.',
3399
3408
  'Did not load': 'No se cargaron',
@@ -3415,9 +3424,9 @@ export const ES = {
3415
3424
  'Opens as a window': 'Se abre en una ventana',
3416
3425
  'Add a module': 'Agregar un módulo',
3417
3426
  'State': 'Estado',
3418
- 'nothing weighed yet': 'nada medido aún',
3427
+ 'nothing measured yet': 'nada medido aún',
3419
3428
  'Tokens not charged': 'Tokens que no se cobraron',
3420
- 'Turns weighed': 'Respuestas medidas',
3429
+ 'Turns measured': 'Respuestas medidas',
3421
3430
  'Read from cache': 'Leído de caché',
3422
3431
  'Server': 'Servidor',
3423
3432
  'Running': 'Corriendo',
@@ -3451,13 +3460,12 @@ export const ES = {
3451
3460
  'What your use taught': 'Lo que aprendió de tu uso',
3452
3461
  'Per agent and per kind of request: the lowest effort that was enough in your own turns, learned for no tokens. Below, a test that learns faster, for a price.':
3453
3462
  'Por agente y por tipo de pedido: el esfuerzo más bajo que fue suficiente en tus propias respuestas, aprendido sin gastar tokens. Abajo, una prueba que aprende más rápido, pero tiene costo.',
3454
- 'When a lower level might be enough, Intenciones offers to try it on a single message and watches how it goes; if it falls short, the next one goes back up.':
3455
- 'Cuando un nivel de esfuerzo más bajo podría bastar, Intenciones te propone probarlo en un solo mensaje y revisa el resultado; si no es suficiente, el siguiente mensaje vuelve a subir.',
3463
+ 'When a lower level might be enough, MADRE offers to try it on a single message and watches how it goes; if it falls short, the next one goes back up.':
3464
+ 'Cuando un nivel de esfuerzo más bajo podría bastar, MADRE te propone probarlo en un solo mensaje y revisa el resultado; si no es suficiente, el siguiente mensaje vuelve a subir.',
3456
3465
  'What this project was charged, what it was not, and what the Token saver does to an answer. Measured here, never promised.': 'Lo que se le cobró a este proyecto, lo que no, y lo que el Ahorro de tokens le hace a una respuesta. Medido aquí, nunca prometido.',
3457
3466
  'Get a newer file': 'Traer un archivo más nuevo',
3458
3467
  'Newer file': 'Archivo más nuevo',
3459
3468
  'It stops loading. The file stays where it is.': 'Deja de cargarse. El archivo se queda donde está.',
3460
- 'Local brain': 'IA local',
3461
3469
  'Ollama on this computer: no provider tokens, nothing leaves.': 'Ollama corre en esta computadora: no gasta tokens de tu proveedor y nada sale de tu equipo.',
3462
3470
  'Running · {host}': 'Corriendo · {host}',
3463
3471
  'Not running': 'Detenido',
@@ -3501,16 +3509,16 @@ export const ES = {
3501
3509
  'The remedy that matches best. {n} more could be it, in the list.': 'La solución que mejor coincide. Hay otras {n} posibles en la lista.',
3502
3510
  'The remedy that matches.': 'La solución que coincide.',
3503
3511
  '{n} agents · {ready} ready': '{n} agentes · {ready} listos',
3504
- '{n} conditions in this project': '{n} problemas en este proyecto',
3512
+ '{n} problems in this project': '{n} problemas en este proyecto',
3505
3513
  'nothing open': 'nada abierto',
3506
3514
  'Write a symptom, an agent or a word': 'Escribe un síntoma, un agente o una palabra',
3507
3515
  'Feedback': 'Comentarios',
3508
- 'Conditions': 'Problemas',
3516
+ 'Problems': 'Problemas',
3509
3517
  'Nothing matches that. Try a symptom, an agent, or a word like timeout, login, port or budget.': 'Nada coincide con eso. Prueba un síntoma, un agente o una palabra como tiempo, sesión, puerto o límite.',
3510
- '1 condition in this project': '1 problema en este proyecto',
3511
- '{label} does not ask for its key again for @{agent} until this runs out. Click to close it now.': '{label} no vuelve a pedir confirmación para @{agent} hasta que termine este tiempo. Haz clic para cerrarlo ahora.',
3518
+ '1 problem in this project': '1 problema en este proyecto',
3519
+ '{label} does not ask you to confirm again for @{agent} until this runs out. Click to end it now.': '{label} no vuelve a pedir confirmación para @{agent} hasta que termine este tiempo. Haz clic para terminarlo ahora.',
3512
3520
  'open': 'abierto',
3513
- 'Diagnostics › {label} closed for @{agent}: the next one asks for its key.': 'Diagnóstico › {label} cerrado para @{agent}: el siguiente mensaje vuelve a pedir confirmación.',
3521
+ 'Diagnostics › {label} locked again for @{agent}: the next message asks you to confirm again.': 'Diagnóstico › {label} se volvió a bloquear para @{agent}: el siguiente mensaje vuelve a pedir confirmación.',
3514
3522
  'The project': 'El proyecto',
3515
3523
  'Your phrase': 'Tu frase',
3516
3524
  'Just confirm': 'Solo confirmar',
@@ -3518,16 +3526,16 @@ export const ES = {
3518
3526
  'Diagnostics › {label} is still open for @{agent} · {left} left.': 'Diagnóstico › {label} sigue abierto para @{agent} · quedan {left}.',
3519
3527
  '#{n} holds {minutes} min': '#{n} dura {minutes} min',
3520
3528
  'asked every message': 'se pide en cada mensaje',
3521
- 'One click on UNLOCK. EDIT still takes a restore point first, and UNDO is one click.': 'Basta un clic en DESBLOQUEAR. Aun así, EDITAR crea un punto de restauración antes, y DESHACER está a un clic.',
3529
+ 'One click on UNLOCK. EDIT saves a copy first, so UNDO is one click away.': 'Un clic en DESBLOQUEAR. EDITAR guarda una copia antes, así que DESHACER está a un clic.',
3522
3530
  'Your phrase, typed when you unlock it.': 'Tu frase, escrita al desbloquearlo.',
3523
- 'The folder name of the project ({name}), with no second key.': 'El nombre de la carpeta del proyecto ({name}), sin segunda confirmación.',
3531
+ 'The folder name of the project ({name}), with no second confirmation.': 'El nombre de la carpeta del proyecto ({name}), sin segunda confirmación.',
3524
3532
  'The folder name of the project ({name}).': 'El nombre de la carpeta del proyecto ({name}).',
3525
- 'The key of each mode': 'Cómo se confirma cada modo',
3526
- 'What you type to unlock #3 EDIT and #4 FULL ACCESS. It is asked for each message, unless a remembered permission below still holds.': 'Lo que escribes para desbloquear #3 EDITAR y #4 ACCESO TOTAL. Se pide en cada mensaje, salvo que siga vigente un permiso recordado de abajo.',
3533
+ 'How you unlock modes': 'Cómo desbloqueas los modos',
3534
+ 'What you type to unlock #3 EDIT and #4 FULL ACCESS. Asked on every message, unless you chose to remember it below.': 'Lo que escribes para desbloquear #3 EDITAR y #4 ACCESO TOTAL. Se pide en cada mensaje, salvo que abajo elijas recordarlo.',
3527
3535
  'Save a phrase below first.': 'Primero guarda una frase abajo.',
3528
3536
  '#{n} {label} now asks for: {key}.': '#{n} {label} ahora pide: {key}.',
3529
- '#4 always asks for something: it runs commands, and what leaves the machine does not come back.': '#4 siempre pide confirmar: puede ejecutar comandos, y lo que sale de la computadora no se puede deshacer.',
3530
- 'Only its fingerprint is kept (a salted SHA-256). When you type it to unlock, this Mac checks it and forgets it; it never leaves the Mac.': 'Solo se guarda una huella de tu frase (un SHA-256 con sal), no la frase. Cuando la escribes para desbloquear, esta Mac la comprueba y la olvida; nunca sale de la Mac.',
3537
+ '#4 always asks you to confirm: it runs commands, and what leaves the machine does not come back.': '#4 siempre pide confirmar: puede ejecutar comandos, y lo que sale de la computadora no se puede deshacer.',
3538
+ 'MADRE never stores the phrase itself, only a fingerprint of it, and it never leaves this Mac.': 'MADRE nunca guarda la frase, solo una huella de ella, y nunca sale de esta Mac.',
3531
3539
  'Type a new phrase to replace it': 'Escribe una frase nueva para reemplazarla',
3532
3540
  'At least 8 characters': 'Al menos 8 caracteres',
3533
3541
  'Replace': 'Reemplazar',
@@ -3542,19 +3550,19 @@ export const ES = {
3542
3550
  'Forget': 'Olvidar',
3543
3551
  'The phrase was forgotten.': 'La frase se olvidó.',
3544
3552
  'Remember permission': 'Recordar permiso',
3545
- 'Once a key is accepted, the same mode for the same agent is not asked again for a while. Only in this page: reloading, STOP ALL or the × on its chip closes it.': 'Después de que confirmas, el mismo modo para el mismo agente no vuelve a pedir confirmación por un rato. Solo vale en esta página: se cancela al recargar, con DETENER TODO o con la × de su etiqueta.',
3553
+ 'After you confirm, the same agent won\'t ask again for a while. Reloading the page or STOP ALL ends it.': 'Después de confirmar, el mismo agente no vuelve a preguntar por un rato. Se acaba al recargar la página o con DETENER TODO.',
3546
3554
  'Never longer than 5 minutes.': 'Nunca más de 5 minutos.',
3547
3555
  'Raising an agent\'s max mode always asks, remembered permission or not.': 'Subir el permiso máximo de un agente siempre pide confirmar, aunque ya hayas dado permiso antes.',
3548
3556
  'Off': 'Apagada',
3549
- '#{n} {label} holds {minutes} min after its key.': '#{n} {label} dura {minutes} min después de confirmarlo.',
3550
- '#{n} {label} asks for its key every message.': '#{n} {label} pide confirmar en cada mensaje.',
3557
+ '#{n} {label} stays unlocked for {minutes} min after you confirm it.': '#{n} {label} sigue desbloqueado {minutes} min después de confirmarlo.',
3558
+ '#{n} {label} asks you to confirm every message.': '#{n} {label} pide confirmar en cada mensaje.',
3551
3559
  'Remember permission for #{n}': 'Recordar permiso para #{n}',
3552
3560
  'Who may do what': 'Qué puede hacer cada agente',
3553
- 'The highest mode each agent may reach. Each mode wears its colour; #3 and #4 still ask for their key.': 'El permiso más alto al que puede llegar cada agente. Cada modo lleva su color; #3 y #4 siguen pidiendo confirmación.',
3561
+ 'The most each agent may do. #3 and #4 still ask you first.': 'Lo máximo que puede hacer cada agente. #3 y #4 siempre te preguntan antes.',
3554
3562
  'Max mode for @{agent}': 'Permiso máximo de @{agent}',
3555
3563
  'Permissions': 'Permisos',
3556
- 'Permissions, privacy and the version': 'Permisos, privacidad y la versión',
3557
- 'Diagnostics settings: what the sentinel keeps and whether it reports': 'Ajustes de Diagnóstico: lo que guarda el monitor de fallas y si envía reportes',
3564
+ 'What agents may do, privacy and updates': 'Qué pueden hacer los agentes, privacidad y actualizaciones',
3565
+ 'Diagnostics settings: what the failure monitor keeps and whether it reports': 'Ajustes de Diagnóstico: lo que guarda el monitor de fallas y si envía reportes',
3558
3566
  'Diagnostics settings': 'Ajustes de Diagnóstico',
3559
3567
  'Project': 'Proyecto',
3560
3568
  'Phrase': 'Frase',
@@ -3577,7 +3585,7 @@ export const ES = {
3577
3585
  'Open the memory': 'Abrir la memoria',
3578
3586
  'The archive of this project: every memory the agents distilled, linked by what they share.': 'La memoria de este proyecto: cada nota que resumieron los agentes, conectada con las que tratan temas en común.',
3579
3587
  'Reading is free; forgetting is forever.': 'Leer no cambia nada; lo que olvides se borra para siempre.',
3580
- 'Board': 'Entrar',
3588
+ 'Enter': 'Entrar',
3581
3589
  'Open Ollama': 'Abrir Ollama',
3582
3590
  'Start it, download its models and choose what it does in this project.': 'Enciéndelo, descarga sus modelos y elige qué hace en este proyecto.',
3583
3591
  '@{agent} left the project: Ollama is not running. Start Ollama, or open Local AI in Modules.': '@{agent} salió del proyecto: Ollama no está corriendo. Enciende Ollama o abre IA local en Módulos.',
@@ -3812,25 +3820,25 @@ export const ES = {
3812
3820
  'AUTOMATIC': 'AUTOMÁTICO',
3813
3821
  '{n} days': '{n} días',
3814
3822
  'Did not leave on its own: {why}': 'No se envió automáticamente: {why}',
3815
- 'IN ITS PROJECT · WAITING FOR YOUR KEY': 'EN SU PROYECTO · ESPERA TU CONFIRMACIÓN',
3823
+ 'IN ITS PROJECT · WAITING FOR YOUR CONFIRMATION': 'EN SU PROYECTO · ESPERA TU CONFIRMACIÓN',
3816
3824
  'Take it to {room}': 'Llevar a {room}',
3817
3825
  'SIGNED': 'FIRMADO',
3818
3826
  'ALREADY IN FORCE': 'YA VIGENTE',
3819
3827
  'WILL NOT BE SIGNED': 'NO SE PUEDE FIRMAR',
3820
3828
  'type {room} to sign': 'escribe {room} para firmar',
3821
- ' · plan {plan} stops leaving on its own ({why}); what is left waits for your press': ' · el plan {plan} dejó de enviar órdenes automáticamente ({why}); las que faltan esperan a que las envíes tú',
3829
+ ' · plan {plan} stopped sending orders on its own ({why}); the rest wait for you to send them': ' · el plan {plan} dejó de enviar órdenes automáticamente ({why}); las que faltan esperan a que las envíes tú',
3822
3830
  'The Coordinator proposes #{n} {label} to @{agent} · order {step} of {total} · plan {plan}': 'El Coordinador propone #{n} {label} a @{agent} · orden {step} de {total} · plan {plan}',
3823
3831
  'Unlock and send': 'Desbloquear y enviar',
3824
- 'Diagnostics › written in the Write box. Sending it asks for your key, as always.': 'Diagnóstico › quedó escrita en la caja de Escribir. Al enviarla te pide confirmar, como siempre.',
3832
+ 'Diagnostics › the order is now in the Write box. Sending it asks you to confirm, as always.': 'Diagnóstico › la orden quedó en la caja de Escribir. Al enviarla se te pedirá confirmar, como siempre.',
3825
3833
  'an order failed': 'una orden falló',
3826
- 'The Coordinator proposes #{n} to @{agent}: unlock it with your key': 'El Coordinador propone el permiso #{n} a @{agent}: confírmalo para desbloquearlo',
3827
- 'The Coordinator waits for your press: {reason}': 'El Coordinador espera que confirmes: {reason}',
3828
- 'The Coordinator waits for your press': 'El Coordinador espera que confirmes',
3834
+ 'The Coordinator proposes #{n} to @{agent}: confirm it to unlock it': 'El Coordinador propone el permiso #{n} a @{agent}: confírmalo para desbloquearlo',
3835
+ 'The Coordinator waits for you to confirm: {reason}': 'El Coordinador espera a que confirmes: {reason}',
3836
+ 'The Coordinator waits for you to confirm': 'El Coordinador espera a que confirmes',
3829
3837
  'That proposal is not waiting to be taken to its project.': 'Esa propuesta ya no está esperando a enviarse a su proyecto.',
3830
3838
  'Write the question after /bishop.': 'Escribe la pregunta después de /bishop.',
3831
3839
  'A question is between 1 and {n} characters.': 'Una pregunta tiene entre 1 y {n} caracteres.',
3832
- 'The Coordinator\'s project did not open. Open it with madre salas and ask again.': 'El Coordinador no despertó. Vuelve a Inicio y pregunta de nuevo.',
3833
- 'Asked the Coordinator in its project. The answer comes here, for you only: the agents of this project do not read it without a connection.': 'Pregunta enviada al Coordinador en Inicio. La respuesta llega aquí, solo para ti: los agentes de este proyecto no la leen sin una conexión.',
3840
+ 'The Coordinator did not wake up. Go back to Home and ask again.': 'El Coordinador no despertó. Vuelve a Inicio y pregunta de nuevo.',
3841
+ 'Your question went to the Coordinator in Home. The answer comes here, for you only: this project\'s agents cannot read it without a connection.': 'Pregunta enviada al Coordinador en Inicio. La respuesta llega aquí, solo para ti: los agentes de este proyecto no la leen sin una conexión.',
3834
3842
  'That order is not running.': 'Esa orden no está corriendo.',
3835
3843
  'That connection is not in this project.': 'Esa conexión no está en este proyecto.',
3836
3844
  'That connection is not waiting to be signed.': 'Esa conexión no está esperando tu firma.',
@@ -3838,9 +3846,9 @@ export const ES = {
3838
3846
  'stopped by the human from Home': 'detenida por ti desde Inicio',
3839
3847
  'The Coordinator has no ready agent. Choose one in its card in MODULES, in Home.': 'El Coordinador no tiene un agente listo. Elige uno en su ficha de MÓDULOS, en Inicio.',
3840
3848
  'The Coordinator is answering something else. Ask again in a moment.': 'El Coordinador está respondiendo otra cosa. Vuelve a preguntar en un momento.',
3841
- 'The Coordinator\'s project never hands its notes over.': 'El Coordinador no comparte sus notas con otros proyectos.',
3849
+ 'The Coordinator does not share its notes with other projects.': 'El Coordinador no comparte sus notas con otros proyectos.',
3842
3850
  'Name what crosses: decision, fact, preference or question.': 'Indica qué se comparte: decisión, hecho, preferencia o pregunta.',
3843
- 'Orders go only on a connection with the Coordinator\'s project.': 'Las órdenes solo se pueden enviar en una conexión con el Coordinador.',
3851
+ 'Orders only travel over a connection with the Coordinator.': 'Las órdenes solo se pueden enviar por una conexión con el Coordinador.',
3844
3852
  'That connection is already in force.': 'Esa conexión ya está vigente.',
3845
3853
  'more than 2 connections': 'más de 2 conexiones',
3846
3854
  'The guardian of your projects, in Home. It answers about every connected project, proposes orders and connections, and you decide what leaves and what is signed. Any project can raise it with /bishop.': 'Cuida tus proyectos desde Inicio. Responde sobre cada proyecto conectado, propone órdenes y conexiones, y tú decides qué se envía y qué se firma. Desde cualquier proyecto le puedes preguntar con /bishop.',
@@ -3858,9 +3866,9 @@ export const ES = {
3858
3866
  'answered: {n}': 'respondidas: {n}',
3859
3867
  'failed: {n}': 'fallidas: {n}',
3860
3868
  'skipped: {n}': 'omitidas: {n}',
3861
- 'Stopped leaving on its own ({why}). What is left waits for your press.': 'Dejó de enviar órdenes automáticamente ({why}). Lo que falta espera a que lo envíes tú.',
3869
+ 'Stopped sending orders on its own ({why}). The rest wait for you to send them.': 'Dejó de enviar órdenes automáticamente ({why}). Lo que falta espera a que lo envíes tú.',
3862
3870
  'Diagnostics › the Coordinator stopped sending on its own ({why}).': 'Diagnóstico › el Coordinador dejó de enviar órdenes automáticamente ({why}).',
3863
- 'It runs only if you send it, with your key.': 'Solo se ejecuta si la envías tú y la confirmas.',
3871
+ 'It runs only if you send it and confirm it.': 'Solo se ejecuta si la envías tú y la confirmas.',
3864
3872
  'For you only; the agents of this project do not read it.': 'Solo para ti; los agentes de este proyecto no la leen.',
3865
3873
  'recalled {n} from {room}': 'recordó {n} de {room}',
3866
3874
  'read {n} from {room}': 'leyó {n} de {room}',
@@ -3868,12 +3876,12 @@ export const ES = {
3868
3876
  'ORDERS': 'ÓRDENES',
3869
3877
  'CONNECTIONS TO READ': 'CONEXIONES DE LECTURA',
3870
3878
  '@madre · only answers': '@madre · solo responde',
3871
- 'Manual: every order waits for your press': 'Manual: cada orden espera a que la envíes tú',
3879
+ 'Manual: every order waits for you to send it': 'Manual: cada orden espera a que la envíes tú',
3872
3880
  'Hybrid: #0 and #1 leave on their own': 'Híbrido: #0 y #1 se envían solas',
3873
3881
  'Automatic: up to #2 leave on their own': 'Automático: hasta #2 se envían solas',
3874
3882
  'The Coordinator signs them, for 7 days at most': 'Las firma el Coordinador, por 7 días como máximo',
3875
3883
  'You sign them': 'Los firmas tú',
3876
- 'Always within the connection. #3 and #4 always wait for your key in their project; a failure or STOP ALL stops what leaves on its own.': 'Siempre dentro de lo que permite la conexión. #3 y #4 siempre esperan tu confirmación en su proyecto; un fallo o DETENER TODO detienen las órdenes que se envían solas.',
3884
+ 'Always within what the connection allows. #3 and #4 always wait for your confirmation in their project; an error or STOP ALL halts the orders that go out on their own.': 'Siempre dentro de lo que permite la conexión. #3 y #4 siempre esperan tu confirmación en su proyecto; un fallo o DETENER TODO detienen las órdenes que se envían solas.',
3877
3885
  'A connection with orders is always signed by you. A connection the Coordinator signed is revoked with one press, in Home.': 'Una conexión con órdenes siempre la firmas tú. Una que firmó el Coordinador se revoca con un toque en Inicio.',
3878
3886
  'No ready agent. Choose one when it is available.': 'Ningún agente está listo. Elige uno cuando lo esté.',
3879
3887
  'on · @{agent} · only answers': 'encendido · @{agent} · solo responde',
@@ -3889,7 +3897,7 @@ export const ES = {
3889
3897
  // S-021 and fase 3e: who read through a link, for which turn; and recall on every turn.
3890
3898
  'That reading does not belong to a turn running in this project.': 'Esa lectura no pertenece a una respuesta en curso en este proyecto.',
3891
3899
  'This is changed by you, from Home.': 'Esto lo cambias tú, desde Inicio.',
3892
- 'recall is on or off.': 'el recuerdo automático solo puede estar encendido o apagado.',
3900
+ 'automatic recall can only be on or off.': 'el recuerdo automático solo puede estar encendido o apagado.',
3893
3901
  'Through a connection you signed: read-only, counted in both projects.': 'Por una conexión que firmaste: solo lectura, registrada en el historial de los dos proyectos.',
3894
3902
  'Always include': 'Incluir siempre',
3895
3903
  'last by @{agent} of {room}, {when}': 'última lectura: @{agent} de {room}, {when}',
@@ -3900,7 +3908,6 @@ export const ES = {
3900
3908
  'Only you or the Coordinator sign a connection.': 'Solo tú o el Coordinador pueden firmar una conexión.',
3901
3909
  'The Coordinator signs only connections that expire within 7 days.': 'El Coordinador solo firma conexiones que caducan en 7 días o menos.',
3902
3910
  'Ask the Coordinator, from this project, about any connected project. The answer is for you; the agents of this project do not read it without a connection.': 'Pregúntale al Coordinador, desde este proyecto, por cualquier proyecto conectado. La respuesta es para ti; los agentes de este proyecto no la leen sin una conexión.',
3903
- 'the Coordinator\'s project': 'Inicio',
3904
3911
  'a setting in config.json; no project files': 'un ajuste en config.json; ningún archivo del proyecto',
3905
3912
  'a ready agent; @madre is selected by default when ready': 'un agente listo; @madre se elige por defecto si está listo',
3906
3913
  'SENDING': 'ENVIANDO',
@@ -3925,7 +3932,7 @@ export const ES = {
3925
3932
  'The Coordinator lives in this project; it gives orders to the others.': 'El Coordinador vive en este proyecto; da órdenes a los demás.',
3926
3933
  'No such agent on this Mac.': 'Ese agente no está en esta Mac.',
3927
3934
  'No signed connection lets the Coordinator give orders to that project.': 'Ninguna conexión firmada deja al Coordinador dar órdenes a ese proyecto.',
3928
- '#3 and #4 never travel: unlock it yourself in that project.': '#3 y #4 nunca se envían como orden: desbloquea ese permiso tú mismo en ese proyecto.',
3935
+ '#3 and #4 are never sent as orders: unlock it yourself in that project.': '#3 y #4 nunca se envían como orden: desbloquea ese permiso tú mismo en ese proyecto.',
3929
3936
  'That connection allows orders up to #{n}.': 'Esa conexión permite órdenes hasta #{n}.',
3930
3937
  'A page cannot give orders across projects; only a project can.': 'Una página no puede dar órdenes a otro proyecto; solo un proyecto puede.',
3931
3938
  'The Coordinator lives in Home.': 'El Coordinador vive en Inicio.',
@@ -3933,9 +3940,9 @@ export const ES = {
3933
3940
  'That order is not in this project.': 'Esa orden no está en este proyecto.',
3934
3941
  'That order is not waiting to be sent.': 'Esa orden no está esperando a enviarse.',
3935
3942
  'That project is asleep. Wake it from Home to send it orders.': 'Ese proyecto está dormido. Ábrelo desde Inicio para mandarle órdenes.',
3936
- 'The channel has no key.': 'Falta la llave interna que conecta los proyectos.',
3943
+ 'The internal key that connects the projects is missing.': 'Falta la llave interna que conecta los proyectos.',
3937
3944
  'That project runs an older MADRE. Update it to send it orders.': 'Ese proyecto usa una versión anterior de MADRE. Actualízala para mandarle órdenes.',
3938
- 'The Coordinator\'s project gives orders; it does not receive them.': 'El Coordinador da órdenes; no las recibe.',
3945
+ 'The Coordinator gives orders; it does not receive them.': 'El Coordinador da órdenes; no las recibe.',
3939
3946
  'An order is between 1 and {n} characters.': 'Una orden tiene entre 1 y {n} caracteres.',
3940
3947
  'That is not an order of a plan.': 'Eso no es una orden de un plan.',
3941
3948
  '@{agent} is not ready in that project.': '@{agent} no está listo en ese proyecto.',
@@ -3954,7 +3961,7 @@ export const ES = {
3954
3961
  '1 conversation': '1 conversación',
3955
3962
  '1 memory': '1 memoria',
3956
3963
  '{n} memories': '{n} memorias',
3957
- '{n} travel': '{n} en uso',
3964
+ '{n} in use': '{n} en uso',
3958
3965
  'No memories yet': 'Sin memorias todavía',
3959
3966
  'This page closes with it.': 'Esta página se cierra con el proyecto.',
3960
3967
  'What is running stops.': 'Lo que está corriendo se detiene.',
@@ -3979,11 +3986,11 @@ export const ES = {
3979
3986
  'A project cannot be connected to itself.': 'Un proyecto no se puede conectar consigo mismo.',
3980
3987
  'The direction is a→b, b→a or both.': 'La dirección debe ser a→b, b→a o ambas.',
3981
3988
  'A connection names the kinds that may cross.': 'Una conexión debe indicar qué tipos de memoria se pueden compartir.',
3982
- 'An aberration never crosses a connection.': 'Una memoria dudosa nunca se comparte por una conexión.',
3989
+ 'A doubtful memory never crosses a connection.': 'Una memoria dudosa nunca se comparte por una conexión.',
3983
3990
  'orders.perHour is a whole number above zero.': 'orders.perHour es un número entero mayor que cero.',
3984
3991
  'That connection would already have expired.': 'Esa conexión ya habría caducado.',
3985
- 'The Coordinator\'s project never serves a connection: the Coordinator gathers every project and is nobody\'s source.': 'El Coordinador no comparte información por una conexión: reúne a todos los proyectos, pero no es fuente de información para ninguno.',
3986
- 'Orders need the Coordinator\'s project at one end of the connection.': 'Las órdenes necesitan al Coordinador en un extremo de la conexión.',
3992
+ "The Coordinator never shares through a connection: it gathers every project and is nobody's source.": 'El Coordinador no comparte información por una conexión: reúne a todos los proyectos, pero no es fuente de información para ninguno.',
3993
+ 'Orders need the Coordinator at one end of the connection.': 'Las órdenes necesitan al Coordinador en un extremo de la conexión.',
3987
3994
  // El módulo ENLACES (src/modules/enlaces.mjs): su ficha. Lo que entrega a los agentes queda en inglés.
3988
3995
  'What other projects know, when a signed connection lets this project read it. Read-only; nothing leaves this Mac.': 'Lo que otros proyectos saben, cuando una conexión firmada deja leerlo. Solo lectura; nada sale de la Mac.',
3989
3996
  'a connection signed in Home that lets this project read from another': 'una conexión firmada en Inicio que deje a este proyecto leer de otro',
@@ -4001,7 +4008,7 @@ export const ES = {
4001
4008
  " · with {room} · both read each other's {kinds}, read-only": ' · con {room} · los dos se leen: {kinds}; solo lectura',
4002
4009
  ' · until {date}': ' · hasta {date}',
4003
4010
  'Connections': 'Conexiones',
4004
- 'A connection lets one project read the distilled notes of another, read-only, by a contract you sign here. Nothing is written across, and only notes that travel into turns cross.': 'Una conexión deja que un proyecto lea las notas resumidas de otro. Es solo lectura: no cambia nada en el otro proyecto. Solo se comparten las notas que ya se usan en las respuestas. La conexión la firmas tú, aquí.',
4011
+ 'A connection lets one project read the summarized notes of another, read-only, by a contract you sign here. Nothing is written across, and only notes already used in answers are shared.': 'Una conexión deja que un proyecto lea las notas resumidas de otro. Es solo lectura: no cambia nada en el otro proyecto. Solo se comparten las notas que ya se usan en las respuestas. La conexión la firmas tú, aquí.',
4005
4012
  '{reader} reads from {source}': '{reader} consulta a {source}',
4006
4013
  '{a} and {b} read each other': '{a} y {b} se consultan entre sí',
4007
4014
  'until {date}': 'hasta {date}',
@@ -4016,7 +4023,7 @@ export const ES = {
4016
4023
  'Both ways': 'En los dos sentidos',
4017
4024
  'What crosses': 'Qué se comparte',
4018
4025
  'Never': 'Nunca',
4019
- 'Orders from the coordinator': 'Órdenes del Coordinador',
4026
+ 'Orders from the Coordinator': 'Órdenes del Coordinador',
4020
4027
  'Allow orders into {room}': 'Permitir órdenes hacia {room}',
4021
4028
  'Type the name of {room} to allow orders into it': 'Escribe el nombre de {room} para permitir que reciba órdenes',
4022
4029
  'Sign': 'Firmar',
@@ -4132,7 +4139,7 @@ export const ES = {
4132
4139
  'This project closed. Open MADRE again to come back to Home.': 'Este proyecto se cerró. Abre MADRE de nuevo para volver a Inicio.',
4133
4140
  'Up': 'Subir',
4134
4141
  'Your folders': 'Tus carpetas',
4135
- 'Your coordinator. It reads across your projects, signs the connections between them and carries an order from one to another.': 'Tu Coordinador. Consulta tus proyectos, firma las conexiones entre ellos y lleva órdenes de uno a otro.',
4142
+ 'Your Coordinator. It reads across your projects, signs the connections between them and carries an order from one to another.': 'Tu Coordinador. Consulta tus proyectos, firma las conexiones entre ellos y lleva órdenes de uno a otro.',
4136
4143
  // The lobby as a dashboard (2026-10-10): BISHOP at its heart, the search and the filter, the tiles.
4137
4144
  'Show': 'Mostrar',
4138
4145
  'All projects': 'Todos',
@@ -4175,14 +4182,14 @@ export const ES = {
4175
4182
  'Waiting on you': 'Te esperan',
4176
4183
  // The lobby, second round (2026-10-10): MADRE's summary, recent decisions, what needs you.
4177
4184
  'Recent summary': 'Resumen reciente',
4178
- 'Summarise again': 'Resumir de nuevo',
4185
+ 'Summarize again': 'Resumir de nuevo',
4179
4186
  'Reading your conversations…': 'Leyendo tus conversaciones…',
4180
4187
  'No conversations in the last two weeks. What you work on in any project shows here, summarised by MADRE.': 'No hay conversaciones en las últimas dos semanas. Lo que trabajes en cualquier proyecto aparece aquí, resumido por MADRE.',
4181
4188
  'MADRE is summarising your latest conversations…': 'MADRE está resumiendo tus últimas conversaciones…',
4182
4189
  'MADRE\'s local model is off: this is the last summary it wrote.': 'El modelo local de MADRE está apagado: este es el último resumen que escribió.',
4183
4190
  'MADRE\'s local model is off: these are your latest conversations, as they are.': 'El modelo local de MADRE está apagado: estas son tus últimas conversaciones, tal cual.',
4184
4191
  'MADRE could not summarise them this time: these are your latest conversations, as they are.': 'MADRE no pudo resumirlas esta vez: estas son tus últimas conversaciones, tal cual.',
4185
- 'There is newer work than this summary: it is written again in a few minutes, or now if you ask.': 'Hay trabajo más reciente que este resumen: se actualiza solo en unos minutos, o ahora si tocas «Resumir de nuevo».',
4192
+ 'There is newer work than this summary: it updates itself in a few minutes, or now if you press Summarize again.': 'Hay trabajo más reciente que este resumen: se actualiza solo en unos minutos, o ahora si tocas «Resumir de nuevo».',
4186
4193
  'Written by MADRE on this Mac from your latest conversations.': 'Escrito por MADRE en esta Mac a partir de tus últimas conversaciones.',
4187
4194
  'Recent decisions': 'Decisiones recientes',
4188
4195
  'Reading the open projects…': 'Leyendo los proyectos abiertos…',
@@ -4282,8 +4289,8 @@ export const ES = {
4282
4289
  'It takes you to another open project. Its light tells you when one needs you or finishes while you are here.': 'Te lleva a otro proyecto abierto. Su luz te avisa cuando uno te necesita o termina mientras estás aquí.',
4283
4290
  'Everything new, chapter by chapter. ? opens the gestures anywhere.': 'Todo lo nuevo, capítulo por capítulo. Pulsa ? en cualquier pantalla para ver los gestos.',
4284
4291
  'See the tour': 'Ver el recorrido',
4285
- '#4 asks for your key twice': '#4 pide confirmar dos veces',
4286
- 'With #4 the agent may run commands, publish and deploy: what leaves your Mac does not come back. That is why the key is typed twice.': 'Con #4 el agente puede correr comandos, publicar y desplegar: lo que sale de tu Mac no se puede deshacer. Por eso la confirmación se escribe dos veces.',
4292
+ '#4 asks you to confirm twice': '#4 pide confirmar dos veces',
4293
+ 'With #4 the agent may run commands, publish and deploy: what leaves your Mac does not come back. That is why the confirmation is typed twice.': 'Con #4 el agente puede correr comandos, publicar y desplegar: lo que sale de tu Mac no se puede deshacer. Por eso la confirmación se escribe dos veces.',
4287
4294
  'Continue the tour · {n} of {total}': 'Seguir el recorrido · {n} de {total}',
4288
4295
  'Hide the tour': 'Ocultar el recorrido',
4289
4296
  'Hide the tour. It stays in Settings.': 'Ocultar el recorrido. Puedes retomarlo en Ajustes.',
@@ -4348,9 +4355,9 @@ export const ES = {
4348
4355
  'That could not be read.': 'No se pudo leer.',
4349
4356
  'The version the registry gave ({version}) is not one MADRE installs.': 'La versión que publicó npm ({version}) no es una que MADRE pueda instalar.',
4350
4357
  'Unlock #3 or #4 for an agent of this project.': 'Desbloquea #3 o #4 para un agente de este proyecto.',
4351
- 'Too many wrong keys. Wait a minute and try again.': 'Demasiadas confirmaciones equivocadas. Espera un minuto e inténtalo de nuevo.',
4352
- 'Type your current phrase to change the keys.': 'Escribe tu frase actual para cambiar las palabras de confirmación.',
4353
- '#{n} needs its key. Unlock it again and send.': '#{n} necesita tu confirmación. Desbloquéalo otra vez y envía.',
4358
+ 'Too many wrong confirmations. Wait a minute and try again.': 'Demasiadas confirmaciones equivocadas. Espera un minuto e inténtalo de nuevo.',
4359
+ 'Type your current phrase to change how modes are confirmed.': 'Escribe tu frase actual para cambiar cómo desbloqueas los modos.',
4360
+ '#{n} needs your confirmation. Unlock it again and send.': '#{n} necesita tu confirmación. Desbloquéalo otra vez y envía.',
4354
4361
  'Your current phrase': 'Tu frase actual',
4355
4362
  'Your phrase guards a mode: to change anything here, type it first.': 'Tu frase protege un modo: para cambiar algo aquí, escríbela primero.',
4356
4363
  'Your phrase, typed twice.': 'Tu frase, escrita dos veces.',
@@ -4459,7 +4466,7 @@ export const ES = {
4459
4466
  'Only the notes already in use are shared, cleaned of private data first. Never your files, your whole conversations or the notes you set aside.': 'Solo se comparten las notas que ya están en uso, sin datos privados. Nunca tus archivos, tus conversaciones completas ni las notas que apartaste.',
4460
4467
  'The connection ends on its own on the day you choose. Until then, its agents look the notes up only when they need them, unless you turn on the option below.': 'La conexión termina sola el día que elijas. Mientras tanto, sus agentes buscan las notas solo cuando las necesitan, salvo que actives la opción de abajo.',
4461
4468
  'With every question it gets up to 3 related notes without looking for them; each time counts toward the hourly limit. Off, its agents look them up only when they need to.': 'Con cada pregunta recibe hasta 3 notas relacionadas sin buscarlas; cada vez cuenta para el límite por hora. Apagado, sus agentes las buscan solo cuando las necesitan.',
4462
- 'With orders, the Coordinator can ask {room} for a task, and its agents do it there. Without them, it only reads. Edit (#3) and Full access (#4) never go this way: they arrive as a proposal you unlock in that project.': 'Con órdenes, el Coordinador puede pedirle una tarea a {room} y sus agentes la hacen ahí. Sin ellas, solo consulta. #3 EDITAR y #4 ACCESO TOTAL nunca llegan así: llegan como una propuesta que tú confirmas en ese proyecto.',
4469
+ 'With orders, the Coordinator can ask {room} for a task, and its agents do it there. Without them, it only reads. #3 EDIT and #4 FULL ACCESS never go this way: they arrive as a proposal you unlock in that project.': 'Con órdenes, el Coordinador puede pedirle una tarea a {room} y sus agentes la hacen ahí. Sin ellas, solo consulta. #3 EDITAR y #4 ACCESO TOTAL nunca llegan así: llegan como una propuesta que tú confirmas en ese proyecto.',
4463
4470
  'Check it and sign': 'Revísala y fírmala',
4464
4471
  'This is the whole connection. Nothing changes until you press Sign.': 'Así queda la conexión completa. Nada cambia hasta que presiones Firmar.',
4465
4472
  '{a} and {b} will look up each other\'s {kinds}.': '{a} y {b} consultarán sus {kinds} entre sí.',
@@ -4528,7 +4535,6 @@ export const ES = {
4528
4535
  'Full width': 'Ancho completo',
4529
4536
  'Home has no widget by that name.': 'Inicio no tiene un panel con ese nombre.',
4530
4537
  'How busy this Mac\'s processor is, and how much memory is free.': 'Qué tan ocupado está el procesador de esta Mac y cuánta memoria queda libre.',
4531
- 'How far the Coordinator\'s own record is from a model of its own.': 'Cuánto le falta al historial del Coordinador para entrenar un modelo propio.',
4532
4538
  'How grown each open project\'s memory is, and its weakest side.': 'Qué tan madura está la memoria de cada proyecto abierto y cuál es su lado más débil.',
4533
4539
  'It could not be read just now.': 'No se pudo leer en este momento.',
4534
4540
  'Local models': 'Modelos locales',
@@ -4553,7 +4559,7 @@ export const ES = {
4553
4559
  'What Home noticed that needs a hand.': 'Lo que Inicio detectó que necesita tu atención.',
4554
4560
  'What your projects decided lately.': 'Lo que tus proyectos decidieron hace poco.',
4555
4561
  'What your projects remember, by kind.': 'Lo que recuerdan tus proyectos, por tipo.',
4556
- 'Your coordinator, its state and its recent summary.': 'Tu Coordinador, su estado y su resumen reciente.',
4562
+ 'Your Coordinator, its state and its recent summary.': 'Tu Coordinador, su estado y su resumen reciente.',
4557
4563
  'answers {status}': 'responde {status}',
4558
4564
  'model {name}': 'modelo {name}',
4559
4565
  'no answer': 'sin respuesta',
@@ -4566,7 +4572,7 @@ export const ES = {
4566
4572
  '{free} free': '{free} libres',
4567
4573
  '{n} cores · load {load}': '{n} núcleos · carga {load}',
4568
4574
  '{n} models on this Mac': '{n} modelos en esta Mac',
4569
- '{n} odd memories': '{n} memorias dudosas',
4575
+ '{n} doubtful memories': '{n} memorias dudosas',
4570
4576
  '{n} projects have Preview off.': '{n} proyectos tienen la Vista previa apagada.',
4571
4577
  'This page is served by a project started before widgets existed: open Home from its own address, or restart that project.': 'Esta página viene de un proyecto que se abrió con una versión anterior de MADRE, sin widgets: abre Inicio desde su propia dirección o reinicia ese proyecto.',
4572
4578
  'Each line goes from the project whose notes are read to the one that reads them, in the colour of where they come from.': 'Cada línea va del proyecto que comparte sus notas al que las consulta, con el color del que comparte.',
@@ -4605,7 +4611,7 @@ export const ES = {
4605
4611
  'The Coordinator follows the local AI switch of Modules.': 'El Coordinador sigue el interruptor de IA local de Módulos.',
4606
4612
  'Home turns the local AI on in every project. Change it in Home › Settings › Local AI.': 'Inicio enciende la IA local en todos los proyectos. Cámbialo en Inicio › Ajustes › IA local.',
4607
4613
  'off in this project · Home › Settings › Local AI': 'apagada en este proyecto · Inicio › Ajustes › IA local',
4608
- 'Local AI is switched off for every project.': 'La IA local está apagada para todos los proyectos.',
4614
+ 'Local AI is off for every project.': 'La IA local está apagada para todos los proyectos.',
4609
4615
  'Home turns it on in every project, and «Active» switches it for all of them. To choose project by project, go to Home › Settings › Local AI.': 'Inicio la enciende en todos los proyectos, y «Activo» la cambia para todos. Para elegir proyecto por proyecto, ve a Inicio › Ajustes › IA local.',
4610
4616
  'Home chooses the projects one by one; «Active» switches this one here too.': 'Inicio elige los proyectos uno a uno; «Activo» también cambia este proyecto desde aquí.',
4611
4617
  'Each project decides on its own: «Active» is this project’s switch.': 'Cada proyecto decide por su cuenta: «Activo» es el interruptor de este proyecto.',
@@ -4614,17 +4620,16 @@ export const ES = {
4614
4620
  'Manual': 'Manual',
4615
4621
  '{n} of {total} projects': '{n} de {total} proyectos',
4616
4622
  'Ollama is not running': 'Ollama no está encendido',
4617
- 'Every project uses the local AI, new ones too.': 'Todos los proyectos usan la IA local, también los nuevos.',
4623
+ 'Every project uses it, new ones too.': 'Todos los proyectos la usan, también los nuevos.',
4618
4624
  'Only the projects you switch on below. New projects start without it.': 'Solo los proyectos que enciendas abajo. Los proyectos nuevos empiezan sin ella.',
4619
- 'Each project decides in its own Settings › Modules › Local AI. New projects start with it.': 'Cada proyecto lo decide en sus Ajustes › Módulos › IA local. Los proyectos nuevos empiezan con ella.',
4625
+ 'Each project decides in its own Modules › Local AI. New ones start with it.': 'Cada proyecto lo decide en sus Módulos › IA local. Los nuevos empiezan con ella.',
4620
4626
  'Home did not answer.': 'Inicio no respondió.',
4621
4627
  '{names} will use it when restarted: it was started before this setting existed.': '{names} tomará el cambio al reiniciarse: se abrió antes de que existiera este ajuste.',
4622
- 'The local AI is Ollama, on this computer: it searches the memory by meaning, sums it up and answers as @madre, without spending tokens or sending anything out. Here you choose which projects use it.':
4623
- 'La IA local es Ollama, en esta computadora: busca en la memoria por significado, la resume y contesta como @madre, sin gastar tokens ni enviar nada fuera. Aquí eliges qué proyectos la usan.',
4628
+ 'Ollama runs local AI: it searches and sums up each project\'s memory and answers as @madre, free and private. Choose which projects use it.': 'Ollama corre IA local: busca y resume la memoria de cada proyecto y contesta como @madre, gratis y privado. Elige qué proyectos la usan.',
4624
4629
  'Which projects': 'Qué proyectos',
4625
4630
  'Mode': 'Modo',
4626
4631
  'Turn it on in a project, in Modules › Local AI.': 'Enciéndela desde un proyecto, en Módulos › IA local.',
4627
- 'The projects keep working with their agents until it starts. Start it from a project, in Modules › Local AI.': 'Los proyectos siguen trabajando con sus agentes hasta que se encienda. Enciéndelo desde un proyecto, en Módulos › IA local.',
4632
+ 'Projects keep working with their agents meanwhile. Start it from a project, in Modules › Local AI.': 'Mientras, los proyectos siguen con sus agentes. Enciéndelo desde un proyecto, en Módulos › IA local.',
4628
4633
  'All of them use it. Choose «One by one» or «Manual» to turn some off.': 'Todos la usan. Elige «Uno a uno» o «Manual» para apagarla en algunos.',
4629
4634
  'A switch here is the same one the project shows in its Settings.': 'Cada interruptor es el mismo que el proyecto muestra en sus Ajustes.',
4630
4635
  'No projects yet': 'Todavía no hay proyectos',
@@ -4669,8 +4674,8 @@ export const ES = {
4669
4674
  'Todo lo que usa este proyecto, en una ventana: apariencia, agentes, memoria, permisos, privacidad y versión. Presiona / para buscar cualquier ajuste.',
4670
4675
  'Extra features for this project, like apps. Each tile says what it does and what it needs; nothing is installed until you ask.':
4671
4676
  'Funciones extra para este proyecto, como apps. Cada mosaico dice qué hace y qué necesita; nada se instala hasta que lo pidas.',
4672
- 'When something fails, describe it in your own words: Diagnostics says what is going on and gives you the key that fixes it.':
4673
- 'Cuando algo falla, descríbelo con tus palabras: Diagnóstico te dice qué pasa y te da la tecla que lo resuelve.',
4677
+ 'When something fails, describe it in your own words: Diagnostics says what is going on and gives you the button that fixes it.':
4678
+ 'Cuando algo falla, descríbelo con tus palabras: Diagnóstico te dice qué pasa y te da el botón que lo resuelve.',
4674
4679
  'Everything MADRE remembers about this project, as stars. Drag to turn it, use the wheel to zoom in, and click a star to read that memory.':
4675
4680
  'Todo lo que MADRE recuerda de este proyecto, como estrellas. Arrastra para girarlo, usa la rueda para acercarte y haz clic en una estrella para leer esa memoria.',
4676
4681
  'The agents this project can call, and whether each one is ready. Their sessions are set in Settings › Agents.':
@@ -4713,4 +4718,219 @@ export const ES = {
4713
4718
  'Restarting {room} · {n} of {total}': 'Reiniciando {room} · {n} de {total}',
4714
4719
  '{n} restarted. Left as they are, because they are busy: {rooms}.': '{n} reiniciados. Se quedaron como estaban porque están ocupados: {rooms}.',
4715
4720
  '{n} restarted with MADRE {version}.': '{n} reiniciados con MADRE {version}.',
4721
+ // Ajustes › Conectar MCP (2026-10-14): servidores MCP de este proyecto, revisados antes de usarse.
4722
+ 'Outside tools (MCP)': 'Herramientas externas (MCP)',
4723
+ 'No outside tools yet': 'Todavía no hay herramientas externas',
4724
+ 'no tools yet': 'todavía no hay herramientas',
4725
+ '{ready} of {total} tools ready': '{ready} de {total} herramientas listas',
4726
+ '{names} need you': '{names} te necesitan',
4727
+ '{names} needs you': '{names} te necesita',
4728
+ 'Import from your apps': 'Importar desde tus apps',
4729
+ 'Add a tool': 'Agregar herramienta',
4730
+ 'Let the agents use other apps and services: a program on this computer or a service online. MADRE checks each one first; if one fails, the agents carry on without it.': 'Deja que los agentes usen otras apps y servicios: un programa en esta computadora o un servicio en internet. MADRE revisa cada uno antes; si uno falla, los agentes siguen sin él.',
4731
+ 'Add one by hand, or bring the ones you already use in Claude Code, Codex, Gemini or Cursor.':
4732
+ 'Agrega una a mano o trae las que ya usas en Claude Code, Codex, Gemini o Cursor.',
4733
+ 'Tools that only look things up work from #1 CHAT ONLY. Tools that do things — send, write, publish — only from the mode you choose: #4 FULL ACCESS unless you lower it. Keys stay locked in MADRE, never in your files.': 'Las herramientas que solo consultan funcionan desde #1 SOLO CONVERSAR. Las que hacen cosas —enviar, escribir, publicar— solo desde el modo que elijas: #4 ACCESO TOTAL, salvo que lo bajes. Las llaves se guardan bajo llave en MADRE, nunca en tus archivos.',
4734
+ 'address': 'dirección',
4735
+ 'sign-in needed': 'falta iniciar sesión',
4736
+ 'not answering': 'no responde',
4737
+ '{n} tools': '{n} herramientas',
4738
+ 'not checked yet': 'sin revisar',
4739
+ 'Use {name} in this project': 'Usar {name} en este proyecto',
4740
+ '{name} did not answer: {problem}': '{name} no respondió: {problem}',
4741
+ 'Hide tools': 'Ocultar herramientas',
4742
+ 'See tools': 'Ver herramientas',
4743
+ 'Remove · sure?': 'Quitar · ¿seguro?',
4744
+ 'Its {n} tools that do things work from': 'Sus {n} herramientas que hacen cosas funcionan desde',
4745
+ 'Its tool that does things works from': 'Su herramienta que hace cosas funciona desde',
4746
+ 'Can act from': 'Puede actuar desde',
4747
+ 'reads': 'lee',
4748
+ 'acts': 'actúa',
4749
+ 'A name for it, and how MADRE reaches it. MADRE checks it as soon as you save.': 'Un nombre y cómo se conecta MADRE con ella. Se revisa en cuanto la guardas.',
4750
+ 'A short word: it is how the agents see it.': 'Una palabra corta: así la ven los agentes.',
4751
+ 'Where it lives': 'Dónde está',
4752
+ 'On this computer': 'En esta computadora',
4753
+ 'On the internet': 'En internet',
4754
+ 'Command': 'Comando',
4755
+ 'The command its instructions give you to start it.': 'El comando que indican sus instrucciones para arrancarla.',
4756
+ 'value': 'valor',
4757
+ 'Variables': 'Variables',
4758
+ 'Token': 'Token',
4759
+ 'secret': 'secreto',
4760
+ 'Add a variable': 'Agregar variable',
4761
+ 'Settings it needs, like an API key. Secret ones stay locked in MADRE, never in a file.': 'Lo que necesita, como una llave de API. Las secretas se guardan bajo llave en MADRE, nunca en un archivo.',
4762
+ 'The MCP address the service gives you, starting with https://.': 'La dirección MCP que te da el servicio, empezando con https://.',
4763
+ 'Sign-in': 'Inicio de sesión',
4764
+ 'Sign in opens the service\'s own page. A token is a code you paste once; MADRE keeps it safe.': 'Iniciar sesión abre la página del propio servicio. Un token es un código que pegas una vez; MADRE lo guarda seguro.',
4765
+ 'None': 'Ninguno',
4766
+ 'Save and sign in': 'Guardar e iniciar sesión',
4767
+ 'Save and check': 'Guardar y revisar',
4768
+ '{name} is connected · {n} tools': '{name} quedó conectada · {n} herramientas',
4769
+ 'Tools you already set up in other apps. Nothing is copied until you import; then MADRE keeps their keys safe and checks each one.': 'Herramientas que ya configuraste en otras apps. No se copia nada hasta que importas; entonces MADRE guarda sus llaves de forma segura y revisa cada una.',
4770
+ 'No outside tools were found in .mcp.json, opencode.json, Claude Code, Codex, Gemini CLI or Cursor.': 'No se encontraron herramientas externas en .mcp.json, opencode.json, Claude Code, Codex, Gemini CLI ni Cursor.',
4771
+ '{n} secrets to keep safe': '{n} datos secretos que MADRE protege',
4772
+ 'already in this project': 'ya está en este proyecto',
4773
+ 'off in that app': 'apagado en esa app',
4774
+ 'Import and check': 'Importar y revisar',
4775
+ '{ok} of {n} imported tools answered': 'Respondieron {ok} de {n} herramientas importadas',
4776
+ 'MCP servers are connected from the computer, not from the phone.': 'Los servidores MCP se conectan desde la computadora, no desde el teléfono.',
4777
+ 'That server is not connected in this project.': 'Ese servidor no está conectado en este proyecto.',
4778
+ 'The server did not let MADRE register: {problem}': 'El servidor no dejó que MADRE se registrara: {problem}',
4779
+ 'This sign-in expired': 'Este inicio de sesión venció',
4780
+ 'Sign in again from Settings › Outside tools (MCP).': 'Vuelve a iniciar sesión desde Ajustes › Herramientas externas (MCP).',
4781
+ 'The sign-in was not completed': 'El inicio de sesión no se completó',
4782
+ 'The server said: {problem}': 'El servidor dijo: {problem}',
4783
+ '{name} is connected to this project with {n} tools. You can close this tab and go back to MADRE.':
4784
+ '{name} quedó conectado a este proyecto con {n} herramientas. Puedes cerrar esta pestaña y volver a MADRE.',
4785
+ 'You are signed in, but the server did not answer yet: {problem}. Check it again from Settings › Outside tools (MCP).':
4786
+ 'Ya iniciaste sesión, pero el servidor todavía no responde: {problem}. Revísalo de nuevo desde Ajustes › Herramientas externas (MCP).',
4787
+ 'The server refused the credentials. Check the token.': 'El servidor rechazó las credenciales. Revisa el token.',
4788
+ 'Sign in to this server again.': 'Vuelve a iniciar sesión en este servidor.',
4789
+ 'The name is a short word: lowercase letters, digits and dashes, starting with a letter.': 'El nombre es una palabra corta: minúsculas, números y guiones, empezando con una letra.',
4790
+ 'That name belongs to MADRE. Choose another.': 'Ese nombre es de MADRE. Elige otro.',
4791
+ 'There is already a server with that name in this project.': 'Ya hay un servidor con ese nombre en este proyecto.',
4792
+ 'Write the command that starts the server.': 'Escribe el comando que arranca el servidor.',
4793
+ 'The command {why}; write it as one program and its arguments.': 'El comando {why}; escríbelo como un programa y sus argumentos.',
4794
+ 'Write the full address of the server; a remote one starts with https.': 'Escribe la dirección completa del servidor; si es remoto, empieza con https.',
4795
+ 'A remote server has to be https://; plain http:// only on this computer.': 'Un servidor remoto tiene que ser https://; http:// solo en esta computadora.',
4796
+ 'Put the credentials in the token field, not in the address.': 'Pon las credenciales en el campo del token, no en la dirección.',
4797
+ '{name} is not a variable name.': '{name} no es un nombre de variable.',
4798
+ '{name} is not a header name.': '{name} no es un nombre de encabezado.',
4799
+ 'The server does not publish how to sign in to it (no OAuth metadata). Use a token instead.': 'El servidor no publica cómo iniciar sesión (no tiene datos de OAuth). Usa un token.',
4800
+ 'The server only accepts clients it already knows; it does not let MADRE register. Use a token instead.': 'El servidor solo acepta clientes que ya conoce y no deja que MADRE se registre. Usa un token.',
4801
+ 'MCP servers you add to this project, for its agents: a command on this computer or an address on the internet. Each one is started and checked before any agent can use it; tools that read work from #1, tools that act from the mode you choose.':
4802
+ 'Servidores MCP que agregas a este proyecto para sus agentes: un comando en esta computadora o una dirección en internet. Cada uno se arranca y se revisa antes de que un agente lo use; las herramientas que leen funcionan desde #1 y las que actúan, desde el modo que elijas.',
4803
+ "the list of servers, kept in MADRE's own folder for this project, never inside the project": 'la lista de servidores, guardada en la carpeta de MADRE para este proyecto, nunca dentro del proyecto',
4804
+ "its secrets in MADRE's vault, never in the list": 'sus secretos, guardados de forma segura en MADRE, nunca en la lista',
4805
+ 'nothing; a server is checked when you add it': 'nada; cada servidor se revisa cuando lo agregas',
4806
+ '{name} · an MCP server you connected': '{name} · un servidor MCP que conectaste',
4807
+ 'the sign-in: how to sign in, the registration of MADRE and the token': 'el inicio de sesión: cómo se inicia, el registro de MADRE y el token',
4808
+ 'when you press Sign in on it': 'cuando presionas Iniciar sesión en él',
4809
+ 'Settings › Outside tools (MCP)': 'Ajustes › Herramientas externas (MCP)',
4810
+ // El copiloto (2026-10-14): un rato en que el agente al que le escribes conduce el proyecto.
4811
+ '{n} h': '{n} h',
4812
+ 'Copilot': 'Copiloto',
4813
+ 'Copilot on': 'Copiloto encendido',
4814
+ 'COPILOT': 'COPILOTO',
4815
+ 'COPILOT ›': 'COPILOTO ›',
4816
+ 'copilot': 'copiloto',
4817
+ 'copilot › ': 'copiloto › ',
4818
+ 'Copilot on · {left} left. Click to see it or turn it off.': 'Copiloto encendido · quedan {left}. Haz clic para verlo o apagarlo.',
4819
+ 'Copilot: let the agent you write to drive the project for a while.': 'Copiloto: deja que el agente al que le escribes conduzca el proyecto un rato.',
4820
+ 'Copilot off. Each #3 message asks you to confirm again.': 'Copiloto apagado. Cada mensaje en #3 vuelve a pedirte confirmación.',
4821
+ 'The agent you write to drives the project: it edits, makes plans with the other agents (each step can go up to #3 EDIT), and runs the safe commands — reading, tests, builds, local git — on its own.':
4822
+ 'El agente al que le escribes conduce el proyecto: edita, arma planes con los demás agentes (cada paso puede llegar hasta #3 EDITAR) y corre por su cuenta los comandos seguros: leer, probar, compilar y git local.',
4823
+ "It never deletes, never touches MADRE's folders or your secrets, and never pushes, publishes or sends anything off this computer: that stays with you.":
4824
+ 'Nunca borra, nunca toca las carpetas de MADRE ni tus secretos, y nunca sube, publica ni envía nada fuera de esta computadora: eso se queda contigo.',
4825
+ 'On until {time} · {left} left': 'Encendido hasta las {time} · quedan {left}',
4826
+ 'For': 'Por',
4827
+ 'How long the copilot lasts': 'Cuánto dura el copiloto',
4828
+ 'It asks you to confirm #3 only once. STOP ALL ends it.': 'Te pide confirmar #3 una sola vez. DETENER TODO lo apaga.',
4829
+ 'Turn the copilot on for {time}': 'Encender el copiloto por {time}',
4830
+ 'The agent you write to edits the project and runs the safe commands by itself, without asking you to confirm each message, until it ends.':
4831
+ 'El agente al que le escribes edita el proyecto y corre por su cuenta los comandos seguros, sin pedirte confirmar cada mensaje, hasta que termine.',
4832
+ 'It never deletes, pushes, publishes or deploys; each change gets a restore point; STOP ALL ends it.':
4833
+ 'Nunca borra, sube, publica ni despliega; cada cambio tiene punto de restauración; DETENER TODO lo apaga.',
4834
+ 'Copilot on.': 'Copiloto encendido.',
4835
+ 'Copilot on for {time}. Write to the agent that should drive.': 'Copiloto encendido por {time}. Escríbele al agente que quieres que conduzca.',
4836
+ '@{agent} answered as your copilot': '@{agent} contestó como tu copiloto',
4837
+ 'on until {time}: the agent you write to drives the project without asking you to confirm each message': 'encendido hasta las {time}: el agente al que le escribes conduce el proyecto sin pedirte confirmar cada mensaje',
4838
+ 'off: its time ran out': 'apagado: se acabó su tiempo',
4839
+ 'off: STOP ALL ended it': 'apagado: lo detuvo DETENER TODO',
4840
+ 'off: you turned it off': 'apagado: lo apagaste tú',
4841
+ 'The copilot ended. Send again and confirm #3, or turn it on again.': 'El copiloto terminó. Envía de nuevo y confirma #3, o vuelve a encenderlo.',
4842
+ 'The copilot is turned on from the computer, not from the phone.': 'El copiloto se enciende desde la computadora, no desde el teléfono.',
4843
+ 'Choose how long the copilot lasts: up to 24 hours.': 'Elige cuánto dura el copiloto: hasta 24 horas.',
4844
+ 'The copilot is off: it ended or was stopped. Turn it on again, or send and confirm #3.': 'El copiloto está apagado: terminó o lo detuvieron. Vuelve a encenderlo o envía y confirma #3.',
4845
+ 'The copilot ran commands by itself {n} times in a row; the next ones wait for you. Write to it to go on.': 'El copiloto corrió comandos por su cuenta {n} veces seguidas; los siguientes te esperan. Escríbele para que siga.',
4846
+ 'Copilot on. Say what you want done; it edits, plans and checks on its own.': 'Copiloto encendido. Di qué quieres lograr; edita, planea y revisa por su cuenta.',
4847
+ '@madre is in the project · {version}': '@madre está en el proyecto · {version}',
4848
+ '@madre left the project: Ollama has no chat model running': '@madre salió del proyecto: Ollama no tiene un modelo de chat corriendo',
4849
+ // Licencia y autoría (public/attribution.js, 2026-10-15).
4850
+ 'License and authorship': 'Licencia y autoría',
4851
+ "© {year} {author}. MADRE is free software: you can share it and change it under the {license}, with additional terms that keep its author's attribution visible. It comes with no warranty of any kind.": '© {year} {author}. MADRE es software libre: puedes compartirlo y modificarlo bajo la {license}, con términos adicionales que mantienen visible la atribución de su autor. Se ofrece sin ninguna garantía.',
4852
+ 'Made by {author}': 'Hecho por {author}',
4853
+ 'Every copy and every version based on MADRE keeps this attribution visible.': 'Toda copia y toda versión basada en MADRE mantiene visible esta atribución.',
4854
+ 'The license': 'La licencia',
4855
+ 'Read': 'Leer',
4856
+ 'The additional terms': 'Los términos adicionales',
4857
+ 'Author attribution, origin and trademarks (Section 7).': 'Atribución del autor, origen y marcas (sección 7).',
4858
+ 'The source code': 'El código fuente',
4859
+ 'Whoever offers a modified MADRE must offer its source code too.': 'Quien ofrezca un MADRE modificado debe ofrecer también su código fuente.',
4860
+ 'New: Copilot': 'Nuevo: Copiloto',
4861
+ 'Let an agent work on its own for a while. Press the robot, choose how long, and the agent you write to can change files, make plans and run safe commands without asking you each time. It asks for your permission only once.': 'Deja que un agente trabaje solo por un rato. Presiona el robot, elige cuánto tiempo, y el agente al que le escribes podrá cambiar archivos, armar planes y correr comandos seguros sin preguntarte cada vez. Te pide permiso una sola vez.',
4862
+ 'New: Outside tools (MCP)': 'Nuevo: Herramientas externas (MCP)',
4863
+ 'Agents can now use other apps and services: a program on this computer or one on the internet. Add them in Settings › Outside tools (MCP). If you already set some up in Claude Code, Codex, Gemini or Cursor, you can bring them over.': 'Ahora los agentes pueden usar otras apps y servicios: un programa de esta computadora o uno de internet. Agrégalos en Ajustes › Herramientas externas (MCP). Si ya tienes alguno en Claude Code, Codex, Gemini o Cursor, puedes traerlo.',
4864
+ 'New: your files stay up to date': 'Nuevo: tus archivos al día',
4865
+ 'The file list updates by itself after every answer and every command. A colored dot on a folder tells you which agent changed something inside.': 'La lista de archivos se actualiza sola después de cada respuesta y de cada comando. Un punto de color en una carpeta te dice qué agente cambió algo adentro.',
4866
+ 'New: open the memory faster': 'Nuevo: abre la memoria más rápido',
4867
+ 'The Memory map asks you to type the project name before it opens. You can skip that step for 1, 8 or 24 hours, or for good: choose «Don\'t ask again…» when it asks, or go to Settings › Permissions.': 'El Mapa de memoria te pide escribir el nombre del proyecto antes de abrirse. Puedes saltarte ese paso por 1, 8 o 24 horas, o para siempre: elige «No volver a preguntar…» cuando te lo pida, o ve a Ajustes › Permisos.',
4868
+ 'New: notices shrink into dots': 'Nuevo: los avisos se hacen puntos',
4869
+ 'To keep the chat clean, notices shrink into a small dot after 10 seconds. Click the dot to read them again. The ones that need something from you stay open.': 'Para que el chat se vea limpio, los avisos se hacen un puntito después de 10 segundos. Haz clic en el punto para volver a leerlos. Los que necesitan algo de ti se quedan abiertos.',
4870
+ 'You\'ll find it under «More», on the top bar.': 'Lo encuentras en «Más», en la barra de arriba.',
4871
+ 'New: add widgets': 'Nuevo: agrega widgets',
4872
+ 'This button opens «Add to Home»: choose the widgets you want to see here, or bring back the ones you removed.': 'Este botón abre «Agregar a Inicio»: elige los widgets que quieres ver aquí o regresa los que quitaste.',
4873
+ 'collapse': 'contraer',
4874
+ '{n} notices': '{n} avisos',
4875
+ '{agent} is not installed on this computer.': '{agent} no está instalado en esta computadora.',
4876
+ 'Suggested effort': 'Esfuerzo sugerido',
4877
+ 'What it remembers': 'Lo que recuerda',
4878
+ 'online': 'en internet',
4879
+ 'on this computer': 'en esta computadora',
4880
+ 'looks up': 'consulta',
4881
+ 'does things': 'hace cosas',
4882
+ // Ajustes › Permisos › Acceso a la memoria (2026-10-14): el Mapa de memoria sin pedir el nombre por un rato.
4883
+ 'Memory access': 'Acceso a la memoria',
4884
+ 'Opening the Memory map asks for the project name. Choose how long to skip that.': 'Abrir el Mapa de memoria pide el nombre del proyecto. Elige por cuánto tiempo no volver a pedirlo.',
4885
+ "Don't ask again…": 'No volver a preguntar…',
4886
+ 'Always ask': 'Pedir siempre',
4887
+ 'It asks every time.': 'Lo pide cada vez.',
4888
+ 'It does not ask in this project.': 'No lo pide en este proyecto.',
4889
+ 'It does not ask until {time}.': 'No lo pide hasta las {time}.',
4890
+ 'The Memory map asks for the project name again.': 'El Mapa de memoria vuelve a pedir el nombre del proyecto.',
4891
+ 'The Memory map will not ask again in this project.': 'El Mapa de memoria ya no lo pedirá en este proyecto.',
4892
+ 'The Memory map will not ask until {time}.': 'El Mapa de memoria no lo pedirá hasta las {time}.',
4893
+ // Inicio: una tecla propia para «Agregar a Inicio» (2026-10-14).
4894
+ 'Add widgets to Home': 'Agregar widgets a Inicio',
4895
+ // La píldora del recorrido en una barra angosta (2026-10-14).
4896
+ 'Tour · {n}/{total}': 'Recorrido · {n}/{total}',
4897
+ // La tarjeta de cada agente, ordenada (2026-10-14).
4898
+ "of this project's limit · last 5 h": 'del límite de este proyecto · últimas 5 h',
4899
+ 'tokens in the last 5 h': 'tokens en las últimas 5 h',
4900
+ '{used} of {total} tokens': '{used} de {total} tokens',
4901
+ 'Answers': 'Respuestas',
4902
+ 'Last answer': 'Última respuesta',
4903
+ 'Cost (estimated)': 'Costo (estimado)',
4904
+ 'Your plan': 'Tu plan',
4905
+ "{agent}'s app does not say how much of your plan is left. What you see here is only what this project spent.": 'La app de {agent} no dice cuánto te queda de tu plan. Lo que ves aquí es solo lo que gastó este proyecto.',
4906
+ 'version {version}': 'versión {version}',
4907
+ 'waits up to {time}': 'espera hasta {time}',
4908
+ 'Connection and limits in Settings': 'Conexión y límites en Ajustes',
4909
+ // Entrenar tu propia IA, en orden (2026-10-14).
4910
+ "The training data are question-and-answer pairs taken from this project's conversations and notes, with private details hidden. With them a small model is adjusted on your computer, and @madre answers with it.": 'Los datos de entrenamiento son pares de pregunta y respuesta sacados de las conversaciones y notas de este proyecto, con los datos privados ocultos. Con ellos se ajusta un modelo pequeño en tu computadora, y @madre contesta con él.',
4911
+ 'Step by step': 'Paso a paso',
4912
+ 'Mac with Apple chip': 'Mac con chip Apple',
4913
+ 'Linux with NVIDIA': 'Linux con NVIDIA',
4914
+ 'Your computer': 'Tu computadora',
4915
+ 'Any Mac with an M chip. 16 GB of memory is enough for the small model.': 'Cualquier Mac con chip M. Con 16 GB de memoria alcanza para el modelo pequeño.',
4916
+ 'Experimental: MLX runs on Linux with an NVIDIA card (CUDA 12, compute capability 7.5 or newer, glibc 2.35, Python 3.10), but mlx-lm only promises Apple chips. Step 2 checks the card first.': 'Experimental: MLX corre en Linux con una tarjeta NVIDIA (CUDA 12, capacidad de cómputo 7.5 o mayor, glibc 2.35, Python 3.10), pero mlx-lm solo garantiza los chips de Apple. El paso 2 revisa la tarjeta primero.',
4917
+ 'Export the training data': 'Exporta los datos de entrenamiento',
4918
+ 'Use «Export» above. Do it again whenever the project has grown.': 'Con «Exportar», arriba. Repítelo cuando el proyecto haya crecido.',
4919
+ 'Prepare Python, once': 'Prepara Python, una sola vez',
4920
+ 'A separate environment with mlx-lm, so nothing else on your computer changes.': 'Un entorno aparte con mlx-lm, para no cambiar nada más en tu computadora.',
4921
+ 'A separate environment with MLX for CUDA and mlx-lm. It must print «CUDA: True»; if not, stop here.': 'Un entorno aparte con MLX para CUDA y mlx-lm. Debe decir «CUDA: True»; si no, detente aquí.',
4922
+ 'Train · base {model} for {gb} GB': 'Entrena · base {model} para {gb} GB',
4923
+ 'From 10 to 40 minutes. It learns from the exported pairs and leaves an adjustment («adapters»).': 'De 10 a 40 minutos. Aprende de los pares exportados y deja un ajuste («adapters»).',
4924
+ 'Join the adjustment with the base model': 'Une el ajuste con el modelo base',
4925
+ 'Turn it into a file Ollama reads (GGUF)': 'Conviértelo en un archivo que Ollama pueda leer (GGUF)',
4926
+ "The first time, it downloads llama.cpp's converter.": 'La primera vez descarga el convertidor de llama.cpp.',
4927
+ '@madre switches to it at the next recheck of Local AI.': '@madre lo usa desde la siguiente revisión de IA local.',
4928
+ 'Try it before trusting it': 'Pruébalo antes de confiar en él',
4929
+ 'Ask @madre ten things the project decided and five it never discussed. It should get the first right and say it never discussed the others; if it makes things up, remove it with «ollama rm {model}» and train with more pairs.': 'Pregúntale a @madre diez cosas que el proyecto decidió y cinco de las que nunca se habló. Debe acertar las primeras y decir que de las otras nunca se habló; si inventa, quítalo con «ollama rm {model}» y entrena con más pares.',
4930
+ // El escalón sin razonar de OpenCode (2026-10-14).
4931
+ 'No reasoning: it answers straight away. For the simplest requests.': 'Sin razonar: contesta de inmediato. Para lo más sencillo.',
4932
+ // Proveedores de OpenCode: el catálogo completo (2026-10-14).
4933
+ 'Most used': 'Más usados',
4934
+ 'All providers': 'Todos los proveedores',
4935
+ // Avisos de la primera vez de 1.0.2 (2026-10-14).
4716
4936
  };