steroids-cli 0.8.43 → 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
package/dist/providers/codex.js
CHANGED
|
@@ -16,8 +16,20 @@ const interface_js_1 = require("./interface.js");
|
|
|
16
16
|
*/
|
|
17
17
|
const CODEX_MODELS = [
|
|
18
18
|
{
|
|
19
|
-
id: 'codex',
|
|
20
|
-
name: 'Codex',
|
|
19
|
+
id: 'gpt-5.3-codex',
|
|
20
|
+
name: 'GPT-5.3 Codex',
|
|
21
|
+
recommendedFor: ['coder', 'reviewer'],
|
|
22
|
+
supportsStreaming: true,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: 'o3',
|
|
26
|
+
name: 'O3',
|
|
27
|
+
recommendedFor: ['orchestrator'],
|
|
28
|
+
supportsStreaming: true,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
id: 'gpt-4.1',
|
|
32
|
+
name: 'GPT-4.1',
|
|
21
33
|
recommendedFor: ['reviewer'],
|
|
22
34
|
supportsStreaming: true,
|
|
23
35
|
},
|
|
@@ -26,9 +38,9 @@ const CODEX_MODELS = [
|
|
|
26
38
|
* Default models per role
|
|
27
39
|
*/
|
|
28
40
|
const DEFAULT_MODELS = {
|
|
29
|
-
orchestrator:
|
|
30
|
-
coder:
|
|
31
|
-
reviewer: 'codex',
|
|
41
|
+
orchestrator: 'o3',
|
|
42
|
+
coder: 'gpt-5.3-codex',
|
|
43
|
+
reviewer: 'gpt-5.3-codex',
|
|
32
44
|
};
|
|
33
45
|
/**
|
|
34
46
|
* Default timeout in milliseconds (15 minutes)
|
|
@@ -38,15 +50,16 @@ const DEFAULT_TIMEOUT = 900_000;
|
|
|
38
50
|
* Default invocation template for Codex CLI
|
|
39
51
|
* Uses dangerously-bypass-approvals-and-sandbox for full git access
|
|
40
52
|
* --skip-git-repo-check allows running outside trusted directories
|
|
53
|
+
* --json mode for session and token tracking
|
|
41
54
|
* WARNING: This bypasses all sandboxing - use only in controlled environments
|
|
42
55
|
*/
|
|
43
|
-
const DEFAULT_INVOCATION_TEMPLATE = 'cat {prompt_file} | {cli} exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check -';
|
|
56
|
+
const DEFAULT_INVOCATION_TEMPLATE = 'cat {prompt_file} | {cli} exec {session_id} --model {model} --json --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check -';
|
|
44
57
|
/**
|
|
45
58
|
* Codex AI Provider implementation
|
|
46
59
|
*/
|
|
47
60
|
class CodexProvider extends interface_js_1.BaseAIProvider {
|
|
48
61
|
name = 'codex';
|
|
49
|
-
displayName = 'OpenAI (
|
|
62
|
+
displayName = 'OpenAI (codex)';
|
|
50
63
|
/**
|
|
51
64
|
* Write prompt to a temporary file
|
|
52
65
|
*/
|
|
@@ -90,7 +103,7 @@ class CodexProvider extends interface_js_1.BaseAIProvider {
|
|
|
90
103
|
const promptFile = options.promptFile ?? this.writePromptFile(prompt);
|
|
91
104
|
const createdTempFile = !options.promptFile;
|
|
92
105
|
try {
|
|
93
|
-
return await this.invokeWithFile(promptFile, options.model, timeout, cwd, streamOutput, onActivity);
|
|
106
|
+
return await this.invokeWithFile(promptFile, options.model, timeout, cwd, streamOutput, onActivity, options.resumeSessionId);
|
|
94
107
|
}
|
|
95
108
|
finally {
|
|
96
109
|
if (createdTempFile) {
|
|
@@ -98,24 +111,69 @@ class CodexProvider extends interface_js_1.BaseAIProvider {
|
|
|
98
111
|
}
|
|
99
112
|
}
|
|
100
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Parse a JSONL line from Codex CLI and extract relevant information
|
|
116
|
+
*/
|
|
117
|
+
parseJsonlLine(line) {
|
|
118
|
+
try {
|
|
119
|
+
const event = JSON.parse(line);
|
|
120
|
+
// Thread started — capture thread_id as session ID
|
|
121
|
+
if (event.type === 'thread.started' && event.thread_id) {
|
|
122
|
+
return { sessionId: event.thread_id };
|
|
123
|
+
}
|
|
124
|
+
// Item completed — extract text content if it's an agent message
|
|
125
|
+
if (event.type === 'item.completed' && event.item?.type === 'agent_message') {
|
|
126
|
+
return { text: event.item.text };
|
|
127
|
+
}
|
|
128
|
+
// Tool call — from item.started or item.completed
|
|
129
|
+
if (event.item?.type === 'tool_call') {
|
|
130
|
+
return { tool: event.item.name };
|
|
131
|
+
}
|
|
132
|
+
// Turn completed — capture token usage
|
|
133
|
+
if (event.type === 'turn.completed' && event.usage) {
|
|
134
|
+
return {
|
|
135
|
+
tokenUsage: {
|
|
136
|
+
inputTokens: event.usage.input_tokens,
|
|
137
|
+
outputTokens: event.usage.output_tokens,
|
|
138
|
+
cachedInputTokens: event.usage.cached_input_tokens,
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Not JSON — fallback to plain text if not empty
|
|
145
|
+
if (line.trim())
|
|
146
|
+
return { text: line };
|
|
147
|
+
}
|
|
148
|
+
return {};
|
|
149
|
+
}
|
|
101
150
|
/**
|
|
102
151
|
* Invoke Codex CLI with a prompt file using the invocation template
|
|
103
152
|
*/
|
|
104
|
-
invokeWithFile(promptFile, model, timeout, cwd, streamOutput, onActivity) {
|
|
153
|
+
invokeWithFile(promptFile, model, timeout, cwd, streamOutput, onActivity, resumeSessionId) {
|
|
154
|
+
// Set up isolated HOME
|
|
155
|
+
const isolatedHome = this.setupIsolatedHome('.codex', ['auth.json', 'config.yaml', 'state.json']);
|
|
105
156
|
return new Promise((resolve) => {
|
|
106
157
|
const startTime = Date.now();
|
|
107
158
|
let stdout = '';
|
|
108
159
|
let stderr = '';
|
|
109
160
|
let timedOut = false;
|
|
110
|
-
let
|
|
161
|
+
let stdoutLineBuffer = '';
|
|
162
|
+
let sessionId = resumeSessionId;
|
|
163
|
+
let tokenUsage;
|
|
111
164
|
let expectingToolCmd = false;
|
|
165
|
+
const isJson = this.getInvocationTemplate().includes('--json');
|
|
112
166
|
// Build command from invocation template
|
|
113
|
-
|
|
167
|
+
// Convert resumeSessionId to subcommand if present
|
|
168
|
+
const sessionIdSubcmd = resumeSessionId ? `resume ${resumeSessionId}` : '';
|
|
169
|
+
const command = this.buildCommand(promptFile, model, sessionIdSubcmd);
|
|
114
170
|
// Spawn using shell to handle the command template
|
|
115
171
|
const child = (0, node_child_process_1.spawn)(command, {
|
|
116
172
|
shell: true,
|
|
117
173
|
cwd,
|
|
118
|
-
env: this.getSanitizedCliEnv(
|
|
174
|
+
env: this.getSanitizedCliEnv({
|
|
175
|
+
HOME: isolatedHome,
|
|
176
|
+
}),
|
|
119
177
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
120
178
|
});
|
|
121
179
|
// Close stdin immediately to prevent CLI tools from hanging
|
|
@@ -145,39 +203,66 @@ class CodexProvider extends interface_js_1.BaseAIProvider {
|
|
|
145
203
|
};
|
|
146
204
|
resetActivityTimer();
|
|
147
205
|
child.stdout?.on('data', (data) => {
|
|
148
|
-
const
|
|
149
|
-
if (stdout.length < MAX_BUFFER)
|
|
150
|
-
stdout += text;
|
|
206
|
+
const raw = data.toString();
|
|
151
207
|
resetActivityTimer();
|
|
152
|
-
if (
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
208
|
+
if (!isJson) {
|
|
209
|
+
// Plain text mode (legacy or custom template)
|
|
210
|
+
if (stdout.length < MAX_BUFFER)
|
|
211
|
+
stdout += raw;
|
|
212
|
+
if (streamOutput)
|
|
213
|
+
process.stdout.write(raw);
|
|
214
|
+
if (!onActivity)
|
|
215
|
+
return;
|
|
216
|
+
// Best-effort parsing for Codex CLI tool execution markers
|
|
217
|
+
stdoutLineBuffer += raw;
|
|
218
|
+
while (true) {
|
|
219
|
+
const nl = stdoutLineBuffer.indexOf('\n');
|
|
220
|
+
if (nl === -1)
|
|
221
|
+
break;
|
|
222
|
+
const line = stdoutLineBuffer.slice(0, nl);
|
|
223
|
+
stdoutLineBuffer = stdoutLineBuffer.slice(nl + 1);
|
|
224
|
+
if (expectingToolCmd) {
|
|
225
|
+
const cmd = line.trim();
|
|
226
|
+
if (cmd)
|
|
227
|
+
onActivity({ type: 'tool', cmd });
|
|
228
|
+
expectingToolCmd = false;
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
if (line === 'exec') {
|
|
232
|
+
expectingToolCmd = true;
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
onActivity({ type: 'output', stream: 'stdout', msg: `${line}\n` });
|
|
236
|
+
}
|
|
156
237
|
return;
|
|
157
|
-
|
|
158
|
-
//
|
|
159
|
-
|
|
160
|
-
// <command>
|
|
161
|
-
// We interpret that as a tool event and otherwise forward text as output.
|
|
162
|
-
stdoutParseBuffer += text;
|
|
238
|
+
}
|
|
239
|
+
// JSONL mode: parse JSONL events
|
|
240
|
+
stdoutLineBuffer += raw;
|
|
163
241
|
while (true) {
|
|
164
|
-
const nl =
|
|
242
|
+
const nl = stdoutLineBuffer.indexOf('\n');
|
|
165
243
|
if (nl === -1)
|
|
166
244
|
break;
|
|
167
|
-
const line =
|
|
168
|
-
|
|
169
|
-
if (
|
|
170
|
-
const cmd = line.trim();
|
|
171
|
-
if (cmd)
|
|
172
|
-
onActivity({ type: 'tool', cmd });
|
|
173
|
-
expectingToolCmd = false;
|
|
245
|
+
const line = stdoutLineBuffer.slice(0, nl).trim();
|
|
246
|
+
stdoutLineBuffer = stdoutLineBuffer.slice(nl + 1);
|
|
247
|
+
if (!line)
|
|
174
248
|
continue;
|
|
249
|
+
const parsed = this.parseJsonlLine(line);
|
|
250
|
+
if (parsed.sessionId)
|
|
251
|
+
sessionId = parsed.sessionId;
|
|
252
|
+
if (parsed.tokenUsage)
|
|
253
|
+
tokenUsage = { ...tokenUsage, ...parsed.tokenUsage };
|
|
254
|
+
if (parsed.text) {
|
|
255
|
+
if (stdout.length < MAX_BUFFER)
|
|
256
|
+
stdout += parsed.text;
|
|
257
|
+
onActivity?.({ type: 'output', stream: 'stdout', msg: parsed.text });
|
|
258
|
+
if (streamOutput)
|
|
259
|
+
process.stdout.write(parsed.text);
|
|
175
260
|
}
|
|
176
|
-
if (
|
|
177
|
-
|
|
178
|
-
|
|
261
|
+
else if (parsed.tool) {
|
|
262
|
+
onActivity?.({ type: 'tool', cmd: parsed.tool });
|
|
263
|
+
if (streamOutput)
|
|
264
|
+
process.stdout.write(`[tool: ${parsed.tool}]\n`);
|
|
179
265
|
}
|
|
180
|
-
onActivity({ type: 'output', stream: 'stdout', msg: `${line}\n` });
|
|
181
266
|
}
|
|
182
267
|
});
|
|
183
268
|
child.stderr?.on('data', (data) => {
|
|
@@ -193,17 +278,24 @@ class CodexProvider extends interface_js_1.BaseAIProvider {
|
|
|
193
278
|
child.on('close', (code) => {
|
|
194
279
|
clearTimeout(activityTimer);
|
|
195
280
|
const duration = Date.now() - startTime;
|
|
196
|
-
if (onActivity &&
|
|
281
|
+
if (onActivity && stdoutLineBuffer && !isJson) {
|
|
197
282
|
// Flush remaining unterminated line.
|
|
198
283
|
if (expectingToolCmd) {
|
|
199
|
-
const cmd =
|
|
284
|
+
const cmd = stdoutLineBuffer.trim();
|
|
200
285
|
if (cmd)
|
|
201
286
|
onActivity({ type: 'tool', cmd });
|
|
202
287
|
}
|
|
203
288
|
else {
|
|
204
|
-
onActivity({ type: 'output', stream: 'stdout', msg:
|
|
289
|
+
onActivity({ type: 'output', stream: 'stdout', msg: stdoutLineBuffer });
|
|
205
290
|
}
|
|
206
291
|
}
|
|
292
|
+
// Cleanup isolated home
|
|
293
|
+
try {
|
|
294
|
+
(0, node_fs_1.rmSync)(isolatedHome, { recursive: true, force: true });
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
// Ignore cleanup errors
|
|
298
|
+
}
|
|
207
299
|
resolve({
|
|
208
300
|
success: code === 0 && !timedOut,
|
|
209
301
|
exitCode: code ?? 1,
|
|
@@ -211,11 +303,20 @@ class CodexProvider extends interface_js_1.BaseAIProvider {
|
|
|
211
303
|
stderr,
|
|
212
304
|
duration,
|
|
213
305
|
timedOut,
|
|
306
|
+
sessionId,
|
|
307
|
+
tokenUsage,
|
|
214
308
|
});
|
|
215
309
|
});
|
|
216
310
|
child.on('error', (error) => {
|
|
217
311
|
clearTimeout(activityTimer);
|
|
218
312
|
const duration = Date.now() - startTime;
|
|
313
|
+
// Cleanup isolated home
|
|
314
|
+
try {
|
|
315
|
+
(0, node_fs_1.rmSync)(isolatedHome, { recursive: true, force: true });
|
|
316
|
+
}
|
|
317
|
+
catch {
|
|
318
|
+
// Ignore cleanup errors
|
|
319
|
+
}
|
|
219
320
|
resolve({
|
|
220
321
|
success: false,
|
|
221
322
|
exitCode: 1,
|
|
@@ -223,6 +324,8 @@ class CodexProvider extends interface_js_1.BaseAIProvider {
|
|
|
223
324
|
stderr: error.message,
|
|
224
325
|
duration,
|
|
225
326
|
timedOut: false,
|
|
327
|
+
sessionId,
|
|
328
|
+
tokenUsage,
|
|
226
329
|
});
|
|
227
330
|
});
|
|
228
331
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/providers/codex.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/providers/codex.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 GeminiProvider extends BaseAIProvider {
|
|
10
10
|
readonly name = "gemini";
|
|
11
|
-
readonly displayName = "Google
|
|
11
|
+
readonly displayName = "Google (gemini)";
|
|
12
12
|
/**
|
|
13
13
|
* Write prompt to a temporary file
|
|
14
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,SAAS,EAEf,MAAM,gBAAgB,CAAC;AA+CxB;;GAEG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,qBAAqB;IAEzC;;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;IAgC3E;;OAEG;IACH;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4C3B,OAAO,CAAC,cAAc;IAoKtB;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAiBrC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;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,oBAAoB,IAAI,cAAc,CAErD"}
|
package/dist/providers/gemini.js
CHANGED
|
@@ -48,15 +48,16 @@ const DEFAULT_MODELS = {
|
|
|
48
48
|
const DEFAULT_TIMEOUT = 900_000;
|
|
49
49
|
/**
|
|
50
50
|
* Default invocation template for Gemini CLI
|
|
51
|
-
* Uses
|
|
51
|
+
* Uses --prompt flag for non-interactive mode with stream-json for realtime output
|
|
52
|
+
* --output-format=stream-json is more stable than space-separated flags
|
|
52
53
|
*/
|
|
53
|
-
const DEFAULT_INVOCATION_TEMPLATE = '{cli} -
|
|
54
|
+
const DEFAULT_INVOCATION_TEMPLATE = '{cli} --output-format=stream-json -m {model} {session_id} --prompt "$(cat {prompt_file})"';
|
|
54
55
|
/**
|
|
55
56
|
* Gemini AI Provider implementation
|
|
56
57
|
*/
|
|
57
58
|
class GeminiProvider extends interface_js_1.BaseAIProvider {
|
|
58
59
|
name = 'gemini';
|
|
59
|
-
displayName = 'Google
|
|
60
|
+
displayName = 'Google (gemini)';
|
|
60
61
|
/**
|
|
61
62
|
* Write prompt to a temporary file
|
|
62
63
|
*/
|
|
@@ -100,7 +101,7 @@ class GeminiProvider extends interface_js_1.BaseAIProvider {
|
|
|
100
101
|
const promptFile = options.promptFile ?? this.writePromptFile(prompt);
|
|
101
102
|
const createdTempFile = !options.promptFile;
|
|
102
103
|
try {
|
|
103
|
-
return await this.invokeWithFile(promptFile, options.model, timeout, cwd, streamOutput, onActivity);
|
|
104
|
+
return await this.invokeWithFile(promptFile, options.model, timeout, cwd, streamOutput, onActivity, options.resumeSessionId);
|
|
104
105
|
}
|
|
105
106
|
finally {
|
|
106
107
|
if (createdTempFile) {
|
|
@@ -117,6 +118,10 @@ class GeminiProvider extends interface_js_1.BaseAIProvider {
|
|
|
117
118
|
parseStreamJsonLine(line) {
|
|
118
119
|
try {
|
|
119
120
|
const event = JSON.parse(line);
|
|
121
|
+
// Session ID is in the 'init' event
|
|
122
|
+
if (event.type === 'init' && event.session_id) {
|
|
123
|
+
return { sessionId: event.session_id };
|
|
124
|
+
}
|
|
120
125
|
// Assistant message with delta text
|
|
121
126
|
if (event.type === 'message' && event.role === 'assistant' && event.content) {
|
|
122
127
|
return { text: event.content };
|
|
@@ -125,9 +130,17 @@ class GeminiProvider extends interface_js_1.BaseAIProvider {
|
|
|
125
130
|
if (event.type === 'tool_call' || event.type === 'function_call') {
|
|
126
131
|
return { tool: event.name || event.function?.name || 'tool' };
|
|
127
132
|
}
|
|
128
|
-
// Final result
|
|
133
|
+
// Final result includes token usage stats
|
|
129
134
|
if (event.type === 'result') {
|
|
130
|
-
|
|
135
|
+
const usage = event.stats ? {
|
|
136
|
+
inputTokens: event.stats.input_tokens,
|
|
137
|
+
outputTokens: event.stats.output_tokens,
|
|
138
|
+
cachedInputTokens: event.stats.cached,
|
|
139
|
+
} : undefined;
|
|
140
|
+
return {
|
|
141
|
+
result: event.content || '',
|
|
142
|
+
tokenUsage: usage,
|
|
143
|
+
};
|
|
131
144
|
}
|
|
132
145
|
}
|
|
133
146
|
catch {
|
|
@@ -136,21 +149,30 @@ class GeminiProvider extends interface_js_1.BaseAIProvider {
|
|
|
136
149
|
}
|
|
137
150
|
return {};
|
|
138
151
|
}
|
|
139
|
-
invokeWithFile(promptFile, model, timeout, cwd, streamOutput, onActivity) {
|
|
152
|
+
invokeWithFile(promptFile, model, timeout, cwd, streamOutput, onActivity, resumeSessionId) {
|
|
153
|
+
// Set up isolated HOME
|
|
154
|
+
const isolatedHome = this.setupIsolatedHome('.gemini', ['config.json']);
|
|
155
|
+
// Also isolate gcloud config if present in the same isolated home
|
|
156
|
+
this.setupIsolatedHome('.config/gcloud', ['active_config', 'credentials.db', 'configurations/config_default'], isolatedHome);
|
|
140
157
|
return new Promise((resolve) => {
|
|
141
158
|
const startTime = Date.now();
|
|
142
159
|
let stdout = '';
|
|
143
160
|
let stderr = '';
|
|
144
161
|
let timedOut = false;
|
|
145
162
|
let stdoutLineBuffer = '';
|
|
163
|
+
let sessionId = resumeSessionId;
|
|
164
|
+
let tokenUsage;
|
|
146
165
|
const isStreamJson = this.getInvocationTemplate().includes('stream-json');
|
|
147
166
|
// Build command from invocation template
|
|
148
|
-
const
|
|
167
|
+
const sessionIdFlag = resumeSessionId ? `--resume ${resumeSessionId}` : '';
|
|
168
|
+
const command = this.buildCommand(promptFile, model, sessionIdFlag);
|
|
149
169
|
// Spawn using shell to handle the command template
|
|
150
170
|
const child = (0, node_child_process_1.spawn)(command, {
|
|
151
171
|
shell: true,
|
|
152
172
|
cwd,
|
|
153
|
-
env: this.getSanitizedCliEnv(
|
|
173
|
+
env: this.getSanitizedCliEnv({
|
|
174
|
+
HOME: isolatedHome,
|
|
175
|
+
}),
|
|
154
176
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
155
177
|
});
|
|
156
178
|
// Close stdin immediately to prevent CLI tools from hanging
|
|
@@ -201,6 +223,10 @@ class GeminiProvider extends interface_js_1.BaseAIProvider {
|
|
|
201
223
|
if (!line)
|
|
202
224
|
continue;
|
|
203
225
|
const parsed = this.parseStreamJsonLine(line);
|
|
226
|
+
if (parsed.sessionId)
|
|
227
|
+
sessionId = parsed.sessionId;
|
|
228
|
+
if (parsed.tokenUsage)
|
|
229
|
+
tokenUsage = parsed.tokenUsage;
|
|
204
230
|
if (parsed.result !== undefined) {
|
|
205
231
|
if (parsed.result)
|
|
206
232
|
stdout = parsed.result;
|
|
@@ -232,6 +258,13 @@ class GeminiProvider extends interface_js_1.BaseAIProvider {
|
|
|
232
258
|
child.on('close', (code) => {
|
|
233
259
|
clearTimeout(activityTimer);
|
|
234
260
|
const duration = Date.now() - startTime;
|
|
261
|
+
// Cleanup isolated home
|
|
262
|
+
try {
|
|
263
|
+
(0, node_fs_1.rmSync)(isolatedHome, { recursive: true, force: true });
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
// Ignore cleanup errors
|
|
267
|
+
}
|
|
235
268
|
resolve({
|
|
236
269
|
success: code === 0 && !timedOut,
|
|
237
270
|
exitCode: code ?? 1,
|
|
@@ -239,11 +272,20 @@ class GeminiProvider extends interface_js_1.BaseAIProvider {
|
|
|
239
272
|
stderr,
|
|
240
273
|
duration,
|
|
241
274
|
timedOut,
|
|
275
|
+
sessionId,
|
|
276
|
+
tokenUsage,
|
|
242
277
|
});
|
|
243
278
|
});
|
|
244
279
|
child.on('error', (error) => {
|
|
245
280
|
clearTimeout(activityTimer);
|
|
246
281
|
const duration = Date.now() - startTime;
|
|
282
|
+
// Cleanup isolated home
|
|
283
|
+
try {
|
|
284
|
+
(0, node_fs_1.rmSync)(isolatedHome, { recursive: true, force: true });
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
// Ignore cleanup errors
|
|
288
|
+
}
|
|
247
289
|
resolve({
|
|
248
290
|
success: false,
|
|
249
291
|
exitCode: 1,
|
|
@@ -251,6 +293,8 @@ class GeminiProvider extends interface_js_1.BaseAIProvider {
|
|
|
251
293
|
stderr: error.message,
|
|
252
294
|
duration,
|
|
253
295
|
timedOut: false,
|
|
296
|
+
sessionId,
|
|
297
|
+
tokenUsage,
|
|
254
298
|
});
|
|
255
299
|
});
|
|
256
300
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,8 @@ export interface InvokeOptions {
|
|
|
25
25
|
* Providers should emit lightweight JSON-serializable events as work progresses.
|
|
26
26
|
*/
|
|
27
27
|
onActivity?: (activity: InvocationActivity) => void;
|
|
28
|
+
/** Resume a previous session instead of starting fresh */
|
|
29
|
+
resumeSessionId?: string;
|
|
28
30
|
}
|
|
29
31
|
/**
|
|
30
32
|
* Activity entry emitted during a provider invocation.
|
|
@@ -33,6 +35,23 @@ export interface InvokeOptions {
|
|
|
33
35
|
export type InvocationActivity = Record<string, unknown> & {
|
|
34
36
|
type: string;
|
|
35
37
|
};
|
|
38
|
+
/**
|
|
39
|
+
* Token usage information
|
|
40
|
+
*/
|
|
41
|
+
export interface TokenUsage {
|
|
42
|
+
/** Total input tokens */
|
|
43
|
+
inputTokens: number;
|
|
44
|
+
/** Total output tokens */
|
|
45
|
+
outputTokens: number;
|
|
46
|
+
/** Subset served from server-side cache (Codex, Gemini) */
|
|
47
|
+
cachedInputTokens?: number;
|
|
48
|
+
/** Tokens served from cache (Claude) */
|
|
49
|
+
cacheReadTokens?: number;
|
|
50
|
+
/** Tokens written to cache (Claude) */
|
|
51
|
+
cacheCreationTokens?: number;
|
|
52
|
+
/** Total cost for the invocation (Claude, Vibe) */
|
|
53
|
+
totalCostUsd?: number;
|
|
54
|
+
}
|
|
36
55
|
/**
|
|
37
56
|
* Result of an AI provider invocation
|
|
38
57
|
*/
|
|
@@ -49,6 +68,10 @@ export interface InvokeResult {
|
|
|
49
68
|
duration: number;
|
|
50
69
|
/** Whether the process was killed due to timeout */
|
|
51
70
|
timedOut: boolean;
|
|
71
|
+
/** Session ID from the provider CLI (if available) */
|
|
72
|
+
sessionId?: string;
|
|
73
|
+
/** Token usage statistics (if available) */
|
|
74
|
+
tokenUsage?: TokenUsage;
|
|
52
75
|
}
|
|
53
76
|
/**
|
|
54
77
|
* Error types that can be classified from provider output
|
|
@@ -96,6 +119,19 @@ export interface IAIProvider {
|
|
|
96
119
|
* @returns Promise resolving to the invocation result
|
|
97
120
|
*/
|
|
98
121
|
invoke(prompt: string, options: InvokeOptions): Promise<InvokeResult>;
|
|
122
|
+
/**
|
|
123
|
+
* Resume a previous session with a new prompt
|
|
124
|
+
* @param sessionId The ID of the session to resume
|
|
125
|
+
* @param prompt The prompt text to send
|
|
126
|
+
* @param options Invocation options
|
|
127
|
+
* @returns Promise resolving to the invocation result
|
|
128
|
+
*/
|
|
129
|
+
resume(sessionId: string, prompt: string, options: InvokeOptions): Promise<InvokeResult>;
|
|
130
|
+
/**
|
|
131
|
+
* Initialize the provider (e.g., fetch dynamic models)
|
|
132
|
+
* @returns Promise resolving when initialization is complete
|
|
133
|
+
*/
|
|
134
|
+
initialize?(): Promise<void>;
|
|
99
135
|
/**
|
|
100
136
|
* Check if this provider is available (CLI installed and accessible)
|
|
101
137
|
* @returns Promise resolving to true if available
|
|
@@ -167,6 +203,15 @@ export declare abstract class BaseAIProvider implements IAIProvider {
|
|
|
167
203
|
protected invocationTemplate: string | undefined;
|
|
168
204
|
abstract invoke(prompt: string, options: InvokeOptions): Promise<InvokeResult>;
|
|
169
205
|
abstract isAvailable(): Promise<boolean>;
|
|
206
|
+
/**
|
|
207
|
+
* Initialize the provider (e.g., fetch dynamic models).
|
|
208
|
+
* Default implementation does nothing.
|
|
209
|
+
*/
|
|
210
|
+
initialize(): Promise<void>;
|
|
211
|
+
/**
|
|
212
|
+
* Default implementation of resume calls invoke with resumeSessionId in options
|
|
213
|
+
*/
|
|
214
|
+
resume(sessionId: string, prompt: string, options: InvokeOptions): Promise<InvokeResult>;
|
|
170
215
|
abstract listModels(): string[];
|
|
171
216
|
abstract getModelInfo(): ModelInfo[];
|
|
172
217
|
abstract getDefaultModel(role: 'orchestrator' | 'coder' | 'reviewer'): string | undefined;
|
|
@@ -192,12 +237,28 @@ export declare abstract class BaseAIProvider implements IAIProvider {
|
|
|
192
237
|
* Build the command from the invocation template
|
|
193
238
|
* @param promptFile Path to the prompt file
|
|
194
239
|
* @param model Model identifier
|
|
240
|
+
* @param sessionId Optional session ID for resumption
|
|
195
241
|
* @returns Command string ready for execution
|
|
196
242
|
*/
|
|
197
|
-
protected buildCommand(promptFile: string, model: string): string;
|
|
243
|
+
protected buildCommand(promptFile: string, model: string, sessionId?: string): string;
|
|
198
244
|
/**
|
|
199
245
|
* Build child process env for provider CLI invocation.
|
|
246
|
+
*
|
|
247
|
+
* Strips known provider API-key env vars so the spawned CLI
|
|
248
|
+
* falls back to its own OAuth / login credentials instead of
|
|
249
|
+
* accidentally using Steroids' internal keys (e.g.
|
|
250
|
+
* STEROIDS_ANTHROPIC_API_KEY leaking as ANTHROPIC_API_KEY).
|
|
200
251
|
*/
|
|
201
252
|
protected getSanitizedCliEnv(overrides?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
253
|
+
/**
|
|
254
|
+
* Set up an isolated temporary home directory for a provider CLI.
|
|
255
|
+
* Copies/symlinks essential auth files from the real home to the isolated one.
|
|
256
|
+
*
|
|
257
|
+
* @param providerDir The provider-specific config directory (e.g. '.claude', '.gemini')
|
|
258
|
+
* @param authFiles Array of critical auth/config filenames to preserve (e.g. ['config.json', 'state.json'])
|
|
259
|
+
* @param baseDir Optional pre-existing isolated home directory to use
|
|
260
|
+
* @returns Path to the isolated home directory
|
|
261
|
+
*/
|
|
262
|
+
protected setupIsolatedHome(providerDir: string, authFiles: string[], baseDir?: string): string;
|
|
202
263
|
}
|
|
203
264
|
//# sourceMappingURL=interface.d.ts.map
|