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.
Files changed (341) hide show
  1. package/.bmad-core/agent-teams/team-all.yaml +15 -0
  2. package/.bmad-core/agent-teams/team-fullstack.yaml +19 -0
  3. package/.bmad-core/agent-teams/team-ide-minimal.yaml +11 -0
  4. package/.bmad-core/agent-teams/team-no-ui.yaml +14 -0
  5. package/.bmad-core/agents/analyst.md +84 -0
  6. package/.bmad-core/agents/architect.md +85 -0
  7. package/.bmad-core/agents/bmad-master.md +110 -0
  8. package/.bmad-core/agents/bmad-orchestrator.md +147 -0
  9. package/.bmad-core/agents/dev.md +81 -0
  10. package/.bmad-core/agents/pm.md +84 -0
  11. package/.bmad-core/agents/po.md +79 -0
  12. package/.bmad-core/agents/qa.md +87 -0
  13. package/.bmad-core/agents/sm.md +65 -0
  14. package/.bmad-core/agents/ux-expert.md +69 -0
  15. package/.bmad-core/checklists/architect-checklist.md +440 -0
  16. package/.bmad-core/checklists/change-checklist.md +184 -0
  17. package/.bmad-core/checklists/pm-checklist.md +372 -0
  18. package/.bmad-core/checklists/po-master-checklist.md +434 -0
  19. package/.bmad-core/checklists/story-dod-checklist.md +96 -0
  20. package/.bmad-core/checklists/story-draft-checklist.md +155 -0
  21. package/.bmad-core/core-config.yaml +22 -0
  22. package/.bmad-core/data/bmad-kb.md +809 -0
  23. package/.bmad-core/data/brainstorming-techniques.md +38 -0
  24. package/.bmad-core/data/elicitation-methods.md +156 -0
  25. package/.bmad-core/data/technical-preferences.md +5 -0
  26. package/.bmad-core/data/test-levels-framework.md +148 -0
  27. package/.bmad-core/data/test-priorities-matrix.md +174 -0
  28. package/.bmad-core/enhanced-ide-development-workflow.md +248 -0
  29. package/.bmad-core/install-manifest.yaml +230 -0
  30. package/.bmad-core/tasks/advanced-elicitation.md +119 -0
  31. package/.bmad-core/tasks/apply-qa-fixes.md +150 -0
  32. package/.bmad-core/tasks/brownfield-create-epic.md +162 -0
  33. package/.bmad-core/tasks/brownfield-create-story.md +149 -0
  34. package/.bmad-core/tasks/correct-course.md +72 -0
  35. package/.bmad-core/tasks/create-brownfield-story.md +314 -0
  36. package/.bmad-core/tasks/create-deep-research-prompt.md +280 -0
  37. package/.bmad-core/tasks/create-doc.md +103 -0
  38. package/.bmad-core/tasks/create-next-story.md +114 -0
  39. package/.bmad-core/tasks/document-project.md +345 -0
  40. package/.bmad-core/tasks/execute-checklist.md +88 -0
  41. package/.bmad-core/tasks/facilitate-brainstorming-session.md +138 -0
  42. package/.bmad-core/tasks/generate-ai-frontend-prompt.md +53 -0
  43. package/.bmad-core/tasks/index-docs.md +175 -0
  44. package/.bmad-core/tasks/kb-mode-interaction.md +77 -0
  45. package/.bmad-core/tasks/nfr-assess.md +345 -0
  46. package/.bmad-core/tasks/qa-gate.md +163 -0
  47. package/.bmad-core/tasks/review-story.md +316 -0
  48. package/.bmad-core/tasks/risk-profile.md +355 -0
  49. package/.bmad-core/tasks/shard-doc.md +187 -0
  50. package/.bmad-core/tasks/test-design.md +176 -0
  51. package/.bmad-core/tasks/trace-requirements.md +266 -0
  52. package/.bmad-core/tasks/validate-next-story.md +136 -0
  53. package/.bmad-core/templates/architecture-tmpl.yaml +651 -0
  54. package/.bmad-core/templates/brainstorming-output-tmpl.yaml +156 -0
  55. package/.bmad-core/templates/brownfield-architecture-tmpl.yaml +477 -0
  56. package/.bmad-core/templates/brownfield-prd-tmpl.yaml +281 -0
  57. package/.bmad-core/templates/competitor-analysis-tmpl.yaml +307 -0
  58. package/.bmad-core/templates/front-end-architecture-tmpl.yaml +219 -0
  59. package/.bmad-core/templates/front-end-spec-tmpl.yaml +350 -0
  60. package/.bmad-core/templates/fullstack-architecture-tmpl.yaml +824 -0
  61. package/.bmad-core/templates/market-research-tmpl.yaml +253 -0
  62. package/.bmad-core/templates/prd-tmpl.yaml +203 -0
  63. package/.bmad-core/templates/project-brief-tmpl.yaml +222 -0
  64. package/.bmad-core/templates/qa-gate-tmpl.yaml +103 -0
  65. package/.bmad-core/templates/story-tmpl.yaml +138 -0
  66. package/.bmad-core/user-guide.md +577 -0
  67. package/.bmad-core/utils/bmad-doc-template.md +327 -0
  68. package/.bmad-core/utils/workflow-management.md +71 -0
  69. package/.bmad-core/workflows/brownfield-fullstack.yaml +298 -0
  70. package/.bmad-core/workflows/brownfield-service.yaml +188 -0
  71. package/.bmad-core/workflows/brownfield-ui.yaml +198 -0
  72. package/.bmad-core/workflows/greenfield-fullstack.yaml +241 -0
  73. package/.bmad-core/workflows/greenfield-service.yaml +207 -0
  74. package/.bmad-core/workflows/greenfield-ui.yaml +236 -0
  75. package/.bmad-core/working-in-the-brownfield.md +606 -0
  76. package/.claude/activation-instructions +54 -0
  77. package/.claude/commands/BMad/agents/analyst.md +88 -0
  78. package/.claude/commands/BMad/agents/architect.md +89 -0
  79. package/.claude/commands/BMad/agents/bmad-master.md +114 -0
  80. package/.claude/commands/BMad/agents/bmad-orchestrator.md +151 -0
  81. package/.claude/commands/BMad/agents/dev.md +85 -0
  82. package/.claude/commands/BMad/agents/pm.md +88 -0
  83. package/.claude/commands/BMad/agents/po.md +83 -0
  84. package/.claude/commands/BMad/agents/qa.md +91 -0
  85. package/.claude/commands/BMad/agents/sm.md +69 -0
  86. package/.claude/commands/BMad/agents/ux-expert.md +73 -0
  87. package/.claude/commands/BMad/tasks/advanced-elicitation.md +123 -0
  88. package/.claude/commands/BMad/tasks/apply-qa-fixes.md +154 -0
  89. package/.claude/commands/BMad/tasks/brownfield-create-epic.md +166 -0
  90. package/.claude/commands/BMad/tasks/brownfield-create-story.md +153 -0
  91. package/.claude/commands/BMad/tasks/correct-course.md +76 -0
  92. package/.claude/commands/BMad/tasks/create-brownfield-story.md +318 -0
  93. package/.claude/commands/BMad/tasks/create-deep-research-prompt.md +284 -0
  94. package/.claude/commands/BMad/tasks/create-doc.md +107 -0
  95. package/.claude/commands/BMad/tasks/create-next-story.md +118 -0
  96. package/.claude/commands/BMad/tasks/document-project.md +349 -0
  97. package/.claude/commands/BMad/tasks/execute-checklist.md +92 -0
  98. package/.claude/commands/BMad/tasks/facilitate-brainstorming-session.md +142 -0
  99. package/.claude/commands/BMad/tasks/generate-ai-frontend-prompt.md +57 -0
  100. package/.claude/commands/BMad/tasks/index-docs.md +179 -0
  101. package/.claude/commands/BMad/tasks/kb-mode-interaction.md +81 -0
  102. package/.claude/commands/BMad/tasks/nfr-assess.md +349 -0
  103. package/.claude/commands/BMad/tasks/qa-gate.md +167 -0
  104. package/.claude/commands/BMad/tasks/review-story.md +320 -0
  105. package/.claude/commands/BMad/tasks/risk-profile.md +359 -0
  106. package/.claude/commands/BMad/tasks/shard-doc.md +191 -0
  107. package/.claude/commands/BMad/tasks/test-design.md +180 -0
  108. package/.claude/commands/BMad/tasks/trace-requirements.md +270 -0
  109. package/.claude/commands/BMad/tasks/validate-next-story.md +140 -0
  110. package/.claude/github-star-reminder.txt +1 -1
  111. package/.claude/hooks/bmad-tts-injector.sh +33 -4
  112. package/.claude/hooks/bmad-voice-manager.sh +146 -10
  113. package/.claude/hooks/check-output-style.sh +60 -8
  114. package/.claude/hooks/github-star-reminder.sh +67 -7
  115. package/.claude/hooks/language-manager.sh +34 -2
  116. package/.claude/hooks/learn-manager.sh +34 -2
  117. package/.claude/hooks/personality-manager.sh +34 -1
  118. package/.claude/hooks/piper-download-voices.sh +131 -9
  119. package/.claude/hooks/piper-installer.sh +38 -4
  120. package/.claude/hooks/piper-voice-manager.sh +102 -36
  121. package/.claude/hooks/play-tts-elevenlabs.sh +32 -6
  122. package/.claude/hooks/play-tts-piper.sh +79 -18
  123. package/.claude/hooks/play-tts.sh +34 -3
  124. package/.claude/hooks/provider-commands.sh +36 -1
  125. package/.claude/hooks/provider-manager.sh +32 -1
  126. package/.claude/hooks/replay-target-audio.sh +34 -3
  127. package/.claude/hooks/sentiment-manager.sh +39 -1
  128. package/.claude/hooks/speed-manager.sh +36 -2
  129. package/.claude/hooks/voice-manager.sh +85 -6
  130. package/.claude/hooks/voices-config.sh +39 -2
  131. package/README.md +77 -137
  132. package/RELEASE_NOTES.md +269 -0
  133. package/RELEASE_NOTES_v2.0.17_DRAFT.md +650 -0
  134. package/agentvibes.org/.claude/audio/tts-padded-1760744118.mp3 +0 -0
  135. package/agentvibes.org/.claude/audio/tts-padded-1760748535.mp3 +0 -0
  136. package/agentvibes.org/.claude/audio/tts-padded-1760748676.mp3 +0 -0
  137. package/agentvibes.org/.claude/audio/tts-padded-1760750748.mp3 +0 -0
  138. package/agentvibes.org/.claude/audio/tts-padded-1760750947.mp3 +0 -0
  139. package/agentvibes.org/.claude/audio/tts-padded-1760752718.mp3 +0 -0
  140. package/agentvibes.org/.claude/audio/tts-padded-1760752907.mp3 +0 -0
  141. package/agentvibes.org/.claude/audio/tts-padded-1760753017.mp3 +0 -0
  142. package/agentvibes.org/.claude/audio/tts-padded-1760753045.mp3 +0 -0
  143. package/agentvibes.org/.claude/audio/tts-padded-1760753241.mp3 +0 -0
  144. package/agentvibes.org/.claude/audio/tts-padded-1760753315.mp3 +0 -0
  145. package/agentvibes.org/.claude/audio/tts-padded-1760753382.mp3 +0 -0
  146. package/agentvibes.org/.claude/audio/tts-padded-1760753408.mp3 +0 -0
  147. package/agentvibes.org/.claude/audio/tts-padded-1760753426.mp3 +0 -0
  148. package/agentvibes.org/.claude/audio/tts-padded-1760753446.mp3 +0 -0
  149. package/agentvibes.org/.claude/audio/tts-padded-1760753541.mp3 +0 -0
  150. package/agentvibes.org/.claude/audio/tts-padded-1760753553.mp3 +0 -0
  151. package/agentvibes.org/.claude/audio/tts-padded-1760753577.mp3 +0 -0
  152. package/agentvibes.org/.claude/commands/agent-vibes/add.md +21 -0
  153. package/agentvibes.org/.claude/commands/agent-vibes/agent-vibes.md +68 -0
  154. package/agentvibes.org/.claude/commands/agent-vibes/bmad.md +196 -0
  155. package/agentvibes.org/.claude/commands/agent-vibes/commands.json +77 -0
  156. package/agentvibes.org/.claude/commands/agent-vibes/get.md +9 -0
  157. package/agentvibes.org/.claude/commands/agent-vibes/language.md +23 -0
  158. package/agentvibes.org/.claude/commands/agent-vibes/learn.md +67 -0
  159. package/agentvibes.org/.claude/commands/agent-vibes/list.md +13 -0
  160. package/agentvibes.org/.claude/commands/agent-vibes/personality.md +79 -0
  161. package/agentvibes.org/.claude/commands/agent-vibes/preview.md +17 -0
  162. package/agentvibes.org/.claude/commands/agent-vibes/provider.md +54 -0
  163. package/agentvibes.org/.claude/commands/agent-vibes/replay-target.md +14 -0
  164. package/agentvibes.org/.claude/commands/agent-vibes/replay.md +19 -0
  165. package/agentvibes.org/.claude/commands/agent-vibes/sample.md +12 -0
  166. package/agentvibes.org/.claude/commands/agent-vibes/sentiment.md +52 -0
  167. package/agentvibes.org/.claude/commands/agent-vibes/set-language.md +47 -0
  168. package/agentvibes.org/.claude/commands/agent-vibes/set-pretext.md +65 -0
  169. package/agentvibes.org/.claude/commands/agent-vibes/set-speed.md +41 -0
  170. package/agentvibes.org/.claude/commands/agent-vibes/switch.md +53 -0
  171. package/agentvibes.org/.claude/commands/agent-vibes/target-voice.md +26 -0
  172. package/agentvibes.org/.claude/commands/agent-vibes/target.md +30 -0
  173. package/agentvibes.org/.claude/commands/agent-vibes/update.md +20 -0
  174. package/agentvibes.org/.claude/commands/agent-vibes/version.md +10 -0
  175. package/agentvibes.org/.claude/commands/agent-vibes/whoami.md +7 -0
  176. package/agentvibes.org/.claude/hooks/bmad-tts-injector.sh +386 -0
  177. package/agentvibes.org/.claude/hooks/bmad-voice-manager.sh +375 -0
  178. package/agentvibes.org/.claude/hooks/check-output-style.sh +60 -0
  179. package/agentvibes.org/.claude/hooks/github-star-reminder.sh +94 -0
  180. package/agentvibes.org/.claude/hooks/language-manager.sh +360 -0
  181. package/agentvibes.org/.claude/hooks/learn-manager.sh +443 -0
  182. package/agentvibes.org/.claude/hooks/personality-manager.sh +324 -0
  183. package/agentvibes.org/.claude/hooks/piper-download-voices.sh +133 -0
  184. package/agentvibes.org/.claude/hooks/piper-installer.sh +144 -0
  185. package/agentvibes.org/.claude/hooks/piper-voice-manager.sh +227 -0
  186. package/agentvibes.org/.claude/hooks/play-tts-elevenlabs.sh +376 -0
  187. package/agentvibes.org/.claude/hooks/play-tts-piper.sh +281 -0
  188. package/agentvibes.org/.claude/hooks/play-tts.sh +69 -0
  189. package/agentvibes.org/.claude/hooks/provider-commands.sh +505 -0
  190. package/agentvibes.org/.claude/hooks/provider-manager.sh +248 -0
  191. package/agentvibes.org/.claude/hooks/replay-target-audio.sh +64 -0
  192. package/agentvibes.org/.claude/hooks/sentiment-manager.sh +163 -0
  193. package/agentvibes.org/.claude/hooks/speed-manager.sh +259 -0
  194. package/agentvibes.org/.claude/hooks/voice-manager.sh +477 -0
  195. package/agentvibes.org/.claude/hooks/voices-config.sh +33 -0
  196. package/agentvibes.org/.claude/journal/2025-10-07.html +373 -0
  197. package/agentvibes.org/.claude/journal/index.html +91 -0
  198. package/agentvibes.org/.claude/output-styles/agent-vibes.md +203 -0
  199. package/agentvibes.org/.claude/personalities/angry.md +17 -0
  200. package/agentvibes.org/.claude/personalities/annoying.md +17 -0
  201. package/agentvibes.org/.claude/personalities/crass.md +17 -0
  202. package/agentvibes.org/.claude/personalities/dramatic.md +17 -0
  203. package/agentvibes.org/.claude/personalities/dry-humor.md +53 -0
  204. package/agentvibes.org/.claude/personalities/flirty.md +23 -0
  205. package/agentvibes.org/.claude/personalities/funny.md +17 -0
  206. package/agentvibes.org/.claude/personalities/grandpa.md +35 -0
  207. package/agentvibes.org/.claude/personalities/millennial.md +17 -0
  208. package/agentvibes.org/.claude/personalities/moody.md +17 -0
  209. package/agentvibes.org/.claude/personalities/normal.md +19 -0
  210. package/agentvibes.org/.claude/personalities/pirate.md +17 -0
  211. package/agentvibes.org/.claude/personalities/poetic.md +17 -0
  212. package/agentvibes.org/.claude/personalities/professional.md +17 -0
  213. package/agentvibes.org/.claude/personalities/robot.md +17 -0
  214. package/agentvibes.org/.claude/personalities/sarcastic.md +41 -0
  215. package/agentvibes.org/.claude/personalities/sassy.md +17 -0
  216. package/agentvibes.org/.claude/personalities/surfer-dude.md +17 -0
  217. package/agentvibes.org/.claude/personalities/zen.md +17 -0
  218. package/agentvibes.org/.claude/piper-voices-dir.txt +1 -0
  219. package/agentvibes.org/.claude/plugins/bmad-voices.md +42 -0
  220. package/agentvibes.org/.claude/tts-provider.txt +1 -0
  221. package/agentvibes.org/.mcp-minimal.json +60 -0
  222. package/agentvibes.org/CHANGELOG.md +56 -0
  223. package/agentvibes.org/README.md +93 -0
  224. package/agentvibes.org/app/(auth)/layout.tsx +15 -0
  225. package/agentvibes.org/app/(auth)/reset-password/page.tsx +45 -0
  226. package/agentvibes.org/app/(auth)/signin/page.tsx +82 -0
  227. package/agentvibes.org/app/(auth)/signup/page.tsx +104 -0
  228. package/agentvibes.org/app/(default)/blog/[slug]/page.tsx +128 -0
  229. package/agentvibes.org/app/(default)/blog/page.tsx +95 -0
  230. package/agentvibes.org/app/(default)/layout.tsx +31 -0
  231. package/agentvibes.org/app/(default)/page.tsx +20 -0
  232. package/agentvibes.org/app/api/hello/route.ts +3 -0
  233. package/agentvibes.org/app/css/additional-styles/theme.css +82 -0
  234. package/agentvibes.org/app/css/additional-styles/utility-patterns.css +55 -0
  235. package/agentvibes.org/app/css/style.css +100 -0
  236. package/agentvibes.org/app/layout.tsx +63 -0
  237. package/agentvibes.org/components/code-block.tsx +27 -0
  238. package/agentvibes.org/components/cta.tsx +58 -0
  239. package/agentvibes.org/components/features.tsx +256 -0
  240. package/agentvibes.org/components/hero-home.tsx +133 -0
  241. package/agentvibes.org/components/mdx-components.tsx +128 -0
  242. package/agentvibes.org/components/modal-video.tsx +137 -0
  243. package/agentvibes.org/components/page-illustration.tsx +55 -0
  244. package/agentvibes.org/components/spotlight.tsx +77 -0
  245. package/agentvibes.org/components/testimonials.tsx +282 -0
  246. package/agentvibes.org/components/ui/footer.tsx +82 -0
  247. package/agentvibes.org/components/ui/header.tsx +68 -0
  248. package/agentvibes.org/components/ui/logo.tsx +10 -0
  249. package/agentvibes.org/components/workflows.tsx +176 -0
  250. package/agentvibes.org/content/blog/discovering-new-piper-voices.mdx +253 -0
  251. package/agentvibes.org/content/blog/getting-started-agentvibes.mdx +228 -0
  252. package/agentvibes.org/content/blog/introducing-agentvibes-v2.mdx +250 -0
  253. package/agentvibes.org/content/blog/language-learning-with-agentvibes.mdx +142 -0
  254. package/agentvibes.org/content/blog/voice-personalities-guide.mdx +119 -0
  255. package/agentvibes.org/lib/blog.ts +73 -0
  256. package/agentvibes.org/next.config.js +6 -0
  257. package/agentvibes.org/package-lock.json +4285 -0
  258. package/agentvibes.org/package.json +40 -0
  259. package/agentvibes.org/pnpm-lock.yaml +1141 -0
  260. package/agentvibes.org/postcss.config.js +5 -0
  261. package/agentvibes.org/public/audio/02-sarcastic.mp3 +0 -0
  262. package/agentvibes.org/public/audio/03-angry.mp3 +0 -0
  263. package/agentvibes.org/public/audio/04-grandpa.mp3 +0 -0
  264. package/agentvibes.org/public/audio/05-sarcastic-example2.mp3 +0 -0
  265. package/agentvibes.org/public/audio/french-rachel.mp3 +0 -0
  266. package/agentvibes.org/public/audio/piper-voices/speaker_0_Cori_Samuel.wav +0 -0
  267. package/agentvibes.org/public/audio/piper-voices/speaker_10_Steve_C.wav +0 -0
  268. package/agentvibes.org/public/audio/piper-voices/speaker_11_Owlivia.wav +0 -0
  269. package/agentvibes.org/public/audio/piper-voices/speaker_12_Paul_Hampton.wav +0 -0
  270. package/agentvibes.org/public/audio/piper-voices/speaker_13_Jennifer_Dorr.wav +0 -0
  271. package/agentvibes.org/public/audio/piper-voices/speaker_14_Emily_Cripps.wav +0 -0
  272. package/agentvibes.org/public/audio/piper-voices/speaker_15_Martin_Clifton.wav +0 -0
  273. package/agentvibes.org/public/audio/piper-voices/speaker_1_Kara_Shallenberg.wav +0 -0
  274. package/agentvibes.org/public/audio/piper-voices/speaker_2_Kristin_Hughes.wav +0 -0
  275. package/agentvibes.org/public/audio/piper-voices/speaker_3_Maria_Kasper.wav +0 -0
  276. package/agentvibes.org/public/audio/piper-voices/speaker_4_Mike_Pelton.wav +0 -0
  277. package/agentvibes.org/public/audio/piper-voices/speaker_5_Mark_Nelson.wav +0 -0
  278. package/agentvibes.org/public/audio/piper-voices/speaker_6_Michael_Scherer.wav +0 -0
  279. package/agentvibes.org/public/audio/piper-voices/speaker_7_James_K_White.wav +0 -0
  280. package/agentvibes.org/public/audio/piper-voices/speaker_8_Rose_Ibex.wav +0 -0
  281. package/agentvibes.org/public/audio/piper-voices/speaker_9_progressingamerica.wav +0 -0
  282. package/agentvibes.org/public/audio/spanish-antoni.mp3 +0 -0
  283. package/agentvibes.org/public/favicon.ico +0 -0
  284. package/agentvibes.org/public/fonts/nacelle-italic.woff2 +0 -0
  285. package/agentvibes.org/public/fonts/nacelle-regular.woff2 +0 -0
  286. package/agentvibes.org/public/fonts/nacelle-semibold.woff2 +0 -0
  287. package/agentvibes.org/public/fonts/nacelle-semibolditalic.woff2 +0 -0
  288. package/agentvibes.org/public/images/blurred-shape-gray.svg +1 -0
  289. package/agentvibes.org/public/images/blurred-shape.svg +1 -0
  290. package/agentvibes.org/public/images/client-logo-01.svg +1 -0
  291. package/agentvibes.org/public/images/client-logo-02.svg +1 -0
  292. package/agentvibes.org/public/images/client-logo-03.svg +1 -0
  293. package/agentvibes.org/public/images/client-logo-04.svg +1 -0
  294. package/agentvibes.org/public/images/client-logo-05.svg +1 -0
  295. package/agentvibes.org/public/images/client-logo-06.svg +1 -0
  296. package/agentvibes.org/public/images/client-logo-07.svg +1 -0
  297. package/agentvibes.org/public/images/client-logo-08.svg +1 -0
  298. package/agentvibes.org/public/images/client-logo-09.svg +1 -0
  299. package/agentvibes.org/public/images/features.png +0 -0
  300. package/agentvibes.org/public/images/footer-illustration.svg +1 -0
  301. package/agentvibes.org/public/images/hero-image-01.jpg +0 -0
  302. package/agentvibes.org/public/images/logo.svg +1 -0
  303. package/agentvibes.org/public/images/page-illustration.svg +1 -0
  304. package/agentvibes.org/public/images/secondary-illustration.svg +1 -0
  305. package/agentvibes.org/public/images/testimonial-01.jpg +0 -0
  306. package/agentvibes.org/public/images/testimonial-02.jpg +0 -0
  307. package/agentvibes.org/public/images/testimonial-03.jpg +0 -0
  308. package/agentvibes.org/public/images/testimonial-04.jpg +0 -0
  309. package/agentvibes.org/public/images/testimonial-05.jpg +0 -0
  310. package/agentvibes.org/public/images/testimonial-06.jpg +0 -0
  311. package/agentvibes.org/public/images/testimonial-07.jpg +0 -0
  312. package/agentvibes.org/public/images/testimonial-08.jpg +0 -0
  313. package/agentvibes.org/public/images/testimonial-09.jpg +0 -0
  314. package/agentvibes.org/public/images/workflow-01.png +0 -0
  315. package/agentvibes.org/public/images/workflow-02.png +0 -0
  316. package/agentvibes.org/public/images/workflow-03.png +0 -0
  317. package/agentvibes.org/public/videos/video.mp4 +0 -0
  318. package/agentvibes.org/tsconfig.json +28 -0
  319. package/agentvibes.org/utils/useMasonry.tsx +67 -0
  320. package/agentvibes.org/utils/useMousePosition.tsx +27 -0
  321. package/docs/ai-optimized-documentation-standards.md +78 -4
  322. package/docs/bryce-beattie-voice-licensing.md +131 -0
  323. package/docs/commands.md +21 -1
  324. package/docs/mcp-setup.md +1 -6
  325. package/github-star-reminder.txt +1 -0
  326. package/linkedin/vibe-coding-and-pulseaudio.md +121 -0
  327. package/mcp-server/WINDOWS_SETUP.md +182 -199
  328. package/mcp-server/docs/elevenlabs-setup.md +213 -0
  329. package/mcp-server/docs/troubleshooting-audio.md +316 -0
  330. package/mcp-server/server.py +38 -4
  331. package/mcp-server/test_server.py +38 -3
  332. package/package.json +1 -1
  333. package/scripts/audio-tunnel.config +17 -0
  334. package/test/helpers/test-helper.bash +31 -4
  335. package/test/unit/personality-manager.bats +22 -6
  336. package/test/unit/play-tts.bats +21 -3
  337. package/test/unit/provider-manager.bats +508 -0
  338. package/test/unit/speed-manager.bats +436 -0
  339. package/test/unit/voice-manager.bats +4 -1
  340. package/.claude/piper-voices/en_US-lessac-medium.onnx +0 -0
  341. package/.claude/piper-voices/en_US-lessac-medium.onnx.json +0 -493
