agentvibes 5.1.3 β†’ 5.2.0

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 (34) hide show
  1. package/.agentvibes/config.json +23 -13
  2. package/.claude/commands/agent-vibes/verbosity.md +98 -89
  3. package/.claude/config/audio-effects.cfg +6 -1
  4. package/.claude/hooks/bmad-speak.sh +2 -2
  5. package/.claude/hooks/piper-download-voices.sh +233 -225
  6. package/.claude/hooks/piper-installer.sh +1 -1
  7. package/.claude/hooks/piper-voice-manager.sh +125 -0
  8. package/.claude/hooks/play-tts-agentvibes-receiver-for-voiceless-connections.sh +97 -90
  9. package/.claude/hooks/play-tts-enhanced.sh +1 -1
  10. package/.claude/hooks/play-tts-piper.sh +16 -5
  11. package/.claude/hooks/play-tts-ssh-remote.sh +168 -167
  12. package/.claude/hooks/play-tts.sh +31 -9
  13. package/.claude/hooks/session-start-tts.sh +4 -1
  14. package/.claude/hooks/stop-tts.sh +1 -1
  15. package/.claude/hooks/verbosity-manager.sh +185 -178
  16. package/.claude/hooks-windows/download-extra-voices.ps1 +243 -185
  17. package/.claude/hooks-windows/play-tts-piper.ps1 +7 -2
  18. package/.claude/hooks-windows/play-tts.ps1 +219 -65
  19. package/.claude/hooks-windows/session-start-tts.ps1 +2 -1
  20. package/.claude/hooks-windows/verbosity-manager.ps1 +126 -119
  21. package/README.md +24 -1
  22. package/RELEASE_NOTES.md +113 -0
  23. package/bin/agentvibes-voice-browser.js +1939 -1840
  24. package/mcp-server/server.py +75 -25
  25. package/package.json +1 -1
  26. package/src/console/tabs/receiver-tab.js +1527 -1483
  27. package/src/console/tabs/settings-tab.js +2 -2
  28. package/src/console/tabs/setup-tab.js +122 -20
  29. package/src/console/tabs/voices-tab.js +130 -13
  30. package/src/i18n/en.js +202 -202
  31. package/src/installer.js +29 -25
  32. package/src/services/llm-provider-service.js +114 -11
  33. package/src/services/verbosity-service.js +159 -157
  34. package/templates/agentvibes-receiver.sh +3 -2
