agentvibes 5.6.0 → 5.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/.agentvibes/config.json +3 -38
  2. package/.claude/config/audio-effects.cfg +1 -1
  3. package/.claude/config/background-music-enabled.txt +1 -1
  4. package/.claude/config/background-music-position.txt +6 -6
  5. package/.claude/github-star-reminder.txt +1 -1
  6. package/.claude/hooks/play-tts-ssh-remote.sh +119 -42
  7. package/.claude/hooks/play-tts-windows-receiver.sh +31 -0
  8. package/.claude/hooks/stop.sh +2 -27
  9. package/.claude/hooks-windows/play-tts-windows-sapi.ps1 +108 -108
  10. package/.claude/hooks-windows/play-tts.ps1 +58 -8
  11. package/.claude/piper-voices-dir.txt +1 -1
  12. package/.clawdbot/skill/README.md +326 -0
  13. package/.mcp.json +17 -27
  14. package/README.md +15 -2
  15. package/RELEASE_NOTES.md +64 -0
  16. package/bin/agent-vibes +39 -39
  17. package/package.json +1 -1
  18. package/src/bmad-detector.js +71 -71
  19. package/src/cli/list-personalities.js +110 -110
  20. package/src/cli/list-voices.js +114 -114
  21. package/src/commands/bmad-voices.js +394 -394
  22. package/src/commands/install-mcp.js +476 -476
  23. package/src/console/brand-colors.js +13 -13
  24. package/src/console/constants/personalities.js +44 -44
  25. package/src/console/modals/modal-overlay.js +247 -247
  26. package/src/console/navigation.js +5 -1
  27. package/src/console/tabs/agents-tab.js +5 -5
  28. package/src/console/tabs/help-tab.js +314 -314
  29. package/src/console/tabs/readme-tab.js +272 -272
  30. package/src/console/tabs/setup-tab.js +32 -17
  31. package/src/console/tabs/voices-tab.js +2 -2
  32. package/src/console/widgets/destroy-list.js +25 -25
  33. package/src/console/widgets/notice.js +55 -55
  34. package/src/console/widgets/personality-picker.js +213 -213
  35. package/src/console/widgets/reverb-picker.js +97 -97
  36. package/src/console/widgets/track-picker.js +1 -1
  37. package/src/i18n/de.js +202 -202
  38. package/src/i18n/es.js +202 -202
  39. package/src/i18n/fr.js +202 -202
  40. package/src/i18n/hi.js +202 -202
  41. package/src/i18n/ja.js +202 -202
  42. package/src/i18n/ko.js +202 -202
  43. package/src/i18n/pt.js +202 -202
  44. package/src/i18n/strings.js +54 -54
  45. package/src/i18n/zh-CN.js +202 -202
  46. package/src/installer/language-screen.js +31 -31
  47. package/src/installer/music-file-input.js +304 -304
  48. package/src/services/agent-voice-store.js +420 -423
  49. package/src/services/config-service.js +264 -264
  50. package/src/services/language-service.js +47 -47
  51. package/src/services/llm-provider-service.js +11 -4
  52. package/src/services/navigation-service.js +34 -10
  53. package/src/services/provider-service.js +143 -143
  54. package/src/utils/audio-duration-validator.js +298 -298
  55. package/src/utils/audio-format-validator.js +277 -277
  56. package/src/utils/dependency-checker.js +469 -469
  57. package/src/utils/file-ownership-verifier.js +358 -358
  58. package/src/utils/list-formatter.js +194 -194
  59. package/src/utils/music-file-validator.js +285 -285
  60. package/src/utils/preview-list-prompt.js +136 -136
  61. package/src/utils/secure-music-storage.js +412 -412
  62. package/.agentvibes/LITE-MODE.md +0 -236
  63. package/.agentvibes/README.md +0 -136
  64. package/.agentvibes/backup/session-start-tts.sh.20251210_212814 +0 -141
  65. package/.agentvibes/backups/agents/analyst_20260204_144958.md +0 -78
  66. package/.agentvibes/backups/agents/architect_20260204_144958.md +0 -72
  67. package/.agentvibes/backups/agents/dev_20260204_144958.md +0 -74
  68. package/.agentvibes/backups/agents/pm_20260204_144958.md +0 -72
  69. package/.agentvibes/backups/agents/quick-flow-solo-dev_20260204_144958.md +0 -64
  70. package/.agentvibes/backups/agents/sm_20260204_144958.md +0 -87
  71. package/.agentvibes/backups/agents/tea_20260204_144958.md +0 -79
  72. package/.agentvibes/backups/agents/tech-writer_20260204_144958.md +0 -82
  73. package/.agentvibes/backups/agents/ux-designer_20260204_144958.md +0 -80
  74. package/.agentvibes/config/README-personality-defaults.md +0 -162
  75. package/.agentvibes/config/agentvibes.json +0 -1
  76. package/.agentvibes/config/mode.txt +0 -1
  77. package/.agentvibes/config/personality-voice-defaults.default.json +0 -21
  78. package/.agentvibes/config/save-audio.txt +0 -1
  79. package/.agentvibes/config/voice-metadata.json +0 -160
  80. package/.agentvibes/hooks/help.sh +0 -191
  81. package/.agentvibes/hooks/post-tool-use-lite.sh +0 -111
  82. package/.agentvibes/hooks/save-audio-manager.sh +0 -162
  83. package/.agentvibes/hooks/session-start-full-optimized.sh +0 -102
  84. package/.agentvibes/hooks/session-start-full.sh +0 -142
  85. package/.agentvibes/hooks/session-start-lite-v2.sh +0 -34
  86. package/.agentvibes/hooks/session-start-lite.sh +0 -29
  87. package/.agentvibes/hooks/stop-lite.sh +0 -115
  88. package/.agentvibes/hooks/switch-mode.sh +0 -215
  89. package/.agentvibes/output-styles/audio-summary.md +0 -30
  90. package/.claude/audio/voice-samples/piper/alan.wav +0 -0
  91. package/.claude/audio/voice-samples/piper/amy.wav +0 -0
  92. package/.claude/audio/voice-samples/piper/charlotte.wav +0 -0
  93. package/.claude/audio/voice-samples/piper/joe.wav +0 -0
  94. package/.claude/audio/voice-samples/piper/john.wav +0 -0
  95. package/.claude/audio/voice-samples/piper/katherine.wav +0 -0
  96. package/.claude/audio/voice-samples/piper/kristin.wav +0 -0
  97. package/.claude/audio/voice-samples/piper/linda.wav +0 -0
  98. package/.claude/audio/voice-samples/piper/marcus.wav +0 -0
  99. package/.claude/audio/voice-samples/piper/ryan.wav +0 -0
  100. package/.claude/hooks/post-response.sh +0 -41
  101. package/bin/ensure-soprano-running.sh +0 -43
