@juspay/neurolink 7.29.2 → 7.30.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 +12 -0
- package/dist/cli/commands/config.d.ts +83 -83
- package/dist/cli/commands/mcp.js +39 -9
- package/dist/cli/commands/models.js +25 -21
- package/dist/cli/commands/ollama.js +2 -2
- package/dist/cli/factories/commandFactory.d.ts +8 -0
- package/dist/cli/factories/commandFactory.js +65 -65
- package/dist/cli/factories/ollamaCommandFactory.js +3 -1
- package/dist/cli/factories/sagemakerCommandFactory.js +3 -2
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +11 -11
- package/dist/cli/utils/envManager.js +5 -5
- package/dist/cli/utils/ollamaUtils.d.ts +12 -0
- package/dist/cli/utils/ollamaUtils.js +58 -42
- package/dist/config/configManager.js +5 -2
- package/dist/config/conversationMemoryConfig.js +5 -0
- package/dist/core/analytics.d.ts +2 -24
- package/dist/core/analytics.js +12 -17
- package/dist/core/baseProvider.d.ts +30 -1
- package/dist/core/baseProvider.js +180 -198
- package/dist/core/conversationMemoryManager.d.ts +9 -15
- package/dist/core/conversationMemoryManager.js +98 -57
- package/dist/core/dynamicModels.d.ts +4 -4
- package/dist/core/dynamicModels.js +7 -7
- package/dist/core/evaluation.d.ts +9 -9
- package/dist/core/evaluation.js +117 -65
- package/dist/core/evaluationProviders.d.ts +18 -2
- package/dist/core/evaluationProviders.js +15 -13
- package/dist/core/modelConfiguration.d.ts +63 -0
- package/dist/core/modelConfiguration.js +354 -290
- package/dist/core/streamAnalytics.d.ts +10 -5
- package/dist/core/streamAnalytics.js +10 -10
- package/dist/core/types.d.ts +22 -110
- package/dist/core/types.js +13 -0
- package/dist/factories/providerFactory.js +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/lib/config/configManager.js +5 -2
- package/dist/lib/config/conversationMemoryConfig.js +5 -0
- package/dist/lib/core/analytics.d.ts +2 -24
- package/dist/lib/core/analytics.js +12 -17
- package/dist/lib/core/baseProvider.d.ts +30 -1
- package/dist/lib/core/baseProvider.js +180 -198
- package/dist/lib/core/conversationMemoryManager.d.ts +9 -15
- package/dist/lib/core/conversationMemoryManager.js +98 -57
- package/dist/lib/core/dynamicModels.js +7 -7
- package/dist/lib/core/evaluation.d.ts +9 -9
- package/dist/lib/core/evaluation.js +117 -65
- package/dist/lib/core/evaluationProviders.d.ts +18 -2
- package/dist/lib/core/evaluationProviders.js +15 -13
- package/dist/lib/core/modelConfiguration.d.ts +63 -0
- package/dist/lib/core/modelConfiguration.js +354 -290
- package/dist/lib/core/streamAnalytics.d.ts +10 -5
- package/dist/lib/core/streamAnalytics.js +10 -10
- package/dist/lib/core/types.d.ts +22 -110
- package/dist/lib/core/types.js +13 -0
- package/dist/lib/factories/providerFactory.js +1 -1
- package/dist/lib/index.d.ts +2 -1
- package/dist/lib/mcp/externalServerManager.js +15 -6
- package/dist/lib/mcp/factory.js +1 -1
- package/dist/lib/mcp/index.d.ts +1 -1
- package/dist/lib/mcp/index.js +1 -1
- package/dist/lib/mcp/mcpCircuitBreaker.js +5 -1
- package/dist/lib/mcp/mcpClientFactory.js +3 -0
- package/dist/lib/mcp/registry.d.ts +3 -3
- package/dist/lib/mcp/registry.js +3 -3
- package/dist/lib/mcp/servers/aiProviders/aiAnalysisTools.js +5 -5
- package/dist/lib/mcp/servers/aiProviders/aiWorkflowTools.js +6 -6
- package/dist/lib/mcp/servers/utilities/utilityServer.js +1 -1
- package/dist/lib/mcp/toolDiscoveryService.js +8 -2
- package/dist/lib/mcp/toolRegistry.js +4 -4
- package/dist/lib/middleware/builtin/analytics.js +4 -4
- package/dist/lib/middleware/builtin/guardrails.js +2 -2
- package/dist/lib/middleware/registry.js +11 -2
- package/dist/lib/models/modelRegistry.d.ts +1 -1
- package/dist/lib/models/modelRegistry.js +3 -3
- package/dist/lib/models/modelResolver.d.ts +1 -1
- package/dist/lib/models/modelResolver.js +2 -2
- package/dist/lib/neurolink.d.ts +116 -9
- package/dist/lib/neurolink.js +718 -956
- package/dist/lib/providers/amazonSagemaker.d.ts +1 -1
- package/dist/lib/providers/amazonSagemaker.js +12 -3
- package/dist/lib/providers/anthropic.d.ts +1 -1
- package/dist/lib/providers/anthropic.js +7 -6
- package/dist/lib/providers/anthropicBaseProvider.d.ts +1 -1
- package/dist/lib/providers/anthropicBaseProvider.js +4 -3
- package/dist/lib/providers/azureOpenai.d.ts +1 -1
- package/dist/lib/providers/azureOpenai.js +1 -1
- package/dist/lib/providers/googleAiStudio.d.ts +1 -1
- package/dist/lib/providers/googleAiStudio.js +2 -2
- package/dist/lib/providers/googleVertex.d.ts +40 -0
- package/dist/lib/providers/googleVertex.js +330 -274
- package/dist/lib/providers/huggingFace.js +1 -1
- package/dist/lib/providers/mistral.d.ts +1 -1
- package/dist/lib/providers/mistral.js +2 -2
- package/dist/lib/providers/ollama.d.ts +4 -0
- package/dist/lib/providers/ollama.js +38 -18
- package/dist/lib/providers/openAI.d.ts +1 -1
- package/dist/lib/providers/openAI.js +2 -2
- package/dist/lib/providers/sagemaker/adaptive-semaphore.js +7 -4
- package/dist/lib/providers/sagemaker/client.js +13 -3
- package/dist/lib/providers/sagemaker/config.js +5 -1
- package/dist/lib/providers/sagemaker/detection.js +19 -9
- package/dist/lib/providers/sagemaker/errors.d.ts +8 -1
- package/dist/lib/providers/sagemaker/errors.js +103 -20
- package/dist/lib/providers/sagemaker/language-model.d.ts +3 -3
- package/dist/lib/providers/sagemaker/language-model.js +4 -4
- package/dist/lib/providers/sagemaker/parsers.js +14 -6
- package/dist/lib/providers/sagemaker/streaming.js +14 -3
- package/dist/lib/providers/sagemaker/types.d.ts +1 -1
- package/dist/lib/proxy/awsProxyIntegration.js +1 -1
- package/dist/lib/sdk/toolRegistration.d.ts +1 -1
- package/dist/lib/types/cli.d.ts +80 -8
- package/dist/lib/types/contextTypes.js +2 -2
- package/dist/lib/types/conversationTypes.d.ts +10 -0
- package/dist/lib/types/generateTypes.d.ts +2 -5
- package/dist/lib/types/providers.d.ts +81 -19
- package/dist/lib/types/providers.js +6 -6
- package/dist/lib/types/streamTypes.d.ts +4 -6
- package/dist/lib/types/typeAliases.d.ts +1 -1
- package/dist/lib/utils/analyticsUtils.d.ts +33 -0
- package/dist/lib/utils/analyticsUtils.js +76 -0
- package/dist/lib/utils/conversationMemoryUtils.d.ts +1 -2
- package/dist/lib/utils/conversationMemoryUtils.js +6 -7
- package/dist/lib/utils/errorHandling.js +4 -1
- package/dist/lib/utils/evaluationUtils.d.ts +27 -0
- package/dist/lib/utils/evaluationUtils.js +131 -0
- package/dist/lib/utils/optionsUtils.js +10 -1
- package/dist/lib/utils/performance.d.ts +1 -1
- package/dist/lib/utils/performance.js +15 -3
- package/dist/lib/utils/providerHealth.d.ts +48 -0
- package/dist/lib/utils/providerHealth.js +199 -254
- package/dist/lib/utils/providerUtils.js +2 -2
- package/dist/lib/utils/timeout.js +8 -3
- package/dist/mcp/externalServerManager.js +15 -6
- package/dist/mcp/factory.js +1 -1
- package/dist/mcp/index.d.ts +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/mcpCircuitBreaker.js +5 -1
- package/dist/mcp/mcpClientFactory.js +3 -0
- package/dist/mcp/registry.d.ts +3 -3
- package/dist/mcp/registry.js +3 -3
- package/dist/mcp/servers/aiProviders/aiAnalysisTools.js +5 -5
- package/dist/mcp/servers/aiProviders/aiWorkflowTools.js +6 -6
- package/dist/mcp/servers/utilities/utilityServer.js +1 -1
- package/dist/mcp/toolDiscoveryService.js +8 -2
- package/dist/mcp/toolRegistry.js +4 -4
- package/dist/middleware/builtin/analytics.js +4 -4
- package/dist/middleware/builtin/guardrails.js +2 -2
- package/dist/middleware/registry.js +11 -2
- package/dist/models/modelRegistry.d.ts +1 -1
- package/dist/models/modelRegistry.js +3 -3
- package/dist/models/modelResolver.d.ts +1 -1
- package/dist/models/modelResolver.js +2 -2
- package/dist/neurolink.d.ts +116 -9
- package/dist/neurolink.js +718 -956
- package/dist/providers/amazonSagemaker.d.ts +1 -1
- package/dist/providers/amazonSagemaker.js +12 -3
- package/dist/providers/anthropic.d.ts +1 -1
- package/dist/providers/anthropic.js +7 -6
- package/dist/providers/anthropicBaseProvider.d.ts +1 -1
- package/dist/providers/anthropicBaseProvider.js +4 -3
- package/dist/providers/azureOpenai.d.ts +1 -1
- package/dist/providers/azureOpenai.js +1 -1
- package/dist/providers/googleAiStudio.d.ts +1 -1
- package/dist/providers/googleAiStudio.js +2 -2
- package/dist/providers/googleVertex.d.ts +40 -0
- package/dist/providers/googleVertex.js +330 -274
- package/dist/providers/huggingFace.js +1 -1
- package/dist/providers/mistral.d.ts +1 -1
- package/dist/providers/mistral.js +2 -2
- package/dist/providers/ollama.d.ts +4 -0
- package/dist/providers/ollama.js +38 -18
- package/dist/providers/openAI.d.ts +1 -1
- package/dist/providers/openAI.js +2 -2
- package/dist/providers/sagemaker/adaptive-semaphore.js +7 -4
- package/dist/providers/sagemaker/client.js +13 -3
- package/dist/providers/sagemaker/config.js +5 -1
- package/dist/providers/sagemaker/detection.js +19 -9
- package/dist/providers/sagemaker/errors.d.ts +8 -1
- package/dist/providers/sagemaker/errors.js +103 -20
- package/dist/providers/sagemaker/language-model.d.ts +3 -3
- package/dist/providers/sagemaker/language-model.js +4 -4
- package/dist/providers/sagemaker/parsers.js +14 -6
- package/dist/providers/sagemaker/streaming.js +14 -3
- package/dist/providers/sagemaker/types.d.ts +1 -1
- package/dist/proxy/awsProxyIntegration.js +1 -1
- package/dist/sdk/toolRegistration.d.ts +1 -1
- package/dist/types/cli.d.ts +80 -8
- package/dist/types/contextTypes.js +2 -2
- package/dist/types/conversationTypes.d.ts +10 -0
- package/dist/types/generateTypes.d.ts +2 -5
- package/dist/types/providers.d.ts +81 -19
- package/dist/types/providers.js +6 -6
- package/dist/types/streamTypes.d.ts +4 -6
- package/dist/types/typeAliases.d.ts +1 -1
- package/dist/utils/analyticsUtils.d.ts +33 -0
- package/dist/utils/analyticsUtils.js +76 -0
- package/dist/utils/conversationMemoryUtils.d.ts +1 -2
- package/dist/utils/conversationMemoryUtils.js +6 -7
- package/dist/utils/errorHandling.js +4 -1
- package/dist/utils/evaluationUtils.d.ts +27 -0
- package/dist/utils/evaluationUtils.js +131 -0
- package/dist/utils/optionsUtils.js +10 -1
- package/dist/utils/performance.d.ts +1 -1
- package/dist/utils/performance.js +15 -3
- package/dist/utils/providerHealth.d.ts +48 -0
- package/dist/utils/providerHealth.js +199 -254
- package/dist/utils/providerUtils.js +2 -2
- package/dist/utils/timeout.js +8 -3
- package/package.json +1 -1
- package/dist/context/ContextManager.d.ts +0 -28
- package/dist/context/ContextManager.js +0 -113
- package/dist/context/config.d.ts +0 -5
- package/dist/context/config.js +0 -42
- package/dist/context/types.d.ts +0 -20
- package/dist/context/types.js +0 -1
- package/dist/context/utils.d.ts +0 -7
- package/dist/context/utils.js +0 -8
- package/dist/lib/context/ContextManager.d.ts +0 -28
- package/dist/lib/context/ContextManager.js +0 -113
- package/dist/lib/context/config.d.ts +0 -5
- package/dist/lib/context/config.js +0 -42
- package/dist/lib/context/types.d.ts +0 -20
- package/dist/lib/context/types.js +0 -1
- package/dist/lib/context/utils.d.ts +0 -7
- package/dist/lib/context/utils.js +0 -8
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import type { AnalyticsData } from "./types.js";
|
|
2
2
|
import type { TokenUsage } from "../types/providers.js";
|
|
3
3
|
import type { ToolCall, ToolResult } from "../types/streamTypes.js";
|
|
4
|
+
/**
|
|
5
|
+
* Raw usage data from Vercel AI SDK (uses different field names)
|
|
6
|
+
*/
|
|
7
|
+
interface AISDKUsage {
|
|
8
|
+
promptTokens: number;
|
|
9
|
+
completionTokens: number;
|
|
10
|
+
totalTokens: number;
|
|
11
|
+
}
|
|
4
12
|
/**
|
|
5
13
|
* Stream analytics result from Vercel AI SDK streamText
|
|
6
14
|
*/
|
|
7
15
|
export interface StreamTextResult {
|
|
8
16
|
textStream: AsyncIterable<string>;
|
|
9
17
|
text: Promise<string>;
|
|
10
|
-
usage: Promise<
|
|
11
|
-
promptTokens: number;
|
|
12
|
-
completionTokens: number;
|
|
13
|
-
totalTokens: number;
|
|
14
|
-
} | undefined>;
|
|
18
|
+
usage: Promise<AISDKUsage | undefined>;
|
|
15
19
|
response: Promise<{
|
|
16
20
|
id?: string;
|
|
17
21
|
model?: string;
|
|
@@ -63,3 +67,4 @@ export declare class BaseStreamAnalyticsCollector implements StreamAnalyticsColl
|
|
|
63
67
|
* Global instance of stream analytics collector
|
|
64
68
|
*/
|
|
65
69
|
export declare const streamAnalyticsCollector: BaseStreamAnalyticsCollector;
|
|
70
|
+
export {};
|
|
@@ -13,24 +13,24 @@ export class BaseStreamAnalyticsCollector {
|
|
|
13
13
|
if (!usage) {
|
|
14
14
|
logger.debug("No usage data available from stream result");
|
|
15
15
|
return {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
input: 0,
|
|
17
|
+
output: 0,
|
|
18
|
+
total: 0,
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
return {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
input: usage.promptTokens || 0,
|
|
23
|
+
output: usage.completionTokens || 0,
|
|
24
|
+
total: usage.totalTokens ||
|
|
25
25
|
(usage.promptTokens || 0) + (usage.completionTokens || 0),
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
28
|
catch (error) {
|
|
29
29
|
logger.warn("Failed to collect usage from stream result", { error });
|
|
30
30
|
return {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
input: 0,
|
|
32
|
+
output: 0,
|
|
33
|
+
total: 0,
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
36
|
}
|
|
@@ -100,7 +100,7 @@ export class BaseStreamAnalyticsCollector {
|
|
|
100
100
|
error: error instanceof Error ? error.message : String(error),
|
|
101
101
|
});
|
|
102
102
|
// Return minimal analytics on error
|
|
103
|
-
return createAnalytics(provider, model, { usage: {
|
|
103
|
+
return createAnalytics(provider, model, { usage: { input: 0, output: 0, total: 0 } }, responseTime, {
|
|
104
104
|
...metadata,
|
|
105
105
|
streamingMode: true,
|
|
106
106
|
analyticsError: true,
|
package/dist/lib/core/types.d.ts
CHANGED
|
@@ -3,17 +3,15 @@ import type { ZodUnknownSchema, ValidationSchema } from "../types/typeAliases.js
|
|
|
3
3
|
import type { GenerateResult } from "../types/generateTypes.js";
|
|
4
4
|
import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
|
|
5
5
|
import type { JsonValue } from "../types/common.js";
|
|
6
|
-
import type { ChatMessage } from "../types/conversationTypes.js";
|
|
7
|
-
import type { AnalyticsData } from "
|
|
6
|
+
import type { ChatMessage, ConversationMemoryConfig } from "../types/conversationTypes.js";
|
|
7
|
+
import type { TokenUsage, AnalyticsData } from "../types/providers.js";
|
|
8
|
+
import type { EvaluationData } from "../index.js";
|
|
9
|
+
export type { EvaluationData };
|
|
8
10
|
export interface TextGenerationResult {
|
|
9
11
|
content: string;
|
|
10
12
|
provider?: string;
|
|
11
13
|
model?: string;
|
|
12
|
-
usage?:
|
|
13
|
-
promptTokens?: number;
|
|
14
|
-
completionTokens?: number;
|
|
15
|
-
totalTokens?: number;
|
|
16
|
-
};
|
|
14
|
+
usage?: TokenUsage;
|
|
17
15
|
responseTime?: number;
|
|
18
16
|
toolsUsed?: string[];
|
|
19
17
|
toolExecutions?: Array<{
|
|
@@ -30,13 +28,7 @@ export interface TextGenerationResult {
|
|
|
30
28
|
category?: string;
|
|
31
29
|
}>;
|
|
32
30
|
analytics?: AnalyticsData;
|
|
33
|
-
evaluation?:
|
|
34
|
-
relevance: number;
|
|
35
|
-
accuracy: number;
|
|
36
|
-
completeness: number;
|
|
37
|
-
overall: number;
|
|
38
|
-
reasoning?: string;
|
|
39
|
-
};
|
|
31
|
+
evaluation?: EvaluationData;
|
|
40
32
|
}
|
|
41
33
|
/**
|
|
42
34
|
* Supported AI Provider Names
|
|
@@ -105,10 +97,20 @@ export declare enum GoogleAIModels {
|
|
|
105
97
|
GEMINI_1_5_FLASH = "gemini-1.5-flash",
|
|
106
98
|
GEMINI_1_5_FLASH_LITE = "gemini-1.5-flash-lite"
|
|
107
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Supported Models for Anthropic (Direct API)
|
|
102
|
+
*/
|
|
103
|
+
export declare enum AnthropicModels {
|
|
104
|
+
CLAUDE_3_5_SONNET = "claude-3-5-sonnet-20241022",
|
|
105
|
+
CLAUDE_3_5_HAIKU = "claude-3-5-haiku-20241022",
|
|
106
|
+
CLAUDE_3_SONNET = "claude-3-sonnet-20240229",
|
|
107
|
+
CLAUDE_3_OPUS = "claude-3-opus-20240229",
|
|
108
|
+
CLAUDE_3_HAIKU = "claude-3-haiku-20240307"
|
|
109
|
+
}
|
|
108
110
|
/**
|
|
109
111
|
* Union type of all supported model names
|
|
110
112
|
*/
|
|
111
|
-
export type SupportedModelName = BedrockModels | OpenAIModels | VertexModels | GoogleAIModels;
|
|
113
|
+
export type SupportedModelName = BedrockModels | OpenAIModels | VertexModels | GoogleAIModels | AnthropicModels;
|
|
112
114
|
/**
|
|
113
115
|
* Provider configuration specifying provider and its available models
|
|
114
116
|
*/
|
|
@@ -153,102 +155,12 @@ export interface TextGenerationOptions {
|
|
|
153
155
|
content: string;
|
|
154
156
|
}>;
|
|
155
157
|
conversationMessages?: ChatMessage[];
|
|
158
|
+
conversationMemoryConfig?: Partial<ConversationMemoryConfig>;
|
|
159
|
+
originalPrompt?: string;
|
|
160
|
+
expectedOutcome?: string;
|
|
161
|
+
evaluationCriteria?: string[];
|
|
156
162
|
}
|
|
157
|
-
export type { AnalyticsData };
|
|
158
|
-
/**
|
|
159
|
-
* Response quality evaluation scores
|
|
160
|
-
* Comprehensive evaluation interface for response quality assessment
|
|
161
|
-
*/
|
|
162
|
-
export interface EvaluationData {
|
|
163
|
-
relevance: number;
|
|
164
|
-
accuracy: number;
|
|
165
|
-
completeness: number;
|
|
166
|
-
overall: number;
|
|
167
|
-
domainAlignment?: number;
|
|
168
|
-
terminologyAccuracy?: number;
|
|
169
|
-
toolEffectiveness?: number;
|
|
170
|
-
isOffTopic: boolean;
|
|
171
|
-
alertSeverity: "low" | "medium" | "high" | "none";
|
|
172
|
-
reasoning: string;
|
|
173
|
-
suggestedImprovements?: string;
|
|
174
|
-
evaluationModel: string;
|
|
175
|
-
evaluationTime: number;
|
|
176
|
-
evaluationDomain?: string;
|
|
177
|
-
evaluationProvider?: string;
|
|
178
|
-
evaluationAttempt?: number;
|
|
179
|
-
evaluationConfig?: {
|
|
180
|
-
mode: string;
|
|
181
|
-
fallbackUsed: boolean;
|
|
182
|
-
costEstimate: number;
|
|
183
|
-
};
|
|
184
|
-
domainConfig?: {
|
|
185
|
-
domainName: string;
|
|
186
|
-
domainDescription: string;
|
|
187
|
-
keyTerms: string[];
|
|
188
|
-
failurePatterns: string[];
|
|
189
|
-
successPatterns: string[];
|
|
190
|
-
evaluationCriteria?: Record<string, unknown>;
|
|
191
|
-
};
|
|
192
|
-
domainEvaluation?: {
|
|
193
|
-
domainRelevance: number;
|
|
194
|
-
terminologyAccuracy: number;
|
|
195
|
-
domainExpertise: number;
|
|
196
|
-
domainSpecificInsights: string[];
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* BACKWARD COMPATIBILITY: Legacy evaluation interface
|
|
201
|
-
* Maintains existing field names for backward compatibility
|
|
202
|
-
*/
|
|
203
|
-
export interface LegacyEvaluationData {
|
|
204
|
-
relevance: number;
|
|
205
|
-
accuracy: number;
|
|
206
|
-
completeness: number;
|
|
207
|
-
overall: number;
|
|
208
|
-
isOffTopic: boolean;
|
|
209
|
-
alertSeverity: "low" | "medium" | "high" | "none";
|
|
210
|
-
reasoning: string;
|
|
211
|
-
suggestedImprovements?: string;
|
|
212
|
-
evaluationModel: string;
|
|
213
|
-
evaluationTime: number;
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Evaluation system configuration for multi-provider support
|
|
217
|
-
*/
|
|
218
|
-
export interface EvaluationConfig {
|
|
219
|
-
provider: string;
|
|
220
|
-
model: string;
|
|
221
|
-
mode: "fast" | "balanced" | "quality";
|
|
222
|
-
fallbackEnabled: boolean;
|
|
223
|
-
fallbackProviders: string[];
|
|
224
|
-
timeout: number;
|
|
225
|
-
maxTokens: number;
|
|
226
|
-
temperature: number;
|
|
227
|
-
preferCheap: boolean;
|
|
228
|
-
maxCostPerEval: number;
|
|
229
|
-
retryAttempts: number;
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Provider model configuration for evaluation
|
|
233
|
-
*/
|
|
234
|
-
export interface ProviderModelConfig {
|
|
235
|
-
provider: string;
|
|
236
|
-
models: {
|
|
237
|
-
fast: string;
|
|
238
|
-
balanced: string;
|
|
239
|
-
quality: string;
|
|
240
|
-
};
|
|
241
|
-
costPerToken: {
|
|
242
|
-
input: number;
|
|
243
|
-
output: number;
|
|
244
|
-
};
|
|
245
|
-
requiresApiKey: string[];
|
|
246
|
-
performance: {
|
|
247
|
-
speed: number;
|
|
248
|
-
quality: number;
|
|
249
|
-
cost: number;
|
|
250
|
-
};
|
|
251
|
-
}
|
|
163
|
+
export type { AnalyticsData } from "../types/providers.js";
|
|
252
164
|
/**
|
|
253
165
|
* Enhanced result interfaces with optional analytics/evaluation
|
|
254
166
|
*/
|
package/dist/lib/core/types.js
CHANGED
|
@@ -79,6 +79,19 @@ export var GoogleAIModels;
|
|
|
79
79
|
GoogleAIModels["GEMINI_1_5_FLASH"] = "gemini-1.5-flash";
|
|
80
80
|
GoogleAIModels["GEMINI_1_5_FLASH_LITE"] = "gemini-1.5-flash-lite";
|
|
81
81
|
})(GoogleAIModels || (GoogleAIModels = {}));
|
|
82
|
+
/**
|
|
83
|
+
* Supported Models for Anthropic (Direct API)
|
|
84
|
+
*/
|
|
85
|
+
export var AnthropicModels;
|
|
86
|
+
(function (AnthropicModels) {
|
|
87
|
+
// Claude 3.5 Series (Latest)
|
|
88
|
+
AnthropicModels["CLAUDE_3_5_SONNET"] = "claude-3-5-sonnet-20241022";
|
|
89
|
+
AnthropicModels["CLAUDE_3_5_HAIKU"] = "claude-3-5-haiku-20241022";
|
|
90
|
+
// Claude 3 Series (Legacy support)
|
|
91
|
+
AnthropicModels["CLAUDE_3_SONNET"] = "claude-3-sonnet-20240229";
|
|
92
|
+
AnthropicModels["CLAUDE_3_OPUS"] = "claude-3-opus-20240229";
|
|
93
|
+
AnthropicModels["CLAUDE_3_HAIKU"] = "claude-3-haiku-20240307";
|
|
94
|
+
})(AnthropicModels || (AnthropicModels = {}));
|
|
82
95
|
/**
|
|
83
96
|
* Default provider configurations
|
|
84
97
|
*/
|
|
@@ -54,7 +54,7 @@ export class ProviderFactory {
|
|
|
54
54
|
// Try as async factory function first (most providers are async functions)
|
|
55
55
|
result = await registration.constructor(model, providerName, sdk);
|
|
56
56
|
}
|
|
57
|
-
catch
|
|
57
|
+
catch {
|
|
58
58
|
// Fallback to constructor - ensure parameters are maintained
|
|
59
59
|
result = new registration.constructor(model, providerName, sdk);
|
|
60
60
|
}
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -83,7 +83,8 @@ export declare function getTelemetryStatus(): {
|
|
|
83
83
|
enabled: boolean;
|
|
84
84
|
initialized: boolean;
|
|
85
85
|
};
|
|
86
|
-
export type { TextGenerationOptions, TextGenerationResult, AnalyticsData,
|
|
86
|
+
export type { TextGenerationOptions, TextGenerationResult, AnalyticsData, } from "./core/types.js";
|
|
87
|
+
export type { EvaluationData } from "./types/providers.js";
|
|
87
88
|
/**
|
|
88
89
|
* BACKWARD COMPATIBILITY: Legacy generateText function
|
|
89
90
|
* Provides standalone generateText function for existing code that uses it
|
|
@@ -357,6 +357,9 @@ export class ExternalServerManager extends EventEmitter {
|
|
|
357
357
|
// Start the server
|
|
358
358
|
await this.startServer(serverId);
|
|
359
359
|
const finalInstance = this.servers.get(serverId);
|
|
360
|
+
if (!finalInstance) {
|
|
361
|
+
throw new Error(`Server ${serverId} not found after registration`);
|
|
362
|
+
}
|
|
360
363
|
// Convert RuntimeMCPServerInfo to ExternalMCPServerInstance for return
|
|
361
364
|
const convertedInstance = {
|
|
362
365
|
config: finalInstance.config,
|
|
@@ -927,11 +930,18 @@ export class ExternalServerManager extends EventEmitter {
|
|
|
927
930
|
serverId: serverId,
|
|
928
931
|
category: detectCategory({ isExternal: true, serverId }),
|
|
929
932
|
};
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
933
|
+
try {
|
|
934
|
+
registrations.push(toolRegistry.registerTool(toolId, toolInfo, {
|
|
935
|
+
execute: async (params, _context) => {
|
|
936
|
+
// Execute tool via ExternalServerManager for proper lifecycle management
|
|
937
|
+
return await this.executeTool(serverId, toolName, params, { timeout: this.config.defaultTimeout });
|
|
938
|
+
},
|
|
939
|
+
}));
|
|
940
|
+
mcpLogger.debug(`[ExternalServerManager] Registered tool with main registry: ${toolId}`);
|
|
941
|
+
}
|
|
942
|
+
catch (registrationError) {
|
|
943
|
+
mcpLogger.warn(`[ExternalServerManager] Failed to register tool ${toolId} with main registry:`, registrationError);
|
|
944
|
+
}
|
|
935
945
|
}
|
|
936
946
|
const results = await Promise.allSettled(registrations);
|
|
937
947
|
const ok = results.filter((r) => r.status === "fulfilled").length;
|
|
@@ -1009,7 +1019,6 @@ export class ExternalServerManager extends EventEmitter {
|
|
|
1009
1019
|
}
|
|
1010
1020
|
}
|
|
1011
1021
|
catch (error) {
|
|
1012
|
-
const duration = Date.now() - startTime;
|
|
1013
1022
|
instance.metrics.totalErrors++;
|
|
1014
1023
|
mcpLogger.error(`[ExternalServerManager] Tool execution failed: ${toolName} on ${serverId}`, error);
|
|
1015
1024
|
throw error;
|
package/dist/lib/mcp/factory.js
CHANGED
package/dist/lib/mcp/index.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export declare function listMCPs(): Promise<McpMetadata[]>;
|
|
|
18
18
|
/**
|
|
19
19
|
* Execute an MCP operation - simplified
|
|
20
20
|
*/
|
|
21
|
-
export declare function executeMCP<T = unknown>(
|
|
21
|
+
export declare function executeMCP<T = unknown>(_name: string, _config: unknown, _args: unknown, _context?: {
|
|
22
22
|
sessionId?: string;
|
|
23
23
|
userId?: string;
|
|
24
24
|
}): Promise<T>;
|
package/dist/lib/mcp/index.js
CHANGED
|
@@ -21,7 +21,7 @@ export async function listMCPs() {
|
|
|
21
21
|
/**
|
|
22
22
|
* Execute an MCP operation - simplified
|
|
23
23
|
*/
|
|
24
|
-
export async function executeMCP(
|
|
24
|
+
export async function executeMCP(_name, _config, _args, _context) {
|
|
25
25
|
throw new Error("MCP execution not available - ecosystem removed");
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
@@ -285,7 +285,11 @@ export class CircuitBreakerManager {
|
|
|
285
285
|
this.breakers.set(name, breaker);
|
|
286
286
|
mcpLogger.debug(`[CircuitBreakerManager] Created circuit breaker: ${name}`);
|
|
287
287
|
}
|
|
288
|
-
|
|
288
|
+
const breaker = this.breakers.get(name);
|
|
289
|
+
if (!breaker) {
|
|
290
|
+
throw new Error(`Circuit breaker ${name} not found after creation`);
|
|
291
|
+
}
|
|
292
|
+
return breaker;
|
|
289
293
|
}
|
|
290
294
|
/**
|
|
291
295
|
* Remove a circuit breaker and clean up its resources
|
|
@@ -192,6 +192,9 @@ export class MCPClientFactory {
|
|
|
192
192
|
throw new Error("Process failed to start or exited immediately");
|
|
193
193
|
}
|
|
194
194
|
// Create transport
|
|
195
|
+
if (!config.command) {
|
|
196
|
+
throw new Error(`Command is required for stdio transport`);
|
|
197
|
+
}
|
|
195
198
|
const transport = new StdioClientTransport({
|
|
196
199
|
command: config.command,
|
|
197
200
|
args: config.args || [],
|
|
@@ -44,15 +44,15 @@ export declare class MCPRegistry implements McpRegistry {
|
|
|
44
44
|
/**
|
|
45
45
|
* Register a server (compatible with new interface)
|
|
46
46
|
*/
|
|
47
|
-
registerServer(serverId: string, serverConfig?: unknown,
|
|
47
|
+
registerServer(serverId: string, serverConfig?: unknown, _context?: ExecutionContext): Promise<void>;
|
|
48
48
|
/**
|
|
49
49
|
* Execute a tool (mock implementation for tests)
|
|
50
50
|
*/
|
|
51
|
-
executeTool<T = unknown>(toolName: string, args?: unknown,
|
|
51
|
+
executeTool<T = unknown>(toolName: string, args?: unknown, _context?: ExecutionContext): Promise<T>;
|
|
52
52
|
/**
|
|
53
53
|
* List all tools (compatible with new interface)
|
|
54
54
|
*/
|
|
55
|
-
listTools(
|
|
55
|
+
listTools(_context?: ExecutionContext): Promise<ToolInfo[]>;
|
|
56
56
|
/**
|
|
57
57
|
* Register a server (legacy sync version)
|
|
58
58
|
*/
|
package/dist/lib/mcp/registry.js
CHANGED
|
@@ -53,7 +53,7 @@ export class MCPRegistry {
|
|
|
53
53
|
/**
|
|
54
54
|
* Register a server (compatible with new interface)
|
|
55
55
|
*/
|
|
56
|
-
async registerServer(serverId, serverConfig,
|
|
56
|
+
async registerServer(serverId, serverConfig, _context) {
|
|
57
57
|
const plugin = {
|
|
58
58
|
metadata: {
|
|
59
59
|
name: serverId,
|
|
@@ -74,14 +74,14 @@ export class MCPRegistry {
|
|
|
74
74
|
/**
|
|
75
75
|
* Execute a tool (mock implementation for tests)
|
|
76
76
|
*/
|
|
77
|
-
async executeTool(toolName, args,
|
|
77
|
+
async executeTool(toolName, args, _context) {
|
|
78
78
|
registryLogger.info(`Executing tool: ${toolName}`);
|
|
79
79
|
return { result: `Mock execution of ${toolName}`, args };
|
|
80
80
|
}
|
|
81
81
|
/**
|
|
82
82
|
* List all tools (compatible with new interface)
|
|
83
83
|
*/
|
|
84
|
-
async listTools(
|
|
84
|
+
async listTools(_context) {
|
|
85
85
|
const tools = this.list().map((plugin) => ({
|
|
86
86
|
name: plugin.metadata.name,
|
|
87
87
|
description: plugin.metadata.description || "No description",
|
|
@@ -78,7 +78,7 @@ const OptimizeParametersSchema = z.object({
|
|
|
78
78
|
* AI Usage Analysis Tool
|
|
79
79
|
* Analyzes AI usage patterns, token consumption, and cost optimization opportunities
|
|
80
80
|
*/
|
|
81
|
-
const
|
|
81
|
+
const _analyzeAIUsageTool = {
|
|
82
82
|
name: "analyze-ai-usage",
|
|
83
83
|
description: "Analyze AI usage patterns, token consumption, and cost optimization opportunities",
|
|
84
84
|
category: "ai-analysis",
|
|
@@ -163,7 +163,7 @@ const analyzeAIUsageTool = {
|
|
|
163
163
|
* Provider Performance Benchmarking Tool
|
|
164
164
|
* Benchmarks AI provider performance across latency, quality, and cost metrics
|
|
165
165
|
*/
|
|
166
|
-
const
|
|
166
|
+
const _benchmarkProviderPerformanceTool = {
|
|
167
167
|
name: "benchmark-provider-performance",
|
|
168
168
|
description: "Benchmark AI provider performance across latency, quality, and cost metrics",
|
|
169
169
|
category: "ai-analysis",
|
|
@@ -199,7 +199,7 @@ const benchmarkProviderPerformanceTool = {
|
|
|
199
199
|
});
|
|
200
200
|
if (result && result.usage) {
|
|
201
201
|
totalLatency += Date.now() - testStartTime;
|
|
202
|
-
totalTokens += result.usage.
|
|
202
|
+
totalTokens += result.usage.total || 0;
|
|
203
203
|
successfulTests++;
|
|
204
204
|
}
|
|
205
205
|
}
|
|
@@ -210,7 +210,7 @@ const benchmarkProviderPerformanceTool = {
|
|
|
210
210
|
avgLatency: successfulTests > 0
|
|
211
211
|
? Math.round(totalLatency / successfulTests)
|
|
212
212
|
: 0,
|
|
213
|
-
|
|
213
|
+
total: totalTokens,
|
|
214
214
|
successRate: (successfulTests /
|
|
215
215
|
(testPrompts.length * typedParams.iterations)) *
|
|
216
216
|
100,
|
|
@@ -259,7 +259,7 @@ const benchmarkProviderPerformanceTool = {
|
|
|
259
259
|
* Prompt Parameter Optimization Tool
|
|
260
260
|
* Optimizes prompt parameters (temperature, max tokens) for better AI output quality and efficiency
|
|
261
261
|
*/
|
|
262
|
-
const
|
|
262
|
+
const _optimizePromptParametersTool = {
|
|
263
263
|
name: "optimize-prompt-parameters",
|
|
264
264
|
description: "Optimize prompt parameters (temperature, max tokens) for better AI output quality and efficiency",
|
|
265
265
|
category: "ai-optimization",
|
|
@@ -99,7 +99,7 @@ const debugAIOutputSchema = z.object({
|
|
|
99
99
|
/**
|
|
100
100
|
* Generate test cases for code functions
|
|
101
101
|
*/
|
|
102
|
-
const
|
|
102
|
+
const _generateTestCasesTool = {
|
|
103
103
|
name: "generate-test-cases",
|
|
104
104
|
description: "Generate comprehensive test cases for code functions with various test types and frameworks",
|
|
105
105
|
category: "ai-workflow",
|
|
@@ -203,7 +203,7 @@ Generate 3-5 comprehensive test cases covering the requested types.`;
|
|
|
203
203
|
/**
|
|
204
204
|
* Refactor code for improved quality
|
|
205
205
|
*/
|
|
206
|
-
const
|
|
206
|
+
const _refactorCodeTool = {
|
|
207
207
|
name: "refactor-code",
|
|
208
208
|
description: "AI-powered code refactoring for improved readability, performance, and maintainability",
|
|
209
209
|
category: "ai-workflow",
|
|
@@ -316,7 +316,7 @@ Focus on real, actionable improvements based on the specified objectives.`;
|
|
|
316
316
|
/**
|
|
317
317
|
* Generate documentation from code
|
|
318
318
|
*/
|
|
319
|
-
const
|
|
319
|
+
const _generateDocumentationTool = {
|
|
320
320
|
name: "generate-documentation",
|
|
321
321
|
description: "Automatically generate comprehensive documentation from code",
|
|
322
322
|
category: "ai-workflow",
|
|
@@ -427,7 +427,7 @@ Focus on creating accurate, useful documentation that explains the code's purpos
|
|
|
427
427
|
/**
|
|
428
428
|
* Debug AI-generated output
|
|
429
429
|
*/
|
|
430
|
-
const
|
|
430
|
+
const _debugAIOutputTool = {
|
|
431
431
|
name: "debug-ai-output",
|
|
432
432
|
description: "Analyze and debug AI-generated output to identify issues and suggest improvements",
|
|
433
433
|
category: "ai-workflow",
|
|
@@ -549,13 +549,13 @@ Provide thorough, actionable analysis focused on improving AI output quality.`;
|
|
|
549
549
|
},
|
|
550
550
|
};
|
|
551
551
|
// Helper functions
|
|
552
|
-
function
|
|
552
|
+
function _extractFunctionName(code) {
|
|
553
553
|
const match = code.match(/function\s+(\w+)|const\s+(\w+)\s*=|(\w+)\s*\(/);
|
|
554
554
|
return match
|
|
555
555
|
? match[1] || match[2] || match[3] || "processData"
|
|
556
556
|
: "processData";
|
|
557
557
|
}
|
|
558
|
-
function
|
|
558
|
+
function _simulateRefactoring(code, objectives, _styleGuide) {
|
|
559
559
|
// Simulate basic refactoring
|
|
560
560
|
let refactored = code;
|
|
561
561
|
if (objectives.includes("readability")) {
|
|
@@ -61,7 +61,7 @@ utilityServer.registerTool({
|
|
|
61
61
|
});
|
|
62
62
|
resultData.actualTimezone = timezone;
|
|
63
63
|
}
|
|
64
|
-
catch
|
|
64
|
+
catch {
|
|
65
65
|
const fallbackTimezone = "Asia/Kolkata";
|
|
66
66
|
logger.warn(`[Utility] Invalid timezone '${timezone}', falling back to ${fallbackTimezone}`);
|
|
67
67
|
resultData.localTime = now.toLocaleString("en-US", {
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { EventEmitter } from "events";
|
|
7
7
|
import { mcpLogger } from "../utils/logger.js";
|
|
8
8
|
import { globalCircuitBreakerManager } from "./mcpCircuitBreaker.js";
|
|
9
|
-
import { isObject, isNullish
|
|
9
|
+
import { isObject, isNullish } from "../utils/typeUtils.js";
|
|
10
10
|
import { validateToolName, validateToolDescription, } from "../utils/parameterValidation.js";
|
|
11
11
|
/**
|
|
12
12
|
* ToolDiscoveryService
|
|
@@ -133,6 +133,9 @@ export class ToolDiscoveryService extends EventEmitter {
|
|
|
133
133
|
this.serverToolStorage.set(serverId, []);
|
|
134
134
|
}
|
|
135
135
|
const serverTools = this.serverToolStorage.get(serverId);
|
|
136
|
+
if (!serverTools) {
|
|
137
|
+
throw new Error(`Server tools storage not found for ${serverId}`);
|
|
138
|
+
}
|
|
136
139
|
// Add tool if not already present
|
|
137
140
|
if (!serverTools.find((t) => t.name === tool.name)) {
|
|
138
141
|
serverTools.push({
|
|
@@ -145,7 +148,10 @@ export class ToolDiscoveryService extends EventEmitter {
|
|
|
145
148
|
if (!this.serverTools.has(serverId)) {
|
|
146
149
|
this.serverTools.set(serverId, new Set());
|
|
147
150
|
}
|
|
148
|
-
this.serverTools.get(serverId)
|
|
151
|
+
const serverToolSet = this.serverTools.get(serverId);
|
|
152
|
+
if (serverToolSet) {
|
|
153
|
+
serverToolSet.add(tool.name);
|
|
154
|
+
}
|
|
149
155
|
registeredTools.push(toolInfo);
|
|
150
156
|
// Emit tool registered event
|
|
151
157
|
this.emit("toolRegistered", {
|
|
@@ -81,11 +81,11 @@ export class MCPToolRegistry extends MCPRegistry {
|
|
|
81
81
|
async registerServer(serverInfoOrId, serverConfigOrContext, context) {
|
|
82
82
|
// Handle both signatures for backward compatibility
|
|
83
83
|
let serverInfo;
|
|
84
|
-
let
|
|
84
|
+
let _finalContext;
|
|
85
85
|
if (typeof serverInfoOrId === "string") {
|
|
86
86
|
// Legacy signature: registerServer(serverId, serverConfig, context)
|
|
87
87
|
const serverId = serverInfoOrId;
|
|
88
|
-
|
|
88
|
+
_finalContext = context;
|
|
89
89
|
// Convert legacy call to MCPServerInfo format using smart defaults
|
|
90
90
|
serverInfo = createMCPServerInfo({
|
|
91
91
|
id: serverId,
|
|
@@ -97,7 +97,7 @@ export class MCPToolRegistry extends MCPRegistry {
|
|
|
97
97
|
else {
|
|
98
98
|
// New signature: registerServer(serverInfo, context)
|
|
99
99
|
serverInfo = serverInfoOrId;
|
|
100
|
-
|
|
100
|
+
_finalContext = serverConfigOrContext;
|
|
101
101
|
}
|
|
102
102
|
const serverId = serverInfo.id;
|
|
103
103
|
registryLogger.info(`Registering MCPServerInfo directly: ${serverId}`);
|
|
@@ -348,7 +348,7 @@ export class MCPToolRegistry extends MCPRegistry {
|
|
|
348
348
|
if (filter.permissions && filter.permissions.length > 0) {
|
|
349
349
|
result = result.filter((tool) => {
|
|
350
350
|
const toolPermissions = tool.permissions || [];
|
|
351
|
-
return filter.permissions
|
|
351
|
+
return (filter.permissions?.some((perm) => toolPermissions.includes(perm)) ?? false);
|
|
352
352
|
});
|
|
353
353
|
}
|
|
354
354
|
}
|
|
@@ -30,10 +30,10 @@ export function createAnalyticsMiddleware() {
|
|
|
30
30
|
responseTime,
|
|
31
31
|
timestamp: new Date().toISOString(),
|
|
32
32
|
usage: {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
(result.usage?.completionTokens
|
|
33
|
+
input: result.usage?.promptTokens ?? 0,
|
|
34
|
+
output: result.usage?.completionTokens ?? 0,
|
|
35
|
+
total: (result.usage?.promptTokens ?? 0) +
|
|
36
|
+
(result.usage?.completionTokens ?? 0),
|
|
37
37
|
},
|
|
38
38
|
};
|
|
39
39
|
// Store metrics for potential retrieval
|
|
@@ -13,7 +13,7 @@ export function createGuardrailsMiddleware(config = {}) {
|
|
|
13
13
|
defaultEnabled: true,
|
|
14
14
|
};
|
|
15
15
|
const middleware = {
|
|
16
|
-
wrapGenerate: async ({ doGenerate, params }) => {
|
|
16
|
+
wrapGenerate: async ({ doGenerate, params: _params }) => {
|
|
17
17
|
logger.debug(`[GuardrailsMiddleware] Applying to generate call.`, {
|
|
18
18
|
badWordsEnabled: !!config.badWords?.enabled,
|
|
19
19
|
modelFilterEnabled: !!config.modelFilter?.enabled,
|
|
@@ -53,7 +53,7 @@ export function createGuardrailsMiddleware(config = {}) {
|
|
|
53
53
|
}
|
|
54
54
|
return result;
|
|
55
55
|
},
|
|
56
|
-
wrapStream: async ({ doStream, params }) => {
|
|
56
|
+
wrapStream: async ({ doStream, params: _params }) => {
|
|
57
57
|
logger.debug(`[GuardrailsMiddleware] Applying to stream call.`, {
|
|
58
58
|
badWordsEnabled: !!config.badWords?.enabled,
|
|
59
59
|
});
|