package/src/i18n/en.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: "Language applied",
4
- welcomeTitle: "Welcome to AgentVibes!",
5
- installDetails: "Installation Details",
6
- installLocation: "Install location",
7
- packageVersion: "Package version",
8
- readyToConfigure: "Ready to configure AgentVibes?",
9
- installationCancelled: "Installation cancelled.",
10
- startInstall: "Start Install",
11
- installationCancelledMsg: "Installation was cancelled by the user.",
12
- installedSuccess: "AgentVibes installed successfully!",
13
- installComplete: "Installation Complete",
14
- installationFailed: "Installation Failed",
15
- installing: "Installing AgentVibes...",
16
- providerLabel: "Provider",
17
- voiceLabel: "Voice",
18
- locationLabel: "Location",
19
- versionLabel: "Version",
20
- configurationSetup: "Configuration Setup",
21
- configurationIntro: "Please configure your AgentVibes installation.",
22
- navigationHint: "Use arrow keys to navigate between pages.",
23
- nonInteractiveDetected: "Non-interactive mode detected",
24
- installError: "Installation failed",
25
- continuePrompt: "Continue",
26
- cancelPrompt: "Cancel",
27
- setupWizard: "Setup Wizard",
28
- setupWizardSubtitle: "TTS for AI assistants with personality.",
29
- dependencyCheck: "Dependency Check",
30
- checkingDependencies: "Checking dependencies...",
31
- depColumn: "Dependency",
32
- statusColumn: "Status",
33
- installed: "Installed",
34
- notFound: "Not found",
35
- ffmpegMissing: "Not found (needed for background music)",
36
- ttsDetected: "TTS Providers Detected",
37
- noTtsFound: "No TTS provider found. Install Piper or Soprano first.",
38
- providerSelection: "Provider Selection",
39
- availableProviders: "Available TTS providers:",
40
- providerAndVoice: "Provider & Voice",
41
- voiceChangeHint: "(after installation, you can change in Settings)",
42
- introText: "Intro Text",
43
- introTextLabel: "Intro text",
44
- none: "none",
45
- example: "Example",
46
- screen1Hint: "Screen 1/5: Welcome | [←/β†’] Navigate | [Enter] Begin | [Esc] Exit",
47
- screen2Hint: "Screen 2/5: Dependencies | [←] Back | [Enter] Next",
48
- screen3Hint: "Screen 3/5: Provider | [←] Back | [↑↓] Choose | [Enter/β†’] Confirm & Continue",
49
- screen4Hint: "Screen 4/5: Config | [Esc] Back | [E] Edit | [↓] Accept & Install",
50
- screen5HintDone: "Screen 5/5: Complete | [Enter] OK β€” Done",
51
- screen5HintWait: "Screen 5/5: Installing... | Please wait",
52
- languageSettings: "Language",
53
- languageSettingsSubtitle: "Select interface language",
54
- currentLanguage: "Current language",
55
- changeLanguage: "Change language",
56
- beginBtn: "β–Ά Begin",
57
- exitBtn: "βœ— Exit",
58
- footerText: "[Enter] Continue/Finish [Esc] Back/Exit [C] Open Console [S/V/M/A/R] Tab [Q] Quit",
59
- customizationTool: "Customization Tool",
60
- quitLabel: "[Q] Quit",
61
- tabInstall: "Install",
62
- tabSettings: "Settings",
63
- tabVoices: "Voices",
64
- tabMusic: "Music",
65
- tabBmad: "BMad",
66
- tabReceiver: "Receiver",
67
- tabReadme: "Readme",
68
- tabHelp: "Help",
69
- subTabVoice: " [V] Voice ",
70
- subTabEffects: " [E] Effects ",
71
- subTabPersonality: " [P] Personality ",
72
- subTabOutput: " [O] Output ",
73
- subTabLanguage: " [L] Language ",
74
- sectionProviderVoice: " 🎀 Provider & Voice ",
75
- sectionAudioEffects: " ⚑ Audio Effects ",
76
- sectionBgMusic: " 🎸 Background Music ",
77
- sectionStyle: " 🎭 Style ",
78
- sectionIntroText: " ✍️ Intro Text ",
79
- sectionAudioDest: " πŸ“‘ Audio Destination ",
80
- sectionConfigStorage: " πŸ’Ύ Config Storage ",
81
- sectionLanguage: " 🌐 Language ",
82
- providerRowLabel: "Provider:",
83
- currentVoiceLabel: "Current Voice:",
84
- reverbLabel: "Reverb:",
85
- trackLabel: "Track:",
86
- volumeLabel: "Volume:",
87
- verbosityLabel: "Verbosity:",
88
- personalityLabel: "Personality:",
89
- introTextRowLabel: "Intro Text:",
90
- destinationLabel: "Destination:",
91
- sshAliasLabel: "SSH Alias:",
92
- globalLabel: "Global:",
93
- localLabel: "Local:",
94
- languageLabel: "Language:",
95
- switchBtn: "Switch",
96
- changeBtn: "Change",
97
- playBtn: "β–Ά Play",
98
- stopBtn: "β–  Stop",
99
- previewBtn: "β–Ά Preview",
100
- fullPreviewBtn: "β–Ά Full Preview",
101
- saveGloballyBtn: "Save Globally",
102
- saveLocallyBtn: "Save Locally",
103
- cancelChangesBtn: "Cancel Changes",
104
- editBtn: "Edit",
105
- clearBtn: "Clear",
106
- applyLanguageBtn: "βœ“ Apply Language",
107
- enabledBtn: "Enabled",
108
- disabledBtn: "Disabled",
109
- okSaveBtn: "OK β€” Save",
110
- enableBtn: "Enable",
111
- streamingTextBtn: "Streaming Text Only βœ“",
112
- streamingPulseBtn: "Streaming Pulse Audio",
113
- continueArrowBtn: "Continue β†’",
114
- acceptInstallBtn: "βœ“ Accept & Install",
115
- okDoneBtn: "βœ“ OK β€” Done",
116
- doneCustomizeBtn: "βœ“ Done - Customize More",
117
- doneQuitBtn: "βœ• Done - Quit",
118
- editInstallBtn: "Edit",
119
- musicDisabledMsg: "Music is disabled. Enable it now?",
120
- settingsFooter: "[↑↓] Group [←→] Sibling/Sub-tab [Enter/Space] Activate [Tab] Switch Tab [Q] Quit",
121
- voicesFooter: "[↑↓/jk] Navigate [Space] Preview [Enter] Select/Install [F] Favorite [/] Search",
122
- musicFooter: "[↑↓/jk] Navigate [Space] Preview [Enter] Select [M] Toggle [*] Favorite [F] Filter [Q] Quit",
123
- helpFooter: "[↑↓/jk] Scroll [/] Search [PgUp/PgDn] Page [S/V/M/A/R] Tab [Q] Quit",
124
- readmeFooter: "[↑↓/jk] Scroll [PgUp/PgDn] Page [/] Search [S/V/M/A/R] Tab [Q] Quit",
125
- receiverFooter: "SSH Receiver [Q] Quit",
126
- searchLabel: "Search:",
127
- settingsSavedMsg: "Settings Saved",
128
- changesRevertedMsg: "Changes reverted",
129
- musicBuiltInHeader: "── Built-in Tracks ",
130
- musicStatusHeader: "── Music Status ",
131
- musicStatusLabel: "Music:",
132
- musicActiveTrack: "Active Track:",
133
- musicFilterLabel: "Filter:",
134
- musicFilterAll: "All",
135
- musicFilterFavs: "Favorites",
136
- musicToggleBtn: "[Toggle Music]",
137
- musicAddCustomBtn: "[Add Custom Track]",
138
- voicesHeader: "── Voices ",
139
- voicesColName: "Name",
140
- voicesColGender: "Gender",
141
- voicesColProvider: "Provider",
142
- voicesInfoHeader: "── Voice Info ",
143
- voicesSwitchBtn: "[Switch Voice]",
144
- voicesFavoriteBtn: "[β˜… Favorite]",
145
- voicesDownloadBtn: "[Download Voice]",
146
- voicesRowHintInstalled: "[Space] Preview [Enter] Select [*] Favorite",
147
- voicesRowHintUninstalled: "[Enter] Download & Install",
148
- musicRowHint: "[Space] Play [Enter] Select [*] Favorite",
149
- musicHintText: "[Space] preview [Enter] set as background track [*] favorite",
150
- genderFemale: "Female",
151
- genderMale: "Male",
152
- voiceInfoVoice: "Voice:",
153
- voiceInfoGender: "Gender:",
154
- voiceInfoLanguage: "Language:",
155
- voiceInfoQuality: "Quality:",
156
- voiceInfoProvider: "Provider:",
157
- voiceInfoId: "ID:",
158
- voiceInfoSpeaker: "Speaker:",
159
- voiceInfoModel: "Model:",
160
- voiceInfoSpeakerId: "Speaker ID:",
161
- voiceInfoDownload: "⬇ Press [Enter] to download and install",
162
- voicePlaying: "(playing)",
163
- bmadTitle: "πŸ§™ BMAD Agents",
164
- bmadWhatIsHeader: "What is BMAD?",
165
- bmadDesc: "The BMad Method (Build More Architect Dreams) is an AI-driven development\nframework module within the BMad Method Ecosystem that helps you build\nsoftware through the whole process from ideation and planning all the way\nthrough agentic implementation. It provides specialized AI agents, guided\nworkflows, and intelligent planning that adapts to your project's\ncomplexity, whether you're fixing a bug or building an enterprise platform.\n\nIf you're comfortable working with AI coding assistants like Claude,\nCursor, or GitHub Copilot, you're ready to get started.",
166
- bmadInstallHeader: "Install BMAD in your project:",
167
- bmadLearnMoreHeader: "Learn more:",
168
- bmadInstalledNote: "Once BMAD is installed, this tab will show all your agents and let you\ncustomize each agent's voice, pretext, reverb, personality, and background\nmusic independently.",
169
- receiverWhatIsTitle: "What is SSH Receiver?",
170
- receiverDesc: "SSH Receiver lets your remote servers speak through this machine.\nWhen an AI assistant on a remote server (VPS, cloud, dev box) needs\nto play TTS audio, it sends the text over SSH to this machine, which\ngenerates and plays the audio through your speakers locally.\n\nRemote AI ──[SSH]──► This Machine ──[piper+sox+ffmpeg]──► Your Speakers",
171
- helpSectionGlobal: "Global Shortcuts",
172
- helpSectionNavigation: "Navigation Shortcuts",
173
- helpSectionColors: "Tab Color Guide",
174
- helpQuit: "Quit the console",
175
- helpForceQuit: "Force quit",
176
- helpSwitchSettings: "Switch to Settings tab",
177
- helpSwitchVoices: "Switch to Voices tab",
178
- helpSwitchMusic: "Switch to Music tab",
179
- helpSwitchReadme: "Switch to Readme tab",
180
- helpSwitchHelp: "Switch to Help tab",
181
- helpSwitchInstall: "Switch to Install tab",
182
- helpCloseModal: "Close modal / go back",
183
- helpNavigateLists: "Navigate lists",
184
- helpSelectActivate: "Select / activate",
185
- helpTogglePreview: "Toggle / preview",
186
- helpNextButton: "Next button",
187
- helpPrevButton: "Previous button",
188
- helpOpenSearch: "Open search/filter",
189
- helpToggleFavFilter: "Toggle favorites filter (Voices/Music)",
190
- helpToggleFav: "Toggle favorite (Music tab)",
191
- helpToggleMusic: "Toggle music on/off (Music tab)",
192
- helpColorSettings: "Settings tab footer",
193
- helpColorVoices: "Voices tab footer",
194
- helpColorMusic: "Music tab footer",
195
- helpColorReadme: "Readme tab footer",
196
- helpColorHelp: "Help tab footer",
197
- helpColorInstall: "Install tab footer",
198
- helpSearchLabel: "Search:",
199
- readmeScrollMore: "↓ Scroll for more content ↓",
200
- readmeNotFound: "*(No README.md found in current directory)*",
201
- bmadFooterNobmad: "[Tab] Switch Tab [Q] Quit",
202
- bmadFooterBmad: "[↑↓/jk] Navigate [Space] Preview [Enter] Configure [A] Auto-assign [B] Bulk [X] Reset [Q] Quit",
1
+ export default {
2
+ languageSelectTitle: "🌐 Select Language / Seleccionar Idioma / Choisir la langue / Sprache wΓ€hlen / Selecionar Idioma / 言θͺžγ‚’ιΈζŠž / ΰ€­ΰ€Ύΰ€·ΰ€Ύ ΰ€šΰ₯ΰ€¨ΰ₯‡ΰ€‚ / 选择语言 / μ–Έμ–΄ 선택",
3
+ languageApplied: "Language applied",
4
+ welcomeTitle: "Welcome to AgentVibes!",
5
+ installDetails: "Installation Details",
6
+ installLocation: "Install location",
7
+ packageVersion: "Package version",
8
+ readyToConfigure: "Ready to configure AgentVibes?",
9
+ installationCancelled: "Installation cancelled.",
10
+ startInstall: "Start Install",
11
+ installationCancelledMsg: "Installation was cancelled by the user.",
12
+ installedSuccess: "AgentVibes installed successfully!",
13
+ installComplete: "Installation Complete",
14
+ installationFailed: "Installation Failed",
15
+ installing: "Installing AgentVibes...",
16
+ providerLabel: "Provider",
17
+ voiceLabel: "Voice",
18
+ locationLabel: "Location",
19
+ versionLabel: "Version",
20
+ configurationSetup: "Configuration Setup",
21
+ configurationIntro: "Please configure your AgentVibes installation.",
22
+ navigationHint: "Use arrow keys to navigate between pages.",
23
+ nonInteractiveDetected: "Non-interactive mode detected",
24
+ installError: "Installation failed",
25
+ continuePrompt: "Continue",
26
+ cancelPrompt: "Cancel",
27
+ setupWizard: "Setup Wizard",
28
+ setupWizardSubtitle: "TTS for AI assistants with personality.",
29
+ dependencyCheck: "Dependency Check",
30
+ checkingDependencies: "Checking dependencies...",
31
+ depColumn: "Dependency",
32
+ statusColumn: "Status",
33
+ installed: "Installed",
34
+ notFound: "Not found",
35
+ ffmpegMissing: "Not found (needed for background music)",
36
+ ttsDetected: "TTS Providers Detected",
37
+ noTtsFound: "No TTS provider found. Install Piper or Soprano first.",
38
+ providerSelection: "Provider Selection",
39
+ availableProviders: "Available TTS providers:",
40
+ providerAndVoice: "Provider & Voice",
41
+ voiceChangeHint: "(after installation, you can change in Settings)",
42
+ introText: "Intro Text",
43
+ introTextLabel: "Intro text",
44
+ none: "none",
45
+ example: "Example",
46
+ screen1Hint: "Screen 1/5: Welcome | [←/β†’] Navigate | [Enter] Begin | [Esc] Exit",
47
+ screen2Hint: "Screen 2/5: Dependencies | [←] Back | [Enter] Next",
48
+ screen3Hint: "Screen 3/5: Provider | [←] Back | [↑↓] Choose | [Enter/β†’] Confirm & Continue",
49
+ screen4Hint: "Screen 4/5: Config | [Esc] Back | [E] Edit | [↓] Accept & Install",
50
+ screen5HintDone: "Screen 5/5: Complete | [Enter] OK β€” Done",
51
+ screen5HintWait: "Screen 5/5: Installing... | Please wait",
52
+ languageSettings: "Language",
53
+ languageSettingsSubtitle: "Select interface language",
54
+ currentLanguage: "Current language",
55
+ changeLanguage: "Change language",
56
+ beginBtn: "β–Ά Begin",
57
+ exitBtn: "βœ— Exit",
58
+ footerText: "[Enter] Continue/Finish [Esc] Back/Exit [C] Open Console [S/V/M/A/R] Tab [Q] Quit",
59
+ customizationTool: "Customization Tool",
60
+ quitLabel: "[Q] Quit",
61
+ tabInstall: "Install",
62
+ tabSettings: "Settings",
63
+ tabVoices: "Voices",
64
+ tabMusic: "Music",
65
+ tabBmad: "BMad",
66
+ tabReceiver: "Receiver",
67
+ tabReadme: "Readme",
68
+ tabHelp: "Help",
69
+ subTabVoice: " [V] Voice ",
70
+ subTabEffects: " [E] Effects ",
71
+ subTabPersonality: " [P] Personality ",
72
+ subTabOutput: " [O] Output ",
73
+ subTabLanguage: " [L] Language ",
74
+ sectionProviderVoice: " 🎀 Provider & Voice ",
75
+ sectionAudioEffects: " ⚑ Audio Effects ",
76
+ sectionBgMusic: " 🎸 Background Music ",
77
+ sectionStyle: " 🎭 Style ",
78
+ sectionIntroText: " ✍️ Intro Text ",
79
+ sectionAudioDest: " πŸ“‘ Audio Destination ",
80
+ sectionConfigStorage: " πŸ’Ύ Config Storage ",
81
+ sectionLanguage: " 🌐 Language ",
82
+ providerRowLabel: "Provider:",
83
+ currentVoiceLabel: "Current Voice:",
84
+ reverbLabel: "Reverb:",
85
+ trackLabel: "Track:",
86
+ volumeLabel: "Volume:",
87
+ verbosityLabel: "Verbosity:",
88
+ personalityLabel: "Personality:",
89
+ introTextRowLabel: "Intro Text:",
90
+ destinationLabel: "Destination:",
91
+ sshAliasLabel: "SSH Alias:",
92
+ globalLabel: "Global:",
93
+ localLabel: "Local:",
94
+ languageLabel: "Language:",
95
+ switchBtn: "Switch",
96
+ changeBtn: "Change",
97
+ playBtn: "β–Ά Play",
98
+ stopBtn: "β–  Stop",
99
+ previewBtn: "β–Ά Preview",
100
+ fullPreviewBtn: "β–Ά Full Preview",
101
+ saveGloballyBtn: "Save Globally",
102
+ saveLocallyBtn: "Save Locally",
103
+ cancelChangesBtn: "Cancel Changes",
104
+ editBtn: "Edit",
105
+ clearBtn: "Clear",
106
+ applyLanguageBtn: "βœ“ Apply Language",
107
+ enabledBtn: "Enabled",
108
+ disabledBtn: "Disabled",
109
+ okSaveBtn: "OK β€” Save",
110
+ enableBtn: "Enable",
111
+ streamingTextBtn: "Streaming Text Only βœ“",
112
+ streamingPulseBtn: "Streaming Pulse Audio",
113
+ continueArrowBtn: "Continue β†’",
114
+ acceptInstallBtn: "βœ“ Accept & Install",
115
+ okDoneBtn: "βœ“ OK β€” Done",
116
+ doneCustomizeBtn: "βœ“ Done - Customize More",
117
+ doneQuitBtn: "βœ• Done - Quit",
118
+ editInstallBtn: "Edit",
119
+ musicDisabledMsg: "Music is disabled. Enable it now?",
120
+ settingsFooter: "[↑↓] Group [←→] Sibling/Sub-tab [Enter/Space] Activate [Tab] Switch Tab [Q] Quit",
121
+ voicesFooter: "[↑↓/jk] Navigate [Space] Preview [Enter] Select/Install [F] Favorite [/] Search",
122
+ musicFooter: "[↑↓/jk] Navigate [Space] Preview [Enter] Select [M] Toggle [*] Favorite [F] Filter [Q] Quit",
123
+ helpFooter: "[↑↓/jk] Scroll [/] Search [PgUp/PgDn] Page [S/V/M/A/R] Tab [Q] Quit",
124
+ readmeFooter: "[↑↓/jk] Scroll [PgUp/PgDn] Page [/] Search [S/V/M/A/R] Tab [Q] Quit",
125
+ receiverFooter: "SSH Receiver [Q] Quit",
126
+ searchLabel: "Search:",
127
+ settingsSavedMsg: "Settings Saved",
128
+ changesRevertedMsg: "Changes reverted",
129
+ musicBuiltInHeader: "── Built-in Tracks ",
130
+ musicStatusHeader: "── Music Status ",
131
+ musicStatusLabel: "Music:",
132
+ musicActiveTrack: "Active Track:",
133
+ musicFilterLabel: "Filter:",
134
+ musicFilterAll: "All",
135
+ musicFilterFavs: "Favorites",
136
+ musicToggleBtn: "[Toggle Music]",
137
+ musicAddCustomBtn: "[Add Custom Track]",
138
+ voicesHeader: "── Voices ",
139
+ voicesColName: "Name",
140
+ voicesColGender: "Gender",
141
+ voicesColProvider: "Provider",
142
+ voicesInfoHeader: "── Voice Info ",
143
+ voicesSwitchBtn: "[Switch Voice]",
144
+ voicesFavoriteBtn: "[+ Thumbs Up]",
145
+ voicesDownloadBtn: "[Download Voice]",
146
+ voicesRowHintInstalled: "[Space] Preview [Enter] Select [+/*] Up [-] Down",
147
+ voicesRowHintUninstalled: "[Enter] Download & Install",
148
+ musicRowHint: "[Space] Play [Enter] Select [+/*] Favorite",
149
+ musicHintText: "[Space] preview [Enter] set as background track [+/*] favorite",
150
+ genderFemale: "Female",
151
+ genderMale: "Male",
152
+ voiceInfoVoice: "Voice:",
153
+ voiceInfoGender: "Gender:",
154
+ voiceInfoLanguage: "Language:",
155
+ voiceInfoQuality: "Quality:",
156
+ voiceInfoProvider: "Provider:",
157
+ voiceInfoId: "ID:",
158
+ voiceInfoSpeaker: "Speaker:",
159
+ voiceInfoModel: "Model:",
160
+ voiceInfoSpeakerId: "Speaker ID:",
161
+ voiceInfoDownload: "⬇ Press [Enter] to download and install",
162
+ voicePlaying: "(playing)",
163
+ bmadTitle: "πŸ§™ BMAD Agents",
164
+ bmadWhatIsHeader: "What is BMAD?",
165
+ bmadDesc: "The BMad Method (Build More Architect Dreams) is an AI-driven development\nframework module within the BMad Method Ecosystem that helps you build\nsoftware through the whole process from ideation and planning all the way\nthrough agentic implementation. It provides specialized AI agents, guided\nworkflows, and intelligent planning that adapts to your project's\ncomplexity, whether you're fixing a bug or building an enterprise platform.\n\nIf you're comfortable working with AI coding assistants like Claude,\nCursor, or GitHub Copilot, you're ready to get started.",
166
+ bmadInstallHeader: "Install BMAD in your project:",
167
+ bmadLearnMoreHeader: "Learn more:",
168
+ bmadInstalledNote: "Once BMAD is installed, this tab will show all your agents and let you\ncustomize each agent's voice, pretext, reverb, personality, and background\nmusic independently.",
169
+ receiverWhatIsTitle: "What is SSH Receiver?",
170
+ receiverDesc: "SSH Receiver lets your remote servers speak through this machine.\nWhen an AI assistant on a remote server (VPS, cloud, dev box) needs\nto play TTS audio, it sends the text over SSH to this machine, which\ngenerates and plays the audio through your speakers locally.\n\nRemote AI ──[SSH]──► This Machine ──[piper+sox+ffmpeg]──► Your Speakers",
171
+ helpSectionGlobal: "Global Shortcuts",
172
+ helpSectionNavigation: "Navigation Shortcuts",
173
+ helpSectionColors: "Tab Color Guide",
174
+ helpQuit: "Quit the console",
175
+ helpForceQuit: "Force quit",
176
+ helpSwitchSettings: "Switch to Settings tab",
177
+ helpSwitchVoices: "Switch to Voices tab",
178
+ helpSwitchMusic: "Switch to Music tab",
179
+ helpSwitchReadme: "Switch to Readme tab",
180
+ helpSwitchHelp: "Switch to Help tab",
181
+ helpSwitchInstall: "Switch to Install tab",
182
+ helpCloseModal: "Close modal / go back",
183
+ helpNavigateLists: "Navigate lists",
184
+ helpSelectActivate: "Select / activate",
185
+ helpTogglePreview: "Toggle / preview",
186
+ helpNextButton: "Next button",
187
+ helpPrevButton: "Previous button",
188
+ helpOpenSearch: "Open search/filter",
189
+ helpToggleFavFilter: "Toggle favorites filter (Voices/Music)",
190
+ helpToggleFav: "Toggle favorite (Music tab)",
191
+ helpToggleMusic: "Toggle music on/off (Music tab)",
192
+ helpColorSettings: "Settings tab footer",
193
+ helpColorVoices: "Voices tab footer",
194
+ helpColorMusic: "Music tab footer",
195
+ helpColorReadme: "Readme tab footer",
196
+ helpColorHelp: "Help tab footer",
197
+ helpColorInstall: "Install tab footer",
198
+ helpSearchLabel: "Search:",
199
+ readmeScrollMore: "↓ Scroll for more content ↓",
200
+ readmeNotFound: "*(No README.md found in current directory)*",
201
+ bmadFooterNobmad: "[Tab] Switch Tab [Q] Quit",
202
+ bmadFooterBmad: "[↑↓/jk] Navigate [Space] Preview [Enter] Configure [A] Auto-assign [B] Bulk [X] Reset [Q] Quit",
203
203
  };
