sona-ai-voice 0.2.4 → 0.2.6

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 (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2 -0
  3. package/package.json +5 -3
  4. package/packages/cli/dist/audio-adapter.d.ts +60 -0
  5. package/packages/cli/dist/audio-adapter.d.ts.map +1 -0
  6. package/packages/cli/dist/audio-adapter.js +198 -0
  7. package/packages/cli/dist/audio-adapter.js.map +1 -0
  8. package/packages/cli/dist/audio-capture.d.ts +1 -0
  9. package/packages/cli/dist/audio-capture.d.ts.map +1 -1
  10. package/packages/cli/dist/audio-capture.js +33 -16
  11. package/packages/cli/dist/audio-capture.js.map +1 -1
  12. package/packages/cli/dist/audio-playback.d.ts +1 -0
  13. package/packages/cli/dist/audio-playback.d.ts.map +1 -1
  14. package/packages/cli/dist/audio-playback.js +55 -16
  15. package/packages/cli/dist/audio-playback.js.map +1 -1
  16. package/packages/cli/dist/audio-utils.d.ts +2 -0
  17. package/packages/cli/dist/audio-utils.d.ts.map +1 -1
  18. package/packages/cli/dist/audio-utils.js +68 -38
  19. package/packages/cli/dist/audio-utils.js.map +1 -1
  20. package/packages/cli/dist/environment-detector.d.ts +59 -0
  21. package/packages/cli/dist/environment-detector.d.ts.map +1 -0
  22. package/packages/cli/dist/environment-detector.js +505 -0
  23. package/packages/cli/dist/environment-detector.js.map +1 -0
  24. package/packages/cli/dist/gui-server.d.ts.map +1 -1
  25. package/packages/cli/dist/gui-server.js +10 -6
  26. package/packages/cli/dist/gui-server.js.map +1 -1
  27. package/packages/cli/dist/setup.d.ts +1 -1
  28. package/packages/cli/dist/setup.d.ts.map +1 -1
  29. package/packages/cli/dist/setup.js +43 -3
  30. package/packages/cli/dist/setup.js.map +1 -1
  31. package/packages/cli/dist/tools/tool-executor.d.ts +5 -0
  32. package/packages/cli/dist/tools/tool-executor.d.ts.map +1 -1
  33. package/packages/cli/dist/tools/tool-executor.js +52 -1
  34. package/packages/cli/dist/tools/tool-executor.js.map +1 -1
  35. package/packages/cli/dist/voice-conversation.d.ts +5 -0
  36. package/packages/cli/dist/voice-conversation.d.ts.map +1 -1
  37. package/packages/cli/dist/voice-conversation.js +48 -31
  38. package/packages/cli/dist/voice-conversation.js.map +1 -1
  39. package/packages/ide-bridge/README.md +88 -0
  40. package/packages/realtime/dist/session.d.ts +1 -0
  41. package/packages/realtime/dist/session.d.ts.map +1 -1
  42. package/packages/realtime/dist/session.js +6 -0
  43. package/packages/realtime/dist/session.js.map +1 -1
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Zeradam Fantaye
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Sona is an intelligent CLI AI agent that i am working on at ShadowLabs. I am building sona to be a great companion with a large context window and do multiple useful tasks with in the CLI using a highly effective conversational user interface.
4
4
 
5
+ - Visit our website for future updates: [trysona.dev](https://trysona.dev)
6
+
5
7
  ## Description
6
8
 
7
9
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sona-ai-voice",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "description": "Voice-to-voice AI CLI companion powered by OpenAI Realtime API",
5
5
  "author": "zerish",
6
6
  "license": "MIT",
@@ -27,7 +27,8 @@
27
27
  "bin/**/*"
28
28
  ],
29
29
  "workspaces": [
30
- "packages/*"
30
+ "packages/*",
31
+ "vscode-extension"
31
32
  ],
32
33
  "scripts": {
33
34
  "build": "bash scripts/build-for-publish.sh",
@@ -40,7 +41,8 @@
40
41
  "cache:clear": "rm -rf node_modules/.cache .sona-cache",
41
42
  "prepack": "node scripts/prepack.js",
42
43
  "postpack": "node scripts/postpack.js",
43
- "prepublishOnly": "npm run build"
44
+ "prepublishOnly": "npm run build",
45
+ "postinstall": "node scripts/postinstall.js"
44
46
  },
45
47
  "dependencies": {
46
48
  "chalk": "^4.1.2",
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Audio Adapter
3
+ * Switches between native CLI audio and IDE bridge based on availability
4
+ *
5
+ * CRITICAL: On Windows/Linux, CLI cannot access audio directly.
6
+ * Must use IDE bridge (VS Code extension) for audio to work.
7
+ */
8
+ import { EventEmitter } from 'events';
9
+ export interface AudioAdapterConfig {
10
+ sampleRate: number;
11
+ channels: number;
12
+ bitDepth: number;
13
+ }
14
+ export interface AudioAdapterEvents {
15
+ 'data': (buffer: Buffer) => void;
16
+ 'error': (error: Error) => void;
17
+ 'started': () => void;
18
+ 'stopped': () => void;
19
+ 'finished': () => void;
20
+ }
21
+ /**
22
+ * Audio adapter that automatically chooses the best audio method:
23
+ *
24
+ * Windows/Linux:
25
+ * 1. IDE Bridge (VS Code extension) - REQUIRED, only option
26
+ * 2. Error if bridge not available
27
+ *
28
+ * macOS:
29
+ * 1. IDE Bridge (VS Code extension) - Preferred
30
+ * 2. Native CLI audio (sox/ffmpeg) - Fallback
31
+ */
32
+ export declare class AudioAdapter extends EventEmitter {
33
+ private mode;
34
+ private nativeCapture;
35
+ private nativePlayback;
36
+ private bridgeClient;
37
+ private config;
38
+ private env;
39
+ constructor(config: AudioAdapterConfig);
40
+ /**
41
+ * Initialize audio adapter - detects best available method
42
+ *
43
+ * IMPORTANT: On Windows/Linux, CLI cannot access audio directly.
44
+ * Must use IDE bridge (VS Code extension) for audio to work.
45
+ */
46
+ initialize(): Promise<void>;
47
+ private checkBridgeConnection;
48
+ private setupNativeMode;
49
+ private setupBridgeMode;
50
+ start(): void;
51
+ stop(): void;
52
+ pause(): void;
53
+ resume(): void;
54
+ play(buffer: Buffer): void;
55
+ finishPlayback(): void;
56
+ get recording(): boolean;
57
+ get playing(): boolean;
58
+ get currentMode(): string;
59
+ }
60
+ //# sourceMappingURL=audio-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-adapter.d.ts","sourceRoot":"","sources":["../src/audio-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAQtC,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,IAAI,CAAiC;IAC7C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,GAAG,CAAuB;gBAEtB,MAAM,EAAE,kBAAkB;IAKtC;;;;;OAKG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YA0DnB,qBAAqB;IA0BnC,OAAO,CAAC,eAAe;YAqBT,eAAe;IAsC7B,KAAK,IAAI,IAAI;IAUb,IAAI,IAAI,IAAI;IAUZ,KAAK,IAAI,IAAI;IAMb,MAAM,IAAI,IAAI;IAMd,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ1B,cAAc,IAAI,IAAI;IAOtB,IAAI,SAAS,IAAI,OAAO,CAKvB;IAED,IAAI,OAAO,IAAI,OAAO,CAKrB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;CACF"}
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AudioAdapter = void 0;
5
+ const events_1 = require("events");
6
+ const audio_capture_1 = require("./audio-capture");
7
+ const audio_playback_1 = require("./audio-playback");
8
+ const index_js_1 = require("../../ide-bridge/dist/index.js");
9
+ const environment_detector_1 = require("./environment-detector");
10
+ const audio_utils_1 = require("./audio-utils");
11
+
12
+ class AudioAdapter extends events_1.EventEmitter {
13
+ mode = 'native';
14
+ nativeCapture = null;
15
+ nativePlayback = null;
16
+ bridgeClient = null;
17
+ config;
18
+ env = (0, environment_detector_1.detectEnvironment)();
19
+ constructor(config) {
20
+ super();
21
+ this.config = config;
22
+ }
23
+
24
+ async initialize() {
25
+ const isWindows = this.env.isWindowsNative || this.env.isGitBash;
26
+ const isLinux = this.env.environment === 'linux-native' || this.env.isWSL;
27
+ const isMacOS = this.env.environment === 'darwin-native';
28
+
29
+ if (isWindows || isLinux) {
30
+ const bridgeAvailable = await this.checkBridgeConnection(3848);
31
+ if (bridgeAvailable) {
32
+ this.mode = 'bridge';
33
+ this.bridgeClient = new index_js_1.BridgeClient(3848);
34
+ await this.setupBridgeMode();
35
+ return;
36
+ }
37
+
38
+ throw new Error(`Audio not available from CLI on ${isWindows ? 'Windows' : 'Linux'}.\n` +
39
+ `Please install and activate the Sona VS Code extension:\n` +
40
+ `1. Install: code --install-extension sona-voice-assistant\n` +
41
+ `2. Activate: Press Cmd/Ctrl+Shift+P → "Sona: Start Voice Assistant"\n` +
42
+ `3. Then run: sona talk\n\n` +
43
+ `The extension handles audio using IDE permissions, which work on Windows/Linux.`);
44
+ }
45
+
46
+ if (isMacOS) {
47
+ const bridgeAvailable = await this.checkBridgeConnection(3848);
48
+ if (bridgeAvailable) {
49
+ this.mode = 'bridge';
50
+ this.bridgeClient = new index_js_1.BridgeClient(3848);
51
+ await this.setupBridgeMode();
52
+ return;
53
+ }
54
+
55
+ const audioCommands = (0, audio_utils_1.detectAudioCommands)();
56
+ if (audioCommands.available) {
57
+ this.mode = 'native';
58
+ this.setupNativeMode();
59
+ return;
60
+ }
61
+
62
+ throw new Error(`Audio tools not found on macOS.\n` +
63
+ `Install sox: brew install sox\n` +
64
+ `Or use the VS Code extension for better cross-platform support.`);
65
+ }
66
+
67
+ throw new Error(`Unsupported platform: ${process.platform}`);
68
+ }
69
+ async checkBridgeConnection(port) {
70
+ return new Promise((resolve) => {
71
+ const client = new index_js_1.BridgeClient(port);
72
+ const timeout = setTimeout(() => {
73
+ client.disconnect();
74
+ resolve(false);
75
+ }, 1000);
76
+ client.on('connected', () => {
77
+ clearTimeout(timeout);
78
+ client.disconnect();
79
+ resolve(true);
80
+ });
81
+ client.on('error', () => {
82
+ clearTimeout(timeout);
83
+ resolve(false);
84
+ });
85
+ client.connect().catch(() => {
86
+ clearTimeout(timeout);
87
+ resolve(false);
88
+ });
89
+ });
90
+ }
91
+ setupNativeMode() {
92
+ this.nativeCapture = new audio_capture_1.AudioCapture(this.config);
93
+ this.nativePlayback = new audio_playback_1.AudioPlayback(this.config);
94
+ this.nativeCapture.on('data', (buffer) => {
95
+ this.emit('data', buffer);
96
+ });
97
+ this.nativeCapture.on('error', (error) => {
98
+ this.emit('error', error);
99
+ });
100
+ this.nativePlayback.on('error', (error) => {
101
+ this.emit('error', error);
102
+ });
103
+ this.nativePlayback.on('finished', () => {
104
+ this.emit('finished');
105
+ });
106
+ }
107
+ async setupBridgeMode() {
108
+ if (!this.bridgeClient)
109
+ return;
110
+ await this.bridgeClient.connect();
111
+ this.bridgeClient.on('audio-data', (buffer) => {
112
+ this.emit('data', buffer);
113
+ });
114
+ this.bridgeClient.on('error', (error) => {
115
+ this.emit('error', error);
116
+ });
117
+ this.bridgeClient.on('disconnected', () => {
118
+
119
+ const isWindows = this.env.isWindowsNative || this.env.isGitBash;
120
+ const isLinux = this.env.environment === 'linux-native' || this.env.isWSL;
121
+ if (isWindows || isLinux) {
122
+ this.emit('error', new Error('IDE bridge disconnected. Audio unavailable on Windows/Linux without bridge.\n' +
123
+ 'Please restart the VS Code extension: Cmd/Ctrl+Shift+P → "Sona: Start Voice Assistant"'));
124
+ return;
125
+ }
126
+
127
+ const audioCommands = (0, audio_utils_1.detectAudioCommands)();
128
+ if (audioCommands.available) {
129
+ this.mode = 'native';
130
+ this.setupNativeMode();
131
+ this.emit('error', new Error('Bridge disconnected, falling back to native audio'));
132
+ }
133
+ else {
134
+ this.emit('error', new Error('Bridge disconnected and no native audio available'));
135
+ }
136
+ });
137
+ }
138
+ start() {
139
+ if (this.mode === 'bridge' && this.bridgeClient) {
140
+ this.bridgeClient.sendStartAudio();
141
+ this.emit('started');
142
+ }
143
+ else if (this.mode === 'native' && this.nativeCapture) {
144
+ this.nativeCapture.start();
145
+ this.emit('started');
146
+ }
147
+ }
148
+ stop() {
149
+ if (this.mode === 'bridge' && this.bridgeClient) {
150
+ this.bridgeClient.sendStopAudio();
151
+ this.emit('stopped');
152
+ }
153
+ else if (this.mode === 'native' && this.nativeCapture) {
154
+ this.nativeCapture.stop();
155
+ this.emit('stopped');
156
+ }
157
+ }
158
+ pause() {
159
+ if (this.mode === 'native' && this.nativeCapture) {
160
+ this.nativeCapture.pause();
161
+ }
162
+ }
163
+ resume() {
164
+ if (this.mode === 'native' && this.nativeCapture) {
165
+ this.nativeCapture.resume();
166
+ }
167
+ }
168
+ play(buffer) {
169
+ if (this.mode === 'bridge' && this.bridgeClient) {
170
+ this.bridgeClient.sendAudioData(buffer);
171
+ }
172
+ else if (this.mode === 'native' && this.nativePlayback) {
173
+ this.nativePlayback.play(buffer);
174
+ }
175
+ }
176
+ finishPlayback() {
177
+ if (this.mode === 'native' && this.nativePlayback) {
178
+ this.nativePlayback.finishPlayback();
179
+ }
180
+
181
+ }
182
+ get recording() {
183
+ if (this.mode === 'bridge') {
184
+ return this.bridgeClient?.isConnected ?? false;
185
+ }
186
+ return this.nativeCapture?.recording ?? false;
187
+ }
188
+ get playing() {
189
+ if (this.mode === 'native' && this.nativePlayback) {
190
+ return this.nativePlayback.playing;
191
+ }
192
+ return false;
193
+ }
194
+ get currentMode() {
195
+ return this.mode;
196
+ }
197
+ }
198
+ exports.AudioAdapter = AudioAdapter;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-adapter.js","sourceRoot":"","sources":["../src/audio-adapter.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export declare class AudioCapture extends EventEmitter {
19
19
  private isRecording;
20
20
  private isPaused;
21
21
  private config;
22
+ private env;
22
23
  constructor(config: AudioCaptureConfig);
23
24
  start(): void;
24
25
  private spawnMic;
@@ -1 +1 @@
1
- {"version":3,"file":"audio-capture.d.ts","sourceRoot":"","sources":["../src/audio-capture.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,kBAAkB;IAKtC,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,QAAQ;IAiEhB;;;OAGG;IACH,KAAK,IAAI,IAAI;IAWb;;OAEG;IACH,MAAM,IAAI,IAAI;IAQd,IAAI,IAAI,IAAI;IAYZ,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAEQ,EAAE,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAC5C,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC9B,IAAI;IAIE,IAAI,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAC9C,KAAK,EAAE,CAAC,EACR,GAAG,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GACzC,OAAO;CAGX"}
1
+ {"version":3,"file":"audio-capture.d.ts","sourceRoot":"","sources":["../src/audio-capture.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,GAAG,CAAuB;gBAEtB,MAAM,EAAE,kBAAkB;IAKtC,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,QAAQ;IAmFhB;;;OAGG;IACH,KAAK,IAAI,IAAI;IAWb;;OAEG;IACH,MAAM,IAAI,IAAI;IAQd,IAAI,IAAI,IAAI;IAYZ,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAEQ,EAAE,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAC5C,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC9B,IAAI;IAIE,IAAI,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAC9C,KAAK,EAAE,CAAC,EACR,GAAG,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GACzC,OAAO;CAGX"}
@@ -4,11 +4,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.AudioCapture = void 0;
5
5
  const child_process_1 = require("child_process");
6
6
  const events_1 = require("events");
7
+ const environment_detector_1 = require("./environment-detector");
8
+ const audio_utils_1 = require("./audio-utils");
7
9
  class AudioCapture extends events_1.EventEmitter {
8
10
  micProcess = null;
9
11
  isRecording = false;
10
12
  isPaused = false;
11
13
  config;
14
+ env = (0, environment_detector_1.detectEnvironment)();
12
15
  constructor(config) {
13
16
  super();
14
17
  this.config = config;
@@ -26,16 +29,23 @@ class AudioCapture extends events_1.EventEmitter {
26
29
  catch { }
27
30
  this.micProcess = null;
28
31
  }
29
- this.micProcess = (0, child_process_1.spawn)('sox', [
30
- '-d',
31
- '-t', 'raw',
32
- '-b', '16',
33
- '-e', 'signed-integer',
34
- '-r', '24000',
35
- '-c', '1',
36
- '-q',
37
- '-',
38
- ]);
32
+
33
+ const audioCommands = (0, audio_utils_1.detectAudioCommands)();
34
+ const command = audioCommands.record;
35
+
36
+ let args;
37
+ if (command === 'ffmpeg') {
38
+ args = (0, environment_detector_1.getFfmpegCaptureArgs)(this.env, this.config.sampleRate);
39
+ }
40
+ else {
41
+ args = (0, environment_detector_1.getSoxCaptureArgs)(this.env, this.config.sampleRate);
42
+ }
43
+
44
+ const spawnOpts = (0, environment_detector_1.getSpawnOptions)(this.env);
45
+ this.micProcess = (0, child_process_1.spawn)(command, args, {
46
+ stdio: ['ignore', 'pipe', 'pipe'],
47
+ ...spawnOpts,
48
+ });
39
49
  if (!this.micProcess.stdout) {
40
50
  this.emit('error', new Error('Failed to start microphone'));
41
51
  return;
@@ -51,11 +61,16 @@ class AudioCapture extends events_1.EventEmitter {
51
61
  this.micProcess.stderr.on('data', (chunk) => {
52
62
  stderrOutput += chunk.toString();
53
63
 
54
- if (stderrOutput.includes('ALSA') ||
55
- stderrOutput.includes('no default audio device') ||
56
- stderrOutput.includes('Unknown PCM') ||
57
- stderrOutput.includes('FAIL sox')) {
58
- this.emit('error', new Error('Audio device not available. WSL does not support direct audio access. Use Windows native terminal or configure PulseAudio.'));
64
+ const hasError = stderrOutput.includes('FAIL sox') ||
65
+ stderrOutput.includes('error:') ||
66
+ stderrOutput.includes('cannot') ||
67
+ stderrOutput.includes('failed') ||
68
+ (stderrOutput.includes('ALSA') && this.env.isWSL) ||
69
+ (stderrOutput.includes('no default audio device') && this.env.isWSL);
70
+ if (hasError) {
71
+
72
+ const errorMsg = (0, environment_detector_1.getAudioErrorMessage)(this.env, stderrOutput);
73
+ this.emit('error', new Error(errorMsg));
59
74
  this.micProcess?.kill();
60
75
  }
61
76
  });
@@ -65,7 +80,9 @@ class AudioCapture extends events_1.EventEmitter {
65
80
  if (error.code === 'ENOENT') {
66
81
 
67
82
  if (!this.isRecording) {
68
- this.emit('error', new Error('Audio capture tool (sox) not found. Please install sox.'));
83
+ const audioCommands = (0, audio_utils_1.detectAudioCommands)();
84
+ const toolName = audioCommands.platform === 'darwin' ? 'sox' : 'ffmpeg';
85
+ this.emit('error', new Error(`Audio capture tool (${toolName}) not found. Please install ${toolName}.`));
69
86
  }
70
87
  return;
71
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"audio-capture.js","sourceRoot":"","sources":["../src/audio-capture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audio-capture.js","sourceRoot":"","sources":["../src/audio-capture.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ export declare class AudioPlayback extends EventEmitter {
18
18
  private playProcess;
19
19
  private isWritable;
20
20
  private config;
21
+ private env;
21
22
  private audioBuffer;
22
23
  private isPlaying;
23
24
  private totalBytesQueued;
@@ -1 +1 @@
1
- {"version":3,"file":"audio-playback.d.ts","sourceRoot":"","sources":["../src/audio-playback.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAsB;IAGpC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAA+B;gBAEvC,MAAM,EAAE,mBAAmB;IAKvC,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,YAAY;IA+EpB;;OAEG;IACH,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAoB/B;;;OAGG;IACH,cAAc,IAAI,IAAI;IAwCtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,IAAI,IAAI,IAAI;IA4BZ,IAAI,OAAO,IAAI,OAAO,CAErB;IAEQ,EAAE,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAC7C,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,IAAI;IAIE,IAAI,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAC/C,KAAK,EAAE,CAAC,EACR,GAAG,IAAI,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAC1C,OAAO;CAGX"}
1
+ {"version":3,"file":"audio-playback.d.ts","sourceRoot":"","sources":["../src/audio-playback.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,GAAG,CAAuB;IAGlC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAA+B;gBAEvC,MAAM,EAAE,mBAAmB;IAKvC,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,YAAY;IAuHpB;;OAEG;IACH,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAoB/B;;;OAGG;IACH,cAAc,IAAI,IAAI;IAwCtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,IAAI,IAAI,IAAI;IA4BZ,IAAI,OAAO,IAAI,OAAO,CAErB;IAEQ,EAAE,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAC7C,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,IAAI;IAIE,IAAI,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAC/C,KAAK,EAAE,CAAC,EACR,GAAG,IAAI,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAC1C,OAAO;CAGX"}
@@ -4,10 +4,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.AudioPlayback = void 0;
5
5
  const child_process_1 = require("child_process");
6
6
  const events_1 = require("events");
7
+ const environment_detector_1 = require("./environment-detector");
8
+ const audio_utils_1 = require("./audio-utils");
7
9
  class AudioPlayback extends events_1.EventEmitter {
8
10
  playProcess = null;
9
11
  isWritable = false;
10
12
  config;
13
+ env = (0, environment_detector_1.detectEnvironment)();
11
14
 
12
15
  audioBuffer = [];
13
16
  isPlaying = false;
@@ -25,16 +28,36 @@ class AudioPlayback extends events_1.EventEmitter {
25
28
  if (this.playProcess) {
26
29
  return;
27
30
  }
28
- this.playProcess = (0, child_process_1.spawn)('play', [
29
- '-t', 'raw',
30
- '-b', '16',
31
- '-e', 'signed-integer',
32
- '-r', String(this.config.sampleRate),
33
- '-c', '1',
34
- '-q',
35
- '-',
36
- ], {
37
- stdio: ['pipe', 'ignore', 'ignore']
31
+
32
+ const audioCommands = (0, audio_utils_1.detectAudioCommands)();
33
+ const command = audioCommands.play;
34
+
35
+ let args;
36
+ if (command === 'ffplay') {
37
+
38
+ args = [
39
+ '-f', 's16le',
40
+ '-ar', String(this.config.sampleRate),
41
+ '-ac', '1',
42
+ '-i', '-',
43
+ '-autoexit',
44
+ '-nodisp',
45
+ '-loglevel', 'quiet'
46
+ ];
47
+ }
48
+ else if (command === 'ffmpeg') {
49
+
50
+ args = (0, environment_detector_1.getFfmpegPlaybackArgs)(this.env, this.config.sampleRate);
51
+ }
52
+ else {
53
+
54
+ args = (0, environment_detector_1.getSoxPlaybackArgs)(this.env, this.config.sampleRate);
55
+ }
56
+
57
+ const spawnOpts = (0, environment_detector_1.getSpawnOptions)(this.env);
58
+ this.playProcess = (0, child_process_1.spawn)(command, args, {
59
+ stdio: ['pipe', 'ignore', 'pipe'],
60
+ ...spawnOpts,
38
61
  });
39
62
  if (!this.playProcess.stdin) {
40
63
  this.emit('error', new Error('Failed to start speaker'));
@@ -52,8 +75,15 @@ class AudioPlayback extends events_1.EventEmitter {
52
75
  this.playProcess.stderr.on('data', (chunk) => {
53
76
  stderrOutput += chunk.toString();
54
77
 
55
- if (stderrOutput.includes('ALSA') || stderrOutput.includes('no default audio device') || stderrOutput.includes('Unknown PCM')) {
56
- this.emit('error', new Error('Audio device not available. WSL does not support direct audio access.'));
78
+ const hasError = stderrOutput.includes('error:') ||
79
+ stderrOutput.includes('cannot') ||
80
+ stderrOutput.includes('failed') ||
81
+ (stderrOutput.includes('ALSA') && this.env.isWSL) ||
82
+ (stderrOutput.includes('no default audio device') && this.env.isWSL);
83
+ if (hasError) {
84
+
85
+ const errorMsg = (0, environment_detector_1.getAudioErrorMessage)(this.env, stderrOutput);
86
+ this.emit('error', new Error(errorMsg));
57
87
  this.playProcess?.kill();
58
88
  }
59
89
  });
@@ -63,16 +93,25 @@ class AudioPlayback extends events_1.EventEmitter {
63
93
  if (error.code === 'ENOENT') {
64
94
 
65
95
  if (!this.isPlaying) {
66
- this.emit('error', new Error('Audio playback tool (play) not found. Please install sox.'));
96
+ const audioCommands = (0, audio_utils_1.detectAudioCommands)();
97
+ const toolName = audioCommands.platform === 'darwin' ? 'sox (play)' : 'ffmpeg/ffplay';
98
+ this.emit('error', new Error(`Audio playback tool (${toolName}) not found. Please install ${audioCommands.platform === 'darwin' ? 'sox' : 'ffmpeg'}.`));
67
99
  }
68
100
  return;
69
101
  }
70
102
  this.emit('error', error);
71
103
  });
72
104
  this.playProcess.on('exit', (code) => {
73
- if (code !== 0 && code !== null && stderrOutput.includes('ALSA')) {
74
-
75
- this.emit('error', new Error('Audio device not available. WSL does not support direct audio access.'));
105
+
106
+ if (code !== 0 && code !== null && stderrOutput) {
107
+ const hasError = stderrOutput.includes('error:') ||
108
+ stderrOutput.includes('cannot') ||
109
+ stderrOutput.includes('failed') ||
110
+ (stderrOutput.includes('ALSA') && this.env.isWSL);
111
+ if (hasError) {
112
+ const errorMsg = (0, environment_detector_1.getAudioErrorMessage)(this.env, stderrOutput);
113
+ this.emit('error', new Error(errorMsg));
114
+ }
76
115
  }
77
116
  });
78
117
  this.playProcess.on('close', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"audio-playback.js","sourceRoot":"","sources":["../src/audio-playback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audio-playback.js","sourceRoot":"","sources":["../src/audio-playback.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ export interface AudioCommands {
10
10
  }
11
11
  /**
12
12
  * Detect available audio commands for the current platform
13
+ * macOS: sox/play
14
+ * Windows/Linux: ffmpeg/ffplay
13
15
  */
14
16
  export declare function detectAudioCommands(): AudioCommands;
15
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"audio-utils.d.ts","sourceRoot":"","sources":["../src/audio-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAqDnD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAY3E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAO7D"}
1
+ {"version":3,"file":"audio-utils.d.ts","sourceRoot":"","sources":["../src/audio-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAwEnD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CA4B3E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAO7D"}