package/src/i18n/zh-CN.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: "语言已应用",
4
- welcomeTitle: "欢迎使用 AgentVibes!",
5
- installDetails: "安装详情",
6
- installLocation: "安装位置",
7
- packageVersion: "包版本",
8
- readyToConfigure: "准备好配置 AgentVibes 了吗?",
9
- installationCancelled: "安装已取消。",
10
- startInstall: "开始安装",
11
- installationCancelledMsg: "安装已被用户取消。",
12
- installedSuccess: "AgentVibes 安装成功!",
13
- installComplete: "安装完成",
14
- installationFailed: "安装失败",
15
- installing: "正在安装 AgentVibes...",
16
- providerLabel: "提供商",
17
- voiceLabel: "语音",
18
- locationLabel: "位置",
19
- versionLabel: "版本",
20
- configurationSetup: "配置",
21
- configurationIntro: "请配置您的 AgentVibes 安装。",
22
- navigationHint: "使用方向键在页面之间导航。",
23
- nonInteractiveDetected: "检测到非交互模式",
24
- installError: "安装失败",
25
- continuePrompt: "继续",
26
- cancelPrompt: "取消",
27
- setupWizard: "安装向导",
28
- setupWizardSubtitle: "为AI助手提供个性化TTS。",
29
- dependencyCheck: "依赖项检查",
30
- checkingDependencies: "正在检查依赖项...",
31
- depColumn: "依赖项",
32
- statusColumn: "状态",
33
- installed: "已安装",
34
- notFound: "未找到",
35
- ffmpegMissing: "未找到(背景音乐所需)",
36
- ttsDetected: "已检测到TTS提供商",
37
- noTtsFound: "未找到TTS提供商。请先安装Piper或Soprano。",
38
- providerSelection: "提供商选择",
39
- availableProviders: "可用的TTS提供商:",
40
- providerAndVoice: "提供商和语音",
41
- voiceChangeHint: "(安装后可在设置中更改)",
42
- introText: "介绍文本",
43
- introTextLabel: "介绍文本",
44
- none: "无",
45
- example: "示例",
46
- screen1Hint: "屏幕1/5: 欢迎 | [←/→] 导航 | [Enter] 开始 | [Esc] 退出",
47
- screen2Hint: "屏幕2/5: 依赖项 | [←] 返回 | [Enter] 下一步",
48
- screen3Hint: "屏幕3/5: 提供商 | [←] 返回 | [↑↓] 选择 | [Enter/→] 确认",
49
- screen4Hint: "屏幕4/5: 配置 | [Esc] 返回 | [E] 编辑 | [↓] 接受并安装",
50
- screen5HintDone: "屏幕5/5: 完成 | [Enter] 确定 — 完成",
51
- screen5HintWait: "屏幕5/5: 安装中... | 请稍候",
52
- languageSettings: "语言",
53
- languageSettingsSubtitle: "选择界面语言",
54
- currentLanguage: "当前语言",
55
- changeLanguage: "更改语言",
56
- beginBtn: "▶ 开始",
57
- exitBtn: "✗ 退出",
58
- footerText: "[Enter] 继续/完成 [Esc] 返回/退出 [C] 控制台 [S/V/M/A/R] 标签 [Q] 退出",
59
- customizationTool: "定制工具",
60
- quitLabel: "[Q] 退出",
61
- tabInstall: "安装",
62
- tabSettings: "设置",
63
- tabVoices: "语音",
64
- tabMusic: "音乐",
65
- tabBmad: "BMad",
66
- tabReceiver: "接收器",
67
- tabReadme: "说明",
68
- tabHelp: "帮助",
69
- subTabVoice: " [V] 语音 ",
70
- subTabEffects: " [E] 效果 ",
71
- subTabPersonality: " [P] 个性 ",
72
- subTabOutput: " [O] 输出 ",
73
- subTabLanguage: " [L] 语言 ",
74
- sectionProviderVoice: " 🎤 提供商与语音 ",
75
- sectionAudioEffects: " ⚡ 音频效果 ",
76
- sectionBgMusic: " 🎸 背景音乐 ",
77
- sectionStyle: " 🎭 风格 ",
78
- sectionIntroText: " ✍️ 介绍文本 ",
79
- sectionAudioDest: " 📡 音频目标 ",
80
- sectionConfigStorage: " 💾 配置存储 ",
81
- sectionLanguage: " 🌐 语言 ",
82
- providerRowLabel: "提供商:",
83
- currentVoiceLabel: "当前语音:",
84
- reverbLabel: "混响:",
85
- trackLabel: "曲目:",
86
- volumeLabel: "音量:",
87
- verbosityLabel: "详细度:",
88
- personalityLabel: "个性:",
89
- introTextRowLabel: "介绍文本:",
90
- destinationLabel: "目标:",
91
- sshAliasLabel: "SSH别名:",
92
- globalLabel: "全局:",
93
- localLabel: "本地:",
94
- languageLabel: "语言:",
95
- switchBtn: "切换",
96
- changeBtn: "更改",
97
- playBtn: "▶ 播放",
98
- stopBtn: "■ 停止",
99
- previewBtn: "▶ 预览",
100
- fullPreviewBtn: "▶ 完整预览",
101
- saveGloballyBtn: "全局保存",
102
- saveLocallyBtn: "本地保存",
103
- cancelChangesBtn: "取消更改",
104
- editBtn: "编辑",
105
- clearBtn: "清除",
106
- applyLanguageBtn: "✓ 应用语言",
107
- enabledBtn: "已启用",
108
- disabledBtn: "已禁用",
109
- okSaveBtn: "OK — 保存",
110
- enableBtn: "启用",
111
- streamingTextBtn: "仅文本流 ✓",
112
- streamingPulseBtn: "Pulse音频流",
113
- continueArrowBtn: "继续 →",
114
- acceptInstallBtn: "✓ 接受并安装",
115
- okDoneBtn: "✓ OK — 完成",
116
- doneCustomizeBtn: "✓ 完成 - 更多自定义",
117
- doneQuitBtn: "✕ 完成 - 退出",
118
- editInstallBtn: "编辑",
119
- musicDisabledMsg: "音乐已禁用。现在启用?",
120
- settingsFooter: "[↑↓] 组 [←→] 兄弟/子标签 [Enter/Space] 激活 [Tab] 切换标签 [Q] 退出",
121
- voicesFooter: "[↑↓/jk] 导航 [Space] 预览 [Enter] 选择 [F] 收藏 [/] 搜索",
122
- musicFooter: "[↑↓/jk] 导航 [Space] 预览 [Enter] 选择 [M] 切换 [*] 收藏 [F] 筛选 [Q] 退出",
123
- helpFooter: "[↑↓/jk] 滚动 [/] 搜索 [PgUp/PgDn] 翻页 [S/V/M/A/R] 标签 [Q] 退出",
124
- readmeFooter: "[↑↓/jk] 滚动 [PgUp/PgDn] 翻页 [/] 搜索 [S/V/M/A/R] 标签 [Q] 退出",
125
- receiverFooter: "SSH接收器 [Q] 退出",
126
- searchLabel: "搜索:",
127
- settingsSavedMsg: "设置已保存",
128
- changesRevertedMsg: "更改已撤销",
129
- musicBuiltInHeader: "── 内置音轨 ",
130
- musicStatusHeader: "── 音乐状态 ",
131
- musicStatusLabel: "音乐:",
132
- musicActiveTrack: "当前音轨:",
133
- musicFilterLabel: "过滤:",
134
- musicFilterAll: "全部",
135
- musicFilterFavs: "收藏",
136
- musicToggleBtn: "[切换音乐]",
137
- musicAddCustomBtn: "[添加自定义音轨]",
138
- voicesHeader: "── 语音 ",
139
- voicesColName: "名称",
140
- voicesColGender: "性别",
141
- voicesColProvider: "提供者",
142
- voicesInfoHeader: "── 语音信息 ",
143
- voicesSwitchBtn: "[切换语音]",
144
- voicesFavoriteBtn: "[★ 收藏]",
145
- voicesDownloadBtn: "[下载语音]",
146
- voicesRowHintInstalled: "[Space] 预览 [Enter] 选择 [*] 收藏",
147
- voicesRowHintUninstalled: "[Enter] 下载并安装",
148
- musicRowHint: "[Space] 播放 [Enter] 选择 [*] 收藏",
149
- musicHintText: "[Space] 预览 [Enter] 设置音轨 [*] 收藏",
150
- genderFemale: "女性",
151
- genderMale: "男性",
152
- voiceInfoVoice: "语音:",
153
- voiceInfoGender: "性别:",
154
- voiceInfoLanguage: "语言:",
155
- voiceInfoQuality: "质量:",
156
- voiceInfoProvider: "提供者:",
157
- voiceInfoId: "ID:",
158
- voiceInfoSpeaker: "说话者:",
159
- voiceInfoModel: "模型:",
160
- voiceInfoSpeakerId: "说话者ID:",
161
- voiceInfoDownload: "⬇ 按[Enter]下载并安装",
162
- voicePlaying: "(播放中)",
163
- bmadTitle: "🧙 BMAD代理",
164
- bmadWhatIsHeader: "什么是BMAD?",
165
- bmadDesc: "BMad方法(Build More Architect Dreams)是一个AI驱动的开发框架模块,\n帮助您完成从构思规划到智能实现的整个软件开发过程。提供专业AI代理、\n引导式工作流程和智能规划。\n\n如果您习惯使用Claude、Cursor或GitHub Copilot等AI编程助手,\n您已经准备好开始了。",
166
- bmadInstallHeader: "在您的项目中安装BMAD:",
167
- bmadLearnMoreHeader: "了解更多:",
168
- bmadInstalledNote: "BMAD安装后,此标签页将显示您所有的代理,并允许您独立自定义每个代理\n的语音、前置文本、混响、个性和背景音乐。",
169
- receiverWhatIsTitle: "什么是SSH接收器?",
170
- receiverDesc: "SSH接收器让您的远程服务器通过这台机器发声。当远程服务器上的AI助手\n需要播放TTS音频时,它通过SSH将文本发送到这台机器,由这台机器生成\n并通过本地扬声器播放音频。\n\n远程AI ──[SSH]──► 这台机器 ──[piper+sox+ffmpeg]──► 您的扬声器",
171
- helpSectionGlobal: "全局快捷键",
172
- helpSectionNavigation: "导航快捷键",
173
- helpSectionColors: "标签颜色指南",
174
- helpQuit: "退出控制台",
175
- helpForceQuit: "强制退出",
176
- helpSwitchSettings: "切换到设置标签",
177
- helpSwitchVoices: "切换到语音标签",
178
- helpSwitchMusic: "切换到音乐标签",
179
- helpSwitchReadme: "切换到Readme标签",
180
- helpSwitchHelp: "切换到帮助标签",
181
- helpSwitchInstall: "切换到安装标签",
182
- helpCloseModal: "关闭对话框 / 返回",
183
- helpNavigateLists: "浏览列表",
184
- helpSelectActivate: "选择 / 激活",
185
- helpTogglePreview: "切换 / 预览",
186
- helpNextButton: "下一个按钮",
187
- helpPrevButton: "上一个按钮",
188
- helpOpenSearch: "打开搜索/筛选",
189
- helpToggleFavFilter: "切换收藏筛选(语音/音乐)",
190
- helpToggleFav: "切换收藏(音乐标签)",
191
- helpToggleMusic: "开启/关闭音乐(音乐标签)",
192
- helpColorSettings: "设置标签页脚",
193
- helpColorVoices: "语音标签页脚",
194
- helpColorMusic: "音乐标签页脚",
195
- helpColorReadme: "Readme标签页脚",
196
- helpColorHelp: "帮助标签页脚",
197
- helpColorInstall: "安装标签页脚",
198
- helpSearchLabel: "搜索:",
199
- readmeScrollMore: "↓ 向下滚动查看更多 ↓",
200
- readmeNotFound: "*(当前目录中未找到README.md)*",
201
- bmadFooterNobmad: "[Tab] 切换标签 [Q] 退出",
202
- bmadFooterBmad: "[↑↓/jk] 导航 [Space] 预览 [Enter] 配置 [A] 自动分配 [B] 批量 [X] 重置 [Q] 退出",
1
+ export default {
2
+ languageSelectTitle: "🌐 Select Language / Seleccionar Idioma / Choisir la langue / Sprache wählen / Selecionar Idioma / 言語を選択 / भाषा चुनें / 选择语言 / 언어 선택",
3
+ languageApplied: "语言已应用",
4
+ welcomeTitle: "欢迎使用 AgentVibes!",
5
+ installDetails: "安装详情",
6
+ installLocation: "安装位置",
7
+ packageVersion: "包版本",
8
+ readyToConfigure: "准备好配置 AgentVibes 了吗?",
9
+ installationCancelled: "安装已取消。",
10
+ startInstall: "开始安装",
11
+ installationCancelledMsg: "安装已被用户取消。",
12
+ installedSuccess: "AgentVibes 安装成功!",
13
+ installComplete: "安装完成",
14
+ installationFailed: "安装失败",
15
+ installing: "正在安装 AgentVibes...",
16
+ providerLabel: "提供商",
17
+ voiceLabel: "语音",
18
+ locationLabel: "位置",
19
+ versionLabel: "版本",
20
+ configurationSetup: "配置",
21
+ configurationIntro: "请配置您的 AgentVibes 安装。",
22
+ navigationHint: "使用方向键在页面之间导航。",
23
+ nonInteractiveDetected: "检测到非交互模式",
24
+ installError: "安装失败",
25
+ continuePrompt: "继续",
26
+ cancelPrompt: "取消",
27
+ setupWizard: "安装向导",
28
+ setupWizardSubtitle: "为AI助手提供个性化TTS。",
29
+ dependencyCheck: "依赖项检查",
30
+ checkingDependencies: "正在检查依赖项...",
31
+ depColumn: "依赖项",
32
+ statusColumn: "状态",
33
+ installed: "已安装",
34
+ notFound: "未找到",
35
+ ffmpegMissing: "未找到(背景音乐所需)",
36
+ ttsDetected: "已检测到TTS提供商",
37
+ noTtsFound: "未找到TTS提供商。请先安装Piper或Soprano。",
38
+ providerSelection: "提供商选择",
39
+ availableProviders: "可用的TTS提供商:",
40
+ providerAndVoice: "提供商和语音",
41
+ voiceChangeHint: "(安装后可在设置中更改)",
42
+ introText: "介绍文本",
43
+ introTextLabel: "介绍文本",
44
+ none: "无",
45
+ example: "示例",
46
+ screen1Hint: "屏幕1/5: 欢迎 | [←/→] 导航 | [Enter] 开始 | [Esc] 退出",
47
+ screen2Hint: "屏幕2/5: 依赖项 | [←] 返回 | [Enter] 下一步",
48
+ screen3Hint: "屏幕3/5: 提供商 | [←] 返回 | [↑↓] 选择 | [Enter/→] 确认",
49
+ screen4Hint: "屏幕4/5: 配置 | [Esc] 返回 | [E] 编辑 | [↓] 接受并安装",
50
+ screen5HintDone: "屏幕5/5: 完成 | [Enter] 确定 — 完成",
51
+ screen5HintWait: "屏幕5/5: 安装中... | 请稍候",
52
+ languageSettings: "语言",
53
+ languageSettingsSubtitle: "选择界面语言",
54
+ currentLanguage: "当前语言",
55
+ changeLanguage: "更改语言",
56
+ beginBtn: "▶ 开始",
57
+ exitBtn: "✗ 退出",
58
+ footerText: "[Enter] 继续/完成 [Esc] 返回/退出 [C] 控制台 [S/V/M/A/R] 标签 [Q] 退出",
59
+ customizationTool: "定制工具",
60
+ quitLabel: "[Q] 退出",
61
+ tabInstall: "安装",
62
+ tabSettings: "设置",
63
+ tabVoices: "语音",
64
+ tabMusic: "音乐",
65
+ tabBmad: "BMad",
66
+ tabReceiver: "接收器",
67
+ tabReadme: "说明",
68
+ tabHelp: "帮助",
69
+ subTabVoice: " [V] 语音 ",
70
+ subTabEffects: " [E] 效果 ",
71
+ subTabPersonality: " [P] 个性 ",
72
+ subTabOutput: " [O] 输出 ",
73
+ subTabLanguage: " [L] 语言 ",
74
+ sectionProviderVoice: " 🎤 提供商与语音 ",
75
+ sectionAudioEffects: " ⚡ 音频效果 ",
76
+ sectionBgMusic: " 🎸 背景音乐 ",
77
+ sectionStyle: " 🎭 风格 ",
78
+ sectionIntroText: " ✍️ 介绍文本 ",
79
+ sectionAudioDest: " 📡 音频目标 ",
80
+ sectionConfigStorage: " 💾 配置存储 ",
81
+ sectionLanguage: " 🌐 语言 ",
82
+ providerRowLabel: "提供商:",
83
+ currentVoiceLabel: "当前语音:",
84
+ reverbLabel: "混响:",
85
+ trackLabel: "曲目:",
86
+ volumeLabel: "音量:",
87
+ verbosityLabel: "详细度:",
88
+ personalityLabel: "个性:",
89
+ introTextRowLabel: "介绍文本:",
90
+ destinationLabel: "目标:",
91
+ sshAliasLabel: "SSH别名:",
92
+ globalLabel: "全局:",
93
+ localLabel: "本地:",
94
+ languageLabel: "语言:",
95
+ switchBtn: "切换",
96
+ changeBtn: "更改",
97
+ playBtn: "▶ 播放",
98
+ stopBtn: "■ 停止",
99
+ previewBtn: "▶ 预览",
100
+ fullPreviewBtn: "▶ 完整预览",
101
+ saveGloballyBtn: "全局保存",
102
+ saveLocallyBtn: "本地保存",
103
+ cancelChangesBtn: "取消更改",
104
+ editBtn: "编辑",
105
+ clearBtn: "清除",
106
+ applyLanguageBtn: "✓ 应用语言",
107
+ enabledBtn: "已启用",
108
+ disabledBtn: "已禁用",
109
+ okSaveBtn: "OK — 保存",
110
+ enableBtn: "启用",
111
+ streamingTextBtn: "仅文本流 ✓",
112
+ streamingPulseBtn: "Pulse音频流",
113
+ continueArrowBtn: "继续 →",
114
+ acceptInstallBtn: "✓ 接受并安装",
115
+ okDoneBtn: "✓ OK — 完成",
116
+ doneCustomizeBtn: "✓ 完成 - 更多自定义",
117
+ doneQuitBtn: "✕ 完成 - 退出",
118
+ editInstallBtn: "编辑",
119
+ musicDisabledMsg: "音乐已禁用。现在启用?",
120
+ settingsFooter: "[↑↓] 组 [←→] 兄弟/子标签 [Enter/Space] 激活 [Tab] 切换标签 [Q] 退出",
121
+ voicesFooter: "[↑↓/jk] 导航 [Space] 预览 [Enter] 选择 [F] 收藏 [/] 搜索",
122
+ musicFooter: "[↑↓/jk] 导航 [Space] 预览 [Enter] 选择 [M] 切换 [*] 收藏 [F] 筛选 [Q] 退出",
123
+ helpFooter: "[↑↓/jk] 滚动 [/] 搜索 [PgUp/PgDn] 翻页 [S/V/M/A/R] 标签 [Q] 退出",
124
+ readmeFooter: "[↑↓/jk] 滚动 [PgUp/PgDn] 翻页 [/] 搜索 [S/V/M/A/R] 标签 [Q] 退出",
125
+ receiverFooter: "SSH接收器 [Q] 退出",
126
+ searchLabel: "搜索:",
127
+ settingsSavedMsg: "设置已保存",
128
+ changesRevertedMsg: "更改已撤销",
129
+ musicBuiltInHeader: "── 内置音轨 ",
130
+ musicStatusHeader: "── 音乐状态 ",
131
+ musicStatusLabel: "音乐:",
132
+ musicActiveTrack: "当前音轨:",
133
+ musicFilterLabel: "过滤:",
134
+ musicFilterAll: "全部",
135
+ musicFilterFavs: "收藏",
136
+ musicToggleBtn: "[切换音乐]",
137
+ musicAddCustomBtn: "[添加自定义音轨]",
138
+ voicesHeader: "── 语音 ",
139
+ voicesColName: "名称",
140
+ voicesColGender: "性别",
141
+ voicesColProvider: "提供者",
142
+ voicesInfoHeader: "── 语音信息 ",
143
+ voicesSwitchBtn: "[切换语音]",
144
+ voicesFavoriteBtn: "[★ 收藏]",
145
+ voicesDownloadBtn: "[下载语音]",
146
+ voicesRowHintInstalled: "[Space] 预览 [Enter] 选择 [*] 收藏",
147
+ voicesRowHintUninstalled: "[Enter] 下载并安装",
148
+ musicRowHint: "[Space] 播放 [Enter] 选择 [*] 收藏",
149
+ musicHintText: "[Space] 预览 [Enter] 设置音轨 [*] 收藏",
150
+ genderFemale: "女性",
151
+ genderMale: "男性",
152
+ voiceInfoVoice: "语音:",
153
+ voiceInfoGender: "性别:",
154
+ voiceInfoLanguage: "语言:",
155
+ voiceInfoQuality: "质量:",
156
+ voiceInfoProvider: "提供者:",
157
+ voiceInfoId: "ID:",
158
+ voiceInfoSpeaker: "说话者:",
159
+ voiceInfoModel: "模型:",
160
+ voiceInfoSpeakerId: "说话者ID:",
161
+ voiceInfoDownload: "⬇ 按[Enter]下载并安装",
162
+ voicePlaying: "(播放中)",
163
+ bmadTitle: "🧙 BMAD代理",
164
+ bmadWhatIsHeader: "什么是BMAD?",
165
+ bmadDesc: "BMad方法(Build More Architect Dreams)是一个AI驱动的开发框架模块,\n帮助您完成从构思规划到智能实现的整个软件开发过程。提供专业AI代理、\n引导式工作流程和智能规划。\n\n如果您习惯使用Claude、Cursor或GitHub Copilot等AI编程助手,\n您已经准备好开始了。",
166
+ bmadInstallHeader: "在您的项目中安装BMAD:",
167
+ bmadLearnMoreHeader: "了解更多:",
168
+ bmadInstalledNote: "BMAD安装后,此标签页将显示您所有的代理,并允许您独立自定义每个代理\n的语音、前置文本、混响、个性和背景音乐。",
169
+ receiverWhatIsTitle: "什么是SSH接收器?",
170
+ receiverDesc: "SSH接收器让您的远程服务器通过这台机器发声。当远程服务器上的AI助手\n需要播放TTS音频时,它通过SSH将文本发送到这台机器,由这台机器生成\n并通过本地扬声器播放音频。\n\n远程AI ──[SSH]──► 这台机器 ──[piper+sox+ffmpeg]──► 您的扬声器",
171
+ helpSectionGlobal: "全局快捷键",
172
+ helpSectionNavigation: "导航快捷键",
173
+ helpSectionColors: "标签颜色指南",
174
+ helpQuit: "退出控制台",
175
+ helpForceQuit: "强制退出",
176
+ helpSwitchSettings: "切换到设置标签",
177
+ helpSwitchVoices: "切换到语音标签",
178
+ helpSwitchMusic: "切换到音乐标签",
179
+ helpSwitchReadme: "切换到Readme标签",
180
+ helpSwitchHelp: "切换到帮助标签",
181
+ helpSwitchInstall: "切换到安装标签",
182
+ helpCloseModal: "关闭对话框 / 返回",
183
+ helpNavigateLists: "浏览列表",
184
+ helpSelectActivate: "选择 / 激活",
185
+ helpTogglePreview: "切换 / 预览",
186
+ helpNextButton: "下一个按钮",
187
+ helpPrevButton: "上一个按钮",
188
+ helpOpenSearch: "打开搜索/筛选",
189
+ helpToggleFavFilter: "切换收藏筛选(语音/音乐)",
190
+ helpToggleFav: "切换收藏(音乐标签)",
191
+ helpToggleMusic: "开启/关闭音乐(音乐标签)",
192
+ helpColorSettings: "设置标签页脚",
193
+ helpColorVoices: "语音标签页脚",
194
+ helpColorMusic: "音乐标签页脚",
195
+ helpColorReadme: "Readme标签页脚",
196
+ helpColorHelp: "帮助标签页脚",
197
+ helpColorInstall: "安装标签页脚",
198
+ helpSearchLabel: "搜索:",
199
+ readmeScrollMore: "↓ 向下滚动查看更多 ↓",
200
+ readmeNotFound: "*(当前目录中未找到README.md)*",
201
+ bmadFooterNobmad: "[Tab] 切换标签 [Q] 退出",
202
+ bmadFooterBmad: "[↑↓/jk] 导航 [Space] 预览 [Enter] 配置 [A] 自动分配 [B] 批量 [X] 重置 [Q] 退出",
203
203
  };
