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
|
File without changes
|
package/mcp-server/README.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/mcp-server/server.py
CHANGED
|
@@ -35,11 +35,12 @@ class AgentVibesServer:
|
|
|
35
35
|
agentvibes_root = script_dir.parent # AgentVibes/
|
|
36
36
|
claude_dir = agentvibes_root / ".claude"
|
|
37
37
|
|
|
38
|
-
#
|
|
38
|
+
# ALWAYS use package .claude for hooks (even in NPX cache)
|
|
39
|
+
# The package ALWAYS has .claude/ with all the hooks
|
|
39
40
|
if claude_dir.exists() and claude_dir.is_dir():
|
|
40
41
|
return claude_dir
|
|
41
42
|
|
|
42
|
-
# Fallback to global ~/.claude
|
|
43
|
+
# Fallback to global ~/.claude (should never happen in properly installed package)
|
|
43
44
|
return Path.home() / ".claude"
|
|
44
45
|
|
|
45
46
|
async def text_to_speech(
|
|
@@ -88,20 +89,15 @@ class AgentVibesServer:
|
|
|
88
89
|
env = os.environ.copy()
|
|
89
90
|
|
|
90
91
|
# Determine where to save settings based on context:
|
|
91
|
-
# 1. If cwd has .claude/ → Use cwd (real project)
|
|
92
|
-
# 2.
|
|
93
|
-
#
|
|
92
|
+
# 1. If cwd has .claude/ → Use cwd (real Claude Code project)
|
|
93
|
+
# 2. Otherwise → Use global ~/.claude/ (Claude Desktop, Warp, etc.)
|
|
94
|
+
# Note: Hooks are ALWAYS from package .claude/ (self.claude_dir)
|
|
94
95
|
cwd = Path.cwd()
|
|
95
96
|
if (cwd / ".claude").is_dir() and cwd != self.agentvibes_root:
|
|
96
|
-
# Real project with .claude directory
|
|
97
|
+
# Real Claude Code project with .claude directory
|
|
97
98
|
env["CLAUDE_PROJECT_DIR"] = str(cwd)
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
# Don't set CLAUDE_PROJECT_DIR, let scripts fall back to ~/.claude
|
|
101
|
-
pass
|
|
102
|
-
else:
|
|
103
|
-
# Development context - use AgentVibes directory
|
|
104
|
-
env["CLAUDE_PROJECT_DIR"] = str(self.agentvibes_root)
|
|
99
|
+
# else: Don't set CLAUDE_PROJECT_DIR, let scripts fall back to ~/.claude
|
|
100
|
+
# This handles: Claude Desktop (NPX), Warp, and any non-project context
|
|
105
101
|
# Add common locations for piper to PATH
|
|
106
102
|
home_dir = Path.home()
|
|
107
103
|
local_bin = str(home_dir / ".local" / "bin")
|
|
@@ -285,6 +281,43 @@ class AgentVibesServer:
|
|
|
285
281
|
return result
|
|
286
282
|
return f"❌ Failed to replay audio: {result}"
|
|
287
283
|
|
|
284
|
+
async def set_provider(self, provider: str) -> str:
|
|
285
|
+
"""
|
|
286
|
+
Switch TTS provider between ElevenLabs and Piper.
|
|
287
|
+
|
|
288
|
+
Args:
|
|
289
|
+
provider: Provider name ("elevenlabs" or "piper")
|
|
290
|
+
|
|
291
|
+
Returns:
|
|
292
|
+
Success or error message
|
|
293
|
+
"""
|
|
294
|
+
provider = provider.lower()
|
|
295
|
+
if provider not in ["elevenlabs", "piper"]:
|
|
296
|
+
return f"❌ Invalid provider: {provider}. Choose 'elevenlabs' or 'piper'"
|
|
297
|
+
|
|
298
|
+
result = await self._run_script("provider-manager.sh", ["switch", provider])
|
|
299
|
+
if result and "✓" in result:
|
|
300
|
+
return result
|
|
301
|
+
return f"❌ Failed to switch provider: {result}"
|
|
302
|
+
|
|
303
|
+
async def set_learn_mode(self, enabled: bool) -> str:
|
|
304
|
+
"""
|
|
305
|
+
Enable or disable language learning mode.
|
|
306
|
+
|
|
307
|
+
When enabled, TTS speaks in both your main language and target language.
|
|
308
|
+
|
|
309
|
+
Args:
|
|
310
|
+
enabled: True to enable, False to disable
|
|
311
|
+
|
|
312
|
+
Returns:
|
|
313
|
+
Success or error message
|
|
314
|
+
"""
|
|
315
|
+
action = "enable" if enabled else "disable"
|
|
316
|
+
result = await self._run_script("learn-manager.sh", [action])
|
|
317
|
+
if result and "✓" in result:
|
|
318
|
+
return result
|
|
319
|
+
return f"❌ Failed to set learn mode: {result}"
|
|
320
|
+
|
|
288
321
|
# Helper methods
|
|
289
322
|
async def _run_script(self, script_name: str, args: list[str]) -> str:
|
|
290
323
|
"""Run a bash script and return output"""
|
|
@@ -299,20 +332,15 @@ class AgentVibesServer:
|
|
|
299
332
|
env = os.environ.copy()
|
|
300
333
|
|
|
301
334
|
# Determine where to save settings based on context:
|
|
302
|
-
# 1. If cwd has .claude/ → Use cwd (real project)
|
|
303
|
-
# 2.
|
|
304
|
-
#
|
|
335
|
+
# 1. If cwd has .claude/ → Use cwd (real Claude Code project)
|
|
336
|
+
# 2. Otherwise → Use global ~/.claude/ (Claude Desktop, Warp, etc.)
|
|
337
|
+
# Note: Hooks are ALWAYS from package .claude/ (self.claude_dir)
|
|
305
338
|
cwd = Path.cwd()
|
|
306
339
|
if (cwd / ".claude").is_dir() and cwd != self.agentvibes_root:
|
|
307
|
-
# Real project with .claude directory
|
|
340
|
+
# Real Claude Code project with .claude directory
|
|
308
341
|
env["CLAUDE_PROJECT_DIR"] = str(cwd)
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
# Don't set CLAUDE_PROJECT_DIR, let scripts fall back to ~/.claude
|
|
312
|
-
pass
|
|
313
|
-
else:
|
|
314
|
-
# Development context - use AgentVibes directory
|
|
315
|
-
env["CLAUDE_PROJECT_DIR"] = str(self.agentvibes_root)
|
|
342
|
+
# else: Don't set CLAUDE_PROJECT_DIR, let scripts fall back to ~/.claude
|
|
343
|
+
# This handles: Claude Desktop (NPX), Warp, and any non-project context
|
|
316
344
|
# Add common locations for piper to PATH
|
|
317
345
|
home_dir = Path.home()
|
|
318
346
|
local_bin = str(home_dir / ".local" / "bin")
|
|
@@ -374,7 +402,8 @@ class AgentVibesServer:
|
|
|
374
402
|
elif provider == "piper":
|
|
375
403
|
return "Piper TTS (Free, Offline)"
|
|
376
404
|
return provider
|
|
377
|
-
|
|
405
|
+
# Default to Piper (free, offline) instead of ElevenLabs
|
|
406
|
+
return "Piper TTS (Free, Offline)"
|
|
378
407
|
|
|
379
408
|
|
|
380
409
|
# Create the MCP server
|
|
@@ -499,6 +528,35 @@ Examples:
|
|
|
499
528
|
},
|
|
500
529
|
},
|
|
501
530
|
),
|
|
531
|
+
Tool(
|
|
532
|
+
name="set_provider",
|
|
533
|
+
description="Switch between ElevenLabs (premium) and Piper (free, offline) TTS providers",
|
|
534
|
+
inputSchema={
|
|
535
|
+
"type": "object",
|
|
536
|
+
"properties": {
|
|
537
|
+
"provider": {
|
|
538
|
+
"type": "string",
|
|
539
|
+
"description": "Provider name: 'elevenlabs' or 'piper'",
|
|
540
|
+
"enum": ["elevenlabs", "piper"]
|
|
541
|
+
}
|
|
542
|
+
},
|
|
543
|
+
"required": ["provider"],
|
|
544
|
+
},
|
|
545
|
+
),
|
|
546
|
+
Tool(
|
|
547
|
+
name="set_learn_mode",
|
|
548
|
+
description="Enable or disable language learning mode. When ON, TTS speaks in both your main language and target language for bilingual learning.",
|
|
549
|
+
inputSchema={
|
|
550
|
+
"type": "object",
|
|
551
|
+
"properties": {
|
|
552
|
+
"enabled": {
|
|
553
|
+
"type": "boolean",
|
|
554
|
+
"description": "True to enable learning mode, False to disable"
|
|
555
|
+
}
|
|
556
|
+
},
|
|
557
|
+
"required": ["enabled"],
|
|
558
|
+
},
|
|
559
|
+
),
|
|
502
560
|
]
|
|
503
561
|
|
|
504
562
|
|
|
@@ -528,6 +586,10 @@ async def call_tool(name: str, arguments: dict) -> list[TextContent]:
|
|
|
528
586
|
elif name == "replay_audio":
|
|
529
587
|
n = arguments.get("n", 1)
|
|
530
588
|
result = await agent_vibes.replay_audio(n)
|
|
589
|
+
elif name == "set_provider":
|
|
590
|
+
result = await agent_vibes.set_provider(arguments["provider"])
|
|
591
|
+
elif name == "set_learn_mode":
|
|
592
|
+
result = await agent_vibes.set_learn_mode(arguments["enabled"])
|
|
531
593
|
else:
|
|
532
594
|
result = f"Unknown tool: {name}"
|
|
533
595
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "agentvibes",
|
|
4
|
-
"version": "2.0.17-beta.
|
|
4
|
+
"version": "2.0.17-beta.21",
|
|
5
5
|
"description": "Now your AI Agents can finally talk back! Professional TTS voice for Claude Code and Claude Desktop (via MCP) with multi-provider support.",
|
|
6
6
|
"homepage": "https://agentvibes.org",
|
|
7
7
|
"keywords": [
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"bin": {
|
|
29
29
|
"agentvibes": "./bin/agent-vibes",
|
|
30
30
|
"agent-vibes": "./bin/agent-vibes",
|
|
31
|
-
"agentvibes-mcp-server": "./bin/mcp-server"
|
|
31
|
+
"agentvibes-mcp-server": "./bin/mcp-server.js"
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
34
|
"install-local": "node src/installer.js install",
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
# Automatic Audio Tunnel Monitoring Setup
|
|
2
|
+
|
|
3
|
+
This guide shows you how to set up automatic monitoring for your audio tunnel so it fixes itself when issues occur.
|
|
4
|
+
|
|
5
|
+
## Quick Setup
|
|
6
|
+
|
|
7
|
+
### 1. Create Your Configuration
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
cd scripts/
|
|
11
|
+
cp audio-tunnel.config.example audio-tunnel.config
|
|
12
|
+
nano audio-tunnel.config # Edit with your settings
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Configure these values:**
|
|
16
|
+
- `REMOTE_HOST`: Your SSH host name (from `~/.ssh/config`)
|
|
17
|
+
- `TUNNEL_PORT`: The port number (default: 14713)
|
|
18
|
+
- `PULSE_SOCKET`: Path to PulseAudio socket (usually `/mnt/wslg/PulseServer`)
|
|
19
|
+
- `CHECK_INTERVAL`: How often to check in minutes (default: 5)
|
|
20
|
+
|
|
21
|
+
### 2. Install Automatic Monitoring
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
./setup-auto-monitor.sh
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
This will:
|
|
28
|
+
- ✅ Validate your configuration
|
|
29
|
+
- ✅ Install a cron job that runs every 5 minutes (or your chosen interval)
|
|
30
|
+
- ✅ Log all actions to `/tmp/audio-tunnel-autofix.log`
|
|
31
|
+
|
|
32
|
+
## What It Does
|
|
33
|
+
|
|
34
|
+
The monitoring system automatically:
|
|
35
|
+
|
|
36
|
+
1. **Checks socat bridge** - Verifies it's running on WSL
|
|
37
|
+
2. **Checks SSH tunnel** - Verifies connection to remote server
|
|
38
|
+
3. **Auto-fixes issues** - Runs `fix-audio-tunnel.sh` if problems detected
|
|
39
|
+
4. **Logs everything** - Records all checks and fixes
|
|
40
|
+
|
|
41
|
+
## Viewing Logs
|
|
42
|
+
|
|
43
|
+
Watch live monitoring:
|
|
44
|
+
```bash
|
|
45
|
+
tail -f /tmp/audio-tunnel-autofix.log
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Recent activity:
|
|
49
|
+
```bash
|
|
50
|
+
tail -20 /tmp/audio-tunnel-autofix.log
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Testing
|
|
54
|
+
|
|
55
|
+
Test the health check manually:
|
|
56
|
+
```bash
|
|
57
|
+
./health-check-tunnel.sh
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
This runs the same check that cron will run automatically.
|
|
61
|
+
|
|
62
|
+
## Disabling
|
|
63
|
+
|
|
64
|
+
To stop automatic monitoring:
|
|
65
|
+
```bash
|
|
66
|
+
crontab -e
|
|
67
|
+
# Remove the line containing: health-check-tunnel.sh
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Or just comment it out with `#` if you want to easily re-enable later.
|
|
71
|
+
|
|
72
|
+
## Changing Check Interval
|
|
73
|
+
|
|
74
|
+
Edit your config file:
|
|
75
|
+
```bash
|
|
76
|
+
nano audio-tunnel.config
|
|
77
|
+
# Change CHECK_INTERVAL="5" to whatever you want
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Then run setup again:
|
|
81
|
+
```bash
|
|
82
|
+
./setup-auto-monitor.sh
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Log Format
|
|
86
|
+
|
|
87
|
+
Logs look like this:
|
|
88
|
+
```
|
|
89
|
+
[2025-10-16 10:00:00] OK: Audio tunnel is healthy
|
|
90
|
+
[2025-10-16 10:05:00] ALERT: socat bridge not running on port 14713
|
|
91
|
+
[2025-10-16 10:05:00] Running automatic fix...
|
|
92
|
+
[2025-10-16 10:05:05] SUCCESS: Audio tunnel restored automatically
|
|
93
|
+
[2025-10-16 10:10:00] OK: Audio tunnel is healthy
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Troubleshooting
|
|
97
|
+
|
|
98
|
+
### "Configuration file not found"
|
|
99
|
+
```bash
|
|
100
|
+
cp audio-tunnel.config.example audio-tunnel.config
|
|
101
|
+
nano audio-tunnel.config
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### "REMOTE_HOST not configured"
|
|
105
|
+
Edit `audio-tunnel.config` and set your actual remote host name.
|
|
106
|
+
|
|
107
|
+
### "Automatic fix failed"
|
|
108
|
+
Check the logs:
|
|
109
|
+
```bash
|
|
110
|
+
tail -50 /tmp/audio-tunnel-autofix.log
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Try running the fix manually:
|
|
114
|
+
```bash
|
|
115
|
+
./fix-audio-tunnel.sh
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Cron not running
|
|
119
|
+
Verify cron service is running:
|
|
120
|
+
```bash
|
|
121
|
+
# Check if cron is active
|
|
122
|
+
service cron status
|
|
123
|
+
|
|
124
|
+
# Or on systemd systems
|
|
125
|
+
systemctl status cron
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
List your cron jobs:
|
|
129
|
+
```bash
|
|
130
|
+
crontab -l
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Manual Cron Setup
|
|
134
|
+
|
|
135
|
+
If `setup-auto-monitor.sh` doesn't work, add manually:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
crontab -e
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Add this line (adjust path to your actual script location):
|
|
142
|
+
```
|
|
143
|
+
*/5 * * * * /full/path/to/scripts/health-check-tunnel.sh >/dev/null 2>&1
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Architecture
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
┌─────────────────────────────────────────────────────────┐
|
|
150
|
+
│ Cron (every 5 minutes) │
|
|
151
|
+
└────────────────────┬────────────────────────────────────┘
|
|
152
|
+
│
|
|
153
|
+
▼
|
|
154
|
+
┌─────────────────────────────────────────────────────────┐
|
|
155
|
+
│ health-check-tunnel.sh │
|
|
156
|
+
│ • Reads audio-tunnel.config │
|
|
157
|
+
│ • Checks socat bridge │
|
|
158
|
+
│ • Checks SSH tunnel │
|
|
159
|
+
└────────────────────┬────────────────────────────────────┘
|
|
160
|
+
│
|
|
161
|
+
┌───────────┴───────────┐
|
|
162
|
+
│ │
|
|
163
|
+
Issues Found? All Good?
|
|
164
|
+
│ │
|
|
165
|
+
▼ ▼
|
|
166
|
+
┌──────────────────┐ ┌──────────────────┐
|
|
167
|
+
│ fix-audio- │ │ Log: OK │
|
|
168
|
+
│ tunnel.sh │ └──────────────────┘
|
|
169
|
+
│ • Kill stale │
|
|
170
|
+
│ processes │
|
|
171
|
+
│ • Restart socat │
|
|
172
|
+
│ • Create tunnel │
|
|
173
|
+
│ • Verify fix │
|
|
174
|
+
└────┬─────────────┘
|
|
175
|
+
│
|
|
176
|
+
▼
|
|
177
|
+
┌──────────────────┐
|
|
178
|
+
│ Log: SUCCESS or │
|
|
179
|
+
│ ERROR │
|
|
180
|
+
└──────────────────┘
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Why This Approach?
|
|
184
|
+
|
|
185
|
+
**Benefits:**
|
|
186
|
+
- ✅ **Automatic recovery** - Fixes issues without manual intervention
|
|
187
|
+
- ✅ **Logged diagnostics** - Track when issues occur and how they're fixed
|
|
188
|
+
- ✅ **Configurable** - Adjust check frequency as needed
|
|
189
|
+
- ✅ **Non-intrusive** - Only acts when there's a problem
|
|
190
|
+
- ✅ **Portable** - Config file makes it work on any system
|
|
191
|
+
|
|
192
|
+
**Alternative approaches considered:**
|
|
193
|
+
- ❌ Systemd service - More complex, requires root
|
|
194
|
+
- ❌ Background daemon - Uses resources continuously
|
|
195
|
+
- ❌ Git hooks - Only runs during git operations
|
|
196
|
+
- ✅ Cron job - Simple, reliable, widely available
|
|
197
|
+
|
|
198
|
+
## Security Considerations
|
|
199
|
+
|
|
200
|
+
The health check script:
|
|
201
|
+
- ✅ Doesn't store passwords or keys
|
|
202
|
+
- ✅ Uses existing SSH config and keys
|
|
203
|
+
- ✅ Only reads config file (not world-writable)
|
|
204
|
+
- ✅ Logs to local temp directory
|
|
205
|
+
- ✅ Runs with user permissions (no sudo needed for checks)
|
|
206
|
+
|
|
207
|
+
The fix script requires sudo only for:
|
|
208
|
+
- Killing processes on remote server (via `sudo fuser -k`)
|
|
209
|
+
- This uses your existing SSH sudo access
|
|
210
|
+
|
|
211
|
+
## Integration with AgentVibes
|
|
212
|
+
|
|
213
|
+
Once monitoring is active, AgentVibes TTS will have maximum uptime:
|
|
214
|
+
- Audio tunnel issues are detected within 5 minutes
|
|
215
|
+
- Automatic fix runs immediately
|
|
216
|
+
- Your TTS narration continues with minimal interruption
|
|
217
|
+
|
|
218
|
+
## Next Steps
|
|
219
|
+
|
|
220
|
+
After setup:
|
|
221
|
+
1. Monitor logs for the first hour to ensure it's working
|
|
222
|
+
2. Adjust `CHECK_INTERVAL` if needed
|
|
223
|
+
3. Test by manually breaking the tunnel and watching it recover
|
|
224
|
+
|
|
225
|
+
**To test recovery:**
|
|
226
|
+
```bash
|
|
227
|
+
# Break the tunnel
|
|
228
|
+
pkill socat
|
|
229
|
+
|
|
230
|
+
# Wait up to 5 minutes
|
|
231
|
+
# Check logs to see automatic recovery
|
|
232
|
+
tail -f /tmp/audio-tunnel-autofix.log
|
|
233
|
+
```
|