@aiagentflow/cli 0.3.0 → 0.4.1
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/agents/base.d.ts +8 -1
- package/dist/agents/base.d.ts.map +1 -1
- package/dist/agents/base.js +46 -0
- package/dist/agents/base.js.map +1 -1
- package/dist/agents/types.d.ts +7 -0
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/types.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +1 -3
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +73 -42
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +2 -0
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/utils/model-picker.d.ts +20 -0
- package/dist/cli/utils/model-picker.d.ts.map +1 -0
- package/dist/cli/utils/model-picker.js +97 -0
- package/dist/cli/utils/model-picker.js.map +1 -0
- package/dist/cli/utils/stream-renderer.d.ts +21 -0
- package/dist/cli/utils/stream-renderer.d.ts.map +1 -0
- package/dist/cli/utils/stream-renderer.js +57 -0
- package/dist/cli/utils/stream-renderer.js.map +1 -0
- package/dist/core/config/schema.d.ts +142 -75
- package/dist/core/config/schema.d.ts.map +1 -1
- package/dist/core/config/schema.js +11 -1
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/workflow/runner.d.ts +2 -0
- package/dist/core/workflow/runner.d.ts.map +1 -1
- package/dist/core/workflow/runner.js +46 -8
- package/dist/core/workflow/runner.js.map +1 -1
- package/dist/prompts/library.js +24 -24
- package/dist/prompts/library.js.map +1 -1
- package/dist/providers/gemini.d.ts +58 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +254 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/metadata.d.ts +18 -0
- package/dist/providers/metadata.d.ts.map +1 -0
- package/dist/providers/metadata.js +32 -0
- package/dist/providers/metadata.js.map +1 -0
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +9 -1
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/types.d.ts +1 -1
- package/dist/providers/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Gemini provider adapter.
|
|
3
|
+
*
|
|
4
|
+
* Uses the Gemini REST API directly via fetch() — no SDK dependency.
|
|
5
|
+
* API key is passed as a query parameter (not in headers).
|
|
6
|
+
*
|
|
7
|
+
* Dependency direction: gemini.ts → providers/types.ts, core/errors.ts
|
|
8
|
+
* Used by: providers/registry.ts
|
|
9
|
+
*/
|
|
10
|
+
import { ProviderError } from '../core/errors.js';
|
|
11
|
+
import { logger } from '../utils/logger.js';
|
|
12
|
+
/** Default Gemini API settings. */
|
|
13
|
+
const DEFAULTS = {
|
|
14
|
+
baseUrl: 'https://generativelanguage.googleapis.com',
|
|
15
|
+
model: 'gemini-2.0-flash',
|
|
16
|
+
maxTokens: 4096,
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Google Gemini provider implementation.
|
|
20
|
+
*
|
|
21
|
+
* Implements the LLMProvider interface using the Gemini generateContent API.
|
|
22
|
+
* System instructions are extracted from messages and sent via a dedicated field.
|
|
23
|
+
* API key is sent as a query parameter — URLs are not logged to avoid key leaks.
|
|
24
|
+
*/
|
|
25
|
+
export class GeminiProvider {
|
|
26
|
+
name = 'gemini';
|
|
27
|
+
apiKey;
|
|
28
|
+
baseUrl;
|
|
29
|
+
constructor(config) {
|
|
30
|
+
if (!config.apiKey) {
|
|
31
|
+
throw new ProviderError('Gemini API key is required', { provider: 'gemini' });
|
|
32
|
+
}
|
|
33
|
+
this.apiKey = config.apiKey;
|
|
34
|
+
this.baseUrl = config.baseUrl ?? DEFAULTS.baseUrl;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Send a non-streaming chat completion request.
|
|
38
|
+
*/
|
|
39
|
+
async chat(messages, options) {
|
|
40
|
+
const model = options?.model ?? DEFAULTS.model;
|
|
41
|
+
const { contents, systemInstruction } = this.prepareMessages(messages, options);
|
|
42
|
+
const body = { contents };
|
|
43
|
+
if (systemInstruction) {
|
|
44
|
+
body.system_instruction = systemInstruction;
|
|
45
|
+
}
|
|
46
|
+
const generationConfig = {};
|
|
47
|
+
if (options?.maxTokens !== undefined) {
|
|
48
|
+
generationConfig.maxOutputTokens = options.maxTokens;
|
|
49
|
+
}
|
|
50
|
+
if (options?.temperature !== undefined) {
|
|
51
|
+
generationConfig.temperature = options.temperature;
|
|
52
|
+
}
|
|
53
|
+
if (options?.stopSequences?.length) {
|
|
54
|
+
generationConfig.stopSequences = options.stopSequences;
|
|
55
|
+
}
|
|
56
|
+
if (Object.keys(generationConfig).length > 0) {
|
|
57
|
+
body.generationConfig = generationConfig;
|
|
58
|
+
}
|
|
59
|
+
logger.debug(`Gemini chat request: model=${model}, contents=${contents.length}`);
|
|
60
|
+
const response = await this.request(`/v1beta/models/${model}:generateContent`, body);
|
|
61
|
+
const candidates = response.candidates;
|
|
62
|
+
const firstCandidate = candidates?.[0];
|
|
63
|
+
const content = firstCandidate?.content;
|
|
64
|
+
const parts = content?.parts;
|
|
65
|
+
const text = parts?.map((p) => p.text ?? '').join('') ?? '';
|
|
66
|
+
const finishReason = firstCandidate?.finishReason ?? 'unknown';
|
|
67
|
+
const usage = this.extractUsage(response);
|
|
68
|
+
return {
|
|
69
|
+
content: text,
|
|
70
|
+
model,
|
|
71
|
+
usage,
|
|
72
|
+
finishReason,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Send a streaming chat completion request.
|
|
77
|
+
*/
|
|
78
|
+
async *stream(messages, options) {
|
|
79
|
+
const model = options?.model ?? DEFAULTS.model;
|
|
80
|
+
const { contents, systemInstruction } = this.prepareMessages(messages, options);
|
|
81
|
+
const body = { contents };
|
|
82
|
+
if (systemInstruction) {
|
|
83
|
+
body.system_instruction = systemInstruction;
|
|
84
|
+
}
|
|
85
|
+
const generationConfig = {};
|
|
86
|
+
if (options?.maxTokens !== undefined) {
|
|
87
|
+
generationConfig.maxOutputTokens = options.maxTokens;
|
|
88
|
+
}
|
|
89
|
+
if (options?.temperature !== undefined) {
|
|
90
|
+
generationConfig.temperature = options.temperature;
|
|
91
|
+
}
|
|
92
|
+
if (Object.keys(generationConfig).length > 0) {
|
|
93
|
+
body.generationConfig = generationConfig;
|
|
94
|
+
}
|
|
95
|
+
const url = `${this.baseUrl}/v1beta/models/${model}:streamGenerateContent?alt=sse&key=${this.apiKey}`;
|
|
96
|
+
const response = await fetch(url, {
|
|
97
|
+
method: 'POST',
|
|
98
|
+
headers: { 'Content-Type': 'application/json' },
|
|
99
|
+
body: JSON.stringify(body),
|
|
100
|
+
});
|
|
101
|
+
if (!response.ok) {
|
|
102
|
+
const errorBody = await response.text();
|
|
103
|
+
throw new ProviderError(`Gemini streaming request failed: ${response.status} ${response.statusText}`, { status: response.status, body: errorBody, provider: 'gemini' });
|
|
104
|
+
}
|
|
105
|
+
if (!response.body) {
|
|
106
|
+
throw new ProviderError('Gemini response has no body', { provider: 'gemini' });
|
|
107
|
+
}
|
|
108
|
+
const reader = response.body.getReader();
|
|
109
|
+
const decoder = new TextDecoder();
|
|
110
|
+
let buffer = '';
|
|
111
|
+
try {
|
|
112
|
+
while (true) {
|
|
113
|
+
const { done, value } = await reader.read();
|
|
114
|
+
if (done)
|
|
115
|
+
break;
|
|
116
|
+
buffer += decoder.decode(value, { stream: true });
|
|
117
|
+
const lines = buffer.split('\n');
|
|
118
|
+
buffer = lines.pop() ?? '';
|
|
119
|
+
for (const line of lines) {
|
|
120
|
+
if (!line.startsWith('data: '))
|
|
121
|
+
continue;
|
|
122
|
+
const data = line.slice(6).trim();
|
|
123
|
+
if (!data)
|
|
124
|
+
continue;
|
|
125
|
+
try {
|
|
126
|
+
const event = JSON.parse(data);
|
|
127
|
+
const candidates = event.candidates;
|
|
128
|
+
const parts = candidates?.[0]?.content?.parts;
|
|
129
|
+
const text = parts?.map((p) => p.text ?? '').join('') ?? '';
|
|
130
|
+
if (text) {
|
|
131
|
+
yield { content: text, done: false };
|
|
132
|
+
}
|
|
133
|
+
const finishReason = candidates?.[0]?.finishReason;
|
|
134
|
+
if (finishReason && finishReason !== 'STOP') {
|
|
135
|
+
yield { content: '', done: true };
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
if (finishReason === 'STOP') {
|
|
139
|
+
yield { content: '', done: true };
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Skip unparseable lines
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
finally {
|
|
150
|
+
reader.releaseLock();
|
|
151
|
+
}
|
|
152
|
+
yield { content: '', done: true };
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* List available models from the Gemini API.
|
|
156
|
+
*/
|
|
157
|
+
async listModels() {
|
|
158
|
+
try {
|
|
159
|
+
const url = `${this.baseUrl}/v1beta/models?key=${this.apiKey}`;
|
|
160
|
+
const response = await fetch(url, { method: 'GET' });
|
|
161
|
+
if (!response.ok) {
|
|
162
|
+
throw new ProviderError(`Gemini models request failed: ${response.status}`, { provider: 'gemini' });
|
|
163
|
+
}
|
|
164
|
+
const body = await response.json();
|
|
165
|
+
const models = body.models ?? [];
|
|
166
|
+
return models.map((m) => ({
|
|
167
|
+
id: m.name.replace(/^models\//, ''),
|
|
168
|
+
name: m.displayName ?? m.name.replace(/^models\//, ''),
|
|
169
|
+
provider: 'gemini',
|
|
170
|
+
}));
|
|
171
|
+
}
|
|
172
|
+
catch (err) {
|
|
173
|
+
if (err instanceof ProviderError)
|
|
174
|
+
throw err;
|
|
175
|
+
throw new ProviderError(`Failed to list Gemini models: ${err instanceof Error ? err.message : String(err)}`, { provider: 'gemini' });
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Validate that the Gemini API connection is working.
|
|
180
|
+
*/
|
|
181
|
+
async validateConnection() {
|
|
182
|
+
try {
|
|
183
|
+
const url = `${this.baseUrl}/v1beta/models?key=${this.apiKey}`;
|
|
184
|
+
const response = await fetch(url, { method: 'GET' });
|
|
185
|
+
return response.ok;
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// -- Private helpers --
|
|
192
|
+
/**
|
|
193
|
+
* Build the URL for an API request, appending the API key as a query parameter.
|
|
194
|
+
* Never log the full URL to avoid leaking the API key.
|
|
195
|
+
*/
|
|
196
|
+
buildUrl(path) {
|
|
197
|
+
return `${this.baseUrl}${path}?key=${this.apiKey}`;
|
|
198
|
+
}
|
|
199
|
+
async request(path, body) {
|
|
200
|
+
const url = this.buildUrl(path);
|
|
201
|
+
let response;
|
|
202
|
+
try {
|
|
203
|
+
response = await fetch(url, {
|
|
204
|
+
method: 'POST',
|
|
205
|
+
headers: { 'Content-Type': 'application/json' },
|
|
206
|
+
body: JSON.stringify(body),
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
catch (err) {
|
|
210
|
+
throw new ProviderError(`Failed to connect to Gemini API: ${err instanceof Error ? err.message : String(err)}`, { provider: 'gemini', baseUrl: this.baseUrl });
|
|
211
|
+
}
|
|
212
|
+
if (!response.ok) {
|
|
213
|
+
const errorBody = await response.text();
|
|
214
|
+
throw new ProviderError(`Gemini API error: ${response.status} ${response.statusText}`, { status: response.status, body: errorBody, provider: 'gemini' });
|
|
215
|
+
}
|
|
216
|
+
return response.json();
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Prepare messages for the Gemini API.
|
|
220
|
+
* Gemini uses `user` and `model` roles (not `assistant`).
|
|
221
|
+
* System messages are extracted to a separate `system_instruction` field.
|
|
222
|
+
*/
|
|
223
|
+
prepareMessages(messages, options) {
|
|
224
|
+
const contents = [];
|
|
225
|
+
const systemParts = [];
|
|
226
|
+
if (options?.systemPrompt) {
|
|
227
|
+
systemParts.push(options.systemPrompt);
|
|
228
|
+
}
|
|
229
|
+
for (const msg of messages) {
|
|
230
|
+
if (msg.role === 'system') {
|
|
231
|
+
systemParts.push(msg.content);
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
const role = msg.role === 'assistant' ? 'model' : 'user';
|
|
235
|
+
contents.push({
|
|
236
|
+
role,
|
|
237
|
+
parts: [{ text: msg.content }],
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
const systemInstruction = systemParts.length > 0
|
|
241
|
+
? { parts: [{ text: systemParts.join('\n\n') }] }
|
|
242
|
+
: undefined;
|
|
243
|
+
return { contents, systemInstruction };
|
|
244
|
+
}
|
|
245
|
+
extractUsage(response) {
|
|
246
|
+
const usage = response.usageMetadata;
|
|
247
|
+
return {
|
|
248
|
+
promptTokens: usage?.promptTokenCount ?? 0,
|
|
249
|
+
completionTokens: usage?.candidatesTokenCount ?? 0,
|
|
250
|
+
totalTokens: usage?.totalTokenCount ?? 0,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=gemini.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized provider display metadata.
|
|
3
|
+
*
|
|
4
|
+
* Replaces scattered ternary chains in init.ts, doctor.ts, and registry.ts
|
|
5
|
+
* with a single source of truth for provider labels, default models, and
|
|
6
|
+
* description text used in the CLI wizard.
|
|
7
|
+
*
|
|
8
|
+
* Dependency direction: metadata.ts → providers/types.ts (leaf-ish module)
|
|
9
|
+
* Used by: cli/commands/init.ts, cli/commands/doctor.ts, providers/registry.ts
|
|
10
|
+
*/
|
|
11
|
+
import type { LLMProviderName } from './types.js';
|
|
12
|
+
/** Human-friendly labels for each provider. */
|
|
13
|
+
export declare const PROVIDER_LABELS: Record<LLMProviderName, string>;
|
|
14
|
+
/** Default model ID to use when the user does not specify one. */
|
|
15
|
+
export declare const PROVIDER_DEFAULT_MODELS: Record<LLMProviderName, string>;
|
|
16
|
+
/** Short description shown as the choice text in the init wizard's provider selector. */
|
|
17
|
+
export declare const PROVIDER_DESCRIPTIONS: Record<LLMProviderName, string>;
|
|
18
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/providers/metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,+CAA+C;AAC/C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAK3D,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAKnE,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAKjE,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized provider display metadata.
|
|
3
|
+
*
|
|
4
|
+
* Replaces scattered ternary chains in init.ts, doctor.ts, and registry.ts
|
|
5
|
+
* with a single source of truth for provider labels, default models, and
|
|
6
|
+
* description text used in the CLI wizard.
|
|
7
|
+
*
|
|
8
|
+
* Dependency direction: metadata.ts → providers/types.ts (leaf-ish module)
|
|
9
|
+
* Used by: cli/commands/init.ts, cli/commands/doctor.ts, providers/registry.ts
|
|
10
|
+
*/
|
|
11
|
+
/** Human-friendly labels for each provider. */
|
|
12
|
+
export const PROVIDER_LABELS = {
|
|
13
|
+
anthropic: 'Anthropic (Claude)',
|
|
14
|
+
gemini: 'Google Gemini',
|
|
15
|
+
ollama: 'Ollama (Local)',
|
|
16
|
+
openai: 'OpenAI (GPT)',
|
|
17
|
+
};
|
|
18
|
+
/** Default model ID to use when the user does not specify one. */
|
|
19
|
+
export const PROVIDER_DEFAULT_MODELS = {
|
|
20
|
+
anthropic: 'claude-sonnet-4-20250514',
|
|
21
|
+
gemini: 'gemini-2.0-flash',
|
|
22
|
+
ollama: 'llama3.2:latest',
|
|
23
|
+
openai: 'gpt-4o-mini',
|
|
24
|
+
};
|
|
25
|
+
/** Short description shown as the choice text in the init wizard's provider selector. */
|
|
26
|
+
export const PROVIDER_DESCRIPTIONS = {
|
|
27
|
+
anthropic: 'Anthropic (Claude) — requires API key',
|
|
28
|
+
gemini: 'Google Gemini — requires API key',
|
|
29
|
+
ollama: 'Ollama (Local Models) — free, no API key needed',
|
|
30
|
+
openai: 'OpenAI (GPT) — requires API key',
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/providers/metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAoC;IAC5D,SAAS,EAAE,oBAAoB;IAC/B,MAAM,EAAE,eAAe;IACvB,MAAM,EAAE,gBAAgB;IACxB,MAAM,EAAE,cAAc;CACzB,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,uBAAuB,GAAoC;IACpE,SAAS,EAAE,0BAA0B;IACrC,MAAM,EAAE,kBAAkB;IAC1B,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,aAAa;CACxB,CAAC;AAEF,yFAAyF;AACzF,MAAM,CAAC,MAAM,qBAAqB,GAAoC;IAClE,SAAS,EAAE,uCAAuC;IAClD,MAAM,EAAE,kCAAkC;IAC1C,MAAM,EAAE,iDAAiD;IACzD,MAAM,EAAE,iCAAiC;CAC5C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAK/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAmD9D;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,GAAG,WAAW,CAiBzF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,EAAE,CAEzD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACtC,MAAM,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAmBlC"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { AnthropicProvider } from './anthropic.js';
|
|
13
13
|
import { OllamaProvider } from './ollama.js';
|
|
14
|
+
import { GeminiProvider } from './gemini.js';
|
|
14
15
|
import { OpenAIProvider } from './openai.js';
|
|
15
16
|
import { ProviderError } from '../core/errors.js';
|
|
16
17
|
import { logger } from '../utils/logger.js';
|
|
@@ -26,6 +27,13 @@ const PROVIDER_FACTORIES = {
|
|
|
26
27
|
}
|
|
27
28
|
return new AnthropicProvider(anthropicConfig);
|
|
28
29
|
},
|
|
30
|
+
gemini: (config) => {
|
|
31
|
+
const geminiConfig = config.gemini;
|
|
32
|
+
if (!geminiConfig) {
|
|
33
|
+
throw new ProviderError('Gemini provider is not configured. Run "aiagentflow init" to set up.', { provider: 'gemini' });
|
|
34
|
+
}
|
|
35
|
+
return new GeminiProvider(geminiConfig);
|
|
36
|
+
},
|
|
29
37
|
ollama: (config) => {
|
|
30
38
|
const ollamaConfig = config.ollama;
|
|
31
39
|
return new OllamaProvider(ollamaConfig);
|
|
@@ -83,7 +91,7 @@ export async function validateAllProviders(config) {
|
|
|
83
91
|
for (const name of getSupportedProviders()) {
|
|
84
92
|
try {
|
|
85
93
|
// Only validate providers that are actually configured
|
|
86
|
-
if (
|
|
94
|
+
if (name !== 'ollama' && !config[name]) {
|
|
87
95
|
results[name] = false;
|
|
88
96
|
continue;
|
|
89
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,iBAAiB,EAAgC,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,cAAc,EAA6B,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,cAAc,EAA6B,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;;GAGG;AACH,MAAM,kBAAkB,GAAqE;IACzF,SAAS,EAAE,CAAC,MAAsB,EAAE,EAAE;QAClC,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC;QACzC,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,MAAM,IAAI,aAAa,CACnB,yEAAyE,EACzE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAC5B,CAAC;QACN,CAAC;QACD,OAAO,IAAI,iBAAiB,CAAC,eAA0C,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,EAAE,CAAC,MAAsB,EAAE,EAAE;QAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QACnC,OAAO,IAAI,cAAc,CAAC,YAAgD,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,EAAE,CAAC,MAAsB,EAAE,EAAE;QAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,MAAM,IAAI,aAAa,CACnB,sEAAsE,EACtE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CACzB,CAAC;QACN,CAAC;QACD,OAAO,IAAI,cAAc,CAAC,YAAoC,CAAC,CAAC;IACpE,CAAC;CACJ,CAAC;AAEF,mEAAmE;AACnE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAgC,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,IAAqB,EAAE,MAAsB;IACxE,sCAAsC;IACtC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,aAAa,CACnB,sBAAsB,IAAI,iBAAiB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACvF,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CACjE,CAAC;IACN,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAClC,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAC9B,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACjC,OAAO,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAsB,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,MAAsB;IAEtB,MAAM,OAAO,GAA4B,EAAE,CAAC;IAE5C,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC;YACD,uDAAuD;YACvD,IAAI,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* Used by: all provider implementations, registry, agents, workflow engine
|
|
10
10
|
*/
|
|
11
11
|
/** Supported LLM provider names. Add new providers here. */
|
|
12
|
-
export type LLMProviderName = 'anthropic' | 'ollama' | 'openai';
|
|
12
|
+
export type LLMProviderName = 'anthropic' | 'gemini' | 'ollama' | 'openai';
|
|
13
13
|
/** Role in a chat conversation. */
|
|
14
14
|
export type ChatRole = 'system' | 'user' | 'assistant';
|
|
15
15
|
/** A single message in a chat conversation. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,4DAA4D;AAC5D,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,4DAA4D;AAC5D,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3E,mCAAmC;AACnC,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAEvD,+CAA+C;AAC/C,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B;AAED,6CAA6C;AAC7C,MAAM,WAAW,WAAW;IACxB,oDAAoD;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,sCAAsC;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,qDAAqD;AACrD,MAAM,WAAW,YAAY;IACzB,kCAAkC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,uCAAuC;IACvC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CACjC;AAED,8CAA8C;AAC9C,MAAM,WAAW,SAAS;IACtB,gCAAgC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CAC1B;AAED,4CAA4C;AAC5C,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAChC;AAED,4CAA4C;AAC5C,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,+CAA+C;IAC/C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IACxB,wCAAwC;IACxC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAE/B;;;OAGG;IACH,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE5E;;;;OAIG;IACH,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAEjF;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAEnC;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aiagentflow/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "A local-first, CLI-driven multi-agent AI software engineering workflow orchestrator — feed specs, PRDs, and guidelines to auto-generate implementation plans and code",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|