@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 CHANGED
@@ -1,8 +1,8 @@
1
- ## [12.49.11](https://github.com/juspay/neurolink/compare/v12.49.10...v12.49.11) (2026-10-08)
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
- - **(catalog):** resolve per-model tool support instead of always defaulting to true ([c854b99](https://github.com/juspay/neurolink/commit/c854b99a66ec5abeb77323e84e45e7e0a6dd3bb6))
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(#1576): Implement global level middlewares that can be used
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(#1576): Implement global level middlewares that can be used
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(#1576): Implement global level middlewares that can be used
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(#1576): Implement full JSON Schema validation
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
  }
@@ -272,7 +272,7 @@ export class MCPRegistryClient extends EventEmitter {
272
272
  if (wellKnown) {
273
273
  return wellKnown;
274
274
  }
275
- // TODO(#1576): Fetch from remote registry
275
+ // TODO(#1956): Fetch from remote registry
276
276
  return undefined;
277
277
  }
278
278
  /**
@@ -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(#1576): Add blocking for overly complex or long patterns
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
- // TODO(#1576): Add ToolExecutionEvent utility methods in future version
10361
- // Will provide structured event format for consistent tool event processing
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
- // TODO(#1576): Add getToolExecutionEvents() method in future version
10484
- // Will return properly formatted ToolExecutionEvent objects for structured event processing
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
- // TODO(#1576): Implement dedicated SemanticChunker with LLM support
181
- // For now, fall back to RecursiveChunker with semantic defaults
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
- * TODO(#1576): Implement actual provider-specific pricing
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
@@ -382,8 +382,8 @@ export function getAllJudges(config) {
382
382
  return [];
383
383
  }
384
384
  /**
385
- * Calculate estimated workflow cost (placeholder)
386
- * TODO(#1576): Implement actual provider-specific pricing
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
- * TODO(#1576): Consider persistent storage in future phases
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: [], // TODO(#1576): Populate per-model breakdown
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
- * TODO(#1576): Implement semantic similarity in Phase 2
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
- * TODO(#1576): Implement semantic similarity in Phase 2
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 asterisks (*) of equal length\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 presets\nOld guardrailsConfig option deprecated - use middlewareConfig.guardrails\nNo breaking changes ","hierarchy":{"lvl0":"Features","lvl1":"Guardrails Middleware","lvl2":"","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 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 asterisks (*) of equal length\nWorks in both generate and stream modes","hierarchy":{"lvl0":"Features","lvl1":"Guardrails Middleware","lvl2":"Bad Word Filtering","lvl3":""}},
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.11",
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.11.2",
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",