azerclaw 2.1.0 → 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.
Files changed (81) hide show
  1. package/README.md +3 -3
  2. package/bin/azerclaw.ts +11 -1
  3. package/dist/bin/azerclaw.d.ts +0 -25
  4. package/dist/bin/azerclaw.d.ts.map +1 -1
  5. package/dist/bin/azerclaw.js +10 -2
  6. package/dist/bin/azerclaw.js.map +1 -1
  7. package/dist/src/agents/builtin.js +12 -12
  8. package/dist/src/cli/animations/fish.d.ts.map +1 -1
  9. package/dist/src/cli/animations/fish.js +10 -0
  10. package/dist/src/cli/animations/fish.js.map +1 -1
  11. package/dist/src/cli/commands/chat.d.ts +1 -1
  12. package/dist/src/cli/commands/chat.d.ts.map +1 -1
  13. package/dist/src/cli/commands/chat.js +16 -2
  14. package/dist/src/cli/commands/chat.js.map +1 -1
  15. package/dist/src/cli/commands/models.d.ts.map +1 -1
  16. package/dist/src/cli/commands/models.js +7 -2
  17. package/dist/src/cli/commands/models.js.map +1 -1
  18. package/dist/src/cli/commands/onboard.d.ts +1 -1
  19. package/dist/src/cli/commands/onboard.js +1 -1
  20. package/dist/src/cli/commands/tui.d.ts.map +1 -1
  21. package/dist/src/cli/commands/tui.js +15 -0
  22. package/dist/src/cli/commands/tui.js.map +1 -1
  23. package/dist/src/config/manager.d.ts +1 -1
  24. package/dist/src/config/manager.d.ts.map +1 -1
  25. package/dist/src/config/manager.js +6 -14
  26. package/dist/src/config/manager.js.map +1 -1
  27. package/dist/src/config/schema.d.ts +43 -802
  28. package/dist/src/config/schema.d.ts.map +1 -1
  29. package/dist/src/config/schema.js +83 -140
  30. package/dist/src/config/schema.js.map +1 -1
  31. package/dist/src/core/runtime.d.ts.map +1 -1
  32. package/dist/src/core/runtime.js +23 -4
  33. package/dist/src/core/runtime.js.map +1 -1
  34. package/dist/src/index.d.ts +0 -3
  35. package/dist/src/index.d.ts.map +1 -1
  36. package/dist/src/index.js +0 -3
  37. package/dist/src/index.js.map +1 -1
  38. package/dist/src/providers/base.d.ts +2 -0
  39. package/dist/src/providers/base.d.ts.map +1 -1
  40. package/dist/src/providers/base.js.map +1 -1
  41. package/dist/src/providers/openai.d.ts.map +1 -1
  42. package/dist/src/providers/openai.js +51 -17
  43. package/dist/src/providers/openai.js.map +1 -1
  44. package/dist/src/providers/router.d.ts +1 -2
  45. package/dist/src/providers/router.d.ts.map +1 -1
  46. package/dist/src/providers/router.js +37 -135
  47. package/dist/src/providers/router.js.map +1 -1
  48. package/dist/src/skills/loader.d.ts +1 -1
  49. package/dist/src/skills/loader.js +1 -1
  50. package/dist/src/tools/index.d.ts.map +1 -1
  51. package/dist/src/tools/index.js +1 -0
  52. package/dist/src/tools/index.js.map +1 -1
  53. package/dist/src/tools/mcp.d.ts.map +1 -1
  54. package/dist/src/tools/mcp.js +4 -1
  55. package/dist/src/tools/mcp.js.map +1 -1
  56. package/dist/src/tools/specialized.d.ts +5 -0
  57. package/dist/src/tools/specialized.d.ts.map +1 -1
  58. package/dist/src/tools/specialized.js +38 -1
  59. package/dist/src/tools/specialized.js.map +1 -1
  60. package/dist/src/tools/visual.d.ts.map +1 -1
  61. package/dist/src/tools/visual.js +1 -36
  62. package/dist/src/tools/visual.js.map +1 -1
  63. package/dist/src/workflow/engine.d.ts +1 -1
  64. package/dist/src/workflow/engine.js +1 -1
  65. package/package.json +1 -1
  66. package/dist/src/providers/anthropic.d.ts +0 -25
  67. package/dist/src/providers/anthropic.d.ts.map +0 -1
  68. package/dist/src/providers/anthropic.js +0 -163
  69. package/dist/src/providers/anthropic.js.map +0 -1
  70. package/dist/src/providers/google.d.ts +0 -23
  71. package/dist/src/providers/google.d.ts.map +0 -1
  72. package/dist/src/providers/google.js +0 -118
  73. package/dist/src/providers/google.js.map +0 -1
  74. package/dist/src/providers/ollama.d.ts +0 -24
  75. package/dist/src/providers/ollama.d.ts.map +0 -1
  76. package/dist/src/providers/ollama.js +0 -81
  77. package/dist/src/providers/ollama.js.map +0 -1
  78. package/dist/src/providers/openrouter.d.ts +0 -21
  79. package/dist/src/providers/openrouter.d.ts.map +0 -1
  80. package/dist/src/providers/openrouter.js +0 -65
  81. package/dist/src/providers/openrouter.js.map +0 -1
