@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 @@
|
|
|
1
|
+
{"version":3,"file":"narration-service.js","sourceRoot":"","sources":["../../src/services/narration-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* STT Providers Index
|
|
3
|
+
*
|
|
4
|
+
* Exports all STT provider implementations and factory functions.
|
|
5
|
+
*/
|
|
6
|
+
export { WhisperLocalProvider, createWhisperLocalProvider, WhisperServerError, type WhisperLocalConfig, } from "./whisper-local.js";
|
|
7
|
+
export { OpenAIWhisperProvider, createOpenAIWhisperProvider, OpenAIWhisperError, type OpenAIWhisperConfig, } from "./openai-whisper.js";
|
|
8
|
+
import { STTService } from "../stt-service.js";
|
|
9
|
+
/**
|
|
10
|
+
* Initialize the STT service with all available providers
|
|
11
|
+
*
|
|
12
|
+
* @param service - The STT service to initialize
|
|
13
|
+
*/
|
|
14
|
+
export declare function initializeSTTProviders(service: STTService): void;
|
|
15
|
+
/**
|
|
16
|
+
* Create a fully initialized STT service with all providers registered
|
|
17
|
+
*
|
|
18
|
+
* @returns Initialized STT service
|
|
19
|
+
*/
|
|
20
|
+
export declare function createInitializedSTTService(): STTService;
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/stt-providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EAClB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,kBAAkB,EAClB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAMhE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,UAAU,CAIxD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* STT Providers Index
|
|
3
|
+
*
|
|
4
|
+
* Exports all STT provider implementations and factory functions.
|
|
5
|
+
*/
|
|
6
|
+
export { WhisperLocalProvider, createWhisperLocalProvider, WhisperServerError, } from "./whisper-local.js";
|
|
7
|
+
export { OpenAIWhisperProvider, createOpenAIWhisperProvider, OpenAIWhisperError, } from "./openai-whisper.js";
|
|
8
|
+
import { WhisperLocalProvider } from "./whisper-local.js";
|
|
9
|
+
import { OpenAIWhisperProvider } from "./openai-whisper.js";
|
|
10
|
+
import { STTService } from "../stt-service.js";
|
|
11
|
+
/**
|
|
12
|
+
* Initialize the STT service with all available providers
|
|
13
|
+
*
|
|
14
|
+
* @param service - The STT service to initialize
|
|
15
|
+
*/
|
|
16
|
+
export function initializeSTTProviders(service) {
|
|
17
|
+
// Register Whisper local provider (preferred)
|
|
18
|
+
service.registerProvider(new WhisperLocalProvider());
|
|
19
|
+
// Register OpenAI Whisper provider (fallback)
|
|
20
|
+
service.registerProvider(new OpenAIWhisperProvider());
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Create a fully initialized STT service with all providers registered
|
|
24
|
+
*
|
|
25
|
+
* @returns Initialized STT service
|
|
26
|
+
*/
|
|
27
|
+
export function createInitializedSTTService() {
|
|
28
|
+
const service = new STTService();
|
|
29
|
+
initializeSTTProviders(service);
|
|
30
|
+
return service;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/stt-providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,GAEnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,kBAAkB,GAEnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAmB;IACxD,8CAA8C;IAC9C,OAAO,CAAC,gBAAgB,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;IAErD,8CAA8C;IAC9C,OAAO,CAAC,gBAAgB,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,OAAO,GAAG,IAAI,UAAU,EAAE,CAAC;IACjC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Whisper STT Provider
|
|
3
|
+
*
|
|
4
|
+
* Uses the OpenAI Whisper API as a fallback STT provider.
|
|
5
|
+
* Requires OPENAI_API_KEY environment variable.
|
|
6
|
+
*/
|
|
7
|
+
import type { STTProvider as STTProviderType, STTOptions, TranscriptionResult } from "@sudocode-ai/types/voice";
|
|
8
|
+
import type { STTProvider } from "../stt-service.js";
|
|
9
|
+
/**
|
|
10
|
+
* Configuration for the OpenAI Whisper provider
|
|
11
|
+
*/
|
|
12
|
+
export interface OpenAIWhisperConfig {
|
|
13
|
+
/** OpenAI API key (defaults to OPENAI_API_KEY env var) */
|
|
14
|
+
apiKey?: string;
|
|
15
|
+
/** Model to use for transcription (default: whisper-1) */
|
|
16
|
+
model: string;
|
|
17
|
+
/** Base URL for the OpenAI API (default: https://api.openai.com/v1) */
|
|
18
|
+
baseUrl: string;
|
|
19
|
+
/** Timeout in milliseconds for requests (default: 60000) */
|
|
20
|
+
timeout: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Error thrown when OpenAI API communication fails
|
|
24
|
+
*/
|
|
25
|
+
export declare class OpenAIWhisperError extends Error {
|
|
26
|
+
readonly statusCode?: number | undefined;
|
|
27
|
+
readonly cause?: Error | undefined;
|
|
28
|
+
constructor(message: string, statusCode?: number | undefined, cause?: Error | undefined);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* OpenAI Whisper STT Provider
|
|
32
|
+
*
|
|
33
|
+
* Fallback provider using OpenAI's Whisper API.
|
|
34
|
+
*/
|
|
35
|
+
export declare class OpenAIWhisperProvider implements STTProvider {
|
|
36
|
+
readonly name: STTProviderType;
|
|
37
|
+
private config;
|
|
38
|
+
constructor(config?: Partial<OpenAIWhisperConfig>);
|
|
39
|
+
/**
|
|
40
|
+
* Check if the OpenAI API is available (API key is configured)
|
|
41
|
+
*/
|
|
42
|
+
isAvailable(): Promise<boolean>;
|
|
43
|
+
/**
|
|
44
|
+
* Get the API key, throwing if not configured
|
|
45
|
+
*/
|
|
46
|
+
private getApiKey;
|
|
47
|
+
/**
|
|
48
|
+
* Transcribe audio using the OpenAI Whisper API
|
|
49
|
+
*
|
|
50
|
+
* @param audio - Audio buffer to transcribe
|
|
51
|
+
* @param options - Transcription options
|
|
52
|
+
* @returns Transcription result
|
|
53
|
+
*/
|
|
54
|
+
transcribe(audio: Buffer, options?: STTOptions): Promise<TranscriptionResult>;
|
|
55
|
+
/**
|
|
56
|
+
* Get the current configuration (without the API key for security)
|
|
57
|
+
*/
|
|
58
|
+
getConfig(): Omit<OpenAIWhisperConfig, "apiKey"> & {
|
|
59
|
+
hasApiKey: boolean;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Create a new OpenAI Whisper provider instance
|
|
64
|
+
*/
|
|
65
|
+
export declare function createOpenAIWhisperProvider(config?: Partial<OpenAIWhisperConfig>): OpenAIWhisperProvider;
|
|
66
|
+
//# sourceMappingURL=openai-whisper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-whisper.d.ts","sourceRoot":"","sources":["../../../src/services/stt-providers/openai-whisper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,IAAI,eAAe,EAC9B,UAAU,EACV,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aAGzB,UAAU,CAAC,EAAE,MAAM;aACnB,KAAK,CAAC,EAAE,KAAK;gBAF7B,OAAO,EAAE,MAAM,EACC,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAED;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,WAAW;IACvD,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAY;IAC1C,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IASjD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAMrC;;OAEG;IACH,OAAO,CAAC,SAAS;IAUjB;;;;;;OAMG;IACG,UAAU,CACd,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,mBAAmB,CAAC;IAuF/B;;OAEG;IACH,SAAS,IAAI,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,GAAG;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE;CAQ1E;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACpC,qBAAqB,CAEvB"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Whisper STT Provider
|
|
3
|
+
*
|
|
4
|
+
* Uses the OpenAI Whisper API as a fallback STT provider.
|
|
5
|
+
* Requires OPENAI_API_KEY environment variable.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Error thrown when OpenAI API communication fails
|
|
9
|
+
*/
|
|
10
|
+
export class OpenAIWhisperError extends Error {
|
|
11
|
+
statusCode;
|
|
12
|
+
cause;
|
|
13
|
+
constructor(message, statusCode, cause) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.statusCode = statusCode;
|
|
16
|
+
this.cause = cause;
|
|
17
|
+
this.name = "OpenAIWhisperError";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* OpenAI Whisper STT Provider
|
|
22
|
+
*
|
|
23
|
+
* Fallback provider using OpenAI's Whisper API.
|
|
24
|
+
*/
|
|
25
|
+
export class OpenAIWhisperProvider {
|
|
26
|
+
name = "openai";
|
|
27
|
+
config;
|
|
28
|
+
constructor(config) {
|
|
29
|
+
this.config = {
|
|
30
|
+
apiKey: config?.apiKey ?? process.env.OPENAI_API_KEY,
|
|
31
|
+
model: config?.model ?? "whisper-1",
|
|
32
|
+
baseUrl: config?.baseUrl ?? "https://api.openai.com/v1",
|
|
33
|
+
timeout: config?.timeout ?? 60000,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Check if the OpenAI API is available (API key is configured)
|
|
38
|
+
*/
|
|
39
|
+
async isAvailable() {
|
|
40
|
+
// OpenAI is "available" if we have an API key configured
|
|
41
|
+
const apiKey = this.config.apiKey ?? process.env.OPENAI_API_KEY;
|
|
42
|
+
return Boolean(apiKey && apiKey.length > 0);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get the API key, throwing if not configured
|
|
46
|
+
*/
|
|
47
|
+
getApiKey() {
|
|
48
|
+
const apiKey = this.config.apiKey ?? process.env.OPENAI_API_KEY;
|
|
49
|
+
if (!apiKey) {
|
|
50
|
+
throw new OpenAIWhisperError("OpenAI API key not configured. Set OPENAI_API_KEY environment variable.");
|
|
51
|
+
}
|
|
52
|
+
return apiKey;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Transcribe audio using the OpenAI Whisper API
|
|
56
|
+
*
|
|
57
|
+
* @param audio - Audio buffer to transcribe
|
|
58
|
+
* @param options - Transcription options
|
|
59
|
+
* @returns Transcription result
|
|
60
|
+
*/
|
|
61
|
+
async transcribe(audio, options) {
|
|
62
|
+
const startTime = Date.now();
|
|
63
|
+
const apiKey = this.getApiKey();
|
|
64
|
+
// Create form data with the audio file
|
|
65
|
+
const formData = new FormData();
|
|
66
|
+
// Create a Blob from the Buffer
|
|
67
|
+
const audioBlob = new Blob([audio], { type: "audio/webm" });
|
|
68
|
+
formData.set("file", audioBlob, "audio.webm");
|
|
69
|
+
formData.set("model", this.config.model);
|
|
70
|
+
if (options?.language) {
|
|
71
|
+
formData.set("language", options.language);
|
|
72
|
+
}
|
|
73
|
+
// Request verbose JSON to get more details if available
|
|
74
|
+
formData.set("response_format", "verbose_json");
|
|
75
|
+
// Set up request with timeout
|
|
76
|
+
const controller = new AbortController();
|
|
77
|
+
const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
|
|
78
|
+
try {
|
|
79
|
+
const response = await fetch(`${this.config.baseUrl}/audio/transcriptions`, {
|
|
80
|
+
method: "POST",
|
|
81
|
+
headers: {
|
|
82
|
+
Authorization: `Bearer ${apiKey}`,
|
|
83
|
+
},
|
|
84
|
+
// FormData is natively supported by fetch in Node.js 18+
|
|
85
|
+
body: formData,
|
|
86
|
+
signal: controller.signal,
|
|
87
|
+
});
|
|
88
|
+
if (!response.ok) {
|
|
89
|
+
const errorData = await response.json().catch(() => ({}));
|
|
90
|
+
const errorMessage = errorData?.error?.message ||
|
|
91
|
+
`HTTP ${response.status}`;
|
|
92
|
+
throw new OpenAIWhisperError(`OpenAI API error: ${errorMessage}`, response.status);
|
|
93
|
+
}
|
|
94
|
+
const data = (await response.json());
|
|
95
|
+
const duration_ms = Date.now() - startTime;
|
|
96
|
+
if (!data.text && data.text !== "") {
|
|
97
|
+
throw new OpenAIWhisperError("Invalid response from OpenAI API: missing text field");
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
text: data.text.trim(),
|
|
101
|
+
duration_ms,
|
|
102
|
+
// OpenAI doesn't provide word-level confidence in the standard API
|
|
103
|
+
// but the transcription quality is generally high
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
if (error instanceof OpenAIWhisperError) {
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
110
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
111
|
+
throw new OpenAIWhisperError(`Request timed out after ${this.config.timeout}ms`);
|
|
112
|
+
}
|
|
113
|
+
throw new OpenAIWhisperError(`Failed to communicate with OpenAI API: ${error instanceof Error ? error.message : String(error)}`, undefined, error instanceof Error ? error : undefined);
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
clearTimeout(timeoutId);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get the current configuration (without the API key for security)
|
|
121
|
+
*/
|
|
122
|
+
getConfig() {
|
|
123
|
+
return {
|
|
124
|
+
model: this.config.model,
|
|
125
|
+
baseUrl: this.config.baseUrl,
|
|
126
|
+
timeout: this.config.timeout,
|
|
127
|
+
hasApiKey: Boolean(this.config.apiKey ?? process.env.OPENAI_API_KEY),
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Create a new OpenAI Whisper provider instance
|
|
133
|
+
*/
|
|
134
|
+
export function createOpenAIWhisperProvider(config) {
|
|
135
|
+
return new OpenAIWhisperProvider(config);
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=openai-whisper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-whisper.js","sourceRoot":"","sources":["../../../src/services/stt-providers/openai-whisper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whisper Local STT Provider
|
|
3
|
+
*
|
|
4
|
+
* Connects to a local Whisper server (whisper.cpp or similar) that exposes
|
|
5
|
+
* an OpenAI-compatible API. Default endpoint: http://localhost:2022/v1
|
|
6
|
+
*/
|
|
7
|
+
import type { STTProvider as STTProviderType, STTOptions, TranscriptionResult } from "@sudocode-ai/types/voice";
|
|
8
|
+
import { type STTProvider } from "../stt-service.js";
|
|
9
|
+
/**
|
|
10
|
+
* Configuration for the Whisper local provider
|
|
11
|
+
*/
|
|
12
|
+
export interface WhisperLocalConfig {
|
|
13
|
+
/** Base URL for the Whisper server (default: http://localhost:2022/v1) */
|
|
14
|
+
baseUrl: string;
|
|
15
|
+
/** Model to use for transcription (default: base) */
|
|
16
|
+
model: string;
|
|
17
|
+
/** Timeout in milliseconds for requests (default: 30000) */
|
|
18
|
+
timeout: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Error thrown when Whisper server communication fails
|
|
22
|
+
*/
|
|
23
|
+
export declare class WhisperServerError extends Error {
|
|
24
|
+
readonly statusCode?: number | undefined;
|
|
25
|
+
readonly cause?: Error | undefined;
|
|
26
|
+
constructor(message: string, statusCode?: number | undefined, cause?: Error | undefined);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Whisper Local STT Provider
|
|
30
|
+
*
|
|
31
|
+
* Uses a local Whisper server with OpenAI-compatible API format.
|
|
32
|
+
*/
|
|
33
|
+
export declare class WhisperLocalProvider implements STTProvider {
|
|
34
|
+
readonly name: STTProviderType;
|
|
35
|
+
private config;
|
|
36
|
+
private lastHealthCheck;
|
|
37
|
+
private readonly HEALTH_CHECK_TTL_MS;
|
|
38
|
+
constructor(config?: Partial<WhisperLocalConfig>);
|
|
39
|
+
/**
|
|
40
|
+
* Check if the Whisper server is available by making a health check request
|
|
41
|
+
*/
|
|
42
|
+
isAvailable(): Promise<boolean>;
|
|
43
|
+
/**
|
|
44
|
+
* Transcribe audio using the local Whisper server
|
|
45
|
+
*
|
|
46
|
+
* @param audio - Audio buffer to transcribe
|
|
47
|
+
* @param options - Transcription options
|
|
48
|
+
* @returns Transcription result
|
|
49
|
+
*/
|
|
50
|
+
transcribe(audio: Buffer, options?: STTOptions): Promise<TranscriptionResult>;
|
|
51
|
+
/**
|
|
52
|
+
* Get the current configuration
|
|
53
|
+
*/
|
|
54
|
+
getConfig(): WhisperLocalConfig;
|
|
55
|
+
/**
|
|
56
|
+
* Clear the health check cache
|
|
57
|
+
*/
|
|
58
|
+
clearHealthCache(): void;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Create a new Whisper local provider instance
|
|
62
|
+
*/
|
|
63
|
+
export declare function createWhisperLocalProvider(config?: Partial<WhisperLocalConfig>): WhisperLocalProvider;
|
|
64
|
+
//# sourceMappingURL=whisper-local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whisper-local.d.ts","sourceRoot":"","sources":["../../../src/services/stt-providers/whisper-local.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,IAAI,eAAe,EAC9B,UAAU,EACV,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aAGzB,UAAU,CAAC,EAAE,MAAM;aACnB,KAAK,CAAC,EAAE,KAAK;gBAF7B,OAAO,EAAE,MAAM,EACC,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,WAAW;IACtD,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAmB;IACjD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,eAAe,CAAqD;IAC5E,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;gBAEjC,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAShD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAqDrC;;;;;;OAMG;IACG,UAAU,CACd,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,mBAAmB,CAAC;IAyE/B;;OAEG;IACH,SAAS,IAAI,kBAAkB;IAI/B;;OAEG;IACH,gBAAgB,IAAI,IAAI;CAGzB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACnC,oBAAoB,CAEtB"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whisper Local STT Provider
|
|
3
|
+
*
|
|
4
|
+
* Connects to a local Whisper server (whisper.cpp or similar) that exposes
|
|
5
|
+
* an OpenAI-compatible API. Default endpoint: http://localhost:2022/v1
|
|
6
|
+
*/
|
|
7
|
+
import { getSTTConfig } from "../stt-service.js";
|
|
8
|
+
/**
|
|
9
|
+
* Error thrown when Whisper server communication fails
|
|
10
|
+
*/
|
|
11
|
+
export class WhisperServerError extends Error {
|
|
12
|
+
statusCode;
|
|
13
|
+
cause;
|
|
14
|
+
constructor(message, statusCode, cause) {
|
|
15
|
+
super(message);
|
|
16
|
+
this.statusCode = statusCode;
|
|
17
|
+
this.cause = cause;
|
|
18
|
+
this.name = "WhisperServerError";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Whisper Local STT Provider
|
|
23
|
+
*
|
|
24
|
+
* Uses a local Whisper server with OpenAI-compatible API format.
|
|
25
|
+
*/
|
|
26
|
+
export class WhisperLocalProvider {
|
|
27
|
+
name = "whisper-local";
|
|
28
|
+
config;
|
|
29
|
+
lastHealthCheck = null;
|
|
30
|
+
HEALTH_CHECK_TTL_MS = 10000; // 10 seconds
|
|
31
|
+
constructor(config) {
|
|
32
|
+
const sttConfig = getSTTConfig();
|
|
33
|
+
this.config = {
|
|
34
|
+
baseUrl: config?.baseUrl ?? sttConfig.whisperUrl,
|
|
35
|
+
model: config?.model ?? sttConfig.whisperModel,
|
|
36
|
+
timeout: config?.timeout ?? 30000,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Check if the Whisper server is available by making a health check request
|
|
41
|
+
*/
|
|
42
|
+
async isAvailable() {
|
|
43
|
+
// Check cache first
|
|
44
|
+
if (this.lastHealthCheck &&
|
|
45
|
+
Date.now() - this.lastHealthCheck.time < this.HEALTH_CHECK_TTL_MS) {
|
|
46
|
+
return this.lastHealthCheck.available;
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
// Try to hit the models endpoint (OpenAI-compatible servers usually have this)
|
|
50
|
+
const controller = new AbortController();
|
|
51
|
+
const timeoutId = setTimeout(() => controller.abort(), 5000);
|
|
52
|
+
try {
|
|
53
|
+
const response = await fetch(`${this.config.baseUrl}/models`, {
|
|
54
|
+
method: "GET",
|
|
55
|
+
signal: controller.signal,
|
|
56
|
+
});
|
|
57
|
+
const available = response.ok;
|
|
58
|
+
this.lastHealthCheck = { time: Date.now(), available };
|
|
59
|
+
return available;
|
|
60
|
+
}
|
|
61
|
+
finally {
|
|
62
|
+
clearTimeout(timeoutId);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// If models endpoint doesn't exist, try a simple connection test
|
|
67
|
+
try {
|
|
68
|
+
const controller = new AbortController();
|
|
69
|
+
const timeoutId = setTimeout(() => controller.abort(), 5000);
|
|
70
|
+
try {
|
|
71
|
+
// Try the base URL - some servers respond with info at root
|
|
72
|
+
const response = await fetch(this.config.baseUrl, {
|
|
73
|
+
method: "GET",
|
|
74
|
+
signal: controller.signal,
|
|
75
|
+
});
|
|
76
|
+
// Consider available if we get any response (even 404 means server is running)
|
|
77
|
+
const available = response.status < 500;
|
|
78
|
+
this.lastHealthCheck = { time: Date.now(), available };
|
|
79
|
+
return available;
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
clearTimeout(timeoutId);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
this.lastHealthCheck = { time: Date.now(), available: false };
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Transcribe audio using the local Whisper server
|
|
93
|
+
*
|
|
94
|
+
* @param audio - Audio buffer to transcribe
|
|
95
|
+
* @param options - Transcription options
|
|
96
|
+
* @returns Transcription result
|
|
97
|
+
*/
|
|
98
|
+
async transcribe(audio, options) {
|
|
99
|
+
const startTime = Date.now();
|
|
100
|
+
// Create form data with the audio file
|
|
101
|
+
const formData = new FormData();
|
|
102
|
+
// Create a Blob from the Buffer
|
|
103
|
+
const audioBlob = new Blob([audio], { type: "audio/webm" });
|
|
104
|
+
formData.set("file", audioBlob, "audio.webm");
|
|
105
|
+
formData.set("model", this.config.model);
|
|
106
|
+
if (options?.language) {
|
|
107
|
+
formData.set("language", options.language);
|
|
108
|
+
}
|
|
109
|
+
// Set up request with timeout
|
|
110
|
+
const controller = new AbortController();
|
|
111
|
+
const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
|
|
112
|
+
try {
|
|
113
|
+
const response = await fetch(`${this.config.baseUrl}/audio/transcriptions`, {
|
|
114
|
+
method: "POST",
|
|
115
|
+
// FormData is natively supported by fetch in Node.js 18+
|
|
116
|
+
body: formData,
|
|
117
|
+
signal: controller.signal,
|
|
118
|
+
});
|
|
119
|
+
if (!response.ok) {
|
|
120
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
121
|
+
throw new WhisperServerError(`Whisper server error: ${errorText}`, response.status);
|
|
122
|
+
}
|
|
123
|
+
const data = (await response.json());
|
|
124
|
+
const duration_ms = Date.now() - startTime;
|
|
125
|
+
if (!data.text && data.text !== "") {
|
|
126
|
+
throw new WhisperServerError("Invalid response from Whisper server: missing text field");
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
text: data.text.trim(),
|
|
130
|
+
duration_ms,
|
|
131
|
+
// Local Whisper typically doesn't provide confidence scores
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
if (error instanceof WhisperServerError) {
|
|
136
|
+
throw error;
|
|
137
|
+
}
|
|
138
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
139
|
+
throw new WhisperServerError(`Request timed out after ${this.config.timeout}ms`);
|
|
140
|
+
}
|
|
141
|
+
throw new WhisperServerError(`Failed to communicate with Whisper server: ${error instanceof Error ? error.message : String(error)}`, undefined, error instanceof Error ? error : undefined);
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
clearTimeout(timeoutId);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get the current configuration
|
|
149
|
+
*/
|
|
150
|
+
getConfig() {
|
|
151
|
+
return { ...this.config };
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Clear the health check cache
|
|
155
|
+
*/
|
|
156
|
+
clearHealthCache() {
|
|
157
|
+
this.lastHealthCheck = null;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Create a new Whisper local provider instance
|
|
162
|
+
*/
|
|
163
|
+
export function createWhisperLocalProvider(config) {
|
|
164
|
+
return new WhisperLocalProvider(config);
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=whisper-local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whisper-local.js","sourceRoot":"","sources":["../../../src/services/stt-providers/whisper-local.ts"],"names":[],"mappings":"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"}
|