ai.matey.cli 0.2.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.
- package/LICENSE +21 -0
- package/dist/cjs/convert-request.js +365 -0
- package/dist/cjs/convert-request.js.map +1 -0
- package/dist/cjs/convert-response.js +211 -0
- package/dist/cjs/convert-response.js.map +1 -0
- package/dist/cjs/converters/request-converters.js +183 -0
- package/dist/cjs/converters/request-converters.js.map +1 -0
- package/dist/cjs/converters/response-converters.js +203 -0
- package/dist/cjs/converters/response-converters.js.map +1 -0
- package/dist/cjs/create-backend.js +569 -0
- package/dist/cjs/create-backend.js.map +1 -0
- package/dist/cjs/index.js +31 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/main.js +181 -0
- package/dist/cjs/main.js.map +1 -0
- package/dist/cjs/ollama/commands/list.js +70 -0
- package/dist/cjs/ollama/commands/list.js.map +1 -0
- package/dist/cjs/ollama/commands/ps.js +80 -0
- package/dist/cjs/ollama/commands/ps.js.map +1 -0
- package/dist/cjs/ollama/commands/pull.js +198 -0
- package/dist/cjs/ollama/commands/pull.js.map +1 -0
- package/dist/cjs/ollama/commands/run.js +279 -0
- package/dist/cjs/ollama/commands/run.js.map +1 -0
- package/dist/cjs/ollama/commands/show.js +138 -0
- package/dist/cjs/ollama/commands/show.js.map +1 -0
- package/dist/cjs/ollama/index.js +238 -0
- package/dist/cjs/ollama/index.js.map +1 -0
- package/dist/cjs/ollama/types.js +10 -0
- package/dist/cjs/ollama/types.js.map +1 -0
- package/dist/cjs/proxy.js +406 -0
- package/dist/cjs/proxy.js.map +1 -0
- package/dist/cjs/utils/backend-loader.js +112 -0
- package/dist/cjs/utils/backend-loader.js.map +1 -0
- package/dist/cjs/utils/index.js +29 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/model-translation.js +138 -0
- package/dist/cjs/utils/model-translation.js.map +1 -0
- package/dist/cjs/utils/output-formatter.js +241 -0
- package/dist/cjs/utils/output-formatter.js.map +1 -0
- package/dist/cjs/utils/pipeline-inspector.js +90 -0
- package/dist/cjs/utils/pipeline-inspector.js.map +1 -0
- package/dist/cjs/utils/state-manager.js +114 -0
- package/dist/cjs/utils/state-manager.js.map +1 -0
- package/dist/esm/convert-request.js +331 -0
- package/dist/esm/convert-request.js.map +1 -0
- package/dist/esm/convert-response.js +177 -0
- package/dist/esm/convert-response.js.map +1 -0
- package/dist/esm/converters/request-converters.js +175 -0
- package/dist/esm/converters/request-converters.js.map +1 -0
- package/dist/esm/converters/response-converters.js +191 -0
- package/dist/esm/converters/response-converters.js.map +1 -0
- package/dist/esm/create-backend.js +533 -0
- package/dist/esm/create-backend.js.map +1 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/main.js +149 -0
- package/dist/esm/main.js.map +1 -0
- package/dist/esm/ollama/commands/list.js +67 -0
- package/dist/esm/ollama/commands/list.js.map +1 -0
- package/dist/esm/ollama/commands/ps.js +77 -0
- package/dist/esm/ollama/commands/ps.js.map +1 -0
- package/dist/esm/ollama/commands/pull.js +195 -0
- package/dist/esm/ollama/commands/pull.js.map +1 -0
- package/dist/esm/ollama/commands/run.js +243 -0
- package/dist/esm/ollama/commands/run.js.map +1 -0
- package/dist/esm/ollama/commands/show.js +135 -0
- package/dist/esm/ollama/commands/show.js.map +1 -0
- package/dist/esm/ollama/index.js +235 -0
- package/dist/esm/ollama/index.js.map +1 -0
- package/dist/esm/ollama/types.js +9 -0
- package/dist/esm/ollama/types.js.map +1 -0
- package/dist/esm/proxy.js +403 -0
- package/dist/esm/proxy.js.map +1 -0
- package/dist/esm/utils/backend-loader.js +74 -0
- package/dist/esm/utils/backend-loader.js.map +1 -0
- package/dist/esm/utils/index.js +13 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/model-translation.js +99 -0
- package/dist/esm/utils/model-translation.js.map +1 -0
- package/dist/esm/utils/output-formatter.js +224 -0
- package/dist/esm/utils/output-formatter.js.map +1 -0
- package/dist/esm/utils/pipeline-inspector.js +84 -0
- package/dist/esm/utils/pipeline-inspector.js.map +1 -0
- package/dist/esm/utils/state-manager.js +111 -0
- package/dist/esm/utils/state-manager.js.map +1 -0
- package/dist/types/convert-request.d.ts +15 -0
- package/dist/types/convert-request.d.ts.map +1 -0
- package/dist/types/convert-response.d.ts +16 -0
- package/dist/types/convert-response.d.ts.map +1 -0
- package/dist/types/converters/request-converters.d.ts +139 -0
- package/dist/types/converters/request-converters.d.ts.map +1 -0
- package/dist/types/converters/response-converters.d.ts +134 -0
- package/dist/types/converters/response-converters.d.ts.map +1 -0
- package/dist/types/create-backend.d.ts +20 -0
- package/dist/types/create-backend.d.ts.map +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/main.d.ts +19 -0
- package/dist/types/main.d.ts.map +1 -0
- package/dist/types/ollama/commands/list.d.ts +32 -0
- package/dist/types/ollama/commands/list.d.ts.map +1 -0
- package/dist/types/ollama/commands/ps.d.ts +27 -0
- package/dist/types/ollama/commands/ps.d.ts.map +1 -0
- package/dist/types/ollama/commands/pull.d.ts +21 -0
- package/dist/types/ollama/commands/pull.d.ts.map +1 -0
- package/dist/types/ollama/commands/run.d.ts +48 -0
- package/dist/types/ollama/commands/run.d.ts.map +1 -0
- package/dist/types/ollama/commands/show.d.ts +36 -0
- package/dist/types/ollama/commands/show.d.ts.map +1 -0
- package/dist/types/ollama/index.d.ts +12 -0
- package/dist/types/ollama/index.d.ts.map +1 -0
- package/dist/types/ollama/types.d.ts +58 -0
- package/dist/types/ollama/types.d.ts.map +1 -0
- package/dist/types/proxy.d.ts +16 -0
- package/dist/types/proxy.d.ts.map +1 -0
- package/dist/types/utils/backend-loader.d.ts +55 -0
- package/dist/types/utils/backend-loader.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +13 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/model-translation.d.ts +64 -0
- package/dist/types/utils/model-translation.d.ts.map +1 -0
- package/dist/types/utils/output-formatter.d.ts +113 -0
- package/dist/types/utils/output-formatter.d.ts.map +1 -0
- package/dist/types/utils/pipeline-inspector.d.ts +50 -0
- package/dist/types/utils/pipeline-inspector.d.ts.map +1 -0
- package/dist/types/utils/state-manager.d.ts +91 -0
- package/dist/types/utils/state-manager.d.ts.map +1 -0
- package/package.json +75 -0
- package/readme.md +32 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request Conversion Utilities
|
|
3
|
+
*
|
|
4
|
+
* Convert Universal IR requests to provider-specific formats for debugging.
|
|
5
|
+
* Complements the response converters - provides full request/response symmetry.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { toOpenAIRequest, toAnthropicRequest } from 'ai.matey';
|
|
10
|
+
*
|
|
11
|
+
* // Convert IR request to see what will be sent to OpenAI
|
|
12
|
+
* const openaiReq = toOpenAIRequest(irRequest);
|
|
13
|
+
* console.log('Will send to OpenAI:', openaiReq);
|
|
14
|
+
*
|
|
15
|
+
* // Convert IR request to Anthropic format
|
|
16
|
+
* const anthropicReq = toAnthropicRequest(irRequest);
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @module
|
|
20
|
+
*/
|
|
21
|
+
import { OpenAIBackendAdapter } from 'ai.matey.backend';
|
|
22
|
+
import { AnthropicBackendAdapter } from 'ai.matey.backend';
|
|
23
|
+
import { GeminiBackendAdapter } from 'ai.matey.backend';
|
|
24
|
+
import { OllamaBackendAdapter } from 'ai.matey.backend';
|
|
25
|
+
import { MistralBackendAdapter } from 'ai.matey.backend';
|
|
26
|
+
// ============================================================================
|
|
27
|
+
// Individual Request Converters
|
|
28
|
+
// ============================================================================
|
|
29
|
+
/**
|
|
30
|
+
* Convert IR request to OpenAI format.
|
|
31
|
+
*
|
|
32
|
+
* Useful for:
|
|
33
|
+
* - Debugging: See what will be sent to OpenAI
|
|
34
|
+
* - Testing: Create OpenAI requests without a backend
|
|
35
|
+
* - Inspection: Understand format transformations
|
|
36
|
+
*
|
|
37
|
+
* @param request - Universal IR request
|
|
38
|
+
* @returns OpenAI-formatted request
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const openaiReq = toOpenAIRequest({
|
|
43
|
+
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
44
|
+
* parameters: { model: 'gpt-4', temperature: 0.7 }
|
|
45
|
+
* });
|
|
46
|
+
* console.log(openaiReq.messages); // OpenAI format
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export function toOpenAIRequest(request) {
|
|
50
|
+
const adapter = new OpenAIBackendAdapter({ apiKey: 'dummy' });
|
|
51
|
+
return adapter.fromIR(request);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Convert IR request to Anthropic format.
|
|
55
|
+
*
|
|
56
|
+
* @param request - Universal IR request
|
|
57
|
+
* @returns Anthropic-formatted request
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const anthropicReq = toAnthropicRequest({
|
|
62
|
+
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
63
|
+
* parameters: { model: 'claude-3', maxTokens: 100 }
|
|
64
|
+
* });
|
|
65
|
+
* console.log(anthropicReq.system); // Anthropic uses separate system parameter
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export function toAnthropicRequest(request) {
|
|
69
|
+
const adapter = new AnthropicBackendAdapter({ apiKey: 'dummy' });
|
|
70
|
+
return adapter.fromIR(request);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Convert IR request to Gemini format.
|
|
74
|
+
*
|
|
75
|
+
* @param request - Universal IR request
|
|
76
|
+
* @returns Gemini-formatted request
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* const geminiReq = toGeminiRequest({
|
|
81
|
+
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
82
|
+
* parameters: { model: 'gemini-pro', temperature: 0.7 }
|
|
83
|
+
* });
|
|
84
|
+
* console.log(geminiReq.contents); // Gemini uses 'contents' array
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export function toGeminiRequest(request) {
|
|
88
|
+
const adapter = new GeminiBackendAdapter({ apiKey: 'dummy' });
|
|
89
|
+
return adapter.fromIR(request);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Convert IR request to Ollama format.
|
|
93
|
+
*
|
|
94
|
+
* @param request - Universal IR request
|
|
95
|
+
* @returns Ollama-formatted request
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```typescript
|
|
99
|
+
* const ollamaReq = toOllamaRequest({
|
|
100
|
+
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
101
|
+
* parameters: { model: 'llama2', temperature: 0.7 }
|
|
102
|
+
* });
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
export function toOllamaRequest(request) {
|
|
106
|
+
const adapter = new OllamaBackendAdapter({ apiKey: 'dummy' });
|
|
107
|
+
return adapter.fromIR(request);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Convert IR request to Mistral format.
|
|
111
|
+
*
|
|
112
|
+
* @param request - Universal IR request
|
|
113
|
+
* @returns Mistral-formatted request
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* const mistralReq = toMistralRequest({
|
|
118
|
+
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
119
|
+
* parameters: { model: 'mistral-small', temperature: 0.7 }
|
|
120
|
+
* });
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
export function toMistralRequest(request) {
|
|
124
|
+
const adapter = new MistralBackendAdapter({ apiKey: 'dummy' });
|
|
125
|
+
return adapter.fromIR(request);
|
|
126
|
+
}
|
|
127
|
+
// ============================================================================
|
|
128
|
+
// Multi-Format Converter
|
|
129
|
+
// ============================================================================
|
|
130
|
+
/**
|
|
131
|
+
* Convert IR request to multiple provider formats at once.
|
|
132
|
+
*
|
|
133
|
+
* Useful for comparing how the same request looks across different providers.
|
|
134
|
+
*
|
|
135
|
+
* @param request - Universal IR request
|
|
136
|
+
* @param formats - Array of target formats
|
|
137
|
+
* @returns Object with format names as keys and converted requests as values
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```typescript
|
|
141
|
+
* const allFormats = toMultipleRequestFormats(irRequest, [
|
|
142
|
+
* 'openai',
|
|
143
|
+
* 'anthropic',
|
|
144
|
+
* 'gemini'
|
|
145
|
+
* ]);
|
|
146
|
+
*
|
|
147
|
+
* console.log('OpenAI:', allFormats.openai);
|
|
148
|
+
* console.log('Anthropic:', allFormats.anthropic);
|
|
149
|
+
* console.log('Gemini:', allFormats.gemini);
|
|
150
|
+
* ```
|
|
151
|
+
*/
|
|
152
|
+
export function toMultipleRequestFormats(request, formats) {
|
|
153
|
+
const result = {};
|
|
154
|
+
for (const format of formats) {
|
|
155
|
+
switch (format) {
|
|
156
|
+
case 'openai':
|
|
157
|
+
result.openai = toOpenAIRequest(request);
|
|
158
|
+
break;
|
|
159
|
+
case 'anthropic':
|
|
160
|
+
result.anthropic = toAnthropicRequest(request);
|
|
161
|
+
break;
|
|
162
|
+
case 'gemini':
|
|
163
|
+
result.gemini = toGeminiRequest(request);
|
|
164
|
+
break;
|
|
165
|
+
case 'ollama':
|
|
166
|
+
result.ollama = toOllamaRequest(request);
|
|
167
|
+
break;
|
|
168
|
+
case 'mistral':
|
|
169
|
+
result.mistral = toMistralRequest(request);
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return result;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=request-converters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-converters.js","sourceRoot":"","sources":["../../../src/converters/request-converters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,oBAAoB,EAAsB,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAyB,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAsB,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAsB,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAuB,MAAM,kBAAkB,CAAC;AAE9E,+EAA+E;AAC/E,gCAAgC;AAChC,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,eAAe,CAAC,OAAsB;IACpD,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9D,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAsB;IACvD,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACjE,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe,CAAC,OAAsB;IACpD,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9D,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,OAAsB;IACpD,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9D,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAsB;IACrD,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/D,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAAsB,EACtB,OAAwE;IAQxE,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,QAAQ;gBACX,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,WAAW;gBACd,MAAM,CAAC,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAC/C,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAC3C,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response Converters
|
|
3
|
+
*
|
|
4
|
+
* Utility functions for converting Universal IR responses to various frontend formats.
|
|
5
|
+
* Useful for debugging, testing, and compatibility checking.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { OpenAIFrontendAdapter, } from 'ai.matey.frontend';
|
|
10
|
+
import { AnthropicFrontendAdapter, } from 'ai.matey.frontend';
|
|
11
|
+
import { GeminiFrontendAdapter } from 'ai.matey.frontend';
|
|
12
|
+
import { OllamaFrontendAdapter } from 'ai.matey.frontend';
|
|
13
|
+
import { MistralFrontendAdapter } from 'ai.matey.frontend';
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Non-Streaming Converters
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Convert Universal IR response to OpenAI format.
|
|
19
|
+
*
|
|
20
|
+
* @param response Universal IR response
|
|
21
|
+
* @returns OpenAI-formatted response
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* import { toOpenAI } from 'ai.matey.utils';
|
|
26
|
+
*
|
|
27
|
+
* const irResponse = await backend.execute(request);
|
|
28
|
+
* const openaiFormat = await toOpenAI(irResponse);
|
|
29
|
+
* console.log(JSON.stringify(openaiFormat, null, 2));
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export async function toOpenAI(response) {
|
|
33
|
+
const adapter = new OpenAIFrontendAdapter();
|
|
34
|
+
return adapter.fromIR(response);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Convert Universal IR response to Anthropic format.
|
|
38
|
+
*
|
|
39
|
+
* @param response Universal IR response
|
|
40
|
+
* @returns Anthropic-formatted response
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* import { toAnthropic } from 'ai.matey.utils';
|
|
45
|
+
*
|
|
46
|
+
* const irResponse = await backend.execute(request);
|
|
47
|
+
* const anthropicFormat = await toAnthropic(irResponse);
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export async function toAnthropic(response) {
|
|
51
|
+
const adapter = new AnthropicFrontendAdapter();
|
|
52
|
+
return adapter.fromIR(response);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Convert Universal IR response to Gemini format.
|
|
56
|
+
*
|
|
57
|
+
* @param response Universal IR response
|
|
58
|
+
* @returns Gemini-formatted response
|
|
59
|
+
*/
|
|
60
|
+
export async function toGemini(response) {
|
|
61
|
+
const adapter = new GeminiFrontendAdapter();
|
|
62
|
+
return adapter.fromIR(response);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Convert Universal IR response to Ollama format.
|
|
66
|
+
*
|
|
67
|
+
* @param response Universal IR response
|
|
68
|
+
* @returns Ollama-formatted response
|
|
69
|
+
*/
|
|
70
|
+
export async function toOllama(response) {
|
|
71
|
+
const adapter = new OllamaFrontendAdapter();
|
|
72
|
+
return adapter.fromIR(response);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Convert Universal IR response to Mistral format.
|
|
76
|
+
*
|
|
77
|
+
* @param response Universal IR response
|
|
78
|
+
* @returns Mistral-formatted response
|
|
79
|
+
*/
|
|
80
|
+
export async function toMistral(response) {
|
|
81
|
+
const adapter = new MistralFrontendAdapter();
|
|
82
|
+
return adapter.fromIR(response);
|
|
83
|
+
}
|
|
84
|
+
// ============================================================================
|
|
85
|
+
// Streaming Converters
|
|
86
|
+
// ============================================================================
|
|
87
|
+
/**
|
|
88
|
+
* Convert Universal IR stream to OpenAI SSE format.
|
|
89
|
+
*
|
|
90
|
+
* @param stream Universal IR stream
|
|
91
|
+
* @param options Stream conversion options
|
|
92
|
+
* @returns OpenAI-formatted stream chunks
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* import { toOpenAIStream } from 'ai.matey.utils';
|
|
97
|
+
*
|
|
98
|
+
* const irStream = backend.executeStream(request);
|
|
99
|
+
* for await (const chunk of toOpenAIStream(irStream)) {
|
|
100
|
+
* console.log('OpenAI chunk:', chunk);
|
|
101
|
+
* }
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export async function* toOpenAIStream(stream, options) {
|
|
105
|
+
const adapter = new OpenAIFrontendAdapter();
|
|
106
|
+
yield* adapter.fromIRStream(stream, options);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Convert Universal IR stream to Anthropic SSE format.
|
|
110
|
+
*
|
|
111
|
+
* @param stream Universal IR stream
|
|
112
|
+
* @param options Stream conversion options
|
|
113
|
+
* @returns Anthropic-formatted stream chunks
|
|
114
|
+
*/
|
|
115
|
+
export async function* toAnthropicStream(stream, options) {
|
|
116
|
+
const adapter = new AnthropicFrontendAdapter();
|
|
117
|
+
yield* adapter.fromIRStream(stream, options);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Convert Universal IR stream to Gemini SSE format.
|
|
121
|
+
*
|
|
122
|
+
* @param stream Universal IR stream
|
|
123
|
+
* @param options Stream conversion options
|
|
124
|
+
* @returns Gemini-formatted stream chunks
|
|
125
|
+
*/
|
|
126
|
+
export async function* toGeminiStream(stream, options) {
|
|
127
|
+
const adapter = new GeminiFrontendAdapter();
|
|
128
|
+
yield* adapter.fromIRStream(stream, options);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Convert Universal IR stream to Mistral SSE format.
|
|
132
|
+
*
|
|
133
|
+
* @param stream Universal IR stream
|
|
134
|
+
* @param options Stream conversion options
|
|
135
|
+
* @returns Mistral-formatted stream chunks
|
|
136
|
+
*/
|
|
137
|
+
export async function* toMistralStream(stream, options) {
|
|
138
|
+
const adapter = new MistralFrontendAdapter();
|
|
139
|
+
yield* adapter.fromIRStream(stream, options);
|
|
140
|
+
}
|
|
141
|
+
// ============================================================================
|
|
142
|
+
// Multi-Format Converter (for comparison/debugging)
|
|
143
|
+
// ============================================================================
|
|
144
|
+
/**
|
|
145
|
+
* Convert Universal IR response to multiple formats at once.
|
|
146
|
+
* Useful for debugging and comparing how different providers handle the same response.
|
|
147
|
+
*
|
|
148
|
+
* @param response Universal IR response
|
|
149
|
+
* @param formats Array of format names to convert to
|
|
150
|
+
* @returns Object with converted responses for each format
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* import { toMultipleFormats } from 'ai.matey.utils';
|
|
155
|
+
*
|
|
156
|
+
* const irResponse = await backend.execute(request);
|
|
157
|
+
* const allFormats = await toMultipleFormats(irResponse, ['openai', 'anthropic', 'gemini']);
|
|
158
|
+
*
|
|
159
|
+
* console.log('OpenAI:', JSON.stringify(allFormats.openai, null, 2));
|
|
160
|
+
* console.log('Anthropic:', JSON.stringify(allFormats.anthropic, null, 2));
|
|
161
|
+
* console.log('Gemini:', JSON.stringify(allFormats.gemini, null, 2));
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
export async function toMultipleFormats(response, formats = [
|
|
165
|
+
'openai',
|
|
166
|
+
'anthropic',
|
|
167
|
+
'gemini',
|
|
168
|
+
]) {
|
|
169
|
+
const result = {};
|
|
170
|
+
for (const format of formats) {
|
|
171
|
+
switch (format) {
|
|
172
|
+
case 'openai':
|
|
173
|
+
result.openai = await toOpenAI(response);
|
|
174
|
+
break;
|
|
175
|
+
case 'anthropic':
|
|
176
|
+
result.anthropic = await toAnthropic(response);
|
|
177
|
+
break;
|
|
178
|
+
case 'gemini':
|
|
179
|
+
result.gemini = await toGemini(response);
|
|
180
|
+
break;
|
|
181
|
+
case 'ollama':
|
|
182
|
+
result.ollama = await toOllama(response);
|
|
183
|
+
break;
|
|
184
|
+
case 'mistral':
|
|
185
|
+
result.mistral = await toMistral(response);
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return result;
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=response-converters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-converters.js","sourceRoot":"","sources":["../../../src/converters/response-converters.ts"],"names":[],"mappings":"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"}
|