claude-flow 2.0.0-alpha.66 → 2.0.0-alpha.68

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 (112) hide show
  1. package/.claude/cache/agent-pool.json +33 -0
  2. package/.claude/cache/memory-optimization.json +19 -0
  3. package/.claude/cache/neural-optimization.json +25 -0
  4. package/.claude/cache/optimized-hooks.json +19 -0
  5. package/.claude/cache/parallel-processing.json +26 -0
  6. package/.claude/optimized-settings.json +270 -0
  7. package/.claude/settings-backup.json +186 -0
  8. package/.claude/settings-enhanced.json +278 -0
  9. package/.claude/settings-fixed.json +186 -0
  10. package/.claude/settings.json +105 -8
  11. package/CHANGELOG.md +38 -0
  12. package/bin/claude-flow +1 -1
  13. package/dist/cli/simple-commands/hive-mind.js +1 -1
  14. package/dist/cli/simple-commands/hive-mind.js.map +1 -1
  15. package/dist/cli/simple-commands/hooks.js +6 -4
  16. package/dist/cli/simple-commands/hooks.js.map +1 -1
  17. package/dist/providers/anthropic-provider.d.ts +27 -0
  18. package/dist/providers/anthropic-provider.d.ts.map +1 -0
  19. package/dist/providers/anthropic-provider.js +247 -0
  20. package/dist/providers/anthropic-provider.js.map +1 -0
  21. package/dist/providers/base-provider.d.ts +134 -0
  22. package/dist/providers/base-provider.d.ts.map +1 -0
  23. package/dist/providers/base-provider.js +407 -0
  24. package/dist/providers/base-provider.js.map +1 -0
  25. package/dist/providers/cohere-provider.d.ts +28 -0
  26. package/dist/providers/cohere-provider.d.ts.map +1 -0
  27. package/dist/providers/cohere-provider.js +407 -0
  28. package/dist/providers/cohere-provider.js.map +1 -0
  29. package/dist/providers/google-provider.d.ts +23 -0
  30. package/dist/providers/google-provider.d.ts.map +1 -0
  31. package/dist/providers/google-provider.js +362 -0
  32. package/dist/providers/google-provider.js.map +1 -0
  33. package/dist/providers/index.d.ts +14 -0
  34. package/dist/providers/index.d.ts.map +1 -0
  35. package/dist/providers/index.js +18 -0
  36. package/dist/providers/index.js.map +1 -0
  37. package/dist/providers/ollama-provider.d.ts +23 -0
  38. package/dist/providers/ollama-provider.d.ts.map +1 -0
  39. package/dist/providers/ollama-provider.js +374 -0
  40. package/dist/providers/ollama-provider.js.map +1 -0
  41. package/dist/providers/openai-provider.d.ts +23 -0
  42. package/dist/providers/openai-provider.d.ts.map +1 -0
  43. package/dist/providers/openai-provider.js +349 -0
  44. package/dist/providers/openai-provider.js.map +1 -0
  45. package/dist/providers/provider-manager.d.ts +139 -0
  46. package/dist/providers/provider-manager.d.ts.map +1 -0
  47. package/dist/providers/provider-manager.js +513 -0
  48. package/dist/providers/provider-manager.js.map +1 -0
  49. package/dist/providers/types.d.ts +356 -0
  50. package/dist/providers/types.d.ts.map +1 -0
  51. package/dist/providers/types.js +61 -0
  52. package/dist/providers/types.js.map +1 -0
  53. package/dist/providers/utils.d.ts +37 -0
  54. package/dist/providers/utils.d.ts.map +1 -0
  55. package/dist/providers/utils.js +322 -0
  56. package/dist/providers/utils.js.map +1 -0
  57. package/dist/services/agentic-flow-hooks/hook-manager.d.ts +70 -0
  58. package/dist/services/agentic-flow-hooks/hook-manager.d.ts.map +1 -0
  59. package/dist/services/agentic-flow-hooks/hook-manager.js +512 -0
  60. package/dist/services/agentic-flow-hooks/hook-manager.js.map +1 -0
  61. package/dist/services/agentic-flow-hooks/index.d.ts +36 -0
  62. package/dist/services/agentic-flow-hooks/index.d.ts.map +1 -0
  63. package/dist/services/agentic-flow-hooks/index.js +325 -0
  64. package/dist/services/agentic-flow-hooks/index.js.map +1 -0
  65. package/dist/services/agentic-flow-hooks/llm-hooks.d.ts +33 -0
  66. package/dist/services/agentic-flow-hooks/llm-hooks.d.ts.map +1 -0
  67. package/dist/services/agentic-flow-hooks/llm-hooks.js +415 -0
  68. package/dist/services/agentic-flow-hooks/llm-hooks.js.map +1 -0
  69. package/dist/services/agentic-flow-hooks/memory-hooks.d.ts +45 -0
  70. package/dist/services/agentic-flow-hooks/memory-hooks.d.ts.map +1 -0
  71. package/dist/services/agentic-flow-hooks/memory-hooks.js +532 -0
  72. package/dist/services/agentic-flow-hooks/memory-hooks.js.map +1 -0
  73. package/dist/services/agentic-flow-hooks/neural-hooks.d.ts +39 -0
  74. package/dist/services/agentic-flow-hooks/neural-hooks.d.ts.map +1 -0
  75. package/dist/services/agentic-flow-hooks/neural-hooks.js +561 -0
  76. package/dist/services/agentic-flow-hooks/neural-hooks.js.map +1 -0
  77. package/dist/services/agentic-flow-hooks/performance-hooks.d.ts +33 -0
  78. package/dist/services/agentic-flow-hooks/performance-hooks.d.ts.map +1 -0
  79. package/dist/services/agentic-flow-hooks/performance-hooks.js +621 -0
  80. package/dist/services/agentic-flow-hooks/performance-hooks.js.map +1 -0
  81. package/dist/services/agentic-flow-hooks/types.d.ts +379 -0
  82. package/dist/services/agentic-flow-hooks/types.d.ts.map +1 -0
  83. package/dist/services/agentic-flow-hooks/types.js +8 -0
  84. package/dist/services/agentic-flow-hooks/types.js.map +1 -0
  85. package/dist/services/agentic-flow-hooks/workflow-hooks.d.ts +39 -0
  86. package/dist/services/agentic-flow-hooks/workflow-hooks.d.ts.map +1 -0
  87. package/dist/services/agentic-flow-hooks/workflow-hooks.js +742 -0
  88. package/dist/services/agentic-flow-hooks/workflow-hooks.js.map +1 -0
  89. package/package.json +1 -1
  90. package/scripts/optimize-performance.js +400 -0
  91. package/scripts/performance-monitor.js +263 -0
  92. package/src/cli/help-text.js +1 -1
  93. package/src/cli/simple-cli.js +1 -1
  94. package/src/cli/simple-commands/hive-mind.js +1 -1
  95. package/src/providers/anthropic-provider.ts +282 -0
  96. package/src/providers/base-provider.ts +560 -0
  97. package/src/providers/cohere-provider.ts +521 -0
  98. package/src/providers/google-provider.ts +477 -0
  99. package/src/providers/index.ts +21 -0
  100. package/src/providers/ollama-provider.ts +489 -0
  101. package/src/providers/openai-provider.ts +476 -0
  102. package/src/providers/provider-manager.ts +654 -0
  103. package/src/providers/types.ts +531 -0
  104. package/src/providers/utils.ts +376 -0
  105. package/src/services/agentic-flow-hooks/hook-manager.ts +701 -0
  106. package/src/services/agentic-flow-hooks/index.ts +386 -0
  107. package/src/services/agentic-flow-hooks/llm-hooks.ts +557 -0
  108. package/src/services/agentic-flow-hooks/memory-hooks.ts +710 -0
  109. package/src/services/agentic-flow-hooks/neural-hooks.ts +758 -0
  110. package/src/services/agentic-flow-hooks/performance-hooks.ts +827 -0
  111. package/src/services/agentic-flow-hooks/types.ts +503 -0
  112. package/src/services/agentic-flow-hooks/workflow-hooks.ts +1026 -0
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Anthropic (Claude) Provider Implementation
3
+ * Extends the existing Claude client with unified provider interface
4
+ */
5
+ import { BaseProvider } from './base-provider.js';
6
+ import { ClaudeAPIClient } from '../api/claude-client.js';
7
+ export class AnthropicProvider extends BaseProvider {
8
+ name = 'anthropic';
9
+ capabilities = {
10
+ supportedModels: [
11
+ 'claude-3-opus-20240229',
12
+ 'claude-3-sonnet-20240229',
13
+ 'claude-3-haiku-20240307',
14
+ 'claude-2.1',
15
+ 'claude-2.0',
16
+ 'claude-instant-1.2',
17
+ ],
18
+ maxContextLength: {
19
+ 'claude-3-opus-20240229': 200000,
20
+ 'claude-3-sonnet-20240229': 200000,
21
+ 'claude-3-haiku-20240307': 200000,
22
+ 'claude-2.1': 200000,
23
+ 'claude-2.0': 100000,
24
+ 'claude-instant-1.2': 100000,
25
+ },
26
+ maxOutputTokens: {
27
+ 'claude-3-opus-20240229': 4096,
28
+ 'claude-3-sonnet-20240229': 4096,
29
+ 'claude-3-haiku-20240307': 4096,
30
+ 'claude-2.1': 4096,
31
+ 'claude-2.0': 4096,
32
+ 'claude-instant-1.2': 4096,
33
+ },
34
+ supportsStreaming: true,
35
+ supportsFunctionCalling: false, // Claude doesn't have native function calling yet
36
+ supportsSystemMessages: true,
37
+ supportsVision: true, // Claude 3 models support vision
38
+ supportsAudio: false,
39
+ supportsTools: false,
40
+ supportsFineTuning: false,
41
+ supportsEmbeddings: false,
42
+ supportsLogprobs: false,
43
+ supportsBatching: false,
44
+ pricing: {
45
+ 'claude-3-opus-20240229': {
46
+ promptCostPer1k: 0.015,
47
+ completionCostPer1k: 0.075,
48
+ currency: 'USD',
49
+ },
50
+ 'claude-3-sonnet-20240229': {
51
+ promptCostPer1k: 0.003,
52
+ completionCostPer1k: 0.015,
53
+ currency: 'USD',
54
+ },
55
+ 'claude-3-haiku-20240307': {
56
+ promptCostPer1k: 0.00025,
57
+ completionCostPer1k: 0.00125,
58
+ currency: 'USD',
59
+ },
60
+ 'claude-2.1': {
61
+ promptCostPer1k: 0.008,
62
+ completionCostPer1k: 0.024,
63
+ currency: 'USD',
64
+ },
65
+ 'claude-2.0': {
66
+ promptCostPer1k: 0.008,
67
+ completionCostPer1k: 0.024,
68
+ currency: 'USD',
69
+ },
70
+ 'claude-instant-1.2': {
71
+ promptCostPer1k: 0.0008,
72
+ completionCostPer1k: 0.0024,
73
+ currency: 'USD',
74
+ },
75
+ },
76
+ };
77
+ claudeClient;
78
+ async doInitialize() {
79
+ // Create Claude client with our config
80
+ this.claudeClient = new ClaudeAPIClient(this.logger, { get: () => this.config }, // Mock config manager
81
+ {
82
+ apiKey: this.config.apiKey,
83
+ model: this.mapToAnthropicModel(this.config.model),
84
+ temperature: this.config.temperature,
85
+ maxTokens: this.config.maxTokens,
86
+ topP: this.config.topP,
87
+ topK: this.config.topK,
88
+ timeout: this.config.timeout,
89
+ retryAttempts: this.config.retryAttempts,
90
+ retryDelay: this.config.retryDelay,
91
+ });
92
+ }
93
+ async doComplete(request) {
94
+ // Convert request to Claude format
95
+ const claudeMessages = request.messages.map((msg) => ({
96
+ role: msg.role === 'system' ? 'user' : msg.role,
97
+ content: msg.role === 'system' ? `System: ${msg.content}` : msg.content,
98
+ }));
99
+ // Extract system message if present
100
+ const systemMessage = request.messages.find((m) => m.role === 'system');
101
+ // Call Claude API
102
+ const response = await this.claudeClient.sendMessage(claudeMessages, {
103
+ model: request.model ? this.mapToAnthropicModel(request.model) : undefined,
104
+ temperature: request.temperature,
105
+ maxTokens: request.maxTokens,
106
+ systemPrompt: systemMessage?.content,
107
+ stream: false,
108
+ }); // ClaudeResponse type
109
+ // Calculate cost
110
+ const pricing = this.capabilities.pricing[response.model];
111
+ const promptCost = (response.usage.input_tokens / 1000) * pricing.promptCostPer1k;
112
+ const completionCost = (response.usage.output_tokens / 1000) * pricing.completionCostPer1k;
113
+ // Convert to unified response format
114
+ return {
115
+ id: response.id,
116
+ model: this.mapFromAnthropicModel(response.model),
117
+ provider: 'anthropic',
118
+ content: response.content[0].text,
119
+ usage: {
120
+ promptTokens: response.usage.input_tokens,
121
+ completionTokens: response.usage.output_tokens,
122
+ totalTokens: response.usage.input_tokens + response.usage.output_tokens,
123
+ },
124
+ cost: {
125
+ promptCost,
126
+ completionCost,
127
+ totalCost: promptCost + completionCost,
128
+ currency: 'USD',
129
+ },
130
+ finishReason: response.stop_reason === 'end_turn' ? 'stop' : 'length',
131
+ };
132
+ }
133
+ async *doStreamComplete(request) {
134
+ // Convert request to Claude format
135
+ const claudeMessages = request.messages.map((msg) => ({
136
+ role: msg.role === 'system' ? 'user' : msg.role,
137
+ content: msg.role === 'system' ? `System: ${msg.content}` : msg.content,
138
+ }));
139
+ const systemMessage = request.messages.find((m) => m.role === 'system');
140
+ // Get stream from Claude API
141
+ const stream = await this.claudeClient.sendMessage(claudeMessages, {
142
+ model: request.model ? this.mapToAnthropicModel(request.model) : undefined,
143
+ temperature: request.temperature,
144
+ maxTokens: request.maxTokens,
145
+ systemPrompt: systemMessage?.content,
146
+ stream: true,
147
+ }); // ClaudeStreamEvent type
148
+ let accumulatedContent = '';
149
+ let totalTokens = 0;
150
+ // Process stream events
151
+ for await (const event of stream) {
152
+ if (event.type === 'content_block_delta' && event.delta?.text) {
153
+ accumulatedContent += event.delta.text;
154
+ yield {
155
+ type: 'content',
156
+ delta: {
157
+ content: event.delta.text,
158
+ },
159
+ };
160
+ }
161
+ else if (event.type === 'message_delta' && event.usage) {
162
+ totalTokens = event.usage.output_tokens;
163
+ }
164
+ else if (event.type === 'message_stop') {
165
+ // Calculate final cost
166
+ const model = request.model || this.config.model;
167
+ const pricing = this.capabilities.pricing[model];
168
+ // Estimate prompt tokens (rough approximation)
169
+ const promptTokens = this.estimateTokens(JSON.stringify(request.messages));
170
+ const completionTokens = totalTokens;
171
+ const promptCost = (promptTokens / 1000) * pricing.promptCostPer1k;
172
+ const completionCost = (completionTokens / 1000) * pricing.completionCostPer1k;
173
+ yield {
174
+ type: 'done',
175
+ usage: {
176
+ promptTokens,
177
+ completionTokens,
178
+ totalTokens: promptTokens + completionTokens,
179
+ },
180
+ cost: {
181
+ promptCost,
182
+ completionCost,
183
+ totalCost: promptCost + completionCost,
184
+ currency: 'USD',
185
+ },
186
+ };
187
+ }
188
+ }
189
+ }
190
+ async listModels() {
191
+ return this.capabilities.supportedModels;
192
+ }
193
+ async getModelInfo(model) {
194
+ const anthropicModel = this.mapToAnthropicModel(model);
195
+ const info = this.claudeClient.getModelInfo(anthropicModel);
196
+ return {
197
+ model,
198
+ name: info.name,
199
+ description: info.description,
200
+ contextLength: info.contextWindow,
201
+ maxOutputTokens: this.capabilities.maxOutputTokens[model] || 4096,
202
+ supportedFeatures: [
203
+ 'chat',
204
+ 'completion',
205
+ ...(model.startsWith('claude-3') ? ['vision'] : []),
206
+ ],
207
+ pricing: this.capabilities.pricing[model],
208
+ };
209
+ }
210
+ async doHealthCheck() {
211
+ try {
212
+ // Use a minimal request to check API availability
213
+ await this.claudeClient.complete('Hi', {
214
+ maxTokens: 1,
215
+ });
216
+ return {
217
+ healthy: true,
218
+ timestamp: new Date(),
219
+ };
220
+ }
221
+ catch (error) {
222
+ return {
223
+ healthy: false,
224
+ error: error instanceof Error ? error.message : 'Unknown error',
225
+ timestamp: new Date(),
226
+ };
227
+ }
228
+ }
229
+ /**
230
+ * Map unified model to Anthropic model
231
+ */
232
+ mapToAnthropicModel(model) {
233
+ // Direct mapping since we use the same model names
234
+ return model;
235
+ }
236
+ /**
237
+ * Map Anthropic model to unified model
238
+ */
239
+ mapFromAnthropicModel(model) {
240
+ return model;
241
+ }
242
+ destroy() {
243
+ super.destroy();
244
+ this.claudeClient?.destroy();
245
+ }
246
+ }
247
+ //# sourceMappingURL=anthropic-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-provider.js","sourceRoot":"","sources":["../../src/providers/anthropic-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Abstract Base Provider for LLM integrations
3
+ * Provides common functionality for all LLM providers
4
+ */
5
+ import { EventEmitter } from 'events';
6
+ import { ILogger } from '../core/logger.js';
7
+ import { CircuitBreaker } from '../utils/helpers.js';
8
+ import { ILLMProvider, LLMProvider, LLMProviderConfig, LLMRequest, LLMResponse, LLMStreamEvent, LLMModel, ModelInfo, ProviderCapabilities, HealthCheckResult, ProviderStatus, CostEstimate, UsageStats, UsagePeriod, LLMProviderError } from './types.js';
9
+ export interface BaseProviderOptions {
10
+ logger: ILogger;
11
+ config: LLMProviderConfig;
12
+ cacheTTL?: number;
13
+ circuitBreakerOptions?: {
14
+ threshold?: number;
15
+ timeout?: number;
16
+ resetTimeout?: number;
17
+ };
18
+ }
19
+ export declare abstract class BaseProvider extends EventEmitter implements ILLMProvider {
20
+ abstract readonly name: LLMProvider;
21
+ abstract readonly capabilities: ProviderCapabilities;
22
+ protected logger: ILogger;
23
+ protected circuitBreaker: CircuitBreaker;
24
+ protected healthCheckInterval?: NodeJS.Timeout;
25
+ protected lastHealthCheck?: HealthCheckResult;
26
+ protected requestCount: number;
27
+ protected errorCount: number;
28
+ protected totalTokens: number;
29
+ protected totalCost: number;
30
+ protected requestMetrics: Map<string, any>;
31
+ config: LLMProviderConfig;
32
+ constructor(options: BaseProviderOptions);
33
+ /**
34
+ * Initialize the provider
35
+ */
36
+ initialize(): Promise<void>;
37
+ /**
38
+ * Provider-specific initialization
39
+ */
40
+ protected abstract doInitialize(): Promise<void>;
41
+ /**
42
+ * Validate provider configuration
43
+ */
44
+ protected validateConfig(): void;
45
+ /**
46
+ * Complete a request
47
+ */
48
+ complete(request: LLMRequest): Promise<LLMResponse>;
49
+ /**
50
+ * Provider-specific completion implementation
51
+ */
52
+ protected abstract doComplete(request: LLMRequest): Promise<LLMResponse>;
53
+ /**
54
+ * Stream complete a request
55
+ */
56
+ streamComplete(request: LLMRequest): AsyncIterable<LLMStreamEvent>;
57
+ /**
58
+ * Provider-specific stream completion implementation
59
+ */
60
+ protected abstract doStreamComplete(request: LLMRequest): AsyncIterable<LLMStreamEvent>;
61
+ /**
62
+ * List available models
63
+ */
64
+ abstract listModels(): Promise<LLMModel[]>;
65
+ /**
66
+ * Get model information
67
+ */
68
+ abstract getModelInfo(model: LLMModel): Promise<ModelInfo>;
69
+ /**
70
+ * Validate if a model is supported
71
+ */
72
+ validateModel(model: LLMModel): boolean;
73
+ /**
74
+ * Perform health check
75
+ */
76
+ healthCheck(): Promise<HealthCheckResult>;
77
+ /**
78
+ * Provider-specific health check implementation
79
+ */
80
+ protected abstract doHealthCheck(): Promise<HealthCheckResult>;
81
+ /**
82
+ * Get provider status
83
+ */
84
+ getStatus(): ProviderStatus;
85
+ /**
86
+ * Get remaining rate limit (override in provider)
87
+ */
88
+ protected getRateLimitRemaining(): number | undefined;
89
+ /**
90
+ * Get rate limit reset time (override in provider)
91
+ */
92
+ protected getRateLimitReset(): Date | undefined;
93
+ /**
94
+ * Estimate cost for a request
95
+ */
96
+ estimateCost(request: LLMRequest): Promise<CostEstimate>;
97
+ /**
98
+ * Simple token estimation (4 chars = 1 token approximation)
99
+ */
100
+ protected estimateTokens(text: string): number;
101
+ /**
102
+ * Get usage statistics
103
+ */
104
+ getUsage(period?: UsagePeriod): Promise<UsageStats>;
105
+ /**
106
+ * Get start date for period
107
+ */
108
+ private getStartDate;
109
+ /**
110
+ * Calculate average latency
111
+ */
112
+ private calculateAverageLatency;
113
+ /**
114
+ * Track successful request
115
+ */
116
+ protected trackRequest(request: LLMRequest, response: LLMResponse, latency: number): void;
117
+ /**
118
+ * Track streaming request
119
+ */
120
+ protected trackStreamRequest(request: LLMRequest, totalTokens: number, totalCost: number, latency: number): void;
121
+ /**
122
+ * Transform errors to provider errors
123
+ */
124
+ protected transformError(error: unknown): LLMProviderError;
125
+ /**
126
+ * Start periodic health checks
127
+ */
128
+ protected startHealthChecks(): void;
129
+ /**
130
+ * Clean up resources
131
+ */
132
+ destroy(): void;
133
+ }
134
+ //# sourceMappingURL=base-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-provider.d.ts","sourceRoot":"","sources":["../../src/providers/base-provider.ts"],"names":[],"mappings":"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"}