@@ -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
- const config = (0, manager_1.getConfigManager)().getAll();
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;;;AAGH,+CAAqD;AAExC,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,MAAM,MAAM,GAAG,IAAA,0BAAgB,GAAE,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;QAE1C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACjD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC;QACxF,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YACpC,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAE7B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,mCAAmC,EAAE;gBACjF,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;oBAC1C,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,YAAY,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;YAEpD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAErC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,iCAAiC,QAAQ,aAAa,IAAI,CAAC,MAAM,EAAE;gBAC3E,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;aACjC,CAAC;QACJ,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;CACF,CAAC"}
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 OpenClaw's "Lobster" engine.
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 OpenClaw's "Lobster" engine.
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,6 +1,6 @@
1
1
  {
2
2
  "name": "azerclaw",
3
- "version": "2.1.0",
3
+ "version": "2.1.2",
4
4
  "description": "🐟 AZERCLAW — Open-source, BYOK AI agent for your terminal. Your AI, Your Keys, Your Way.",
5
5
  "main": "dist/src/index.js",
6
6
  "bin": {
@@ -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"}
@@ -1,118 +0,0 @@
1
- "use strict";
2
- /**
3
- * 🐟 AZERCLAW Google Gemini Provider
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.GoogleProvider = void 0;
7
- const generative_ai_1 = require("@google/generative-ai");
8
- const base_1 = require("./base");
9
- class GoogleProvider extends base_1.BaseProvider {
10
- name = 'google';
11
- displayName = 'Google Gemini';
12
- client;
13
- defaultModel;
14
- constructor(config) {
15
- super();
16
- this.defaultModel = config.defaultModel || 'gemini-2.5-flash';
17
- this.client = new generative_ai_1.GoogleGenerativeAI(config.apiKey);
18
- }
19
- async isAvailable() {
20
- const result = await this.validateConnection();
21
- return result.valid;
22
- }
23
- async complete(options) {
24
- const modelId = options.model || this.defaultModel;
25
- try {
26
- const model = this.client.getGenerativeModel({ model: modelId });
27
- const systemPrompt = options.systemPrompt ||
28
- options.messages.find(m => m.role === 'system')?.content || '';
29
- const history = options.messages
30
- .filter(m => m.role !== 'system')
31
- .map(m => ({
32
- role: m.role === 'assistant' ? 'model' : 'user',
33
- parts: [{ text: m.content }],
34
- }));
35
- // Get the last user message
36
- const lastMessage = history.pop();
37
- if (!lastMessage) {
38
- return { content: '', model: modelId, provider: this.name, finishReason: 'error' };
39
- }
40
- const chat = model.startChat({
41
- history: history,
42
- systemInstruction: systemPrompt ? { role: 'system', parts: [{ text: systemPrompt }] } : undefined,
43
- });
44
- const result = await chat.sendMessage(lastMessage.parts[0].text);
45
- const response = result.response;
46
- return {
47
- content: response.text(),
48
- model: modelId,
49
- provider: this.name,
50
- finishReason: 'stop',
51
- usage: response.usageMetadata ? {
52
- promptTokens: response.usageMetadata.promptTokenCount || 0,
53
- completionTokens: response.usageMetadata.candidatesTokenCount || 0,
54
- totalTokens: response.usageMetadata.totalTokenCount || 0,
55
- } : undefined,
56
- };
57
- }
58
- catch (error) {
59
- return { content: '', model: modelId, provider: this.name, finishReason: 'error' };
60
- }
61
- }
62
- async *stream(options) {
63
- const modelId = options.model || this.defaultModel;
64
- try {
65
- const model = this.client.getGenerativeModel({ model: modelId });
66
- const systemPrompt = options.systemPrompt ||
67
- options.messages.find(m => m.role === 'system')?.content || '';
68
- const history = options.messages
69
- .filter(m => m.role !== 'system')
70
- .map(m => ({
71
- role: m.role === 'assistant' ? 'model' : 'user',
72
- parts: [{ text: m.content }],
73
- }));
74
- const lastMessage = history.pop();
75
- if (!lastMessage) {
76
- yield { type: 'error', error: 'No messages provided' };
77
- return;
78
- }
79
- const chat = model.startChat({
80
- history: history,
81
- systemInstruction: systemPrompt ? { role: 'system', parts: [{ text: systemPrompt }] } : undefined,
82
- });
83
- const result = await chat.sendMessageStream(lastMessage.parts[0].text);
84
- for await (const chunk of result.stream) {
85
- const text = chunk.text();
86
- if (text) {
87
- yield { type: 'text', content: text };
88
- }
89
- }
90
- yield { type: 'done' };
91
- }
92
- catch (error) {
93
- yield { type: 'error', error: error.message || 'Unknown error' };
94
- }
95
- }
96
- async listModels() {
97
- return [
98
- { id: 'gemini-2.5-pro', name: 'Gemini 2.5 Pro', provider: this.name, contextWindow: 1048576, supportsTools: true, supportsStreaming: true },
99
- { id: 'gemini-2.5-flash', name: 'Gemini 2.5 Flash', provider: this.name, contextWindow: 1048576, supportsTools: true, supportsStreaming: true },
100
- { id: 'gemini-2.0-flash', name: 'Gemini 2.0 Flash', provider: this.name, contextWindow: 1048576, supportsTools: true, supportsStreaming: true },
101
- ];
102
- }
103
- async validateConnection() {
104
- try {
105
- const model = this.client.getGenerativeModel({ model: this.defaultModel });
106
- await model.generateContent('test');
107
- return { valid: true };
108
- }
109
- catch (error) {
110
- if (error.message?.includes('API_KEY')) {
111
- return { valid: false, error: 'Invalid API key' };
112
- }
113
- return { valid: false, error: error.message || 'Connection failed' };
114
- }
115
- }
116
- }
117
- exports.GoogleProvider = GoogleProvider;
118
- //# sourceMappingURL=google.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/providers/google.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- /**
2
- * 🐟 AZERCLAW Ollama Provider (Local Models)
3
- */
4
- import { BaseProvider, CompletionOptions, CompletionResult, StreamChunk, ModelInfo } from './base';
5
- export declare class OllamaProvider extends BaseProvider {
6
- readonly name = "ollama";
7
- readonly displayName = "Ollama (Local)";
8
- private client;
9
- private baseUrl;
10
- private defaultModel;
11
- constructor(config: {
12
- baseUrl?: string;
13
- defaultModel?: string;
14
- });
15
- isAvailable(): Promise<boolean>;
16
- complete(options: CompletionOptions): Promise<CompletionResult>;
17
- stream(options: CompletionOptions): AsyncGenerator<StreamChunk>;
18
- listModels(): Promise<ModelInfo[]>;
19
- validateConnection(): Promise<{
20
- valid: boolean;
21
- error?: string;
22
- }>;
23
- }
24
- //# sourceMappingURL=ollama.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../src/providers/ollama.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnG,qBAAa,cAAe,SAAQ,YAAY;IAC9C,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,oBAAoB;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;IAOzD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAS9D,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAAC,WAAW,CAAC;IAYhE,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;CAIxE"}
@@ -1,81 +0,0 @@
1
- "use strict";
2
- /**
3
- * 🐟 AZERCLAW Ollama Provider (Local Models)
4
- */
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.OllamaProvider = void 0;
10
- const openai_1 = __importDefault(require("openai"));
11
- const base_1 = require("./base");
12
- class OllamaProvider extends base_1.BaseProvider {
13
- name = 'ollama';
14
- displayName = 'Ollama (Local)';
15
- client;
16
- baseUrl;
17
- defaultModel;
18
- constructor(config) {
19
- super();
20
- this.baseUrl = config.baseUrl || 'http://localhost:11434';
21
- this.defaultModel = config.defaultModel || 'llama3.1';
22
- this.client = new openai_1.default({ apiKey: 'ollama', baseURL: `${this.baseUrl}/v1` });
23
- }
24
- async isAvailable() {
25
- try {
26
- const res = await fetch(`${this.baseUrl}/api/tags`);
27
- return res.ok;
28
- }
29
- catch {
30
- return false;
31
- }
32
- }
33
- async complete(options) {
34
- const model = options.model || this.defaultModel;
35
- try {
36
- const msgs = options.systemPrompt ? [{ role: 'system', content: options.systemPrompt }, ...options.messages] : options.messages;
37
- const response = await this.client.chat.completions.create({ model, messages: msgs, max_tokens: options.maxTokens || 4096, temperature: options.temperature ?? 0.7 });
38
- return { content: response.choices[0].message?.content || '', model, provider: this.name, finishReason: 'stop' };
39
- }
40
- catch {
41
- return { content: '', model, provider: this.name, finishReason: 'error' };
42
- }
43
- }
44
- async *stream(options) {
45
- const model = options.model || this.defaultModel;
46
- try {
47
- const msgs = options.systemPrompt ? [{ role: 'system', content: options.systemPrompt }, ...options.messages] : options.messages;
48
- const stream = await this.client.chat.completions.create({ model, messages: msgs, max_tokens: options.maxTokens || 4096, stream: true });
49
- for await (const chunk of stream) {
50
- if (chunk.choices[0]?.delta?.content)
51
- yield { type: 'text', content: chunk.choices[0].delta.content };
52
- if (chunk.choices[0]?.finish_reason)
53
- yield { type: 'done' };
54
- }
55
- }
56
- catch (e) {
57
- yield { type: 'error', error: e.message || 'Ollama connection failed' };
58
- }
59
- }
60
- async listModels() {
61
- try {
62
- const res = await fetch(`${this.baseUrl}/api/tags`);
63
- const data = await res.json();
64
- return (data.models || []).map((m) => ({ id: m.name, name: m.name, provider: this.name, contextWindow: 8192, supportsTools: false, supportsStreaming: true }));
65
- }
66
- catch {
67
- return [];
68
- }
69
- }
70
- async validateConnection() {
71
- try {
72
- const res = await fetch(`${this.baseUrl}/api/tags`);
73
- return res.ok ? { valid: true } : { valid: false, error: `HTTP ${res.status}` };
74
- }
75
- catch {
76
- return { valid: false, error: 'Cannot connect to Ollama' };
77
- }
78
- }
79
- }
80
- exports.OllamaProvider = OllamaProvider;
81
- //# sourceMappingURL=ollama.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../../src/providers/ollama.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- /**
2
- * 🐟 AZERCLAW OpenRouter Provider
3
- * Specialized provider for OpenRouter with free-model filtering.
4
- */
5
- import { OpenAIProvider } from './openai';
6
- import { ModelInfo } from './base';
7
- export declare class OpenRouterProvider extends OpenAIProvider {
8
- readonly name = "openrouter";
9
- readonly displayName = "OpenRouter";
10
- constructor(config: {
11
- apiKey: string;
12
- baseUrl?: string;
13
- defaultModel?: string;
14
- });
15
- /**
16
- * List all models, but filter for FREE models and include availability status.
17
- */
18
- listModels(): Promise<ModelInfo[]>;
19
- private getFreeDefaultModels;
20
- }
21
- //# sourceMappingURL=openrouter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../../src/providers/openrouter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,SAAkB,IAAI,gBAAgB;IACtC,SAAkB,WAAW,gBAAgB;gBAEjC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;IAQ/E;;OAEG;IACY,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAoCjD,OAAO,CAAC,oBAAoB;CAO7B"}