agentvibes 2.14.11 → 2.14.13

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 (425) hide show
  1. package/.claude/hooks/language-manager.sh +102 -101
  2. package/.claude/hooks/voice-manager.sh +55 -40
  3. package/.claude/hooks/voices-config.sh +77 -29
  4. package/README.md +7 -8
  5. package/RELEASE_NOTES.md +206 -0
  6. package/package.json +1 -1
  7. package/src/installer.js +201 -85
  8. package/.bmad/_cfg/agent-manifest.csv +0 -11
  9. package/.bmad/_cfg/agent-voice-map.csv +0 -11
  10. package/.bmad/_cfg/agents/bmm-analyst.customize.yaml +0 -42
  11. package/.bmad/_cfg/agents/bmm-architect.customize.yaml +0 -42
  12. package/.bmad/_cfg/agents/bmm-dev.customize.yaml +0 -42
  13. package/.bmad/_cfg/agents/bmm-frame-expert.customize.yaml +0 -42
  14. package/.bmad/_cfg/agents/bmm-pm.customize.yaml +0 -42
  15. package/.bmad/_cfg/agents/bmm-sm.customize.yaml +0 -42
  16. package/.bmad/_cfg/agents/bmm-tea.customize.yaml +0 -42
  17. package/.bmad/_cfg/agents/bmm-tech-writer.customize.yaml +0 -42
  18. package/.bmad/_cfg/agents/bmm-ux-designer.customize.yaml +0 -42
  19. package/.bmad/_cfg/agents/core-bmad-master.customize.yaml +0 -42
  20. package/.bmad/_cfg/files-manifest.csv +0 -243
  21. package/.bmad/_cfg/ides/claude-code.yaml +0 -6
  22. package/.bmad/_cfg/manifest.yaml +0 -9
  23. package/.bmad/_cfg/task-manifest.csv +0 -5
  24. package/.bmad/_cfg/tool-manifest.csv +0 -2
  25. package/.bmad/_cfg/workflow-manifest.csv +0 -38
  26. package/.bmad/bmm/README.md +0 -128
  27. package/.bmad/bmm/agents/analyst.md +0 -79
  28. package/.bmad/bmm/agents/analyst.md.backup-pre-tts +0 -75
  29. package/.bmad/bmm/agents/architect.md +0 -80
  30. package/.bmad/bmm/agents/dev.md +0 -70
  31. package/.bmad/bmm/agents/frame-expert.md +0 -72
  32. package/.bmad/bmm/agents/pm.md +0 -84
  33. package/.bmad/bmm/agents/sm.md +0 -93
  34. package/.bmad/bmm/agents/tea.md +0 -80
  35. package/.bmad/bmm/agents/tech-writer.md +0 -84
  36. package/.bmad/bmm/agents/ux-designer.md +0 -79
  37. package/.bmad/bmm/config.yaml +0 -17
  38. package/.bmad/bmm/docs/README.md +0 -236
  39. package/.bmad/bmm/docs/agents-guide.md +0 -1058
  40. package/.bmad/bmm/docs/brownfield-guide.md +0 -762
  41. package/.bmad/bmm/docs/enterprise-agentic-development.md +0 -686
  42. package/.bmad/bmm/docs/faq.md +0 -588
  43. package/.bmad/bmm/docs/glossary.md +0 -320
  44. package/.bmad/bmm/docs/party-mode.md +0 -224
  45. package/.bmad/bmm/docs/quick-spec-flow.md +0 -652
  46. package/.bmad/bmm/docs/quick-start.md +0 -376
  47. package/.bmad/bmm/docs/scale-adaptive-system.md +0 -612
  48. package/.bmad/bmm/docs/test-architecture.md +0 -396
  49. package/.bmad/bmm/docs/workflow-architecture-reference.md +0 -366
  50. package/.bmad/bmm/docs/workflow-document-project-reference.md +0 -489
  51. package/.bmad/bmm/docs/workflows-analysis.md +0 -370
  52. package/.bmad/bmm/docs/workflows-implementation.md +0 -286
  53. package/.bmad/bmm/docs/workflows-planning.md +0 -612
  54. package/.bmad/bmm/docs/workflows-solutioning.md +0 -554
  55. package/.bmad/bmm/teams/default-party.csv +0 -20
  56. package/.bmad/bmm/teams/team-fullstack.yaml +0 -13
  57. package/.bmad/bmm/testarch/knowledge/ci-burn-in.md +0 -675
  58. package/.bmad/bmm/testarch/knowledge/component-tdd.md +0 -486
  59. package/.bmad/bmm/testarch/knowledge/contract-testing.md +0 -957
  60. package/.bmad/bmm/testarch/knowledge/data-factories.md +0 -500
  61. package/.bmad/bmm/testarch/knowledge/email-auth.md +0 -721
  62. package/.bmad/bmm/testarch/knowledge/error-handling.md +0 -725
  63. package/.bmad/bmm/testarch/knowledge/feature-flags.md +0 -750
  64. package/.bmad/bmm/testarch/knowledge/fixture-architecture.md +0 -401
  65. package/.bmad/bmm/testarch/knowledge/network-first.md +0 -486
  66. package/.bmad/bmm/testarch/knowledge/nfr-criteria.md +0 -670
  67. package/.bmad/bmm/testarch/knowledge/playwright-config.md +0 -730
  68. package/.bmad/bmm/testarch/knowledge/probability-impact.md +0 -601
  69. package/.bmad/bmm/testarch/knowledge/risk-governance.md +0 -615
  70. package/.bmad/bmm/testarch/knowledge/selective-testing.md +0 -732
  71. package/.bmad/bmm/testarch/knowledge/selector-resilience.md +0 -527
  72. package/.bmad/bmm/testarch/knowledge/test-healing-patterns.md +0 -644
  73. package/.bmad/bmm/testarch/knowledge/test-levels-framework.md +0 -473
  74. package/.bmad/bmm/testarch/knowledge/test-priorities-matrix.md +0 -373
  75. package/.bmad/bmm/testarch/knowledge/test-quality.md +0 -664
  76. package/.bmad/bmm/testarch/knowledge/timing-debugging.md +0 -372
  77. package/.bmad/bmm/testarch/knowledge/visual-debugging.md +0 -524
  78. package/.bmad/bmm/testarch/tea-index.csv +0 -22
  79. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -112
  80. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
  81. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -26
  82. package/.bmad/bmm/workflows/1-analysis/domain-research/instructions.md +0 -425
  83. package/.bmad/bmm/workflows/1-analysis/domain-research/template.md +0 -180
  84. package/.bmad/bmm/workflows/1-analysis/domain-research/workflow.yaml +0 -28
  85. package/.bmad/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
  86. package/.bmad/bmm/workflows/1-analysis/product-brief/instructions.md +0 -524
  87. package/.bmad/bmm/workflows/1-analysis/product-brief/template.md +0 -181
  88. package/.bmad/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -45
  89. package/.bmad/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +0 -144
  90. package/.bmad/bmm/workflows/1-analysis/research/checklist-technical.md +0 -249
  91. package/.bmad/bmm/workflows/1-analysis/research/checklist.md +0 -299
  92. package/.bmad/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
  93. package/.bmad/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -438
  94. package/.bmad/bmm/workflows/1-analysis/research/instructions-market.md +0 -675
  95. package/.bmad/bmm/workflows/1-analysis/research/instructions-router.md +0 -134
  96. package/.bmad/bmm/workflows/1-analysis/research/instructions-technical.md +0 -534
  97. package/.bmad/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
  98. package/.bmad/bmm/workflows/1-analysis/research/template-market.md +0 -347
  99. package/.bmad/bmm/workflows/1-analysis/research/template-technical.md +0 -245
  100. package/.bmad/bmm/workflows/1-analysis/research/workflow.yaml +0 -44
  101. package/.bmad/bmm/workflows/2-plan-workflows/create-epics-and-stories/epics-template.md +0 -80
  102. package/.bmad/bmm/workflows/2-plan-workflows/create-epics-and-stories/instructions.md +0 -616
  103. package/.bmad/bmm/workflows/2-plan-workflows/create-epics-and-stories/workflow.yaml +0 -53
  104. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
  105. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1308
  106. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +0 -145
  107. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -61
  108. package/.bmad/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -346
  109. package/.bmad/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +0 -13
  110. package/.bmad/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -703
  111. package/.bmad/bmm/workflows/2-plan-workflows/prd/prd-template.md +0 -204
  112. package/.bmad/bmm/workflows/2-plan-workflows/prd/project-types.csv +0 -11
  113. package/.bmad/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -52
  114. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -217
  115. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -74
  116. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +0 -436
  117. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -980
  118. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -181
  119. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -90
  120. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -58
  121. package/.bmad/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -321
  122. package/.bmad/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
  123. package/.bmad/bmm/workflows/3-solutioning/architecture/checklist.md +0 -240
  124. package/.bmad/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +0 -222
  125. package/.bmad/bmm/workflows/3-solutioning/architecture/instructions.md +0 -768
  126. package/.bmad/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +0 -13
  127. package/.bmad/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -55
  128. package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/checklist.md +0 -169
  129. package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/instructions.md +0 -332
  130. package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/template.md +0 -146
  131. package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/workflow.yaml +0 -62
  132. package/.bmad/bmm/workflows/4-implementation/code-review/backlog_template.md +0 -12
  133. package/.bmad/bmm/workflows/4-implementation/code-review/checklist.md +0 -22
  134. package/.bmad/bmm/workflows/4-implementation/code-review/instructions.md +0 -398
  135. package/.bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +0 -60
  136. package/.bmad/bmm/workflows/4-implementation/correct-course/checklist.md +0 -279
  137. package/.bmad/bmm/workflows/4-implementation/correct-course/instructions.md +0 -206
  138. package/.bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +0 -56
  139. package/.bmad/bmm/workflows/4-implementation/create-story/checklist.md +0 -240
  140. package/.bmad/bmm/workflows/4-implementation/create-story/instructions.md +0 -256
  141. package/.bmad/bmm/workflows/4-implementation/create-story/template.md +0 -51
  142. package/.bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +0 -71
  143. package/.bmad/bmm/workflows/4-implementation/dev-story/checklist.md +0 -38
  144. package/.bmad/bmm/workflows/4-implementation/dev-story/instructions.md +0 -267
  145. package/.bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +0 -56
  146. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
  147. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -164
  148. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
  149. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -57
  150. package/.bmad/bmm/workflows/4-implementation/retrospective/instructions.md +0 -1443
  151. package/.bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +0 -56
  152. package/.bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +0 -33
  153. package/.bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +0 -234
  154. package/.bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +0 -55
  155. package/.bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +0 -49
  156. package/.bmad/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
  157. package/.bmad/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
  158. package/.bmad/bmm/workflows/4-implementation/story-context/instructions.md +0 -209
  159. package/.bmad/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -61
  160. package/.bmad/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
  161. package/.bmad/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -26
  162. package/.bmad/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
  163. package/.bmad/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -23
  164. package/.bmad/bmm/workflows/document-project/checklist.md +0 -245
  165. package/.bmad/bmm/workflows/document-project/documentation-requirements.csv +0 -12
  166. package/.bmad/bmm/workflows/document-project/instructions.md +0 -222
  167. package/.bmad/bmm/workflows/document-project/templates/deep-dive-template.md +0 -345
  168. package/.bmad/bmm/workflows/document-project/templates/index-template.md +0 -169
  169. package/.bmad/bmm/workflows/document-project/templates/project-overview-template.md +0 -103
  170. package/.bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +0 -160
  171. package/.bmad/bmm/workflows/document-project/templates/source-tree-template.md +0 -135
  172. package/.bmad/bmm/workflows/document-project/workflow.yaml +0 -29
  173. package/.bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +0 -298
  174. package/.bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +0 -31
  175. package/.bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +0 -1106
  176. package/.bmad/bmm/workflows/document-project/workflows/full-scan.yaml +0 -31
  177. package/.bmad/bmm/workflows/frame-expert/_shared/excalidraw-helpers.md +0 -127
  178. package/.bmad/bmm/workflows/frame-expert/_shared/excalidraw-library.json +0 -90
  179. package/.bmad/bmm/workflows/frame-expert/_shared/excalidraw-templates.yaml +0 -127
  180. package/.bmad/bmm/workflows/frame-expert/_shared/validate-json-instructions.md +0 -79
  181. package/.bmad/bmm/workflows/frame-expert/create-dataflow/checklist.md +0 -39
  182. package/.bmad/bmm/workflows/frame-expert/create-dataflow/instructions.md +0 -131
  183. package/.bmad/bmm/workflows/frame-expert/create-dataflow/workflow.yaml +0 -23
  184. package/.bmad/bmm/workflows/frame-expert/create-diagram/checklist.md +0 -43
  185. package/.bmad/bmm/workflows/frame-expert/create-diagram/instructions.md +0 -142
  186. package/.bmad/bmm/workflows/frame-expert/create-diagram/workflow.yaml +0 -24
  187. package/.bmad/bmm/workflows/frame-expert/create-flowchart/checklist.md +0 -49
  188. package/.bmad/bmm/workflows/frame-expert/create-flowchart/instructions.md +0 -242
  189. package/.bmad/bmm/workflows/frame-expert/create-flowchart/workflow.yaml +0 -27
  190. package/.bmad/bmm/workflows/frame-expert/create-wireframe/checklist.md +0 -38
  191. package/.bmad/bmm/workflows/frame-expert/create-wireframe/instructions.md +0 -133
  192. package/.bmad/bmm/workflows/frame-expert/create-wireframe/workflow.yaml +0 -23
  193. package/.bmad/bmm/workflows/techdoc/documentation-standards.md +0 -262
  194. package/.bmad/bmm/workflows/testarch/atdd/atdd-checklist-template.md +0 -363
  195. package/.bmad/bmm/workflows/testarch/atdd/checklist.md +0 -373
  196. package/.bmad/bmm/workflows/testarch/atdd/instructions.md +0 -785
  197. package/.bmad/bmm/workflows/testarch/atdd/workflow.yaml +0 -45
  198. package/.bmad/bmm/workflows/testarch/automate/checklist.md +0 -580
  199. package/.bmad/bmm/workflows/testarch/automate/instructions.md +0 -1303
  200. package/.bmad/bmm/workflows/testarch/automate/workflow.yaml +0 -52
  201. package/.bmad/bmm/workflows/testarch/ci/checklist.md +0 -246
  202. package/.bmad/bmm/workflows/testarch/ci/github-actions-template.yaml +0 -165
  203. package/.bmad/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +0 -128
  204. package/.bmad/bmm/workflows/testarch/ci/instructions.md +0 -517
  205. package/.bmad/bmm/workflows/testarch/ci/workflow.yaml +0 -45
  206. package/.bmad/bmm/workflows/testarch/framework/checklist.md +0 -321
  207. package/.bmad/bmm/workflows/testarch/framework/instructions.md +0 -455
  208. package/.bmad/bmm/workflows/testarch/framework/workflow.yaml +0 -47
  209. package/.bmad/bmm/workflows/testarch/nfr-assess/checklist.md +0 -405
  210. package/.bmad/bmm/workflows/testarch/nfr-assess/instructions.md +0 -722
  211. package/.bmad/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +0 -443
  212. package/.bmad/bmm/workflows/testarch/nfr-assess/workflow.yaml +0 -47
  213. package/.bmad/bmm/workflows/testarch/test-design/checklist.md +0 -234
  214. package/.bmad/bmm/workflows/testarch/test-design/instructions.md +0 -782
  215. package/.bmad/bmm/workflows/testarch/test-design/test-design-template.md +0 -285
  216. package/.bmad/bmm/workflows/testarch/test-design/workflow.yaml +0 -48
  217. package/.bmad/bmm/workflows/testarch/test-review/checklist.md +0 -470
  218. package/.bmad/bmm/workflows/testarch/test-review/instructions.md +0 -608
  219. package/.bmad/bmm/workflows/testarch/test-review/test-review-template.md +0 -388
  220. package/.bmad/bmm/workflows/testarch/test-review/workflow.yaml +0 -46
  221. package/.bmad/bmm/workflows/testarch/trace/checklist.md +0 -654
  222. package/.bmad/bmm/workflows/testarch/trace/instructions.md +0 -1045
  223. package/.bmad/bmm/workflows/testarch/trace/trace-template.md +0 -673
  224. package/.bmad/bmm/workflows/testarch/trace/workflow.yaml +0 -55
  225. package/.bmad/bmm/workflows/workflow-status/init/instructions.md +0 -334
  226. package/.bmad/bmm/workflows/workflow-status/init/workflow.yaml +0 -28
  227. package/.bmad/bmm/workflows/workflow-status/instructions.md +0 -388
  228. package/.bmad/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +0 -138
  229. package/.bmad/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +0 -126
  230. package/.bmad/bmm/workflows/workflow-status/paths/game-design.yaml +0 -52
  231. package/.bmad/bmm/workflows/workflow-status/paths/method-brownfield.yaml +0 -122
  232. package/.bmad/bmm/workflows/workflow-status/paths/method-greenfield.yaml +0 -113
  233. package/.bmad/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +0 -58
  234. package/.bmad/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +0 -47
  235. package/.bmad/bmm/workflows/workflow-status/project-levels.yaml +0 -59
  236. package/.bmad/bmm/workflows/workflow-status/workflow-status-template.yaml +0 -24
  237. package/.bmad/bmm/workflows/workflow-status/workflow.yaml +0 -28
  238. package/.bmad/core/agents/bmad-master.md +0 -72
  239. package/.bmad/core/agents/bmad-web-orchestrator.agent.xml +0 -113
  240. package/.bmad/core/config.yaml +0 -1
  241. package/.bmad/core/tasks/adv-elicit-methods.csv +0 -39
  242. package/.bmad/core/tasks/advanced-elicitation-methods.csv +0 -21
  243. package/.bmad/core/tasks/advanced-elicitation.xml +0 -106
  244. package/.bmad/core/tasks/index-docs.xml +0 -65
  245. package/.bmad/core/tasks/validate-workflow.xml +0 -89
  246. package/.bmad/core/tasks/workflow.xml +0 -270
  247. package/.bmad/core/tools/shard-doc.xml +0 -109
  248. package/.bmad/core/workflows/brainstorming/README.md +0 -261
  249. package/.bmad/core/workflows/brainstorming/brain-methods.csv +0 -36
  250. package/.bmad/core/workflows/brainstorming/instructions.md +0 -315
  251. package/.bmad/core/workflows/brainstorming/template.md +0 -106
  252. package/.bmad/core/workflows/brainstorming/workflow.yaml +0 -38
  253. package/.bmad/core/workflows/party-mode/instructions.md +0 -203
  254. package/.bmad/core/workflows/party-mode/workflow.yaml +0 -28
  255. package/.bmad/docs/claude-code-instructions.md +0 -25
  256. package/.claude/commands/BMad/analyst.md +0 -88
  257. package/.claude/commands/BMad/architect.md +0 -89
  258. package/.claude/commands/BMad/bmad-master.md +0 -114
  259. package/.claude/commands/BMad/bmad-orchestrator.md +0 -151
  260. package/.claude/commands/BMad/dev.md +0 -85
  261. package/.claude/commands/BMad/pm.md +0 -88
  262. package/.claude/commands/BMad/po.md +0 -83
  263. package/.claude/commands/BMad/qa.md +0 -91
  264. package/.claude/commands/BMad/sm.md +0 -69
  265. package/.claude/commands/BMad/tasks/advanced-elicitation.md +0 -123
  266. package/.claude/commands/BMad/tasks/apply-qa-fixes.md +0 -154
  267. package/.claude/commands/BMad/tasks/brownfield-create-epic.md +0 -166
  268. package/.claude/commands/BMad/tasks/brownfield-create-story.md +0 -153
  269. package/.claude/commands/BMad/tasks/correct-course.md +0 -76
  270. package/.claude/commands/BMad/tasks/create-brownfield-story.md +0 -318
  271. package/.claude/commands/BMad/tasks/create-deep-research-prompt.md +0 -284
  272. package/.claude/commands/BMad/tasks/create-doc.md +0 -107
  273. package/.claude/commands/BMad/tasks/create-next-story.md +0 -118
  274. package/.claude/commands/BMad/tasks/document-project.md +0 -349
  275. package/.claude/commands/BMad/tasks/execute-checklist.md +0 -92
  276. package/.claude/commands/BMad/tasks/facilitate-brainstorming-session.md +0 -142
  277. package/.claude/commands/BMad/tasks/generate-ai-frontend-prompt.md +0 -57
  278. package/.claude/commands/BMad/tasks/index-docs.md +0 -179
  279. package/.claude/commands/BMad/tasks/kb-mode-interaction.md +0 -81
  280. package/.claude/commands/BMad/tasks/nfr-assess.md +0 -349
  281. package/.claude/commands/BMad/tasks/qa-gate.md +0 -167
  282. package/.claude/commands/BMad/tasks/review-story.md +0 -320
  283. package/.claude/commands/BMad/tasks/risk-profile.md +0 -359
  284. package/.claude/commands/BMad/tasks/shard-doc.md +0 -191
  285. package/.claude/commands/BMad/tasks/test-design.md +0 -180
  286. package/.claude/commands/BMad/tasks/trace-requirements.md +0 -270
  287. package/.claude/commands/BMad/tasks/validate-next-story.md +0 -140
  288. package/.claude/commands/BMad/ux-expert.md +0 -73
  289. package/.claude/commands/bmad/bmm/agents/analyst.md +0 -14
  290. package/.claude/commands/bmad/bmm/agents/architect.md +0 -14
  291. package/.claude/commands/bmad/bmm/agents/dev.md +0 -14
  292. package/.claude/commands/bmad/bmm/agents/frame-expert.md +0 -14
  293. package/.claude/commands/bmad/bmm/agents/pm.md +0 -14
  294. package/.claude/commands/bmad/bmm/agents/sm.md +0 -14
  295. package/.claude/commands/bmad/bmm/agents/tea.md +0 -14
  296. package/.claude/commands/bmad/bmm/agents/tech-writer.md +0 -14
  297. package/.claude/commands/bmad/bmm/agents/ux-designer.md +0 -14
  298. package/.claude/commands/bmad/bmm/workflows/architecture.md +0 -13
  299. package/.claude/commands/bmad/bmm/workflows/brainstorm-project.md +0 -13
  300. package/.claude/commands/bmad/bmm/workflows/code-review.md +0 -13
  301. package/.claude/commands/bmad/bmm/workflows/correct-course.md +0 -13
  302. package/.claude/commands/bmad/bmm/workflows/create-dataflow.md +0 -13
  303. package/.claude/commands/bmad/bmm/workflows/create-diagram.md +0 -13
  304. package/.claude/commands/bmad/bmm/workflows/create-epics-and-stories.md +0 -13
  305. package/.claude/commands/bmad/bmm/workflows/create-flowchart.md +0 -13
  306. package/.claude/commands/bmad/bmm/workflows/create-story.md +0 -13
  307. package/.claude/commands/bmad/bmm/workflows/create-ux-design.md +0 -13
  308. package/.claude/commands/bmad/bmm/workflows/create-wireframe.md +0 -13
  309. package/.claude/commands/bmad/bmm/workflows/dev-story.md +0 -13
  310. package/.claude/commands/bmad/bmm/workflows/document-project.md +0 -13
  311. package/.claude/commands/bmad/bmm/workflows/domain-research.md +0 -13
  312. package/.claude/commands/bmad/bmm/workflows/epic-tech-context.md +0 -13
  313. package/.claude/commands/bmad/bmm/workflows/implementation-readiness.md +0 -13
  314. package/.claude/commands/bmad/bmm/workflows/prd.md +0 -13
  315. package/.claude/commands/bmad/bmm/workflows/product-brief.md +0 -13
  316. package/.claude/commands/bmad/bmm/workflows/research.md +0 -13
  317. package/.claude/commands/bmad/bmm/workflows/retrospective.md +0 -13
  318. package/.claude/commands/bmad/bmm/workflows/sprint-planning.md +0 -13
  319. package/.claude/commands/bmad/bmm/workflows/story-context.md +0 -13
  320. package/.claude/commands/bmad/bmm/workflows/story-done.md +0 -13
  321. package/.claude/commands/bmad/bmm/workflows/story-ready.md +0 -13
  322. package/.claude/commands/bmad/bmm/workflows/tech-spec.md +0 -13
  323. package/.claude/commands/bmad/bmm/workflows/workflow-init.md +0 -13
  324. package/.claude/commands/bmad/bmm/workflows/workflow-status.md +0 -13
  325. package/.claude/commands/bmad/core/agents/bmad-master.md +0 -14
  326. package/.claude/commands/bmad/core/tasks/advanced-elicitation.md +0 -9
  327. package/.claude/commands/bmad/core/tasks/index-docs.md +0 -9
  328. package/.claude/commands/bmad/core/tools/shard-doc.md +0 -9
  329. package/.claude/commands/bmad/core/workflows/brainstorming.md +0 -13
  330. package/.claude/commands/bmad/core/workflows/party-mode.md +0 -13
  331. package/.claude/github-star-reminder.txt +0 -1
  332. package/.claude/hooks/bmad-party-manager.sh +0 -225
  333. package/.claude/hooks/stop.sh +0 -221
  334. package/.claude/piper-voices-dir.txt +0 -1
  335. package/.mcp.json +0 -88
  336. package/RELEASE_NOTES_v2.4.0_DRAFT.md +0 -116
  337. package/RELEASE_NOTES_v2.4.1_DRAFT.md +0 -61
  338. package/docs/2025-11-15_15-14-33.snagx +0 -0
  339. package/docs/Screenshot 2025-11-15 151325.png +0 -0
  340. package/docs/Screenshot 2025-11-15 151432.png +0 -0
  341. package/docs/macos-piper-issue.md +0 -172
  342. package/docs/stargazer-cms-prd.md +0 -1918
  343. package/docs/whatsapp-plugin-github-issue.md +0 -393
  344. package/docs/whatsapp-tts-plugin-feasibility.md +0 -418
  345. package/docs/whatsapp-tts-standalone-plugin.md +0 -628
  346. package/github-profile-draft.md +0 -57
  347. package/linkedin/vibe-coding-and-pulseaudio.md +0 -121
  348. package/mcp-server/agentvibes.db +0 -0
  349. package/scripts/audio-tunnel.config +0 -17
  350. package/scripts/testmacos.sh +0 -1
  351. package/v4-backup/.bmad-core/agent-teams/team-all.yaml +0 -15
  352. package/v4-backup/.bmad-core/agent-teams/team-fullstack.yaml +0 -19
  353. package/v4-backup/.bmad-core/agent-teams/team-ide-minimal.yaml +0 -11
  354. package/v4-backup/.bmad-core/agent-teams/team-no-ui.yaml +0 -14
  355. package/v4-backup/.bmad-core/agents/analyst.md +0 -84
  356. package/v4-backup/.bmad-core/agents/architect.md +0 -85
  357. package/v4-backup/.bmad-core/agents/bmad-master.md +0 -110
  358. package/v4-backup/.bmad-core/agents/bmad-orchestrator.md +0 -147
  359. package/v4-backup/.bmad-core/agents/dev.md +0 -81
  360. package/v4-backup/.bmad-core/agents/pm.md +0 -84
  361. package/v4-backup/.bmad-core/agents/po.md +0 -79
  362. package/v4-backup/.bmad-core/agents/qa.md +0 -87
  363. package/v4-backup/.bmad-core/agents/sm.md +0 -65
  364. package/v4-backup/.bmad-core/agents/ux-expert.md +0 -69
  365. package/v4-backup/.bmad-core/checklists/architect-checklist.md +0 -440
  366. package/v4-backup/.bmad-core/checklists/change-checklist.md +0 -184
  367. package/v4-backup/.bmad-core/checklists/pm-checklist.md +0 -372
  368. package/v4-backup/.bmad-core/checklists/po-master-checklist.md +0 -434
  369. package/v4-backup/.bmad-core/checklists/story-dod-checklist.md +0 -96
  370. package/v4-backup/.bmad-core/checklists/story-draft-checklist.md +0 -155
  371. package/v4-backup/.bmad-core/core-config.yaml +0 -22
  372. package/v4-backup/.bmad-core/data/bmad-kb.md +0 -809
  373. package/v4-backup/.bmad-core/data/brainstorming-techniques.md +0 -38
  374. package/v4-backup/.bmad-core/data/elicitation-methods.md +0 -156
  375. package/v4-backup/.bmad-core/data/technical-preferences.md +0 -5
  376. package/v4-backup/.bmad-core/data/test-levels-framework.md +0 -148
  377. package/v4-backup/.bmad-core/data/test-priorities-matrix.md +0 -174
  378. package/v4-backup/.bmad-core/enhanced-ide-development-workflow.md +0 -248
  379. package/v4-backup/.bmad-core/install-manifest.yaml +0 -230
  380. package/v4-backup/.bmad-core/tasks/advanced-elicitation.md +0 -119
  381. package/v4-backup/.bmad-core/tasks/apply-qa-fixes.md +0 -150
  382. package/v4-backup/.bmad-core/tasks/brownfield-create-epic.md +0 -162
  383. package/v4-backup/.bmad-core/tasks/brownfield-create-story.md +0 -149
  384. package/v4-backup/.bmad-core/tasks/correct-course.md +0 -72
  385. package/v4-backup/.bmad-core/tasks/create-brownfield-story.md +0 -314
  386. package/v4-backup/.bmad-core/tasks/create-deep-research-prompt.md +0 -280
  387. package/v4-backup/.bmad-core/tasks/create-doc.md +0 -103
  388. package/v4-backup/.bmad-core/tasks/create-next-story.md +0 -114
  389. package/v4-backup/.bmad-core/tasks/document-project.md +0 -345
  390. package/v4-backup/.bmad-core/tasks/execute-checklist.md +0 -88
  391. package/v4-backup/.bmad-core/tasks/facilitate-brainstorming-session.md +0 -138
  392. package/v4-backup/.bmad-core/tasks/generate-ai-frontend-prompt.md +0 -53
  393. package/v4-backup/.bmad-core/tasks/index-docs.md +0 -175
  394. package/v4-backup/.bmad-core/tasks/kb-mode-interaction.md +0 -77
  395. package/v4-backup/.bmad-core/tasks/nfr-assess.md +0 -345
  396. package/v4-backup/.bmad-core/tasks/qa-gate.md +0 -163
  397. package/v4-backup/.bmad-core/tasks/review-story.md +0 -316
  398. package/v4-backup/.bmad-core/tasks/risk-profile.md +0 -355
  399. package/v4-backup/.bmad-core/tasks/shard-doc.md +0 -187
  400. package/v4-backup/.bmad-core/tasks/test-design.md +0 -176
  401. package/v4-backup/.bmad-core/tasks/trace-requirements.md +0 -266
  402. package/v4-backup/.bmad-core/tasks/validate-next-story.md +0 -136
  403. package/v4-backup/.bmad-core/templates/architecture-tmpl.yaml +0 -651
  404. package/v4-backup/.bmad-core/templates/brainstorming-output-tmpl.yaml +0 -156
  405. package/v4-backup/.bmad-core/templates/brownfield-architecture-tmpl.yaml +0 -477
  406. package/v4-backup/.bmad-core/templates/brownfield-prd-tmpl.yaml +0 -281
  407. package/v4-backup/.bmad-core/templates/competitor-analysis-tmpl.yaml +0 -307
  408. package/v4-backup/.bmad-core/templates/front-end-architecture-tmpl.yaml +0 -219
  409. package/v4-backup/.bmad-core/templates/front-end-spec-tmpl.yaml +0 -350
  410. package/v4-backup/.bmad-core/templates/fullstack-architecture-tmpl.yaml +0 -824
  411. package/v4-backup/.bmad-core/templates/market-research-tmpl.yaml +0 -253
  412. package/v4-backup/.bmad-core/templates/prd-tmpl.yaml +0 -203
  413. package/v4-backup/.bmad-core/templates/project-brief-tmpl.yaml +0 -222
  414. package/v4-backup/.bmad-core/templates/qa-gate-tmpl.yaml +0 -103
  415. package/v4-backup/.bmad-core/templates/story-tmpl.yaml +0 -138
  416. package/v4-backup/.bmad-core/user-guide.md +0 -577
  417. package/v4-backup/.bmad-core/utils/bmad-doc-template.md +0 -327
  418. package/v4-backup/.bmad-core/utils/workflow-management.md +0 -71
  419. package/v4-backup/.bmad-core/workflows/brownfield-fullstack.yaml +0 -298
  420. package/v4-backup/.bmad-core/workflows/brownfield-service.yaml +0 -188
  421. package/v4-backup/.bmad-core/workflows/brownfield-ui.yaml +0 -198
  422. package/v4-backup/.bmad-core/workflows/greenfield-fullstack.yaml +0 -241
  423. package/v4-backup/.bmad-core/workflows/greenfield-service.yaml +0 -207
  424. package/v4-backup/.bmad-core/workflows/greenfield-ui.yaml +0 -236
  425. package/v4-backup/.bmad-core/working-in-the-brownfield.md +0 -606
