@push.rocks/smartai 0.7.4 → 0.7.6
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_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.conversation.d.ts +1 -0
- package/dist_ts/classes.conversation.js +12 -1
- package/dist_ts/classes.smartai.d.ts +8 -1
- package/dist_ts/classes.smartai.js +15 -1
- package/dist_ts/index.d.ts +1 -0
- package/dist_ts/index.js +2 -1
- package/dist_ts/provider.elevenlabs.d.ts +43 -0
- package/dist_ts/provider.elevenlabs.js +62 -0
- package/package.json +9 -8
- package/readme.md +24 -3
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.conversation.ts +12 -0
- package/ts/classes.smartai.ts +21 -1
- package/ts/index.ts +1 -0
- package/ts/provider.elevenlabs.ts +114 -0
- package/dist_ts/smartai.classes.smartai.d.ts +0 -15
- package/dist_ts/smartai.classes.smartai.js +0 -42
- package/dist_ts/smartai.plugins.d.ts +0 -2
- package/dist_ts/smartai.plugins.js +0 -3
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartai',
|
|
6
|
-
version: '0.7.
|
|
6
|
+
version: '0.7.6',
|
|
7
7
|
description: 'SmartAi is a versatile TypeScript library designed to facilitate integration and interaction with various AI models, offering functionalities for chat, audio generation, document processing, and vision tasks.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLGtOQUFrTjtDQUNoTyxDQUFBIn0=
|
|
@@ -14,6 +14,7 @@ export declare class Conversation {
|
|
|
14
14
|
static createWithOllama(smartaiRefArg: SmartAi): Promise<Conversation>;
|
|
15
15
|
static createWithGroq(smartaiRefArg: SmartAi): Promise<Conversation>;
|
|
16
16
|
static createWithXai(smartaiRefArg: SmartAi): Promise<Conversation>;
|
|
17
|
+
static createWithElevenlabs(smartaiRefArg: SmartAi): Promise<Conversation>;
|
|
17
18
|
smartaiRef: SmartAi;
|
|
18
19
|
private systemMessage;
|
|
19
20
|
private processFunction;
|
|
@@ -81,6 +81,17 @@ export class Conversation {
|
|
|
81
81
|
});
|
|
82
82
|
return conversation;
|
|
83
83
|
}
|
|
84
|
+
static async createWithElevenlabs(smartaiRefArg) {
|
|
85
|
+
if (!smartaiRefArg.elevenlabsProvider) {
|
|
86
|
+
throw new Error('ElevenLabs provider not available');
|
|
87
|
+
}
|
|
88
|
+
const conversation = new Conversation(smartaiRefArg, {
|
|
89
|
+
processFunction: async (input) => {
|
|
90
|
+
return ''; // TODO implement proper streaming
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
return conversation;
|
|
94
|
+
}
|
|
84
95
|
constructor(smartairefArg, options) {
|
|
85
96
|
this.inputStreamWriter = null;
|
|
86
97
|
this.outputStreamController = null;
|
|
@@ -125,4 +136,4 @@ export class Conversation {
|
|
|
125
136
|
return this.setupOutputStream();
|
|
126
137
|
}
|
|
127
138
|
}
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jb252ZXJzYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLmNvbnZlcnNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFRdEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUN2QixTQUFTO0lBQ0YsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFzQjtRQUN6RCxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxZQUFZLENBQUMsYUFBYSxFQUFFO1lBQ25ELGVBQWUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQy9CLE9BQU8sRUFBRSxDQUFBLENBQUMsa0NBQWtDO1lBQzlDLENBQUM7U0FDRixDQUFDLENBQUM7UUFDSCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxhQUFzQjtRQUM1RCxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLFlBQVksQ0FBQyxhQUFhLEVBQUU7WUFDbkQsZUFBZSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDL0IsT0FBTyxFQUFFLENBQUEsQ0FBQyxrQ0FBa0M7WUFDOUMsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUNILE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLGFBQXNCO1FBQzdELElBQUks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
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Conversation } from './classes.conversation.js';
|
|
2
2
|
import { AnthropicProvider } from './provider.anthropic.js';
|
|
3
|
+
import { ElevenLabsProvider } from './provider.elevenlabs.js';
|
|
3
4
|
import { OllamaProvider } from './provider.ollama.js';
|
|
4
5
|
import { OpenAiProvider } from './provider.openai.js';
|
|
5
6
|
import { PerplexityProvider } from './provider.perplexity.js';
|
|
@@ -12,6 +13,7 @@ export interface ISmartAiOptions {
|
|
|
12
13
|
perplexityToken?: string;
|
|
13
14
|
groqToken?: string;
|
|
14
15
|
xaiToken?: string;
|
|
16
|
+
elevenlabsToken?: string;
|
|
15
17
|
exo?: {
|
|
16
18
|
baseUrl?: string;
|
|
17
19
|
apiKey?: string;
|
|
@@ -21,8 +23,12 @@ export interface ISmartAiOptions {
|
|
|
21
23
|
model?: string;
|
|
22
24
|
visionModel?: string;
|
|
23
25
|
};
|
|
26
|
+
elevenlabs?: {
|
|
27
|
+
defaultVoiceId?: string;
|
|
28
|
+
defaultModelId?: string;
|
|
29
|
+
};
|
|
24
30
|
}
|
|
25
|
-
export type TProvider = 'openai' | 'anthropic' | 'perplexity' | 'ollama' | 'exo' | 'groq' | 'xai';
|
|
31
|
+
export type TProvider = 'openai' | 'anthropic' | 'perplexity' | 'ollama' | 'exo' | 'groq' | 'xai' | 'elevenlabs';
|
|
26
32
|
export declare class SmartAi {
|
|
27
33
|
options: ISmartAiOptions;
|
|
28
34
|
openaiProvider: OpenAiProvider;
|
|
@@ -32,6 +38,7 @@ export declare class SmartAi {
|
|
|
32
38
|
exoProvider: ExoProvider;
|
|
33
39
|
groqProvider: GroqProvider;
|
|
34
40
|
xaiProvider: XAIProvider;
|
|
41
|
+
elevenlabsProvider: ElevenLabsProvider;
|
|
35
42
|
constructor(optionsArg: ISmartAiOptions);
|
|
36
43
|
start(): Promise<void>;
|
|
37
44
|
stop(): Promise<void>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Conversation } from './classes.conversation.js';
|
|
2
2
|
import * as plugins from './plugins.js';
|
|
3
3
|
import { AnthropicProvider } from './provider.anthropic.js';
|
|
4
|
+
import { ElevenLabsProvider } from './provider.elevenlabs.js';
|
|
4
5
|
import { OllamaProvider } from './provider.ollama.js';
|
|
5
6
|
import { OpenAiProvider } from './provider.openai.js';
|
|
6
7
|
import { PerplexityProvider } from './provider.perplexity.js';
|
|
@@ -42,6 +43,14 @@ export class SmartAi {
|
|
|
42
43
|
});
|
|
43
44
|
await this.xaiProvider.start();
|
|
44
45
|
}
|
|
46
|
+
if (this.options.elevenlabsToken) {
|
|
47
|
+
this.elevenlabsProvider = new ElevenLabsProvider({
|
|
48
|
+
elevenlabsToken: this.options.elevenlabsToken,
|
|
49
|
+
defaultVoiceId: this.options.elevenlabs?.defaultVoiceId,
|
|
50
|
+
defaultModelId: this.options.elevenlabs?.defaultModelId,
|
|
51
|
+
});
|
|
52
|
+
await this.elevenlabsProvider.start();
|
|
53
|
+
}
|
|
45
54
|
if (this.options.ollama) {
|
|
46
55
|
this.ollamaProvider = new OllamaProvider({
|
|
47
56
|
baseUrl: this.options.ollama.baseUrl,
|
|
@@ -74,6 +83,9 @@ export class SmartAi {
|
|
|
74
83
|
if (this.xaiProvider) {
|
|
75
84
|
await this.xaiProvider.stop();
|
|
76
85
|
}
|
|
86
|
+
if (this.elevenlabsProvider) {
|
|
87
|
+
await this.elevenlabsProvider.stop();
|
|
88
|
+
}
|
|
77
89
|
if (this.ollamaProvider) {
|
|
78
90
|
await this.ollamaProvider.stop();
|
|
79
91
|
}
|
|
@@ -100,9 +112,11 @@ export class SmartAi {
|
|
|
100
112
|
return Conversation.createWithGroq(this);
|
|
101
113
|
case 'xai':
|
|
102
114
|
return Conversation.createWithXai(this);
|
|
115
|
+
case 'elevenlabs':
|
|
116
|
+
return Conversation.createWithElevenlabs(this);
|
|
103
117
|
default:
|
|
104
118
|
throw new Error('Provider not available');
|
|
105
119
|
}
|
|
106
120
|
}
|
|
107
121
|
}
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5zbWFydGFpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5zbWFydGFpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBMkJoRCxNQUFNLE9BQU8sT0FBTztJQVlsQixZQUFZLFVBQTJCO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO0lBQzVCLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNoQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQztnQkFDdkMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVzthQUN0QyxDQUFDLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZ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
|
package/dist_ts/index.d.ts
CHANGED
package/dist_ts/index.js
CHANGED
|
@@ -7,4 +7,5 @@ export * from './provider.groq.js';
|
|
|
7
7
|
export * from './provider.ollama.js';
|
|
8
8
|
export * from './provider.xai.js';
|
|
9
9
|
export * from './provider.exo.js';
|
|
10
|
-
|
|
10
|
+
export * from './provider.elevenlabs.js';
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLDBCQUEwQixDQUFDIn0=
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { MultiModalModel } from './abstract.classes.multimodal.js';
|
|
2
|
+
import type { ChatOptions, ChatResponse, ResearchOptions, ResearchResponse, ImageGenerateOptions, ImageEditOptions, ImageResponse } from './abstract.classes.multimodal.js';
|
|
3
|
+
export interface IElevenLabsProviderOptions {
|
|
4
|
+
elevenlabsToken: string;
|
|
5
|
+
defaultVoiceId?: string;
|
|
6
|
+
defaultModelId?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface IElevenLabsVoiceSettings {
|
|
9
|
+
stability?: number;
|
|
10
|
+
similarity_boost?: number;
|
|
11
|
+
style?: number;
|
|
12
|
+
use_speaker_boost?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare class ElevenLabsProvider extends MultiModalModel {
|
|
15
|
+
private options;
|
|
16
|
+
private baseUrl;
|
|
17
|
+
constructor(optionsArg: IElevenLabsProviderOptions);
|
|
18
|
+
start(): Promise<void>;
|
|
19
|
+
stop(): Promise<void>;
|
|
20
|
+
chat(optionsArg: ChatOptions): Promise<ChatResponse>;
|
|
21
|
+
chatStream(input: ReadableStream<Uint8Array>): Promise<ReadableStream<string>>;
|
|
22
|
+
audio(optionsArg: {
|
|
23
|
+
message: string;
|
|
24
|
+
voiceId?: string;
|
|
25
|
+
modelId?: string;
|
|
26
|
+
voiceSettings?: IElevenLabsVoiceSettings;
|
|
27
|
+
}): Promise<NodeJS.ReadableStream>;
|
|
28
|
+
vision(optionsArg: {
|
|
29
|
+
image: Buffer;
|
|
30
|
+
prompt: string;
|
|
31
|
+
}): Promise<string>;
|
|
32
|
+
document(optionsArg: {
|
|
33
|
+
systemMessage: string;
|
|
34
|
+
userMessage: string;
|
|
35
|
+
pdfDocuments: Uint8Array[];
|
|
36
|
+
messageHistory: any[];
|
|
37
|
+
}): Promise<{
|
|
38
|
+
message: any;
|
|
39
|
+
}>;
|
|
40
|
+
research(optionsArg: ResearchOptions): Promise<ResearchResponse>;
|
|
41
|
+
imageGenerate(optionsArg: ImageGenerateOptions): Promise<ImageResponse>;
|
|
42
|
+
imageEdit(optionsArg: ImageEditOptions): Promise<ImageResponse>;
|
|
43
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
import { MultiModalModel } from './abstract.classes.multimodal.js';
|
|
3
|
+
export class ElevenLabsProvider extends MultiModalModel {
|
|
4
|
+
constructor(optionsArg) {
|
|
5
|
+
super();
|
|
6
|
+
this.baseUrl = 'https://api.elevenlabs.io/v1';
|
|
7
|
+
this.options = optionsArg;
|
|
8
|
+
}
|
|
9
|
+
async start() {
|
|
10
|
+
await super.start();
|
|
11
|
+
}
|
|
12
|
+
async stop() {
|
|
13
|
+
await super.stop();
|
|
14
|
+
}
|
|
15
|
+
async chat(optionsArg) {
|
|
16
|
+
throw new Error('ElevenLabs does not support chat functionality. This provider is specialized for text-to-speech only.');
|
|
17
|
+
}
|
|
18
|
+
async chatStream(input) {
|
|
19
|
+
throw new Error('ElevenLabs does not support chat streaming functionality. This provider is specialized for text-to-speech only.');
|
|
20
|
+
}
|
|
21
|
+
async audio(optionsArg) {
|
|
22
|
+
// Use Samara voice as default fallback
|
|
23
|
+
const voiceId = optionsArg.voiceId || this.options.defaultVoiceId || '19STyYD15bswVz51nqLf';
|
|
24
|
+
const modelId = optionsArg.modelId || this.options.defaultModelId || 'eleven_v3';
|
|
25
|
+
const url = `${this.baseUrl}/text-to-speech/${voiceId}`;
|
|
26
|
+
const requestBody = {
|
|
27
|
+
text: optionsArg.message,
|
|
28
|
+
model_id: modelId,
|
|
29
|
+
};
|
|
30
|
+
if (optionsArg.voiceSettings) {
|
|
31
|
+
requestBody.voice_settings = optionsArg.voiceSettings;
|
|
32
|
+
}
|
|
33
|
+
const response = await plugins.smartrequest.SmartRequest.create()
|
|
34
|
+
.url(url)
|
|
35
|
+
.header('xi-api-key', this.options.elevenlabsToken)
|
|
36
|
+
.json(requestBody)
|
|
37
|
+
.autoDrain(false)
|
|
38
|
+
.post();
|
|
39
|
+
if (!response.ok) {
|
|
40
|
+
const errorText = await response.text();
|
|
41
|
+
throw new Error(`ElevenLabs API error: ${response.status} ${response.statusText} - ${errorText}`);
|
|
42
|
+
}
|
|
43
|
+
const nodeStream = response.streamNode();
|
|
44
|
+
return nodeStream;
|
|
45
|
+
}
|
|
46
|
+
async vision(optionsArg) {
|
|
47
|
+
throw new Error('ElevenLabs does not support vision functionality. This provider is specialized for text-to-speech only.');
|
|
48
|
+
}
|
|
49
|
+
async document(optionsArg) {
|
|
50
|
+
throw new Error('ElevenLabs does not support document processing. This provider is specialized for text-to-speech only.');
|
|
51
|
+
}
|
|
52
|
+
async research(optionsArg) {
|
|
53
|
+
throw new Error('ElevenLabs does not support research capabilities. This provider is specialized for text-to-speech only.');
|
|
54
|
+
}
|
|
55
|
+
async imageGenerate(optionsArg) {
|
|
56
|
+
throw new Error('ElevenLabs does not support image generation. This provider is specialized for text-to-speech only.');
|
|
57
|
+
}
|
|
58
|
+
async imageEdit(optionsArg) {
|
|
59
|
+
throw new Error('ElevenLabs does not support image editing. This provider is specialized for text-to-speech only.');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuZWxldmVubGFicy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3Byb3ZpZGVyLmVsZXZlbmxhYnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBd0JuRSxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsZUFBZTtJQUlyRCxZQUFZLFVBQXNDO1FBQ2hELEtBQUssRUFBRSxDQUFDO1FBSEYsWUFBTyxHQUFXLDhCQUE4QixDQUFDO1FBSXZELElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO0lBQzVCLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNoQixNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUk7UUFDZixNQUFNLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxVQUF1QjtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLHVHQUF1RyxDQUFDLENBQUM7SUFDM0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBaUM7UUFDdkQsTUFBTSxJQUFJLEtBQUssQ0FBQyxpSEFBaUgsQ0FBQyxDQUFDO0lBQ3JJLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSyxDQUFDLFVBS2xCO1FBQ0MsdUNBQXVDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLElBQUksc0JBQXNCLENBQUM7UUFFNUYsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsSUFBSSxXQUFXLENBQUM7UUFFakYsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxtQkFBbUIsT0FBTyxFQUFFLENBQUM7UUFFeEQsTUFBTSxXQUFXLEdBQVE7WUFDdkIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxPQUFPO1lBQ3hCLFFBQVEsRUFBRSxPQUFPO1NBQ2xCLENBQUM7UUFFRixJQUFJLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM3QixXQUFXLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDeEQsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFO2FBQzlELEdBQUcsQ0FBQyxHQUFHLENBQUM7YUFDUixNQUFNLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO2FBQ2xELElBQUksQ0FBQyxXQUFXLENBQUM7YUFDakIsU0FBUyxDQUFDLEtBQUssQ0FBQzthQUNoQixJQUFJLEVBQUUsQ0FBQztRQUVWLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDakIsTUFBTSxTQUFTLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsVUFBVSxNQUFNLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDcEcsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN6QyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUE2QztRQUMvRCxNQUFNLElBQUksS0FBSyxDQUFDLHlHQUF5RyxDQUFDLENBQUM7SUFDN0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFLckI7UUFDQyxNQUFNLElBQUksS0FBSyxDQUFDLHdHQUF3RyxDQUFDLENBQUM7SUFDNUgsQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBMkI7UUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FBQywwR0FBMEcsQ0FBQyxDQUFDO0lBQzlILENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFDLFVBQWdDO1FBQ3pELE1BQU0sSUFBSSxLQUFLLENBQUMscUdBQXFHLENBQUMsQ0FBQztJQUN6SCxDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUE0QjtRQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLGtHQUFrRyxDQUFDLENBQUM7SUFDdEgsQ0FBQztDQUNGIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@push.rocks/smartai",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.6",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "SmartAi is a versatile TypeScript library designed to facilitate integration and interaction with various AI models, offering functionalities for chat, audio generation, document processing, and vision tasks.",
|
|
6
6
|
"main": "dist_ts/index.js",
|
|
@@ -9,22 +9,23 @@
|
|
|
9
9
|
"author": "Task Venture Capital GmbH",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"devDependencies": {
|
|
12
|
-
"@git.zone/tsbuild": "^2.6.
|
|
12
|
+
"@git.zone/tsbuild": "^2.6.8",
|
|
13
13
|
"@git.zone/tsbundle": "^2.5.1",
|
|
14
14
|
"@git.zone/tsrun": "^1.3.3",
|
|
15
|
-
"@git.zone/tstest": "^2.3.
|
|
16
|
-
"@push.rocks/qenv": "^6.1.
|
|
15
|
+
"@git.zone/tstest": "^2.3.8",
|
|
16
|
+
"@push.rocks/qenv": "^6.1.3",
|
|
17
17
|
"@push.rocks/tapbundle": "^6.0.3",
|
|
18
|
-
"@types/node": "^22.15.17"
|
|
18
|
+
"@types/node": "^22.15.17",
|
|
19
|
+
"typescript": "^5.9.3"
|
|
19
20
|
},
|
|
20
21
|
"dependencies": {
|
|
21
|
-
"@anthropic-ai/sdk": "^0.
|
|
22
|
+
"@anthropic-ai/sdk": "^0.65.0",
|
|
22
23
|
"@push.rocks/smartarray": "^1.1.0",
|
|
23
|
-
"@push.rocks/smartfile": "^11.2.
|
|
24
|
+
"@push.rocks/smartfile": "^11.2.7",
|
|
24
25
|
"@push.rocks/smartpath": "^6.0.0",
|
|
25
26
|
"@push.rocks/smartpdf": "^4.1.1",
|
|
26
27
|
"@push.rocks/smartpromise": "^4.2.3",
|
|
27
|
-
"@push.rocks/smartrequest": "^4.
|
|
28
|
+
"@push.rocks/smartrequest": "^4.3.1",
|
|
28
29
|
"@push.rocks/webstream": "^1.0.10",
|
|
29
30
|
"openai": "^5.12.2"
|
|
30
31
|
},
|
package/readme.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
[](https://www.typescriptlang.org/)
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
|
7
7
|
|
|
8
|
-
SmartAI unifies the world's leading AI providers - OpenAI, Anthropic, Perplexity, Ollama, Groq, XAI, and
|
|
8
|
+
SmartAI unifies the world's leading AI providers - OpenAI, Anthropic, Perplexity, Ollama, Groq, XAI, Exo, and ElevenLabs - under a single, elegant TypeScript interface. Build AI applications at lightning speed without vendor lock-in.
|
|
9
9
|
|
|
10
10
|
## 🎯 Why SmartAI?
|
|
11
11
|
|
|
@@ -28,7 +28,11 @@ import { SmartAi } from '@push.rocks/smartai';
|
|
|
28
28
|
// Initialize with your favorite providers
|
|
29
29
|
const ai = new SmartAi({
|
|
30
30
|
openaiToken: 'sk-...',
|
|
31
|
-
anthropicToken: 'sk-ant-...'
|
|
31
|
+
anthropicToken: 'sk-ant-...',
|
|
32
|
+
elevenlabsToken: 'sk-...',
|
|
33
|
+
elevenlabs: {
|
|
34
|
+
defaultVoiceId: '19STyYD15bswVz51nqLf' // Optional: Samara voice
|
|
35
|
+
}
|
|
32
36
|
});
|
|
33
37
|
|
|
34
38
|
await ai.start();
|
|
@@ -49,6 +53,7 @@ Choose the right provider for your use case:
|
|
|
49
53
|
|----------|:----:|:---------:|:---:|:------:|:---------:|:--------:|:------:|------------|
|
|
50
54
|
| **OpenAI** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | • gpt-image-1<br>• DALL-E 3<br>• Deep research API |
|
|
51
55
|
| **Anthropic** | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | • Claude Sonnet 4.5<br>• Superior reasoning<br>• Web search API |
|
|
56
|
+
| **ElevenLabs** | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | • Premium TTS<br>• 70+ languages<br>• Natural voices |
|
|
52
57
|
| **Ollama** | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | • 100% local<br>• Privacy-first<br>• No API costs |
|
|
53
58
|
| **XAI** | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | • Grok models<br>• Real-time data<br>• Uncensored |
|
|
54
59
|
| **Perplexity** | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | • Web-aware<br>• Research-focused<br>• Sonar Pro models |
|
|
@@ -105,13 +110,27 @@ while (true) {
|
|
|
105
110
|
|
|
106
111
|
### 🎙️ Text-to-Speech
|
|
107
112
|
|
|
108
|
-
Generate natural voices with OpenAI:
|
|
113
|
+
Generate natural voices with OpenAI or ElevenLabs:
|
|
109
114
|
|
|
110
115
|
```typescript
|
|
116
|
+
// OpenAI TTS
|
|
111
117
|
const audioStream = await ai.openaiProvider.audio({
|
|
112
118
|
message: 'Welcome to the future of AI development!'
|
|
113
119
|
});
|
|
114
120
|
|
|
121
|
+
// ElevenLabs TTS - Premium quality, natural voices (uses v3 by default)
|
|
122
|
+
const elevenLabsAudio = await ai.elevenlabsProvider.audio({
|
|
123
|
+
message: 'Experience the most lifelike text to speech technology.',
|
|
124
|
+
voiceId: '19STyYD15bswVz51nqLf', // Optional: Samara voice
|
|
125
|
+
modelId: 'eleven_v3', // Optional: defaults to eleven_v3 (70+ languages, most expressive)
|
|
126
|
+
voiceSettings: { // Optional: fine-tune voice characteristics
|
|
127
|
+
stability: 0.5, // 0-1: Speech consistency
|
|
128
|
+
similarity_boost: 0.8, // 0-1: Voice similarity to original
|
|
129
|
+
style: 0.0, // 0-1: Expressiveness (higher = more expressive)
|
|
130
|
+
use_speaker_boost: true // Enhanced clarity
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
|
|
115
134
|
// Stream directly to speakers
|
|
116
135
|
audioStream.pipe(speakerOutput);
|
|
117
136
|
|
|
@@ -548,6 +567,7 @@ npm install @push.rocks/smartai
|
|
|
548
567
|
export OPENAI_API_KEY=sk-...
|
|
549
568
|
export ANTHROPIC_API_KEY=sk-ant-...
|
|
550
569
|
export PERPLEXITY_API_KEY=pplx-...
|
|
570
|
+
export ELEVENLABS_API_KEY=sk-...
|
|
551
571
|
# ... etc
|
|
552
572
|
```
|
|
553
573
|
|
|
@@ -574,6 +594,7 @@ export PERPLEXITY_API_KEY=pplx-...
|
|
|
574
594
|
| **Complex Reasoning** | Anthropic | Superior logical thinking, safer outputs |
|
|
575
595
|
| **Research & Facts** | Perplexity | Web-aware, provides citations |
|
|
576
596
|
| **Deep Research** | OpenAI | Deep Research API with comprehensive analysis |
|
|
597
|
+
| **Premium TTS** | ElevenLabs | Most natural voices, 70+ languages, superior quality (v3) |
|
|
577
598
|
| **Speed Critical** | Groq | 10x faster inference, sub-second responses |
|
|
578
599
|
| **Privacy Critical** | Ollama | 100% local, no data leaves your servers |
|
|
579
600
|
| **Real-time Data** | XAI | Access to current information |
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartai',
|
|
6
|
-
version: '0.7.
|
|
6
|
+
version: '0.7.6',
|
|
7
7
|
description: 'SmartAi is a versatile TypeScript library designed to facilitate integration and interaction with various AI models, offering functionalities for chat, audio generation, document processing, and vision tasks.'
|
|
8
8
|
}
|
|
@@ -96,6 +96,18 @@ export class Conversation {
|
|
|
96
96
|
return conversation;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
+
public static async createWithElevenlabs(smartaiRefArg: SmartAi) {
|
|
100
|
+
if (!smartaiRefArg.elevenlabsProvider) {
|
|
101
|
+
throw new Error('ElevenLabs provider not available');
|
|
102
|
+
}
|
|
103
|
+
const conversation = new Conversation(smartaiRefArg, {
|
|
104
|
+
processFunction: async (input) => {
|
|
105
|
+
return '' // TODO implement proper streaming
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
return conversation;
|
|
109
|
+
}
|
|
110
|
+
|
|
99
111
|
// INSTANCE
|
|
100
112
|
smartaiRef: SmartAi
|
|
101
113
|
private systemMessage: string;
|
package/ts/classes.smartai.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Conversation } from './classes.conversation.js';
|
|
2
2
|
import * as plugins from './plugins.js';
|
|
3
3
|
import { AnthropicProvider } from './provider.anthropic.js';
|
|
4
|
+
import { ElevenLabsProvider } from './provider.elevenlabs.js';
|
|
4
5
|
import { OllamaProvider } from './provider.ollama.js';
|
|
5
6
|
import { OpenAiProvider } from './provider.openai.js';
|
|
6
7
|
import { PerplexityProvider } from './provider.perplexity.js';
|
|
@@ -15,6 +16,7 @@ export interface ISmartAiOptions {
|
|
|
15
16
|
perplexityToken?: string;
|
|
16
17
|
groqToken?: string;
|
|
17
18
|
xaiToken?: string;
|
|
19
|
+
elevenlabsToken?: string;
|
|
18
20
|
exo?: {
|
|
19
21
|
baseUrl?: string;
|
|
20
22
|
apiKey?: string;
|
|
@@ -24,9 +26,13 @@ export interface ISmartAiOptions {
|
|
|
24
26
|
model?: string;
|
|
25
27
|
visionModel?: string;
|
|
26
28
|
};
|
|
29
|
+
elevenlabs?: {
|
|
30
|
+
defaultVoiceId?: string;
|
|
31
|
+
defaultModelId?: string;
|
|
32
|
+
};
|
|
27
33
|
}
|
|
28
34
|
|
|
29
|
-
export type TProvider = 'openai' | 'anthropic' | 'perplexity' | 'ollama' | 'exo' | 'groq' | 'xai';
|
|
35
|
+
export type TProvider = 'openai' | 'anthropic' | 'perplexity' | 'ollama' | 'exo' | 'groq' | 'xai' | 'elevenlabs';
|
|
30
36
|
|
|
31
37
|
export class SmartAi {
|
|
32
38
|
public options: ISmartAiOptions;
|
|
@@ -38,6 +44,7 @@ export class SmartAi {
|
|
|
38
44
|
public exoProvider: ExoProvider;
|
|
39
45
|
public groqProvider: GroqProvider;
|
|
40
46
|
public xaiProvider: XAIProvider;
|
|
47
|
+
public elevenlabsProvider: ElevenLabsProvider;
|
|
41
48
|
|
|
42
49
|
constructor(optionsArg: ISmartAiOptions) {
|
|
43
50
|
this.options = optionsArg;
|
|
@@ -74,6 +81,14 @@ export class SmartAi {
|
|
|
74
81
|
});
|
|
75
82
|
await this.xaiProvider.start();
|
|
76
83
|
}
|
|
84
|
+
if (this.options.elevenlabsToken) {
|
|
85
|
+
this.elevenlabsProvider = new ElevenLabsProvider({
|
|
86
|
+
elevenlabsToken: this.options.elevenlabsToken,
|
|
87
|
+
defaultVoiceId: this.options.elevenlabs?.defaultVoiceId,
|
|
88
|
+
defaultModelId: this.options.elevenlabs?.defaultModelId,
|
|
89
|
+
});
|
|
90
|
+
await this.elevenlabsProvider.start();
|
|
91
|
+
}
|
|
77
92
|
if (this.options.ollama) {
|
|
78
93
|
this.ollamaProvider = new OllamaProvider({
|
|
79
94
|
baseUrl: this.options.ollama.baseUrl,
|
|
@@ -107,6 +122,9 @@ export class SmartAi {
|
|
|
107
122
|
if (this.xaiProvider) {
|
|
108
123
|
await this.xaiProvider.stop();
|
|
109
124
|
}
|
|
125
|
+
if (this.elevenlabsProvider) {
|
|
126
|
+
await this.elevenlabsProvider.stop();
|
|
127
|
+
}
|
|
110
128
|
if (this.ollamaProvider) {
|
|
111
129
|
await this.ollamaProvider.stop();
|
|
112
130
|
}
|
|
@@ -134,6 +152,8 @@ export class SmartAi {
|
|
|
134
152
|
return Conversation.createWithGroq(this);
|
|
135
153
|
case 'xai':
|
|
136
154
|
return Conversation.createWithXai(this);
|
|
155
|
+
case 'elevenlabs':
|
|
156
|
+
return Conversation.createWithElevenlabs(this);
|
|
137
157
|
default:
|
|
138
158
|
throw new Error('Provider not available');
|
|
139
159
|
}
|
package/ts/index.ts
CHANGED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
|
|
3
|
+
import { MultiModalModel } from './abstract.classes.multimodal.js';
|
|
4
|
+
import type {
|
|
5
|
+
ChatOptions,
|
|
6
|
+
ChatResponse,
|
|
7
|
+
ResearchOptions,
|
|
8
|
+
ResearchResponse,
|
|
9
|
+
ImageGenerateOptions,
|
|
10
|
+
ImageEditOptions,
|
|
11
|
+
ImageResponse
|
|
12
|
+
} from './abstract.classes.multimodal.js';
|
|
13
|
+
|
|
14
|
+
export interface IElevenLabsProviderOptions {
|
|
15
|
+
elevenlabsToken: string;
|
|
16
|
+
defaultVoiceId?: string;
|
|
17
|
+
defaultModelId?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface IElevenLabsVoiceSettings {
|
|
21
|
+
stability?: number;
|
|
22
|
+
similarity_boost?: number;
|
|
23
|
+
style?: number;
|
|
24
|
+
use_speaker_boost?: boolean;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export class ElevenLabsProvider extends MultiModalModel {
|
|
28
|
+
private options: IElevenLabsProviderOptions;
|
|
29
|
+
private baseUrl: string = 'https://api.elevenlabs.io/v1';
|
|
30
|
+
|
|
31
|
+
constructor(optionsArg: IElevenLabsProviderOptions) {
|
|
32
|
+
super();
|
|
33
|
+
this.options = optionsArg;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public async start() {
|
|
37
|
+
await super.start();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
public async stop() {
|
|
41
|
+
await super.stop();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
public async chat(optionsArg: ChatOptions): Promise<ChatResponse> {
|
|
45
|
+
throw new Error('ElevenLabs does not support chat functionality. This provider is specialized for text-to-speech only.');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public async chatStream(input: ReadableStream<Uint8Array>): Promise<ReadableStream<string>> {
|
|
49
|
+
throw new Error('ElevenLabs does not support chat streaming functionality. This provider is specialized for text-to-speech only.');
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public async audio(optionsArg: {
|
|
53
|
+
message: string;
|
|
54
|
+
voiceId?: string;
|
|
55
|
+
modelId?: string;
|
|
56
|
+
voiceSettings?: IElevenLabsVoiceSettings;
|
|
57
|
+
}): Promise<NodeJS.ReadableStream> {
|
|
58
|
+
// Use Samara voice as default fallback
|
|
59
|
+
const voiceId = optionsArg.voiceId || this.options.defaultVoiceId || '19STyYD15bswVz51nqLf';
|
|
60
|
+
|
|
61
|
+
const modelId = optionsArg.modelId || this.options.defaultModelId || 'eleven_v3';
|
|
62
|
+
|
|
63
|
+
const url = `${this.baseUrl}/text-to-speech/${voiceId}`;
|
|
64
|
+
|
|
65
|
+
const requestBody: any = {
|
|
66
|
+
text: optionsArg.message,
|
|
67
|
+
model_id: modelId,
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
if (optionsArg.voiceSettings) {
|
|
71
|
+
requestBody.voice_settings = optionsArg.voiceSettings;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const response = await plugins.smartrequest.SmartRequest.create()
|
|
75
|
+
.url(url)
|
|
76
|
+
.header('xi-api-key', this.options.elevenlabsToken)
|
|
77
|
+
.json(requestBody)
|
|
78
|
+
.autoDrain(false)
|
|
79
|
+
.post();
|
|
80
|
+
|
|
81
|
+
if (!response.ok) {
|
|
82
|
+
const errorText = await response.text();
|
|
83
|
+
throw new Error(`ElevenLabs API error: ${response.status} ${response.statusText} - ${errorText}`);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const nodeStream = response.streamNode();
|
|
87
|
+
return nodeStream;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
public async vision(optionsArg: { image: Buffer; prompt: string }): Promise<string> {
|
|
91
|
+
throw new Error('ElevenLabs does not support vision functionality. This provider is specialized for text-to-speech only.');
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
public async document(optionsArg: {
|
|
95
|
+
systemMessage: string;
|
|
96
|
+
userMessage: string;
|
|
97
|
+
pdfDocuments: Uint8Array[];
|
|
98
|
+
messageHistory: any[];
|
|
99
|
+
}): Promise<{ message: any }> {
|
|
100
|
+
throw new Error('ElevenLabs does not support document processing. This provider is specialized for text-to-speech only.');
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
public async research(optionsArg: ResearchOptions): Promise<ResearchResponse> {
|
|
104
|
+
throw new Error('ElevenLabs does not support research capabilities. This provider is specialized for text-to-speech only.');
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
public async imageGenerate(optionsArg: ImageGenerateOptions): Promise<ImageResponse> {
|
|
108
|
+
throw new Error('ElevenLabs does not support image generation. This provider is specialized for text-to-speech only.');
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
public async imageEdit(optionsArg: ImageEditOptions): Promise<ImageResponse> {
|
|
112
|
+
throw new Error('ElevenLabs does not support image editing. This provider is specialized for text-to-speech only.');
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
type TProcessFunction = (input: string) => Promise<string>;
|
|
2
|
-
export interface ISmartAiOptions {
|
|
3
|
-
processFunction: TProcessFunction;
|
|
4
|
-
}
|
|
5
|
-
export declare class SmartAi {
|
|
6
|
-
private processFunction;
|
|
7
|
-
private inputStreamWriter;
|
|
8
|
-
private outputStreamController;
|
|
9
|
-
constructor(options: ISmartAiOptions);
|
|
10
|
-
private setupOutputStream;
|
|
11
|
-
private setupInputStream;
|
|
12
|
-
getInputStreamWriter(): WritableStreamDefaultWriter<string>;
|
|
13
|
-
getOutputStream(): ReadableStream<string>;
|
|
14
|
-
}
|
|
15
|
-
export {};
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
export class SmartAi {
|
|
2
|
-
constructor(options) {
|
|
3
|
-
this.inputStreamWriter = null;
|
|
4
|
-
this.outputStreamController = null;
|
|
5
|
-
this.processFunction = options.processFunction;
|
|
6
|
-
}
|
|
7
|
-
setupOutputStream() {
|
|
8
|
-
return new ReadableStream({
|
|
9
|
-
start: (controller) => {
|
|
10
|
-
this.outputStreamController = controller;
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
setupInputStream() {
|
|
15
|
-
return new WritableStream({
|
|
16
|
-
write: async (chunk) => {
|
|
17
|
-
const processedData = await this.processFunction(chunk);
|
|
18
|
-
if (this.outputStreamController) {
|
|
19
|
-
this.outputStreamController.enqueue(processedData);
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
close: () => {
|
|
23
|
-
this.outputStreamController?.close();
|
|
24
|
-
},
|
|
25
|
-
abort: (err) => {
|
|
26
|
-
console.error('Stream aborted', err);
|
|
27
|
-
this.outputStreamController?.error(err);
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
getInputStreamWriter() {
|
|
32
|
-
if (!this.inputStreamWriter) {
|
|
33
|
-
const inputStream = this.setupInputStream();
|
|
34
|
-
this.inputStreamWriter = inputStream.getWriter();
|
|
35
|
-
}
|
|
36
|
-
return this.inputStreamWriter;
|
|
37
|
-
}
|
|
38
|
-
getOutputStream() {
|
|
39
|
-
return this.setupOutputStream();
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhaS5jbGFzc2VzLnNtYXJ0YWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGFpLmNsYXNzZXMuc21hcnRhaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLE9BQU8sT0FBTztJQUtsQixZQUFZLE9BQXdCO1FBSDVCLHNCQUFpQixHQUErQyxJQUFJLENBQUM7UUFDckUsMkJBQXNCLEdBQW1ELElBQUksQ0FBQztRQUdwRixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUM7SUFDakQsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixPQUFPLElBQUksY0FBYyxDQUFTO1lBQ2hDLEtBQUssRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsVUFBVSxDQUFDO1lBQzNDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLE9BQU8sSUFBSSxjQUFjLENBQVM7WUFDaEMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDckIsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLHNCQUFzQixFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sb0JBQW9CO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM1QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25ELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRU0sZUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2xDLENBQUM7Q0FDRiJ9
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const removeme = {};
|
|
2
|
-
export { removeme };
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhaS5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRhaS5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUNwQixPQUFPLEVBQ0wsUUFBUSxFQUNULENBQUEifQ==
|