modular-voice-agent-sdk 1.3.0 → 1.4.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/dist/backends/cloud/anthropic-provider.d.ts +19 -0
- package/dist/backends/cloud/anthropic-provider.d.ts.map +1 -0
- package/dist/backends/cloud/anthropic-provider.js +189 -0
- package/dist/backends/cloud/anthropic-provider.js.map +1 -0
- package/dist/backends/cloud/index.d.ts +5 -2
- package/dist/backends/cloud/index.d.ts.map +1 -1
- package/dist/backends/cloud/index.js +4 -2
- package/dist/backends/cloud/index.js.map +1 -1
- package/dist/backends/cloud/llm.d.ts +7 -7
- package/dist/backends/cloud/llm.d.ts.map +1 -1
- package/dist/backends/cloud/llm.js +43 -98
- package/dist/backends/cloud/llm.js.map +1 -1
- package/dist/backends/cloud/openai-provider.d.ts +19 -0
- package/dist/backends/cloud/openai-provider.d.ts.map +1 -0
- package/dist/backends/cloud/openai-provider.js +133 -0
- package/dist/backends/cloud/openai-provider.js.map +1 -0
- package/dist/backends/cloud/providers.d.ts +63 -0
- package/dist/backends/cloud/providers.d.ts.map +1 -0
- package/dist/backends/cloud/providers.js +6 -0
- package/dist/backends/cloud/providers.js.map +1 -0
- package/dist/backends/native/index.d.ts +2 -0
- package/dist/backends/native/index.d.ts.map +1 -1
- package/dist/backends/native/index.js +1 -0
- package/dist/backends/native/index.js.map +1 -1
- package/dist/backends/native/tts-providers.d.ts +47 -0
- package/dist/backends/native/tts-providers.d.ts.map +1 -0
- package/dist/backends/native/tts-providers.js +112 -0
- package/dist/backends/native/tts-providers.js.map +1 -0
- package/dist/backends/native/tts.d.ts +4 -5
- package/dist/backends/native/tts.d.ts.map +1 -1
- package/dist/backends/native/tts.js +19 -34
- package/dist/backends/native/tts.js.map +1 -1
- package/dist/client/voice-client.d.ts +4 -4
- package/dist/client/voice-client.js +4 -4
- package/dist/server/handler.d.ts +21 -0
- package/dist/server/handler.d.ts.map +1 -1
- package/dist/server/handler.js +54 -0
- package/dist/server/handler.js.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/services/llm-logger.d.ts +5 -0
- package/dist/services/llm-logger.d.ts.map +1 -1
- package/dist/services/llm-logger.js +6 -0
- package/dist/services/llm-logger.js.map +1 -1
- package/dist/services/text-normalizer.d.ts +3 -0
- package/dist/services/text-normalizer.d.ts.map +1 -1
- package/dist/services/text-normalizer.js +51 -6
- package/dist/services/text-normalizer.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/voice-pipeline.d.ts.map +1 -1
- package/dist/voice-pipeline.js +11 -1
- package/dist/voice-pipeline.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anthropic Messages Provider
|
|
3
|
+
* Supports Anthropic Claude API with prompt caching
|
|
4
|
+
*/
|
|
5
|
+
import type { Message, ToolDefinition } from '../../types';
|
|
6
|
+
import type { LLMProvider, SystemPromptBlock, ParsedStreamChunk } from './providers';
|
|
7
|
+
export declare class AnthropicMessagesProvider implements LLMProvider {
|
|
8
|
+
formatRequest(messages: Message[], systemPrompt: string | SystemPromptBlock[] | undefined, options: {
|
|
9
|
+
model: string;
|
|
10
|
+
tools?: ToolDefinition[];
|
|
11
|
+
modelParams?: Record<string, unknown>;
|
|
12
|
+
}): Record<string, unknown>;
|
|
13
|
+
parseStreamChunk(chunk: string): ParsedStreamChunk | null;
|
|
14
|
+
getEndpoint(baseUrl: string): string;
|
|
15
|
+
getHeaders(apiKey?: string): Record<string, string>;
|
|
16
|
+
private convertMessages;
|
|
17
|
+
private convertTools;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=anthropic-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-provider.d.ts","sourceRoot":"","sources":["../../../src/backends/cloud/anthropic-provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAiC,MAAM,aAAa,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA8BrF,qBAAa,yBAA0B,YAAW,WAAW;IAC3D,aAAa,CACX,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,MAAM,GAAG,iBAAiB,EAAE,GAAG,SAAS,EACtD,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACvC,GACA,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAsC1B,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAmEzD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIpC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAanD,OAAO,CAAC,eAAe;IA2EvB,OAAO,CAAC,YAAY;CAOrB"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anthropic Messages Provider
|
|
3
|
+
* Supports Anthropic Claude API with prompt caching
|
|
4
|
+
*/
|
|
5
|
+
export class AnthropicMessagesProvider {
|
|
6
|
+
formatRequest(messages, systemPrompt, options) {
|
|
7
|
+
const anthropicMessages = this.convertMessages(messages);
|
|
8
|
+
const body = {
|
|
9
|
+
model: options.model,
|
|
10
|
+
messages: anthropicMessages,
|
|
11
|
+
stream: true,
|
|
12
|
+
max_tokens: 4096, // Anthropic requires max_tokens
|
|
13
|
+
...options.modelParams,
|
|
14
|
+
};
|
|
15
|
+
// Add system prompt if provided
|
|
16
|
+
if (systemPrompt) {
|
|
17
|
+
if (typeof systemPrompt === 'string') {
|
|
18
|
+
body.system = systemPrompt;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
// Structured system prompt with cache control
|
|
22
|
+
body.system = systemPrompt.map(block => {
|
|
23
|
+
const systemBlock = {
|
|
24
|
+
type: 'text',
|
|
25
|
+
text: block.text,
|
|
26
|
+
};
|
|
27
|
+
if (block.cacheControl) {
|
|
28
|
+
systemBlock.cache_control = { type: 'ephemeral' };
|
|
29
|
+
}
|
|
30
|
+
return systemBlock;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Add tools if provided
|
|
35
|
+
if (options.tools && options.tools.length > 0) {
|
|
36
|
+
body.tools = this.convertTools(options.tools);
|
|
37
|
+
}
|
|
38
|
+
return body;
|
|
39
|
+
}
|
|
40
|
+
parseStreamChunk(chunk) {
|
|
41
|
+
try {
|
|
42
|
+
const parsed = JSON.parse(chunk);
|
|
43
|
+
// Check for API error
|
|
44
|
+
if (parsed.error) {
|
|
45
|
+
throw new Error(`Anthropic stream error: ${JSON.stringify(parsed.error)}`);
|
|
46
|
+
}
|
|
47
|
+
const result = {};
|
|
48
|
+
// Anthropic streaming event types:
|
|
49
|
+
// - message_start: Contains message metadata
|
|
50
|
+
// - content_block_start: New content block started
|
|
51
|
+
// - content_block_delta: Incremental content
|
|
52
|
+
// - content_block_stop: Content block finished
|
|
53
|
+
// - message_delta: Message metadata updates (e.g., stop_reason)
|
|
54
|
+
// - message_stop: Stream complete
|
|
55
|
+
if (parsed.type === 'content_block_delta') {
|
|
56
|
+
const delta = parsed.delta;
|
|
57
|
+
// Text delta
|
|
58
|
+
if (delta.type === 'text_delta') {
|
|
59
|
+
result.content = delta.text;
|
|
60
|
+
}
|
|
61
|
+
// Tool use delta (input JSON being streamed)
|
|
62
|
+
if (delta.type === 'input_json_delta') {
|
|
63
|
+
result.toolCalls = [{
|
|
64
|
+
index: parsed.index ?? 0,
|
|
65
|
+
arguments: delta.partial_json,
|
|
66
|
+
}];
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else if (parsed.type === 'content_block_start') {
|
|
70
|
+
const content = parsed.content_block;
|
|
71
|
+
// Tool use started
|
|
72
|
+
if (content.type === 'tool_use') {
|
|
73
|
+
result.toolCalls = [{
|
|
74
|
+
index: parsed.index ?? 0,
|
|
75
|
+
id: content.id,
|
|
76
|
+
name: content.name,
|
|
77
|
+
arguments: '', // Will be streamed via input_json_delta
|
|
78
|
+
}];
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else if (parsed.type === 'message_delta') {
|
|
82
|
+
// Contains stop_reason and usage info
|
|
83
|
+
if (parsed.delta.stop_reason) {
|
|
84
|
+
result.finishReason = parsed.delta.stop_reason;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else if (parsed.type === 'message_stop') {
|
|
88
|
+
result.done = true;
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
if (e instanceof SyntaxError) {
|
|
94
|
+
// Skip malformed JSON
|
|
95
|
+
console.warn('Anthropic: Skipping malformed JSON chunk:', chunk.substring(0, 100));
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
// Re-throw actual errors
|
|
99
|
+
throw e;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
getEndpoint(baseUrl) {
|
|
103
|
+
return `${baseUrl}/messages`;
|
|
104
|
+
}
|
|
105
|
+
getHeaders(apiKey) {
|
|
106
|
+
const headers = {
|
|
107
|
+
'Content-Type': 'application/json',
|
|
108
|
+
'anthropic-version': '2023-06-01',
|
|
109
|
+
};
|
|
110
|
+
if (apiKey) {
|
|
111
|
+
headers['x-api-key'] = apiKey;
|
|
112
|
+
}
|
|
113
|
+
return headers;
|
|
114
|
+
}
|
|
115
|
+
convertMessages(messages) {
|
|
116
|
+
const anthropicMessages = [];
|
|
117
|
+
for (const m of messages) {
|
|
118
|
+
// Skip system messages (handled separately in formatRequest)
|
|
119
|
+
if (m.role === 'system') {
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
// Handle tool messages
|
|
123
|
+
if (m.role === 'tool') {
|
|
124
|
+
const toolMsg = m;
|
|
125
|
+
// Anthropic requires tool results to be in user messages
|
|
126
|
+
const lastMsg = anthropicMessages[anthropicMessages.length - 1];
|
|
127
|
+
const toolResultBlock = {
|
|
128
|
+
type: 'tool_result',
|
|
129
|
+
tool_use_id: toolMsg.toolCallId,
|
|
130
|
+
content: toolMsg.content,
|
|
131
|
+
};
|
|
132
|
+
if (lastMsg && lastMsg.role === 'user' && Array.isArray(lastMsg.content)) {
|
|
133
|
+
// Append to existing user message
|
|
134
|
+
lastMsg.content.push(toolResultBlock);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
// Create new user message
|
|
138
|
+
anthropicMessages.push({
|
|
139
|
+
role: 'user',
|
|
140
|
+
content: [toolResultBlock],
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
// Handle assistant messages with tool calls
|
|
146
|
+
if (m.role === 'assistant') {
|
|
147
|
+
const assistantMsg = m;
|
|
148
|
+
if (assistantMsg.toolCalls && assistantMsg.toolCalls.length > 0) {
|
|
149
|
+
const content = [];
|
|
150
|
+
// Add text content if present
|
|
151
|
+
if (assistantMsg.content) {
|
|
152
|
+
content.push({
|
|
153
|
+
type: 'text',
|
|
154
|
+
text: assistantMsg.content,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
// Add tool use blocks
|
|
158
|
+
for (const tc of assistantMsg.toolCalls) {
|
|
159
|
+
content.push({
|
|
160
|
+
type: 'tool_use',
|
|
161
|
+
id: tc.id,
|
|
162
|
+
name: tc.name,
|
|
163
|
+
input: tc.arguments,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
anthropicMessages.push({
|
|
167
|
+
role: 'assistant',
|
|
168
|
+
content,
|
|
169
|
+
});
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Regular messages (user, assistant without tool calls)
|
|
174
|
+
anthropicMessages.push({
|
|
175
|
+
role: m.role,
|
|
176
|
+
content: m.content,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
return anthropicMessages;
|
|
180
|
+
}
|
|
181
|
+
convertTools(tools) {
|
|
182
|
+
return tools.map((tool) => ({
|
|
183
|
+
name: tool.name,
|
|
184
|
+
description: tool.description,
|
|
185
|
+
input_schema: tool.parameters,
|
|
186
|
+
}));
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=anthropic-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-provider.js","sourceRoot":"","sources":["../../../src/backends/cloud/anthropic-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Cloud Backend -
|
|
3
|
-
* Works with: OpenAI, Ollama, vLLM, LMStudio, and any
|
|
2
|
+
* Cloud Backend - Multi-provider API support
|
|
3
|
+
* Works with: OpenAI, Anthropic, Ollama, vLLM, LMStudio, and any compatible endpoint
|
|
4
4
|
*/
|
|
5
5
|
export { CloudLLM } from './llm';
|
|
6
6
|
export type { CloudLLMConfig } from '../../types';
|
|
7
7
|
export { CloudAudioLLM } from './audio-llm';
|
|
8
8
|
export type { CloudAudioLLMConfig } from './audio-llm';
|
|
9
|
+
export type { LLMProvider, SystemPromptBlock, ParsedStreamChunk } from './providers';
|
|
10
|
+
export { OpenAICompletionsProvider } from './openai-provider';
|
|
11
|
+
export { AnthropicMessagesProvider } from './anthropic-provider';
|
|
9
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backends/cloud/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backends/cloud/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGvD,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Cloud Backend -
|
|
3
|
-
* Works with: OpenAI, Ollama, vLLM, LMStudio, and any
|
|
2
|
+
* Cloud Backend - Multi-provider API support
|
|
3
|
+
* Works with: OpenAI, Anthropic, Ollama, vLLM, LMStudio, and any compatible endpoint
|
|
4
4
|
*/
|
|
5
5
|
export { CloudLLM } from './llm';
|
|
6
6
|
// Audio LLM (multimodal - implements both STTPipeline and LLMPipeline)
|
|
7
7
|
export { CloudAudioLLM } from './audio-llm';
|
|
8
|
+
export { OpenAICompletionsProvider } from './openai-provider';
|
|
9
|
+
export { AnthropicMessagesProvider } from './anthropic-provider';
|
|
8
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/backends/cloud/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,uEAAuE;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/backends/cloud/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,uEAAuE;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAK5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Cloud LLM Pipeline (
|
|
3
|
-
* Works with: OpenAI, Ollama, vLLM, LMStudio, and any
|
|
2
|
+
* Cloud LLM Pipeline (Multi-provider support)
|
|
3
|
+
* Works with: OpenAI, Anthropic, Ollama, vLLM, LMStudio, and any compatible endpoint
|
|
4
4
|
*
|
|
5
5
|
* Uses native fetch with streaming - no external dependencies required.
|
|
6
|
-
* Supports native tool calling via
|
|
6
|
+
* Supports native tool calling via provider-specific APIs.
|
|
7
7
|
*/
|
|
8
8
|
import type { LLMPipeline, CloudLLMConfig, ProgressCallback, Message, LLMGenerateOptions, LLMGenerateResult } from '../../types';
|
|
9
|
+
import type { LLMProvider } from './providers';
|
|
9
10
|
export declare class CloudLLM implements LLMPipeline {
|
|
10
11
|
private config;
|
|
12
|
+
private provider;
|
|
11
13
|
private ready;
|
|
12
14
|
private tracker;
|
|
13
|
-
constructor(config: CloudLLMConfig);
|
|
15
|
+
constructor(config: CloudLLMConfig, provider?: LLMProvider);
|
|
14
16
|
initialize(_onProgress?: ProgressCallback): Promise<void>;
|
|
15
17
|
supportsTools(): boolean;
|
|
16
18
|
generate(messages: Message[], options?: LLMGenerateOptions): Promise<LLMGenerateResult>;
|
|
17
|
-
private
|
|
18
|
-
private convertTools;
|
|
19
|
-
private getHeaders;
|
|
19
|
+
private extractSystemPrompt;
|
|
20
20
|
isReady(): boolean;
|
|
21
21
|
}
|
|
22
22
|
//# sourceMappingURL=llm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../../src/backends/cloud/llm.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,kBAAkB,EAClB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../../src/backends/cloud/llm.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,kBAAkB,EAClB,iBAAiB,EAElB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,qBAAa,QAAS,YAAW,WAAW;IAC1C,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAyB;gBAE5B,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,WAAW;IAMpD,UAAU,CAAC,WAAW,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B/D,aAAa,IAAI,OAAO;IAIlB,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyK7F,OAAO,CAAC,mBAAmB;IAW3B,OAAO,IAAI,OAAO;CAGnB"}
|
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Cloud LLM Pipeline (
|
|
3
|
-
* Works with: OpenAI, Ollama, vLLM, LMStudio, and any
|
|
2
|
+
* Cloud LLM Pipeline (Multi-provider support)
|
|
3
|
+
* Works with: OpenAI, Anthropic, Ollama, vLLM, LMStudio, and any compatible endpoint
|
|
4
4
|
*
|
|
5
5
|
* Uses native fetch with streaming - no external dependencies required.
|
|
6
|
-
* Supports native tool calling via
|
|
6
|
+
* Supports native tool calling via provider-specific APIs.
|
|
7
7
|
*/
|
|
8
8
|
import { LLMLogger, LLMConversationTracker } from '../../services';
|
|
9
|
+
import { OpenAICompletionsProvider } from './openai-provider';
|
|
9
10
|
export class CloudLLM {
|
|
10
11
|
config;
|
|
12
|
+
provider;
|
|
11
13
|
ready = false;
|
|
12
14
|
tracker;
|
|
13
|
-
constructor(config) {
|
|
15
|
+
constructor(config, provider) {
|
|
14
16
|
this.config = config;
|
|
17
|
+
this.provider = provider || new OpenAICompletionsProvider();
|
|
15
18
|
this.tracker = new LLMConversationTracker(new LLMLogger());
|
|
16
19
|
}
|
|
17
20
|
async initialize(_onProgress) {
|
|
@@ -22,7 +25,7 @@ export class CloudLLM {
|
|
|
22
25
|
const modelsUrl = `${this.config.baseUrl}/models`;
|
|
23
26
|
const response = await fetch(modelsUrl, {
|
|
24
27
|
method: 'GET',
|
|
25
|
-
headers: this.getHeaders(),
|
|
28
|
+
headers: this.provider.getHeaders(this.config.apiKey),
|
|
26
29
|
});
|
|
27
30
|
if (!response.ok) {
|
|
28
31
|
// Some endpoints don't have /models, that's okay
|
|
@@ -48,26 +51,20 @@ export class CloudLLM {
|
|
|
48
51
|
}
|
|
49
52
|
// Log the input messages
|
|
50
53
|
this.tracker.logInput(messages);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const
|
|
54
|
+
// Get endpoint from provider
|
|
55
|
+
const url = this.provider.getEndpoint(this.config.baseUrl);
|
|
56
|
+
// Extract system prompt from messages
|
|
57
|
+
const systemPrompt = this.extractSystemPrompt(messages);
|
|
58
|
+
const conversationMessages = messages.filter(m => m.role !== 'system');
|
|
59
|
+
// Format request using provider
|
|
60
|
+
const body = this.provider.formatRequest(conversationMessages, systemPrompt, {
|
|
56
61
|
model: this.config.model,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
};
|
|
61
|
-
// Add tools if provided
|
|
62
|
-
if (options?.tools && options.tools.length > 0) {
|
|
63
|
-
body.tools = this.convertTools(options.tools);
|
|
64
|
-
}
|
|
62
|
+
tools: options?.tools,
|
|
63
|
+
modelParams: this.config.modelParams,
|
|
64
|
+
});
|
|
65
65
|
const response = await fetch(url, {
|
|
66
66
|
method: 'POST',
|
|
67
|
-
headers:
|
|
68
|
-
...this.getHeaders(),
|
|
69
|
-
'Content-Type': 'application/json',
|
|
70
|
-
},
|
|
67
|
+
headers: this.provider.getHeaders(this.config.apiKey),
|
|
71
68
|
body: JSON.stringify(body),
|
|
72
69
|
});
|
|
73
70
|
if (!response.ok) {
|
|
@@ -77,7 +74,7 @@ export class CloudLLM {
|
|
|
77
74
|
if (!response.body) {
|
|
78
75
|
throw new Error('No response body received');
|
|
79
76
|
}
|
|
80
|
-
// Parse SSE stream
|
|
77
|
+
// Parse SSE stream using provider
|
|
81
78
|
const reader = response.body.getReader();
|
|
82
79
|
const decoder = new TextDecoder();
|
|
83
80
|
let fullContent = '';
|
|
@@ -101,21 +98,18 @@ export class CloudLLM {
|
|
|
101
98
|
if (trimmed.startsWith('data: ')) {
|
|
102
99
|
const jsonStr = trimmed.slice(6);
|
|
103
100
|
try {
|
|
104
|
-
const parsed =
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
throw new Error(`Cloud LLM stream error: ${JSON.stringify(parsed.error)}`);
|
|
101
|
+
const parsed = this.provider.parseStreamChunk(jsonStr);
|
|
102
|
+
if (!parsed) {
|
|
103
|
+
continue; // Skip null results (malformed JSON, etc.)
|
|
108
104
|
}
|
|
109
|
-
const choice = parsed.choices?.[0];
|
|
110
|
-
const delta = choice?.delta;
|
|
111
105
|
// Handle text content
|
|
112
|
-
if (
|
|
113
|
-
fullContent +=
|
|
114
|
-
options?.onToken?.(
|
|
106
|
+
if (parsed.content) {
|
|
107
|
+
fullContent += parsed.content;
|
|
108
|
+
options?.onToken?.(parsed.content);
|
|
115
109
|
}
|
|
116
110
|
// Handle tool calls (streamed incrementally)
|
|
117
|
-
if (
|
|
118
|
-
for (const tc of
|
|
111
|
+
if (parsed.toolCalls) {
|
|
112
|
+
for (const tc of parsed.toolCalls) {
|
|
119
113
|
const index = tc.index ?? 0;
|
|
120
114
|
if (!toolCalls.has(index)) {
|
|
121
115
|
toolCalls.set(index, { id: '', name: '', arguments: '' });
|
|
@@ -124,27 +118,22 @@ export class CloudLLM {
|
|
|
124
118
|
if (tc.id) {
|
|
125
119
|
existing.id = tc.id;
|
|
126
120
|
}
|
|
127
|
-
if (tc.
|
|
128
|
-
existing.name = tc.
|
|
121
|
+
if (tc.name) {
|
|
122
|
+
existing.name = tc.name;
|
|
129
123
|
}
|
|
130
|
-
if (tc.
|
|
131
|
-
existing.arguments += tc.
|
|
124
|
+
if (tc.arguments) {
|
|
125
|
+
existing.arguments += tc.arguments;
|
|
132
126
|
}
|
|
133
127
|
}
|
|
134
128
|
}
|
|
135
129
|
// Track finish reason from API
|
|
136
|
-
if (
|
|
137
|
-
finishReason =
|
|
130
|
+
if (parsed.finishReason) {
|
|
131
|
+
finishReason = parsed.finishReason;
|
|
138
132
|
}
|
|
139
133
|
}
|
|
140
134
|
catch (e) {
|
|
141
|
-
//
|
|
142
|
-
|
|
143
|
-
console.warn('CloudLLM: Skipping malformed JSON line:', jsonStr.substring(0, 100));
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
throw e;
|
|
147
|
-
}
|
|
135
|
+
// Errors during parsing are already handled by provider
|
|
136
|
+
throw e;
|
|
148
137
|
}
|
|
149
138
|
}
|
|
150
139
|
}
|
|
@@ -187,58 +176,14 @@ export class CloudLLM {
|
|
|
187
176
|
finishReason: normalizedFinishReason,
|
|
188
177
|
};
|
|
189
178
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
const toolMsg = m;
|
|
195
|
-
return {
|
|
196
|
-
role: 'tool',
|
|
197
|
-
content: toolMsg.content,
|
|
198
|
-
tool_call_id: toolMsg.toolCallId,
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
// Handle assistant messages with tool calls
|
|
202
|
-
if (m.role === 'assistant') {
|
|
203
|
-
const assistantMsg = m;
|
|
204
|
-
if (assistantMsg.toolCalls && assistantMsg.toolCalls.length > 0) {
|
|
205
|
-
return {
|
|
206
|
-
role: 'assistant',
|
|
207
|
-
content: assistantMsg.content || null,
|
|
208
|
-
tool_calls: assistantMsg.toolCalls.map((tc) => ({
|
|
209
|
-
id: tc.id,
|
|
210
|
-
type: 'function',
|
|
211
|
-
function: {
|
|
212
|
-
name: tc.name,
|
|
213
|
-
arguments: JSON.stringify(tc.arguments),
|
|
214
|
-
},
|
|
215
|
-
})),
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
// Regular messages
|
|
220
|
-
return {
|
|
221
|
-
role: m.role,
|
|
222
|
-
content: m.content,
|
|
223
|
-
};
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
convertTools(tools) {
|
|
227
|
-
return tools.map((tool) => ({
|
|
228
|
-
type: 'function',
|
|
229
|
-
function: {
|
|
230
|
-
name: tool.name,
|
|
231
|
-
description: tool.description,
|
|
232
|
-
parameters: tool.parameters,
|
|
233
|
-
},
|
|
234
|
-
}));
|
|
235
|
-
}
|
|
236
|
-
getHeaders() {
|
|
237
|
-
const headers = {};
|
|
238
|
-
if (this.config.apiKey) {
|
|
239
|
-
headers['Authorization'] = `Bearer ${this.config.apiKey}`;
|
|
179
|
+
extractSystemPrompt(messages) {
|
|
180
|
+
// Use structuredSystemPrompt if provided in config
|
|
181
|
+
if (this.config.structuredSystemPrompt) {
|
|
182
|
+
return this.config.structuredSystemPrompt; // Will be passed to provider as-is
|
|
240
183
|
}
|
|
241
|
-
|
|
184
|
+
// Otherwise, extract from messages
|
|
185
|
+
const systemMsg = messages.find(m => m.role === 'system');
|
|
186
|
+
return systemMsg?.content;
|
|
242
187
|
}
|
|
243
188
|
isReady() {
|
|
244
189
|
return this.ready;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../../src/backends/cloud/llm.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../../src/backends/cloud/llm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Completions Provider
|
|
3
|
+
* Supports OpenAI-compatible APIs (OpenAI, Ollama, vLLM, LMStudio, etc.)
|
|
4
|
+
*/
|
|
5
|
+
import type { Message, ToolDefinition } from '../../types';
|
|
6
|
+
import type { LLMProvider, SystemPromptBlock, ParsedStreamChunk } from './providers';
|
|
7
|
+
export declare class OpenAICompletionsProvider implements LLMProvider {
|
|
8
|
+
formatRequest(messages: Message[], systemPrompt: string | SystemPromptBlock[] | undefined, options: {
|
|
9
|
+
model: string;
|
|
10
|
+
tools?: ToolDefinition[];
|
|
11
|
+
modelParams?: Record<string, unknown>;
|
|
12
|
+
}): Record<string, unknown>;
|
|
13
|
+
parseStreamChunk(chunk: string): ParsedStreamChunk | null;
|
|
14
|
+
getEndpoint(baseUrl: string): string;
|
|
15
|
+
getHeaders(apiKey?: string): Record<string, string>;
|
|
16
|
+
private convertMessages;
|
|
17
|
+
private convertTools;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=openai-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-provider.d.ts","sourceRoot":"","sources":["../../../src/backends/cloud/openai-provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAiC,MAAM,aAAa,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAsBrF,qBAAa,yBAA0B,YAAW,WAAW;IAC3D,aAAa,CACX,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,MAAM,GAAG,iBAAiB,EAAE,GAAG,SAAS,EACtD,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACvC,GACA,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAkB1B,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IA8CzD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIpC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAYnD,OAAO,CAAC,eAAe;IA6DvB,OAAO,CAAC,YAAY;CAUrB"}
|