@@ -1,31 +1,31 @@
1
- /**
2
- * File: src/installer/language-screen.js
3
- *
4
- * Language selection screen for the AgentVibes installer TUI.
5
- * Presents a list of supported languages and returns the selected code.
6
- */
7
-
8
- import inquirer from 'inquirer';
9
- import { t, SUPPORTED_LANGUAGES } from '../i18n/strings.js';
10
-
11
- /**
12
- * Show the language selection screen and return the chosen language code.
13
- *
14
- * @param {string} [currentLang='en'] - Currently active language code (used as default)
15
- * @returns {Promise<string>} The selected language code (e.g. 'es', 'zh-CN')
16
- */
17
- export async function selectLanguage(currentLang = 'en') {
18
- const { lang } = await inquirer.prompt([{
19
- type: 'list',
20
- name: 'lang',
21
- message: '🌐 Select Language / Seleccionar Idioma / Choisir la langue / Sprache wählen / Selecionar Idioma / 言語を選択 / भाषा चुनें / 选择语言 / 언어 선택',
22
- default: currentLang,
23
- choices: SUPPORTED_LANGUAGES
24
- }]);
25
-
26
- console.clear();
27
- const chosenName = SUPPORTED_LANGUAGES.find(l => l.value === lang)?.name ?? lang;
28
- console.log(`\u2713 ${t(lang, 'languageApplied')}: ${chosenName}\n`);
29
-
30
- return lang;
31
- }
1
+ /**
2
+ * File: src/installer/language-screen.js
3
+ *
4
+ * Language selection screen for the AgentVibes installer TUI.
5
+ * Presents a list of supported languages and returns the selected code.
6
+ */
7
+
8
+ import inquirer from 'inquirer';
9
+ import { t, SUPPORTED_LANGUAGES } from '../i18n/strings.js';
10
+
11
+ /**
12
+ * Show the language selection screen and return the chosen language code.
13
+ *
14
+ * @param {string} [currentLang='en'] - Currently active language code (used as default)
15
+ * @returns {Promise<string>} The selected language code (e.g. 'es', 'zh-CN')
16
+ */
17
+ export async function selectLanguage(currentLang = 'en') {
18
+ const { lang } = await inquirer.prompt([{
19
+ type: 'list',
20
+ name: 'lang',
21
+ message: '🌐 Select Language / Seleccionar Idioma / Choisir la langue / Sprache wählen / Selecionar Idioma / 言語を選択 / भाषा चुनें / 选择语言 / 언어 선택',
22
+ default: currentLang,
23
+ choices: SUPPORTED_LANGUAGES
24
+ }]);
25
+
26
+ console.clear();
27
+ const chosenName = SUPPORTED_LANGUAGES.find(l => l.value === lang)?.name ?? lang;
28
+ console.log(`\u2713 ${t(lang, 'languageApplied')}: ${chosenName}\n`);
29
+
30
+ return lang;
31
+ }