@just-every/ensemble 0.1.0

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.
Files changed (127) hide show
  1. package/README.md +245 -0
  2. package/dist/cost_tracker.d.ts +2 -0
  3. package/dist/cost_tracker.d.ts.map +1 -0
  4. package/dist/cost_tracker.js +2 -0
  5. package/dist/cost_tracker.js.map +1 -0
  6. package/dist/errors.d.ts +55 -0
  7. package/dist/errors.d.ts.map +1 -0
  8. package/dist/errors.js +134 -0
  9. package/dist/errors.js.map +1 -0
  10. package/dist/external_models.d.ts +10 -0
  11. package/dist/external_models.d.ts.map +1 -0
  12. package/dist/external_models.js +36 -0
  13. package/dist/external_models.js.map +1 -0
  14. package/dist/index.d.ts +31 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +47 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/model_data.d.ts +63 -0
  19. package/dist/model_data.d.ts.map +1 -0
  20. package/dist/model_data.js +1070 -0
  21. package/dist/model_data.js.map +1 -0
  22. package/dist/model_providers/base_provider.d.ts +37 -0
  23. package/dist/model_providers/base_provider.d.ts.map +1 -0
  24. package/dist/model_providers/base_provider.js +146 -0
  25. package/dist/model_providers/base_provider.js.map +1 -0
  26. package/dist/model_providers/claude.d.ts +11 -0
  27. package/dist/model_providers/claude.d.ts.map +1 -0
  28. package/dist/model_providers/claude.js +788 -0
  29. package/dist/model_providers/claude.js.map +1 -0
  30. package/dist/model_providers/deepseek.d.ts +8 -0
  31. package/dist/model_providers/deepseek.d.ts.map +1 -0
  32. package/dist/model_providers/deepseek.js +136 -0
  33. package/dist/model_providers/deepseek.js.map +1 -0
  34. package/dist/model_providers/gemini.d.ts +11 -0
  35. package/dist/model_providers/gemini.d.ts.map +1 -0
  36. package/dist/model_providers/gemini.js +711 -0
  37. package/dist/model_providers/gemini.js.map +1 -0
  38. package/dist/model_providers/grok.d.ts +8 -0
  39. package/dist/model_providers/grok.d.ts.map +1 -0
  40. package/dist/model_providers/grok.js +22 -0
  41. package/dist/model_providers/grok.js.map +1 -0
  42. package/dist/model_providers/model_provider.d.ts +11 -0
  43. package/dist/model_providers/model_provider.d.ts.map +1 -0
  44. package/dist/model_providers/model_provider.js +170 -0
  45. package/dist/model_providers/model_provider.js.map +1 -0
  46. package/dist/model_providers/openai.d.ts +13 -0
  47. package/dist/model_providers/openai.d.ts.map +1 -0
  48. package/dist/model_providers/openai.js +822 -0
  49. package/dist/model_providers/openai.js.map +1 -0
  50. package/dist/model_providers/openai_chat.d.ts +14 -0
  51. package/dist/model_providers/openai_chat.d.ts.map +1 -0
  52. package/dist/model_providers/openai_chat.js +719 -0
  53. package/dist/model_providers/openai_chat.js.map +1 -0
  54. package/dist/model_providers/openrouter.d.ts +6 -0
  55. package/dist/model_providers/openrouter.d.ts.map +1 -0
  56. package/dist/model_providers/openrouter.js +18 -0
  57. package/dist/model_providers/openrouter.js.map +1 -0
  58. package/dist/model_providers/refactored_openai.d.ts +22 -0
  59. package/dist/model_providers/refactored_openai.d.ts.map +1 -0
  60. package/dist/model_providers/refactored_openai.js +310 -0
  61. package/dist/model_providers/refactored_openai.js.map +1 -0
  62. package/dist/model_providers/test_provider.d.ts +27 -0
  63. package/dist/model_providers/test_provider.d.ts.map +1 -0
  64. package/dist/model_providers/test_provider.js +185 -0
  65. package/dist/model_providers/test_provider.js.map +1 -0
  66. package/dist/tsconfig.tsbuildinfo +1 -0
  67. package/dist/types/api_types.d.ts +249 -0
  68. package/dist/types/api_types.d.ts.map +1 -0
  69. package/dist/types/api_types.js +2 -0
  70. package/dist/types/api_types.js.map +1 -0
  71. package/dist/types/extended_types.d.ts +43 -0
  72. package/dist/types/extended_types.d.ts.map +1 -0
  73. package/dist/types/extended_types.js +2 -0
  74. package/dist/types/extended_types.js.map +1 -0
  75. package/dist/types.d.ts +301 -0
  76. package/dist/types.d.ts.map +1 -0
  77. package/dist/types.js +2 -0
  78. package/dist/types.js.map +1 -0
  79. package/dist/utils/async_queue.d.ts +14 -0
  80. package/dist/utils/async_queue.d.ts.map +1 -0
  81. package/dist/utils/async_queue.js +68 -0
  82. package/dist/utils/async_queue.js.map +1 -0
  83. package/dist/utils/cache.d.ts +60 -0
  84. package/dist/utils/cache.d.ts.map +1 -0
  85. package/dist/utils/cache.js +205 -0
  86. package/dist/utils/cache.js.map +1 -0
  87. package/dist/utils/communication.d.ts +3 -0
  88. package/dist/utils/communication.d.ts.map +1 -0
  89. package/dist/utils/communication.js +8 -0
  90. package/dist/utils/communication.js.map +1 -0
  91. package/dist/utils/cost_tracker.d.ts +26 -0
  92. package/dist/utils/cost_tracker.d.ts.map +1 -0
  93. package/dist/utils/cost_tracker.js +177 -0
  94. package/dist/utils/cost_tracker.js.map +1 -0
  95. package/dist/utils/delta_buffer.d.ts +14 -0
  96. package/dist/utils/delta_buffer.d.ts.map +1 -0
  97. package/dist/utils/delta_buffer.js +60 -0
  98. package/dist/utils/delta_buffer.js.map +1 -0
  99. package/dist/utils/image_to_text.d.ts +3 -0
  100. package/dist/utils/image_to_text.d.ts.map +1 -0
  101. package/dist/utils/image_to_text.js +81 -0
  102. package/dist/utils/image_to_text.js.map +1 -0
  103. package/dist/utils/image_utils.d.ts +18 -0
  104. package/dist/utils/image_utils.d.ts.map +1 -0
  105. package/dist/utils/image_utils.js +132 -0
  106. package/dist/utils/image_utils.js.map +1 -0
  107. package/dist/utils/llm_logger.d.ts +8 -0
  108. package/dist/utils/llm_logger.d.ts.map +1 -0
  109. package/dist/utils/llm_logger.js +24 -0
  110. package/dist/utils/llm_logger.js.map +1 -0
  111. package/dist/utils/quota_tracker.d.ts +22 -0
  112. package/dist/utils/quota_tracker.d.ts.map +1 -0
  113. package/dist/utils/quota_tracker.js +338 -0
  114. package/dist/utils/quota_tracker.js.map +1 -0
  115. package/dist/utils/stream_converter.d.ts +19 -0
  116. package/dist/utils/stream_converter.d.ts.map +1 -0
  117. package/dist/utils/stream_converter.js +172 -0
  118. package/dist/utils/stream_converter.js.map +1 -0
  119. package/dist/validation.d.ts +1789 -0
  120. package/dist/validation.d.ts.map +1 -0
  121. package/dist/validation.js +289 -0
  122. package/dist/validation.js.map +1 -0
  123. package/dist/vitest.config.d.ts +3 -0
  124. package/dist/vitest.config.d.ts.map +1 -0
  125. package/dist/vitest.config.js +34 -0
  126. package/dist/vitest.config.js.map +1 -0
  127. package/package.json +86 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai_chat.js","sourceRoot":"","sources":["../../model_providers/openai_chat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { OpenAIChat } from './openai_chat.js';
