@juspay/neurolink 5.1.0 → 5.3.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 +21 -9
- package/README.md +123 -126
- package/dist/agent/direct-tools.d.ts +6 -6
- package/dist/cli/commands/config.d.ts +3 -3
- package/dist/cli/commands/mcp.js +8 -7
- package/dist/cli/factories/command-factory.d.ts +4 -0
- package/dist/cli/factories/command-factory.js +63 -8
- package/dist/cli/index.js +87 -140
- package/dist/core/base-provider.d.ts +423 -0
- package/dist/core/base-provider.js +376 -0
- package/dist/core/constants.d.ts +2 -1
- package/dist/core/constants.js +2 -1
- package/dist/core/dynamic-models.d.ts +6 -6
- package/dist/core/evaluation.d.ts +19 -80
- package/dist/core/evaluation.js +185 -484
- package/dist/core/factory.d.ts +3 -3
- package/dist/core/factory.js +31 -91
- package/dist/core/service-registry.d.ts +47 -0
- package/dist/core/service-registry.js +112 -0
- package/dist/core/types.d.ts +8 -1
- package/dist/factories/compatibility-factory.js +1 -1
- package/dist/factories/provider-factory.d.ts +72 -0
- package/dist/factories/provider-factory.js +144 -0
- package/dist/factories/provider-registry.d.ts +38 -0
- package/dist/factories/provider-registry.js +107 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.js +2 -4
- package/dist/lib/agent/direct-tools.d.ts +6 -6
- package/dist/lib/core/base-provider.d.ts +423 -0
- package/dist/lib/core/base-provider.js +376 -0
- package/dist/lib/core/constants.d.ts +2 -1
- package/dist/lib/core/constants.js +2 -1
- package/dist/lib/core/dynamic-models.d.ts +6 -6
- package/dist/lib/core/evaluation.d.ts +19 -80
- package/dist/lib/core/evaluation.js +185 -484
- package/dist/lib/core/factory.d.ts +3 -3
- package/dist/lib/core/factory.js +30 -91
- package/dist/lib/core/service-registry.d.ts +47 -0
- package/dist/lib/core/service-registry.js +112 -0
- package/dist/lib/core/types.d.ts +8 -1
- package/dist/lib/factories/compatibility-factory.js +1 -1
- package/dist/lib/factories/provider-factory.d.ts +72 -0
- package/dist/lib/factories/provider-factory.js +144 -0
- package/dist/lib/factories/provider-registry.d.ts +38 -0
- package/dist/lib/factories/provider-registry.js +107 -0
- package/dist/lib/index.d.ts +4 -3
- package/dist/lib/index.js +2 -4
- package/dist/lib/mcp/client.d.ts +1 -0
- package/dist/lib/mcp/client.js +1 -0
- package/dist/lib/mcp/config.js +28 -3
- package/dist/lib/mcp/context-manager.d.ts +1 -0
- package/dist/lib/mcp/context-manager.js +8 -4
- package/dist/lib/mcp/function-calling.d.ts +13 -0
- package/dist/lib/mcp/function-calling.js +134 -35
- package/dist/lib/mcp/initialize-tools.d.ts +1 -1
- package/dist/lib/mcp/initialize-tools.js +45 -1
- package/dist/lib/mcp/initialize.js +16 -6
- package/dist/lib/mcp/neurolink-mcp-client.d.ts +1 -0
- package/dist/lib/mcp/neurolink-mcp-client.js +21 -5
- package/dist/lib/mcp/servers/agent/direct-tools-server.d.ts +8 -0
- package/dist/lib/mcp/servers/agent/direct-tools-server.js +109 -0
- package/dist/lib/mcp/servers/ai-providers/ai-core-server.js +3 -1
- package/dist/lib/mcp/servers/ai-providers/ai-workflow-tools.d.ts +2 -2
- package/dist/lib/mcp/unified-registry.d.ts +4 -0
- package/dist/lib/mcp/unified-registry.js +42 -9
- package/dist/lib/neurolink.d.ts +156 -117
- package/dist/lib/neurolink.js +619 -404
- package/dist/lib/providers/amazon-bedrock.d.ts +32 -0
- package/dist/lib/providers/amazon-bedrock.js +143 -0
- package/dist/lib/providers/analytics-helper.js +7 -4
- package/dist/lib/providers/anthropic-baseprovider.d.ts +23 -0
- package/dist/lib/providers/anthropic-baseprovider.js +114 -0
- package/dist/lib/providers/anthropic.d.ts +19 -43
- package/dist/lib/providers/anthropic.js +82 -306
- package/dist/lib/providers/azure-openai.d.ts +20 -0
- package/dist/lib/providers/azure-openai.js +89 -0
- package/dist/lib/providers/function-calling-provider.d.ts +64 -2
- package/dist/lib/providers/function-calling-provider.js +208 -9
- package/dist/lib/providers/google-ai-studio.d.ts +23 -0
- package/dist/lib/providers/google-ai-studio.js +107 -0
- package/dist/lib/providers/google-vertex.d.ts +47 -0
- package/dist/lib/providers/google-vertex.js +205 -0
- package/dist/lib/providers/huggingFace.d.ts +32 -25
- package/dist/lib/providers/huggingFace.js +97 -431
- package/dist/lib/providers/index.d.ts +9 -9
- package/dist/lib/providers/index.js +9 -9
- package/dist/lib/providers/mcp-provider.js +24 -5
- package/dist/lib/providers/mistral.d.ts +42 -0
- package/dist/lib/providers/mistral.js +160 -0
- package/dist/lib/providers/ollama.d.ts +52 -36
- package/dist/lib/providers/ollama.js +297 -520
- package/dist/lib/providers/openAI.d.ts +19 -18
- package/dist/lib/providers/openAI.js +76 -275
- package/dist/lib/sdk/tool-extension.d.ts +181 -0
- package/dist/lib/sdk/tool-extension.js +283 -0
- package/dist/lib/sdk/tool-registration.d.ts +95 -0
- package/dist/lib/sdk/tool-registration.js +167 -0
- package/dist/lib/services/streaming/streaming-manager.js +11 -10
- package/dist/lib/services/websocket/websocket-server.js +12 -11
- package/dist/lib/telemetry/telemetry-service.js +8 -7
- package/dist/lib/types/generate-types.d.ts +1 -0
- package/dist/lib/types/mcp-types.d.ts +116 -0
- package/dist/lib/types/mcp-types.js +5 -0
- package/dist/lib/types/stream-types.d.ts +30 -18
- package/dist/lib/types/universal-provider-options.d.ts +87 -0
- package/dist/lib/types/universal-provider-options.js +53 -0
- package/dist/mcp/client.d.ts +1 -0
- package/dist/mcp/client.js +1 -0
- package/dist/mcp/config.js +28 -3
- package/dist/mcp/context-manager.d.ts +1 -0
- package/dist/mcp/context-manager.js +8 -4
- package/dist/mcp/function-calling.d.ts +13 -0
- package/dist/mcp/function-calling.js +134 -35
- package/dist/mcp/initialize-tools.d.ts +1 -1
- package/dist/mcp/initialize-tools.js +45 -1
- package/dist/mcp/initialize.js +16 -6
- package/dist/mcp/neurolink-mcp-client.d.ts +1 -0
- package/dist/mcp/neurolink-mcp-client.js +21 -5
- package/dist/mcp/servers/agent/direct-tools-server.d.ts +8 -0
- package/dist/mcp/servers/agent/direct-tools-server.js +109 -0
- package/dist/mcp/servers/ai-providers/ai-core-server.js +3 -1
- package/dist/mcp/servers/ai-providers/ai-workflow-tools.d.ts +2 -2
- package/dist/mcp/unified-registry.d.ts +4 -0
- package/dist/mcp/unified-registry.js +42 -9
- package/dist/neurolink.d.ts +156 -117
- package/dist/neurolink.js +619 -404
- package/dist/providers/amazon-bedrock.d.ts +32 -0
- package/dist/providers/amazon-bedrock.js +143 -0
- package/dist/providers/analytics-helper.js +7 -4
- package/dist/providers/anthropic-baseprovider.d.ts +23 -0
- package/dist/providers/anthropic-baseprovider.js +114 -0
- package/dist/providers/anthropic.d.ts +19 -43
- package/dist/providers/anthropic.js +81 -305
- package/dist/providers/azure-openai.d.ts +20 -0
- package/dist/providers/azure-openai.js +89 -0
- package/dist/providers/function-calling-provider.d.ts +64 -2
- package/dist/providers/function-calling-provider.js +208 -9
- package/dist/providers/google-ai-studio.d.ts +23 -0
- package/dist/providers/google-ai-studio.js +108 -0
- package/dist/providers/google-vertex.d.ts +47 -0
- package/dist/providers/google-vertex.js +205 -0
- package/dist/providers/huggingFace.d.ts +32 -25
- package/dist/providers/huggingFace.js +96 -430
- package/dist/providers/index.d.ts +9 -9
- package/dist/providers/index.js +9 -9
- package/dist/providers/mcp-provider.js +24 -5
- package/dist/providers/mistral.d.ts +42 -0
- package/dist/providers/mistral.js +160 -0
- package/dist/providers/ollama.d.ts +52 -36
- package/dist/providers/ollama.js +297 -519
- package/dist/providers/openAI.d.ts +19 -18
- package/dist/providers/openAI.js +76 -276
- package/dist/sdk/tool-extension.d.ts +181 -0
- package/dist/sdk/tool-extension.js +283 -0
- package/dist/sdk/tool-registration.d.ts +95 -0
- package/dist/sdk/tool-registration.js +168 -0
- package/dist/services/streaming/streaming-manager.js +11 -10
- package/dist/services/websocket/websocket-server.js +12 -11
- package/dist/telemetry/telemetry-service.js +8 -7
- package/dist/types/generate-types.d.ts +1 -0
- package/dist/types/mcp-types.d.ts +116 -0
- package/dist/types/mcp-types.js +5 -0
- package/dist/types/stream-types.d.ts +30 -18
- package/dist/types/universal-provider-options.d.ts +87 -0
- package/dist/types/universal-provider-options.js +53 -0
- package/package.json +12 -5
- package/dist/lib/providers/agent-enhanced-provider.d.ts +0 -93
- package/dist/lib/providers/agent-enhanced-provider.js +0 -605
- package/dist/lib/providers/amazonBedrock.d.ts +0 -28
- package/dist/lib/providers/amazonBedrock.js +0 -364
- package/dist/lib/providers/azureOpenAI.d.ts +0 -42
- package/dist/lib/providers/azureOpenAI.js +0 -347
- package/dist/lib/providers/googleAIStudio.d.ts +0 -42
- package/dist/lib/providers/googleAIStudio.js +0 -364
- package/dist/lib/providers/googleVertexAI.d.ts +0 -34
- package/dist/lib/providers/googleVertexAI.js +0 -547
- package/dist/lib/providers/mistralAI.d.ts +0 -37
- package/dist/lib/providers/mistralAI.js +0 -325
- package/dist/providers/agent-enhanced-provider.d.ts +0 -93
- package/dist/providers/agent-enhanced-provider.js +0 -606
- package/dist/providers/amazonBedrock.d.ts +0 -28
- package/dist/providers/amazonBedrock.js +0 -364
- package/dist/providers/azureOpenAI.d.ts +0 -42
- package/dist/providers/azureOpenAI.js +0 -348
- package/dist/providers/googleAIStudio.d.ts +0 -42
- package/dist/providers/googleAIStudio.js +0 -364
- package/dist/providers/googleVertexAI.d.ts +0 -34
- package/dist/providers/googleVertexAI.js +0 -547
- package/dist/providers/mistralAI.d.ts +0 -37
- package/dist/providers/mistralAI.js +0 -325
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { ProviderFactory } from "./provider-factory.js";
|
|
2
|
+
// ✅ FINAL CIRCULAR DEPENDENCY FIX: Lazy loading all providers
|
|
3
|
+
// Removed all static imports - providers loaded dynamically when needed
|
|
4
|
+
// This breaks the circular dependency chain completely
|
|
5
|
+
import { AIProviderName, GoogleAIModels, OpenAIModels } from "../core/types.js";
|
|
6
|
+
import { logger } from "../utils/logger.js";
|
|
7
|
+
/**
|
|
8
|
+
* Provider Registry - registers all providers with the factory
|
|
9
|
+
* This is where we migrate providers one by one to the new pattern
|
|
10
|
+
*/
|
|
11
|
+
export class ProviderRegistry {
|
|
12
|
+
static registered = false;
|
|
13
|
+
static options = {
|
|
14
|
+
enableManualMCP: false, // Default to disabled for safety
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Register all providers with the factory
|
|
18
|
+
*/
|
|
19
|
+
static async registerAllProviders() {
|
|
20
|
+
if (this.registered) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
// ✅ LAZY LOADING: Register providers with dynamic import factory functions
|
|
25
|
+
const { ProviderFactory } = await import("./provider-factory.js");
|
|
26
|
+
// Register Google AI Studio Provider (our validated baseline)
|
|
27
|
+
ProviderFactory.registerProvider(AIProviderName.GOOGLE_AI, async (modelName, providerName, sdk) => {
|
|
28
|
+
const { GoogleAIStudioProvider } = await import("../providers/google-ai-studio.js");
|
|
29
|
+
return new GoogleAIStudioProvider(modelName, sdk);
|
|
30
|
+
}, GoogleAIModels.GEMINI_2_5_FLASH, ["google-ai-studio", "google", "gemini", "google-ai"]);
|
|
31
|
+
// Register OpenAI provider
|
|
32
|
+
ProviderFactory.registerProvider(AIProviderName.OPENAI, async (modelName, providerName, sdk) => {
|
|
33
|
+
const { OpenAIProvider } = await import("../providers/openAI.js");
|
|
34
|
+
return new OpenAIProvider(modelName);
|
|
35
|
+
}, OpenAIModels.GPT_4O_MINI, ["gpt", "chatgpt"]);
|
|
36
|
+
// Register Anthropic provider
|
|
37
|
+
ProviderFactory.registerProvider(AIProviderName.ANTHROPIC, async (modelName, providerName, sdk) => {
|
|
38
|
+
const { AnthropicProvider } = await import("../providers/anthropic.js");
|
|
39
|
+
return new AnthropicProvider(modelName, sdk);
|
|
40
|
+
}, "claude-3-5-sonnet-20241022", ["claude", "anthropic"]);
|
|
41
|
+
// Register Amazon Bedrock provider
|
|
42
|
+
ProviderFactory.registerProvider(AIProviderName.BEDROCK, async (modelName) => {
|
|
43
|
+
const { AmazonBedrockProvider } = await import("../providers/amazon-bedrock.js");
|
|
44
|
+
return new AmazonBedrockProvider(modelName);
|
|
45
|
+
}, undefined, // Let provider read BEDROCK_MODEL from .env
|
|
46
|
+
["bedrock", "aws"]);
|
|
47
|
+
// Register Azure OpenAI provider
|
|
48
|
+
ProviderFactory.registerProvider(AIProviderName.AZURE, async (modelName) => {
|
|
49
|
+
const { AzureOpenAIProvider } = await import("../providers/azure-openai.js");
|
|
50
|
+
return new AzureOpenAIProvider(modelName);
|
|
51
|
+
}, "gpt-4o-mini", ["azure", "azure-openai"]);
|
|
52
|
+
// Register Google Vertex AI provider
|
|
53
|
+
ProviderFactory.registerProvider(AIProviderName.VERTEX, async (modelName) => {
|
|
54
|
+
const { GoogleVertexProvider } = await import("../providers/google-vertex.js");
|
|
55
|
+
return new GoogleVertexProvider(modelName);
|
|
56
|
+
}, "gemini-2.5-pro", ["vertex", "google-vertex"]);
|
|
57
|
+
// Register Hugging Face provider (Unified Router implementation)
|
|
58
|
+
ProviderFactory.registerProvider(AIProviderName.HUGGINGFACE, async (modelName) => {
|
|
59
|
+
const { HuggingFaceProvider } = await import("../providers/huggingFace.js");
|
|
60
|
+
return new HuggingFaceProvider(modelName);
|
|
61
|
+
}, process.env.HUGGINGFACE_MODEL || "microsoft/DialoGPT-medium", ["huggingface", "hf"]);
|
|
62
|
+
// Register Mistral AI provider
|
|
63
|
+
ProviderFactory.registerProvider(AIProviderName.MISTRAL, async (modelName, providerName, sdk) => {
|
|
64
|
+
const { MistralProvider } = await import("../providers/mistral.js");
|
|
65
|
+
return new MistralProvider(modelName, sdk);
|
|
66
|
+
}, "mistral-large-latest", ["mistral"]);
|
|
67
|
+
// Register Ollama provider
|
|
68
|
+
ProviderFactory.registerProvider(AIProviderName.OLLAMA, async (modelName) => {
|
|
69
|
+
const { OllamaProvider } = await import("../providers/ollama.js");
|
|
70
|
+
return new OllamaProvider(modelName);
|
|
71
|
+
}, process.env.OLLAMA_MODEL || "llama3.1:8b", ["ollama", "local"]);
|
|
72
|
+
logger.debug("All providers registered successfully");
|
|
73
|
+
this.registered = true;
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
logger.error("Failed to register providers:", error);
|
|
77
|
+
throw error;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Check if providers are registered
|
|
82
|
+
*/
|
|
83
|
+
static isRegistered() {
|
|
84
|
+
return this.registered;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Clear registrations (for testing)
|
|
88
|
+
*/
|
|
89
|
+
static clearRegistrations() {
|
|
90
|
+
ProviderFactory.clearRegistrations();
|
|
91
|
+
this.registered = false;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Set registry options (should be called before initialization)
|
|
95
|
+
*/
|
|
96
|
+
static setOptions(options) {
|
|
97
|
+
this.options = { ...this.options, ...options };
|
|
98
|
+
logger.debug("Provider registry options updated:", this.options);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get current registry options
|
|
102
|
+
*/
|
|
103
|
+
static getOptions() {
|
|
104
|
+
return { ...this.options };
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Note: Providers are registered explicitly when needed to avoid circular dependencies
|
package/dist/index.d.ts
CHANGED
|
@@ -12,12 +12,13 @@ export type { AIProvider, AIProviderName, ProviderConfig, StreamingOptions, Prov
|
|
|
12
12
|
export type { GenerateOptions, GenerateResult, EnhancedProvider, } from "./types/generate-types.js";
|
|
13
13
|
export { CompatibilityConversionFactory } from "./factories/compatibility-factory.js";
|
|
14
14
|
export { ProviderGenerateFactory } from "./factories/provider-generate-factory.js";
|
|
15
|
+
export type { SimpleTool, ToolContext } from "./sdk/tool-registration.js";
|
|
16
|
+
export { createTool, createTypedTool, validateTool, } from "./sdk/tool-registration.js";
|
|
17
|
+
export type { InMemoryMCPServerConfig, InMemoryToolInfo, InMemoryToolResult, } from "./types/mcp-types.js";
|
|
15
18
|
export { BedrockModels, OpenAIModels, VertexModels, DEFAULT_PROVIDER_CONFIGS, } from "./core/types.js";
|
|
16
|
-
export { GoogleVertexAI, AmazonBedrock, OpenAI, AnthropicProvider, AzureOpenAIProvider, } from "./providers/index.js";
|
|
17
|
-
export type { ProviderName } from "./providers/index.js";
|
|
18
|
-
export { PROVIDERS, AVAILABLE_PROVIDERS } from "./providers/index.js";
|
|
19
19
|
export { getBestProvider, getAvailableProviders, isValidProvider, } from "./utils/providerUtils.js";
|
|
20
20
|
export { NeuroLink } from "./neurolink.js";
|
|
21
|
+
export type { ProviderStatus, MCPStatus, MCPServerInfo } from "./neurolink.js";
|
|
21
22
|
export declare const VERSION = "1.0.0";
|
|
22
23
|
/**
|
|
23
24
|
* Quick start factory function
|
package/dist/index.js
CHANGED
|
@@ -11,14 +11,12 @@ import { AIProviderFactory } from "./core/factory.js";
|
|
|
11
11
|
export { AIProviderFactory };
|
|
12
12
|
export { CompatibilityConversionFactory } from "./factories/compatibility-factory.js";
|
|
13
13
|
export { ProviderGenerateFactory } from "./factories/provider-generate-factory.js";
|
|
14
|
+
export { createTool, createTypedTool, validateTool, } from "./sdk/tool-registration.js";
|
|
14
15
|
// Model enums
|
|
15
16
|
export { BedrockModels, OpenAIModels, VertexModels, DEFAULT_PROVIDER_CONFIGS, } from "./core/types.js";
|
|
16
|
-
// Provider exports
|
|
17
|
-
export { GoogleVertexAI, AmazonBedrock, OpenAI, AnthropicProvider, AzureOpenAIProvider, } from "./providers/index.js";
|
|
18
|
-
export { PROVIDERS, AVAILABLE_PROVIDERS } from "./providers/index.js";
|
|
19
17
|
// Utility exports
|
|
20
18
|
export { getBestProvider, getAvailableProviders, isValidProvider, } from "./utils/providerUtils.js";
|
|
21
|
-
// Main NeuroLink wrapper class
|
|
19
|
+
// Main NeuroLink wrapper class and diagnostic types
|
|
22
20
|
export { NeuroLink } from "./neurolink.js";
|
|
23
21
|
// Version
|
|
24
22
|
export const VERSION = "1.0.0";
|
|
@@ -220,8 +220,8 @@ export declare const directAgentTools: {
|
|
|
220
220
|
mode: z.ZodDefault<z.ZodEnum<["create", "overwrite", "append"]>>;
|
|
221
221
|
}, "strip", z.ZodTypeAny, {
|
|
222
222
|
path: string;
|
|
223
|
-
mode: "create" | "overwrite" | "append";
|
|
224
223
|
content: string;
|
|
224
|
+
mode: "create" | "overwrite" | "append";
|
|
225
225
|
}, {
|
|
226
226
|
path: string;
|
|
227
227
|
content: string;
|
|
@@ -250,8 +250,8 @@ export declare const directAgentTools: {
|
|
|
250
250
|
}> & {
|
|
251
251
|
execute: (args: {
|
|
252
252
|
path: string;
|
|
253
|
-
mode: "create" | "overwrite" | "append";
|
|
254
253
|
content: string;
|
|
254
|
+
mode: "create" | "overwrite" | "append";
|
|
255
255
|
}, options: import("ai").ToolExecutionOptions) => PromiseLike<{
|
|
256
256
|
success: boolean;
|
|
257
257
|
error: string;
|
|
@@ -563,8 +563,8 @@ export declare function getToolsForCategory(category?: "basic" | "filesystem" |
|
|
|
563
563
|
mode: z.ZodDefault<z.ZodEnum<["create", "overwrite", "append"]>>;
|
|
564
564
|
}, "strip", z.ZodTypeAny, {
|
|
565
565
|
path: string;
|
|
566
|
-
mode: "create" | "overwrite" | "append";
|
|
567
566
|
content: string;
|
|
567
|
+
mode: "create" | "overwrite" | "append";
|
|
568
568
|
}, {
|
|
569
569
|
path: string;
|
|
570
570
|
content: string;
|
|
@@ -593,8 +593,8 @@ export declare function getToolsForCategory(category?: "basic" | "filesystem" |
|
|
|
593
593
|
}> & {
|
|
594
594
|
execute: (args: {
|
|
595
595
|
path: string;
|
|
596
|
-
mode: "create" | "overwrite" | "append";
|
|
597
596
|
content: string;
|
|
597
|
+
mode: "create" | "overwrite" | "append";
|
|
598
598
|
}, options: import("ai").ToolExecutionOptions) => PromiseLike<{
|
|
599
599
|
success: boolean;
|
|
600
600
|
error: string;
|
|
@@ -907,8 +907,8 @@ export declare function getToolsForCategory(category?: "basic" | "filesystem" |
|
|
|
907
907
|
mode: z.ZodDefault<z.ZodEnum<["create", "overwrite", "append"]>>;
|
|
908
908
|
}, "strip", z.ZodTypeAny, {
|
|
909
909
|
path: string;
|
|
910
|
-
mode: "create" | "overwrite" | "append";
|
|
911
910
|
content: string;
|
|
911
|
+
mode: "create" | "overwrite" | "append";
|
|
912
912
|
}, {
|
|
913
913
|
path: string;
|
|
914
914
|
content: string;
|
|
@@ -937,8 +937,8 @@ export declare function getToolsForCategory(category?: "basic" | "filesystem" |
|
|
|
937
937
|
}> & {
|
|
938
938
|
execute: (args: {
|
|
939
939
|
path: string;
|
|
940
|
-
mode: "create" | "overwrite" | "append";
|
|
941
940
|
content: string;
|
|
941
|
+
mode: "create" | "overwrite" | "append";
|
|
942
942
|
}, options: import("ai").ToolExecutionOptions) => PromiseLike<{
|
|
943
943
|
success: boolean;
|
|
944
944
|
error: string;
|
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
import type { ZodType, ZodTypeDef } from "zod";
|
|
2
|
+
import type { Schema } from "ai";
|
|
3
|
+
import type { Tool } from "ai";
|
|
4
|
+
import type { AIProvider, TextGenerationOptions, EnhancedGenerateResult, AnalyticsData, AIProviderName } from "../core/types.js";
|
|
5
|
+
import type { StreamOptions, StreamResult } from "../types/stream-types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Abstract base class for all AI providers
|
|
8
|
+
* Tools are integrated as first-class citizens - always available by default
|
|
9
|
+
*/
|
|
10
|
+
export declare abstract class BaseProvider implements AIProvider {
|
|
11
|
+
protected readonly modelName: string;
|
|
12
|
+
protected readonly providerName: AIProviderName;
|
|
13
|
+
protected readonly defaultTimeout: number;
|
|
14
|
+
protected readonly directTools: {
|
|
15
|
+
getCurrentTime: Tool<import("zod").ZodObject<{
|
|
16
|
+
timezone: import("zod").ZodOptional<import("zod").ZodString>;
|
|
17
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
18
|
+
timezone?: string | undefined;
|
|
19
|
+
}, {
|
|
20
|
+
timezone?: string | undefined;
|
|
21
|
+
}>, {
|
|
22
|
+
success: boolean;
|
|
23
|
+
time: string;
|
|
24
|
+
timezone: string;
|
|
25
|
+
iso: string;
|
|
26
|
+
timestamp?: undefined;
|
|
27
|
+
error?: undefined;
|
|
28
|
+
} | {
|
|
29
|
+
success: boolean;
|
|
30
|
+
time: string;
|
|
31
|
+
iso: string;
|
|
32
|
+
timestamp: number;
|
|
33
|
+
timezone?: undefined;
|
|
34
|
+
error?: undefined;
|
|
35
|
+
} | {
|
|
36
|
+
success: boolean;
|
|
37
|
+
error: string;
|
|
38
|
+
time?: undefined;
|
|
39
|
+
timezone?: undefined;
|
|
40
|
+
iso?: undefined;
|
|
41
|
+
timestamp?: undefined;
|
|
42
|
+
}> & {
|
|
43
|
+
execute: (args: {
|
|
44
|
+
timezone?: string | undefined;
|
|
45
|
+
}, options: import("ai").ToolExecutionOptions) => PromiseLike<{
|
|
46
|
+
success: boolean;
|
|
47
|
+
time: string;
|
|
48
|
+
timezone: string;
|
|
49
|
+
iso: string;
|
|
50
|
+
timestamp?: undefined;
|
|
51
|
+
error?: undefined;
|
|
52
|
+
} | {
|
|
53
|
+
success: boolean;
|
|
54
|
+
time: string;
|
|
55
|
+
iso: string;
|
|
56
|
+
timestamp: number;
|
|
57
|
+
timezone?: undefined;
|
|
58
|
+
error?: undefined;
|
|
59
|
+
} | {
|
|
60
|
+
success: boolean;
|
|
61
|
+
error: string;
|
|
62
|
+
time?: undefined;
|
|
63
|
+
timezone?: undefined;
|
|
64
|
+
iso?: undefined;
|
|
65
|
+
timestamp?: undefined;
|
|
66
|
+
}>;
|
|
67
|
+
};
|
|
68
|
+
readFile: Tool<import("zod").ZodObject<{
|
|
69
|
+
path: import("zod").ZodString;
|
|
70
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
71
|
+
path: string;
|
|
72
|
+
}, {
|
|
73
|
+
path: string;
|
|
74
|
+
}>, {
|
|
75
|
+
success: boolean;
|
|
76
|
+
error: string;
|
|
77
|
+
content?: undefined;
|
|
78
|
+
size?: undefined;
|
|
79
|
+
path?: undefined;
|
|
80
|
+
lastModified?: undefined;
|
|
81
|
+
} | {
|
|
82
|
+
success: boolean;
|
|
83
|
+
content: string;
|
|
84
|
+
size: number;
|
|
85
|
+
path: string;
|
|
86
|
+
lastModified: string;
|
|
87
|
+
error?: undefined;
|
|
88
|
+
} | {
|
|
89
|
+
success: boolean;
|
|
90
|
+
error: string;
|
|
91
|
+
path: string;
|
|
92
|
+
content?: undefined;
|
|
93
|
+
size?: undefined;
|
|
94
|
+
lastModified?: undefined;
|
|
95
|
+
}> & {
|
|
96
|
+
execute: (args: {
|
|
97
|
+
path: string;
|
|
98
|
+
}, options: import("ai").ToolExecutionOptions) => PromiseLike<{
|
|
99
|
+
success: boolean;
|
|
100
|
+
error: string;
|
|
101
|
+
content?: undefined;
|
|
102
|
+
size?: undefined;
|
|
103
|
+
path?: undefined;
|
|
104
|
+
lastModified?: undefined;
|
|
105
|
+
} | {
|
|
106
|
+
success: boolean;
|
|
107
|
+
content: string;
|
|
108
|
+
size: number;
|
|
109
|
+
path: string;
|
|
110
|
+
lastModified: string;
|
|
111
|
+
error?: undefined;
|
|
112
|
+
} | {
|
|
113
|
+
success: boolean;
|
|
114
|
+
error: string;
|
|
115
|
+
path: string;
|
|
116
|
+
content?: undefined;
|
|
117
|
+
size?: undefined;
|
|
118
|
+
lastModified?: undefined;
|
|
119
|
+
}>;
|
|
120
|
+
};
|
|
121
|
+
listDirectory: Tool<import("zod").ZodObject<{
|
|
122
|
+
path: import("zod").ZodString;
|
|
123
|
+
includeHidden: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>;
|
|
124
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
125
|
+
path: string;
|
|
126
|
+
includeHidden: boolean;
|
|
127
|
+
}, {
|
|
128
|
+
path: string;
|
|
129
|
+
includeHidden?: boolean | undefined;
|
|
130
|
+
}>, {
|
|
131
|
+
success: boolean;
|
|
132
|
+
path: string;
|
|
133
|
+
items: {
|
|
134
|
+
name: string;
|
|
135
|
+
type: string;
|
|
136
|
+
size: number | undefined;
|
|
137
|
+
lastModified: string;
|
|
138
|
+
}[];
|
|
139
|
+
count: number;
|
|
140
|
+
error?: undefined;
|
|
141
|
+
} | {
|
|
142
|
+
success: boolean;
|
|
143
|
+
error: string;
|
|
144
|
+
path: string;
|
|
145
|
+
items?: undefined;
|
|
146
|
+
count?: undefined;
|
|
147
|
+
}> & {
|
|
148
|
+
execute: (args: {
|
|
149
|
+
path: string;
|
|
150
|
+
includeHidden: boolean;
|
|
151
|
+
}, options: import("ai").ToolExecutionOptions) => PromiseLike<{
|
|
152
|
+
success: boolean;
|
|
153
|
+
path: string;
|
|
154
|
+
items: {
|
|
155
|
+
name: string;
|
|
156
|
+
type: string;
|
|
157
|
+
size: number | undefined;
|
|
158
|
+
lastModified: string;
|
|
159
|
+
}[];
|
|
160
|
+
count: number;
|
|
161
|
+
error?: undefined;
|
|
162
|
+
} | {
|
|
163
|
+
success: boolean;
|
|
164
|
+
error: string;
|
|
165
|
+
path: string;
|
|
166
|
+
items?: undefined;
|
|
167
|
+
count?: undefined;
|
|
168
|
+
}>;
|
|
169
|
+
};
|
|
170
|
+
calculateMath: Tool<import("zod").ZodObject<{
|
|
171
|
+
expression: import("zod").ZodString;
|
|
172
|
+
precision: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
|
|
173
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
174
|
+
expression: string;
|
|
175
|
+
precision: number;
|
|
176
|
+
}, {
|
|
177
|
+
expression: string;
|
|
178
|
+
precision?: number | undefined;
|
|
179
|
+
}>, {
|
|
180
|
+
success: boolean;
|
|
181
|
+
error: string;
|
|
182
|
+
expression?: undefined;
|
|
183
|
+
result?: undefined;
|
|
184
|
+
type?: undefined;
|
|
185
|
+
} | {
|
|
186
|
+
success: boolean;
|
|
187
|
+
expression: string;
|
|
188
|
+
result: any;
|
|
189
|
+
type: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function";
|
|
190
|
+
error?: undefined;
|
|
191
|
+
} | {
|
|
192
|
+
success: boolean;
|
|
193
|
+
error: string;
|
|
194
|
+
expression: string;
|
|
195
|
+
result?: undefined;
|
|
196
|
+
type?: undefined;
|
|
197
|
+
}> & {
|
|
198
|
+
execute: (args: {
|
|
199
|
+
expression: string;
|
|
200
|
+
precision: number;
|
|
201
|
+
}, options: import("ai").ToolExecutionOptions) => PromiseLike<{
|
|
202
|
+
success: boolean;
|
|
203
|
+
error: string;
|
|
204
|
+
expression?: undefined;
|
|
205
|
+
result?: undefined;
|
|
206
|
+
type?: undefined;
|
|
207
|
+
} | {
|
|
208
|
+
success: boolean;
|
|
209
|
+
expression: string;
|
|
210
|
+
result: any;
|
|
211
|
+
type: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function";
|
|
212
|
+
error?: undefined;
|
|
213
|
+
} | {
|
|
214
|
+
success: boolean;
|
|
215
|
+
error: string;
|
|
216
|
+
expression: string;
|
|
217
|
+
result?: undefined;
|
|
218
|
+
type?: undefined;
|
|
219
|
+
}>;
|
|
220
|
+
};
|
|
221
|
+
writeFile: Tool<import("zod").ZodObject<{
|
|
222
|
+
path: import("zod").ZodString;
|
|
223
|
+
content: import("zod").ZodString;
|
|
224
|
+
mode: import("zod").ZodDefault<import("zod").ZodEnum<["create", "overwrite", "append"]>>;
|
|
225
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
226
|
+
path: string;
|
|
227
|
+
content: string;
|
|
228
|
+
mode: "create" | "overwrite" | "append";
|
|
229
|
+
}, {
|
|
230
|
+
path: string;
|
|
231
|
+
content: string;
|
|
232
|
+
mode?: "create" | "overwrite" | "append" | undefined;
|
|
233
|
+
}>, {
|
|
234
|
+
success: boolean;
|
|
235
|
+
error: string;
|
|
236
|
+
path?: undefined;
|
|
237
|
+
mode?: undefined;
|
|
238
|
+
size?: undefined;
|
|
239
|
+
written?: undefined;
|
|
240
|
+
} | {
|
|
241
|
+
success: boolean;
|
|
242
|
+
path: string;
|
|
243
|
+
mode: "create" | "overwrite" | "append";
|
|
244
|
+
size: number;
|
|
245
|
+
written: number;
|
|
246
|
+
error?: undefined;
|
|
247
|
+
} | {
|
|
248
|
+
success: boolean;
|
|
249
|
+
error: string;
|
|
250
|
+
path: string;
|
|
251
|
+
mode?: undefined;
|
|
252
|
+
size?: undefined;
|
|
253
|
+
written?: undefined;
|
|
254
|
+
}> & {
|
|
255
|
+
execute: (args: {
|
|
256
|
+
path: string;
|
|
257
|
+
content: string;
|
|
258
|
+
mode: "create" | "overwrite" | "append";
|
|
259
|
+
}, options: import("ai").ToolExecutionOptions) => PromiseLike<{
|
|
260
|
+
success: boolean;
|
|
261
|
+
error: string;
|
|
262
|
+
path?: undefined;
|
|
263
|
+
mode?: undefined;
|
|
264
|
+
size?: undefined;
|
|
265
|
+
written?: undefined;
|
|
266
|
+
} | {
|
|
267
|
+
success: boolean;
|
|
268
|
+
path: string;
|
|
269
|
+
mode: "create" | "overwrite" | "append";
|
|
270
|
+
size: number;
|
|
271
|
+
written: number;
|
|
272
|
+
error?: undefined;
|
|
273
|
+
} | {
|
|
274
|
+
success: boolean;
|
|
275
|
+
error: string;
|
|
276
|
+
path: string;
|
|
277
|
+
mode?: undefined;
|
|
278
|
+
size?: undefined;
|
|
279
|
+
written?: undefined;
|
|
280
|
+
}>;
|
|
281
|
+
};
|
|
282
|
+
searchFiles: Tool<import("zod").ZodObject<{
|
|
283
|
+
directory: import("zod").ZodString;
|
|
284
|
+
pattern: import("zod").ZodString;
|
|
285
|
+
recursive: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>;
|
|
286
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
287
|
+
directory: string;
|
|
288
|
+
pattern: string;
|
|
289
|
+
recursive: boolean;
|
|
290
|
+
}, {
|
|
291
|
+
directory: string;
|
|
292
|
+
pattern: string;
|
|
293
|
+
recursive?: boolean | undefined;
|
|
294
|
+
}>, {
|
|
295
|
+
success: boolean;
|
|
296
|
+
error: string;
|
|
297
|
+
directory?: undefined;
|
|
298
|
+
pattern?: undefined;
|
|
299
|
+
matches?: undefined;
|
|
300
|
+
count?: undefined;
|
|
301
|
+
} | {
|
|
302
|
+
success: boolean;
|
|
303
|
+
directory: string;
|
|
304
|
+
pattern: string;
|
|
305
|
+
matches: {
|
|
306
|
+
name: string;
|
|
307
|
+
path: string;
|
|
308
|
+
size: number;
|
|
309
|
+
lastModified: string;
|
|
310
|
+
}[];
|
|
311
|
+
count: number;
|
|
312
|
+
error?: undefined;
|
|
313
|
+
} | {
|
|
314
|
+
success: boolean;
|
|
315
|
+
error: string;
|
|
316
|
+
directory: string;
|
|
317
|
+
pattern: string;
|
|
318
|
+
matches?: undefined;
|
|
319
|
+
count?: undefined;
|
|
320
|
+
}> & {
|
|
321
|
+
execute: (args: {
|
|
322
|
+
directory: string;
|
|
323
|
+
pattern: string;
|
|
324
|
+
recursive: boolean;
|
|
325
|
+
}, options: import("ai").ToolExecutionOptions) => PromiseLike<{
|
|
326
|
+
success: boolean;
|
|
327
|
+
error: string;
|
|
328
|
+
directory?: undefined;
|
|
329
|
+
pattern?: undefined;
|
|
330
|
+
matches?: undefined;
|
|
331
|
+
count?: undefined;
|
|
332
|
+
} | {
|
|
333
|
+
success: boolean;
|
|
334
|
+
directory: string;
|
|
335
|
+
pattern: string;
|
|
336
|
+
matches: {
|
|
337
|
+
name: string;
|
|
338
|
+
path: string;
|
|
339
|
+
size: number;
|
|
340
|
+
lastModified: string;
|
|
341
|
+
}[];
|
|
342
|
+
count: number;
|
|
343
|
+
error?: undefined;
|
|
344
|
+
} | {
|
|
345
|
+
success: boolean;
|
|
346
|
+
error: string;
|
|
347
|
+
directory: string;
|
|
348
|
+
pattern: string;
|
|
349
|
+
matches?: undefined;
|
|
350
|
+
count?: undefined;
|
|
351
|
+
}>;
|
|
352
|
+
};
|
|
353
|
+
};
|
|
354
|
+
protected mcpTools?: Record<string, Tool>;
|
|
355
|
+
protected sessionId?: string;
|
|
356
|
+
protected userId?: string;
|
|
357
|
+
protected sdk?: any;
|
|
358
|
+
constructor(modelName?: string, providerName?: AIProviderName, sdk?: any);
|
|
359
|
+
/**
|
|
360
|
+
* Check if this provider supports tool/function calling
|
|
361
|
+
* Override in subclasses to disable tools for specific providers or models
|
|
362
|
+
* @returns true by default, providers can override to return false
|
|
363
|
+
*/
|
|
364
|
+
supportsTools(): boolean;
|
|
365
|
+
/**
|
|
366
|
+
* Primary streaming method - implements AIProvider interface
|
|
367
|
+
* When tools are involved, falls back to generate() with synthetic streaming
|
|
368
|
+
*/
|
|
369
|
+
stream(optionsOrPrompt: StreamOptions | string, analysisSchema?: ZodType<unknown, ZodTypeDef, unknown> | Schema<unknown>): Promise<StreamResult>;
|
|
370
|
+
/**
|
|
371
|
+
* Text generation method - implements AIProvider interface
|
|
372
|
+
* Tools are always available unless explicitly disabled
|
|
373
|
+
*/
|
|
374
|
+
generate(optionsOrPrompt: TextGenerationOptions | string, analysisSchema?: ZodType<unknown, ZodTypeDef, unknown> | Schema<unknown>): Promise<EnhancedGenerateResult | null>;
|
|
375
|
+
/**
|
|
376
|
+
* Alias for generate method - implements AIProvider interface
|
|
377
|
+
*/
|
|
378
|
+
gen(optionsOrPrompt: TextGenerationOptions | string, analysisSchema?: ZodType<unknown, ZodTypeDef, unknown> | Schema<unknown>): Promise<EnhancedGenerateResult | null>;
|
|
379
|
+
/**
|
|
380
|
+
* Provider-specific streaming implementation (only used when tools are disabled)
|
|
381
|
+
*/
|
|
382
|
+
protected abstract executeStream(options: StreamOptions, analysisSchema?: ZodType<unknown, ZodTypeDef, unknown> | Schema<unknown>): Promise<StreamResult>;
|
|
383
|
+
/**
|
|
384
|
+
* Get the provider name
|
|
385
|
+
*/
|
|
386
|
+
protected abstract getProviderName(): AIProviderName;
|
|
387
|
+
/**
|
|
388
|
+
* Get the default model for this provider
|
|
389
|
+
*/
|
|
390
|
+
protected abstract getDefaultModel(): string;
|
|
391
|
+
/**
|
|
392
|
+
* REQUIRED: Every provider MUST implement this method
|
|
393
|
+
* Returns the Vercel AI SDK model instance for this provider
|
|
394
|
+
*/
|
|
395
|
+
protected abstract getAISDKModel(): any | Promise<any>;
|
|
396
|
+
/**
|
|
397
|
+
* Get all available tools - direct tools are ALWAYS available
|
|
398
|
+
* MCP tools are added when available (without blocking)
|
|
399
|
+
*/
|
|
400
|
+
protected getAllTools(): Promise<Record<string, Tool>>;
|
|
401
|
+
/**
|
|
402
|
+
* Set session context for MCP tools
|
|
403
|
+
*/
|
|
404
|
+
setSessionContext(sessionId?: string, userId?: string): void;
|
|
405
|
+
/**
|
|
406
|
+
* Provider-specific error handling
|
|
407
|
+
*/
|
|
408
|
+
protected abstract handleProviderError(error: any): Error;
|
|
409
|
+
protected normalizeTextOptions(optionsOrPrompt: TextGenerationOptions | string): TextGenerationOptions;
|
|
410
|
+
protected normalizeStreamOptions(optionsOrPrompt: StreamOptions | string): StreamOptions;
|
|
411
|
+
protected enhanceResult(result: EnhancedGenerateResult, options: TextGenerationOptions, startTime: number): Promise<EnhancedGenerateResult>;
|
|
412
|
+
protected createAnalytics(result: EnhancedGenerateResult, responseTime: number, options: TextGenerationOptions): Promise<AnalyticsData>;
|
|
413
|
+
protected createEvaluation(result: EnhancedGenerateResult, options: TextGenerationOptions): Promise<any>;
|
|
414
|
+
protected validateOptions(options: TextGenerationOptions): void;
|
|
415
|
+
protected getProviderInfo(): {
|
|
416
|
+
provider: string;
|
|
417
|
+
model: string;
|
|
418
|
+
};
|
|
419
|
+
/**
|
|
420
|
+
* Get timeout value in milliseconds
|
|
421
|
+
*/
|
|
422
|
+
getTimeout(options: TextGenerationOptions | StreamOptions): number;
|
|
423
|
+
}
|