@sparkleideas/providers 3.0.0-alpha.6-patch.17 → 3.0.0-alpha.6-patch.19

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sparkleideas/providers",
3
- "version": "3.0.0-alpha.6-patch.17",
3
+ "version": "3.0.0-alpha.6-patch.19",
4
4
  "description": "Multi-LLM Provider System for Claude Flow V3",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -1,26 +0,0 @@
1
- /**
2
- * V3 Anthropic (Claude) Provider
3
- *
4
- * Supports Claude 3.5, 3 Opus, Sonnet, and Haiku models.
5
- *
6
- * @module @sparkleideas/providers/anthropic-provider
7
- */
8
- import { BaseProvider, BaseProviderOptions } from './base-provider.js';
9
- import { LLMProvider, LLMModel, LLMRequest, LLMResponse, LLMStreamEvent, ModelInfo, ProviderCapabilities, HealthCheckResult } from './types.js';
10
- export declare class AnthropicProvider extends BaseProvider {
11
- readonly name: LLMProvider;
12
- readonly capabilities: ProviderCapabilities;
13
- private baseUrl;
14
- private headers;
15
- constructor(options: BaseProviderOptions);
16
- protected doInitialize(): Promise<void>;
17
- protected doComplete(request: LLMRequest): Promise<LLMResponse>;
18
- protected doStreamComplete(request: LLMRequest): AsyncIterable<LLMStreamEvent>;
19
- listModels(): Promise<LLMModel[]>;
20
- getModelInfo(model: LLMModel): Promise<ModelInfo>;
21
- protected doHealthCheck(): Promise<HealthCheckResult>;
22
- private buildRequest;
23
- private transformResponse;
24
- private handleErrorResponse;
25
- }
26
- //# sourceMappingURL=anthropic-provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anthropic-provider.d.ts","sourceRoot":"","sources":["../src/anthropic-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EACL,WAAW,EACX,QAAQ,EACR,UAAU,EACV,WAAW,EACX,cAAc,EACd,SAAS,EACT,oBAAoB,EACpB,iBAAiB,EAIlB,MAAM,YAAY,CAAC;AAmCpB,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAe;IACzC,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CA8DzC;IAEF,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,OAAO,CAA8B;gBAEjC,OAAO,EAAE,mBAAmB;cAIxB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;cAa7B,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;cA4BpD,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,aAAa,CAAC,cAAc,CAAC;IAqF/E,UAAU,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAIjC,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;cAoBvC,aAAa,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA2B3D,OAAO,CAAC,YAAY;IAsDpB,OAAO,CAAC,iBAAiB;YA8CX,mBAAmB;CA4BlC"}
@@ -1,513 +0,0 @@
1
- "use strict";
2
- /**
3
- * V3 Anthropic (Claude) Provider
4
- *
5
- * Supports Claude 3.5, 3 Opus, Sonnet, and Haiku models.
6
- *
7
- * @module @sparkleideas/providers/anthropic-provider
8
- */
9
- var __extends = (this && this.__extends) || (function () {
10
- var extendStatics = function (d, b) {
11
- extendStatics = Object.setPrototypeOf ||
12
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
13
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
14
- return extendStatics(d, b);
15
- };
16
- return function (d, b) {
17
- if (typeof b !== "function" && b !== null)
18
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
19
- extendStatics(d, b);
20
- function __() { this.constructor = d; }
21
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
22
- };
23
- })();
24
- var __assign = (this && this.__assign) || function () {
25
- __assign = Object.assign || function(t) {
26
- for (var s, i = 1, n = arguments.length; i < n; i++) {
27
- s = arguments[i];
28
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
29
- t[p] = s[p];
30
- }
31
- return t;
32
- };
33
- return __assign.apply(this, arguments);
34
- };
35
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
- return new (P || (P = Promise))(function (resolve, reject) {
38
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
- step((generator = generator.apply(thisArg, _arguments || [])).next());
42
- });
43
- };
44
- var __generator = (this && this.__generator) || function (thisArg, body) {
45
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
46
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
47
- function verb(n) { return function (v) { return step([n, v]); }; }
48
- function step(op) {
49
- if (f) throw new TypeError("Generator is already executing.");
50
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
51
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
52
- if (y = 0, t) op = [op[0] & 2, t.value];
53
- switch (op[0]) {
54
- case 0: case 1: t = op; break;
55
- case 4: _.label++; return { value: op[1], done: false };
56
- case 5: _.label++; y = op[1]; op = [0]; continue;
57
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
58
- default:
59
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
60
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
61
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
62
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
63
- if (t[2]) _.ops.pop();
64
- _.trys.pop(); continue;
65
- }
66
- op = body.call(thisArg, _);
67
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
68
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
69
- }
70
- };
71
- var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
72
- var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
73
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
74
- var g = generator.apply(thisArg, _arguments || []), i, q = [];
75
- return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
76
- function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
77
- function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
78
- function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
79
- function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
80
- function fulfill(value) { resume("next", value); }
81
- function reject(value) { resume("throw", value); }
82
- function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
83
- };
84
- Object.defineProperty(exports, "__esModule", { value: true });
85
- exports.AnthropicProvider = void 0;
86
- var base_provider_js_1 = require("./base-provider.js");
87
- var types_js_1 = require("./types.js");
88
- var AnthropicProvider = /** @class */ (function (_super) {
89
- __extends(AnthropicProvider, _super);
90
- function AnthropicProvider(options) {
91
- var _this = _super.call(this, options) || this;
92
- _this.name = 'anthropic';
93
- _this.capabilities = {
94
- supportedModels: [
95
- 'claude-3-5-sonnet-20241022',
96
- 'claude-3-5-sonnet-latest',
97
- 'claude-3-opus-20240229',
98
- 'claude-3-sonnet-20240229',
99
- 'claude-3-haiku-20240307',
100
- ],
101
- maxContextLength: {
102
- 'claude-3-5-sonnet-20241022': 200000,
103
- 'claude-3-5-sonnet-latest': 200000,
104
- 'claude-3-opus-20240229': 200000,
105
- 'claude-3-sonnet-20240229': 200000,
106
- 'claude-3-haiku-20240307': 200000,
107
- },
108
- maxOutputTokens: {
109
- 'claude-3-5-sonnet-20241022': 8192,
110
- 'claude-3-5-sonnet-latest': 8192,
111
- 'claude-3-opus-20240229': 4096,
112
- 'claude-3-sonnet-20240229': 4096,
113
- 'claude-3-haiku-20240307': 4096,
114
- },
115
- supportsStreaming: true,
116
- supportsToolCalling: true,
117
- supportsSystemMessages: true,
118
- supportsVision: true,
119
- supportsAudio: false,
120
- supportsFineTuning: false,
121
- supportsEmbeddings: false,
122
- supportsBatching: true,
123
- rateLimit: {
124
- requestsPerMinute: 1000,
125
- tokensPerMinute: 100000,
126
- concurrentRequests: 100,
127
- },
128
- pricing: {
129
- 'claude-3-5-sonnet-20241022': {
130
- promptCostPer1k: 0.003,
131
- completionCostPer1k: 0.015,
132
- currency: 'USD',
133
- },
134
- 'claude-3-5-sonnet-latest': {
135
- promptCostPer1k: 0.003,
136
- completionCostPer1k: 0.015,
137
- currency: 'USD',
138
- },
139
- 'claude-3-opus-20240229': {
140
- promptCostPer1k: 0.015,
141
- completionCostPer1k: 0.075,
142
- currency: 'USD',
143
- },
144
- 'claude-3-sonnet-20240229': {
145
- promptCostPer1k: 0.003,
146
- completionCostPer1k: 0.015,
147
- currency: 'USD',
148
- },
149
- 'claude-3-haiku-20240307': {
150
- promptCostPer1k: 0.00025,
151
- completionCostPer1k: 0.00125,
152
- currency: 'USD',
153
- },
154
- },
155
- };
156
- _this.baseUrl = 'https://api.anthropic.com/v1';
157
- _this.headers = {};
158
- return _this;
159
- }
160
- AnthropicProvider.prototype.doInitialize = function () {
161
- return __awaiter(this, void 0, void 0, function () {
162
- return __generator(this, function (_a) {
163
- if (!this.config.apiKey) {
164
- throw new types_js_1.AuthenticationError('Anthropic API key is required', 'anthropic');
165
- }
166
- this.baseUrl = this.config.apiUrl || 'https://api.anthropic.com/v1';
167
- this.headers = {
168
- 'x-api-key': this.config.apiKey,
169
- 'anthropic-version': '2023-06-01',
170
- 'Content-Type': 'application/json',
171
- };
172
- return [2 /*return*/];
173
- });
174
- });
175
- };
176
- AnthropicProvider.prototype.doComplete = function (request) {
177
- return __awaiter(this, void 0, void 0, function () {
178
- var anthropicRequest, controller, timeout, response, data, error_1;
179
- return __generator(this, function (_a) {
180
- switch (_a.label) {
181
- case 0:
182
- anthropicRequest = this.buildRequest(request);
183
- controller = new AbortController();
184
- timeout = setTimeout(function () { return controller.abort(); }, this.config.timeout || 60000);
185
- _a.label = 1;
186
- case 1:
187
- _a.trys.push([1, 6, , 7]);
188
- return [4 /*yield*/, fetch("".concat(this.baseUrl, "/messages"), {
189
- method: 'POST',
190
- headers: this.headers,
191
- body: JSON.stringify(anthropicRequest),
192
- signal: controller.signal,
193
- })];
194
- case 2:
195
- response = _a.sent();
196
- clearTimeout(timeout);
197
- if (!!response.ok) return [3 /*break*/, 4];
198
- return [4 /*yield*/, this.handleErrorResponse(response)];
199
- case 3:
200
- _a.sent();
201
- _a.label = 4;
202
- case 4: return [4 /*yield*/, response.json()];
203
- case 5:
204
- data = _a.sent();
205
- return [2 /*return*/, this.transformResponse(data, request)];
206
- case 6:
207
- error_1 = _a.sent();
208
- clearTimeout(timeout);
209
- throw this.transformError(error_1);
210
- case 7: return [2 /*return*/];
211
- }
212
- });
213
- });
214
- };
215
- AnthropicProvider.prototype.doStreamComplete = function (request) {
216
- return __asyncGenerator(this, arguments, function doStreamComplete_1() {
217
- var anthropicRequest, controller, timeout, response, reader, decoder, buffer, totalOutputTokens, inputTokens, _a, done, value, lines, _i, lines_1, line, data, event_1, model, pricing, promptCost, completionCost, _b, error_2;
218
- var _c, _d;
219
- return __generator(this, function (_e) {
220
- switch (_e.label) {
221
- case 0:
222
- anthropicRequest = this.buildRequest(request, true);
223
- controller = new AbortController();
224
- timeout = setTimeout(function () { return controller.abort(); }, (this.config.timeout || 60000) * 2);
225
- _e.label = 1;
226
- case 1:
227
- _e.trys.push([1, 21, 22, 23]);
228
- return [4 /*yield*/, __await(fetch("".concat(this.baseUrl, "/messages"), {
229
- method: 'POST',
230
- headers: this.headers,
231
- body: JSON.stringify(anthropicRequest),
232
- signal: controller.signal,
233
- }))];
234
- case 2:
235
- response = _e.sent();
236
- if (!!response.ok) return [3 /*break*/, 4];
237
- return [4 /*yield*/, __await(this.handleErrorResponse(response))];
238
- case 3:
239
- _e.sent();
240
- _e.label = 4;
241
- case 4:
242
- reader = response.body.getReader();
243
- decoder = new TextDecoder();
244
- buffer = '';
245
- totalOutputTokens = 0;
246
- inputTokens = 0;
247
- _e.label = 5;
248
- case 5:
249
- if (!true) return [3 /*break*/, 20];
250
- return [4 /*yield*/, __await(reader.read())];
251
- case 6:
252
- _a = _e.sent(), done = _a.done, value = _a.value;
253
- if (done)
254
- return [3 /*break*/, 20];
255
- buffer += decoder.decode(value, { stream: true });
256
- lines = buffer.split('\n');
257
- buffer = lines.pop() || '';
258
- _i = 0, lines_1 = lines;
259
- _e.label = 7;
260
- case 7:
261
- if (!(_i < lines_1.length)) return [3 /*break*/, 19];
262
- line = lines_1[_i];
263
- if (!line.startsWith('data: ')) return [3 /*break*/, 18];
264
- data = line.slice(6);
265
- if (data === '[DONE]')
266
- return [3 /*break*/, 18];
267
- _e.label = 8;
268
- case 8:
269
- _e.trys.push([8, 17, , 18]);
270
- event_1 = JSON.parse(data);
271
- if (!(event_1.type === 'content_block_delta' && ((_c = event_1.delta) === null || _c === void 0 ? void 0 : _c.text))) return [3 /*break*/, 11];
272
- return [4 /*yield*/, __await({
273
- type: 'content',
274
- delta: { content: event_1.delta.text },
275
- })];
276
- case 9: return [4 /*yield*/, _e.sent()];
277
- case 10:
278
- _e.sent();
279
- return [3 /*break*/, 16];
280
- case 11:
281
- if (!(event_1.type === 'message_delta' && event_1.usage)) return [3 /*break*/, 12];
282
- totalOutputTokens = event_1.usage.output_tokens;
283
- return [3 /*break*/, 16];
284
- case 12:
285
- if (!(event_1.type === 'message_start' && ((_d = event_1.message) === null || _d === void 0 ? void 0 : _d.usage))) return [3 /*break*/, 13];
286
- inputTokens = event_1.message.usage.input_tokens;
287
- return [3 /*break*/, 16];
288
- case 13:
289
- if (!(event_1.type === 'message_stop')) return [3 /*break*/, 16];
290
- model = request.model || this.config.model;
291
- pricing = this.capabilities.pricing[model];
292
- promptCost = (inputTokens / 1000) * pricing.promptCostPer1k;
293
- completionCost = (totalOutputTokens / 1000) * pricing.completionCostPer1k;
294
- return [4 /*yield*/, __await({
295
- type: 'done',
296
- usage: {
297
- promptTokens: inputTokens,
298
- completionTokens: totalOutputTokens,
299
- totalTokens: inputTokens + totalOutputTokens,
300
- },
301
- cost: {
302
- promptCost: promptCost,
303
- completionCost: completionCost,
304
- totalCost: promptCost + completionCost,
305
- currency: 'USD',
306
- },
307
- })];
308
- case 14: return [4 /*yield*/, _e.sent()];
309
- case 15:
310
- _e.sent();
311
- _e.label = 16;
312
- case 16: return [3 /*break*/, 18];
313
- case 17:
314
- _b = _e.sent();
315
- return [3 /*break*/, 18];
316
- case 18:
317
- _i++;
318
- return [3 /*break*/, 7];
319
- case 19: return [3 /*break*/, 5];
320
- case 20: return [3 /*break*/, 23];
321
- case 21:
322
- error_2 = _e.sent();
323
- clearTimeout(timeout);
324
- throw this.transformError(error_2);
325
- case 22:
326
- clearTimeout(timeout);
327
- return [7 /*endfinally*/];
328
- case 23: return [2 /*return*/];
329
- }
330
- });
331
- });
332
- };
333
- AnthropicProvider.prototype.listModels = function () {
334
- return __awaiter(this, void 0, void 0, function () {
335
- return __generator(this, function (_a) {
336
- return [2 /*return*/, this.capabilities.supportedModels];
337
- });
338
- });
339
- };
340
- AnthropicProvider.prototype.getModelInfo = function (model) {
341
- return __awaiter(this, void 0, void 0, function () {
342
- var descriptions;
343
- return __generator(this, function (_a) {
344
- descriptions = {
345
- 'claude-3-5-sonnet-20241022': 'Latest Claude 3.5 Sonnet - Best balance of intelligence and speed',
346
- 'claude-3-5-sonnet-latest': 'Claude 3.5 Sonnet latest version',
347
- 'claude-3-opus-20240229': 'Most capable Claude model for complex tasks',
348
- 'claude-3-sonnet-20240229': 'Balanced Claude 3 model',
349
- 'claude-3-haiku-20240307': 'Fastest Claude 3 model for simple tasks',
350
- };
351
- return [2 /*return*/, {
352
- model: model,
353
- name: model,
354
- description: descriptions[model] || 'Anthropic Claude model',
355
- contextLength: this.capabilities.maxContextLength[model] || 200000,
356
- maxOutputTokens: this.capabilities.maxOutputTokens[model] || 4096,
357
- supportedFeatures: ['chat', 'completion', 'vision', 'tool_calling'],
358
- pricing: this.capabilities.pricing[model],
359
- }];
360
- });
361
- });
362
- };
363
- AnthropicProvider.prototype.doHealthCheck = function () {
364
- return __awaiter(this, void 0, void 0, function () {
365
- var response, error_3;
366
- return __generator(this, function (_a) {
367
- switch (_a.label) {
368
- case 0:
369
- _a.trys.push([0, 2, , 3]);
370
- return [4 /*yield*/, fetch("".concat(this.baseUrl, "/messages"), {
371
- method: 'POST',
372
- headers: this.headers,
373
- body: JSON.stringify({
374
- model: this.config.model,
375
- max_tokens: 1,
376
- messages: [{ role: 'user', content: 'Hi' }],
377
- }),
378
- })];
379
- case 1:
380
- response = _a.sent();
381
- return [2 /*return*/, __assign({ healthy: response.ok, timestamp: new Date() }, (response.ok ? {} : { error: "HTTP ".concat(response.status) }))];
382
- case 2:
383
- error_3 = _a.sent();
384
- return [2 /*return*/, {
385
- healthy: false,
386
- error: error_3 instanceof Error ? error_3.message : 'Unknown error',
387
- timestamp: new Date(),
388
- }];
389
- case 3: return [2 /*return*/];
390
- }
391
- });
392
- });
393
- };
394
- AnthropicProvider.prototype.buildRequest = function (request, stream) {
395
- var _a, _b;
396
- if (stream === void 0) { stream = false; }
397
- // Extract system message
398
- var systemMessage = request.messages.find(function (m) { return m.role === 'system'; });
399
- var otherMessages = request.messages.filter(function (m) { return m.role !== 'system'; });
400
- // Transform messages
401
- var messages = otherMessages.map(function (msg) { return ({
402
- role: msg.role,
403
- content: typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content),
404
- }); });
405
- var anthropicRequest = {
406
- model: request.model || this.config.model,
407
- messages: messages,
408
- max_tokens: request.maxTokens || this.config.maxTokens || 4096,
409
- stream: stream,
410
- };
411
- if (systemMessage) {
412
- anthropicRequest.system = typeof systemMessage.content === 'string'
413
- ? systemMessage.content
414
- : JSON.stringify(systemMessage.content);
415
- }
416
- if (request.temperature !== undefined) {
417
- anthropicRequest.temperature = request.temperature;
418
- }
419
- else if (this.config.temperature !== undefined) {
420
- anthropicRequest.temperature = this.config.temperature;
421
- }
422
- if (request.topP !== undefined || this.config.topP !== undefined) {
423
- anthropicRequest.top_p = (_a = request.topP) !== null && _a !== void 0 ? _a : this.config.topP;
424
- }
425
- if (request.topK !== undefined || this.config.topK !== undefined) {
426
- anthropicRequest.top_k = (_b = request.topK) !== null && _b !== void 0 ? _b : this.config.topK;
427
- }
428
- if (request.stopSequences || this.config.stopSequences) {
429
- anthropicRequest.stop_sequences = request.stopSequences || this.config.stopSequences;
430
- }
431
- // Add tools if present
432
- if (request.tools) {
433
- anthropicRequest.tools = request.tools.map(function (tool) { return ({
434
- name: tool.function.name,
435
- description: tool.function.description,
436
- input_schema: tool.function.parameters,
437
- }); });
438
- }
439
- return anthropicRequest;
440
- };
441
- AnthropicProvider.prototype.transformResponse = function (data, request) {
442
- var model = request.model || this.config.model;
443
- var pricing = this.capabilities.pricing[model];
444
- var promptCost = (data.usage.input_tokens / 1000) * pricing.promptCostPer1k;
445
- var completionCost = (data.usage.output_tokens / 1000) * pricing.completionCostPer1k;
446
- // Extract text content
447
- var textContent = data.content
448
- .filter(function (c) { return c.type === 'text'; })
449
- .map(function (c) { return c.text; })
450
- .join('');
451
- // Extract tool calls
452
- var toolCalls = data.content
453
- .filter(function (c) { return c.type === 'tool_use'; })
454
- .map(function (c) { return ({
455
- id: "tool_".concat(Date.now()),
456
- type: 'function',
457
- function: {
458
- name: c.name || '',
459
- arguments: JSON.stringify(c.input || {}),
460
- },
461
- }); });
462
- return {
463
- id: data.id,
464
- model: model,
465
- provider: 'anthropic',
466
- content: textContent,
467
- toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
468
- usage: {
469
- promptTokens: data.usage.input_tokens,
470
- completionTokens: data.usage.output_tokens,
471
- totalTokens: data.usage.input_tokens + data.usage.output_tokens,
472
- },
473
- cost: {
474
- promptCost: promptCost,
475
- completionCost: completionCost,
476
- totalCost: promptCost + completionCost,
477
- currency: 'USD',
478
- },
479
- finishReason: data.stop_reason === 'end_turn' ? 'stop' : 'length',
480
- };
481
- };
482
- AnthropicProvider.prototype.handleErrorResponse = function (response) {
483
- return __awaiter(this, void 0, void 0, function () {
484
- var errorText, errorData, message;
485
- var _a;
486
- return __generator(this, function (_b) {
487
- switch (_b.label) {
488
- case 0: return [4 /*yield*/, response.text()];
489
- case 1:
490
- errorText = _b.sent();
491
- try {
492
- errorData = JSON.parse(errorText);
493
- }
494
- catch (_c) {
495
- errorData = { error: { message: errorText } };
496
- }
497
- message = ((_a = errorData.error) === null || _a === void 0 ? void 0 : _a.message) || 'Unknown error';
498
- switch (response.status) {
499
- case 401:
500
- throw new types_js_1.AuthenticationError(message, 'anthropic', errorData);
501
- case 429:
502
- throw new types_js_1.RateLimitError(message, 'anthropic', undefined, errorData);
503
- default:
504
- throw new types_js_1.LLMProviderError(message, "ANTHROPIC_".concat(response.status), 'anthropic', response.status, response.status >= 500, errorData);
505
- }
506
- return [2 /*return*/];
507
- }
508
- });
509
- });
510
- };
511
- return AnthropicProvider;
512
- }(base_provider_js_1.BaseProvider));
513
- exports.AnthropicProvider = AnthropicProvider;