expxagents 0.30.3 → 0.30.4
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/node_modules/@expxagents/agent/dist/agent.js +81 -67
- package/node_modules/@expxagents/agent/dist/agent.js.map +1 -1
- package/node_modules/@expxagents/agent/dist/index.d.ts +1 -1
- package/node_modules/@expxagents/agent/dist/index.js +1 -1
- package/node_modules/@expxagents/agent/dist/index.js.map +1 -1
- package/node_modules/@expxagents/agent/dist/models.d.ts +5 -0
- package/node_modules/@expxagents/agent/dist/models.js +23 -0
- package/node_modules/@expxagents/agent/dist/models.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@ import { createOpenAI } from '@ai-sdk/openai';
|
|
|
3
3
|
import { createTools } from './tools/index.js';
|
|
4
4
|
import { buildSystemPrompt } from './system-prompt.js';
|
|
5
5
|
import { SessionManager } from './session.js';
|
|
6
|
-
import { DEFAULT_MODEL } from './models.js';
|
|
6
|
+
import { DEFAULT_MODEL, getFallbacks } from './models.js';
|
|
7
7
|
export class AgentRunner {
|
|
8
8
|
opts;
|
|
9
9
|
provider;
|
|
@@ -37,79 +37,93 @@ export class AgentRunner {
|
|
|
37
37
|
}
|
|
38
38
|
messages.push({ role: 'user', content: userPrompt });
|
|
39
39
|
const toolCallRecords = [];
|
|
40
|
-
//
|
|
41
|
-
|
|
42
|
-
for (let
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
40
|
+
// Try primary model with retries, then fallback models
|
|
41
|
+
const modelsToTry = [model, ...getFallbacks(model)];
|
|
42
|
+
for (let modelIdx = 0; modelIdx < modelsToTry.length; modelIdx++) {
|
|
43
|
+
const currentModel = modelsToTry[modelIdx];
|
|
44
|
+
const isFallback = modelIdx > 0;
|
|
45
|
+
if (isFallback) {
|
|
46
|
+
this.opts.onChunk?.(`\n⟳ Switching to fallback model: ${currentModel}\n\n`);
|
|
47
|
+
}
|
|
48
|
+
// Retry loop for transient errors on current model
|
|
49
|
+
let lastError = null;
|
|
50
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
51
|
+
try {
|
|
52
|
+
const result = streamText({
|
|
53
|
+
model: this.provider(currentModel),
|
|
54
|
+
system: buildSystemPrompt(cwd),
|
|
55
|
+
messages: messages,
|
|
56
|
+
tools: tools,
|
|
57
|
+
maxSteps,
|
|
58
|
+
});
|
|
59
|
+
let fullText = '';
|
|
60
|
+
for await (const part of result.fullStream) {
|
|
61
|
+
const p = part;
|
|
62
|
+
if (p.type === 'text-delta' && p.textDelta) {
|
|
63
|
+
const cleaned = p.textDelta
|
|
64
|
+
.replace(/<TOOLCALL>[\s\S]*?<\/TOOLCALL>/g, '')
|
|
65
|
+
.replace(/\{"(name|tool|function)":\s*"[^"]*",\s*"arguments":\s*\{[^}]*\}\s*\}?\]?/g, '')
|
|
66
|
+
.replace(/<\/?tool_call>/gi, '')
|
|
67
|
+
.replace(/<\/?function_call>/gi, '');
|
|
68
|
+
if (cleaned.trim()) {
|
|
69
|
+
fullText += cleaned;
|
|
70
|
+
this.opts.onChunk?.(cleaned);
|
|
71
|
+
}
|
|
63
72
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
73
|
+
else if (p.type === 'tool-call') {
|
|
74
|
+
this.opts.onToolCall?.(p.toolName ?? 'unknown', p.args ?? {});
|
|
75
|
+
toolCallRecords.push({
|
|
76
|
+
tool: p.toolName ?? 'unknown',
|
|
77
|
+
args: p.args ?? {},
|
|
78
|
+
result: '',
|
|
79
|
+
durationMs: 0,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
else if (p.type === 'tool-result') {
|
|
83
|
+
const last = [...toolCallRecords].reverse().find((tc) => tc.tool === (p.toolName ?? ''));
|
|
84
|
+
if (last) {
|
|
85
|
+
last.result = String(p.result ?? '').slice(0, 500);
|
|
86
|
+
}
|
|
78
87
|
}
|
|
79
88
|
}
|
|
89
|
+
const totalUsage = await result.usage;
|
|
90
|
+
if (session) {
|
|
91
|
+
this.sessionManager.addMessages(session.id, [
|
|
92
|
+
{ role: 'user', content: userPrompt },
|
|
93
|
+
{ role: 'assistant', content: fullText },
|
|
94
|
+
]);
|
|
95
|
+
}
|
|
96
|
+
const agentResult = {
|
|
97
|
+
output: fullText,
|
|
98
|
+
toolCalls: toolCallRecords,
|
|
99
|
+
model: currentModel,
|
|
100
|
+
inputTokens: totalUsage?.promptTokens ?? 0,
|
|
101
|
+
outputTokens: totalUsage?.completionTokens ?? 0,
|
|
102
|
+
};
|
|
103
|
+
this.opts.onDone?.(agentResult);
|
|
104
|
+
return agentResult;
|
|
80
105
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
model
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
catch (err) {
|
|
99
|
-
lastError = err instanceof Error ? err : new Error(String(err));
|
|
100
|
-
// Extract detailed error info from provider errors
|
|
101
|
-
const errorDetail = AgentRunner.extractErrorDetail(lastError);
|
|
102
|
-
const isRetryable = AgentRunner.isRetryableError(lastError);
|
|
103
|
-
if (isRetryable && attempt < maxRetries) {
|
|
104
|
-
const waitMs = attempt * 2000; // 2s, 4s, 6s
|
|
105
|
-
this.opts.onChunk?.(`\n[Retry ${attempt}/${maxRetries}] ${errorDetail}. Retrying in ${waitMs / 1000}s...\n`);
|
|
106
|
-
await new Promise(r => setTimeout(r, waitMs));
|
|
107
|
-
continue;
|
|
106
|
+
catch (err) {
|
|
107
|
+
lastError = err instanceof Error ? err : new Error(String(err));
|
|
108
|
+
const errorDetail = AgentRunner.extractErrorDetail(lastError);
|
|
109
|
+
const isRetryable = AgentRunner.isRetryableError(lastError);
|
|
110
|
+
if (isRetryable && attempt < maxRetries) {
|
|
111
|
+
const waitMs = attempt * 2000;
|
|
112
|
+
this.opts.onChunk?.(`\n[Retry ${attempt}/${maxRetries}] ${errorDetail}. Retrying in ${waitMs / 1000}s...\n`);
|
|
113
|
+
await new Promise(r => setTimeout(r, waitMs));
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
// If there are fallback models left, break retry loop and try next model
|
|
117
|
+
if (modelIdx < modelsToTry.length - 1) {
|
|
118
|
+
this.opts.onChunk?.(`\n⚠ ${currentModel} failed: ${errorDetail}\n`);
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
// No more models to try
|
|
122
|
+
throw new Error(`${errorDetail} (tried ${modelsToTry.slice(0, modelIdx + 1).join(' → ')})`);
|
|
108
123
|
}
|
|
109
|
-
throw new Error(`${errorDetail} (after ${attempt} attempt${attempt > 1 ? 's' : ''})`);
|
|
110
124
|
}
|
|
111
125
|
}
|
|
112
|
-
throw
|
|
126
|
+
throw new Error('All models failed');
|
|
113
127
|
}
|
|
114
128
|
/** Extract readable error detail from provider errors */
|
|
115
129
|
static extractErrorDetail(err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAgB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAgB,YAAY,EAAE,MAAM,aAAa,CAAC;AAGxE,MAAM,OAAO,WAAW;IACd,IAAI,CAAsE;IAC1E,QAAQ,CAAkC;IAC1C,cAAc,CAAiB;IAEvC,YAAY,IAAqB;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAC7D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;QAC3G,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,aAAa,CAAC;QAElF,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,8BAA8B;YACvD,MAAM;SACP,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,cAAc,EAAE,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAe;QACvB,MAAM,UAAU,GAAG,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAM,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,CAAC,CAAC;QAErB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS;YACjC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;YAC3D,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,QAAQ,GAA6C,EAAE,CAAC;QAE9D,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QAErD,MAAM,eAAe,GAAqB,EAAE,CAAC;QAE7C,uDAAuD;QACvD,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAEpD,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;YACjE,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,QAAQ,GAAG,CAAC,CAAC;YAEhC,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,oCAAoC,YAAY,MAAM,CAAC,CAAC;YAC9E,CAAC;YAED,mDAAmD;YACnD,IAAI,SAAS,GAAiB,IAAI,CAAC;YACnC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;gBACvD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,UAAU,CAAC;wBACxB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;wBAClC,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC;wBAC9B,QAAQ,EAAE,QAAwD;wBAClE,KAAK,EAAE,KAAkD;wBACzD,QAAQ;qBACT,CAAC,CAAC;oBAEH,IAAI,QAAQ,GAAG,EAAE,CAAC;oBAClB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;wBAC3C,MAAM,CAAC,GAAG,IAAsH,CAAC;wBAEjI,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;4BAC3C,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS;iCACxB,OAAO,CAAC,iCAAiC,EAAE,EAAE,CAAC;iCAC9C,OAAO,CAAC,2EAA2E,EAAE,EAAE,CAAC;iCACxF,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;iCAC/B,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;4BACvC,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gCACnB,QAAQ,IAAI,OAAO,CAAC;gCACpB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;4BAC/B,CAAC;wBACH,CAAC;6BAAM,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;4BAClC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;4BAC9D,eAAe,CAAC,IAAI,CAAC;gCACnB,IAAI,EAAE,CAAC,CAAC,QAAQ,IAAI,SAAS;gCAC7B,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;gCAClB,MAAM,EAAE,EAAE;gCACV,UAAU,EAAE,CAAC;6BACd,CAAC,CAAC;wBACL,CAAC;6BAAM,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;4BACpC,MAAM,IAAI,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,EAAkB,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;4BACzG,IAAI,IAAI,EAAE,CAAC;gCACT,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;4BACrD,CAAC;wBACH,CAAC;oBACH,CAAC;oBAED,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;oBAEtC,IAAI,OAAO,EAAE,CAAC;wBACZ,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;4BAC1C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;4BACrC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE;yBACzC,CAAC,CAAC;oBACL,CAAC;oBAED,MAAM,WAAW,GAAgB;wBAC/B,MAAM,EAAE,QAAQ;wBAChB,SAAS,EAAE,eAAe;wBAC1B,KAAK,EAAE,YAAY;wBACnB,WAAW,EAAE,UAAU,EAAE,YAAY,IAAI,CAAC;wBAC1C,YAAY,EAAE,UAAU,EAAE,gBAAgB,IAAI,CAAC;qBAChD,CAAC;oBAEF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC;oBAChC,OAAO,WAAW,CAAC;gBACrB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,SAAS,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;oBAChE,MAAM,WAAW,GAAG,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;oBAC9D,MAAM,WAAW,GAAG,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;oBAE5D,IAAI,WAAW,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;wBACxC,MAAM,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;wBAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,OAAO,IAAI,UAAU,KAAK,WAAW,iBAAiB,MAAM,GAAG,IAAI,QAAQ,CAAC,CAAC;wBAC7G,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;wBAC9C,SAAS;oBACX,CAAC;oBAED,yEAAyE;oBACzE,IAAI,QAAQ,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACtC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,YAAY,YAAY,WAAW,IAAI,CAAC,CAAC;wBACpE,MAAM;oBACR,CAAC;oBAED,wBAAwB;oBACxB,MAAM,IAAI,KAAK,CAAC,GAAG,WAAW,WAAW,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC9F,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,yDAAyD;IACjD,MAAM,CAAC,kBAAkB,CAAC,GAAU;QAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;QAE9B,wCAAwC;QACxC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACzD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC;gBACvE,IAAI,MAAM;oBAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QAC5B,CAAC;QAED,aAAa;QACb,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACpE,OAAO,6CAA6C,CAAC;QACvD,CAAC;QAED,iBAAiB;QACjB,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClF,OAAO,6FAA6F,CAAC;QACvG,CAAC;QAED,OAAO;QACP,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACvH,OAAO,gDAAgD,CAAC;QAC1D,CAAC;QAED,QAAQ;QACR,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7G,OAAO,kFAAkF,CAAC;QAC5F,CAAC;QAED,yBAAyB;QACzB,IAAI,GAAG,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;YAC5C,OAAO,sEAAsE,CAAC;QAChF,CAAC;QAED,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,qDAAqD;IAC7C,MAAM,CAAC,gBAAgB,CAAC,GAAU;QACxC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;YACxB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnB,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;YACvB,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YACxC,GAAG,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { AgentRunOptions, AgentResult, ToolCallRecord, ModelInfo } from './types.js';
|
|
2
2
|
export { AgentRunner } from './agent.js';
|
|
3
3
|
export { SessionManager, type Session } from './session.js';
|
|
4
|
-
export { SUPPORTED_MODELS, FEATURED_MODELS, DEFAULT_MODEL, getModelInfo, fetchOpenRouterModels } from './models.js';
|
|
4
|
+
export { SUPPORTED_MODELS, FEATURED_MODELS, DEFAULT_MODEL, getModelInfo, fetchOpenRouterModels, getFallbacks, FALLBACK_CHAIN } from './models.js';
|
|
5
5
|
export { createTools } from './tools/index.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { AgentRunner } from './agent.js';
|
|
2
2
|
export { SessionManager } from './session.js';
|
|
3
|
-
export { SUPPORTED_MODELS, FEATURED_MODELS, DEFAULT_MODEL, getModelInfo, fetchOpenRouterModels } from './models.js';
|
|
3
|
+
export { SUPPORTED_MODELS, FEATURED_MODELS, DEFAULT_MODEL, getModelInfo, fetchOpenRouterModels, getFallbacks, FALLBACK_CHAIN } from './models.js';
|
|
4
4
|
export { createTools } from './tools/index.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAgB,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAgB,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClJ,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -4,6 +4,11 @@ export declare const FEATURED_MODELS: ModelInfo[];
|
|
|
4
4
|
/** @deprecated Use FEATURED_MODELS instead */
|
|
5
5
|
export declare const SUPPORTED_MODELS: ModelInfo[];
|
|
6
6
|
export declare const DEFAULT_MODEL = "anthropic/claude-sonnet-4";
|
|
7
|
+
/** Fallback chain — if primary model fails, try these in order */
|
|
8
|
+
export declare const FALLBACK_CHAIN: Record<string, string[]>;
|
|
9
|
+
/** Default fallback for any model not in the chain */
|
|
10
|
+
export declare const DEFAULT_FALLBACKS: string[];
|
|
11
|
+
export declare function getFallbacks(modelId: string): string[];
|
|
7
12
|
export declare function getModelInfo(id: string): ModelInfo;
|
|
8
13
|
/** Fetches all available models from OpenRouter API */
|
|
9
14
|
export declare function fetchOpenRouterModels(apiKey: string): Promise<ModelInfo[]>;
|
|
@@ -13,6 +13,29 @@ export const FEATURED_MODELS = [
|
|
|
13
13
|
/** @deprecated Use FEATURED_MODELS instead */
|
|
14
14
|
export const SUPPORTED_MODELS = FEATURED_MODELS;
|
|
15
15
|
export const DEFAULT_MODEL = 'anthropic/claude-sonnet-4';
|
|
16
|
+
/** Fallback chain — if primary model fails, try these in order */
|
|
17
|
+
export const FALLBACK_CHAIN = {
|
|
18
|
+
// Anthropic fallbacks
|
|
19
|
+
'anthropic/claude-sonnet-4': ['openai/gpt-4o', 'google/gemini-2.5-flash'],
|
|
20
|
+
'anthropic/claude-haiku-4': ['openai/gpt-4o-mini', 'google/gemini-2.5-flash'],
|
|
21
|
+
// OpenAI fallbacks
|
|
22
|
+
'openai/gpt-4o': ['anthropic/claude-sonnet-4', 'google/gemini-2.5-flash'],
|
|
23
|
+
'openai/gpt-4o-mini': ['anthropic/claude-haiku-4', 'google/gemini-2.5-flash'],
|
|
24
|
+
// Google fallbacks
|
|
25
|
+
'google/gemini-2.5-flash': ['openai/gpt-4o-mini', 'anthropic/claude-haiku-4'],
|
|
26
|
+
'google/gemini-2.5-pro': ['anthropic/claude-sonnet-4', 'openai/gpt-4o'],
|
|
27
|
+
// DeepSeek fallbacks
|
|
28
|
+
'deepseek/deepseek-chat': ['openai/gpt-4o-mini', 'google/gemini-2.5-flash'],
|
|
29
|
+
// Meta fallbacks
|
|
30
|
+
'meta-llama/llama-4-maverick': ['openai/gpt-4o-mini', 'google/gemini-2.5-flash'],
|
|
31
|
+
// Mistral fallbacks
|
|
32
|
+
'mistralai/mistral-large': ['openai/gpt-4o', 'anthropic/claude-sonnet-4'],
|
|
33
|
+
};
|
|
34
|
+
/** Default fallback for any model not in the chain */
|
|
35
|
+
export const DEFAULT_FALLBACKS = ['openai/gpt-4o-mini', 'google/gemini-2.5-flash', 'anthropic/claude-haiku-4'];
|
|
36
|
+
export function getFallbacks(modelId) {
|
|
37
|
+
return FALLBACK_CHAIN[modelId] ?? DEFAULT_FALLBACKS;
|
|
38
|
+
}
|
|
16
39
|
/** Default context window for unknown models */
|
|
17
40
|
const DEFAULT_CONTEXT_WINDOW = 128000;
|
|
18
41
|
export function getModelInfo(id) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAEA,gGAAgG;AAChG,MAAM,CAAC,MAAM,eAAe,GAAgB;IAC1C,EAAE,EAAE,EAAE,2BAA2B,EAAE,IAAI,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,EAAE;IACnF,EAAE,EAAE,EAAE,0BAA0B,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE;IACjF,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE;IAC9D,EAAE,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE;IACxE,EAAE,EAAE,EAAE,yBAAyB,EAAE,IAAI,EAAE,kBAAkB,EAAE,aAAa,EAAE,OAAO,EAAE;IACnF,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE;IAC/E,EAAE,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE;IAC3E,EAAE,EAAE,EAAE,yBAAyB,EAAE,IAAI,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,EAAE;IAC/E,EAAE,EAAE,EAAE,6BAA6B,EAAE,IAAI,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE;CACvF,CAAC;AAEF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAEhD,MAAM,CAAC,MAAM,aAAa,GAAG,2BAA2B,CAAC;AAEzD,gDAAgD;AAChD,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAEtC,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,2DAA2D;IAC3D,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAClG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE,CAAC;AAC7D,CAAC;AAED,uDAAuD;AACvD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAAc;IACxD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,qCAAqC,EAAE;YAC7D,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,MAAM,EAAE,EAAE;SACjD,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,eAAe,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA4E,CAAC;QACxG,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,aAAa,EAAE,CAAC,CAAC,cAAc,IAAI,sBAAsB;SAC1D,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,eAAe,CAAC;IACzB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|