vibecodingmachine-core 2025.12.22-2230 → 2025.12.24-2348

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.
@@ -0,0 +1,676 @@
1
+ /**
2
+ * Spanish translations for Vibe Coding Machine
3
+ * Traducciones en español para Vibe Coding Machine
4
+ */
5
+
6
+ module.exports = {
7
+ // Common Application
8
+ 'app.name': 'Vibe Coding Machine',
9
+ 'app.version': 'Versión {version}',
10
+ 'app.loading': 'Cargando...',
11
+ 'app.error': 'Error',
12
+ 'app.success': 'Éxito',
13
+ 'app.cancel': 'Cancelar',
14
+ 'app.save': 'Guardar',
15
+ 'app.close': 'Cerrar',
16
+ 'app.back': 'Atrás',
17
+ 'app.next': 'Siguiente',
18
+ 'app.previous': 'Anterior',
19
+ 'app.continue': 'Continuar',
20
+ 'app.retry': 'Reintentar',
21
+ 'app.refresh': 'Actualizar',
22
+ 'app.restart': 'Reiniciar',
23
+
24
+ // Authentication
25
+ 'auth.login': 'Iniciar sesión con Google',
26
+ 'auth.logout': 'Cerrar sesión',
27
+ 'auth.login.success': 'Autenticado exitosamente como {email}',
28
+ 'auth.login.already': 'Ya autenticado como {email}',
29
+ 'auth.login.failed': 'Error al iniciar sesión',
30
+ 'auth.logout.success': 'Sesión cerrada exitosamente',
31
+ 'auth.logout.failed': 'Error al cerrar sesión',
32
+ 'auth.not.authenticated': 'No autenticado',
33
+ 'auth.run.login': 'Ejecuta {command} para iniciar sesión',
34
+ 'auth.starting.interactive': 'Iniciando modo interactivo...',
35
+
36
+ // User Profile
37
+ 'profile.name': 'Nombre',
38
+ 'profile.email': 'Email',
39
+ 'profile.tier': 'Nivel',
40
+ 'profile.tier.free': 'Gratuito',
41
+ 'profile.tier.premium': 'Premium 🌟',
42
+ 'profile.usage': 'Uso',
43
+ 'profile.daily.usage': 'Uso Diario',
44
+ 'profile.limit': 'Límite',
45
+ 'profile.unlimited': 'Ilimitado 🚀',
46
+ 'profile.iterations': 'iteraciones',
47
+ 'profile.quota.exceeded': 'Cuota diaria excedida',
48
+ 'profile.upgrade.suggestion': 'Actualiza a Premium para uso ilimitado.',
49
+
50
+ // Status and Progress
51
+ 'status.title': 'Estado de Vibe Coding Machine',
52
+ 'status.repository': 'Repositorio',
53
+ 'status.auto.mode': 'Modo automático',
54
+ 'status.running': 'ejecutándose',
55
+ 'status.stopped': 'detenido',
56
+ 'status.ide': 'IDE',
57
+ 'status.chats': 'Chats',
58
+ 'status.progress': 'Progreso',
59
+ 'status.current.status': 'Estado Actual',
60
+ 'status.unknown': 'DESCONOCIDO',
61
+ 'status.not.set': 'no configurado',
62
+ 'status.no.repo': 'No hay ruta de repositorio configurada',
63
+ 'status.no.requirements': 'No se encontró archivo REQUIREMENTS.',
64
+ 'status.check.failed': 'Error al verificar estado',
65
+
66
+ // Setup and Configuration
67
+ 'setup.title': 'Configuración',
68
+ 'setup.description': 'Necesitamos descargar e instalar varias aplicaciones. Vibe Coding Machine automatizará tanto como pueda, pero necesitarás permitir permisos cuando la computadora lo solicite.',
69
+ 'setup.agents': 'Agentes (LLMs e IDEs)',
70
+ 'setup.agents.description': 'Selecciona los agentes que quieres usar. Puedes reordenarlos en la pestaña Configuración o CLI.',
71
+ 'setup.loading.agents': 'Cargando agentes...',
72
+ 'setup.permissions': 'Permisos',
73
+ 'setup.accessibility': 'Accesibilidad',
74
+ 'setup.input.monitoring': 'Monitoreo de Entrada',
75
+ 'setup.screen.recording': 'Grabación de Pantalla',
76
+ 'setup.open.settings': 'Abrir Configuración',
77
+ 'setup.recheck': 'Verificar de nuevo',
78
+ 'setup.alias.title': 'Configurar Alias de Vibe Coding Machine',
79
+ 'setup.alias.detected': 'Shell detectado: {shell}',
80
+ 'setup.alias.config': 'Archivo de configuración: {file}',
81
+ 'setup.alias.exists': '¡El alias "vcm" ya está configurado!',
82
+ 'setup.alias.confirm': '¿Agregar alias \'vcm\' a {file}?',
83
+ 'setup.alias.cancelled': 'Cancelado.',
84
+ 'setup.alias.added': 'Alias agregado a {file}',
85
+ 'setup.alias.restart': 'Puede que necesites reiniciar tu terminal o ejecutar:',
86
+ 'setup.alias.source': 'source {file}',
87
+ 'setup.alias.error': 'Error escribiendo al archivo de configuración: {error}',
88
+ 'setup.shell.unsupported': 'No se pudo detectar shell compatible (zsh, bash, fish). Shell actual: {shell}',
89
+ 'setup.manual.alias': 'Puedes agregar el alias manualmente:',
90
+
91
+ // Requirements
92
+ 'requirements.title': 'Requisitos del Proyecto',
93
+ 'requirements.menu.label': 'Requisitos',
94
+ 'requirements.for.computer': 'Requisitos para {computerId}',
95
+ 'requirements.search': 'Buscar requisitos...',
96
+ 'requirements.clear.search': 'Limpiar búsqueda',
97
+ 'requirements.project.details': 'Detalles del Proyecto',
98
+ 'requirements.project.name': 'Nombre del Proyecto',
99
+ 'requirements.add.title': 'Agregar',
100
+ 'requirements.web.app': 'Aplicación Web',
101
+ 'requirements.iphone.app': 'Aplicación iPhone',
102
+ 'requirements.android.app': 'Aplicación Android',
103
+ 'requirements.desktop.app': 'Aplicación de Escritorio (raro)',
104
+ 'requirements.browser.extension': 'Extensión de Navegador (raro)',
105
+ 'requirements.ai.agent': 'Agente de IA',
106
+ 'requirements.features': 'Características',
107
+ 'requirements.login': 'Inicio de sesión',
108
+ 'requirements.user.registration': 'Registro de Usuario',
109
+ 'requirements.password.reset': 'Restablecimiento de Contraseña',
110
+ 'requirements.user.profile': 'Perfil de Usuario',
111
+ 'requirements.search': 'Búsqueda',
112
+ 'requirements.notifications': 'Notificaciones',
113
+ 'requirements.file.upload': 'Subida de Archivos',
114
+ 'requirements.api': 'API',
115
+ 'requirements.development': 'Desarrollo',
116
+ 'requirements.unit.tests': 'Pruebas unitarias (recomendamos mantenerlas)',
117
+ 'requirements.browser.tests': 'Pruebas basadas en navegador (recomendamos mantenerlas)',
118
+ 'requirements.git': 'git (control de versiones)',
119
+ 'requirements.description': 'Descripción',
120
+ 'requirements.description.help': 'Explica con tanto detalle como puedas (mientras más detallado, mejores resultados obtendrás) como si le estuvieras explicando a tu abuela. Esto se usará para crear la lista de requisitos que Vibe Coding Machine implementará. Podrás revisar los requisitos generados y modificarlos directamente, o agregar más información para modificarlos vía chat, pero es mejor acercarse lo más posible la primera vez. Puedes usar el micrófono para no tener que escribir tanto. No te preocupes por la puntuación. ¡Disfruta!',
121
+ 'requirements.description.placeholder': 'Describe tu proyecto en detalle...',
122
+ 'requirements.advertising': 'Publicidad de tu producto',
123
+ 'requirements.budget': 'Presupuesto: ($)',
124
+ 'requirements.budget.placeholder': 'Ingresa monto del presupuesto',
125
+ 'requirements.monetize': 'Monetizar',
126
+ 'requirements.ads': 'Anuncios',
127
+ 'requirements.subscription.tiers': 'Niveles de suscripción',
128
+ 'requirements.target': 'Objetivo: ($)',
129
+ 'requirements.target.placeholder': 'ej., 20000',
130
+ 'requirements.target.per.year': 'por año',
131
+ 'requirements.need.information': 'Requisitos que necesitan información',
132
+ 'requirements.need.information.description': 'Estos requisitos necesitan tu entrada para proceder. Por favor revisa las opciones y selecciona cómo te gustaría continuar.',
133
+ 'requirements.need.information.none': 'No hay requisitos que necesiten información en este momento.',
134
+ 'requirements.todo': 'POR HACER',
135
+ 'requirements.add.new': 'Agregar Nuevo Requisito',
136
+ 'requirements.add.multiple': 'Agregar Múltiples Requisitos',
137
+ 'requirements.name': 'Nombre del Requisito',
138
+ 'requirements.name.placeholder': 'Ingresa nombre del requisito...',
139
+ 'requirements.details': 'Detalles del Requisito',
140
+ 'requirements.details.placeholder': 'Ingresa detalles del requisito...',
141
+ 'requirements.save': 'Guardar Requisito',
142
+ 'requirements.save.multiple': 'Guardar Requisitos',
143
+ 'requirements.describe.multiple': 'Describir Requisitos',
144
+ 'requirements.describe.multiple.help': 'Describe en unos párrafos qué requisitos quieres agregar. La IA creará requisitos individuales de tu descripción. Nota: Los requisitos se toman desde la parte superior de la lista, así que los nuevos agregados arriba se trabajarán primero.',
145
+ 'requirements.placement': 'Dónde agregar estos requisitos',
146
+ 'requirements.placement.top': 'Parte superior de la lista (se trabajarán primero)',
147
+ 'requirements.placement.bottom': 'Parte inferior de la lista (se trabajarán al final)',
148
+ 'requirements.none.found': 'No se encontraron requisitos existentes.',
149
+ 'requirements.to.verify': 'PARA VERIFICAR (Verificado por IA con captura de pantalla. Necesita Verificación Humana)',
150
+ 'requirements.completed.none': 'No se encontraron requisitos completados.',
151
+ 'requirements.verified': 'VERIFICADO',
152
+ 'requirements.changelog.none': 'No se encontraron entradas de CHANGELOG.',
153
+ 'requirements.save.changes': 'Guardar Requisitos',
154
+ 'requirements.cancel.changes': 'Cancelar',
155
+
156
+ // Settings
157
+ 'settings.title': 'Configuración',
158
+ 'settings.description': 'Configura las preferencias de Vibe Coding Machine.',
159
+ 'settings.stop.after.max.chats': 'Detener después de un número máximo de chats',
160
+ 'settings.max.chats': 'Chats Máximos',
161
+ 'settings.workflow.stages': 'Etapas del Flujo de Trabajo',
162
+
163
+ // Progress
164
+ 'progress.title': 'Progreso',
165
+ 'progress.recent.logs': 'Registros Recientes',
166
+ 'progress.no.logs': 'No hay registros disponibles.',
167
+
168
+ // Mobile
169
+ 'mobile.title': 'Móvil',
170
+
171
+ // Console
172
+ 'console.title': 'Consola',
173
+
174
+ // Auto Mode
175
+ 'auto.start': 'Iniciar Auto',
176
+ 'auto.stop': 'Detener Auto',
177
+ 'auto.mode.on': 'Modo Auto Activado',
178
+ 'auto.mode.off': 'Modo Auto Desactivado',
179
+
180
+ // Package Management
181
+ 'package.label': 'Paquete',
182
+ 'package.launch': 'Lanzar',
183
+ 'package.tests': 'Pruebas',
184
+ 'package.run.tests': 'Ejecutar Pruebas',
185
+
186
+ // IDE Names
187
+ 'ide.cline': 'Cline IDE',
188
+ 'ide.cursor': 'Cursor',
189
+ 'ide.vscode': 'VS Code',
190
+ 'ide.windsurf': 'Windsurf',
191
+
192
+ // Logs
193
+ 'logs.recent': 'Registros Recientes',
194
+ 'logs.none': 'No hay registros disponibles.',
195
+
196
+ // Errors and Messages
197
+ 'error.repo.path': 'No hay ruta de repositorio configurada',
198
+ 'error.requirements.file': 'No se encontró archivo REQUIREMENTS',
199
+ 'error.status.check': 'Error al verificar estado: {error}',
200
+ 'error.config.write': 'Error escribiendo al archivo de configuración: {error}',
201
+
202
+ // CLI Specific
203
+ 'cli.alias.manual': 'alias vcm="vibecodingmachine"',
204
+
205
+ // Quota and Usage
206
+ 'quota.overall': 'Cuota General',
207
+ 'quota.remaining': 'Cargando...',
208
+ 'quota.resets.in': 'Se reinicia en',
209
+ 'quota.exceeded.warning': '{reason}',
210
+
211
+ // Tabs
212
+ 'tab.setup': 'Configuración',
213
+ 'tab.requirements': 'Requisitos',
214
+ 'tab.settings': 'Configuración',
215
+ 'tab.progress': 'Progreso',
216
+ 'tab.mobile': 'Móvil',
217
+ 'tab.console': 'Consola',
218
+
219
+ // CLI Commands
220
+ 'cli.repo.manage': 'Gestionar configuración del repositorio',
221
+ 'cli.repo.set': 'Establecer la ruta del repositorio activo',
222
+ 'cli.repo.get': 'Obtener la ruta del repositorio actual',
223
+ 'cli.repo.init': 'Inicializar Vibe Coding Machine en el directorio actual',
224
+ 'cli.auto.start': 'Iniciar modo de desarrollo autónomo',
225
+ 'cli.auto.direct': 'Iniciar modo autónomo con llamadas directas a LLM API (recomendado)',
226
+ 'cli.auto.stop': 'Detener modo de desarrollo autónomo',
227
+ 'cli.auto.status': 'Verificar estado del modo autónomo',
228
+ 'cli.auto.config': 'Configurar ajustes del modo automático',
229
+ 'cli.auto.agents': 'Listar agentes disponibles y su estado de cuota',
230
+ 'cli.req.list': 'Listar todos los requisitos',
231
+ 'cli.req.add': 'Agregar un nuevo requisito',
232
+ 'cli.req.current': 'Mostrar requisito actual en el que se está trabajando',
233
+ 'cli.req.next': 'Pasar al siguiente requisito',
234
+ 'cli.req.edit': 'Abrir archivo de requisitos en editor',
235
+ 'cli.req.watch': 'Observar archivo de requisitos por cambios',
236
+ 'cli.req.rename': 'Renombrar requisito y opcionalmente actualizar descripción',
237
+ 'cli.ide.list': 'Listar IDEs disponibles',
238
+ 'cli.ide.open': 'Abrir IDE con repositorio actual',
239
+ 'cli.ide.send': 'Enviar mensaje al chat de IA del IDE',
240
+ 'cli.status': 'Mostrar estado y progreso de Vibe Coding Machine',
241
+ 'cli.progress': 'Mostrar progreso de desarrollo',
242
+ 'cli.logs': 'Mostrar registros de actividad recientes',
243
+ 'cli.setup': 'Configurar alias "vcm" para shell',
244
+ 'cli.auth.login': 'Iniciar sesión con Google',
245
+ 'cli.auth.logout': 'Cerrar sesión',
246
+ 'cli.auth.status': 'Verificar estado de autenticación',
247
+ 'cli.computers': 'Listar todas las computadoras registradas',
248
+ 'cli.computer.status': 'Mostrar estado detallado de una computadora específica',
249
+ 'cli.computer.register': 'Registrar computadora actual con área de enfoque',
250
+ 'cli.computer.focus': 'Ver o actualizar área de enfoque para computadora actual',
251
+ 'cli.computer.requirements': 'Ver requisitos para otra computadora',
252
+ 'cli.computer.add.requirement': 'Agregar requisito a otra computadora',
253
+ 'cli.sync.now': 'Activar sincronización inmediata',
254
+ 'cli.sync.status': 'Mostrar estado y estadísticas de sincronización',
255
+ 'cli.sync.queue': 'Ver cambios pendientes en cola offline',
256
+ 'cli.sync.force': 'Forzar sincronización incluso si está offline',
257
+ 'cli.sync.history': 'Ver historial de sincronización',
258
+ 'cli.interactive': 'Iniciar modo interactivo',
259
+
260
+ // CLI Messages
261
+ 'cli.auth.opening.browser': 'Abriendo navegador para autenticación...',
262
+ 'cli.auth.success': '¡Autenticación exitosa!',
263
+ 'cli.auth.failed': 'Error de autenticación',
264
+ 'cli.compliance.failed': 'Verificación de cumplimiento falló. Saliendo.',
265
+ 'cli.error': 'Error',
266
+
267
+ // Computer Management Commands
268
+ 'cli.computers.list': 'Listar todas las computadoras registradas',
269
+ 'cli.computer.status.show': 'Mostrar estado detallado de una computadora específica',
270
+ 'cli.computer.register': 'Registrar computadora actual con área de enfoque',
271
+ 'cli.computer.focus.view': 'Ver o actualizar área de enfoque para computadora actual',
272
+ 'cli.computer.requirements.view': 'Ver requisitos para otra computadora',
273
+ 'cli.computer.requirement.add': 'Agregar requisito a otra computadora',
274
+
275
+ // Sync Management Commands
276
+ 'cli.sync.trigger': 'Activar sincronización inmediata',
277
+ 'cli.sync.status.show': 'Mostrar estado y estadísticas de sincronización',
278
+ 'cli.sync.queue.view': 'Ver cambios pendientes en cola offline',
279
+ 'cli.sync.force.sync': 'Forzar sincronización incluso si está offline',
280
+ 'cli.sync.history.view': 'Ver historial de sincronización',
281
+
282
+ // Interactive Mode
283
+ 'interactive.auto.mode': 'Modo Automático',
284
+ 'interactive.auto.stopped': 'Detenido',
285
+ 'interactive.auto.running': 'Ejecutándose',
286
+ 'interactive.stop.condition': 'Condición de Parada',
287
+ 'interactive.stop.after': 'Detener después de {count}',
288
+ 'interactive.never.stop': 'Nunca Detener',
289
+ 'interactive.first.agent': 'Primer Agente',
290
+ 'interactive.requirements': 'Requisitos',
291
+ 'interactive.todo': 'POR HACER',
292
+ 'interactive.to.verify': 'PARA VERIFICAR',
293
+ 'interactive.verified': 'VERIFICADO',
294
+ 'interactive.hostname.enabled': 'Usar Nombre de Host en Archivo Req',
295
+ 'interactive.hostname.disabled': 'DESHABILITADO',
296
+ 'interactive.configure.stages': 'Configurar Etapas',
297
+ 'interactive.stages': 'etapas',
298
+ 'interactive.cloud.sync': 'Sincronización en la Nube',
299
+ 'interactive.online': 'En línea',
300
+ 'interactive.offline': 'Desconectado',
301
+ 'interactive.next.todo': 'Siguiente Requisito POR HACER',
302
+ 'interactive.view.computers': 'Ver Todas las Computadoras',
303
+ 'interactive.sync.now': 'Sincronizar Ahora',
304
+ 'interactive.logout': 'Cerrar Sesión',
305
+ 'interactive.exit': 'Salir',
306
+ 'interactive.initialize': 'Inicializar repositorio (.vibecodingmachine)',
307
+ 'interactive.goodbye': '¡Adiós! ¡Sigue soñando sobre qué requisitos agregar!',
308
+ 'interactive.confirm.exit': '¿Estás seguro de que quieres salir? (x/y/N)',
309
+
310
+ // Requirements Navigator
311
+ 'requirements.navigator.title': 'Navegador de Requisitos',
312
+ 'requirements.navigator.instructions': 'Usa ↑/↓ para navegar, →/Enter para expandir/ver preguntas, ← para regresar, R para Eliminar, J para mover abajo, K para mover arriba, U Promover (👍), D Degradar/Mover a POR HACER (👎), X/ESC para Salir.',
313
+ 'requirements.navigator.basic.instructions': 'Usa ↑/↓ para navegar, →/Enter/Espacio para expandir, ←/ESC para colapsar/regresar',
314
+ 'requirements.add.new': 'Agregar nuevo requisito',
315
+ 'requirements.add.multiple': 'Agregar múltiples requisitos',
316
+ 'requirements.section.verified': 'VERIFICADO',
317
+ 'requirements.section.to.verify': 'PARA VERIFICAR',
318
+ 'requirements.section.todo': 'POR HACER',
319
+
320
+ // Provider Configuration
321
+ 'provider.title': 'Orden y Disponibilidad de Proveedores',
322
+ 'provider.overall.quota': 'Cuota General',
323
+ 'provider.available': 'Disponible',
324
+ 'provider.resets.in': 'Se reinicia en',
325
+ 'provider.rate.limit.resets': 'Límite de velocidad se reinicia en',
326
+ 'provider.instructions': '↑/↓ mover selección j/k reordenar e habilitar d deshabilitar Espacio alternar Enter guardar/seleccionar Esc cancelar',
327
+ 'provider.status.available': 'Disponible',
328
+ 'provider.status.quota.infinite': 'Cuota: Infinita',
329
+ 'provider.status.available.resets': 'disponible • se reinicia en',
330
+ 'provider.no.pending.changes': 'No hay cambios pendientes.',
331
+ 'provider.pending.changes': 'Los cambios pendientes se guardarán al presionar Enter...',
332
+
333
+ // Interactive Navigation
334
+ 'interactive.navigation.help': '↑/↓ para navegar, →/Enter para seleccionar, ←/X para salir, o presiona una letra ({letters})',
335
+
336
+ // Requirement File Labels
337
+ 'requirement.label.package': 'PAQUETE:',
338
+ 'requirement.label.status': 'ESTADO:',
339
+ 'requirement.label.package.es': 'PAQUETE:',
340
+ 'requirement.label.status.es': 'ESTADO:',
341
+
342
+ // Welcome Banner
343
+ 'banner.tagline': 'Grandes Sueños + IA + VibeCodingMachine.com = Tus aplicaciones generadoras de dinero',
344
+
345
+ // System Information
346
+ 'system.repo': 'Repositorio:',
347
+ 'system.computer.name': 'Nombre de Computadora:',
348
+
349
+ // Configuration Dialogs
350
+ 'config.stop.condition.title': '⚙️ Configurar Condición de Parada',
351
+ 'config.max.chats.prompt': 'Máximo de chats (0 para nunca parar):',
352
+ 'config.stop.condition.updated': 'Condición de parada actualizada:',
353
+ 'config.stop.after': 'Detener después de {count}',
354
+ 'config.never.stop': 'Nunca Detener',
355
+
356
+ // Auto Mode
357
+ 'auto.starting': '🚀 Iniciando Modo Automático...',
358
+ 'auto.direct.title': '🤖 Vibe Coding Machine - Modo Automático API Directo',
359
+ 'auto.repository': 'Repositorio:',
360
+ 'auto.fatal.error': '✗ Error Fatal:',
361
+ 'auto.requirement.of': 'REQUISITO {current} de {total}',
362
+
363
+ // Auto Direct - Status and Requirement Management
364
+ 'auto.direct.status.update.warning': 'Advertencia: No se pudo actualizar el estado en el archivo de requisitos:',
365
+ 'auto.direct.requirement.read.error': 'Error al leer requisito:',
366
+ 'auto.direct.requirement.count.error': 'Error al contar requisitos:',
367
+ 'auto.direct.requirement.not.found.todo': 'No se pudo encontrar el requisito "{requirement}" en la sección POR HACER',
368
+ 'auto.direct.requirement.no.more.todo': 'No hay más requisitos en la sección POR HACER',
369
+ 'auto.direct.verify.section.create.failed': 'Error al crear la sección PARA VERIFICAR POR HUMANO',
370
+ 'auto.direct.verify.section.wrong.insert': 'ERROR: Se intentó insertar en la sección VERIFICADO en lugar de PARA VERIFICAR',
371
+ 'auto.direct.requirement.move.verify.error': 'Error al mover requisito a PARA VERIFICAR:',
372
+ 'auto.direct.requirement.not.found': 'No se pudo encontrar el requisito',
373
+ 'auto.direct.requirement.move.error': 'Error al mover requisito:',
374
+
375
+ // Auto Direct - Provider Messages
376
+ 'auto.direct.provider.none.available': 'No hay proveedores disponibles. Configura claves API o agentes IDE primero.',
377
+ 'auto.direct.provider.all.disabled': 'Todos los proveedores están deshabilitados. Habilita al menos un proveedor en el menú Agente.',
378
+ 'auto.direct.provider.all.rate.limited': 'Todos los proveedores habilitados tienen límite de velocidad actualmente.',
379
+ 'auto.direct.provider.enable.tip': 'Consejo: Habilita proveedores adicionales en el menú Agente para más alternativas.',
380
+ 'auto.direct.provider.launching': 'Lanzando alternativa {provider} (auto:start)...',
381
+ 'auto.direct.provider.quota.exhausted': 'Cuota de {provider} agotada, cambiando al siguiente IDE',
382
+ 'auto.direct.provider.completed': 'Proveedor IDE completó iteración',
383
+
384
+ // Auto Direct - File Search
385
+ 'auto.direct.files.searching': 'Buscando archivos relevantes',
386
+ 'auto.direct.files.trying.exact': 'Intentando coincidencia exacta',
387
+ 'auto.direct.files.trying.fuzzy': 'Intentando coincidencia difusa',
388
+ 'auto.direct.files.trying.partial': 'Intentando coincidencia parcial',
389
+ 'auto.direct.files.trying.pattern': 'Intentando coincidencia de patrón',
390
+ 'auto.direct.files.error': 'Error al buscar archivos:',
391
+ 'auto.direct.files.found': 'Se encontraron {count} archivo(s) relevante(s)',
392
+ 'auto.direct.files.none.found': 'No se encontraron archivos coincidentes',
393
+
394
+ // Auto Direct - IDE Agent Interaction
395
+ 'auto.direct.ide.waiting': 'Esperando a que el agente IDE complete...',
396
+ 'auto.direct.ide.monitoring': 'Monitoreando: {filename}',
397
+ 'auto.direct.ide.timeout': 'Tiempo de espera: {minutes} minutos',
398
+ 'auto.direct.ide.prompt.sent': 'Prompt enviado al agente IDE exitosamente',
399
+ 'auto.direct.ide.skipping.context': 'Omitiendo contexto de archivo directo - delegando al agente IDE.',
400
+ 'auto.direct.ide.detected': '{ide} detectado - usando AppleScript para envío confiable de texto',
401
+ 'auto.direct.ide.launching': 'Lanzando {ide}...',
402
+ 'auto.direct.ide.starting': '{ide} puede estar todavía iniciándose...',
403
+ 'auto.direct.ide.sent.applescript': 'Mensaje enviado exitosamente a {ide} vía AppleScript',
404
+ 'auto.direct.ide.autonomous.started': 'Modo autónomo iniciado y mensaje inicial enviado',
405
+ 'auto.direct.ide.still.waiting': 'Aún esperando... ({elapsed}m transcurridos, {remaining}m restantes)',
406
+ 'auto.direct.ide.timeout.after': 'Tiempo de espera agotado después de {minutes} minutos',
407
+
408
+ // Auto Mode - IDE Status
409
+ 'auto.ide.is.installed': '{ide} está instalado',
410
+ 'auto.ide.is.running': '{ide} ya está ejecutándose (PID: {pid})',
411
+ 'auto.ide.label': 'IDE:',
412
+ 'auto.max.chats.label': 'Máximo de chats:',
413
+ 'auto.coding.autonomously': 'Vibe Coding Machine ahora está programando autónomamente',
414
+ 'auto.starting.mode': 'Iniciando modo autónomo...',
415
+
416
+ // Auto Direct - Requirement Display
417
+ 'auto.direct.requirement.header': 'REQUISITO {current} de {total}',
418
+ 'auto.direct.requirement.working.on': 'Trabajando en:',
419
+
420
+ // Workflow Stages
421
+ 'workflow.stage.prepare': 'PREPARAR',
422
+ 'workflow.stage.reproduce': 'REPRODUCIR',
423
+ 'workflow.stage.create.unit.test': 'CREAR PRUEBA UNITARIA',
424
+ 'workflow.stage.act': 'ACTUAR',
425
+ 'workflow.stage.clean.up': 'LIMPIAR',
426
+ 'workflow.stage.verify': 'VERIFICAR',
427
+ 'workflow.stage.run.unit.tests': 'EJECUTAR PRUEBAS UNITARIAS',
428
+ 'workflow.stage.done': 'HECHO',
429
+
430
+ // Workflow Stages Configuration
431
+ 'workflow.config.title': 'Configurar Etapas del Flujo de Trabajo',
432
+ 'workflow.config.description': 'Selecciona las etapas que quieres incluir en el flujo de trabajo del modo automático.',
433
+ 'workflow.config.order.note': 'Las etapas se ejecutarán en el orden mostrado.',
434
+ 'workflow.config.instructions': 'Usa las flechas para navegar, <espacio> para seleccionar, <a> para alternar todo, <enter> para confirmar.',
435
+ 'workflow.config.select.prompt': 'Seleccionar etapas:',
436
+ 'workflow.config.validation.error': 'Debes seleccionar al menos una etapa.',
437
+ 'workflow.config.updated': 'Configuración de etapas actualizada:',
438
+
439
+ // Interactive Menu
440
+ 'interactive.press.enter.return': 'Presiona Enter para volver al menú...',
441
+ 'interactive.press.enter.continue': 'Presiona Enter para continuar...',
442
+ 'interactive.logout.success': '¡Sesión cerrada exitosamente!',
443
+ 'interactive.logout.login.again': 'Ejecuta "vcm auth:login" o "vcm" para iniciar sesión nuevamente.',
444
+ 'interactive.logout.failed': 'Error al cerrar sesión:',
445
+ 'interactive.press.any.key': 'Presiona cualquier tecla para continuar...',
446
+ 'interactive.press.any.key.menu': 'Presiona cualquier tecla para continuar al menú principal...',
447
+ 'interactive.press.any.key.return': 'Presiona cualquier tecla para volver al menú principal...',
448
+ 'interactive.press.any.key.back': 'Presiona cualquier tecla para regresar...',
449
+ 'auto.press.any.key.stop': 'Presiona cualquier tecla para detener, o espera 10 segundos para continuar...',
450
+
451
+ // Auto Direct - Status Display
452
+ 'auto.direct.status.coding': 'Vibe Coding Machine ahora está programando autónomamente',
453
+ 'auto.direct.status.max.chats': 'Máximo de chats: {count}',
454
+ 'auto.direct.status.quota.limit': 'Límite de cuota general alcanzado. Cambiando a agentes IDE para iteraciones restantes.',
455
+ 'auto.direct.status.timeout': 'Tiempo de espera agotado esperando la finalización del requisito',
456
+ 'auto.direct.status.verification.pending': 'Requisito movido a la sección PARA VERIFICAR POR HUMANO',
457
+ 'auto.direct.status.verification.complete': 'Requisito verificado y completado',
458
+ 'auto.direct.status.verification.failed': 'Verificación falló',
459
+
460
+ // Auto Direct - Requirement Display
461
+ 'auto.direct.requirement.title': 'REQUISITO:',
462
+ 'auto.direct.requirement.current': 'Requisito actual:',
463
+ 'auto.direct.requirement.next': 'Siguiente Requisito POR HACER',
464
+ 'auto.direct.requirement.todo.count': 'POR HACER: {count}',
465
+ 'auto.direct.requirement.verify.count': 'PARA VERIFICAR: {count}',
466
+ 'auto.direct.requirement.verified.count': 'VERIFICADO: {count}',
467
+
468
+ // Auto Direct - Code Processing
469
+ 'auto.direct.code.applying.changes': 'Aplicando cambios de código...',
470
+ 'auto.direct.code.change.applied': 'Cambio aplicado a {file}',
471
+ 'auto.direct.code.change.failed': 'Error al aplicar cambio a {file}',
472
+ 'auto.direct.code.no.changes': 'No hay cambios de código para aplicar',
473
+ 'auto.direct.code.processing.response': 'Procesando respuesta del LLM...',
474
+
475
+ // Auto Direct - Summary and Completion
476
+ 'auto.direct.summary.title': 'Resumen',
477
+ 'auto.direct.summary.iterations': 'Iteraciones completadas: {count}',
478
+ 'auto.direct.summary.requirements.completed': 'Requisitos completados: {count}',
479
+ 'auto.direct.summary.time.elapsed': 'Tiempo transcurrido: {time}',
480
+ 'auto.direct.completion.summary': 'Resumen de finalización de requisito',
481
+ 'auto.direct.summary.total.requirements': 'Total de requisitos:',
482
+ 'auto.direct.summary.completed': 'Completados:',
483
+ 'auto.direct.summary.failed': 'Fallidos:',
484
+ 'auto.direct.summary.provider': 'Proveedor:',
485
+ 'auto.direct.summary.files.modified': 'Archivos modificados:',
486
+ 'auto.direct.summary.status': 'Estado:',
487
+ 'auto.direct.summary.time': 'Tiempo:',
488
+ 'auto.direct.summary.moving.to.verify': 'Moviendo a PARA VERIFICAR POR HUMANO',
489
+ 'auto.direct.summary.final.message': '¡{count} requisito{plural} movido{plural} a PARA VERIFICAR POR HUMANO!',
490
+ 'auto.direct.requirement.completed': '¡REQUISITO COMPLETADO!',
491
+ 'auto.direct.no.repository.configured': 'No hay repositorio configurado',
492
+ 'auto.direct.no.more.todo.items': 'No se encontraron más elementos POR HACER en el archivo REQUIREMENTS',
493
+ 'auto.direct.section.not.found': 'No se pudo encontrar la sección relevante en {file}',
494
+ 'auto.direct.requirement.may.be.lost': 'El requisito puede haberse perdido. Por favor verifica el archivo de requisitos.',
495
+ 'auto.direct.verification.still.pending': 'Requisito aún pendiente de verificación en el archivo REQUIREMENTS',
496
+
497
+ // Auto Direct - Configuration
498
+ 'auto.direct.config.repo.not.set': 'Ejecuta: vcm repo:set <ruta>',
499
+ 'auto.direct.config.max.iterations': 'Iteraciones máximas:',
500
+ 'auto.direct.config.restart.error': 'Error al reiniciar CLI:',
501
+
502
+ // Auto Direct - Activity Log
503
+ 'auto.direct.activity.recent': 'Actividad Reciente:',
504
+ 'auto.direct.activity.none': 'No hay elementos para mostrar.',
505
+ 'auto.direct.activity.press.key': 'Presiona cualquier tecla para volver al menú principal...',
506
+
507
+ // Interactive Mode - Additional UI Strings
508
+ 'interactive.header.title': 'Vibe Coding Machine',
509
+ 'interactive.header.version': 'Versión {version}',
510
+ 'interactive.chats.label': 'Chats:',
511
+ 'interactive.changelog.title': '(De CHANGELOG.md - solo lectura)',
512
+ 'interactive.changelog.press.key': 'Presiona cualquier tecla para regresar...',
513
+ 'interactive.edit.responses': '✍️ Editar Respuestas de Aclaración',
514
+ 'interactive.responses.saved': '✓ ¡Respuestas guardadas!',
515
+ 'interactive.moved.to.todo': '✓ ¡Movido a POR HACER!',
516
+ 'interactive.ai.found.label': 'IA Encontrada en el Código:',
517
+ 'interactive.clarifying.questions': 'Preguntas de Aclaración:',
518
+ 'interactive.what.to.do': '¿Qué te gustaría hacer?',
519
+ 'interactive.movement.confirm': 'Movido "{requirement}" a {section}',
520
+ 'interactive.edit.requirement.title': 'Editar Requisito',
521
+ 'interactive.edit.requirement.current': 'Actual: {requirement}',
522
+ 'interactive.edit.requirement.prompt': 'Ingresa nuevo texto (o presiona Enter para mantener actual):',
523
+ 'interactive.requirement.renamed': '✓ Requisito renombrado/actualizado',
524
+ 'interactive.requirement.not.found.rename': 'No se pudo encontrar el requisito para renombrar',
525
+ 'interactive.requirement.not.found.delete': 'No se pudo encontrar el requisito para eliminar',
526
+ 'interactive.requirement.not.found.recycle': 'No se pudo encontrar el requisito para reciclar',
527
+ 'interactive.error.invalid.input': 'Entrada inválida. Por favor intenta de nuevo.',
528
+ 'interactive.description.prompt': 'Ingresa descripción (o presiona Enter para omitir):',
529
+ 'interactive.adding.multiple': 'Agregando múltiples requisitos:',
530
+ 'interactive.no.requirements.file': 'No se encontró archivo de requisitos.',
531
+
532
+ // Provider and IDE Display Names
533
+ 'provider.groq.name': 'Groq (Nube - Muy Rápido)',
534
+ 'provider.anthropic.name': 'Anthropic (Claude Sonnet 4)',
535
+ 'provider.bedrock.name': 'AWS Bedrock (Claude)',
536
+ 'provider.openai.name': 'OpenAI (GPT-4)',
537
+ 'provider.deepseek.name': 'DeepSeek',
538
+ 'provider.google.name': 'Google (Gemini)',
539
+ 'provider.openrouter.name': 'OpenRouter',
540
+ 'provider.ollama.name': 'Ollama (Local)',
541
+ 'provider.lmstudio.name': 'LM Studio (Local)',
542
+ 'ide.agent.cursor': 'Agente IDE Cursor',
543
+ 'ide.agent.windsurf': 'Agente IDE Windsurf',
544
+ 'ide.agent.vscode': 'Agente IDE VS Code (Continue)',
545
+ 'ide.agent.cline': 'Agente IDE Cline',
546
+ 'ide.agent.claude.code': 'Claude Code CLI',
547
+ 'ide.agent.antigravity': 'Agente IDE Google Antigravity',
548
+
549
+ // Cloud Sync Management
550
+ 'cloud.sync.title': 'Gestión de Sincronización en la Nube',
551
+ 'cloud.sync.not.configured': 'La sincronización en la nube no está configurada.',
552
+ 'cloud.sync.setup.title': 'Para configurar la sincronización en la nube:',
553
+ 'cloud.sync.setup.step1': 'Ejecuta:',
554
+ 'cloud.sync.setup.step2': 'Agrega la configuración de AWS a tu archivo .env',
555
+ 'cloud.sync.setup.step3': 'Reinicia vcm',
556
+ 'cloud.sync.setup.info': 'Para más información, consulta:',
557
+ 'cloud.sync.menu.view.computers': '📊 Ver Todas las Computadoras',
558
+ 'cloud.sync.menu.manage.remote': '🖥️ Gestionar Requisitos de Otra Computadora',
559
+ 'cloud.sync.menu.sync.now': '🔄 Sincronizar Ahora',
560
+ 'cloud.sync.menu.sync.status': '📈 Estado de Sincronización',
561
+ 'cloud.sync.menu.sync.history': '📜 Historial de Sincronización',
562
+ 'cloud.sync.menu.offline.queue': '📋 Ver Cola Sin Conexión',
563
+ 'cloud.sync.menu.register': '🖥️ Registrar Esta Computadora',
564
+ 'cloud.sync.menu.update.focus': '🎯 Actualizar Área de Enfoque',
565
+ 'interactive.select.option': 'Selecciona una opción:',
566
+ 'interactive.back.to.menu': '← Volver al Menú Principal',
567
+
568
+ // Computers Management
569
+ 'computers.no.computers': 'No hay computadoras registradas todavía.',
570
+ 'computers.will.appear': 'Las computadoras aparecerán aquí una vez que se sincronicen por primera vez.',
571
+ 'computers.table.computer': 'Computadora',
572
+ 'computers.table.focus': 'Área de Enfoque',
573
+ 'computers.table.status': 'Estado',
574
+ 'computers.table.requirement': 'Requisito Actual',
575
+ 'computers.table.progress': 'Progreso',
576
+ 'computers.table.last.sync': 'Última Sincronización',
577
+ 'computers.status.active': 'activo',
578
+ 'computers.status.idle': 'inactivo',
579
+ 'computers.status.error': 'error',
580
+ 'computers.status.offline': 'desconectado',
581
+ 'computers.status.unknown': 'desconocido',
582
+ 'computers.never': 'nunca',
583
+ 'computers.total': 'Total: {count} computadoras',
584
+ 'computers.active': 'Activas: {count}',
585
+ 'computers.idle': 'Inactivas: {count}',
586
+ 'computers.error': 'Error: {count}',
587
+ 'computers.fetch.failed': 'Error al obtener computadoras:',
588
+ 'computers.not.found': 'Computadora \'{id}\' no encontrada.',
589
+ 'computers.details.title': 'Detalles de la Computadora',
590
+ 'computers.details.hostname': 'Nombre de Host:',
591
+ 'computers.details.id': 'ID de Computadora:',
592
+ 'computers.details.focus': 'Área de Enfoque:',
593
+ 'computers.details.os': 'Sistema Operativo:',
594
+ 'computers.details.status': 'Estado:',
595
+ 'computers.details.last.sync': 'Última Sincronización:',
596
+ 'computers.work.title': 'Trabajo Actual',
597
+ 'computers.work.requirement': 'Requisito:',
598
+ 'computers.work.progress': 'Progreso:',
599
+ 'computers.work.time.active': 'Tiempo Activo:',
600
+ 'computers.work.ide': 'IDE:',
601
+ 'computers.work.none': 'Ninguno',
602
+ 'computers.stats.title': 'Estadísticas',
603
+ 'computers.stats.total': 'Total de Requisitos:',
604
+ 'computers.stats.completed': 'Completados:',
605
+ 'computers.stats.in.progress': 'En Progreso:',
606
+ 'computers.stats.to.verify': 'Para Verificar:',
607
+ 'computers.stats.completion.rate': 'Tasa de Completitud:',
608
+ 'computers.status.fetch.failed': 'Error al obtener estado de computadora:',
609
+ 'computers.register.success': '¡Computadora registrada exitosamente!',
610
+ 'computers.register.id': 'ID de Computadora:',
611
+ 'computers.register.hostname': 'Nombre de Host:',
612
+ 'computers.register.focus': 'Área de Enfoque:',
613
+ 'computers.register.failed': 'Error al registrar computadora:',
614
+ 'computers.not.registered': 'Computadora no registrada. Registrando ahora...',
615
+ 'computers.focus.updated': '¡Área de enfoque actualizada!',
616
+ 'computers.focus.computer': 'Computadora:',
617
+ 'computers.focus.new': 'Nuevo Enfoque:',
618
+ 'computers.focus.update.failed': 'Error al actualizar área de enfoque:',
619
+ 'computers.time.days.ago': 'hace {count}d',
620
+ 'computers.time.hours.ago': 'hace {count}h',
621
+ 'computers.time.minutes.ago': 'hace {count}m',
622
+ 'computers.time.seconds.ago': 'hace {count}s',
623
+ 'computers.no.focus': 'Sin enfoque',
624
+ 'computers.select.to.manage': 'Selecciona computadora para gestionar:',
625
+ 'computers.cancel': '← Cancelar',
626
+ 'computers.register.focus.prompt': 'Ingresa el área de enfoque para esta computadora:',
627
+ 'computers.register.focus.default': 'Desarrollo General',
628
+
629
+ // Sync Management
630
+ 'sync.starting': 'Iniciando sincronización...',
631
+ 'sync.complete': '¡Sincronización completada!',
632
+ 'sync.failed': 'Error en la sincronización:',
633
+ 'sync.tip.aws': 'Consejo: Verifica las credenciales de AWS y la configuración de la tabla DynamoDB.',
634
+ 'sync.last.sync': 'Última Sincronización:',
635
+ 'sync.remote.changes': 'Cambios Remotos:',
636
+ 'sync.local.changes': 'Cambios Locales:',
637
+ 'sync.conflicts': 'Conflictos:',
638
+ 'sync.queued.changes': 'Cambios en Cola:',
639
+ 'sync.status.title': 'Estado de Sincronización',
640
+ 'sync.connection': 'Conexión:',
641
+ 'sync.status': 'Estado:',
642
+ 'sync.status.online': 'En línea',
643
+ 'sync.status.offline': 'Desconectado',
644
+ 'sync.status.syncing': 'Sincronizando...',
645
+ 'sync.status.idle': 'Inactivo',
646
+ 'sync.never': 'Nunca',
647
+ 'sync.conflict.mode': 'Modo de Conflictos:',
648
+ 'sync.computer.id': 'ID de Computadora:',
649
+ 'sync.recent.events': 'Eventos de Sincronización Recientes',
650
+ 'sync.status.failed': 'Error al obtener estado de sincronización:',
651
+ 'sync.queue.no.pending': 'No hay cambios pendientes en la cola.',
652
+ 'sync.queue.title': 'Cola Sin Conexión ({count} cambios)',
653
+ 'sync.queue.header.number': '#',
654
+ 'sync.queue.header.type': 'Tipo',
655
+ 'sync.queue.header.requirement': 'Requisito',
656
+ 'sync.queue.header.timestamp': 'Fecha/Hora',
657
+ 'sync.queue.will.sync': 'Estos cambios se sincronizarán cuando se restaure la conexión.',
658
+ 'sync.queue.commands': 'Comandos:',
659
+ 'sync.queue.force.now': 'Forzar sincronización ahora',
660
+ 'sync.queue.sync.online': 'Sincronizar cuando esté en línea',
661
+ 'sync.queue.view.failed': 'Error al ver la cola:',
662
+ 'sync.force.starting': 'Forzando sincronización (ignorando estado sin conexión)...',
663
+ 'sync.force.complete': '¡Sincronización forzada completada!',
664
+ 'sync.force.failed': 'Error en sincronización forzada:',
665
+ 'sync.force.unreachable': 'Esto generalmente significa que el servidor no está disponible.',
666
+ 'sync.history.no.events': 'No hay historial de sincronización disponible.',
667
+ 'sync.history.title': 'Historial de Sincronización (últimos {count} eventos)',
668
+ 'sync.history.header.time': 'Hora',
669
+ 'sync.history.header.type': 'Tipo',
670
+ 'sync.history.header.details': 'Detalles',
671
+ 'sync.history.view.failed': 'Error al ver el historial:',
672
+ 'sync.event.resolved': 'Resuelto: {id}',
673
+ 'sync.event.remote.local': 'Remotos: {remote}, Locales: {local}',
674
+ 'sync.event.applied': 'Aplicado: {id}',
675
+ 'sync.event.pushed': 'Enviado: {id}'
676
+ };