azerclaw 2.1.1 → 2.1.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/README.md +3 -3
- package/dist/src/agents/builtin.js +12 -12
- package/dist/src/cli/animations/fish.d.ts.map +1 -1
- package/dist/src/cli/animations/fish.js +10 -0
- package/dist/src/cli/animations/fish.js.map +1 -1
- package/dist/src/cli/commands/chat.d.ts +1 -1
- package/dist/src/cli/commands/chat.d.ts.map +1 -1
- package/dist/src/cli/commands/chat.js +16 -2
- package/dist/src/cli/commands/chat.js.map +1 -1
- package/dist/src/cli/commands/onboard.d.ts +1 -1
- package/dist/src/cli/commands/onboard.js +1 -1
- package/dist/src/cli/commands/tui.d.ts.map +1 -1
- package/dist/src/cli/commands/tui.js +15 -0
- package/dist/src/cli/commands/tui.js.map +1 -1
- package/dist/src/config/manager.d.ts +1 -1
- package/dist/src/config/manager.d.ts.map +1 -1
- package/dist/src/config/manager.js +6 -14
- package/dist/src/config/manager.js.map +1 -1
- package/dist/src/config/schema.d.ts +43 -791
- package/dist/src/config/schema.d.ts.map +1 -1
- package/dist/src/config/schema.js +40 -109
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/core/runtime.js +1 -1
- package/dist/src/index.d.ts +0 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +0 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/providers/openai.d.ts.map +1 -1
- package/dist/src/providers/openai.js +34 -14
- package/dist/src/providers/openai.js.map +1 -1
- package/dist/src/providers/router.d.ts +1 -2
- package/dist/src/providers/router.d.ts.map +1 -1
- package/dist/src/providers/router.js +37 -139
- package/dist/src/providers/router.js.map +1 -1
- package/dist/src/skills/loader.d.ts +1 -1
- package/dist/src/skills/loader.js +1 -1
- package/dist/src/tools/visual.d.ts.map +1 -1
- package/dist/src/tools/visual.js +1 -36
- package/dist/src/tools/visual.js.map +1 -1
- package/dist/src/workflow/engine.d.ts +1 -1
- package/dist/src/workflow/engine.js +1 -1
- package/package.json +1 -1
- package/dist/src/providers/anthropic.d.ts +0 -25
- package/dist/src/providers/anthropic.d.ts.map +0 -1
- package/dist/src/providers/anthropic.js +0 -163
- package/dist/src/providers/anthropic.js.map +0 -1
- package/dist/src/providers/google.d.ts +0 -23
- package/dist/src/providers/google.d.ts.map +0 -1
- package/dist/src/providers/google.js +0 -118
- package/dist/src/providers/google.js.map +0 -1
- package/dist/src/providers/ollama.d.ts +0 -24
- package/dist/src/providers/ollama.d.ts.map +0 -1
- package/dist/src/providers/ollama.js +0 -81
- package/dist/src/providers/ollama.js.map +0 -1
- package/dist/src/providers/openrouter.d.ts +0 -21
- package/dist/src/providers/openrouter.d.ts.map +0 -1
- package/dist/src/providers/openrouter.js +0 -65
- package/dist/src/providers/openrouter.js.map +0 -1
- package/dist/src/providers/vought.d.ts +0 -20
- package/dist/src/providers/vought.d.ts.map +0 -1
- package/dist/src/providers/vought.js +0 -35
- package/dist/src/providers/vought.js.map +0 -1
|
@@ -1,176 +1,74 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
3
|
* 🐟 AZERCLAW Multi-Provider LLM Router
|
|
4
|
-
* Routes requests to the best available provider
|
|
4
|
+
* Routes requests to the best available provider.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.ProviderRouter = void 0;
|
|
8
8
|
exports.getRouter = getRouter;
|
|
9
9
|
exports.resetRouter = resetRouter;
|
|
10
10
|
const openai_1 = require("./openai");
|
|
11
|
-
const anthropic_1 = require("./anthropic");
|
|
12
|
-
const google_1 = require("./google");
|
|
13
|
-
const ollama_1 = require("./ollama");
|
|
14
|
-
const openrouter_1 = require("./openrouter");
|
|
15
|
-
const vought_1 = require("./vought");
|
|
16
11
|
const manager_1 = require("../config/manager");
|
|
17
12
|
class ProviderRouter {
|
|
18
13
|
providers = new Map();
|
|
19
|
-
fallbackChain;
|
|
20
14
|
constructor() {
|
|
21
15
|
const config = (0, manager_1.getConfigManager)();
|
|
22
16
|
const aiConfig = config.getAll().ai;
|
|
23
|
-
this.fallbackChain = aiConfig.fallbackChain;
|
|
24
17
|
this.initProviders(aiConfig);
|
|
25
18
|
}
|
|
26
19
|
initProviders(aiConfig) {
|
|
27
20
|
const p = aiConfig.providers;
|
|
28
|
-
if (p.
|
|
29
|
-
this.providers.set('
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
if (p.google.enabled && p.google.apiKey) {
|
|
35
|
-
this.providers.set('google', new google_1.GoogleProvider(p.google));
|
|
36
|
-
}
|
|
37
|
-
if (p.ollama.enabled) {
|
|
38
|
-
this.providers.set('ollama', new ollama_1.OllamaProvider(p.ollama));
|
|
39
|
-
}
|
|
40
|
-
if (p.lmstudio?.enabled) {
|
|
41
|
-
// LM Studio exposes an OpenAI-compatible API on localhost:1234
|
|
42
|
-
this.providers.set('lmstudio', new openai_1.OpenAIProvider({
|
|
43
|
-
apiKey: 'lm-studio',
|
|
44
|
-
baseUrl: p.lmstudio.baseUrl || 'http://localhost:1234/v1',
|
|
45
|
-
defaultModel: p.lmstudio.defaultModel || 'local-model',
|
|
21
|
+
if (p.opencode && p.opencode.enabled && p.opencode.apiKey) {
|
|
22
|
+
this.providers.set('opencode', new openai_1.OpenAIProvider({
|
|
23
|
+
apiKey: p.opencode.apiKey,
|
|
24
|
+
baseUrl: p.opencode.baseUrl || 'https://opencode.ai/zen/v1',
|
|
25
|
+
defaultModel: p.opencode.defaultModel || 'minimax-m2.5-free'
|
|
46
26
|
}));
|
|
47
27
|
}
|
|
48
|
-
if (
|
|
49
|
-
|
|
50
|
-
this.providers.set('localai', new openai_1.OpenAIProvider({
|
|
51
|
-
apiKey: 'local-ai',
|
|
52
|
-
baseUrl: p.localai.baseUrl || 'http://localhost:8080/v1',
|
|
53
|
-
defaultModel: p.localai.defaultModel || 'local-model',
|
|
54
|
-
}));
|
|
55
|
-
}
|
|
56
|
-
if (p.groq.enabled && p.groq.apiKey) {
|
|
57
|
-
// Groq uses OpenAI-compatible API
|
|
58
|
-
this.providers.set('groq', new openai_1.OpenAIProvider({ apiKey: p.groq.apiKey, baseUrl: p.groq.baseUrl, defaultModel: p.groq.defaultModel }));
|
|
59
|
-
}
|
|
60
|
-
if (p.deepseek.enabled && p.deepseek.apiKey) {
|
|
61
|
-
this.providers.set('deepseek', new openai_1.OpenAIProvider({ apiKey: p.deepseek.apiKey, baseUrl: p.deepseek.baseUrl, defaultModel: p.deepseek.defaultModel }));
|
|
62
|
-
}
|
|
63
|
-
if (p.openrouter.enabled && p.openrouter.apiKey) {
|
|
64
|
-
this.providers.set('openrouter', new openrouter_1.OpenRouterProvider({ apiKey: p.openrouter.apiKey, baseUrl: p.openrouter.baseUrl, defaultModel: p.openrouter.defaultModel }));
|
|
65
|
-
}
|
|
66
|
-
if (p.custom.enabled && p.custom.apiKey && p.custom.baseUrl) {
|
|
67
|
-
this.providers.set('custom', new vought_1.VoughtGateProvider({ apiKey: p.custom.apiKey, baseUrl: p.custom.baseUrl, defaultModel: p.custom.defaultModel }));
|
|
28
|
+
if (process.env.AZERCLAW_DEBUG) {
|
|
29
|
+
console.log(`[Router] Initialized providers: ${Array.from(this.providers.keys()).join(', ')}`);
|
|
68
30
|
}
|
|
69
31
|
}
|
|
70
32
|
getProvider(name) {
|
|
71
33
|
if (name)
|
|
72
34
|
return this.providers.get(name);
|
|
73
|
-
const config = (0, manager_1.getConfigManager)();
|
|
74
|
-
const defaultProvider = config.
|
|
75
|
-
return this.providers.get(defaultProvider) || this.providers.values().next().value;
|
|
35
|
+
const config = (0, manager_1.getConfigManager)().getAll();
|
|
36
|
+
const defaultProvider = config.ai.defaultProvider;
|
|
37
|
+
return this.providers.get(defaultProvider) || this.providers.get('opencode') || this.providers.values().next().value;
|
|
76
38
|
}
|
|
77
39
|
async complete(options, preferredProvider) {
|
|
78
|
-
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
40
|
+
const config = (0, manager_1.getConfigManager)().getAll();
|
|
41
|
+
const provider = this.getProvider(preferredProvider);
|
|
42
|
+
if (!provider) {
|
|
43
|
+
return { content: 'Error: No AI engine configured. Run `azerclaw onboard`.', model: 'none', provider: 'none', finishReason: 'error' };
|
|
44
|
+
}
|
|
45
|
+
const providerName = preferredProvider || provider.name || config.ai.defaultProvider;
|
|
46
|
+
const providerConfig = config.ai.providers[providerName] || config.ai.providers.opencode;
|
|
47
|
+
const defaultModel = providerConfig?.defaultModel;
|
|
48
|
+
const modelChain = [options.model && options.model !== 'auto' ? options.model : defaultModel, ...config.ai.modelFallbackChain || []];
|
|
83
49
|
let lastError = '';
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if (defaultProvider)
|
|
87
|
-
tryOrder.push(defaultProvider);
|
|
88
|
-
tryOrder.push(...this.fallbackChain);
|
|
89
|
-
// Add all registered providers as final fallback
|
|
90
|
-
for (const name of this.providers.keys())
|
|
91
|
-
tryOrder.push(name);
|
|
92
|
-
for (const providerName of tryOrder) {
|
|
93
|
-
if (tried.has(providerName))
|
|
50
|
+
for (const modelId of modelChain) {
|
|
51
|
+
if (!modelId)
|
|
94
52
|
continue;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
if (!provider)
|
|
98
|
-
continue;
|
|
99
|
-
let currentOptions = { ...options };
|
|
100
|
-
// Auto-model selection: if model is 'auto', find the best available model
|
|
101
|
-
if (options.model === 'auto') {
|
|
102
|
-
try {
|
|
103
|
-
const models = await provider.listModels();
|
|
104
|
-
// Calculate required context window
|
|
105
|
-
const contentLen = options.messages.reduce((acc, m) => acc + m.content.length, 0);
|
|
106
|
-
const estimatedTokens = Math.ceil(contentLen / 4) + (options.maxTokens || 4096) + 1000; // Buffer
|
|
107
|
-
// Find models that fit
|
|
108
|
-
const fittingModels = models.filter(m => m.contextWindow >= estimatedTokens);
|
|
109
|
-
if (fittingModels.length > 0) {
|
|
110
|
-
// Sort by context window (prefer smaller ones for speed/cost if they fit)
|
|
111
|
-
fittingModels.sort((a, b) => a.contextWindow - b.contextWindow);
|
|
112
|
-
currentOptions.model = fittingModels[0].id;
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
// Fallback to largest available
|
|
116
|
-
models.sort((a, b) => b.contextWindow - a.contextWindow);
|
|
117
|
-
currentOptions.model = models[0].id;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
catch { /* fallback to provider default */ }
|
|
53
|
+
if (process.env.AZERCLAW_DEBUG) {
|
|
54
|
+
console.log(`[Router] Attempting model: ${modelId} on ${providerName}`);
|
|
121
55
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
? { ...m, content: m.content.replace(/Azertron X1\.0/gi, 'DEEP Ocean 1.0').replace(/AZERTRON X1\.0/gi, 'DEEP Ocean 1.0') }
|
|
128
|
-
: m)
|
|
129
|
-
};
|
|
56
|
+
try {
|
|
57
|
+
const result = await provider.complete({ ...options, model: modelId });
|
|
58
|
+
if (result.finishReason !== 'error')
|
|
59
|
+
return result;
|
|
60
|
+
lastError = result.content;
|
|
130
61
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
134
|
-
try {
|
|
135
|
-
const result = await provider.complete(currentOptions);
|
|
136
|
-
if (result.finishReason !== 'error')
|
|
137
|
-
return result;
|
|
138
|
-
// Check if error is retryable (rate limit, server error)
|
|
139
|
-
const isRetryable = result.content.includes('429') ||
|
|
140
|
-
result.content.includes('500') ||
|
|
141
|
-
result.content.includes('502') ||
|
|
142
|
-
result.content.includes('503') ||
|
|
143
|
-
result.content.includes('rate') ||
|
|
144
|
-
result.content.includes('timeout');
|
|
145
|
-
if (isRetryable && attempt < maxRetries - 1) {
|
|
146
|
-
const delay = Math.pow(2, attempt) * 1000; // 1s, 2s, 4s
|
|
147
|
-
await new Promise(r => setTimeout(r, delay));
|
|
148
|
-
continue;
|
|
149
|
-
}
|
|
150
|
-
lastError = result.content || `${providerName} returned error`;
|
|
151
|
-
break;
|
|
152
|
-
}
|
|
153
|
-
catch (e) {
|
|
154
|
-
const isRetryable = e.status === 429 || e.status >= 500 ||
|
|
155
|
-
e.code === 'ECONNREFUSED' || e.code === 'ETIMEDOUT' ||
|
|
156
|
-
e.code === 'ENOTFOUND';
|
|
157
|
-
if (isRetryable && attempt < maxRetries - 1) {
|
|
158
|
-
const delay = Math.pow(2, attempt) * 1000;
|
|
159
|
-
await new Promise(r => setTimeout(r, delay));
|
|
160
|
-
continue;
|
|
161
|
-
}
|
|
162
|
-
lastError = e.message || `${providerName} threw exception`;
|
|
163
|
-
break;
|
|
164
|
-
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
lastError = e.message;
|
|
165
64
|
}
|
|
166
65
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
: '
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
}
|
|
173
|
-
return { content: errorMsg, model: 'none', provider: 'none', finishReason: 'error' };
|
|
66
|
+
return {
|
|
67
|
+
content: `Error: All models in the chain failed. Last error: ${lastError}`,
|
|
68
|
+
model: 'none',
|
|
69
|
+
provider: providerName,
|
|
70
|
+
finishReason: 'error'
|
|
71
|
+
};
|
|
174
72
|
}
|
|
175
73
|
async *stream(options, preferredProvider) {
|
|
176
74
|
const provider = preferredProvider ? this.providers.get(preferredProvider) : this.getProvider();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/providers/router.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/providers/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
3
|
* 🐟 AZERCLAW Skills System
|
|
4
|
-
* Load and execute SKILL.md files compatible with the
|
|
4
|
+
* Load and execute SKILL.md files compatible with the Azerclaw ecosystem.
|
|
5
5
|
*/
|
|
6
6
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
7
|
if (k2 === undefined) k2 = k;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visual.d.ts","sourceRoot":"","sources":["../../../src/tools/visual.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAc,MAAM,YAAY,CAAC;AAG9C,eAAO,MAAM,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"visual.d.ts","sourceRoot":"","sources":["../../../src/tools/visual.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAc,MAAM,YAAY,CAAC;AAG9C,eAAO,MAAM,iBAAiB,EAAE,IAe/B,CAAC"}
|
package/dist/src/tools/visual.js
CHANGED
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.generateImageTool = void 0;
|
|
8
|
-
const manager_1 = require("../config/manager");
|
|
9
8
|
exports.generateImageTool = {
|
|
10
9
|
name: 'generate_image',
|
|
11
10
|
version: '2.0.0',
|
|
@@ -19,41 +18,7 @@ exports.generateImageTool = {
|
|
|
19
18
|
required: ['prompt'],
|
|
20
19
|
},
|
|
21
20
|
async execute(args) {
|
|
22
|
-
|
|
23
|
-
const custom = config.ai.providers.custom;
|
|
24
|
-
if (!custom || !custom.apiKey || !custom.baseUrl) {
|
|
25
|
-
return { success: false, output: '', error: 'Cloudflare credentials not configured' };
|
|
26
|
-
}
|
|
27
|
-
try {
|
|
28
|
-
const fetch = require('node-fetch');
|
|
29
|
-
const fs = require('fs/promises');
|
|
30
|
-
const path = require('path');
|
|
31
|
-
const response = await fetch(`${custom.baseUrl}/black-forest-labs/flux-1-schnell`, {
|
|
32
|
-
method: 'POST',
|
|
33
|
-
headers: {
|
|
34
|
-
'Authorization': `Bearer ${custom.apiKey}`,
|
|
35
|
-
'Content-Type': 'application/json',
|
|
36
|
-
},
|
|
37
|
-
body: JSON.stringify({
|
|
38
|
-
prompt: args.prompt,
|
|
39
|
-
}),
|
|
40
|
-
});
|
|
41
|
-
if (!response.ok) {
|
|
42
|
-
throw new Error(`Cloudflare AI Error: ${response.statusText}`);
|
|
43
|
-
}
|
|
44
|
-
const buffer = await response.buffer();
|
|
45
|
-
const fileName = `evidence_${Date.now()}.png`;
|
|
46
|
-
const filePath = path.join(process.cwd(), fileName);
|
|
47
|
-
await fs.writeFile(filePath, buffer);
|
|
48
|
-
return {
|
|
49
|
-
success: true,
|
|
50
|
-
output: `Image generated and saved to: ${filePath}\nPrompt: ${args.prompt}`,
|
|
51
|
-
metadata: { filePath, fileName }
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
catch (e) {
|
|
55
|
-
return { success: false, output: '', error: e.message };
|
|
56
|
-
}
|
|
21
|
+
return { success: false, output: '', error: 'Image generation is currently disabled. Vought Gate is offline.' };
|
|
57
22
|
}
|
|
58
23
|
};
|
|
59
24
|
//# sourceMappingURL=visual.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visual.js","sourceRoot":"","sources":["../../../src/tools/visual.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"visual.js","sourceRoot":"","sources":["../../../src/tools/visual.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAKU,QAAA,iBAAiB,GAAS;IACrC,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,kGAAkG;IAC/G,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;YACtE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE;SAC/E;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;IACD,KAAK,CAAC,OAAO,CAAC,IAA6B;QACzC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,iEAAiE,EAAE,CAAC;IAClH,CAAC;CACF,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 🐟 AZERCLAW Fishbone Workflow Engine
|
|
3
|
-
* Deterministic, typed pipeline system — replaces
|
|
3
|
+
* Deterministic, typed pipeline system — replaces Azerclaw's "Fishbone" engine.
|
|
4
4
|
* Supports .fishbone files for defining multi-step workflows with approval gates.
|
|
5
5
|
*/
|
|
6
6
|
export interface FishboneStep {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
3
|
* 🐟 AZERCLAW Fishbone Workflow Engine
|
|
4
|
-
* Deterministic, typed pipeline system — replaces
|
|
4
|
+
* Deterministic, typed pipeline system — replaces Azerclaw's "Fishbone" engine.
|
|
5
5
|
* Supports .fishbone files for defining multi-step workflows with approval gates.
|
|
6
6
|
*/
|
|
7
7
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
package/package.json
CHANGED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 🐟 AZERCLAW Anthropic Provider
|
|
3
|
-
* Claude models via the Anthropic API.
|
|
4
|
-
*/
|
|
5
|
-
import { BaseProvider, CompletionOptions, CompletionResult, StreamChunk, ModelInfo } from './base';
|
|
6
|
-
export declare class AnthropicProvider extends BaseProvider {
|
|
7
|
-
readonly name = "anthropic";
|
|
8
|
-
readonly displayName = "Anthropic";
|
|
9
|
-
private client;
|
|
10
|
-
private defaultModel;
|
|
11
|
-
constructor(config: {
|
|
12
|
-
apiKey: string;
|
|
13
|
-
baseUrl?: string;
|
|
14
|
-
defaultModel?: string;
|
|
15
|
-
});
|
|
16
|
-
isAvailable(): Promise<boolean>;
|
|
17
|
-
complete(options: CompletionOptions): Promise<CompletionResult>;
|
|
18
|
-
stream(options: CompletionOptions): AsyncGenerator<StreamChunk>;
|
|
19
|
-
listModels(): Promise<ModelInfo[]>;
|
|
20
|
-
validateConnection(): Promise<{
|
|
21
|
-
valid: boolean;
|
|
22
|
-
error?: string;
|
|
23
|
-
}>;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=anthropic.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,SAAS,EACV,MAAM,QAAQ,CAAC;AAEhB,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,WAAW,eAAe;IACnC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;IASzE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA2E9D,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAAC,WAAW,CAAC;IAqChE,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAQlC,kBAAkB,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAmBxE"}
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* 🐟 AZERCLAW Anthropic Provider
|
|
4
|
-
* Claude models via the Anthropic API.
|
|
5
|
-
*/
|
|
6
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
-
};
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.AnthropicProvider = void 0;
|
|
11
|
-
const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
|
|
12
|
-
const base_1 = require("./base");
|
|
13
|
-
class AnthropicProvider extends base_1.BaseProvider {
|
|
14
|
-
name = 'anthropic';
|
|
15
|
-
displayName = 'Anthropic';
|
|
16
|
-
client;
|
|
17
|
-
defaultModel;
|
|
18
|
-
constructor(config) {
|
|
19
|
-
super();
|
|
20
|
-
this.defaultModel = config.defaultModel || 'claude-sonnet-4-20250514';
|
|
21
|
-
this.client = new sdk_1.default({
|
|
22
|
-
apiKey: config.apiKey,
|
|
23
|
-
baseURL: config.baseUrl || undefined,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
async isAvailable() {
|
|
27
|
-
const result = await this.validateConnection();
|
|
28
|
-
return result.valid;
|
|
29
|
-
}
|
|
30
|
-
async complete(options) {
|
|
31
|
-
const model = options.model || this.defaultModel;
|
|
32
|
-
try {
|
|
33
|
-
const params = {
|
|
34
|
-
model,
|
|
35
|
-
max_tokens: options.maxTokens || 4096,
|
|
36
|
-
messages: options.messages
|
|
37
|
-
.filter(m => m.role !== 'system')
|
|
38
|
-
.map(m => ({
|
|
39
|
-
role: m.role === 'assistant' ? 'assistant' : 'user',
|
|
40
|
-
content: m.content,
|
|
41
|
-
})),
|
|
42
|
-
};
|
|
43
|
-
if (options.systemPrompt) {
|
|
44
|
-
params.system = options.systemPrompt;
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
const sysMsg = options.messages.find(m => m.role === 'system');
|
|
48
|
-
if (sysMsg) {
|
|
49
|
-
params.system = sysMsg.content;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
if (options.tools && options.tools.length > 0) {
|
|
53
|
-
params.tools = options.tools.map(t => ({
|
|
54
|
-
name: t.function.name,
|
|
55
|
-
description: t.function.description,
|
|
56
|
-
input_schema: t.function.parameters,
|
|
57
|
-
}));
|
|
58
|
-
}
|
|
59
|
-
const response = await this.client.messages.create(params);
|
|
60
|
-
let content = '';
|
|
61
|
-
const toolCalls = [];
|
|
62
|
-
for (const block of response.content) {
|
|
63
|
-
if (block.type === 'text') {
|
|
64
|
-
content += block.text;
|
|
65
|
-
}
|
|
66
|
-
else if (block.type === 'tool_use') {
|
|
67
|
-
toolCalls.push({
|
|
68
|
-
id: block.id,
|
|
69
|
-
type: 'function',
|
|
70
|
-
function: {
|
|
71
|
-
name: block.name,
|
|
72
|
-
arguments: JSON.stringify(block.input),
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return {
|
|
78
|
-
content,
|
|
79
|
-
toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
|
|
80
|
-
usage: {
|
|
81
|
-
promptTokens: response.usage.input_tokens,
|
|
82
|
-
completionTokens: response.usage.output_tokens,
|
|
83
|
-
totalTokens: response.usage.input_tokens + response.usage.output_tokens,
|
|
84
|
-
},
|
|
85
|
-
model: response.model,
|
|
86
|
-
provider: this.name,
|
|
87
|
-
finishReason: response.stop_reason === 'tool_use' ? 'tool_calls' :
|
|
88
|
-
response.stop_reason === 'max_tokens' ? 'length' : 'stop',
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
catch (error) {
|
|
92
|
-
return {
|
|
93
|
-
content: '',
|
|
94
|
-
model,
|
|
95
|
-
provider: this.name,
|
|
96
|
-
finishReason: 'error',
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
async *stream(options) {
|
|
101
|
-
const model = options.model || this.defaultModel;
|
|
102
|
-
try {
|
|
103
|
-
const params = {
|
|
104
|
-
model,
|
|
105
|
-
max_tokens: options.maxTokens || 4096,
|
|
106
|
-
stream: true,
|
|
107
|
-
messages: options.messages
|
|
108
|
-
.filter(m => m.role !== 'system')
|
|
109
|
-
.map(m => ({
|
|
110
|
-
role: m.role === 'assistant' ? 'assistant' : 'user',
|
|
111
|
-
content: m.content,
|
|
112
|
-
})),
|
|
113
|
-
};
|
|
114
|
-
if (options.systemPrompt) {
|
|
115
|
-
params.system = options.systemPrompt;
|
|
116
|
-
}
|
|
117
|
-
const stream = this.client.messages.stream(params);
|
|
118
|
-
for await (const event of stream) {
|
|
119
|
-
if (event.type === 'content_block_delta') {
|
|
120
|
-
const delta = event.delta;
|
|
121
|
-
if (delta.type === 'text_delta') {
|
|
122
|
-
yield { type: 'text', content: delta.text };
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
else if (event.type === 'message_stop') {
|
|
126
|
-
yield { type: 'done' };
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
catch (error) {
|
|
131
|
-
yield { type: 'error', error: error.message || 'Unknown error' };
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
async listModels() {
|
|
135
|
-
return [
|
|
136
|
-
{ id: 'claude-opus-4-20250514', name: 'Claude Opus 4', provider: this.name, contextWindow: 200000, supportsTools: true, supportsStreaming: true },
|
|
137
|
-
{ id: 'claude-sonnet-4-20250514', name: 'Claude Sonnet 4', provider: this.name, contextWindow: 200000, supportsTools: true, supportsStreaming: true },
|
|
138
|
-
{ id: 'claude-3-5-haiku-20241022', name: 'Claude 3.5 Haiku', provider: this.name, contextWindow: 200000, supportsTools: true, supportsStreaming: true },
|
|
139
|
-
];
|
|
140
|
-
}
|
|
141
|
-
async validateConnection() {
|
|
142
|
-
try {
|
|
143
|
-
await this.client.messages.create({
|
|
144
|
-
model: this.defaultModel,
|
|
145
|
-
max_tokens: 10,
|
|
146
|
-
messages: [{ role: 'user', content: 'hi' }],
|
|
147
|
-
});
|
|
148
|
-
return { valid: true };
|
|
149
|
-
}
|
|
150
|
-
catch (error) {
|
|
151
|
-
if (error.status === 401) {
|
|
152
|
-
return { valid: false, error: 'Invalid API key' };
|
|
153
|
-
}
|
|
154
|
-
// Rate limit or other errors still mean connection works
|
|
155
|
-
if (error.status === 429) {
|
|
156
|
-
return { valid: true };
|
|
157
|
-
}
|
|
158
|
-
return { valid: false, error: error.message || 'Connection failed' };
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
exports.AnthropicProvider = AnthropicProvider;
|
|
163
|
-
//# sourceMappingURL=anthropic.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/providers/anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 🐟 AZERCLAW Google Gemini Provider
|
|
3
|
-
*/
|
|
4
|
-
import { BaseProvider, CompletionOptions, CompletionResult, StreamChunk, ModelInfo } from './base';
|
|
5
|
-
export declare class GoogleProvider extends BaseProvider {
|
|
6
|
-
readonly name = "google";
|
|
7
|
-
readonly displayName = "Google Gemini";
|
|
8
|
-
private client;
|
|
9
|
-
private defaultModel;
|
|
10
|
-
constructor(config: {
|
|
11
|
-
apiKey: string;
|
|
12
|
-
defaultModel?: string;
|
|
13
|
-
});
|
|
14
|
-
isAvailable(): Promise<boolean>;
|
|
15
|
-
complete(options: CompletionOptions): Promise<CompletionResult>;
|
|
16
|
-
stream(options: CompletionOptions): AsyncGenerator<StreamChunk>;
|
|
17
|
-
listModels(): Promise<ModelInfo[]>;
|
|
18
|
-
validateConnection(): Promise<{
|
|
19
|
-
valid: boolean;
|
|
20
|
-
error?: string;
|
|
21
|
-
}>;
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=google.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../../src/providers/google.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,SAAS,EACV,MAAM,QAAQ,CAAC;AAEhB,qBAAa,cAAe,SAAQ,YAAY;IAC9C,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,mBAAmB;IACvC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;IAMvD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA8C9D,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAAC,WAAW,CAAC;IA0ChE,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAQlC,kBAAkB,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAYxE"}
|