@@ -64,92 +64,89 @@ mkdir -p "$CLAUDE_DIR"
64
64
  # Source provider manager to detect active provider
65
65
  source "$SCRIPT_DIR/provider-manager.sh" 2>/dev/null || true
66
66
 
67
- # Language to ElevenLabs multilingual voice mapping
68
- declare -A ELEVENLABS_VOICES=(
69
- ["spanish"]="Antoni"
70
- ["french"]="Rachel"
71
- ["german"]="Domi"
72
- ["italian"]="Bella"
73
- ["portuguese"]="Matilda"
74
- ["chinese"]="Antoni"
75
- ["japanese"]="Antoni"
76
- ["korean"]="Antoni"
77
- ["russian"]="Domi"
78
- ["polish"]="Antoni"
79
- ["dutch"]="Rachel"
80
- ["turkish"]="Antoni"
81
- ["arabic"]="Antoni"
82
- ["hindi"]="Antoni"
83
- ["swedish"]="Rachel"
84
- ["danish"]="Rachel"
85
- ["norwegian"]="Rachel"
86
- ["finnish"]="Rachel"
87
- ["czech"]="Domi"
88
- ["romanian"]="Rachel"
89
- ["ukrainian"]="Domi"
90
- ["greek"]="Antoni"
91
- ["bulgarian"]="Domi"
92
- ["croatian"]="Domi"
93
- ["slovak"]="Domi"
94
- )
95
-
96
- # Language to Piper voice model mapping
97
- declare -A PIPER_VOICES=(
98
- ["spanish"]="es_ES-davefx-medium"
99
- ["french"]="fr_FR-siwis-medium"
100
- ["german"]="de_DE-thorsten-medium"
101
- ["italian"]="it_IT-riccardo-x_low"
102
- ["portuguese"]="pt_BR-faber-medium"
103
- ["chinese"]="zh_CN-huayan-medium"
104
- ["japanese"]="ja_JP-hikari-medium"
105
- ["korean"]="ko_KR-eunyoung-medium"
106
- ["russian"]="ru_RU-dmitri-medium"
107
- ["polish"]="pl_PL-darkman-medium"
108
- ["dutch"]="nl_NL-rdh-medium"
109
- ["turkish"]="tr_TR-dfki-medium"
110
- ["arabic"]="ar_JO-kareem-medium"
111
- ["hindi"]="hi_IN-amitabh-medium"
112
- ["swedish"]="sv_SE-nst-medium"
113
- ["danish"]="da_DK-talesyntese-medium"
114
- ["norwegian"]="no_NO-talesyntese-medium"
115
- ["finnish"]="fi_FI-harri-medium"
116
- ["czech"]="cs_CZ-jirka-medium"
117
- ["romanian"]="ro_RO-mihai-medium"
118
- ["ukrainian"]="uk_UA-lada-x_low"
119
- ["greek"]="el_GR-rapunzelina-low"
120
- ["bulgarian"]="bg_BG-valentin-medium"
121
- ["croatian"]="hr_HR-gorana-medium"
122
- ["slovak"]="sk_SK-lili-medium"
123
- )
124
-
125
- # Backward compatibility: Keep LANGUAGE_VOICES for existing code
126
- declare -A LANGUAGE_VOICES=(
127
- ["spanish"]="Antoni"
128
- ["french"]="Rachel"
129
- ["german"]="Domi"
130
- ["italian"]="Bella"
131
- ["portuguese"]="Matilda"
132
- ["chinese"]="Antoni"
133
- ["japanese"]="Antoni"
134
- ["korean"]="Antoni"
135
- ["russian"]="Domi"
136
- ["polish"]="Antoni"
137
- ["dutch"]="Rachel"
138
- ["turkish"]="Antoni"
139
- ["arabic"]="Antoni"
140
- ["hindi"]="Antoni"
141
- ["swedish"]="Rachel"
142
- ["danish"]="Rachel"
143
- ["norwegian"]="Rachel"
144
- ["finnish"]="Rachel"
145
- ["czech"]="Domi"
146
- ["romanian"]="Rachel"
147
- ["ukrainian"]="Domi"
148
- ["greek"]="Antoni"
149
- ["bulgarian"]="Domi"
150
- ["croatian"]="Domi"
151
- ["slovak"]="Domi"
152
- )
67
+ # =============================================================================
68
+ # BASH 3.2 COMPATIBILITY: Function-based lookups instead of associative arrays
69
+ # macOS ships with Bash 3.2 which doesn't support declare -A (added in Bash 4.0)
70
+ # =============================================================================
71
+
72
+ # Get ElevenLabs voice for a language
73
+ _get_elevenlabs_voice() {
74
+ local lang="$1"
75
+ case "$lang" in
76
+ spanish) echo "Antoni" ;;
77
+ french) echo "Rachel" ;;
78
+ german) echo "Domi" ;;
79
+ italian) echo "Bella" ;;
80
+ portuguese) echo "Matilda" ;;
81
+ chinese) echo "Antoni" ;;
82
+ japanese) echo "Antoni" ;;
83
+ korean) echo "Antoni" ;;
84
+ russian) echo "Domi" ;;
85
+ polish) echo "Antoni" ;;
86
+ dutch) echo "Rachel" ;;
87
+ turkish) echo "Antoni" ;;
88
+ arabic) echo "Antoni" ;;
89
+ hindi) echo "Antoni" ;;
90
+ swedish) echo "Rachel" ;;
91
+ danish) echo "Rachel" ;;
92
+ norwegian) echo "Rachel" ;;
93
+ finnish) echo "Rachel" ;;
94
+ czech) echo "Domi" ;;
95
+ romanian) echo "Rachel" ;;
96
+ ukrainian) echo "Domi" ;;
97
+ greek) echo "Antoni" ;;
98
+ bulgarian) echo "Domi" ;;
99
+ croatian) echo "Domi" ;;
100
+ slovak) echo "Domi" ;;
101
+ *) echo "" ;;
102
+ esac
103
+ }
104
+
105
+ # Get Piper voice for a language
106
+ _get_piper_voice() {
107
+ local lang="$1"
108
+ case "$lang" in
109
+ spanish) echo "es_ES-davefx-medium" ;;
110
+ french) echo "fr_FR-siwis-medium" ;;
111
+ german) echo "de_DE-thorsten-medium" ;;
112
+ italian) echo "it_IT-riccardo-x_low" ;;
113
+ portuguese) echo "pt_BR-faber-medium" ;;
114
+ chinese) echo "zh_CN-huayan-medium" ;;
115
+ japanese) echo "ja_JP-hikari-medium" ;;
116
+ korean) echo "ko_KR-eunyoung-medium" ;;
117
+ russian) echo "ru_RU-dmitri-medium" ;;
118
+ polish) echo "pl_PL-darkman-medium" ;;
119
+ dutch) echo "nl_NL-rdh-medium" ;;
120
+ turkish) echo "tr_TR-dfki-medium" ;;
121
+ arabic) echo "ar_JO-kareem-medium" ;;
122
+ hindi) echo "hi_IN-amitabh-medium" ;;
123
+ swedish) echo "sv_SE-nst-medium" ;;
124
+ danish) echo "da_DK-talesyntese-medium" ;;
125
+ norwegian) echo "no_NO-talesyntese-medium" ;;
126
+ finnish) echo "fi_FI-harri-medium" ;;
127
+ czech) echo "cs_CZ-jirka-medium" ;;
128
+ romanian) echo "ro_RO-mihai-medium" ;;
129
+ ukrainian) echo "uk_UA-lada-x_low" ;;
130
+ greek) echo "el_GR-rapunzelina-low" ;;
131
+ bulgarian) echo "bg_BG-valentin-medium" ;;
132
+ croatian) echo "hr_HR-gorana-medium" ;;
133
+ slovak) echo "sk_SK-lili-medium" ;;
134
+ *) echo "" ;;
135
+ esac
136
+ }
137
+
138
+ # Get default (ElevenLabs) voice for a language - backward compatibility
139
+ _get_language_voice() {
140
+ _get_elevenlabs_voice "$1"
141
+ }
142
+
143
+ # Check if language is supported
144
+ _is_language_supported() {
145
+ local lang="$1"
146
+ local voice
147
+ voice=$(_get_elevenlabs_voice "$lang")
148
+ [[ -n "$voice" ]]
149
+ }
153
150
 
