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,508 @@
1
+ #!/usr/bin/env bats
2
+ # Unit tests for provider-manager.sh
3
+
4
+ load ../helpers/test-helper
5
+
6
+ setup() {
7
+ setup_test_env
8
+ setup_agentvibes_scripts
9
+ mock_curl
10
+ mock_audio_players
11
+
12
+ PROVIDER_MANAGER="$TEST_CLAUDE_DIR/hooks/provider-manager.sh"
13
+ PROVIDER_FILE="$CLAUDE_PROJECT_DIR/.claude/tts-provider.txt"
14
+ VOICE_FILE="$CLAUDE_PROJECT_DIR/.claude/tts-voice.txt"
15
+ }
16
+
17
+ teardown() {
18
+ teardown_test_env
19
+ }
20
+
21
+ # ============================================================================
22
+ # Provider Listing Tests
23
+ # ============================================================================
24
+
25
+ @test "provider-manager list shows available providers" {
26
+ run "$PROVIDER_MANAGER" list
27
+
28
+ [ "$status" -eq 0 ]
29
+
30
+ # Should show at least elevenlabs and piper
31
+ assert_output_contains "elevenlabs"
32
+ assert_output_contains "piper"
33
+ }
34
+
35
+ @test "provider-manager list finds providers from play-tts files" {
36
+ run "$PROVIDER_MANAGER" list
37
+
38
+ [ "$status" -eq 0 ]
39
+
40
+ # Verify it's detecting actual provider scripts
41
+ # Both elevenlabs and piper should be present
42
+ [[ "$output" =~ "elevenlabs" ]]
43
+ [[ "$output" =~ "piper" ]]
44
+ }
45
+
46
+ @test "provider-manager list works with no providers (edge case)" {
47
+ # Temporarily rename provider files to test no providers case
48
+ local hooks_dir="$TEST_CLAUDE_DIR/hooks"
49
+ mv "$hooks_dir/play-tts-elevenlabs.sh" "$hooks_dir/play-tts-elevenlabs.sh.bak" 2>/dev/null || true
50
+ mv "$hooks_dir/play-tts-piper.sh" "$hooks_dir/play-tts-piper.sh.bak" 2>/dev/null || true
51
+
52
+ run "$PROVIDER_MANAGER" list
53
+
54
+ [ "$status" -eq 0 ]
55
+ assert_output_contains "No providers found"
56
+
57
+ # Restore files
58
+ mv "$hooks_dir/play-tts-elevenlabs.sh.bak" "$hooks_dir/play-tts-elevenlabs.sh" 2>/dev/null || true
59
+ mv "$hooks_dir/play-tts-piper.sh.bak" "$hooks_dir/play-tts-piper.sh" 2>/dev/null || true
60
+ }
61
+
62
+ # ============================================================================
63
+ # Provider Switching Tests
64
+ # ============================================================================
65
+
66
+ @test "provider-manager switch to elevenlabs" {
67
+ run "$PROVIDER_MANAGER" switch "elevenlabs"
68
+
69
+ [ "$status" -eq 0 ]
70
+ assert_output_contains "Active provider set to: elevenlabs"
71
+
72
+ # Verify provider was saved
73
+ assert_file_exists "$PROVIDER_FILE"
74
+ assert_file_contains "$PROVIDER_FILE" "elevenlabs"
75
+ }
76
+
77
+ @test "provider-manager switch to piper" {
78
+ run "$PROVIDER_MANAGER" switch "piper"
79
+
80
+ [ "$status" -eq 0 ]
81
+ assert_output_contains "Active provider set to: piper"
82
+
83
+ assert_file_exists "$PROVIDER_FILE"
84
+ assert_file_contains "$PROVIDER_FILE" "piper"
85
+ }
86
+
87
+ @test "provider-manager set command works like switch" {
88
+ run "$PROVIDER_MANAGER" set "elevenlabs"
89
+
90
+ [ "$status" -eq 0 ]
91
+ assert_output_contains "Active provider set to: elevenlabs"
92
+ assert_file_contains "$PROVIDER_FILE" "elevenlabs"
93
+ }
94
+
95
+ @test "provider-manager switch with invalid provider fails" {
96
+ run "$PROVIDER_MANAGER" switch "nonexistent"
97
+
98
+ [ "$status" -eq 1 ]
99
+ assert_output_contains "Error: Provider 'nonexistent' not found"
100
+ assert_output_contains "Available providers:"
101
+ }
102
+
103
+ @test "provider-manager switch requires provider name" {
104
+ run "$PROVIDER_MANAGER" switch
105
+
106
+ [ "$status" -eq 1 ]
107
+ assert_output_contains "Error: Provider name required"
108
+ }
109
+
110
+ @test "provider-manager switch resets voice to default" {
111
+ # Set a voice first
112
+ echo "TestVoice" > "$VOICE_FILE"
113
+
114
+ run "$PROVIDER_MANAGER" switch "piper"
115
+
116
+ [ "$status" -eq 0 ]
117
+ assert_output_contains "voice reset to default"
118
+
119
+ # Voice file should be removed
120
+ [[ ! -f "$VOICE_FILE" ]]
121
+ }
122
+
123
+ @test "provider-manager switching providers removes voice file" {
124
+ # Create voice file
125
+ mkdir -p "$(dirname "$VOICE_FILE")"
126
+ echo "Jessica Anne Bogart" > "$VOICE_FILE"
127
+
128
+ "$PROVIDER_MANAGER" switch "elevenlabs"
129
+
130
+ # Voice file should be removed to force default for new provider
131
+ [[ ! -f "$VOICE_FILE" ]]
132
+ }
133
+
134
+ # ============================================================================
135
+ # Provider Persistence Tests
136
+ # ============================================================================
137
+
138
+ @test "provider-manager provider setting persists" {
139
+ # Set provider
140
+ "$PROVIDER_MANAGER" switch "elevenlabs"
141
+
142
+ # Read it back
143
+ run "$PROVIDER_MANAGER" get
144
+
145
+ [ "$status" -eq 0 ]
146
+ [[ "$output" =~ "elevenlabs" ]]
147
+ }
148
+
149
+ @test "provider-manager multiple switches persist correctly" {
150
+ # Switch back and forth
151
+ "$PROVIDER_MANAGER" switch "elevenlabs"
152
+ "$PROVIDER_MANAGER" switch "piper"
153
+
154
+ run "$PROVIDER_MANAGER" get
155
+
156
+ [ "$status" -eq 0 ]
157
+ [[ "$output" =~ "piper" ]]
158
+ }
159
+
160
+ # ============================================================================
161
+ # Provider Detection Tests
162
+ # ============================================================================
163
+
164
+ @test "provider-manager get returns current provider" {
165
+ # Set provider
166
+ echo "elevenlabs" > "$PROVIDER_FILE"
167
+
168
+ run "$PROVIDER_MANAGER" get
169
+
170
+ [ "$status" -eq 0 ]
171
+ [[ "$output" =~ "elevenlabs" ]]
172
+ }
173
+
174
+ @test "provider-manager get returns default when no config exists" {
175
+ # Ensure no provider file exists
176
+ rm -f "$PROVIDER_FILE"
177
+
178
+ run "$PROVIDER_MANAGER" get
179
+
180
+ [ "$status" -eq 0 ]
181
+ # Default is piper (free, offline)
182
+ [[ "$output" =~ "piper" ]]
183
+ }
184
+
185
+ @test "provider-manager get trims whitespace from provider name" {
186
+ # Write provider with extra whitespace
187
+ echo " elevenlabs " > "$PROVIDER_FILE"
188
+
189
+ run "$PROVIDER_MANAGER" get
190
+
191
+ [ "$status" -eq 0 ]
192
+ # Should return clean provider name (may have newline)
193
+ [[ "$output" =~ "elevenlabs" ]]
194
+ }
195
+
196
+ # ============================================================================
197
+ # Provider Validation Tests
198
+ # ============================================================================
199
+
200
+ @test "provider-manager validate checks if provider exists" {
201
+ run "$PROVIDER_MANAGER" validate "elevenlabs"
202
+
203
+ [ "$status" -eq 0 ]
204
+ }
205
+
206
+ @test "provider-manager validate fails for non-existent provider" {
207
+ run "$PROVIDER_MANAGER" validate "fake_provider"
208
+
209
+ [ "$status" -eq 1 ]
210
+ }
211
+
212
+ @test "provider-manager validate requires provider name" {
213
+ run "$PROVIDER_MANAGER" validate
214
+
215
+ [ "$status" -eq 1 ]
216
+ assert_output_contains "Error: Provider name required"
217
+ }
218
+
219
+ # ============================================================================
220
+ # File Location Tests
221
+ # ============================================================================
222
+
223
+ @test "provider-manager uses project-local directory when CLAUDE_PROJECT_DIR is set" {
224
+ # CLAUDE_PROJECT_DIR is set in setup_test_env
225
+ "$PROVIDER_MANAGER" switch "piper"
226
+
227
+ # Should save to project directory
228
+ assert_file_exists "$CLAUDE_PROJECT_DIR/.claude/tts-provider.txt"
229
+ }
230
+
231
+ @test "provider-manager creates parent directory if missing" {
232
+ # Test that mkdir -p works by using a fresh subdirectory
233
+ local test_dir="$TEST_HOME/.claude/subdir"
234
+ rm -rf "$test_dir"
235
+
236
+ # Create provider file in this location
237
+ mkdir -p "$test_dir"
238
+ echo "elevenlabs" > "$test_dir/tts-provider.txt"
239
+
240
+ # Verify directory and file were created
241
+ [[ -d "$test_dir" ]]
242
+ [[ -f "$test_dir/tts-provider.txt" ]]
243
+ }
244
+
245
+ @test "provider-manager falls back to HOME when no project directory" {
246
+ unset CLAUDE_PROJECT_DIR
247
+
248
+ # cd to test home to ensure we're not in a .claude directory tree
249
+ cd "$TEST_HOME"
250
+
251
+ run "$PROVIDER_MANAGER" switch "piper"
252
+
253
+ [ "$status" -eq 0 ]
254
+
255
+ # Should save to HOME
256
+ assert_file_exists "$HOME/.claude/tts-provider.txt"
257
+ }
258
+
259
+ @test "provider-manager searches up directory tree for .claude" {
260
+ unset CLAUDE_PROJECT_DIR
261
+
262
+ # Create .claude in parent directory
263
+ local parent_dir="$TEST_HOME/projects/myproject"
264
+ mkdir -p "$parent_dir/subdir"
265
+ mkdir -p "$TEST_HOME/projects/.claude"
266
+
267
+ cd "$parent_dir/subdir"
268
+
269
+ "$PROVIDER_MANAGER" switch "elevenlabs"
270
+
271
+ # Should find .claude in parent tree
272
+ assert_file_exists "$TEST_HOME/projects/.claude/tts-provider.txt"
273
+ }
274
+
275
+ # ============================================================================
276
+ # Provider Script Path Tests
277
+ # ============================================================================
278
+
279
+ @test "provider-manager returns correct script path for elevenlabs" {
280
+ # Source the provider manager to use its functions
281
+ source "$PROVIDER_MANAGER"
282
+
283
+ run get_provider_script_path "elevenlabs"
284
+
285
+ [ "$status" -eq 0 ]
286
+ [[ "$output" =~ "play-tts-elevenlabs.sh" ]]
287
+ }
288
+
289
+ @test "provider-manager returns correct script path for piper" {
290
+ source "$PROVIDER_MANAGER"
291
+
292
+ run get_provider_script_path "piper"
293
+
294
+ [ "$status" -eq 0 ]
295
+ [[ "$output" =~ "play-tts-piper.sh" ]]
296
+ }
297
+
298
+ @test "provider-manager script path fails for invalid provider" {
299
+ source "$PROVIDER_MANAGER"
300
+
301
+ run get_provider_script_path "invalid"
302
+
303
+ [ "$status" -eq 1 ]
304
+ # Error should go to stderr, captured in output
305
+ [[ "$output" =~ "Error: Provider 'invalid' not found" ]]
306
+ }
307
+
308
+ @test "provider-manager script path requires provider name" {
309
+ source "$PROVIDER_MANAGER"
310
+
311
+ run get_provider_script_path
312
+
313
+ [ "$status" -eq 1 ]
314
+ [[ "$output" =~ "Error: Provider name required" ]]
315
+ }
316
+
317
+ # ============================================================================
318
+ # Config Path Resolution Tests
319
+ # ============================================================================
320
+
321
+ @test "provider-manager config path prioritizes CLAUDE_PROJECT_DIR" {
322
+ source "$PROVIDER_MANAGER"
323
+
324
+ run get_provider_config_path
325
+
326
+ [ "$status" -eq 0 ]
327
+ [[ "$output" =~ "$CLAUDE_PROJECT_DIR/.claude/tts-provider.txt" ]]
328
+ }
329
+
330
+ @test "provider-manager config path searches directory tree" {
331
+ source "$PROVIDER_MANAGER"
332
+ unset CLAUDE_PROJECT_DIR
333
+
334
+ # Create .claude in parent
335
+ mkdir -p "$TEST_HOME/workspace/project/.claude"
336
+ cd "$TEST_HOME/workspace/project"
337
+
338
+ run get_provider_config_path
339
+
340
+ [ "$status" -eq 0 ]
341
+ [[ "$output" =~ "$TEST_HOME/workspace/project/.claude/tts-provider.txt" ]]
342
+ }
343
+
344
+ @test "provider-manager config path falls back to HOME" {
345
+ source "$PROVIDER_MANAGER"
346
+ unset CLAUDE_PROJECT_DIR
347
+
348
+ cd "$TEST_HOME"
349
+
350
+ run get_provider_config_path
351
+
352
+ [ "$status" -eq 0 ]
353
+ [[ "$output" =~ "$HOME/.claude/tts-provider.txt" ]]
354
+ }
355
+
356
+ # ============================================================================
357
+ # Provider Manager as Sourced Library Tests
358
+ # ============================================================================
359
+
360
+ @test "provider-manager functions work when sourced" {
361
+ source "$PROVIDER_MANAGER"
362
+
363
+ # Test get_active_provider function
364
+ echo "elevenlabs" > "$PROVIDER_FILE"
365
+
366
+ run get_active_provider
367
+
368
+ [ "$status" -eq 0 ]
369
+ [[ "$output" == "elevenlabs" ]]
370
+ }
371
+
372
+ @test "provider-manager list_providers returns all providers" {
373
+ source "$PROVIDER_MANAGER"
374
+
375
+ run list_providers
376
+
377
+ [ "$status" -eq 0 ]
378
+ [[ "$output" =~ "elevenlabs" ]]
379
+ [[ "$output" =~ "piper" ]]
380
+ }
381
+
382
+ @test "provider-manager validate_provider returns exit code" {
383
+ source "$PROVIDER_MANAGER"
384
+
385
+ # Valid provider - should return 0
386
+ validate_provider "elevenlabs"
387
+ [ "$?" -eq 0 ]
388
+
389
+ # Invalid provider - should return non-zero
390
+ # Use ! to invert but keep exit code check simple
391
+ run validate_provider "nonexistent"
392
+ [ "$status" -ne 0 ]
393
+ }
394
+
395
+ # ============================================================================
396
+ # Empty and Malformed Config Tests
397
+ # ============================================================================
398
+
399
+ @test "provider-manager handles empty provider file" {
400
+ # Create empty file
401
+ touch "$PROVIDER_FILE"
402
+
403
+ run "$PROVIDER_MANAGER" get
404
+
405
+ [ "$status" -eq 0 ]
406
+ # Should return default
407
+ [[ "$output" =~ "piper" ]]
408
+ }
409
+
410
+ @test "provider-manager handles file with only whitespace" {
411
+ echo " " > "$PROVIDER_FILE"
412
+
413
+ run "$PROVIDER_MANAGER" get
414
+
415
+ [ "$status" -eq 0 ]
416
+ # Should return default
417
+ [[ "$output" =~ "piper" ]]
418
+ }
419
+
420
+ @test "provider-manager handles newlines in provider file" {
421
+ echo -e "elevenlabs\n\n" > "$PROVIDER_FILE"
422
+
423
+ run "$PROVIDER_MANAGER" get
424
+
425
+ [ "$status" -eq 0 ]
426
+ [[ "$output" =~ "elevenlabs" ]]
427
+ }
428
+
429
+ # ============================================================================
430
+ # Help/Usage Tests
431
+ # ============================================================================
432
+
433
+ @test "provider-manager shows usage with invalid command" {
434
+ run "$PROVIDER_MANAGER" invalid_command
435
+
436
+ [ "$status" -eq 1 ]
437
+ assert_output_contains "Usage:"
438
+ assert_output_contains "{get|switch|list|validate}"
439
+ }
440
+
441
+ @test "provider-manager usage shows all commands" {
442
+ run "$PROVIDER_MANAGER" --help
443
+
444
+ [ "$status" -eq 1 ]
445
+ assert_output_contains "get"
446
+ assert_output_contains "switch"
447
+ assert_output_contains "list"
448
+ assert_output_contains "validate"
449
+ }
450
+
451
+ # ============================================================================
452
+ # Integration Tests with Other Scripts
453
+ # ============================================================================
454
+
455
+ @test "provider-manager provider persists and can be read by get command" {
456
+ # Switch to elevenlabs
457
+ "$PROVIDER_MANAGER" switch "elevenlabs"
458
+
459
+ # Verify get returns same provider
460
+ local result=$("$PROVIDER_MANAGER" get)
461
+
462
+ [[ "$result" == "elevenlabs" ]]
463
+ }
464
+
465
+ @test "provider-manager multiple provider switches work correctly" {
466
+ "$PROVIDER_MANAGER" switch "elevenlabs"
467
+ local first=$("$PROVIDER_MANAGER" get)
468
+
469
+ "$PROVIDER_MANAGER" switch "piper"
470
+ local second=$("$PROVIDER_MANAGER" get)
471
+
472
+ "$PROVIDER_MANAGER" switch "elevenlabs"
473
+ local third=$("$PROVIDER_MANAGER" get)
474
+
475
+ [[ "$first" == "elevenlabs" ]]
476
+ [[ "$second" == "piper" ]]
477
+ [[ "$third" == "elevenlabs" ]]
478
+ }
479
+
480
+ # ============================================================================
481
+ # Error Handling Tests
482
+ # ============================================================================
483
+
484
+ @test "provider-manager switch handles empty provider name gracefully" {
485
+ run "$PROVIDER_MANAGER" switch ""
486
+
487
+ [ "$status" -eq 1 ]
488
+ assert_output_contains "Error: Provider name required"
489
+ }
490
+
491
+ @test "provider-manager validate handles empty provider name" {
492
+ run "$PROVIDER_MANAGER" validate ""
493
+
494
+ [ "$status" -eq 1 ]
495
+ }
496
+
497
+ @test "provider-manager handles missing hooks directory gracefully" {
498
+ # This should not happen in practice, but test defensive coding
499
+ local broken_script="$BATS_TEST_TMPDIR/broken-provider-manager.sh"
500
+
501
+ # Copy script and modify BASH_SOURCE simulation
502
+ cp "$PROVIDER_MANAGER" "$broken_script"
503
+
504
+ # Try to run validate on non-existent provider
505
+ run bash "$broken_script" validate "fake"
506
+
507
+ [ "$status" -eq 1 ]
508
+ }