claude-voice 1.3.9 → 1.3.11
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/dist/terminal/input-injector.d.ts +9 -1
- package/dist/terminal/input-injector.d.ts.map +1 -1
- package/dist/terminal/input-injector.js +90 -4
- package/dist/terminal/input-injector.js.map +1 -1
- package/dist/utils/audio.d.ts.map +1 -1
- package/dist/utils/audio.js +31 -10
- package/dist/utils/audio.js.map +1 -1
- package/package.json +3 -2
- package/sounds/ping.wav +0 -0
- package/sounds/pop.wav +0 -0
|
@@ -37,9 +37,17 @@ export declare class TerminalInputInjector {
|
|
|
37
37
|
pressKey(key: string): Promise<void>;
|
|
38
38
|
private generateAppleScript;
|
|
39
39
|
/**
|
|
40
|
-
* Types text into the active terminal
|
|
40
|
+
* Types text into the active terminal on Linux (X11 or Wayland)
|
|
41
41
|
*/
|
|
42
42
|
private typeLinux;
|
|
43
|
+
/**
|
|
44
|
+
* Types text using Wayland clipboard + wtype
|
|
45
|
+
*/
|
|
46
|
+
private typeWayland;
|
|
47
|
+
/**
|
|
48
|
+
* Types text using xdotool on X11
|
|
49
|
+
*/
|
|
50
|
+
private typeX11;
|
|
43
51
|
private escapeForAppleScript;
|
|
44
52
|
private getKeyCode;
|
|
45
53
|
private delay;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-injector.d.ts","sourceRoot":"","sources":["../../src/terminal/input-injector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"input-injector.d.ts","sourceRoot":"","sources":["../../src/terminal/input-injector.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;IAEzC;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAcD;;;GAGG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAuB;gBAE3B,OAAO,GAAE,oBAAyB;IAS9C;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B1D;;OAEG;YACW,cAAc;IAO5B;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAK,EAAE,UAAU,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9E;;OAEG;IACG,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB1C,OAAO,CAAC,mBAAmB;IAkC3B;;OAEG;YACW,SAAS;IAOvB;;OAEG;YACW,WAAW;IA4CzB;;OAEG;YACW,OAAO;IA4DrB,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,UAAU;IAwClB,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,MAAM,CAAC,YAAY,IAAI,OAAO;IAI9B;;OAEG;IACH,MAAM,CAAC,cAAc,IAAI,UAAU,GAAG,OAAO,GAAG,SAAS;CAa1D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGlE"}
|
|
@@ -5,6 +5,12 @@ exports.sendToClaudeCode = sendToClaudeCode;
|
|
|
5
5
|
const child_process_1 = require("child_process");
|
|
6
6
|
const util_1 = require("util");
|
|
7
7
|
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
8
|
+
/**
|
|
9
|
+
* Check if running on Wayland
|
|
10
|
+
*/
|
|
11
|
+
function isWayland() {
|
|
12
|
+
return process.env.XDG_SESSION_TYPE === 'wayland';
|
|
13
|
+
}
|
|
8
14
|
/**
|
|
9
15
|
* Check if a command exists in PATH
|
|
10
16
|
*/
|
|
@@ -135,13 +141,63 @@ keystroke "${text}"
|
|
|
135
141
|
end tell`;
|
|
136
142
|
}
|
|
137
143
|
/**
|
|
138
|
-
* Types text into the active terminal
|
|
144
|
+
* Types text into the active terminal on Linux (X11 or Wayland)
|
|
139
145
|
*/
|
|
140
146
|
async typeLinux(text, pressEnter) {
|
|
147
|
+
if (isWayland()) {
|
|
148
|
+
return this.typeWayland(text, pressEnter);
|
|
149
|
+
}
|
|
150
|
+
return this.typeX11(text, pressEnter);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Types text using Wayland clipboard + wtype
|
|
154
|
+
*/
|
|
155
|
+
async typeWayland(text, pressEnter) {
|
|
156
|
+
// Check for required tools
|
|
157
|
+
if (!hasCommand('wl-copy')) {
|
|
158
|
+
throw new Error('wl-copy not found. Install it with: sudo apt install wl-clipboard\n' +
|
|
159
|
+
'This is required for Wayland clipboard access.');
|
|
160
|
+
}
|
|
161
|
+
if (!hasCommand('wtype')) {
|
|
162
|
+
throw new Error('wtype not found. Install it with: sudo apt install wtype\n' +
|
|
163
|
+
'This is required for keyboard simulation on Wayland.');
|
|
164
|
+
}
|
|
165
|
+
try {
|
|
166
|
+
// 1. Copy text to clipboard using wl-copy
|
|
167
|
+
await new Promise((resolve, reject) => {
|
|
168
|
+
const proc = (0, child_process_1.spawn)('wl-copy', [], { stdio: ['pipe', 'ignore', 'ignore'] });
|
|
169
|
+
proc.stdin.write(text);
|
|
170
|
+
proc.stdin.end();
|
|
171
|
+
proc.on('close', (code) => {
|
|
172
|
+
if (code === 0)
|
|
173
|
+
resolve();
|
|
174
|
+
else
|
|
175
|
+
reject(new Error(`wl-copy failed with code ${code}`));
|
|
176
|
+
});
|
|
177
|
+
proc.on('error', reject);
|
|
178
|
+
});
|
|
179
|
+
// Small delay to ensure clipboard is ready
|
|
180
|
+
await this.delay(50);
|
|
181
|
+
// 2. Paste with Ctrl+Shift+V (terminal paste shortcut)
|
|
182
|
+
await execAsync('wtype -M ctrl -M shift -k v -m shift -m ctrl');
|
|
183
|
+
// 3. Press Enter if requested
|
|
184
|
+
if (pressEnter) {
|
|
185
|
+
await this.delay(50);
|
|
186
|
+
await execAsync('wtype -k Return');
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
throw new Error(`Failed to inject text via Wayland: ${error}`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Types text using xdotool on X11
|
|
195
|
+
*/
|
|
196
|
+
async typeX11(text, pressEnter) {
|
|
141
197
|
// Check for xdotool
|
|
142
198
|
if (!hasCommand('xdotool')) {
|
|
143
199
|
throw new Error('xdotool not found. Install it with: sudo apt install xdotool\n' +
|
|
144
|
-
'Note: xdotool works with X11. For Wayland,
|
|
200
|
+
'Note: xdotool works with X11. For Wayland, install wl-clipboard and wtype.');
|
|
145
201
|
}
|
|
146
202
|
// Escape special characters for shell
|
|
147
203
|
const escapedText = text
|
|
@@ -150,9 +206,39 @@ end tell`;
|
|
|
150
206
|
.replace(/`/g, '\\`')
|
|
151
207
|
.replace(/\$/g, '\\$');
|
|
152
208
|
try {
|
|
153
|
-
//
|
|
209
|
+
// First, try to find and activate a terminal window
|
|
210
|
+
const terminalPatterns = [
|
|
211
|
+
'gnome-terminal',
|
|
212
|
+
'konsole',
|
|
213
|
+
'xfce4-terminal',
|
|
214
|
+
'xterm',
|
|
215
|
+
'terminator',
|
|
216
|
+
'alacritty',
|
|
217
|
+
'kitty',
|
|
218
|
+
'tilix',
|
|
219
|
+
'Terminal',
|
|
220
|
+
];
|
|
221
|
+
let activated = false;
|
|
222
|
+
for (const pattern of terminalPatterns) {
|
|
223
|
+
try {
|
|
224
|
+
await execAsync(`xdotool search --name "${pattern}" windowactivate --sync 2>/dev/null`);
|
|
225
|
+
activated = true;
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
if (!activated) {
|
|
233
|
+
try {
|
|
234
|
+
await execAsync('xdotool getactivewindow');
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
throw new Error('No terminal window found. Please focus your terminal window.');
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
await this.delay(100);
|
|
154
241
|
await execAsync(`xdotool type --clearmodifiers "${escapedText}"`);
|
|
155
|
-
// Press Enter if requested
|
|
156
242
|
if (pressEnter) {
|
|
157
243
|
await execAsync('xdotool key Return');
|
|
158
244
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-injector.js","sourceRoot":"","sources":["../../src/terminal/input-injector.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"input-injector.js","sourceRoot":"","sources":["../../src/terminal/input-injector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../src/utils/audio.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../src/utils/audio.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAC;AAqBpD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAqBjD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAarE;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,IAAI,GACnB,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,SAAU,EAAE,SAAS,SAAQ,GAAG,MAAM,CAE/E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQrD;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,IAAI,CA2BN"}
|
package/dist/utils/audio.js
CHANGED
|
@@ -45,25 +45,46 @@ exports.saveToWav = saveToWav;
|
|
|
45
45
|
const child_process_1 = require("child_process");
|
|
46
46
|
const fs = __importStar(require("fs"));
|
|
47
47
|
const os = __importStar(require("os"));
|
|
48
|
+
const path = __importStar(require("path"));
|
|
48
49
|
const platform_1 = require("../platform");
|
|
50
|
+
/**
|
|
51
|
+
* Get the path to bundled sound files
|
|
52
|
+
*/
|
|
53
|
+
function getBundledSoundPath(soundName) {
|
|
54
|
+
// Sound files are in sounds/ directory relative to package root
|
|
55
|
+
// From dist/utils/audio.js -> ../../sounds/
|
|
56
|
+
const soundsDir = path.join(__dirname, '..', '..', 'sounds');
|
|
57
|
+
const soundFile = path.join(soundsDir, `${soundName.toLowerCase()}.wav`);
|
|
58
|
+
if (fs.existsSync(soundFile)) {
|
|
59
|
+
return soundFile;
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
49
63
|
/**
|
|
50
64
|
* Play a system sound (cross-platform)
|
|
51
65
|
* @param soundName - Name of the sound (e.g., 'Ping', 'Pop' on macOS)
|
|
52
66
|
*/
|
|
53
67
|
function playSound(soundName) {
|
|
54
68
|
const caps = (0, platform_1.getPlatformCapabilities)();
|
|
69
|
+
const bundledSound = getBundledSoundPath(soundName);
|
|
55
70
|
if (caps.platform === 'darwin') {
|
|
56
|
-
|
|
57
|
-
|
|
71
|
+
// macOS: Try system sound first, then bundled
|
|
72
|
+
const systemSound = `/System/Library/Sounds/${soundName}.aiff`;
|
|
73
|
+
if (fs.existsSync(systemSound)) {
|
|
74
|
+
(0, child_process_1.spawn)('afplay', [systemSound], { stdio: 'ignore' });
|
|
75
|
+
}
|
|
76
|
+
else if (bundledSound) {
|
|
77
|
+
(0, child_process_1.spawn)('afplay', [bundledSound], { stdio: 'ignore' });
|
|
78
|
+
}
|
|
58
79
|
}
|
|
59
|
-
else if (caps.platform === 'linux'
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
80
|
+
else if (caps.platform === 'linux') {
|
|
81
|
+
// Linux: Use bundled WAV files (works with all audio players)
|
|
82
|
+
if (bundledSound && caps.audioPlayer) {
|
|
83
|
+
(0, child_process_1.spawn)(caps.audioPlayer, [bundledSound], { stdio: 'ignore' });
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// Fallback: terminal bell
|
|
87
|
+
process.stdout.write('\x07');
|
|
67
88
|
}
|
|
68
89
|
}
|
|
69
90
|
}
|
package/dist/utils/audio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/utils/audio.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/utils/audio.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-voice",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.11",
|
|
4
4
|
"description": "Voice interface extension for Claude Code - TTS, STT, and wake word detection",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"optionalDependencies": {
|
|
55
55
|
"@picovoice/porcupine-node": "^3.0.6",
|
|
56
56
|
"@picovoice/pvrecorder-node": "^1.2.8",
|
|
57
|
-
"sherpa-onnx-darwin-arm64": "^1.12.
|
|
57
|
+
"sherpa-onnx-darwin-arm64": "^1.12.21",
|
|
58
58
|
"sherpa-onnx-darwin-x64": "^1.12.20",
|
|
59
59
|
"sherpa-onnx-linux-arm64": "^1.12.20",
|
|
60
60
|
"sherpa-onnx-linux-x64": "^1.12.20"
|
|
@@ -88,6 +88,7 @@
|
|
|
88
88
|
"plugin/**/*",
|
|
89
89
|
"models/.gitkeep",
|
|
90
90
|
"python/**/*",
|
|
91
|
+
"sounds/**/*",
|
|
91
92
|
"README.md",
|
|
92
93
|
"LICENSE"
|
|
93
94
|
]
|
package/sounds/ping.wav
ADDED
|
Binary file
|
package/sounds/pop.wav
ADDED
|
Binary file
|