154
151
  # Supported languages list
155
152
  SUPPORTED_LANGUAGES="spanish, french, german, italian, portuguese, chinese, japanese, korean, polish, dutch, turkish, russian, arabic, hindi, swedish, danish, norwegian, finnish, czech, romanian, ukrainian, greek, bulgarian, croatian, slovak"
@@ -172,8 +169,8 @@ set_language() {
172
169
  return 0
173
170
  fi
174
171
 
175
- # Check if language is supported
176
- if [[ ! " ${!LANGUAGE_VOICES[@]} " =~ " ${lang} " ]]; then
172
+ # Check if language is supported (Bash 3.2 compatible)
173
+ if ! _is_language_supported "$lang"; then
177
174
  echo "❌ Language '$lang' not supported"
178
175
  echo ""
179
176
  echo "Supported languages:"
@@ -194,11 +191,12 @@ set_language() {
194
191
  provider="elevenlabs"
195
192
  fi
196
193
 
197
- local recommended_voice=$(get_voice_for_language "$lang" "$provider")
194
+ local recommended_voice
195
+ recommended_voice=$(get_voice_for_language "$lang" "$provider")
198
196
 
199
- # Fallback to old mapping if provider-aware function returns empty
197
+ # Fallback to default mapping if provider-aware function returns empty
200
198
  if [[ -z "$recommended_voice" ]]; then
201
- recommended_voice="${LANGUAGE_VOICES[$lang]}"
199
+ recommended_voice=$(_get_language_voice "$lang")
202
200
  fi
203
201
 
204
202
  echo "✓ Language set to: $lang"
@@ -223,11 +221,12 @@ get_language() {
223
221
  provider="elevenlabs"
224
222
  fi
225
223
 
226
- local recommended_voice=$(get_voice_for_language "$lang" "$provider")
224
+ local recommended_voice
225
+ recommended_voice=$(get_voice_for_language "$lang" "$provider")
227
226
 
228
- # Fallback to old mapping
227
+ # Fallback to default mapping
229
228
  if [[ -z "$recommended_voice" ]]; then
230
- recommended_voice="${LANGUAGE_VOICES[$lang]}"
229
+ recommended_voice=$(_get_language_voice "$lang")
231
230
  fi
232
231
 
233
232
  echo "Current language: $lang"
@@ -274,7 +273,7 @@ get_best_voice_for_language() {
274
273
  fi
275
274
 
276
275
  # Return recommended voice for language
277
- echo "${LANGUAGE_VOICES[$lang]}"
276
+ _get_language_voice "$lang"
278
277
  }
279
278
 
280
279
  # Function to get voice for a specific language and provider
@@ -317,16 +316,16 @@ get_voice_for_language() {
317
316
  fi
318
317
  fi
319
318
 
320
- # Return appropriate voice based on provider
319
+ # Return appropriate voice based on provider (Bash 3.2 compatible)
321
320
  case "$provider" in
322
321
  piper)
323
- echo "${PIPER_VOICES[$language]:-}"
322
+ _get_piper_voice "$language"
324
323
  ;;
325
324
  elevenlabs)
326
- echo "${ELEVENLABS_VOICES[$language]:-}"
325
+ _get_elevenlabs_voice "$language"
327
326
  ;;
328
327
  *)
329
- echo "${ELEVENLABS_VOICES[$language]:-}"
328
+ _get_elevenlabs_voice "$language"
330
329
  ;;
331
330
  esac
332
331
  }
