@juspay/neurolink 7.7.0 → 7.8.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 +20 -2
- package/README.md +33 -2
- package/dist/cli/commands/config.d.ts +3 -3
- package/dist/cli/commands/sagemaker.d.ts +11 -0
- package/dist/cli/commands/sagemaker.js +778 -0
- package/dist/cli/factories/commandFactory.js +1 -0
- package/dist/cli/index.js +3 -0
- package/dist/cli/utils/interactiveSetup.js +28 -0
- package/dist/core/baseProvider.d.ts +2 -2
- package/dist/core/types.d.ts +1 -0
- package/dist/core/types.js +1 -0
- package/dist/factories/providerRegistry.js +5 -0
- package/dist/lib/core/baseProvider.d.ts +2 -2
- package/dist/lib/core/types.d.ts +1 -0
- package/dist/lib/core/types.js +1 -0
- package/dist/lib/factories/providerRegistry.js +5 -0
- package/dist/lib/providers/amazonSagemaker.d.ts +67 -0
- package/dist/lib/providers/amazonSagemaker.js +149 -0
- package/dist/lib/providers/index.d.ts +4 -0
- package/dist/lib/providers/index.js +4 -0
- package/dist/lib/providers/sagemaker/adaptive-semaphore.d.ts +86 -0
- package/dist/lib/providers/sagemaker/adaptive-semaphore.js +212 -0
- package/dist/lib/providers/sagemaker/client.d.ts +156 -0
- package/dist/lib/providers/sagemaker/client.js +462 -0
- package/dist/lib/providers/sagemaker/config.d.ts +73 -0
- package/dist/lib/providers/sagemaker/config.js +308 -0
- package/dist/lib/providers/sagemaker/detection.d.ts +176 -0
- package/dist/lib/providers/sagemaker/detection.js +596 -0
- package/dist/lib/providers/sagemaker/diagnostics.d.ts +37 -0
- package/dist/lib/providers/sagemaker/diagnostics.js +137 -0
- package/dist/lib/providers/sagemaker/error-constants.d.ts +78 -0
- package/dist/lib/providers/sagemaker/error-constants.js +227 -0
- package/dist/lib/providers/sagemaker/errors.d.ts +83 -0
- package/dist/lib/providers/sagemaker/errors.js +216 -0
- package/dist/lib/providers/sagemaker/index.d.ts +35 -0
- package/dist/lib/providers/sagemaker/index.js +67 -0
- package/dist/lib/providers/sagemaker/language-model.d.ts +182 -0
- package/dist/lib/providers/sagemaker/language-model.js +755 -0
- package/dist/lib/providers/sagemaker/parsers.d.ts +136 -0
- package/dist/lib/providers/sagemaker/parsers.js +625 -0
- package/dist/lib/providers/sagemaker/streaming.d.ts +39 -0
- package/dist/lib/providers/sagemaker/streaming.js +320 -0
- package/dist/lib/providers/sagemaker/structured-parser.d.ts +117 -0
- package/dist/lib/providers/sagemaker/structured-parser.js +625 -0
- package/dist/lib/providers/sagemaker/types.d.ts +456 -0
- package/dist/lib/providers/sagemaker/types.js +7 -0
- package/dist/lib/types/cli.d.ts +36 -1
- package/dist/lib/utils/providerConfig.js +6 -2
- package/dist/lib/utils/providerHealth.js +45 -9
- package/dist/providers/amazonSagemaker.d.ts +67 -0
- package/dist/providers/amazonSagemaker.js +149 -0
- package/dist/providers/index.d.ts +4 -0
- package/dist/providers/index.js +4 -0
- package/dist/providers/sagemaker/adaptive-semaphore.d.ts +86 -0
- package/dist/providers/sagemaker/adaptive-semaphore.js +212 -0
- package/dist/providers/sagemaker/client.d.ts +156 -0
- package/dist/providers/sagemaker/client.js +462 -0
- package/dist/providers/sagemaker/config.d.ts +73 -0
- package/dist/providers/sagemaker/config.js +308 -0
- package/dist/providers/sagemaker/detection.d.ts +176 -0
- package/dist/providers/sagemaker/detection.js +596 -0
- package/dist/providers/sagemaker/diagnostics.d.ts +37 -0
- package/dist/providers/sagemaker/diagnostics.js +137 -0
- package/dist/providers/sagemaker/error-constants.d.ts +78 -0
- package/dist/providers/sagemaker/error-constants.js +227 -0
- package/dist/providers/sagemaker/errors.d.ts +83 -0
- package/dist/providers/sagemaker/errors.js +216 -0
- package/dist/providers/sagemaker/index.d.ts +35 -0
- package/dist/providers/sagemaker/index.js +67 -0
- package/dist/providers/sagemaker/language-model.d.ts +182 -0
- package/dist/providers/sagemaker/language-model.js +755 -0
- package/dist/providers/sagemaker/parsers.d.ts +136 -0
- package/dist/providers/sagemaker/parsers.js +625 -0
- package/dist/providers/sagemaker/streaming.d.ts +39 -0
- package/dist/providers/sagemaker/streaming.js +320 -0
- package/dist/providers/sagemaker/structured-parser.d.ts +117 -0
- package/dist/providers/sagemaker/structured-parser.js +625 -0
- package/dist/providers/sagemaker/types.d.ts +456 -0
- package/dist/providers/sagemaker/types.js +7 -0
- package/dist/types/cli.d.ts +36 -1
- package/dist/utils/providerConfig.js +6 -2
- package/dist/utils/providerHealth.js +45 -9
- package/package.json +4 -1
package/dist/cli/index.js
CHANGED
|
@@ -9,6 +9,7 @@ import yargs from "yargs";
|
|
|
9
9
|
import { hideBin } from "yargs/helpers";
|
|
10
10
|
import chalk from "chalk";
|
|
11
11
|
import { addOllamaCommands } from "./commands/ollama.js";
|
|
12
|
+
import { addSageMakerCommands } from "./commands/sagemaker.js";
|
|
12
13
|
import { CLICommandFactory } from "./factories/commandFactory.js";
|
|
13
14
|
import { logger } from "../lib/utils/logger.js";
|
|
14
15
|
// Load environment variables from .env file
|
|
@@ -228,6 +229,8 @@ const cli = yargs(args)
|
|
|
228
229
|
.command(CLICommandFactory.createCompletionCommand());
|
|
229
230
|
// Add Ollama Commands
|
|
230
231
|
addOllamaCommands(cli);
|
|
232
|
+
// Add SageMaker Commands
|
|
233
|
+
addSageMakerCommands(cli);
|
|
231
234
|
// Execute CLI
|
|
232
235
|
(async () => {
|
|
233
236
|
try {
|
|
@@ -176,6 +176,34 @@ export const PROVIDER_CONFIGS = [
|
|
|
176
176
|
},
|
|
177
177
|
],
|
|
178
178
|
},
|
|
179
|
+
{
|
|
180
|
+
id: AIProviderName.SAGEMAKER,
|
|
181
|
+
name: "Amazon SageMaker",
|
|
182
|
+
description: "Custom models deployed on Amazon SageMaker endpoints",
|
|
183
|
+
envVars: [
|
|
184
|
+
{
|
|
185
|
+
key: "AWS_ACCESS_KEY_ID",
|
|
186
|
+
prompt: "AWS Access Key ID",
|
|
187
|
+
secure: true,
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
key: "AWS_SECRET_ACCESS_KEY",
|
|
191
|
+
prompt: "AWS Secret Access Key",
|
|
192
|
+
secure: true,
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
key: "AWS_REGION",
|
|
196
|
+
prompt: "AWS Region",
|
|
197
|
+
default: "us-east-1",
|
|
198
|
+
secure: false,
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
key: "SAGEMAKER_DEFAULT_ENDPOINT",
|
|
202
|
+
prompt: "SageMaker Endpoint Name",
|
|
203
|
+
secure: false,
|
|
204
|
+
},
|
|
205
|
+
],
|
|
206
|
+
},
|
|
179
207
|
];
|
|
180
208
|
/**
|
|
181
209
|
* Run the interactive setup wizard
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ZodType, ZodTypeDef } from "zod";
|
|
2
2
|
import type { Schema } from "ai";
|
|
3
|
-
import type { Tool,
|
|
3
|
+
import type { Tool, LanguageModelV1 } from "ai";
|
|
4
4
|
import type { AIProvider, TextGenerationOptions, EnhancedGenerateResult, AnalyticsData, AIProviderName, EvaluationData } from "../core/types.js";
|
|
5
5
|
import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
|
|
6
6
|
import type { JsonValue, UnknownRecord } from "../types/common.js";
|
|
@@ -419,7 +419,7 @@ export declare abstract class BaseProvider implements AIProvider {
|
|
|
419
419
|
* REQUIRED: Every provider MUST implement this method
|
|
420
420
|
* Returns the Vercel AI SDK model instance for this provider
|
|
421
421
|
*/
|
|
422
|
-
protected abstract getAISDKModel():
|
|
422
|
+
protected abstract getAISDKModel(): LanguageModelV1 | Promise<LanguageModelV1>;
|
|
423
423
|
/**
|
|
424
424
|
* Get all available tools - direct tools are ALWAYS available
|
|
425
425
|
* MCP tools are added when available (without blocking)
|
package/dist/core/types.d.ts
CHANGED
package/dist/core/types.js
CHANGED
|
@@ -14,6 +14,7 @@ export var AIProviderName;
|
|
|
14
14
|
AIProviderName["OLLAMA"] = "ollama";
|
|
15
15
|
AIProviderName["MISTRAL"] = "mistral";
|
|
16
16
|
AIProviderName["LITELLM"] = "litellm";
|
|
17
|
+
AIProviderName["SAGEMAKER"] = "sagemaker";
|
|
17
18
|
AIProviderName["AUTO"] = "auto";
|
|
18
19
|
})(AIProviderName || (AIProviderName = {}));
|
|
19
20
|
/**
|
|
@@ -82,6 +82,11 @@ export class ProviderRegistry {
|
|
|
82
82
|
return new OpenAICompatibleProvider(modelName, sdk);
|
|
83
83
|
}, process.env.OPENAI_COMPATIBLE_MODEL || undefined, // Enable auto-discovery when no model specified
|
|
84
84
|
["openai-compatible", "openrouter", "vllm", "compatible"]);
|
|
85
|
+
// Register Amazon SageMaker provider
|
|
86
|
+
ProviderFactory.registerProvider(AIProviderName.SAGEMAKER, async (modelName, providerName, sdk) => {
|
|
87
|
+
const { AmazonSageMakerProvider } = await import("../providers/amazonSagemaker.js");
|
|
88
|
+
return new AmazonSageMakerProvider(modelName);
|
|
89
|
+
}, process.env.SAGEMAKER_MODEL || "sagemaker-model", ["sagemaker", "aws-sagemaker"]);
|
|
85
90
|
logger.debug("All providers registered successfully");
|
|
86
91
|
this.registered = true;
|
|
87
92
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ZodType, ZodTypeDef } from "zod";
|
|
2
2
|
import type { Schema } from "ai";
|
|
3
|
-
import type { Tool,
|
|
3
|
+
import type { Tool, LanguageModelV1 } from "ai";
|
|
4
4
|
import type { AIProvider, TextGenerationOptions, EnhancedGenerateResult, AnalyticsData, AIProviderName, EvaluationData } from "../core/types.js";
|
|
5
5
|
import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
|
|
6
6
|
import type { JsonValue, UnknownRecord } from "../types/common.js";
|
|
@@ -419,7 +419,7 @@ export declare abstract class BaseProvider implements AIProvider {
|
|
|
419
419
|
* REQUIRED: Every provider MUST implement this method
|
|
420
420
|
* Returns the Vercel AI SDK model instance for this provider
|
|
421
421
|
*/
|
|
422
|
-
protected abstract getAISDKModel():
|
|
422
|
+
protected abstract getAISDKModel(): LanguageModelV1 | Promise<LanguageModelV1>;
|
|
423
423
|
/**
|
|
424
424
|
* Get all available tools - direct tools are ALWAYS available
|
|
425
425
|
* MCP tools are added when available (without blocking)
|
package/dist/lib/core/types.d.ts
CHANGED
package/dist/lib/core/types.js
CHANGED
|
@@ -14,6 +14,7 @@ export var AIProviderName;
|
|
|
14
14
|
AIProviderName["OLLAMA"] = "ollama";
|
|
15
15
|
AIProviderName["MISTRAL"] = "mistral";
|
|
16
16
|
AIProviderName["LITELLM"] = "litellm";
|
|
17
|
+
AIProviderName["SAGEMAKER"] = "sagemaker";
|
|
17
18
|
AIProviderName["AUTO"] = "auto";
|
|
18
19
|
})(AIProviderName || (AIProviderName = {}));
|
|
19
20
|
/**
|
|
@@ -82,6 +82,11 @@ export class ProviderRegistry {
|
|
|
82
82
|
return new OpenAICompatibleProvider(modelName, sdk);
|
|
83
83
|
}, process.env.OPENAI_COMPATIBLE_MODEL || undefined, // Enable auto-discovery when no model specified
|
|
84
84
|
["openai-compatible", "openrouter", "vllm", "compatible"]);
|
|
85
|
+
// Register Amazon SageMaker provider
|
|
86
|
+
ProviderFactory.registerProvider(AIProviderName.SAGEMAKER, async (modelName, providerName, sdk) => {
|
|
87
|
+
const { AmazonSageMakerProvider } = await import("../providers/amazonSagemaker.js");
|
|
88
|
+
return new AmazonSageMakerProvider(modelName);
|
|
89
|
+
}, process.env.SAGEMAKER_MODEL || "sagemaker-model", ["sagemaker", "aws-sagemaker"]);
|
|
85
90
|
logger.debug("All providers registered successfully");
|
|
86
91
|
this.registered = true;
|
|
87
92
|
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Amazon SageMaker Provider Implementation (Simplified)
|
|
3
|
+
*
|
|
4
|
+
* This module provides a simplified SageMaker provider that extends BaseProvider
|
|
5
|
+
* and integrates with the NeuroLink ecosystem using existing patterns.
|
|
6
|
+
*/
|
|
7
|
+
import type { ZodType, ZodTypeDef } from "zod";
|
|
8
|
+
import type { Schema, LanguageModelV1 } from "ai";
|
|
9
|
+
import type { AIProviderName } from "../core/types.js";
|
|
10
|
+
import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
|
|
11
|
+
import { BaseProvider } from "../core/baseProvider.js";
|
|
12
|
+
/**
|
|
13
|
+
* Amazon SageMaker Provider extending BaseProvider
|
|
14
|
+
*/
|
|
15
|
+
export declare class AmazonSageMakerProvider extends BaseProvider {
|
|
16
|
+
private sagemakerModel;
|
|
17
|
+
private sagemakerConfig;
|
|
18
|
+
private modelConfig;
|
|
19
|
+
constructor(modelName?: string, endpointName?: string);
|
|
20
|
+
protected getProviderName(): AIProviderName;
|
|
21
|
+
protected getDefaultModel(): string;
|
|
22
|
+
protected getAISDKModel(): LanguageModelV1;
|
|
23
|
+
protected executeStream(options: StreamOptions, analysisSchema?: ZodType<unknown, ZodTypeDef, unknown> | Schema<unknown>): Promise<StreamResult>;
|
|
24
|
+
protected handleProviderError(error: unknown): Error;
|
|
25
|
+
/**
|
|
26
|
+
* Get SageMaker-specific provider information
|
|
27
|
+
*/
|
|
28
|
+
getSageMakerInfo(): {
|
|
29
|
+
endpointName: string;
|
|
30
|
+
modelType: string;
|
|
31
|
+
region: string;
|
|
32
|
+
configured: boolean;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Test basic configuration
|
|
36
|
+
*/
|
|
37
|
+
testConnection(): Promise<{
|
|
38
|
+
connected: boolean;
|
|
39
|
+
error?: string;
|
|
40
|
+
}>;
|
|
41
|
+
/**
|
|
42
|
+
* Public method to get the AI SDK model for CLI and external usage
|
|
43
|
+
*/
|
|
44
|
+
getModel(): Promise<LanguageModelV1>;
|
|
45
|
+
/**
|
|
46
|
+
* Test connectivity to the SageMaker endpoint
|
|
47
|
+
*/
|
|
48
|
+
testConnectivity(): Promise<{
|
|
49
|
+
success: boolean;
|
|
50
|
+
error?: string;
|
|
51
|
+
}>;
|
|
52
|
+
/**
|
|
53
|
+
* Get model capabilities and information
|
|
54
|
+
*/
|
|
55
|
+
getModelCapabilities(): {
|
|
56
|
+
capabilities: {
|
|
57
|
+
streaming: boolean;
|
|
58
|
+
toolCalling: boolean;
|
|
59
|
+
structuredOutput: boolean;
|
|
60
|
+
batchInference: boolean;
|
|
61
|
+
supportedResponseFormats: string[];
|
|
62
|
+
supportedToolTypes: string[];
|
|
63
|
+
maxBatchSize: number;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export default AmazonSageMakerProvider;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Amazon SageMaker Provider Implementation (Simplified)
|
|
3
|
+
*
|
|
4
|
+
* This module provides a simplified SageMaker provider that extends BaseProvider
|
|
5
|
+
* and integrates with the NeuroLink ecosystem using existing patterns.
|
|
6
|
+
*/
|
|
7
|
+
import { BaseProvider } from "../core/baseProvider.js";
|
|
8
|
+
import { logger } from "../utils/logger.js";
|
|
9
|
+
// SageMaker-specific imports
|
|
10
|
+
import { getSageMakerConfig, getSageMakerModelConfig, getDefaultSageMakerEndpoint, getSageMakerModel, } from "./sagemaker/config.js";
|
|
11
|
+
import { handleSageMakerError, SageMakerError } from "./sagemaker/errors.js";
|
|
12
|
+
import { SageMakerLanguageModel } from "./sagemaker/language-model.js";
|
|
13
|
+
/**
|
|
14
|
+
* Amazon SageMaker Provider extending BaseProvider
|
|
15
|
+
*/
|
|
16
|
+
export class AmazonSageMakerProvider extends BaseProvider {
|
|
17
|
+
sagemakerModel;
|
|
18
|
+
sagemakerConfig;
|
|
19
|
+
modelConfig;
|
|
20
|
+
constructor(modelName, endpointName) {
|
|
21
|
+
super(modelName, "sagemaker");
|
|
22
|
+
try {
|
|
23
|
+
// Load and validate configuration
|
|
24
|
+
this.sagemakerConfig = getSageMakerConfig();
|
|
25
|
+
this.modelConfig = getSageMakerModelConfig(endpointName || getDefaultSageMakerEndpoint());
|
|
26
|
+
// Create the proper LanguageModel (v2) implementation
|
|
27
|
+
this.sagemakerModel = new SageMakerLanguageModel(this.modelName, this.sagemakerConfig, this.modelConfig);
|
|
28
|
+
logger.debug("Amazon SageMaker Provider initialized", {
|
|
29
|
+
modelName: this.modelName,
|
|
30
|
+
endpointName: this.modelConfig.endpointName,
|
|
31
|
+
region: this.sagemakerConfig.region,
|
|
32
|
+
provider: this.providerName,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
logger.error("Failed to initialize SageMaker provider", {
|
|
37
|
+
error: error instanceof Error ? error.message : String(error),
|
|
38
|
+
modelName,
|
|
39
|
+
endpointName,
|
|
40
|
+
});
|
|
41
|
+
throw handleSageMakerError(error);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
getProviderName() {
|
|
45
|
+
return "sagemaker";
|
|
46
|
+
}
|
|
47
|
+
getDefaultModel() {
|
|
48
|
+
return getSageMakerModel();
|
|
49
|
+
}
|
|
50
|
+
getAISDKModel() {
|
|
51
|
+
return this.sagemakerModel;
|
|
52
|
+
}
|
|
53
|
+
async executeStream(options, analysisSchema) {
|
|
54
|
+
try {
|
|
55
|
+
// For now, throw an error indicating this is not yet implemented
|
|
56
|
+
throw new SageMakerError("SageMaker streaming not yet fully implemented. Coming in next phase.", "MODEL_ERROR", 501, undefined, this.modelConfig.endpointName);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
throw this.handleProviderError(error);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
handleProviderError(error) {
|
|
63
|
+
if (error instanceof SageMakerError) {
|
|
64
|
+
return error;
|
|
65
|
+
}
|
|
66
|
+
if (error instanceof Error && error.name === "TimeoutError") {
|
|
67
|
+
return new SageMakerError(`SageMaker request timed out. Consider increasing timeout.`, "NETWORK_ERROR", 408, error, this.modelConfig.endpointName);
|
|
68
|
+
}
|
|
69
|
+
return handleSageMakerError(error, this.modelConfig.endpointName);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get SageMaker-specific provider information
|
|
73
|
+
*/
|
|
74
|
+
getSageMakerInfo() {
|
|
75
|
+
return {
|
|
76
|
+
endpointName: this.modelConfig.endpointName,
|
|
77
|
+
modelType: this.modelConfig.modelType || "custom",
|
|
78
|
+
region: this.sagemakerConfig.region,
|
|
79
|
+
configured: !!(this.sagemakerConfig.accessKeyId && this.sagemakerConfig.secretAccessKey),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Test basic configuration
|
|
84
|
+
*/
|
|
85
|
+
async testConnection() {
|
|
86
|
+
try {
|
|
87
|
+
// Basic validation test
|
|
88
|
+
if (!this.sagemakerConfig.accessKeyId ||
|
|
89
|
+
!this.sagemakerConfig.secretAccessKey) {
|
|
90
|
+
return {
|
|
91
|
+
connected: false,
|
|
92
|
+
error: "AWS credentials not configured",
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if (!this.modelConfig.endpointName ||
|
|
96
|
+
this.modelConfig.endpointName === "default-endpoint") {
|
|
97
|
+
return {
|
|
98
|
+
connected: false,
|
|
99
|
+
error: "SageMaker endpoint not configured",
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
// For now, just return that configuration looks valid
|
|
103
|
+
return {
|
|
104
|
+
connected: true,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
return {
|
|
109
|
+
connected: false,
|
|
110
|
+
error: error instanceof Error ? error.message : String(error),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Public method to get the AI SDK model for CLI and external usage
|
|
116
|
+
*/
|
|
117
|
+
async getModel() {
|
|
118
|
+
return this.getAISDKModel();
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Test connectivity to the SageMaker endpoint
|
|
122
|
+
*/
|
|
123
|
+
async testConnectivity() {
|
|
124
|
+
const model = this.sagemakerModel;
|
|
125
|
+
return model.testConnectivity
|
|
126
|
+
? await model.testConnectivity()
|
|
127
|
+
: { success: false, error: "Test method not available" };
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Get model capabilities and information
|
|
131
|
+
*/
|
|
132
|
+
getModelCapabilities() {
|
|
133
|
+
const model = this.sagemakerModel;
|
|
134
|
+
return model.getModelCapabilities
|
|
135
|
+
? model.getModelCapabilities()
|
|
136
|
+
: {
|
|
137
|
+
capabilities: {
|
|
138
|
+
streaming: true,
|
|
139
|
+
toolCalling: true,
|
|
140
|
+
structuredOutput: true,
|
|
141
|
+
batchInference: true,
|
|
142
|
+
supportedResponseFormats: ["text", "json_object"],
|
|
143
|
+
supportedToolTypes: ["function"],
|
|
144
|
+
maxBatchSize: 10,
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
export default AmazonSageMakerProvider;
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export { GoogleVertexProvider as GoogleVertexAI } from "./googleVertex.js";
|
|
6
6
|
export { AmazonBedrockProvider as AmazonBedrock } from "./amazonBedrock.js";
|
|
7
|
+
export { AmazonSageMakerProvider as AmazonSageMaker } from "./amazonSagemaker.js";
|
|
7
8
|
export { OpenAIProvider as OpenAI } from "./openAI.js";
|
|
8
9
|
export { OpenAICompatibleProvider as OpenAICompatible } from "./openaiCompatible.js";
|
|
9
10
|
export { AnthropicProvider as AnthropicProvider } from "./anthropic.js";
|
|
@@ -12,6 +13,7 @@ export { GoogleAIStudioProvider as GoogleAIStudio } from "./googleAiStudio.js";
|
|
|
12
13
|
export { HuggingFaceProvider as HuggingFace } from "./huggingFace.js";
|
|
13
14
|
export { OllamaProvider as Ollama } from "./ollama.js";
|
|
14
15
|
export { MistralProvider as MistralAI } from "./mistral.js";
|
|
16
|
+
export { LiteLLMProvider as LiteLLM } from "./litellm.js";
|
|
15
17
|
export type { AIProvider } from "../core/types.js";
|
|
16
18
|
/**
|
|
17
19
|
* Provider registry for dynamic provider instantiation
|
|
@@ -19,6 +21,7 @@ export type { AIProvider } from "../core/types.js";
|
|
|
19
21
|
export declare const PROVIDERS: {
|
|
20
22
|
readonly vertex: "GoogleVertexAI";
|
|
21
23
|
readonly bedrock: "AmazonBedrock";
|
|
24
|
+
readonly sagemaker: "AmazonSageMaker";
|
|
22
25
|
readonly openai: "OpenAI";
|
|
23
26
|
readonly "openai-compatible": "OpenAICompatible";
|
|
24
27
|
readonly anthropic: "AnthropicProvider";
|
|
@@ -27,6 +30,7 @@ export declare const PROVIDERS: {
|
|
|
27
30
|
readonly huggingface: "HuggingFace";
|
|
28
31
|
readonly ollama: "Ollama";
|
|
29
32
|
readonly mistral: "MistralAI";
|
|
33
|
+
readonly litellm: "LiteLLM";
|
|
30
34
|
};
|
|
31
35
|
/**
|
|
32
36
|
* Type for valid provider names
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export { GoogleVertexProvider as GoogleVertexAI } from "./googleVertex.js";
|
|
6
6
|
export { AmazonBedrockProvider as AmazonBedrock } from "./amazonBedrock.js";
|
|
7
|
+
export { AmazonSageMakerProvider as AmazonSageMaker } from "./amazonSagemaker.js";
|
|
7
8
|
export { OpenAIProvider as OpenAI } from "./openAI.js";
|
|
8
9
|
export { OpenAICompatibleProvider as OpenAICompatible } from "./openaiCompatible.js";
|
|
9
10
|
export { AnthropicProvider as AnthropicProvider } from "./anthropic.js";
|
|
@@ -12,12 +13,14 @@ export { GoogleAIStudioProvider as GoogleAIStudio } from "./googleAiStudio.js";
|
|
|
12
13
|
export { HuggingFaceProvider as HuggingFace } from "./huggingFace.js";
|
|
13
14
|
export { OllamaProvider as Ollama } from "./ollama.js";
|
|
14
15
|
export { MistralProvider as MistralAI } from "./mistral.js";
|
|
16
|
+
export { LiteLLMProvider as LiteLLM } from "./litellm.js";
|
|
15
17
|
/**
|
|
16
18
|
* Provider registry for dynamic provider instantiation
|
|
17
19
|
*/
|
|
18
20
|
export const PROVIDERS = {
|
|
19
21
|
vertex: "GoogleVertexAI",
|
|
20
22
|
bedrock: "AmazonBedrock",
|
|
23
|
+
sagemaker: "AmazonSageMaker",
|
|
21
24
|
openai: "OpenAI",
|
|
22
25
|
"openai-compatible": "OpenAICompatible",
|
|
23
26
|
anthropic: "AnthropicProvider",
|
|
@@ -26,6 +29,7 @@ export const PROVIDERS = {
|
|
|
26
29
|
huggingface: "HuggingFace",
|
|
27
30
|
ollama: "Ollama",
|
|
28
31
|
mistral: "MistralAI",
|
|
32
|
+
litellm: "LiteLLM",
|
|
29
33
|
};
|
|
30
34
|
/**
|
|
31
35
|
* List of all available provider names
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adaptive Semaphore Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides a sophisticated semaphore implementation with dynamic concurrency adjustment
|
|
5
|
+
* for optimal resource utilization and performance tuning based on response times and error rates.
|
|
6
|
+
*/
|
|
7
|
+
export interface AdaptiveSemaphoreConfig {
|
|
8
|
+
initialConcurrency: number;
|
|
9
|
+
maxConcurrency: number;
|
|
10
|
+
minConcurrency: number;
|
|
11
|
+
}
|
|
12
|
+
export interface AdaptiveSemaphoreMetrics {
|
|
13
|
+
activeRequests: number;
|
|
14
|
+
currentConcurrency: number;
|
|
15
|
+
completedCount: number;
|
|
16
|
+
errorCount: number;
|
|
17
|
+
averageResponseTime: number;
|
|
18
|
+
waitingCount: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Adaptive semaphore that automatically adjusts concurrency based on performance metrics
|
|
22
|
+
*/
|
|
23
|
+
export declare class AdaptiveSemaphore {
|
|
24
|
+
private count;
|
|
25
|
+
private waiters;
|
|
26
|
+
private currentConcurrency;
|
|
27
|
+
private activeRequests;
|
|
28
|
+
private completedCount;
|
|
29
|
+
private errorCount;
|
|
30
|
+
private responseTimes;
|
|
31
|
+
private readonly maxConcurrency;
|
|
32
|
+
private readonly minConcurrency;
|
|
33
|
+
constructor(config: AdaptiveSemaphoreConfig);
|
|
34
|
+
/**
|
|
35
|
+
* Acquire a semaphore permit, waiting if necessary
|
|
36
|
+
*/
|
|
37
|
+
acquire(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Release a semaphore permit and wake up waiting requests
|
|
40
|
+
*/
|
|
41
|
+
release(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Record successful completion with response time for adaptive adjustment
|
|
44
|
+
*/
|
|
45
|
+
recordSuccess(responseTimeMs: number): void;
|
|
46
|
+
/**
|
|
47
|
+
* Record error for adaptive adjustment
|
|
48
|
+
*/
|
|
49
|
+
recordError(responseTimeMs?: number): void;
|
|
50
|
+
/**
|
|
51
|
+
* Manually adjust concurrency level
|
|
52
|
+
*/
|
|
53
|
+
adjustConcurrency(newLimit: number): void;
|
|
54
|
+
/**
|
|
55
|
+
* Get current performance metrics
|
|
56
|
+
*/
|
|
57
|
+
getMetrics(): AdaptiveSemaphoreMetrics;
|
|
58
|
+
/**
|
|
59
|
+
* Reset metrics for new batch or session
|
|
60
|
+
*/
|
|
61
|
+
resetMetrics(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Automatically adjust concurrency based on performance indicators
|
|
64
|
+
*/
|
|
65
|
+
private adjustConcurrencyBasedOnPerformance;
|
|
66
|
+
/**
|
|
67
|
+
* Check if semaphore is idle (no active or waiting requests)
|
|
68
|
+
*/
|
|
69
|
+
isIdle(): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Get current concurrency limit
|
|
72
|
+
*/
|
|
73
|
+
getCurrentConcurrency(): number;
|
|
74
|
+
/**
|
|
75
|
+
* Get number of active requests
|
|
76
|
+
*/
|
|
77
|
+
getActiveRequestCount(): number;
|
|
78
|
+
/**
|
|
79
|
+
* Get number of waiting requests
|
|
80
|
+
*/
|
|
81
|
+
getWaitingRequestCount(): number;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Factory function to create an adaptive semaphore with default configuration
|
|
85
|
+
*/
|
|
86
|
+
export declare function createAdaptiveSemaphore(initialConcurrency: number, maxConcurrency?: number, minConcurrency?: number): AdaptiveSemaphore;
|