@juspay/neurolink 12.49.12 → 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.12](https://github.com/juspay/neurolink/compare/v12.49.11...v12.49.12) (2026-10-09)
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
- - **(deps):** raise the music-metadata floor past five new moderate advisories ([86175f2](https://github.com/juspay/neurolink/commit/86175f27abe75dd5bfd2d94ba493457628e852da))
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");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juspay/neurolink",
3
- "version": "12.49.12",
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": {
@@ -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",