@@ -371,8 +370,10 @@ if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
371
370
  list)
372
371
  echo "Supported languages and recommended voices:"
373
372
  echo ""
374
- for lang in "${!LANGUAGE_VOICES[@]}"; do
375
- printf "%-15s %s\n" "$lang" "${LANGUAGE_VOICES[$lang]}"
373
+ # Bash 3.2 compatible - use explicit list instead of associative array keys
374
+ # Note: 'local' can't be used outside functions in Bash 3.2
375
+ for lang in spanish french german italian portuguese chinese japanese korean russian polish dutch turkish arabic hindi swedish danish norwegian finnish czech romanian ukrainian greek bulgarian croatian slovak; do
376
+ printf "%-15s → %s\n" "$lang" "$(_get_language_voice "$lang")"
376
377
  done | sort
377
378
  ;;
378
379
  *)
@@ -163,7 +163,7 @@ case "$1" in
163
163
  else
164
164
  echo "🎤 Available ElevenLabs TTS Voices:"
165
165
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
166
- for voice in "${!VOICES[@]}"; do
166
+ list_elevenlabs_voices | while read -r voice; do
167
167
  if [ "$voice" = "$CURRENT_VOICE" ]; then
168
168
  echo " ▶ $voice (current)"
169
169
  else
@@ -188,8 +188,8 @@ case "$1" in
188
188
  # User specified a voice name
