@juspay/neurolink 9.66.0 → 9.67.1
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/CHANGELOG.md +8 -0
- package/README.md +12 -12
- package/dist/avatar/index.d.ts +13 -0
- package/dist/avatar/index.js +72 -0
- package/dist/browser/neurolink.min.js +389 -383
- package/dist/core/baseProvider.js +49 -8
- package/dist/factories/providerRegistry.js +23 -0
- package/dist/index.d.ts +10 -1
- package/dist/index.js +36 -1
- package/dist/lib/avatar/index.d.ts +13 -0
- package/dist/lib/avatar/index.js +72 -0
- package/dist/lib/core/baseProvider.js +49 -8
- package/dist/lib/factories/providerRegistry.js +23 -0
- package/dist/lib/files/fileTools.d.ts +1 -1
- package/dist/lib/index.d.ts +10 -1
- package/dist/lib/index.js +36 -1
- package/dist/lib/music/index.d.ts +14 -0
- package/dist/lib/music/index.js +80 -0
- package/dist/lib/providers/openaiCompatible.d.ts +46 -19
- package/dist/lib/providers/openaiCompatible.js +1069 -171
- package/dist/lib/types/avatar.d.ts +8 -1
- package/dist/lib/types/index.d.ts +1 -0
- package/dist/lib/types/index.js +1 -0
- package/dist/lib/types/middleware.d.ts +1 -1
- package/dist/lib/types/multimodal.d.ts +20 -7
- package/dist/lib/types/music.d.ts +8 -1
- package/dist/lib/types/openaiCompatible.d.ts +250 -0
- package/dist/lib/types/openaiCompatible.js +2 -0
- package/dist/lib/types/tts.d.ts +9 -1
- package/dist/lib/utils/avatarProcessor.d.ts +7 -1
- package/dist/lib/utils/avatarProcessor.js +6 -0
- package/dist/lib/utils/musicProcessor.d.ts +7 -1
- package/dist/lib/utils/musicProcessor.js +6 -0
- package/dist/lib/utils/parameterValidation.js +5 -1
- package/dist/lib/utils/sttProcessor.d.ts +5 -3
- package/dist/lib/utils/sttProcessor.js +4 -2
- package/dist/lib/utils/ttsProcessor.d.ts +6 -3
- package/dist/lib/utils/ttsProcessor.js +5 -2
- package/dist/lib/voice/RealtimeVoiceAPI.d.ts +5 -2
- package/dist/lib/voice/RealtimeVoiceAPI.js +4 -1
- package/dist/lib/voice/index.d.ts +23 -0
- package/dist/lib/voice/index.js +124 -2
- package/dist/lib/voice/providers/CartesiaTTS.d.ts +31 -0
- package/dist/lib/voice/providers/CartesiaTTS.js +189 -0
- package/dist/lib/workflow/config.d.ts +3 -3
- package/dist/music/index.d.ts +14 -0
- package/dist/music/index.js +80 -0
- package/dist/providers/openaiCompatible.d.ts +46 -19
- package/dist/providers/openaiCompatible.js +1069 -171
- package/dist/types/avatar.d.ts +8 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/middleware.d.ts +1 -1
- package/dist/types/multimodal.d.ts +20 -7
- package/dist/types/music.d.ts +8 -1
- package/dist/types/openaiCompatible.d.ts +250 -0
- package/dist/types/openaiCompatible.js +1 -0
- package/dist/types/tts.d.ts +9 -1
- package/dist/utils/avatarProcessor.d.ts +7 -1
- package/dist/utils/avatarProcessor.js +6 -0
- package/dist/utils/musicProcessor.d.ts +7 -1
- package/dist/utils/musicProcessor.js +6 -0
- package/dist/utils/parameterValidation.js +5 -1
- package/dist/utils/sttProcessor.d.ts +5 -3
- package/dist/utils/sttProcessor.js +4 -2
- package/dist/utils/ttsProcessor.d.ts +6 -3
- package/dist/utils/ttsProcessor.js +5 -2
- package/dist/voice/RealtimeVoiceAPI.d.ts +5 -2
- package/dist/voice/RealtimeVoiceAPI.js +4 -1
- package/dist/voice/index.d.ts +23 -0
- package/dist/voice/index.js +124 -2
- package/dist/voice/providers/CartesiaTTS.d.ts +31 -0
- package/dist/voice/providers/CartesiaTTS.js +188 -0
- package/package.json +66 -2
|
@@ -20,6 +20,13 @@ export type AvatarVideoFormat = "mp4" | "webm" | "mov";
|
|
|
20
20
|
* - MuseTalk (Replicate): single quality only; "hd" is no-op
|
|
21
21
|
*/
|
|
22
22
|
export type AvatarQuality = "standard" | "hd";
|
|
23
|
+
/**
|
|
24
|
+
* Known avatar provider identifiers shipped with NeuroLink.
|
|
25
|
+
*
|
|
26
|
+
* `(string & {})` keeps the union open for custom provider names
|
|
27
|
+
* registered via `AvatarProcessor.registerHandler()`.
|
|
28
|
+
*/
|
|
29
|
+
export type AvatarProviderName = "d-id" | "heygen" | "replicate" | "musetalk" | (string & {});
|
|
23
30
|
/**
|
|
24
31
|
* Options for avatar video generation.
|
|
25
32
|
*/
|
|
@@ -42,7 +49,7 @@ export type AvatarOptions = {
|
|
|
42
49
|
/** Voice id passed through to the TTS provider when `text` is used. */
|
|
43
50
|
voice?: string;
|
|
44
51
|
/** Avatar provider override (e.g. "d-id", "heygen", "replicate"). */
|
|
45
|
-
provider?:
|
|
52
|
+
provider?: AvatarProviderName;
|
|
46
53
|
/** Output quality preset. */
|
|
47
54
|
quality?: AvatarQuality;
|
|
48
55
|
/** Output format (default: "mp4"). */
|
|
@@ -35,6 +35,7 @@ export * from "./middleware.js";
|
|
|
35
35
|
export * from "./model.js";
|
|
36
36
|
export * from "./multimodal.js";
|
|
37
37
|
export * from "./observability.js";
|
|
38
|
+
export * from "./openaiCompatible.js";
|
|
38
39
|
export * from "./ppt.js";
|
|
39
40
|
export * from "./processor.js";
|
|
40
41
|
export * from "./providers.js";
|
package/dist/lib/types/index.js
CHANGED
|
@@ -36,6 +36,7 @@ export * from "./middleware.js";
|
|
|
36
36
|
export * from "./model.js";
|
|
37
37
|
export * from "./multimodal.js";
|
|
38
38
|
export * from "./observability.js";
|
|
39
|
+
export * from "./openaiCompatible.js";
|
|
39
40
|
export * from "./ppt.js";
|
|
40
41
|
export * from "./processor.js";
|
|
41
42
|
export * from "./providers.js";
|
|
@@ -3,7 +3,7 @@ import type { EvaluationData, GetPromptFunction } from "./evaluation.js";
|
|
|
3
3
|
import type { AuthenticatedUser, RouteDefinition, ServerContext } from "./server.js";
|
|
4
4
|
import type { LanguageModelMiddleware as BaseLanguageModelMiddleware } from "ai";
|
|
5
5
|
export type { LanguageModelMiddleware } from "ai";
|
|
6
|
-
export type { LanguageModelV3, LanguageModelV3CallOptions, LanguageModelV3Message, LanguageModelV3StreamPart, LanguageModelV3ToolCall, LanguageModelV3ToolChoice, LanguageModelV3Source, LanguageModelV3Middleware, JSONSchema7, } from "@ai-sdk/provider";
|
|
6
|
+
export type { LanguageModelV3, LanguageModelV3CallOptions, LanguageModelV3Message, LanguageModelV3Prompt, LanguageModelV3StreamPart, LanguageModelV3ToolCall, LanguageModelV3ToolChoice, LanguageModelV3Source, LanguageModelV3Middleware, JSONSchema7, } from "@ai-sdk/provider";
|
|
7
7
|
import type { LanguageModelV3 } from "@ai-sdk/provider";
|
|
8
8
|
export type LanguageModelV3GenerateResult = Awaited<ReturnType<LanguageModelV3["doGenerate"]>>;
|
|
9
9
|
export type LanguageModelV3StreamResult = Awaited<ReturnType<LanguageModelV3["doStream"]>>;
|
|
@@ -124,6 +124,13 @@ export type AudioContent = {
|
|
|
124
124
|
language?: string;
|
|
125
125
|
};
|
|
126
126
|
};
|
|
127
|
+
/**
|
|
128
|
+
* Known video provider identifiers shipped with NeuroLink.
|
|
129
|
+
*
|
|
130
|
+
* `(string & {})` keeps the union open for custom provider names
|
|
131
|
+
* registered via `VideoProcessor.registerHandler()`.
|
|
132
|
+
*/
|
|
133
|
+
export type VideoProviderName = "vertex" | "kling" | "runway" | "replicate" | (string & {});
|
|
127
134
|
/**
|
|
128
135
|
* Video output configuration options for video generation
|
|
129
136
|
*
|
|
@@ -148,14 +155,15 @@ export type VideoOutputOptions = {
|
|
|
148
155
|
*/
|
|
149
156
|
abortSignal?: AbortSignal;
|
|
150
157
|
/**
|
|
151
|
-
* Override the video-gen provider. Defaults to "vertex"
|
|
152
|
-
* provider name if it is also a registered video handler.
|
|
158
|
+
* Override the video-gen provider. Defaults to `"vertex"` when omitted.
|
|
153
159
|
*
|
|
154
160
|
* Registered providers are managed via `VideoProcessor.registerHandler`
|
|
155
|
-
* (see src/lib/utils/videoProcessor.ts). Examples: "vertex"
|
|
156
|
-
* "runway"
|
|
161
|
+
* (see src/lib/utils/videoProcessor.ts). Examples: `"vertex"`, `"kling"`,
|
|
162
|
+
* `"runway"`, `"replicate"`. An unknown provider throws
|
|
163
|
+
* `VIDEO_ERROR_CODES.PROVIDER_NOT_SUPPORTED` — there is no implicit
|
|
164
|
+
* fallback to the LLM provider name.
|
|
157
165
|
*/
|
|
158
|
-
provider?:
|
|
166
|
+
provider?: VideoProviderName;
|
|
159
167
|
/**
|
|
160
168
|
* Specific model to use within the provider. Provider-specific shape
|
|
161
169
|
* (e.g. "veo-3.1-generate-001" for vertex; "atonamy/wan-alpha:..." for
|
|
@@ -164,8 +172,13 @@ export type VideoOutputOptions = {
|
|
|
164
172
|
model?: string;
|
|
165
173
|
/** Output resolution - "720p" (1280x720) or "1080p" (1920x1080) */
|
|
166
174
|
resolution?: "720p" | "1080p";
|
|
167
|
-
/**
|
|
168
|
-
|
|
175
|
+
/**
|
|
176
|
+
* Video duration in seconds. Provider-specific support — Vertex Veo
|
|
177
|
+
* accepts 4 / 6 / 8 s, Kling and Runway accept 5 / 10 s, Replicate is
|
|
178
|
+
* model-specific. The type intentionally enumerates the common shipped
|
|
179
|
+
* values; pass any other positive number for custom Replicate models.
|
|
180
|
+
*/
|
|
181
|
+
length?: 4 | 5 | 6 | 8 | 10 | (number & {});
|
|
169
182
|
/** Aspect ratio - "9:16" for portrait, "16:9" for landscape, "1:1" for square */
|
|
170
183
|
aspectRatio?: "9:16" | "16:9" | "1:1";
|
|
171
184
|
/** Enable audio generation (default: true) */
|
|
@@ -27,6 +27,13 @@ export type MusicGenre = string;
|
|
|
27
27
|
* "mysterious", "romantic", "epic".
|
|
28
28
|
*/
|
|
29
29
|
export type MusicMood = string;
|
|
30
|
+
/**
|
|
31
|
+
* Known music provider identifiers shipped with NeuroLink.
|
|
32
|
+
*
|
|
33
|
+
* `(string & {})` keeps the union open for custom provider names
|
|
34
|
+
* registered via `MusicProcessor.registerHandler()`.
|
|
35
|
+
*/
|
|
36
|
+
export type MusicProviderName = "beatoven" | "elevenlabs-music" | "elevenlabs-sound" | "lyria" | "replicate" | "musicgen" | (string & {});
|
|
30
37
|
/**
|
|
31
38
|
* Options for music generation requests.
|
|
32
39
|
*/
|
|
@@ -44,7 +51,7 @@ export type MusicOptions = {
|
|
|
44
51
|
/** Tempo in BPM (provider-specific support). */
|
|
45
52
|
tempo?: number;
|
|
46
53
|
/** Override the music provider (e.g. "beatoven", "elevenlabs-music", "lyria", "replicate"). */
|
|
47
|
-
provider?:
|
|
54
|
+
provider?: MusicProviderName;
|
|
48
55
|
/** Reference audio for melody / style guidance (Buffer or path). */
|
|
49
56
|
referenceAudio?: Buffer | string;
|
|
50
57
|
/** Output file path (optional — buffer is always returned in result). */
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import type { NeuroLinkEvents, TypedEventEmitter } from "./common.js";
|
|
2
|
+
import type { JSONSchema7 } from "./middleware.js";
|
|
3
|
+
import type { LanguageModelV3, LanguageModelV3CallOptions } from "./middleware.js";
|
|
4
|
+
import type { StreamOptions } from "./stream.js";
|
|
5
|
+
import type { Tool } from "./tools.js";
|
|
6
|
+
export type OpenAICompatChatRole = "system" | "user" | "assistant" | "tool";
|
|
7
|
+
export type OpenAICompatTextContent = {
|
|
8
|
+
type: "text";
|
|
9
|
+
text: string;
|
|
10
|
+
};
|
|
11
|
+
export type OpenAICompatImageURLContent = {
|
|
12
|
+
type: "image_url";
|
|
13
|
+
image_url: {
|
|
14
|
+
url: string;
|
|
15
|
+
detail?: "auto" | "low" | "high";
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export type OpenAICompatMessageContent = OpenAICompatTextContent | OpenAICompatImageURLContent;
|
|
19
|
+
export type OpenAICompatToolCallWire = {
|
|
20
|
+
id: string;
|
|
21
|
+
type: "function";
|
|
22
|
+
function: {
|
|
23
|
+
name: string;
|
|
24
|
+
arguments: string;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export type OpenAICompatChatMessage = {
|
|
28
|
+
role: "system";
|
|
29
|
+
content: string | OpenAICompatMessageContent[];
|
|
30
|
+
} | {
|
|
31
|
+
role: "user";
|
|
32
|
+
content: string | OpenAICompatMessageContent[];
|
|
33
|
+
} | {
|
|
34
|
+
role: "assistant";
|
|
35
|
+
content?: string | OpenAICompatMessageContent[] | null;
|
|
36
|
+
tool_calls?: OpenAICompatToolCallWire[];
|
|
37
|
+
} | {
|
|
38
|
+
role: "tool";
|
|
39
|
+
content: string;
|
|
40
|
+
tool_call_id: string;
|
|
41
|
+
};
|
|
42
|
+
export type OpenAICompatChatTool = {
|
|
43
|
+
type: "function";
|
|
44
|
+
function: {
|
|
45
|
+
name: string;
|
|
46
|
+
description?: string;
|
|
47
|
+
parameters: JSONSchema7;
|
|
48
|
+
strict?: boolean;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
export type OpenAICompatToolChoiceWire = "auto" | "none" | "required" | {
|
|
52
|
+
type: "function";
|
|
53
|
+
function: {
|
|
54
|
+
name: string;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
export type OpenAICompatResponseFormat = {
|
|
58
|
+
type: "text";
|
|
59
|
+
} | {
|
|
60
|
+
type: "json_object";
|
|
61
|
+
} | {
|
|
62
|
+
type: "json_schema";
|
|
63
|
+
json_schema: {
|
|
64
|
+
name: string;
|
|
65
|
+
schema: JSONSchema7;
|
|
66
|
+
description?: string;
|
|
67
|
+
strict?: boolean;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
export type OpenAICompatChatRequest = {
|
|
71
|
+
model: string;
|
|
72
|
+
messages: OpenAICompatChatMessage[];
|
|
73
|
+
stream?: boolean;
|
|
74
|
+
stream_options?: {
|
|
75
|
+
include_usage?: boolean;
|
|
76
|
+
};
|
|
77
|
+
max_tokens?: number;
|
|
78
|
+
max_completion_tokens?: number;
|
|
79
|
+
temperature?: number;
|
|
80
|
+
top_p?: number;
|
|
81
|
+
presence_penalty?: number;
|
|
82
|
+
frequency_penalty?: number;
|
|
83
|
+
seed?: number;
|
|
84
|
+
stop?: string[];
|
|
85
|
+
tools?: OpenAICompatChatTool[];
|
|
86
|
+
tool_choice?: OpenAICompatToolChoiceWire;
|
|
87
|
+
response_format?: OpenAICompatResponseFormat;
|
|
88
|
+
parallel_tool_calls?: boolean;
|
|
89
|
+
user?: string;
|
|
90
|
+
};
|
|
91
|
+
export type OpenAICompatUsage = {
|
|
92
|
+
prompt_tokens?: number;
|
|
93
|
+
completion_tokens?: number;
|
|
94
|
+
total_tokens?: number;
|
|
95
|
+
prompt_tokens_details?: {
|
|
96
|
+
cached_tokens?: number;
|
|
97
|
+
};
|
|
98
|
+
completion_tokens_details?: {
|
|
99
|
+
reasoning_tokens?: number;
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
export type OpenAICompatChatChoiceMessage = {
|
|
103
|
+
role: "assistant";
|
|
104
|
+
content?: string | null;
|
|
105
|
+
tool_calls?: OpenAICompatToolCallWire[];
|
|
106
|
+
refusal?: string | null;
|
|
107
|
+
};
|
|
108
|
+
export type OpenAICompatChatChoice = {
|
|
109
|
+
index: number;
|
|
110
|
+
message: OpenAICompatChatChoiceMessage;
|
|
111
|
+
finish_reason: "stop" | "length" | "tool_calls" | "function_call" | "content_filter" | null;
|
|
112
|
+
};
|
|
113
|
+
export type OpenAICompatChatResponse = {
|
|
114
|
+
id?: string;
|
|
115
|
+
object?: string;
|
|
116
|
+
created?: number;
|
|
117
|
+
model?: string;
|
|
118
|
+
choices: OpenAICompatChatChoice[];
|
|
119
|
+
usage?: OpenAICompatUsage;
|
|
120
|
+
system_fingerprint?: string;
|
|
121
|
+
};
|
|
122
|
+
export type OpenAICompatStreamDelta = {
|
|
123
|
+
role?: OpenAICompatChatRole;
|
|
124
|
+
content?: string | null;
|
|
125
|
+
tool_calls?: Array<{
|
|
126
|
+
index: number;
|
|
127
|
+
id?: string;
|
|
128
|
+
type?: "function";
|
|
129
|
+
function?: {
|
|
130
|
+
name?: string;
|
|
131
|
+
arguments?: string;
|
|
132
|
+
};
|
|
133
|
+
}>;
|
|
134
|
+
refusal?: string | null;
|
|
135
|
+
};
|
|
136
|
+
export type OpenAICompatStreamChunkChoice = {
|
|
137
|
+
index: number;
|
|
138
|
+
delta: OpenAICompatStreamDelta;
|
|
139
|
+
finish_reason: "stop" | "length" | "tool_calls" | "function_call" | "content_filter" | null;
|
|
140
|
+
};
|
|
141
|
+
export type OpenAICompatChatStreamChunk = {
|
|
142
|
+
id?: string;
|
|
143
|
+
object?: string;
|
|
144
|
+
created?: number;
|
|
145
|
+
model?: string;
|
|
146
|
+
choices: OpenAICompatStreamChunkChoice[];
|
|
147
|
+
usage?: OpenAICompatUsage;
|
|
148
|
+
};
|
|
149
|
+
export type OpenAICompatErrorBody = {
|
|
150
|
+
error?: {
|
|
151
|
+
message?: string;
|
|
152
|
+
type?: string;
|
|
153
|
+
code?: string | number;
|
|
154
|
+
param?: string | null;
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
export type OpenAICompatConfig = {
|
|
158
|
+
provider: string;
|
|
159
|
+
modelId: string;
|
|
160
|
+
baseURL: string;
|
|
161
|
+
apiKey?: string;
|
|
162
|
+
headers?: Record<string, string> | (() => Record<string, string>);
|
|
163
|
+
fetch?: typeof globalThis.fetch;
|
|
164
|
+
};
|
|
165
|
+
export type OpenAICompatToolWarning = NonNullable<Awaited<ReturnType<LanguageModelV3["doGenerate"]>>["warnings"]>[number];
|
|
166
|
+
export type OpenAICompatV3Content = Awaited<ReturnType<LanguageModelV3["doGenerate"]>>["content"][number];
|
|
167
|
+
export type OpenAICompatV3FinishReason = Awaited<ReturnType<LanguageModelV3["doGenerate"]>>["finishReason"];
|
|
168
|
+
export type OpenAICompatV3Usage = Awaited<ReturnType<LanguageModelV3["doGenerate"]>>["usage"];
|
|
169
|
+
export type OpenAICompatV3StreamPart = Awaited<ReturnType<LanguageModelV3["doStream"]>>["stream"] extends ReadableStream<infer P> ? P : never;
|
|
170
|
+
export type OpenAICompatV3CallTools = NonNullable<LanguageModelV3CallOptions["tools"]>;
|
|
171
|
+
export type OpenAICompatV3CallToolChoice = NonNullable<LanguageModelV3CallOptions["toolChoice"]>;
|
|
172
|
+
export type OpenAICompatUserOrAssistantPart = {
|
|
173
|
+
type: "text";
|
|
174
|
+
text: string;
|
|
175
|
+
} | {
|
|
176
|
+
type: "file";
|
|
177
|
+
mediaType: string;
|
|
178
|
+
data: Uint8Array | string | URL;
|
|
179
|
+
filename?: string;
|
|
180
|
+
};
|
|
181
|
+
export type OpenAICompatMessage = {
|
|
182
|
+
role: "system" | "user" | "assistant" | "tool";
|
|
183
|
+
content: unknown;
|
|
184
|
+
toolCallId?: string;
|
|
185
|
+
toolName?: string;
|
|
186
|
+
};
|
|
187
|
+
export type OpenAICompatSSEResult = {
|
|
188
|
+
text: string;
|
|
189
|
+
toolCalls: Map<number, {
|
|
190
|
+
id: string;
|
|
191
|
+
name: string;
|
|
192
|
+
argsBuffered: string;
|
|
193
|
+
}>;
|
|
194
|
+
finishReason: "stop" | "length" | "tool_calls" | "function_call" | "content_filter" | null;
|
|
195
|
+
usage?: OpenAICompatUsage;
|
|
196
|
+
};
|
|
197
|
+
export type OpenAICompatStreamChunk = {
|
|
198
|
+
content: string;
|
|
199
|
+
} | {
|
|
200
|
+
done: true;
|
|
201
|
+
};
|
|
202
|
+
export type ToolExecutionSummaryInternal = {
|
|
203
|
+
toolCallId: string;
|
|
204
|
+
toolName: string;
|
|
205
|
+
input: unknown;
|
|
206
|
+
output?: unknown;
|
|
207
|
+
error?: string;
|
|
208
|
+
startTime: Date;
|
|
209
|
+
endTime: Date;
|
|
210
|
+
};
|
|
211
|
+
export type StreamLoopArgs = {
|
|
212
|
+
maxSteps: number;
|
|
213
|
+
modelId: string;
|
|
214
|
+
url: string;
|
|
215
|
+
apiKey: string;
|
|
216
|
+
fetchImpl: typeof fetch;
|
|
217
|
+
abortSignal: AbortSignal | undefined;
|
|
218
|
+
options: StreamOptions;
|
|
219
|
+
conversation: OpenAICompatChatMessage[];
|
|
220
|
+
openAITools: OpenAICompatChatTool[] | undefined;
|
|
221
|
+
openAIToolChoice: OpenAICompatToolChoiceWire | undefined;
|
|
222
|
+
toolsRecord: Record<string, Tool>;
|
|
223
|
+
emitter: TypedEventEmitter<NeuroLinkEvents> | undefined;
|
|
224
|
+
toolsUsed: string[];
|
|
225
|
+
toolExecutionSummaries: ToolExecutionSummaryInternal[];
|
|
226
|
+
pushChunk: (chunk: OpenAICompatStreamChunk) => void;
|
|
227
|
+
resolveUsage: (u: {
|
|
228
|
+
promptTokens: number;
|
|
229
|
+
completionTokens: number;
|
|
230
|
+
totalTokens: number;
|
|
231
|
+
}) => void;
|
|
232
|
+
resolveFinish: (reason: string) => void;
|
|
233
|
+
};
|
|
234
|
+
export type OpenAICompatBuildBodyArgs = {
|
|
235
|
+
modelId: string;
|
|
236
|
+
messages: OpenAICompatChatMessage[];
|
|
237
|
+
options: {
|
|
238
|
+
maxTokens?: number | null;
|
|
239
|
+
temperature?: number | null;
|
|
240
|
+
topP?: number | null;
|
|
241
|
+
presencePenalty?: number | null;
|
|
242
|
+
frequencyPenalty?: number | null;
|
|
243
|
+
seed?: number | null;
|
|
244
|
+
stopSequences?: string[];
|
|
245
|
+
};
|
|
246
|
+
tools?: OpenAICompatChatTool[];
|
|
247
|
+
toolChoice?: OpenAICompatToolChoiceWire;
|
|
248
|
+
streaming: boolean;
|
|
249
|
+
responseFormat?: OpenAICompatResponseFormat;
|
|
250
|
+
};
|
package/dist/lib/types/tts.d.ts
CHANGED
|
@@ -17,6 +17,14 @@ export type TTSAudioFormat = "mp3" | "wav" | "ogg" | "opus" | "m4a" | "flac" | "
|
|
|
17
17
|
* TTS quality settings
|
|
18
18
|
*/
|
|
19
19
|
export type TTSQuality = "standard" | "hd";
|
|
20
|
+
/**
|
|
21
|
+
* Known TTS provider identifiers shipped with NeuroLink.
|
|
22
|
+
*
|
|
23
|
+
* The `(string & {})` intersection keeps the union open for custom
|
|
24
|
+
* provider names registered via `TTSProcessor.registerHandler()` while
|
|
25
|
+
* still surfacing the built-in choices in editor autocomplete.
|
|
26
|
+
*/
|
|
27
|
+
export type TTSProviderName = "google-ai" | "vertex" | "openai-tts" | "elevenlabs" | "elevenlabs-tts" | "azure-tts" | "fish-audio" | "cartesia" | (string & {});
|
|
20
28
|
/**
|
|
21
29
|
* TTS configuration options
|
|
22
30
|
*/
|
|
@@ -69,7 +77,7 @@ export type TTSOptions = {
|
|
|
69
77
|
/** Auto-play audio after generation (default: false) */
|
|
70
78
|
play?: boolean;
|
|
71
79
|
/** Override TTS provider (e.g., "elevenlabs", "openai-tts", "azure-tts") */
|
|
72
|
-
provider?:
|
|
80
|
+
provider?: TTSProviderName;
|
|
73
81
|
};
|
|
74
82
|
/**
|
|
75
83
|
* TTS audio result returned from generation
|
|
@@ -56,7 +56,13 @@ export declare class AvatarProcessor {
|
|
|
56
56
|
* List the names of all registered providers.
|
|
57
57
|
*/
|
|
58
58
|
static listProviders(): string[];
|
|
59
|
-
|
|
59
|
+
/**
|
|
60
|
+
* Get a registered avatar handler by provider name.
|
|
61
|
+
*
|
|
62
|
+
* Exposed publicly so module-level auto-registration code can reuse an
|
|
63
|
+
* already-registered primary handler when backfilling its aliases.
|
|
64
|
+
*/
|
|
65
|
+
static getHandler(providerName: string): AvatarHandler | undefined;
|
|
60
66
|
private static buildSpanAttributes;
|
|
61
67
|
/**
|
|
62
68
|
* Generate an avatar video via the registered handler.
|
|
@@ -80,6 +80,12 @@ export class AvatarProcessor {
|
|
|
80
80
|
static listProviders() {
|
|
81
81
|
return Array.from(this.handlers.keys());
|
|
82
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Get a registered avatar handler by provider name.
|
|
85
|
+
*
|
|
86
|
+
* Exposed publicly so module-level auto-registration code can reuse an
|
|
87
|
+
* already-registered primary handler when backfilling its aliases.
|
|
88
|
+
*/
|
|
83
89
|
static getHandler(providerName) {
|
|
84
90
|
return this.handlers.get(providerName.toLowerCase());
|
|
85
91
|
}
|
|
@@ -55,7 +55,13 @@ export declare class MusicProcessor {
|
|
|
55
55
|
* List the names of all registered providers.
|
|
56
56
|
*/
|
|
57
57
|
static listProviders(): string[];
|
|
58
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Get a registered music handler by provider name.
|
|
60
|
+
*
|
|
61
|
+
* Exposed publicly so module-level auto-registration code can reuse an
|
|
62
|
+
* already-registered primary handler when backfilling its aliases.
|
|
63
|
+
*/
|
|
64
|
+
static getHandler(providerName: string): MusicHandler | undefined;
|
|
59
65
|
private static buildSpanAttributes;
|
|
60
66
|
/**
|
|
61
67
|
* Generate a music track via the registered handler.
|
|
@@ -79,6 +79,12 @@ export class MusicProcessor {
|
|
|
79
79
|
static listProviders() {
|
|
80
80
|
return Array.from(this.handlers.keys());
|
|
81
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Get a registered music handler by provider name.
|
|
84
|
+
*
|
|
85
|
+
* Exposed publicly so module-level auto-registration code can reuse an
|
|
86
|
+
* already-registered primary handler when backfilling its aliases.
|
|
87
|
+
*/
|
|
82
88
|
static getHandler(providerName) {
|
|
83
89
|
return this.handlers.get(providerName.toLowerCase());
|
|
84
90
|
}
|
|
@@ -435,7 +435,11 @@ function toValidationError(error) {
|
|
|
435
435
|
* Valid video generation options
|
|
436
436
|
*/
|
|
437
437
|
const VALID_VIDEO_RESOLUTIONS = ["720p", "1080p"];
|
|
438
|
-
|
|
438
|
+
// Cross-provider literal whitelist: Vertex Veo uses 4 / 6 / 8 s, Kling and
|
|
439
|
+
// Runway use 5 / 10 s. The handler-level adapter is the source of truth
|
|
440
|
+
// for per-provider rejection (e.g. Runway 400 for length=4); this gate
|
|
441
|
+
// just rejects obviously invalid integers.
|
|
442
|
+
const VALID_VIDEO_LENGTHS = [4, 5, 6, 8, 10];
|
|
439
443
|
const VALID_VIDEO_ASPECT_RATIOS = ["9:16", "16:9"];
|
|
440
444
|
const MAX_VIDEO_PROMPT_LENGTH = 500;
|
|
441
445
|
const MAX_VIDEO_IMAGE_SIZE = 10 * 1024 * 1024; // 10MB
|
|
@@ -63,13 +63,15 @@ export declare class STTProcessor {
|
|
|
63
63
|
*/
|
|
64
64
|
static registerHandler(providerName: string, handler: STTHandler): void;
|
|
65
65
|
/**
|
|
66
|
-
* Get a registered STT handler by provider name
|
|
66
|
+
* Get a registered STT handler by provider name.
|
|
67
|
+
*
|
|
68
|
+
* Exposed publicly so module-level auto-registration code can reuse an
|
|
69
|
+
* already-registered primary handler when backfilling its aliases.
|
|
67
70
|
*
|
|
68
|
-
* @private
|
|
69
71
|
* @param providerName - Provider identifier
|
|
70
72
|
* @returns Handler instance or undefined if not registered
|
|
71
73
|
*/
|
|
72
|
-
|
|
74
|
+
static getHandler(providerName: string): STTHandler | undefined;
|
|
73
75
|
/**
|
|
74
76
|
* Check if a provider is supported (has a registered STT handler)
|
|
75
77
|
*
|
|
@@ -80,9 +80,11 @@ export class STTProcessor {
|
|
|
80
80
|
logger.debug(`[STTProcessor] Registered STT handler for provider: ${normalizedName}`);
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
83
|
-
* Get a registered STT handler by provider name
|
|
83
|
+
* Get a registered STT handler by provider name.
|
|
84
|
+
*
|
|
85
|
+
* Exposed publicly so module-level auto-registration code can reuse an
|
|
86
|
+
* already-registered primary handler when backfilling its aliases.
|
|
84
87
|
*
|
|
85
|
-
* @private
|
|
86
88
|
* @param providerName - Provider identifier
|
|
87
89
|
* @returns Handler instance or undefined if not registered
|
|
88
90
|
*/
|
|
@@ -90,13 +90,16 @@ export declare class TTSProcessor {
|
|
|
90
90
|
*/
|
|
91
91
|
static registerHandler(providerName: string, handler: TTSHandler): void;
|
|
92
92
|
/**
|
|
93
|
-
* Get a registered TTS handler by provider name
|
|
93
|
+
* Get a registered TTS handler by provider name.
|
|
94
|
+
*
|
|
95
|
+
* Exposed publicly so module-level auto-registration code can reuse an
|
|
96
|
+
* already-registered primary handler when backfilling its aliases —
|
|
97
|
+
* see `src/lib/voice/index.ts:registerDefaultTTSHandlers`.
|
|
94
98
|
*
|
|
95
|
-
* @private
|
|
96
99
|
* @param providerName - Provider identifier
|
|
97
100
|
* @returns Handler instance or undefined if not registered
|
|
98
101
|
*/
|
|
99
|
-
|
|
102
|
+
static getHandler(providerName: string): TTSHandler | undefined;
|
|
100
103
|
/**
|
|
101
104
|
* Check if a provider is supported (has a registered TTS handler)
|
|
102
105
|
*
|
|
@@ -107,9 +107,12 @@ export class TTSProcessor {
|
|
|
107
107
|
logger.debug(`[TTSProcessor] Registered TTS handler for provider: ${normalizedName}`);
|
|
108
108
|
}
|
|
109
109
|
/**
|
|
110
|
-
* Get a registered TTS handler by provider name
|
|
110
|
+
* Get a registered TTS handler by provider name.
|
|
111
|
+
*
|
|
112
|
+
* Exposed publicly so module-level auto-registration code can reuse an
|
|
113
|
+
* already-registered primary handler when backfilling its aliases —
|
|
114
|
+
* see `src/lib/voice/index.ts:registerDefaultTTSHandlers`.
|
|
111
115
|
*
|
|
112
|
-
* @private
|
|
113
116
|
* @param providerName - Provider identifier
|
|
114
117
|
* @returns Handler instance or undefined if not registered
|
|
115
118
|
*/
|
|
@@ -49,9 +49,12 @@ export declare class RealtimeProcessor {
|
|
|
49
49
|
*/
|
|
50
50
|
static registerHandler(providerName: string, handler: RealtimeHandler): void;
|
|
51
51
|
/**
|
|
52
|
-
* Get a registered Realtime handler by provider name
|
|
52
|
+
* Get a registered Realtime handler by provider name.
|
|
53
|
+
*
|
|
54
|
+
* Exposed publicly so module-level auto-registration code can reuse an
|
|
55
|
+
* already-registered primary handler when backfilling its aliases.
|
|
53
56
|
*/
|
|
54
|
-
|
|
57
|
+
static getHandler(providerName: string): RealtimeHandler | undefined;
|
|
55
58
|
/**
|
|
56
59
|
* Check if a provider is supported
|
|
57
60
|
*/
|
|
@@ -65,7 +65,10 @@ export class RealtimeProcessor {
|
|
|
65
65
|
logger.debug(`[RealtimeProcessor] Registered Realtime handler for provider: ${normalizedName}`);
|
|
66
66
|
}
|
|
67
67
|
/**
|
|
68
|
-
* Get a registered Realtime handler by provider name
|
|
68
|
+
* Get a registered Realtime handler by provider name.
|
|
69
|
+
*
|
|
70
|
+
* Exposed publicly so module-level auto-registration code can reuse an
|
|
71
|
+
* already-registered primary handler when backfilling its aliases.
|
|
69
72
|
*/
|
|
70
73
|
static getHandler(providerName) {
|
|
71
74
|
const normalizedName = providerName.toLowerCase();
|
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
* Use STTProcessor (src/lib/utils/sttProcessor.ts) for STT.
|
|
9
9
|
* Use RealtimeProcessor for realtime voice sessions.
|
|
10
10
|
*
|
|
11
|
+
* Importing this module also auto-registers every shipped TTS / STT /
|
|
12
|
+
* Realtime handler whose backing API key is present in `process.env`.
|
|
13
|
+
* Registration is idempotent and silently skipped on failure.
|
|
14
|
+
*
|
|
11
15
|
* @module voice
|
|
12
16
|
*/
|
|
13
17
|
export { AUDIO_FORMAT_DETAILS, DEFAULT_REALTIME_CONFIG, DEFAULT_STT_OPTIONS, isSTTResult, isTranscriptionSegment, isValidRealtimeConfig, isValidSTTOptions, REALTIME_ERROR_CODES, STT_ERROR_CODES, VOICE_ERROR_CODES, } from "../types/index.js";
|
|
@@ -15,8 +19,11 @@ export { RealtimeError, STTError, VoiceError } from "./errors.js";
|
|
|
15
19
|
export { BaseRealtimeHandler, RealtimeProcessor } from "./RealtimeVoiceAPI.js";
|
|
16
20
|
export { AUDIO_SIGNATURES, calculateDuration, convertAudioFormat, createPcmBuffer, createWavFile, createWavHeader, detectAudioFormat, extractPcmSamples, getFileExtension, getMimeType, MIME_TYPES, normalizeAudio, resamplePcm, splitIntoChunks, } from "./audio-utils.js";
|
|
17
21
|
export { asyncIterableToStream, ChunkedAudioStream, StreamHandler, StreamMerger, StreamSplitter, streamToAsyncIterable, } from "./stream-handler.js";
|
|
22
|
+
export { GoogleTTSHandler } from "../adapters/tts/googleTTSHandler.js";
|
|
18
23
|
export { AzureTTS, AzureTTS as AzureTTSHandler } from "./providers/AzureTTS.js";
|
|
24
|
+
export { CartesiaTTS, CartesiaTTS as CartesiaTTSHandler, } from "./providers/CartesiaTTS.js";
|
|
19
25
|
export { ElevenLabsTTS, ElevenLabsTTS as ElevenLabsTTSHandler, } from "./providers/ElevenLabsTTS.js";
|
|
26
|
+
export { FishAudioTTS, FishAudioTTS as FishAudioTTSHandler, } from "./providers/FishAudioTTS.js";
|
|
20
27
|
export { OpenAITTS, OpenAITTS as OpenAITTSHandler, } from "./providers/OpenAITTS.js";
|
|
21
28
|
export { AzureSTT, AzureSTT as AzureSTTHandler } from "./providers/AzureSTT.js";
|
|
22
29
|
export { DeepgramSTT, DeepgramSTT as DeepgramSTTHandler, } from "./providers/DeepgramSTT.js";
|
|
@@ -24,3 +31,19 @@ export { GoogleSTT, GoogleSTT as GoogleSTTHandler, } from "./providers/GoogleSTT
|
|
|
24
31
|
export { OpenAISTT, OpenAISTTHandler, WhisperSTT, WhisperSTTHandler, } from "./providers/OpenAISTT.js";
|
|
25
32
|
export { GeminiLive, GeminiLive as GeminiLiveHandler, } from "./providers/GeminiLive.js";
|
|
26
33
|
export { OpenAIRealtime, OpenAIRealtime as OpenAIRealtimeHandler, } from "./providers/OpenAIRealtime.js";
|
|
34
|
+
/**
|
|
35
|
+
* Register every shipped TTS handler whose backing credentials are
|
|
36
|
+
* present in the environment. Safe to call multiple times.
|
|
37
|
+
*/
|
|
38
|
+
export declare function registerDefaultTTSHandlers(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Register every shipped STT handler whose backing credentials are
|
|
41
|
+
* present in the environment. Safe to call multiple times.
|
|
42
|
+
*/
|
|
43
|
+
export declare function registerDefaultSTTHandlers(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Register every shipped Realtime handler. Realtime handlers don't gate
|
|
46
|
+
* registration on isConfigured() because session-time API keys can be
|
|
47
|
+
* supplied per-call; missing creds surface when `connect()` is invoked.
|
|
48
|
+
*/
|
|
49
|
+
export declare function registerDefaultRealtimeHandlers(): void;
|