@aiagentflow/cli 0.6.1 → 0.7.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/cli/commands/plan.d.ts +2 -0
- package/dist/cli/commands/plan.d.ts.map +1 -1
- package/dist/cli/commands/plan.js +4 -1
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/resume.d.ts +12 -0
- package/dist/cli/commands/resume.d.ts.map +1 -0
- package/dist/cli/commands/resume.js +43 -0
- package/dist/cli/commands/resume.js.map +1 -0
- package/dist/cli/commands/sessions.d.ts +12 -0
- package/dist/cli/commands/sessions.d.ts.map +1 -0
- package/dist/cli/commands/sessions.js +70 -0
- package/dist/cli/commands/sessions.js.map +1 -0
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/config/types.d.ts +2 -2
- package/dist/core/config/types.d.ts.map +1 -1
- package/dist/core/workflow/approval.d.ts.map +1 -1
- package/dist/core/workflow/approval.js.map +1 -1
- package/dist/core/workflow/runner.d.ts +18 -0
- package/dist/core/workflow/runner.d.ts.map +1 -1
- package/dist/core/workflow/runner.js +81 -4
- package/dist/core/workflow/runner.js.map +1 -1
- package/dist/core/workflow/session.d.ts +2 -2
- package/dist/core/workflow/session.d.ts.map +1 -1
- package/dist/core/workflow/session.js.map +1 -1
- package/dist/core/workflow/task-queue.js.map +1 -1
- package/dist/core/workflow/token-tracker.d.ts +4 -0
- package/dist/core/workflow/token-tracker.d.ts.map +1 -1
- package/dist/core/workflow/token-tracker.js +8 -0
- package/dist/core/workflow/token-tracker.js.map +1 -1
- package/dist/prompts/library.js.map +1 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +3 -24
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +12 -43
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/ollama.d.ts.map +1 -1
- package/dist/providers/ollama.js +12 -64
- package/dist/providers/ollama.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +11 -45
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/provider-errors.d.ts +39 -0
- package/dist/providers/provider-errors.d.ts.map +1 -0
- package/dist/providers/provider-errors.js +175 -0
- package/dist/providers/provider-errors.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/prompts/library.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/prompts/library.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EAEZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EAEZ,MAAM,YAAY,CAAC;AAIpB,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAChC;AAUD;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,WAAW;IACjD,SAAgB,IAAI,EAAG,WAAW,CAAU;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,uBAAuB;IAS3C;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAqCjF;;OAEG;IACI,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC;IAsEvF;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IASxC;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAqB5C,OAAO,CAAC,UAAU;YAQJ,OAAO;IAUrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,YAAY;CAQvB"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { ProviderError } from '../core/errors.js';
|
|
11
11
|
import { logger } from '../utils/logger.js';
|
|
12
|
+
import { fetchWithRetry, PROVIDER_TIMEOUT_MS } from './provider-errors.js';
|
|
12
13
|
/** Default Anthropic API settings. */
|
|
13
14
|
const DEFAULTS = {
|
|
14
15
|
baseUrl: 'https://api.anthropic.com',
|
|
@@ -87,15 +88,7 @@ export class AnthropicProvider {
|
|
|
87
88
|
if (options?.temperature !== undefined) {
|
|
88
89
|
body.temperature = options.temperature;
|
|
89
90
|
}
|
|
90
|
-
const response = await
|
|
91
|
-
method: 'POST',
|
|
92
|
-
headers: this.getHeaders(),
|
|
93
|
-
body: JSON.stringify(body),
|
|
94
|
-
});
|
|
95
|
-
if (!response.ok) {
|
|
96
|
-
const errorBody = await response.text();
|
|
97
|
-
throw new ProviderError(`Anthropic streaming request failed: ${response.status} ${response.statusText}`, { status: response.status, body: errorBody, provider: 'anthropic' });
|
|
98
|
-
}
|
|
91
|
+
const response = await fetchWithRetry(`${this.baseUrl}/v1/messages`, { method: 'POST', headers: this.getHeaders(), body: JSON.stringify(body) }, { provider: 'anthropic', baseUrl: this.baseUrl, timeoutMs: PROVIDER_TIMEOUT_MS });
|
|
99
92
|
if (!response.body) {
|
|
100
93
|
throw new ProviderError('Anthropic response has no body', { provider: 'anthropic' });
|
|
101
94
|
}
|
|
@@ -181,21 +174,7 @@ export class AnthropicProvider {
|
|
|
181
174
|
};
|
|
182
175
|
}
|
|
183
176
|
async request(path, body) {
|
|
184
|
-
|
|
185
|
-
try {
|
|
186
|
-
response = await fetch(`${this.baseUrl}${path}`, {
|
|
187
|
-
method: 'POST',
|
|
188
|
-
headers: this.getHeaders(),
|
|
189
|
-
body: JSON.stringify(body),
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
catch (err) {
|
|
193
|
-
throw new ProviderError(`Failed to connect to Anthropic API: ${err instanceof Error ? err.message : String(err)}`, { provider: 'anthropic', baseUrl: this.baseUrl });
|
|
194
|
-
}
|
|
195
|
-
if (!response.ok) {
|
|
196
|
-
const errorBody = await response.text();
|
|
197
|
-
throw new ProviderError(`Anthropic API error: ${response.status} ${response.statusText}`, { status: response.status, body: errorBody, provider: 'anthropic' });
|
|
198
|
-
}
|
|
177
|
+
const response = await fetchWithRetry(`${this.baseUrl}${path}`, { method: 'POST', headers: this.getHeaders(), body: JSON.stringify(body) }, { provider: 'anthropic', baseUrl: this.baseUrl, timeoutMs: PROVIDER_TIMEOUT_MS });
|
|
199
178
|
return response.json();
|
|
200
179
|
}
|
|
201
180
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAUlD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EAEZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EAEZ,MAAM,YAAY,CAAC;AAIpB,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC7B;AASD;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,WAAW;IAC9C,SAAgB,IAAI,EAAG,QAAQ,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,oBAAoB;IAQxC;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA+CjF;;OAEG;IACI,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC;IAkFvF;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAkBxC;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAY5C;;;OAGG;IACH,OAAO,CAAC,QAAQ;YAIF,OAAO;IAWrB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,YAAY;CAQvB"}
|
package/dist/providers/gemini.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { ProviderError } from '../core/errors.js';
|
|
11
11
|
import { logger } from '../utils/logger.js';
|
|
12
|
+
import { fetchWithRetry, PROVIDER_TIMEOUT_MS } from './provider-errors.js';
|
|
12
13
|
/** Default Gemini API settings. */
|
|
13
14
|
const DEFAULTS = {
|
|
14
15
|
baseUrl: 'https://generativelanguage.googleapis.com',
|
|
@@ -93,15 +94,7 @@ export class GeminiProvider {
|
|
|
93
94
|
body.generationConfig = generationConfig;
|
|
94
95
|
}
|
|
95
96
|
const url = `${this.baseUrl}/v1beta/models/${model}:streamGenerateContent?alt=sse&key=${this.apiKey}`;
|
|
96
|
-
const response = await
|
|
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
|
-
}
|
|
97
|
+
const response = await fetchWithRetry(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) }, { provider: 'gemini', baseUrl: this.baseUrl, timeoutMs: PROVIDER_TIMEOUT_MS });
|
|
105
98
|
if (!response.body) {
|
|
106
99
|
throw new ProviderError('Gemini response has no body', { provider: 'gemini' });
|
|
107
100
|
}
|
|
@@ -155,25 +148,15 @@ export class GeminiProvider {
|
|
|
155
148
|
* List available models from the Gemini API.
|
|
156
149
|
*/
|
|
157
150
|
async listModels() {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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
|
-
}
|
|
151
|
+
const url = `${this.baseUrl}/v1beta/models?key=${this.apiKey}`;
|
|
152
|
+
const response = await fetchWithRetry(url, { method: 'GET' }, { provider: 'gemini', baseUrl: this.baseUrl, timeoutMs: PROVIDER_TIMEOUT_MS });
|
|
153
|
+
const body = await response.json();
|
|
154
|
+
const models = body.models ?? [];
|
|
155
|
+
return models.map((m) => ({
|
|
156
|
+
id: m.name.replace(/^models\//, ''),
|
|
157
|
+
name: m.displayName ?? m.name.replace(/^models\//, ''),
|
|
158
|
+
provider: 'gemini',
|
|
159
|
+
}));
|
|
177
160
|
}
|
|
178
161
|
/**
|
|
179
162
|
* Validate that the Gemini API connection is working.
|
|
@@ -198,21 +181,7 @@ export class GeminiProvider {
|
|
|
198
181
|
}
|
|
199
182
|
async request(path, body) {
|
|
200
183
|
const url = this.buildUrl(path);
|
|
201
|
-
|
|
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
|
-
}
|
|
184
|
+
const response = await fetchWithRetry(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) }, { provider: 'gemini', baseUrl: this.baseUrl, timeoutMs: PROVIDER_TIMEOUT_MS });
|
|
216
185
|
return response.json();
|
|
217
186
|
}
|
|
218
187
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAUlD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EAEZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EAEZ,MAAM,YAAY,CAAC;AAIpB,2DAA2D;AAC3D,MAAM,WAAW,oBAAoB;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC7B;AAQD;;;;GAIG;AACH,qBAAa,cAAe,YAAW,WAAW;IAC9C,SAAgB,IAAI,EAAG,QAAQ,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,CAAC,EAAE,oBAAoB;IAIzC;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA6BjF;;OAEG;IACI,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC;IAiEvF;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAiBxC;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAW5C,OAAO,CAAC,eAAe;YAkBT,OAAO;IAUrB,OAAO,CAAC,YAAY;CAOvB"}
|
package/dist/providers/ollama.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { ProviderError } from '../core/errors.js';
|
|
11
11
|
import { logger } from '../utils/logger.js';
|
|
12
|
+
import { fetchWithRetry, OLLAMA_TIMEOUT_MS } from './provider-errors.js';
|
|
12
13
|
/** Default Ollama settings. */
|
|
13
14
|
const DEFAULTS = {
|
|
14
15
|
baseUrl: 'http://localhost:11434',
|
|
@@ -68,22 +69,7 @@ export class OllamaProvider {
|
|
|
68
69
|
if (options?.maxTokens !== undefined) {
|
|
69
70
|
body.options = { ...(body.options ?? {}), num_predict: options.maxTokens };
|
|
70
71
|
}
|
|
71
|
-
|
|
72
|
-
try {
|
|
73
|
-
response = await fetch(`${this.baseUrl}/api/chat`, {
|
|
74
|
-
method: 'POST',
|
|
75
|
-
headers: { 'Content-Type': 'application/json' },
|
|
76
|
-
body: JSON.stringify(body),
|
|
77
|
-
signal: AbortSignal.timeout(300_000), // 5 minute timeout
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
catch (err) {
|
|
81
|
-
throw new ProviderError(`Failed to connect to Ollama at ${this.baseUrl}: ${err instanceof Error ? err.message : String(err)}`, { provider: 'ollama', baseUrl: this.baseUrl });
|
|
82
|
-
}
|
|
83
|
-
if (!response.ok) {
|
|
84
|
-
const errorBody = await response.text();
|
|
85
|
-
throw new ProviderError(`Ollama streaming request failed: ${response.status} ${response.statusText}`, { status: response.status, body: errorBody, provider: 'ollama' });
|
|
86
|
-
}
|
|
72
|
+
const response = await fetchWithRetry(`${this.baseUrl}/api/chat`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) }, { provider: 'ollama', baseUrl: this.baseUrl, timeoutMs: OLLAMA_TIMEOUT_MS });
|
|
87
73
|
if (!response.body) {
|
|
88
74
|
throw new ProviderError('Ollama response has no body', { provider: 'ollama' });
|
|
89
75
|
}
|
|
@@ -126,24 +112,14 @@ export class OllamaProvider {
|
|
|
126
112
|
* List available models from the local Ollama instance.
|
|
127
113
|
*/
|
|
128
114
|
async listModels() {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
id: String(m.name ?? m.model ?? ''),
|
|
138
|
-
name: String(m.name ?? m.model ?? 'Unknown'),
|
|
139
|
-
provider: 'ollama',
|
|
140
|
-
}));
|
|
141
|
-
}
|
|
142
|
-
catch (err) {
|
|
143
|
-
if (err instanceof ProviderError)
|
|
144
|
-
throw err;
|
|
145
|
-
throw new ProviderError(`Failed to connect to Ollama at ${this.baseUrl}: ${err instanceof Error ? err.message : String(err)}`, { provider: 'ollama', baseUrl: this.baseUrl });
|
|
146
|
-
}
|
|
115
|
+
const response = await fetchWithRetry(`${this.baseUrl}/api/tags`, { method: 'GET' }, { provider: 'ollama', baseUrl: this.baseUrl, timeoutMs: OLLAMA_TIMEOUT_MS });
|
|
116
|
+
const data = await response.json();
|
|
117
|
+
const models = data.models ?? [];
|
|
118
|
+
return models.map((m) => ({
|
|
119
|
+
id: String(m.name ?? m.model ?? ''),
|
|
120
|
+
name: String(m.name ?? m.model ?? 'Unknown'),
|
|
121
|
+
provider: 'ollama',
|
|
122
|
+
}));
|
|
147
123
|
}
|
|
148
124
|
/**
|
|
149
125
|
* Validate that Ollama is running and reachable.
|
|
@@ -169,36 +145,8 @@ export class OllamaProvider {
|
|
|
169
145
|
}
|
|
170
146
|
return result;
|
|
171
147
|
}
|
|
172
|
-
async request(path, body
|
|
173
|
-
|
|
174
|
-
let lastError;
|
|
175
|
-
for (let attempt = 0; attempt <= retries; attempt++) {
|
|
176
|
-
try {
|
|
177
|
-
response = await fetch(`${this.baseUrl}${path}`, {
|
|
178
|
-
method: 'POST',
|
|
179
|
-
headers: { 'Content-Type': 'application/json' },
|
|
180
|
-
body: JSON.stringify(body),
|
|
181
|
-
signal: AbortSignal.timeout(300_000), // 5 minute timeout
|
|
182
|
-
});
|
|
183
|
-
// Success — continue to response handling below
|
|
184
|
-
break;
|
|
185
|
-
}
|
|
186
|
-
catch (err) {
|
|
187
|
-
lastError = err;
|
|
188
|
-
if (attempt < retries) {
|
|
189
|
-
logger.debug(`Ollama request failed (attempt ${attempt + 1}/${retries + 1}), retrying...`);
|
|
190
|
-
await new Promise(r => setTimeout(r, 2000));
|
|
191
|
-
continue;
|
|
192
|
-
}
|
|
193
|
-
throw new ProviderError(`Failed to connect to Ollama at ${this.baseUrl}: ${err instanceof Error ? err.message : String(err)}`, { provider: 'ollama', baseUrl: this.baseUrl });
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
// TypeScript needs this — response is always assigned if we reach here
|
|
197
|
-
response = response;
|
|
198
|
-
if (!response.ok) {
|
|
199
|
-
const errorBody = await response.text();
|
|
200
|
-
throw new ProviderError(`Ollama API error: ${response.status} ${response.statusText}`, { status: response.status, body: errorBody, provider: 'ollama' });
|
|
201
|
-
}
|
|
148
|
+
async request(path, body) {
|
|
149
|
+
const response = await fetchWithRetry(`${this.baseUrl}${path}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) }, { provider: 'ollama', baseUrl: this.baseUrl, timeoutMs: OLLAMA_TIMEOUT_MS });
|
|
202
150
|
return response.json();
|
|
203
151
|
}
|
|
204
152
|
extractUsage(response) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAUlD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EAEZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EAEZ,MAAM,YAAY,CAAC;AAIpB,2DAA2D;AAC3D,MAAM,WAAW,oBAAoB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAClC;AASD;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,WAAW;IAC9C,SAAgB,IAAI,EAAG,QAAQ,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;gBAE3B,MAAM,EAAE,oBAAoB;IASxC;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAoCjF;;OAEG;IACI,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC;IAsEvF;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAiBxC;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAe5C,OAAO,CAAC,UAAU;YAaJ,OAAO;IAUrB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,YAAY;CAQvB"}
|
package/dist/providers/openai.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { ProviderError } from '../core/errors.js';
|
|
11
11
|
import { logger } from '../utils/logger.js';
|
|
12
|
+
import { fetchWithRetry, PROVIDER_TIMEOUT_MS } from './provider-errors.js';
|
|
12
13
|
/** Default OpenAI API settings. */
|
|
13
14
|
const DEFAULTS = {
|
|
14
15
|
baseUrl: 'https://api.openai.com',
|
|
@@ -83,15 +84,7 @@ export class OpenAIProvider {
|
|
|
83
84
|
if (options?.temperature !== undefined) {
|
|
84
85
|
body.temperature = options.temperature;
|
|
85
86
|
}
|
|
86
|
-
const response = await
|
|
87
|
-
method: 'POST',
|
|
88
|
-
headers: this.getHeaders(),
|
|
89
|
-
body: JSON.stringify(body),
|
|
90
|
-
});
|
|
91
|
-
if (!response.ok) {
|
|
92
|
-
const errorBody = await response.text();
|
|
93
|
-
throw new ProviderError(`OpenAI streaming request failed: ${response.status} ${response.statusText}`, { status: response.status, body: errorBody, provider: 'openai' });
|
|
94
|
-
}
|
|
87
|
+
const response = await fetchWithRetry(`${this.baseUrl}/v1/chat/completions`, { method: 'POST', headers: this.getHeaders(), body: JSON.stringify(body) }, { provider: 'openai', baseUrl: this.baseUrl, timeoutMs: PROVIDER_TIMEOUT_MS });
|
|
95
88
|
if (!response.body) {
|
|
96
89
|
throw new ProviderError('OpenAI response has no body', { provider: 'openai' });
|
|
97
90
|
}
|
|
@@ -140,27 +133,14 @@ export class OpenAIProvider {
|
|
|
140
133
|
* List available models from the OpenAI API.
|
|
141
134
|
*/
|
|
142
135
|
async listModels() {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
const body = await response.json();
|
|
152
|
-
const models = body.data ?? [];
|
|
153
|
-
return models.map((m) => ({
|
|
154
|
-
id: m.id,
|
|
155
|
-
name: m.id,
|
|
156
|
-
provider: 'openai',
|
|
157
|
-
}));
|
|
158
|
-
}
|
|
159
|
-
catch (err) {
|
|
160
|
-
if (err instanceof ProviderError)
|
|
161
|
-
throw err;
|
|
162
|
-
throw new ProviderError(`Failed to list OpenAI models: ${err instanceof Error ? err.message : String(err)}`, { provider: 'openai' });
|
|
163
|
-
}
|
|
136
|
+
const response = await fetchWithRetry(`${this.baseUrl}/v1/models`, { method: 'GET', headers: this.getHeaders() }, { provider: 'openai', baseUrl: this.baseUrl, timeoutMs: PROVIDER_TIMEOUT_MS });
|
|
137
|
+
const body = await response.json();
|
|
138
|
+
const models = body.data ?? [];
|
|
139
|
+
return models.map((m) => ({
|
|
140
|
+
id: m.id,
|
|
141
|
+
name: m.id,
|
|
142
|
+
provider: 'openai',
|
|
143
|
+
}));
|
|
164
144
|
}
|
|
165
145
|
/**
|
|
166
146
|
* Validate that the OpenAI API connection is working.
|
|
@@ -189,21 +169,7 @@ export class OpenAIProvider {
|
|
|
189
169
|
return headers;
|
|
190
170
|
}
|
|
191
171
|
async request(path, body) {
|
|
192
|
-
|
|
193
|
-
try {
|
|
194
|
-
response = await fetch(`${this.baseUrl}${path}`, {
|
|
195
|
-
method: 'POST',
|
|
196
|
-
headers: this.getHeaders(),
|
|
197
|
-
body: JSON.stringify(body),
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
catch (err) {
|
|
201
|
-
throw new ProviderError(`Failed to connect to OpenAI API: ${err instanceof Error ? err.message : String(err)}`, { provider: 'openai', baseUrl: this.baseUrl });
|
|
202
|
-
}
|
|
203
|
-
if (!response.ok) {
|
|
204
|
-
const errorBody = await response.text();
|
|
205
|
-
throw new ProviderError(`OpenAI API error: ${response.status} ${response.statusText}`, { status: response.status, body: errorBody, provider: 'openai' });
|
|
206
|
-
}
|
|
172
|
+
const response = await fetchWithRetry(`${this.baseUrl}${path}`, { method: 'POST', headers: this.getHeaders(), body: JSON.stringify(body) }, { provider: 'openai', baseUrl: this.baseUrl, timeoutMs: PROVIDER_TIMEOUT_MS });
|
|
207
173
|
return response.json();
|
|
208
174
|
}
|
|
209
175
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAUlD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared error handling utilities for LLM providers.
|
|
3
|
+
*
|
|
4
|
+
* Provides actionable error messages, retry logic, and timeout
|
|
5
|
+
* handling so each provider doesn't duplicate this logic.
|
|
6
|
+
*
|
|
7
|
+
* Dependency direction: provider-errors.ts → core/errors.ts, utils/logger.ts
|
|
8
|
+
* Used by: anthropic.ts, openai.ts, gemini.ts, ollama.ts
|
|
9
|
+
*/
|
|
10
|
+
import { ProviderError } from '../core/errors.js';
|
|
11
|
+
/** Default timeout for cloud provider requests (60 seconds). */
|
|
12
|
+
export declare const PROVIDER_TIMEOUT_MS = 60000;
|
|
13
|
+
/** Ollama timeout — local models on CPU can be slow (5 minutes). */
|
|
14
|
+
export declare const OLLAMA_TIMEOUT_MS = 300000;
|
|
15
|
+
/** Get an actionable hint for an HTTP error status code. */
|
|
16
|
+
export declare function getHttpErrorHint(status: number, provider: string): string;
|
|
17
|
+
/** Classify a network/connection error and return an actionable hint. */
|
|
18
|
+
export declare function getConnectionErrorHint(err: unknown, provider: string, baseUrl: string): string;
|
|
19
|
+
/** Build a ProviderError with an actionable hint from an HTTP error. */
|
|
20
|
+
export declare function buildHttpError(status: number, statusText: string, provider: string, errorBody: string): ProviderError;
|
|
21
|
+
/** Build a ProviderError with an actionable hint from a connection error. */
|
|
22
|
+
export declare function buildConnectionError(err: unknown, provider: string, baseUrl: string): ProviderError;
|
|
23
|
+
/** Check if an HTTP status code is retryable. */
|
|
24
|
+
export declare function isRetryableStatus(status: number): boolean;
|
|
25
|
+
/** Options for fetchWithRetry. */
|
|
26
|
+
export interface FetchRetryOptions {
|
|
27
|
+
provider: string;
|
|
28
|
+
baseUrl: string;
|
|
29
|
+
timeoutMs: number;
|
|
30
|
+
maxRetries?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Fetch with automatic retry, timeout, and actionable error messages.
|
|
34
|
+
*
|
|
35
|
+
* Retries on 429, 5xx, and transient network errors with exponential backoff.
|
|
36
|
+
* Throws ProviderError with actionable hints on final failure.
|
|
37
|
+
*/
|
|
38
|
+
export declare function fetchWithRetry(url: string, init: RequestInit, options: FetchRetryOptions): Promise<Response>;
|
|
39
|
+
//# sourceMappingURL=provider-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-errors.d.ts","sourceRoot":"","sources":["../../src/providers/provider-errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,gEAAgE;AAChE,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C,oEAAoE;AACpE,eAAO,MAAM,iBAAiB,SAAU,CAAC;AAEzC,4DAA4D;AAC5D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAczE;AAED,yEAAyE;AACzE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAwB9F;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAC1B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAClB,aAAa,CAaf;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAChC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAChB,aAAa,CAYf;AAED,iDAAiD;AACjD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD;AAcD,kCAAkC;AAClC,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAChC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAwCnB"}
|