package/src/installer.js CHANGED
@@ -4298,14 +4298,17 @@ async function handleMcpConfiguration(targetDir, options) {
4298
4298
  const mcpConfigPath = path.join(targetDir, '.mcp.json');
4299
4299
 
4300
4300
  // MCP server configuration for AgentVibes.
4301
- // The AGENTVIBES_LLM env var tells the MCP server which LLM is calling
4302
- // so per-LLM voice / pretext / music / effects routing works correctly.
4301
+ //
4302
+ // No `env.AGENTVIBES_LLM` block: GitHub Copilot CLI also reads project
4303
+ // `.mcp.json` with precedence over its own `~/.copilot/mcp-config.json`,
4304
+ // so setting `claude-code` here would mis-route Copilot CLI too.
4305
+ // Instead, the MCP server auto-detects Claude Code via the `CLAUDECODE=1`
4306
+ // env var that Claude Code sets on every subprocess it spawns.
4303
4307
  const mcpConfig = {
4304
4308
  mcpServers: {
4305
4309
  agentvibes: {
4306
4310
  command: 'npx',
4307
- args: ['-y', '--package=agentvibes', 'agentvibes-mcp-server'],
4308
- env: { AGENTVIBES_LLM: 'claude-code' }
4311
+ args: ['-y', '--package=agentvibes', 'agentvibes-mcp-server']
4309
4312
  }
4310
4313
  }
4311
4314
  };
@@ -4320,10 +4323,13 @@ async function handleMcpConfiguration(targetDir, options) {
4320
4323
  }
4321
4324
 
4322
4325
  if (mcpExists) {
4323
- // Existing config: try to migrate it in-place so users upgrading from
4324
- // v5.1.x get the AGENTVIBES_LLM env var added without manual editing.
4325
- // This is the v5.1.2 follow-up fix β€” the prior version returned here
4326
- // and only printed instructions, leaving existing users broken.
4326
+ // Existing config: upgrade it in-place. Two jobs:
4327
+ // 1. Ensure the agentvibes server entry exists.
4328
+ // 2. STRIP any stale `env.AGENTVIBES_LLM` from earlier versions
4329
+ // (v5.1.2..v5.1.4) β€” setting it in `.mcp.json` broke Copilot CLI
4330
+ // routing because Copilot CLI also reads `.mcp.json` and would
4331
+ // adopt claude-code's env. Claude Code is now auto-detected
4332
+ // downstream via the CLAUDECODE=1 env var.
4327
4333
  let migrated = false;
4328
4334
  let migrationError = null;
4329
4335
  try {
@@ -4334,20 +4340,21 @@ async function handleMcpConfiguration(targetDir, options) {
4334
4340
  existingCfg.mcpServers = {};
4335
4341
  }
4336
4342
  const current = existingCfg.mcpServers.agentvibes;
4337
- const wantEnv = { AGENTVIBES_LLM: 'claude-code' };
4338
- // Decide whether we need to write β€” only if the agentvibes entry
4339
- // is missing OR its env doesn't include the AGENTVIBES_LLM key.
4340
- const needsWrite =
4341
- !current ||
4342
- !current.env ||
4343
- current.env.AGENTVIBES_LLM !== 'claude-code';
4343
+ const hasStaleEnv = current?.env?.AGENTVIBES_LLM !== undefined;
4344
+ const needsWrite = !current || hasStaleEnv;
4344
4345
  if (needsWrite) {
4345
- existingCfg.mcpServers.agentvibes = {
4346
+ // Preserve any OTHER env keys the user added manually (rare) but
4347
+ // drop AGENTVIBES_LLM so Copilot CLI doesn't mis-route.
4348
+ const cleanEnv = { ...(current?.env ?? {}) };
4349
+ delete cleanEnv.AGENTVIBES_LLM;
4350
+ const newEntry = {
4346
4351
  command: 'npx',
4347
4352
  args: ['-y', '--package=agentvibes', 'agentvibes-mcp-server'],
4348
- // Preserve any other env keys the user added manually.
4349
- env: { ...(current?.env ?? {}), ...wantEnv },
4350
4353
  };
4354
+ if (Object.keys(cleanEnv).length > 0) {
4355
+ newEntry.env = cleanEnv;
4356
+ }
4357
+ existingCfg.mcpServers.agentvibes = newEntry;
4351
4358
  await fs.writeFile(mcpConfigPath, JSON.stringify(existingCfg, null, 2) + '\n');
4352
4359
  migrated = true;
4353
4360
  }
@@ -4360,9 +4367,8 @@ async function handleMcpConfiguration(targetDir, options) {
4360
4367
  console.log(
4361
4368
  boxen(
4362
4369
  chalk.green.bold('βœ… MCP Configuration Updated\n\n') +
4363
- chalk.white('Your existing ') + chalk.cyan('.mcp.json') + chalk.white(' has been updated\n') +
4364
- chalk.white('with the AgentVibes MCP server entry, including the\n') +
4365
- chalk.cyan('AGENTVIBES_LLM=claude-code') + chalk.white(' env var for per-LLM routing.'),
4370
+ chalk.white('Your existing ') + chalk.cyan('.mcp.json') + chalk.white(' has been updated.\n') +
4371
+ chalk.white('Claude Code is auto-detected via ') + chalk.cyan('CLAUDECODE=1') + chalk.white(' at runtime.'),
4366
4372
  {
4367
4373
  padding: 1,
4368
4374
  margin: { top: 1, bottom: 1, left: 0, right: 0 },
@@ -4397,8 +4403,7 @@ async function handleMcpConfiguration(targetDir, options) {
4397
4403
  console.log(
4398
4404
  '\n"agentvibes": {\n' +
4399
4405
  ' "command": "npx",\n' +
4400
- ' "args": ["-y", "--package=agentvibes", "agentvibes-mcp-server"],\n' +
4401
- ' "env": { "AGENTVIBES_LLM": "claude-code" }\n' +
4406
+ ' "args": ["-y", "--package=agentvibes", "agentvibes-mcp-server"]\n' +
4402
4407
  '}\n'
4403
4408
  );
4404
4409
 
@@ -4503,8 +4508,7 @@ async function handleMcpConfiguration(targetDir, options) {
4503
4508
  ' "mcpServers": {\n' +
4504
4509
  ' "agentvibes": {\n' +
4505
4510
  ' "command": "npx",\n' +
4506
- ' "args": ["-y", "--package=agentvibes", "agentvibes-mcp-server"],\n' +
4507
- ' "env": { "AGENTVIBES_LLM": "claude-code" }\n' +
4511
+ ' "args": ["-y", "--package=agentvibes", "agentvibes-mcp-server"]\n' +
4508
4512
  ' }\n' +
4509
4513
  ' }\n' +
4510
4514
  '}\n'