agentvibes 2.14.5 → 2.14.7

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 (2) hide show
  1. package/package.json +1 -1
  2. package/src/installer.js +41 -21
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.14.5",
4
+ "version": "2.14.7",
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": [
package/src/installer.js CHANGED
@@ -128,17 +128,17 @@ function showReleaseInfo() {
128
128
  console.log(
129
129
  boxen(
130
130
  chalk.white.bold('═══════════════════════════════════════════════════════════════\n') +
131
- chalk.cyan.bold(' 📦 AgentVibes v2.14.4 - Fully Automated Install\n') +
131
+ chalk.cyan.bold(' 📦 AgentVibes v2.14.7 - macOS Say Provider Support\n') +
132
132
  chalk.white.bold('═══════════════════════════════════════════════════════════════\n\n') +
133
133
  chalk.green.bold('🎙️ WHAT\'S NEW:\n\n') +
134
- chalk.cyan('AgentVibes v2.14.4 fixes the --yes flag to skip ALL prompts.\n') +
135
- chalk.cyan('Now `npx agentvibes install --yes` runs fully unattended,\n') +
136
- chalk.cyan('perfect for CI/CD pipelines and automated deployments.\n\n') +
134
+ chalk.cyan('AgentVibes v2.14.7 adds macOS Say to the provider selection.\n') +
135
+ chalk.cyan('Mac users now see all 3 TTS options during install:\n') +
136
+ chalk.cyan('Piper (free), macOS Say (built-in), and ElevenLabs (premium).\n\n') +
137
137
  chalk.green.bold('✨ KEY HIGHLIGHTS:\n\n') +
138
- chalk.gray(' Fully Automated Install - --yes skips ALL interactive prompts\n') +
139
- chalk.gray(' 🤖 CI/CD Ready - Perfect for automated deployments\n') +
140
- chalk.gray(' No Breaking Changes - Interactive mode unchanged\n') +
141
- chalk.gray(' 🎯 133 Tests Passing - Full test suite coverage\n\n') +
138
+ chalk.gray(' 🍎 macOS Say Provider - Zero setup, built-in system voices\n') +
139
+ chalk.gray(' 🔧 BMAD Fix - core/agents now get TTS injection\n') +
140
+ chalk.gray(' Fully Automated Install - --yes for CI/CD pipelines\n') +
141
+ chalk.gray(' 🎯 All Tests Passing - Full test suite coverage\n\n') +
142
142
  chalk.white.bold('═══════════════════════════════════════════════════════════════\n\n') +
143
143
  chalk.gray('📖 Full Release Notes: RELEASE_NOTES.md\n') +
144
144
  chalk.gray('🌐 Website: https://agentvibes.org\n') +
@@ -292,38 +292,57 @@ Without the \`.bmad-agent-context\` file:
292
292
  // ============================================================================
293
293
 
294
294
  /**
295
- * Prompt user to select TTS provider (Piper or ElevenLabs)
295
+ * Prompt user to select TTS provider (Piper, ElevenLabs, or macOS Say)
296
296
  * @param {Object} options - Installation options
297
- * @returns {Promise<string>} Selected provider ('piper' or 'elevenlabs')
297
+ * @returns {Promise<string>} Selected provider ('piper', 'elevenlabs', or 'macos')
298
298
  */
299
299
  async function promptProviderSelection(options) {
300
+ const isMacOS = process.platform === 'darwin';
301
+
300
302
  if (options.yes) {
301
303
  const elevenLabsKey = process.env.ELEVENLABS_API_KEY;
302
304
  if (elevenLabsKey) {
303
305
  console.log(chalk.green('✓ Using ElevenLabs (API key detected)\n'));
304
306
  return 'elevenlabs';
305
307
  }
308
+ // On macOS with --yes, default to macOS say (simpler setup)
309
+ if (isMacOS) {
310
+ console.log(chalk.green('✓ Using macOS Say (built-in option)\n'));
311
+ return 'macos';
312
+ }
306
313
  console.log(chalk.green('✓ Using Piper TTS (free option)\n'));
307
314
  return 'piper';
308
315
  }
309
316
 
310
317
  console.log(chalk.cyan('🎭 Choose Your TTS Provider:\n'));
311
318
 
319
+ // Build choices based on platform
320
+ const choices = [
321
+ {
322
+ name: chalk.green('🆓 Piper TTS (Free, Offline)') + chalk.gray(' - 50+ neural voices, no API key needed'),
323
+ value: 'piper',
324
+ },
325
+ ];
326
+
327
+ // Add macOS Say option on macOS
328
+ if (isMacOS) {
329
+ choices.push({
330
+ name: chalk.yellow('🍎 macOS Say (Built-in)') + chalk.gray(' - System voices, zero setup required'),
331
+ value: 'macos',
332
+ });
333
+ }
334
+
335
+ choices.push({
336
+ name: chalk.cyan('🎤 ElevenLabs (Premium)') + chalk.gray(' - 150+ AI voices, requires API key'),
337
+ value: 'elevenlabs',
338
+ });
339
+
312
340
  const { provider } = await inquirer.prompt([
313
341
  {
314
342
  type: 'list',
315
343
  name: 'provider',
316
344
  message: 'Which TTS provider would you like to use?',
317
- choices: [
318
- {
319
- name: chalk.green('🆓 Piper TTS (Free, Offline)') + chalk.gray(' - 50+ neural voices, no API key needed'),
320
- value: 'piper',
321
- },
322
- {
323
- name: chalk.cyan('🎤 ElevenLabs (Premium)') + chalk.gray(' - 150+ AI voices, requires API key'),
324
- value: 'elevenlabs',
325
- },
326
- ],
345
+ choices,
327
346
  default: 'piper',
328
347
  },
329
348
  ]);
@@ -1450,7 +1469,8 @@ async function install(options = {}) {
1450
1469
  await fs.writeFile(piperConfigPath, piperVoicesPath);
1451
1470
  }
1452
1471
 
1453
- spinner.succeed(chalk.green(`Provider set to: ${selectedProvider === 'elevenlabs' ? 'ElevenLabs' : 'Piper TTS'}\n`));
1472
+ const providerLabels = { elevenlabs: 'ElevenLabs', piper: 'Piper TTS', macos: 'macOS Say' };
1473
+ spinner.succeed(chalk.green(`Provider set to: ${providerLabels[selectedProvider] || selectedProvider}\n`));
1454
1474
 
1455
1475
  // Detect and migrate old configuration
1456
1476
  await detectAndMigrateOldConfig(targetDir, spinner);