agentvibes 5.5.0 → 5.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/.agentvibes/config.json +3 -30
  2. package/.claude/config/background-music-enabled.txt +1 -1
  3. package/.claude/config/background-music-position.txt +6 -6
  4. package/.claude/github-star-reminder.txt +1 -1
  5. package/.claude/hooks/play-tts-ssh-remote.sh +119 -42
  6. package/.claude/hooks/play-tts-windows-receiver.sh +31 -0
  7. package/.claude/hooks/stop.sh +2 -27
  8. package/.claude/hooks-windows/play-tts-windows-sapi.ps1 +108 -108
  9. package/.claude/hooks-windows/play-tts.ps1 +23 -7
  10. package/.claude/piper-voices-dir.txt +1 -1
  11. package/.clawdbot/skill/README.md +326 -0
  12. package/.mcp.json +17 -27
  13. package/README.md +73 -82
  14. package/RELEASE_NOTES.md +61 -0
  15. package/bin/agent-vibes +39 -39
  16. package/package.json +1 -1
  17. package/src/bmad-detector.js +71 -71
  18. package/src/cli/list-personalities.js +110 -110
  19. package/src/cli/list-voices.js +114 -114
  20. package/src/commands/bmad-voices.js +394 -394
  21. package/src/commands/install-mcp.js +476 -476
  22. package/src/console/brand-colors.js +13 -13
  23. package/src/console/constants/personalities.js +44 -44
  24. package/src/console/modals/modal-overlay.js +247 -247
  25. package/src/console/navigation.js +5 -1
  26. package/src/console/tabs/agents-tab.js +5 -5
  27. package/src/console/tabs/help-tab.js +314 -314
  28. package/src/console/tabs/readme-tab.js +272 -272
  29. package/src/console/tabs/setup-tab.js +32 -17
  30. package/src/console/tabs/voices-tab.js +2 -2
  31. package/src/console/widgets/destroy-list.js +25 -25
  32. package/src/console/widgets/notice.js +55 -55
  33. package/src/console/widgets/personality-picker.js +213 -213
  34. package/src/console/widgets/reverb-picker.js +97 -97
  35. package/src/console/widgets/track-picker.js +1 -1
  36. package/src/i18n/de.js +202 -202
  37. package/src/i18n/es.js +202 -202
  38. package/src/i18n/fr.js +202 -202
  39. package/src/i18n/hi.js +202 -202
  40. package/src/i18n/ja.js +202 -202
  41. package/src/i18n/ko.js +202 -202
  42. package/src/i18n/pt.js +202 -202
  43. package/src/i18n/strings.js +54 -54
  44. package/src/i18n/zh-CN.js +202 -202
  45. package/src/installer/language-screen.js +31 -31
  46. package/src/installer/music-file-input.js +304 -304
  47. package/src/services/agent-voice-store.js +420 -423
  48. package/src/services/config-service.js +264 -264
  49. package/src/services/language-service.js +47 -47
  50. package/src/services/llm-provider-service.js +11 -4
  51. package/src/services/navigation-service.js +34 -10
  52. package/src/services/provider-service.js +143 -143
  53. package/src/utils/audio-duration-validator.js +298 -298
  54. package/src/utils/audio-format-validator.js +277 -277
  55. package/src/utils/dependency-checker.js +469 -469
  56. package/src/utils/file-ownership-verifier.js +358 -358
  57. package/src/utils/list-formatter.js +194 -194
  58. package/src/utils/music-file-validator.js +285 -285
  59. package/src/utils/preview-list-prompt.js +136 -136
  60. package/src/utils/secure-music-storage.js +412 -412
  61. package/.agentvibes/LITE-MODE.md +0 -236
  62. package/.agentvibes/README.md +0 -136
  63. package/.agentvibes/backup/session-start-tts.sh.20251210_212814 +0 -141
  64. package/.agentvibes/backups/agents/analyst_20260204_144958.md +0 -78
  65. package/.agentvibes/backups/agents/architect_20260204_144958.md +0 -72
  66. package/.agentvibes/backups/agents/dev_20260204_144958.md +0 -74
  67. package/.agentvibes/backups/agents/pm_20260204_144958.md +0 -72
  68. package/.agentvibes/backups/agents/quick-flow-solo-dev_20260204_144958.md +0 -64
  69. package/.agentvibes/backups/agents/sm_20260204_144958.md +0 -87
  70. package/.agentvibes/backups/agents/tea_20260204_144958.md +0 -79
  71. package/.agentvibes/backups/agents/tech-writer_20260204_144958.md +0 -82
  72. package/.agentvibes/backups/agents/ux-designer_20260204_144958.md +0 -80
  73. package/.agentvibes/config/README-personality-defaults.md +0 -162
  74. package/.agentvibes/config/agentvibes.json +0 -1
  75. package/.agentvibes/config/mode.txt +0 -1
  76. package/.agentvibes/config/personality-voice-defaults.default.json +0 -21
  77. package/.agentvibes/config/save-audio.txt +0 -1
  78. package/.agentvibes/config/voice-metadata.json +0 -160
  79. package/.agentvibes/hooks/help.sh +0 -191
  80. package/.agentvibes/hooks/post-tool-use-lite.sh +0 -111
  81. package/.agentvibes/hooks/save-audio-manager.sh +0 -162
  82. package/.agentvibes/hooks/session-start-full-optimized.sh +0 -102
  83. package/.agentvibes/hooks/session-start-full.sh +0 -142
  84. package/.agentvibes/hooks/session-start-lite-v2.sh +0 -34
  85. package/.agentvibes/hooks/session-start-lite.sh +0 -29
  86. package/.agentvibes/hooks/stop-lite.sh +0 -115
  87. package/.agentvibes/hooks/switch-mode.sh +0 -215
  88. package/.agentvibes/output-styles/audio-summary.md +0 -30
  89. package/.claude/audio/voice-samples/piper/alan.wav +0 -0
  90. package/.claude/audio/voice-samples/piper/amy.wav +0 -0
  91. package/.claude/audio/voice-samples/piper/charlotte.wav +0 -0
  92. package/.claude/audio/voice-samples/piper/joe.wav +0 -0
  93. package/.claude/audio/voice-samples/piper/john.wav +0 -0
  94. package/.claude/audio/voice-samples/piper/katherine.wav +0 -0
  95. package/.claude/audio/voice-samples/piper/kristin.wav +0 -0
  96. package/.claude/audio/voice-samples/piper/linda.wav +0 -0
  97. package/.claude/audio/voice-samples/piper/marcus.wav +0 -0
  98. package/.claude/audio/voice-samples/piper/ryan.wav +0 -0
  99. package/.claude/hooks/post-response.sh +0 -41
  100. package/bin/ensure-soprano-running.sh +0 -43
