agentvibes 2.0.17-beta.2 → 2.0.17-beta.21
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.
- package/.bmad-core/agent-teams/team-all.yaml +15 -0
- package/.bmad-core/agent-teams/team-fullstack.yaml +19 -0
- package/.bmad-core/agent-teams/team-ide-minimal.yaml +11 -0
- package/.bmad-core/agent-teams/team-no-ui.yaml +14 -0
- package/.bmad-core/agents/analyst.md +84 -0
- package/.bmad-core/agents/architect.md +85 -0
- package/.bmad-core/agents/bmad-master.md +110 -0
- package/.bmad-core/agents/bmad-orchestrator.md +147 -0
- package/.bmad-core/agents/dev.md +81 -0
- package/.bmad-core/agents/pm.md +84 -0
- package/.bmad-core/agents/po.md +79 -0
- package/.bmad-core/agents/qa.md +87 -0
- package/.bmad-core/agents/sm.md +65 -0
- package/.bmad-core/agents/ux-expert.md +69 -0
- package/.bmad-core/checklists/architect-checklist.md +440 -0
- package/.bmad-core/checklists/change-checklist.md +184 -0
- package/.bmad-core/checklists/pm-checklist.md +372 -0
- package/.bmad-core/checklists/po-master-checklist.md +434 -0
- package/.bmad-core/checklists/story-dod-checklist.md +96 -0
- package/.bmad-core/checklists/story-draft-checklist.md +155 -0
- package/.bmad-core/core-config.yaml +22 -0
- package/.bmad-core/data/bmad-kb.md +809 -0
- package/.bmad-core/data/brainstorming-techniques.md +38 -0
- package/.bmad-core/data/elicitation-methods.md +156 -0
- package/.bmad-core/data/technical-preferences.md +5 -0
- package/.bmad-core/data/test-levels-framework.md +148 -0
- package/.bmad-core/data/test-priorities-matrix.md +174 -0
- package/.bmad-core/enhanced-ide-development-workflow.md +248 -0
- package/.bmad-core/install-manifest.yaml +230 -0
- package/.bmad-core/tasks/advanced-elicitation.md +119 -0
- package/.bmad-core/tasks/apply-qa-fixes.md +150 -0
- package/.bmad-core/tasks/brownfield-create-epic.md +162 -0
- package/.bmad-core/tasks/brownfield-create-story.md +149 -0
- package/.bmad-core/tasks/correct-course.md +72 -0
- package/.bmad-core/tasks/create-brownfield-story.md +314 -0
- package/.bmad-core/tasks/create-deep-research-prompt.md +280 -0
- package/.bmad-core/tasks/create-doc.md +103 -0
- package/.bmad-core/tasks/create-next-story.md +114 -0
- package/.bmad-core/tasks/document-project.md +345 -0
- package/.bmad-core/tasks/execute-checklist.md +88 -0
- package/.bmad-core/tasks/facilitate-brainstorming-session.md +138 -0
- package/.bmad-core/tasks/generate-ai-frontend-prompt.md +53 -0
- package/.bmad-core/tasks/index-docs.md +175 -0
- package/.bmad-core/tasks/kb-mode-interaction.md +77 -0
- package/.bmad-core/tasks/nfr-assess.md +345 -0
- package/.bmad-core/tasks/qa-gate.md +163 -0
- package/.bmad-core/tasks/review-story.md +316 -0
- package/.bmad-core/tasks/risk-profile.md +355 -0
- package/.bmad-core/tasks/shard-doc.md +187 -0
- package/.bmad-core/tasks/test-design.md +176 -0
- package/.bmad-core/tasks/trace-requirements.md +266 -0
- package/.bmad-core/tasks/validate-next-story.md +136 -0
- package/.bmad-core/templates/architecture-tmpl.yaml +651 -0
- package/.bmad-core/templates/brainstorming-output-tmpl.yaml +156 -0
- package/.bmad-core/templates/brownfield-architecture-tmpl.yaml +477 -0
- package/.bmad-core/templates/brownfield-prd-tmpl.yaml +281 -0
- package/.bmad-core/templates/competitor-analysis-tmpl.yaml +307 -0
- package/.bmad-core/templates/front-end-architecture-tmpl.yaml +219 -0
- package/.bmad-core/templates/front-end-spec-tmpl.yaml +350 -0
- package/.bmad-core/templates/fullstack-architecture-tmpl.yaml +824 -0
- package/.bmad-core/templates/market-research-tmpl.yaml +253 -0
- package/.bmad-core/templates/prd-tmpl.yaml +203 -0
- package/.bmad-core/templates/project-brief-tmpl.yaml +222 -0
- package/.bmad-core/templates/qa-gate-tmpl.yaml +103 -0
- package/.bmad-core/templates/story-tmpl.yaml +138 -0
- package/.bmad-core/user-guide.md +577 -0
- package/.bmad-core/utils/bmad-doc-template.md +327 -0
- package/.bmad-core/utils/workflow-management.md +71 -0
- package/.bmad-core/workflows/brownfield-fullstack.yaml +298 -0
- package/.bmad-core/workflows/brownfield-service.yaml +188 -0
- package/.bmad-core/workflows/brownfield-ui.yaml +198 -0
- package/.bmad-core/workflows/greenfield-fullstack.yaml +241 -0
- package/.bmad-core/workflows/greenfield-service.yaml +207 -0
- package/.bmad-core/workflows/greenfield-ui.yaml +236 -0
- package/.bmad-core/working-in-the-brownfield.md +606 -0
- package/.claude/commands/BMad/agents/analyst.md +88 -0
- package/.claude/commands/BMad/agents/architect.md +89 -0
- package/.claude/commands/BMad/agents/bmad-master.md +114 -0
- package/.claude/commands/BMad/agents/bmad-orchestrator.md +151 -0
- package/.claude/commands/BMad/agents/dev.md +85 -0
- package/.claude/commands/BMad/agents/pm.md +88 -0
- package/.claude/commands/BMad/agents/po.md +83 -0
- package/.claude/commands/BMad/agents/qa.md +91 -0
- package/.claude/commands/BMad/agents/sm.md +69 -0
- package/.claude/commands/BMad/agents/ux-expert.md +73 -0
- package/.claude/commands/BMad/tasks/advanced-elicitation.md +123 -0
- package/.claude/commands/BMad/tasks/apply-qa-fixes.md +154 -0
- package/.claude/commands/BMad/tasks/brownfield-create-epic.md +166 -0
- package/.claude/commands/BMad/tasks/brownfield-create-story.md +153 -0
- package/.claude/commands/BMad/tasks/correct-course.md +76 -0
- package/.claude/commands/BMad/tasks/create-brownfield-story.md +318 -0
- package/.claude/commands/BMad/tasks/create-deep-research-prompt.md +284 -0
- package/.claude/commands/BMad/tasks/create-doc.md +107 -0
- package/.claude/commands/BMad/tasks/create-next-story.md +118 -0
- package/.claude/commands/BMad/tasks/document-project.md +349 -0
- package/.claude/commands/BMad/tasks/execute-checklist.md +92 -0
- package/.claude/commands/BMad/tasks/facilitate-brainstorming-session.md +142 -0
- package/.claude/commands/BMad/tasks/generate-ai-frontend-prompt.md +57 -0
- package/.claude/commands/BMad/tasks/index-docs.md +179 -0
- package/.claude/commands/BMad/tasks/kb-mode-interaction.md +81 -0
- package/.claude/commands/BMad/tasks/nfr-assess.md +349 -0
- package/.claude/commands/BMad/tasks/qa-gate.md +167 -0
- package/.claude/commands/BMad/tasks/review-story.md +320 -0
- package/.claude/commands/BMad/tasks/risk-profile.md +359 -0
- package/.claude/commands/BMad/tasks/shard-doc.md +191 -0
- package/.claude/commands/BMad/tasks/test-design.md +180 -0
- package/.claude/commands/BMad/tasks/trace-requirements.md +270 -0
- package/.claude/commands/BMad/tasks/validate-next-story.md +140 -0
- package/.claude/commands/agent-vibes/add.md +0 -0
- package/.claude/commands/agent-vibes/agent-vibes.md +0 -0
- package/.claude/commands/agent-vibes/bmad.md +0 -0
- package/.claude/commands/agent-vibes/commands.json +24 -0
- package/.claude/commands/agent-vibes/get.md +0 -0
- package/.claude/commands/agent-vibes/language.md +23 -0
- package/.claude/commands/agent-vibes/learn.md +67 -0
- package/.claude/commands/agent-vibes/list.md +0 -0
- package/.claude/commands/agent-vibes/personality.md +0 -0
- package/.claude/commands/agent-vibes/preview.md +0 -0
- package/.claude/commands/agent-vibes/replay-target.md +14 -0
- package/.claude/commands/agent-vibes/replay.md +0 -0
- package/.claude/commands/agent-vibes/sample.md +0 -0
- package/.claude/commands/agent-vibes/sentiment.md +0 -0
- package/.claude/commands/agent-vibes/set-language.md +0 -0
- package/.claude/commands/agent-vibes/set-pretext.md +0 -0
- package/.claude/commands/agent-vibes/set-speed.md +41 -0
- package/.claude/commands/agent-vibes/switch.md +0 -0
- package/.claude/commands/agent-vibes/target-voice.md +26 -0
- package/.claude/commands/agent-vibes/target.md +30 -0
- package/.claude/commands/agent-vibes/update.md +0 -0
- package/.claude/commands/agent-vibes/version.md +0 -0
- package/.claude/commands/agent-vibes/whoami.md +0 -0
- package/.claude/github-star-reminder.txt +1 -1
- package/.claude/hooks/language-manager.sh +167 -13
- package/.claude/hooks/learn-manager.sh +443 -0
- package/.claude/hooks/play-tts-elevenlabs.sh +52 -8
- package/.claude/hooks/play-tts-piper.sh +82 -8
- package/.claude/hooks/play-tts.sh +30 -4
- package/.claude/hooks/provider-commands.sh +46 -3
- package/.claude/hooks/provider-manager.sh +56 -4
- package/.claude/hooks/replay-target-audio.sh +64 -0
- package/.claude/hooks/speed-manager.sh +226 -0
- package/.claude/language-voices.yaml +0 -0
- package/.claude/output-styles/agent-vibes.md +0 -0
- package/.claude/personalities/angry.md +0 -0
- package/.claude/personalities/annoying.md +0 -0
- package/.claude/personalities/crass.md +0 -0
- package/.claude/personalities/dramatic.md +0 -0
- package/.claude/personalities/dry-humor.md +0 -0
- package/.claude/personalities/flirty.md +0 -0
- package/.claude/personalities/funny.md +0 -0
- package/.claude/personalities/grandpa.md +0 -0
- package/.claude/personalities/millennial.md +0 -0
- package/.claude/personalities/moody.md +0 -0
- package/.claude/personalities/normal.md +0 -0
- package/.claude/personalities/pirate.md +0 -0
- package/.claude/personalities/poetic.md +0 -0
- package/.claude/personalities/professional.md +0 -0
- package/.claude/personalities/robot.md +0 -0
- package/.claude/personalities/sarcastic.md +0 -0
- package/.claude/personalities/sassy.md +0 -0
- package/.claude/personalities/surfer-dude.md +0 -0
- package/.claude/personalities/zen.md +0 -0
- package/.claude/piper-voices/en_US-lessac-medium.onnx +0 -0
- package/.claude/piper-voices/en_US-lessac-medium.onnx.json +0 -0
- package/.claude/piper-voices-dir.txt +0 -0
- package/.claude/plugins/bmad-voices-enabled.flag +0 -0
- package/.claude/plugins/bmad-voices.md +0 -0
- package/.mcp-minimal.json +6 -8
- package/AUDIO_TUNNEL_FIX_SUMMARY.md +0 -0
- package/INSTALL_MCP_WINDOWS.md +120 -42
- package/LICENSE +0 -0
- package/NPM_PUBLISH_GUIDE.md +0 -0
- package/README.md +19 -6
- package/RELEASE_NOTES.md +97 -0
- package/RELEASE_NOTES_V2.md +136 -5
- package/agentvibes.org/.claude/commands/agent-vibes/add.md +21 -0
- package/agentvibes.org/.claude/commands/agent-vibes/agent-vibes.md +68 -0
- package/agentvibes.org/.claude/commands/agent-vibes/commands.json +53 -0
- package/agentvibes.org/.claude/commands/agent-vibes/get.md +9 -0
- package/agentvibes.org/.claude/commands/agent-vibes/list.md +13 -0
- package/agentvibes.org/.claude/commands/agent-vibes/personality.md +79 -0
- package/agentvibes.org/.claude/commands/agent-vibes/preview.md +16 -0
- package/agentvibes.org/.claude/commands/agent-vibes/provider.md +54 -0
- package/agentvibes.org/.claude/commands/agent-vibes/replay.md +19 -0
- package/agentvibes.org/.claude/commands/agent-vibes/sample.md +12 -0
- package/agentvibes.org/.claude/commands/agent-vibes/sentiment.md +52 -0
- package/agentvibes.org/.claude/commands/agent-vibes/set-language.md +47 -0
- package/agentvibes.org/.claude/commands/agent-vibes/set-pretext.md +65 -0
- package/agentvibes.org/.claude/commands/agent-vibes/switch.md +53 -0
- package/agentvibes.org/.claude/commands/agent-vibes/update.md +20 -0
- package/agentvibes.org/.claude/commands/agent-vibes/version.md +10 -0
- package/agentvibes.org/.claude/commands/agent-vibes/whoami.md +7 -0
- package/agentvibes.org/.claude/hooks/bmad-voice-manager.sh +278 -0
- package/agentvibes.org/.claude/hooks/language-manager.sh +190 -0
- package/agentvibes.org/.claude/hooks/personality-manager.sh +279 -0
- package/agentvibes.org/.claude/hooks/piper-download-voices.sh +133 -0
- package/agentvibes.org/.claude/hooks/piper-voice-manager.sh +227 -0
- package/agentvibes.org/.claude/hooks/play-tts-elevenlabs.sh +201 -0
- package/agentvibes.org/.claude/hooks/play-tts-piper.sh +175 -0
- package/agentvibes.org/.claude/hooks/play-tts.sh +138 -0
- package/agentvibes.org/.claude/hooks/provider-commands.sh +374 -0
- package/agentvibes.org/.claude/hooks/provider-manager.sh +196 -0
- package/agentvibes.org/.claude/hooks/sentiment-manager.sh +163 -0
- package/agentvibes.org/.claude/hooks/voice-manager.sh +349 -0
- package/agentvibes.org/.claude/hooks/voices-config.sh +33 -0
- package/agentvibes.org/.claude/journal/2025-10-07.html +373 -0
- package/agentvibes.org/.claude/journal/index.html +91 -0
- package/agentvibes.org/.claude/output-styles/agent-vibes.md +203 -0
- package/agentvibes.org/.claude/personalities/angry.md +16 -0
- package/agentvibes.org/.claude/personalities/annoying.md +16 -0
- package/agentvibes.org/.claude/personalities/crass.md +16 -0
- package/agentvibes.org/.claude/personalities/dramatic.md +16 -0
- package/agentvibes.org/.claude/personalities/dry-humor.md +52 -0
- package/agentvibes.org/.claude/personalities/flirty.md +22 -0
- package/agentvibes.org/.claude/personalities/funny.md +16 -0
- package/agentvibes.org/.claude/personalities/grandpa.md +34 -0
- package/agentvibes.org/.claude/personalities/millennial.md +16 -0
- package/agentvibes.org/.claude/personalities/moody.md +16 -0
- package/agentvibes.org/.claude/personalities/normal.md +18 -0
- package/agentvibes.org/.claude/personalities/pirate.md +16 -0
- package/agentvibes.org/.claude/personalities/poetic.md +16 -0
- package/agentvibes.org/.claude/personalities/professional.md +16 -0
- package/agentvibes.org/.claude/personalities/robot.md +16 -0
- package/agentvibes.org/.claude/personalities/sarcastic.md +40 -0
- package/agentvibes.org/.claude/personalities/sassy.md +16 -0
- package/agentvibes.org/.claude/personalities/surfer-dude.md +16 -0
- package/agentvibes.org/.claude/personalities/zen.md +16 -0
- package/agentvibes.org/.mcp-minimal.json +60 -0
- package/agentvibes.org/CHANGELOG.md +56 -0
- package/agentvibes.org/README.md +93 -0
- package/agentvibes.org/app/(auth)/layout.tsx +15 -0
- package/agentvibes.org/app/(auth)/reset-password/page.tsx +45 -0
- package/agentvibes.org/app/(auth)/signin/page.tsx +82 -0
- package/agentvibes.org/app/(auth)/signup/page.tsx +104 -0
- package/agentvibes.org/app/(default)/layout.tsx +31 -0
- package/agentvibes.org/app/(default)/page.tsx +20 -0
- package/agentvibes.org/app/api/hello/route.ts +3 -0
- package/agentvibes.org/app/css/additional-styles/theme.css +82 -0
- package/agentvibes.org/app/css/additional-styles/utility-patterns.css +55 -0
- package/agentvibes.org/app/css/style.css +100 -0
- package/agentvibes.org/app/layout.tsx +63 -0
- package/agentvibes.org/components/cta.tsx +58 -0
- package/agentvibes.org/components/features.tsx +256 -0
- package/agentvibes.org/components/hero-home.tsx +133 -0
- package/agentvibes.org/components/modal-video.tsx +137 -0
- package/agentvibes.org/components/page-illustration.tsx +55 -0
- package/agentvibes.org/components/spotlight.tsx +77 -0
- package/agentvibes.org/components/testimonials.tsx +282 -0
- package/agentvibes.org/components/ui/footer.tsx +82 -0
- package/agentvibes.org/components/ui/header.tsx +53 -0
- package/agentvibes.org/components/ui/logo.tsx +10 -0
- package/agentvibes.org/components/workflows.tsx +176 -0
- package/agentvibes.org/next.config.js +4 -0
- package/agentvibes.org/package-lock.json +1974 -0
- package/agentvibes.org/package.json +30 -0
- package/agentvibes.org/pnpm-lock.yaml +1141 -0
- package/agentvibes.org/postcss.config.js +5 -0
- package/agentvibes.org/public/audio/02-sarcastic.mp3 +0 -0
- package/agentvibes.org/public/audio/03-angry.mp3 +0 -0
- package/agentvibes.org/public/audio/04-grandpa.mp3 +0 -0
- package/agentvibes.org/public/audio/05-sarcastic-example2.mp3 +0 -0
- package/agentvibes.org/public/audio/french-rachel.mp3 +0 -0
- package/agentvibes.org/public/audio/spanish-antoni.mp3 +0 -0
- package/agentvibes.org/public/favicon.ico +0 -0
- package/agentvibes.org/public/fonts/nacelle-italic.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-regular.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-semibold.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-semibolditalic.woff2 +0 -0
- package/agentvibes.org/public/images/blurred-shape-gray.svg +1 -0
- package/agentvibes.org/public/images/blurred-shape.svg +1 -0
- package/agentvibes.org/public/images/client-logo-01.svg +1 -0
- package/agentvibes.org/public/images/client-logo-02.svg +1 -0
- package/agentvibes.org/public/images/client-logo-03.svg +1 -0
- package/agentvibes.org/public/images/client-logo-04.svg +1 -0
- package/agentvibes.org/public/images/client-logo-05.svg +1 -0
- package/agentvibes.org/public/images/client-logo-06.svg +1 -0
- package/agentvibes.org/public/images/client-logo-07.svg +1 -0
- package/agentvibes.org/public/images/client-logo-08.svg +1 -0
- package/agentvibes.org/public/images/client-logo-09.svg +1 -0
- package/agentvibes.org/public/images/features.png +0 -0
- package/agentvibes.org/public/images/footer-illustration.svg +1 -0
- package/agentvibes.org/public/images/hero-image-01.jpg +0 -0
- package/agentvibes.org/public/images/logo.svg +1 -0
- package/agentvibes.org/public/images/page-illustration.svg +1 -0
- package/agentvibes.org/public/images/secondary-illustration.svg +1 -0
- package/agentvibes.org/public/images/testimonial-01.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-02.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-03.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-04.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-05.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-06.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-07.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-08.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-09.jpg +0 -0
- package/agentvibes.org/public/images/workflow-01.png +0 -0
- package/agentvibes.org/public/images/workflow-02.png +0 -0
- package/agentvibes.org/public/images/workflow-03.png +0 -0
- package/agentvibes.org/public/videos/video.mp4 +0 -0
- package/agentvibes.org/tsconfig.json +28 -0
- package/agentvibes.org/utils/useMasonry.tsx +67 -0
- package/agentvibes.org/utils/useMousePosition.tsx +27 -0
- package/bin/mcp-server.js +122 -0
- package/docs/ai-optimized-documentation-standards.md +0 -0
- package/docs/architecture/provider-system.md +0 -0
- package/docs/remote-audio-setup.md +0 -0
- package/docs/voice-mapping-format.md +0 -0
- package/linkedin/vibe-coding-and-pulseaudio.md +121 -0
- package/mcp-server/QUICK_START.md +0 -0
- package/mcp-server/README.md +0 -0
- package/mcp-server/examples/claude_desktop_config.json +0 -0
- package/mcp-server/examples/claude_desktop_config_piper.json +0 -0
- package/mcp-server/examples/custom_instructions.md +0 -0
- package/mcp-server/pyproject.toml +0 -0
- package/mcp-server/requirements.txt +0 -0
- package/mcp-server/server.py +87 -25
- package/package.json +2 -2
- package/scripts/AUTO-MONITOR-SETUP.md +233 -0
- package/scripts/CHANGELOG-2025-10-16.md +268 -0
- package/scripts/README.md +114 -0
- package/scripts/TROUBLESHOOTING.md +258 -0
- package/scripts/audio-tunnel.config +17 -0
- package/scripts/audio-tunnel.config.example +18 -0
- package/scripts/fix-audio-tunnel-complete.sh +255 -0
- package/scripts/fix-audio-tunnel.sh +244 -54
- package/scripts/health-check-tunnel.sh +93 -0
- package/scripts/piper-voice/README.md +0 -0
- package/scripts/setup-auto-monitor.sh +86 -0
- package/scripts/setup-windows-audio.ps1 +0 -0
- package/src/commands/install-mcp.js +0 -0
- package/src/installer.js +18 -0
- package/templates/activation-instructions-bmad.md +0 -0
- package/templates/output-styles/agent-vibes.md +0 -0
- package/test/README.md +0 -0
- package/test/helpers/test-helper.bash +0 -0
- package/test/test-framework.md +0 -0
- package/test/unit/personality-manager.bats +0 -0
- package/test/unit/play-tts.bats +0 -0
- package/test/unit/voice-manager.bats +0 -0
- /package/bin/{mcp-server → mcp-server.sh} +0 -0
|
@@ -88,7 +88,8 @@ provider_switch() {
|
|
|
88
88
|
fi
|
|
89
89
|
|
|
90
90
|
# Auto-enable force mode if running non-interactively (e.g., from MCP)
|
|
91
|
-
|
|
91
|
+
# Check multiple conditions for MCP/non-interactive context
|
|
92
|
+
if [[ ! -t 0 ]] || [[ -n "$CLAUDE_PROJECT_DIR" ]] || [[ -n "$MCP_SERVER" ]]; then
|
|
92
93
|
force_mode=true
|
|
93
94
|
fi
|
|
94
95
|
|
|
@@ -156,13 +157,14 @@ provider_switch() {
|
|
|
156
157
|
echo " 2. Switch language to English"
|
|
157
158
|
echo " 3. Cancel provider switch"
|
|
158
159
|
echo ""
|
|
159
|
-
read -p "Choose option [1-3]: " -n 1 -r
|
|
160
|
-
echo
|
|
161
160
|
|
|
162
161
|
# Skip prompt in force mode
|
|
163
162
|
if [[ "$force_mode" == true ]]; then
|
|
164
163
|
echo "⏩ Force mode: Continuing with fallback to English..."
|
|
165
164
|
else
|
|
165
|
+
read -p "Choose option [1-3]: " -n 1 -r
|
|
166
|
+
echo
|
|
167
|
+
|
|
166
168
|
case $REPLY in
|
|
167
169
|
1)
|
|
168
170
|
echo "⏩ Continuing with fallback to English..."
|
|
@@ -209,6 +211,47 @@ provider_switch() {
|
|
|
209
211
|
# Perform switch
|
|
210
212
|
set_active_provider "$new_provider"
|
|
211
213
|
|
|
214
|
+
# Update target voice if language learning mode is active
|
|
215
|
+
local target_lang_file=""
|
|
216
|
+
local target_voice_file=""
|
|
217
|
+
|
|
218
|
+
# Check project-local first, then global
|
|
219
|
+
if [[ -d "$SCRIPT_DIR/../.." ]]; then
|
|
220
|
+
local project_dir="$SCRIPT_DIR/../.."
|
|
221
|
+
if [[ -f "$project_dir/.claude/tts-target-language.txt" ]]; then
|
|
222
|
+
target_lang_file="$project_dir/.claude/tts-target-language.txt"
|
|
223
|
+
target_voice_file="$project_dir/.claude/tts-target-voice.txt"
|
|
224
|
+
fi
|
|
225
|
+
fi
|
|
226
|
+
|
|
227
|
+
# Fallback to global
|
|
228
|
+
if [[ -z "$target_lang_file" ]]; then
|
|
229
|
+
if [[ -f "$HOME/.claude/tts-target-language.txt" ]]; then
|
|
230
|
+
target_lang_file="$HOME/.claude/tts-target-language.txt"
|
|
231
|
+
target_voice_file="$HOME/.claude/tts-target-voice.txt"
|
|
232
|
+
fi
|
|
233
|
+
fi
|
|
234
|
+
|
|
235
|
+
# If target language is set, update voice for new provider
|
|
236
|
+
if [[ -n "$target_lang_file" ]] && [[ -f "$target_lang_file" ]]; then
|
|
237
|
+
local target_lang
|
|
238
|
+
target_lang=$(cat "$target_lang_file")
|
|
239
|
+
|
|
240
|
+
if [[ -n "$target_lang" ]]; then
|
|
241
|
+
# Get the recommended voice for this language with new provider
|
|
242
|
+
local new_target_voice
|
|
243
|
+
new_target_voice=$(get_voice_for_language "$target_lang" "$new_provider")
|
|
244
|
+
|
|
245
|
+
if [[ -n "$new_target_voice" ]]; then
|
|
246
|
+
echo "$new_target_voice" > "$target_voice_file"
|
|
247
|
+
echo ""
|
|
248
|
+
echo "🔄 Updated target language voice:"
|
|
249
|
+
echo " Language: $target_lang"
|
|
250
|
+
echo " Voice: $new_target_voice (for $new_provider)"
|
|
251
|
+
fi
|
|
252
|
+
fi
|
|
253
|
+
fi
|
|
254
|
+
|
|
212
255
|
# Test new provider
|
|
213
256
|
echo ""
|
|
214
257
|
echo "🔊 Testing provider..."
|
|
@@ -53,7 +53,7 @@ get_active_provider() {
|
|
|
53
53
|
local provider_file
|
|
54
54
|
provider_file=$(get_provider_config_path)
|
|
55
55
|
|
|
56
|
-
# Read provider from file, default to
|
|
56
|
+
# Read provider from file, default to piper if not found
|
|
57
57
|
if [[ -f "$provider_file" ]]; then
|
|
58
58
|
local provider
|
|
59
59
|
provider=$(cat "$provider_file" | tr -d '[:space:]')
|
|
@@ -63,8 +63,8 @@ get_active_provider() {
|
|
|
63
63
|
fi
|
|
64
64
|
fi
|
|
65
65
|
|
|
66
|
-
# Default to
|
|
67
|
-
echo "
|
|
66
|
+
# Default to piper (free, offline)
|
|
67
|
+
echo "piper"
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
# @function set_active_provider
|
|
@@ -101,7 +101,21 @@ set_active_provider() {
|
|
|
101
101
|
# Write provider to file
|
|
102
102
|
echo "$provider" > "$provider_file"
|
|
103
103
|
|
|
104
|
-
|
|
104
|
+
# Reset voice when switching providers to avoid incompatible voices
|
|
105
|
+
# (e.g., ElevenLabs "Demon Monster" doesn't exist in Piper)
|
|
106
|
+
local voice_file
|
|
107
|
+
if [[ -n "$CLAUDE_PROJECT_DIR" ]] && [[ -d "$CLAUDE_PROJECT_DIR/.claude" ]]; then
|
|
108
|
+
voice_file="$CLAUDE_PROJECT_DIR/.claude/tts-voice.txt"
|
|
109
|
+
else
|
|
110
|
+
voice_file="$HOME/.claude/tts-voice.txt"
|
|
111
|
+
fi
|
|
112
|
+
|
|
113
|
+
# Remove voice file to force default voice for new provider
|
|
114
|
+
if [[ -f "$voice_file" ]]; then
|
|
115
|
+
rm -f "$voice_file"
|
|
116
|
+
fi
|
|
117
|
+
|
|
118
|
+
echo "✓ Active provider set to: $provider (voice reset to default)"
|
|
105
119
|
}
|
|
106
120
|
|
|
107
121
|
# @function list_providers
|
|
@@ -194,3 +208,41 @@ get_provider_script_path() {
|
|
|
194
208
|
# AI NOTE: This file provides the core abstraction layer for multi-provider TTS.
|
|
195
209
|
# All provider state is managed through simple text files for simplicity and reliability.
|
|
196
210
|
# Project-local configuration takes precedence over global to support per-project providers.
|
|
211
|
+
|
|
212
|
+
# Command-line interface (when script is executed, not sourced)
|
|
213
|
+
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
214
|
+
case "${1:-}" in
|
|
215
|
+
get)
|
|
216
|
+
get_active_provider
|
|
217
|
+
;;
|
|
218
|
+
switch|set)
|
|
219
|
+
if [[ -z "${2:-}" ]]; then
|
|
220
|
+
echo "❌ Error: Provider name required"
|
|
221
|
+
echo "Usage: $0 switch <provider>"
|
|
222
|
+
exit 1
|
|
223
|
+
fi
|
|
224
|
+
set_active_provider "$2"
|
|
225
|
+
;;
|
|
226
|
+
list)
|
|
227
|
+
list_providers
|
|
228
|
+
;;
|
|
229
|
+
validate)
|
|
230
|
+
if [[ -z "${2:-}" ]]; then
|
|
231
|
+
echo "❌ Error: Provider name required"
|
|
232
|
+
echo "Usage: $0 validate <provider>"
|
|
233
|
+
exit 1
|
|
234
|
+
fi
|
|
235
|
+
validate_provider "$2"
|
|
236
|
+
;;
|
|
237
|
+
*)
|
|
238
|
+
echo "Usage: $0 {get|switch|list|validate} [provider]"
|
|
239
|
+
echo ""
|
|
240
|
+
echo "Commands:"
|
|
241
|
+
echo " get - Show active provider"
|
|
242
|
+
echo " switch <name> - Switch to provider"
|
|
243
|
+
echo " list - List available providers"
|
|
244
|
+
echo " validate <name> - Check if provider exists"
|
|
245
|
+
exit 1
|
|
246
|
+
;;
|
|
247
|
+
esac
|
|
248
|
+
fi
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# @fileoverview Replay Last Target Language Audio
|
|
4
|
+
# @context Replays the most recent target language TTS for language learning
|
|
5
|
+
# @architecture Simple audio replay with lock mechanism
|
|
6
|
+
# @dependencies ffprobe, paplay/aplay/mpg123
|
|
7
|
+
# @entrypoints Called by /agent-vibes:replay-target slash command
|
|
8
|
+
# @patterns Sequential audio playback with lock file
|
|
9
|
+
# @related play-tts-piper.sh, play-tts-elevenlabs.sh, learn-manager.sh
|
|
10
|
+
#
|
|
11
|
+
|
|
12
|
+
# Fix locale warnings
|
|
13
|
+
export LC_ALL=C
|
|
14
|
+
|
|
15
|
+
TARGET_AUDIO_FILE="${CLAUDE_PROJECT_DIR:-.}/.claude/last-target-audio.txt"
|
|
16
|
+
|
|
17
|
+
# Check if target audio tracking file exists
|
|
18
|
+
if [ ! -f "$TARGET_AUDIO_FILE" ]; then
|
|
19
|
+
echo "❌ No target language audio found."
|
|
20
|
+
echo " Language learning mode may not be active."
|
|
21
|
+
echo " Activate with: /agent-vibes:learn"
|
|
22
|
+
exit 1
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
# Read last target audio file path
|
|
26
|
+
LAST_AUDIO=$(cat "$TARGET_AUDIO_FILE")
|
|
27
|
+
|
|
28
|
+
# Verify audio file exists
|
|
29
|
+
if [ ! -f "$LAST_AUDIO" ]; then
|
|
30
|
+
echo "❌ Audio file not found: $LAST_AUDIO"
|
|
31
|
+
echo " The file may have been deleted or moved."
|
|
32
|
+
exit 1
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
echo "🔁 Replaying target language audio..."
|
|
36
|
+
|
|
37
|
+
# Use lock file for sequential playback
|
|
38
|
+
LOCK_FILE="/tmp/agentvibes-audio.lock"
|
|
39
|
+
|
|
40
|
+
# Wait for any current audio to finish (max 30 seconds)
|
|
41
|
+
for i in {1..60}; do
|
|
42
|
+
if [ ! -f "$LOCK_FILE" ]; then
|
|
43
|
+
break
|
|
44
|
+
fi
|
|
45
|
+
sleep 0.5
|
|
46
|
+
done
|
|
47
|
+
|
|
48
|
+
# Create lock
|
|
49
|
+
touch "$LOCK_FILE"
|
|
50
|
+
|
|
51
|
+
# Get audio duration for proper lock timing
|
|
52
|
+
DURATION=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$LAST_AUDIO" 2>/dev/null)
|
|
53
|
+
DURATION=${DURATION%.*} # Round to integer
|
|
54
|
+
DURATION=${DURATION:-1} # Default to 1 second if detection fails
|
|
55
|
+
|
|
56
|
+
# Play audio
|
|
57
|
+
(paplay "$LAST_AUDIO" || aplay "$LAST_AUDIO" || mpg123 "$LAST_AUDIO" || mpv "$LAST_AUDIO") >/dev/null 2>&1 &
|
|
58
|
+
PLAYER_PID=$!
|
|
59
|
+
|
|
60
|
+
# Wait for audio to finish, then release lock
|
|
61
|
+
(sleep $DURATION; rm -f "$LOCK_FILE") &
|
|
62
|
+
disown
|
|
63
|
+
|
|
64
|
+
echo "✅ Replay complete: $(basename "$LAST_AUDIO")"
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# @fileoverview Speech Speed Manager for Piper TTS
|
|
4
|
+
# @context Manage speech rate for main and target language voices
|
|
5
|
+
# @architecture Simple config file manager for Piper length-scale parameter
|
|
6
|
+
#
|
|
7
|
+
|
|
8
|
+
# Get script directory
|
|
9
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
10
|
+
|
|
11
|
+
# Determine config directory (project-local first, then global)
|
|
12
|
+
if [[ -n "$CLAUDE_PROJECT_DIR" ]] && [[ -d "$CLAUDE_PROJECT_DIR/.claude" ]]; then
|
|
13
|
+
CONFIG_DIR="$CLAUDE_PROJECT_DIR/.claude/config"
|
|
14
|
+
else
|
|
15
|
+
# Try to find .claude in current path
|
|
16
|
+
CURRENT_DIR="$PWD"
|
|
17
|
+
while [[ "$CURRENT_DIR" != "/" ]]; do
|
|
18
|
+
if [[ -d "$CURRENT_DIR/.claude" ]]; then
|
|
19
|
+
CONFIG_DIR="$CURRENT_DIR/.claude/config"
|
|
20
|
+
break
|
|
21
|
+
fi
|
|
22
|
+
CURRENT_DIR=$(dirname "$CURRENT_DIR")
|
|
23
|
+
done
|
|
24
|
+
# Fallback to global
|
|
25
|
+
if [[ -z "$CONFIG_DIR" ]]; then
|
|
26
|
+
CONFIG_DIR="$HOME/.claude/config"
|
|
27
|
+
fi
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
mkdir -p "$CONFIG_DIR"
|
|
31
|
+
|
|
32
|
+
MAIN_SPEED_FILE="$CONFIG_DIR/piper-speech-rate.txt"
|
|
33
|
+
TARGET_SPEED_FILE="$CONFIG_DIR/piper-target-speech-rate.txt"
|
|
34
|
+
|
|
35
|
+
# @function parse_speed_value
|
|
36
|
+
# @intent Convert user-friendly speed notation to Piper length-scale value
|
|
37
|
+
# @param $1 Speed string (e.g., "2x", "+2x", "-2x", "0.5x", "normal")
|
|
38
|
+
# @returns Numeric length-scale value
|
|
39
|
+
parse_speed_value() {
|
|
40
|
+
local input="$1"
|
|
41
|
+
|
|
42
|
+
# Handle special cases
|
|
43
|
+
case "$input" in
|
|
44
|
+
normal|1x|1.0)
|
|
45
|
+
echo "1.0"
|
|
46
|
+
return
|
|
47
|
+
;;
|
|
48
|
+
fast|-2x|0.5x)
|
|
49
|
+
echo "0.5"
|
|
50
|
+
return
|
|
51
|
+
;;
|
|
52
|
+
slow|+2x|2x|2.0)
|
|
53
|
+
echo "2.0"
|
|
54
|
+
return
|
|
55
|
+
;;
|
|
56
|
+
slower|+3x|3x|3.0)
|
|
57
|
+
echo "3.0"
|
|
58
|
+
return
|
|
59
|
+
;;
|
|
60
|
+
esac
|
|
61
|
+
|
|
62
|
+
# Strip leading '+' if present
|
|
63
|
+
input="${input#+}"
|
|
64
|
+
|
|
65
|
+
# Strip trailing 'x' if present
|
|
66
|
+
input="${input%x}"
|
|
67
|
+
|
|
68
|
+
# Validate it's a number
|
|
69
|
+
if [[ "$input" =~ ^[0-9]+\.?[0-9]*$ ]]; then
|
|
70
|
+
echo "$input"
|
|
71
|
+
else
|
|
72
|
+
echo "ERROR"
|
|
73
|
+
fi
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
# @function set_speed
|
|
77
|
+
# @intent Set speech speed for main or target voice
|
|
78
|
+
# @param $1 Target ("target" or empty for main)
|
|
79
|
+
# @param $2 Speed value
|
|
80
|
+
set_speed() {
|
|
81
|
+
local is_target=false
|
|
82
|
+
local speed_input=""
|
|
83
|
+
|
|
84
|
+
# Parse arguments
|
|
85
|
+
if [[ "$1" == "target" ]]; then
|
|
86
|
+
is_target=true
|
|
87
|
+
speed_input="$2"
|
|
88
|
+
else
|
|
89
|
+
speed_input="$1"
|
|
90
|
+
fi
|
|
91
|
+
|
|
92
|
+
if [[ -z "$speed_input" ]]; then
|
|
93
|
+
echo "❌ Error: Speed value required"
|
|
94
|
+
echo "Usage: /agent-vibes:set-speed [target] <speed>"
|
|
95
|
+
echo "Examples: 2x, 0.5x, normal, +3x"
|
|
96
|
+
return 1
|
|
97
|
+
fi
|
|
98
|
+
|
|
99
|
+
# Parse speed value
|
|
100
|
+
local speed_value
|
|
101
|
+
speed_value=$(parse_speed_value "$speed_input")
|
|
102
|
+
|
|
103
|
+
if [[ "$speed_value" == "ERROR" ]]; then
|
|
104
|
+
echo "❌ Invalid speed value: $speed_input"
|
|
105
|
+
echo "Valid values: normal, 0.5x, 1x, 2x, 3x, +2x, -2x"
|
|
106
|
+
return 1
|
|
107
|
+
fi
|
|
108
|
+
|
|
109
|
+
# Determine which file to write to
|
|
110
|
+
local config_file
|
|
111
|
+
local voice_type
|
|
112
|
+
if [[ "$is_target" == true ]]; then
|
|
113
|
+
config_file="$TARGET_SPEED_FILE"
|
|
114
|
+
voice_type="target language"
|
|
115
|
+
else
|
|
116
|
+
config_file="$MAIN_SPEED_FILE"
|
|
117
|
+
voice_type="main voice"
|
|
118
|
+
fi
|
|
119
|
+
|
|
120
|
+
# Write speed value
|
|
121
|
+
echo "$speed_value" > "$config_file"
|
|
122
|
+
|
|
123
|
+
# Show confirmation
|
|
124
|
+
echo "✓ Speech speed set for $voice_type"
|
|
125
|
+
echo ""
|
|
126
|
+
echo "Speed: ${speed_value}x"
|
|
127
|
+
|
|
128
|
+
case "$speed_value" in
|
|
129
|
+
0.5)
|
|
130
|
+
echo "Effect: 2x faster (half duration)"
|
|
131
|
+
;;
|
|
132
|
+
1.0)
|
|
133
|
+
echo "Effect: Normal speed"
|
|
134
|
+
;;
|
|
135
|
+
2.0)
|
|
136
|
+
echo "Effect: 2x slower (great for language learning)"
|
|
137
|
+
;;
|
|
138
|
+
3.0)
|
|
139
|
+
echo "Effect: 3x slower (very slow, detailed learning)"
|
|
140
|
+
;;
|
|
141
|
+
*)
|
|
142
|
+
if (( $(echo "$speed_value > 1.0" | bc -l) )); then
|
|
143
|
+
echo "Effect: Slower speech"
|
|
144
|
+
else
|
|
145
|
+
echo "Effect: Faster speech"
|
|
146
|
+
fi
|
|
147
|
+
;;
|
|
148
|
+
esac
|
|
149
|
+
|
|
150
|
+
echo ""
|
|
151
|
+
echo "Note: Speed control only works with Piper TTS voices"
|
|
152
|
+
|
|
153
|
+
# Test the new speed
|
|
154
|
+
if command -v bc &> /dev/null; then
|
|
155
|
+
local test_msg
|
|
156
|
+
if [[ "$is_target" == true ]]; then
|
|
157
|
+
test_msg="Velocidad de voz ajustada para aprender mejor"
|
|
158
|
+
else
|
|
159
|
+
test_msg="Speech speed adjusted successfully"
|
|
160
|
+
fi
|
|
161
|
+
|
|
162
|
+
echo ""
|
|
163
|
+
echo "🔊 Testing new speed..."
|
|
164
|
+
"$SCRIPT_DIR/play-tts.sh" "$test_msg" &
|
|
165
|
+
fi
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
# @function get_speed
|
|
169
|
+
# @intent Display current speech speed settings
|
|
170
|
+
get_speed() {
|
|
171
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
172
|
+
echo " Current Speech Speed Settings"
|
|
173
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
174
|
+
echo ""
|
|
175
|
+
|
|
176
|
+
# Main voice speed
|
|
177
|
+
if [[ -f "$MAIN_SPEED_FILE" ]]; then
|
|
178
|
+
local main_speed=$(grep -v '^#' "$MAIN_SPEED_FILE" 2>/dev/null | grep -v '^$' | tail -1)
|
|
179
|
+
echo "Main voice: ${main_speed}x"
|
|
180
|
+
else
|
|
181
|
+
echo "Main voice: 1.0x (default, normal speed)"
|
|
182
|
+
fi
|
|
183
|
+
|
|
184
|
+
# Target voice speed
|
|
185
|
+
if [[ -f "$TARGET_SPEED_FILE" ]]; then
|
|
186
|
+
local target_speed=$(cat "$TARGET_SPEED_FILE" 2>/dev/null)
|
|
187
|
+
echo "Target language: ${target_speed}x"
|
|
188
|
+
else
|
|
189
|
+
echo "Target language: 2.0x (default, 2x slower for learning)"
|
|
190
|
+
fi
|
|
191
|
+
|
|
192
|
+
echo ""
|
|
193
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
# Main command handler
|
|
197
|
+
case "${1:-}" in
|
|
198
|
+
target)
|
|
199
|
+
set_speed "target" "$2"
|
|
200
|
+
;;
|
|
201
|
+
get|status)
|
|
202
|
+
get_speed
|
|
203
|
+
;;
|
|
204
|
+
normal|fast|slow|slower|*x|*.*|+*|-*)
|
|
205
|
+
set_speed "$1"
|
|
206
|
+
;;
|
|
207
|
+
*)
|
|
208
|
+
echo "Speech Speed Manager"
|
|
209
|
+
echo ""
|
|
210
|
+
echo "Usage:"
|
|
211
|
+
echo " /agent-vibes:set-speed <speed> Set main voice speed"
|
|
212
|
+
echo " /agent-vibes:set-speed target <speed> Set target language speed"
|
|
213
|
+
echo " /agent-vibes:set-speed get Show current speeds"
|
|
214
|
+
echo ""
|
|
215
|
+
echo "Speed values:"
|
|
216
|
+
echo " 0.5x or -2x = 2x faster"
|
|
217
|
+
echo " 1x or normal = Normal speed"
|
|
218
|
+
echo " 2x or +2x = 2x slower (great for learning)"
|
|
219
|
+
echo " 3x or +3x = 3x slower"
|
|
220
|
+
echo ""
|
|
221
|
+
echo "Examples:"
|
|
222
|
+
echo " /agent-vibes:set-speed target 2x"
|
|
223
|
+
echo " /agent-vibes:set-speed 0.5x"
|
|
224
|
+
echo " /agent-vibes:set-speed normal"
|
|
225
|
+
;;
|
|
226
|
+
esac
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/.mcp-minimal.json
CHANGED
|
@@ -65,14 +65,12 @@
|
|
|
65
65
|
"SPACESHIP_API_SECRET": "${SPACESHIP_API_SECRET}"
|
|
66
66
|
}
|
|
67
67
|
},
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
"ELEVENLABS_API_KEY": "${ELEVENLABS_API_KEY}"
|
|
75
|
-
}
|
|
68
|
+
"agentvibes": {
|
|
69
|
+
"command": "npx",
|
|
70
|
+
"args": ["-y", "-p", "agentvibes@beta", "agentvibes-mcp-server"],
|
|
71
|
+
"env": {
|
|
72
|
+
"ELEVENLABS_API_KEY": "${ELEVENLABS_API_KEY}"
|
|
73
|
+
}
|
|
76
74
|
}
|
|
77
75
|
}
|
|
78
76
|
}
|
|
File without changes
|