compact-agent 1.5.0 → 1.6.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.
- package/dist/accessibility.d.ts +50 -0
- package/dist/accessibility.js +0 -0
- package/dist/accessibility.js.map +1 -0
- package/dist/audio.d.ts +50 -0
- package/dist/audio.js +382 -0
- package/dist/audio.js.map +1 -0
- package/dist/config.js +48 -1
- package/dist/config.js.map +1 -1
- package/dist/index.js +410 -5
- package/dist/index.js.map +1 -1
- package/dist/query.js +87 -2
- package/dist/query.js.map +1 -1
- package/dist/theme.d.ts +3 -0
- package/dist/theme.js +51 -29
- package/dist/theme.js.map +1 -1
- package/dist/types.d.ts +34 -0
- package/dist/types.js.map +1 -1
- package/dist/voice.d.ts +79 -0
- package/dist/voice.js +344 -0
- package/dist/voice.js.map +1 -0
- package/package.json +10 -3
package/dist/theme.js
CHANGED
|
@@ -124,35 +124,57 @@ export function printBanner(provider, model, mode, permissionMode, sessionId, to
|
|
|
124
124
|
console.log(d(' Type ') + theme.command('/help') + d(' for commands ') + d('•') + d(' Ctrl+C to exit'));
|
|
125
125
|
console.log('');
|
|
126
126
|
}
|
|
127
|
-
// ──
|
|
128
|
-
//
|
|
129
|
-
//
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
127
|
+
// ── Duration formatter ─────────────────────────────────
|
|
128
|
+
// Human-readable elapsed time for session + chain timers.
|
|
129
|
+
// Examples: 5s · 1m 23s · 2h 5m · 1d 4h
|
|
130
|
+
export function formatDuration(ms) {
|
|
131
|
+
const totalSec = Math.max(0, Math.floor(ms / 1000));
|
|
132
|
+
const d = Math.floor(totalSec / 86400);
|
|
133
|
+
const h = Math.floor((totalSec % 86400) / 3600);
|
|
134
|
+
const m = Math.floor((totalSec % 3600) / 60);
|
|
135
|
+
const s = totalSec % 60;
|
|
136
|
+
if (d > 0)
|
|
137
|
+
return `${d}d ${h}h`;
|
|
138
|
+
if (h > 0)
|
|
139
|
+
return `${h}h ${m}m`;
|
|
140
|
+
if (m > 0)
|
|
141
|
+
return `${m}m ${s}s`;
|
|
142
|
+
return `${s}s`;
|
|
143
|
+
}
|
|
144
|
+
// printSplash kept as a no-op for API compatibility — ASCII art was removed
|
|
145
|
+
// per user request. Existing callers don't need to be updated, but ideally
|
|
146
|
+
// would be (see src/index.ts for the canonical call site).
|
|
147
|
+
export function printSplash() { }
|
|
148
|
+
const _streamState = new WeakMap();
|
|
149
|
+
export function installScreenReaderDispatch(transform) {
|
|
150
|
+
for (const stream of [process.stdout, process.stderr]) {
|
|
151
|
+
if (_streamState.has(stream))
|
|
152
|
+
continue;
|
|
153
|
+
const original = stream.write.bind(stream);
|
|
154
|
+
_streamState.set(stream, { original, transform });
|
|
155
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
156
|
+
stream.write = function patchedWrite(chunk, encodingOrCb, cb) {
|
|
157
|
+
try {
|
|
158
|
+
if (typeof chunk === 'string')
|
|
159
|
+
chunk = transform(chunk);
|
|
160
|
+
else if (Buffer.isBuffer(chunk))
|
|
161
|
+
chunk = transform(chunk.toString('utf-8'));
|
|
162
|
+
}
|
|
163
|
+
catch { /* fall through to original */ }
|
|
164
|
+
// eslint-disable-next-line prefer-rest-params
|
|
165
|
+
return original(chunk, encodingOrCb, cb);
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
export function uninstallScreenReaderDispatch() {
|
|
170
|
+
for (const stream of [process.stdout, process.stderr]) {
|
|
171
|
+
const state = _streamState.get(stream);
|
|
172
|
+
if (!state)
|
|
173
|
+
continue;
|
|
174
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
175
|
+
stream.write = state.original;
|
|
176
|
+
_streamState.delete(stream);
|
|
177
|
+
}
|
|
156
178
|
}
|
|
157
179
|
// ── Section Header ──────────────────────────────────────
|
|
158
180
|
export function printSection(title) {
|
package/dist/theme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -18,6 +18,40 @@ export interface CrowcoderConfig {
|
|
|
18
18
|
dryRun?: boolean;
|
|
19
19
|
theme?: 'full' | 'compact' | 'minimal';
|
|
20
20
|
showThinking?: boolean;
|
|
21
|
+
voice?: VoiceConfig;
|
|
22
|
+
}
|
|
23
|
+
export interface VoiceConfig {
|
|
24
|
+
enabled?: boolean;
|
|
25
|
+
stt?: VoiceSttConfig;
|
|
26
|
+
tts?: VoiceTtsConfig;
|
|
27
|
+
accessibility?: VoiceAccessibilityConfig;
|
|
28
|
+
}
|
|
29
|
+
export interface VoiceSttConfig {
|
|
30
|
+
apiKey?: string;
|
|
31
|
+
baseURL?: string;
|
|
32
|
+
model?: string;
|
|
33
|
+
dictationKey?: string;
|
|
34
|
+
autoSubmit?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface VoiceTtsConfig {
|
|
37
|
+
apiKey?: string;
|
|
38
|
+
baseURL?: string;
|
|
39
|
+
model?: string;
|
|
40
|
+
assistantVoiceId?: string;
|
|
41
|
+
userVoiceId?: string;
|
|
42
|
+
echoUser?: boolean;
|
|
43
|
+
skipCode?: boolean;
|
|
44
|
+
speed?: number;
|
|
45
|
+
stability?: number;
|
|
46
|
+
similarityBoost?: number;
|
|
47
|
+
}
|
|
48
|
+
export interface VoiceAccessibilityConfig {
|
|
49
|
+
screenReader?: boolean;
|
|
50
|
+
audioCues?: boolean;
|
|
51
|
+
announceErrors?: boolean;
|
|
52
|
+
announceModeSwitches?: boolean;
|
|
53
|
+
askBeforeDestructive?: boolean;
|
|
54
|
+
longResponseThreshold?: number;
|
|
21
55
|
}
|
|
22
56
|
export interface ProviderPreset {
|
|
23
57
|
name: string;
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAgFA,MAAM,CAAC,MAAM,SAAS,GAAmC;IACvD,SAAS,EAAE;QACT,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,+BAA+B;QACxC,YAAY,EAAE,0BAA0B;QACxC,WAAW,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,2BAA2B;QACpC,YAAY,EAAE,QAAQ;QACtB,WAAW,EAAE,IAAI;KAClB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,8BAA8B;QACvC,YAAY,EAAE,2BAA2B;QACzC,WAAW,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,0DAA0D;QACnE,YAAY,EAAE,kBAAkB;QAChC,WAAW,EAAE,IAAI;KAClB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,6BAA6B;QACtC,YAAY,EAAE,eAAe;QAC7B,WAAW,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,2BAA2B;QACpC,YAAY,EAAE,sBAAsB;QACpC,WAAW,EAAE,KAAK;KACnB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,0BAA0B;QACnC,YAAY,EAAE,cAAc;QAC5B,WAAW,EAAE,KAAK;KACnB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,sCAAsC;QAC/C,YAAY,EAAE,YAAY;QAC1B,WAAW,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,IAAI;KAClB;CACF,CAAC"}
|
package/dist/voice.d.ts
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { CrowcoderConfig, VoiceConfig, VoiceSttConfig, VoiceTtsConfig, VoiceAccessibilityConfig } from './types.js';
|
|
2
|
+
export declare const DEFAULT_ASSISTANT_VOICE = "21m00Tcm4TlvDq8ikWAM";
|
|
3
|
+
export declare const DEFAULT_USER_VOICE = "AZnzlk1XvdvUeBnXmlld";
|
|
4
|
+
export declare function getVoiceConfig(config: CrowcoderConfig): VoiceConfig;
|
|
5
|
+
export declare function isVoiceEnabled(config: CrowcoderConfig): boolean;
|
|
6
|
+
export declare function getSttKey(config: CrowcoderConfig): string;
|
|
7
|
+
export declare function getTtsKey(config: CrowcoderConfig): string;
|
|
8
|
+
export declare function getSttConfig(config: CrowcoderConfig): Required<Omit<VoiceSttConfig, 'apiKey'>> & {
|
|
9
|
+
apiKey: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function getTtsConfig(config: CrowcoderConfig): Required<Omit<VoiceTtsConfig, 'apiKey'>> & {
|
|
12
|
+
apiKey: string;
|
|
13
|
+
};
|
|
14
|
+
export declare function getAccessibilityConfig(config: CrowcoderConfig): Required<VoiceAccessibilityConfig>;
|
|
15
|
+
/**
|
|
16
|
+
* Remove fenced + inline code blocks from text before TTS. Code read aloud is
|
|
17
|
+
* a wall of symbols ("backtick t s c semicolon") that's both useless to a
|
|
18
|
+
* blind user and very long. We replace fenced blocks with a brief audible
|
|
19
|
+
* announcement so the listener knows code WAS produced, just not read.
|
|
20
|
+
*/
|
|
21
|
+
export declare function stripCodeForTts(text: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Split text into sentence-ish chunks so we can stream TTS — play paragraph
|
|
24
|
+
* 1 while paragraph 2 is being synthesized. Also lets the user skip/replay
|
|
25
|
+
* at a meaningful granularity (Alt+D = skip, Alt+A = replay).
|
|
26
|
+
*
|
|
27
|
+
* Splits on paragraph boundaries first; chunks larger than ~400 chars are
|
|
28
|
+
* further split on sentence boundaries.
|
|
29
|
+
*/
|
|
30
|
+
export declare function chunkForTts(text: string, maxChunkChars?: number): string[];
|
|
31
|
+
/**
|
|
32
|
+
* Synthesize text to speech via ElevenLabs and return the audio bytes.
|
|
33
|
+
* Returns null when not configured or on error — callers fall back silently
|
|
34
|
+
* to text-only output rather than crashing the REPL.
|
|
35
|
+
*/
|
|
36
|
+
export interface TtsRequestOptions {
|
|
37
|
+
voiceId: string;
|
|
38
|
+
model?: string;
|
|
39
|
+
speed?: number;
|
|
40
|
+
stability?: number;
|
|
41
|
+
similarityBoost?: number;
|
|
42
|
+
}
|
|
43
|
+
export declare function synthesizeSpeech(text: string, cfg: CrowcoderConfig, opts: TtsRequestOptions): Promise<Buffer | null>;
|
|
44
|
+
/**
|
|
45
|
+
* Convenience: synthesize + play. Returns true if played successfully.
|
|
46
|
+
* Use this for short utterances (mode announcements, beeps, errors).
|
|
47
|
+
*/
|
|
48
|
+
export declare function speak(text: string, cfg: CrowcoderConfig, opts: TtsRequestOptions & {
|
|
49
|
+
signal?: AbortSignal;
|
|
50
|
+
}): Promise<boolean>;
|
|
51
|
+
/**
|
|
52
|
+
* Speak the assistant's response, chunked, with code stripped if configured.
|
|
53
|
+
* Returns the number of chunks played. Honors the cancel signal so Ctrl+C
|
|
54
|
+
* during playback halts cleanly.
|
|
55
|
+
*/
|
|
56
|
+
export declare function speakAssistantResponse(text: string, cfg: CrowcoderConfig, signal?: AbortSignal): Promise<number>;
|
|
57
|
+
/**
|
|
58
|
+
* Speak the user's input back in the user-echo voice. Skipped for slash
|
|
59
|
+
* commands (`/foo …`) since those aren't worth re-reading.
|
|
60
|
+
*/
|
|
61
|
+
export declare function speakUserEcho(text: string, cfg: CrowcoderConfig, signal?: AbortSignal): Promise<boolean>;
|
|
62
|
+
/**
|
|
63
|
+
* Send recorded audio to Whisper and return the transcript. Returns null on
|
|
64
|
+
* failure; caller logs + degrades.
|
|
65
|
+
*/
|
|
66
|
+
export declare function transcribeAudio(audio: Buffer, cfg: CrowcoderConfig, format?: 'wav' | 'mp3' | 'webm'): Promise<string | null>;
|
|
67
|
+
/**
|
|
68
|
+
* Record from the mic, send to Whisper, return the transcript. Plays audio
|
|
69
|
+
* cues at each state change so blind users can follow what's happening.
|
|
70
|
+
*
|
|
71
|
+
* Caller is responsible for starting/stopping the recording via the
|
|
72
|
+
* `recordController` — but for the simple "one-shot" case (e.g. `/dictate`
|
|
73
|
+
* slash command), `dictateOnce(maxSeconds)` is the easy entry point.
|
|
74
|
+
*/
|
|
75
|
+
export declare function dictateOnce(cfg: CrowcoderConfig, maxSeconds?: number): Promise<string | null>;
|
|
76
|
+
/**
|
|
77
|
+
* Pretty-print voice config status for /voice (no args).
|
|
78
|
+
*/
|
|
79
|
+
export declare function printVoiceStatus(cfg: CrowcoderConfig): void;
|
package/dist/voice.js
ADDED
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { isFfmpegAvailable, playAudioBuffer, recordAudio, audioCue } from './audio.js';
|
|
3
|
+
// ── Default voice ids (ElevenLabs preset voices, available with any key) ──
|
|
4
|
+
export const DEFAULT_ASSISTANT_VOICE = '21m00Tcm4TlvDq8ikWAM'; // Rachel
|
|
5
|
+
export const DEFAULT_USER_VOICE = 'AZnzlk1XvdvUeBnXmlld'; // Domi
|
|
6
|
+
// ── Config resolution ─────────────────────────────────────
|
|
7
|
+
// Voice config can be sparse — most users won't set it at all. These helpers
|
|
8
|
+
// resolve undefined → sensible default, and surface "voice usable?" checks
|
|
9
|
+
// so call sites stay clean.
|
|
10
|
+
export function getVoiceConfig(config) {
|
|
11
|
+
return config.voice || {};
|
|
12
|
+
}
|
|
13
|
+
export function isVoiceEnabled(config) {
|
|
14
|
+
return Boolean(config.voice?.enabled);
|
|
15
|
+
}
|
|
16
|
+
export function getSttKey(config) {
|
|
17
|
+
// Whisper STT — falls back to the main OpenAI-compatible key. Most users
|
|
18
|
+
// configure OpenRouter as their main provider, in which case Whisper isn't
|
|
19
|
+
// reachable through OpenRouter's free tier; they'll want a separate OpenAI
|
|
20
|
+
// key in voice.stt.apiKey.
|
|
21
|
+
return config.voice?.stt?.apiKey || config.apiKey || '';
|
|
22
|
+
}
|
|
23
|
+
export function getTtsKey(config) {
|
|
24
|
+
// ElevenLabs key — no fallback; this is a separate provider.
|
|
25
|
+
return config.voice?.tts?.apiKey || '';
|
|
26
|
+
}
|
|
27
|
+
export function getSttConfig(config) {
|
|
28
|
+
const stt = config.voice?.stt || {};
|
|
29
|
+
return {
|
|
30
|
+
apiKey: getSttKey(config),
|
|
31
|
+
baseURL: stt.baseURL || 'https://api.openai.com/v1',
|
|
32
|
+
model: stt.model || 'whisper-1',
|
|
33
|
+
dictationKey: stt.dictationKey || 'F1',
|
|
34
|
+
autoSubmit: Boolean(stt.autoSubmit),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function getTtsConfig(config) {
|
|
38
|
+
const tts = config.voice?.tts || {};
|
|
39
|
+
return {
|
|
40
|
+
apiKey: getTtsKey(config),
|
|
41
|
+
baseURL: tts.baseURL || 'https://api.elevenlabs.io/v1',
|
|
42
|
+
model: tts.model || 'eleven_turbo_v2_5',
|
|
43
|
+
assistantVoiceId: tts.assistantVoiceId || DEFAULT_ASSISTANT_VOICE,
|
|
44
|
+
userVoiceId: tts.userVoiceId || DEFAULT_USER_VOICE,
|
|
45
|
+
echoUser: tts.echoUser ?? true,
|
|
46
|
+
skipCode: tts.skipCode ?? true,
|
|
47
|
+
speed: tts.speed ?? 1.0,
|
|
48
|
+
stability: tts.stability ?? 0.5,
|
|
49
|
+
similarityBoost: tts.similarityBoost ?? 0.75,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export function getAccessibilityConfig(config) {
|
|
53
|
+
const a = config.voice?.accessibility || {};
|
|
54
|
+
return {
|
|
55
|
+
screenReader: Boolean(a.screenReader),
|
|
56
|
+
audioCues: a.audioCues ?? true,
|
|
57
|
+
announceErrors: a.announceErrors ?? true,
|
|
58
|
+
announceModeSwitches: a.announceModeSwitches ?? true,
|
|
59
|
+
askBeforeDestructive: a.askBeforeDestructive ?? true,
|
|
60
|
+
longResponseThreshold: a.longResponseThreshold ?? 300,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
// ── Code stripping for TTS ────────────────────────────────
|
|
64
|
+
/**
|
|
65
|
+
* Remove fenced + inline code blocks from text before TTS. Code read aloud is
|
|
66
|
+
* a wall of symbols ("backtick t s c semicolon") that's both useless to a
|
|
67
|
+
* blind user and very long. We replace fenced blocks with a brief audible
|
|
68
|
+
* announcement so the listener knows code WAS produced, just not read.
|
|
69
|
+
*/
|
|
70
|
+
export function stripCodeForTts(text) {
|
|
71
|
+
let out = text;
|
|
72
|
+
// Fenced blocks: ```lang\n...\n``` or ~~~lang\n...\n~~~
|
|
73
|
+
out = out.replace(/```[\s\S]*?```/g, (match) => {
|
|
74
|
+
const lines = match.split('\n').length - 2; // minus the fence lines
|
|
75
|
+
if (lines <= 1)
|
|
76
|
+
return '[code]';
|
|
77
|
+
return `[code block, ${lines} lines]`;
|
|
78
|
+
});
|
|
79
|
+
out = out.replace(/~~~[\s\S]*?~~~/g, (match) => {
|
|
80
|
+
const lines = match.split('\n').length - 2;
|
|
81
|
+
if (lines <= 1)
|
|
82
|
+
return '[code]';
|
|
83
|
+
return `[code block, ${lines} lines]`;
|
|
84
|
+
});
|
|
85
|
+
// Inline code: `foo` → "foo" (without the backticks, read naturally)
|
|
86
|
+
out = out.replace(/`([^`\n]+)`/g, '$1');
|
|
87
|
+
// Markdown links: [text](url) → just the text
|
|
88
|
+
out = out.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1');
|
|
89
|
+
// Headings ###, **bold**, *italic*, etc. — drop the markup, keep the words
|
|
90
|
+
out = out.replace(/^#+\s+/gm, '');
|
|
91
|
+
out = out.replace(/\*\*([^*]+)\*\*/g, '$1');
|
|
92
|
+
out = out.replace(/(?<!\*)\*([^*\n]+)\*(?!\*)/g, '$1');
|
|
93
|
+
// Bullet markers — let the natural pause between lines handle pacing
|
|
94
|
+
out = out.replace(/^\s*[-*+]\s+/gm, '');
|
|
95
|
+
// Trim consecutive blank lines down to one
|
|
96
|
+
out = out.replace(/\n{3,}/g, '\n\n').trim();
|
|
97
|
+
return out;
|
|
98
|
+
}
|
|
99
|
+
// ── Long-text segmentation for chunked playback ──────────
|
|
100
|
+
/**
|
|
101
|
+
* Split text into sentence-ish chunks so we can stream TTS — play paragraph
|
|
102
|
+
* 1 while paragraph 2 is being synthesized. Also lets the user skip/replay
|
|
103
|
+
* at a meaningful granularity (Alt+D = skip, Alt+A = replay).
|
|
104
|
+
*
|
|
105
|
+
* Splits on paragraph boundaries first; chunks larger than ~400 chars are
|
|
106
|
+
* further split on sentence boundaries.
|
|
107
|
+
*/
|
|
108
|
+
export function chunkForTts(text, maxChunkChars = 400) {
|
|
109
|
+
const paragraphs = text.split(/\n\s*\n/).map((p) => p.trim()).filter(Boolean);
|
|
110
|
+
const chunks = [];
|
|
111
|
+
for (const para of paragraphs) {
|
|
112
|
+
if (para.length <= maxChunkChars) {
|
|
113
|
+
chunks.push(para);
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
// Sentence split: . ! ? followed by whitespace/end
|
|
117
|
+
const sentences = para.split(/(?<=[.!?])\s+/);
|
|
118
|
+
let buf = '';
|
|
119
|
+
for (const s of sentences) {
|
|
120
|
+
if ((buf + ' ' + s).length > maxChunkChars && buf) {
|
|
121
|
+
chunks.push(buf.trim());
|
|
122
|
+
buf = s;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
buf = buf ? `${buf} ${s}` : s;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (buf.trim())
|
|
129
|
+
chunks.push(buf.trim());
|
|
130
|
+
}
|
|
131
|
+
return chunks.filter((c) => c.length > 0);
|
|
132
|
+
}
|
|
133
|
+
export async function synthesizeSpeech(text, cfg, opts) {
|
|
134
|
+
const tts = getTtsConfig(cfg);
|
|
135
|
+
if (!tts.apiKey)
|
|
136
|
+
return null;
|
|
137
|
+
if (!text.trim())
|
|
138
|
+
return null;
|
|
139
|
+
const voiceId = opts.voiceId;
|
|
140
|
+
const url = `${tts.baseURL.replace(/\/+$/, '')}/text-to-speech/${encodeURIComponent(voiceId)}`;
|
|
141
|
+
const body = {
|
|
142
|
+
text,
|
|
143
|
+
model_id: opts.model || tts.model,
|
|
144
|
+
voice_settings: {
|
|
145
|
+
stability: opts.stability ?? tts.stability,
|
|
146
|
+
similarity_boost: opts.similarityBoost ?? tts.similarityBoost,
|
|
147
|
+
speed: opts.speed ?? tts.speed,
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
try {
|
|
151
|
+
const resp = await fetch(url, {
|
|
152
|
+
method: 'POST',
|
|
153
|
+
headers: {
|
|
154
|
+
'xi-api-key': tts.apiKey,
|
|
155
|
+
'Content-Type': 'application/json',
|
|
156
|
+
'Accept': 'audio/mpeg',
|
|
157
|
+
},
|
|
158
|
+
body: JSON.stringify(body),
|
|
159
|
+
signal: AbortSignal.timeout(60_000),
|
|
160
|
+
});
|
|
161
|
+
if (!resp.ok) {
|
|
162
|
+
const errText = await resp.text();
|
|
163
|
+
console.log(chalk.dim(` [voice] TTS error ${resp.status}: ${errText.slice(0, 200)}`));
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
const arrayBuf = await resp.arrayBuffer();
|
|
167
|
+
return Buffer.from(arrayBuf);
|
|
168
|
+
}
|
|
169
|
+
catch (err) {
|
|
170
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
171
|
+
console.log(chalk.dim(` [voice] TTS request failed: ${msg}`));
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Convenience: synthesize + play. Returns true if played successfully.
|
|
177
|
+
* Use this for short utterances (mode announcements, beeps, errors).
|
|
178
|
+
*/
|
|
179
|
+
export async function speak(text, cfg, opts) {
|
|
180
|
+
const buf = await synthesizeSpeech(text, cfg, opts);
|
|
181
|
+
if (!buf)
|
|
182
|
+
return false;
|
|
183
|
+
return await playAudioBuffer(buf, opts.signal);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Speak the assistant's response, chunked, with code stripped if configured.
|
|
187
|
+
* Returns the number of chunks played. Honors the cancel signal so Ctrl+C
|
|
188
|
+
* during playback halts cleanly.
|
|
189
|
+
*/
|
|
190
|
+
export async function speakAssistantResponse(text, cfg, signal) {
|
|
191
|
+
const tts = getTtsConfig(cfg);
|
|
192
|
+
if (!tts.apiKey)
|
|
193
|
+
return 0;
|
|
194
|
+
let prepared = tts.skipCode ? stripCodeForTts(text) : text;
|
|
195
|
+
if (!prepared.trim())
|
|
196
|
+
return 0;
|
|
197
|
+
const chunks = chunkForTts(prepared);
|
|
198
|
+
let played = 0;
|
|
199
|
+
for (const chunk of chunks) {
|
|
200
|
+
if (signal?.aborted)
|
|
201
|
+
break;
|
|
202
|
+
const ok = await speak(chunk, cfg, {
|
|
203
|
+
voiceId: tts.assistantVoiceId,
|
|
204
|
+
signal,
|
|
205
|
+
});
|
|
206
|
+
if (ok)
|
|
207
|
+
played++;
|
|
208
|
+
}
|
|
209
|
+
return played;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Speak the user's input back in the user-echo voice. Skipped for slash
|
|
213
|
+
* commands (`/foo …`) since those aren't worth re-reading.
|
|
214
|
+
*/
|
|
215
|
+
export async function speakUserEcho(text, cfg, signal) {
|
|
216
|
+
const tts = getTtsConfig(cfg);
|
|
217
|
+
if (!tts.apiKey || !tts.echoUser)
|
|
218
|
+
return false;
|
|
219
|
+
if (text.trim().startsWith('/') || text.trim().startsWith('!'))
|
|
220
|
+
return false;
|
|
221
|
+
return await speak(text, cfg, { voiceId: tts.userVoiceId, signal });
|
|
222
|
+
}
|
|
223
|
+
// ── OpenAI Whisper STT client ─────────────────────────────
|
|
224
|
+
/**
|
|
225
|
+
* Send recorded audio to Whisper and return the transcript. Returns null on
|
|
226
|
+
* failure; caller logs + degrades.
|
|
227
|
+
*/
|
|
228
|
+
export async function transcribeAudio(audio, cfg, format = 'wav') {
|
|
229
|
+
const stt = getSttConfig(cfg);
|
|
230
|
+
if (!stt.apiKey)
|
|
231
|
+
return null;
|
|
232
|
+
if (audio.length === 0)
|
|
233
|
+
return null;
|
|
234
|
+
// OpenAI requires a multipart upload. fetch supports FormData on Node 18+.
|
|
235
|
+
// Convert Buffer → Uint8Array → Blob. Node 24 narrowed Blob's input type
|
|
236
|
+
// to require a non-shared ArrayBuffer, so passing a raw Buffer trips a
|
|
237
|
+
// type error; the .buffer slice keeps it explicit.
|
|
238
|
+
const u8 = new Uint8Array(audio.buffer.slice(audio.byteOffset, audio.byteOffset + audio.byteLength));
|
|
239
|
+
const form = new FormData();
|
|
240
|
+
form.append('file', new Blob([u8], { type: `audio/${format}` }), `recording.${format}`);
|
|
241
|
+
form.append('model', stt.model);
|
|
242
|
+
const url = `${stt.baseURL.replace(/\/+$/, '')}/audio/transcriptions`;
|
|
243
|
+
try {
|
|
244
|
+
const resp = await fetch(url, {
|
|
245
|
+
method: 'POST',
|
|
246
|
+
headers: {
|
|
247
|
+
'Authorization': `Bearer ${stt.apiKey}`,
|
|
248
|
+
},
|
|
249
|
+
body: form,
|
|
250
|
+
signal: AbortSignal.timeout(60_000),
|
|
251
|
+
});
|
|
252
|
+
if (!resp.ok) {
|
|
253
|
+
const errText = await resp.text();
|
|
254
|
+
console.log(chalk.dim(` [voice] Whisper error ${resp.status}: ${errText.slice(0, 200)}`));
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
const json = (await resp.json());
|
|
258
|
+
return (json.text || '').trim();
|
|
259
|
+
}
|
|
260
|
+
catch (err) {
|
|
261
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
262
|
+
console.log(chalk.dim(` [voice] Whisper request failed: ${msg}`));
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// ── Top-level dictation flow ─────────────────────────────
|
|
267
|
+
/**
|
|
268
|
+
* Record from the mic, send to Whisper, return the transcript. Plays audio
|
|
269
|
+
* cues at each state change so blind users can follow what's happening.
|
|
270
|
+
*
|
|
271
|
+
* Caller is responsible for starting/stopping the recording via the
|
|
272
|
+
* `recordController` — but for the simple "one-shot" case (e.g. `/dictate`
|
|
273
|
+
* slash command), `dictateOnce(maxSeconds)` is the easy entry point.
|
|
274
|
+
*/
|
|
275
|
+
export async function dictateOnce(cfg, maxSeconds = 30) {
|
|
276
|
+
const a = getAccessibilityConfig(cfg);
|
|
277
|
+
if (!(await isFfmpegAvailable())) {
|
|
278
|
+
console.log(chalk.yellow(' [voice] ffmpeg not found. Install ffmpeg to enable dictation: https://ffmpeg.org/'));
|
|
279
|
+
return null;
|
|
280
|
+
}
|
|
281
|
+
const stt = getSttConfig(cfg);
|
|
282
|
+
if (!stt.apiKey) {
|
|
283
|
+
console.log(chalk.yellow(' [voice] STT not configured. Set voice.stt.apiKey (OpenAI key) via /voice config.'));
|
|
284
|
+
return null;
|
|
285
|
+
}
|
|
286
|
+
if (a.audioCues)
|
|
287
|
+
await audioCue('recording-start');
|
|
288
|
+
console.log(chalk.dim(' [voice] Recording (max ' + maxSeconds + 's)…'));
|
|
289
|
+
const audio = await recordAudio(maxSeconds);
|
|
290
|
+
if (!audio || audio.length === 0) {
|
|
291
|
+
if (a.audioCues)
|
|
292
|
+
await audioCue('error');
|
|
293
|
+
console.log(chalk.dim(' [voice] No audio captured.'));
|
|
294
|
+
return null;
|
|
295
|
+
}
|
|
296
|
+
if (a.audioCues)
|
|
297
|
+
await audioCue('processing');
|
|
298
|
+
console.log(chalk.dim(' [voice] Transcribing…'));
|
|
299
|
+
const transcript = await transcribeAudio(audio, cfg, 'wav');
|
|
300
|
+
if (!transcript) {
|
|
301
|
+
if (a.audioCues)
|
|
302
|
+
await audioCue('error');
|
|
303
|
+
return null;
|
|
304
|
+
}
|
|
305
|
+
if (a.audioCues)
|
|
306
|
+
await audioCue('done');
|
|
307
|
+
return transcript;
|
|
308
|
+
}
|
|
309
|
+
// ── Status print ─────────────────────────────────────────
|
|
310
|
+
/**
|
|
311
|
+
* Pretty-print voice config status for /voice (no args).
|
|
312
|
+
*/
|
|
313
|
+
export function printVoiceStatus(cfg) {
|
|
314
|
+
const v = getVoiceConfig(cfg);
|
|
315
|
+
const stt = getSttConfig(cfg);
|
|
316
|
+
const tts = getTtsConfig(cfg);
|
|
317
|
+
const a = getAccessibilityConfig(cfg);
|
|
318
|
+
console.log(chalk.cyan('\n voice & accessibility'));
|
|
319
|
+
console.log(chalk.dim(` enabled: ${v.enabled ? '✓ yes' : '✗ no'}`));
|
|
320
|
+
console.log('');
|
|
321
|
+
console.log(chalk.dim(` STT (dictation): ${stt.apiKey ? `✓ key set · ${stt.model}` : '✗ no key'}`));
|
|
322
|
+
console.log(chalk.dim(` dictation key: ${stt.dictationKey}`));
|
|
323
|
+
console.log(chalk.dim(` auto-submit: ${stt.autoSubmit ? 'yes' : 'no'}`));
|
|
324
|
+
console.log('');
|
|
325
|
+
console.log(chalk.dim(` TTS (readout): ${tts.apiKey ? `✓ key set · ${tts.model}` : '✗ no key'}`));
|
|
326
|
+
console.log(chalk.dim(` assistant voice: ${tts.assistantVoiceId}`));
|
|
327
|
+
console.log(chalk.dim(` user voice: ${tts.userVoiceId}`));
|
|
328
|
+
console.log(chalk.dim(` echo user: ${tts.echoUser ? 'yes' : 'no'}`));
|
|
329
|
+
console.log(chalk.dim(` skip code: ${tts.skipCode ? 'yes' : 'no'}`));
|
|
330
|
+
console.log(chalk.dim(` speed: ${tts.speed}x`));
|
|
331
|
+
console.log('');
|
|
332
|
+
console.log(chalk.dim(` accessibility:`));
|
|
333
|
+
console.log(chalk.dim(` screen reader: ${a.screenReader ? 'yes' : 'no'}`));
|
|
334
|
+
console.log(chalk.dim(` audio cues: ${a.audioCues ? 'yes' : 'no'}`));
|
|
335
|
+
console.log(chalk.dim(` announce errors: ${a.announceErrors ? 'yes' : 'no'}`));
|
|
336
|
+
console.log(chalk.dim(` announce modes: ${a.announceModeSwitches ? 'yes' : 'no'}`));
|
|
337
|
+
console.log(chalk.dim(` ask destructive: ${a.askBeforeDestructive ? 'yes' : 'no'}`));
|
|
338
|
+
console.log(chalk.dim(` long-resp words: ${a.longResponseThreshold}`));
|
|
339
|
+
console.log('');
|
|
340
|
+
console.log(chalk.dim(' Hotkeys (when enabled):'));
|
|
341
|
+
console.log(chalk.dim(' F1 record · F2 pause · F3 replay · F4 skip · F5 speed+ · F6 speed–'));
|
|
342
|
+
console.log('');
|
|
343
|
+
}
|
|
344
|
+
//# sourceMappingURL=voice.js.map
|