agentvibes 5.9.0 → 5.10.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 (145) hide show
  1. package/.agentvibes/config.json +3 -12
  2. package/.claude/commands/agent-vibes-bmad-voices.md +117 -117
  3. package/.claude/commands/agent-vibes-rdp.md +24 -24
  4. package/.claude/config/audio-effects.cfg +4 -5
  5. package/.claude/config/audio-effects.cfg.sample +52 -52
  6. package/.claude/config/background-music-enabled.txt +1 -1
  7. package/.claude/docs/TERMUX_SETUP.md +408 -408
  8. package/.claude/github-star-reminder.txt +1 -1
  9. package/.claude/hooks/audio-cache-utils.sh +0 -0
  10. package/.claude/hooks/audio-processor.sh +0 -0
  11. package/.claude/hooks/background-music-manager.sh +0 -0
  12. package/.claude/hooks/bmad-party-speak.sh +0 -0
  13. package/.claude/hooks/bmad-speak-enhanced.sh +0 -0
  14. package/.claude/hooks/bmad-speak.sh +0 -0
  15. package/.claude/hooks/bmad-tts-injector.sh +0 -0
  16. package/.claude/hooks/bmad-voice-manager.sh +0 -0
  17. package/.claude/hooks/clawdbot-receiver-SECURE.sh +0 -0
  18. package/.claude/hooks/clawdbot-receiver.sh +0 -0
  19. package/.claude/hooks/clean-audio-cache.sh +0 -0
  20. package/.claude/hooks/cleanup-cache.sh +0 -0
  21. package/.claude/hooks/configure-rdp-mode.sh +0 -0
  22. package/.claude/hooks/download-extra-voices.sh +0 -0
  23. package/.claude/hooks/effects-manager.sh +0 -0
  24. package/.claude/hooks/github-star-reminder.sh +0 -0
  25. package/.claude/hooks/language-manager.sh +0 -0
  26. package/.claude/hooks/learn-manager.sh +0 -0
  27. package/.claude/hooks/macos-voice-manager.sh +0 -0
  28. package/.claude/hooks/migrate-background-music.sh +0 -0
  29. package/.claude/hooks/migrate-to-agentvibes.sh +0 -0
  30. package/.claude/hooks/optimize-background-music.sh +0 -0
  31. package/.claude/hooks/path-resolver.sh +0 -0
  32. package/.claude/hooks/personality-manager.sh +0 -0
  33. package/.claude/hooks/piper-download-voices.sh +0 -0
  34. package/.claude/hooks/piper-installer.sh +0 -0
  35. package/.claude/hooks/piper-multispeaker-registry.sh +0 -0
  36. package/.claude/hooks/piper-voice-manager.sh +0 -0
  37. package/.claude/hooks/play-tts-agentvibes-receiver-for-voiceless-connections.sh +0 -0
  38. package/.claude/hooks/play-tts-enhanced.sh +0 -0
  39. package/.claude/hooks/play-tts-macos.sh +0 -0
  40. package/.claude/hooks/play-tts-piper.sh +20 -13
  41. package/.claude/hooks/play-tts-soprano.sh +0 -0
  42. package/.claude/hooks/play-tts-ssh-remote.sh +0 -0
  43. package/.claude/hooks/play-tts-termux-ssh.sh +0 -0
  44. package/.claude/hooks/play-tts-windows-receiver.sh +0 -0
  45. package/.claude/hooks/play-tts.sh +0 -0
  46. package/.claude/hooks/prepare-release.sh +0 -0
  47. package/.claude/hooks/provider-commands.sh +0 -0
  48. package/.claude/hooks/provider-manager.sh +0 -0
  49. package/.claude/hooks/replay-target-audio.sh +0 -0
  50. package/.claude/hooks/requirements.txt +6 -6
  51. package/.claude/hooks/sentiment-manager.sh +0 -0
  52. package/.claude/hooks/session-start-tts.sh +0 -0
  53. package/.claude/hooks/soprano-gradio-synth.py +139 -139
  54. package/.claude/hooks/speed-manager.sh +0 -0
  55. package/.claude/hooks/stop-tts.sh +0 -0
  56. package/.claude/hooks/termux-installer.sh +0 -0
  57. package/.claude/hooks/translate-manager.sh +0 -0
  58. package/.claude/hooks/translator.py +237 -237
  59. package/.claude/hooks/tts-queue-worker.sh +0 -0
  60. package/.claude/hooks/tts-queue.sh +0 -0
  61. package/.claude/hooks/verbosity-manager.sh +0 -0
  62. package/.claude/hooks/voice-manager.sh +6 -0
  63. package/.claude/hooks-windows/play-tts-windows-piper.ps1 +22 -16
  64. package/.claude/hooks-windows/soprano-gradio-synth.py +153 -153
  65. package/.claude/verbosity.txt +1 -1
  66. package/.clawdbot/README.md +105 -105
  67. package/.mcp.json +19 -6
  68. package/README.md +1 -1
  69. package/WINDOWS-SETUP.md +208 -208
  70. package/bin/agent-vibes +39 -39
  71. package/bin/agentvibes-voice-browser.js +0 -0
  72. package/bin/agentvibes.js +0 -0
  73. package/bin/mcp-server.js +121 -121
  74. package/bin/mcp-server.sh +0 -0
  75. package/bin/test-bmad-pr +78 -78
  76. package/mcp-server/QUICK_START.md +203 -203
  77. package/mcp-server/README.md +345 -345
  78. package/mcp-server/WINDOWS_SETUP.md +0 -0
  79. package/mcp-server/examples/claude_desktop_config.json +11 -11
  80. package/mcp-server/examples/claude_desktop_config_piper.json +9 -9
  81. package/mcp-server/examples/custom_instructions.md +169 -169
  82. package/mcp-server/install-deps.js +0 -0
  83. package/mcp-server/server.py +1807 -1797
  84. package/mcp-server/test_server.py +0 -0
  85. package/package.json +2 -2
  86. package/src/cli/list-personalities.js +110 -110
  87. package/src/cli/list-voices.js +114 -114
  88. package/src/commands/bmad-voices.js +394 -394
  89. package/src/commands/install-mcp.js +730 -476
  90. package/src/console/app.js +3 -3
  91. package/src/console/brand-colors.js +13 -13
  92. package/src/console/constants/personalities.js +44 -44
  93. package/src/console/tabs/agents-tab.js +6 -6
  94. package/src/console/tabs/help-tab.js +314 -314
  95. package/src/console/tabs/music-tab.js +1 -1
  96. package/src/console/tabs/readme-tab.js +272 -272
  97. package/src/console/tabs/receiver-tab.js +13 -13
  98. package/src/console/tabs/settings-tab.js +2 -2
  99. package/src/console/tabs/setup-tab.js +10 -10
  100. package/src/console/tabs/voices-tab.js +4 -4
  101. package/src/console/widgets/destroy-list.js +25 -25
  102. package/src/console/widgets/notice.js +55 -55
  103. package/src/console/widgets/personality-picker.js +2 -2
  104. package/src/console/widgets/reverb-picker.js +1 -1
  105. package/src/i18n/de.js +202 -202
  106. package/src/i18n/es.js +202 -202
  107. package/src/i18n/fr.js +202 -202
  108. package/src/i18n/hi.js +202 -202
  109. package/src/i18n/ja.js +202 -202
  110. package/src/i18n/ko.js +202 -202
  111. package/src/i18n/pt.js +202 -202
  112. package/src/i18n/strings.js +54 -54
  113. package/src/i18n/zh-CN.js +202 -202
  114. package/src/installer/language-screen.js +31 -31
  115. package/src/installer/music-file-input.js +304 -304
  116. package/src/installer.js +32 -27
  117. package/src/services/config-service.js +264 -264
  118. package/src/services/language-service.js +47 -47
  119. package/src/services/provider-service.js +143 -143
  120. package/src/services/tts-engine-service.js +2 -2
  121. package/src/utils/audio-duration-validator.js +298 -298
  122. package/src/utils/audio-format-validator.js +277 -277
  123. package/src/utils/dependency-checker.js +469 -469
  124. package/src/utils/file-ownership-verifier.js +358 -358
  125. package/src/utils/list-formatter.js +200 -194
  126. package/src/utils/music-file-validator.js +285 -285
  127. package/src/utils/platform-resolver.js +369 -0
  128. package/src/utils/preview-list-prompt.js +136 -136
  129. package/src/utils/provider-validator.js +9 -9
  130. package/src/utils/secure-music-storage.js +412 -412
  131. package/templates/agentvibes-receiver.sh +231 -231
  132. package/templates/audio/welcome-music.mp3 +0 -0
  133. package/.agentvibes/install-manifest.json +0 -330
  134. package/.claude/config/background-music-position.txt +0 -27
  135. package/.claude/config/background-music-volume.txt +0 -1
  136. package/.claude/config/background-music.cfg +0 -1
  137. package/.claude/config/background-music.txt +0 -1
  138. package/.claude/config/language.txt +0 -1
  139. package/.claude/config/reverb-level.txt +0 -1
  140. package/.claude/config/tts-speech-rate.txt +0 -1
  141. package/.claude/config/tts-verbosity.txt +0 -1
  142. package/.claude/hooks/play-tts-agentvibes-receiver.sh +0 -1
  143. package/.claude/hooks-windows/audio-cache-utils.ps1.user.bak +0 -119
  144. package/.claude/hooks-windows/soprano-gradio-synth.py.user.bak +0 -153
  145. package/.claude/piper-voices-dir.txt +0 -1
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
+ ];