agentvibes 2.17.2 → 2.17.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.bmad/_cfg/agent-manifest.csv +11 -0
- package/.bmad/_cfg/agent-voice-map.csv +11 -0
- package/.bmad/_cfg/agents/bmm-analyst.customize.yaml +42 -0
- package/.bmad/_cfg/agents/bmm-architect.customize.yaml +42 -0
- package/.bmad/_cfg/agents/bmm-dev.customize.yaml +42 -0
- package/.bmad/_cfg/agents/bmm-frame-expert.customize.yaml +42 -0
- package/.bmad/_cfg/agents/bmm-pm.customize.yaml +42 -0
- package/.bmad/_cfg/agents/bmm-sm.customize.yaml +42 -0
- package/.bmad/_cfg/agents/bmm-tea.customize.yaml +42 -0
- package/.bmad/_cfg/agents/bmm-tech-writer.customize.yaml +42 -0
- package/.bmad/_cfg/agents/bmm-ux-designer.customize.yaml +42 -0
- package/.bmad/_cfg/agents/core-bmad-master.customize.yaml +42 -0
- package/.bmad/_cfg/files-manifest.csv +243 -0
- package/.bmad/_cfg/ides/claude-code.yaml +6 -0
- package/.bmad/_cfg/manifest.yaml +9 -0
- package/.bmad/_cfg/task-manifest.csv +5 -0
- package/.bmad/_cfg/tool-manifest.csv +2 -0
- package/.bmad/_cfg/workflow-manifest.csv +38 -0
- package/.bmad/bmm/README.md +128 -0
- package/.bmad/bmm/agents/analyst.md +79 -0
- package/.bmad/bmm/agents/analyst.md.backup-pre-tts +75 -0
- package/.bmad/bmm/agents/architect.md +80 -0
- package/.bmad/bmm/agents/dev.md +70 -0
- package/.bmad/bmm/agents/frame-expert.md +72 -0
- package/.bmad/bmm/agents/pm.md +84 -0
- package/.bmad/bmm/agents/sm.md +93 -0
- package/.bmad/bmm/agents/tea.md +80 -0
- package/.bmad/bmm/agents/tech-writer.md +84 -0
- package/.bmad/bmm/agents/ux-designer.md +79 -0
- package/.bmad/bmm/config.yaml +17 -0
- package/.bmad/bmm/docs/README.md +236 -0
- package/.bmad/bmm/docs/agents-guide.md +1058 -0
- package/.bmad/bmm/docs/brownfield-guide.md +762 -0
- package/.bmad/bmm/docs/enterprise-agentic-development.md +686 -0
- package/.bmad/bmm/docs/faq.md +588 -0
- package/.bmad/bmm/docs/glossary.md +320 -0
- package/.bmad/bmm/docs/party-mode.md +224 -0
- package/.bmad/bmm/docs/quick-spec-flow.md +652 -0
- package/.bmad/bmm/docs/quick-start.md +376 -0
- package/.bmad/bmm/docs/scale-adaptive-system.md +612 -0
- package/.bmad/bmm/docs/test-architecture.md +396 -0
- package/.bmad/bmm/docs/workflow-architecture-reference.md +366 -0
- package/.bmad/bmm/docs/workflow-document-project-reference.md +489 -0
- package/.bmad/bmm/docs/workflows-analysis.md +370 -0
- package/.bmad/bmm/docs/workflows-implementation.md +286 -0
- package/.bmad/bmm/docs/workflows-planning.md +612 -0
- package/.bmad/bmm/docs/workflows-solutioning.md +554 -0
- package/.bmad/bmm/teams/default-party.csv +20 -0
- package/.bmad/bmm/teams/team-fullstack.yaml +13 -0
- package/.bmad/bmm/testarch/knowledge/ci-burn-in.md +675 -0
- package/.bmad/bmm/testarch/knowledge/component-tdd.md +486 -0
- package/.bmad/bmm/testarch/knowledge/contract-testing.md +957 -0
- package/.bmad/bmm/testarch/knowledge/data-factories.md +500 -0
- package/.bmad/bmm/testarch/knowledge/email-auth.md +721 -0
- package/.bmad/bmm/testarch/knowledge/error-handling.md +725 -0
- package/.bmad/bmm/testarch/knowledge/feature-flags.md +750 -0
- package/.bmad/bmm/testarch/knowledge/fixture-architecture.md +401 -0
- package/.bmad/bmm/testarch/knowledge/network-first.md +486 -0
- package/.bmad/bmm/testarch/knowledge/nfr-criteria.md +670 -0
- package/.bmad/bmm/testarch/knowledge/playwright-config.md +730 -0
- package/.bmad/bmm/testarch/knowledge/probability-impact.md +601 -0
- package/.bmad/bmm/testarch/knowledge/risk-governance.md +615 -0
- package/.bmad/bmm/testarch/knowledge/selective-testing.md +732 -0
- package/.bmad/bmm/testarch/knowledge/selector-resilience.md +527 -0
- package/.bmad/bmm/testarch/knowledge/test-healing-patterns.md +644 -0
- package/.bmad/bmm/testarch/knowledge/test-levels-framework.md +473 -0
- package/.bmad/bmm/testarch/knowledge/test-priorities-matrix.md +373 -0
- package/.bmad/bmm/testarch/knowledge/test-quality.md +664 -0
- package/.bmad/bmm/testarch/knowledge/timing-debugging.md +372 -0
- package/.bmad/bmm/testarch/knowledge/visual-debugging.md +524 -0
- package/.bmad/bmm/testarch/tea-index.csv +22 -0
- package/.bmad/bmm/workflows/1-analysis/brainstorm-project/instructions.md +112 -0
- package/.bmad/bmm/workflows/1-analysis/brainstorm-project/project-context.md +25 -0
- package/.bmad/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +26 -0
- package/.bmad/bmm/workflows/1-analysis/domain-research/instructions.md +425 -0
- package/.bmad/bmm/workflows/1-analysis/domain-research/template.md +180 -0
- package/.bmad/bmm/workflows/1-analysis/domain-research/workflow.yaml +28 -0
- package/.bmad/bmm/workflows/1-analysis/product-brief/checklist.md +115 -0
- package/.bmad/bmm/workflows/1-analysis/product-brief/instructions.md +524 -0
- package/.bmad/bmm/workflows/1-analysis/product-brief/template.md +181 -0
- package/.bmad/bmm/workflows/1-analysis/product-brief/workflow.yaml +45 -0
- package/.bmad/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +144 -0
- package/.bmad/bmm/workflows/1-analysis/research/checklist-technical.md +249 -0
- package/.bmad/bmm/workflows/1-analysis/research/checklist.md +299 -0
- package/.bmad/bmm/workflows/1-analysis/research/claude-code/injections.yaml +114 -0
- package/.bmad/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +438 -0
- package/.bmad/bmm/workflows/1-analysis/research/instructions-market.md +675 -0
- package/.bmad/bmm/workflows/1-analysis/research/instructions-router.md +134 -0
- package/.bmad/bmm/workflows/1-analysis/research/instructions-technical.md +534 -0
- package/.bmad/bmm/workflows/1-analysis/research/template-deep-prompt.md +94 -0
- package/.bmad/bmm/workflows/1-analysis/research/template-market.md +347 -0
- package/.bmad/bmm/workflows/1-analysis/research/template-technical.md +245 -0
- package/.bmad/bmm/workflows/1-analysis/research/workflow.yaml +44 -0
- package/.bmad/bmm/workflows/2-plan-workflows/create-epics-and-stories/epics-template.md +80 -0
- package/.bmad/bmm/workflows/2-plan-workflows/create-epics-and-stories/instructions.md +616 -0
- package/.bmad/bmm/workflows/2-plan-workflows/create-epics-and-stories/workflow.yaml +53 -0
- package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +310 -0
- package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +1308 -0
- package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +145 -0
- package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +61 -0
- package/.bmad/bmm/workflows/2-plan-workflows/prd/checklist.md +346 -0
- package/.bmad/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +13 -0
- package/.bmad/bmm/workflows/2-plan-workflows/prd/instructions.md +703 -0
- package/.bmad/bmm/workflows/2-plan-workflows/prd/prd-template.md +204 -0
- package/.bmad/bmm/workflows/2-plan-workflows/prd/project-types.csv +11 -0
- package/.bmad/bmm/workflows/2-plan-workflows/prd/workflow.yaml +52 -0
- package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +217 -0
- package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +74 -0
- package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +436 -0
- package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +980 -0
- package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +181 -0
- package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +90 -0
- package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +58 -0
- package/.bmad/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +321 -0
- package/.bmad/bmm/workflows/3-solutioning/architecture/architecture-template.md +103 -0
- package/.bmad/bmm/workflows/3-solutioning/architecture/checklist.md +240 -0
- package/.bmad/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +222 -0
- package/.bmad/bmm/workflows/3-solutioning/architecture/instructions.md +768 -0
- package/.bmad/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +13 -0
- package/.bmad/bmm/workflows/3-solutioning/architecture/workflow.yaml +55 -0
- package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/checklist.md +169 -0
- package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/instructions.md +332 -0
- package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/template.md +146 -0
- package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/workflow.yaml +62 -0
- package/.bmad/bmm/workflows/4-implementation/code-review/backlog_template.md +12 -0
- package/.bmad/bmm/workflows/4-implementation/code-review/checklist.md +22 -0
- package/.bmad/bmm/workflows/4-implementation/code-review/instructions.md +398 -0
- package/.bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +60 -0
- package/.bmad/bmm/workflows/4-implementation/correct-course/checklist.md +279 -0
- package/.bmad/bmm/workflows/4-implementation/correct-course/instructions.md +206 -0
- package/.bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +56 -0
- package/.bmad/bmm/workflows/4-implementation/create-story/checklist.md +240 -0
- package/.bmad/bmm/workflows/4-implementation/create-story/instructions.md +256 -0
- package/.bmad/bmm/workflows/4-implementation/create-story/template.md +51 -0
- package/.bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +71 -0
- package/.bmad/bmm/workflows/4-implementation/dev-story/checklist.md +38 -0
- package/.bmad/bmm/workflows/4-implementation/dev-story/instructions.md +267 -0
- package/.bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +56 -0
- package/.bmad/bmm/workflows/4-implementation/epic-tech-context/checklist.md +17 -0
- package/.bmad/bmm/workflows/4-implementation/epic-tech-context/instructions.md +164 -0
- package/.bmad/bmm/workflows/4-implementation/epic-tech-context/template.md +76 -0
- package/.bmad/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +57 -0
- package/.bmad/bmm/workflows/4-implementation/retrospective/instructions.md +1443 -0
- package/.bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +56 -0
- package/.bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
- package/.bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +234 -0
- package/.bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
- package/.bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +49 -0
- package/.bmad/bmm/workflows/4-implementation/story-context/checklist.md +16 -0
- package/.bmad/bmm/workflows/4-implementation/story-context/context-template.xml +34 -0
- package/.bmad/bmm/workflows/4-implementation/story-context/instructions.md +209 -0
- package/.bmad/bmm/workflows/4-implementation/story-context/workflow.yaml +61 -0
- package/.bmad/bmm/workflows/4-implementation/story-done/instructions.md +111 -0
- package/.bmad/bmm/workflows/4-implementation/story-done/workflow.yaml +26 -0
- package/.bmad/bmm/workflows/4-implementation/story-ready/instructions.md +117 -0
- package/.bmad/bmm/workflows/4-implementation/story-ready/workflow.yaml +23 -0
- package/.bmad/bmm/workflows/document-project/checklist.md +245 -0
- package/.bmad/bmm/workflows/document-project/documentation-requirements.csv +12 -0
- package/.bmad/bmm/workflows/document-project/instructions.md +222 -0
- package/.bmad/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
- package/.bmad/bmm/workflows/document-project/templates/index-template.md +169 -0
- package/.bmad/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
- package/.bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/.bmad/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
- package/.bmad/bmm/workflows/document-project/workflow.yaml +29 -0
- package/.bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
- package/.bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
- package/.bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
- package/.bmad/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
- package/.bmad/bmm/workflows/frame-expert/_shared/excalidraw-helpers.md +127 -0
- package/.bmad/bmm/workflows/frame-expert/_shared/excalidraw-library.json +90 -0
- package/.bmad/bmm/workflows/frame-expert/_shared/excalidraw-templates.yaml +127 -0
- package/.bmad/bmm/workflows/frame-expert/_shared/validate-json-instructions.md +79 -0
- package/.bmad/bmm/workflows/frame-expert/create-dataflow/checklist.md +39 -0
- package/.bmad/bmm/workflows/frame-expert/create-dataflow/instructions.md +131 -0
- package/.bmad/bmm/workflows/frame-expert/create-dataflow/workflow.yaml +23 -0
- package/.bmad/bmm/workflows/frame-expert/create-diagram/checklist.md +43 -0
- package/.bmad/bmm/workflows/frame-expert/create-diagram/instructions.md +142 -0
- package/.bmad/bmm/workflows/frame-expert/create-diagram/workflow.yaml +24 -0
- package/.bmad/bmm/workflows/frame-expert/create-flowchart/checklist.md +49 -0
- package/.bmad/bmm/workflows/frame-expert/create-flowchart/instructions.md +242 -0
- package/.bmad/bmm/workflows/frame-expert/create-flowchart/workflow.yaml +27 -0
- package/.bmad/bmm/workflows/frame-expert/create-wireframe/checklist.md +38 -0
- package/.bmad/bmm/workflows/frame-expert/create-wireframe/instructions.md +133 -0
- package/.bmad/bmm/workflows/frame-expert/create-wireframe/workflow.yaml +23 -0
- package/.bmad/bmm/workflows/techdoc/documentation-standards.md +262 -0
- package/.bmad/bmm/workflows/testarch/atdd/atdd-checklist-template.md +363 -0
- package/.bmad/bmm/workflows/testarch/atdd/checklist.md +373 -0
- package/.bmad/bmm/workflows/testarch/atdd/instructions.md +785 -0
- package/.bmad/bmm/workflows/testarch/atdd/workflow.yaml +45 -0
- package/.bmad/bmm/workflows/testarch/automate/checklist.md +580 -0
- package/.bmad/bmm/workflows/testarch/automate/instructions.md +1303 -0
- package/.bmad/bmm/workflows/testarch/automate/workflow.yaml +52 -0
- package/.bmad/bmm/workflows/testarch/ci/checklist.md +246 -0
- package/.bmad/bmm/workflows/testarch/ci/github-actions-template.yaml +165 -0
- package/.bmad/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +128 -0
- package/.bmad/bmm/workflows/testarch/ci/instructions.md +517 -0
- package/.bmad/bmm/workflows/testarch/ci/workflow.yaml +45 -0
- package/.bmad/bmm/workflows/testarch/framework/checklist.md +321 -0
- package/.bmad/bmm/workflows/testarch/framework/instructions.md +455 -0
- package/.bmad/bmm/workflows/testarch/framework/workflow.yaml +47 -0
- package/.bmad/bmm/workflows/testarch/nfr-assess/checklist.md +405 -0
- package/.bmad/bmm/workflows/testarch/nfr-assess/instructions.md +722 -0
- package/.bmad/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +443 -0
- package/.bmad/bmm/workflows/testarch/nfr-assess/workflow.yaml +47 -0
- package/.bmad/bmm/workflows/testarch/test-design/checklist.md +234 -0
- package/.bmad/bmm/workflows/testarch/test-design/instructions.md +782 -0
- package/.bmad/bmm/workflows/testarch/test-design/test-design-template.md +285 -0
- package/.bmad/bmm/workflows/testarch/test-design/workflow.yaml +48 -0
- package/.bmad/bmm/workflows/testarch/test-review/checklist.md +470 -0
- package/.bmad/bmm/workflows/testarch/test-review/instructions.md +608 -0
- package/.bmad/bmm/workflows/testarch/test-review/test-review-template.md +388 -0
- package/.bmad/bmm/workflows/testarch/test-review/workflow.yaml +46 -0
- package/.bmad/bmm/workflows/testarch/trace/checklist.md +654 -0
- package/.bmad/bmm/workflows/testarch/trace/instructions.md +1045 -0
- package/.bmad/bmm/workflows/testarch/trace/trace-template.md +673 -0
- package/.bmad/bmm/workflows/testarch/trace/workflow.yaml +55 -0
- package/.bmad/bmm/workflows/workflow-status/init/instructions.md +334 -0
- package/.bmad/bmm/workflows/workflow-status/init/workflow.yaml +28 -0
- package/.bmad/bmm/workflows/workflow-status/instructions.md +388 -0
- package/.bmad/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +138 -0
- package/.bmad/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +126 -0
- package/.bmad/bmm/workflows/workflow-status/paths/game-design.yaml +52 -0
- package/.bmad/bmm/workflows/workflow-status/paths/method-brownfield.yaml +122 -0
- package/.bmad/bmm/workflows/workflow-status/paths/method-greenfield.yaml +113 -0
- package/.bmad/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +58 -0
- package/.bmad/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +47 -0
- package/.bmad/bmm/workflows/workflow-status/project-levels.yaml +59 -0
- package/.bmad/bmm/workflows/workflow-status/workflow-status-template.yaml +24 -0
- package/.bmad/bmm/workflows/workflow-status/workflow.yaml +28 -0
- package/.bmad/core/agents/bmad-master.md +72 -0
- package/.bmad/core/agents/bmad-web-orchestrator.agent.xml +113 -0
- package/.bmad/core/config.yaml +1 -0
- package/.bmad/core/tasks/adv-elicit-methods.csv +39 -0
- package/.bmad/core/tasks/advanced-elicitation-methods.csv +21 -0
- package/.bmad/core/tasks/advanced-elicitation.xml +106 -0
- package/.bmad/core/tasks/index-docs.xml +65 -0
- package/.bmad/core/tasks/validate-workflow.xml +89 -0
- package/.bmad/core/tasks/workflow.xml +270 -0
- package/.bmad/core/tools/shard-doc.xml +109 -0
- package/.bmad/core/workflows/brainstorming/README.md +261 -0
- package/.bmad/core/workflows/brainstorming/brain-methods.csv +36 -0
- package/.bmad/core/workflows/brainstorming/instructions.md +315 -0
- package/.bmad/core/workflows/brainstorming/template.md +106 -0
- package/.bmad/core/workflows/brainstorming/workflow.yaml +38 -0
- package/.bmad/core/workflows/party-mode/instructions.md +203 -0
- package/.bmad/core/workflows/party-mode/workflow.yaml +28 -0
- package/.bmad/docs/claude-code-instructions.md +25 -0
- package/.claude/commands/BMad/analyst.md +88 -0
- package/.claude/commands/BMad/architect.md +89 -0
- package/.claude/commands/BMad/bmad-master.md +114 -0
- package/.claude/commands/BMad/bmad-orchestrator.md +151 -0
- package/.claude/commands/BMad/dev.md +85 -0
- package/.claude/commands/BMad/pm.md +88 -0
- package/.claude/commands/BMad/po.md +83 -0
- package/.claude/commands/BMad/qa.md +91 -0
- package/.claude/commands/BMad/sm.md +69 -0
- package/.claude/commands/BMad/tasks/advanced-elicitation.md +123 -0
- package/.claude/commands/BMad/tasks/apply-qa-fixes.md +154 -0
- package/.claude/commands/BMad/tasks/brownfield-create-epic.md +166 -0
- package/.claude/commands/BMad/tasks/brownfield-create-story.md +153 -0
- package/.claude/commands/BMad/tasks/correct-course.md +76 -0
- package/.claude/commands/BMad/tasks/create-brownfield-story.md +318 -0
- package/.claude/commands/BMad/tasks/create-deep-research-prompt.md +284 -0
- package/.claude/commands/BMad/tasks/create-doc.md +107 -0
- package/.claude/commands/BMad/tasks/create-next-story.md +118 -0
- package/.claude/commands/BMad/tasks/document-project.md +349 -0
- package/.claude/commands/BMad/tasks/execute-checklist.md +92 -0
- package/.claude/commands/BMad/tasks/facilitate-brainstorming-session.md +142 -0
- package/.claude/commands/BMad/tasks/generate-ai-frontend-prompt.md +57 -0
- package/.claude/commands/BMad/tasks/index-docs.md +179 -0
- package/.claude/commands/BMad/tasks/kb-mode-interaction.md +81 -0
- package/.claude/commands/BMad/tasks/nfr-assess.md +349 -0
- package/.claude/commands/BMad/tasks/qa-gate.md +167 -0
- package/.claude/commands/BMad/tasks/review-story.md +320 -0
- package/.claude/commands/BMad/tasks/risk-profile.md +359 -0
- package/.claude/commands/BMad/tasks/shard-doc.md +191 -0
- package/.claude/commands/BMad/tasks/test-design.md +180 -0
- package/.claude/commands/BMad/tasks/trace-requirements.md +270 -0
- package/.claude/commands/BMad/tasks/validate-next-story.md +140 -0
- package/.claude/commands/BMad/ux-expert.md +73 -0
- package/.claude/commands/bmad/bmm/agents/analyst.md +14 -0
- package/.claude/commands/bmad/bmm/agents/architect.md +14 -0
- package/.claude/commands/bmad/bmm/agents/dev.md +14 -0
- package/.claude/commands/bmad/bmm/agents/frame-expert.md +14 -0
- package/.claude/commands/bmad/bmm/agents/pm.md +14 -0
- package/.claude/commands/bmad/bmm/agents/sm.md +14 -0
- package/.claude/commands/bmad/bmm/agents/tea.md +14 -0
- package/.claude/commands/bmad/bmm/agents/tech-writer.md +14 -0
- package/.claude/commands/bmad/bmm/agents/ux-designer.md +14 -0
- package/.claude/commands/bmad/bmm/workflows/architecture.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/brainstorm-project.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/code-review.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/correct-course.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/create-dataflow.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/create-diagram.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/create-epics-and-stories.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/create-flowchart.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/create-story.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/create-ux-design.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/create-wireframe.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/dev-story.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/document-project.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/domain-research.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/epic-tech-context.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/implementation-readiness.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/prd.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/product-brief.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/research.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/retrospective.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/sprint-planning.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/story-context.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/story-done.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/story-ready.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/tech-spec.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/workflow-init.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/workflow-status.md +13 -0
- package/.claude/commands/bmad/core/agents/bmad-master.md +14 -0
- package/.claude/commands/bmad/core/tasks/advanced-elicitation.md +9 -0
- package/.claude/commands/bmad/core/tasks/index-docs.md +9 -0
- package/.claude/commands/bmad/core/tools/shard-doc.md +9 -0
- package/.claude/commands/bmad/core/workflows/brainstorming.md +13 -0
- package/.claude/commands/bmad/core/workflows/party-mode.md +13 -0
- package/.claude/config/background-music-position.txt +26 -0
- package/.claude/config/background-music-volume.txt +1 -0
- package/.claude/config/background-music.cfg +1 -0
- package/.claude/config/tts-verbosity.txt +1 -0
- package/.claude/github-star-reminder.txt +1 -0
- package/.claude/hooks/background-music-manager.sh +1 -1
- package/.claude/hooks/bmad-party-manager.sh +225 -0
- package/.claude/hooks/bmad-voice-manager.sh +116 -4
- package/.claude/piper-voices-dir.txt +1 -0
- package/.mcp.json +30 -0
- package/README.md +166 -13
- package/mcp-server/server.py +53 -41
- package/package.json +6 -2
- package/src/commands/install-mcp.js +151 -90
- package/src/installer.js +531 -298
- package/src/utils/dependency-checker.js +193 -132
package/.mcp.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"sonarqube": {
|
|
4
|
+
"command": "docker",
|
|
5
|
+
"args": [
|
|
6
|
+
"run",
|
|
7
|
+
"-i",
|
|
8
|
+
"--name",
|
|
9
|
+
"sonarqube-mcp-server-agentvibes",
|
|
10
|
+
"--rm",
|
|
11
|
+
"--dns",
|
|
12
|
+
"8.8.8.8",
|
|
13
|
+
"--dns",
|
|
14
|
+
"8.8.4.4",
|
|
15
|
+
"-e",
|
|
16
|
+
"SONARQUBE_TOKEN",
|
|
17
|
+
"-e",
|
|
18
|
+
"SONARQUBE_ORG",
|
|
19
|
+
"-e",
|
|
20
|
+
"STORAGE_PATH",
|
|
21
|
+
"mcp/sonarqube"
|
|
22
|
+
],
|
|
23
|
+
"env": {
|
|
24
|
+
"SONARQUBE_TOKEN": "${SONARQUBE_TOKEN}",
|
|
25
|
+
"SONARQUBE_ORG": "${SONARQUBE_ORG}",
|
|
26
|
+
"STORAGE_PATH": "${STORAGE_PATH}"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
[](https://github.com/paulpreibisch/AgentVibes/actions/workflows/publish.yml)
|
|
12
12
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
13
13
|
|
|
14
|
-
**Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v2.17.
|
|
14
|
+
**Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v2.17.4
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -19,12 +19,13 @@
|
|
|
19
19
|
|
|
20
20
|
| I want to... | Go here |
|
|
21
21
|
|--------------|---------|
|
|
22
|
-
| **Install AgentVibes** | [Quick Start Guide](docs/quick-start.md) |
|
|
22
|
+
| **Install AgentVibes** (just `npx`, no git!) | [Quick Start Guide](docs/quick-start.md) |
|
|
23
|
+
| **Understand what I need** (spoiler: just Node.js!) | [Prerequisites](#-prerequisites) |
|
|
23
24
|
| **Set up on Windows (Claude Desktop)** | [Windows Setup Guide](mcp-server/WINDOWS_SETUP.md) |
|
|
24
25
|
| **Use natural language** | [MCP Setup](docs/mcp-setup.md) |
|
|
25
26
|
| **Switch voices** | [Voice Library](docs/voice-library.md) |
|
|
26
27
|
| **Learn Spanish while coding** | [Language Learning Mode](docs/language-learning-mode.md) |
|
|
27
|
-
| **Fix issues** | [Troubleshooting](docs/troubleshooting.md) |
|
|
28
|
+
| **Fix issues** (git-lfs? MCP tokens? Read this!) | [Troubleshooting](docs/troubleshooting.md) & [FAQ](#-frequently-asked-questions-faq) |
|
|
28
29
|
|
|
29
30
|
---
|
|
30
31
|
|
|
@@ -74,6 +75,7 @@ All 50+ Piper voices AgentVibes provides are sourced from Hugging Face's open-so
|
|
|
74
75
|
|
|
75
76
|
### Getting Started
|
|
76
77
|
- [🚀 Quick Start](#-quick-start) - Install in 3 steps
|
|
78
|
+
- [📋 Prerequisites](#-prerequisites) - **NEW!** What you need (spoiler: just Node.js!)
|
|
77
79
|
- [✨ What is AgentVibes?](#-what-is-agentvibes) - Overview & key features
|
|
78
80
|
- [📰 Latest Release](#-latest-release) - What's new
|
|
79
81
|
- [🪟 Windows Setup Guide for Claude Desktop](mcp-server/WINDOWS_SETUP.md) - Complete Windows installation with WSL & Python
|
|
@@ -103,6 +105,7 @@ All 50+ Piper voices AgentVibes provides are sourced from Hugging Face's open-so
|
|
|
103
105
|
### Additional Resources
|
|
104
106
|
- [🔗 Useful Links](#-useful-links) - Voice typing & AI tools
|
|
105
107
|
- [🔄 Updating](#-updating) - Keep AgentVibes current
|
|
108
|
+
- [❓ FAQ](#-frequently-asked-questions-faq) - **NEW!** Common questions answered (git-lfs, MCP tokens, installation)
|
|
106
109
|
- [🍎 macOS Testing](docs/macos-testing.md) - Automated testing on macOS with GitHub Actions
|
|
107
110
|
- [🙏 Credits](#-credits) - Acknowledgments
|
|
108
111
|
- [🤝 Contributing](#-contributing) - Show support
|
|
@@ -111,17 +114,18 @@ All 50+ Piper voices AgentVibes provides are sourced from Hugging Face's open-so
|
|
|
111
114
|
|
|
112
115
|
## 📰 Latest Release
|
|
113
116
|
|
|
114
|
-
**[v2.17.
|
|
117
|
+
**[v2.17.4 - Code Quality & Maintainability](https://github.com/paulpreibisch/AgentVibes/releases/tag/v2.17.4)** ⚙️
|
|
115
118
|
|
|
116
|
-
AgentVibes v2.17.
|
|
119
|
+
AgentVibes v2.17.4 focuses on code quality and maintainability with extensive SonarCloud-driven refactoring across the entire codebase, reducing cognitive complexity in critical files by up to 90%.
|
|
117
120
|
|
|
118
121
|
**Key Highlights:**
|
|
119
|
-
-
|
|
120
|
-
-
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
-
-
|
|
124
|
-
-
|
|
122
|
+
- ⚙️ **Major Code Refactoring** - Cognitive complexity reduced by up to 90% across critical files
|
|
123
|
+
- 🧪 **Comprehensive Testing** - 377 new party mode tests added, 225 total tests passing
|
|
124
|
+
- 📚 **Improved Documentation** - New Prerequisites and FAQ sections clarify installation
|
|
125
|
+
- 🎭 **Conversational Agent Intros** - BMAD party mode now uses "Hi! I'm John, your Product Manager" format
|
|
126
|
+
- 🔊 **Better Audio Balance** - Background music reduced 15% for clearer TTS voice
|
|
127
|
+
- 🏗️ **installer.js** - Complexity: 84 → ~8 (90% reduction)
|
|
128
|
+
- 📦 **dependency-checker.js** - Complexity: 43 → ~5, 23 → ~8 (88% & 65% reductions)
|
|
125
129
|
|
|
126
130
|
💡 **Tip:** If `npx agentvibes` shows an older version or missing commands, clear your npm cache: `npm cache clean --force && npx agentvibes@latest --help`
|
|
127
131
|
|
|
@@ -183,6 +187,51 @@ npx agentvibes install
|
|
|
183
187
|
|
|
184
188
|
---
|
|
185
189
|
|
|
190
|
+
## 📋 Prerequisites
|
|
191
|
+
|
|
192
|
+
### For Users (Installing & Running AgentVibes)
|
|
193
|
+
|
|
194
|
+
**✅ Required:**
|
|
195
|
+
- **Node.js** ≥16.0 (`node --version`)
|
|
196
|
+
- That's it! No git required, no git-lfs required, no repo cloning needed.
|
|
197
|
+
|
|
198
|
+
**❌ NOT Required:**
|
|
199
|
+
- ❌ Git or git-lfs (you're installing via npm, not cloning)
|
|
200
|
+
- ❌ Repository cloning (npm handles everything)
|
|
201
|
+
- ❌ Build tools (pre-built package ready to use)
|
|
202
|
+
|
|
203
|
+
**📦 Installation Methods:**
|
|
204
|
+
|
|
205
|
+
| Method | Command | Use Case |
|
|
206
|
+
|--------|---------|----------|
|
|
207
|
+
| **✅ RECOMMENDED: NPM** | `npx agentvibes install` | Users wanting to use AgentVibes |
|
|
208
|
+
| **⚠️ Developer Clone** | `git clone ...` | **Only for contributing code** |
|
|
209
|
+
|
|
210
|
+
**💡 Why npm installation?**
|
|
211
|
+
- Zero git operations - npm downloads pre-built package
|
|
212
|
+
- No large file downloads - audio generated on-demand
|
|
213
|
+
- Instant setup - works in seconds
|
|
214
|
+
- No git-lfs, no cloning, no build steps
|
|
215
|
+
|
|
216
|
+
### For Developers (Contributing to AgentVibes)
|
|
217
|
+
|
|
218
|
+
**Only if contributing code to the project:**
|
|
219
|
+
- Node.js 16+
|
|
220
|
+
- Git (no git-lfs needed - repo has no large files)
|
|
221
|
+
- Familiarity with `npm link` for local development
|
|
222
|
+
|
|
223
|
+
**Developer installation:**
|
|
224
|
+
```bash
|
|
225
|
+
git clone https://github.com/paulpreibisch/AgentVibes.git
|
|
226
|
+
cd AgentVibes
|
|
227
|
+
npm install
|
|
228
|
+
npm link
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
[↑ Back to top](#-table-of-contents)
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
186
235
|
## 📋 System Requirements
|
|
187
236
|
|
|
188
237
|
AgentVibes requires certain system dependencies for optimal audio processing and playback. Requirements vary by operating system and TTS provider.
|
|
@@ -591,9 +640,33 @@ AgentVibes supports **custom personalities** and **custom voices**.
|
|
|
591
640
|
|
|
592
641
|
**Common Issues:**
|
|
593
642
|
|
|
643
|
+
**❌ Error: "git-lfs is not installed"**
|
|
644
|
+
|
|
645
|
+
**AgentVibes does NOT require git-lfs.** This error suggests:
|
|
646
|
+
|
|
647
|
+
1. **Wrong installation method** - Use npm, not git clone:
|
|
648
|
+
```bash
|
|
649
|
+
# ✅ CORRECT - Use this:
|
|
650
|
+
npx agentvibes install
|
|
651
|
+
|
|
652
|
+
# ❌ WRONG - Don't clone unless contributing:
|
|
653
|
+
git clone https://github.com/paulpreibisch/AgentVibes.git
|
|
654
|
+
```
|
|
655
|
+
|
|
656
|
+
2. **Different project** - You may be in a BMAD-METHOD or other repo that uses git-lfs
|
|
657
|
+
|
|
658
|
+
3. **Global git config** - Your git may have lfs enabled globally:
|
|
659
|
+
```bash
|
|
660
|
+
git config --global --list | grep lfs
|
|
661
|
+
```
|
|
662
|
+
|
|
663
|
+
**Solution:** Use `npx agentvibes install` - no git operations needed!
|
|
664
|
+
|
|
665
|
+
---
|
|
666
|
+
|
|
594
667
|
**No Audio Playing?**
|
|
595
|
-
|
|
596
|
-
|
|
668
|
+
1. Verify hook is installed: `ls -la .claude/hooks/session-start-tts.sh`
|
|
669
|
+
2. Test: `/agent-vibes:sample Aria`
|
|
597
670
|
|
|
598
671
|
**Commands Not Found?**
|
|
599
672
|
```bash
|
|
@@ -630,6 +703,86 @@ npm update -g agentvibes && agentvibes update --yes
|
|
|
630
703
|
|
|
631
704
|
---
|
|
632
705
|
|
|
706
|
+
## ❓ Frequently Asked Questions (FAQ)
|
|
707
|
+
|
|
708
|
+
### Installation & Setup
|
|
709
|
+
|
|
710
|
+
**Q: Does AgentVibes require git-lfs?**
|
|
711
|
+
**A:** **NO.** AgentVibes has zero git-lfs requirement. Use `npx agentvibes install` - no git operations needed.
|
|
712
|
+
|
|
713
|
+
**Q: Do I need to clone the GitHub repository?**
|
|
714
|
+
**A:** **NO** (unless you're contributing code). Normal users should use `npx agentvibes install`. Repository cloning is only for developers who want to contribute to the project.
|
|
715
|
+
|
|
716
|
+
**Q: Why is the GitHub repo so large?**
|
|
717
|
+
**A:** The repo includes demo files and development dependencies (node_modules). The actual npm package you download is **< 50MB** and optimized for users.
|
|
718
|
+
|
|
719
|
+
**Q: What's the difference between npm install and git clone?**
|
|
720
|
+
**A:**
|
|
721
|
+
- `npx agentvibes install` → **For users** - Downloads pre-built package, zero git operations, instant setup
|
|
722
|
+
- `git clone ...` → **For developers only** - Full source code, development setup, contributing code
|
|
723
|
+
|
|
724
|
+
**Q: I saw an error about git-lfs, is something wrong?**
|
|
725
|
+
**A:** You're likely:
|
|
726
|
+
1. Using wrong installation method (use `npx` not `git clone`)
|
|
727
|
+
2. In a different project directory that uses git-lfs
|
|
728
|
+
3. Have global git config with lfs enabled
|
|
729
|
+
|
|
730
|
+
AgentVibes itself does NOT use or require git-lfs.
|
|
731
|
+
|
|
732
|
+
### Features & Usage
|
|
733
|
+
|
|
734
|
+
**Q: Does MCP consume tokens from my context window?**
|
|
735
|
+
**A:** **YES.** Every MCP tool schema adds to the context window. AgentVibes MCP is designed to be minimal (~1500-2000 tokens), but if you're concerned about token usage, you can use slash commands instead of MCP.
|
|
736
|
+
|
|
737
|
+
**Q: What's the difference between using MCP vs slash commands?**
|
|
738
|
+
**A:**
|
|
739
|
+
- **MCP**: Natural language ("Switch to Aria voice"), uses ~1500-2000 context tokens
|
|
740
|
+
- **Slash commands**: Explicit commands (`/agent-vibes:switch Aria`), zero token overhead
|
|
741
|
+
|
|
742
|
+
Both do the exact same thing - MCP is more convenient, slash commands are more token-efficient.
|
|
743
|
+
|
|
744
|
+
**Q: Is AgentVibes just a bash script?**
|
|
745
|
+
**A:** No. AgentVibes includes:
|
|
746
|
+
- Multi-provider TTS abstraction (Piper, macOS Say, ElevenLabs)
|
|
747
|
+
- Voice management system with 50+ voices
|
|
748
|
+
- Personality & sentiment system
|
|
749
|
+
- Language learning mode with bilingual playback
|
|
750
|
+
- Audio effects processing (reverb, EQ, compression)
|
|
751
|
+
- MCP server for natural language control
|
|
752
|
+
- BMAD integration for multi-agent voice switching
|
|
753
|
+
- Remote audio optimization for SSH/RDP sessions
|
|
754
|
+
|
|
755
|
+
**Q: Can I use AgentVibes without BMAD?**
|
|
756
|
+
**A:** **YES.** AgentVibes works standalone. BMAD integration is optional - only activates if you install BMAD separately.
|
|
757
|
+
|
|
758
|
+
**Q: What are the audio dependencies?**
|
|
759
|
+
**A:**
|
|
760
|
+
- **Required**: Node.js 16+, Python 3.10+ (for Piper TTS)
|
|
761
|
+
- **Optional**: sox (audio effects), ffmpeg (background music, padding)
|
|
762
|
+
- All TTS generation works without optional dependencies - they just enhance the experience
|
|
763
|
+
|
|
764
|
+
### Troubleshooting
|
|
765
|
+
|
|
766
|
+
**Q: Why isn't Claude speaking?**
|
|
767
|
+
**A:** Common causes:
|
|
768
|
+
1. Hook not installed - Run `npx agentvibes install --yes`
|
|
769
|
+
2. Audio player missing - Install `sox` and `ffmpeg`
|
|
770
|
+
3. TTS protocol not enabled in settings
|
|
771
|
+
4. Test with `/agent-vibes:sample Aria`
|
|
772
|
+
|
|
773
|
+
**Q: Can I use this on Windows?**
|
|
774
|
+
**A:** Yes, but requires WSL (Windows Subsystem for Linux). See [Windows Setup Guide](mcp-server/WINDOWS_SETUP.md).
|
|
775
|
+
|
|
776
|
+
**Q: How do I reduce token usage?**
|
|
777
|
+
**A:**
|
|
778
|
+
1. Use slash commands instead of MCP (zero context token overhead)
|
|
779
|
+
2. Set verbosity to LOW (`/agent-vibes:verbosity low`)
|
|
780
|
+
3. Disable BMAD integration if not using it
|
|
781
|
+
|
|
782
|
+
[↑ Back to top](#-table-of-contents)
|
|
783
|
+
|
|
784
|
+
---
|
|
785
|
+
|
|
633
786
|
## ⚠️ Important Disclaimers
|
|
634
787
|
|
|
635
788
|
**API Costs & Usage:**
|
package/mcp-server/server.py
CHANGED
|
@@ -54,6 +54,18 @@ import mcp.server.stdio
|
|
|
54
54
|
class AgentVibesServer:
|
|
55
55
|
"""MCP Server for AgentVibes TTS functionality"""
|
|
56
56
|
|
|
57
|
+
# Script name constants (addresses SonarCloud S1192)
|
|
58
|
+
VOICE_MANAGER_SCRIPT = "voice-manager.sh"
|
|
59
|
+
PERSONALITY_MANAGER_SCRIPT = "personality-manager.sh"
|
|
60
|
+
LANGUAGE_MANAGER_SCRIPT = "language-manager.sh"
|
|
61
|
+
BACKGROUND_MUSIC_MANAGER_SCRIPT = "background-music-manager.sh"
|
|
62
|
+
EFFECTS_MANAGER_SCRIPT = "effects-manager.sh"
|
|
63
|
+
|
|
64
|
+
# Path constants (addresses SonarCloud S1192)
|
|
65
|
+
CLAUDE_DIR_NAME = ".claude"
|
|
66
|
+
MUTE_FILE_NAME = ".agentvibes-muted"
|
|
67
|
+
SEPARATOR = "━" * 39
|
|
68
|
+
|
|
57
69
|
def __init__(self):
|
|
58
70
|
"""Initialize the AgentVibes MCP server"""
|
|
59
71
|
# Find the .claude directory (project-local or global)
|
|
@@ -67,7 +79,7 @@ class AgentVibesServer:
|
|
|
67
79
|
# Get the AgentVibes root directory (parent of mcp-server)
|
|
68
80
|
script_dir = Path(__file__).resolve().parent # mcp-server/
|
|
69
81
|
agentvibes_root = script_dir.parent # AgentVibes/
|
|
70
|
-
claude_dir = agentvibes_root /
|
|
82
|
+
claude_dir = agentvibes_root / self.CLAUDE_DIR_NAME
|
|
71
83
|
|
|
72
84
|
# ALWAYS use package .claude for hooks (even in NPX cache)
|
|
73
85
|
# The package ALWAYS has .claude/ with all the hooks
|
|
@@ -75,7 +87,7 @@ class AgentVibesServer:
|
|
|
75
87
|
return claude_dir
|
|
76
88
|
|
|
77
89
|
# Fallback to global ~/.claude (should never happen in properly installed package)
|
|
78
|
-
return Path.home() /
|
|
90
|
+
return Path.home() / self.CLAUDE_DIR_NAME
|
|
79
91
|
|
|
80
92
|
async def text_to_speech(
|
|
81
93
|
self,
|
|
@@ -105,13 +117,13 @@ class AgentVibesServer:
|
|
|
105
117
|
if personality:
|
|
106
118
|
original_personality = await self._get_personality()
|
|
107
119
|
await self._run_script(
|
|
108
|
-
|
|
120
|
+
self.PERSONALITY_MANAGER_SCRIPT, ["set", personality]
|
|
109
121
|
)
|
|
110
122
|
|
|
111
123
|
# Temporarily set language if specified
|
|
112
124
|
if language:
|
|
113
125
|
original_language = await self._get_language()
|
|
114
|
-
await self._run_script(
|
|
126
|
+
await self._run_script(self.LANGUAGE_MANAGER_SCRIPT, ["set", language])
|
|
115
127
|
|
|
116
128
|
# Call the TTS script via bash explicitly
|
|
117
129
|
play_tts = self.hooks_dir / "play-tts.sh"
|
|
@@ -127,7 +139,7 @@ class AgentVibesServer:
|
|
|
127
139
|
# 2. Otherwise → Use global ~/.claude/ (Claude Desktop, Warp, etc.)
|
|
128
140
|
# Note: Hooks are ALWAYS from package .claude/ (self.claude_dir)
|
|
129
141
|
cwd = Path.cwd()
|
|
130
|
-
if (cwd /
|
|
142
|
+
if (cwd / self.CLAUDE_DIR_NAME).is_dir() and cwd != self.agentvibes_root:
|
|
131
143
|
# Real Claude Code project with .claude directory
|
|
132
144
|
env["CLAUDE_PROJECT_DIR"] = str(cwd)
|
|
133
145
|
# else: Don't set CLAUDE_PROJECT_DIR, let scripts fall back to ~/.claude
|
|
@@ -177,11 +189,11 @@ class AgentVibesServer:
|
|
|
177
189
|
# Restore original settings
|
|
178
190
|
if original_personality:
|
|
179
191
|
await self._run_script(
|
|
180
|
-
|
|
192
|
+
self.PERSONALITY_MANAGER_SCRIPT, ["set", original_personality]
|
|
181
193
|
)
|
|
182
194
|
if original_language:
|
|
183
195
|
await self._run_script(
|
|
184
|
-
|
|
196
|
+
self.LANGUAGE_MANAGER_SCRIPT, ["set", original_language]
|
|
185
197
|
)
|
|
186
198
|
|
|
187
199
|
async def list_voices(self) -> str:
|
|
@@ -196,17 +208,17 @@ class AgentVibesServer:
|
|
|
196
208
|
current_voice = await self._get_current_voice()
|
|
197
209
|
|
|
198
210
|
# voice-manager.sh list-simple is now provider-aware
|
|
199
|
-
result = await self._run_script(
|
|
211
|
+
result = await self._run_script(self.VOICE_MANAGER_SCRIPT, ["list-simple"])
|
|
200
212
|
if result:
|
|
201
213
|
voices = result.strip().split("\n")
|
|
202
214
|
voices = [v for v in voices if v] # Filter empty strings
|
|
203
215
|
|
|
204
216
|
if not voices:
|
|
205
217
|
return (
|
|
206
|
-
"📦 No voices available\n"
|
|
207
|
-
"
|
|
208
|
-
"For Piper: Download voices using /agent-vibes:provider download <voice-name>\n"
|
|
209
|
-
"Example: en_US-lessac-medium, en_GB-alba-medium"
|
|
218
|
+
f"📦 No voices available\n"
|
|
219
|
+
f"{self.SEPARATOR}\n"
|
|
220
|
+
f"For Piper: Download voices using /agent-vibes:provider download <voice-name>\n"
|
|
221
|
+
f"Example: en_US-lessac-medium, en_GB-alba-medium"
|
|
210
222
|
)
|
|
211
223
|
|
|
212
224
|
# Determine provider label and alternative provider
|
|
@@ -221,11 +233,11 @@ class AgentVibesServer:
|
|
|
221
233
|
alternative_provider = None
|
|
222
234
|
|
|
223
235
|
output = f"🎤 Available {provider_label} Voices:\n"
|
|
224
|
-
output += "
|
|
236
|
+
output += f"{self.SEPARATOR}\n"
|
|
225
237
|
for voice in voices:
|
|
226
238
|
marker = " ✓ (current)" if voice == current_voice else ""
|
|
227
239
|
output += f" • {voice}{marker}\n"
|
|
228
|
-
output += "
|
|
240
|
+
output += f"{self.SEPARATOR}\n"
|
|
229
241
|
|
|
230
242
|
# Add provider switch hint
|
|
231
243
|
if alternative_provider:
|
|
@@ -245,7 +257,7 @@ class AgentVibesServer:
|
|
|
245
257
|
Success or error message
|
|
246
258
|
"""
|
|
247
259
|
result = await self._run_script(
|
|
248
|
-
|
|
260
|
+
self.VOICE_MANAGER_SCRIPT, ["switch", voice_name, "--silent"]
|
|
249
261
|
)
|
|
250
262
|
if result and "✅" in result:
|
|
251
263
|
return f"✅ Voice switched to: {voice_name}"
|
|
@@ -258,7 +270,7 @@ class AgentVibesServer:
|
|
|
258
270
|
Returns:
|
|
259
271
|
Formatted list of personalities with descriptions
|
|
260
272
|
"""
|
|
261
|
-
result = await self._run_script(
|
|
273
|
+
result = await self._run_script(self.PERSONALITY_MANAGER_SCRIPT, ["list"])
|
|
262
274
|
return result if result else "❌ Failed to list personalities"
|
|
263
275
|
|
|
264
276
|
async def set_personality(self, personality: str) -> str:
|
|
@@ -272,7 +284,7 @@ class AgentVibesServer:
|
|
|
272
284
|
Success or error message
|
|
273
285
|
"""
|
|
274
286
|
result = await self._run_script(
|
|
275
|
-
|
|
287
|
+
self.PERSONALITY_MANAGER_SCRIPT, ["set", personality]
|
|
276
288
|
)
|
|
277
289
|
if result and "🎭" in result:
|
|
278
290
|
return result
|
|
@@ -291,12 +303,12 @@ class AgentVibesServer:
|
|
|
291
303
|
provider = await self._get_provider()
|
|
292
304
|
|
|
293
305
|
output = "🎤 Current AgentVibes Configuration\n"
|
|
294
|
-
output += "
|
|
306
|
+
output += f"{self.SEPARATOR}\n"
|
|
295
307
|
output += f"Provider: {provider}\n"
|
|
296
308
|
output += f"Voice: {voice}\n"
|
|
297
309
|
output += f"Personality: {personality}\n"
|
|
298
310
|
output += f"Language: {language}\n"
|
|
299
|
-
output += "
|
|
311
|
+
output += f"{self.SEPARATOR}\n"
|
|
300
312
|
return output
|
|
301
313
|
|
|
302
314
|
async def set_language(self, language: str) -> str:
|
|
@@ -309,7 +321,7 @@ class AgentVibesServer:
|
|
|
309
321
|
Returns:
|
|
310
322
|
Success or error message
|
|
311
323
|
"""
|
|
312
|
-
result = await self._run_script(
|
|
324
|
+
result = await self._run_script(self.LANGUAGE_MANAGER_SCRIPT, ["set", language])
|
|
313
325
|
if result and "✓" in result:
|
|
314
326
|
return result
|
|
315
327
|
return f"❌ Failed to set language: {result}"
|
|
@@ -324,7 +336,7 @@ class AgentVibesServer:
|
|
|
324
336
|
Returns:
|
|
325
337
|
Success or error message
|
|
326
338
|
"""
|
|
327
|
-
result = await self._run_script(
|
|
339
|
+
result = await self._run_script(self.VOICE_MANAGER_SCRIPT, ["replay", str(n)])
|
|
328
340
|
if result and "🔊" in result:
|
|
329
341
|
return result
|
|
330
342
|
return f"❌ Failed to replay audio: {result}"
|
|
@@ -489,7 +501,7 @@ class AgentVibesServer:
|
|
|
489
501
|
Returns:
|
|
490
502
|
Success message confirming mute is active
|
|
491
503
|
"""
|
|
492
|
-
mute_file = Path.home() /
|
|
504
|
+
mute_file = Path.home() / self.MUTE_FILE_NAME
|
|
493
505
|
try:
|
|
494
506
|
mute_file.touch()
|
|
495
507
|
return "🔇 AgentVibes TTS muted. All voice output is now silenced.\n\n💡 To unmute, use: unmute()"
|
|
@@ -503,8 +515,8 @@ class AgentVibesServer:
|
|
|
503
515
|
Returns:
|
|
504
516
|
Success message confirming TTS is restored
|
|
505
517
|
"""
|
|
506
|
-
global_mute = Path.home() /
|
|
507
|
-
project_mute = Path.cwd() /
|
|
518
|
+
global_mute = Path.home() / self.MUTE_FILE_NAME
|
|
519
|
+
project_mute = Path.cwd() / self.CLAUDE_DIR_NAME / "agentvibes-muted"
|
|
508
520
|
|
|
509
521
|
removed = []
|
|
510
522
|
try:
|
|
@@ -529,8 +541,8 @@ class AgentVibesServer:
|
|
|
529
541
|
Returns:
|
|
530
542
|
Current mute status
|
|
531
543
|
"""
|
|
532
|
-
global_mute = Path.home() /
|
|
533
|
-
project_mute = Path.cwd() /
|
|
544
|
+
global_mute = Path.home() / self.MUTE_FILE_NAME
|
|
545
|
+
project_mute = Path.cwd() / self.CLAUDE_DIR_NAME / "agentvibes-muted"
|
|
534
546
|
|
|
535
547
|
if global_mute.exists() or project_mute.exists():
|
|
536
548
|
return "🔇 TTS is currently MUTED\n\n💡 To unmute, use: unmute()"
|
|
@@ -544,7 +556,7 @@ class AgentVibesServer:
|
|
|
544
556
|
Returns:
|
|
545
557
|
Formatted list of all pre-packaged background music files
|
|
546
558
|
"""
|
|
547
|
-
result = await self._run_script(
|
|
559
|
+
result = await self._run_script(self.BACKGROUND_MUSIC_MANAGER_SCRIPT, ["list"])
|
|
548
560
|
return result if result else "❌ Failed to list background music"
|
|
549
561
|
|
|
550
562
|
async def set_background_music(self, track_name: str, agent_name: Optional[str] = None) -> str:
|
|
@@ -561,7 +573,7 @@ class AgentVibesServer:
|
|
|
561
573
|
import re
|
|
562
574
|
|
|
563
575
|
# Get list of available tracks for fuzzy matching
|
|
564
|
-
list_result = await self._run_script(
|
|
576
|
+
list_result = await self._run_script(self.BACKGROUND_MUSIC_MANAGER_SCRIPT, ["list"])
|
|
565
577
|
if not list_result or "❌" in list_result:
|
|
566
578
|
return "❌ Failed to list background music tracks"
|
|
567
579
|
|
|
@@ -597,13 +609,13 @@ class AgentVibesServer:
|
|
|
597
609
|
# Determine which command to use based on agent_name
|
|
598
610
|
if agent_name and agent_name.lower() == "all":
|
|
599
611
|
# Set for all agents
|
|
600
|
-
result = await self._run_script(
|
|
612
|
+
result = await self._run_script(self.BACKGROUND_MUSIC_MANAGER_SCRIPT, ["set-all", matched_track])
|
|
601
613
|
elif agent_name:
|
|
602
614
|
# Set for specific agent
|
|
603
|
-
result = await self._run_script(
|
|
615
|
+
result = await self._run_script(self.BACKGROUND_MUSIC_MANAGER_SCRIPT, ["set-agent", agent_name, matched_track])
|
|
604
616
|
else:
|
|
605
617
|
# Set as default
|
|
606
|
-
result = await self._run_script(
|
|
618
|
+
result = await self._run_script(self.BACKGROUND_MUSIC_MANAGER_SCRIPT, ["set-default", matched_track])
|
|
607
619
|
|
|
608
620
|
if result and "✅" in result:
|
|
609
621
|
if matched_track.lower() != track_name.lower():
|
|
@@ -622,7 +634,7 @@ class AgentVibesServer:
|
|
|
622
634
|
Success or error message
|
|
623
635
|
"""
|
|
624
636
|
command = "on" if enabled else "off"
|
|
625
|
-
result = await self._run_script(
|
|
637
|
+
result = await self._run_script(self.BACKGROUND_MUSIC_MANAGER_SCRIPT, [command])
|
|
626
638
|
return result if result else f"❌ Failed to {'enable' if enabled else 'disable'} background music"
|
|
627
639
|
|
|
628
640
|
async def set_background_music_volume(self, volume: float) -> str:
|
|
@@ -635,7 +647,7 @@ class AgentVibesServer:
|
|
|
635
647
|
Returns:
|
|
636
648
|
Success or error message
|
|
637
649
|
"""
|
|
638
|
-
result = await self._run_script(
|
|
650
|
+
result = await self._run_script(self.BACKGROUND_MUSIC_MANAGER_SCRIPT, ["volume", str(volume)])
|
|
639
651
|
return result if result else "❌ Failed to set background music volume"
|
|
640
652
|
|
|
641
653
|
async def get_background_music_status(self) -> str:
|
|
@@ -645,7 +657,7 @@ class AgentVibesServer:
|
|
|
645
657
|
Returns:
|
|
646
658
|
Status information
|
|
647
659
|
"""
|
|
648
|
-
result = await self._run_script(
|
|
660
|
+
result = await self._run_script(self.BACKGROUND_MUSIC_MANAGER_SCRIPT, ["status"])
|
|
649
661
|
return result if result else "❌ Failed to get background music status"
|
|
650
662
|
|
|
651
663
|
async def set_reverb(self, level: str, agent: str = "default", apply_all: bool = False) -> str:
|
|
@@ -663,7 +675,7 @@ class AgentVibesServer:
|
|
|
663
675
|
args = ["set-reverb", level, agent]
|
|
664
676
|
if apply_all:
|
|
665
677
|
args.append("--all")
|
|
666
|
-
result = await self._run_script(
|
|
678
|
+
result = await self._run_script(self.EFFECTS_MANAGER_SCRIPT, args)
|
|
667
679
|
return result if result else f"✅ Set reverb to {level}"
|
|
668
680
|
|
|
669
681
|
async def get_reverb(self, agent: str = "default") -> str:
|
|
@@ -676,7 +688,7 @@ class AgentVibesServer:
|
|
|
676
688
|
Returns:
|
|
677
689
|
Current reverb level
|
|
678
690
|
"""
|
|
679
|
-
result = await self._run_script(
|
|
691
|
+
result = await self._run_script(self.EFFECTS_MANAGER_SCRIPT, ["get-reverb", agent])
|
|
680
692
|
if result:
|
|
681
693
|
return f"Current reverb level for {agent}: {result.strip()}"
|
|
682
694
|
return f"❌ Failed to get reverb for {agent}"
|
|
@@ -688,7 +700,7 @@ class AgentVibesServer:
|
|
|
688
700
|
Returns:
|
|
689
701
|
Effects configuration
|
|
690
702
|
"""
|
|
691
|
-
result = await self._run_script(
|
|
703
|
+
result = await self._run_script(self.EFFECTS_MANAGER_SCRIPT, ["list"])
|
|
692
704
|
return result if result else "❌ Failed to list audio effects"
|
|
693
705
|
|
|
694
706
|
# Helper methods
|
|
@@ -749,7 +761,7 @@ class AgentVibesServer:
|
|
|
749
761
|
|
|
750
762
|
async def _get_current_voice(self) -> str:
|
|
751
763
|
"""Get the currently active voice"""
|
|
752
|
-
result = await self._run_script(
|
|
764
|
+
result = await self._run_script(self.VOICE_MANAGER_SCRIPT, ["get"])
|
|
753
765
|
return result.strip() if result else "Unknown"
|
|
754
766
|
|
|
755
767
|
async def _get_personality(self) -> str:
|
|
@@ -757,7 +769,7 @@ class AgentVibesServer:
|
|
|
757
769
|
personality_file = self.claude_dir / "tts-personality.txt"
|
|
758
770
|
if not personality_file.exists():
|
|
759
771
|
# Try global
|
|
760
|
-
personality_file = Path.home() /
|
|
772
|
+
personality_file = Path.home() / self.CLAUDE_DIR_NAME / "tts-personality.txt"
|
|
761
773
|
|
|
762
774
|
try:
|
|
763
775
|
if personality_file.exists():
|
|
@@ -770,14 +782,14 @@ class AgentVibesServer:
|
|
|
770
782
|
|
|
771
783
|
async def _get_language(self) -> str:
|
|
772
784
|
"""Get the current language setting"""
|
|
773
|
-
result = await self._run_script(
|
|
785
|
+
result = await self._run_script(self.LANGUAGE_MANAGER_SCRIPT, ["code"])
|
|
774
786
|
return result.strip() if result else "english"
|
|
775
787
|
|
|
776
788
|
async def _get_provider(self) -> str:
|
|
777
789
|
"""Get the active TTS provider"""
|
|
778
790
|
provider_file = self.claude_dir / "tts-provider.txt"
|
|
779
791
|
if not provider_file.exists():
|
|
780
|
-
provider_file = Path.home() /
|
|
792
|
+
provider_file = Path.home() / self.CLAUDE_DIR_NAME / "tts-provider.txt"
|
|
781
793
|
|
|
782
794
|
try:
|
|
783
795
|
if provider_file.exists():
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "agentvibes",
|
|
4
|
-
"version": "2.17.
|
|
4
|
+
"version": "2.17.4",
|
|
5
5
|
"description": "Now your AI Agents can finally talk back! Professional TTS voice for Claude Code and Claude Desktop (via MCP) with multi-provider support.",
|
|
6
6
|
"homepage": "https://agentvibes.org",
|
|
7
7
|
"keywords": [
|
|
@@ -64,9 +64,10 @@
|
|
|
64
64
|
"install-local": "node src/installer.js install",
|
|
65
65
|
"postinstall": "node mcp-server/install-deps.js",
|
|
66
66
|
"install-mcp-deps": "node mcp-server/install-deps.js",
|
|
67
|
-
"test": "AGENTVIBES_TEST_MODE=true bats test/unit/*.bats &&
|
|
67
|
+
"test": "AGENTVIBES_TEST_MODE=true bats test/unit/*.bats && npm run test:coverage",
|
|
68
68
|
"test:bats": "AGENTVIBES_TEST_MODE=true bats test/unit/*.bats",
|
|
69
69
|
"test:node": "node --test test/unit/*.test.js",
|
|
70
|
+
"test:coverage": "c8 --reporter=lcov --reporter=text node --test test/unit/*.test.js",
|
|
70
71
|
"test:verbose": "AGENTVIBES_TEST_MODE=true bats -t test/unit/*.bats"
|
|
71
72
|
},
|
|
72
73
|
"dependencies": {
|
|
@@ -83,5 +84,8 @@
|
|
|
83
84
|
},
|
|
84
85
|
"publishConfig": {
|
|
85
86
|
"access": "public"
|
|
87
|
+
},
|
|
88
|
+
"devDependencies": {
|
|
89
|
+
"c8": "^10.1.3"
|
|
86
90
|
}
|
|
87
91
|
}
|