agentvibes 4.6.7 → 5.0.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 (35) hide show
  1. package/.agentvibes/bmad-voice-map.json +104 -0
  2. package/.agentvibes/config.json +13 -12
  3. package/.agentvibes/copilot-sessions.log +4 -0
  4. package/.claude/audio/tracks/README.md +51 -52
  5. package/.claude/config/audio-effects-bmad.cfg +50 -0
  6. package/.claude/config/audio-effects.cfg +4 -4
  7. package/.claude/config/background-music-enabled.txt +1 -0
  8. package/.claude/config/personality.txt +1 -0
  9. package/.claude/hooks/play-tts-piper.sh +3 -1
  10. package/.claude/hooks/play-tts.sh +373 -301
  11. package/.claude/hooks/session-start-tts.sh +81 -81
  12. package/.claude/hooks-windows/audio-processor.ps1 +181 -0
  13. package/.claude/hooks-windows/play-tts-piper.ps1 +259 -245
  14. package/.claude/hooks-windows/play-tts.ps1 +101 -9
  15. package/.claude/hooks-windows/session-start-tts.ps1 +114 -114
  16. package/README.md +107 -7
  17. package/RELEASE_NOTES.md +54 -0
  18. package/bin/bmad-speak.js +16 -8
  19. package/mcp-server/server.py +15 -8
  20. package/package.json +1 -1
  21. package/src/console/app.js +899 -897
  22. package/src/console/footer-config.js +50 -50
  23. package/src/console/navigation.js +65 -65
  24. package/src/console/tabs/agents-tab.js +1896 -1886
  25. package/src/console/tabs/music-tab.js +1046 -1039
  26. package/src/console/tabs/placeholder-tab.js +81 -80
  27. package/src/console/tabs/settings-tab.js +939 -3988
  28. package/src/console/tabs/setup-tab.js +1811 -0
  29. package/src/console/tabs/voices-tab.js +1720 -1713
  30. package/src/installer.js +6147 -6092
  31. package/src/services/llm-provider-service.js +407 -0
  32. package/src/services/navigation-service.js +123 -123
  33. package/src/services/tts-engine-service.js +69 -0
  34. package/.claude/audio/tracks/dreamy_house_loop.mp3 +0 -0
  35. package/src/console/tabs/install-tab.js +0 -1081
