agentic-qe 2.1.2 → 2.2.0
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/CHANGELOG.md +123 -0
- package/README.md +1 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +5 -1
- package/dist/agents/index.js.map +1 -1
- package/dist/core/di/AgentDependencies.d.ts +127 -0
- package/dist/core/di/AgentDependencies.d.ts.map +1 -0
- package/dist/core/di/AgentDependencies.js +251 -0
- package/dist/core/di/AgentDependencies.js.map +1 -0
- package/dist/core/di/DIContainer.d.ts +149 -0
- package/dist/core/di/DIContainer.d.ts.map +1 -0
- package/dist/core/di/DIContainer.js +333 -0
- package/dist/core/di/DIContainer.js.map +1 -0
- package/dist/core/di/index.d.ts +11 -0
- package/dist/core/di/index.d.ts.map +1 -0
- package/dist/core/di/index.js +22 -0
- package/dist/core/di/index.js.map +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +11 -1
- package/dist/core/index.js.map +1 -1
- package/dist/learning/ExperienceSharingProtocol.d.ts +243 -0
- package/dist/learning/ExperienceSharingProtocol.d.ts.map +1 -0
- package/dist/learning/ExperienceSharingProtocol.js +538 -0
- package/dist/learning/ExperienceSharingProtocol.js.map +1 -0
- package/dist/learning/LearningEngine.d.ts +101 -1
- package/dist/learning/LearningEngine.d.ts.map +1 -1
- package/dist/learning/LearningEngine.js +330 -3
- package/dist/learning/LearningEngine.js.map +1 -1
- package/dist/learning/QLearning.d.ts +38 -125
- package/dist/learning/QLearning.d.ts.map +1 -1
- package/dist/learning/QLearning.js +46 -267
- package/dist/learning/QLearning.js.map +1 -1
- package/dist/learning/QLearningLegacy.d.ts +154 -0
- package/dist/learning/QLearningLegacy.d.ts.map +1 -0
- package/dist/learning/QLearningLegacy.js +337 -0
- package/dist/learning/QLearningLegacy.js.map +1 -0
- package/dist/learning/algorithms/AbstractRLLearner.d.ts +162 -0
- package/dist/learning/algorithms/AbstractRLLearner.d.ts.map +1 -0
- package/dist/learning/algorithms/AbstractRLLearner.js +300 -0
- package/dist/learning/algorithms/AbstractRLLearner.js.map +1 -0
- package/dist/learning/algorithms/ActorCriticLearner.d.ts +201 -0
- package/dist/learning/algorithms/ActorCriticLearner.d.ts.map +1 -0
- package/dist/learning/algorithms/ActorCriticLearner.js +447 -0
- package/dist/learning/algorithms/ActorCriticLearner.js.map +1 -0
- package/dist/learning/algorithms/PPOLearner.d.ts +207 -0
- package/dist/learning/algorithms/PPOLearner.d.ts.map +1 -0
- package/dist/learning/algorithms/PPOLearner.js +490 -0
- package/dist/learning/algorithms/PPOLearner.js.map +1 -0
- package/dist/learning/algorithms/QLearning.d.ts +68 -0
- package/dist/learning/algorithms/QLearning.d.ts.map +1 -0
- package/dist/learning/algorithms/QLearning.js +116 -0
- package/dist/learning/algorithms/QLearning.js.map +1 -0
- package/dist/learning/algorithms/SARSALearner.d.ts +107 -0
- package/dist/learning/algorithms/SARSALearner.d.ts.map +1 -0
- package/dist/learning/algorithms/SARSALearner.js +252 -0
- package/dist/learning/algorithms/SARSALearner.js.map +1 -0
- package/dist/learning/algorithms/index.d.ts +29 -0
- package/dist/learning/algorithms/index.d.ts.map +1 -0
- package/dist/learning/algorithms/index.js +44 -0
- package/dist/learning/algorithms/index.js.map +1 -0
- package/dist/learning/index.d.ts +3 -0
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +15 -1
- package/dist/learning/index.js.map +1 -1
- package/dist/learning/types.d.ts +2 -0
- package/dist/learning/types.d.ts.map +1 -1
- package/dist/memory/DistributedPatternLibrary.d.ts +159 -0
- package/dist/memory/DistributedPatternLibrary.d.ts.map +1 -0
- package/dist/memory/DistributedPatternLibrary.js +370 -0
- package/dist/memory/DistributedPatternLibrary.js.map +1 -0
- package/dist/memory/PatternQualityScorer.d.ts +169 -0
- package/dist/memory/PatternQualityScorer.d.ts.map +1 -0
- package/dist/memory/PatternQualityScorer.js +327 -0
- package/dist/memory/PatternQualityScorer.js.map +1 -0
- package/dist/memory/PatternReplicationService.d.ts +187 -0
- package/dist/memory/PatternReplicationService.d.ts.map +1 -0
- package/dist/memory/PatternReplicationService.js +392 -0
- package/dist/memory/PatternReplicationService.js.map +1 -0
- package/dist/providers/ClaudeProvider.d.ts +98 -0
- package/dist/providers/ClaudeProvider.d.ts.map +1 -0
- package/dist/providers/ClaudeProvider.js +418 -0
- package/dist/providers/ClaudeProvider.js.map +1 -0
- package/dist/providers/ILLMProvider.d.ts +287 -0
- package/dist/providers/ILLMProvider.d.ts.map +1 -0
- package/dist/providers/ILLMProvider.js +33 -0
- package/dist/providers/ILLMProvider.js.map +1 -0
- package/dist/providers/LLMProviderFactory.d.ts +154 -0
- package/dist/providers/LLMProviderFactory.d.ts.map +1 -0
- package/dist/providers/LLMProviderFactory.js +426 -0
- package/dist/providers/LLMProviderFactory.js.map +1 -0
- package/dist/providers/RuvllmProvider.d.ts +107 -0
- package/dist/providers/RuvllmProvider.d.ts.map +1 -0
- package/dist/providers/RuvllmProvider.js +417 -0
- package/dist/providers/RuvllmProvider.js.map +1 -0
- package/dist/providers/index.d.ts +31 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +69 -0
- package/dist/providers/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClaudeProvider - Anthropic Claude API Implementation
|
|
3
|
+
*
|
|
4
|
+
* Provides LLM capabilities through Anthropic's Claude API with support for:
|
|
5
|
+
* - Prompt caching for cost optimization
|
|
6
|
+
* - Streaming responses
|
|
7
|
+
* - Token counting
|
|
8
|
+
* - Health checks
|
|
9
|
+
*
|
|
10
|
+
* @module providers/ClaudeProvider
|
|
11
|
+
* @version 1.0.0
|
|
12
|
+
*/
|
|
13
|
+
import { ILLMProvider, LLMProviderConfig, LLMCompletionOptions, LLMCompletionResponse, LLMStreamEvent, LLMEmbeddingOptions, LLMEmbeddingResponse, LLMTokenCountOptions, LLMHealthStatus, LLMProviderMetadata } from './ILLMProvider';
|
|
14
|
+
/**
|
|
15
|
+
* Claude-specific configuration
|
|
16
|
+
*/
|
|
17
|
+
export interface ClaudeProviderConfig extends LLMProviderConfig {
|
|
18
|
+
/** Anthropic API key (uses ANTHROPIC_API_KEY env var if not provided) */
|
|
19
|
+
apiKey?: string;
|
|
20
|
+
/** Default model to use */
|
|
21
|
+
defaultModel?: string;
|
|
22
|
+
/** Enable prompt caching */
|
|
23
|
+
enableCaching?: boolean;
|
|
24
|
+
/** Base URL for API (for testing/proxies) */
|
|
25
|
+
baseUrl?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* ClaudeProvider - Anthropic Claude API implementation of ILLMProvider
|
|
29
|
+
*
|
|
30
|
+
* This provider enables access to Claude models through the Anthropic API
|
|
31
|
+
* with full support for caching, streaming, and cost tracking.
|
|
32
|
+
*/
|
|
33
|
+
export declare class ClaudeProvider implements ILLMProvider {
|
|
34
|
+
private readonly logger;
|
|
35
|
+
private client?;
|
|
36
|
+
private config;
|
|
37
|
+
private isInitialized;
|
|
38
|
+
private totalCost;
|
|
39
|
+
private requestCount;
|
|
40
|
+
constructor(config?: ClaudeProviderConfig);
|
|
41
|
+
/**
|
|
42
|
+
* Initialize the Claude provider
|
|
43
|
+
*/
|
|
44
|
+
initialize(): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Complete a prompt
|
|
47
|
+
*/
|
|
48
|
+
complete(options: LLMCompletionOptions): Promise<LLMCompletionResponse>;
|
|
49
|
+
/**
|
|
50
|
+
* Stream a completion
|
|
51
|
+
*/
|
|
52
|
+
streamComplete(options: LLMCompletionOptions): AsyncIterableIterator<LLMStreamEvent>;
|
|
53
|
+
/**
|
|
54
|
+
* Generate embeddings (Claude doesn't natively support embeddings)
|
|
55
|
+
*/
|
|
56
|
+
embed(options: LLMEmbeddingOptions): Promise<LLMEmbeddingResponse>;
|
|
57
|
+
/**
|
|
58
|
+
* Count tokens in text
|
|
59
|
+
*/
|
|
60
|
+
countTokens(options: LLMTokenCountOptions): Promise<number>;
|
|
61
|
+
/**
|
|
62
|
+
* Health check
|
|
63
|
+
*/
|
|
64
|
+
healthCheck(): Promise<LLMHealthStatus>;
|
|
65
|
+
/**
|
|
66
|
+
* Get provider metadata
|
|
67
|
+
*/
|
|
68
|
+
getMetadata(): LLMProviderMetadata;
|
|
69
|
+
/**
|
|
70
|
+
* Shutdown the provider
|
|
71
|
+
*/
|
|
72
|
+
shutdown(): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Track cost for a request
|
|
75
|
+
*/
|
|
76
|
+
trackCost(usage: LLMCompletionResponse['usage']): number;
|
|
77
|
+
/**
|
|
78
|
+
* Get total cost incurred
|
|
79
|
+
*/
|
|
80
|
+
getTotalCost(): number;
|
|
81
|
+
/**
|
|
82
|
+
* Ensure provider is initialized
|
|
83
|
+
*/
|
|
84
|
+
private ensureInitialized;
|
|
85
|
+
/**
|
|
86
|
+
* Map Anthropic stream event to LLMStreamEvent
|
|
87
|
+
*/
|
|
88
|
+
private mapStreamEvent;
|
|
89
|
+
/**
|
|
90
|
+
* Get error code from exception
|
|
91
|
+
*/
|
|
92
|
+
private getErrorCode;
|
|
93
|
+
/**
|
|
94
|
+
* Check if error is retryable
|
|
95
|
+
*/
|
|
96
|
+
private isRetryableError;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=ClaudeProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeProvider.d.ts","sourceRoot":"","sources":["../../src/providers/ClaudeProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EAEpB,MAAM,gBAAgB,CAAC;AAGxB;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAeD;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,MAAM,CAAC,CAAY;IAC3B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,GAAE,oBAAyB;IAiB7C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BjC;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA+F7E;;OAEG;IACI,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,qBAAqB,CAAC,cAAc,CAAC;IA0D3F;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IASxE;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBjE;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;IAmC7C;;OAEG;IACH,WAAW,IAAI,mBAAmB;IAuBlC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAS/B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,MAAM;IAwBxD;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,OAAO,CAAC,cAAc;IA0DtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAMzB"}
|
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ClaudeProvider - Anthropic Claude API Implementation
|
|
4
|
+
*
|
|
5
|
+
* Provides LLM capabilities through Anthropic's Claude API with support for:
|
|
6
|
+
* - Prompt caching for cost optimization
|
|
7
|
+
* - Streaming responses
|
|
8
|
+
* - Token counting
|
|
9
|
+
* - Health checks
|
|
10
|
+
*
|
|
11
|
+
* @module providers/ClaudeProvider
|
|
12
|
+
* @version 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.ClaudeProvider = void 0;
|
|
19
|
+
const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
|
|
20
|
+
const ILLMProvider_1 = require("./ILLMProvider");
|
|
21
|
+
const Logger_1 = require("../utils/Logger");
|
|
22
|
+
/**
|
|
23
|
+
* Claude model pricing (per million tokens)
|
|
24
|
+
*/
|
|
25
|
+
const CLAUDE_PRICING = {
|
|
26
|
+
'claude-sonnet-4-20250514': { input: 3.0, output: 15.0 },
|
|
27
|
+
'claude-opus-4-20250514': { input: 15.0, output: 75.0 },
|
|
28
|
+
'claude-3-5-sonnet-20241022': { input: 3.0, output: 15.0 },
|
|
29
|
+
'claude-3-5-haiku-20241022': { input: 0.8, output: 4.0 },
|
|
30
|
+
'claude-3-opus-20240229': { input: 15.0, output: 75.0 },
|
|
31
|
+
'claude-3-sonnet-20240229': { input: 3.0, output: 15.0 },
|
|
32
|
+
'claude-3-haiku-20240307': { input: 0.25, output: 1.25 },
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* ClaudeProvider - Anthropic Claude API implementation of ILLMProvider
|
|
36
|
+
*
|
|
37
|
+
* This provider enables access to Claude models through the Anthropic API
|
|
38
|
+
* with full support for caching, streaming, and cost tracking.
|
|
39
|
+
*/
|
|
40
|
+
class ClaudeProvider {
|
|
41
|
+
constructor(config = {}) {
|
|
42
|
+
this.logger = Logger_1.Logger.getInstance();
|
|
43
|
+
this.config = {
|
|
44
|
+
name: config.name || 'claude',
|
|
45
|
+
debug: config.debug ?? false,
|
|
46
|
+
timeout: config.timeout ?? 60000,
|
|
47
|
+
maxRetries: config.maxRetries ?? 3,
|
|
48
|
+
apiKey: config.apiKey,
|
|
49
|
+
defaultModel: config.defaultModel || 'claude-sonnet-4-20250514',
|
|
50
|
+
enableCaching: config.enableCaching ?? true,
|
|
51
|
+
baseUrl: config.baseUrl
|
|
52
|
+
};
|
|
53
|
+
this.isInitialized = false;
|
|
54
|
+
this.totalCost = 0;
|
|
55
|
+
this.requestCount = 0;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Initialize the Claude provider
|
|
59
|
+
*/
|
|
60
|
+
async initialize() {
|
|
61
|
+
if (this.isInitialized) {
|
|
62
|
+
this.logger.warn('ClaudeProvider already initialized');
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const apiKey = this.config.apiKey || process.env.ANTHROPIC_API_KEY;
|
|
66
|
+
if (!apiKey) {
|
|
67
|
+
throw new ILLMProvider_1.LLMProviderError('Anthropic API key not provided', 'claude', 'AUTH_ERROR', false);
|
|
68
|
+
}
|
|
69
|
+
this.client = new sdk_1.default({
|
|
70
|
+
apiKey,
|
|
71
|
+
timeout: this.config.timeout,
|
|
72
|
+
maxRetries: this.config.maxRetries,
|
|
73
|
+
...(this.config.baseUrl ? { baseURL: this.config.baseUrl } : {})
|
|
74
|
+
});
|
|
75
|
+
this.isInitialized = true;
|
|
76
|
+
this.logger.info('ClaudeProvider initialized', {
|
|
77
|
+
model: this.config.defaultModel,
|
|
78
|
+
caching: this.config.enableCaching
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Complete a prompt
|
|
83
|
+
*/
|
|
84
|
+
async complete(options) {
|
|
85
|
+
this.ensureInitialized();
|
|
86
|
+
const model = options.model || this.config.defaultModel;
|
|
87
|
+
const startTime = Date.now();
|
|
88
|
+
try {
|
|
89
|
+
// Build messages array
|
|
90
|
+
const messages = options.messages.map(m => {
|
|
91
|
+
// Handle string content directly
|
|
92
|
+
if (typeof m.content === 'string') {
|
|
93
|
+
return {
|
|
94
|
+
role: m.role,
|
|
95
|
+
content: m.content
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
// Handle array content - convert to string
|
|
99
|
+
const textContent = m.content
|
|
100
|
+
.filter(c => c.type === 'text')
|
|
101
|
+
.map(c => c.text || '')
|
|
102
|
+
.join('');
|
|
103
|
+
return {
|
|
104
|
+
role: m.role,
|
|
105
|
+
content: textContent
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
// Build system message if provided
|
|
109
|
+
let systemMessage;
|
|
110
|
+
if (options.system && options.system.length > 0) {
|
|
111
|
+
systemMessage = options.system.map(s => s.text).join('\n\n');
|
|
112
|
+
}
|
|
113
|
+
const response = await this.client.messages.create({
|
|
114
|
+
model,
|
|
115
|
+
messages,
|
|
116
|
+
max_tokens: options.maxTokens || 4096,
|
|
117
|
+
...(systemMessage ? { system: systemMessage } : {}),
|
|
118
|
+
...(options.temperature !== undefined ? { temperature: options.temperature } : {})
|
|
119
|
+
});
|
|
120
|
+
this.requestCount++;
|
|
121
|
+
// Extract text content from response
|
|
122
|
+
const content = response.content.map((block) => ({
|
|
123
|
+
type: 'text',
|
|
124
|
+
text: block.type === 'text' ? block.text : ''
|
|
125
|
+
}));
|
|
126
|
+
// Calculate cost
|
|
127
|
+
const cost = this.trackCost({
|
|
128
|
+
input_tokens: response.usage.input_tokens,
|
|
129
|
+
output_tokens: response.usage.output_tokens,
|
|
130
|
+
cache_creation_input_tokens: response.usage.cache_creation_input_tokens,
|
|
131
|
+
cache_read_input_tokens: response.usage.cache_read_input_tokens
|
|
132
|
+
});
|
|
133
|
+
const result = {
|
|
134
|
+
content,
|
|
135
|
+
usage: {
|
|
136
|
+
input_tokens: response.usage.input_tokens,
|
|
137
|
+
output_tokens: response.usage.output_tokens,
|
|
138
|
+
cache_creation_input_tokens: response.usage.cache_creation_input_tokens,
|
|
139
|
+
cache_read_input_tokens: response.usage.cache_read_input_tokens
|
|
140
|
+
},
|
|
141
|
+
model: response.model,
|
|
142
|
+
stop_reason: response.stop_reason,
|
|
143
|
+
id: response.id,
|
|
144
|
+
metadata: {
|
|
145
|
+
latency: Date.now() - startTime,
|
|
146
|
+
cost
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
this.logger.debug('Claude completion successful', {
|
|
150
|
+
model,
|
|
151
|
+
inputTokens: response.usage.input_tokens,
|
|
152
|
+
outputTokens: response.usage.output_tokens,
|
|
153
|
+
latency: result.metadata?.latency
|
|
154
|
+
});
|
|
155
|
+
return result;
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
const err = error;
|
|
159
|
+
throw new ILLMProvider_1.LLMProviderError(`Claude completion failed: ${err.message}`, 'claude', this.getErrorCode(error), this.isRetryableError(error), err);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Stream a completion
|
|
164
|
+
*/
|
|
165
|
+
async *streamComplete(options) {
|
|
166
|
+
this.ensureInitialized();
|
|
167
|
+
const model = options.model || this.config.defaultModel;
|
|
168
|
+
try {
|
|
169
|
+
// Build messages array
|
|
170
|
+
const messages = options.messages.map(m => {
|
|
171
|
+
if (typeof m.content === 'string') {
|
|
172
|
+
return {
|
|
173
|
+
role: m.role,
|
|
174
|
+
content: m.content
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
const textContent = m.content
|
|
178
|
+
.filter(c => c.type === 'text')
|
|
179
|
+
.map(c => c.text || '')
|
|
180
|
+
.join('');
|
|
181
|
+
return {
|
|
182
|
+
role: m.role,
|
|
183
|
+
content: textContent
|
|
184
|
+
};
|
|
185
|
+
});
|
|
186
|
+
let systemMessage;
|
|
187
|
+
if (options.system && options.system.length > 0) {
|
|
188
|
+
systemMessage = options.system.map(s => s.text).join('\n\n');
|
|
189
|
+
}
|
|
190
|
+
const stream = this.client.messages.stream({
|
|
191
|
+
model,
|
|
192
|
+
messages,
|
|
193
|
+
max_tokens: options.maxTokens || 4096,
|
|
194
|
+
...(systemMessage ? { system: systemMessage } : {}),
|
|
195
|
+
...(options.temperature !== undefined ? { temperature: options.temperature } : {})
|
|
196
|
+
});
|
|
197
|
+
for await (const event of stream) {
|
|
198
|
+
const streamEvent = this.mapStreamEvent(event);
|
|
199
|
+
if (streamEvent) {
|
|
200
|
+
yield streamEvent;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
this.requestCount++;
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
const err = error;
|
|
207
|
+
throw new ILLMProvider_1.LLMProviderError(`Claude stream failed: ${err.message}`, 'claude', this.getErrorCode(error), this.isRetryableError(error), err);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Generate embeddings (Claude doesn't natively support embeddings)
|
|
212
|
+
*/
|
|
213
|
+
async embed(options) {
|
|
214
|
+
throw new ILLMProvider_1.LLMProviderError('Claude does not support native embeddings. Use a dedicated embedding model.', 'claude', 'UNSUPPORTED', false);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Count tokens in text
|
|
218
|
+
*/
|
|
219
|
+
async countTokens(options) {
|
|
220
|
+
this.ensureInitialized();
|
|
221
|
+
try {
|
|
222
|
+
// Use Anthropic's token counting endpoint
|
|
223
|
+
const result = await this.client.messages.countTokens({
|
|
224
|
+
model: options.model || this.config.defaultModel,
|
|
225
|
+
messages: [{ role: 'user', content: options.text }]
|
|
226
|
+
});
|
|
227
|
+
return result.input_tokens;
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
// Fallback: estimate ~4 chars per token
|
|
231
|
+
return Math.ceil(options.text.length / 4);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Health check
|
|
236
|
+
*/
|
|
237
|
+
async healthCheck() {
|
|
238
|
+
const startTime = Date.now();
|
|
239
|
+
try {
|
|
240
|
+
if (!this.isInitialized) {
|
|
241
|
+
await this.initialize();
|
|
242
|
+
}
|
|
243
|
+
// Simple health check with minimal tokens
|
|
244
|
+
await this.complete({
|
|
245
|
+
model: this.config.defaultModel,
|
|
246
|
+
messages: [{ role: 'user', content: 'ping' }],
|
|
247
|
+
maxTokens: 5
|
|
248
|
+
});
|
|
249
|
+
return {
|
|
250
|
+
healthy: true,
|
|
251
|
+
latency: Date.now() - startTime,
|
|
252
|
+
timestamp: new Date(),
|
|
253
|
+
metadata: {
|
|
254
|
+
model: this.config.defaultModel,
|
|
255
|
+
requestCount: this.requestCount,
|
|
256
|
+
totalCost: this.totalCost
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
return {
|
|
262
|
+
healthy: false,
|
|
263
|
+
error: error.message,
|
|
264
|
+
timestamp: new Date()
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Get provider metadata
|
|
270
|
+
*/
|
|
271
|
+
getMetadata() {
|
|
272
|
+
const pricing = CLAUDE_PRICING[this.config.defaultModel] || { input: 3.0, output: 15.0 };
|
|
273
|
+
return {
|
|
274
|
+
name: 'claude',
|
|
275
|
+
version: '1.0.0',
|
|
276
|
+
models: Object.keys(CLAUDE_PRICING),
|
|
277
|
+
capabilities: {
|
|
278
|
+
streaming: true,
|
|
279
|
+
caching: true,
|
|
280
|
+
embeddings: false,
|
|
281
|
+
vision: true
|
|
282
|
+
},
|
|
283
|
+
costs: {
|
|
284
|
+
inputPerMillion: pricing.input,
|
|
285
|
+
outputPerMillion: pricing.output,
|
|
286
|
+
cacheWriteMultiplier: 1.25,
|
|
287
|
+
cacheReadMultiplier: 0.1
|
|
288
|
+
},
|
|
289
|
+
location: 'cloud'
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Shutdown the provider
|
|
294
|
+
*/
|
|
295
|
+
async shutdown() {
|
|
296
|
+
this.client = undefined;
|
|
297
|
+
this.isInitialized = false;
|
|
298
|
+
this.logger.info('ClaudeProvider shutdown', {
|
|
299
|
+
totalCost: this.totalCost,
|
|
300
|
+
requestCount: this.requestCount
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Track cost for a request
|
|
305
|
+
*/
|
|
306
|
+
trackCost(usage) {
|
|
307
|
+
const model = this.config.defaultModel;
|
|
308
|
+
const pricing = CLAUDE_PRICING[model] || { input: 3.0, output: 15.0 };
|
|
309
|
+
let inputCost = (usage.input_tokens / 1000000) * pricing.input;
|
|
310
|
+
const outputCost = (usage.output_tokens / 1000000) * pricing.output;
|
|
311
|
+
// Adjust for cache pricing
|
|
312
|
+
if (usage.cache_creation_input_tokens) {
|
|
313
|
+
const cacheWriteCost = (usage.cache_creation_input_tokens / 1000000) * pricing.input * 1.25;
|
|
314
|
+
inputCost += cacheWriteCost;
|
|
315
|
+
}
|
|
316
|
+
if (usage.cache_read_input_tokens) {
|
|
317
|
+
const cacheReadCost = (usage.cache_read_input_tokens / 1000000) * pricing.input * 0.1;
|
|
318
|
+
inputCost += cacheReadCost;
|
|
319
|
+
}
|
|
320
|
+
const totalCost = inputCost + outputCost;
|
|
321
|
+
this.totalCost += totalCost;
|
|
322
|
+
return totalCost;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Get total cost incurred
|
|
326
|
+
*/
|
|
327
|
+
getTotalCost() {
|
|
328
|
+
return this.totalCost;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Ensure provider is initialized
|
|
332
|
+
*/
|
|
333
|
+
ensureInitialized() {
|
|
334
|
+
if (!this.isInitialized || !this.client) {
|
|
335
|
+
throw new ILLMProvider_1.LLMProviderError('ClaudeProvider not initialized. Call initialize() first.', 'claude', 'NOT_INITIALIZED', false);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Map Anthropic stream event to LLMStreamEvent
|
|
340
|
+
*/
|
|
341
|
+
mapStreamEvent(event) {
|
|
342
|
+
switch (event.type) {
|
|
343
|
+
case 'message_start':
|
|
344
|
+
return {
|
|
345
|
+
type: 'message_start',
|
|
346
|
+
message: {
|
|
347
|
+
id: event.message.id,
|
|
348
|
+
model: event.message.model,
|
|
349
|
+
stop_reason: (event.message.stop_reason ?? undefined),
|
|
350
|
+
usage: event.message.usage ? {
|
|
351
|
+
input_tokens: event.message.usage.input_tokens,
|
|
352
|
+
output_tokens: event.message.usage.output_tokens
|
|
353
|
+
} : undefined
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
case 'content_block_start':
|
|
357
|
+
// Only handle text blocks
|
|
358
|
+
if (event.content_block?.type === 'text') {
|
|
359
|
+
return {
|
|
360
|
+
type: 'content_block_start',
|
|
361
|
+
content_block: {
|
|
362
|
+
type: 'text',
|
|
363
|
+
text: event.content_block.text
|
|
364
|
+
}
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
return null;
|
|
368
|
+
case 'content_block_delta':
|
|
369
|
+
// Only handle text deltas
|
|
370
|
+
if ('delta' in event && event.delta?.type === 'text_delta') {
|
|
371
|
+
return {
|
|
372
|
+
type: 'content_block_delta',
|
|
373
|
+
delta: {
|
|
374
|
+
type: 'text_delta',
|
|
375
|
+
text: event.delta.text
|
|
376
|
+
}
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
return null;
|
|
380
|
+
case 'content_block_stop':
|
|
381
|
+
return { type: 'content_block_stop' };
|
|
382
|
+
case 'message_delta':
|
|
383
|
+
return {
|
|
384
|
+
type: 'message_delta',
|
|
385
|
+
message: {
|
|
386
|
+
usage: event.usage ? {
|
|
387
|
+
input_tokens: 0, // Not available in delta
|
|
388
|
+
output_tokens: event.usage.output_tokens
|
|
389
|
+
} : undefined
|
|
390
|
+
}
|
|
391
|
+
};
|
|
392
|
+
case 'message_stop':
|
|
393
|
+
return { type: 'message_stop' };
|
|
394
|
+
default:
|
|
395
|
+
return null;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Get error code from exception
|
|
400
|
+
*/
|
|
401
|
+
getErrorCode(error) {
|
|
402
|
+
if (error instanceof sdk_1.default.APIError) {
|
|
403
|
+
return `API_${error.status}`;
|
|
404
|
+
}
|
|
405
|
+
return 'UNKNOWN';
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Check if error is retryable
|
|
409
|
+
*/
|
|
410
|
+
isRetryableError(error) {
|
|
411
|
+
if (error instanceof sdk_1.default.APIError) {
|
|
412
|
+
return [429, 500, 502, 503, 504].includes(error.status);
|
|
413
|
+
}
|
|
414
|
+
return false;
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
exports.ClaudeProvider = ClaudeProvider;
|
|
418
|
+
//# sourceMappingURL=ClaudeProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeProvider.js","sourceRoot":"","sources":["../../src/providers/ClaudeProvider.ts"],"names":[],"mappings":"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"}
|