@sudocode-ai/local-server 0.1.16 → 0.1.18-dev.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/better-sqlite3-loader.d.ts +9 -0
- package/dist/better-sqlite3-loader.d.ts.map +1 -0
- package/dist/better-sqlite3-loader.js +24 -0
- package/dist/better-sqlite3-loader.js.map +1 -0
- package/dist/execution/executors/agent-executor-wrapper.d.ts +6 -0
- package/dist/execution/executors/agent-executor-wrapper.d.ts.map +1 -1
- package/dist/execution/executors/agent-executor-wrapper.js +75 -4
- package/dist/execution/executors/agent-executor-wrapper.js.map +1 -1
- package/dist/execution/executors/executor-factory.d.ts +9 -6
- package/dist/execution/executors/executor-factory.d.ts.map +1 -1
- package/dist/execution/executors/executor-factory.js +6 -5
- package/dist/execution/executors/executor-factory.js.map +1 -1
- package/dist/execution/worktree/config.js +1 -1
- package/dist/execution/worktree/config.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/public/assets/index-B1p5HV93.css +1 -0
- package/dist/public/assets/index-qqIsBBjJ.js +3836 -0
- package/dist/public/assets/index-qqIsBBjJ.js.map +1 -0
- package/dist/public/assets/ort-wasm-simd-threaded.jsep-B0T3yYHD.wasm +0 -0
- package/dist/public/index.html +2 -2
- package/dist/public/kokoro-test.html +197 -0
- package/dist/routes/config.d.ts.map +1 -1
- package/dist/routes/config.js +39 -0
- package/dist/routes/config.js.map +1 -1
- package/dist/routes/executions.d.ts.map +1 -1
- package/dist/routes/executions.js +9 -0
- package/dist/routes/executions.js.map +1 -1
- package/dist/routes/voice.d.ts +12 -0
- package/dist/routes/voice.d.ts.map +1 -0
- package/dist/routes/voice.js +387 -0
- package/dist/routes/voice.js.map +1 -0
- package/dist/routes/workflows.d.ts.map +1 -1
- package/dist/routes/workflows.js +2 -1
- package/dist/routes/workflows.js.map +1 -1
- package/dist/services/db.d.ts +1 -1
- package/dist/services/db.d.ts.map +1 -1
- package/dist/services/db.js +2 -2
- package/dist/services/db.js.map +1 -1
- package/dist/services/execution-service.d.ts +8 -0
- package/dist/services/execution-service.d.ts.map +1 -1
- package/dist/services/execution-service.js +27 -5
- package/dist/services/execution-service.js.map +1 -1
- package/dist/services/narration-service.d.ts +304 -0
- package/dist/services/narration-service.d.ts.map +1 -0
- package/dist/services/narration-service.js +729 -0
- package/dist/services/narration-service.js.map +1 -0
- package/dist/services/stt-providers/index.d.ts +21 -0
- package/dist/services/stt-providers/index.d.ts.map +1 -0
- package/dist/services/stt-providers/index.js +32 -0
- package/dist/services/stt-providers/index.js.map +1 -0
- package/dist/services/stt-providers/openai-whisper.d.ts +66 -0
- package/dist/services/stt-providers/openai-whisper.d.ts.map +1 -0
- package/dist/services/stt-providers/openai-whisper.js +137 -0
- package/dist/services/stt-providers/openai-whisper.js.map +1 -0
- package/dist/services/stt-providers/whisper-local.d.ts +64 -0
- package/dist/services/stt-providers/whisper-local.d.ts.map +1 -0
- package/dist/services/stt-providers/whisper-local.js +166 -0
- package/dist/services/stt-providers/whisper-local.js.map +1 -0
- package/dist/services/stt-service.d.ts +160 -0
- package/dist/services/stt-service.d.ts.map +1 -0
- package/dist/services/stt-service.js +246 -0
- package/dist/services/stt-service.js.map +1 -0
- package/dist/services/tts-providers/browser-tts.d.ts +64 -0
- package/dist/services/tts-providers/browser-tts.d.ts.map +1 -0
- package/dist/services/tts-providers/browser-tts.js +89 -0
- package/dist/services/tts-providers/browser-tts.js.map +1 -0
- package/dist/services/tts-providers/index.d.ts +20 -0
- package/dist/services/tts-providers/index.d.ts.map +1 -0
- package/dist/services/tts-providers/index.js +31 -0
- package/dist/services/tts-providers/index.js.map +1 -0
- package/dist/services/tts-service.d.ts +190 -0
- package/dist/services/tts-service.d.ts.map +1 -0
- package/dist/services/tts-service.js +296 -0
- package/dist/services/tts-service.js.map +1 -0
- package/dist/services/tts-sidecar-manager.d.ts +276 -0
- package/dist/services/tts-sidecar-manager.d.ts.map +1 -0
- package/dist/services/tts-sidecar-manager.js +665 -0
- package/dist/services/tts-sidecar-manager.js.map +1 -0
- package/dist/services/websocket.d.ts +31 -1
- package/dist/services/websocket.d.ts.map +1 -1
- package/dist/services/websocket.js +149 -0
- package/dist/services/websocket.js.map +1 -1
- package/dist/services/worktree-sync-service.d.ts +17 -2
- package/dist/services/worktree-sync-service.d.ts.map +1 -1
- package/dist/services/worktree-sync-service.js +103 -6
- package/dist/services/worktree-sync-service.js.map +1 -1
- package/dist/utils/voice-config.d.ts +26 -0
- package/dist/utils/voice-config.d.ts.map +1 -0
- package/dist/utils/voice-config.js +48 -0
- package/dist/utils/voice-config.js.map +1 -0
- package/dist/workers/execution-worker.js +12 -4
- package/dist/workers/execution-worker.js.map +1 -1
- package/dist/workflow/base-workflow-engine.d.ts +3 -1
- package/dist/workflow/base-workflow-engine.d.ts.map +1 -1
- package/dist/workflow/base-workflow-engine.js.map +1 -1
- package/dist/workflow/engines/orchestrator-engine.d.ts +5 -1
- package/dist/workflow/engines/orchestrator-engine.d.ts.map +1 -1
- package/dist/workflow/engines/orchestrator-engine.js +4 -1
- package/dist/workflow/engines/orchestrator-engine.js.map +1 -1
- package/dist/workflow/engines/sequential-engine.d.ts +9 -2
- package/dist/workflow/engines/sequential-engine.d.ts.map +1 -1
- package/dist/workflow/engines/sequential-engine.js +102 -22
- package/dist/workflow/engines/sequential-engine.js.map +1 -1
- package/dist/workflow/workflow-engine.d.ts +8 -1
- package/dist/workflow/workflow-engine.d.ts.map +1 -1
- package/package.json +13 -4
- package/dist/public/assets/index-D4AKx6EO.css +0 -1
- package/dist/public/assets/index-DorQqwGV.js +0 -927
- package/dist/public/assets/index-DorQqwGV.js.map +0 -1
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TTS Sidecar Manager Service
|
|
3
|
+
*
|
|
4
|
+
* Manages the lifecycle of the Python Kokoro TTS sidecar process.
|
|
5
|
+
* Handles installation, startup, health checks, and graceful shutdown.
|
|
6
|
+
*
|
|
7
|
+
* The sidecar communicates via JSON-lines protocol over stdin/stdout:
|
|
8
|
+
* - stdin: {"id": "req-123", "type": "generate", "text": "Hello", "voice": "af_heart", "speed": 1.0}
|
|
9
|
+
* - stdout: {"id": "req-123", "type": "audio", "chunk": "<base64>", "index": 0}
|
|
10
|
+
*
|
|
11
|
+
* Audio format: mono, 24kHz, float32 PCM (base64 encoded)
|
|
12
|
+
*/
|
|
13
|
+
import { EventEmitter } from "events";
|
|
14
|
+
/**
|
|
15
|
+
* Sidecar state machine states
|
|
16
|
+
*/
|
|
17
|
+
export type SidecarState = "idle" | "installing" | "starting" | "ready" | "error" | "shutdown";
|
|
18
|
+
/**
|
|
19
|
+
* Request to generate TTS audio
|
|
20
|
+
*/
|
|
21
|
+
export interface TTSGenerateRequest {
|
|
22
|
+
/** Unique request ID for correlating responses */
|
|
23
|
+
id: string;
|
|
24
|
+
/** Text to synthesize */
|
|
25
|
+
text: string;
|
|
26
|
+
/** Voice identifier (e.g., "af_heart", "af_sarah") */
|
|
27
|
+
voice?: string;
|
|
28
|
+
/** Speech speed multiplier (default: 1.0) */
|
|
29
|
+
speed?: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Base response from sidecar
|
|
33
|
+
*/
|
|
34
|
+
interface SidecarResponseBase {
|
|
35
|
+
id: string;
|
|
36
|
+
type: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Ready signal from sidecar
|
|
40
|
+
*/
|
|
41
|
+
export interface SidecarReadyResponse extends SidecarResponseBase {
|
|
42
|
+
type: "ready";
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Audio chunk response
|
|
46
|
+
*/
|
|
47
|
+
export interface SidecarAudioResponse extends SidecarResponseBase {
|
|
48
|
+
type: "audio";
|
|
49
|
+
/** Base64-encoded PCM audio (mono, 24kHz, float32) */
|
|
50
|
+
chunk: string;
|
|
51
|
+
/** Zero-based chunk index */
|
|
52
|
+
index: number;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Generation complete response
|
|
56
|
+
*/
|
|
57
|
+
export interface SidecarDoneResponse extends SidecarResponseBase {
|
|
58
|
+
type: "done";
|
|
59
|
+
/** Total number of chunks sent */
|
|
60
|
+
total_chunks: number;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Error response
|
|
64
|
+
*/
|
|
65
|
+
export interface SidecarErrorResponse extends SidecarResponseBase {
|
|
66
|
+
type: "error";
|
|
67
|
+
/** Error message */
|
|
68
|
+
error: string;
|
|
69
|
+
/** Whether the error is recoverable */
|
|
70
|
+
recoverable: boolean;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Pong response (health check)
|
|
74
|
+
*/
|
|
75
|
+
export interface SidecarPongResponse extends SidecarResponseBase {
|
|
76
|
+
type: "pong";
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Union of all sidecar response types
|
|
80
|
+
*/
|
|
81
|
+
export type SidecarResponse = SidecarReadyResponse | SidecarAudioResponse | SidecarDoneResponse | SidecarErrorResponse | SidecarPongResponse;
|
|
82
|
+
/**
|
|
83
|
+
* Events emitted by the sidecar manager
|
|
84
|
+
*/
|
|
85
|
+
export interface TTSSidecarManagerEvents {
|
|
86
|
+
state: (state: SidecarState) => void;
|
|
87
|
+
response: (response: SidecarResponse) => void;
|
|
88
|
+
audio: (response: SidecarAudioResponse) => void;
|
|
89
|
+
done: (response: SidecarDoneResponse) => void;
|
|
90
|
+
error: (response: SidecarErrorResponse) => void;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Installation status result
|
|
94
|
+
*/
|
|
95
|
+
export interface InstallationStatus {
|
|
96
|
+
installed: boolean;
|
|
97
|
+
venvPath?: string;
|
|
98
|
+
pythonPath?: string;
|
|
99
|
+
error?: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* ONNX runtime variant based on platform
|
|
103
|
+
*/
|
|
104
|
+
type OnnxRuntime = "onnxruntime" | "onnxruntime-silicon" | "onnxruntime-gpu" | "onnxruntime-directml";
|
|
105
|
+
/**
|
|
106
|
+
* Manages the Python Kokoro TTS sidecar process lifecycle.
|
|
107
|
+
*
|
|
108
|
+
* Features:
|
|
109
|
+
* - Lazy initialization (only installs/starts when first TTS request arrives)
|
|
110
|
+
* - Platform-specific ONNX runtime detection
|
|
111
|
+
* - Health monitoring with auto-restart on crash
|
|
112
|
+
* - Exponential backoff for restart attempts
|
|
113
|
+
* - Graceful shutdown with timeout
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* const manager = getTTSSidecarManager();
|
|
118
|
+
*
|
|
119
|
+
* manager.on('audio', (response) => {
|
|
120
|
+
* console.log('Received audio chunk:', response.index);
|
|
121
|
+
* });
|
|
122
|
+
*
|
|
123
|
+
* await manager.ensureReady();
|
|
124
|
+
* await manager.generate({
|
|
125
|
+
* id: 'req-1',
|
|
126
|
+
* text: 'Hello, world!',
|
|
127
|
+
* voice: 'af_heart',
|
|
128
|
+
* });
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
export declare class TTSSidecarManager extends EventEmitter {
|
|
132
|
+
private state;
|
|
133
|
+
private process;
|
|
134
|
+
private healthCheckTimer;
|
|
135
|
+
private restartDelay;
|
|
136
|
+
private restartTimer;
|
|
137
|
+
private lineBuffer;
|
|
138
|
+
private readyPromise;
|
|
139
|
+
private readyResolve;
|
|
140
|
+
private readyReject;
|
|
141
|
+
private shuttingDown;
|
|
142
|
+
private consecutiveHealthFailures;
|
|
143
|
+
private readonly maxHealthFailures;
|
|
144
|
+
constructor();
|
|
145
|
+
/**
|
|
146
|
+
* Get the current state of the sidecar manager.
|
|
147
|
+
*/
|
|
148
|
+
getState(): SidecarState;
|
|
149
|
+
/**
|
|
150
|
+
* Get the cross-platform TTS directory path.
|
|
151
|
+
*
|
|
152
|
+
* - Windows: %APPDATA%/sudocode/tts
|
|
153
|
+
* - macOS/Linux: ~/.config/sudocode/tts
|
|
154
|
+
*/
|
|
155
|
+
getTTSDirectory(): string;
|
|
156
|
+
/**
|
|
157
|
+
* Get the path to the Python virtual environment.
|
|
158
|
+
*/
|
|
159
|
+
getVenvPath(): string;
|
|
160
|
+
/**
|
|
161
|
+
* Get the path to the Python executable in the venv.
|
|
162
|
+
*/
|
|
163
|
+
getPythonPath(): string;
|
|
164
|
+
/**
|
|
165
|
+
* Get the path to the models directory.
|
|
166
|
+
*/
|
|
167
|
+
getModelsPath(): string;
|
|
168
|
+
/**
|
|
169
|
+
* Get the path to the sidecar Python script.
|
|
170
|
+
*/
|
|
171
|
+
getSidecarScriptPath(): string;
|
|
172
|
+
/**
|
|
173
|
+
* Check if the TTS environment is installed.
|
|
174
|
+
*/
|
|
175
|
+
isInstalled(): Promise<InstallationStatus>;
|
|
176
|
+
/**
|
|
177
|
+
* Detect the appropriate ONNX runtime for the current platform.
|
|
178
|
+
*
|
|
179
|
+
* Note: This is a synchronous method that does a quick filesystem check
|
|
180
|
+
* for NVIDIA drivers on Linux. For most platforms, no I/O is performed.
|
|
181
|
+
*/
|
|
182
|
+
detectOnnxRuntime(): OnnxRuntime;
|
|
183
|
+
/**
|
|
184
|
+
* Install the TTS environment (venv, kokoro-onnx, appropriate ONNX runtime, model files).
|
|
185
|
+
*
|
|
186
|
+
* @throws Error if installation fails
|
|
187
|
+
*/
|
|
188
|
+
install(): Promise<void>;
|
|
189
|
+
/**
|
|
190
|
+
* Start the sidecar process.
|
|
191
|
+
*
|
|
192
|
+
* @throws Error if start fails or ready signal not received
|
|
193
|
+
*/
|
|
194
|
+
start(): Promise<void>;
|
|
195
|
+
/**
|
|
196
|
+
* Ensure the sidecar is ready for TTS generation.
|
|
197
|
+
* Installs if necessary, then starts the sidecar.
|
|
198
|
+
*/
|
|
199
|
+
ensureReady(): Promise<void>;
|
|
200
|
+
/**
|
|
201
|
+
* Generate TTS audio from text.
|
|
202
|
+
*
|
|
203
|
+
* @param request - The TTS generation request
|
|
204
|
+
* @throws Error if sidecar is not ready
|
|
205
|
+
*/
|
|
206
|
+
generate(request: TTSGenerateRequest): Promise<void>;
|
|
207
|
+
/**
|
|
208
|
+
* Gracefully shutdown the sidecar process.
|
|
209
|
+
*
|
|
210
|
+
* Sends shutdown command, waits for graceful exit.
|
|
211
|
+
* If timeout expires, sends SIGKILL.
|
|
212
|
+
*/
|
|
213
|
+
shutdown(): Promise<void>;
|
|
214
|
+
/**
|
|
215
|
+
* Set the current state and emit state event.
|
|
216
|
+
*/
|
|
217
|
+
private setState;
|
|
218
|
+
/**
|
|
219
|
+
* Find the system Python interpreter.
|
|
220
|
+
*/
|
|
221
|
+
private findSystemPython;
|
|
222
|
+
/**
|
|
223
|
+
* Download a file from URL to disk.
|
|
224
|
+
*/
|
|
225
|
+
private downloadFile;
|
|
226
|
+
/**
|
|
227
|
+
* Handle stdout data from the sidecar process.
|
|
228
|
+
* Parses JSON-lines and emits appropriate events.
|
|
229
|
+
*/
|
|
230
|
+
private handleStdout;
|
|
231
|
+
/**
|
|
232
|
+
* Handle a parsed response from the sidecar.
|
|
233
|
+
*/
|
|
234
|
+
private handleResponse;
|
|
235
|
+
/**
|
|
236
|
+
* Handle sidecar process exit.
|
|
237
|
+
*/
|
|
238
|
+
private handleProcessExit;
|
|
239
|
+
/**
|
|
240
|
+
* Clean up resources.
|
|
241
|
+
*/
|
|
242
|
+
private cleanup;
|
|
243
|
+
/**
|
|
244
|
+
* Schedule a restart with exponential backoff.
|
|
245
|
+
*/
|
|
246
|
+
private scheduleRestart;
|
|
247
|
+
/**
|
|
248
|
+
* Start the health check timer.
|
|
249
|
+
*/
|
|
250
|
+
private startHealthChecks;
|
|
251
|
+
/**
|
|
252
|
+
* Stop the health check timer.
|
|
253
|
+
*/
|
|
254
|
+
private stopHealthChecks;
|
|
255
|
+
/**
|
|
256
|
+
* Perform a health check by sending a ping.
|
|
257
|
+
*/
|
|
258
|
+
private performHealthCheck;
|
|
259
|
+
/**
|
|
260
|
+
* Check if consecutive health failures exceed threshold.
|
|
261
|
+
*/
|
|
262
|
+
private checkHealthFailures;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Get or create the global TTS sidecar manager instance.
|
|
266
|
+
*
|
|
267
|
+
* @returns The TTS sidecar manager instance
|
|
268
|
+
*/
|
|
269
|
+
export declare function getTTSSidecarManager(): TTSSidecarManager;
|
|
270
|
+
/**
|
|
271
|
+
* Reset the global TTS sidecar manager instance (for testing).
|
|
272
|
+
* Shuts down any running sidecar before resetting.
|
|
273
|
+
*/
|
|
274
|
+
export declare function resetTTSSidecarManager(): Promise<void>;
|
|
275
|
+
export {};
|
|
276
|
+
//# sourceMappingURL=tts-sidecar-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tts-sidecar-manager.d.ts","sourceRoot":"","sources":["../../src/services/tts-sidecar-manager.ts"],"names":[],"mappings":"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"}
|