@aiagentflow/cli 0.6.1 → 0.6.2
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/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/task-queue.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
|
@@ -9,5 +9,7 @@
|
|
|
9
9
|
* Used by: cli/index.ts
|
|
10
10
|
*/
|
|
11
11
|
import { Command } from 'commander';
|
|
12
|
+
declare const _PLAN_SYSTEM_PROMPT = "You are a task planner. Given reference documents (PRDs, specs, architecture docs), break them down into a list of implementation tasks.\n\n## Rules:\n- Output exactly ONE task per line\n- Each task should be a clear, actionable instruction a developer can execute\n- Tasks should be ordered by dependency (foundational tasks first)\n- Do NOT number the tasks or add bullet points \u2014 just plain text, one per line\n- Do NOT add blank lines between tasks\n- Do NOT add headers, commentary, or explanations \u2014 ONLY task lines\n- Each task should be self-contained enough to pass to an AI coding agent\n\n## Example output:\nCreate the User model with fields: id, email, name, passwordHash, createdAt\nAdd input validation middleware for user registration endpoint\nImplement POST /api/users registration endpoint with bcrypt password hashing\nWrite unit tests for User model validation\nWrite integration tests for registration endpoint";
|
|
13
|
+
export { _PLAN_SYSTEM_PROMPT as PLAN_SYSTEM_PROMPT };
|
|
12
14
|
export declare const planCommand: Command;
|
|
13
15
|
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,QAAA,MAAM,mBAAmB,m7BAgByB,CAAC;AAGnD,OAAO,EAAE,mBAAmB,IAAI,kBAAkB,EAAE,CAAC;AAErD,eAAO,MAAM,WAAW,SAiElB,CAAC"}
|
|
@@ -15,7 +15,8 @@ import { configExists, loadConfig } from '../../core/config/manager.js';
|
|
|
15
15
|
import { loadContextDocuments, formatContextForAgent } from '../../core/workflow/context-loader.js';
|
|
16
16
|
import { createAgent } from '../../agents/factory.js';
|
|
17
17
|
import { logger } from '../../utils/logger.js';
|
|
18
|
-
|
|
18
|
+
// TODO: Use this system prompt via agent.execute({ systemPrompt }) once the agent API supports it
|
|
19
|
+
const _PLAN_SYSTEM_PROMPT = `You are a task planner. Given reference documents (PRDs, specs, architecture docs), break them down into a list of implementation tasks.
|
|
19
20
|
|
|
20
21
|
## Rules:
|
|
21
22
|
- Output exactly ONE task per line
|
|
@@ -32,6 +33,8 @@ Add input validation middleware for user registration endpoint
|
|
|
32
33
|
Implement POST /api/users registration endpoint with bcrypt password hashing
|
|
33
34
|
Write unit tests for User model validation
|
|
34
35
|
Write integration tests for registration endpoint`;
|
|
36
|
+
// Exported for future use when agent API supports system prompts
|
|
37
|
+
export { _PLAN_SYSTEM_PROMPT as PLAN_SYSTEM_PROMPT };
|
|
35
38
|
export const planCommand = new Command('plan')
|
|
36
39
|
.description('Generate a task list from documentation files')
|
|
37
40
|
.argument('<docs...>', 'Documentation files to analyze (PRDs, specs, etc.)')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AACpG,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* Dependency direction: types.ts → schema.ts
|
|
8
8
|
* Used by: every module that touches config
|
|
9
9
|
*/
|
|
10
|
-
import { z } from 'zod';
|
|
11
|
-
import { agentConfigSchema, agentRoleConfigSchema, appConfigSchema, providerConfigSchema, projectConfigSchema, workflowConfigSchema } from './schema.js';
|
|
10
|
+
import type { z } from 'zod';
|
|
11
|
+
import type { agentConfigSchema, agentRoleConfigSchema, appConfigSchema, providerConfigSchema, projectConfigSchema, workflowConfigSchema } from './schema.js';
|
|
12
12
|
/** Complete application configuration. */
|
|
13
13
|
export type AppConfig = z.infer<typeof appConfigSchema>;
|
|
14
14
|
/** LLM provider connection settings. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/config/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/config/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACR,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACvB,MAAM,aAAa,CAAC;AAErB,0CAA0C;AAC1C,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,wCAAwC;AACxC,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,iEAAiE;AACjE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,mCAAmC;AACnC,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,iDAAiD;AACjD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,6CAA6C;AAC7C,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../../src/core/workflow/approval.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../../src/core/workflow/approval.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEtE;;;;GAIG;AACH,wBAAsB,eAAe,CACjC,GAAG,EAAE,eAAe,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC,CA8B3B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAM5E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../src/core/workflow/approval.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../src/core/workflow/approval.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,GAAoB,EACpB,SAAiB,EACjB,MAAc;IAEd,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,yCAAyC;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG;QAC/B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACxD,CAAC,CAAC,MAAM,CAAC;IACb,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAErB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,iBAAiB,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC;QAC/B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,gCAAgC;QACzC,OAAO,EAAE;YACL,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,2BAA2B,EAAE,KAAK,EAAE,SAAS,EAAE;YACnF,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE;YAC3E,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE;SAC3E;QACD,OAAO,EAAE,CAAC;KACb,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAC;IAE9B,OAAO,QAA4B,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,aAAsB,EAAE,KAAa;IAC/D,IAAI,CAAC,aAAa;QAAE,OAAO,KAAK,CAAC;IAEjC,oCAAoC;IACpC,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-queue.js","sourceRoot":"","sources":["../../../src/core/workflow/task-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"task-queue.js","sourceRoot":"","sources":["../../../src/core/workflow/task-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAUlD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAS3E,sCAAsC;AACtC,MAAM,QAAQ,GAAG;IACb,OAAO,EAAE,2BAA2B;IACpC,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,0BAA0B;IACjC,SAAS,EAAE,IAAI;CACT,CAAC;AAEX;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IACV,IAAI,GAAG,WAAoB,CAAC;IAC3B,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,UAAU,CAAS;IAEpC,YAAY,MAA+B;QACvC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,aAAa,CAAC,+BAA+B,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,QAAuB,EAAE,OAAqB;QACrD,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9E,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;QAC/C,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC;QAE3D,MAAM,IAAI,GAA4B;YAClC,KAAK;YACL,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,WAAW;SACxB,CAAC;QAEF,IAAI,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC/B,CAAC;QACD,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAC3C,CAAC;QACD,IAAI,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;YACjC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;QAChD,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,iCAAiC,KAAK,cAAc,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QAEvF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAE1D,qCAAqC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE1C,OAAO;YACH,OAAO;YACP,KAAK,EAAG,QAAQ,CAAC,KAA4B,IAAI,KAAK;YACtD,KAAK;YACL,YAAY,EAAG,QAAQ,CAAC,WAAkC,IAAI,SAAS;SAC1E,CAAC;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAC,MAAM,CAAC,QAAuB,EAAE,OAAqB;QACxD,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9E,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;QAC/C,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC;QAE3D,MAAM,IAAI,GAA4B;YAClC,KAAK;YACL,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,WAAW;YACrB,MAAM,EAAE,IAAI;SACf,CAAC;QAEF,IAAI,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC/B,CAAC;QACD,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAC3C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,cAAc,CACjC,GAAG,IAAI,CAAC,OAAO,cAAc,EAC7B,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAC1E,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,CACnF,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,aAAa,CAAC,gCAAgC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC;YACD,OAAO,IAAI,EAAE,CAAC;gBACV,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI;oBAAE,MAAM;gBAEhB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;wBAAE,SAAS;oBACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAClC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACpB,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;wBAClC,OAAO;oBACX,CAAC;oBAED,IAAI,CAAC;wBACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;4BAC5D,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;wBACrD,CAAC;6BAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;4BACvC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;4BAClC,OAAO;wBACX,CAAC;oBACL,CAAC;oBAAC,MAAM,CAAC;wBACL,yBAAyB;oBAC7B,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;gBAAS,CAAC;YACP,MAAM,CAAC,WAAW,EAAE,CAAC;QACzB,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU;QACZ,OAAO;YACH,EAAE,EAAE,EAAE,0BAA0B,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE;YACzG,EAAE,EAAE,EAAE,4BAA4B,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE;YAC7G,EAAE,EAAE,EAAE,2BAA2B,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE;YAC3G,EAAE,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE;SACxG,CAAC;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB;QACpB,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,cAAc,EAAE;gBACxD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACjB,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,UAAU,EAAE,CAAC;oBACb,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;iBAChD,CAAC;aACL,CAAC,CAAC;YAEH,mEAAmE;YACnE,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;QAC9D,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,wBAAwB;IAEhB,UAAU;QACd,OAAO;YACH,cAAc,EAAE,kBAAkB;YAClC,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,mBAAmB,EAAE,IAAI,CAAC,UAAU;SACvC,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,IAA6B;QAC7D,MAAM,QAAQ,GAAG,MAAM,cAAc,CACjC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EACxB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAC1E,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,CACnF,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,EAAsC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACK,eAAe,CACnB,QAAuB,EACvB,OAAqB;QAErB,IAAI,YAAY,GAAG,OAAO,EAAE,YAAY,CAAC;QACzC,MAAM,WAAW,GAA6C,EAAE,CAAC;QAEjE,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxB,0DAA0D;gBAC1D,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;YACpF,CAAC;iBAAM,CAAC;gBACJ,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,CAAC;QACL,CAAC;QAED,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;IACzC,CAAC;IAEO,cAAc,CAAC,QAAiC;QACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,OAAO;iBACT,MAAM,CAAC,CAAC,KAA8B,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;iBACjE,GAAG,CAAC,CAAC,KAA8B,EAAE,EAAE,CAAC,KAAK,CAAC,IAAc,CAAC;iBAC7D,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC;IAEO,YAAY,CAAC,QAAiC;QAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAA2C,CAAC;QACnE,OAAO;YACH,YAAY,EAAE,KAAK,EAAE,YAAY,IAAI,CAAC;YACtC,gBAAgB,EAAE,KAAK,EAAE,aAAa,IAAI,CAAC;YAC3C,WAAW,EAAE,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC;SACxE,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -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"}
|
|
@@ -0,0 +1,175 @@
|
|
|
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
|
+
import { logger } from '../utils/logger.js';
|
|
12
|
+
/** Default timeout for cloud provider requests (60 seconds). */
|
|
13
|
+
export const PROVIDER_TIMEOUT_MS = 60_000;
|
|
14
|
+
/** Ollama timeout — local models on CPU can be slow (5 minutes). */
|
|
15
|
+
export const OLLAMA_TIMEOUT_MS = 300_000;
|
|
16
|
+
/** Get an actionable hint for an HTTP error status code. */
|
|
17
|
+
export function getHttpErrorHint(status, provider) {
|
|
18
|
+
if (status === 401 || status === 403) {
|
|
19
|
+
return `Check your ${provider} API key in .aiagentflow/config.json — run 'aiagentflow init' to reconfigure`;
|
|
20
|
+
}
|
|
21
|
+
if (status === 404) {
|
|
22
|
+
return 'Check the base URL in your configuration or verify the model name exists';
|
|
23
|
+
}
|
|
24
|
+
if (status === 429) {
|
|
25
|
+
return 'Rate limited — wait a moment and retry, or check your plan\'s rate limits';
|
|
26
|
+
}
|
|
27
|
+
if (status >= 500) {
|
|
28
|
+
return `${provider} is experiencing server issues — retry in a few seconds`;
|
|
29
|
+
}
|
|
30
|
+
return '';
|
|
31
|
+
}
|
|
32
|
+
/** Classify a network/connection error and return an actionable hint. */
|
|
33
|
+
export function getConnectionErrorHint(err, provider, baseUrl) {
|
|
34
|
+
const code = getErrorCode(err);
|
|
35
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
36
|
+
if (code === 'ECONNREFUSED' || message.includes('ECONNREFUSED')) {
|
|
37
|
+
if (provider === 'ollama') {
|
|
38
|
+
return `Cannot reach ${baseUrl} — is Ollama running? Start it with 'ollama serve'`;
|
|
39
|
+
}
|
|
40
|
+
return `Cannot reach ${baseUrl} — is the service running?`;
|
|
41
|
+
}
|
|
42
|
+
if (code === 'ENOTFOUND' || message.includes('ENOTFOUND') || message.includes('getaddrinfo')) {
|
|
43
|
+
return `DNS lookup failed for ${baseUrl} — check the URL in .aiagentflow/config.json`;
|
|
44
|
+
}
|
|
45
|
+
if (code === 'ETIMEDOUT' || code === 'UND_ERR_CONNECT_TIMEOUT' || message.includes('ETIMEDOUT')) {
|
|
46
|
+
return `Connection timed out to ${baseUrl} — check your network or try again`;
|
|
47
|
+
}
|
|
48
|
+
if (err instanceof Error && (err.name === 'AbortError' || err.name === 'TimeoutError')) {
|
|
49
|
+
return 'Request timed out — the server may be overloaded, try again';
|
|
50
|
+
}
|
|
51
|
+
return '';
|
|
52
|
+
}
|
|
53
|
+
/** Build a ProviderError with an actionable hint from an HTTP error. */
|
|
54
|
+
export function buildHttpError(status, statusText, provider, errorBody) {
|
|
55
|
+
const hint = getHttpErrorHint(status, provider);
|
|
56
|
+
const label = getStatusLabel(status);
|
|
57
|
+
const message = hint
|
|
58
|
+
? `${provider} API ${label} (${status}). ${hint}`
|
|
59
|
+
: `${provider} API error: ${status} ${statusText}`;
|
|
60
|
+
return new ProviderError(message, {
|
|
61
|
+
provider,
|
|
62
|
+
status,
|
|
63
|
+
body: errorBody,
|
|
64
|
+
...(hint ? { hint } : {}),
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/** Build a ProviderError with an actionable hint from a connection error. */
|
|
68
|
+
export function buildConnectionError(err, provider, baseUrl) {
|
|
69
|
+
const hint = getConnectionErrorHint(err, provider, baseUrl);
|
|
70
|
+
const underlying = err instanceof Error ? err.message : String(err);
|
|
71
|
+
const message = hint
|
|
72
|
+
? `Failed to connect to ${provider} API. ${hint}`
|
|
73
|
+
: `Failed to connect to ${provider} API: ${underlying}`;
|
|
74
|
+
return new ProviderError(message, {
|
|
75
|
+
provider,
|
|
76
|
+
baseUrl,
|
|
77
|
+
...(hint ? { hint } : {}),
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/** Check if an HTTP status code is retryable. */
|
|
81
|
+
export function isRetryableStatus(status) {
|
|
82
|
+
return status === 429 || status >= 500;
|
|
83
|
+
}
|
|
84
|
+
/** Check if a network error is retryable. */
|
|
85
|
+
function isRetryableNetworkError(err) {
|
|
86
|
+
const code = getErrorCode(err);
|
|
87
|
+
const retryableCodes = ['ECONNRESET', 'ECONNREFUSED', 'EPIPE', 'ETIMEDOUT', 'UND_ERR_CONNECT_TIMEOUT'];
|
|
88
|
+
if (code && retryableCodes.includes(code))
|
|
89
|
+
return true;
|
|
90
|
+
if (err instanceof Error) {
|
|
91
|
+
if (err.name === 'AbortError' || err.name === 'TimeoutError')
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Fetch with automatic retry, timeout, and actionable error messages.
|
|
98
|
+
*
|
|
99
|
+
* Retries on 429, 5xx, and transient network errors with exponential backoff.
|
|
100
|
+
* Throws ProviderError with actionable hints on final failure.
|
|
101
|
+
*/
|
|
102
|
+
export async function fetchWithRetry(url, init, options) {
|
|
103
|
+
const { provider, baseUrl, timeoutMs, maxRetries = 2 } = options;
|
|
104
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
105
|
+
try {
|
|
106
|
+
const response = await fetch(url, {
|
|
107
|
+
...init,
|
|
108
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
109
|
+
});
|
|
110
|
+
if (!response.ok) {
|
|
111
|
+
if (isRetryableStatus(response.status) && attempt < maxRetries) {
|
|
112
|
+
const delay = getRetryDelay(response, attempt);
|
|
113
|
+
logger.debug(`${provider} returned ${response.status}, retrying in ${delay}ms (attempt ${attempt + 1}/${maxRetries + 1})`);
|
|
114
|
+
await sleep(delay);
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
const errorBody = await response.text();
|
|
118
|
+
throw buildHttpError(response.status, response.statusText, provider, errorBody);
|
|
119
|
+
}
|
|
120
|
+
return response;
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
// Re-throw our own errors
|
|
124
|
+
if (err instanceof ProviderError)
|
|
125
|
+
throw err;
|
|
126
|
+
if (isRetryableNetworkError(err) && attempt < maxRetries) {
|
|
127
|
+
const delay = 1000 * 2 ** attempt; // 1s, 2s, 4s
|
|
128
|
+
logger.debug(`${provider} connection failed, retrying in ${delay}ms (attempt ${attempt + 1}/${maxRetries + 1})`);
|
|
129
|
+
await sleep(delay);
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
throw buildConnectionError(err, provider, baseUrl);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Unreachable, but satisfies TypeScript
|
|
136
|
+
throw new ProviderError(`${provider} request failed after ${maxRetries + 1} attempts`, { provider });
|
|
137
|
+
}
|
|
138
|
+
// ── Private helpers ──
|
|
139
|
+
function getStatusLabel(status) {
|
|
140
|
+
if (status === 401)
|
|
141
|
+
return 'authentication failed';
|
|
142
|
+
if (status === 403)
|
|
143
|
+
return 'access denied';
|
|
144
|
+
if (status === 404)
|
|
145
|
+
return 'endpoint not found';
|
|
146
|
+
if (status === 429)
|
|
147
|
+
return 'rate limit exceeded';
|
|
148
|
+
if (status >= 500)
|
|
149
|
+
return 'server error';
|
|
150
|
+
return 'error';
|
|
151
|
+
}
|
|
152
|
+
function getErrorCode(err) {
|
|
153
|
+
if (err instanceof Error) {
|
|
154
|
+
// Node.js errors store code on the error itself or on cause
|
|
155
|
+
const nodeErr = err;
|
|
156
|
+
return nodeErr.code ?? nodeErr.cause?.code;
|
|
157
|
+
}
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
160
|
+
function getRetryDelay(response, attempt) {
|
|
161
|
+
// Respect Retry-After header if present
|
|
162
|
+
const retryAfter = response.headers.get('retry-after');
|
|
163
|
+
if (retryAfter) {
|
|
164
|
+
const seconds = Number(retryAfter);
|
|
165
|
+
if (!Number.isNaN(seconds) && seconds > 0 && seconds <= 60) {
|
|
166
|
+
return seconds * 1000;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Exponential backoff: 1s, 2s, 4s
|
|
170
|
+
return 1000 * 2 ** attempt;
|
|
171
|
+
}
|
|
172
|
+
function sleep(ms) {
|
|
173
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=provider-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-errors.js","sourceRoot":"","sources":["../../src/providers/provider-errors.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aiagentflow/cli",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.2",
|
|
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": {
|