@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.
Files changed (83) hide show
  1. package/CHANGELOG.md +20 -2
  2. package/README.md +33 -2
  3. package/dist/cli/commands/config.d.ts +3 -3
  4. package/dist/cli/commands/sagemaker.d.ts +11 -0
  5. package/dist/cli/commands/sagemaker.js +778 -0
  6. package/dist/cli/factories/commandFactory.js +1 -0
  7. package/dist/cli/index.js +3 -0
  8. package/dist/cli/utils/interactiveSetup.js +28 -0
  9. package/dist/core/baseProvider.d.ts +2 -2
  10. package/dist/core/types.d.ts +1 -0
  11. package/dist/core/types.js +1 -0
  12. package/dist/factories/providerRegistry.js +5 -0
  13. package/dist/lib/core/baseProvider.d.ts +2 -2
  14. package/dist/lib/core/types.d.ts +1 -0
  15. package/dist/lib/core/types.js +1 -0
  16. package/dist/lib/factories/providerRegistry.js +5 -0
  17. package/dist/lib/providers/amazonSagemaker.d.ts +67 -0
  18. package/dist/lib/providers/amazonSagemaker.js +149 -0
  19. package/dist/lib/providers/index.d.ts +4 -0
  20. package/dist/lib/providers/index.js +4 -0
  21. package/dist/lib/providers/sagemaker/adaptive-semaphore.d.ts +86 -0
  22. package/dist/lib/providers/sagemaker/adaptive-semaphore.js +212 -0
  23. package/dist/lib/providers/sagemaker/client.d.ts +156 -0
  24. package/dist/lib/providers/sagemaker/client.js +462 -0
  25. package/dist/lib/providers/sagemaker/config.d.ts +73 -0
  26. package/dist/lib/providers/sagemaker/config.js +308 -0
  27. package/dist/lib/providers/sagemaker/detection.d.ts +176 -0
  28. package/dist/lib/providers/sagemaker/detection.js +596 -0
  29. package/dist/lib/providers/sagemaker/diagnostics.d.ts +37 -0
  30. package/dist/lib/providers/sagemaker/diagnostics.js +137 -0
  31. package/dist/lib/providers/sagemaker/error-constants.d.ts +78 -0
  32. package/dist/lib/providers/sagemaker/error-constants.js +227 -0
  33. package/dist/lib/providers/sagemaker/errors.d.ts +83 -0
  34. package/dist/lib/providers/sagemaker/errors.js +216 -0
  35. package/dist/lib/providers/sagemaker/index.d.ts +35 -0
  36. package/dist/lib/providers/sagemaker/index.js +67 -0
  37. package/dist/lib/providers/sagemaker/language-model.d.ts +182 -0
  38. package/dist/lib/providers/sagemaker/language-model.js +755 -0
  39. package/dist/lib/providers/sagemaker/parsers.d.ts +136 -0
  40. package/dist/lib/providers/sagemaker/parsers.js +625 -0
  41. package/dist/lib/providers/sagemaker/streaming.d.ts +39 -0
  42. package/dist/lib/providers/sagemaker/streaming.js +320 -0
  43. package/dist/lib/providers/sagemaker/structured-parser.d.ts +117 -0
  44. package/dist/lib/providers/sagemaker/structured-parser.js +625 -0
  45. package/dist/lib/providers/sagemaker/types.d.ts +456 -0
  46. package/dist/lib/providers/sagemaker/types.js +7 -0
  47. package/dist/lib/types/cli.d.ts +36 -1
  48. package/dist/lib/utils/providerConfig.js +6 -2
  49. package/dist/lib/utils/providerHealth.js +45 -9
  50. package/dist/providers/amazonSagemaker.d.ts +67 -0
  51. package/dist/providers/amazonSagemaker.js +149 -0
  52. package/dist/providers/index.d.ts +4 -0
  53. package/dist/providers/index.js +4 -0
  54. package/dist/providers/sagemaker/adaptive-semaphore.d.ts +86 -0
  55. package/dist/providers/sagemaker/adaptive-semaphore.js +212 -0
  56. package/dist/providers/sagemaker/client.d.ts +156 -0
  57. package/dist/providers/sagemaker/client.js +462 -0
  58. package/dist/providers/sagemaker/config.d.ts +73 -0
  59. package/dist/providers/sagemaker/config.js +308 -0
  60. package/dist/providers/sagemaker/detection.d.ts +176 -0
  61. package/dist/providers/sagemaker/detection.js +596 -0
  62. package/dist/providers/sagemaker/diagnostics.d.ts +37 -0
  63. package/dist/providers/sagemaker/diagnostics.js +137 -0
  64. package/dist/providers/sagemaker/error-constants.d.ts +78 -0
  65. package/dist/providers/sagemaker/error-constants.js +227 -0
  66. package/dist/providers/sagemaker/errors.d.ts +83 -0
  67. package/dist/providers/sagemaker/errors.js +216 -0
  68. package/dist/providers/sagemaker/index.d.ts +35 -0
  69. package/dist/providers/sagemaker/index.js +67 -0
  70. package/dist/providers/sagemaker/language-model.d.ts +182 -0
  71. package/dist/providers/sagemaker/language-model.js +755 -0
  72. package/dist/providers/sagemaker/parsers.d.ts +136 -0
  73. package/dist/providers/sagemaker/parsers.js +625 -0
  74. package/dist/providers/sagemaker/streaming.d.ts +39 -0
  75. package/dist/providers/sagemaker/streaming.js +320 -0
  76. package/dist/providers/sagemaker/structured-parser.d.ts +117 -0
  77. package/dist/providers/sagemaker/structured-parser.js +625 -0
  78. package/dist/providers/sagemaker/types.d.ts +456 -0
  79. package/dist/providers/sagemaker/types.js +7 -0
  80. package/dist/types/cli.d.ts +36 -1
  81. package/dist/utils/providerConfig.js +6 -2
  82. package/dist/utils/providerHealth.js +45 -9
  83. package/package.json +4 -1
@@ -28,6 +28,7 @@ export class CLICommandFactory {
28
28
  "ollama",
29
29
  "mistral",
30
30
  "litellm",
31
+ "sagemaker",
31
32
  ],
32
33
  default: "auto",
33
34
  description: "AI provider to use (auto-selects best available)",
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, LanguageModel } from "ai";
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(): LanguageModel | Promise<LanguageModel>;
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)
@@ -51,6 +51,7 @@ export declare enum AIProviderName {
51
51
  OLLAMA = "ollama",
52
52
  MISTRAL = "mistral",
53
53
  LITELLM = "litellm",
54
+ SAGEMAKER = "sagemaker",
54
55
  AUTO = "auto"
55
56
  }
56
57
  /**
@@ -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, LanguageModel } from "ai";
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(): LanguageModel | Promise<LanguageModel>;
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)
@@ -51,6 +51,7 @@ export declare enum AIProviderName {
51
51
  OLLAMA = "ollama",
52
52
  MISTRAL = "mistral",
53
53
  LITELLM = "litellm",
54
+ SAGEMAKER = "sagemaker",
54
55
  AUTO = "auto"
55
56
  }
56
57
  /**
@@ -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;