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,248 @@
1
+ #!/bin/bash
2
+ #
3
+ # @fileoverview TTS Provider Management Functions
4
+ # @context Core provider abstraction layer for multi-provider TTS system
5
+ # @architecture Provides functions to get/set/list/validate TTS providers
6
+ # @dependencies None - pure bash implementation
7
+ # @entrypoints Sourced by play-tts.sh and provider management commands
8
+ # @patterns File-based state management with project-local and global fallback
9
+ # @related play-tts.sh, play-tts-elevenlabs.sh, GitHub Issue #25
10
+ #
11
+
12
+ # @function get_provider_config_path
13
+ # @intent Determine path to tts-provider.txt file
14
+ # @why Supports both project-local (.claude/) and global (~/.claude/) storage
15
+ # @returns Echoes path to provider config file
16
+ # @exitcode 0=always succeeds
17
+ # @sideeffects None
18
+ # @edgecases Creates parent directory if missing
19
+ get_provider_config_path() {
20
+ local provider_file
21
+
22
+ # Check project-local first
23
+ if [[ -n "$CLAUDE_PROJECT_DIR" ]] && [[ -d "$CLAUDE_PROJECT_DIR/.claude" ]]; then
24
+ provider_file="$CLAUDE_PROJECT_DIR/.claude/tts-provider.txt"
25
+ else
26
+ # Search up directory tree for .claude/
27
+ local current_dir="$PWD"
28
+ while [[ "$current_dir" != "/" ]]; do
29
+ if [[ -d "$current_dir/.claude" ]]; then
30
+ provider_file="$current_dir/.claude/tts-provider.txt"
31
+ break
32
+ fi
33
+ current_dir=$(dirname "$current_dir")
34
+ done
35
+
36
+ # Fallback to global if no project .claude found
37
+ if [[ -z "$provider_file" ]]; then
38
+ provider_file="$HOME/.claude/tts-provider.txt"
39
+ fi
40
+ fi
41
+
42
+ echo "$provider_file"
43
+ }
44
+
45
+ # @function get_active_provider
46
+ # @intent Read currently active TTS provider from config file
47
+ # @why Central function for determining which provider to use
48
+ # @returns Echoes provider name (e.g., "elevenlabs", "piper")
49
+ # @exitcode 0=success
50
+ # @sideeffects None
51
+ # @edgecases Returns "elevenlabs" if file missing or empty (default)
52
+ get_active_provider() {
53
+ local provider_file
54
+ provider_file=$(get_provider_config_path)
55
+
56
+ # Read provider from file, default to piper if not found
57
+ if [[ -f "$provider_file" ]]; then
58
+ local provider
59
+ provider=$(cat "$provider_file" | tr -d '[:space:]')
60
+ if [[ -n "$provider" ]]; then
61
+ echo "$provider"
62
+ return 0
63
+ fi
64
+ fi
65
+
66
+ # Default to piper (free, offline)
67
+ echo "piper"
68
+ }
69
+
70
+ # @function set_active_provider
71
+ # @intent Write active provider to config file
72
+ # @why Allows runtime provider switching without restart
73
+ # @param $1 {string} provider - Provider name (e.g., "elevenlabs", "piper")
74
+ # @returns None (outputs success/error message)
75
+ # @exitcode 0=success, 1=invalid provider
76
+ # @sideeffects Writes to tts-provider.txt file
77
+ # @edgecases Creates file and parent directory if missing
78
+ set_active_provider() {
79
+ local provider="$1"
80
+
81
+ if [[ -z "$provider" ]]; then
82
+ echo "❌ Error: Provider name required"
83
+ echo "Usage: set_active_provider <provider_name>"
84
+ return 1
85
+ fi
86
+
87
+ # Validate provider exists
88
+ if ! validate_provider "$provider"; then
89
+ echo "❌ Error: Provider '$provider' not found"
90
+ echo "Available providers:"
91
+ list_providers
92
+ return 1
93
+ fi
94
+
95
+ local provider_file
96
+ provider_file=$(get_provider_config_path)
97
+
98
+ # Create directory if it doesn't exist
99
+ mkdir -p "$(dirname "$provider_file")"
100
+
101
+ # Write provider to file
102
+ echo "$provider" > "$provider_file"
103
+
104
+ # Reset voice when switching providers to avoid incompatible voices
105
+ # (e.g., ElevenLabs "Demon Monster" doesn't exist in Piper)
106
+ local voice_file
107
+ if [[ -n "$CLAUDE_PROJECT_DIR" ]] && [[ -d "$CLAUDE_PROJECT_DIR/.claude" ]]; then
108
+ voice_file="$CLAUDE_PROJECT_DIR/.claude/tts-voice.txt"
109
+ else
110
+ voice_file="$HOME/.claude/tts-voice.txt"
111
+ fi
112
+
113
+ # Remove voice file to force default voice for new provider
114
+ if [[ -f "$voice_file" ]]; then
115
+ rm -f "$voice_file"
116
+ fi
117
+
118
+ echo "✓ Active provider set to: $provider (voice reset to default)"
119
+ }
120
+
121
+ # @function list_providers
122
+ # @intent List all available TTS providers
123
+ # @why Discover which providers are installed
124
+ # @returns Echoes provider names (one per line)
125
+ # @exitcode 0=success
126
+ # @sideeffects None
127
+ # @edgecases Returns empty if no play-tts-*.sh files found
128
+ list_providers() {
129
+ local script_dir
130
+ script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
131
+
132
+ # Find all play-tts-*.sh files
133
+ local providers=()
134
+ shopt -s nullglob # Handle case where no files match
135
+ for file in "$script_dir"/play-tts-*.sh; do
136
+ if [[ -f "$file" ]] && [[ "$file" != *"play-tts.sh" ]]; then
137
+ # Extract provider name from filename (play-tts-elevenlabs.sh -> elevenlabs)
138
+ local basename
139
+ basename=$(basename "$file")
140
+ local provider
141
+ provider="${basename#play-tts-}"
142
+ provider="${provider%.sh}"
143
+ providers+=("$provider")
144
+ fi
145
+ done
146
+ shopt -u nullglob
147
+
148
+ # Output providers
149
+ if [[ ${#providers[@]} -eq 0 ]]; then
150
+ echo "⚠️ No providers found"
151
+ return 0
152
+ fi
153
+
154
+ for provider in "${providers[@]}"; do
155
+ echo "$provider"
156
+ done
157
+ }
158
+
159
+ # @function validate_provider
160
+ # @intent Check if provider implementation exists
161
+ # @why Prevent errors from switching to non-existent provider
162
+ # @param $1 {string} provider - Provider name to validate
163
+ # @returns None
164
+ # @exitcode 0=provider exists, 1=provider not found
165
+ # @sideeffects None
166
+ # @edgecases Checks for corresponding play-tts-*.sh file
167
+ validate_provider() {
168
+ local provider="$1"
169
+
170
+ if [[ -z "$provider" ]]; then
171
+ return 1
172
+ fi
173
+
174
+ local script_dir
175
+ script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
176
+ local provider_script="$script_dir/play-tts-${provider}.sh"
177
+
178
+ [[ -f "$provider_script" ]]
179
+ }
180
+
181
+ # @function get_provider_script_path
182
+ # @intent Get absolute path to provider implementation script
183
+ # @why Used by router to execute provider-specific logic
184
+ # @param $1 {string} provider - Provider name
185
+ # @returns Echoes absolute path to play-tts-*.sh file
186
+ # @exitcode 0=success, 1=provider not found
187
+ # @sideeffects None
188
+ get_provider_script_path() {
189
+ local provider="$1"
190
+
191
+ if [[ -z "$provider" ]]; then
192
+ echo "❌ Error: Provider name required" >&2
193
+ return 1
194
+ fi
195
+
196
+ local script_dir
197
+ script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
198
+ local provider_script="$script_dir/play-tts-${provider}.sh"
199
+
200
+ if [[ ! -f "$provider_script" ]]; then
201
+ echo "❌ Error: Provider '$provider' not found at $provider_script" >&2
202
+ return 1
203
+ fi
204
+
205
+ echo "$provider_script"
206
+ }
207
+
208
+ # AI NOTE: This file provides the core abstraction layer for multi-provider TTS.
209
+ # All provider state is managed through simple text files for simplicity and reliability.
210
+ # Project-local configuration takes precedence over global to support per-project providers.
211
+
212
+ # Command-line interface (when script is executed, not sourced)
213
+ if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
214
+ case "${1:-}" in
215
+ get)
216
+ get_active_provider
217
+ ;;
218
+ switch|set)
219
+ if [[ -z "${2:-}" ]]; then
220
+ echo "❌ Error: Provider name required"
221
+ echo "Usage: $0 switch <provider>"
222
+ exit 1
223
+ fi
224
+ set_active_provider "$2"
225
+ ;;
226
+ list)
227
+ list_providers
228
+ ;;
229
+ validate)
230
+ if [[ -z "${2:-}" ]]; then
231
+ echo "❌ Error: Provider name required"
232
+ echo "Usage: $0 validate <provider>"
233
+ exit 1
234
+ fi
235
+ validate_provider "$2"
236
+ ;;
237
+ *)
238
+ echo "Usage: $0 {get|switch|list|validate} [provider]"
239
+ echo ""
240
+ echo "Commands:"
241
+ echo " get - Show active provider"
242
+ echo " switch <name> - Switch to provider"
243
+ echo " list - List available providers"
244
+ echo " validate <name> - Check if provider exists"
245
+ exit 1
246
+ ;;
247
+ esac
248
+ fi
@@ -0,0 +1,64 @@
1
+ #!/bin/bash
2
+ #
3
+ # @fileoverview Replay Last Target Language Audio
4
+ # @context Replays the most recent target language TTS for language learning
5
+ # @architecture Simple audio replay with lock mechanism
6
+ # @dependencies ffprobe, paplay/aplay/mpg123
7
+ # @entrypoints Called by /agent-vibes:replay-target slash command
8
+ # @patterns Sequential audio playback with lock file
9
+ # @related play-tts-piper.sh, play-tts-elevenlabs.sh, learn-manager.sh
10
+ #
11
+
12
+ # Fix locale warnings
13
+ export LC_ALL=C
14
+
15
+ TARGET_AUDIO_FILE="${CLAUDE_PROJECT_DIR:-.}/.claude/last-target-audio.txt"
16
+
17
+ # Check if target audio tracking file exists
18
+ if [ ! -f "$TARGET_AUDIO_FILE" ]; then
19
+ echo "❌ No target language audio found."
20
+ echo " Language learning mode may not be active."
21
+ echo " Activate with: /agent-vibes:learn"
22
+ exit 1
23
+ fi
24
+
25
+ # Read last target audio file path
26
+ LAST_AUDIO=$(cat "$TARGET_AUDIO_FILE")
27
+
28
+ # Verify audio file exists
29
+ if [ ! -f "$LAST_AUDIO" ]; then
30
+ echo "❌ Audio file not found: $LAST_AUDIO"
31
+ echo " The file may have been deleted or moved."
32
+ exit 1
33
+ fi
34
+
35
+ echo "🔁 Replaying target language audio..."
36
+
37
+ # Use lock file for sequential playback
38
+ LOCK_FILE="/tmp/agentvibes-audio.lock"
39
+
40
+ # Wait for any current audio to finish (max 30 seconds)
41
+ for i in {1..60}; do
42
+ if [ ! -f "$LOCK_FILE" ]; then
43
+ break
44
+ fi
45
+ sleep 0.5
46
+ done
47
+
48
+ # Create lock
49
+ touch "$LOCK_FILE"
50
+
51
+ # Get audio duration for proper lock timing
52
+ DURATION=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$LAST_AUDIO" 2>/dev/null)
53
+ DURATION=${DURATION%.*} # Round to integer
54
+ DURATION=${DURATION:-1} # Default to 1 second if detection fails
55
+
56
+ # Play audio
57
+ (paplay "$LAST_AUDIO" || aplay "$LAST_AUDIO" || mpg123 "$LAST_AUDIO" || mpv "$LAST_AUDIO") >/dev/null 2>&1 &
58
+ PLAYER_PID=$!
59
+
60
+ # Wait for audio to finish, then release lock
61
+ (sleep $DURATION; rm -f "$LOCK_FILE") &
62
+ disown
63
+
64
+ echo "✅ Replay complete: $(basename "$LAST_AUDIO")"
@@ -0,0 +1,163 @@
1
+ #!/bin/bash
2
+ # Sentiment manager for AgentVibes - applies personality to current voice
3
+
4
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
+ PERSONALITIES_DIR="$SCRIPT_DIR/../personalities"
6
+
7
+ # Project-local file first, global fallback
8
+ # Use logical path (not physical) to handle symlinked .claude directories
9
+ # Script is at .claude/hooks/sentiment-manager.sh, so .claude is ..
10
+ CLAUDE_DIR="$(cd "$SCRIPT_DIR/.." 2>/dev/null && pwd)"
11
+
12
+ # Check if we have a project-local .claude directory
13
+ if [[ -d "$CLAUDE_DIR" ]] && [[ "$CLAUDE_DIR" != "$HOME/.claude" ]]; then
14
+ SENTIMENT_FILE="$CLAUDE_DIR/tts-sentiment.txt"
15
+ else
16
+ SENTIMENT_FILE="$HOME/.claude/tts-sentiment.txt"
17
+ fi
18
+
19
+ # Function to get personality data from markdown file
20
+ get_personality_data() {
21
+ local personality="$1"
22
+ local field="$2"
23
+ local file="$PERSONALITIES_DIR/${personality}.md"
24
+
25
+ if [[ ! -f "$file" ]]; then
26
+ return 1
27
+ fi
28
+
29
+ case "$field" in
30
+ description)
31
+ grep "^description:" "$file" | cut -d: -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'
32
+ ;;
33
+ esac
34
+ }
35
+
36
+ # Function to list all available personalities
37
+ list_personalities() {
38
+ if [[ -d "$PERSONALITIES_DIR" ]]; then
39
+ for file in "$PERSONALITIES_DIR"/*.md; do
40
+ if [[ -f "$file" ]]; then
41
+ basename "$file" .md
42
+ fi
43
+ done
44
+ fi
45
+ }
46
+
47
+ case "$1" in
48
+ list)
49
+ echo "🎭 Available Sentiments:"
50
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
51
+
52
+ # Get current sentiment
53
+ CURRENT="none"
54
+ if [ -f "$SENTIMENT_FILE" ]; then
55
+ CURRENT=$(cat "$SENTIMENT_FILE")
56
+ fi
57
+
58
+ # List personalities from markdown files
59
+ echo "Available sentiment styles:"
60
+ for personality in $(list_personalities | sort); do
61
+ desc=$(get_personality_data "$personality" "description")
62
+ if [[ "$personality" == "$CURRENT" ]]; then
63
+ echo " ✓ $personality - $desc (current)"
64
+ else
65
+ echo " - $personality - $desc"
66
+ fi
67
+ done
68
+
69
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
70
+ echo ""
71
+ echo "Usage: /agent-vibes:sentiment <name>"
72
+ echo " /agent-vibes:sentiment clear"
73
+ ;;
74
+
75
+ set)
76
+ SENTIMENT="$2"
77
+
78
+ if [[ -z "$SENTIMENT" ]]; then
79
+ echo "❌ Please specify a sentiment name"
80
+ echo "Usage: $0 set <sentiment>"
81
+ exit 1
82
+ fi
83
+
84
+ # Check if sentiment file exists
85
+ if [[ ! -f "$PERSONALITIES_DIR/${SENTIMENT}.md" ]]; then
86
+ echo "❌ Sentiment not found: $SENTIMENT"
87
+ echo ""
88
+ echo "Available sentiments:"
89
+ for p in $(list_personalities | sort); do
90
+ echo " • $p"
91
+ done
92
+ exit 1
93
+ fi
94
+
95
+ # Save the sentiment (but don't change personality or voice)
96
+ echo "$SENTIMENT" > "$SENTIMENT_FILE"
97
+ echo "🎭 Sentiment set to: $SENTIMENT"
98
+ echo "🎤 Voice remains unchanged"
99
+ echo ""
100
+
101
+ # Make a sentiment-appropriate remark with TTS
102
+ TTS_SCRIPT="$SCRIPT_DIR/play-tts.sh"
103
+
104
+ # Try to get acknowledgment from personality file (sentiments use same personality files)
105
+ PERSONALITY_FILE_PATH="$PERSONALITIES_DIR/${SENTIMENT}.md"
106
+ REMARK=""
107
+
108
+ if [[ -f "$PERSONALITY_FILE_PATH" ]]; then
109
+ # Extract example responses from personality file (lines starting with "- ")
110
+ mapfile -t EXAMPLES < <(grep '^- "' "$PERSONALITY_FILE_PATH" | sed 's/^- "//; s/"$//')
111
+
112
+ if [[ ${#EXAMPLES[@]} -gt 0 ]]; then
113
+ # Pick a random example
114
+ REMARK="${EXAMPLES[$RANDOM % ${#EXAMPLES[@]}]}"
115
+ fi
116
+ fi
117
+
118
+ # Fallback if no examples found
119
+ if [[ -z "$REMARK" ]]; then
120
+ REMARK="Sentiment set to ${SENTIMENT} while maintaining current voice"
121
+ fi
122
+
123
+ echo "💬 $REMARK"
124
+ "$TTS_SCRIPT" "$REMARK"
125
+ ;;
126
+
127
+ get)
128
+ if [ -f "$SENTIMENT_FILE" ]; then
129
+ CURRENT=$(cat "$SENTIMENT_FILE")
130
+ echo "Current sentiment: $CURRENT"
131
+
132
+ desc=$(get_personality_data "$CURRENT" "description")
133
+ [[ -n "$desc" ]] && echo "Description: $desc"
134
+ else
135
+ echo "Current sentiment: none (voice personality only)"
136
+ fi
137
+ ;;
138
+
139
+ clear)
140
+ rm -f "$SENTIMENT_FILE"
141
+ echo "🎭 Sentiment cleared - using voice personality only"
142
+ ;;
143
+
144
+ *)
145
+ # If a single argument is provided and it's not a command, treat it as "set <sentiment>"
146
+ if [[ -n "$1" ]] && [[ -f "$PERSONALITIES_DIR/${1}.md" ]]; then
147
+ exec "$0" set "$1"
148
+ else
149
+ echo "AgentVibes Sentiment Manager"
150
+ echo ""
151
+ echo "Commands:"
152
+ echo " list - List all sentiments"
153
+ echo " set <name> - Set sentiment for current voice"
154
+ echo " get - Show current sentiment"
155
+ echo " clear - Clear sentiment"
156
+ echo ""
157
+ echo "Examples:"
158
+ echo " /agent-vibes:sentiment flirty # Add flirty style to current voice"
159
+ echo " /agent-vibes:sentiment sarcastic # Add sarcasm to current voice"
160
+ echo " /agent-vibes:sentiment clear # Remove sentiment"
161
+ fi
162
+ ;;
163
+ esac