@just-every/ensemble 0.1.34 → 0.2.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/LICENSE +21 -0
- package/README.md +62 -190
- package/dist/config/tool_execution.d.ts +11 -0
- package/dist/config/tool_execution.d.ts.map +1 -0
- package/dist/config/tool_execution.js +31 -0
- package/dist/config/tool_execution.js.map +1 -0
- package/dist/core/ensemble_embed.d.ts +3 -0
- package/dist/core/ensemble_embed.d.ts.map +1 -0
- package/dist/core/ensemble_embed.js +24 -0
- package/dist/core/ensemble_embed.js.map +1 -0
- package/dist/core/ensemble_image.d.ts +3 -0
- package/dist/core/ensemble_image.d.ts.map +1 -0
- package/dist/core/ensemble_image.js +10 -0
- package/dist/core/ensemble_image.js.map +1 -0
- package/dist/core/ensemble_request.d.ts +3 -0
- package/dist/core/ensemble_request.d.ts.map +1 -0
- package/dist/core/ensemble_request.js +128 -0
- package/dist/core/ensemble_request.js.map +1 -0
- package/dist/{model_data.d.ts → data/model_data.d.ts} +2 -2
- package/dist/data/model_data.d.ts.map +1 -0
- package/dist/{model_data.js → data/model_data.js} +52 -3
- package/dist/data/model_data.js.map +1 -0
- package/dist/index.d.ts +15 -35
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -56
- package/dist/index.js.map +1 -1
- package/dist/model_providers/base_provider.d.ts +3 -29
- package/dist/model_providers/base_provider.d.ts.map +1 -1
- package/dist/model_providers/base_provider.js +1 -114
- package/dist/model_providers/base_provider.js.map +1 -1
- package/dist/model_providers/claude.d.ts +2 -2
- package/dist/model_providers/claude.d.ts.map +1 -1
- package/dist/model_providers/claude.js +10 -4
- package/dist/model_providers/claude.js.map +1 -1
- package/dist/model_providers/deepseek.d.ts.map +1 -1
- package/dist/model_providers/deepseek.js.map +1 -1
- package/dist/model_providers/gemini.d.ts +4 -4
- package/dist/model_providers/gemini.d.ts.map +1 -1
- package/dist/model_providers/gemini.js +31 -32
- package/dist/model_providers/gemini.js.map +1 -1
- package/dist/model_providers/grok.d.ts.map +1 -1
- package/dist/model_providers/grok.js.map +1 -1
- package/dist/model_providers/model_provider.d.ts +3 -4
- package/dist/model_providers/model_provider.d.ts.map +1 -1
- package/dist/model_providers/model_provider.js +11 -5
- package/dist/model_providers/model_provider.js.map +1 -1
- package/dist/model_providers/openai.d.ts +4 -4
- package/dist/model_providers/openai.d.ts.map +1 -1
- package/dist/model_providers/openai.js +24 -26
- package/dist/model_providers/openai.js.map +1 -1
- package/dist/model_providers/openai_chat.d.ts +3 -3
- package/dist/model_providers/openai_chat.d.ts.map +1 -1
- package/dist/model_providers/openai_chat.js +2 -2
- package/dist/model_providers/openai_chat.js.map +1 -1
- package/dist/model_providers/openrouter.d.ts.map +1 -1
- package/dist/model_providers/openrouter.js +3 -3
- package/dist/model_providers/openrouter.js.map +1 -1
- package/dist/model_providers/test_provider.d.ts +3 -5
- package/dist/model_providers/test_provider.d.ts.map +1 -1
- package/dist/model_providers/test_provider.js +9 -17
- package/dist/model_providers/test_provider.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/api_types.d.ts +1 -1
- package/dist/types/api_types.d.ts.map +1 -1
- package/dist/types/tool_types.d.ts +1 -99
- package/dist/types/tool_types.d.ts.map +1 -1
- package/dist/types/tool_types.js +1 -10
- package/dist/types/tool_types.js.map +1 -1
- package/dist/{types.d.ts → types/types.d.ts} +82 -32
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js.map +1 -0
- package/dist/utils/agent.d.ts +42 -0
- package/dist/utils/agent.d.ts.map +1 -0
- package/dist/utils/agent.js +343 -0
- package/dist/utils/agent.js.map +1 -0
- package/dist/utils/communication.d.ts +0 -1
- package/dist/utils/communication.d.ts.map +1 -1
- package/dist/utils/communication.js +1 -4
- package/dist/utils/communication.js.map +1 -1
- package/dist/utils/cost_tracker.d.ts +1 -1
- package/dist/utils/cost_tracker.d.ts.map +1 -1
- package/dist/utils/cost_tracker.js +1 -1
- package/dist/utils/cost_tracker.js.map +1 -1
- package/dist/utils/create_tool_function.d.ts +1 -23
- package/dist/utils/create_tool_function.d.ts.map +1 -1
- package/dist/utils/create_tool_function.js +14 -3
- package/dist/utils/create_tool_function.js.map +1 -1
- package/dist/{external_models.d.ts → utils/external_models.d.ts} +1 -2
- package/dist/utils/external_models.d.ts.map +1 -0
- package/dist/{external_models.js → utils/external_models.js} +0 -3
- package/dist/utils/external_models.js.map +1 -0
- package/dist/utils/image_to_text.d.ts.map +1 -1
- package/dist/utils/image_to_text.js +3 -2
- package/dist/utils/image_to_text.js.map +1 -1
- package/dist/utils/image_utils.d.ts +1 -4
- package/dist/utils/image_utils.d.ts.map +1 -1
- package/dist/utils/image_utils.js +2 -10
- package/dist/utils/image_utils.js.map +1 -1
- package/dist/utils/llm_logger.d.ts +1 -1
- package/dist/utils/llm_logger.d.ts.map +1 -1
- package/dist/utils/llm_logger.js.map +1 -1
- package/dist/utils/message_history.d.ts +4 -4
- package/dist/utils/message_history.d.ts.map +1 -1
- package/dist/utils/message_history.js +18 -18
- package/dist/utils/message_history.js.map +1 -1
- package/dist/utils/quota_tracker.d.ts +1 -1
- package/dist/utils/quota_tracker.d.ts.map +1 -1
- package/dist/utils/quota_tracker.js +0 -1
- package/dist/utils/quota_tracker.js.map +1 -1
- package/dist/utils/running_tool_tracker.d.ts +42 -0
- package/dist/utils/running_tool_tracker.d.ts.map +1 -0
- package/dist/utils/running_tool_tracker.js +129 -0
- package/dist/utils/running_tool_tracker.js.map +1 -0
- package/dist/utils/sequential_queue.d.ts +13 -0
- package/dist/utils/sequential_queue.d.ts.map +1 -0
- package/dist/utils/sequential_queue.js +68 -0
- package/dist/utils/sequential_queue.js.map +1 -0
- package/dist/utils/state_manager.d.ts.map +1 -1
- package/dist/utils/state_manager.js.map +1 -1
- package/dist/utils/stream_converter.d.ts +2 -13
- package/dist/utils/stream_converter.d.ts.map +1 -1
- package/dist/utils/stream_converter.js +15 -37
- package/dist/utils/stream_converter.js.map +1 -1
- package/dist/utils/test_utils.d.ts +4 -4
- package/dist/utils/test_utils.d.ts.map +1 -1
- package/dist/utils/test_utils.js +17 -17
- package/dist/utils/test_utils.js.map +1 -1
- package/dist/utils/tool_execution_manager.d.ts +7 -0
- package/dist/utils/tool_execution_manager.d.ts.map +1 -0
- package/dist/utils/tool_execution_manager.js +145 -0
- package/dist/utils/tool_execution_manager.js.map +1 -0
- package/dist/utils/tool_parameter_utils.d.ts +2 -2
- package/dist/utils/tool_parameter_utils.d.ts.map +1 -1
- package/dist/utils/tool_parameter_utils.js +8 -4
- package/dist/utils/tool_parameter_utils.js.map +1 -1
- package/dist/utils/tool_result_processor.d.ts +6 -0
- package/dist/utils/tool_result_processor.d.ts.map +1 -0
- package/dist/utils/tool_result_processor.js +69 -0
- package/dist/utils/tool_result_processor.js.map +1 -0
- package/package.json +11 -10
- package/dist/cost_tracker.d.ts +0 -2
- package/dist/cost_tracker.d.ts.map +0 -1
- package/dist/cost_tracker.js +0 -2
- package/dist/cost_tracker.js.map +0 -1
- package/dist/errors.d.ts +0 -55
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -134
- package/dist/errors.js.map +0 -1
- package/dist/external_models.d.ts.map +0 -1
- package/dist/external_models.js.map +0 -1
- package/dist/model_data.d.ts.map +0 -1
- package/dist/model_data.js.map +0 -1
- package/dist/model_providers/refactored_openai.d.ts +0 -22
- package/dist/model_providers/refactored_openai.d.ts.map +0 -1
- package/dist/model_providers/refactored_openai.js +0 -310
- package/dist/model_providers/refactored_openai.js.map +0 -1
- package/dist/openai-compat.d.ts +0 -79
- package/dist/openai-compat.d.ts.map +0 -1
- package/dist/openai-compat.js +0 -581
- package/dist/openai-compat.js.map +0 -1
- package/dist/test.d.ts +0 -5
- package/dist/test.d.ts.map +0 -1
- package/dist/test.js +0 -2
- package/dist/test.js.map +0 -1
- package/dist/types/extended_types.d.ts +0 -43
- package/dist/types/extended_types.d.ts.map +0 -1
- package/dist/types/extended_types.js +0 -2
- package/dist/types/extended_types.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/unified_request.d.ts +0 -19
- package/dist/unified_request.d.ts.map +0 -1
- package/dist/unified_request.js +0 -261
- package/dist/unified_request.js.map +0 -1
- package/dist/utils/async_queue.d.ts +0 -14
- package/dist/utils/async_queue.d.ts.map +0 -1
- package/dist/utils/async_queue.js +0 -68
- package/dist/utils/async_queue.js.map +0 -1
- package/dist/utils/cache.d.ts +0 -60
- package/dist/utils/cache.d.ts.map +0 -1
- package/dist/utils/cache.js +0 -205
- package/dist/utils/cache.js.map +0 -1
- package/dist/utils/error_handler.d.ts +0 -33
- package/dist/utils/error_handler.d.ts.map +0 -1
- package/dist/utils/error_handler.js +0 -84
- package/dist/utils/error_handler.js.map +0 -1
- package/dist/utils/tool_builder.d.ts +0 -51
- package/dist/utils/tool_builder.d.ts.map +0 -1
- package/dist/utils/tool_builder.js +0 -167
- package/dist/utils/tool_builder.js.map +0 -1
- package/dist/utils/tool_utils.d.ts +0 -13
- package/dist/utils/tool_utils.d.ts.map +0 -1
- package/dist/utils/tool_utils.js +0 -52
- package/dist/utils/tool_utils.js.map +0 -1
- package/dist/validation.d.ts +0 -1789
- package/dist/validation.d.ts.map +0 -1
- package/dist/validation.js +0 -289
- package/dist/validation.js.map +0 -1
- package/test.d.ts +0 -3
- package/test.js +0 -4
- /package/dist/{types.js → types/types.js} +0 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Context
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -5,6 +5,16 @@
|
|
|
5
5
|
|
|
6
6
|
A unified interface for interacting with multiple LLM providers (OpenAI, Anthropic, Google, etc.) with streaming support, tool calling, and embeddings.
|
|
7
7
|
|
|
8
|
+
## Features
|
|
9
|
+
|
|
10
|
+
- 🔄 **Unified Streaming Interface** - Consistent event-based streaming across all providers
|
|
11
|
+
- 🛠️ **Advanced Tool Calling** - Parallel/sequential execution, timeouts, and background tracking
|
|
12
|
+
- 📊 **Cost & Quota Tracking** - Built-in usage monitoring and cost calculation
|
|
13
|
+
- 🎯 **Smart Result Processing** - Automatic summarization and truncation for long outputs
|
|
14
|
+
- 🔌 **Multi-Provider Support** - OpenAI, Anthropic, Google, DeepSeek, xAI, OpenRouter
|
|
15
|
+
- 🖼️ **Multi-Modal** - Support for text, images, and embeddings
|
|
16
|
+
- 📝 **Message History** - Automatic conversation management with compaction
|
|
17
|
+
|
|
8
18
|
## Installation
|
|
9
19
|
|
|
10
20
|
```bash
|
|
@@ -14,215 +24,77 @@ npm install @just-every/ensemble
|
|
|
14
24
|
## Quick Start
|
|
15
25
|
|
|
16
26
|
```typescript
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
// Simple streaming request
|
|
20
|
-
for await (const event of request('gpt-4o-mini', [
|
|
21
|
-
{ type: 'message', role: 'user', content: 'Hello!' }
|
|
22
|
-
])) {
|
|
23
|
-
if (event.type === 'text_delta') {
|
|
24
|
-
process.stdout.write(event.delta);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Core Functions
|
|
27
|
+
import { ensembleRequest } from '@just-every/ensemble';
|
|
30
28
|
|
|
31
|
-
|
|
29
|
+
const messages = [
|
|
30
|
+
{ type: 'message', role: 'user', content: 'Hello, how are you?' }
|
|
31
|
+
];
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
const agent = {
|
|
34
|
+
model: 'o3',
|
|
35
|
+
agent_id: 'assistant'
|
|
36
|
+
};
|
|
34
37
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
{ type: 'message', role: 'user', content: 'Explain quantum computing' }
|
|
39
|
-
]);
|
|
40
|
-
|
|
41
|
-
for await (const event of stream) {
|
|
42
|
-
if (event.type === 'text_delta') {
|
|
43
|
-
process.stdout.write(event.delta);
|
|
44
|
-
} else if (event.type === 'cost_update') {
|
|
45
|
-
console.log(`Cost: $${event.usage.total_cost}`);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// With tools
|
|
50
|
-
const tools = [{
|
|
51
|
-
function: async ({ city }) => `Weather in ${city}: Sunny, 72°F`,
|
|
52
|
-
definition: {
|
|
53
|
-
type: 'function',
|
|
54
|
-
function: {
|
|
55
|
-
name: 'get_weather',
|
|
56
|
-
description: 'Get weather for a city',
|
|
57
|
-
parameters: {
|
|
58
|
-
type: 'object',
|
|
59
|
-
properties: {
|
|
60
|
-
city: { type: 'string' }
|
|
61
|
-
},
|
|
62
|
-
required: ['city']
|
|
63
|
-
}
|
|
38
|
+
for await (const event of ensembleRequest(messages, agent)) {
|
|
39
|
+
if (event.type === 'message_delta') {
|
|
40
|
+
process.stdout.write(event.content);
|
|
64
41
|
}
|
|
65
|
-
}
|
|
66
|
-
}];
|
|
67
|
-
|
|
68
|
-
const stream = request('gpt-4o', [
|
|
69
|
-
{ type: 'message', role: 'user', content: 'What\'s the weather in Paris?' }
|
|
70
|
-
], { tools });
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### `embed(text, options?)`
|
|
74
|
-
|
|
75
|
-
Generate embeddings for semantic search and RAG applications.
|
|
76
|
-
|
|
77
|
-
```typescript
|
|
78
|
-
// Simple embedding
|
|
79
|
-
const embedding = await embed('Hello, world!');
|
|
80
|
-
console.log(`Dimension: ${embedding.length}`); // e.g., 1536
|
|
81
|
-
|
|
82
|
-
// With specific model
|
|
83
|
-
const embedding = await embed('Search query', {
|
|
84
|
-
model: 'text-embedding-3-large'
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
// Calculate similarity
|
|
88
|
-
function cosineSimilarity(a: number[], b: number[]): number {
|
|
89
|
-
const dotProduct = a.reduce((sum, val, i) => sum + val * b[i], 0);
|
|
90
|
-
const normA = Math.sqrt(a.reduce((sum, val) => sum + val * val, 0));
|
|
91
|
-
const normB = Math.sqrt(b.reduce((sum, val) => sum + val * val, 0));
|
|
92
|
-
return dotProduct / (normA * normB);
|
|
93
42
|
}
|
|
94
|
-
|
|
95
|
-
const similarity = cosineSimilarity(embedding1, embedding2);
|
|
96
43
|
```
|
|
97
44
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
Generate images from text prompts using DALL-E or Imagen models.
|
|
101
|
-
|
|
102
|
-
```typescript
|
|
103
|
-
// Simple image generation
|
|
104
|
-
const result = await image('A beautiful sunset over mountains');
|
|
105
|
-
console.log(`Generated ${result.images.length} image(s)`);
|
|
106
|
-
|
|
107
|
-
// With specific options
|
|
108
|
-
const result = await image('A robot holding a skateboard', {
|
|
109
|
-
model: 'dall-e-3',
|
|
110
|
-
size: 'landscape',
|
|
111
|
-
quality: 'hd',
|
|
112
|
-
n: 2
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
// Image editing (DALL-E 2 only)
|
|
116
|
-
const result = await image('Add a red hat to the person', {
|
|
117
|
-
model: 'dall-e-2',
|
|
118
|
-
source_images: 'data:image/png;base64,...' // or URL
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
// Inpainting with mask
|
|
122
|
-
const result = await image('Replace with a golden retriever', {
|
|
123
|
-
model: 'dall-e-2',
|
|
124
|
-
source_images: originalImage,
|
|
125
|
-
mask: maskImage // transparent areas will be edited
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
// Using Google Imagen
|
|
129
|
-
const result = await image('A serene lake at dawn', {
|
|
130
|
-
model: 'imagen-3.0-generate-002',
|
|
131
|
-
size: 'portrait'
|
|
132
|
-
});
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
### `chainRequests(messages, requests)`
|
|
136
|
-
|
|
137
|
-
Chain multiple LLM calls, using the output of one as input to the next.
|
|
138
|
-
|
|
139
|
-
```typescript
|
|
140
|
-
import { chainRequests } from '@just-every/ensemble';
|
|
141
|
-
|
|
142
|
-
const result = await chainRequests(
|
|
143
|
-
[{ type: 'message', role: 'user', content: 'Analyze this code for bugs: ...' }],
|
|
144
|
-
[
|
|
145
|
-
{
|
|
146
|
-
model: 'gpt-4o',
|
|
147
|
-
systemPrompt: 'You are a code reviewer. Find bugs and security issues.'
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
model: 'claude-3.5-sonnet',
|
|
151
|
-
systemPrompt: 'Prioritize the issues found and suggest fixes.'
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
model: 'gpt-4o-mini',
|
|
155
|
-
systemPrompt: 'Summarize the analysis in 3 bullet points.'
|
|
156
|
-
}
|
|
157
|
-
]
|
|
158
|
-
);
|
|
159
|
-
|
|
160
|
-
console.log(result.fullResponse);
|
|
161
|
-
```
|
|
45
|
+
## Documentation
|
|
162
46
|
|
|
163
|
-
|
|
47
|
+
- [Tool Execution Guide](docs/tool-execution.md) - Advanced tool calling features
|
|
48
|
+
- [Examples](examples/) - Complete working examples
|
|
49
|
+
- [API Reference](docs/api.md) - Full API documentation
|
|
164
50
|
|
|
165
|
-
|
|
166
|
-
- **Anthropic**: Claude 3.5 Sonnet, Claude 3.5 Haiku
|
|
167
|
-
- **Google**: Gemini 2.0 Flash, Gemini 1.5 Pro
|
|
168
|
-
- **DeepSeek**: DeepSeek Chat, DeepSeek Coder
|
|
169
|
-
- **xAI**: Grok 2, Grok Beta
|
|
170
|
-
- **OpenRouter**: Access to 100+ models
|
|
51
|
+
## Core Concepts
|
|
171
52
|
|
|
172
|
-
|
|
53
|
+
### Tools
|
|
173
54
|
|
|
174
|
-
|
|
55
|
+
Define tools that LLMs can call:
|
|
175
56
|
|
|
176
57
|
```typescript
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
58
|
+
const agent = {
|
|
59
|
+
model: 'o3',
|
|
60
|
+
tools: [{
|
|
61
|
+
definition: {
|
|
62
|
+
type: 'function',
|
|
63
|
+
function: {
|
|
64
|
+
name: 'get_weather',
|
|
65
|
+
description: 'Get weather for a location',
|
|
66
|
+
parameters: {
|
|
67
|
+
type: 'object',
|
|
68
|
+
properties: {
|
|
69
|
+
location: { type: 'string' }
|
|
70
|
+
},
|
|
71
|
+
required: ['location']
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
function: async (location: string) => {
|
|
76
|
+
return `Weather in ${location}: Sunny, 72°F`;
|
|
77
|
+
}
|
|
78
|
+
}]
|
|
79
|
+
};
|
|
185
80
|
```
|
|
186
81
|
|
|
187
|
-
|
|
82
|
+
### Streaming Events
|
|
188
83
|
|
|
189
|
-
|
|
190
|
-
ANTHROPIC_API_KEY=your_key_here
|
|
191
|
-
OPENAI_API_KEY=your_key_here
|
|
192
|
-
GOOGLE_API_KEY=your_key_here
|
|
193
|
-
DEEPSEEK_API_KEY=your_key_here
|
|
194
|
-
XAI_API_KEY=your_key_here
|
|
195
|
-
OPENROUTER_API_KEY=your_key_here
|
|
196
|
-
```
|
|
84
|
+
All providers emit standardized events:
|
|
197
85
|
|
|
198
|
-
|
|
86
|
+
- `message_start` / `message_delta` / `message_complete` - Message streaming
|
|
87
|
+
- `tool_start` / `tool_delta` / `tool_done` - Tool execution
|
|
88
|
+
- `cost_update` - Token usage and cost tracking
|
|
89
|
+
- `error` - Error handling
|
|
199
90
|
|
|
200
|
-
|
|
201
|
-
- **Automatic tool execution** with type-safe function calling
|
|
202
|
-
- **Smart model rotation** based on availability and performance
|
|
203
|
-
- **Built-in embeddings** with caching
|
|
204
|
-
- **Image generation** with DALL-E and Imagen support
|
|
205
|
-
- **OpenAI SDK compatibility** - drop-in replacement
|
|
206
|
-
- **Cost tracking** and quota management
|
|
207
|
-
|
|
208
|
-
## Documentation
|
|
91
|
+
### Advanced Features
|
|
209
92
|
|
|
210
|
-
-
|
|
211
|
-
-
|
|
212
|
-
-
|
|
213
|
-
-
|
|
214
|
-
-
|
|
215
|
-
- [Utility Functions](./docs/utilities.md)
|
|
216
|
-
- [Test Utilities](./docs/test-utilities.md) - Testing helpers and mocks
|
|
217
|
-
|
|
218
|
-
## Examples
|
|
219
|
-
|
|
220
|
-
See the [examples](./examples) directory for:
|
|
221
|
-
- [Basic usage](./examples/basic-request.ts)
|
|
222
|
-
- [Tool calling](./examples/tool-calling.ts)
|
|
223
|
-
- [Embeddings & semantic search](./examples/embeddings.ts)
|
|
224
|
-
- [Model rotation](./examples/model-rotation.ts)
|
|
225
|
-
- [Stream conversion](./examples/stream-conversion.ts)
|
|
93
|
+
- **Parallel Tool Execution** - Tools run concurrently by default
|
|
94
|
+
- **Sequential Mode** - Enforce one-at-a-time execution
|
|
95
|
+
- **Timeout Handling** - Automatic timeout with background tracking
|
|
96
|
+
- **Result Summarization** - Long outputs are intelligently summarized
|
|
97
|
+
- **Abort Signals** - Graceful cancellation support
|
|
226
98
|
|
|
227
99
|
## License
|
|
228
100
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const FUNCTION_TIMEOUT_MS = 30000;
|
|
2
|
+
export declare const EXCLUDED_FROM_TIMEOUT_FUNCTIONS: Set<string>;
|
|
3
|
+
export declare const MAX_RESULT_LENGTH = 1000;
|
|
4
|
+
export declare const SKIP_SUMMARIZATION_TOOLS: Set<string>;
|
|
5
|
+
export interface ToolConfig {
|
|
6
|
+
skipSummarization?: boolean;
|
|
7
|
+
maxLength?: number;
|
|
8
|
+
truncationMessage?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const TOOL_CONFIGS: Record<string, ToolConfig>;
|
|
11
|
+
//# sourceMappingURL=tool_execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool_execution.d.ts","sourceRoot":"","sources":["../../config/tool_execution.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAKzC,eAAO,MAAM,+BAA+B,aAM1C,CAAC;AAKH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAKtC,eAAO,MAAM,wBAAwB,aAKnC,CAAC;AAKH,MAAM,WAAW,UAAU;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAenD,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export const FUNCTION_TIMEOUT_MS = 30000;
|
|
2
|
+
export const EXCLUDED_FROM_TIMEOUT_FUNCTIONS = new Set([
|
|
3
|
+
'wait_for_running_tool',
|
|
4
|
+
'run_shell_command_with_output',
|
|
5
|
+
'execute_code',
|
|
6
|
+
'debug_code',
|
|
7
|
+
'test_code',
|
|
8
|
+
]);
|
|
9
|
+
export const MAX_RESULT_LENGTH = 1000;
|
|
10
|
+
export const SKIP_SUMMARIZATION_TOOLS = new Set([
|
|
11
|
+
'read_source',
|
|
12
|
+
'get_page_content',
|
|
13
|
+
'read_file',
|
|
14
|
+
'list_files',
|
|
15
|
+
]);
|
|
16
|
+
export const TOOL_CONFIGS = {
|
|
17
|
+
read_source: {
|
|
18
|
+
skipSummarization: true,
|
|
19
|
+
maxLength: 1000,
|
|
20
|
+
truncationMessage: '\n\n[Full output truncated: Use write_source(summary_id, file_path) to write full output to a file.]',
|
|
21
|
+
},
|
|
22
|
+
get_page_content: {
|
|
23
|
+
skipSummarization: true,
|
|
24
|
+
maxLength: 1000,
|
|
25
|
+
},
|
|
26
|
+
read_file: {
|
|
27
|
+
skipSummarization: true,
|
|
28
|
+
maxLength: 1000,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=tool_execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool_execution.js","sourceRoot":"","sources":["../../config/tool_execution.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAKzC,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,GAAG,CAAC;IACnD,uBAAuB;IACvB,+BAA+B;IAC/B,cAAc;IACd,YAAY;IACZ,WAAW;CACd,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAKtC,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC;IAC5C,aAAa;IACb,kBAAkB;IAClB,WAAW;IACX,YAAY;CACf,CAAC,CAAC;AAWH,MAAM,CAAC,MAAM,YAAY,GAA+B;IACpD,WAAW,EAAE;QACT,iBAAiB,EAAE,IAAI;QACvB,SAAS,EAAE,IAAI;QACf,iBAAiB,EACb,sGAAsG;KAC7G;IACD,gBAAgB,EAAE;QACd,iBAAiB,EAAE,IAAI;QACvB,SAAS,EAAE,IAAI;KAClB;IACD,SAAS,EAAE;QACP,iBAAiB,EAAE,IAAI;QACvB,SAAS,EAAE,IAAI;KAClB;CACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensemble_embed.d.ts","sourceRoot":"","sources":["../../core/ensemble_embed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAuCpE,wBAAsB,aAAa,CAC/B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC,CAqCnB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { getModelFromAgent, getModelProvider, } from '../model_providers/model_provider.js';
|
|
2
|
+
const embeddingCache = new Map();
|
|
3
|
+
export async function ensembleEmbed(text, agent, options) {
|
|
4
|
+
const cacheKey = `${agent.model || agent.modelClass}:${text}`;
|
|
5
|
+
if (embeddingCache.has(cacheKey)) {
|
|
6
|
+
const cached = embeddingCache.get(cacheKey);
|
|
7
|
+
return cached.embedding;
|
|
8
|
+
}
|
|
9
|
+
const model = await getModelFromAgent(agent, 'embedding');
|
|
10
|
+
const provider = getModelProvider(model);
|
|
11
|
+
if (!provider.createEmbedding) {
|
|
12
|
+
throw new Error(`Provider for model ${model} does not support embeddings`);
|
|
13
|
+
}
|
|
14
|
+
const result = await provider.createEmbedding(text, model, options);
|
|
15
|
+
const embedding = Array.isArray(result[0])
|
|
16
|
+
? result[0]
|
|
17
|
+
: result;
|
|
18
|
+
embeddingCache.set(cacheKey, {
|
|
19
|
+
embedding,
|
|
20
|
+
timestamp: new Date(),
|
|
21
|
+
});
|
|
22
|
+
return embedding;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=ensemble_embed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensemble_embed.js","sourceRoot":"","sources":["../../core/ensemble_embed.ts"],"names":[],"mappings":"AACA,OAAO,EACH,iBAAiB,EACjB,gBAAgB,GACnB,MAAM,sCAAsC,CAAC;AAG9C,MAAM,cAAc,GAAG,IAAI,GAAG,EAM3B,CAAC;AA0BJ,MAAM,CAAC,KAAK,UAAU,aAAa,CAC/B,IAAY,EACZ,KAAsB,EACtB,OAAmB;IAGnB,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;IAG9D,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QAC7C,OAAO,MAAM,CAAC,SAAS,CAAC;IAC5B,CAAC;IAGD,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAG1D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAEzC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACX,sBAAsB,KAAK,8BAA8B,CAC5D,CAAC;IACN,CAAC;IAGD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAGpE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACX,CAAC,CAAE,MAAmB,CAAC;IAG3B,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE;QACzB,SAAS;QACT,SAAS,EAAE,IAAI,IAAI,EAAE;KACxB,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensemble_image.d.ts","sourceRoot":"","sources":["../../core/ensemble_image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AA2B9E,wBAAsB,aAAa,CAC/B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,mBAAwB,GAClC,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { getModelFromAgent, getModelProvider, } from '../model_providers/model_provider.js';
|
|
2
|
+
export async function ensembleImage(prompt, agent, options = {}) {
|
|
3
|
+
const model = await getModelFromAgent(agent, 'image_generation');
|
|
4
|
+
const provider = getModelProvider(model);
|
|
5
|
+
if (!provider.createImage) {
|
|
6
|
+
throw new Error(`Provider for model ${model} does not support image generation`);
|
|
7
|
+
}
|
|
8
|
+
return provider.createImage(prompt, model, options);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=ensemble_image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensemble_image.js","sourceRoot":"","sources":["../../core/ensemble_image.ts"],"names":[],"mappings":"AACA,OAAO,EACH,iBAAiB,EACjB,gBAAgB,GACnB,MAAM,sCAAsC,CAAC;AAuB9C,MAAM,CAAC,KAAK,UAAU,aAAa,CAC/B,MAAc,EACd,KAAsB,EACtB,UAA+B,EAAE;IAEjC,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAEzC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACX,sBAAsB,KAAK,oCAAoC,CAClE,CAAC;IACN,CAAC;IAED,OAAO,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensemble_request.d.ts","sourceRoot":"","sources":["../../core/ensemble_request.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,mBAAmB,EACnB,aAAa,EAGb,eAAe,EAClB,MAAM,mBAAmB,CAAC;AAiB3B,wBAAuB,eAAe,CAClC,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,eAAe,GACvB,cAAc,CAAC,mBAAmB,CAAC,CAqCrC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { createRequestContext, ToolCallAction, } from '../types/tool_types.js';
|
|
2
|
+
import { getModelFromAgent, getModelProvider, } from '../model_providers/model_provider.js';
|
|
3
|
+
import { MessageHistory } from '../utils/message_history.js';
|
|
4
|
+
import { handleToolCall } from '../utils/tool_execution_manager.js';
|
|
5
|
+
import { processToolResult } from '../utils/tool_result_processor.js';
|
|
6
|
+
export async function* ensembleRequest(messages, agent) {
|
|
7
|
+
const history = new MessageHistory(messages, {
|
|
8
|
+
compactToolCalls: true,
|
|
9
|
+
preserveSystemMessages: true,
|
|
10
|
+
});
|
|
11
|
+
const context = createRequestContext({
|
|
12
|
+
messages: history.getMessages(),
|
|
13
|
+
});
|
|
14
|
+
try {
|
|
15
|
+
const stream = await executeRound(agent, context, history);
|
|
16
|
+
for await (const event of stream) {
|
|
17
|
+
yield event;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
yield {
|
|
22
|
+
type: 'error',
|
|
23
|
+
error: error.message || 'Unknown error',
|
|
24
|
+
code: error.code,
|
|
25
|
+
details: error.details,
|
|
26
|
+
recoverable: error.recoverable,
|
|
27
|
+
timestamp: new Date().toISOString(),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
finally {
|
|
31
|
+
yield {
|
|
32
|
+
type: 'stream_end',
|
|
33
|
+
timestamp: new Date().toISOString(),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async function* executeRound(agent, context, history) {
|
|
38
|
+
let messageContent = '';
|
|
39
|
+
const messages = history.getMessages();
|
|
40
|
+
const model = await getModelFromAgent(agent);
|
|
41
|
+
const provider = await getModelProvider(model);
|
|
42
|
+
const stream = provider.createResponseStream(messages, model, agent);
|
|
43
|
+
const toolPromises = [];
|
|
44
|
+
for await (const event of stream) {
|
|
45
|
+
if (agent.allowedEvents && !agent.allowedEvents.includes(event.type)) {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
yield event;
|
|
49
|
+
switch (event.type) {
|
|
50
|
+
case 'message_complete':
|
|
51
|
+
if ('content' in event) {
|
|
52
|
+
messageContent = event.content;
|
|
53
|
+
}
|
|
54
|
+
break;
|
|
55
|
+
case 'tool_start':
|
|
56
|
+
if ('tool_calls' in event && event.tool_calls) {
|
|
57
|
+
toolPromises.push(processToolCalls(event.tool_calls, agent, context));
|
|
58
|
+
}
|
|
59
|
+
break;
|
|
60
|
+
case 'error':
|
|
61
|
+
if (context) {
|
|
62
|
+
context.halt();
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const toolResults = (await Promise.all(toolPromises)).flat();
|
|
68
|
+
if (messageContent.length > 0 || toolResults.length > 0) {
|
|
69
|
+
history.addAssistantResponse(messageContent, toolResults);
|
|
70
|
+
}
|
|
71
|
+
if (context) {
|
|
72
|
+
context.messages = history.getMessages();
|
|
73
|
+
context.toolCallCount += toolResults.length;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async function processToolCalls(toolCalls, agent, context) {
|
|
77
|
+
const toolCallPromises = toolCalls.map(async (toolCall) => {
|
|
78
|
+
if (agent.onToolCall) {
|
|
79
|
+
const action = await agent.onToolCall(toolCall);
|
|
80
|
+
if (action && action === ToolCallAction.SKIP) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
if (action === ToolCallAction.HALT && context) {
|
|
84
|
+
context.halt();
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
if (!agent.tools) {
|
|
90
|
+
throw new Error('No tools available for agent');
|
|
91
|
+
}
|
|
92
|
+
const tool = agent.tools.find(t => t.definition.function.name === toolCall.function.name);
|
|
93
|
+
if (!tool || !('function' in tool)) {
|
|
94
|
+
throw new Error(`Tool ${toolCall.function.name} not found`);
|
|
95
|
+
}
|
|
96
|
+
const rawResult = await handleToolCall(toolCall, tool, agent);
|
|
97
|
+
const processedResult = await processToolResult(toolCall, rawResult);
|
|
98
|
+
const toolCallResult = {
|
|
99
|
+
toolCall,
|
|
100
|
+
id: toolCall.id,
|
|
101
|
+
call_id: toolCall.call_id || toolCall.id,
|
|
102
|
+
output: processedResult,
|
|
103
|
+
};
|
|
104
|
+
if (agent.onToolResult) {
|
|
105
|
+
await agent.onToolResult(toolCallResult);
|
|
106
|
+
}
|
|
107
|
+
return toolCallResult;
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
const errorOutput = error instanceof Error
|
|
111
|
+
? `Tool execution failed: ${error.message}`
|
|
112
|
+
: `Tool execution failed: ${String(error)}`;
|
|
113
|
+
const toolCallResult = {
|
|
114
|
+
toolCall,
|
|
115
|
+
id: toolCall.id,
|
|
116
|
+
call_id: toolCall.call_id || toolCall.id,
|
|
117
|
+
output: errorOutput,
|
|
118
|
+
};
|
|
119
|
+
if (agent.onToolError) {
|
|
120
|
+
await agent.onToolError(toolCallResult);
|
|
121
|
+
}
|
|
122
|
+
return toolCallResult;
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
const results = await Promise.all(toolCallPromises);
|
|
126
|
+
return results.filter((result) => result !== null);
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=ensemble_request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensemble_request.js","sourceRoot":"","sources":["../../core/ensemble_request.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ModelClassID, ModelProviderID, TieredPrice, TimeBasedPrice, ModelCost, ModelFeatures, ModelEntry, ModelUsage, ModelClass } from '
|
|
2
|
-
export type { ModelClassID, ModelProviderID, TieredPrice, TimeBasedPrice, ModelCost, ModelFeatures, ModelEntry, ModelUsage, ModelClass };
|
|
1
|
+
import { ModelClassID, ModelProviderID, TieredPrice, TimeBasedPrice, ModelCost, ModelFeatures, ModelEntry, ModelUsage, ModelClass } from '../types/types.js';
|
|
2
|
+
export type { ModelClassID, ModelProviderID, TieredPrice, TimeBasedPrice, ModelCost, ModelFeatures, ModelEntry, ModelUsage, ModelClass, };
|
|
3
3
|
export declare const MODEL_CLASSES: {
|
|
4
4
|
standard: {
|
|
5
5
|
models: string[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model_data.d.ts","sourceRoot":"","sources":["../../data/model_data.ts"],"names":[],"mappings":"AAYA,OAAO,EACH,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,EACd,SAAS,EACT,aAAa,EACb,UAAU,EACV,UAAU,EACV,UAAU,EACb,MAAM,mBAAmB,CAAC;AAM3B,YAAY,EACR,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,EACd,SAAS,EACT,aAAa,EACb,UAAU,EACV,UAAU,EACV,UAAU,GACb,CAAC;AAOF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmKzB,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIvD,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,UAAU,EA2mCtC,CAAC;AAQF,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAWjE"}
|