@juspay/neurolink 12.49.11 → 12.49.13
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 +2 -2
- package/dist/core/baseProvider.d.ts +1 -1
- package/dist/core/baseProvider.js +2 -2
- package/dist/evaluation/scorers/rule/formatScorer.js +1 -1
- package/dist/mcp/mcpRegistryClient.js +1 -1
- package/dist/middleware/utils/guardrailsUtils.js +1 -1
- package/dist/neurolink.js +7 -4
- package/dist/rag/ChunkerFactory.js +2 -2
- package/dist/workflow/config.d.ts +2 -2
- package/dist/workflow/config.js +2 -2
- package/dist/workflow/core/workflowRegistry.js +2 -2
- package/dist/workflow/core/workflowRunner.js +1 -1
- package/dist/workflow/utils/workflowMetrics.d.ts +2 -2
- package/dist/workflow/utils/workflowMetrics.js +2 -2
- package/docs-site/static/search-index.json +2 -2
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
## [12.49.
|
|
1
|
+
## [12.49.13](https://github.com/juspay/neurolink/compare/v12.49.12...v12.49.13) (2026-10-09)
|
|
2
2
|
|
|
3
3
|
### Bug Fixes
|
|
4
4
|
|
|
5
|
-
- **(
|
|
5
|
+
- **(deps):** override handlebars past two critical AST-injection advisories ([9fa0b99](https://github.com/juspay/neurolink/commit/9fa0b9981ba4a17998066ac93ca0de87c3d13f03))
|
|
6
6
|
|
|
7
7
|
## [11.2.3](https://github.com/juspay/neurolink/compare/v11.2.2...v11.2.3) (2026-08-19)
|
|
8
8
|
|
|
@@ -598,7 +598,7 @@ export declare abstract class BaseProvider implements AIProvider {
|
|
|
598
598
|
/**
|
|
599
599
|
* Get AI SDK model with middleware applied
|
|
600
600
|
* This method wraps the base model with any configured middleware
|
|
601
|
-
* TODO(#
|
|
601
|
+
* TODO(#1953): Implement global level middlewares that can be used
|
|
602
602
|
*/
|
|
603
603
|
protected getAISDKModelWithMiddleware(options?: TextGenerationOptions | StreamOptions): Promise<LanguageModel>;
|
|
604
604
|
/**
|
|
@@ -117,7 +117,7 @@ export class BaseProvider {
|
|
|
117
117
|
modelName;
|
|
118
118
|
providerName;
|
|
119
119
|
defaultTimeout = 30000; // 30 seconds
|
|
120
|
-
middlewareOptions; // TODO(#
|
|
120
|
+
middlewareOptions; // TODO(#1953): Implement global level middlewares that can be used
|
|
121
121
|
// Tools are conditionally included based on centralized configuration
|
|
122
122
|
directTools = shouldDisableBuiltinTools()
|
|
123
123
|
? {}
|
|
@@ -2516,7 +2516,7 @@ export class BaseProvider {
|
|
|
2516
2516
|
/**
|
|
2517
2517
|
* Get AI SDK model with middleware applied
|
|
2518
2518
|
* This method wraps the base model with any configured middleware
|
|
2519
|
-
* TODO(#
|
|
2519
|
+
* TODO(#1953): Implement global level middlewares that can be used
|
|
2520
2520
|
*/
|
|
2521
2521
|
async getAISDKModelWithMiddleware(options = {}) {
|
|
2522
2522
|
return this.applyMiddlewareToModel(await this.getAISDKModel(), options);
|
|
@@ -396,7 +396,7 @@ export class FormatScorer extends BaseRuleScorer {
|
|
|
396
396
|
// First check if it's valid JSON
|
|
397
397
|
try {
|
|
398
398
|
JSON.parse(text);
|
|
399
|
-
// TODO(#
|
|
399
|
+
// TODO(#1955): Implement full JSON Schema validation
|
|
400
400
|
// For now, just check it's valid JSON
|
|
401
401
|
return { passed: true, score: 1.0 };
|
|
402
402
|
}
|
|
@@ -325,7 +325,7 @@ export function applyContentFiltering(text, badWordsConfig, context = "unknown")
|
|
|
325
325
|
logger.debug(`[ContentFiltering:${context}] Applying regex pattern filtering with ${badWordsConfig.regexPatterns.length} patterns using replacement: "${replacementText}".`);
|
|
326
326
|
for (const pattern of badWordsConfig.regexPatterns) {
|
|
327
327
|
try {
|
|
328
|
-
// TODO(#
|
|
328
|
+
// TODO(#1954): Add blocking for overly complex or long patterns
|
|
329
329
|
if (pattern.length > 1000) {
|
|
330
330
|
logger.warn(`[ContentFiltering:${context}] Regex pattern exceeds max length (1000 chars): "${pattern.substring(0, 50)}..."`);
|
|
331
331
|
}
|
package/dist/neurolink.js
CHANGED
|
@@ -10357,8 +10357,10 @@ Current user's request: ${currentInput}`;
|
|
|
10357
10357
|
// ========================================
|
|
10358
10358
|
// ENHANCED: Tool Event Emission API
|
|
10359
10359
|
// ========================================
|
|
10360
|
-
//
|
|
10361
|
-
//
|
|
10360
|
+
// Speculative, not a gap: ToolExecutionEvent already exists
|
|
10361
|
+
// (src/lib/types/tools.ts) and is already surfaced via
|
|
10362
|
+
// StreamResult.toolEvents. Dedicated utility methods are a possible
|
|
10363
|
+
// future convenience, not planned work.
|
|
10362
10364
|
/**
|
|
10363
10365
|
* Emit tool start event with execution tracking
|
|
10364
10366
|
* @param toolName - Name of the tool being executed
|
|
@@ -10480,8 +10482,9 @@ Current user's request: ${currentInput}`;
|
|
|
10480
10482
|
clearCurrentStreamExecutions() {
|
|
10481
10483
|
this.currentStreamToolExecutions = [];
|
|
10482
10484
|
}
|
|
10483
|
-
//
|
|
10484
|
-
//
|
|
10485
|
+
// Speculative, not a gap: the same structured events a
|
|
10486
|
+
// getToolExecutionEvents() method would return are already available via
|
|
10487
|
+
// StreamResult.toolEvents.
|
|
10485
10488
|
// ========================================
|
|
10486
10489
|
// Tool Registration API
|
|
10487
10490
|
// ========================================
|
|
@@ -177,8 +177,8 @@ export class ChunkerFactory extends BaseFactory {
|
|
|
177
177
|
}, DEFAULT_CHUNKER_METADATA.latex);
|
|
178
178
|
// Register semantic chunker (placeholder - uses recursive as fallback)
|
|
179
179
|
this.registerChunker("semantic", async (config) => {
|
|
180
|
-
//
|
|
181
|
-
//
|
|
180
|
+
// Intentional fallback, not a gap: no dedicated SemanticChunker
|
|
181
|
+
// exists yet, so this uses RecursiveChunker with semantic defaults.
|
|
182
182
|
const { RecursiveChunker } = await import("./chunkers/RecursiveChunker.js");
|
|
183
183
|
return new RecursiveChunker(config);
|
|
184
184
|
}, DEFAULT_CHUNKER_METADATA.semantic);
|
|
@@ -367,8 +367,8 @@ export declare function hasJudge(config: WorkflowConfig): boolean;
|
|
|
367
367
|
*/
|
|
368
368
|
export declare function getAllJudges(config: WorkflowConfig): JudgeConfig[];
|
|
369
369
|
/**
|
|
370
|
-
* Calculate estimated workflow cost (placeholder)
|
|
371
|
-
*
|
|
370
|
+
* Calculate estimated workflow cost (placeholder). Provider-specific
|
|
371
|
+
* pricing is a possible future direction, not planned work.
|
|
372
372
|
* @param config - Workflow configuration
|
|
373
373
|
* @param estimatedTokens - Estimated number of tokens for the request
|
|
374
374
|
* @returns Estimated cost in USD
|
package/dist/workflow/config.js
CHANGED
|
@@ -382,8 +382,8 @@ export function getAllJudges(config) {
|
|
|
382
382
|
return [];
|
|
383
383
|
}
|
|
384
384
|
/**
|
|
385
|
-
* Calculate estimated workflow cost (placeholder)
|
|
386
|
-
*
|
|
385
|
+
* Calculate estimated workflow cost (placeholder). Provider-specific
|
|
386
|
+
* pricing is a possible future direction, not planned work.
|
|
387
387
|
* @param config - Workflow configuration
|
|
388
388
|
* @param estimatedTokens - Estimated number of tokens for the request
|
|
389
389
|
* @returns Estimated cost in USD
|
|
@@ -9,8 +9,8 @@ const functionTag = "WorkflowRegistry";
|
|
|
9
9
|
// REGISTRY STORAGE
|
|
10
10
|
// ============================================================================
|
|
11
11
|
/**
|
|
12
|
-
* In-memory workflow registry
|
|
13
|
-
*
|
|
12
|
+
* In-memory workflow registry. Persistent storage is a possible future
|
|
13
|
+
* direction, not planned work.
|
|
14
14
|
*/
|
|
15
15
|
const workflowRegistry = new Map();
|
|
16
16
|
// ============================================================================
|
|
@@ -158,7 +158,7 @@ export async function runWorkflow(config, options) {
|
|
|
158
158
|
totalInputTokens: calculateInputTokens(ensembleResult.responses),
|
|
159
159
|
totalOutputTokens: calculateOutputTokens(ensembleResult.responses),
|
|
160
160
|
totalTokens: calculateTotalTokens(ensembleResult.responses),
|
|
161
|
-
byModel: [], //
|
|
161
|
+
byModel: [], // Placeholder — not populated yet
|
|
162
162
|
},
|
|
163
163
|
// Additional metadata
|
|
164
164
|
metadata: options.metadata,
|
|
@@ -45,8 +45,8 @@ export declare function calculateModelMetrics(responses: EnsembleResponse[]): Re
|
|
|
45
45
|
}>;
|
|
46
46
|
/**
|
|
47
47
|
* Calculate consensus level between responses
|
|
48
|
-
* NOTE: Placeholder implementation - uses response length similarity
|
|
49
|
-
*
|
|
48
|
+
* NOTE: Placeholder implementation - uses response length similarity.
|
|
49
|
+
* Semantic similarity is a possible future direction, not planned work.
|
|
50
50
|
*/
|
|
51
51
|
export declare function calculateConsensus(responses: EnsembleResponse[]): number;
|
|
52
52
|
/**
|
|
@@ -158,8 +158,8 @@ export function calculateModelMetrics(responses) {
|
|
|
158
158
|
}
|
|
159
159
|
/**
|
|
160
160
|
* Calculate consensus level between responses
|
|
161
|
-
* NOTE: Placeholder implementation - uses response length similarity
|
|
162
|
-
*
|
|
161
|
+
* NOTE: Placeholder implementation - uses response length similarity.
|
|
162
|
+
* Semantic similarity is a possible future direction, not planned work.
|
|
163
163
|
*/
|
|
164
164
|
export function calculateConsensus(responses) {
|
|
165
165
|
const successful = responses.filter((r) => r.status === "success");
|
|
@@ -3506,7 +3506,7 @@
|
|
|
3506
3506
|
{"objectID":"062ba86ed5fa937d989ef36219f6bc4d2673654750f6c4fbfee623527282bc03","title":"From Previous Implementations","url":"/docs/features/guardrails-implementation#from-previous-implementations","content":"If upgrading from older guardrail implementations:\nUpdate configuration format to new interfaces\nReplace deprecated methods with new utility functions\nTest evaluation thresholds and adjust as needed\nUpdate error handling to use new patterns","hierarchy":{"lvl0":"Features","lvl1":"Guardrails Implementation Guide","lvl2":"From Previous Implementations","lvl3":""}},
|
|
3507
3507
|
{"objectID":"1d4cfe18f157b91540119afedbf464d626c2c320e56551b69d5b3f853541e3c4","title":"Breaking Changes","url":"/docs/features/guardrails-implementation#breaking-changes","content":"Configuration structure has been updated for better organization\nSome utility function signatures have changed\nError handling patterns have been improved","hierarchy":{"lvl0":"Features","lvl1":"Guardrails Implementation Guide","lvl2":"Breaking Changes","lvl3":""}},
|
|
3508
3508
|
{"objectID":"214fe14d9f320f468b5ed10d5b5cf315a7aa2a0fcb1a32598f42a622570e177d","title":"Conclusion","url":"/docs/features/guardrails-implementation#conclusion","content":"The NeuroLink guardrails implementation provides comprehensive content safety and filtering capabilities with:\n✅ AI-powered pre-call evaluation\n✅ Flexible content filtering options\n✅ Configurable response actions\n✅ Visual proof and demonstrations\n✅ High performance and scalability\n✅ Comprehensive error handling\n✅ TypeScript support throughout\n\nFor additional support or questions, refer to the main NeuroLink documentation or create an issue in the repository.","hierarchy":{"lvl0":"Features","lvl1":"Guardrails Implementation Guide","lvl2":"Conclusion","lvl3":""}},
|
|
3509
|
-
{"objectID":"540c47bd7c6e059a9673d6acb056728c913d14a87db9e96c85e9ad17847af52d","title":"Guardrails Middleware","url":"/docs/features/guardrails","content":"Guardrails Middleware\n\nSince: v7.42.0 | Status: Stable | Availability: SDK (CLI + SDK)\n\nOverview\n\nWhat it does: Guardrails middleware provides real-time content filtering and policy enforcement for AI model outputs, blocking profanity, PII, unsafe content, and custom-defined terms.\n\nWhy use it: Protect your application from generating harmful, inappropriate, or non-compliant content. Ensures AI responses meet safety standards and regulatory requirements.\n\nCommon use cases:\nContent moderation for user-facing applications\nPII (Personally Identifiable Information) redaction\nProfanity filtering for family-friendly apps\nCompliance with industry regulations (COPPA, GDPR, etc.)\nBrand safety and reputation management\n\nQuick Start\n\nGuardrails work out of the box with the security preset. No custom configuration required for basic content filtering.\n\nSDK Example with Security Preset\nEnables guardrails middleware with default configuration\nPass middleware on every call that should be filtered; the NeuroLink constructor does not take this option\nContent is already filtered - safe to display to users\n\nCustom Guardrails Configuration\nMaster switch for guardrails middleware\nEnable keyword-based filtering (fast, regex-based)\nCustom terms to filter/redact from outputs\nEnable AI-powered content safety check (slower, more accurate)\nUse fast, cheap model for safety evaluation\n\nCLI Usage\n\nConfiguration\n\n| Option | Type | Default | Required | Description |\n| ------------------------- | ---------- | ------- | -------- | ------------------------------------ |\n| enabled | boolean | true | No | Enable/disable guardrails middleware |\n| badWords.enabled | boolean | false | No | Enable keyword-based filtering |\n| badWords.list | string[] | [] | No | List of terms to filter/redact |\n| modelFilter.enabled | boolean | false | No | Enable AI-based content safety check |\n| modelFilter.filterModel | string | - | No | Model to use for safety evaluation |\n\nEnvironment Variables\n\nConfig File\n\nHow It Works\n\nFiltering Pipeline\nUser prompt → Sent to AI model\nAI generates response → Initial content created\nGuardrails middleware intercepts:\nBad word filtering: Regex-based term replacement\nModel-based filtering: AI evaluates content safety\nFiltered response → Delivered to user\n\nBad Word Filtering\n\nSimple regex-based replacement:\nCase-insensitive matching\nReplaces with
|
|
3509
|
+
{"objectID":"540c47bd7c6e059a9673d6acb056728c913d14a87db9e96c85e9ad17847af52d","title":"Guardrails Middleware","url":"/docs/features/guardrails","content":"Guardrails Middleware\n\nSince: v7.42.0 | Status: Stable | Availability: SDK (CLI + SDK)\n\nOverview\n\nWhat it does: Guardrails middleware provides real-time content filtering and policy enforcement for AI model outputs, blocking profanity, PII, unsafe content, and custom-defined terms.\n\nWhy use it: Protect your application from generating harmful, inappropriate, or non-compliant content. Ensures AI responses meet safety standards and regulatory requirements.\n\nCommon use cases:\nContent moderation for user-facing applications\nPII (Personally Identifiable Information) redaction\nProfanity filtering for family-friendly apps\nCompliance with industry regulations (COPPA, GDPR, etc.)\nBrand safety and reputation management\n\nQuick Start\n\nGuardrails work out of the box with the security preset. No custom configuration required for basic content filtering.\n\nSDK Example with Security Preset\nEnables guardrails middleware with default configuration\nPass middleware on every call that should be filtered; the NeuroLink constructor does not take this option\nContent is already filtered - safe to display to users\n\nCustom Guardrails Configuration\nMaster switch for guardrails middleware\nEnable keyword-based filtering (fast, regex-based)\nCustom terms to filter/redact from outputs\nEnable AI-powered content safety check (slower, more accurate)\nUse fast, cheap model for safety evaluation\n\nCLI Usage\n\nConfiguration\n\n| Option | Type | Default | Required | Description |\n| ------------------------- | ---------- | ------- | -------- | ------------------------------------ |\n| enabled | boolean | true | No | Enable/disable guardrails middleware |\n| badWords.enabled | boolean | false | No | Enable keyword-based filtering |\n| badWords.list | string[] | [] | No | List of terms to filter/redact |\n| modelFilter.enabled | boolean | false | No | Enable AI-based content safety check |\n| modelFilter.filterModel | string | - | No | Model to use for safety evaluation |\n\nEnvironment Variables\n\nConfig File\n\nHow It Works\n\nFiltering Pipeline\nUser prompt → Sent to AI model\nAI generates response → Initial content created\nGuardrails middleware intercepts:\nBad word filtering: Regex-based term replacement\nModel-based filtering: AI evaluates content safety\nFiltered response → Delivered to user\n\nBad Word Filtering\n\nSimple regex-based replacement:\nCase-insensitive matching\nReplaces each match with a fixed string, [REDACTED] by default (not length-preserving asterisks) — override it with badWords.replacementText\nWorks in both generate and stream modes\n\nModel-Based Filtering\n\nWhile guardrails filter common PII patterns, always review critical outputs manually. False negatives can occur with obfuscated data or uncommon PII formats. For high-stakes compliance, combine with dedicated PII detection services.\n\nAI-powered safety check:\nUses separate, lightweight model (e.g., gpt-4o-mini)\nBinary safe/unsafe classification\nFull redaction on unsafe detection\n\nAdvanced Usage\n\nCombining with Other Middleware\n\nStreaming with Guardrails\n\nDynamic Guardrails\n\nAPI Reference\n\nMiddleware Configuration\npreset: \"security\" → Enables guardrails with defaults\npreset: \"all\" → Enables guardrails + all other middleware\nmiddlewareConfig.guardrails → Custom guardrails configuration\n\nSee guardrails-ai-integration.md for complete integration guide.\n\nTroubleshooting\n\nProblem: Guardrails not filtering content\n\nCause: Middleware not enabled or preset not configured\nSolution:\n\nProblem: Too many false positives (legitimate content filtered)\n\nCause: Overly aggressive bad word list\nSolution:\n\nProblem: Model-based filter is slow\n\nCause: Using large/expensive model for filtering\nSolution:\n\nProblem: Guardrails not working in streaming mode\n\nCause: Streaming guardrails only support bad word filtering (not model-based)\nSolution:\n\nBest Practices\n\nContent Filtering Strategy\nStart with presets - Use preset: \"security\" as baseline\nLayer protections - Combine bad words + model filtering\nUse lightweight filter models - gpt-4o-mini for speed\nTest thoroughly - Verify filtering doesn't break legitimate content\nMonitor and iterate - Track false positives/negatives\n\nBad Word List Curation\n\n✅ Do:\nInclude specific harmful terms\nUse exact phrases, not single characters\nRegularly update based on user reports\nConsider context-specific terms for your domain\n\n❌ Don't:\nAdd common English words (high false positive rate)\nInclude single letters or short words\nRely solely on bad words (use model filter too)\n\nPerformance Optimization\n\nCompliance Use Cases\n\nCOPPA (Children's Online Privacy)\n\nGDPR Data Protection\n\nRelated Features\nHITL Workflows - User approval for risky actions\nMiddleware Architecture - Custom middleware development\nAnalytics Integration - Track filtered content metrics\n\nMigration Notes\n\nIf upgrading from versions before v7.42.0:\nGuardrails are now enabled via middleware pres","hierarchy":{"lvl0":"Features","lvl1":"Guardrails Middleware","lvl2":"","lvl3":""}},
|
|
3510
3510
|
{"objectID":"ad4c8c0e011c259d8f444afec90c94a3c939d9f14e65491e8044a8417430b54c","title":"Guardrails Middleware","url":"/docs/features/guardrails#guardrails-middleware","content":"Since: v7.42.0 | Status: Stable | Availability: SDK (CLI + SDK)","hierarchy":{"lvl0":"Features","lvl1":"Guardrails Middleware","lvl2":"Guardrails Middleware","lvl3":""}},
|
|
3511
3511
|
{"objectID":"1ecba9f0cdb3586cf8ad53bba31fb80cabab7aed2aba88050b4f98078dd2bec9","title":"Overview","url":"/docs/features/guardrails#overview","content":"What it does: Guardrails middleware provides real-time content filtering and policy enforcement for AI model outputs, blocking profanity, PII, unsafe content, and custom-defined terms.\n\nWhy use it: Protect your application from generating harmful, inappropriate, or non-compliant content. Ensures AI responses meet safety standards and regulatory requirements.\n\nCommon use cases:\nContent moderation for user-facing applications\nPII (Personally Identifiable Information) redaction\nProfanity filtering for family-friendly apps\nCompliance with industry regulations (COPPA, GDPR, etc.)\nBrand safety and reputation management","hierarchy":{"lvl0":"Features","lvl1":"Guardrails Middleware","lvl2":"Overview","lvl3":""}},
|
|
3512
3512
|
{"objectID":"064824951ceeb2f827852673ce43e1d5b0a4776cda59dec766413ea3ea1a41ae","title":"Quick Start","url":"/docs/features/guardrails#quick-start","content":"Guardrails work out of the box with the security preset. No custom configuration required for basic content filtering.","hierarchy":{"lvl0":"Features","lvl1":"Guardrails Middleware","lvl2":"Quick Start","lvl3":""}},
|
|
@@ -3519,7 +3519,7 @@
|
|
|
3519
3519
|
{"objectID":"2406e4412d40d6ab610c334f551ae73529304f50a559b6fdf180d616d7536174","title":"Environment Variables","url":"/docs/features/guardrails#environment-variables","content":"`bash","hierarchy":{"lvl0":"Features","lvl1":"Guardrails Middleware","lvl2":"Environment Variables","lvl3":""}},
|
|
3520
3520
|
{"objectID":"946b41af2f888ce1a40149ea8123d2c4584292d7a22fe88549f0b7c23671f951","title":"Or enable all middleware (includes guardrails + analytics)","url":"/docs/features/guardrails#or-enable-all-middleware-includes-guardrails-analytics","content":"`","hierarchy":{"lvl0":"Features","lvl1":"Guardrails Middleware","lvl2":"Or enable all middleware (includes guardrails + analytics)","lvl3":""}},
|
|
3521
3521
|
{"objectID":"70cbcd4ca56befe769c6ddb6128a5ab280c75a48edc8e9b4141dfce607bc2c1e","title":"Filtering Pipeline","url":"/docs/features/guardrails#filtering-pipeline","content":"User prompt → Sent to AI model\nAI generates response → Initial content created\nGuardrails middleware intercepts:\nBad word filtering: Regex-based term replacement\nModel-based filtering: AI evaluates content safety\nFiltered response → Delivered to user","hierarchy":{"lvl0":"Features","lvl1":"Guardrails Middleware","lvl2":"Filtering Pipeline","lvl3":""}},
|
|
3522
|
-
{"objectID":"3af7a22581a93723a5045560d7c0026a6fc3f1bca903dd47c28e0dfa5707e350","title":"Bad Word Filtering","url":"/docs/features/guardrails#bad-word-filtering","content":"Simple regex-based replacement:\nCase-insensitive matching\nReplaces with
|
|
3522
|
+
{"objectID":"3af7a22581a93723a5045560d7c0026a6fc3f1bca903dd47c28e0dfa5707e350","title":"Bad Word Filtering","url":"/docs/features/guardrails#bad-word-filtering","content":"Simple regex-based replacement:\nCase-insensitive matching\nReplaces each match with a fixed string, [REDACTED] by default (not length-preserving asterisks) — override it with badWords.replacementText\nWorks in both generate and stream modes","hierarchy":{"lvl0":"Features","lvl1":"Guardrails Middleware","lvl2":"Bad Word Filtering","lvl3":""}},
|
|
3523
3523
|
{"objectID":"5c5b50314493905262b204dbb73bacc7c6ab8a60fa3124469df9e6c1706e47a5","title":"Model-Based Filtering","url":"/docs/features/guardrails#model-based-filtering","content":"While guardrails filter common PII patterns, always review critical outputs manually. False negatives can occur with obfuscated data or uncommon PII formats. For high-stakes compliance, combine with dedicated PII detection services.\n\nAI-powered safety check:\nUses separate, lightweight model (e.g., gpt-4o-mini)\nBinary safe/unsafe classification\nFull redaction on unsafe detection","hierarchy":{"lvl0":"Features","lvl1":"Guardrails Middleware","lvl2":"Model-Based Filtering","lvl3":""}},
|
|
3524
3524
|
{"objectID":"dbfe7ff9f27039591c8f98fc3b03c705f22f7b36b689e5f0de95241ae3fb71ee","title":"Middleware Configuration","url":"/docs/features/guardrails#middleware-configuration","content":"preset: \"security\" → Enables guardrails with defaults\npreset: \"all\" → Enables guardrails + all other middleware\nmiddlewareConfig.guardrails → Custom guardrails configuration\n\nSee guardrails-ai-integration.md for complete integration guide.","hierarchy":{"lvl0":"Features","lvl1":"Guardrails Middleware","lvl2":"Middleware Configuration","lvl3":""}},
|
|
3525
3525
|
{"objectID":"85995a92035eb64e3e92878f16c818aa6b02432dfcdf8a2c1b7d0ec93efb0ceb","title":"Problem: Guardrails not filtering content","url":"/docs/features/guardrails#problem-guardrails-not-filtering-content","content":"Cause: Middleware not enabled or preset not configured\nSolution:","hierarchy":{"lvl0":"Features","lvl1":"Guardrails Middleware","lvl2":"Problem: Guardrails not filtering content","lvl3":""}},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@juspay/neurolink",
|
|
3
|
-
"version": "12.49.
|
|
3
|
+
"version": "12.49.13",
|
|
4
4
|
"packageManager": "pnpm@10.15.1",
|
|
5
5
|
"description": "The pipe layer of an AI nervous system: one interface connecting provider neurons to your application, across three inference types — generate, stream and decide. `decide` returns typed, calibrated judgements from a non-generative model (~400ms, ~$0.00002/call) for routing, tool selection and context budgeting. MCP-native (4 transports), voice TTS/STT/realtime, RAG, agents, memory, compaction, 9 observability exporters. OpenAI · Anthropic · Gemini · Bedrock · Azure · Ollama · TypeSafe Jev and more.",
|
|
6
6
|
"author": {
|
|
@@ -537,7 +537,7 @@
|
|
|
537
537
|
"livekit-server-sdk": "^2.15.4",
|
|
538
538
|
"mammoth": "1.12.0",
|
|
539
539
|
"mediabunny": "^1.40.1",
|
|
540
|
-
"music-metadata": "^11.
|
|
540
|
+
"music-metadata": "^11.16.1",
|
|
541
541
|
"pdf-parse": "^2.4.5",
|
|
542
542
|
"pptxgenjs": "^4.0.1",
|
|
543
543
|
"sharp": "^0.35.3"
|
|
@@ -686,6 +686,7 @@
|
|
|
686
686
|
"@eslint/plugin-kit@<0.3.4": ">=0.3.4",
|
|
687
687
|
"tmp@<0.2.6": ">=0.2.6",
|
|
688
688
|
"axios@<1.13.5": ">=1.13.5",
|
|
689
|
+
"handlebars@<=4.7.9": ">=4.7.10",
|
|
689
690
|
"glob@>=10.3.7 <=11.0.3": ">=11.1.0",
|
|
690
691
|
"@semantic-release/npm": "^13.1.4",
|
|
691
692
|
"@opentelemetry/sdk-trace-base": "^2.6.0",
|