189
189
  VOICE_NAME="$2"
190
190
 
191
- # Check if voice exists
192
- if [[ -n "${VOICES[$VOICE_NAME]}" ]]; then
191
+ # Check if voice exists using function
192
+ if is_elevenlabs_voice "$VOICE_NAME"; then
193
193
  echo "🎤 Previewing voice: ${VOICE_NAME}"
194
194
  echo ""
195
195
  "$TTS_SCRIPT" "Hello, this is ${VOICE_NAME}. How do you like my voice?" "${VOICE_NAME}"
@@ -197,7 +197,7 @@ case "$1" in
197
197
  echo "❌ Voice not found: ${VOICE_NAME}"
198
198
  echo ""
199
199
  echo "Available voices:"
200
- for voice in "${!VOICES[@]}"; do
200
+ list_elevenlabs_voices | while read -r voice; do
201
201
  echo " • $voice"
202
202
  done | sort
203
203
  fi
@@ -209,14 +209,10 @@ case "$1" in
209
209
  echo ""
210
210
 
211
211
  # Sort voices and preview first 3
212
- VOICE_ARRAY=()
213
- for voice in "${!VOICES[@]}"; do
214
- VOICE_ARRAY+=("$voice")
215
- done
216
-
217
- # Sort the array
218
- IFS=$'\n' SORTED_VOICES=($(sort <<<"${VOICE_ARRAY[*]}"))
219
- unset IFS
212
+ SORTED_VOICES=()
213
+ while IFS= read -r voice; do
214
+ SORTED_VOICES+=("$voice")
215
+ done < <(list_elevenlabs_voices | sort)
220
216
 
