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
|
@@ -1,6 +1,38 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
-
#
|
|
3
|
-
#
|
|
2
|
+
#
|
|
3
|
+
# File: .claude/hooks/learn-manager.sh
|
|
4
|
+
#
|
|
5
|
+
# AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
|
|
6
|
+
# Website: https://agentvibes.org
|
|
7
|
+
# Repository: https://github.com/paulpreibisch/AgentVibes
|
|
8
|
+
#
|
|
9
|
+
# Co-created by Paul Preibisch with Claude AI
|
|
10
|
+
# Copyright (c) 2025 Paul Preibisch
|
|
11
|
+
#
|
|
12
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
+
# you may not use this file except in compliance with the License.
|
|
14
|
+
# You may obtain a copy of the License at
|
|
15
|
+
#
|
|
16
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
+
#
|
|
18
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
19
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
+
# See the License for the specific language governing permissions and
|
|
22
|
+
# limitations under the License.
|
|
23
|
+
#
|
|
24
|
+
# DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
25
|
+
# express or implied. Use at your own risk. See the Apache License for details.
|
|
26
|
+
#
|
|
27
|
+
# ---
|
|
28
|
+
#
|
|
29
|
+
# @fileoverview Language Learning Mode Manager - Enables dual-language TTS for immersive learning
|
|
30
|
+
# @context Speaks responses in both main language (English) and target language (Spanish, French, etc.) for language practice
|
|
31
|
+
# @architecture Manages main/target language pairs with voice mappings, auto-configures recommended voices per language
|
|
32
|
+
# @dependencies play-tts.sh (dual invocation), language-manager.sh (voice recommendations), .claude/tts-*.txt state files
|
|
33
|
+
# @entrypoints Called by /agent-vibes:learn commands to enable/disable learning mode
|
|
34
|
+
# @patterns Dual-voice orchestration, auto-configuration, greeting on activation, provider-aware voice selection
|
|
35
|
+
# @related language-manager.sh, play-tts.sh, .claude/tts-learn-mode.txt, .claude/tts-target-language.txt
|
|
4
36
|
|
|
5
37
|
set -e
|
|
6
38
|
|
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
-
#
|
|
2
|
+
#
|
|
3
|
+
# File: .claude/hooks/personality-manager.sh
|
|
4
|
+
#
|
|
5
|
+
# AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
|
|
6
|
+
# Website: https://agentvibes.org
|
|
7
|
+
# Repository: https://github.com/paulpreibisch/AgentVibes
|
|
8
|
+
#
|
|
9
|
+
# Co-created by Paul Preibisch with Claude AI
|
|
10
|
+
# Copyright (c) 2025 Paul Preibisch
|
|
11
|
+
#
|
|
12
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
+
# you may not use this file except in compliance with the License.
|
|
14
|
+
# You may obtain a copy of the License at
|
|
15
|
+
#
|
|
16
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
+
#
|
|
18
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
19
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
+
# See the License for the specific language governing permissions and
|
|
22
|
+
# limitations under the License.
|
|
23
|
+
#
|
|
24
|
+
# DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
25
|
+
# express or implied. Use at your own risk. See the Apache License for details.
|
|
26
|
+
#
|
|
27
|
+
# ---
|
|
28
|
+
#
|
|
29
|
+
# @fileoverview Personality Manager - Adds character and emotional style to TTS voices
|
|
30
|
+
# @context Enables voices to have distinct personalities (flirty, sarcastic, pirate, etc.) with provider-aware voice assignment
|
|
31
|
+
# @architecture Markdown-based personality templates with provider-specific voice mappings (ElevenLabs vs Piper)
|
|
32
|
+
# @dependencies .claude/personalities/*.md files, voice-manager.sh, play-tts.sh, provider-manager.sh
|
|
33
|
+
# @entrypoints Called by /agent-vibes:personality slash commands
|
|
34
|
+
# @patterns Template-based configuration, provider abstraction, random personality support
|
|
35
|
+
# @related .claude/personalities/*.md, voice-manager.sh, .claude/tts-personality.txt
|
|
3
36
|
|
|
4
37
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
38
|
PERSONALITIES_DIR="$SCRIPT_DIR/../personalities"
|
|
@@ -1,11 +1,43 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
#
|
|
3
|
+
# File: .claude/hooks/piper-download-voices.sh
|
|
4
|
+
#
|
|
5
|
+
# AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
|
|
6
|
+
# Website: https://agentvibes.org
|
|
7
|
+
# Repository: https://github.com/paulpreibisch/AgentVibes
|
|
8
|
+
#
|
|
9
|
+
# Co-created by Paul Preibisch with Claude AI
|
|
10
|
+
# Copyright (c) 2025 Paul Preibisch
|
|
11
|
+
#
|
|
12
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
+
# you may not use this file except in compliance with the License.
|
|
14
|
+
# You may obtain a copy of the License at
|
|
15
|
+
#
|
|
16
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
+
#
|
|
18
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
19
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
+
# See the License for the specific language governing permissions and
|
|
22
|
+
# limitations under the License.
|
|
23
|
+
#
|
|
24
|
+
# DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
25
|
+
# express or implied, including but not limited to the warranties of
|
|
26
|
+
# merchantability, fitness for a particular purpose and noninfringement.
|
|
27
|
+
# In no event shall the authors or copyright holders be liable for any claim,
|
|
28
|
+
# damages or other liability, whether in an action of contract, tort or
|
|
29
|
+
# otherwise, arising from, out of or in connection with the software or the
|
|
30
|
+
# use or other dealings in the software.
|
|
31
|
+
#
|
|
32
|
+
# ---
|
|
33
|
+
#
|
|
34
|
+
# @fileoverview Piper Voice Model Downloader - Batch downloads popular Piper TTS voices from HuggingFace
|
|
35
|
+
# @context Post-installation utility to download commonly used voices (~25MB each)
|
|
36
|
+
# @architecture Wrapper around piper-voice-manager.sh download functions with progress tracking
|
|
37
|
+
# @dependencies piper-voice-manager.sh (download logic), piper binary (for validation)
|
|
38
|
+
# @entrypoints Called by piper-installer.sh or manually via ./piper-download-voices.sh [--yes|-y]
|
|
39
|
+
# @patterns Batch operations, skip-existing logic, auto-yes flag for non-interactive use
|
|
40
|
+
# @related piper-voice-manager.sh, piper-installer.sh
|
|
9
41
|
#
|
|
10
42
|
|
|
11
43
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
@@ -17,7 +49,7 @@ if [[ "$1" == "--yes" ]] || [[ "$1" == "-y" ]]; then
|
|
|
17
49
|
AUTO_YES=true
|
|
18
50
|
fi
|
|
19
51
|
|
|
20
|
-
# Common voice models to download
|
|
52
|
+
# Common voice models to download from HuggingFace (official Piper voices)
|
|
21
53
|
COMMON_VOICES=(
|
|
22
54
|
"en_US-lessac-medium" # Default, clear male
|
|
23
55
|
"en_US-amy-medium" # Warm female
|
|
@@ -26,6 +58,16 @@ COMMON_VOICES=(
|
|
|
26
58
|
"en_US-libritts-high" # Premium quality
|
|
27
59
|
)
|
|
28
60
|
|
|
61
|
+
# Custom high-quality voices from AgentVibes HuggingFace repository
|
|
62
|
+
# Original voices by Bryce Beattie (https://brycebeattie.com/files/tts/)
|
|
63
|
+
# Repository: https://huggingface.co/agentvibes/piper-custom-voices
|
|
64
|
+
# Licensed: Public Domain (Kristin, 16Speakers) / CC BY attribution (Jenny)
|
|
65
|
+
CUSTOM_VOICES=(
|
|
66
|
+
"kristin:https://huggingface.co/agentvibes/piper-custom-voices/resolve/main/kristin.onnx:https://huggingface.co/agentvibes/piper-custom-voices/resolve/main/kristin.onnx.json" # US English female (Public Domain)
|
|
67
|
+
"jenny:https://huggingface.co/agentvibes/piper-custom-voices/resolve/main/jenny.onnx:https://huggingface.co/agentvibes/piper-custom-voices/resolve/main/jenny.onnx.json" # UK English female, Irish (CC BY attribution required)
|
|
68
|
+
"16Speakers:https://huggingface.co/agentvibes/piper-custom-voices/resolve/main/16Speakers.onnx:https://huggingface.co/agentvibes/piper-custom-voices/resolve/main/16Speakers.onnx.json" # Multi-speaker: 16 voices (Public Domain)
|
|
69
|
+
)
|
|
70
|
+
|
|
29
71
|
echo "🎙️ Piper Voice Model Downloader"
|
|
30
72
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
31
73
|
echo ""
|
|
@@ -118,16 +160,96 @@ done
|
|
|
118
160
|
|
|
119
161
|
echo ""
|
|
120
162
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
121
|
-
echo "📊 Download Summary:"
|
|
163
|
+
echo "📊 Download Summary (Standard Voices):"
|
|
122
164
|
echo " ✅ Successfully downloaded: $DOWNLOADED"
|
|
123
165
|
echo " ❌ Failed: $FAILED"
|
|
124
166
|
echo " 📦 Total voices available: $((ALREADY_DOWNLOADED + DOWNLOADED))"
|
|
125
167
|
echo ""
|
|
126
168
|
|
|
127
|
-
|
|
169
|
+
# Now offer to download custom high-quality voices from Bryce Beattie
|
|
170
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
171
|
+
echo "🎨 Custom High-Quality Voices Available"
|
|
172
|
+
echo ""
|
|
173
|
+
echo "Additional premium voices from AgentVibes:"
|
|
174
|
+
echo " • Kristin - US English female (Public Domain)"
|
|
175
|
+
echo " • Jenny - UK English female, Irish accent (CC BY)"
|
|
176
|
+
echo " • 16Speakers - Multi-speaker: 16 different voices (Public Domain)"
|
|
177
|
+
echo ""
|
|
178
|
+
echo "Repository: https://huggingface.co/agentvibes/piper-custom-voices"
|
|
179
|
+
echo "Original voices by: Bryce Beattie (https://brycebeattie.com/files/tts/)"
|
|
180
|
+
echo ""
|
|
181
|
+
|
|
182
|
+
if [[ "$AUTO_YES" == "false" ]]; then
|
|
183
|
+
read -p "Download custom voices (Kristin + Jenny + 16Speakers)? [Y/n]: " -n 1 -r
|
|
184
|
+
echo
|
|
185
|
+
|
|
186
|
+
if [[ $REPLY =~ ^[Yy]$ ]] || [[ -z $REPLY ]]; then
|
|
187
|
+
DOWNLOAD_CUSTOM=true
|
|
188
|
+
else
|
|
189
|
+
DOWNLOAD_CUSTOM=false
|
|
190
|
+
fi
|
|
191
|
+
else
|
|
192
|
+
DOWNLOAD_CUSTOM=true
|
|
193
|
+
fi
|
|
194
|
+
|
|
195
|
+
if [[ "$DOWNLOAD_CUSTOM" == "true" ]]; then
|
|
196
|
+
echo ""
|
|
197
|
+
echo "📥 Downloading custom voices..."
|
|
198
|
+
|
|
199
|
+
CUSTOM_DOWNLOADED=0
|
|
200
|
+
CUSTOM_FAILED=0
|
|
201
|
+
|
|
202
|
+
for voice_entry in "${CUSTOM_VOICES[@]}"; do
|
|
203
|
+
IFS=':' read -r voice_name onnx_url json_url <<< "$voice_entry"
|
|
204
|
+
|
|
205
|
+
echo ""
|
|
206
|
+
echo "📥 Downloading: $voice_name..."
|
|
207
|
+
|
|
208
|
+
# Create filename from voice name
|
|
209
|
+
onnx_file="$VOICE_DIR/${voice_name}.onnx"
|
|
210
|
+
json_file="$VOICE_DIR/${voice_name}.onnx.json"
|
|
211
|
+
|
|
212
|
+
# Download .onnx file
|
|
213
|
+
if curl -L "$onnx_url" -o "$onnx_file" 2>/dev/null; then
|
|
214
|
+
# Download .json config file
|
|
215
|
+
if curl -L "$json_url" -o "$json_file" 2>/dev/null; then
|
|
216
|
+
((CUSTOM_DOWNLOADED++))
|
|
217
|
+
echo "✅ Downloaded: $voice_name"
|
|
218
|
+
else
|
|
219
|
+
((CUSTOM_FAILED++))
|
|
220
|
+
echo "❌ Failed to download config: $voice_name"
|
|
221
|
+
rm -f "$onnx_file" # Clean up partial download
|
|
222
|
+
fi
|
|
223
|
+
else
|
|
224
|
+
((CUSTOM_FAILED++))
|
|
225
|
+
echo "❌ Failed to download model: $voice_name"
|
|
226
|
+
fi
|
|
227
|
+
done
|
|
228
|
+
|
|
229
|
+
echo ""
|
|
230
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
231
|
+
echo "📊 Custom Voices Summary:"
|
|
232
|
+
echo " ✅ Successfully downloaded: $CUSTOM_DOWNLOADED"
|
|
233
|
+
echo " ❌ Failed: $CUSTOM_FAILED"
|
|
234
|
+
echo ""
|
|
235
|
+
fi
|
|
236
|
+
|
|
237
|
+
TOTAL_DOWNLOADED=$((DOWNLOADED + ${CUSTOM_DOWNLOADED:-0}))
|
|
238
|
+
|
|
239
|
+
if [[ $TOTAL_DOWNLOADED -gt 0 ]]; then
|
|
128
240
|
echo "✨ Ready to use Piper TTS with downloaded voices!"
|
|
129
241
|
echo ""
|
|
130
242
|
echo "Try it:"
|
|
131
243
|
echo " /agent-vibes:provider switch piper"
|
|
132
244
|
echo " /agent-vibes:preview"
|
|
245
|
+
echo ""
|
|
246
|
+
echo "Attribution:"
|
|
247
|
+
echo " • Original voices by Bryce Beattie - https://brycebeattie.com/files/tts/"
|
|
248
|
+
echo " • Hosted by AgentVibes - https://huggingface.co/agentvibes/piper-custom-voices"
|
|
249
|
+
echo " • Jenny voice requires attribution (CC BY license)"
|
|
250
|
+
echo ""
|
|
251
|
+
echo "Using 16Speakers multi-voice:"
|
|
252
|
+
echo " • Switch to specific speaker: /agent-vibes:switch 16Speakers#0"
|
|
253
|
+
echo " • Speakers 0-15 available (Cori, Kara, Kristin, Maria, Mike, etc.)"
|
|
254
|
+
echo " • View all speakers: /agent-vibes:list"
|
|
133
255
|
fi
|
|
@@ -1,9 +1,43 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
3
|
+
# File: .claude/hooks/piper-installer.sh
|
|
4
|
+
#
|
|
5
|
+
# AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
|
|
6
|
+
# Website: https://agentvibes.org
|
|
7
|
+
# Repository: https://github.com/paulpreibisch/AgentVibes
|
|
8
|
+
#
|
|
9
|
+
# Co-created by Paul Preibisch with Claude AI
|
|
10
|
+
# Copyright (c) 2025 Paul Preibisch
|
|
11
|
+
#
|
|
12
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
+
# you may not use this file except in compliance with the License.
|
|
14
|
+
# You may obtain a copy of the License at
|
|
15
|
+
#
|
|
16
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
+
#
|
|
18
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
19
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
+
# See the License for the specific language governing permissions and
|
|
22
|
+
# limitations under the License.
|
|
23
|
+
#
|
|
24
|
+
# DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
25
|
+
# express or implied, including but not limited to the warranties of
|
|
26
|
+
# merchantability, fitness for a particular purpose and noninfringement.
|
|
27
|
+
# In no event shall the authors or copyright holders be liable for any claim,
|
|
28
|
+
# damages or other liability, whether in an action of contract, tort or
|
|
29
|
+
# otherwise, arising from, out of or in connection with the software or the
|
|
30
|
+
# use or other dealings in the software.
|
|
31
|
+
#
|
|
32
|
+
# ---
|
|
33
|
+
#
|
|
34
|
+
# @fileoverview Piper TTS Installer - Installs Piper TTS via pipx and downloads initial voice models
|
|
35
|
+
# @context Automated installation script for free offline Piper TTS on WSL/Linux systems
|
|
36
|
+
# @architecture Helper script for AgentVibes installer, invoked manually or from provider switcher
|
|
37
|
+
# @dependencies pipx (Python package installer), apt-get/brew/dnf/pacman (for pipx installation)
|
|
38
|
+
# @entrypoints Called by src/installer.js or manually by users during setup
|
|
39
|
+
# @patterns Platform detection (WSL/Linux only), package manager abstraction, guided voice download
|
|
40
|
+
# @related piper-download-voices.sh, provider-manager.sh, src/installer.js
|
|
7
41
|
#
|
|
8
42
|
|
|
9
43
|
set -e # Exit on error
|
|
@@ -1,23 +1,66 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
3
|
+
# File: .claude/hooks/piper-voice-manager.sh
|
|
4
|
+
#
|
|
5
|
+
# AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
|
|
6
|
+
# Website: https://agentvibes.org
|
|
7
|
+
# Repository: https://github.com/paulpreibisch/AgentVibes
|
|
8
|
+
#
|
|
9
|
+
# Co-created by Paul Preibisch with Claude AI
|
|
10
|
+
# Copyright (c) 2025 Paul Preibisch
|
|
11
|
+
#
|
|
12
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
+
# you may not use this file except in compliance with the License.
|
|
14
|
+
# You may obtain a copy of the License at
|
|
15
|
+
#
|
|
16
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
+
#
|
|
18
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
19
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
+
# See the License for the specific language governing permissions and
|
|
22
|
+
# limitations under the License.
|
|
23
|
+
#
|
|
24
|
+
# DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
25
|
+
# express or implied, including but not limited to the warranties of
|
|
26
|
+
# merchantability, fitness for a particular purpose and noninfringement.
|
|
27
|
+
# In no event shall the authors or copyright holders be liable for any claim,
|
|
28
|
+
# damages or other liability, whether in an action of contract, tort or
|
|
29
|
+
# otherwise, arising from, out of or in connection with the software or the
|
|
30
|
+
# use or other dealings in the software.
|
|
31
|
+
#
|
|
32
|
+
# ---
|
|
33
|
+
#
|
|
34
|
+
# @fileoverview Piper Voice Model Management - Downloads, caches, and validates Piper ONNX voice models
|
|
35
|
+
# @context Voice model lifecycle management for free offline Piper TTS provider
|
|
36
|
+
# @architecture HuggingFace repository integration with local caching, global storage for voice models
|
|
37
|
+
# @dependencies curl (downloads), piper binary (TTS synthesis)
|
|
38
|
+
# @entrypoints Sourced by play-tts-piper.sh, piper-download-voices.sh, and provider management commands
|
|
39
|
+
# @patterns HuggingFace model repository integration, file-based caching (~25MB per voice), global storage
|
|
40
|
+
# @related play-tts-piper.sh, piper-download-voices.sh, provider-manager.sh, GitHub Issue #25
|
|
10
41
|
#
|
|
11
42
|
|
|
12
43
|
# Base URL for Piper voice models on HuggingFace
|
|
13
44
|
PIPER_VOICES_BASE_URL="https://huggingface.co/rhasspy/piper-voices/resolve/main"
|
|
14
45
|
|
|
46
|
+
# AI NOTE: Voice storage precedence order:
|
|
47
|
+
# 1. PIPER_VOICES_DIR environment variable (highest priority)
|
|
48
|
+
# 2. Project-local .claude/piper-voices-dir.txt
|
|
49
|
+
# 3. Directory tree search for .claude/piper-voices-dir.txt
|
|
50
|
+
# 4. Global ~/.claude/piper-voices-dir.txt
|
|
51
|
+
# 5. Default ~/.claude/piper-voices (fallback)
|
|
52
|
+
# This allows per-project voice isolation while defaulting to shared global storage.
|
|
53
|
+
|
|
15
54
|
# @function get_voice_storage_dir
|
|
16
|
-
# @intent Determine directory for storing Piper voice models
|
|
17
|
-
# @why Voice models are large (~25MB each) and should be shared globally
|
|
18
|
-
# @
|
|
55
|
+
# @intent Determine directory for storing Piper voice models with precedence chain
|
|
56
|
+
# @why Voice models are large (~25MB each) and should be shared globally by default, but allow per-project overrides
|
|
57
|
+
# @param None
|
|
58
|
+
# @returns Echoes path to voice storage directory
|
|
59
|
+
# @exitcode Always 0
|
|
19
60
|
# @sideeffects Creates directory if it doesn't exist
|
|
20
|
-
# @
|
|
61
|
+
# @edgecases Searches up directory tree for .claude/ folder, supports custom paths via env var or config files
|
|
62
|
+
# @calledby All voice management functions (verify_voice, get_voice_path, download_voice, list_downloaded_voices)
|
|
63
|
+
# @calls mkdir, cat, dirname
|
|
21
64
|
get_voice_storage_dir() {
|
|
22
65
|
local voice_dir
|
|
23
66
|
|
|
@@ -61,12 +104,15 @@ get_voice_storage_dir() {
|
|
|
61
104
|
}
|
|
62
105
|
|
|
63
106
|
# @function verify_voice
|
|
64
|
-
# @intent Check if voice model files exist locally
|
|
65
|
-
# @why Avoid redundant downloads, detect missing models
|
|
107
|
+
# @intent Check if voice model files exist locally (both .onnx and .onnx.json)
|
|
108
|
+
# @why Avoid redundant downloads, detect missing models, ensure model integrity
|
|
66
109
|
# @param $1 {string} voice_name - Voice model name (e.g., en_US-lessac-medium)
|
|
67
110
|
# @returns None
|
|
68
|
-
# @exitcode 0=voice exists, 1=voice missing
|
|
69
|
-
# @sideeffects None
|
|
111
|
+
# @exitcode 0=voice exists and complete, 1=voice missing or incomplete
|
|
112
|
+
# @sideeffects None (read-only check)
|
|
113
|
+
# @edgecases Requires both ONNX model and JSON config to return success
|
|
114
|
+
# @calledby download_voice, piper-download-voices.sh
|
|
115
|
+
# @calls get_voice_storage_dir
|
|
70
116
|
verify_voice() {
|
|
71
117
|
local voice_name="$1"
|
|
72
118
|
local voice_dir
|
|
@@ -79,12 +125,15 @@ verify_voice() {
|
|
|
79
125
|
}
|
|
80
126
|
|
|
81
127
|
# @function get_voice_path
|
|
82
|
-
# @intent Get absolute path to voice model ONNX file
|
|
83
|
-
# @why Piper binary requires full path to model file
|
|
128
|
+
# @intent Get absolute path to voice model ONNX file for Piper binary
|
|
129
|
+
# @why Piper binary requires full absolute path to model file, not just voice name
|
|
84
130
|
# @param $1 {string} voice_name - Voice model name
|
|
85
|
-
# @returns Echoes path to .onnx file
|
|
131
|
+
# @returns Echoes absolute path to .onnx file to stdout
|
|
86
132
|
# @exitcode 0=success, 1=voice not found
|
|
87
|
-
# @sideeffects
|
|
133
|
+
# @sideeffects Writes error message to stderr if voice not found
|
|
134
|
+
# @edgecases Returns error if voice not downloaded yet
|
|
135
|
+
# @calledby play-tts-piper.sh for TTS synthesis
|
|
136
|
+
# @calls get_voice_storage_dir
|
|
88
137
|
get_voice_path() {
|
|
89
138
|
local voice_name="$1"
|
|
90
139
|
local voice_dir
|
|
@@ -100,13 +149,24 @@ get_voice_path() {
|
|
|
100
149
|
echo "$onnx_file"
|
|
101
150
|
}
|
|
102
151
|
|
|
152
|
+
# AI NOTE: Voice name format is: lang_LOCALE-speaker-quality
|
|
153
|
+
# Example: en_US-lessac-medium
|
|
154
|
+
# - lang: en (language code)
|
|
155
|
+
# - LOCALE: US (locale/country code)
|
|
156
|
+
# - speaker: lessac (speaker/voice name)
|
|
157
|
+
# - quality: medium (model quality: low/medium/high)
|
|
158
|
+
# HuggingFace repository structure: {lang}/{lang}_{LOCALE}/{speaker}/{quality}/
|
|
159
|
+
|
|
103
160
|
# @function parse_voice_components
|
|
104
|
-
# @intent Extract language, locale, speaker, quality from voice name
|
|
105
|
-
# @why HuggingFace uses directory
|
|
161
|
+
# @intent Extract language, locale, speaker, quality components from voice name
|
|
162
|
+
# @why HuggingFace uses structured directory paths based on these components
|
|
106
163
|
# @param $1 {string} voice_name - Voice name (e.g., en_US-lessac-medium)
|
|
107
|
-
# @returns
|
|
108
|
-
# @
|
|
109
|
-
#
|
|
164
|
+
# @returns None (sets global variables)
|
|
165
|
+
# @exitcode Always 0
|
|
166
|
+
# @sideeffects Sets global variables: LANG, LOCALE, SPEAKER, QUALITY
|
|
167
|
+
# @edgecases Expects specific format: lang_LOCALE-speaker-quality
|
|
168
|
+
# @calledby download_voice
|
|
169
|
+
# @calls None (pure string manipulation)
|
|
110
170
|
parse_voice_components() {
|
|
111
171
|
local voice_name="$1"
|
|
112
172
|
|
|
@@ -124,14 +184,16 @@ parse_voice_components() {
|
|
|
124
184
|
}
|
|
125
185
|
|
|
126
186
|
# @function download_voice
|
|
127
|
-
# @intent Download Piper voice model from HuggingFace
|
|
128
|
-
# @why Provide free offline TTS voices
|
|
129
|
-
# @param $1 {string} voice_name - Voice model name
|
|
130
|
-
# @param $2 {string} lang_code - Language code (optional, inferred from voice_name)
|
|
187
|
+
# @intent Download Piper voice model from HuggingFace repository
|
|
188
|
+
# @why Provide free offline TTS voices without requiring API keys
|
|
189
|
+
# @param $1 {string} voice_name - Voice model name (e.g., en_US-lessac-medium)
|
|
190
|
+
# @param $2 {string} lang_code - Language code (optional, inferred from voice_name, unused)
|
|
131
191
|
# @returns None
|
|
132
|
-
# @exitcode 0=success, 1=download failed
|
|
133
|
-
# @sideeffects Downloads .onnx and .onnx.json files
|
|
134
|
-
# @edgecases Handles network failures, validates file integrity
|
|
192
|
+
# @exitcode 0=success (already downloaded or newly downloaded), 1=download failed
|
|
193
|
+
# @sideeffects Downloads .onnx and .onnx.json files (~25MB total), removes partial downloads on failure
|
|
194
|
+
# @edgecases Handles network failures, validates file integrity (non-zero size), skips if already downloaded
|
|
195
|
+
# @calledby piper-download-voices.sh, manual voice download commands
|
|
196
|
+
# @calls parse_voice_components, verify_voice, get_voice_storage_dir, curl, rm
|
|
135
197
|
download_voice() {
|
|
136
198
|
local voice_name="$1"
|
|
137
199
|
local lang_code="${2:-}"
|
|
@@ -187,11 +249,15 @@ download_voice() {
|
|
|
187
249
|
}
|
|
188
250
|
|
|
189
251
|
# @function list_downloaded_voices
|
|
190
|
-
# @intent
|
|
191
|
-
# @why Help users see what voices they have available
|
|
192
|
-
# @
|
|
193
|
-
# @
|
|
194
|
-
# @
|
|
252
|
+
# @intent Display all locally cached voice models with file sizes
|
|
253
|
+
# @why Help users see what voices they have available and storage usage
|
|
254
|
+
# @param None
|
|
255
|
+
# @returns None
|
|
256
|
+
# @exitcode Always 0
|
|
257
|
+
# @sideeffects Writes formatted list to stdout
|
|
258
|
+
# @edgecases Handles empty voice directory gracefully, uses nullglob to avoid literal *.onnx
|
|
259
|
+
# @calledby Voice management commands, /agent-vibes:list
|
|
260
|
+
# @calls get_voice_storage_dir, basename, du
|
|
195
261
|
list_downloaded_voices() {
|
|
196
262
|
local voice_dir
|
|
197
263
|
voice_dir=$(get_voice_storage_dir)
|
|
@@ -1,12 +1,38 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
3
|
+
# File: .claude/hooks/play-tts-elevenlabs.sh
|
|
4
|
+
#
|
|
5
|
+
# AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
|
|
6
|
+
# Website: https://agentvibes.org
|
|
7
|
+
# Repository: https://github.com/paulpreibisch/AgentVibes
|
|
8
|
+
#
|
|
9
|
+
# Co-created by Paul Preibisch with Claude AI
|
|
10
|
+
# Copyright (c) 2025 Paul Preibisch
|
|
11
|
+
#
|
|
12
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
+
# you may not use this file except in compliance with the License.
|
|
14
|
+
# You may obtain a copy of the License at
|
|
15
|
+
#
|
|
16
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
+
#
|
|
18
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
19
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
+
# See the License for the specific language governing permissions and
|
|
22
|
+
# limitations under the License.
|
|
23
|
+
#
|
|
24
|
+
# DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
25
|
+
# express or implied. Use at your own risk. See the Apache License for details.
|
|
26
|
+
#
|
|
27
|
+
# ---
|
|
28
|
+
#
|
|
29
|
+
# @fileoverview ElevenLabs TTS Provider Implementation - Premium cloud-based TTS
|
|
30
|
+
# @context Provider-specific implementation for ElevenLabs API integration with multilingual support
|
|
31
|
+
# @architecture Part of multi-provider TTS system - implements provider interface contract
|
|
6
32
|
# @dependencies Requires ELEVENLABS_API_KEY, curl, ffmpeg, paplay/aplay/mpg123, jq
|
|
7
|
-
# @entrypoints Called by play-tts.sh router with ($1=text, $2=voice_name)
|
|
8
|
-
# @patterns Follows provider contract: accept text/voice, output audio file path
|
|
9
|
-
# @related play-tts.sh, provider-manager.sh, GitHub Issue #25
|
|
33
|
+
# @entrypoints Called by play-tts.sh router with ($1=text, $2=voice_name) when provider=elevenlabs
|
|
34
|
+
# @patterns Follows provider contract: accept text/voice, output audio file path, API error handling, SSH audio optimization
|
|
35
|
+
# @related play-tts.sh, provider-manager.sh, voices-config.sh, language-manager.sh, GitHub Issue #25
|
|
10
36
|
#
|
|
11
37
|
|
|
12
38
|
# Fix locale warnings
|