@juspay/neurolink 7.43.0 → 7.45.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 -10
- package/dist/cli/loop/optionsSchema.d.ts +1 -1
- package/dist/core/factory.d.ts +3 -1
- package/dist/core/factory.js +5 -3
- package/dist/factories/providerFactory.d.ts +3 -3
- package/dist/factories/providerFactory.js +3 -3
- package/dist/factories/providerRegistry.js +6 -6
- package/dist/lib/core/factory.d.ts +3 -1
- package/dist/lib/core/factory.js +5 -3
- package/dist/lib/factories/providerFactory.d.ts +3 -3
- package/dist/lib/factories/providerFactory.js +3 -3
- package/dist/lib/factories/providerRegistry.js +6 -6
- package/dist/lib/memory/mem0Initializer.d.ts +44 -0
- package/dist/lib/memory/mem0Initializer.js +42 -0
- package/dist/lib/neurolink.d.ts +12 -0
- package/dist/lib/neurolink.js +161 -3
- package/dist/lib/providers/amazonBedrock.d.ts +2 -1
- package/dist/lib/providers/amazonBedrock.js +6 -4
- package/dist/lib/providers/amazonSagemaker.d.ts +1 -1
- package/dist/lib/providers/amazonSagemaker.js +2 -2
- package/dist/lib/providers/googleVertex.d.ts +1 -1
- package/dist/lib/providers/googleVertex.js +9 -10
- package/dist/lib/providers/sagemaker/config.d.ts +7 -5
- package/dist/lib/providers/sagemaker/config.js +11 -6
- package/dist/lib/types/conversation.d.ts +8 -0
- package/dist/lib/types/generateTypes.d.ts +2 -0
- package/dist/lib/types/streamTypes.d.ts +1 -0
- package/dist/memory/mem0Initializer.d.ts +44 -0
- package/dist/memory/mem0Initializer.js +42 -0
- package/dist/neurolink.d.ts +12 -0
- package/dist/neurolink.js +161 -3
- package/dist/providers/amazonBedrock.d.ts +2 -1
- package/dist/providers/amazonBedrock.js +6 -4
- package/dist/providers/amazonSagemaker.d.ts +1 -1
- package/dist/providers/amazonSagemaker.js +2 -2
- package/dist/providers/googleVertex.d.ts +1 -1
- package/dist/providers/googleVertex.js +9 -10
- package/dist/providers/sagemaker/config.d.ts +7 -5
- package/dist/providers/sagemaker/config.js +11 -6
- package/dist/types/conversation.d.ts +8 -0
- package/dist/types/generateTypes.d.ts +2 -0
- package/dist/types/streamTypes.d.ts +1 -0
- package/package.json +48 -45
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [7.45.0](https://github.com/juspay/neurolink/compare/v7.44.0...v7.45.0) (2025-09-24)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
- **(provider):** Add support to provide region while streaming or generating for few providers ([a0a5bed](https://github.com/juspay/neurolink/commit/a0a5bed2bba4118dde149713708e36d4d29e1aae))
|
|
6
|
+
|
|
7
|
+
## [7.44.0](https://github.com/juspay/neurolink/compare/v7.43.0...v7.44.0) (2025-09-24)
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
- **(sdk):** Integrate mem0 for better context ([78edf08](https://github.com/juspay/neurolink/commit/78edf08467432988c968eb06f510f0198b253665))
|
|
12
|
+
|
|
1
13
|
## [7.43.0](https://github.com/juspay/neurolink/compare/v7.42.0...v7.43.0) (2025-09-23)
|
|
2
14
|
|
|
3
15
|
### Features
|
|
@@ -851,21 +863,18 @@ Co-authored-by: sachin.sharma <sachin.sharma@juspay.in>
|
|
|
851
863
|
### 🎯 Major Feature: Dynamic Model Configuration System
|
|
852
864
|
|
|
853
865
|
- **⚡ Revolutionary Model Management**: Introduced dynamic model configuration system replacing static enums
|
|
854
|
-
|
|
855
866
|
- **Self-Updating Models**: New models automatically available without code updates
|
|
856
867
|
- **Cost Optimization**: Automatic selection of cheapest models for tasks
|
|
857
868
|
- **Smart Resolution**: Fuzzy matching, aliases, and capability-based search
|
|
858
869
|
- **Multi-Source Loading**: Configuration from API → GitHub → local with fallback
|
|
859
870
|
|
|
860
871
|
- **💰 Cost Intelligence**: Built-in cost optimization and model selection algorithms
|
|
861
|
-
|
|
862
872
|
- **Current Leader**: Gemini 2.0 Flash at $0.000075/1K input tokens
|
|
863
873
|
- **Capability Mapping**: Find models by features (functionCalling, vision, code-execution)
|
|
864
874
|
- **Real-Time Pricing**: Always current model costs and performance data
|
|
865
875
|
- **Budget Controls**: Maximum price filtering and cost-aware selection
|
|
866
876
|
|
|
867
877
|
- **🔧 Production-Ready Infrastructure**: Complete system with validation and monitoring
|
|
868
|
-
|
|
869
878
|
- **Model Configuration Server**: REST API with search capabilities (`scripts/model-server.js`)
|
|
870
879
|
- **Zod Schema Validation**: Type-safe runtime configuration validation
|
|
871
880
|
- **Comprehensive Testing**: Full test suite for all dynamic model functionality
|
|
@@ -917,19 +926,16 @@ Co-authored-by: sachin.sharma <sachin.sharma@juspay.in>
|
|
|
917
926
|
### Bug Fixes - MCP System Restoration
|
|
918
927
|
|
|
919
928
|
- **🔧 Fixed Built-in Tool Loading**: Resolved critical circular dependency issues preventing default tools from loading
|
|
920
|
-
|
|
921
929
|
- **Root Cause**: Circular dependency between `config.ts` and `unified-registry.ts` preventing proper initialization
|
|
922
930
|
- **Solution**: Implemented dynamic imports and restructured initialization chain
|
|
923
931
|
- **Result**: Built-in tools restored from 0 → 3 tools (100% recovery rate)
|
|
924
932
|
|
|
925
933
|
- **⏰ Fixed Time Tool Functionality**: Time tool now properly available and returns accurate real-time data
|
|
926
|
-
|
|
927
934
|
- Fixed tool registration and execution pathway
|
|
928
935
|
- Proper timezone handling and formatting
|
|
929
936
|
- Verified accuracy against system time
|
|
930
937
|
|
|
931
938
|
- **🔍 Enhanced External Tool Discovery**: 58+ external MCP tools now discoverable via comprehensive auto-discovery
|
|
932
|
-
|
|
933
939
|
- Auto-discovery across VS Code, Claude Desktop, Cursor, Windsurf
|
|
934
940
|
- Proper placeholder system for lazy activation
|
|
935
941
|
- Unified registry integration
|
|
@@ -984,7 +990,6 @@ Co-authored-by: sachin.sharma <sachin.sharma@juspay.in>
|
|
|
984
990
|
### Features
|
|
985
991
|
|
|
986
992
|
- **🛠️ Enhanced CLI with Ollama Commands**: New Ollama-specific management commands
|
|
987
|
-
|
|
988
993
|
- `neurolink ollama list-models` - List installed local models
|
|
989
994
|
- `neurolink ollama pull <model>` - Download models locally
|
|
990
995
|
- `neurolink ollama remove <model>` - Remove installed models
|
|
@@ -1065,14 +1070,12 @@ neurolink generate-text "test" --debug
|
|
|
1065
1070
|
### Patch Changes
|
|
1066
1071
|
|
|
1067
1072
|
- **🔧 Production-Ready CLI Logging System**: Fixed critical logging system for clean production output
|
|
1068
|
-
|
|
1069
1073
|
- **Issue**: CLI showed excessive debug output during normal operation, breaking demo presentations
|
|
1070
1074
|
- **Root Cause**: Mixed console.log statements bypassed conditional logger system
|
|
1071
1075
|
- **Solution**: Systematic replacement of all console.log with logger.debug across codebase
|
|
1072
1076
|
- **Impact**: **Clean CLI output by default** with conditional debug available via `NEUROLINK_DEBUG=true`
|
|
1073
1077
|
|
|
1074
1078
|
- **🔄 Enhanced Provider Fallback Logic**: Fixed incomplete provider fallback coverage
|
|
1075
|
-
|
|
1076
1079
|
- **Issue**: Provider fallback only attempted 4 of 6 providers (missing Anthropic & Azure)
|
|
1077
1080
|
- **Root Cause**: Incomplete provider array in NeuroLink class fallback logic
|
|
1078
1081
|
- **Solution**: Updated to include all 6 providers: `['openai', 'vertex', 'bedrock', 'anthropic', 'azure', 'google-ai']`
|
|
@@ -1116,7 +1119,6 @@ NEUROLINK_DEBUG=true node dist/cli/cli/index.js generate-text "test" --max-token
|
|
|
1116
1119
|
### Patch Changes
|
|
1117
1120
|
|
|
1118
1121
|
- **🔧 Critical CLI Dependency Fix**: Removed peer dependencies to ensure zero-friction CLI usage
|
|
1119
|
-
|
|
1120
1122
|
- **Issue**: CLI commands failed when provider-specific SDK packages were peer dependencies
|
|
1121
1123
|
- **Root Cause**: `npx` doesn't install peer dependencies, causing missing module errors
|
|
1122
1124
|
- **Solution**: Moved ALL AI provider SDKs to regular dependencies
|
|
@@ -12,4 +12,4 @@ export interface OptionSchema {
|
|
|
12
12
|
* This object provides metadata for validation and help text in the CLI loop.
|
|
13
13
|
* It is derived from the main TextGenerationOptions interface to ensure consistency.
|
|
14
14
|
*/
|
|
15
|
-
export declare const textGenerationOptionsSchema: Record<keyof Omit<TextGenerationOptions, "prompt" | "input" | "schema" | "tools" | "context" | "conversationHistory" | "conversationMessages" | "conversationMemoryConfig" | "originalPrompt" | "middleware" | "expectedOutcome" | "evaluationCriteria">, OptionSchema>;
|
|
15
|
+
export declare const textGenerationOptionsSchema: Record<keyof Omit<TextGenerationOptions, "prompt" | "input" | "schema" | "tools" | "context" | "conversationHistory" | "conversationMessages" | "conversationMemoryConfig" | "originalPrompt" | "middleware" | "expectedOutcome" | "evaluationCriteria" | "region">, OptionSchema>;
|
package/dist/core/factory.d.ts
CHANGED
|
@@ -19,9 +19,11 @@ export declare class AIProviderFactory {
|
|
|
19
19
|
* @param providerName - Name of the provider ('vertex', 'bedrock', 'openai')
|
|
20
20
|
* @param modelName - Optional model name override
|
|
21
21
|
* @param enableMCP - Optional flag to enable MCP integration (default: true)
|
|
22
|
+
* @param sdk - SDK instance
|
|
23
|
+
* @param region - Optional region override for cloud providers
|
|
22
24
|
* @returns AIProvider instance
|
|
23
25
|
*/
|
|
24
|
-
static createProvider(providerName: string, modelName?: string | null, enableMCP?: boolean, sdk?: UnknownRecord): Promise<AIProvider>;
|
|
26
|
+
static createProvider(providerName: string, modelName?: string | null, enableMCP?: boolean, sdk?: UnknownRecord, region?: string): Promise<AIProvider>;
|
|
25
27
|
/**
|
|
26
28
|
* Create a provider instance with specific provider enum and model
|
|
27
29
|
* @param provider - Provider enum value
|
package/dist/core/factory.js
CHANGED
|
@@ -52,9 +52,11 @@ export class AIProviderFactory {
|
|
|
52
52
|
* @param providerName - Name of the provider ('vertex', 'bedrock', 'openai')
|
|
53
53
|
* @param modelName - Optional model name override
|
|
54
54
|
* @param enableMCP - Optional flag to enable MCP integration (default: true)
|
|
55
|
+
* @param sdk - SDK instance
|
|
56
|
+
* @param region - Optional region override for cloud providers
|
|
55
57
|
* @returns AIProvider instance
|
|
56
58
|
*/
|
|
57
|
-
static async createProvider(providerName, modelName, enableMCP = true, sdk) {
|
|
59
|
+
static async createProvider(providerName, modelName, enableMCP = true, sdk, region) {
|
|
58
60
|
const functionTag = "AIProviderFactory.createProvider";
|
|
59
61
|
// Providers are registered via ProviderFactory.initialize() on first use
|
|
60
62
|
logger.debug(`[${functionTag}] Provider creation started`, {
|
|
@@ -198,8 +200,8 @@ export class AIProviderFactory {
|
|
|
198
200
|
resolvedModelName: resolvedModelName || "not resolved",
|
|
199
201
|
finalModelName: finalModelName || "using provider default",
|
|
200
202
|
});
|
|
201
|
-
// Create provider with enhanced SDK
|
|
202
|
-
const provider = await ProviderFactory.createProvider(normalizedName, finalModelName, sdk);
|
|
203
|
+
// Create provider with enhanced SDK and region support
|
|
204
|
+
const provider = await ProviderFactory.createProvider(normalizedName, finalModelName, sdk, region);
|
|
203
205
|
// Summary logging in format expected by debugging tools
|
|
204
206
|
logger.debug(`[AIProviderFactory] Provider creation completed { providerName: '${normalizedName}', modelName: '${finalModelName}' }`);
|
|
205
207
|
logger.debug(`[AIProviderFactory] Resolved model: ${finalModelName}`);
|
|
@@ -4,8 +4,8 @@ import type { UnknownRecord } from "../types/common.js";
|
|
|
4
4
|
* Provider constructor interface - supports both sync constructors and async factory functions
|
|
5
5
|
*/
|
|
6
6
|
type ProviderConstructor = {
|
|
7
|
-
new (modelName?: string, providerName?: string, sdk?: UnknownRecord): AIProvider;
|
|
8
|
-
} | ((modelName?: string, providerName?: string, sdk?: UnknownRecord) => Promise<AIProvider>);
|
|
7
|
+
new (modelName?: string, providerName?: string, sdk?: UnknownRecord, region?: string): AIProvider;
|
|
8
|
+
} | ((modelName?: string, providerName?: string, sdk?: UnknownRecord, region?: string) => Promise<AIProvider>);
|
|
9
9
|
/**
|
|
10
10
|
* Provider registration entry
|
|
11
11
|
*/
|
|
@@ -30,7 +30,7 @@ export declare class ProviderFactory {
|
|
|
30
30
|
/**
|
|
31
31
|
* Create a provider instance
|
|
32
32
|
*/
|
|
33
|
-
static createProvider(providerName: AIProviderName | string, modelName?: string, sdk?: UnknownRecord): Promise<AIProvider>;
|
|
33
|
+
static createProvider(providerName: AIProviderName | string, modelName?: string, sdk?: UnknownRecord, region?: string): Promise<AIProvider>;
|
|
34
34
|
/**
|
|
35
35
|
* Check if a provider is registered
|
|
36
36
|
*/
|
|
@@ -28,7 +28,7 @@ export class ProviderFactory {
|
|
|
28
28
|
/**
|
|
29
29
|
* Create a provider instance
|
|
30
30
|
*/
|
|
31
|
-
static async createProvider(providerName, modelName, sdk) {
|
|
31
|
+
static async createProvider(providerName, modelName, sdk, region) {
|
|
32
32
|
// Note: Providers are registered explicitly by ProviderRegistry to avoid circular dependencies
|
|
33
33
|
const normalizedName = providerName.toLowerCase();
|
|
34
34
|
const registration = this.providers.get(normalizedName);
|
|
@@ -54,7 +54,7 @@ export class ProviderFactory {
|
|
|
54
54
|
}
|
|
55
55
|
let result;
|
|
56
56
|
try {
|
|
57
|
-
const factoryResult = registration.constructor(model, providerName, sdk);
|
|
57
|
+
const factoryResult = registration.constructor(model, providerName, sdk, region);
|
|
58
58
|
// Handle both sync and async results
|
|
59
59
|
result =
|
|
60
60
|
factoryResult instanceof Promise
|
|
@@ -66,7 +66,7 @@ export class ProviderFactory {
|
|
|
66
66
|
registration.constructor.prototype.constructor ===
|
|
67
67
|
registration.constructor) {
|
|
68
68
|
try {
|
|
69
|
-
result = new registration.constructor(model, providerName, sdk);
|
|
69
|
+
result = new registration.constructor(model, providerName, sdk, region);
|
|
70
70
|
}
|
|
71
71
|
catch (constructorError) {
|
|
72
72
|
throw new Error(`Both factory function and constructor failed. Factory error: ${factoryError}. Constructor error: ${constructorError}`);
|
|
@@ -39,9 +39,9 @@ export class ProviderRegistry {
|
|
|
39
39
|
return new AnthropicProvider(modelName, sdk);
|
|
40
40
|
}, "claude-3-5-sonnet-20241022", ["claude", "anthropic"]);
|
|
41
41
|
// Register Amazon Bedrock provider
|
|
42
|
-
ProviderFactory.registerProvider(AIProviderName.BEDROCK, async (modelName, _providerName, sdk) => {
|
|
42
|
+
ProviderFactory.registerProvider(AIProviderName.BEDROCK, async (modelName, _providerName, sdk, region) => {
|
|
43
43
|
const { AmazonBedrockProvider } = await import("../providers/amazonBedrock.js");
|
|
44
|
-
return new AmazonBedrockProvider(modelName, sdk);
|
|
44
|
+
return new AmazonBedrockProvider(modelName, sdk, region);
|
|
45
45
|
}, undefined, // Let provider read BEDROCK_MODEL from .env
|
|
46
46
|
["bedrock", "aws"]);
|
|
47
47
|
// Register Azure OpenAI provider
|
|
@@ -54,9 +54,9 @@ export class ProviderRegistry {
|
|
|
54
54
|
process.env.AZURE_OPENAI_DEPLOYMENT_ID ||
|
|
55
55
|
"gpt-4o-mini", ["azure", "azureOpenai"]);
|
|
56
56
|
// Register Google Vertex AI provider
|
|
57
|
-
ProviderFactory.registerProvider(AIProviderName.VERTEX, async (modelName, providerName, sdk) => {
|
|
57
|
+
ProviderFactory.registerProvider(AIProviderName.VERTEX, async (modelName, providerName, sdk, region) => {
|
|
58
58
|
const { GoogleVertexProvider } = await import("../providers/googleVertex.js");
|
|
59
|
-
return new GoogleVertexProvider(modelName, providerName, sdk);
|
|
59
|
+
return new GoogleVertexProvider(modelName, providerName, sdk, region);
|
|
60
60
|
}, "claude-sonnet-4@20250514", ["vertex", "googleVertex"]);
|
|
61
61
|
// Register Hugging Face provider (Unified Router implementation)
|
|
62
62
|
ProviderFactory.registerProvider(AIProviderName.HUGGINGFACE, async (modelName) => {
|
|
@@ -85,9 +85,9 @@ export class ProviderRegistry {
|
|
|
85
85
|
}, process.env.OPENAI_COMPATIBLE_MODEL || undefined, // Enable auto-discovery when no model specified
|
|
86
86
|
["openai-compatible", "openrouter", "vllm", "compatible"]);
|
|
87
87
|
// Register Amazon SageMaker provider
|
|
88
|
-
ProviderFactory.registerProvider(AIProviderName.SAGEMAKER, async (modelName, _providerName, _sdk) => {
|
|
88
|
+
ProviderFactory.registerProvider(AIProviderName.SAGEMAKER, async (modelName, _providerName, _sdk, region) => {
|
|
89
89
|
const { AmazonSageMakerProvider } = await import("../providers/amazonSagemaker.js");
|
|
90
|
-
return new AmazonSageMakerProvider(modelName);
|
|
90
|
+
return new AmazonSageMakerProvider(modelName, region);
|
|
91
91
|
}, process.env.SAGEMAKER_MODEL || "sagemaker-model", ["sagemaker", "aws-sagemaker"]);
|
|
92
92
|
logger.debug("All providers registered successfully");
|
|
93
93
|
this.registered = true;
|
|
@@ -19,9 +19,11 @@ export declare class AIProviderFactory {
|
|
|
19
19
|
* @param providerName - Name of the provider ('vertex', 'bedrock', 'openai')
|
|
20
20
|
* @param modelName - Optional model name override
|
|
21
21
|
* @param enableMCP - Optional flag to enable MCP integration (default: true)
|
|
22
|
+
* @param sdk - SDK instance
|
|
23
|
+
* @param region - Optional region override for cloud providers
|
|
22
24
|
* @returns AIProvider instance
|
|
23
25
|
*/
|
|
24
|
-
static createProvider(providerName: string, modelName?: string | null, enableMCP?: boolean, sdk?: UnknownRecord): Promise<AIProvider>;
|
|
26
|
+
static createProvider(providerName: string, modelName?: string | null, enableMCP?: boolean, sdk?: UnknownRecord, region?: string): Promise<AIProvider>;
|
|
25
27
|
/**
|
|
26
28
|
* Create a provider instance with specific provider enum and model
|
|
27
29
|
* @param provider - Provider enum value
|
package/dist/lib/core/factory.js
CHANGED
|
@@ -52,9 +52,11 @@ export class AIProviderFactory {
|
|
|
52
52
|
* @param providerName - Name of the provider ('vertex', 'bedrock', 'openai')
|
|
53
53
|
* @param modelName - Optional model name override
|
|
54
54
|
* @param enableMCP - Optional flag to enable MCP integration (default: true)
|
|
55
|
+
* @param sdk - SDK instance
|
|
56
|
+
* @param region - Optional region override for cloud providers
|
|
55
57
|
* @returns AIProvider instance
|
|
56
58
|
*/
|
|
57
|
-
static async createProvider(providerName, modelName, enableMCP = true, sdk) {
|
|
59
|
+
static async createProvider(providerName, modelName, enableMCP = true, sdk, region) {
|
|
58
60
|
const functionTag = "AIProviderFactory.createProvider";
|
|
59
61
|
// Providers are registered via ProviderFactory.initialize() on first use
|
|
60
62
|
logger.debug(`[${functionTag}] Provider creation started`, {
|
|
@@ -198,8 +200,8 @@ export class AIProviderFactory {
|
|
|
198
200
|
resolvedModelName: resolvedModelName || "not resolved",
|
|
199
201
|
finalModelName: finalModelName || "using provider default",
|
|
200
202
|
});
|
|
201
|
-
// Create provider with enhanced SDK
|
|
202
|
-
const provider = await ProviderFactory.createProvider(normalizedName, finalModelName, sdk);
|
|
203
|
+
// Create provider with enhanced SDK and region support
|
|
204
|
+
const provider = await ProviderFactory.createProvider(normalizedName, finalModelName, sdk, region);
|
|
203
205
|
// Summary logging in format expected by debugging tools
|
|
204
206
|
logger.debug(`[AIProviderFactory] Provider creation completed { providerName: '${normalizedName}', modelName: '${finalModelName}' }`);
|
|
205
207
|
logger.debug(`[AIProviderFactory] Resolved model: ${finalModelName}`);
|
|
@@ -4,8 +4,8 @@ import type { UnknownRecord } from "../types/common.js";
|
|
|
4
4
|
* Provider constructor interface - supports both sync constructors and async factory functions
|
|
5
5
|
*/
|
|
6
6
|
type ProviderConstructor = {
|
|
7
|
-
new (modelName?: string, providerName?: string, sdk?: UnknownRecord): AIProvider;
|
|
8
|
-
} | ((modelName?: string, providerName?: string, sdk?: UnknownRecord) => Promise<AIProvider>);
|
|
7
|
+
new (modelName?: string, providerName?: string, sdk?: UnknownRecord, region?: string): AIProvider;
|
|
8
|
+
} | ((modelName?: string, providerName?: string, sdk?: UnknownRecord, region?: string) => Promise<AIProvider>);
|
|
9
9
|
/**
|
|
10
10
|
* Provider registration entry
|
|
11
11
|
*/
|
|
@@ -30,7 +30,7 @@ export declare class ProviderFactory {
|
|
|
30
30
|
/**
|
|
31
31
|
* Create a provider instance
|
|
32
32
|
*/
|
|
33
|
-
static createProvider(providerName: AIProviderName | string, modelName?: string, sdk?: UnknownRecord): Promise<AIProvider>;
|
|
33
|
+
static createProvider(providerName: AIProviderName | string, modelName?: string, sdk?: UnknownRecord, region?: string): Promise<AIProvider>;
|
|
34
34
|
/**
|
|
35
35
|
* Check if a provider is registered
|
|
36
36
|
*/
|
|
@@ -28,7 +28,7 @@ export class ProviderFactory {
|
|
|
28
28
|
/**
|
|
29
29
|
* Create a provider instance
|
|
30
30
|
*/
|
|
31
|
-
static async createProvider(providerName, modelName, sdk) {
|
|
31
|
+
static async createProvider(providerName, modelName, sdk, region) {
|
|
32
32
|
// Note: Providers are registered explicitly by ProviderRegistry to avoid circular dependencies
|
|
33
33
|
const normalizedName = providerName.toLowerCase();
|
|
34
34
|
const registration = this.providers.get(normalizedName);
|
|
@@ -54,7 +54,7 @@ export class ProviderFactory {
|
|
|
54
54
|
}
|
|
55
55
|
let result;
|
|
56
56
|
try {
|
|
57
|
-
const factoryResult = registration.constructor(model, providerName, sdk);
|
|
57
|
+
const factoryResult = registration.constructor(model, providerName, sdk, region);
|
|
58
58
|
// Handle both sync and async results
|
|
59
59
|
result =
|
|
60
60
|
factoryResult instanceof Promise
|
|
@@ -66,7 +66,7 @@ export class ProviderFactory {
|
|
|
66
66
|
registration.constructor.prototype.constructor ===
|
|
67
67
|
registration.constructor) {
|
|
68
68
|
try {
|
|
69
|
-
result = new registration.constructor(model, providerName, sdk);
|
|
69
|
+
result = new registration.constructor(model, providerName, sdk, region);
|
|
70
70
|
}
|
|
71
71
|
catch (constructorError) {
|
|
72
72
|
throw new Error(`Both factory function and constructor failed. Factory error: ${factoryError}. Constructor error: ${constructorError}`);
|
|
@@ -39,9 +39,9 @@ export class ProviderRegistry {
|
|
|
39
39
|
return new AnthropicProvider(modelName, sdk);
|
|
40
40
|
}, "claude-3-5-sonnet-20241022", ["claude", "anthropic"]);
|
|
41
41
|
// Register Amazon Bedrock provider
|
|
42
|
-
ProviderFactory.registerProvider(AIProviderName.BEDROCK, async (modelName, _providerName, sdk) => {
|
|
42
|
+
ProviderFactory.registerProvider(AIProviderName.BEDROCK, async (modelName, _providerName, sdk, region) => {
|
|
43
43
|
const { AmazonBedrockProvider } = await import("../providers/amazonBedrock.js");
|
|
44
|
-
return new AmazonBedrockProvider(modelName, sdk);
|
|
44
|
+
return new AmazonBedrockProvider(modelName, sdk, region);
|
|
45
45
|
}, undefined, // Let provider read BEDROCK_MODEL from .env
|
|
46
46
|
["bedrock", "aws"]);
|
|
47
47
|
// Register Azure OpenAI provider
|
|
@@ -54,9 +54,9 @@ export class ProviderRegistry {
|
|
|
54
54
|
process.env.AZURE_OPENAI_DEPLOYMENT_ID ||
|
|
55
55
|
"gpt-4o-mini", ["azure", "azureOpenai"]);
|
|
56
56
|
// Register Google Vertex AI provider
|
|
57
|
-
ProviderFactory.registerProvider(AIProviderName.VERTEX, async (modelName, providerName, sdk) => {
|
|
57
|
+
ProviderFactory.registerProvider(AIProviderName.VERTEX, async (modelName, providerName, sdk, region) => {
|
|
58
58
|
const { GoogleVertexProvider } = await import("../providers/googleVertex.js");
|
|
59
|
-
return new GoogleVertexProvider(modelName, providerName, sdk);
|
|
59
|
+
return new GoogleVertexProvider(modelName, providerName, sdk, region);
|
|
60
60
|
}, "claude-sonnet-4@20250514", ["vertex", "googleVertex"]);
|
|
61
61
|
// Register Hugging Face provider (Unified Router implementation)
|
|
62
62
|
ProviderFactory.registerProvider(AIProviderName.HUGGINGFACE, async (modelName) => {
|
|
@@ -85,9 +85,9 @@ export class ProviderRegistry {
|
|
|
85
85
|
}, process.env.OPENAI_COMPATIBLE_MODEL || undefined, // Enable auto-discovery when no model specified
|
|
86
86
|
["openai-compatible", "openrouter", "vllm", "compatible"]);
|
|
87
87
|
// Register Amazon SageMaker provider
|
|
88
|
-
ProviderFactory.registerProvider(AIProviderName.SAGEMAKER, async (modelName, _providerName, _sdk) => {
|
|
88
|
+
ProviderFactory.registerProvider(AIProviderName.SAGEMAKER, async (modelName, _providerName, _sdk, region) => {
|
|
89
89
|
const { AmazonSageMakerProvider } = await import("../providers/amazonSagemaker.js");
|
|
90
|
-
return new AmazonSageMakerProvider(modelName);
|
|
90
|
+
return new AmazonSageMakerProvider(modelName, region);
|
|
91
91
|
}, process.env.SAGEMAKER_MODEL || "sagemaker-model", ["sagemaker", "aws-sagemaker"]);
|
|
92
92
|
logger.debug("All providers registered successfully");
|
|
93
93
|
this.registered = true;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mem0 Memory Initializer
|
|
3
|
+
* Simple initialization logic for mem0ai/oss integration
|
|
4
|
+
*/
|
|
5
|
+
import type { MemoryConfig } from "mem0ai/oss";
|
|
6
|
+
/**
|
|
7
|
+
* Interface for mem0 Memory instance methods based on actual mem0ai/oss API
|
|
8
|
+
*/
|
|
9
|
+
export interface Mem0Memory {
|
|
10
|
+
search(query: string, config: {
|
|
11
|
+
userId?: string;
|
|
12
|
+
limit?: number;
|
|
13
|
+
}): Promise<{
|
|
14
|
+
results: Array<{
|
|
15
|
+
memory: string;
|
|
16
|
+
id: string;
|
|
17
|
+
}>;
|
|
18
|
+
}>;
|
|
19
|
+
add(messages: string, config: {
|
|
20
|
+
userId?: string;
|
|
21
|
+
metadata?: Record<string, unknown>;
|
|
22
|
+
}): Promise<{
|
|
23
|
+
results: Array<{
|
|
24
|
+
id: string;
|
|
25
|
+
memory: string;
|
|
26
|
+
}>;
|
|
27
|
+
}>;
|
|
28
|
+
get(memoryId: string): Promise<{
|
|
29
|
+
id: string;
|
|
30
|
+
memory: string;
|
|
31
|
+
} | null>;
|
|
32
|
+
update(memoryId: string, data: string): Promise<{
|
|
33
|
+
message: string;
|
|
34
|
+
}>;
|
|
35
|
+
delete(memoryId: string): Promise<{
|
|
36
|
+
message: string;
|
|
37
|
+
}>;
|
|
38
|
+
history(memoryId: string): Promise<unknown[]>;
|
|
39
|
+
reset(): Promise<void>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Initialize mem0 memory instance with configuration
|
|
43
|
+
*/
|
|
44
|
+
export declare function initializeMem0(mem0Config: MemoryConfig): Promise<Mem0Memory | null>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mem0 Memory Initializer
|
|
3
|
+
* Simple initialization logic for mem0ai/oss integration
|
|
4
|
+
*/
|
|
5
|
+
import { Memory } from "mem0ai/oss";
|
|
6
|
+
import { logger } from "../utils/logger.js";
|
|
7
|
+
/**
|
|
8
|
+
* Initialize mem0 memory instance with configuration
|
|
9
|
+
*/
|
|
10
|
+
export async function initializeMem0(mem0Config) {
|
|
11
|
+
logger.debug("[mem0Initializer] Starting mem0 initialization");
|
|
12
|
+
try {
|
|
13
|
+
// Create Memory instance
|
|
14
|
+
const memory = new Memory(mem0Config);
|
|
15
|
+
logger.info("[mem0Initializer] Mem0 initialized successfully");
|
|
16
|
+
return memory;
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
logger.warn("[mem0Initializer] Failed to initialize mem0, using fallback", {
|
|
20
|
+
error: error instanceof Error ? error.message : String(error),
|
|
21
|
+
});
|
|
22
|
+
return createFallbackMemory();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create fallback memory implementation
|
|
27
|
+
*/
|
|
28
|
+
function createFallbackMemory() {
|
|
29
|
+
return {
|
|
30
|
+
search: async () => ({ results: [] }),
|
|
31
|
+
add: async () => ({ results: [] }),
|
|
32
|
+
get: async () => null,
|
|
33
|
+
update: async () => ({
|
|
34
|
+
message: "Fallback memory does not support updates",
|
|
35
|
+
}),
|
|
36
|
+
delete: async () => ({
|
|
37
|
+
message: "Fallback memory does not support deletion",
|
|
38
|
+
}),
|
|
39
|
+
history: async () => [],
|
|
40
|
+
reset: async () => { },
|
|
41
|
+
};
|
|
42
|
+
}
|
package/dist/lib/neurolink.d.ts
CHANGED
|
@@ -70,6 +70,16 @@ export declare class NeuroLink {
|
|
|
70
70
|
private conversationMemoryConfig?;
|
|
71
71
|
private enableOrchestration;
|
|
72
72
|
private hitlManager?;
|
|
73
|
+
private mem0Instance?;
|
|
74
|
+
private mem0Config?;
|
|
75
|
+
/**
|
|
76
|
+
* Simple sync config setup for mem0
|
|
77
|
+
*/
|
|
78
|
+
private initializeMem0Config;
|
|
79
|
+
/**
|
|
80
|
+
* Async initialization called during generate/stream
|
|
81
|
+
*/
|
|
82
|
+
private ensureMem0Ready;
|
|
73
83
|
/**
|
|
74
84
|
* Context storage for tool execution
|
|
75
85
|
* This context will be merged with any runtime context passed by the AI model
|
|
@@ -142,6 +152,8 @@ export declare class NeuroLink {
|
|
|
142
152
|
* Initialize HITL (Human-in-the-Loop) if enabled
|
|
143
153
|
*/
|
|
144
154
|
private initializeHITL;
|
|
155
|
+
/** Format memory context for prompt inclusion */
|
|
156
|
+
private formatMemoryContext;
|
|
145
157
|
/**
|
|
146
158
|
* Set up HITL event forwarding to main emitter
|
|
147
159
|
*/
|