221
217
  # Play first 3 voices
222
218
  COUNT=0
@@ -225,7 +221,7 @@ case "$1" in
225
221
  break
226
222
  fi
227
223
  echo "🔊 ${voice}..."
228
- "$TTS_SCRIPT" "Hi, I'm ${voice}" "${VOICES[$voice]}"
224
+ "$TTS_SCRIPT" "Hi, I'm ${voice}" "$voice"
229
225
  sleep 0.5
230
226
  COUNT=$((COUNT + 1))
231
227
  done
@@ -253,15 +249,11 @@ case "$1" in
253
249
  # Get current voice
254
250
  CURRENT=$(cat "$VOICE_FILE" 2>/dev/null || get_default_voice)
255
251
 
256
- # Create array of voice names
257
- VOICE_ARRAY=()
258
- for voice in "${!VOICES[@]}"; do
259
- VOICE_ARRAY+=("$voice")
260
- done
261
-
262
- # Sort the array
263
- IFS=$'\n' SORTED_VOICES=($(sort <<<"${VOICE_ARRAY[*]}"))
264
- unset IFS
252
+ # Create sorted array of voice names
253
+ SORTED_VOICES=()
254
+ while IFS= read -r voice; do
255
+ SORTED_VOICES+=("$voice")
256
+ done < <(list_elevenlabs_voices | sort)
265
257
 