package/src/i18n/pt.js CHANGED
@@ -1,203 +1,203 @@
1
- export default {
2
- languageSelectTitle: "🌐 Select Language / Seleccionar Idioma / Choisir la langue / Sprache wählen / Selecionar Idioma / 言語を選択 / भाषा चुनें / 选择语言 / 언어 선택",
3
- languageApplied: "Idioma aplicado",
4
- welcomeTitle: "Bem-vindo ao AgentVibes!",
5
- installDetails: "Detalhes da instalação",
6
- installLocation: "Local de instalação",
7
- packageVersion: "Versão do pacote",
8
- readyToConfigure: "Pronto para configurar o AgentVibes?",
9
- installationCancelled: "Instalação cancelada.",
10
- startInstall: "Iniciar instalação",
11
- installationCancelledMsg: "A instalação foi cancelada pelo usuário.",
12
- installedSuccess: "AgentVibes instalado com sucesso!",
13
- installComplete: "Instalação concluída",
14
- installationFailed: "Falha na instalação",
15
- installing: "Instalando AgentVibes...",
16
- providerLabel: "Provedor",
17
- voiceLabel: "Voz",
18
- locationLabel: "Local",
19
- versionLabel: "Versão",
20
- configurationSetup: "Configuração",
21
- configurationIntro: "Por favor, configure sua instalação do AgentVibes.",
22
- navigationHint: "Use as teclas de seta para navegar entre as páginas.",
23
- nonInteractiveDetected: "Modo não interativo detectado",
24
- installError: "Falha na instalação",
25
- continuePrompt: "Continuar",
26
- cancelPrompt: "Cancelar",
27
- setupWizard: "Assistente de Configuração",
28
- setupWizardSubtitle: "TTS para assistentes de IA com personalidade.",
29
- dependencyCheck: "Verificação de Dependências",
30
- checkingDependencies: "Verificando dependências...",
31
- depColumn: "Dependência",
32
- statusColumn: "Status",
33
- installed: "Instalado",
34
- notFound: "Não encontrado",
35
- ffmpegMissing: "Não encontrado (necessário para música de fundo)",
36
- ttsDetected: "Provedores TTS Detectados",
37
- noTtsFound: "Nenhum provedor TTS encontrado. Instale o Piper ou Soprano primeiro.",
38
- providerSelection: "Seleção de Provedor",
39
- availableProviders: "Provedores TTS disponíveis:",
40
- providerAndVoice: "Provedor e Voz",
41
- voiceChangeHint: "(após instalação, pode alterar em Configurações)",
42
- introText: "Texto de Introdução",
43
- introTextLabel: "Texto intro",
44
- none: "nenhum",
45
- example: "Exemplo",
46
- screen1Hint: "Tela 1/5: Boas-vindas | [←/→] Navegar | [Enter] Começar | [Esc] Sair",
47
- screen2Hint: "Tela 2/5: Dependências | [←] Voltar | [Enter] Próximo",
48
- screen3Hint: "Tela 3/5: Provedor | [←] Voltar | [↑↓] Escolher | [Enter/→] Confirmar",
49
- screen4Hint: "Tela 4/5: Configurar | [Esc] Voltar | [E] Editar | [↓] Aceitar e Instalar",
50
- screen5HintDone: "Tela 5/5: Completo | [Enter] OK — Concluído",
51
- screen5HintWait: "Tela 5/5: Instalando... | Aguarde",
52
- languageSettings: "Idioma",
53
- languageSettingsSubtitle: "Selecionar idioma da interface",
54
- currentLanguage: "Idioma atual",
55
- changeLanguage: "Alterar idioma",
56
- beginBtn: "▶ Começar",
57
- exitBtn: "✗ Sair",
58
- footerText: "[Enter] Continuar/Concluir [Esc] Voltar/Sair [C] Console [S/V/M/A/R] Tab [Q] Sair",
59
- customizationTool: "Ferramenta de Personalização",
60
- quitLabel: "[Q] Sair",
61
- tabInstall: "Instalar",
62
- tabSettings: "Configurações",
63
- tabVoices: "Vozes",
64
- tabMusic: "Música",
65
- tabBmad: "BMad",
66
- tabReceiver: "Receptor",
67
- tabReadme: "Leiame",
68
- tabHelp: "Ajuda",
69
- subTabVoice: " [V] Voz ",
70
- subTabEffects: " [E] Efeitos ",
71
- subTabPersonality: " [P] Personalidade ",
72
- subTabOutput: " [O] Saída ",
73
- subTabLanguage: " [L] Idioma ",
74
- sectionProviderVoice: " 🎤 Provedor e Voz ",
75
- sectionAudioEffects: " ⚡ Efeitos de Áudio ",
76
- sectionBgMusic: " 🎸 Música de Fundo ",
77
- sectionStyle: " 🎭 Estilo ",
78
- sectionIntroText: " ✍️ Texto de Intro ",
79
- sectionAudioDest: " 📡 Destino de Áudio ",
80
- sectionConfigStorage: " 💾 Armazenamento de Config ",
81
- sectionLanguage: " 🌐 Idioma ",
82
- providerRowLabel: "Provedor:",
83
- currentVoiceLabel: "Voz Atual:",
84
- reverbLabel: "Reverb:",
85
- trackLabel: "Faixa:",
86
- volumeLabel: "Volume:",
87
- verbosityLabel: "Verbosidade:",
88
- personalityLabel: "Personalidade:",
89
- introTextRowLabel: "Texto Intro:",
90
- destinationLabel: "Destino:",
91
- sshAliasLabel: "Alias SSH:",
92
- globalLabel: "Global:",
93
- localLabel: "Local:",
94
- languageLabel: "Idioma:",
95
- switchBtn: "Trocar",
96
- changeBtn: "Alterar",
97
- playBtn: "▶ Reproduzir",
98
- stopBtn: "■ Parar",
99
- previewBtn: "▶ Visualizar",
100
- fullPreviewBtn: "▶ Visualização Completa",
101
- saveGloballyBtn: "Salvar Global",
102
- saveLocallyBtn: "Salvar Local",
103
- cancelChangesBtn: "Cancelar Alterações",
104
- editBtn: "Editar",
105
- clearBtn: "Limpar",
106
- applyLanguageBtn: "✓ Aplicar Idioma",
107
- enabledBtn: "Ativado",
108
- disabledBtn: "Desativado",
109
- okSaveBtn: "OK — Salvar",
110
- enableBtn: "Ativar",
111
- streamingTextBtn: "Apenas Texto Streaming ✓",
112
- streamingPulseBtn: "Streaming Áudio Pulse",
113
- continueArrowBtn: "Continuar →",
114
- acceptInstallBtn: "✓ Aceitar e Instalar",
115
- okDoneBtn: "✓ OK — Concluído",
116
- doneCustomizeBtn: "✓ Concluído - Personalizar mais",
117
- doneQuitBtn: "✕ Concluído - Sair",
118
- editInstallBtn: "Editar",
119
- musicDisabledMsg: "Música desativada. Ativar agora?",
120
- settingsFooter: "[↑↓] Grupo [←→] Irmão/Sub-tab [Enter/Space] Ativar [Tab] Trocar Tab [Q] Sair",
121
- voicesFooter: "[↑↓/jk] Navegar [Space] Visualizar [Enter] Selecionar [F] Favorito [/] Buscar",
122
- musicFooter: "[↑↓/jk] Navegar [Space] Visualizar [Enter] Selecionar [M] Alternar [*] Favorito [F] Filtrar [Q] Sair",
123
- helpFooter: "[↑↓/jk] Rolar [/] Buscar [PgUp/PgDn] Página [S/V/M/A/R] Tab [Q] Sair",
124
- readmeFooter: "[↑↓/jk] Rolar [PgUp/PgDn] Página [/] Buscar [S/V/M/A/R] Tab [Q] Sair",
125
- receiverFooter: "Receptor SSH [Q] Sair",
126
- searchLabel: "Buscar:",
127
- settingsSavedMsg: "Configurações Salvas",
128
- changesRevertedMsg: "Alterações revertidas",
129
- musicBuiltInHeader: "── Faixas Integradas ",
130
- musicStatusHeader: "── Status da Música ",
131
- musicStatusLabel: "Música:",
132
- musicActiveTrack: "Faixa Ativa:",
133
- musicFilterLabel: "Filtro:",
134
- musicFilterAll: "Todos",
135
- musicFilterFavs: "Favoritos",
136
- musicToggleBtn: "[Ativar/Desativar Música]",
137
- musicAddCustomBtn: "[Adicionar Faixa]",
138
- voicesHeader: "── Vozes ",
139
- voicesColName: "Nome",
140
- voicesColGender: "Gênero",
141
- voicesColProvider: "Provedor",
142
- voicesInfoHeader: "── Info da Voz ",
143
- voicesSwitchBtn: "[Trocar Voz]",
144
- voicesFavoriteBtn: "[★ Favorito]",
145
- voicesDownloadBtn: "[Baixar Voz]",
146
- voicesRowHintInstalled: "[Space] Visualizar [Enter] Selecionar [*] Favorito",
147
- voicesRowHintUninstalled: "[Enter] Baixar e instalar",
148
- musicRowHint: "[Space] Reproduzir [Enter] Selecionar [*] Favorito",
149
- musicHintText: "[Space] visualizar [Enter] definir faixa [*] favorito",
150
- genderFemale: "Feminino",
151
- genderMale: "Masculino",
152
- voiceInfoVoice: "Voz:",
153
- voiceInfoGender: "Gênero:",
154
- voiceInfoLanguage: "Idioma:",
155
- voiceInfoQuality: "Qualidade:",
156
- voiceInfoProvider: "Provedor:",
157
- voiceInfoId: "ID:",
158
- voiceInfoSpeaker: "Locutor:",
159
- voiceInfoModel: "Modelo:",
160
- voiceInfoSpeakerId: "ID do Locutor:",
161
- voiceInfoDownload: "⬇ Pressionar [Enter] para baixar e instalar",
162
- voicePlaying: "(reproduzindo)",
163
- bmadTitle: "🧙 Agentes BMAD",
164
- bmadWhatIsHeader: "O que é BMAD?",
165
- bmadDesc: "O Método BMad (Build More Architect Dreams) é um módulo de framework\nde desenvolvimento orientado por IA que ajuda você a construir software\nde ponta a ponta, da ideação à implementação agêntica. Fornece agentes IA\nespecializados, fluxos de trabalho guiados e planejamento inteligente.\n\nSe você está confortável trabalhando com assistentes de codificação IA\ncomo Claude, Cursor ou GitHub Copilot, você está pronto para começar.",
166
- bmadInstallHeader: "Instalar BMAD no seu projeto:",
167
- bmadLearnMoreHeader: "Saiba mais:",
168
- bmadInstalledNote: "Uma vez que o BMAD estiver instalado, esta aba mostrará todos os seus\nagentes e permitirá personalizar a voz, pretexto, reverb, personalidade\ne música de fundo de cada agente independentemente.",
169
- receiverWhatIsTitle: "O que é o Receptor SSH?",
170
- receiverDesc: "O Receptor SSH permite que seus servidores remotos falem através desta\nmáquina. Quando um assistente de IA em um servidor remoto precisa\nreproduzir áudio TTS, ele envia o texto via SSH para esta máquina, que\ngera e reproduz o áudio pelos seus alto-falantes localmente.\n\nIA Remota ──[SSH]──► Esta Máquina ──[piper+sox+ffmpeg]──► Seus Alto-falantes",
171
- helpSectionGlobal: "Atalhos Globais",
172
- helpSectionNavigation: "Atalhos de Navegação",
173
- helpSectionColors: "Guia de Cores das Abas",
174
- helpQuit: "Sair do console",
175
- helpForceQuit: "Forçar saída",
176
- helpSwitchSettings: "Ir para aba Configurações",
177
- helpSwitchVoices: "Ir para aba Vozes",
178
- helpSwitchMusic: "Ir para aba Música",
179
- helpSwitchReadme: "Ir para aba Readme",
180
- helpSwitchHelp: "Ir para aba Ajuda",
181
- helpSwitchInstall: "Ir para aba Instalar",
182
- helpCloseModal: "Fechar modal / voltar",
183
- helpNavigateLists: "Navegar listas",
184
- helpSelectActivate: "Selecionar / ativar",
185
- helpTogglePreview: "Alternar / visualizar",
186
- helpNextButton: "Próximo botão",
187
- helpPrevButton: "Botão anterior",
188
- helpOpenSearch: "Abrir busca/filtro",
189
- helpToggleFavFilter: "Alternar filtro de favoritos (Vozes/Música)",
190
- helpToggleFav: "Alternar favorito (aba Música)",
191
- helpToggleMusic: "Ativar/desativar música (aba Música)",
192
- helpColorSettings: "Rodapé da aba Configurações",
193
- helpColorVoices: "Rodapé da aba Vozes",
194
- helpColorMusic: "Rodapé da aba Música",
195
- helpColorReadme: "Rodapé da aba Readme",
196
- helpColorHelp: "Rodapé da aba Ajuda",
197
- helpColorInstall: "Rodapé da aba Instalar",
198
- helpSearchLabel: "Buscar:",
199
- readmeScrollMore: "↓ Role para mais conteúdo ↓",
200
- readmeNotFound: "*(Nenhum README.md encontrado no diretório atual)*",
201
- bmadFooterNobmad: "[Tab] Mudar Aba [Q] Sair",
202
- bmadFooterBmad: "[↑↓/jk] Navegar [Space] Visualizar [Enter] Configurar [A] Auto-atribuir [B] Lote [X] Redefinir [Q] Sair",
1
+ export default {
2
+ languageSelectTitle: "🌐 Select Language / Seleccionar Idioma / Choisir la langue / Sprache wählen / Selecionar Idioma / 言語を選択 / भाषा चुनें / 选择语言 / 언어 선택",
3
+ languageApplied: "Idioma aplicado",
4
+ welcomeTitle: "Bem-vindo ao AgentVibes!",
5
+ installDetails: "Detalhes da instalação",
6
+ installLocation: "Local de instalação",
7
+ packageVersion: "Versão do pacote",
8
+ readyToConfigure: "Pronto para configurar o AgentVibes?",
9
+ installationCancelled: "Instalação cancelada.",
10
+ startInstall: "Iniciar instalação",
11
+ installationCancelledMsg: "A instalação foi cancelada pelo usuário.",
12
+ installedSuccess: "AgentVibes instalado com sucesso!",
13
+ installComplete: "Instalação concluída",
14
+ installationFailed: "Falha na instalação",
15
+ installing: "Instalando AgentVibes...",
16
+ providerLabel: "Provedor",
17
+ voiceLabel: "Voz",
18
+ locationLabel: "Local",
19
+ versionLabel: "Versão",
20
+ configurationSetup: "Configuração",
21
+ configurationIntro: "Por favor, configure sua instalação do AgentVibes.",
22
+ navigationHint: "Use as teclas de seta para navegar entre as páginas.",
23
+ nonInteractiveDetected: "Modo não interativo detectado",
24
+ installError: "Falha na instalação",
25
+ continuePrompt: "Continuar",
26
+ cancelPrompt: "Cancelar",
27
+ setupWizard: "Assistente de Configuração",
28
+ setupWizardSubtitle: "TTS para assistentes de IA com personalidade.",
29
+ dependencyCheck: "Verificação de Dependências",
30
+ checkingDependencies: "Verificando dependências...",
31
+ depColumn: "Dependência",
32
+ statusColumn: "Status",
33
+ installed: "Instalado",
34
+ notFound: "Não encontrado",
35
+ ffmpegMissing: "Não encontrado (necessário para música de fundo)",
36
+ ttsDetected: "Provedores TTS Detectados",
37
+ noTtsFound: "Nenhum provedor TTS encontrado. Instale o Piper ou Soprano primeiro.",
38
+ providerSelection: "Seleção de Provedor",
39
+ availableProviders: "Provedores TTS disponíveis:",
40
+ providerAndVoice: "Provedor e Voz",
41
+ voiceChangeHint: "(após instalação, pode alterar em Configurações)",
42
+ introText: "Texto de Introdução",
43
+ introTextLabel: "Texto intro",
44
+ none: "nenhum",
45
+ example: "Exemplo",
46
+ screen1Hint: "Tela 1/5: Boas-vindas | [←/→] Navegar | [Enter] Começar | [Esc] Sair",
47
+ screen2Hint: "Tela 2/5: Dependências | [←] Voltar | [Enter] Próximo",
48
+ screen3Hint: "Tela 3/5: Provedor | [←] Voltar | [↑↓] Escolher | [Enter/→] Confirmar",
49
+ screen4Hint: "Tela 4/5: Configurar | [Esc] Voltar | [E] Editar | [↓] Aceitar e Instalar",
50
+ screen5HintDone: "Tela 5/5: Completo | [Enter] OK — Concluído",
51
+ screen5HintWait: "Tela 5/5: Instalando... | Aguarde",
52
+ languageSettings: "Idioma",
53
+ languageSettingsSubtitle: "Selecionar idioma da interface",
54
+ currentLanguage: "Idioma atual",
55
+ changeLanguage: "Alterar idioma",
56
+ beginBtn: "▶ Começar",
57
+ exitBtn: "✗ Sair",
58
+ footerText: "[Enter] Continuar/Concluir [Esc] Voltar/Sair [C] Console [S/V/M/A/R] Tab [Q] Sair",
59
+ customizationTool: "Ferramenta de Personalização",
60
+ quitLabel: "[Q] Sair",
61
+ tabInstall: "Instalar",
62
+ tabSettings: "Configurações",
63
+ tabVoices: "Vozes",
64
+ tabMusic: "Música",
65
+ tabBmad: "BMad",
66
+ tabReceiver: "Receptor",
67
+ tabReadme: "Leiame",
68
+ tabHelp: "Ajuda",
69
+ subTabVoice: " [V] Voz ",
70
+ subTabEffects: " [E] Efeitos ",
71
+ subTabPersonality: " [P] Personalidade ",
72
+ subTabOutput: " [O] Saída ",
73
+ subTabLanguage: " [L] Idioma ",
74
+ sectionProviderVoice: " 🎤 Provedor e Voz ",
75
+ sectionAudioEffects: " ⚡ Efeitos de Áudio ",
76
+ sectionBgMusic: " 🎸 Música de Fundo ",
77
+ sectionStyle: " 🎭 Estilo ",
78
+ sectionIntroText: " ✍️ Texto de Intro ",
79
+ sectionAudioDest: " 📡 Destino de Áudio ",
80
+ sectionConfigStorage: " 💾 Armazenamento de Config ",
81
+ sectionLanguage: " 🌐 Idioma ",
82
+ providerRowLabel: "Provedor:",
83
+ currentVoiceLabel: "Voz Atual:",
84
+ reverbLabel: "Reverb:",
85
+ trackLabel: "Faixa:",
86
+ volumeLabel: "Volume:",
87
+ verbosityLabel: "Verbosidade:",
88
+ personalityLabel: "Personalidade:",
89
+ introTextRowLabel: "Texto Intro:",
90
+ destinationLabel: "Destino:",
91
+ sshAliasLabel: "Alias SSH:",
92
+ globalLabel: "Global:",
93
+ localLabel: "Local:",
94
+ languageLabel: "Idioma:",
95
+ switchBtn: "Trocar",
96
+ changeBtn: "Alterar",
97
+ playBtn: "▶ Reproduzir",
98
+ stopBtn: "■ Parar",
99
+ previewBtn: "▶ Visualizar",
100
+ fullPreviewBtn: "▶ Visualização Completa",
101
+ saveGloballyBtn: "Salvar Global",
102
+ saveLocallyBtn: "Salvar Local",
103
+ cancelChangesBtn: "Cancelar Alterações",
104
+ editBtn: "Editar",
105
+ clearBtn: "Limpar",
106
+ applyLanguageBtn: "✓ Aplicar Idioma",
107
+ enabledBtn: "Ativado",
108
+ disabledBtn: "Desativado",
109
+ okSaveBtn: "OK — Salvar",
110
+ enableBtn: "Ativar",
111
+ streamingTextBtn: "Apenas Texto Streaming ✓",
112
+ streamingPulseBtn: "Streaming Áudio Pulse",
113
+ continueArrowBtn: "Continuar →",
114
+ acceptInstallBtn: "✓ Aceitar e Instalar",
115
+ okDoneBtn: "✓ OK — Concluído",
116
+ doneCustomizeBtn: "✓ Concluído - Personalizar mais",
117
+ doneQuitBtn: "✕ Concluído - Sair",
118
+ editInstallBtn: "Editar",
119
+ musicDisabledMsg: "Música desativada. Ativar agora?",
120
+ settingsFooter: "[↑↓] Grupo [←→] Irmão/Sub-tab [Enter/Space] Ativar [Tab] Trocar Tab [Q] Sair",
121
+ voicesFooter: "[↑↓/jk] Navegar [Space] Visualizar [Enter] Selecionar [F] Favorito [/] Buscar",
122
+ musicFooter: "[↑↓/jk] Navegar [Space] Visualizar [Enter] Selecionar [M] Alternar [*] Favorito [F] Filtrar [Q] Sair",
123
+ helpFooter: "[↑↓/jk] Rolar [/] Buscar [PgUp/PgDn] Página [S/V/M/A/R] Tab [Q] Sair",
124
+ readmeFooter: "[↑↓/jk] Rolar [PgUp/PgDn] Página [/] Buscar [S/V/M/A/R] Tab [Q] Sair",
125
+ receiverFooter: "Receptor SSH [Q] Sair",
126
+ searchLabel: "Buscar:",
127
+ settingsSavedMsg: "Configurações Salvas",
128
+ changesRevertedMsg: "Alterações revertidas",
129
+ musicBuiltInHeader: "── Faixas Integradas ",
130
+ musicStatusHeader: "── Status da Música ",
131
+ musicStatusLabel: "Música:",
132
+ musicActiveTrack: "Faixa Ativa:",
133
+ musicFilterLabel: "Filtro:",
134
+ musicFilterAll: "Todos",
135
+ musicFilterFavs: "Favoritos",
136
+ musicToggleBtn: "[Ativar/Desativar Música]",
137
+ musicAddCustomBtn: "[Adicionar Faixa]",
138
+ voicesHeader: "── Vozes ",
139
+ voicesColName: "Nome",
140
+ voicesColGender: "Gênero",
141
+ voicesColProvider: "Provedor",
142
+ voicesInfoHeader: "── Info da Voz ",
143
+ voicesSwitchBtn: "[Trocar Voz]",
144
+ voicesFavoriteBtn: "[★ Favorito]",
145
+ voicesDownloadBtn: "[Baixar Voz]",
146
+ voicesRowHintInstalled: "[Space] Visualizar [Enter] Selecionar [*] Favorito",
147
+ voicesRowHintUninstalled: "[Enter] Baixar e instalar",
148
+ musicRowHint: "[Space] Reproduzir [Enter] Selecionar [*] Favorito",
149
+ musicHintText: "[Space] visualizar [Enter] definir faixa [*] favorito",
150
+ genderFemale: "Feminino",
151
+ genderMale: "Masculino",
152
+ voiceInfoVoice: "Voz:",
153
+ voiceInfoGender: "Gênero:",
154
+ voiceInfoLanguage: "Idioma:",
155
+ voiceInfoQuality: "Qualidade:",
156
+ voiceInfoProvider: "Provedor:",
157
+ voiceInfoId: "ID:",
158
+ voiceInfoSpeaker: "Locutor:",
159
+ voiceInfoModel: "Modelo:",
160
+ voiceInfoSpeakerId: "ID do Locutor:",
161
+ voiceInfoDownload: "⬇ Pressionar [Enter] para baixar e instalar",
162
+ voicePlaying: "(reproduzindo)",
163
+ bmadTitle: "🧙 Agentes BMAD",
164
+ bmadWhatIsHeader: "O que é BMAD?",
165
+ bmadDesc: "O Método BMad (Build More Architect Dreams) é um módulo de framework\nde desenvolvimento orientado por IA que ajuda você a construir software\nde ponta a ponta, da ideação à implementação agêntica. Fornece agentes IA\nespecializados, fluxos de trabalho guiados e planejamento inteligente.\n\nSe você está confortável trabalhando com assistentes de codificação IA\ncomo Claude, Cursor ou GitHub Copilot, você está pronto para começar.",
166
+ bmadInstallHeader: "Instalar BMAD no seu projeto:",
167
+ bmadLearnMoreHeader: "Saiba mais:",
168
+ bmadInstalledNote: "Uma vez que o BMAD estiver instalado, esta aba mostrará todos os seus\nagentes e permitirá personalizar a voz, pretexto, reverb, personalidade\ne música de fundo de cada agente independentemente.",
169
+ receiverWhatIsTitle: "O que é o Receptor SSH?",
170
+ receiverDesc: "O Receptor SSH permite que seus servidores remotos falem através desta\nmáquina. Quando um assistente de IA em um servidor remoto precisa\nreproduzir áudio TTS, ele envia o texto via SSH para esta máquina, que\ngera e reproduz o áudio pelos seus alto-falantes localmente.\n\nIA Remota ──[SSH]──► Esta Máquina ──[piper+sox+ffmpeg]──► Seus Alto-falantes",
171
+ helpSectionGlobal: "Atalhos Globais",
172
+ helpSectionNavigation: "Atalhos de Navegação",
173
+ helpSectionColors: "Guia de Cores das Abas",
174
+ helpQuit: "Sair do console",
175
+ helpForceQuit: "Forçar saída",
176
+ helpSwitchSettings: "Ir para aba Configurações",
177
+ helpSwitchVoices: "Ir para aba Vozes",
178
+ helpSwitchMusic: "Ir para aba Música",
179
+ helpSwitchReadme: "Ir para aba Readme",
180
+ helpSwitchHelp: "Ir para aba Ajuda",
181
+ helpSwitchInstall: "Ir para aba Instalar",
182
+ helpCloseModal: "Fechar modal / voltar",
183
+ helpNavigateLists: "Navegar listas",
184
+ helpSelectActivate: "Selecionar / ativar",
185
+ helpTogglePreview: "Alternar / visualizar",
186
+ helpNextButton: "Próximo botão",
187
+ helpPrevButton: "Botão anterior",
188
+ helpOpenSearch: "Abrir busca/filtro",
189
+ helpToggleFavFilter: "Alternar filtro de favoritos (Vozes/Música)",
190
+ helpToggleFav: "Alternar favorito (aba Música)",
191
+ helpToggleMusic: "Ativar/desativar música (aba Música)",
192
+ helpColorSettings: "Rodapé da aba Configurações",
193
+ helpColorVoices: "Rodapé da aba Vozes",
194
+ helpColorMusic: "Rodapé da aba Música",
195
+ helpColorReadme: "Rodapé da aba Readme",
196
+ helpColorHelp: "Rodapé da aba Ajuda",
197
+ helpColorInstall: "Rodapé da aba Instalar",
198
+ helpSearchLabel: "Buscar:",
199
+ readmeScrollMore: "↓ Role para mais conteúdo ↓",
200
+ readmeNotFound: "*(Nenhum README.md encontrado no diretório atual)*",
201
+ bmadFooterNobmad: "[Tab] Mudar Aba [Q] Sair",
202
+ bmadFooterBmad: "[↑↓/jk] Navegar [Space] Visualizar [Enter] Configurar [A] Auto-atribuir [B] Lote [X] Redefinir [Q] Sair",
203
203
  };
@@ -1,54 +1,54 @@
1
- /**
2
- * File: src/i18n/strings.js
3
- *
4
- * Internationalization strings for the AgentVibes installer TUI.
5
- * Supports: en, es, fr, de, pt, ja, hi, zh-CN, ko
6
- *
7
- * Usage:
8
- * import { t, SUPPORTED_LANGUAGES, strings } from './i18n/strings.js';
9
- * t('es', 'welcomeTitle') // => Spanish welcome title
10
- * t('xx', 'welcomeTitle') // => falls back to English
11
- */
12
-
13
- import en from './en.js';
14
- import es from './es.js';
15
- import fr from './fr.js';
16
- import de from './de.js';
17
- import pt from './pt.js';
18
- import ja from './ja.js';
19
- import hi from './hi.js';
20
- import zhCN from './zh-CN.js';
21
- import ko from './ko.js';
22
-
23
- export const strings = { en, es, fr, de, pt, ja, hi, 'zh-CN': zhCN, ko };
24
-
25
- /**
26
- * Translate a key for a given language, falling back to English.
27
- * @param {string} lang - Language code (e.g. 'es', 'zh-CN')
28
- * @param {string} key - String key to look up
29
- * @returns {string} Translated string, or English fallback, or the key itself
30
- */
31
- export function t(lang, key) {
32
- const langStrings = strings[lang];
33
- if (langStrings && langStrings[key] !== undefined) {
34
- return langStrings[key];
35
- }
36
- // Fall back to English
37
- return strings.en[key] !== undefined ? strings.en[key] : key;
38
- }
39
-
40
- /**
41
- * Supported languages for the language chooser UI.
42
- * Each entry has: value (language code), name (display label for inquirer)
43
- */
44
- export const SUPPORTED_LANGUAGES = [
45
- { value: 'en', name: '🇺🇸 English' },
46
- { value: 'es', name: '🇪🇸 Español (Spanish)' },
47
- { value: 'fr', name: '🇫🇷 Français (French)' },
48
- { value: 'de', name: '🇩🇪 Deutsch (German)' },
49
- { value: 'pt', name: '🇧🇷 Português (Portuguese)' },
50
- { value: 'ja', name: '🇯🇵 日本語 (Japanese)' },
51
- { value: 'hi', name: '🇮🇳 हिन्दी (Hindi)' },
52
- { value: 'zh-CN', name: '🇨🇳 中文 (Chinese Simplified)' },
53
- { value: 'ko', name: '🇰🇷 한국어 (Korean)' },
54
- ];
1
+ /**
2
+ * File: src/i18n/strings.js
3
+ *
4
+ * Internationalization strings for the AgentVibes installer TUI.
5
+ * Supports: en, es, fr, de, pt, ja, hi, zh-CN, ko
6
+ *
7
+ * Usage:
8
+ * import { t, SUPPORTED_LANGUAGES, strings } from './i18n/strings.js';
9
+ * t('es', 'welcomeTitle') // => Spanish welcome title
10
+ * t('xx', 'welcomeTitle') // => falls back to English
11
+ */
12
+
13
+ import en from './en.js';
14
+ import es from './es.js';
15
+ import fr from './fr.js';
16
+ import de from './de.js';
17
+ import pt from './pt.js';
18
+ import ja from './ja.js';
19
+ import hi from './hi.js';
20
+ import zhCN from './zh-CN.js';
21
+ import ko from './ko.js';
22
+
23
+ export const strings = { en, es, fr, de, pt, ja, hi, 'zh-CN': zhCN, ko };
24
+
25
+ /**
26
+ * Translate a key for a given language, falling back to English.
27
+ * @param {string} lang - Language code (e.g. 'es', 'zh-CN')
28
+ * @param {string} key - String key to look up
29
+ * @returns {string} Translated string, or English fallback, or the key itself
30
+ */
31
+ export function t(lang, key) {
32
+ const langStrings = strings[lang];
33
+ if (langStrings && langStrings[key] !== undefined) {
34
+ return langStrings[key];
35
+ }
36
+ // Fall back to English
37
+ return strings.en[key] !== undefined ? strings.en[key] : key;
38
+ }
39
+
40
+ /**
41
+ * Supported languages for the language chooser UI.
42
+ * Each entry has: value (language code), name (display label for inquirer)
43
+ */
44
+ export const SUPPORTED_LANGUAGES = [
45
+ { value: 'en', name: '🇺🇸 English' },
46
+ { value: 'es', name: '🇪🇸 Español (Spanish)' },
47
+ { value: 'fr', name: '🇫🇷 Français (French)' },
48
+ { value: 'de', name: '🇩🇪 Deutsch (German)' },
49
+ { value: 'pt', name: '🇧🇷 Português (Portuguese)' },
50
+ { value: 'ja', name: '🇯🇵 日本語 (Japanese)' },
51
+ { value: 'hi', name: '🇮🇳 हिन्दी (Hindi)' },
52
+ { value: 'zh-CN', name: '🇨🇳 中文 (Chinese Simplified)' },
53
+ { value: 'ko', name: '🇰🇷 한국어 (Korean)' },
54
+ ];