agentvibes 2.0.17 → 2.0.20
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/activation-instructions +54 -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/github-star-reminder.txt +1 -1
- package/.claude/hooks/bmad-tts-injector.sh +33 -4
- package/.claude/hooks/bmad-voice-manager.sh +146 -10
- package/.claude/hooks/check-output-style.sh +60 -8
- package/.claude/hooks/github-star-reminder.sh +67 -7
- package/.claude/hooks/language-manager.sh +34 -2
- package/.claude/hooks/learn-manager.sh +34 -2
- package/.claude/hooks/personality-manager.sh +34 -1
- package/.claude/hooks/piper-download-voices.sh +131 -9
- package/.claude/hooks/piper-installer.sh +38 -4
- package/.claude/hooks/piper-voice-manager.sh +102 -36
- package/.claude/hooks/play-tts-elevenlabs.sh +32 -6
- package/.claude/hooks/play-tts-piper.sh +79 -18
- package/.claude/hooks/play-tts.sh +34 -3
- package/.claude/hooks/provider-commands.sh +36 -1
- package/.claude/hooks/provider-manager.sh +32 -1
- package/.claude/hooks/replay-target-audio.sh +34 -3
- package/.claude/hooks/sentiment-manager.sh +39 -1
- package/.claude/hooks/speed-manager.sh +36 -2
- package/.claude/hooks/voice-manager.sh +85 -6
- package/.claude/hooks/voices-config.sh +39 -2
- package/README.md +77 -137
- package/RELEASE_NOTES.md +269 -0
- package/RELEASE_NOTES_v2.0.17_DRAFT.md +650 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760744118.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760748535.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760748676.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760750748.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760750947.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760752718.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760752907.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753017.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753045.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753241.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753315.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753382.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753408.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753426.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753446.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753541.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753553.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753577.mp3 +0 -0
- 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/bmad.md +196 -0
- package/agentvibes.org/.claude/commands/agent-vibes/commands.json +77 -0
- package/agentvibes.org/.claude/commands/agent-vibes/get.md +9 -0
- package/agentvibes.org/.claude/commands/agent-vibes/language.md +23 -0
- package/agentvibes.org/.claude/commands/agent-vibes/learn.md +67 -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 +17 -0
- package/agentvibes.org/.claude/commands/agent-vibes/provider.md +54 -0
- package/agentvibes.org/.claude/commands/agent-vibes/replay-target.md +14 -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/set-speed.md +41 -0
- package/agentvibes.org/.claude/commands/agent-vibes/switch.md +53 -0
- package/agentvibes.org/.claude/commands/agent-vibes/target-voice.md +26 -0
- package/agentvibes.org/.claude/commands/agent-vibes/target.md +30 -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-tts-injector.sh +386 -0
- package/agentvibes.org/.claude/hooks/bmad-voice-manager.sh +375 -0
- package/agentvibes.org/.claude/hooks/check-output-style.sh +60 -0
- package/agentvibes.org/.claude/hooks/github-star-reminder.sh +94 -0
- package/agentvibes.org/.claude/hooks/language-manager.sh +360 -0
- package/agentvibes.org/.claude/hooks/learn-manager.sh +443 -0
- package/agentvibes.org/.claude/hooks/personality-manager.sh +324 -0
- package/agentvibes.org/.claude/hooks/piper-download-voices.sh +133 -0
- package/agentvibes.org/.claude/hooks/piper-installer.sh +144 -0
- package/agentvibes.org/.claude/hooks/piper-voice-manager.sh +227 -0
- package/agentvibes.org/.claude/hooks/play-tts-elevenlabs.sh +376 -0
- package/agentvibes.org/.claude/hooks/play-tts-piper.sh +281 -0
- package/agentvibes.org/.claude/hooks/play-tts.sh +69 -0
- package/agentvibes.org/.claude/hooks/provider-commands.sh +505 -0
- package/agentvibes.org/.claude/hooks/provider-manager.sh +248 -0
- package/agentvibes.org/.claude/hooks/replay-target-audio.sh +64 -0
- package/agentvibes.org/.claude/hooks/sentiment-manager.sh +163 -0
- package/agentvibes.org/.claude/hooks/speed-manager.sh +259 -0
- package/agentvibes.org/.claude/hooks/voice-manager.sh +477 -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 +17 -0
- package/agentvibes.org/.claude/personalities/annoying.md +17 -0
- package/agentvibes.org/.claude/personalities/crass.md +17 -0
- package/agentvibes.org/.claude/personalities/dramatic.md +17 -0
- package/agentvibes.org/.claude/personalities/dry-humor.md +53 -0
- package/agentvibes.org/.claude/personalities/flirty.md +23 -0
- package/agentvibes.org/.claude/personalities/funny.md +17 -0
- package/agentvibes.org/.claude/personalities/grandpa.md +35 -0
- package/agentvibes.org/.claude/personalities/millennial.md +17 -0
- package/agentvibes.org/.claude/personalities/moody.md +17 -0
- package/agentvibes.org/.claude/personalities/normal.md +19 -0
- package/agentvibes.org/.claude/personalities/pirate.md +17 -0
- package/agentvibes.org/.claude/personalities/poetic.md +17 -0
- package/agentvibes.org/.claude/personalities/professional.md +17 -0
- package/agentvibes.org/.claude/personalities/robot.md +17 -0
- package/agentvibes.org/.claude/personalities/sarcastic.md +41 -0
- package/agentvibes.org/.claude/personalities/sassy.md +17 -0
- package/agentvibes.org/.claude/personalities/surfer-dude.md +17 -0
- package/agentvibes.org/.claude/personalities/zen.md +17 -0
- package/agentvibes.org/.claude/piper-voices-dir.txt +1 -0
- package/agentvibes.org/.claude/plugins/bmad-voices.md +42 -0
- package/agentvibes.org/.claude/tts-provider.txt +1 -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)/blog/[slug]/page.tsx +128 -0
- package/agentvibes.org/app/(default)/blog/page.tsx +95 -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/code-block.tsx +27 -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/mdx-components.tsx +128 -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 +68 -0
- package/agentvibes.org/components/ui/logo.tsx +10 -0
- package/agentvibes.org/components/workflows.tsx +176 -0
- package/agentvibes.org/content/blog/discovering-new-piper-voices.mdx +253 -0
- package/agentvibes.org/content/blog/getting-started-agentvibes.mdx +228 -0
- package/agentvibes.org/content/blog/introducing-agentvibes-v2.mdx +250 -0
- package/agentvibes.org/content/blog/language-learning-with-agentvibes.mdx +142 -0
- package/agentvibes.org/content/blog/voice-personalities-guide.mdx +119 -0
- package/agentvibes.org/lib/blog.ts +73 -0
- package/agentvibes.org/next.config.js +6 -0
- package/agentvibes.org/package-lock.json +4285 -0
- package/agentvibes.org/package.json +40 -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/piper-voices/speaker_0_Cori_Samuel.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_10_Steve_C.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_11_Owlivia.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_12_Paul_Hampton.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_13_Jennifer_Dorr.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_14_Emily_Cripps.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_15_Martin_Clifton.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_1_Kara_Shallenberg.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_2_Kristin_Hughes.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_3_Maria_Kasper.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_4_Mike_Pelton.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_5_Mark_Nelson.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_6_Michael_Scherer.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_7_James_K_White.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_8_Rose_Ibex.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_9_progressingamerica.wav +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/docs/ai-optimized-documentation-standards.md +78 -4
- package/docs/bryce-beattie-voice-licensing.md +131 -0
- package/docs/commands.md +21 -1
- package/docs/mcp-setup.md +1 -6
- package/github-star-reminder.txt +1 -0
- package/linkedin/vibe-coding-and-pulseaudio.md +121 -0
- package/mcp-server/WINDOWS_SETUP.md +182 -199
- package/mcp-server/docs/elevenlabs-setup.md +213 -0
- package/mcp-server/docs/troubleshooting-audio.md +316 -0
- package/mcp-server/server.py +38 -4
- package/mcp-server/test_server.py +38 -3
- package/package.json +1 -1
- package/scripts/audio-tunnel.config +17 -0
- package/test/helpers/test-helper.bash +31 -4
- package/test/unit/personality-manager.bats +22 -6
- package/test/unit/play-tts.bats +21 -3
- package/test/unit/provider-manager.bats +508 -0
- package/test/unit/speed-manager.bats +436 -0
- package/test/unit/voice-manager.bats +4 -1
- package/.claude/piper-voices/en_US-lessac-medium.onnx +0 -0
- package/.claude/piper-voices/en_US-lessac-medium.onnx.json +0 -493
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# @fileoverview BMAD TTS Injection Manager
|
|
4
|
+
# @context Automatically patches BMAD agent files to include AgentVibes TTS hooks
|
|
5
|
+
# @architecture Modifies agent YAML activation-instructions to call play-tts.sh
|
|
6
|
+
# @why Enables BMAD agents to speak their greetings and questions via TTS
|
|
7
|
+
#
|
|
8
|
+
|
|
9
|
+
set -e # Exit on error
|
|
10
|
+
|
|
11
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
12
|
+
CLAUDE_DIR="$(dirname "$SCRIPT_DIR")"
|
|
13
|
+
|
|
14
|
+
# Colors for output
|
|
15
|
+
GREEN='\033[0;32m'
|
|
16
|
+
YELLOW='\033[1;33m'
|
|
17
|
+
RED='\033[0;31m'
|
|
18
|
+
CYAN='\033[0;36m'
|
|
19
|
+
GRAY='\033[0;90m'
|
|
20
|
+
NC='\033[0m' # No Color
|
|
21
|
+
|
|
22
|
+
# Detect BMAD installation
|
|
23
|
+
detect_bmad() {
|
|
24
|
+
local bmad_core_dir=""
|
|
25
|
+
|
|
26
|
+
# Check current directory first
|
|
27
|
+
if [[ -d ".bmad-core" ]]; then
|
|
28
|
+
bmad_core_dir=".bmad-core"
|
|
29
|
+
# Check parent directory
|
|
30
|
+
elif [[ -d "../.bmad-core" ]]; then
|
|
31
|
+
bmad_core_dir="../.bmad-core"
|
|
32
|
+
# Check for bmad-core (without dot prefix)
|
|
33
|
+
elif [[ -d "bmad-core" ]]; then
|
|
34
|
+
bmad_core_dir="bmad-core"
|
|
35
|
+
elif [[ -d "../bmad-core" ]]; then
|
|
36
|
+
bmad_core_dir="../bmad-core"
|
|
37
|
+
else
|
|
38
|
+
echo -e "${RED}❌ BMAD installation not found${NC}" >&2
|
|
39
|
+
echo -e "${GRAY} Looked for .bmad-core or bmad-core directory${NC}" >&2
|
|
40
|
+
return 1
|
|
41
|
+
fi
|
|
42
|
+
|
|
43
|
+
echo "$bmad_core_dir"
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
# Find all BMAD agents
|
|
47
|
+
find_agents() {
|
|
48
|
+
local bmad_core="$1"
|
|
49
|
+
local agents_dir="$bmad_core/agents"
|
|
50
|
+
|
|
51
|
+
if [[ ! -d "$agents_dir" ]]; then
|
|
52
|
+
echo -e "${RED}❌ Agents directory not found: $agents_dir${NC}"
|
|
53
|
+
return 1
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
find "$agents_dir" -name "*.md" -type f
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
# Check if agent has TTS injection
|
|
60
|
+
has_tts_injection() {
|
|
61
|
+
local agent_file="$1"
|
|
62
|
+
|
|
63
|
+
if grep -q "# AGENTVIBES-TTS-INJECTION" "$agent_file" 2>/dev/null; then
|
|
64
|
+
return 0
|
|
65
|
+
fi
|
|
66
|
+
return 1
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
# Extract agent ID from file
|
|
70
|
+
get_agent_id() {
|
|
71
|
+
local agent_file="$1"
|
|
72
|
+
|
|
73
|
+
# Look for "id: <agent-id>" in YAML block
|
|
74
|
+
local agent_id=$(grep -E "^ id:" "$agent_file" | head -1 | awk '{print $2}' | tr -d '"' | tr -d "'")
|
|
75
|
+
|
|
76
|
+
if [[ -z "$agent_id" ]]; then
|
|
77
|
+
# Fallback: use filename without extension
|
|
78
|
+
agent_id=$(basename "$agent_file" .md)
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
echo "$agent_id"
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
# Get voice for agent from BMAD voice mapping
|
|
85
|
+
get_agent_voice() {
|
|
86
|
+
local agent_id="$1"
|
|
87
|
+
|
|
88
|
+
# Use bmad-voice-manager.sh to get voice
|
|
89
|
+
if [[ -f "$SCRIPT_DIR/bmad-voice-manager.sh" ]]; then
|
|
90
|
+
local voice=$("$SCRIPT_DIR/bmad-voice-manager.sh" get-voice "$agent_id" 2>/dev/null || echo "")
|
|
91
|
+
echo "$voice"
|
|
92
|
+
fi
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
# Map ElevenLabs voice to Piper equivalent
|
|
96
|
+
map_voice_to_provider() {
|
|
97
|
+
local elevenlabs_voice="$1"
|
|
98
|
+
local provider="$2"
|
|
99
|
+
|
|
100
|
+
# If provider is elevenlabs or empty, return as-is
|
|
101
|
+
if [[ "$provider" != "piper" ]]; then
|
|
102
|
+
echo "$elevenlabs_voice"
|
|
103
|
+
return
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
# Map ElevenLabs voices to Piper equivalents
|
|
107
|
+
case "$elevenlabs_voice" in
|
|
108
|
+
"Jessica Anne Bogart"|"Aria")
|
|
109
|
+
echo "en_US-lessac-medium"
|
|
110
|
+
;;
|
|
111
|
+
"Matthew Schmitz"|"Archer"|"Michael")
|
|
112
|
+
echo "en_US-danny-low"
|
|
113
|
+
;;
|
|
114
|
+
"Burt Reynolds"|"Cowboy Bob")
|
|
115
|
+
echo "en_US-joe-medium"
|
|
116
|
+
;;
|
|
117
|
+
"Tiffany"|"Ms. Walker")
|
|
118
|
+
echo "en_US-amy-medium"
|
|
119
|
+
;;
|
|
120
|
+
"Ralf Eisend"|"Tom")
|
|
121
|
+
echo "en_US-libritts-high"
|
|
122
|
+
;;
|
|
123
|
+
*)
|
|
124
|
+
# Default to amy for unknown voices
|
|
125
|
+
echo "en_US-amy-medium"
|
|
126
|
+
;;
|
|
127
|
+
esac
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
# Get current TTS provider
|
|
131
|
+
get_current_provider() {
|
|
132
|
+
# Check project-local first, then global
|
|
133
|
+
if [[ -f ".claude/tts-provider.txt" ]]; then
|
|
134
|
+
cat ".claude/tts-provider.txt" 2>/dev/null || echo "elevenlabs"
|
|
135
|
+
elif [[ -f "$HOME/.claude/tts-provider.txt" ]]; then
|
|
136
|
+
cat "$HOME/.claude/tts-provider.txt" 2>/dev/null || echo "elevenlabs"
|
|
137
|
+
else
|
|
138
|
+
echo "elevenlabs"
|
|
139
|
+
fi
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
# Inject TTS hook into agent activation instructions
|
|
143
|
+
inject_tts() {
|
|
144
|
+
local agent_file="$1"
|
|
145
|
+
local agent_id=$(get_agent_id "$agent_file")
|
|
146
|
+
local elevenlabs_voice=$(get_agent_voice "$agent_id")
|
|
147
|
+
local current_provider=$(get_current_provider)
|
|
148
|
+
local agent_voice=$(map_voice_to_provider "$elevenlabs_voice" "$current_provider")
|
|
149
|
+
|
|
150
|
+
# Check if already injected
|
|
151
|
+
if has_tts_injection "$agent_file"; then
|
|
152
|
+
echo -e "${YELLOW}⚠️ TTS already injected in: $(basename "$agent_file")${NC}"
|
|
153
|
+
return 0
|
|
154
|
+
fi
|
|
155
|
+
|
|
156
|
+
# Create backup
|
|
157
|
+
cp "$agent_file" "$agent_file.backup-pre-tts"
|
|
158
|
+
|
|
159
|
+
# Find the activation-instructions section
|
|
160
|
+
if ! grep -q "activation-instructions:" "$agent_file"; then
|
|
161
|
+
echo -e "${RED}❌ No activation-instructions found in: $(basename "$agent_file")${NC}"
|
|
162
|
+
return 1
|
|
163
|
+
fi
|
|
164
|
+
|
|
165
|
+
# Create TTS injection script for activation
|
|
166
|
+
local activation_injection=""
|
|
167
|
+
local persona_injection=""
|
|
168
|
+
|
|
169
|
+
if [[ -n "$agent_voice" ]]; then
|
|
170
|
+
activation_injection=" - # AGENTVIBES-TTS-INJECTION: STEP 3.5 - Announce activation with TTS and set context
|
|
171
|
+
- STEP 3.5a: Use Bash tool to create context file: echo \"${agent_id}\" > .bmad-agent-context
|
|
172
|
+
- STEP 3.5b: Use Bash tool to speak: .claude/hooks/play-tts.sh \"Agent ${agent_id} activated and ready\" \"${agent_voice}\"
|
|
173
|
+
- AGENTVIBES-TTS-INJECTION: MANDATORY RESPONSE PROTOCOL - Before showing ANY response to user, execute this workflow:
|
|
174
|
+
- AGENTVIBES-TTS-STEP 1: Draft your complete response text
|
|
175
|
+
- AGENTVIBES-TTS-STEP 2: Scan response for questions (lines with ? or numbered lists or phrases like What/Should/Would)
|
|
176
|
+
- AGENTVIBES-TTS-STEP 3: If questions found, use Bash tool to speak them: .claude/hooks/play-tts.sh \"question text\" \"${agent_voice}\"
|
|
177
|
+
- AGENTVIBES-TTS-STEP 4: Show the response text to user
|
|
178
|
+
- AGENTVIBES-TTS-INJECTION: On exit command (*exit), use Bash tool FIRST to cleanup: rm -f .bmad-agent-context"
|
|
179
|
+
persona_injection=" - AGENTVIBES-TTS-INJECTION: Before every response, scan for questions and speak them using Bash tool"
|
|
180
|
+
else
|
|
181
|
+
activation_injection=" - # AGENTVIBES-TTS-INJECTION: STEP 3.5 - Announce activation with TTS and set context
|
|
182
|
+
- STEP 3.5a: Use Bash tool to create context file: echo \"${agent_id}\" > .bmad-agent-context
|
|
183
|
+
- STEP 3.5b: Use Bash tool to speak: .claude/hooks/play-tts.sh \"Agent ${agent_id} activated and ready\"
|
|
184
|
+
- AGENTVIBES-TTS-INJECTION: MANDATORY RESPONSE PROTOCOL - Before showing ANY response to user, execute this workflow:
|
|
185
|
+
- AGENTVIBES-TTS-STEP 1: Draft your complete response text
|
|
186
|
+
- AGENTVIBES-TTS-STEP 2: Scan response for questions (lines with ? or numbered lists or phrases like What/Should/Would)
|
|
187
|
+
- AGENTVIBES-TTS-STEP 3: If questions found, use Bash tool to speak them: .claude/hooks/play-tts.sh \"question text\"
|
|
188
|
+
- AGENTVIBES-TTS-STEP 4: Show the response text to user
|
|
189
|
+
- AGENTVIBES-TTS-INJECTION: On exit command (*exit), use Bash tool FIRST to cleanup: rm -f .bmad-agent-context"
|
|
190
|
+
persona_injection=" - AGENTVIBES-TTS-INJECTION: Before every response, scan for questions and speak them using Bash tool"
|
|
191
|
+
fi
|
|
192
|
+
|
|
193
|
+
# Insert activation TTS call after "STEP 4: Greet user" line
|
|
194
|
+
# Insert persona TTS instruction in core_principles section
|
|
195
|
+
awk -v activation="$activation_injection" -v persona="$persona_injection" '
|
|
196
|
+
/STEP 4:.*[Gg]reet/ {
|
|
197
|
+
print
|
|
198
|
+
print activation
|
|
199
|
+
next
|
|
200
|
+
}
|
|
201
|
+
/^ core_principles:/ {
|
|
202
|
+
print
|
|
203
|
+
print persona
|
|
204
|
+
next
|
|
205
|
+
}
|
|
206
|
+
{ print }
|
|
207
|
+
' "$agent_file" > "$agent_file.tmp"
|
|
208
|
+
|
|
209
|
+
mv "$agent_file.tmp" "$agent_file"
|
|
210
|
+
|
|
211
|
+
if [[ "$current_provider" == "piper" ]] && [[ -n "$elevenlabs_voice" ]]; then
|
|
212
|
+
echo -e "${GREEN}✅ Injected TTS into: $(basename "$agent_file") → Voice: ${agent_voice:-default} (${current_provider}: ${elevenlabs_voice} → ${agent_voice})${NC}"
|
|
213
|
+
else
|
|
214
|
+
echo -e "${GREEN}✅ Injected TTS into: $(basename "$agent_file") → Voice: ${agent_voice:-default}${NC}"
|
|
215
|
+
fi
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
# Remove TTS injection from agent
|
|
219
|
+
remove_tts() {
|
|
220
|
+
local agent_file="$1"
|
|
221
|
+
|
|
222
|
+
# Check if has injection
|
|
223
|
+
if ! has_tts_injection "$agent_file"; then
|
|
224
|
+
echo -e "${GRAY} No TTS in: $(basename "$agent_file")${NC}"
|
|
225
|
+
return 0
|
|
226
|
+
fi
|
|
227
|
+
|
|
228
|
+
# Create backup
|
|
229
|
+
cp "$agent_file" "$agent_file.backup-tts-removal"
|
|
230
|
+
|
|
231
|
+
# Remove TTS injection lines
|
|
232
|
+
sed -i.bak '/# AGENTVIBES-TTS-INJECTION/,+1d' "$agent_file"
|
|
233
|
+
rm -f "$agent_file.bak"
|
|
234
|
+
|
|
235
|
+
echo -e "${GREEN}✅ Removed TTS from: $(basename "$agent_file")${NC}"
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
# Show status of TTS injections
|
|
239
|
+
show_status() {
|
|
240
|
+
local bmad_core=$(detect_bmad)
|
|
241
|
+
if [[ -z "$bmad_core" ]]; then
|
|
242
|
+
return 1
|
|
243
|
+
fi
|
|
244
|
+
|
|
245
|
+
echo -e "${CYAN}📊 BMAD TTS Injection Status:${NC}"
|
|
246
|
+
echo ""
|
|
247
|
+
|
|
248
|
+
local agents=$(find_agents "$bmad_core")
|
|
249
|
+
local enabled_count=0
|
|
250
|
+
local disabled_count=0
|
|
251
|
+
|
|
252
|
+
while IFS= read -r agent_file; do
|
|
253
|
+
local agent_id=$(get_agent_id "$agent_file")
|
|
254
|
+
local agent_name=$(basename "$agent_file" .md)
|
|
255
|
+
|
|
256
|
+
if has_tts_injection "$agent_file"; then
|
|
257
|
+
local voice=$(get_agent_voice "$agent_id")
|
|
258
|
+
echo -e " ${GREEN}✅${NC} $agent_name (${agent_id}) → Voice: ${voice:-default}"
|
|
259
|
+
((enabled_count++))
|
|
260
|
+
else
|
|
261
|
+
echo -e " ${GRAY}❌ $agent_name (${agent_id})${NC}"
|
|
262
|
+
((disabled_count++))
|
|
263
|
+
fi
|
|
264
|
+
done <<< "$agents"
|
|
265
|
+
|
|
266
|
+
echo ""
|
|
267
|
+
echo -e "${CYAN}Summary:${NC} $enabled_count enabled, $disabled_count disabled"
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
# Enable TTS for all agents
|
|
271
|
+
enable_all() {
|
|
272
|
+
local bmad_core=$(detect_bmad)
|
|
273
|
+
if [[ -z "$bmad_core" ]]; then
|
|
274
|
+
return 1
|
|
275
|
+
fi
|
|
276
|
+
|
|
277
|
+
echo -e "${CYAN}🎤 Enabling TTS for all BMAD agents...${NC}"
|
|
278
|
+
echo ""
|
|
279
|
+
|
|
280
|
+
local agents=$(find_agents "$bmad_core")
|
|
281
|
+
local success_count=0
|
|
282
|
+
local skip_count=0
|
|
283
|
+
|
|
284
|
+
while IFS= read -r agent_file; do
|
|
285
|
+
if has_tts_injection "$agent_file"; then
|
|
286
|
+
((skip_count++))
|
|
287
|
+
continue
|
|
288
|
+
fi
|
|
289
|
+
|
|
290
|
+
if inject_tts "$agent_file"; then
|
|
291
|
+
((success_count++))
|
|
292
|
+
fi
|
|
293
|
+
done <<< "$agents"
|
|
294
|
+
|
|
295
|
+
echo ""
|
|
296
|
+
echo -e "${GREEN}🎉 TTS enabled for $success_count agents${NC}"
|
|
297
|
+
[[ $skip_count -gt 0 ]] && echo -e "${YELLOW} Skipped $skip_count agents (already enabled)${NC}"
|
|
298
|
+
echo ""
|
|
299
|
+
echo -e "${CYAN}💡 BMAD agents will now speak when activated!${NC}"
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
# Disable TTS for all agents
|
|
303
|
+
disable_all() {
|
|
304
|
+
local bmad_core=$(detect_bmad)
|
|
305
|
+
if [[ -z "$bmad_core" ]]; then
|
|
306
|
+
return 1
|
|
307
|
+
fi
|
|
308
|
+
|
|
309
|
+
echo -e "${CYAN}🔇 Disabling TTS for all BMAD agents...${NC}"
|
|
310
|
+
echo ""
|
|
311
|
+
|
|
312
|
+
local agents=$(find_agents "$bmad_core")
|
|
313
|
+
local success_count=0
|
|
314
|
+
|
|
315
|
+
while IFS= read -r agent_file; do
|
|
316
|
+
if remove_tts "$agent_file"; then
|
|
317
|
+
((success_count++))
|
|
318
|
+
fi
|
|
319
|
+
done <<< "$agents"
|
|
320
|
+
|
|
321
|
+
echo ""
|
|
322
|
+
echo -e "${GREEN}✅ TTS disabled for $success_count agents${NC}"
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
# Restore from backup
|
|
326
|
+
restore_backup() {
|
|
327
|
+
local bmad_core=$(detect_bmad)
|
|
328
|
+
if [[ -z "$bmad_core" ]]; then
|
|
329
|
+
return 1
|
|
330
|
+
fi
|
|
331
|
+
|
|
332
|
+
echo -e "${CYAN}🔄 Restoring agents from backup...${NC}"
|
|
333
|
+
echo ""
|
|
334
|
+
|
|
335
|
+
local agents_dir="$bmad_core/agents"
|
|
336
|
+
local backup_count=0
|
|
337
|
+
|
|
338
|
+
for backup_file in "$agents_dir"/*.backup-pre-tts; do
|
|
339
|
+
if [[ -f "$backup_file" ]]; then
|
|
340
|
+
local original_file="${backup_file%.backup-pre-tts}"
|
|
341
|
+
cp "$backup_file" "$original_file"
|
|
342
|
+
echo -e "${GREEN}✅ Restored: $(basename "$original_file")${NC}"
|
|
343
|
+
((backup_count++))
|
|
344
|
+
fi
|
|
345
|
+
done
|
|
346
|
+
|
|
347
|
+
if [[ $backup_count -eq 0 ]]; then
|
|
348
|
+
echo -e "${YELLOW}⚠️ No backups found${NC}"
|
|
349
|
+
else
|
|
350
|
+
echo ""
|
|
351
|
+
echo -e "${GREEN}✅ Restored $backup_count agents from backup${NC}"
|
|
352
|
+
fi
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
# Main command dispatcher
|
|
356
|
+
case "${1:-help}" in
|
|
357
|
+
enable)
|
|
358
|
+
enable_all
|
|
359
|
+
;;
|
|
360
|
+
disable)
|
|
361
|
+
disable_all
|
|
362
|
+
;;
|
|
363
|
+
status)
|
|
364
|
+
show_status
|
|
365
|
+
;;
|
|
366
|
+
restore)
|
|
367
|
+
restore_backup
|
|
368
|
+
;;
|
|
369
|
+
help|*)
|
|
370
|
+
echo -e "${CYAN}AgentVibes BMAD TTS Injection Manager${NC}"
|
|
371
|
+
echo ""
|
|
372
|
+
echo "Usage: bmad-tts-injector.sh {enable|disable|status|restore}"
|
|
373
|
+
echo ""
|
|
374
|
+
echo "Commands:"
|
|
375
|
+
echo " enable Inject TTS hooks into all BMAD agents"
|
|
376
|
+
echo " disable Remove TTS hooks from all BMAD agents"
|
|
377
|
+
echo " status Show TTS injection status for all agents"
|
|
378
|
+
echo " restore Restore agents from backup (undo changes)"
|
|
379
|
+
echo ""
|
|
380
|
+
echo "What it does:"
|
|
381
|
+
echo " • Automatically patches BMAD agent activation instructions"
|
|
382
|
+
echo " • Adds TTS calls when agents greet users"
|
|
383
|
+
echo " • Uses voice mapping from AgentVibes BMAD plugin"
|
|
384
|
+
echo " • Creates backups before modifying files"
|
|
385
|
+
;;
|
|
386
|
+
esac
|