266
258
  # Display numbered list in two columns for compactness
267
259
  HALF=$(( (${#SORTED_VOICES[@]} + 1) / 2 ))
@@ -314,7 +306,33 @@ case "$1" in
314
306
  fi
315
307
 
316
308
  # Voice lookup strategy depends on active provider
317
- if [[ "$ACTIVE_PROVIDER" == "piper" ]]; then
309
+ if [[ "$ACTIVE_PROVIDER" == "macos" ]]; then
310
+ # macOS voice lookup using say -v ?
311
+ if [[ "$(uname -s)" != "Darwin" ]]; then
312
+ echo "❌ macOS voices only available on macOS"
313
+ echo "Switch to another provider: /agent-vibes:provider switch piper"
314
+ exit 1
315
+ fi
316
+
317
+ # Check if voice exists (case-insensitive match against first column)
318
+ FOUND=""
319
+ while IFS= read -r line; do
320
+ voice=$(echo "$line" | awk '{print $1}')
321
+ if [[ "$(to_lower "$voice")" == "$(to_lower "$VOICE_NAME")" ]]; then
322
+ FOUND="$voice"
323
+ break
324
+ fi
325
+ done < <(say -v ? 2>/dev/null)
326
+
327
+ if [[ -z "$FOUND" ]]; then
328
+ echo "❌ macOS voice not found: $VOICE_NAME"
329
+ echo ""
330
+ echo "Available macOS voices:"
331
+ say -v ? 2>/dev/null | awk '{printf " - %-15s %s\n", $1, $2}' | head -20
332
+ echo " ... (use /agent-vibes:list to see all)"
333
+ exit 1
334
+ fi
335
+ elif [[ "$ACTIVE_PROVIDER" == "piper" ]]; then
318
336
  # Piper voice lookup: Scan voice directory for .onnx files
319
337
  source "$SCRIPT_DIR/piper-voice-manager.sh"
320
338
  VOICE_DIR=$(get_voice_storage_dir)
@@ -407,15 +425,11 @@ case "$1" in
407
425
  # ElevenLabs voice lookup
408
426
  # Check if input is a number
409
427
  if [[ "$VOICE_NAME" =~ ^[0-9]+$ ]]; then
410
- # Get voice array
411
- VOICE_ARRAY=()
412
- for voice in "${!VOICES[@]}"; do
413
- VOICE_ARRAY+=("$voice")
414
- done
415
-
416
- # Sort the array
417
- IFS=$'\n' SORTED_VOICES=($(sort <<<"${VOICE_ARRAY[*]}"))
418
- unset IFS
428
+ # Get sorted voice array
429
+ SORTED_VOICES=()
430
+ while IFS= read -r voice; do
431
+ SORTED_VOICES+=("$voice")
432
+ done < <(list_elevenlabs_voices | sort)
419
433
 
420
434
  # Get voice by number (adjust for 0-based index)
421
435
  INDEX=$((VOICE_NAME - 1))
@@ -430,19 +444,19 @@ case "$1" in
430
444
  else
431
445
  # Check if voice exists (case-insensitive)
432
446
  FOUND=""
433
- for voice in "${!VOICES[@]}"; do
447
+ while IFS= read -r voice; do
434
448
  if [[ "$(to_lower "$voice")" == "$(to_lower "$VOICE_NAME")" ]]; then
435
449
  FOUND="$voice"
436
450
  break
437
451
  fi
438
- done
452
+ done < <(list_elevenlabs_voices)
439
453
  fi
440
454
 
441
455
  if [[ -z "$FOUND" ]]; then
442
456
  echo "❌ Unknown voice: $VOICE_NAME"
443
457
  echo ""
444
458
  echo "Available voices:"
445
- for voice in "${!VOICES[@]}"; do
459
+ list_elevenlabs_voices | while read -r voice; do
446
460
  echo " - $voice"
447
461
  done | sort
448
462
  exit 1
@@ -453,8 +467,11 @@ case "$1" in
453
467
  echo "✅ Voice switched to: $FOUND"
454
468
 
455
469
  # Show voice ID only for ElevenLabs voices
456
- if [[ "$ACTIVE_PROVIDER" != "piper" ]] && [[ -n "${VOICES[$FOUND]}" ]]; then
457
- echo "🎤 Voice ID: ${VOICES[$FOUND]}"
470
+ if [[ "$ACTIVE_PROVIDER" != "piper" ]]; then
471
+ VOICE_ID=$(get_voice_id "$FOUND")
472
+ if [[ -n "$VOICE_ID" ]]; then
473
+ echo "🎤 Voice ID: $VOICE_ID"
474
+ fi
458
475
  fi
459
476
 
460
477
  # Have the new voice introduce itself (unless silent mode)
@@ -565,9 +582,7 @@ case "$1" in
565
582
  fi
566
583
  else
567
584
  # List ElevenLabs voices
568
- for voice in "${!VOICES[@]}"; do
569
- echo "$voice"
570
- done | sort
585
+ list_elevenlabs_voices | sort
571
586
  fi
572
587
  ;;
573
588
 
@@ -39,32 +39,80 @@
39
39
  # @patterns Centralized configuration, DRY principle for voice mappings
40
40
  # @related voice-manager.sh, play-tts-elevenlabs.sh, personality/*.md files
41
41
 
42
- declare -A VOICES=(
43
- ["Amy"]="bhJUNIXWQQ94l8eI2VUf"
44
- ["Antoni"]="ErXwobaYiN019PkySvjV"
45
- ["Archer"]="L0Dsvb3SLTyegXwtm47J"
46
- ["Aria"]="TC0Zp7WVFzhA8zpTlRqV"
47
- ["Bella"]="EXAVITQu4vr4xnSDxMaL"
48
- ["Burt Reynolds"]="4YYIPFl9wE5c4L2eu2Gb"
49
- ["Charlotte"]="XB0fDUnXU5powFXDhCwa"
50
- ["Cowboy Bob"]="KTPVrSVAEUSJRClDzBw7"
51
- ["Demon Monster"]="vfaqCOvlrKi4Zp7C2IAm"
52
- ["Domi"]="AZnzlk1XvdvUeBnXmlld"
53
- ["Dr. Von Fusion"]="yjJ45q8TVCrtMhEKurxY"
54
- ["Drill Sergeant"]="vfaqCOvlrKi4Zp7C2IAm"
55
- ["Grandpa Spuds Oxley"]="NOpBlnGInO9m6vDvFkFC"
56
- ["Grandpa Werthers"]="MKlLqCItoCkvdhrxgtLv"
57
- ["Jessica Anne Bogart"]="flHkNRp1BlvT73UL6gyz"
58
- ["Juniper"]="aMSt68OGf4xUZAnLpTU8"
59
- ["Lutz Laugh"]="9yzdeviXkFddZ4Oz8Mok"
60
- ["Matilda"]="XrExE9yKIg1WjnnlVkGX"
61
- ["Matthew Schmitz"]="0SpgpJ4D3MpHCiWdyTg3"
62
- ["Michael"]="U1Vk2oyatMdYs096Ety7"
63
- ["Ms. Walker"]="DLsHlh26Ugcm6ELvS0qi"
64
- ["Northern Terry"]="wo6udizrrtpIxWGp2qJk"
65
- ["Pirate Marshal"]="PPzYpIqttlTYA83688JI"
66
- ["Rachel"]="21m00Tcm4TlvDq8ikWAM"
67
- ["Ralf Eisend"]="A9evEp8yGjv4c3WsIKuY"
68
- ["Tiffany"]="6aDn1KB0hjpdcocrUkmq"
69
- ["Tom"]="DYkrAHD8iwork3YSUBbs"
70
- )
42
+ # Bash 3.2 compatible voice lookup functions
43
+ # macOS ships with bash 3.2 which doesn't support associative arrays (declare -A)
44
+ # We use simple functions instead for compatibility
45
+
46
+ # Get voice ID by name
47
+ get_voice_id() {
48
+ local name="$1"
49
+ case "$name" in
50
+ "Amy") echo "bhJUNIXWQQ94l8eI2VUf" ;;
51
+ "Antoni") echo "ErXwobaYiN019PkySvjV" ;;
52
+ "Archer") echo "L0Dsvb3SLTyegXwtm47J" ;;
53
+ "Aria") echo "TC0Zp7WVFzhA8zpTlRqV" ;;
54
+ "Bella") echo "EXAVITQu4vr4xnSDxMaL" ;;
55
+ "Burt Reynolds") echo "4YYIPFl9wE5c4L2eu2Gb" ;;
56
+ "Charlotte") echo "XB0fDUnXU5powFXDhCwa" ;;
57
+ "Cowboy Bob") echo "KTPVrSVAEUSJRClDzBw7" ;;
58
+ "Demon Monster") echo "vfaqCOvlrKi4Zp7C2IAm" ;;
59
+ "Domi") echo "AZnzlk1XvdvUeBnXmlld" ;;
60
+ "Dr. Von Fusion") echo "yjJ45q8TVCrtMhEKurxY" ;;
61
+ "Drill Sergeant") echo "vfaqCOvlrKi4Zp7C2IAm" ;;
62
+ "Grandpa Spuds Oxley") echo "NOpBlnGInO9m6vDvFkFC" ;;
63
+ "Grandpa Werthers") echo "MKlLqCItoCkvdhrxgtLv" ;;
64
+ "Jessica Anne Bogart") echo "flHkNRp1BlvT73UL6gyz" ;;
65
+ "Juniper") echo "aMSt68OGf4xUZAnLpTU8" ;;
66
+ "Lutz Laugh") echo "9yzdeviXkFddZ4Oz8Mok" ;;
67
+ "Matilda") echo "XrExE9yKIg1WjnnlVkGX" ;;
68
+ "Matthew Schmitz") echo "0SpgpJ4D3MpHCiWdyTg3" ;;
69
+ "Michael") echo "U1Vk2oyatMdYs096Ety7" ;;
70
+ "Ms. Walker") echo "DLsHlh26Ugcm6ELvS0qi" ;;
71
+ "Northern Terry") echo "wo6udizrrtpIxWGp2qJk" ;;
72
+ "Pirate Marshal") echo "PPzYpIqttlTYA83688JI" ;;
73
+ "Rachel") echo "21m00Tcm4TlvDq8ikWAM" ;;
74
+ "Ralf Eisend") echo "A9evEp8yGjv4c3WsIKuY" ;;
75
+ "Tiffany") echo "6aDn1KB0hjpdcocrUkmq" ;;
76
+ "Tom") echo "DYkrAHD8iwork3YSUBbs" ;;
77
+ *) echo "" ;;
78
+ esac
79
+ }
80
+
81
+ # List all ElevenLabs voice names
82
+ list_elevenlabs_voices() {
83
+ echo "Amy"
84
+ echo "Antoni"
85
+ echo "Archer"
86
+ echo "Aria"
87
+ echo "Bella"
88
+ echo "Burt Reynolds"
89
+ echo "Charlotte"
90
+ echo "Cowboy Bob"
91
+ echo "Demon Monster"
92
+ echo "Domi"
93
+ echo "Dr. Von Fusion"
94
+ echo "Drill Sergeant"
95
+ echo "Grandpa Spuds Oxley"
96
+ echo "Grandpa Werthers"
97
+ echo "Jessica Anne Bogart"
98
+ echo "Juniper"
99
+ echo "Lutz Laugh"
100
+ echo "Matilda"
101
+ echo "Matthew Schmitz"
102
+ echo "Michael"
103
+ echo "Ms. Walker"
104
+ echo "Northern Terry"
105
+ echo "Pirate Marshal"
106
+ echo "Rachel"
107
+ echo "Ralf Eisend"
108
+ echo "Tiffany"
109
+ echo "Tom"
110
+ }
111
+
112
+ # Check if voice exists
113
+ is_elevenlabs_voice() {
114
+ local name="$1"
115
+ local id
116
+ id=$(get_voice_id "$name")
117
+ [[ -n "$id" ]]
118
+ }
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  [![Publish](https://github.com/paulpreibisch/AgentVibes/actions/workflows/publish.yml/badge.svg)](https://github.com/paulpreibisch/AgentVibes/actions/workflows/publish.yml)
12
12
  [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
13
13
 
14
- **Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v2.14.11
14
+ **Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v2.14.13
15
15
 
16
16
  ---
17
17
 
@@ -94,16 +94,15 @@ Whether you're coding in Claude Code, chatting in Claude Desktop, or using Warp
94
94
 
95
95
  ## 📰 Latest Release
96
96
 
97
- **[v2.14.11 - macOS SSH Audio Tunnel Support](https://github.com/paulpreibisch/AgentVibes/releases/tag/v2.14.11)** 🎉
97
+ **[v2.14.13 - Free Providers as Default](https://github.com/paulpreibisch/AgentVibes/releases/tag/v2.14.13)** 🎉
98
98
 
99
- AgentVibes v2.14.11 enables macOS TTS audio to play through remote Windows speakers when accessing a Mac via SSH. Perfect for testing macOS features on cloud Macs (e.g., Scaleway) without owning one!
99
+ AgentVibes v2.14.13 changes the `--yes` flag to always use free TTS providers by default. No more failures from expired ElevenLabs API keys! macOS defaults to macOS Say, Linux defaults to Piper TTS.
100
100
 
101
101
  **Key Highlights:**
102
- - 🔊 **SSH Audio Tunneling** - macOS TTS now plays on Windows speakers when SSHed into Mac
103
- - 🍎 **Cloud Mac Testing** - Test macOS features without owning a Mac (Scaleway recommended)
104
- - 🎵 **SSH Login Greeting** - Hear "Connected to Mac OS" on login to confirm tunnel works
105
- - 📖 **Full Documentation** - Step-by-step guide for SSH PulseAudio tunnel setup
106
- - ✅ **Backwards Compatible** - Local Mac users unaffected (still uses `afplay`)
102
+ - 🆓 **Free-First Defaults** - `--yes` flag now always picks free providers
103
+ - 🍎 **macOS Default** - macOS Say (built-in, zero setup)
104
+ - 🐧 **Linux Default** - Piper TTS (free, offline)
105
+ - 🎤 **ElevenLabs Manual** - Requires interactive selection (no more expired key failures)
107
106
 
108
107
  💡 **Tip:** If `npx agentvibes` shows an older version or missing commands, clear your npm cache: `npm cache clean --force && npx agentvibes@latest --help`
109
108