@@ -1,80 +1,81 @@
1
- /**
2
- * AgentVibes TUI Console — Placeholder Tab Component
3
- * Story 6.2: Tab Bar & Global Keyboard Navigation
4
- *
5
- * Creates a stub content box for each tab ID.
6
- * These are replaced by real tab implementations in Epics 7-11.
7
- */
8
-
9
- import blessed from 'blessed';
10
- import { t } from '../../i18n/strings.js';
11
-
12
- /**
13
- * Create a hidden placeholder box for a tab, appended into the content area.
14
- *
15
- * @param {object} contentArea - Blessed box to append into (this.contentArea from app.js)
16
- * @param {string} label - Human-readable tab name for display (e.g. 'Settings')
17
- * @returns {object} The created Blessed box widget
18
- */
19
- export function createPlaceholderTab(contentArea, label) {
20
- const box = blessed.box({
21
- parent: contentArea,
22
- top: 0,
23
- left: 0,
24
- width: '100%',
25
- height: '100%',
26
- content: `{center}{bold}${label}{/bold}{/center}\n\n{center}Coming in a future story...{/center}`,
27
- tags: true,
28
- hidden: true,
29
- style: {
30
- fg: '#90a4ae',
31
- bg: '#0a0e1a',
32
- },
33
- });
34
-
35
- return box;
36
- }
37
-
38
- /** Map of tabId → display label for all tabs */
39
- export const TAB_DISPLAY_LABELS = {
40
- settings: 'Settings',
41
- voices: 'Voices',
42
- music: 'Music',
43
- agents: 'BMad',
44
- receiver: 'Receiver',
45
- readme: 'Readme',
46
- help: 'Help',
47
- install: 'Install',
48
- };
49
-
50
- /** Override shortcut key for tabs where first letter conflicts */
51
- export const TAB_SHORTCUT_KEYS = {
52
- agents: 'B',
53
- receiver: 'X',
54
- };
55
-
56
- /**
57
- * Return the translated display label for a tab.
58
- * Falls back to TAB_DISPLAY_LABELS[id] if no i18n key is found.
59
- *
60
- * @param {string} id - Tab identifier (e.g. 'settings', 'voices')
61
- * @param {string} lang - BCP-47 language code (e.g. 'es', 'zh-CN')
62
- * @returns {string}
63
- */
64
- export function getTabLabel(id, lang = 'en') {
65
- const keyMap = {
66
- install: 'tabInstall',
67
- settings: 'tabSettings',
68
- voices: 'tabVoices',
69
- music: 'tabMusic',
70
- agents: 'tabBmad',
71
- receiver: 'tabReceiver',
72
- readme: 'tabReadme',
73
- help: 'tabHelp',
74
- };
75
- const key = keyMap[id];
76
- if (!key) return TAB_DISPLAY_LABELS[id] ?? id;
77
- const translated = t(lang, key);
78
- // t() returns the key itself when missing — fall back to English display label
79
- return (translated && translated !== key) ? translated : (TAB_DISPLAY_LABELS[id] ?? id);
80
- }
1
+ /**
2
+ * AgentVibes TUI Console — Placeholder Tab Component
3
+ * Story 6.2: Tab Bar & Global Keyboard Navigation
4
+ *
5
+ * Creates a stub content box for each tab ID.
6
+ * These are replaced by real tab implementations in Epics 7-11.
7
+ */
8
+
9
+ import blessed from 'blessed';
10
+ import { t } from '../../i18n/strings.js';
11
+
12
+ /**
13
+ * Create a hidden placeholder box for a tab, appended into the content area.
14
+ *
15
+ * @param {object} contentArea - Blessed box to append into (this.contentArea from app.js)
16
+ * @param {string} label - Human-readable tab name for display (e.g. 'Settings')
17
+ * @returns {object} The created Blessed box widget
18
+ */
19
+ export function createPlaceholderTab(contentArea, label) {
20
+ const box = blessed.box({
21
+ parent: contentArea,
22
+ top: 0,
23
+ left: 0,
24
+ width: '100%',
25
+ height: '100%',
26
+ content: `{center}{bold}${label}{/bold}{/center}\n\n{center}Coming in a future story...{/center}`,
27
+ tags: true,
28
+ hidden: true,
29
+ style: {
30
+ fg: '#90a4ae',
31
+ bg: '#0a0e1a',
32
+ },
33
+ });
34
+
35
+ return box;
36
+ }
37
+
38
+ /** Map of tabId → display label for all tabs */
39
+ export const TAB_DISPLAY_LABELS = {
40
+ settings: 'Settings',
41
+ voices: 'Voices',
42
+ music: 'Music',
43
+ agents: 'BMad',
44
+ receiver: 'Receiver',
45
+ readme: 'Readme',
46
+ help: 'Help',
47
+ setup: 'Setup',
48
+ };
49
+
50
+ /** Override shortcut key for tabs where first letter conflicts */
51
+ export const TAB_SHORTCUT_KEYS = {
52
+ setup: 'I',
53
+ agents: 'B',
54
+ receiver: 'X',
55
+ };
56
+
57
+ /**
58
+ * Return the translated display label for a tab.
59
+ * Falls back to TAB_DISPLAY_LABELS[id] if no i18n key is found.
60
+ *
61
+ * @param {string} id - Tab identifier (e.g. 'settings', 'voices')
62
+ * @param {string} lang - BCP-47 language code (e.g. 'es', 'zh-CN')
63
+ * @returns {string}
64
+ */
65
+ export function getTabLabel(id, lang = 'en') {
66
+ const keyMap = {
67
+ setup: 'tabSetup',
68
+ settings: 'tabSettings',
69
+ voices: 'tabVoices',
70
+ music: 'tabMusic',
71
+ agents: 'tabBmad',
72
+ receiver: 'tabReceiver',
73
+ readme: 'tabReadme',
74
+ help: 'tabHelp',
75
+ };
76
+ const key = keyMap[id];
77
+ if (!key) return TAB_DISPLAY_LABELS[id] ?? id;
78
+ const translated = t(lang, key);
79
+ // t() returns the key itself when missing fall back to English display label
80
+ return (translated && translated !== key) ? translated : (TAB_DISPLAY_LABELS[id] ?? id);
81
+ }