2
+ export declare class OpenRouterProvider extends OpenAIChat {
3
+ constructor();
4
+ }
5
+ export declare const openRouterProvider: OpenRouterProvider;
6
+ //# sourceMappingURL=openrouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../model_providers/openrouter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAK9C,qBAAa,kBAAmB,SAAQ,UAAU;;CAqBjD;AAKD,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { OpenAIChat } from './openai_chat.js';
2
+ export class OpenRouterProvider extends OpenAIChat {
3
+ constructor() {
4
+ super('openrouter', process.env.OPENROUTER_API_KEY, 'https://openrouter.ai/api/v1', {
5
+ 'User-Agent': 'magi',
6
+ 'HTTP-Referer': 'https://withmagi.com/',
7
+ 'X-Title': 'magi',
8
+ }, {
9
+ provider: {
10
+ require_parameters: true,
11
+ sort: 'throughput',
12
+ ignore: ['Novita'],
13
+ },
14
+ });
15
+ }
16
+ }
17
+ export const openRouterProvider = new OpenRouterProvider();
18
+ //# sourceMappingURL=openrouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../model_providers/openrouter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAK9C,MAAM,OAAO,kBAAmB,SAAQ,UAAU;IAC9C;QACI,KAAK,CACD,YAAY,EACZ,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAC9B,8BAA8B,EAC9B;YACI,YAAY,EAAE,MAAM;YACpB,cAAc,EAAE,uBAAuB;YACvC,SAAS,EAAE,MAAM;SACpB,EACD;YACI,QAAQ,EAAE;gBACN,kBAAkB,EAAE,IAAI;gBACxB,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,CAAC,QAAQ,CAAC;aACrB;SACJ,CACJ,CAAC;IACN,CAAC;CAEJ;AAKD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { BaseModelProvider } from './base_provider.js';
2
+ import { EnsembleStreamEvent, ResponseInput, EnsembleAgent } from '../types.js';
3
+ export declare class RefactoredOpenAIProvider extends BaseModelProvider {
4
+ private client;
5
+ private supportedModels;
6
+ constructor();
7
+ supportsModel(model: string): boolean;
8
+ createResponseStream(model: string, messages: ResponseInput, agent: EnsembleAgent): AsyncGenerator<EnsembleStreamEvent>;
9
+ private convertMessages;
10
+ private convertMessage;
11
+ private convertContent;
12
+ private convertFunctionCall;
13
+ private convertFunctionOutput;
14
+ private convertTools;
15
+ private buildRequestOptions;
16
+ private convertToolChoice;
17
+ private createStream;
18
+ private processStream;
19
+ private processChunk;
20
+ private buildResponseTurn;
21
+ }
22
+ //# sourceMappingURL=refactored_openai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refactored_openai.d.ts","sourceRoot":"","sources":["../../model_providers/refactored_openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,mBAAmB,EAInB,aAAa,EACb,aAAa,EAId,MAAM,aAAa,CAAC;AAsBrB,qBAAa,wBAAyB,SAAQ,iBAAiB;IAC7D,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAQpB;;IAWH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI9B,oBAAoB,CACzB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,aAAa,GACnB,cAAc,CAAC,mBAAmB,CAAC;IAkDtC,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,iBAAiB;YAcX,YAAY;YAUX,aAAa;IAuD5B,OAAO,CAAE,YAAY;IA2BrB,OAAO,CAAC,iBAAiB;CAqC1B"}
@@ -0,0 +1,310 @@
1
+ import { BaseModelProvider } from './base_provider.js';
2
+ import { validateMessages, validateTools, validateTemperature, validateMaxTokens } from '../validation.js';
3
+ import { createProviderError } from '../errors.js';
4
+ import OpenAI from 'openai';
5
+ export class RefactoredOpenAIProvider extends BaseModelProvider {
6
+ client;
7
+ supportedModels = new Set([
8
+ 'gpt-4o',
9
+ 'gpt-4o-mini',
10
+ 'gpt-4-turbo',
11
+ 'gpt-3.5-turbo',
12
+ 'o1-preview',
13
+ 'o1-mini',
14
+ 'o3-mini'
15
+ ]);
16
+ constructor() {
17
+ super('openai');
18
+ const apiKey = process.env.OPENAI_API_KEY;
19
+ if (!apiKey) {
20
+ throw new Error('OPENAI_API_KEY environment variable is required');
21
+ }
22
+ this.client = new OpenAI({ apiKey });
23
+ }
24
+ supportsModel(model) {
25
+ return this.supportedModels.has(model);
26
+ }
27
+ async *createResponseStream(model, messages, agent) {
28
+ const options = agent.modelSettings || {};
29
+ const tools = await agent.getTools();
30
+ let systemPrompt = '';
31
+ const convertedMessages = [];
32
+ for (const msg of messages) {
33
+ if (msg.type === 'message' && msg.role === 'system') {
34
+ systemPrompt = typeof msg.content === 'string' ? msg.content : '';
35
+ }
36
+ else {
37
+ convertedMessages.push(msg);
38
+ }
39
+ }
40
+ try {
41
+ validateMessages(messages);
42
+ if (tools.length > 0)
43
+ validateTools(tools.map(t => t.definition));
44
+ const openAIMessages = this.convertMessages(convertedMessages, systemPrompt);
45
+ const openAITools = tools.length > 0 ? this.convertTools(tools) : undefined;
46
+ const requestOptions = this.buildRequestOptions(model, openAIMessages, openAITools, options.tool_choice, options);
47
+ const stream = await this.createStream(requestOptions);
48
+ yield* this.processStream(stream, model);
49
+ }
50
+ catch (error) {
51
+ yield this.handleError(error, 'OpenAI request failed');
52
+ throw error;
53
+ }
54
+ }
55
+ convertMessages(messages, systemPrompt) {
56
+ const converted = [];
57
+ if (systemPrompt) {
58
+ converted.push({ role: 'system', content: systemPrompt });
59
+ }
60
+ for (const msg of messages) {
61
+ converted.push(...this.convertMessage(msg));
62
+ }
63
+ return converted;
64
+ }
65
+ convertMessage(message) {
66
+ switch (message.type) {
67
+ case 'message':
68
+ if ('content' in message && (message.role === 'user' || message.role === 'system')) {
69
+ return [{
70
+ role: message.role,
71
+ content: this.convertContent(message.content)
72
+ }];
73
+ }
74
+ else if ('content' in message && message.role === 'assistant') {
75
+ return [{
76
+ role: 'assistant',
77
+ content: this.convertContent(message.content)
78
+ }];
79
+ }
80
+ break;
81
+ case 'function_call':
82
+ return this.convertFunctionCall(message);
83
+ case 'function_call_output':
84
+ return this.convertFunctionOutput(message);
85
+ }
86
+ return [];
87
+ }
88
+ convertContent(content) {
89
+ if (typeof content === 'string') {
90
+ return content;
91
+ }
92
+ return content.map(item => {
93
+ if (item.type === 'input_text') {
94
+ return { type: 'text', text: item.text };
95
+ }
96
+ else if (item.type === 'input_image') {
97
+ return {
98
+ type: 'image_url',
99
+ image_url: {
100
+ url: item.image_url || `data:image/jpeg;base64,${item.file_id}`,
101
+ detail: item.detail
102
+ }
103
+ };
104
+ }
105
+ return { type: 'text', text: '' };
106
+ });
107
+ }
108
+ convertFunctionCall(call) {
109
+ return [{
110
+ role: 'assistant',
111
+ content: null,
112
+ tool_calls: [{
113
+ index: 0,
114
+ id: call.call_id,
115
+ type: 'function',
116
+ function: {
117
+ name: call.name,
118
+ arguments: call.arguments
119
+ }
120
+ }]
121
+ }];
122
+ }
123
+ convertFunctionOutput(output) {
124
+ return [{
125
+ role: 'tool',
126
+ content: output.output,
127
+ tool_call_id: output.call_id
128
+ }];
129
+ }
130
+ convertTools(tools) {
131
+ return tools.map(tool => ({
132
+ type: 'function',
133
+ function: {
134
+ name: tool.definition.function.name,
135
+ description: tool.definition.function.description,
136
+ parameters: tool.definition.function.parameters
137
+ }
138
+ }));
139
+ }
140
+ buildRequestOptions(model, messages, tools, toolChoice, options) {
141
+ const params = {
142
+ model,
143
+ messages: messages,
144
+ stream: true,
145
+ temperature: validateTemperature(options?.temperature),
146
+ max_tokens: validateMaxTokens(options?.max_tokens),
147
+ top_p: options?.top_p,
148
+ seed: options?.seed
149
+ };
150
+ if (tools && tools.length > 0) {
151
+ params.tools = tools;
152
+ params.tool_choice = this.convertToolChoice(toolChoice);
153
+ }
154
+ return params;
155
+ }
156
+ convertToolChoice(toolChoice) {
157
+ if (!toolChoice)
158
+ return 'auto';
159
+ if (typeof toolChoice === 'string')
160
+ return toolChoice;
161
+ return {
162
+ type: 'function',
163
+ function: { name: toolChoice.function.name }
164
+ };
165
+ }
166
+ async createStream(params) {
167
+ const response = await this.client.chat.completions.create(params);
168
+ return response;
169
+ }
170
+ async *processStream(stream, model) {
171
+ const deltaBuffer = this.createDeltaBuffer();
172
+ const toolCallAccumulator = new ToolCallAccumulator();
173
+ let usage = null;
174
+ try {
175
+ for await (const chunk of stream) {
176
+ yield* this.processChunk(chunk, deltaBuffer, toolCallAccumulator);
177
+ if (chunk.usage) {
178
+ usage = {
179
+ inputTokens: chunk.usage.prompt_tokens,
180
+ outputTokens: chunk.usage.completion_tokens,
181
+ totalTokens: chunk.usage.total_tokens
182
+ };
183
+ }
184
+ }
185
+ const remainingText = deltaBuffer.flush();
186
+ if (remainingText) {
187
+ yield this.createTextEvent(remainingText);
188
+ }
189
+ yield* toolCallAccumulator.emitPendingCalls(this);
190
+ if (usage) {
191
+ yield this.createUsageEvent(usage.inputTokens, usage.outputTokens);
192
+ }
193
+ const finalText = deltaBuffer.flush();
194
+ if (finalText) {
195
+ yield {
196
+ type: 'message_complete',
197
+ content: finalText,
198
+ message_id: 'msg_' + Date.now()
199
+ };
200
+ }
201
+ }
202
+ catch (error) {
203
+ throw createProviderError('openai', error);
204
+ }
205
+ }
206
+ *processChunk(chunk, deltaBuffer, toolCallAccumulator) {
207
+ const choice = chunk.choices[0];
208
+ if (!choice?.delta)
209
+ return;
210
+ if (choice.delta.content) {
211
+ const flushed = deltaBuffer.add(choice.delta.content);
212
+ if (flushed) {
213
+ yield this.createTextEvent(flushed);
214
+ }
215
+ }
216
+ if (choice.delta.tool_calls) {
217
+ for (const toolCall of choice.delta.tool_calls) {
218
+ toolCallAccumulator.accumulate(toolCall);
219
+ }
220
+ }
221
+ }
222
+ buildResponseTurn(model, text, toolCalls, usage) {
223
+ const messages = [];
224
+ if (text) {
225
+ messages.push({
226
+ type: 'message',
227
+ role: 'assistant',
228
+ content: text,
229
+ status: 'completed',
230
+ model
231
+ });
232
+ }
233
+ for (const toolCall of toolCalls) {
234
+ messages.push({
235
+ type: 'function_call',
236
+ call_id: toolCall.id,
237
+ name: toolCall.name,
238
+ arguments: JSON.stringify(toolCall.arguments),
239
+ status: 'completed',
240
+ model
241
+ });
242
+ }
243
+ return {
244
+ messages,
245
+ usage: usage ? {
246
+ input_tokens: usage.inputTokens,
247
+ output_tokens: usage.outputTokens
248
+ } : undefined
249
+ };
250
+ }
251
+ }
252
+ class ToolCallAccumulator {
253
+ toolCalls = new Map();
254
+ accumulate(toolCall) {
255
+ const existing = this.toolCalls.get(toolCall.index) || {
256
+ id: '',
257
+ name: '',
258
+ arguments: ''
259
+ };
260
+ if (toolCall.id)
261
+ existing.id = toolCall.id;
262
+ if (toolCall.function?.name)
263
+ existing.name = toolCall.function.name;
264
+ if (toolCall.function?.arguments)
265
+ existing.arguments += toolCall.function.arguments;
266
+ this.toolCalls.set(toolCall.index, existing);
267
+ }
268
+ *emitPendingCalls(provider) {
269
+ for (const [_, toolCall] of this.toolCalls) {
270
+ if (toolCall.id && toolCall.name && toolCall.arguments) {
271
+ try {
272
+ const params = JSON.parse(toolCall.arguments);
273
+ yield {
274
+ type: 'tool_start',
275
+ tool_calls: [{
276
+ id: toolCall.id,
277
+ type: 'function',
278
+ call_id: toolCall.id,
279
+ function: {
280
+ name: toolCall.name,
281
+ arguments: toolCall.arguments
282
+ }
283
+ }]
284
+ };
285
+ }
286
+ catch (e) {
287
+ console.error(`Failed to parse tool arguments for ${toolCall.name}:`, e);
288
+ }
289
+ }
290
+ }
291
+ }
292
+ getCompletedCalls() {
293
+ const calls = [];
294
+ for (const [_, toolCall] of this.toolCalls) {
295
+ if (toolCall.id && toolCall.name && toolCall.arguments) {
296
+ try {
297
+ calls.push({
298
+ id: toolCall.id,
299
+ name: toolCall.name,
300
+ arguments: JSON.parse(toolCall.arguments)
301
+ });
302
+ }
303
+ catch (e) {
304
+ }
305
+ }
306
+ }
307
+ return calls;
308
+ }
309
+ }
310
+ //# sourceMappingURL=refactored_openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refactored_openai.js","sourceRoot":"","sources":["../../model_providers/refactored_openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAyBvD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC3G,OAAO,EAAE,mBAAmB,EAAiB,MAAM,cAAc,CAAC;AAElE,OAAO,MAAM,MAAM,QAAQ,CAAC;AAK5B,MAAM,OAAO,wBAAyB,SAAQ,iBAAiB;IACrD,MAAM,CAAS;IACf,eAAe,GAAG,IAAI,GAAG,CAAC;QAChC,QAAQ;QACR,aAAa;QACb,aAAa;QACb,eAAe;QACf,YAAY;QACZ,SAAS;QACT,SAAS;KACV,CAAC,CAAC;IAEH;QACE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,aAAa,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,CAAC,oBAAoB,CACzB,KAAa,EACb,QAAuB,EACvB,KAAoB;QAGpB,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QAGrC,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,MAAM,iBAAiB,GAAsB,EAAE,CAAC;QAEhD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpD,YAAY,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,iBAAiB,CAAC,IAAI,CAAC,GAAsB,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YAEH,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC3B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YAGlE,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;YAC7E,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAG5E,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAC7C,KAAK,EACL,cAAc,EACd,WAAW,EACX,OAAO,CAAC,WAAW,EACnB,OAA0B,CAC3B,CAAC;YAGF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YAGvD,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAG3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;YACvD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAKO,eAAe,CAAC,QAA2B,EAAE,YAAoB;QACvE,MAAM,SAAS,GAAoB,EAAE,CAAC;QAEtC,IAAI,YAAY,EAAE,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAKO,cAAc,CAAC,OAAwB;QAC7C,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,SAAS;gBACZ,IAAI,SAAS,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;oBACnF,OAAO,CAAC;4BACN,IAAI,EAAE,OAAO,CAAC,IAAI;4BAClB,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC;yBAC9C,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAChE,OAAO,CAAC;4BACN,IAAI,EAAE,WAAW;4BACjB,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC;yBAC9C,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM;YAER,KAAK,eAAe;gBAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAoC,CAAC,CAAC;YAExE,KAAK,sBAAsB;gBACzB,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAA0C,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAKO,cAAc,CAAC,OAAgH;QACrI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,OAAO,CAAC;QACjB,CAAC;QAGD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACxB,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAC3C,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBACvC,OAAO;oBACL,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE;wBACT,GAAG,EAAE,IAAI,CAAC,SAAS,IAAI,0BAA0B,IAAI,CAAC,OAAO,EAAE;wBAC/D,MAAM,EAAE,IAAI,CAAC,MAAM;qBACpB;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAKO,mBAAmB,CAAC,IAA+B;QACzD,OAAO,CAAC;gBACN,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,CAAC;wBACX,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,IAAI,CAAC,OAAO;wBAChB,IAAI,EAAE,UAAU;wBAChB,QAAQ,EAAE;4BACR,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,SAAS,EAAE,IAAI,CAAC,SAAS;yBAC1B;qBACF,CAAC;aACH,CAAC,CAAC;IACL,CAAC;IAKO,qBAAqB,CAAC,MAAuC;QACnE,OAAO,CAAC;gBACN,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,MAAM,CAAC,MAAM;gBACtB,YAAY,EAAE,MAAM,CAAC,OAAO;aAC7B,CAAC,CAAC;IACL,CAAC;IAKO,YAAY,CAAC,KAAqB;QACxC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACR,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI;gBACnC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW;gBACjD,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU;aAChD;SACF,CAAC,CAAC,CAAC;IACN,CAAC;IAKO,mBAAmB,CACzB,KAAa,EACb,QAAyB,EACzB,KAAoB,EACpB,UAA0C,EAC1C,OAAyB;QAEzB,MAAM,MAAM,GAAsC;YAChD,KAAK;YACL,QAAQ,EAAE,QAAe;YACzB,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC;YACtD,UAAU,EAAE,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC;YAClD,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,IAAI,EAAE,OAAO,EAAE,IAAI;SACpB,CAAC;QAEF,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YACrB,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAKO,iBAAiB,CACvB,UAA0C;QAE1C,IAAI,CAAC,UAAU;YAAE,OAAO,MAAM,CAAC;QAC/B,IAAI,OAAO,UAAU,KAAK,QAAQ;YAAE,OAAO,UAA8D,CAAC;QAC1G,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE;SAC7C,CAAC;IACJ,CAAC;IAKO,KAAK,CAAC,YAAY,CACxB,MAAyC;QAEzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnE,OAAO,QAA4C,CAAC;IACtD,CAAC;IAKO,KAAK,CAAC,CAAC,aAAa,CAC1B,MAAwC,EACxC,KAAa;QAEb,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7C,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACtD,IAAI,KAAK,GAAuB,IAAI,CAAC;QAErC,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAEjC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;gBAGlE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBAChB,KAAK,GAAG;wBACN,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa;wBACtC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,iBAAiB;wBAC3C,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY;qBACtC,CAAC;gBACJ,CAAC;YACH,CAAC;YAGD,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;YAC1C,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YAC5C,CAAC;YAGD,KAAK,CAAC,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAGlD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;YACrE,CAAC;YAGD,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;YACtC,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM;oBACJ,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,SAAS;oBAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;iBAChC,CAAC;YACJ,CAAC;QAEH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAKO,CAAC,YAAY,CACnB,KAAwB,EACxB,WAA+D,EAC/D,mBAAwC;QAExC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,EAAE,KAAK;YAAE,OAAO;QAG3B,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAGD,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAC5B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC/C,mBAAmB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAKO,iBAAiB,CACvB,KAAa,EACb,IAAY,EACZ,SAA2B,EAC3B,KAAyB;QAEzB,MAAM,QAAQ,GAAsB,EAAE,CAAC;QAEvC,IAAI,IAAI,EAAE,CAAC;YACT,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,WAAW;gBACnB,KAAK;aACN,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,QAAQ,CAAC,EAAE;gBACpB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC7C,MAAM,EAAE,WAAW;gBACnB,KAAK;aACN,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,QAAQ;YACR,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;gBACb,YAAY,EAAE,KAAK,CAAC,WAAW;gBAC/B,aAAa,EAAE,KAAK,CAAC,YAAY;aAClC,CAAC,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;CACF;AAKD,MAAM,mBAAmB;IACf,SAAS,GAAG,IAAI,GAAG,EAIvB,CAAC;IAEL,UAAU,CAAC,QAAwB;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI;YACrD,EAAE,EAAE,EAAE;YACN,IAAI,EAAE,EAAE;YACR,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,IAAI,QAAQ,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3C,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI;YAAE,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QACpE,IAAI,QAAQ,CAAC,QAAQ,EAAE,SAAS;YAAE,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;QAEpF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,CAAC,gBAAgB,CAAC,QAA2B;QAC3C,KAAK,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3C,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACvD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM;wBACJ,IAAI,EAAE,YAAY;wBAClB,UAAU,EAAE,CAAC;gCACX,EAAE,EAAE,QAAQ,CAAC,EAAE;gCACf,IAAI,EAAE,UAAU;gCAChB,OAAO,EAAE,QAAQ,CAAC,EAAE;gCACpB,QAAQ,EAAE;oCACR,IAAI,EAAE,QAAQ,CAAC,IAAI;oCACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;iCAC9B;6BACF,CAAC;qBACoB,CAAC;gBAC3B,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBAGX,OAAO,CAAC,KAAK,CAAC,sCAAsC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,iBAAiB;QACf,MAAM,KAAK,GAAqB,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3C,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACvD,IAAI,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC;wBACT,EAAE,EAAE,QAAQ,CAAC,EAAE;wBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;qBAC1C,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;gBAEb,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ import { ModelProvider, ResponseInput, EnsembleStreamEvent, EnsembleAgent } from '../types.js';
2
+ export interface TestProviderConfig {
3
+ streamingDelay?: number;
4
+ shouldError?: boolean;
5
+ errorMessage?: string;
6
+ simulateRateLimit?: boolean;
7
+ fixedResponse?: string | undefined;
8
+ fixedThinking?: string | undefined;
9
+ simulateToolCall?: boolean;
10
+ toolName?: string;
11
+ toolArguments?: Record<string, any>;
12
+ tokenUsage?: {
13
+ inputTokens: number;
14
+ outputTokens: number;
15
+ };
16
+ chunkSize?: number;
17
+ }
18
+ export declare const testProviderConfig: TestProviderConfig;
19
+ export declare function resetTestProviderConfig(): void;
20
+ export declare class TestProvider implements ModelProvider {
21
+ private config;
22
+ constructor(config?: TestProviderConfig);
23
+ createResponseStream(model: string, messages: ResponseInput, agent: EnsembleAgent): AsyncGenerator<EnsembleStreamEvent>;
24
+ private generateResponse;
25
+ }
26
+ export declare const testProvider: TestProvider;
27
+ //# sourceMappingURL=test_provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_provider.d.ts","sourceRoot":"","sources":["../../model_providers/test_provider.ts"],"names":[],"mappings":"AAQA,OAAO,EACH,aAAa,EACb,aAAa,EACb,mBAAmB,EAGnB,aAAa,EAChB,MAAM,aAAa,CAAC;AAQrB,MAAM,WAAW,kBAAkB;IAE/B,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAI5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAGnC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAGnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAGpC,UAAU,CAAC,EAAE;QACT,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACxB,CAAC;IAGF,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,kBAAkB,EAAE,kBAehC,CAAC;AAKF,wBAAgB,uBAAuB,SAetC;AAUD,qBAAa,YAAa,YAAW,aAAa;IAC9C,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,GAAE,kBAAuC;IAOpD,oBAAoB,CACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,aAAa,GACrB,cAAc,CAAC,mBAAmB,CAAC;IAyKtC,OAAO,CAAC,gBAAgB;CA0B3B;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
@@ -0,0 +1,185 @@
1
+ import { v4 as uuidv4 } from 'uuid';
2
+ import { costTracker } from '@just-every/ensemble/cost_tracker';
3
+ export const testProviderConfig = {
4
+ streamingDelay: 50,
5
+ shouldError: false,
6
+ errorMessage: 'Simulated error from test provider',
7
+ simulateRateLimit: false,
8
+ fixedResponse: undefined,
9
+ fixedThinking: undefined,
10
+ simulateToolCall: false,
11
+ toolName: 'web_search',
12
+ toolArguments: { query: 'test query' },
13
+ tokenUsage: {
14
+ inputTokens: 100,
15
+ outputTokens: 200,
16
+ },
17
+ chunkSize: 5,
18
+ };
19
+ export function resetTestProviderConfig() {
20
+ testProviderConfig.streamingDelay = 50;
21
+ testProviderConfig.shouldError = false;
22
+ testProviderConfig.errorMessage = 'Simulated error from test provider';
23
+ testProviderConfig.simulateRateLimit = false;
24
+ testProviderConfig.fixedResponse = undefined;
25
+ testProviderConfig.fixedThinking = undefined;
26
+ testProviderConfig.simulateToolCall = false;
27
+ testProviderConfig.toolName = 'web_search';
28
+ testProviderConfig.toolArguments = { query: 'test query' };
29
+ testProviderConfig.tokenUsage = {
30
+ inputTokens: 100,
31
+ outputTokens: 200,
32
+ };
33
+ testProviderConfig.chunkSize = 5;
34
+ }
35
+ const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
36
+ export class TestProvider {
37
+ config;
38
+ constructor(config = testProviderConfig) {
39
+ this.config = config;
40
+ }
41
+ async *createResponseStream(model, messages, agent) {
42
+ console.log(`[TestProvider] Creating response stream for model: ${model}`);
43
+ const lastUserMessage = messages
44
+ .filter(m => 'role' in m && m.role === 'user')
45
+ .pop();
46
+ const userMessageContent = lastUserMessage && 'content' in lastUserMessage
47
+ ? typeof lastUserMessage.content === 'string'
48
+ ? lastUserMessage.content
49
+ : JSON.stringify(lastUserMessage.content)
50
+ : '';
51
+ const inputTokenCount = this.config.tokenUsage?.inputTokens ||
52
+ Math.max(50, Math.ceil(userMessageContent.length / 4));
53
+ let response;
54
+ if (this.config.simulateRateLimit) {
55
+ const rateLimitError = '429 Too Many Requests: The server is currently processing too many requests. Please try again later.';
56
+ yield {
57
+ type: 'error',
58
+ error: rateLimitError,
59
+ };
60
+ return;
61
+ }
62
+ if (this.config.shouldError) {
63
+ yield {
64
+ type: 'error',
65
+ error: this.config.errorMessage ||
66
+ 'Simulated error from test provider',
67
+ };
68
+ return;
69
+ }
70
+ if (this.config.fixedResponse) {
71
+ response = this.config.fixedResponse;
72
+ }
73
+ else {
74
+ response = this.generateResponse(userMessageContent);
75
+ }
76
+ const messageId = uuidv4();
77
+ yield {
78
+ type: 'message_start',
79
+ message_id: messageId,
80
+ content: '',
81
+ };
82
+ if (this.config.fixedThinking) {
83
+ yield {
84
+ type: 'message_delta',
85
+ message_id: messageId,
86
+ content: '',
87
+ thinking_content: this.config.fixedThinking,
88
+ thinking_signature: '(Simulated thinking)',
89
+ };
90
+ await sleep(this.config.streamingDelay || 50);
91
+ }
92
+ if (this.config.simulateToolCall && agent) {
93
+ const currentTools = agent.getTools();
94
+ if (currentTools) {
95
+ const toolArray = await currentTools;
96
+ if (toolArray.length > 0) {
97
+ const availableTool = toolArray.find(tool => this.config.toolName
98
+ ? tool.definition.function.name ===
99
+ this.config.toolName
100
+ : true);
101
+ if (availableTool) {
102
+ const toolCall = {
103
+ id: uuidv4(),
104
+ type: 'function',
105
+ function: {
106
+ name: availableTool.definition.function.name,
107
+ arguments: JSON.stringify(this.config.toolArguments || {
108
+ query: userMessageContent.slice(0, 50),
109
+ }),
110
+ },
111
+ };
112
+ yield {
113
+ type: 'tool_start',
114
+ tool_calls: [toolCall],
115
+ };
116
+ await sleep(this.config.streamingDelay || 50);
117
+ response = `I've used the ${toolCall.function.name} tool to help answer your question.\n\n${response}`;
118
+ }
119
+ }
120
+ }
121
+ }
122
+ const chunkSize = this.config.chunkSize || 5;
123
+ let position = 0;
124
+ while (position < response.length) {
125
+ const chunk = response.slice(position, position + chunkSize);
126
+ position += chunkSize;
127
+ yield {
128
+ type: 'message_delta',
129
+ message_id: messageId,
130
+ content: chunk,
131
+ order: position / chunkSize,
132
+ };
133
+ await sleep(this.config.streamingDelay || 50);
134
+ }
135
+ yield {
136
+ type: 'message_complete',
137
+ message_id: messageId,
138
+ content: response,
139
+ };
140
+ const outputTokenCount = this.config.tokenUsage?.outputTokens || Math.ceil(response.length / 4);
141
+ yield {
142
+ type: 'cost_update',
143
+ usage: {
144
+ input_tokens: inputTokenCount,
145
+ output_tokens: outputTokenCount,
146
+ total_tokens: inputTokenCount + outputTokenCount
147
+ }
148
+ };
149
+ costTracker.addUsage({
150
+ model,
151
+ input_tokens: inputTokenCount,
152
+ output_tokens: outputTokenCount,
153
+ });
154
+ }
155
+ generateResponse(input) {
156
+ const lowercaseInput = input.toLowerCase();
157
+ if (lowercaseInput.includes('hello') || lowercaseInput.includes('hi')) {
158
+ return "Hello! I'm a test AI model. How can I help you today?";
159
+ }
160
+ else if (lowercaseInput.includes('help')) {
161
+ return "I'm here to help! What do you need assistance with?";
162
+ }
163
+ else if (lowercaseInput.includes('error') ||
164
+ lowercaseInput.includes('problem')) {
165
+ return "I understand you're experiencing an issue. Let me help troubleshoot the problem.";
166
+ }
167
+ else if (lowercaseInput.includes('json') || lowercaseInput.includes('person')) {
168
+ return '{"name": "John Doe", "age": 30}';
169
+ }
170
+ else if (lowercaseInput.includes('test')) {
171
+ return 'This is a test response. The test provider is working correctly!';
172
+ }
173
+ else if (lowercaseInput.includes('weather')) {
174
+ return 'The weather is sunny and 72°F.';
175
+ }
176
+ else if (lowercaseInput.includes('?')) {
177
+ return "That's an interesting question. As a test model, I'm designed to provide simulated responses for testing purposes.";
178
+ }
179
+ else {
180
+ return `I've received your message: "${input.slice(0, 50)}${input.length > 50 ? '...' : ''}". This is a simulated response from the test provider.`;
181
+ }
182
+ }
183
+ }
184
+ export const testProvider = new TestProvider();
185
+ //# sourceMappingURL=test_provider.js.map