steroids-cli 0.8.44 → 0.9.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 +2 -2
- package/dist/commands/ai.js.map +1 -1
- package/dist/commands/config.js +80 -4
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/health-stuck.d.ts.map +1 -1
- package/dist/commands/health-stuck.js +8 -2
- package/dist/commands/health-stuck.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +19 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/loop-phases.d.ts +3 -3
- package/dist/commands/loop-phases.d.ts.map +1 -1
- package/dist/commands/loop-phases.js +203 -59
- package/dist/commands/loop-phases.js.map +1 -1
- package/dist/commands/loop.d.ts.map +1 -1
- package/dist/commands/loop.js +12 -1
- package/dist/commands/loop.js.map +1 -1
- package/dist/commands/tasks.d.ts.map +1 -1
- package/dist/commands/tasks.js +69 -2
- package/dist/commands/tasks.js.map +1 -1
- package/dist/config/ai-setup.d.ts +2 -1
- package/dist/config/ai-setup.d.ts.map +1 -1
- package/dist/config/ai-setup.js +234 -36
- package/dist/config/ai-setup.js.map +1 -1
- package/dist/config/loader.d.ts +21 -7
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +22 -2
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +41 -3
- package/dist/config/schema.js.map +1 -1
- package/dist/database/queries.d.ts +37 -0
- package/dist/database/queries.d.ts.map +1 -1
- package/dist/database/queries.js +94 -2
- package/dist/database/queries.js.map +1 -1
- package/dist/database/schema.d.ts +2 -2
- package/dist/database/schema.d.ts.map +1 -1
- package/dist/database/schema.js +21 -0
- package/dist/database/schema.js.map +1 -1
- package/dist/health/stuck-task-detector.d.ts +2 -0
- package/dist/health/stuck-task-detector.d.ts.map +1 -1
- package/dist/health/stuck-task-detector.js +39 -18
- package/dist/health/stuck-task-detector.js.map +1 -1
- package/dist/orchestrator/coder.d.ts.map +1 -1
- package/dist/orchestrator/coder.js +23 -6
- package/dist/orchestrator/coder.js.map +1 -1
- package/dist/orchestrator/coordinator.js +1 -1
- package/dist/orchestrator/coordinator.js.map +1 -1
- package/dist/orchestrator/invoke.d.ts +5 -1
- package/dist/orchestrator/invoke.d.ts.map +1 -1
- package/dist/orchestrator/invoke.js +9 -1
- package/dist/orchestrator/invoke.js.map +1 -1
- package/dist/orchestrator/post-reviewer.d.ts +5 -1
- package/dist/orchestrator/post-reviewer.d.ts.map +1 -1
- package/dist/orchestrator/post-reviewer.js +100 -1
- package/dist/orchestrator/post-reviewer.js.map +1 -1
- package/dist/orchestrator/reviewer.d.ts +30 -2
- package/dist/orchestrator/reviewer.d.ts.map +1 -1
- package/dist/orchestrator/reviewer.js +121 -17
- package/dist/orchestrator/reviewer.js.map +1 -1
- package/dist/orchestrator/task-selector.d.ts.map +1 -1
- package/dist/orchestrator/task-selector.js +5 -1
- package/dist/orchestrator/task-selector.js.map +1 -1
- package/dist/orchestrator/types.d.ts +27 -0
- package/dist/orchestrator/types.d.ts.map +1 -1
- package/dist/parallel/merge-conflict-invoke.js +1 -1
- package/dist/parallel/merge-conflict-invoke.js.map +1 -1
- package/dist/prompts/coder.d.ts +4 -0
- package/dist/prompts/coder.d.ts.map +1 -1
- package/dist/prompts/coder.js +41 -0
- package/dist/prompts/coder.js.map +1 -1
- package/dist/prompts/reviewer.d.ts +4 -0
- package/dist/prompts/reviewer.d.ts.map +1 -1
- package/dist/prompts/reviewer.js +65 -0
- package/dist/prompts/reviewer.js.map +1 -1
- package/dist/providers/api-models.d.ts +14 -6
- package/dist/providers/api-models.d.ts.map +1 -1
- package/dist/providers/api-models.js +86 -5
- package/dist/providers/api-models.js.map +1 -1
- package/dist/providers/claude.d.ts +2 -2
- package/dist/providers/claude.d.ts.map +1 -1
- package/dist/providers/claude.js +58 -13
- package/dist/providers/claude.js.map +1 -1
- package/dist/providers/codex.d.ts +5 -1
- package/dist/providers/codex.d.ts.map +1 -1
- package/dist/providers/codex.js +143 -40
- package/dist/providers/codex.js.map +1 -1
- package/dist/providers/gemini.d.ts +1 -1
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +53 -9
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/interface.d.ts +62 -1
- package/dist/providers/interface.d.ts.map +1 -1
- package/dist/providers/interface.js +105 -12
- package/dist/providers/interface.js.map +1 -1
- package/dist/providers/invocation-logger.d.ts +3 -0
- package/dist/providers/invocation-logger.d.ts.map +1 -1
- package/dist/providers/invocation-logger.js +22 -8
- package/dist/providers/invocation-logger.js.map +1 -1
- package/dist/providers/minimax.d.ts +50 -0
- package/dist/providers/minimax.d.ts.map +1 -0
- package/dist/providers/minimax.js +248 -0
- package/dist/providers/minimax.js.map +1 -0
- package/dist/providers/mistral.d.ts +7 -1
- package/dist/providers/mistral.d.ts.map +1 -1
- package/dist/providers/mistral.js +74 -5
- package/dist/providers/mistral.js.map +1 -1
- package/dist/providers/ollama.d.ts +50 -0
- package/dist/providers/ollama.d.ts.map +1 -0
- package/dist/providers/ollama.js +259 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/openai.d.ts +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +1 -1
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/registry.d.ts +2 -2
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +28 -14
- package/dist/providers/registry.js.map +1 -1
- package/dist/runners/credit-pause.d.ts +1 -1
- package/dist/runners/credit-pause.d.ts.map +1 -1
- package/dist/runners/credit-pause.js +2 -2
- package/dist/runners/credit-pause.js.map +1 -1
- package/dist/runners/orchestrator-loop.js +2 -2
- package/dist/runners/orchestrator-loop.js.map +1 -1
- package/migrations/014_add_session_context.sql +17 -0
- package/migrations/015_add_follow_up_fields.sql +26 -0
- package/migrations/016_add_invocation_activity_timestamp.sql +8 -0
- package/migrations/manifest.json +25 -1
- package/package.json +1 -1
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MiniMax Provider
|
|
4
|
+
* Implementation for MiniMax API
|
|
5
|
+
* https://api.minimax.chat/v1/text/chat_completion_v2
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.MiniMaxProvider = void 0;
|
|
9
|
+
exports.createMiniMaxProvider = createMiniMaxProvider;
|
|
10
|
+
const node_https_1 = require("node:https");
|
|
11
|
+
const interface_js_1 = require("./interface.js");
|
|
12
|
+
/**
|
|
13
|
+
* Static list of common MiniMax models
|
|
14
|
+
*/
|
|
15
|
+
const MINIMAX_MODELS = [
|
|
16
|
+
{
|
|
17
|
+
id: 'abab6.5-chat',
|
|
18
|
+
name: 'abab6.5-chat',
|
|
19
|
+
recommendedFor: ['coder', 'reviewer'],
|
|
20
|
+
supportsStreaming: true,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: 'abab6.5s-chat',
|
|
24
|
+
name: 'abab6.5s-chat',
|
|
25
|
+
recommendedFor: ['coder'],
|
|
26
|
+
supportsStreaming: true,
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: 'abab6-chat',
|
|
30
|
+
name: 'abab6-chat',
|
|
31
|
+
recommendedFor: [],
|
|
32
|
+
supportsStreaming: true,
|
|
33
|
+
},
|
|
34
|
+
];
|
|
35
|
+
/**
|
|
36
|
+
* Default models per role
|
|
37
|
+
*/
|
|
38
|
+
const DEFAULT_MODELS = {
|
|
39
|
+
orchestrator: 'abab6.5-chat',
|
|
40
|
+
coder: 'abab6.5-chat',
|
|
41
|
+
reviewer: 'abab6.5-chat',
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* MiniMax AI Provider implementation
|
|
45
|
+
*/
|
|
46
|
+
class MiniMaxProvider extends interface_js_1.BaseAIProvider {
|
|
47
|
+
name = 'minimax';
|
|
48
|
+
displayName = 'MiniMax';
|
|
49
|
+
apiKey;
|
|
50
|
+
groupId;
|
|
51
|
+
dynamicModels = [];
|
|
52
|
+
constructor() {
|
|
53
|
+
super();
|
|
54
|
+
this.apiKey = process.env.STEROIDS_MINIMAX_API_KEY || process.env.MINIMAX_API_KEY;
|
|
55
|
+
this.groupId = process.env.STEROIDS_MINIMAX_GROUP_ID || process.env.MINIMAX_GROUP_ID;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Fetch available models from MiniMax API
|
|
59
|
+
*/
|
|
60
|
+
async initialize() {
|
|
61
|
+
if (!this.apiKey)
|
|
62
|
+
return;
|
|
63
|
+
return new Promise((resolve) => {
|
|
64
|
+
const requestOptions = {
|
|
65
|
+
hostname: 'api.minimax.chat',
|
|
66
|
+
port: 443,
|
|
67
|
+
path: '/v1/models', // Standard models endpoint
|
|
68
|
+
method: 'GET',
|
|
69
|
+
headers: {
|
|
70
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
const req = (0, node_https_1.request)(requestOptions, (res) => {
|
|
74
|
+
let body = '';
|
|
75
|
+
res.on('data', (chunk) => body += chunk);
|
|
76
|
+
res.on('end', () => {
|
|
77
|
+
try {
|
|
78
|
+
if (res.statusCode === 200) {
|
|
79
|
+
const data = JSON.parse(body);
|
|
80
|
+
if (data.data && Array.isArray(data.data)) {
|
|
81
|
+
this.dynamicModels = data.data.map((m) => ({
|
|
82
|
+
id: m.id,
|
|
83
|
+
name: m.id,
|
|
84
|
+
recommendedFor: m.id.includes('chat') ? ['coder', 'reviewer'] : [],
|
|
85
|
+
supportsStreaming: true,
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
resolve();
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
resolve();
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
req.on('error', () => resolve());
|
|
97
|
+
req.end();
|
|
98
|
+
// Timeout for initialization
|
|
99
|
+
setTimeout(() => {
|
|
100
|
+
req.destroy();
|
|
101
|
+
resolve();
|
|
102
|
+
}, 5000);
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* MiniMax is API-only, so isAvailable checks for API key
|
|
107
|
+
*/
|
|
108
|
+
async isAvailable() {
|
|
109
|
+
return !!this.apiKey;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Invoke MiniMax API
|
|
113
|
+
*/
|
|
114
|
+
async invoke(prompt, options) {
|
|
115
|
+
if (!this.apiKey) {
|
|
116
|
+
throw new Error('MiniMax API key not found. Set STEROIDS_MINIMAX_API_KEY environment variable.');
|
|
117
|
+
}
|
|
118
|
+
const startTime = Date.now();
|
|
119
|
+
const model = options.model;
|
|
120
|
+
const onActivity = options.onActivity;
|
|
121
|
+
return new Promise((resolve) => {
|
|
122
|
+
const postData = JSON.stringify({
|
|
123
|
+
model: model,
|
|
124
|
+
messages: [{ role: 'user', content: prompt }],
|
|
125
|
+
// tokens_to_generate is optional, default is usually enough
|
|
126
|
+
});
|
|
127
|
+
const requestOptions = {
|
|
128
|
+
hostname: 'api.minimax.chat',
|
|
129
|
+
port: 443,
|
|
130
|
+
path: '/v1/text/chat_completion_v2',
|
|
131
|
+
method: 'POST',
|
|
132
|
+
headers: {
|
|
133
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
134
|
+
'Content-Type': 'application/json',
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
const req = (0, node_https_1.request)(requestOptions, (res) => {
|
|
138
|
+
let responseBody = '';
|
|
139
|
+
res.on('data', (chunk) => {
|
|
140
|
+
responseBody += chunk;
|
|
141
|
+
});
|
|
142
|
+
res.on('end', () => {
|
|
143
|
+
const duration = Date.now() - startTime;
|
|
144
|
+
try {
|
|
145
|
+
const result = JSON.parse(responseBody);
|
|
146
|
+
if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
|
|
147
|
+
const content = result.choices?.[0]?.message?.content || '';
|
|
148
|
+
const usage = result.usage ? {
|
|
149
|
+
inputTokens: result.usage.prompt_tokens,
|
|
150
|
+
outputTokens: result.usage.completion_tokens,
|
|
151
|
+
} : undefined;
|
|
152
|
+
resolve({
|
|
153
|
+
success: true,
|
|
154
|
+
exitCode: 0,
|
|
155
|
+
stdout: content,
|
|
156
|
+
stderr: '',
|
|
157
|
+
duration,
|
|
158
|
+
timedOut: false,
|
|
159
|
+
tokenUsage: usage,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
resolve({
|
|
164
|
+
success: false,
|
|
165
|
+
exitCode: res.statusCode || 1,
|
|
166
|
+
stdout: '',
|
|
167
|
+
stderr: result.base_resp?.status_msg || responseBody,
|
|
168
|
+
duration,
|
|
169
|
+
timedOut: false,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
catch (e) {
|
|
174
|
+
resolve({
|
|
175
|
+
success: false,
|
|
176
|
+
exitCode: 1,
|
|
177
|
+
stdout: '',
|
|
178
|
+
stderr: `Failed to parse MiniMax response: ${e}
|
|
179
|
+
|
|
180
|
+
Raw response: ${responseBody}`,
|
|
181
|
+
duration,
|
|
182
|
+
timedOut: false,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
req.on('error', (e) => {
|
|
188
|
+
resolve({
|
|
189
|
+
success: false,
|
|
190
|
+
exitCode: 1,
|
|
191
|
+
stdout: '',
|
|
192
|
+
stderr: `MiniMax request error: ${e.message}`,
|
|
193
|
+
duration: Date.now() - startTime,
|
|
194
|
+
timedOut: false,
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
req.write(postData);
|
|
198
|
+
req.end();
|
|
199
|
+
// Implement timeout
|
|
200
|
+
if (options.timeout) {
|
|
201
|
+
setTimeout(() => {
|
|
202
|
+
req.destroy();
|
|
203
|
+
resolve({
|
|
204
|
+
success: false,
|
|
205
|
+
exitCode: 1,
|
|
206
|
+
stdout: '',
|
|
207
|
+
stderr: 'MiniMax request timed out',
|
|
208
|
+
duration: Date.now() - startTime,
|
|
209
|
+
timedOut: true,
|
|
210
|
+
});
|
|
211
|
+
}, options.timeout);
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* List models
|
|
217
|
+
*/
|
|
218
|
+
listModels() {
|
|
219
|
+
const models = this.dynamicModels.length > 0 ? this.dynamicModels : MINIMAX_MODELS;
|
|
220
|
+
return models.map((m) => m.id);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Get model info
|
|
224
|
+
*/
|
|
225
|
+
getModelInfo() {
|
|
226
|
+
return this.dynamicModels.length > 0 ? [...this.dynamicModels] : [...MINIMAX_MODELS];
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get default model
|
|
230
|
+
*/
|
|
231
|
+
getDefaultModel(role) {
|
|
232
|
+
return DEFAULT_MODELS[role];
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* API-only provider doesn't use CLI templates
|
|
236
|
+
*/
|
|
237
|
+
getDefaultInvocationTemplate() {
|
|
238
|
+
return '';
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
exports.MiniMaxProvider = MiniMaxProvider;
|
|
242
|
+
/**
|
|
243
|
+
* Create a MiniMax provider instance
|
|
244
|
+
*/
|
|
245
|
+
function createMiniMaxProvider() {
|
|
246
|
+
return new MiniMaxProvider();
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=minimax.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minimax.js","sourceRoot":"","sources":["../../src/providers/minimax.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { BaseAIProvider, type InvokeOptions, type InvokeResult, type ModelInfo,
|
|
|
8
8
|
*/
|
|
9
9
|
export declare class MistralProvider extends BaseAIProvider {
|
|
10
10
|
readonly name = "mistral";
|
|
11
|
-
readonly displayName = "Mistral
|
|
11
|
+
readonly displayName = "Mistral (vibe)";
|
|
12
12
|
constructor();
|
|
13
13
|
/**
|
|
14
14
|
* Write prompt to a temporary file
|
|
@@ -26,6 +26,12 @@ export declare class MistralProvider extends BaseAIProvider {
|
|
|
26
26
|
* Invoke Mistral Vibe with a prompt
|
|
27
27
|
*/
|
|
28
28
|
invoke(prompt: string, options: InvokeOptions): Promise<InvokeResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Extract session ID and token usage from Vibe logs on disk.
|
|
31
|
+
* Vibe does not include session metadata in structured output.
|
|
32
|
+
* @param vibeHome The specific VIBE_HOME directory to scan
|
|
33
|
+
*/
|
|
34
|
+
private extractSessionInfo;
|
|
29
35
|
/**
|
|
30
36
|
* Invoke Vibe CLI with a prompt file using the invocation template
|
|
31
37
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mistral.d.ts","sourceRoot":"","sources":["../../src/providers/mistral.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"mistral.d.ts","sourceRoot":"","sources":["../../src/providers/mistral.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,aAAa,EAEnB,MAAM,gBAAgB,CAAC;AAoDxB;;GAEG;AACH,qBAAa,eAAgB,SAAQ,cAAc;IACjD,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,WAAW,oBAAoB;;IAQxC;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACH,4BAA4B,IAAI,MAAM;IAItC;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA8B3E;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAyC1B;;OAEG;IACH,OAAO,CAAC,cAAc;IA4ItB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAwCrC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAuBrE;;OAEG;IACH,UAAU,IAAI,MAAM,EAAE;IAItB;;OAEG;IACH,YAAY,IAAI,SAAS,EAAE;IAI3B;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM;CAGrE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD"}
|
|
@@ -11,6 +11,8 @@ const node_crypto_1 = require("node:crypto");
|
|
|
11
11
|
const node_fs_1 = require("node:fs");
|
|
12
12
|
const node_os_1 = require("node:os");
|
|
13
13
|
const node_path_1 = require("node:path");
|
|
14
|
+
const node_os_2 = require("node:os");
|
|
15
|
+
const node_fs_2 = require("node:fs");
|
|
14
16
|
const interface_js_1 = require("./interface.js");
|
|
15
17
|
/**
|
|
16
18
|
* Available Mistral models
|
|
@@ -57,13 +59,13 @@ const DEFAULT_TIMEOUT = 900_000;
|
|
|
57
59
|
* Default invocation template for Vibe CLI
|
|
58
60
|
* Model selection is injected through VIBE_ACTIVE_MODEL/VIBE_MODELS env vars.
|
|
59
61
|
*/
|
|
60
|
-
const DEFAULT_INVOCATION_TEMPLATE = '{cli} -p "$(cat {prompt_file})" --output text --max-turns 80 --agent auto-approve';
|
|
62
|
+
const DEFAULT_INVOCATION_TEMPLATE = '{cli} -p "$(cat {prompt_file})" {session_id} --output text --max-turns 80 --agent auto-approve';
|
|
61
63
|
/**
|
|
62
64
|
* Mistral Vibe Provider implementation
|
|
63
65
|
*/
|
|
64
66
|
class MistralProvider extends interface_js_1.BaseAIProvider {
|
|
65
67
|
name = 'mistral';
|
|
66
|
-
displayName = 'Mistral
|
|
68
|
+
displayName = 'Mistral (vibe)';
|
|
67
69
|
constructor() {
|
|
68
70
|
super();
|
|
69
71
|
// Provider ID is "mistral", but executable is "vibe".
|
|
@@ -110,7 +112,7 @@ class MistralProvider extends interface_js_1.BaseAIProvider {
|
|
|
110
112
|
const promptFile = options.promptFile ?? this.writePromptFile(prompt);
|
|
111
113
|
const createdTempFile = !options.promptFile;
|
|
112
114
|
try {
|
|
113
|
-
return await this.invokeWithFile(promptFile, options.model, timeout, cwd, streamOutput, onActivity);
|
|
115
|
+
return await this.invokeWithFile(promptFile, options.model, timeout, cwd, streamOutput, onActivity, options.resumeSessionId);
|
|
114
116
|
}
|
|
115
117
|
finally {
|
|
116
118
|
if (createdTempFile) {
|
|
@@ -118,10 +120,56 @@ class MistralProvider extends interface_js_1.BaseAIProvider {
|
|
|
118
120
|
}
|
|
119
121
|
}
|
|
120
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Extract session ID and token usage from Vibe logs on disk.
|
|
125
|
+
* Vibe does not include session metadata in structured output.
|
|
126
|
+
* @param vibeHome The specific VIBE_HOME directory to scan
|
|
127
|
+
*/
|
|
128
|
+
extractSessionInfo(vibeHome) {
|
|
129
|
+
try {
|
|
130
|
+
const home = vibeHome ?? (0, node_path_1.join)((0, node_os_2.homedir)(), '.vibe');
|
|
131
|
+
// Vibe puts logs in logs/session/ under the home dir
|
|
132
|
+
const sessionsDir = (0, node_path_1.join)(home, 'logs', 'session');
|
|
133
|
+
if (!(0, node_fs_1.existsSync)(sessionsDir)) {
|
|
134
|
+
// Fallback for isolated home where logs/session might be at the root or under .vibe
|
|
135
|
+
const altDir = (0, node_path_1.join)(home, '.vibe', 'logs', 'session');
|
|
136
|
+
if ((0, node_fs_1.existsSync)(altDir))
|
|
137
|
+
return this.extractSessionInfo((0, node_path_1.join)(home, '.vibe'));
|
|
138
|
+
return {};
|
|
139
|
+
}
|
|
140
|
+
// Find newest session directory (named session_YYYYMMDD_HHMMSS_shortid)
|
|
141
|
+
const dirs = (0, node_fs_2.readdirSync)(sessionsDir)
|
|
142
|
+
.filter((d) => d.startsWith('session_'))
|
|
143
|
+
.sort()
|
|
144
|
+
.reverse();
|
|
145
|
+
if (dirs.length === 0)
|
|
146
|
+
return {};
|
|
147
|
+
const metaPath = (0, node_path_1.join)(sessionsDir, dirs[0], 'meta.json');
|
|
148
|
+
if (!(0, node_fs_1.existsSync)(metaPath))
|
|
149
|
+
return {};
|
|
150
|
+
const meta = JSON.parse((0, node_fs_1.readFileSync)(metaPath, 'utf-8'));
|
|
151
|
+
if (!meta.session_id)
|
|
152
|
+
return {};
|
|
153
|
+
const tokenUsage = meta.stats ? {
|
|
154
|
+
inputTokens: meta.stats.session_prompt_tokens,
|
|
155
|
+
outputTokens: meta.stats.session_completion_tokens,
|
|
156
|
+
totalCostUsd: meta.stats.session_cost,
|
|
157
|
+
} : undefined;
|
|
158
|
+
return {
|
|
159
|
+
sessionId: meta.session_id,
|
|
160
|
+
tokenUsage,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
return {};
|
|
165
|
+
}
|
|
166
|
+
}
|
|
121
167
|
/**
|
|
122
168
|
* Invoke Vibe CLI with a prompt file using the invocation template
|
|
123
169
|
*/
|
|
124
|
-
invokeWithFile(promptFile, model, timeout, cwd, streamOutput, onActivity) {
|
|
170
|
+
invokeWithFile(promptFile, model, timeout, cwd, streamOutput, onActivity, resumeSessionId) {
|
|
171
|
+
// Set up isolated VIBE_HOME
|
|
172
|
+
const isolatedHome = this.setupIsolatedHome('.vibe', ['state.json', 'config.yaml']);
|
|
125
173
|
return new Promise((resolve) => {
|
|
126
174
|
const startTime = Date.now();
|
|
127
175
|
let stdout = '';
|
|
@@ -130,6 +178,7 @@ class MistralProvider extends interface_js_1.BaseAIProvider {
|
|
|
130
178
|
// Vibe chooses models by alias. We inject a one-model runtime list so any
|
|
131
179
|
// requested model ID can be selected deterministically.
|
|
132
180
|
const env = this.getSanitizedCliEnv({
|
|
181
|
+
VIBE_HOME: isolatedHome,
|
|
133
182
|
VIBE_ACTIVE_MODEL: model,
|
|
134
183
|
VIBE_MODELS: JSON.stringify([
|
|
135
184
|
{
|
|
@@ -144,8 +193,9 @@ class MistralProvider extends interface_js_1.BaseAIProvider {
|
|
|
144
193
|
// Default path uses argument-based invocation (no shell interpolation),
|
|
145
194
|
// which avoids command injection through prompt content.
|
|
146
195
|
// If a custom template is explicitly set, preserve template behavior.
|
|
196
|
+
const sessionIdFlag = resumeSessionId ? `--resume ${resumeSessionId}` : '';
|
|
147
197
|
const child = this.invocationTemplate
|
|
148
|
-
? (0, node_child_process_1.spawn)(this.buildCommand(promptFile, model), {
|
|
198
|
+
? (0, node_child_process_1.spawn)(this.buildCommand(promptFile, model, sessionIdFlag), {
|
|
149
199
|
shell: true,
|
|
150
200
|
cwd,
|
|
151
201
|
env,
|
|
@@ -154,6 +204,7 @@ class MistralProvider extends interface_js_1.BaseAIProvider {
|
|
|
154
204
|
: (0, node_child_process_1.spawn)(this.getCliPath() ?? this.cliPath ?? 'vibe', [
|
|
155
205
|
'-p',
|
|
156
206
|
(0, node_fs_1.readFileSync)(promptFile, 'utf-8'),
|
|
207
|
+
...(resumeSessionId ? ['--resume', resumeSessionId] : []),
|
|
157
208
|
'--output',
|
|
158
209
|
'text',
|
|
159
210
|
'--max-turns',
|
|
@@ -195,6 +246,14 @@ class MistralProvider extends interface_js_1.BaseAIProvider {
|
|
|
195
246
|
child.on('close', (code) => {
|
|
196
247
|
clearTimeout(timeoutHandle);
|
|
197
248
|
const duration = Date.now() - startTime;
|
|
249
|
+
const sessionInfo = this.extractSessionInfo(isolatedHome);
|
|
250
|
+
// Cleanup isolated home
|
|
251
|
+
try {
|
|
252
|
+
(0, node_fs_1.rmSync)(isolatedHome, { recursive: true, force: true });
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
// Ignore cleanup errors
|
|
256
|
+
}
|
|
198
257
|
resolve({
|
|
199
258
|
success: code === 0 && !timedOut,
|
|
200
259
|
exitCode: code ?? 1,
|
|
@@ -202,11 +261,20 @@ class MistralProvider extends interface_js_1.BaseAIProvider {
|
|
|
202
261
|
stderr,
|
|
203
262
|
duration,
|
|
204
263
|
timedOut,
|
|
264
|
+
...sessionInfo,
|
|
205
265
|
});
|
|
206
266
|
});
|
|
207
267
|
child.on('error', (error) => {
|
|
208
268
|
clearTimeout(timeoutHandle);
|
|
209
269
|
const duration = Date.now() - startTime;
|
|
270
|
+
const sessionInfo = this.extractSessionInfo(isolatedHome);
|
|
271
|
+
// Cleanup isolated home
|
|
272
|
+
try {
|
|
273
|
+
(0, node_fs_1.rmSync)(isolatedHome, { recursive: true, force: true });
|
|
274
|
+
}
|
|
275
|
+
catch {
|
|
276
|
+
// Ignore cleanup errors
|
|
277
|
+
}
|
|
210
278
|
resolve({
|
|
211
279
|
success: false,
|
|
212
280
|
exitCode: 1,
|
|
@@ -214,6 +282,7 @@ class MistralProvider extends interface_js_1.BaseAIProvider {
|
|
|
214
282
|
stderr: error.message,
|
|
215
283
|
duration,
|
|
216
284
|
timedOut: false,
|
|
285
|
+
...sessionInfo,
|
|
217
286
|
});
|
|
218
287
|
});
|
|
219
288
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mistral.js","sourceRoot":"","sources":["../../src/providers/mistral.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"mistral.js","sourceRoot":"","sources":["../../src/providers/mistral.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ollama Provider
|
|
3
|
+
* Implementation for Ollama local API
|
|
4
|
+
* http://localhost:11434
|
|
5
|
+
*/
|
|
6
|
+
import { BaseAIProvider, type InvokeOptions, type InvokeResult, type ModelInfo } from './interface.js';
|
|
7
|
+
/**
|
|
8
|
+
* Ollama AI Provider implementation
|
|
9
|
+
*/
|
|
10
|
+
export declare class OllamaProvider extends BaseAIProvider {
|
|
11
|
+
readonly name = "ollama";
|
|
12
|
+
readonly displayName = "Ollama (local)";
|
|
13
|
+
private host;
|
|
14
|
+
private port;
|
|
15
|
+
private dynamicModels;
|
|
16
|
+
constructor();
|
|
17
|
+
/**
|
|
18
|
+
* Check if Ollama is running by calling its API
|
|
19
|
+
*/
|
|
20
|
+
isAvailable(): Promise<boolean>;
|
|
21
|
+
/**
|
|
22
|
+
* Fetch available models from local Ollama service
|
|
23
|
+
*/
|
|
24
|
+
initialize(): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Invoke Ollama chat API
|
|
27
|
+
*/
|
|
28
|
+
invoke(prompt: string, options: InvokeOptions): Promise<InvokeResult>;
|
|
29
|
+
/**
|
|
30
|
+
* List models (prefers dynamic, fallbacks to static)
|
|
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
|
|
43
|
+
*/
|
|
44
|
+
getDefaultInvocationTemplate(): string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create an Ollama provider instance
|
|
48
|
+
*/
|
|
49
|
+
export declare function createOllamaProvider(): OllamaProvider;
|
|
50
|
+
//# sourceMappingURL=ollama.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/providers/ollama.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,cAAe,SAAQ,cAAc;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,oBAAoB;IAExC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,aAAa,CAAmB;;IAQxC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IA4BrC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAyCjC;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA0G3E;;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,oBAAoB,IAAI,cAAc,CAErD"}
|