@juspay/neurolink 7.24.1 → 7.25.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 +6 -0
- package/dist/core/baseProvider.d.ts +13 -0
- package/dist/core/baseProvider.js +79 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/dist/lib/core/baseProvider.d.ts +13 -0
- package/dist/lib/core/baseProvider.js +79 -1
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.js +2 -0
- package/dist/lib/middleware/builtin/analytics.d.ts +16 -0
- package/dist/lib/middleware/builtin/analytics.js +130 -0
- package/dist/lib/middleware/factory.d.ts +54 -0
- package/dist/lib/middleware/factory.js +289 -0
- package/dist/lib/middleware/index.d.ts +58 -0
- package/dist/lib/middleware/index.js +67 -0
- package/dist/lib/middleware/registry.d.ts +78 -0
- package/dist/lib/middleware/registry.js +283 -0
- package/dist/lib/middleware/types.d.ts +144 -0
- package/dist/lib/middleware/types.js +1 -0
- package/dist/middleware/builtin/analytics.d.ts +16 -0
- package/dist/middleware/builtin/analytics.js +130 -0
- package/dist/middleware/factory.d.ts +54 -0
- package/dist/middleware/factory.js +289 -0
- package/dist/middleware/index.d.ts +58 -0
- package/dist/middleware/index.js +67 -0
- package/dist/middleware/registry.d.ts +78 -0
- package/dist/middleware/registry.js +283 -0
- package/dist/middleware/types.d.ts +144 -0
- package/dist/middleware/types.js +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import { wrapLanguageModel } from "ai";
|
|
2
|
+
import { middlewareRegistry } from "./registry.js";
|
|
3
|
+
import { logger } from "../utils/logger.js";
|
|
4
|
+
/**
|
|
5
|
+
* Middleware factory for creating and applying middleware chains
|
|
6
|
+
*/
|
|
7
|
+
export class MiddlewareFactory {
|
|
8
|
+
/**
|
|
9
|
+
* Apply middleware to a language model
|
|
10
|
+
*/
|
|
11
|
+
static applyMiddleware(model, context, options = {}) {
|
|
12
|
+
const startTime = Date.now();
|
|
13
|
+
try {
|
|
14
|
+
// Build middleware configuration
|
|
15
|
+
const middlewareConfig = this.buildMiddlewareConfig(options);
|
|
16
|
+
// Build middleware chain
|
|
17
|
+
const middlewareChain = middlewareRegistry.buildChain(context, middlewareConfig);
|
|
18
|
+
if (middlewareChain.length === 0) {
|
|
19
|
+
logger.debug("No middleware to apply", { provider: context.provider });
|
|
20
|
+
return model;
|
|
21
|
+
}
|
|
22
|
+
logger.debug(`Applying ${middlewareChain.length} middleware to model`, {
|
|
23
|
+
provider: context.provider,
|
|
24
|
+
model: context.model,
|
|
25
|
+
middlewareCount: middlewareChain.length,
|
|
26
|
+
});
|
|
27
|
+
// Apply middleware using AI SDK's wrapLanguageModel
|
|
28
|
+
// Cast to the expected AI SDK middleware type
|
|
29
|
+
const wrappedModel = wrapLanguageModel({
|
|
30
|
+
model,
|
|
31
|
+
middleware: middlewareChain,
|
|
32
|
+
});
|
|
33
|
+
const processingTime = Date.now() - startTime;
|
|
34
|
+
logger.debug("Middleware applied successfully", {
|
|
35
|
+
provider: context.provider,
|
|
36
|
+
middlewareCount: middlewareChain.length,
|
|
37
|
+
processingTime,
|
|
38
|
+
});
|
|
39
|
+
return wrappedModel;
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
logger.error("Failed to apply middleware", {
|
|
43
|
+
provider: context.provider,
|
|
44
|
+
error: error instanceof Error ? error.message : String(error),
|
|
45
|
+
});
|
|
46
|
+
// Return original model on error to maintain functionality
|
|
47
|
+
return model;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Build middleware configuration from factory options
|
|
52
|
+
*/
|
|
53
|
+
static buildMiddlewareConfig(options) {
|
|
54
|
+
const config = {};
|
|
55
|
+
// Start with all registered middleware
|
|
56
|
+
const allMiddleware = middlewareRegistry.list();
|
|
57
|
+
for (const middleware of allMiddleware) {
|
|
58
|
+
// Default configuration
|
|
59
|
+
config[middleware.metadata.id] = {
|
|
60
|
+
enabled: middleware.metadata.defaultEnabled || false,
|
|
61
|
+
config: {},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// Apply preset configuration if specified
|
|
65
|
+
if (options.preset) {
|
|
66
|
+
const presetConfig = this.getPresetConfig(options.preset);
|
|
67
|
+
if (presetConfig) {
|
|
68
|
+
Object.assign(config, presetConfig);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Apply explicit middleware configurations
|
|
72
|
+
if (options.middlewareConfig) {
|
|
73
|
+
for (const [middlewareId, middlewareConfig] of Object.entries(options.middlewareConfig)) {
|
|
74
|
+
config[middlewareId] = {
|
|
75
|
+
...config[middlewareId],
|
|
76
|
+
...middlewareConfig,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Apply enabled middleware list
|
|
81
|
+
if (options.enabledMiddleware) {
|
|
82
|
+
for (const middlewareId of options.enabledMiddleware) {
|
|
83
|
+
if (config[middlewareId]) {
|
|
84
|
+
config[middlewareId].enabled = true;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Apply disabled middleware list
|
|
89
|
+
if (options.disabledMiddleware) {
|
|
90
|
+
for (const middlewareId of options.disabledMiddleware) {
|
|
91
|
+
if (config[middlewareId]) {
|
|
92
|
+
config[middlewareId].enabled = false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return config;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get preset configuration
|
|
100
|
+
*/
|
|
101
|
+
static getPresetConfig(presetName) {
|
|
102
|
+
const presets = this.getBuiltInPresets();
|
|
103
|
+
return presets[presetName] || null;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get built-in preset configurations
|
|
107
|
+
*/
|
|
108
|
+
static getBuiltInPresets() {
|
|
109
|
+
return {
|
|
110
|
+
// Development preset - logging and basic analytics
|
|
111
|
+
development: {
|
|
112
|
+
logging: { enabled: true },
|
|
113
|
+
analytics: { enabled: true },
|
|
114
|
+
},
|
|
115
|
+
// Production preset - analytics, caching, rate limiting
|
|
116
|
+
production: {
|
|
117
|
+
analytics: { enabled: true },
|
|
118
|
+
caching: { enabled: true },
|
|
119
|
+
rateLimit: { enabled: true },
|
|
120
|
+
retry: { enabled: true },
|
|
121
|
+
},
|
|
122
|
+
// Security preset - guardrails and content filtering
|
|
123
|
+
security: {
|
|
124
|
+
guardrails: { enabled: true },
|
|
125
|
+
logging: { enabled: true },
|
|
126
|
+
rateLimit: { enabled: true },
|
|
127
|
+
},
|
|
128
|
+
// Performance preset - caching and optimization
|
|
129
|
+
performance: {
|
|
130
|
+
caching: { enabled: true },
|
|
131
|
+
retry: { enabled: true },
|
|
132
|
+
timeout: { enabled: true },
|
|
133
|
+
},
|
|
134
|
+
// Enterprise preset - all middleware enabled
|
|
135
|
+
enterprise: {
|
|
136
|
+
analytics: { enabled: true },
|
|
137
|
+
guardrails: { enabled: true },
|
|
138
|
+
logging: { enabled: true },
|
|
139
|
+
caching: { enabled: true },
|
|
140
|
+
rateLimit: { enabled: true },
|
|
141
|
+
retry: { enabled: true },
|
|
142
|
+
timeout: { enabled: true },
|
|
143
|
+
},
|
|
144
|
+
// Minimal preset - only essential middleware
|
|
145
|
+
minimal: {
|
|
146
|
+
analytics: { enabled: true },
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Create middleware context from provider and options
|
|
152
|
+
*/
|
|
153
|
+
static createContext(provider, model, options = {}, session) {
|
|
154
|
+
return {
|
|
155
|
+
provider,
|
|
156
|
+
model,
|
|
157
|
+
options,
|
|
158
|
+
session,
|
|
159
|
+
metadata: {
|
|
160
|
+
timestamp: Date.now(),
|
|
161
|
+
requestId: `${provider}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Validate middleware configuration
|
|
167
|
+
*/
|
|
168
|
+
static validateConfig(config) {
|
|
169
|
+
const errors = [];
|
|
170
|
+
const warnings = [];
|
|
171
|
+
for (const [middlewareId, middlewareConfig] of Object.entries(config)) {
|
|
172
|
+
// Check if middleware is registered
|
|
173
|
+
if (!middlewareRegistry.has(middlewareId)) {
|
|
174
|
+
errors.push(`Middleware '${middlewareId}' is not registered`);
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
// Validate configuration structure
|
|
178
|
+
if (middlewareConfig.enabled !== undefined &&
|
|
179
|
+
typeof middlewareConfig.enabled !== "boolean") {
|
|
180
|
+
errors.push(`Middleware '${middlewareId}' enabled property must be boolean`);
|
|
181
|
+
}
|
|
182
|
+
if (middlewareConfig.config &&
|
|
183
|
+
typeof middlewareConfig.config !== "object") {
|
|
184
|
+
errors.push(`Middleware '${middlewareId}' config property must be an object`);
|
|
185
|
+
}
|
|
186
|
+
// Check for potential conflicts
|
|
187
|
+
if (middlewareConfig.conditions?.providers &&
|
|
188
|
+
middlewareConfig.conditions.providers.length === 0) {
|
|
189
|
+
warnings.push(`Middleware '${middlewareId}' has empty providers condition`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return {
|
|
193
|
+
isValid: errors.length === 0,
|
|
194
|
+
errors,
|
|
195
|
+
warnings,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Get available presets
|
|
200
|
+
*/
|
|
201
|
+
static getAvailablePresets() {
|
|
202
|
+
return [
|
|
203
|
+
{
|
|
204
|
+
name: "development",
|
|
205
|
+
description: "Logging and basic analytics for development",
|
|
206
|
+
middleware: ["logging", "analytics"],
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
name: "production",
|
|
210
|
+
description: "Optimized for production with caching and rate limiting",
|
|
211
|
+
middleware: ["analytics", "caching", "rateLimit", "retry"],
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
name: "security",
|
|
215
|
+
description: "Enhanced security with guardrails and monitoring",
|
|
216
|
+
middleware: ["guardrails", "logging", "rateLimit"],
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
name: "performance",
|
|
220
|
+
description: "Optimized for performance with caching and retries",
|
|
221
|
+
middleware: ["caching", "retry", "timeout"],
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
name: "enterprise",
|
|
225
|
+
description: "Full enterprise feature set with all middleware",
|
|
226
|
+
middleware: [
|
|
227
|
+
"analytics",
|
|
228
|
+
"guardrails",
|
|
229
|
+
"logging",
|
|
230
|
+
"caching",
|
|
231
|
+
"rateLimit",
|
|
232
|
+
"retry",
|
|
233
|
+
"timeout",
|
|
234
|
+
],
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
name: "minimal",
|
|
238
|
+
description: "Minimal overhead with only essential features",
|
|
239
|
+
middleware: ["analytics"],
|
|
240
|
+
},
|
|
241
|
+
];
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Get middleware chain statistics
|
|
245
|
+
*/
|
|
246
|
+
static getChainStats(context, config) {
|
|
247
|
+
const chain = middlewareRegistry.buildChain(context, config);
|
|
248
|
+
const stats = middlewareRegistry.getAggregatedStats();
|
|
249
|
+
const results = {};
|
|
250
|
+
let totalExecutionTime = 0;
|
|
251
|
+
let appliedMiddleware = 0;
|
|
252
|
+
for (const [middlewareId, middlewareStats] of Object.entries(stats)) {
|
|
253
|
+
if (config[middlewareId]?.enabled) {
|
|
254
|
+
results[middlewareId] = {
|
|
255
|
+
applied: true,
|
|
256
|
+
executionTime: middlewareStats.averageExecutionTime,
|
|
257
|
+
};
|
|
258
|
+
totalExecutionTime += middlewareStats.averageExecutionTime;
|
|
259
|
+
appliedMiddleware++;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return {
|
|
263
|
+
totalMiddleware: chain.length,
|
|
264
|
+
appliedMiddleware,
|
|
265
|
+
totalExecutionTime,
|
|
266
|
+
results,
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Create a middleware-enabled model factory function
|
|
271
|
+
*/
|
|
272
|
+
static createModelFactory(baseModelFactory, defaultOptions = {}) {
|
|
273
|
+
return async (context, options = {}) => {
|
|
274
|
+
// Get base model
|
|
275
|
+
const baseModel = await baseModelFactory();
|
|
276
|
+
// Merge options
|
|
277
|
+
const _mergedOptions = {
|
|
278
|
+
...defaultOptions,
|
|
279
|
+
...options,
|
|
280
|
+
middlewareConfig: {
|
|
281
|
+
...defaultOptions.middlewareConfig,
|
|
282
|
+
...options.middlewareConfig,
|
|
283
|
+
},
|
|
284
|
+
};
|
|
285
|
+
// Apply middleware
|
|
286
|
+
return this.applyMiddleware(baseModel, context, _mergedOptions);
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NeuroLink Middleware System
|
|
3
|
+
*
|
|
4
|
+
* This module provides a comprehensive middleware system for NeuroLink that integrates
|
|
5
|
+
* with the AI SDK's wrapLanguageModel functionality. It allows for modular enhancement
|
|
6
|
+
* of language models with features like analytics, guardrails, caching, and more.
|
|
7
|
+
*/
|
|
8
|
+
import type { NeuroLinkMiddleware, MiddlewareRegistrationOptions, MiddlewareConfig } from "./types.js";
|
|
9
|
+
export type { NeuroLinkMiddleware, MiddlewareConfig, MiddlewareContext, MiddlewareConditions, MiddlewareRegistrationOptions, MiddlewareExecutionResult, MiddlewareChainStats, MiddlewarePreset, MiddlewareFactoryOptions, BuiltInMiddlewareType, } from "./types.js";
|
|
10
|
+
export type { LanguageModelV1Middleware } from "ai";
|
|
11
|
+
export { MiddlewareRegistry, middlewareRegistry } from "./registry.js";
|
|
12
|
+
export { MiddlewareFactory } from "./factory.js";
|
|
13
|
+
/**
|
|
14
|
+
* Convenience function to register a middleware
|
|
15
|
+
*/
|
|
16
|
+
export declare function registerMiddleware(middleware: NeuroLinkMiddleware, options?: MiddlewareRegistrationOptions): void;
|
|
17
|
+
/**
|
|
18
|
+
* Convenience function to unregister a middleware
|
|
19
|
+
*/
|
|
20
|
+
export declare function unregisterMiddleware(middlewareId: string): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Convenience function to get all registered middleware
|
|
23
|
+
*/
|
|
24
|
+
export declare function listMiddleware(): NeuroLinkMiddleware[];
|
|
25
|
+
/**
|
|
26
|
+
* Convenience function to check if a middleware is registered
|
|
27
|
+
*/
|
|
28
|
+
export declare function hasMiddleware(middlewareId: string): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Convenience function to get middleware execution statistics
|
|
31
|
+
*/
|
|
32
|
+
export declare function getMiddlewareStats(): Record<string, {
|
|
33
|
+
totalExecutions: number;
|
|
34
|
+
successfulExecutions: number;
|
|
35
|
+
failedExecutions: number;
|
|
36
|
+
averageExecutionTime: number;
|
|
37
|
+
lastExecutionTime: number;
|
|
38
|
+
}>;
|
|
39
|
+
/**
|
|
40
|
+
* Convenience function to clear middleware execution statistics
|
|
41
|
+
*/
|
|
42
|
+
export declare function clearMiddlewareStats(middlewareId?: string): void;
|
|
43
|
+
/**
|
|
44
|
+
* Convenience function to get available middleware presets
|
|
45
|
+
*/
|
|
46
|
+
export declare function getAvailablePresets(): Array<{
|
|
47
|
+
name: string;
|
|
48
|
+
description: string;
|
|
49
|
+
middleware: string[];
|
|
50
|
+
}>;
|
|
51
|
+
/**
|
|
52
|
+
* Convenience function to validate middleware configuration
|
|
53
|
+
*/
|
|
54
|
+
export declare function validateMiddlewareConfig(config: Record<string, MiddlewareConfig>): {
|
|
55
|
+
isValid: boolean;
|
|
56
|
+
errors: string[];
|
|
57
|
+
warnings: string[];
|
|
58
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NeuroLink Middleware System
|
|
3
|
+
*
|
|
4
|
+
* This module provides a comprehensive middleware system for NeuroLink that integrates
|
|
5
|
+
* with the AI SDK's wrapLanguageModel functionality. It allows for modular enhancement
|
|
6
|
+
* of language models with features like analytics, guardrails, caching, and more.
|
|
7
|
+
*/
|
|
8
|
+
import { middlewareRegistry } from "./registry.js";
|
|
9
|
+
import { MiddlewareFactory } from "./factory.js";
|
|
10
|
+
// Registry for managing middleware
|
|
11
|
+
export { MiddlewareRegistry, middlewareRegistry } from "./registry.js";
|
|
12
|
+
// Factory for creating and applying middleware chains
|
|
13
|
+
export { MiddlewareFactory } from "./factory.js";
|
|
14
|
+
// Re-export built-in middleware when they're implemented
|
|
15
|
+
// export { analyticsMiddleware } from './built-in/analytics.js';
|
|
16
|
+
// export { guardrailsMiddleware } from './built-in/guardrails.js';
|
|
17
|
+
// export { loggingMiddleware } from './built-in/logging.js';
|
|
18
|
+
// export { cachingMiddleware } from './built-in/caching.js';
|
|
19
|
+
// export { rateLimitMiddleware } from './built-in/rateLimit.js';
|
|
20
|
+
/**
|
|
21
|
+
* Convenience function to register a middleware
|
|
22
|
+
*/
|
|
23
|
+
export function registerMiddleware(middleware, options) {
|
|
24
|
+
middlewareRegistry.register(middleware, options);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Convenience function to unregister a middleware
|
|
28
|
+
*/
|
|
29
|
+
export function unregisterMiddleware(middlewareId) {
|
|
30
|
+
return middlewareRegistry.unregister(middlewareId);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Convenience function to get all registered middleware
|
|
34
|
+
*/
|
|
35
|
+
export function listMiddleware() {
|
|
36
|
+
return middlewareRegistry.list();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Convenience function to check if a middleware is registered
|
|
40
|
+
*/
|
|
41
|
+
export function hasMiddleware(middlewareId) {
|
|
42
|
+
return middlewareRegistry.has(middlewareId);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Convenience function to get middleware execution statistics
|
|
46
|
+
*/
|
|
47
|
+
export function getMiddlewareStats() {
|
|
48
|
+
return middlewareRegistry.getAggregatedStats();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Convenience function to clear middleware execution statistics
|
|
52
|
+
*/
|
|
53
|
+
export function clearMiddlewareStats(middlewareId) {
|
|
54
|
+
middlewareRegistry.clearStats(middlewareId);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Convenience function to get available middleware presets
|
|
58
|
+
*/
|
|
59
|
+
export function getAvailablePresets() {
|
|
60
|
+
return MiddlewareFactory.getAvailablePresets();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Convenience function to validate middleware configuration
|
|
64
|
+
*/
|
|
65
|
+
export function validateMiddlewareConfig(config) {
|
|
66
|
+
return MiddlewareFactory.validateConfig(config);
|
|
67
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { LanguageModelV1Middleware } from "ai";
|
|
2
|
+
import type { NeuroLinkMiddleware, MiddlewareConfig, MiddlewareContext, MiddlewareRegistrationOptions, MiddlewareExecutionResult } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Global middleware registry for NeuroLink
|
|
5
|
+
* Manages registration, configuration, and execution of middleware
|
|
6
|
+
*/
|
|
7
|
+
export declare class MiddlewareRegistry {
|
|
8
|
+
private middleware;
|
|
9
|
+
private globalConfigs;
|
|
10
|
+
private executionStats;
|
|
11
|
+
/**
|
|
12
|
+
* Register a middleware
|
|
13
|
+
*/
|
|
14
|
+
register(middleware: NeuroLinkMiddleware, options?: MiddlewareRegistrationOptions): void;
|
|
15
|
+
/**
|
|
16
|
+
* Unregister a middleware
|
|
17
|
+
*/
|
|
18
|
+
unregister(middlewareId: string): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Get a registered middleware
|
|
21
|
+
*/
|
|
22
|
+
get(middlewareId: string): NeuroLinkMiddleware | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* List all registered middleware
|
|
25
|
+
*/
|
|
26
|
+
list(): NeuroLinkMiddleware[];
|
|
27
|
+
/**
|
|
28
|
+
* Get middleware IDs sorted by priority
|
|
29
|
+
*/
|
|
30
|
+
getSortedIds(): string[];
|
|
31
|
+
/**
|
|
32
|
+
* Build middleware chain based on configuration
|
|
33
|
+
*/
|
|
34
|
+
buildChain(context: MiddlewareContext, config?: Record<string, MiddlewareConfig>): LanguageModelV1Middleware[];
|
|
35
|
+
/**
|
|
36
|
+
* Determine if middleware should be applied based on conditions
|
|
37
|
+
*/
|
|
38
|
+
private shouldApplyMiddleware;
|
|
39
|
+
/**
|
|
40
|
+
* Configure middleware with runtime configuration
|
|
41
|
+
*/
|
|
42
|
+
private configureMiddleware;
|
|
43
|
+
/**
|
|
44
|
+
* Record middleware execution statistics
|
|
45
|
+
*/
|
|
46
|
+
private recordExecution;
|
|
47
|
+
/**
|
|
48
|
+
* Get execution statistics for a middleware
|
|
49
|
+
*/
|
|
50
|
+
getExecutionStats(middlewareId: string): MiddlewareExecutionResult[];
|
|
51
|
+
/**
|
|
52
|
+
* Get aggregated statistics for all middleware
|
|
53
|
+
*/
|
|
54
|
+
getAggregatedStats(): Record<string, {
|
|
55
|
+
totalExecutions: number;
|
|
56
|
+
successfulExecutions: number;
|
|
57
|
+
failedExecutions: number;
|
|
58
|
+
averageExecutionTime: number;
|
|
59
|
+
lastExecutionTime: number;
|
|
60
|
+
}>;
|
|
61
|
+
/**
|
|
62
|
+
* Clear execution statistics
|
|
63
|
+
*/
|
|
64
|
+
clearStats(middlewareId?: string): void;
|
|
65
|
+
/**
|
|
66
|
+
* Check if a middleware is registered
|
|
67
|
+
*/
|
|
68
|
+
has(middlewareId: string): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Get the number of registered middleware
|
|
71
|
+
*/
|
|
72
|
+
size(): number;
|
|
73
|
+
/**
|
|
74
|
+
* Clear all registered middleware
|
|
75
|
+
*/
|
|
76
|
+
clear(): void;
|
|
77
|
+
}
|
|
78
|
+
export declare const middlewareRegistry: MiddlewareRegistry;
|