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.
Files changed (129) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/convert-request.js +365 -0
  3. package/dist/cjs/convert-request.js.map +1 -0
  4. package/dist/cjs/convert-response.js +211 -0
  5. package/dist/cjs/convert-response.js.map +1 -0
  6. package/dist/cjs/converters/request-converters.js +183 -0
  7. package/dist/cjs/converters/request-converters.js.map +1 -0
  8. package/dist/cjs/converters/response-converters.js +203 -0
  9. package/dist/cjs/converters/response-converters.js.map +1 -0
  10. package/dist/cjs/create-backend.js +569 -0
  11. package/dist/cjs/create-backend.js.map +1 -0
  12. package/dist/cjs/index.js +31 -0
  13. package/dist/cjs/index.js.map +1 -0
  14. package/dist/cjs/main.js +181 -0
  15. package/dist/cjs/main.js.map +1 -0
  16. package/dist/cjs/ollama/commands/list.js +70 -0
  17. package/dist/cjs/ollama/commands/list.js.map +1 -0
  18. package/dist/cjs/ollama/commands/ps.js +80 -0
  19. package/dist/cjs/ollama/commands/ps.js.map +1 -0
  20. package/dist/cjs/ollama/commands/pull.js +198 -0
  21. package/dist/cjs/ollama/commands/pull.js.map +1 -0
  22. package/dist/cjs/ollama/commands/run.js +279 -0
  23. package/dist/cjs/ollama/commands/run.js.map +1 -0
  24. package/dist/cjs/ollama/commands/show.js +138 -0
  25. package/dist/cjs/ollama/commands/show.js.map +1 -0
  26. package/dist/cjs/ollama/index.js +238 -0
  27. package/dist/cjs/ollama/index.js.map +1 -0
  28. package/dist/cjs/ollama/types.js +10 -0
  29. package/dist/cjs/ollama/types.js.map +1 -0
  30. package/dist/cjs/proxy.js +406 -0
  31. package/dist/cjs/proxy.js.map +1 -0
  32. package/dist/cjs/utils/backend-loader.js +112 -0
  33. package/dist/cjs/utils/backend-loader.js.map +1 -0
  34. package/dist/cjs/utils/index.js +29 -0
  35. package/dist/cjs/utils/index.js.map +1 -0
  36. package/dist/cjs/utils/model-translation.js +138 -0
  37. package/dist/cjs/utils/model-translation.js.map +1 -0
  38. package/dist/cjs/utils/output-formatter.js +241 -0
  39. package/dist/cjs/utils/output-formatter.js.map +1 -0
  40. package/dist/cjs/utils/pipeline-inspector.js +90 -0
  41. package/dist/cjs/utils/pipeline-inspector.js.map +1 -0
  42. package/dist/cjs/utils/state-manager.js +114 -0
  43. package/dist/cjs/utils/state-manager.js.map +1 -0
  44. package/dist/esm/convert-request.js +331 -0
  45. package/dist/esm/convert-request.js.map +1 -0
  46. package/dist/esm/convert-response.js +177 -0
  47. package/dist/esm/convert-response.js.map +1 -0
  48. package/dist/esm/converters/request-converters.js +175 -0
  49. package/dist/esm/converters/request-converters.js.map +1 -0
  50. package/dist/esm/converters/response-converters.js +191 -0
  51. package/dist/esm/converters/response-converters.js.map +1 -0
  52. package/dist/esm/create-backend.js +533 -0
  53. package/dist/esm/create-backend.js.map +1 -0
  54. package/dist/esm/index.js +15 -0
  55. package/dist/esm/index.js.map +1 -0
  56. package/dist/esm/main.js +149 -0
  57. package/dist/esm/main.js.map +1 -0
  58. package/dist/esm/ollama/commands/list.js +67 -0
  59. package/dist/esm/ollama/commands/list.js.map +1 -0
  60. package/dist/esm/ollama/commands/ps.js +77 -0
  61. package/dist/esm/ollama/commands/ps.js.map +1 -0
  62. package/dist/esm/ollama/commands/pull.js +195 -0
  63. package/dist/esm/ollama/commands/pull.js.map +1 -0
  64. package/dist/esm/ollama/commands/run.js +243 -0
  65. package/dist/esm/ollama/commands/run.js.map +1 -0
  66. package/dist/esm/ollama/commands/show.js +135 -0
  67. package/dist/esm/ollama/commands/show.js.map +1 -0
  68. package/dist/esm/ollama/index.js +235 -0
  69. package/dist/esm/ollama/index.js.map +1 -0
  70. package/dist/esm/ollama/types.js +9 -0
  71. package/dist/esm/ollama/types.js.map +1 -0
  72. package/dist/esm/proxy.js +403 -0
  73. package/dist/esm/proxy.js.map +1 -0
  74. package/dist/esm/utils/backend-loader.js +74 -0
  75. package/dist/esm/utils/backend-loader.js.map +1 -0
  76. package/dist/esm/utils/index.js +13 -0
  77. package/dist/esm/utils/index.js.map +1 -0
  78. package/dist/esm/utils/model-translation.js +99 -0
  79. package/dist/esm/utils/model-translation.js.map +1 -0
  80. package/dist/esm/utils/output-formatter.js +224 -0
  81. package/dist/esm/utils/output-formatter.js.map +1 -0
  82. package/dist/esm/utils/pipeline-inspector.js +84 -0
  83. package/dist/esm/utils/pipeline-inspector.js.map +1 -0
  84. package/dist/esm/utils/state-manager.js +111 -0
  85. package/dist/esm/utils/state-manager.js.map +1 -0
  86. package/dist/types/convert-request.d.ts +15 -0
  87. package/dist/types/convert-request.d.ts.map +1 -0
  88. package/dist/types/convert-response.d.ts +16 -0
  89. package/dist/types/convert-response.d.ts.map +1 -0
  90. package/dist/types/converters/request-converters.d.ts +139 -0
  91. package/dist/types/converters/request-converters.d.ts.map +1 -0
  92. package/dist/types/converters/response-converters.d.ts +134 -0
  93. package/dist/types/converters/response-converters.d.ts.map +1 -0
  94. package/dist/types/create-backend.d.ts +20 -0
  95. package/dist/types/create-backend.d.ts.map +1 -0
  96. package/dist/types/index.d.ts +13 -0
  97. package/dist/types/index.d.ts.map +1 -0
  98. package/dist/types/main.d.ts +19 -0
  99. package/dist/types/main.d.ts.map +1 -0
  100. package/dist/types/ollama/commands/list.d.ts +32 -0
  101. package/dist/types/ollama/commands/list.d.ts.map +1 -0
  102. package/dist/types/ollama/commands/ps.d.ts +27 -0
  103. package/dist/types/ollama/commands/ps.d.ts.map +1 -0
  104. package/dist/types/ollama/commands/pull.d.ts +21 -0
  105. package/dist/types/ollama/commands/pull.d.ts.map +1 -0
  106. package/dist/types/ollama/commands/run.d.ts +48 -0
  107. package/dist/types/ollama/commands/run.d.ts.map +1 -0
  108. package/dist/types/ollama/commands/show.d.ts +36 -0
  109. package/dist/types/ollama/commands/show.d.ts.map +1 -0
  110. package/dist/types/ollama/index.d.ts +12 -0
  111. package/dist/types/ollama/index.d.ts.map +1 -0
  112. package/dist/types/ollama/types.d.ts +58 -0
  113. package/dist/types/ollama/types.d.ts.map +1 -0
  114. package/dist/types/proxy.d.ts +16 -0
  115. package/dist/types/proxy.d.ts.map +1 -0
  116. package/dist/types/utils/backend-loader.d.ts +55 -0
  117. package/dist/types/utils/backend-loader.d.ts.map +1 -0
  118. package/dist/types/utils/index.d.ts +13 -0
  119. package/dist/types/utils/index.d.ts.map +1 -0
  120. package/dist/types/utils/model-translation.d.ts +64 -0
  121. package/dist/types/utils/model-translation.d.ts.map +1 -0
  122. package/dist/types/utils/output-formatter.d.ts +113 -0
  123. package/dist/types/utils/output-formatter.d.ts.map +1 -0
  124. package/dist/types/utils/pipeline-inspector.d.ts +50 -0
  125. package/dist/types/utils/pipeline-inspector.d.ts.map +1 -0
  126. package/dist/types/utils/state-manager.d.ts +91 -0
  127. package/dist/types/utils/state-manager.d.ts.map +1 -0
  128. package/package.json +75 -0
  129. package/readme.md +32 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 AI Matey Contributors
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.
@@ -0,0 +1,365 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * CLI Tool for Converting Requests
5
+ *
6
+ * Convert between Universal IR requests and various provider formats.
7
+ *
8
+ * Usage:
9
+ * ai-matey convert-request --from openai --to ir --input request.json
10
+ * ai-matey convert-request --from ir --to anthropic --input request.json
11
+ *
12
+ * @module
13
+ */
14
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ var desc = Object.getOwnPropertyDescriptor(m, k);
17
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
+ desc = { enumerable: true, get: function() { return m[k]; } };
19
+ }
20
+ Object.defineProperty(o, k2, desc);
21
+ }) : (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ o[k2] = m[k];
24
+ }));
25
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
27
+ }) : function(o, v) {
28
+ o["default"] = v;
29
+ });
30
+ var __importStar = (this && this.__importStar) || (function () {
31
+ var ownKeys = function(o) {
32
+ ownKeys = Object.getOwnPropertyNames || function (o) {
33
+ var ar = [];
34
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
+ return ar;
36
+ };
37
+ return ownKeys(o);
38
+ };
39
+ return function (mod) {
40
+ if (mod && mod.__esModule) return mod;
41
+ var result = {};
42
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
+ __setModuleDefault(result, mod);
44
+ return result;
45
+ };
46
+ })();
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.main = main;
49
+ const promises_1 = require("node:fs/promises");
50
+ const node_process_1 = require("node:process");
51
+ const request_converters_js_1 = require("./converters/request-converters.js");
52
+ function parseArgs(args) {
53
+ const parsed = {
54
+ from: 'ir',
55
+ to: 'openai',
56
+ pretty: true,
57
+ };
58
+ for (let i = 0; i < args.length; i++) {
59
+ const arg = args[i];
60
+ switch (arg) {
61
+ case '--from':
62
+ case '-f':
63
+ parsed.from = args[++i] || 'ir';
64
+ break;
65
+ case '--to':
66
+ case '-t':
67
+ parsed.to = args[++i] || 'openai';
68
+ break;
69
+ case '--input':
70
+ case '-i':
71
+ parsed.input = args[++i];
72
+ break;
73
+ case '--output':
74
+ case '-o':
75
+ parsed.output = args[++i];
76
+ break;
77
+ case '--no-pretty':
78
+ parsed.pretty = false;
79
+ break;
80
+ case '--help':
81
+ case '-h':
82
+ parsed.help = true;
83
+ break;
84
+ }
85
+ }
86
+ return parsed;
87
+ }
88
+ // ============================================================================
89
+ // Help Text
90
+ // ============================================================================
91
+ const SUPPORTED_FORMATS = ['ir', 'openai', 'anthropic', 'gemini', 'ollama', 'mistral'];
92
+ function printHelp() {
93
+ console.log(`
94
+ AI.Matey Request Converter
95
+ Convert between Universal IR requests and provider formats
96
+
97
+ USAGE:
98
+ ai-matey convert-request [OPTIONS]
99
+
100
+ OPTIONS:
101
+ -f, --from <format> Source format (${SUPPORTED_FORMATS.join(', ')}, or 'all')
102
+ -t, --to <format> Target format (${SUPPORTED_FORMATS.join(', ')}, or 'all')
103
+ -i, --input <file> Input file (JSON). If omitted, reads from stdin
104
+ -o, --output <file> Output file. If omitted, writes to stdout
105
+ --no-pretty Disable pretty-printing
106
+ -h, --help Show this help message
107
+
108
+ FORMATS:
109
+ ir - Universal Intermediate Representation
110
+ ${SUPPORTED_FORMATS.filter((f) => f !== 'ir')
111
+ .map((f) => ` ${f.padEnd(12)} - ${f.charAt(0).toUpperCase() + f.slice(1)} format`)
112
+ .join('\n ')}
113
+ all - Convert to all formats (for debugging)
114
+
115
+ EXAMPLES:
116
+ # Convert IR to OpenAI format
117
+ ai-matey convert-request --from ir --to openai --input ir-request.json
118
+
119
+ # Convert OpenAI to IR (useful for migration)
120
+ ai-matey convert-request --from openai --to ir --input openai-request.json
121
+
122
+ # Convert from stdin
123
+ cat request.json | ai-matey convert-request --from ir --to anthropic
124
+
125
+ # Save to file
126
+ ai-matey convert-request -f ir -t gemini -i request.json -o gemini-request.json
127
+
128
+ # Convert IR to all formats for comparison
129
+ ai-matey convert-request -f ir -t all -i request.json
130
+ `);
131
+ }
132
+ // ============================================================================
133
+ // Input/Output Functions
134
+ // ============================================================================
135
+ async function readInput(inputFile) {
136
+ let content;
137
+ if (inputFile) {
138
+ // Read from file
139
+ content = await (0, promises_1.readFile)(inputFile, 'utf-8');
140
+ }
141
+ else {
142
+ // Read from stdin
143
+ const chunks = [];
144
+ for await (const chunk of node_process_1.stdin) {
145
+ chunks.push(chunk);
146
+ }
147
+ content = Buffer.concat(chunks).toString('utf-8');
148
+ }
149
+ try {
150
+ return JSON.parse(content);
151
+ }
152
+ catch (error) {
153
+ throw new Error(`Invalid JSON input: ${error instanceof Error ? error.message : String(error)}`);
154
+ }
155
+ }
156
+ function formatOutput(data, pretty) {
157
+ return pretty ? JSON.stringify(data, null, 2) : JSON.stringify(data);
158
+ }
159
+ // ============================================================================
160
+ // Conversion Functions
161
+ // ============================================================================
162
+ /**
163
+ * Convert from provider format to IR.
164
+ * This is a basic implementation that handles common cases.
165
+ */
166
+ function toIRRequest(data, sourceFormat) {
167
+ // For now, we'll do basic conversion
168
+ // This can be enhanced with proper type-safe converters later
169
+ switch (sourceFormat) {
170
+ case 'openai':
171
+ return {
172
+ messages: data.messages || [],
173
+ parameters: {
174
+ model: data.model,
175
+ temperature: data.temperature,
176
+ maxTokens: data.max_tokens,
177
+ topP: data.top_p,
178
+ frequencyPenalty: data.frequency_penalty,
179
+ presencePenalty: data.presence_penalty,
180
+ stopSequences: Array.isArray(data.stop) ? data.stop : data.stop ? [data.stop] : undefined,
181
+ },
182
+ stream: data.stream,
183
+ metadata: {
184
+ requestId: crypto.randomUUID(),
185
+ timestamp: Date.now(),
186
+ provenance: { frontend: 'openai' },
187
+ },
188
+ };
189
+ case 'anthropic':
190
+ return {
191
+ messages: data.messages || [],
192
+ parameters: {
193
+ model: data.model,
194
+ temperature: data.temperature,
195
+ maxTokens: data.max_tokens,
196
+ topP: data.top_p,
197
+ topK: data.top_k,
198
+ stopSequences: data.stop_sequences,
199
+ },
200
+ stream: data.stream,
201
+ metadata: {
202
+ requestId: crypto.randomUUID(),
203
+ timestamp: Date.now(),
204
+ provenance: { frontend: 'anthropic' },
205
+ },
206
+ };
207
+ case 'gemini':
208
+ // Gemini has different structure - contents instead of messages
209
+ const messages = (data.contents || []).map((content) => ({
210
+ role: content.role === 'model' ? 'assistant' : content.role,
211
+ content: content.parts?.map((p) => p.text).join('') || '',
212
+ }));
213
+ return {
214
+ messages,
215
+ parameters: {
216
+ model: data.model,
217
+ temperature: data.generationConfig?.temperature,
218
+ maxTokens: data.generationConfig?.maxOutputTokens,
219
+ topP: data.generationConfig?.topP,
220
+ topK: data.generationConfig?.topK,
221
+ stopSequences: data.generationConfig?.stopSequences,
222
+ },
223
+ metadata: {
224
+ requestId: crypto.randomUUID(),
225
+ timestamp: Date.now(),
226
+ provenance: { frontend: 'gemini' },
227
+ },
228
+ };
229
+ case 'ollama':
230
+ return {
231
+ messages: data.messages || [],
232
+ parameters: {
233
+ model: data.model,
234
+ temperature: data.options?.temperature,
235
+ topP: data.options?.top_p,
236
+ topK: data.options?.top_k,
237
+ },
238
+ stream: data.stream,
239
+ metadata: {
240
+ requestId: crypto.randomUUID(),
241
+ timestamp: Date.now(),
242
+ provenance: { frontend: 'ollama' },
243
+ },
244
+ };
245
+ case 'mistral':
246
+ return {
247
+ messages: data.messages || [],
248
+ parameters: {
249
+ model: data.model,
250
+ temperature: data.temperature,
251
+ maxTokens: data.max_tokens,
252
+ topP: data.top_p,
253
+ },
254
+ stream: data.stream,
255
+ metadata: {
256
+ requestId: crypto.randomUUID(),
257
+ timestamp: Date.now(),
258
+ provenance: { frontend: 'mistral' },
259
+ },
260
+ };
261
+ default:
262
+ throw new Error(`Unsupported source format: ${sourceFormat}`);
263
+ }
264
+ }
265
+ // ============================================================================
266
+ // Main Function
267
+ // ============================================================================
268
+ async function main() {
269
+ const args = parseArgs(process.argv.slice(2));
270
+ if (args.help) {
271
+ printHelp();
272
+ process.exit(0);
273
+ }
274
+ try {
275
+ // Read input
276
+ const input = await readInput(args.input);
277
+ // Convert
278
+ let result;
279
+ if (args.from === 'ir') {
280
+ // Convert FROM IR TO provider format
281
+ const irRequest = input;
282
+ if (args.to === 'all') {
283
+ // Convert to all formats
284
+ result = (0, request_converters_js_1.toMultipleRequestFormats)(irRequest, [
285
+ 'openai',
286
+ 'anthropic',
287
+ 'gemini',
288
+ 'ollama',
289
+ 'mistral',
290
+ ]);
291
+ }
292
+ else {
293
+ // Convert to specific format
294
+ switch (args.to) {
295
+ case 'ir':
296
+ result = irRequest; // No conversion needed
297
+ break;
298
+ case 'openai':
299
+ result = (0, request_converters_js_1.toOpenAIRequest)(irRequest);
300
+ break;
301
+ case 'anthropic':
302
+ result = (0, request_converters_js_1.toAnthropicRequest)(irRequest);
303
+ break;
304
+ case 'gemini':
305
+ result = (0, request_converters_js_1.toGeminiRequest)(irRequest);
306
+ break;
307
+ case 'ollama':
308
+ result = (0, request_converters_js_1.toOllamaRequest)(irRequest);
309
+ break;
310
+ case 'mistral':
311
+ result = (0, request_converters_js_1.toMistralRequest)(irRequest);
312
+ break;
313
+ default:
314
+ throw new Error(`Unsupported target format: ${args.to}. Use --help to see available formats.`);
315
+ }
316
+ }
317
+ }
318
+ else if (args.to === 'ir') {
319
+ // Convert FROM provider format TO IR
320
+ result = toIRRequest(input, args.from);
321
+ }
322
+ else {
323
+ // Convert FROM provider TO provider (via IR)
324
+ const irRequest = toIRRequest(input, args.from);
325
+ switch (args.to) {
326
+ case 'openai':
327
+ result = (0, request_converters_js_1.toOpenAIRequest)(irRequest);
328
+ break;
329
+ case 'anthropic':
330
+ result = (0, request_converters_js_1.toAnthropicRequest)(irRequest);
331
+ break;
332
+ case 'gemini':
333
+ result = (0, request_converters_js_1.toGeminiRequest)(irRequest);
334
+ break;
335
+ case 'ollama':
336
+ result = (0, request_converters_js_1.toOllamaRequest)(irRequest);
337
+ break;
338
+ case 'mistral':
339
+ result = (0, request_converters_js_1.toMistralRequest)(irRequest);
340
+ break;
341
+ default:
342
+ throw new Error(`Unsupported target format: ${args.to}`);
343
+ }
344
+ }
345
+ // Format and output
346
+ const output = formatOutput(result, args.pretty ?? true);
347
+ if (args.output) {
348
+ // Write to file
349
+ const { writeFile } = await Promise.resolve().then(() => __importStar(require('node:fs/promises')));
350
+ await writeFile(args.output, output, 'utf-8');
351
+ console.error(`✓ Converted from ${args.from} to ${args.to}: ${args.output}`);
352
+ }
353
+ else {
354
+ // Write to stdout
355
+ console.log(output);
356
+ }
357
+ process.exit(0);
358
+ }
359
+ catch (error) {
360
+ console.error('Error:', error instanceof Error ? error.message : String(error));
361
+ console.error('\nRun with --help for usage information');
362
+ process.exit(1);
363
+ }
364
+ }
365
+ //# sourceMappingURL=convert-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-request.js","sourceRoot":"","sources":["../../src/convert-request.ts"],"names":[],"mappings":";;AACA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiXM,oBAAI;AA/Wb,+CAA4C;AAC5C,+CAAqC;AAErC,8EAO4C;AAe5C,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,MAAM,GAAY;QACtB,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,QAAQ;QACZ,MAAM,EAAE,IAAI;KACb,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;gBAChC,MAAM;YACR,KAAK,MAAM,CAAC;YACZ,KAAK,IAAI;gBACP,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC;gBAClC,MAAM;YACR,KAAK,SAAS,CAAC;YACf,KAAK,IAAI;gBACP,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzB,MAAM;YACR,KAAK,UAAU,CAAC;YAChB,KAAK,IAAI;gBACP,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACR,KAAK,aAAa;gBAChB,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;gBACtB,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;gBACnB,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAEvF,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;4CAQ8B,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;4CAC5B,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;IAQpE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;SAC1C,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;SAC1F,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;CAkBhB,CAAC,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E,KAAK,UAAU,SAAS,CAAC,SAAkB;IACzC,IAAI,OAAe,CAAC;IAEpB,IAAI,SAAS,EAAE,CAAC;QACd,iBAAiB;QACjB,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,kBAAkB;QAClB,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,oBAAK,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAChF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAa,EAAE,MAAe;IAClD,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACvE,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,WAAW,CAAC,IAAS,EAAE,YAAoB;IAClD,qCAAqC;IACrC,8DAA8D;IAE9D,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO;gBACL,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;gBAC7B,UAAU,EAAE;oBACV,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,SAAS,EAAE,IAAI,CAAC,UAAU;oBAC1B,IAAI,EAAE,IAAI,CAAC,KAAK;oBAChB,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;oBACxC,eAAe,EAAE,IAAI,CAAC,gBAAgB;oBACtC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;iBAC1F;gBACD,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE;oBACR,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE;oBAC9B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;iBACnC;aACF,CAAC;QAEJ,KAAK,WAAW;YACd,OAAO;gBACL,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;gBAC7B,UAAU,EAAE;oBACV,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,SAAS,EAAE,IAAI,CAAC,UAAU;oBAC1B,IAAI,EAAE,IAAI,CAAC,KAAK;oBAChB,IAAI,EAAE,IAAI,CAAC,KAAK;oBAChB,aAAa,EAAE,IAAI,CAAC,cAAc;iBACnC;gBACD,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE;oBACR,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE;oBAC9B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,UAAU,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE;iBACtC;aACF,CAAC;QAEJ,KAAK,QAAQ;YACX,gEAAgE;YAChE,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,CAAC;gBAC5D,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;gBAC3D,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;aAC/D,CAAC,CAAC,CAAC;YAEJ,OAAO;gBACL,QAAQ;gBACR,UAAU,EAAE;oBACV,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW;oBAC/C,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,eAAe;oBACjD,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI;oBACjC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI;oBACjC,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,aAAa;iBACpD;gBACD,QAAQ,EAAE;oBACR,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE;oBAC9B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;iBACnC;aACF,CAAC;QAEJ,KAAK,QAAQ;YACX,OAAO;gBACL,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;gBAC7B,UAAU,EAAE;oBACV,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW;oBACtC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK;oBACzB,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK;iBAC1B;gBACD,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE;oBACR,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE;oBAC9B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;iBACnC;aACF,CAAC;QAEJ,KAAK,SAAS;YACZ,OAAO;gBACL,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;gBAC7B,UAAU,EAAE;oBACV,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,SAAS,EAAE,IAAI,CAAC,UAAU;oBAC1B,IAAI,EAAE,IAAI,CAAC,KAAK;iBACjB;gBACD,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE;oBACR,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE;oBAC9B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,UAAU,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;iBACpC;aACF,CAAC;QAEJ;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,aAAa;QACb,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE1C,UAAU;QACV,IAAI,MAAe,CAAC;QAEpB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvB,qCAAqC;YACrC,MAAM,SAAS,GAAG,KAAsB,CAAC;YAEzC,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;gBACtB,yBAAyB;gBACzB,MAAM,GAAG,IAAA,gDAAwB,EAAC,SAAS,EAAE;oBAC3C,QAAQ;oBACR,WAAW;oBACX,QAAQ;oBACR,QAAQ;oBACR,SAAS;iBACV,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,6BAA6B;gBAC7B,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;oBAChB,KAAK,IAAI;wBACP,MAAM,GAAG,SAAS,CAAC,CAAC,uBAAuB;wBAC3C,MAAM;oBACR,KAAK,QAAQ;wBACX,MAAM,GAAG,IAAA,uCAAe,EAAC,SAAS,CAAC,CAAC;wBACpC,MAAM;oBACR,KAAK,WAAW;wBACd,MAAM,GAAG,IAAA,0CAAkB,EAAC,SAAS,CAAC,CAAC;wBACvC,MAAM;oBACR,KAAK,QAAQ;wBACX,MAAM,GAAG,IAAA,uCAAe,EAAC,SAAS,CAAC,CAAC;wBACpC,MAAM;oBACR,KAAK,QAAQ;wBACX,MAAM,GAAG,IAAA,uCAAe,EAAC,SAAS,CAAC,CAAC;wBACpC,MAAM;oBACR,KAAK,SAAS;wBACZ,MAAM,GAAG,IAAA,wCAAgB,EAAC,SAAS,CAAC,CAAC;wBACrC,MAAM;oBACR;wBACE,MAAM,IAAI,KAAK,CACb,8BAA8B,IAAI,CAAC,EAAE,wCAAwC,CAC9E,CAAC;gBACN,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;YAC5B,qCAAqC;YACrC,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,6CAA6C;YAC7C,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAEhD,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;gBAChB,KAAK,QAAQ;oBACX,MAAM,GAAG,IAAA,uCAAe,EAAC,SAAS,CAAC,CAAC;oBACpC,MAAM;gBACR,KAAK,WAAW;oBACd,MAAM,GAAG,IAAA,0CAAkB,EAAC,SAAS,CAAC,CAAC;oBACvC,MAAM;gBACR,KAAK,QAAQ;oBACX,MAAM,GAAG,IAAA,uCAAe,EAAC,SAAS,CAAC,CAAC;oBACpC,MAAM;gBACR,KAAK,QAAQ;oBACX,MAAM,GAAG,IAAA,uCAAe,EAAC,SAAS,CAAC,CAAC;oBACpC,MAAM;gBACR,KAAK,SAAS;oBACZ,MAAM,GAAG,IAAA,wCAAgB,EAAC,SAAS,CAAC,CAAC;oBACrC,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;QAEzD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,gBAAgB;YAChB,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,kBAAkB,GAAC,CAAC;YACvD,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,211 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * CLI Tool for Converting IR Responses
5
+ *
6
+ * Convert Universal IR responses to various frontend formats for debugging.
7
+ *
8
+ * Usage:
9
+ * npx ai-matey convert-response --format openai --input response.json
10
+ * npx ai-matey convert-response --format all --input response.json
11
+ * cat response.json | npx ai-matey convert-response --format anthropic
12
+ *
13
+ * @module
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || (function () {
32
+ var ownKeys = function(o) {
33
+ ownKeys = Object.getOwnPropertyNames || function (o) {
34
+ var ar = [];
35
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
+ return ar;
37
+ };
38
+ return ownKeys(o);
39
+ };
40
+ return function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ })();
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.main = main;
50
+ const promises_1 = require("node:fs/promises");
51
+ const node_process_1 = require("node:process");
52
+ const response_converters_js_1 = require("./converters/response-converters.js");
53
+ function parseArgs(args) {
54
+ const parsed = {
55
+ format: 'openai',
56
+ pretty: true,
57
+ };
58
+ for (let i = 0; i < args.length; i++) {
59
+ const arg = args[i];
60
+ switch (arg) {
61
+ case '--format':
62
+ case '-f':
63
+ parsed.format = args[++i] || 'openai';
64
+ break;
65
+ case '--input':
66
+ case '-i':
67
+ parsed.input = args[++i];
68
+ break;
69
+ case '--output':
70
+ case '-o':
71
+ parsed.output = args[++i];
72
+ break;
73
+ case '--no-pretty':
74
+ parsed.pretty = false;
75
+ break;
76
+ case '--help':
77
+ case '-h':
78
+ parsed.help = true;
79
+ break;
80
+ }
81
+ }
82
+ return parsed;
83
+ }
84
+ // ============================================================================
85
+ // Help Text
86
+ // ============================================================================
87
+ const SUPPORTED_FORMATS = ['openai', 'anthropic', 'gemini', 'ollama', 'mistral'];
88
+ function printHelp() {
89
+ console.log(`
90
+ AI.Matey Response Converter
91
+ Convert Universal IR responses to various frontend formats
92
+
93
+ USAGE:
94
+ npx ai-matey convert-response [OPTIONS]
95
+
96
+ OPTIONS:
97
+ -f, --format <format> Target format (${SUPPORTED_FORMATS.join(', ')}, or 'all')
98
+ -i, --input <file> Input file (JSON). If omitted, reads from stdin
99
+ -o, --output <file> Output file. If omitted, writes to stdout
100
+ --no-pretty Disable pretty-printing
101
+ -h, --help Show this help message
102
+
103
+ FORMATS:
104
+ ${SUPPORTED_FORMATS.map((f) => ` ${f.padEnd(12)} - ${f.charAt(0).toUpperCase() + f.slice(1)} format`).join('\n ')}
105
+ all - Convert to all formats (for debugging)
106
+
107
+ EXAMPLES:
108
+ # Convert from file
109
+ npx ai-matey convert-response --format openai --input response.json
110
+
111
+ # Convert from stdin
112
+ cat response.json | npx ai-matey convert-response --format anthropic
113
+
114
+ # Save to file
115
+ npx ai-matey convert-response -f gemini -i response.json -o gemini-format.json
116
+
117
+ # Convert to all formats for debugging
118
+ npx ai-matey convert-response -f all -i response.json
119
+
120
+ # Compact output (no pretty-printing)
121
+ npx ai-matey convert-response -f openai -i response.json --no-pretty
122
+ `);
123
+ }
124
+ // ============================================================================
125
+ // Input/Output Functions
126
+ // ============================================================================
127
+ async function readInput(inputFile) {
128
+ let content;
129
+ if (inputFile) {
130
+ // Read from file
131
+ content = await (0, promises_1.readFile)(inputFile, 'utf-8');
132
+ }
133
+ else {
134
+ // Read from stdin
135
+ const chunks = [];
136
+ for await (const chunk of node_process_1.stdin) {
137
+ chunks.push(chunk);
138
+ }
139
+ content = Buffer.concat(chunks).toString('utf-8');
140
+ }
141
+ try {
142
+ return JSON.parse(content);
143
+ }
144
+ catch (error) {
145
+ throw new Error(`Invalid JSON input: ${error instanceof Error ? error.message : String(error)}`);
146
+ }
147
+ }
148
+ function formatOutput(data, pretty) {
149
+ return pretty ? JSON.stringify(data, null, 2) : JSON.stringify(data);
150
+ }
151
+ // ============================================================================
152
+ // Main Function
153
+ // ============================================================================
154
+ async function main() {
155
+ const args = parseArgs(process.argv.slice(2));
156
+ if (args.help) {
157
+ printHelp();
158
+ process.exit(0);
159
+ }
160
+ try {
161
+ // Read input
162
+ const irResponse = await readInput(args.input);
163
+ // Convert to target format(s)
164
+ let result;
165
+ if (args.format === 'all') {
166
+ // Convert to all formats
167
+ result = await (0, response_converters_js_1.toMultipleFormats)(irResponse, SUPPORTED_FORMATS);
168
+ }
169
+ else {
170
+ // Convert to specific format
171
+ switch (args.format) {
172
+ case 'openai':
173
+ result = await (0, response_converters_js_1.toOpenAI)(irResponse);
174
+ break;
175
+ case 'anthropic':
176
+ result = await (0, response_converters_js_1.toAnthropic)(irResponse);
177
+ break;
178
+ case 'gemini':
179
+ result = await (0, response_converters_js_1.toGemini)(irResponse);
180
+ break;
181
+ case 'ollama':
182
+ result = await (0, response_converters_js_1.toOllama)(irResponse);
183
+ break;
184
+ case 'mistral':
185
+ result = await (0, response_converters_js_1.toMistral)(irResponse);
186
+ break;
187
+ default:
188
+ throw new Error(`Unsupported format: ${args.format}. Use --help to see available formats.`);
189
+ }
190
+ }
191
+ // Format and output
192
+ const output = formatOutput(result, args.pretty ?? true);
193
+ if (args.output) {
194
+ // Write to file
195
+ const { writeFile } = await Promise.resolve().then(() => __importStar(require('node:fs/promises')));
196
+ await writeFile(args.output, output, 'utf-8');
197
+ console.error(`✓ Converted to ${args.format} format: ${args.output}`);
198
+ }
199
+ else {
200
+ // Write to stdout
201
+ console.log(output);
202
+ }
203
+ process.exit(0);
204
+ }
205
+ catch (error) {
206
+ console.error('Error:', error instanceof Error ? error.message : String(error));
207
+ console.error('\nRun with --help for usage information');
208
+ process.exit(1);
209
+ }
210
+ }
211
+ //# sourceMappingURL=convert-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-response.js","sourceRoot":"","sources":["../../src/convert-response.ts"],"names":[],"mappings":"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"}