@push.rocks/smartai 0.0.7 → 0.0.14
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 +3 -3
- package/dist_ts/abstract.classes.multimodal.d.ts +24 -2
- package/dist_ts/abstract.classes.multimodal.js +2 -2
- package/dist_ts/classes.conversation.d.ts +26 -0
- package/dist_ts/classes.conversation.js +95 -0
- package/dist_ts/classes.smartai.d.ts +25 -0
- package/dist_ts/classes.smartai.js +41 -0
- package/dist_ts/classes.tts.d.ts +6 -0
- package/dist_ts/classes.tts.js +10 -0
- package/dist_ts/index.d.ts +1 -1
- package/dist_ts/index.js +2 -2
- package/dist_ts/interfaces.d.ts +1 -0
- package/dist_ts/interfaces.js +2 -0
- package/dist_ts/plugins.d.ts +8 -3
- package/dist_ts/plugins.js +9 -4
- package/dist_ts/provider.anthropic.d.ts +25 -0
- package/dist_ts/provider.anthropic.js +41 -0
- package/dist_ts/provider.ollama.d.ts +2 -0
- package/dist_ts/provider.ollama.js +4 -0
- package/dist_ts/provider.openai.d.ts +33 -10
- package/dist_ts/provider.openai.js +63 -41
- package/dist_ts/provider.perplexity.d.ts +2 -0
- package/dist_ts/provider.perplexity.js +4 -0
- package/npmextra.json +16 -2
- package/package.json +25 -9
- package/readme.hints.md +1 -0
- package/readme.md +107 -27
- package/ts/00_commitinfo_data.ts +2 -2
- package/ts/abstract.classes.multimodal.ts +28 -4
- package/ts/classes.conversation.ts +116 -0
- package/ts/classes.smartai.ts +62 -0
- package/ts/classes.tts.ts +15 -0
- package/ts/index.ts +1 -1
- package/ts/interfaces.ts +0 -0
- package/ts/plugins.ts +12 -2
- package/ts/provider.anthropic.ts +62 -0
- package/ts/provider.ollama.ts +3 -0
- package/ts/provider.openai.ts +97 -51
- package/ts/provider.perplexity.ts +3 -0
- package/ts/smartai.classes.smartai.ts +0 -53
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartai',
|
|
6
|
-
version: '0.0.
|
|
7
|
-
description: '
|
|
6
|
+
version: '0.0.14',
|
|
7
|
+
description: 'A TypeScript library for integrating and interacting with multiple AI models, offering capabilities for chat and potentially audio responses.'
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLCtJQUErSTtDQUM3SixDQUFBIn0=
|
|
@@ -1,5 +1,27 @@
|
|
|
1
|
-
export declare abstract class
|
|
1
|
+
export declare abstract class MultiModalModel {
|
|
2
|
+
/**
|
|
3
|
+
* starts the model
|
|
4
|
+
*/
|
|
2
5
|
abstract start(): Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* stops the model
|
|
8
|
+
*/
|
|
3
9
|
abstract stop(): Promise<void>;
|
|
4
|
-
abstract
|
|
10
|
+
abstract chat(optionsArg: {
|
|
11
|
+
systemMessage: string;
|
|
12
|
+
userMessage: string;
|
|
13
|
+
messageHistory: {
|
|
14
|
+
role: 'assistant' | 'user';
|
|
15
|
+
content: string;
|
|
16
|
+
}[];
|
|
17
|
+
}): Promise<{
|
|
18
|
+
role: 'assistant';
|
|
19
|
+
message: string;
|
|
20
|
+
}>;
|
|
21
|
+
/**
|
|
22
|
+
* Defines a streaming interface for chat interactions.
|
|
23
|
+
* The implementation will vary based on the specific AI model.
|
|
24
|
+
* @param input
|
|
25
|
+
*/
|
|
26
|
+
abstract chatStream(input: ReadableStream<string>): Promise<ReadableStream<string>>;
|
|
5
27
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export class
|
|
1
|
+
export class MultiModalModel {
|
|
2
2
|
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QuY2xhc3Nlcy5tdWx0aW1vZGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvYWJzdHJhY3QuY2xhc3Nlcy5tdWx0aW1vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBZ0IsZUFBZTtDQStCcEMifQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { SmartAi } from "./classes.smartai.js";
|
|
2
|
+
type TProcessFunction = (input: string) => Promise<string>;
|
|
3
|
+
export interface IConversationOptions {
|
|
4
|
+
processFunction: TProcessFunction;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* a conversation
|
|
8
|
+
*/
|
|
9
|
+
export declare class Conversation {
|
|
10
|
+
static createWithOpenAi(smartaiRefArg: SmartAi): Promise<Conversation>;
|
|
11
|
+
static createWithAnthropic(smartaiRefArg: SmartAi): Promise<Conversation>;
|
|
12
|
+
static createWithPerplexity(smartaiRefArg: SmartAi): Promise<Conversation>;
|
|
13
|
+
static createWithOllama(smartaiRefArg: SmartAi): Promise<Conversation>;
|
|
14
|
+
smartaiRef: SmartAi;
|
|
15
|
+
private systemMessage;
|
|
16
|
+
private processFunction;
|
|
17
|
+
private inputStreamWriter;
|
|
18
|
+
private outputStreamController;
|
|
19
|
+
constructor(smartairefArg: SmartAi, options: IConversationOptions);
|
|
20
|
+
setSystemMessage(systemMessageArg: string): Promise<void>;
|
|
21
|
+
private setupOutputStream;
|
|
22
|
+
private setupInputStream;
|
|
23
|
+
getInputStreamWriter(): WritableStreamDefaultWriter<string>;
|
|
24
|
+
getOutputStream(): ReadableStream<string>;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { OpenAiProvider } from "./provider.openai.js";
|
|
2
|
+
/**
|
|
3
|
+
* a conversation
|
|
4
|
+
*/
|
|
5
|
+
export class Conversation {
|
|
6
|
+
// STATIC
|
|
7
|
+
static async createWithOpenAi(smartaiRefArg) {
|
|
8
|
+
if (!smartaiRefArg.openaiProvider) {
|
|
9
|
+
throw new Error('OpenAI provider not available');
|
|
10
|
+
}
|
|
11
|
+
const conversation = new Conversation(smartaiRefArg, {
|
|
12
|
+
processFunction: async (input) => {
|
|
13
|
+
return ''; // TODO implement proper streaming
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
return conversation;
|
|
17
|
+
}
|
|
18
|
+
static async createWithAnthropic(smartaiRefArg) {
|
|
19
|
+
if (!smartaiRefArg.anthropicProvider) {
|
|
20
|
+
throw new Error('Anthropic provider not available');
|
|
21
|
+
}
|
|
22
|
+
const conversation = new Conversation(smartaiRefArg, {
|
|
23
|
+
processFunction: async (input) => {
|
|
24
|
+
return ''; // TODO implement proper streaming
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
return conversation;
|
|
28
|
+
}
|
|
29
|
+
static async createWithPerplexity(smartaiRefArg) {
|
|
30
|
+
if (!smartaiRefArg.perplexityProvider) {
|
|
31
|
+
throw new Error('Perplexity provider not available');
|
|
32
|
+
}
|
|
33
|
+
const conversation = new Conversation(smartaiRefArg, {
|
|
34
|
+
processFunction: async (input) => {
|
|
35
|
+
return ''; // TODO implement proper streaming
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
return conversation;
|
|
39
|
+
}
|
|
40
|
+
static async createWithOllama(smartaiRefArg) {
|
|
41
|
+
if (!smartaiRefArg.ollamaProvider) {
|
|
42
|
+
throw new Error('Ollama provider not available');
|
|
43
|
+
}
|
|
44
|
+
const conversation = new Conversation(smartaiRefArg, {
|
|
45
|
+
processFunction: async (input) => {
|
|
46
|
+
return ''; // TODO implement proper streaming
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
return conversation;
|
|
50
|
+
}
|
|
51
|
+
constructor(smartairefArg, options) {
|
|
52
|
+
this.inputStreamWriter = null;
|
|
53
|
+
this.outputStreamController = null;
|
|
54
|
+
this.processFunction = options.processFunction;
|
|
55
|
+
}
|
|
56
|
+
async setSystemMessage(systemMessageArg) {
|
|
57
|
+
this.systemMessage = systemMessageArg;
|
|
58
|
+
}
|
|
59
|
+
setupOutputStream() {
|
|
60
|
+
return new ReadableStream({
|
|
61
|
+
start: (controller) => {
|
|
62
|
+
this.outputStreamController = controller;
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
setupInputStream() {
|
|
67
|
+
const writableStream = new WritableStream({
|
|
68
|
+
write: async (chunk) => {
|
|
69
|
+
const processedData = await this.processFunction(chunk);
|
|
70
|
+
if (this.outputStreamController) {
|
|
71
|
+
this.outputStreamController.enqueue(processedData);
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
close: () => {
|
|
75
|
+
this.outputStreamController?.close();
|
|
76
|
+
},
|
|
77
|
+
abort: (err) => {
|
|
78
|
+
console.error('Stream aborted', err);
|
|
79
|
+
this.outputStreamController?.error(err);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
return writableStream;
|
|
83
|
+
}
|
|
84
|
+
getInputStreamWriter() {
|
|
85
|
+
if (!this.inputStreamWriter) {
|
|
86
|
+
const inputStream = this.setupInputStream();
|
|
87
|
+
this.inputStreamWriter = inputStream.getWriter();
|
|
88
|
+
}
|
|
89
|
+
return this.inputStreamWriter;
|
|
90
|
+
}
|
|
91
|
+
getOutputStream() {
|
|
92
|
+
return this.setupOutputStream();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jb252ZXJzYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLmNvbnZlcnNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFRdEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUN2QixTQUFTO0lBQ0YsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFzQjtRQUN6RCxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxZQUFZLENBQUMsYUFBYSxFQUFFO1lBQ25ELGVBQWUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQy9CLE9BQU8sRUFBRSxDQUFBLENBQUMsa0NBQWtDO1lBQzlDLENBQUM7U0FDRixDQUFDLENBQUM7UUFDSCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxhQUFzQjtRQUM1RCxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLFlBQVksQ0FBQyxhQUFhLEVBQUU7WUFDbkQsZUFBZSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDL0IsT0FBTyxFQUFFLENBQUEsQ0FBQyxrQ0FBa0M7WUFDOUMsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUNILE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLGFBQXNCO1FBQzdELElBQUks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
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Conversation } from './classes.conversation.js';
|
|
2
|
+
import { AnthropicProvider } from './provider.anthropic.js';
|
|
3
|
+
import type { OllamaProvider } from './provider.ollama.js';
|
|
4
|
+
import { OpenAiProvider } from './provider.openai.js';
|
|
5
|
+
import type { PerplexityProvider } from './provider.perplexity.js';
|
|
6
|
+
export interface ISmartAiOptions {
|
|
7
|
+
openaiToken?: string;
|
|
8
|
+
anthropicToken?: string;
|
|
9
|
+
perplexityToken?: string;
|
|
10
|
+
}
|
|
11
|
+
export type TProvider = 'openai' | 'anthropic' | 'perplexity' | 'ollama';
|
|
12
|
+
export declare class SmartAi {
|
|
13
|
+
options: ISmartAiOptions;
|
|
14
|
+
openaiProvider: OpenAiProvider;
|
|
15
|
+
anthropicProvider: AnthropicProvider;
|
|
16
|
+
perplexityProvider: PerplexityProvider;
|
|
17
|
+
ollamaProvider: OllamaProvider;
|
|
18
|
+
constructor(optionsArg: ISmartAiOptions);
|
|
19
|
+
start(): Promise<void>;
|
|
20
|
+
stop(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* create a new conversation
|
|
23
|
+
*/
|
|
24
|
+
createConversation(provider: TProvider): Promise<Conversation>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Conversation } from './classes.conversation.js';
|
|
2
|
+
import * as plugins from './plugins.js';
|
|
3
|
+
import { AnthropicProvider } from './provider.anthropic.js';
|
|
4
|
+
import { OpenAiProvider } from './provider.openai.js';
|
|
5
|
+
export class SmartAi {
|
|
6
|
+
constructor(optionsArg) {
|
|
7
|
+
this.options = optionsArg;
|
|
8
|
+
}
|
|
9
|
+
async start() {
|
|
10
|
+
if (this.options.openaiToken) {
|
|
11
|
+
this.openaiProvider = new OpenAiProvider({
|
|
12
|
+
openaiToken: this.options.openaiToken,
|
|
13
|
+
});
|
|
14
|
+
await this.openaiProvider.start();
|
|
15
|
+
}
|
|
16
|
+
if (this.options.anthropicToken) {
|
|
17
|
+
this.anthropicProvider = new AnthropicProvider({
|
|
18
|
+
anthropicToken: this.options.anthropicToken,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async stop() { }
|
|
23
|
+
/**
|
|
24
|
+
* create a new conversation
|
|
25
|
+
*/
|
|
26
|
+
createConversation(provider) {
|
|
27
|
+
switch (provider) {
|
|
28
|
+
case 'openai':
|
|
29
|
+
return Conversation.createWithOpenAi(this);
|
|
30
|
+
case 'anthropic':
|
|
31
|
+
return Conversation.createWithAnthropic(this);
|
|
32
|
+
case 'perplexity':
|
|
33
|
+
return Conversation.createWithPerplexity(this);
|
|
34
|
+
case 'ollama':
|
|
35
|
+
return Conversation.createWithOllama(this);
|
|
36
|
+
default:
|
|
37
|
+
throw new Error('Provider not available');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5zbWFydGFpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5zbWFydGFpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFZdEQsTUFBTSxPQUFPLE9BQU87SUFRbEIsWUFBWSxVQUEyQjtRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztJQUM1QixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUs7UUFDaEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUM7Z0JBQ3ZDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7YUFDdEMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLENBQUM7Z0JBQzdDLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWM7YUFDNUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSSxLQUFJLENBQUM7SUFFdEI7O09BRUc7SUFDSCxrQkFBa0IsQ0FBQyxRQUFtQjtRQUNwQyxRQUFRLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLEtBQUssUUFBUTtnQkFDWCxPQUFPLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QyxLQUFLLFdBQVc7Z0JBQ2QsT0FBTyxZQUFZLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEQsS0FBSyxZQUFZO2dCQUNmLE9BQU8sWUFBWSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pELEtBQUssUUFBUTtnQkFDWCxPQUFPLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QztnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
export class TTS {
|
|
3
|
+
static async createWithOpenAi(smartaiRef) {
|
|
4
|
+
return new TTS(smartaiRef);
|
|
5
|
+
}
|
|
6
|
+
constructor(smartairefArg) {
|
|
7
|
+
this.smartaiRef = smartairefArg;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50dHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLnR0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxNQUFNLE9BQU8sR0FBRztJQUNQLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBbUI7UUFDdEQsT0FBTyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBS0QsWUFBWSxhQUFzQjtRQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztJQUNsQyxDQUFDO0NBQ0YifQ==
|
package/dist_ts/index.d.ts
CHANGED
package/dist_ts/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './classes.smartai.js';
|
|
2
2
|
export * from './abstract.classes.multimodal.js';
|
|
3
3
|
export * from './provider.openai.js';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxzQkFBc0IsQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist_ts/plugins.d.ts
CHANGED
|
@@ -2,9 +2,14 @@
|
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
export { path, };
|
|
4
4
|
import * as qenv from '@push.rocks/qenv';
|
|
5
|
+
import * as smartarray from '@push.rocks/smartarray';
|
|
6
|
+
import * as smartfile from '@push.rocks/smartfile';
|
|
5
7
|
import * as smartpath from '@push.rocks/smartpath';
|
|
8
|
+
import * as smartpdf from '@push.rocks/smartpdf';
|
|
6
9
|
import * as smartpromise from '@push.rocks/smartpromise';
|
|
7
|
-
import * as
|
|
8
|
-
|
|
10
|
+
import * as smartrequest from '@push.rocks/smartrequest';
|
|
11
|
+
import * as webstream from '@push.rocks/webstream';
|
|
12
|
+
export { smartarray, qenv, smartfile, smartpath, smartpdf, smartpromise, smartrequest, webstream, };
|
|
13
|
+
import * as anthropic from '@anthropic-ai/sdk';
|
|
9
14
|
import * as openai from 'openai';
|
|
10
|
-
export { openai, };
|
|
15
|
+
export { anthropic, openai, };
|
package/dist_ts/plugins.js
CHANGED
|
@@ -3,11 +3,16 @@ import * as path from 'path';
|
|
|
3
3
|
export { path, };
|
|
4
4
|
// @push.rocks scope
|
|
5
5
|
import * as qenv from '@push.rocks/qenv';
|
|
6
|
+
import * as smartarray from '@push.rocks/smartarray';
|
|
7
|
+
import * as smartfile from '@push.rocks/smartfile';
|
|
6
8
|
import * as smartpath from '@push.rocks/smartpath';
|
|
9
|
+
import * as smartpdf from '@push.rocks/smartpdf';
|
|
7
10
|
import * as smartpromise from '@push.rocks/smartpromise';
|
|
8
|
-
import * as
|
|
9
|
-
|
|
11
|
+
import * as smartrequest from '@push.rocks/smartrequest';
|
|
12
|
+
import * as webstream from '@push.rocks/webstream';
|
|
13
|
+
export { smartarray, qenv, smartfile, smartpath, smartpdf, smartpromise, smartrequest, webstream, };
|
|
10
14
|
// third party
|
|
15
|
+
import * as anthropic from '@anthropic-ai/sdk';
|
|
11
16
|
import * as openai from 'openai';
|
|
12
|
-
export { openai, };
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
export { anthropic, openai, };
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFDTCxJQUFJLEdBQ0wsQ0FBQTtBQUVELG9CQUFvQjtBQUNwQixPQUFPLEtBQUssSUFBSSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxRQUFRLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxLQUFLLFlBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEtBQUssWUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFFbkQsT0FBTyxFQUNMLFVBQVUsRUFDVixJQUFJLEVBQ0osU0FBUyxFQUNULFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxFQUNaLFlBQVksRUFDWixTQUFTLEdBQ1YsQ0FBQTtBQUVELGNBQWM7QUFDZCxPQUFPLEtBQUssU0FBUyxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRWpDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxHQUNQLENBQUEifQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
import { MultiModalModel } from './abstract.classes.multimodal.js';
|
|
3
|
+
export interface IAnthropicProviderOptions {
|
|
4
|
+
anthropicToken: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class AnthropicProvider extends MultiModalModel {
|
|
7
|
+
private options;
|
|
8
|
+
anthropicApiClient: plugins.anthropic.default;
|
|
9
|
+
constructor(optionsArg: IAnthropicProviderOptions);
|
|
10
|
+
start(): Promise<void>;
|
|
11
|
+
stop(): Promise<void>;
|
|
12
|
+
chatStream(input: ReadableStream<string>): Promise<ReadableStream<string>>;
|
|
13
|
+
chat(optionsArg: {
|
|
14
|
+
systemMessage: string;
|
|
15
|
+
userMessage: string;
|
|
16
|
+
messageHistory: {
|
|
17
|
+
role: 'assistant' | 'user';
|
|
18
|
+
content: string;
|
|
19
|
+
}[];
|
|
20
|
+
}): Promise<{
|
|
21
|
+
role: "assistant";
|
|
22
|
+
message: string;
|
|
23
|
+
}>;
|
|
24
|
+
private audio;
|
|
25
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
import * as paths from './paths.js';
|
|
3
|
+
import { MultiModalModel } from './abstract.classes.multimodal.js';
|
|
4
|
+
export class AnthropicProvider extends MultiModalModel {
|
|
5
|
+
constructor(optionsArg) {
|
|
6
|
+
super();
|
|
7
|
+
this.options = optionsArg; // Ensure the token is stored
|
|
8
|
+
}
|
|
9
|
+
async start() {
|
|
10
|
+
this.anthropicApiClient = new plugins.anthropic.default({
|
|
11
|
+
apiKey: this.options.anthropicToken,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
async stop() { }
|
|
15
|
+
async chatStream(input) {
|
|
16
|
+
// TODO: implement for OpenAI
|
|
17
|
+
const returnStream = new ReadableStream();
|
|
18
|
+
return returnStream;
|
|
19
|
+
}
|
|
20
|
+
// Implementing the synchronous chat interaction
|
|
21
|
+
async chat(optionsArg) {
|
|
22
|
+
const result = await this.anthropicApiClient.messages.create({
|
|
23
|
+
model: 'claude-3-opus-20240229',
|
|
24
|
+
system: optionsArg.systemMessage,
|
|
25
|
+
messages: [
|
|
26
|
+
...optionsArg.messageHistory,
|
|
27
|
+
{ role: 'user', content: optionsArg.userMessage },
|
|
28
|
+
],
|
|
29
|
+
max_tokens: 4000,
|
|
30
|
+
});
|
|
31
|
+
return {
|
|
32
|
+
role: result.role,
|
|
33
|
+
message: result.content.join('\n'),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
async audio(messageArg) {
|
|
37
|
+
// Anthropic does not provide an audio API, so this method is not implemented.
|
|
38
|
+
throw new Error('Audio generation is not yet supported by Anthropic.');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuYW50aHJvcGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvcHJvdmlkZXIuYW50aHJvcGljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU1uRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQUlwRCxZQUFZLFVBQXFDO1FBQy9DLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUEsQ0FBQyw2QkFBNkI7SUFDekQsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDdEQsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYztTQUNwQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksS0FBSSxDQUFDO0lBRVIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUE2QjtRQUNuRCw2QkFBNkI7UUFFN0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUMxQyxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsZ0RBQWdEO0lBQ3pDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFPakI7UUFDQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzNELEtBQUssRUFBRSx3QkFBd0I7WUFDL0IsTUFBTSxFQUFFLFVBQVUsQ0FBQyxhQUFhO1lBQ2hDLFFBQVEsRUFBRTtnQkFDUixHQUFHLFVBQVUsQ0FBQyxjQUFjO2dCQUM1QixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxXQUFXLEVBQUU7YUFDbEQ7WUFDRCxVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFtQjtZQUNoQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ25DLENBQUM7SUFDSixDQUFDO0lBRU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFrQjtRQUNwQyw4RUFBOEU7UUFDOUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
export class OllamaProvider {
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIub2xsYW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvcHJvdmlkZXIub2xsYW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE1BQU0sT0FBTyxjQUFjO0NBQUcifQ==
|
|
@@ -1,17 +1,40 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
1
2
|
import * as plugins from './plugins.js';
|
|
2
|
-
import {
|
|
3
|
-
export
|
|
4
|
-
|
|
3
|
+
import { MultiModalModel } from './abstract.classes.multimodal.js';
|
|
4
|
+
export interface IOpenaiProviderOptions {
|
|
5
|
+
openaiToken: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class OpenAiProvider extends MultiModalModel {
|
|
8
|
+
private options;
|
|
5
9
|
openAiApiClient: plugins.openai.default;
|
|
6
|
-
|
|
10
|
+
smartpdfInstance: plugins.smartpdf.SmartPdf;
|
|
11
|
+
constructor(optionsArg: IOpenaiProviderOptions);
|
|
7
12
|
start(): Promise<void>;
|
|
8
13
|
stop(): Promise<void>;
|
|
9
|
-
chatStream(input: ReadableStream<string>): ReadableStream<string
|
|
10
|
-
chat(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
chatStream(input: ReadableStream<string>): Promise<ReadableStream<string>>;
|
|
15
|
+
chat(optionsArg: {
|
|
16
|
+
systemMessage: string;
|
|
17
|
+
userMessage: string;
|
|
18
|
+
messageHistory: {
|
|
19
|
+
role: 'assistant' | 'user';
|
|
20
|
+
content: string;
|
|
21
|
+
}[];
|
|
22
|
+
}): Promise<{
|
|
23
|
+
role: "assistant";
|
|
24
|
+
message: string;
|
|
25
|
+
}>;
|
|
26
|
+
audio(optionsArg: {
|
|
27
|
+
message: string;
|
|
28
|
+
}): Promise<NodeJS.ReadableStream>;
|
|
29
|
+
document(optionsArg: {
|
|
30
|
+
systemMessage: string;
|
|
31
|
+
userMessage: string;
|
|
32
|
+
pdfDocuments: Uint8Array[];
|
|
33
|
+
messageHistory: {
|
|
34
|
+
role: 'assistant' | 'user';
|
|
35
|
+
content: any;
|
|
36
|
+
}[];
|
|
37
|
+
}): Promise<{
|
|
14
38
|
message: import("openai/resources/index.mjs").ChatCompletionMessage;
|
|
15
39
|
}>;
|
|
16
|
-
audio(messageArg: string): Promise<unknown>;
|
|
17
40
|
}
|
|
@@ -1,70 +1,92 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
2
|
import * as paths from './paths.js';
|
|
3
|
-
import {
|
|
4
|
-
export class OpenAiProvider extends
|
|
5
|
-
constructor(
|
|
3
|
+
import { MultiModalModel } from './abstract.classes.multimodal.js';
|
|
4
|
+
export class OpenAiProvider extends MultiModalModel {
|
|
5
|
+
constructor(optionsArg) {
|
|
6
6
|
super();
|
|
7
|
-
this.
|
|
7
|
+
this.options = optionsArg;
|
|
8
8
|
}
|
|
9
9
|
async start() {
|
|
10
10
|
this.openAiApiClient = new plugins.openai.default({
|
|
11
|
-
apiKey: this.
|
|
11
|
+
apiKey: this.options.openaiToken,
|
|
12
12
|
dangerouslyAllowBrowser: true,
|
|
13
13
|
});
|
|
14
|
+
this.smartpdfInstance = new plugins.smartpdf.SmartPdf();
|
|
14
15
|
}
|
|
15
16
|
async stop() { }
|
|
16
|
-
chatStream(input) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return
|
|
20
|
-
async start(controller) {
|
|
21
|
-
const reader = input.getReader();
|
|
22
|
-
try {
|
|
23
|
-
let done, value;
|
|
24
|
-
while ((({ done, value } = await reader.read()), !done)) {
|
|
25
|
-
const userMessage = decoder.decode(value, { stream: true });
|
|
26
|
-
messageHistory.push({ role: 'user', content: userMessage });
|
|
27
|
-
const aiResponse = await this.chat('', userMessage, messageHistory);
|
|
28
|
-
messageHistory.push({ role: 'assistant', content: aiResponse.message });
|
|
29
|
-
// Directly enqueue the string response instead of encoding it first
|
|
30
|
-
controller.enqueue(aiResponse.message);
|
|
31
|
-
}
|
|
32
|
-
controller.close();
|
|
33
|
-
}
|
|
34
|
-
catch (err) {
|
|
35
|
-
controller.error(err);
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
});
|
|
17
|
+
async chatStream(input) {
|
|
18
|
+
// TODO: implement for OpenAI
|
|
19
|
+
const returnStream = new ReadableStream();
|
|
20
|
+
return returnStream;
|
|
39
21
|
}
|
|
40
22
|
// Implementing the synchronous chat interaction
|
|
41
|
-
async chat(
|
|
23
|
+
async chat(optionsArg) {
|
|
42
24
|
const result = await this.openAiApiClient.chat.completions.create({
|
|
43
|
-
model: 'gpt-
|
|
25
|
+
model: 'gpt-4-turbo-preview',
|
|
44
26
|
messages: [
|
|
45
|
-
{ role: 'system', content: systemMessage },
|
|
46
|
-
...messageHistory,
|
|
47
|
-
{ role: 'user', content: userMessage },
|
|
27
|
+
{ role: 'system', content: optionsArg.systemMessage },
|
|
28
|
+
...optionsArg.messageHistory,
|
|
29
|
+
{ role: 'user', content: optionsArg.userMessage },
|
|
48
30
|
],
|
|
49
31
|
});
|
|
50
32
|
return {
|
|
51
|
-
|
|
33
|
+
role: result.choices[0].message.role,
|
|
34
|
+
message: result.choices[0].message.content,
|
|
52
35
|
};
|
|
53
36
|
}
|
|
54
|
-
async audio(
|
|
37
|
+
async audio(optionsArg) {
|
|
55
38
|
const done = plugins.smartpromise.defer();
|
|
56
39
|
const result = await this.openAiApiClient.audio.speech.create({
|
|
57
40
|
model: 'tts-1-hd',
|
|
58
|
-
input:
|
|
41
|
+
input: optionsArg.message,
|
|
59
42
|
voice: 'nova',
|
|
60
43
|
response_format: 'mp3',
|
|
61
44
|
speed: 1,
|
|
62
45
|
});
|
|
63
|
-
const stream = result.body
|
|
64
|
-
|
|
65
|
-
done.resolve();
|
|
66
|
-
});
|
|
46
|
+
const stream = result.body;
|
|
47
|
+
done.resolve(stream);
|
|
67
48
|
return done.promise;
|
|
68
49
|
}
|
|
50
|
+
async document(optionsArg) {
|
|
51
|
+
let pdfDocumentImageBytesArray = [];
|
|
52
|
+
for (const pdfDocument of optionsArg.pdfDocuments) {
|
|
53
|
+
const documentImageArray = await this.smartpdfInstance.convertPDFToPngBytes(pdfDocument);
|
|
54
|
+
pdfDocumentImageBytesArray = pdfDocumentImageBytesArray.concat(documentImageArray);
|
|
55
|
+
}
|
|
56
|
+
console.log(`image smartfile array`);
|
|
57
|
+
console.log(pdfDocumentImageBytesArray.map((smartfile) => smartfile.length));
|
|
58
|
+
const smartfileArray = await plugins.smartarray.map(pdfDocumentImageBytesArray, async (pdfDocumentImageBytes) => {
|
|
59
|
+
return plugins.smartfile.SmartFile.fromBuffer('pdfDocumentImage.jpg', Buffer.from(pdfDocumentImageBytes));
|
|
60
|
+
});
|
|
61
|
+
const result = await this.openAiApiClient.chat.completions.create({
|
|
62
|
+
model: 'gpt-4-vision-preview',
|
|
63
|
+
// response_format: { type: "json_object" }, // not supported for now
|
|
64
|
+
messages: [
|
|
65
|
+
{ role: 'system', content: optionsArg.systemMessage },
|
|
66
|
+
...optionsArg.messageHistory,
|
|
67
|
+
{
|
|
68
|
+
role: 'user',
|
|
69
|
+
content: [
|
|
70
|
+
{ type: 'text', text: optionsArg.userMessage },
|
|
71
|
+
...(() => {
|
|
72
|
+
const returnArray = [];
|
|
73
|
+
for (const imageBytes of pdfDocumentImageBytesArray) {
|
|
74
|
+
returnArray.push({
|
|
75
|
+
type: 'image_url',
|
|
76
|
+
image_url: {
|
|
77
|
+
url: 'data:image/png;base64,' + Buffer.from(imageBytes).toString('base64'),
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
return returnArray;
|
|
82
|
+
})(),
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
});
|
|
87
|
+
return {
|
|
88
|
+
message: result.choices[0].message,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
69
91
|
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIub3BlbmFpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvcHJvdmlkZXIub3BlbmFpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU1uRSxNQUFNLE9BQU8sY0FBZSxTQUFRLGVBQWU7SUFLakQsWUFBWSxVQUFrQztRQUM1QyxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO0lBQzVCLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNoQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDaEQsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVztZQUNoQyx1QkFBdUIsRUFBRSxJQUFJO1NBQzlCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUQsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJLEtBQUksQ0FBQztJQUVmLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBNkI7UUFDbkQsNkJBQTZCO1FBRTdCLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDMUMsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVELGdEQUFnRDtJQUN6QyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBT2pCO1FBQ0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO1lBQ2hFLEtBQUssRUFBRSxxQkFBcUI7WUFFNUIsUUFBUSxFQUFFO2dCQUNSLEVB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
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
export class PerplexityProvider {
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIucGVycGxleGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3Byb3ZpZGVyLnBlcnBsZXhpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFeEMsTUFBTSxPQUFPLGtCQUFrQjtDQUFHIn0=
|