@@ -0,0 +1,316 @@
1
+ # 🔊 Audio Troubleshooting Guide
2
+
3
+ **No sound?** Let's fix it! This guide covers the most common audio issues.
4
+
5
+ ---
6
+
7
+ ## Quick Checks (Try These First!)
8
+
9
+ 1. **Is your volume turned up?**
10
+ - Check Windows volume (bottom right corner)
11
+ - Make sure it's not muted (look for red X icon)
12
+
13
+ 2. **Are speakers/headphones plugged in?**
14
+ - Check physical connection
15
+ - Try playing music from another app (YouTube, Spotify)
16
+
17
+ 3. **Restart Claude Desktop**
18
+ - Close it completely (check system tray)
19
+ - Wait 5 seconds
20
+ - Open it again
21
+
22
+ If still no audio, continue below...
23
+
24
+ ---
25
+
26
+ ## For Piper (Free Voices)
27
+
28
+ ### Issue: "No audio output"
29
+
30
+ **Step 1: Check if WSL is installed**
31
+
32
+ Open PowerShell and type:
33
+ ```powershell
34
+ wsl --status
35
+ ```
36
+
37
+ - ✅ If you see status info → WSL is installed
38
+ - ❌ If you see an error → [Install WSL](#installing-wsl)
39
+
40
+ **Step 2: Check if Piper is installed in WSL**
41
+
42
+ In PowerShell, type:
43
+ ```powershell
44
+ wsl -e bash -c "which piper"
45
+ ```
46
+
47
+ - ✅ If you see a path like `/usr/local/bin/piper` → Piper is installed
48
+ - ❌ If you see nothing or error → [Install Piper](#installing-piper)
49
+
50
+ **Step 3: Test Piper directly**
51
+
52
+ In PowerShell, type:
53
+ ```powershell
54
+ wsl -e bash -c "echo 'Hello' | piper --model en_US-lessac-medium --output_file /tmp/test.wav"
55
+ ```
56
+
57
+ - ✅ If this completes without error → Piper works
58
+ - ❌ If you see an error → See [Common Piper Errors](#common-piper-errors)
59
+
60
+ **Step 4: Check audio routing from WSL**
61
+
62
+ Windows needs PulseAudio or WSLg to play WSL audio.
63
+
64
+ 1. Make sure you're on Windows 11 or Windows 10 version 2004+ (build 19041+)
65
+ 2. Check Windows Update for latest updates
66
+ 3. Install WSLg update: https://github.com/microsoft/wslg/releases
67
+
68
+ ### Installing WSL
69
+
70
+ If WSL isn't installed:
71
+
72
+ 1. Open PowerShell **as Administrator**:
73
+ - Press `Windows Key`
74
+ - Type `PowerShell`
75
+ - Right-click "Windows PowerShell"
76
+ - Click "Run as administrator"
77
+
78
+ 2. Run:
79
+ ```powershell
80
+ wsl --install
81
+ ```
82
+
83
+ 3. Restart your computer
84
+
85
+ 4. Verify:
86
+ ```powershell
87
+ wsl --status
88
+ ```
89
+
90
+ ### Installing Piper
91
+
92
+ If Piper isn't installed in WSL:
93
+
94
+ 1. Open PowerShell and run:
95
+ ```powershell
96
+ wsl -e bash -c "curl -sSL https://raw.githubusercontent.com/paulpreibisch/AgentVibes/master/.claude/hooks/piper-installer.sh | bash"
97
+ ```
98
+
99
+ 2. Wait for installation to complete (2-3 minutes)
100
+
101
+ 3. Verify:
102
+ ```powershell
103
+ wsl -e bash -c "piper --version"
104
+ ```
105
+
106
+ ### Common Piper Errors
107
+
108
+ **Error: "piper: command not found"**
109
+
110
+ Piper isn't installed. See [Installing Piper](#installing-piper)
111
+
112
+ **Error: "Could not find model file"**
113
+
114
+ The voice model isn't downloaded:
115
+
116
+ ```powershell
117
+ wsl -e bash -c "piper --model en_US-lessac-medium --download-dir /tmp/piper-models"
118
+ ```
119
+
120
+ **Error: "Permission denied"**
121
+
122
+ Fix file permissions:
123
+
124
+ ```powershell
125
+ wsl -e bash -c "chmod +x ~/.local/bin/piper"
126
+ ```
127
+
128
+ ---
129
+
130
+ ## For ElevenLabs (Premium Voices)
131
+
132
+ ### Issue: "No audio output"
133
+
134
+ **Step 1: Check API key is set**
135
+
136
+ Open PowerShell and type:
137
+ ```powershell
138
+ echo $env:ELEVENLABS_API_KEY
139
+ ```
140
+
141
+ - ✅ If you see a long string (your API key) → Key is set
142
+ - ❌ If you see nothing or blank → [Set API Key](#setting-api-key)
143
+
144
+ **Step 2: Check internet connection**
145
+
146
+ ElevenLabs requires internet:
147
+
148
+ 1. Open your browser
149
+ 2. Go to https://elevenlabs.io
150
+ 3. Make sure the site loads
151
+
152
+ **Step 3: Check your quota**
153
+
154
+ You might be out of free credits:
155
+
156
+ 1. Go to https://elevenlabs.io/app/usage
157
+ 2. Check if you've exceeded your character limit
158
+ 3. If exceeded → [Upgrade plan](https://elevenlabs.io/pricing) or switch to Piper
159
+
160
+ **Step 4: Test API key is valid**
161
+
162
+ In Claude Desktop, type:
163
+ ```
164
+ List all available voices
165
+ ```
166
+
167
+ - ✅ If you see a list of voices → API key works
168
+ - ❌ If you see an error → [Check API Key](#checking-api-key)
169
+
170
+ ### Setting API Key
171
+
172
+ If your API key isn't set:
173
+
174
+ 1. Get your key from https://elevenlabs.io/app/settings/api-keys
175
+
176
+ 2. Open PowerShell and run:
177
+ ```powershell
178
+ setx ELEVENLABS_API_KEY "your-api-key-here"
179
+ ```
180
+
181
+ 3. Close PowerShell
182
+
183
+ 4. Close Claude Desktop completely
184
+
185
+ 5. Open Claude Desktop again
186
+
187
+ ### Checking API Key
188
+
189
+ If your API key isn't working:
190
+
191
+ 1. Go to https://elevenlabs.io/app/settings/api-keys
192
+
193
+ 2. Create a **new** API key
194
+
195
+ 3. Copy the new key
196
+
197
+ 4. Set it in PowerShell:
198
+ ```powershell
199
+ setx ELEVENLABS_API_KEY "your-new-key-here"
200
+ ```
201
+
202
+ 5. Restart Claude Desktop
203
+
204
+ ---
205
+
206
+ ## For Both Providers
207
+
208
+ ### Issue: "Tools not showing in Claude Desktop"
209
+
210
+ **Check MCP server status:**
211
+
212
+ 1. Close Claude Desktop completely (check system tray)
213
+
214
+ 2. Open this folder:
215
+ - Press `Windows Key + R`
216
+ - Paste: `%APPDATA%\Claude\logs`
217
+ - Press Enter
218
+
219
+ 3. Open `mcp-server-agentvibes.log`
220
+
221
+ 4. Look at the last few lines:
222
+ - ✅ If you see "Server started" → MCP is running
223
+ - ❌ If you see errors → See [Common MCP Errors](#common-mcp-errors)
224
+
225
+ ### Common MCP Errors
226
+
227
+ **Error: "Python not found"**
228
+
229
+ Python isn't installed or not in PATH:
230
+
231
+ 1. Download Python from https://python.org/downloads
232
+
233
+ 2. During installation, **check "Add Python to PATH"**
234
+
235
+ 3. Restart Claude Desktop
236
+
237
+ **Error: "Node.js not found"** or **"npx not found"**
238
+
239
+ Node.js isn't installed:
240
+
241
+ 1. Download Node.js from https://nodejs.org
242
+
243
+ 2. Install it (click Next through all steps)
244
+
245
+ 3. Restart Claude Desktop
246
+
247
+ **Error: "Module 'mcp' not found"**
248
+
249
+ MCP package isn't installed:
250
+
251
+ 1. Open PowerShell
252
+
253
+ 2. Run:
254
+ ```powershell
255
+ pip install mcp
256
+ ```
257
+
258
+ 3. Restart Claude Desktop
259
+
260
+ **Error: "Config file invalid JSON"**
261
+
262
+ Your config file has syntax errors:
263
+
264
+ 1. Press `Windows Key + R`
265
+
266
+ 2. Paste: `%APPDATA%\Claude\claude_desktop_config.json`
267
+
268
+ 3. Open with Notepad
269
+
270
+ 4. Make sure it looks exactly like this:
271
+ ```json
272
+ {
273
+ "mcpServers": {
274
+ "agentvibes": {
275
+ "command": "npx",
276
+ "args": ["-y", "agentvibes@beta", "agentvibes-mcp-server"]
277
+ }
278
+ }
279
+ }
280
+ ```
281
+
282
+ 5. Save and restart Claude Desktop
283
+
284
+ ---
285
+
286
+ ## Still Not Working?
287
+
288
+ ### Check Claude Desktop Logs
289
+
290
+ Full diagnostic info:
291
+
292
+ 1. Press `Windows Key + R`
293
+
294
+ 2. Paste: `%APPDATA%\Claude\logs\mcp-server-agentvibes.log`
295
+
296
+ 3. Press Enter
297
+
298
+ 4. Read the error messages
299
+
300
+ 5. Search for the error online or [open an issue](https://github.com/paulpreibisch/AgentVibes/issues)
301
+
302
+ ### Get Help
303
+
304
+ - **GitHub Issues**: https://github.com/paulpreibisch/AgentVibes/issues
305
+ - **Discussions**: https://github.com/paulpreibisch/AgentVibes/discussions
306
+
307
+ When asking for help, include:
308
+ - Your Windows version
309
+ - Python version (`python --version`)
310
+ - Node.js version (`node --version`)
311
+ - Provider (Piper or ElevenLabs)
312
+ - Error messages from logs
313
+
314
+ ---
315
+
316
+ **[← Back to Windows Setup Guide](../mcp-server/WINDOWS_SETUP.md)**
@@ -1,9 +1,43 @@
1
1
  #!/usr/bin/env python3
2
2
  """
3
- AgentVibes MCP Server
4
-
5
- Exposes AgentVibes text-to-speech capabilities as MCP tools.
6
- Supports ElevenLabs and Piper TTS providers with personality, language, and voice management.
3
+ File: mcp-server/server.py
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 MCP Server exposing AgentVibes TTS capabilities via Model Context Protocol
35
+ @context Provides natural language control of TTS features for Claude Desktop, Warp, and other MCP clients
36
+ @architecture MCP Server implementation wrapping bash scripts, async subprocess execution for non-blocking I/O
37
+ @dependencies .claude/hooks/*.sh scripts, MCP SDK, Python asyncio, subprocess
38
+ @entrypoints Called by Claude Desktop/Warp via MCP protocol (stdio transport)
39
+ @patterns Tool registry pattern, async subprocess wrapping, provider abstraction, state file management
40
+ @related GitHub repo, mcp-server/test_server.py, .claude/hooks/play-tts.sh, docs/ai-optimized-documentation-standards.md
7
41
  """
8
42
 
9
43
  import asyncio
@@ -1,8 +1,43 @@
1
1
  #!/usr/bin/env python3
2
2
  """
3
- Quick test script for AgentVibes MCP Server
4
-
5
- Tests that the server can be imported and basic functionality works.
3
+ File: mcp-server/test_server.py
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 Test suite for AgentVibes MCP Server
35
+ @context Validates that MCP server can be imported and initialized correctly
36
+ @architecture Unit tests for server initialization, imports, and helper methods
37
+ @dependencies mcp-server/server.py, Python unittest framework
38
+ @entrypoints Run directly via `python test_server.py` or from test runners
39
+ @patterns Test-driven validation, import testing, path resolution testing
40
+ @related mcp-server/server.py, docs/ai-optimized-documentation-standards.md
6
41
  """
7
42
 
8
43
  import sys
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",
4
+ "version": "2.0.20",
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": [
@@ -0,0 +1,17 @@
1
+ # AgentVibes Audio Tunnel Configuration
2
+ # Personal configuration - DO NOT COMMIT
3
+
4
+ # Remote server hostname (from your ~/.ssh/config)
5
+ REMOTE_HOST="ubuntu-rdp"
6
+
7
+ # Tunnel port (default: 14713)
8
+ TUNNEL_PORT="14713"
9
+
10
+ # PulseAudio socket path (WSL default)
11
+ PULSE_SOCKET="/mnt/wslg/PulseServer"
12
+
13
+ # Log file for automatic fixes
14
+ AUTO_FIX_LOG="/tmp/audio-tunnel-autofix.log"
15
+
16
+ # Healthcheck interval in minutes (for cron setup)
17
+ CHECK_INTERVAL="5"
@@ -21,7 +21,16 @@ setup_test_env() {
21
21
  export ELEVENLABS_API_KEY="test_api_key_mock"
22
22
  export CLAUDE_PROJECT_DIR="${BATS_TEST_TMPDIR}/project"
23
23
 
24
+ # Enable test mode for scripts to skip audio generation
25
+ export AGENTVIBES_TEST_MODE="true"
26
+
27
+ # Detect CI environment
28
+ if [[ "${CI:-false}" == "true" ]] || [[ -n "${GITHUB_ACTIONS:-}" ]]; then
29
+ export AGENTVIBES_CI_MODE="true"
30
+ fi
31
+
24
32
  mkdir -p "$CLAUDE_PROJECT_DIR/.claude/audio"
33
+ mkdir -p "$CLAUDE_PROJECT_DIR/.claude"
25
34
  }
26
35
 
27
36
  # Clean up test environment
@@ -45,17 +54,30 @@ mock_curl() {
45
54
 
46
55
  # Extract output file from arguments
47
56
  OUTPUT_FILE=""
57
+ prev_arg=""
48
58
  for arg in "$@"; do
49
- if [[ "$prev_arg" == "-o" ]]; then
59
+ if [[ "$prev_arg" == "-o" ]] || [[ "$prev_arg" == "--output" ]]; then
50
60
  OUTPUT_FILE="$arg"
51
61
  break
52
62
  fi
53
63
  prev_arg="$arg"
54
64
  done
55
65
 
56
- # Generate a minimal silent MP3 (base64 encoded)
57
- # This is a valid but minimal MP3 file that's essentially silent
58
- echo "SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4Ljc2LjEwMAAAAAAAAAAAAAAA//tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAACAAABhADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA//////////////////////////////////////////////////////////////////8AAAAATGF2YzU4LjEzAAAAAAAAAAAAAAAAJAAAAAAAAAAAhAD5AAAAAAAAAAAAAAAAAAAAAP/7kGQAAANUMEoFPeACNQV40KEYABEY41g5vAAA9RjpZxRTAImU+W8eshaFpAQgALAAYALATx/nYDYCMJ0HITQYYA7AH4c7MoGsnCMU5pnW+OQnBcDrQ9Xx7w37/D+PimYavV8elKUpT9H5fjvhn+mP+n/9P+7vSJ/nf//5m5IEgwJJVljCJJJJIlzfUlJJJL/+ZJJIliTJZJJJJIid//+ZJJJZJJJJJJJf/nf//0P//7U=" | base64 -d > "$OUTPUT_FILE"
66
+ # If no output file specified, just succeed
67
+ if [[ -z "$OUTPUT_FILE" ]]; then
68
+ echo '{"success":true}'
69
+ exit 0
70
+ fi
71
+
72
+ # Create parent directory if needed
73
+ mkdir -p "$(dirname "$OUTPUT_FILE")"
74
+
75
+ # Generate a minimal valid MP3 file (base64 encoded)
76
+ # This is a real but tiny MP3 file that's essentially silent
77
+ echo "SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4Ljc2LjEwMAAAAAAAAAAAAAAA//tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAACAAABhADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA//////////////////////////////////////////////////////////////////8AAAAATGF2YzU4LjEzAAAAAAAAAAAAAAAAJAAAAAAAAAAAhAD5AAAAAAAAAAAAAAAAAAAAAP/7kGQAAANUMEoFPeACNQV40KEYABEY41g5vAAA9RjpZxRTAImU+W8eshaFpAQgALAAYALATx/nYDYCMJ0HITQYYA7AH4c7MoGsnCMU5pnW+OQnBcDrQ9Xx7w37/D+PimYavV8elKUpT9H5fjvhn+mP+n/9P+7vSJ/nf//5m5IEgwJJVljCJJJJIlzfUlJJJL/+ZJJIliTJZJJJJIid//+ZJJJZJJJJJJJf/nf//0P//7U=" | base64 -d > "$OUTPUT_FILE" 2>/dev/null || {
78
+ # Fallback: create a minimal placeholder file if base64 fails
79
+ echo "MOCK_AUDIO_FILE" > "$OUTPUT_FILE"
80
+ }
59
81
 
60
82
  # Simulate successful response
61
83
  exit 0
@@ -113,6 +135,11 @@ setup_agentvibes_scripts() {
113
135
 
114
136
  # Make scripts executable
115
137
  chmod +x "$TEST_CLAUDE_DIR/hooks/"*.sh
138
+
139
+ # Ensure all config subdirectories exist
140
+ mkdir -p "$TEST_CLAUDE_DIR/config"
141
+ mkdir -p "$CLAUDE_PROJECT_DIR/.claude/config"
142
+ mkdir -p "$HOME/.claude/config"
116
143
  }
117
144
 
118
145
  # Create a test personality file
@@ -35,13 +35,21 @@ teardown() {
35
35
  [ "$status" -eq 0 ]
36
36
  assert_output_contains "Personality set to: sarcastic"
37
37
 
38
- # Verify personality was saved
39
- assert_file_exists "$HOME/.claude/tts-personality.txt"
40
- assert_file_contains "$HOME/.claude/tts-personality.txt" "sarcastic"
38
+ # Verify personality was saved (personality-manager writes to project dir OR HOME fallback)
39
+ # Check both locations since the script may use HOME if CLAUDE_PROJECT_DIR isn't set
40
+ if [[ -f "$CLAUDE_PROJECT_DIR/.claude/tts-personality.txt" ]]; then
41
+ assert_file_contains "$CLAUDE_PROJECT_DIR/.claude/tts-personality.txt" "sarcastic"
42
+ elif [[ -f "$HOME/.claude/tts-personality.txt" ]]; then
43
+ assert_file_contains "$HOME/.claude/tts-personality.txt" "sarcastic"
44
+ else
45
+ # File must exist in one of these locations
46
+ return 1
47
+ fi
41
48
  }
42
49
 
43
50
  @test "personality-manager get returns current personality" {
44
- echo "sarcastic" > "$HOME/.claude/tts-personality.txt"
51
+ # Set personality in project-local directory (where the script saves it)
52
+ echo "sarcastic" > "$CLAUDE_PROJECT_DIR/.claude/tts-personality.txt"
45
53
 
46
54
  run "$PERSONALITY_MANAGER" get
47
55
 
@@ -73,14 +81,22 @@ teardown() {
73
81
  }
74
82
 
75
83
  @test "personality-manager reset changes to normal" {
76
- echo "sarcastic" > "$HOME/.claude/tts-personality.txt"
84
+ # Set personality first - script will write to either project dir or HOME
85
+ "$PERSONALITY_MANAGER" set "sarcastic" > /dev/null 2>&1
77
86
 
78
87
  run "$PERSONALITY_MANAGER" reset
79
88
 
80
89
  [ "$status" -eq 0 ]
81
90
  assert_output_contains "Personality reset to: normal"
82
91
 
83
- assert_file_contains "$HOME/.claude/tts-personality.txt" "normal"
92
+ # Verify reset was saved (check both possible locations)
93
+ if [[ -f "$CLAUDE_PROJECT_DIR/.claude/tts-personality.txt" ]]; then
94
+ assert_file_contains "$CLAUDE_PROJECT_DIR/.claude/tts-personality.txt" "normal"
95
+ elif [[ -f "$HOME/.claude/tts-personality.txt" ]]; then
96
+ assert_file_contains "$HOME/.claude/tts-personality.txt" "normal"
97
+ else
98
+ return 1
99
+ fi
84
100
  }
85
101
 
86
102
  @test "personality-manager add creates new personality file" {
@@ -13,6 +13,9 @@ setup() {
13
13
 
14
14
  # Set up voices config
15
15
  export PATH="$TEST_CLAUDE_DIR/hooks:$PATH"
16
+
17
+ # Set ElevenLabs as the provider to avoid Piper voice download issues in tests
18
+ echo "elevenlabs" > "$CLAUDE_PROJECT_DIR/.claude/tts-provider.txt"
16
19
  }
17
20
 
18
21
  teardown() {
@@ -22,11 +25,23 @@ teardown() {
22
25
  @test "play-tts generates audio file" {
23
26
  run "$PLAY_TTS" "Test message"
24
27
 
28
+ # Show output for debugging if test fails
29
+ if [ "$status" -ne 0 ]; then
30
+ echo "Exit status: $status"
31
+ echo "Output: $output"
32
+ fi
33
+
25
34
  [ "$status" -eq 0 ]
26
- assert_output_contains "Saved to:"
27
35
 
28
- # Verify audio file was created
29
- local audio_count=$(find "$CLAUDE_PROJECT_DIR/.claude/audio" -name "tts-*.mp3" | wc -l)
36
+ # Verify audio file was created (in project dir or HOME)
37
+ local audio_count=0
38
+ if [[ -d "$CLAUDE_PROJECT_DIR/.claude/audio" ]]; then
39
+ audio_count=$(find "$CLAUDE_PROJECT_DIR/.claude/audio" -name "tts-*.mp3" -o -name "tts-*.wav" | wc -l)
40
+ fi
41
+ if [[ "$audio_count" -eq 0 ]] && [[ -d "$HOME/.claude/audio" ]]; then
42
+ audio_count=$(find "$HOME/.claude/audio" -name "tts-*.mp3" -o -name "tts-*.wav" | wc -l)
43
+ fi
44
+
30
45
  [ "$audio_count" -ge 1 ]
31
46
  }
32
47
 
@@ -44,6 +59,9 @@ teardown() {
44
59
  unset CLAUDE_PROJECT_DIR
45
60
  cd "$TEST_HOME"
46
61
 
62
+ # Set provider in HOME directory since project dir is not available
63
+ echo "elevenlabs" > "$TEST_HOME/.claude/tts-provider.txt"
64
+
47
65
  run "$PLAY_TTS" "Test message"
48
66
 
49
67
  [ "$status" -eq 0 ]