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
@@ -0,0 +1,569 @@
1
+ "use strict";
2
+ /**
3
+ * Create Backend Subcommand
4
+ *
5
+ * Interactive wizard to generate backend adapter templates for use with ai-matey.
6
+ *
7
+ * @module cli/create-backend
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.main = main;
44
+ const promises_1 = require("node:fs/promises");
45
+ const node_path_1 = require("node:path");
46
+ const readline = __importStar(require("node:readline/promises"));
47
+ const node_process_1 = require("node:process");
48
+ const output_formatter_js_1 = require("./utils/output-formatter.js");
49
+ const BACKEND_PRESETS = {
50
+ openai: {
51
+ name: 'OpenAI',
52
+ description: 'OpenAI GPT models (GPT-4, GPT-3.5, etc.)',
53
+ adapterClass: 'OpenAIBackendAdapter',
54
+ importPath: 'ai.matey/adapters/backend',
55
+ requiresApiKey: true,
56
+ defaultBaseURL: 'https://api.openai.com/v1',
57
+ defaultModel: 'gpt-4',
58
+ envVarPrefix: 'OPENAI',
59
+ configOptions: [
60
+ {
61
+ name: 'organization',
62
+ description: 'OpenAI Organization ID',
63
+ required: false,
64
+ envVar: 'OPENAI_ORG',
65
+ },
66
+ { name: 'timeout', description: 'Request timeout (ms)', required: false, default: 60000 },
67
+ ],
68
+ },
69
+ anthropic: {
70
+ name: 'Anthropic',
71
+ description: 'Anthropic Claude models',
72
+ adapterClass: 'AnthropicBackendAdapter',
73
+ importPath: 'ai.matey/adapters/backend',
74
+ requiresApiKey: true,
75
+ defaultBaseURL: 'https://api.anthropic.com',
76
+ defaultModel: 'claude-3-5-sonnet-20241022',
77
+ envVarPrefix: 'ANTHROPIC',
78
+ configOptions: [
79
+ { name: 'timeout', description: 'Request timeout (ms)', required: false, default: 60000 },
80
+ { name: 'maxRetries', description: 'Max retry attempts', required: false, default: 3 },
81
+ ],
82
+ },
83
+ gemini: {
84
+ name: 'Google Gemini',
85
+ description: 'Google Gemini models',
86
+ adapterClass: 'GeminiBackendAdapter',
87
+ importPath: 'ai.matey/adapters/backend',
88
+ requiresApiKey: true,
89
+ defaultBaseURL: 'https://generativelanguage.googleapis.com/v1beta',
90
+ defaultModel: 'gemini-2.0-flash-exp',
91
+ envVarPrefix: 'GEMINI',
92
+ configOptions: [
93
+ { name: 'timeout', description: 'Request timeout (ms)', required: false, default: 60000 },
94
+ ],
95
+ },
96
+ ollama: {
97
+ name: 'Ollama',
98
+ description: 'Local Ollama instance',
99
+ adapterClass: 'OllamaBackendAdapter',
100
+ importPath: 'ai.matey/adapters/backend',
101
+ requiresApiKey: false,
102
+ defaultBaseURL: 'http://localhost:11434',
103
+ defaultModel: 'llama3.1',
104
+ envVarPrefix: 'OLLAMA',
105
+ configOptions: [
106
+ { name: 'timeout', description: 'Request timeout (ms)', required: false, default: 120000 },
107
+ ],
108
+ },
109
+ mistral: {
110
+ name: 'Mistral AI',
111
+ description: 'Mistral AI models',
112
+ adapterClass: 'MistralBackendAdapter',
113
+ importPath: 'ai.matey/adapters/backend',
114
+ requiresApiKey: true,
115
+ defaultBaseURL: 'https://api.mistral.ai/v1',
116
+ defaultModel: 'mistral-large-latest',
117
+ envVarPrefix: 'MISTRAL',
118
+ configOptions: [
119
+ { name: 'timeout', description: 'Request timeout (ms)', required: false, default: 60000 },
120
+ ],
121
+ },
122
+ deepseek: {
123
+ name: 'DeepSeek',
124
+ description: 'DeepSeek models',
125
+ adapterClass: 'DeepSeekBackendAdapter',
126
+ importPath: 'ai.matey/adapters/backend',
127
+ requiresApiKey: true,
128
+ defaultBaseURL: 'https://api.deepseek.com/v1',
129
+ defaultModel: 'deepseek-chat',
130
+ envVarPrefix: 'DEEPSEEK',
131
+ configOptions: [
132
+ { name: 'timeout', description: 'Request timeout (ms)', required: false, default: 60000 },
133
+ ],
134
+ },
135
+ groq: {
136
+ name: 'Groq',
137
+ description: 'Groq fast inference',
138
+ adapterClass: 'GroqBackendAdapter',
139
+ importPath: 'ai.matey/adapters/backend',
140
+ requiresApiKey: true,
141
+ defaultBaseURL: 'https://api.groq.com/openai/v1',
142
+ defaultModel: 'llama-3.3-70b-versatile',
143
+ envVarPrefix: 'GROQ',
144
+ configOptions: [
145
+ { name: 'timeout', description: 'Request timeout (ms)', required: false, default: 60000 },
146
+ ],
147
+ },
148
+ huggingface: {
149
+ name: 'Hugging Face',
150
+ description: 'Hugging Face Inference API',
151
+ adapterClass: 'HuggingFaceBackendAdapter',
152
+ importPath: 'ai.matey/adapters/backend',
153
+ requiresApiKey: true,
154
+ defaultModel: 'meta-llama/Meta-Llama-3-8B-Instruct',
155
+ envVarPrefix: 'HUGGINGFACE',
156
+ configOptions: [
157
+ { name: 'timeout', description: 'Request timeout (ms)', required: false, default: 60000 },
158
+ ],
159
+ },
160
+ lmstudio: {
161
+ name: 'LM Studio',
162
+ description: 'Local LM Studio instance',
163
+ adapterClass: 'LMStudioBackendAdapter',
164
+ importPath: 'ai.matey/adapters/backend',
165
+ requiresApiKey: false,
166
+ defaultBaseURL: 'http://localhost:1234/v1',
167
+ defaultModel: 'local-model',
168
+ envVarPrefix: 'LMSTUDIO',
169
+ configOptions: [
170
+ { name: 'timeout', description: 'Request timeout (ms)', required: false, default: 120000 },
171
+ ],
172
+ },
173
+ nvidia: {
174
+ name: 'NVIDIA NIM',
175
+ description: 'NVIDIA NIM inference',
176
+ adapterClass: 'NVIDIABackendAdapter',
177
+ importPath: 'ai.matey/adapters/backend',
178
+ requiresApiKey: true,
179
+ defaultBaseURL: 'https://integrate.api.nvidia.com/v1',
180
+ defaultModel: 'meta/llama-3.1-8b-instruct',
181
+ envVarPrefix: 'NVIDIA',
182
+ configOptions: [
183
+ { name: 'timeout', description: 'Request timeout (ms)', required: false, default: 60000 },
184
+ ],
185
+ },
186
+ 'chrome-ai': {
187
+ name: 'Chrome AI',
188
+ description: 'Chrome built-in AI (browser only)',
189
+ adapterClass: 'ChromeAIBackendAdapter',
190
+ importPath: 'ai.matey/adapters/backend',
191
+ requiresApiKey: false,
192
+ envVarPrefix: 'CHROME_AI',
193
+ platformRequirements: 'Chrome browser with built-in AI enabled',
194
+ configOptions: [
195
+ {
196
+ name: 'temperature',
197
+ description: 'Sampling temperature (0-1)',
198
+ required: false,
199
+ default: 0.7,
200
+ },
201
+ { name: 'topK', description: 'Top-K sampling', required: false, default: 40 },
202
+ ],
203
+ },
204
+ 'node-llamacpp': {
205
+ name: 'Node LlamaCpp',
206
+ description: 'Local models via node-llama-cpp (GGUF files)',
207
+ adapterClass: 'NodeLlamaCppBackend',
208
+ importPath: 'ai.matey/adapters/backend-native',
209
+ requiresApiKey: false,
210
+ isNative: true,
211
+ platformRequirements: 'Node.js, node-llama-cpp installed',
212
+ configOptions: [
213
+ { name: 'modelPath', description: 'Path to GGUF model file', required: true },
214
+ { name: 'contextSize', description: 'Context window size', required: false, default: 2048 },
215
+ { name: 'gpuLayers', description: 'Number of GPU layers', required: false, default: 0 },
216
+ { name: 'temperature', description: 'Sampling temperature', required: false, default: 0.7 },
217
+ ],
218
+ },
219
+ apple: {
220
+ name: 'Apple Foundation Models',
221
+ description: 'Apple on-device AI (macOS 15+ Sequoia)',
222
+ adapterClass: 'AppleBackend',
223
+ importPath: 'ai.matey/adapters/backend-native',
224
+ requiresApiKey: false,
225
+ isNative: true,
226
+ platformRequirements: 'macOS 15+ (Sequoia), Apple Intelligence enabled',
227
+ configOptions: [
228
+ { name: 'instructions', description: 'System instructions', required: false },
229
+ {
230
+ name: 'maximumResponseTokens',
231
+ description: 'Max tokens to generate',
232
+ required: false,
233
+ default: 2048,
234
+ },
235
+ { name: 'temperature', description: 'Sampling temperature', required: false, default: 0.7 },
236
+ {
237
+ name: 'samplingMode',
238
+ description: 'Sampling mode (default/random)',
239
+ required: false,
240
+ default: 'default',
241
+ },
242
+ ],
243
+ },
244
+ };
245
+ // ============================================================================
246
+ // Template Generation
247
+ // ============================================================================
248
+ function generateBackendFile(preset, config, outputPath) {
249
+ const envVarPrefix = preset.envVarPrefix || preset.name.toUpperCase().replace(/[^A-Z0-9]/g, '_');
250
+ const apiKeyEnvVar = `${envVarPrefix}_API_KEY`;
251
+ let imports = `import { ${preset.adapterClass} } from '${preset.importPath}';`;
252
+ let envVarDeclarations = [];
253
+ let configObject = [];
254
+ let envVarChecks = [];
255
+ // API key
256
+ if (preset.requiresApiKey) {
257
+ envVarDeclarations.push(`const apiKey = process.env.${apiKeyEnvVar};`);
258
+ envVarChecks.push(`if (!apiKey) {
259
+ throw new Error('${preset.name} API key required. Set ${apiKeyEnvVar} environment variable.');
260
+ }`);
261
+ configObject.push(' apiKey');
262
+ }
263
+ // Base URL
264
+ if (preset.defaultBaseURL && config.baseURL) {
265
+ envVarDeclarations.push(`const baseURL = process.env.${envVarPrefix}_BASE_URL || '${config.baseURL}';`);
266
+ configObject.push(' baseURL');
267
+ }
268
+ // Default model
269
+ if (preset.defaultModel && config.defaultModel) {
270
+ configObject.push(` defaultModel: '${config.defaultModel}'`);
271
+ }
272
+ // Additional config options
273
+ for (const option of preset.configOptions || []) {
274
+ const value = config[option.name];
275
+ if (value !== undefined && value !== '') {
276
+ if (option.envVar) {
277
+ envVarDeclarations.push(`const ${option.name} = process.env.${option.envVar} || ${JSON.stringify(value)};`);
278
+ configObject.push(` ${option.name}`);
279
+ }
280
+ else {
281
+ configObject.push(` ${option.name}: ${JSON.stringify(value)}`);
282
+ }
283
+ }
284
+ else if (option.default !== undefined && !config[option.name]) {
285
+ // Include defaults even if not in config
286
+ if (option.envVar) {
287
+ envVarDeclarations.push(`const ${option.name} = process.env.${option.envVar} || ${JSON.stringify(option.default)};`);
288
+ configObject.push(` ${option.name}`);
289
+ }
290
+ else {
291
+ configObject.push(` ${option.name}: ${JSON.stringify(option.default)}`);
292
+ }
293
+ }
294
+ }
295
+ // Add usage examples
296
+ const usageExamples = preset.defaultModel
297
+ ? `\n * Usage:\n * ai-matey emulate-ollama --backend ${outputPath || './backend.mjs'} run ${preset.defaultModel}\n * ai-matey proxy --backend ${outputPath || './backend.mjs'} --port 3000`
298
+ : `\n * Usage:\n * ai-matey emulate-ollama --backend ${outputPath || './backend.mjs'} run default\n * ai-matey proxy --backend ${outputPath || './backend.mjs'} --port 3000\n *\n * Note: Model name is metadata only (uses system default)`;
299
+ const header = `/**
300
+ * ${preset.name} Backend Adapter
301
+ *
302
+ * ${preset.description}
303
+ *${preset.platformRequirements ? `\n * Platform Requirements: ${preset.platformRequirements}\n *` : ''}
304
+ * Environment Variables:
305
+ ${preset.requiresApiKey ? ` * ${apiKeyEnvVar} - API key (required)\n` : ''}${preset.defaultBaseURL ? ` * ${envVarPrefix}_BASE_URL - API base URL (optional)\n` : ''}${(preset.configOptions || [])
306
+ .filter((opt) => opt.envVar)
307
+ .map((opt) => ` * ${opt.envVar} - ${opt.description} (optional)`)
308
+ .join('\n')}${usageExamples}
309
+ */
310
+ `;
311
+ // Build config object content - only add items if we have any
312
+ const configContent = configObject.length > 0 ? `\n${configObject.join(',\n')}\n` : '';
313
+ return `${header}
314
+ ${imports}
315
+
316
+ ${envVarDeclarations.join('\n')}
317
+
318
+ ${envVarChecks.join('\n\n')}
319
+
320
+ export default new ${preset.adapterClass}({${configContent}});
321
+ `;
322
+ }
323
+ // ============================================================================
324
+ // Interactive Wizard
325
+ // ============================================================================
326
+ async function prompt(rl, question, defaultValue) {
327
+ const suffix = defaultValue ? ` (default: ${defaultValue})` : '';
328
+ const answer = await rl.question(`${question}${suffix}: `);
329
+ return answer.trim() || defaultValue || '';
330
+ }
331
+ async function confirm(rl, question, defaultValue = true) {
332
+ const suffix = defaultValue ? ' (Y/n)' : ' (y/N)';
333
+ const answer = await rl.question(`${question}${suffix}: `);
334
+ const normalized = answer.trim().toLowerCase();
335
+ if (normalized === '')
336
+ return defaultValue;
337
+ return normalized === 'y' || normalized === 'yes';
338
+ }
339
+ async function select(rl, question, options) {
340
+ console.log(`\n${question}`);
341
+ options.forEach((opt, i) => {
342
+ console.log(` ${i + 1}. ${opt}`);
343
+ });
344
+ while (true) {
345
+ const answer = await rl.question('\nSelect option (number): ');
346
+ const num = parseInt(answer.trim(), 10);
347
+ if (num >= 1 && num <= options.length) {
348
+ return options[num - 1] || '';
349
+ }
350
+ (0, output_formatter_js_1.warn)(`Invalid selection. Please choose 1-${options.length}`);
351
+ }
352
+ }
353
+ async function runWizard() {
354
+ const rl = readline.createInterface({ input: node_process_1.stdin, output: node_process_1.stdout });
355
+ try {
356
+ console.log('\n╔════════════════════════════════════════════════════════════╗');
357
+ console.log('║ AI.Matey Backend Generator Wizard ║');
358
+ console.log('╚════════════════════════════════════════════════════════════╝\n');
359
+ // 1. Select backend type
360
+ const backendOptions = Object.entries(BACKEND_PRESETS).map(([_key, preset]) => {
361
+ const native = preset.isNative ? ' [NATIVE]' : '';
362
+ return `${preset.name}${native} - ${preset.description}`;
363
+ });
364
+ const backendKeys = Object.keys(BACKEND_PRESETS);
365
+ const selectedOption = await select(rl, 'Select backend type:', backendOptions);
366
+ const selectedIndex = backendOptions.indexOf(selectedOption);
367
+ const backendKey = backendKeys[selectedIndex] || 'openai';
368
+ const preset = BACKEND_PRESETS[backendKey];
369
+ console.log();
370
+ (0, output_formatter_js_1.info)(`Selected: ${preset.name}`);
371
+ if (preset.platformRequirements) {
372
+ (0, output_formatter_js_1.warn)(`Requirements: ${preset.platformRequirements}`);
373
+ }
374
+ console.log();
375
+ // 2. Output path
376
+ const outputPath = await prompt(rl, 'Output file path', './backend.mjs');
377
+ // 3. Collect configuration
378
+ const config = {};
379
+ // Base URL
380
+ if (preset.defaultBaseURL) {
381
+ const useDefaultBaseURL = await confirm(rl, `Use default base URL (${preset.defaultBaseURL})?`, true);
382
+ if (useDefaultBaseURL) {
383
+ config.baseURL = preset.defaultBaseURL;
384
+ }
385
+ else {
386
+ config.baseURL = await prompt(rl, 'Custom base URL');
387
+ }
388
+ }
389
+ // Default model
390
+ if (preset.defaultModel) {
391
+ config.defaultModel = await prompt(rl, 'Default model', preset.defaultModel);
392
+ }
393
+ // Additional options
394
+ if (preset.configOptions && preset.configOptions.length > 0) {
395
+ console.log();
396
+ const configureAdvanced = await confirm(rl, 'Configure advanced options?', false);
397
+ if (configureAdvanced) {
398
+ for (const option of preset.configOptions) {
399
+ let value;
400
+ if (option.required) {
401
+ value = await prompt(rl, option.description);
402
+ }
403
+ else {
404
+ const useDefault = option.default !== undefined
405
+ ? await confirm(rl, `${option.description} (use default: ${option.default})?`, true)
406
+ : false;
407
+ if (useDefault) {
408
+ value = option.default;
409
+ }
410
+ else {
411
+ const input = await prompt(rl, option.description);
412
+ // Type conversion
413
+ if (typeof option.default === 'number') {
414
+ value = parseInt(input, 10) || option.default;
415
+ }
416
+ else if (typeof option.default === 'boolean') {
417
+ value = input.toLowerCase() === 'true';
418
+ }
419
+ else {
420
+ value = input;
421
+ }
422
+ }
423
+ }
424
+ if (value !== undefined && value !== '') {
425
+ config[option.name] = value;
426
+ }
427
+ }
428
+ }
429
+ }
430
+ // 4. Generate and write file
431
+ console.log();
432
+ (0, output_formatter_js_1.info)('Generating backend file...');
433
+ const content = generateBackendFile(preset, config, outputPath);
434
+ const resolvedPath = (0, node_path_1.resolve)(process.cwd(), outputPath);
435
+ await (0, promises_1.writeFile)(resolvedPath, content, 'utf-8');
436
+ console.log();
437
+ (0, output_formatter_js_1.success)(`✓ Backend created: ${resolvedPath}`);
438
+ console.log('\n┌─ Next Steps ────────────────────────────────────────────┐');
439
+ if (preset.requiresApiKey) {
440
+ console.log(`│ 1. Set ${preset.envVarPrefix}_API_KEY environment variable │`);
441
+ console.log(`│ 2. Use with: ai-matey proxy --backend ${outputPath} │`);
442
+ }
443
+ else {
444
+ console.log(`│ 1. Review configuration in ${outputPath} │`);
445
+ console.log(`│ 2. Use with: ai-matey proxy --backend ${outputPath} │`);
446
+ }
447
+ console.log('└─────────────────────────────────────────────────────────┘\n');
448
+ }
449
+ finally {
450
+ rl.close();
451
+ }
452
+ }
453
+ /**
454
+ * Show help message.
455
+ */
456
+ function showHelp() {
457
+ console.log(`
458
+ Create Backend Subcommand
459
+
460
+ Interactive wizard to generate backend adapter templates for use with ai-matey.
461
+
462
+ Usage:
463
+ ai-matey create-backend [options]
464
+ ai-matey create-backend # Run interactive wizard (default)
465
+
466
+ Options:
467
+ --interactive, -i Run interactive wizard (default)
468
+ --provider <type> Skip wizard, use specific provider
469
+ --output <path> Output file path (default: ./backend.mjs)
470
+ --base-url <url> Custom base URL
471
+ --help, -h Show this help
472
+
473
+ Available Providers:
474
+ ${Object.entries(BACKEND_PRESETS)
475
+ .map(([key, p]) => `${key.padEnd(20)} ${p.description}`)
476
+ .join('\n ')}
477
+
478
+ Examples:
479
+ # Run interactive wizard
480
+ ai-matey create-backend
481
+
482
+ # Quick generate for specific provider
483
+ ai-matey create-backend --provider openai --output ./openai-backend.mjs
484
+
485
+ # Use the generated backend
486
+ ai-matey proxy --backend ./backend.mjs --port 3000
487
+ `);
488
+ }
489
+ /**
490
+ * Main CLI entry point.
491
+ */
492
+ async function main(argv = process.argv.slice(2)) {
493
+ // Parse arguments
494
+ const options = {
495
+ interactive: true, // Default to interactive
496
+ };
497
+ for (let i = 0; i < argv.length; i++) {
498
+ const arg = argv[i];
499
+ if (!arg)
500
+ continue;
501
+ switch (arg) {
502
+ case '--help':
503
+ case '-h':
504
+ options.help = true;
505
+ break;
506
+ case '--interactive':
507
+ case '-i':
508
+ options.interactive = true;
509
+ break;
510
+ case '--provider':
511
+ options.provider = argv[++i];
512
+ options.interactive = false; // Disable interactive if provider specified
513
+ break;
514
+ case '--output':
515
+ options.output = argv[++i];
516
+ break;
517
+ case '--name':
518
+ options.name = argv[++i];
519
+ break;
520
+ case '--base-url':
521
+ options.baseUrl = argv[++i];
522
+ break;
523
+ default:
524
+ (0, output_formatter_js_1.error)(`Unknown option: ${arg}`);
525
+ console.log('Run with --help for usage information');
526
+ process.exit(1);
527
+ }
528
+ }
529
+ // Handle help
530
+ if (options.help) {
531
+ showHelp();
532
+ return;
533
+ }
534
+ // Run interactive wizard if no provider specified
535
+ if (options.interactive && !options.provider) {
536
+ await runWizard();
537
+ return;
538
+ }
539
+ // Non-interactive mode (legacy support)
540
+ const provider = options.provider || 'openai';
541
+ const outputPath = options.output || './backend.mjs';
542
+ if (!BACKEND_PRESETS[provider]) {
543
+ (0, output_formatter_js_1.error)(`Unknown provider: ${provider}`);
544
+ console.log(`\nAvailable providers: ${Object.keys(BACKEND_PRESETS).join(', ')}`);
545
+ process.exit(1);
546
+ }
547
+ try {
548
+ const preset = BACKEND_PRESETS[provider];
549
+ const config = {
550
+ baseURL: options.baseUrl || preset.defaultBaseURL || '',
551
+ defaultModel: preset.defaultModel || '',
552
+ };
553
+ (0, output_formatter_js_1.info)(`Generating ${preset.name} backend...`);
554
+ const content = generateBackendFile(preset, config, outputPath);
555
+ const resolvedPath = (0, node_path_1.resolve)(process.cwd(), outputPath);
556
+ await (0, promises_1.writeFile)(resolvedPath, content, 'utf-8');
557
+ (0, output_formatter_js_1.success)(`\n✓ Backend created: ${resolvedPath}`);
558
+ console.log('\nNext steps:');
559
+ if (preset.requiresApiKey) {
560
+ console.log(` 1. Set ${preset.envVarPrefix}_API_KEY environment variable`);
561
+ }
562
+ console.log(` 2. Use with: ai-matey proxy --backend ${outputPath} --port 3000`);
563
+ }
564
+ catch (err) {
565
+ (0, output_formatter_js_1.error)(err instanceof Error ? err.message : String(err));
566
+ process.exit(1);
567
+ }
568
+ }
569
+ //# sourceMappingURL=create-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-backend.js","sourceRoot":"","sources":["../../src/create-backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /**
3
+ * CLI Utilities and Interfaces
4
+ *
5
+ * ⚠️ WARNING: This module uses Node.js-specific APIs (child_process, readline, fs) and
6
+ * is NOT browser-compatible. Import from 'ai.matey.backend' for
7
+ * browser-compatible adapters.
8
+ *
9
+ * @module cli
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
23
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ // Export CLI utilities
27
+ __exportStar(require("./utils/index.js"), exports);
28
+ // Export converters
29
+ __exportStar(require("./converters/request-converters.js"), exports);
30
+ __exportStar(require("./converters/response-converters.js"), exports);
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;AAEH,uBAAuB;AACvB,mDAAiC;AAEjC,oBAAoB;AACpB,qEAAmD;AACnD,sEAAoD"}