agentvibes 5.1.4 → 5.2.0

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 (32) hide show
  1. package/.agentvibes/config.json +23 -13
  2. package/.claude/commands/agent-vibes/verbosity.md +98 -89
  3. package/.claude/config/audio-effects.cfg +4 -1
  4. package/.claude/hooks/bmad-speak.sh +2 -2
  5. package/.claude/hooks/piper-download-voices.sh +233 -225
  6. package/.claude/hooks/piper-installer.sh +1 -1
  7. package/.claude/hooks/piper-voice-manager.sh +125 -0
  8. package/.claude/hooks/play-tts-agentvibes-receiver-for-voiceless-connections.sh +97 -90
  9. package/.claude/hooks/play-tts-enhanced.sh +1 -1
  10. package/.claude/hooks/play-tts-piper.sh +16 -5
  11. package/.claude/hooks/play-tts-ssh-remote.sh +168 -167
  12. package/.claude/hooks/play-tts.sh +21 -9
  13. package/.claude/hooks/session-start-tts.sh +4 -1
  14. package/.claude/hooks/stop-tts.sh +1 -1
  15. package/.claude/hooks/verbosity-manager.sh +185 -178
  16. package/.claude/hooks-windows/download-extra-voices.ps1 +243 -185
  17. package/.claude/hooks-windows/play-tts-piper.ps1 +7 -2
  18. package/.claude/hooks-windows/play-tts.ps1 +7 -1
  19. package/.claude/hooks-windows/session-start-tts.ps1 +2 -1
  20. package/.claude/hooks-windows/verbosity-manager.ps1 +126 -119
  21. package/README.md +10 -2
  22. package/RELEASE_NOTES.md +36 -0
  23. package/bin/agentvibes-voice-browser.js +1939 -1840
  24. package/mcp-server/server.py +52 -9
  25. package/package.json +1 -1
  26. package/src/console/tabs/receiver-tab.js +1527 -1483
  27. package/src/console/tabs/settings-tab.js +2 -2
  28. package/src/console/tabs/setup-tab.js +53 -8
  29. package/src/console/tabs/voices-tab.js +130 -13
  30. package/src/i18n/en.js +202 -202
  31. package/src/services/verbosity-service.js +159 -157
  32. package/templates/agentvibes-receiver.sh +3 -2
@@ -912,17 +912,58 @@ class AgentVibesServer:
912
912
  return "✅ TTS banner: **enabled**\n\nSay: \"Turn off banner\" to disable"
913
913
 
914
914
  # Helper methods
915
+ def _resolve_project_dir(self) -> Optional[Path]:
916
+ # Returns the nearest directory containing .claude/, or None.
917
+ # Checked in order: explicit CLAUDE_PROJECT_DIR, npm's INIT_CWD,
918
+ # shell PWD, os.getcwd() and its parents. Required because MCP
919
+ # clients (VS Code Copilot, Codex, Warp, etc.) don't agree on
920
+ # what cwd to spawn the server from, so relying on os.getcwd()
921
+ # alone silently falls back to package config — which breaks
922
+ # project-local per-LLM routing in audio-effects.cfg.
923
+ candidates: list[Path] = []
924
+ for var in ("CLAUDE_PROJECT_DIR", "INIT_CWD", "PWD"):
925
+ val = os.environ.get(var, "").strip()
926
+ if val:
927
+ try:
928
+ candidates.append(Path(val).resolve())
929
+ except (OSError, ValueError):
930
+ pass
931
+ try:
932
+ cwd = Path.cwd().resolve()
933
+ candidates.append(cwd)
934
+ candidates.extend(cwd.parents)
935
+ except (OSError, ValueError):
936
+ pass
937
+
938
+ try:
939
+ agentvibes_root = self.agentvibes_root.resolve()
940
+ except (OSError, ValueError):
941
+ agentvibes_root = self.agentvibes_root
942
+
943
+ seen: set[Path] = set()
944
+ for candidate in candidates:
945
+ if candidate in seen:
946
+ continue
947
+ seen.add(candidate)
948
+ if candidate == agentvibes_root:
949
+ continue
950
+ try:
951
+ if (candidate / ".claude").is_dir():
952
+ return candidate
953
+ except OSError:
954
+ continue
955
+ return None
956
+
915
957
  def _build_script_env(self) -> dict:
916
958
  """Build environment dict for script execution (shared by all script runners)"""
917
959
  env = os.environ.copy()
918
960
 
919
- # Determine where to save settings based on context:
920
- # 1. If cwd has .claude/ → Use cwd (real Claude Code project)
921
- # 2. Otherwise Use global ~/.claude/ (Claude Desktop, Warp, etc.)
922
- # Note: Hooks are ALWAYS from package .claude/ (self.claude_dir)
923
- cwd = Path.cwd()
924
- if (cwd / ".claude").is_dir() and cwd != self.agentvibes_root:
925
- env["CLAUDE_PROJECT_DIR"] = str(cwd)
961
+ # Export CLAUDE_PROJECT_DIR so play-tts.{ps1,sh} reads the
962
+ # project's .claude/config/audio-effects.cfg (per-LLM routing,
963
+ # pretext, effects) instead of the package's bundled copy.
964
+ project_dir = self._resolve_project_dir()
965
+ if project_dir is not None:
966
+ env["CLAUDE_PROJECT_DIR"] = str(project_dir)
926
967
 
927
968
  # Add common locations for piper to PATH (Unix only)
928
969
  if not self.is_windows:
@@ -1237,7 +1278,7 @@ Examples:
1237
1278
  ),
1238
1279
  Tool(
1239
1280
  name="get_verbosity",
1240
- description="Get current AgentVibes verbosity level (low/medium/high). Verbosity controls how much Claude speaks while working - from minimal (acknowledgments only) to maximum transparency (all reasoning spoken).",
1281
+ description="Get current AgentVibes verbosity level (low/medium/high/caveman). Verbosity controls how much Claude speaks while working - from minimal (acknowledgments only) to maximum transparency (all reasoning spoken) to caveman (ultra-terse fragments, max token savings).",
1241
1282
  inputSchema={"type": "object", "properties": {}},
1242
1283
  ),
1243
1284
  Tool(
@@ -1248,11 +1289,13 @@ Verbosity Levels:
1248
1289
  - LOW: Only acknowledgments (start) and completions (end). Minimal interruption.
1249
1290
  - MEDIUM: + Major decisions and key findings. Balanced transparency.
1250
1291
  - HIGH: All reasoning, decisions, and findings. Maximum transparency.
1292
+ - CAVEMAN: Ultra-terse fragments. Drops articles, filler, hedging. Abbreviates heavily. 65-75% fewer output tokens.
1251
1293
 
1252
1294
  Perfect for:
1253
1295
  - LOW: Quiet work sessions, minimal distraction
1254
1296
  - MEDIUM: Understanding major decisions without full narration
1255
1297
  - HIGH: Full transparency, learning mode, debugging complex tasks
1298
+ - CAVEMAN: Maximum token savings, minimal prose
1256
1299
 
1257
1300
  Note: Changes take effect on next Claude Code session restart.""",
1258
1301
  inputSchema={
@@ -1261,7 +1304,7 @@ Note: Changes take effect on next Claude Code session restart.""",
1261
1304
  "level": {
1262
1305
  "type": "string",
1263
1306
  "description": "Verbosity level to set",
1264
- "enum": ["low", "medium", "high"]
1307
+ "enum": ["low", "medium", "high", "caveman"]
1265
1308
  }
1266
1309
  },
1267
1310
  "required": ["level"],
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": "5.1.4",
4
+ "version": "5.2.0",
5
5
  "description": "Now your AI Agents can finally talk back! Professional TTS voice for Claude Code, Claude Desktop (via MCP), and Clawdbot with multi-provider support.",
6
6
  "homepage": "https://agentvibes.org",
7
7
  "keywords": [