steroids-cli 0.11.0 → 0.12.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/dist/commands/ai.js +5 -5
- package/dist/commands/ai.js.map +1 -1
- package/dist/commands/config.js +8 -10
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/status.d.ts +6 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +255 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/web-config.d.ts +9 -0
- package/dist/commands/web-config.d.ts.map +1 -0
- package/dist/commands/web-config.js +97 -0
- package/dist/commands/web-config.js.map +1 -0
- package/dist/config/ai-setup.d.ts +1 -2
- package/dist/config/ai-setup.d.ts.map +1 -1
- package/dist/config/ai-setup.js +1 -1
- package/dist/config/ai-setup.js.map +1 -1
- package/dist/config/loader.d.ts +2 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +3 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/config/provider-names.d.ts +9 -0
- package/dist/config/provider-names.d.ts.map +1 -0
- package/dist/config/provider-names.js +11 -0
- package/dist/config/provider-names.js.map +1 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +4 -3
- package/dist/config/schema.js.map +1 -1
- package/dist/huggingface/hub-client.js +1 -1
- package/dist/huggingface/hub-client.js.map +1 -1
- package/dist/providers/api-models.d.ts +7 -19
- package/dist/providers/api-models.d.ts.map +1 -1
- package/dist/providers/api-models.js +6 -162
- package/dist/providers/api-models.js.map +1 -1
- package/dist/providers/index.d.ts +2 -3
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +5 -10
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/interface.d.ts +1 -1
- package/dist/providers/interface.d.ts.map +1 -1
- package/dist/providers/opencode.d.ts +34 -0
- package/dist/providers/opencode.d.ts.map +1 -0
- package/dist/providers/opencode.js +365 -0
- package/dist/providers/opencode.js.map +1 -0
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +2 -8
- package/dist/providers/registry.js.map +1 -1
- package/package.json +1 -1
- package/dist/providers/huggingface.d.ts +0 -40
- package/dist/providers/huggingface.d.ts.map +0 -1
- package/dist/providers/huggingface.js +0 -391
- package/dist/providers/huggingface.js.map +0 -1
- package/dist/providers/minimax.d.ts +0 -50
- package/dist/providers/minimax.d.ts.map +0 -1
- package/dist/providers/minimax.js +0 -248
- package/dist/providers/minimax.js.map +0 -1
- package/dist/providers/ollama-error-utils.d.ts +0 -12
- package/dist/providers/ollama-error-utils.d.ts.map +0 -1
- package/dist/providers/ollama-error-utils.js +0 -60
- package/dist/providers/ollama-error-utils.js.map +0 -1
- package/dist/providers/ollama-utils.d.ts +0 -17
- package/dist/providers/ollama-utils.d.ts.map +0 -1
- package/dist/providers/ollama-utils.js +0 -115
- package/dist/providers/ollama-utils.js.map +0 -1
- package/dist/providers/ollama.d.ts +0 -31
- package/dist/providers/ollama.d.ts.map +0 -1
- package/dist/providers/ollama.js +0 -418
- package/dist/providers/ollama.js.map +0 -1
- package/dist/providers/openai.d.ts +0 -53
- package/dist/providers/openai.d.ts.map +0 -1
- package/dist/providers/openai.js +0 -236
- package/dist/providers/openai.js.map +0 -1
|
@@ -1,391 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Hugging Face Provider
|
|
4
|
-
* Routes prompts through Hugging Face's OpenAI-compatible router API.
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.HuggingFaceProvider = void 0;
|
|
8
|
-
exports.createHuggingFaceProvider = createHuggingFaceProvider;
|
|
9
|
-
const interface_js_1 = require("./interface.js");
|
|
10
|
-
const auth_js_1 = require("../huggingface/auth.js");
|
|
11
|
-
const model_registry_js_1 = require("../huggingface/model-registry.js");
|
|
12
|
-
const metrics_js_1 = require("../huggingface/metrics.js");
|
|
13
|
-
const HF_ROUTER_URL = 'https://router.huggingface.co/v1/chat/completions';
|
|
14
|
-
const DEFAULT_TIMEOUT_MS = 900_000;
|
|
15
|
-
const DEFAULT_MODELS = [
|
|
16
|
-
{
|
|
17
|
-
id: 'deepseek-ai/DeepSeek-V3',
|
|
18
|
-
name: 'DeepSeek V3',
|
|
19
|
-
recommendedFor: ['coder', 'reviewer'],
|
|
20
|
-
supportsStreaming: true,
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
id: 'Qwen/Qwen2.5-Coder-32B-Instruct',
|
|
24
|
-
name: 'Qwen 2.5 Coder 32B Instruct',
|
|
25
|
-
recommendedFor: ['coder'],
|
|
26
|
-
supportsStreaming: true,
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
id: 'meta-llama/Llama-3.3-70B-Instruct',
|
|
30
|
-
name: 'Llama 3.3 70B Instruct',
|
|
31
|
-
recommendedFor: ['orchestrator', 'reviewer'],
|
|
32
|
-
supportsStreaming: true,
|
|
33
|
-
},
|
|
34
|
-
];
|
|
35
|
-
const DEFAULT_MODELS_BY_ROLE = {
|
|
36
|
-
orchestrator: 'deepseek-ai/DeepSeek-V3',
|
|
37
|
-
coder: 'deepseek-ai/DeepSeek-V3',
|
|
38
|
-
reviewer: 'Qwen/Qwen2.5-Coder-32B-Instruct',
|
|
39
|
-
};
|
|
40
|
-
class HuggingFaceProvider extends interface_js_1.BaseAIProvider {
|
|
41
|
-
name = 'hf';
|
|
42
|
-
displayName = 'Hugging Face Router';
|
|
43
|
-
auth;
|
|
44
|
-
registry;
|
|
45
|
-
metrics;
|
|
46
|
-
fetchImpl;
|
|
47
|
-
dynamicModels = [];
|
|
48
|
-
constructor(deps = {}) {
|
|
49
|
-
super();
|
|
50
|
-
this.auth = deps.auth ?? new auth_js_1.HuggingFaceTokenAuth();
|
|
51
|
-
this.registry = deps.registry ?? new model_registry_js_1.HuggingFaceModelRegistry();
|
|
52
|
-
this.metrics = deps.metrics ?? new metrics_js_1.HuggingFaceUsageMetrics({ registry: this.registry });
|
|
53
|
-
this.fetchImpl = deps.fetchImpl ?? ((input, init) => fetch(input, init));
|
|
54
|
-
}
|
|
55
|
-
async initialize() {
|
|
56
|
-
try {
|
|
57
|
-
const token = this.auth.getToken() ?? undefined;
|
|
58
|
-
const curated = await this.registry.getCuratedModels({ token });
|
|
59
|
-
this.dynamicModels = curated.map((model) => ({
|
|
60
|
-
id: model.id,
|
|
61
|
-
name: model.id,
|
|
62
|
-
supportsStreaming: true,
|
|
63
|
-
}));
|
|
64
|
-
}
|
|
65
|
-
catch {
|
|
66
|
-
this.dynamicModels = [];
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
async isAvailable() {
|
|
70
|
-
return Boolean(this.auth.getToken());
|
|
71
|
-
}
|
|
72
|
-
listModels() {
|
|
73
|
-
const models = this.dynamicModels.length > 0 ? this.dynamicModels : DEFAULT_MODELS;
|
|
74
|
-
return models.map((model) => model.id);
|
|
75
|
-
}
|
|
76
|
-
getModelInfo() {
|
|
77
|
-
return this.dynamicModels.length > 0 ? [...this.dynamicModels] : [...DEFAULT_MODELS];
|
|
78
|
-
}
|
|
79
|
-
getDefaultModel(role) {
|
|
80
|
-
return DEFAULT_MODELS_BY_ROLE[role];
|
|
81
|
-
}
|
|
82
|
-
getDefaultInvocationTemplate() {
|
|
83
|
-
return '';
|
|
84
|
-
}
|
|
85
|
-
classifyError(exitCode, stderr) {
|
|
86
|
-
if (exitCode === 0) {
|
|
87
|
-
return null;
|
|
88
|
-
}
|
|
89
|
-
const lower = stderr.toLowerCase();
|
|
90
|
-
if (lower.includes('gated model access denied') ||
|
|
91
|
-
((/\b401\b|\b403\b/.test(stderr)) && /gated|forbidden|access denied|request model access/.test(lower))) {
|
|
92
|
-
return {
|
|
93
|
-
type: 'auth_error',
|
|
94
|
-
message: 'Gated model access denied',
|
|
95
|
-
retryable: false,
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
if (lower.includes('provider outage') ||
|
|
99
|
-
((/\b503\b/.test(stderr)) && /unavailable|outage|overloaded|capacity|temporary/.test(lower))) {
|
|
100
|
-
return {
|
|
101
|
-
type: 'unknown',
|
|
102
|
-
message: 'Provider outage or temporary unavailability',
|
|
103
|
-
retryable: false,
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
return super.classifyError(exitCode, stderr);
|
|
107
|
-
}
|
|
108
|
-
async invoke(prompt, options) {
|
|
109
|
-
const startedAt = Date.now();
|
|
110
|
-
const token = this.auth.getToken();
|
|
111
|
-
const timeoutMs = options.timeout ?? DEFAULT_TIMEOUT_MS;
|
|
112
|
-
if (!token) {
|
|
113
|
-
return {
|
|
114
|
-
success: false,
|
|
115
|
-
exitCode: 401,
|
|
116
|
-
stdout: '',
|
|
117
|
-
stderr: 'Hugging Face token not configured',
|
|
118
|
-
duration: Date.now() - startedAt,
|
|
119
|
-
timedOut: false,
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
const controller = new AbortController();
|
|
123
|
-
const timeoutHandle = setTimeout(() => controller.abort(), timeoutMs);
|
|
124
|
-
try {
|
|
125
|
-
const requestBody = {
|
|
126
|
-
model: this.applyRoutingPolicy(options.model),
|
|
127
|
-
messages: [{ role: 'user', content: prompt }],
|
|
128
|
-
stream: true,
|
|
129
|
-
};
|
|
130
|
-
const response = await this.fetchImpl(HF_ROUTER_URL, {
|
|
131
|
-
method: 'POST',
|
|
132
|
-
headers: {
|
|
133
|
-
Authorization: `Bearer ${token}`,
|
|
134
|
-
'Content-Type': 'application/json',
|
|
135
|
-
Accept: 'text/event-stream',
|
|
136
|
-
},
|
|
137
|
-
body: JSON.stringify(requestBody),
|
|
138
|
-
signal: controller.signal,
|
|
139
|
-
});
|
|
140
|
-
if (!response.ok) {
|
|
141
|
-
const errorText = await safeReadText(response);
|
|
142
|
-
const mappedError = mapHfRouterError({
|
|
143
|
-
status: response.status,
|
|
144
|
-
statusText: response.statusText,
|
|
145
|
-
bodyText: errorText,
|
|
146
|
-
});
|
|
147
|
-
return {
|
|
148
|
-
success: false,
|
|
149
|
-
exitCode: response.status,
|
|
150
|
-
stdout: '',
|
|
151
|
-
stderr: mappedError,
|
|
152
|
-
duration: Date.now() - startedAt,
|
|
153
|
-
timedOut: false,
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
if (!response.body) {
|
|
157
|
-
return {
|
|
158
|
-
success: false,
|
|
159
|
-
exitCode: 1,
|
|
160
|
-
stdout: '',
|
|
161
|
-
stderr: 'Hugging Face router returned empty body',
|
|
162
|
-
duration: Date.now() - startedAt,
|
|
163
|
-
timedOut: false,
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
const result = await this.parseSSEStream(response.body, startedAt);
|
|
167
|
-
this.recordMetrics(requestBody.model, options.role, result.tokenUsage, response.headers);
|
|
168
|
-
return result;
|
|
169
|
-
}
|
|
170
|
-
catch (error) {
|
|
171
|
-
const timedOut = error instanceof Error && error.name === 'AbortError';
|
|
172
|
-
return {
|
|
173
|
-
success: false,
|
|
174
|
-
exitCode: 1,
|
|
175
|
-
stdout: '',
|
|
176
|
-
stderr: timedOut
|
|
177
|
-
? 'Hugging Face router request timed out'
|
|
178
|
-
: `Hugging Face router request failed: ${error instanceof Error ? error.message : 'unknown error'}`,
|
|
179
|
-
duration: Date.now() - startedAt,
|
|
180
|
-
timedOut,
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
finally {
|
|
184
|
-
clearTimeout(timeoutHandle);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
applyRoutingPolicy(model) {
|
|
188
|
-
return model.includes(':') ? model : `${model}:fastest`;
|
|
189
|
-
}
|
|
190
|
-
async parseSSEStream(body, startedAt) {
|
|
191
|
-
const reader = body.getReader();
|
|
192
|
-
const decoder = new TextDecoder();
|
|
193
|
-
let rawBuffer = '';
|
|
194
|
-
let stdout = '';
|
|
195
|
-
let tokenUsage;
|
|
196
|
-
let seenDone = false;
|
|
197
|
-
while (true) {
|
|
198
|
-
const { done, value } = await reader.read();
|
|
199
|
-
if (done)
|
|
200
|
-
break;
|
|
201
|
-
rawBuffer += decoder.decode(value, { stream: true });
|
|
202
|
-
const parts = rawBuffer.split('\n\n');
|
|
203
|
-
rawBuffer = parts.pop() ?? '';
|
|
204
|
-
for (const part of parts) {
|
|
205
|
-
const event = parseSSEEvent(part);
|
|
206
|
-
if (!event)
|
|
207
|
-
continue;
|
|
208
|
-
const eventResult = this.handleSSEEvent(event);
|
|
209
|
-
if (eventResult.done) {
|
|
210
|
-
seenDone = true;
|
|
211
|
-
return {
|
|
212
|
-
success: true,
|
|
213
|
-
exitCode: 0,
|
|
214
|
-
stdout,
|
|
215
|
-
stderr: '',
|
|
216
|
-
duration: Date.now() - startedAt,
|
|
217
|
-
timedOut: false,
|
|
218
|
-
tokenUsage,
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
if (eventResult.error) {
|
|
222
|
-
return {
|
|
223
|
-
success: false,
|
|
224
|
-
exitCode: 1,
|
|
225
|
-
stdout,
|
|
226
|
-
stderr: eventResult.error,
|
|
227
|
-
duration: Date.now() - startedAt,
|
|
228
|
-
timedOut: false,
|
|
229
|
-
};
|
|
230
|
-
}
|
|
231
|
-
if (eventResult.text) {
|
|
232
|
-
stdout += eventResult.text;
|
|
233
|
-
}
|
|
234
|
-
if (eventResult.usage) {
|
|
235
|
-
tokenUsage = eventResult.usage;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
if (!seenDone) {
|
|
240
|
-
return {
|
|
241
|
-
success: false,
|
|
242
|
-
exitCode: 1,
|
|
243
|
-
stdout,
|
|
244
|
-
stderr: 'Hugging Face SSE stream ended before [DONE]',
|
|
245
|
-
duration: Date.now() - startedAt,
|
|
246
|
-
timedOut: false,
|
|
247
|
-
tokenUsage,
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
return {
|
|
251
|
-
success: true,
|
|
252
|
-
exitCode: 0,
|
|
253
|
-
stdout,
|
|
254
|
-
stderr: '',
|
|
255
|
-
duration: Date.now() - startedAt,
|
|
256
|
-
timedOut: false,
|
|
257
|
-
tokenUsage,
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
handleSSEEvent(event) {
|
|
261
|
-
if (event.data === '[DONE]') {
|
|
262
|
-
return { done: true };
|
|
263
|
-
}
|
|
264
|
-
if (event.event === 'error') {
|
|
265
|
-
const parsed = safeParseJson(event.data);
|
|
266
|
-
const code = parsed?.error?.code;
|
|
267
|
-
const message = parsed?.error?.message ?? event.data;
|
|
268
|
-
return {
|
|
269
|
-
error: mapHfRouterError({
|
|
270
|
-
status: codeToStatusCode(code),
|
|
271
|
-
bodyText: message,
|
|
272
|
-
source: 'sse',
|
|
273
|
-
}),
|
|
274
|
-
};
|
|
275
|
-
}
|
|
276
|
-
const chunk = safeParseJson(event.data);
|
|
277
|
-
if (!chunk)
|
|
278
|
-
return {};
|
|
279
|
-
if (chunk.error?.message) {
|
|
280
|
-
return {
|
|
281
|
-
error: mapHfRouterError({
|
|
282
|
-
status: codeToStatusCode(chunk.error.code),
|
|
283
|
-
bodyText: chunk.error.message,
|
|
284
|
-
source: 'sse',
|
|
285
|
-
}),
|
|
286
|
-
};
|
|
287
|
-
}
|
|
288
|
-
const text = chunk.choices?.[0]?.delta?.content ??
|
|
289
|
-
chunk.choices?.[0]?.message?.content ??
|
|
290
|
-
'';
|
|
291
|
-
const usage = chunk.usage
|
|
292
|
-
? {
|
|
293
|
-
inputTokens: chunk.usage.prompt_tokens ?? 0,
|
|
294
|
-
outputTokens: chunk.usage.completion_tokens ?? 0,
|
|
295
|
-
}
|
|
296
|
-
: undefined;
|
|
297
|
-
return { text, usage };
|
|
298
|
-
}
|
|
299
|
-
recordMetrics(requestedModel, role, tokenUsage, headers) {
|
|
300
|
-
if (!tokenUsage)
|
|
301
|
-
return;
|
|
302
|
-
try {
|
|
303
|
-
this.metrics.recordInvocationUsage({
|
|
304
|
-
requestedModel,
|
|
305
|
-
role,
|
|
306
|
-
tokenUsage,
|
|
307
|
-
providerHint: (0, metrics_js_1.extractInferenceProviderFromHeaders)(headers),
|
|
308
|
-
});
|
|
309
|
-
}
|
|
310
|
-
catch {
|
|
311
|
-
// Metrics are best-effort and must not fail model invocation.
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
exports.HuggingFaceProvider = HuggingFaceProvider;
|
|
316
|
-
function parseSSEEvent(rawBlock) {
|
|
317
|
-
const lines = rawBlock.split('\n');
|
|
318
|
-
let event = 'message';
|
|
319
|
-
const dataParts = [];
|
|
320
|
-
for (const rawLine of lines) {
|
|
321
|
-
const line = rawLine.trimEnd();
|
|
322
|
-
if (!line || line.startsWith(':'))
|
|
323
|
-
continue;
|
|
324
|
-
if (line.startsWith('event:')) {
|
|
325
|
-
event = line.slice(6).trim() || 'message';
|
|
326
|
-
continue;
|
|
327
|
-
}
|
|
328
|
-
if (line.startsWith('data:')) {
|
|
329
|
-
dataParts.push(line.slice(5).trimStart());
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
if (dataParts.length === 0)
|
|
333
|
-
return null;
|
|
334
|
-
return { event, data: dataParts.join('\n') };
|
|
335
|
-
}
|
|
336
|
-
function safeParseJson(value) {
|
|
337
|
-
try {
|
|
338
|
-
return JSON.parse(value);
|
|
339
|
-
}
|
|
340
|
-
catch {
|
|
341
|
-
return null;
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
async function safeReadText(response) {
|
|
345
|
-
try {
|
|
346
|
-
return await response.text();
|
|
347
|
-
}
|
|
348
|
-
catch {
|
|
349
|
-
return '';
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
function createHuggingFaceProvider() {
|
|
353
|
-
return new HuggingFaceProvider();
|
|
354
|
-
}
|
|
355
|
-
function mapHfRouterError(input) {
|
|
356
|
-
const source = input.source ?? 'http';
|
|
357
|
-
const status = input.status;
|
|
358
|
-
const statusText = input.statusText ?? '';
|
|
359
|
-
const bodyText = (input.bodyText ?? '').trim();
|
|
360
|
-
const message = `${status ?? ''} ${statusText} ${bodyText}`.toLowerCase();
|
|
361
|
-
if (status === 402 || /insufficient|credit|quota|payment required/.test(message)) {
|
|
362
|
-
return `Hugging Face ${source} error: credits exhausted. Add credits in https://huggingface.co/settings/billing.`;
|
|
363
|
-
}
|
|
364
|
-
if (status === 429 || /rate.?limit|too many requests/.test(message)) {
|
|
365
|
-
return `Hugging Face ${source} error: rate limit exceeded (429). Retry after a short backoff.`;
|
|
366
|
-
}
|
|
367
|
-
if (status === 401 ||
|
|
368
|
-
status === 403 ||
|
|
369
|
-
/gated|access denied|forbidden|not authorized|authorization required|request access/.test(message)) {
|
|
370
|
-
return `Hugging Face ${source} error: gated model access denied. Request model access and verify token read/inference scopes.`;
|
|
371
|
-
}
|
|
372
|
-
if (status === 503 || /unavailable|overloaded|provider down|capacity/.test(message)) {
|
|
373
|
-
return `Hugging Face ${source} error: provider outage or temporary unavailability (503).`;
|
|
374
|
-
}
|
|
375
|
-
if (bodyText) {
|
|
376
|
-
return `Hugging Face ${source} error (${status ?? 'unknown'}): ${bodyText}`;
|
|
377
|
-
}
|
|
378
|
-
return `Hugging Face ${source} error (${status ?? 'unknown'})`;
|
|
379
|
-
}
|
|
380
|
-
function codeToStatusCode(code) {
|
|
381
|
-
if (typeof code === 'number' && Number.isFinite(code)) {
|
|
382
|
-
return code;
|
|
383
|
-
}
|
|
384
|
-
if (typeof code === 'string') {
|
|
385
|
-
const parsed = Number.parseInt(code, 10);
|
|
386
|
-
if (Number.isFinite(parsed))
|
|
387
|
-
return parsed;
|
|
388
|
-
}
|
|
389
|
-
return undefined;
|
|
390
|
-
}
|
|
391
|
-
//# sourceMappingURL=huggingface.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"huggingface.js","sourceRoot":"","sources":["../../src/providers/huggingface.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MiniMax Provider
|
|
3
|
-
* Implementation for MiniMax API
|
|
4
|
-
* https://api.minimax.chat/v1/text/chat_completion_v2
|
|
5
|
-
*/
|
|
6
|
-
import { BaseAIProvider, type InvokeOptions, type InvokeResult, type ModelInfo } from './interface.js';
|
|
7
|
-
/**
|
|
8
|
-
* MiniMax AI Provider implementation
|
|
9
|
-
*/
|
|
10
|
-
export declare class MiniMaxProvider extends BaseAIProvider {
|
|
11
|
-
readonly name = "minimax";
|
|
12
|
-
readonly displayName = "MiniMax";
|
|
13
|
-
private apiKey;
|
|
14
|
-
private groupId;
|
|
15
|
-
private dynamicModels;
|
|
16
|
-
constructor();
|
|
17
|
-
/**
|
|
18
|
-
* Fetch available models from MiniMax API
|
|
19
|
-
*/
|
|
20
|
-
initialize(): Promise<void>;
|
|
21
|
-
/**
|
|
22
|
-
* MiniMax is API-only, so isAvailable checks for API key
|
|
23
|
-
*/
|
|
24
|
-
isAvailable(): Promise<boolean>;
|
|
25
|
-
/**
|
|
26
|
-
* Invoke MiniMax API
|
|
27
|
-
*/
|
|
28
|
-
invoke(prompt: string, options: InvokeOptions): Promise<InvokeResult>;
|
|
29
|
-
/**
|
|
30
|
-
* List models
|
|
31
|
-
*/
|
|
32
|
-
listModels(): string[];
|
|
33
|
-
/**
|
|
34
|
-
* Get model info
|
|
35
|
-
*/
|
|
36
|
-
getModelInfo(): ModelInfo[];
|
|
37
|
-
/**
|
|
38
|
-
* Get default model
|
|
39
|
-
*/
|
|
40
|
-
getDefaultModel(role: 'orchestrator' | 'coder' | 'reviewer'): string;
|
|
41
|
-
/**
|
|
42
|
-
* API-only provider doesn't use CLI templates
|
|
43
|
-
*/
|
|
44
|
-
getDefaultInvocationTemplate(): string;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Create a MiniMax provider instance
|
|
48
|
-
*/
|
|
49
|
-
export declare function createMiniMaxProvider(): MiniMaxProvider;
|
|
50
|
-
//# sourceMappingURL=minimax.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"minimax.d.ts","sourceRoot":"","sources":["../../src/providers/minimax.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,SAAS,EAEf,MAAM,gBAAgB,CAAC;AAmCxB;;GAEG;AACH,qBAAa,eAAgB,SAAQ,cAAc;IACjD,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,WAAW,aAAa;IAEjC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,aAAa,CAAmB;;IAQxC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgDjC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA+G3E;;OAEG;IACH,UAAU,IAAI,MAAM,EAAE;IAKtB;;OAEG;IACH,YAAY,IAAI,SAAS,EAAE;IAI3B;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM;IAIpE;;OAEG;IACH,4BAA4B,IAAI,MAAM;CAGvC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD"}
|