@juspay/neurolink 9.76.0 → 9.77.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/browser/neurolink.min.js +341 -341
- package/dist/index.d.ts +30 -0
- package/dist/index.js +33 -0
- package/dist/lib/index.d.ts +30 -0
- package/dist/lib/index.js +33 -0
- package/dist/lib/neurolink.d.ts +21 -0
- package/dist/lib/neurolink.js +367 -90
- package/dist/lib/routing/index.d.ts +7 -0
- package/dist/lib/routing/index.js +8 -0
- package/dist/lib/routing/modelPool.d.ts +83 -0
- package/dist/lib/routing/modelPool.js +243 -0
- package/dist/lib/routing/requestRouter.d.ts +30 -0
- package/dist/lib/routing/requestRouter.js +81 -0
- package/dist/lib/types/config.d.ts +18 -0
- package/dist/lib/types/index.d.ts +2 -0
- package/dist/lib/types/index.js +4 -0
- package/dist/lib/types/modelPool.d.ts +47 -0
- package/dist/lib/types/modelPool.js +11 -0
- package/dist/lib/types/requestRouter.d.ts +75 -0
- package/dist/lib/types/requestRouter.js +16 -0
- package/dist/lib/utils/providerErrorClassification.d.ts +24 -0
- package/dist/lib/utils/providerErrorClassification.js +89 -0
- package/dist/neurolink.d.ts +21 -0
- package/dist/neurolink.js +367 -90
- package/dist/routing/index.d.ts +7 -0
- package/dist/routing/index.js +7 -0
- package/dist/routing/modelPool.d.ts +83 -0
- package/dist/routing/modelPool.js +242 -0
- package/dist/routing/requestRouter.d.ts +30 -0
- package/dist/routing/requestRouter.js +80 -0
- package/dist/types/config.d.ts +18 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +4 -0
- package/dist/types/modelPool.d.ts +47 -0
- package/dist/types/modelPool.js +10 -0
- package/dist/types/requestRouter.d.ts +75 -0
- package/dist/types/requestRouter.js +15 -0
- package/dist/utils/providerErrorClassification.d.ts +24 -0
- package/dist/utils/providerErrorClassification.js +88 -0
- package/package.json +4 -2
package/dist/index.d.ts
CHANGED
|
@@ -337,6 +337,36 @@ export { BALANCED_ADAPTIVE_WORKFLOW, createAdaptiveWorkflow, QUALITY_MAX_WORKFLO
|
|
|
337
337
|
export { CONSENSUS_3_FAST_WORKFLOW, CONSENSUS_3_WORKFLOW, createConsensus3WithPrompt, } from "./workflow/workflows/consensusWorkflow.js";
|
|
338
338
|
export { AGGRESSIVE_FALLBACK_WORKFLOW, FAST_FALLBACK_WORKFLOW, } from "./workflow/workflows/fallbackWorkflow.js";
|
|
339
339
|
export { createMultiJudgeWorkflow, MULTI_JUDGE_3_WORKFLOW, MULTI_JUDGE_5_WORKFLOW, } from "./workflow/workflows/multiJudgeWorkflow.js";
|
|
340
|
+
/**
|
|
341
|
+
* ModelPool and RequestRouter — opt-in multi-provider failover with
|
|
342
|
+
* error-class-aware cooldown, and a pluggable pre-call provider/model router.
|
|
343
|
+
*
|
|
344
|
+
* @example ModelPool
|
|
345
|
+
* ```typescript
|
|
346
|
+
* import { ModelPool, classifyProviderError } from '@juspay/neurolink';
|
|
347
|
+
*
|
|
348
|
+
* const pool = new ModelPool({
|
|
349
|
+
* members: [
|
|
350
|
+
* { provider: 'anthropic', model: 'claude-sonnet-4-5' },
|
|
351
|
+
* { provider: 'vertex', model: 'gemini-2.5-flash' },
|
|
352
|
+
* ],
|
|
353
|
+
* strategy: 'priority',
|
|
354
|
+
* cooldownMs: 30_000,
|
|
355
|
+
* });
|
|
356
|
+
* ```
|
|
357
|
+
*
|
|
358
|
+
* @example RequestRouter
|
|
359
|
+
* ```typescript
|
|
360
|
+
* import { createDefaultRequestRouter } from '@juspay/neurolink';
|
|
361
|
+
*
|
|
362
|
+
* const router = createDefaultRequestRouter({
|
|
363
|
+
* visionTier: { provider: 'vertex', model: 'gemini-2.5-pro' },
|
|
364
|
+
* largeTier: { provider: 'anthropic', model: 'claude-opus-4-5' },
|
|
365
|
+
* smallTier: { provider: 'anthropic', model: 'claude-haiku-3-5' },
|
|
366
|
+
* });
|
|
367
|
+
* ```
|
|
368
|
+
*/
|
|
369
|
+
export { classifyProviderError, ModelPool, createDefaultRequestRouter, } from "./routing/index.js";
|
|
340
370
|
/**
|
|
341
371
|
* Server Adapters for exposing NeuroLink as HTTP APIs
|
|
342
372
|
*
|
package/dist/index.js
CHANGED
|
@@ -541,6 +541,39 @@ export { AGGRESSIVE_FALLBACK_WORKFLOW, FAST_FALLBACK_WORKFLOW, } from "./workflo
|
|
|
541
541
|
// Pre-built workflows - Multi-judge
|
|
542
542
|
export { createMultiJudgeWorkflow, MULTI_JUDGE_3_WORKFLOW, MULTI_JUDGE_5_WORKFLOW, } from "./workflow/workflows/multiJudgeWorkflow.js";
|
|
543
543
|
// ============================================================================
|
|
544
|
+
// MODEL POOL & REQUEST ROUTER - Pluggable pre-call routing + failover
|
|
545
|
+
// ============================================================================
|
|
546
|
+
/**
|
|
547
|
+
* ModelPool and RequestRouter — opt-in multi-provider failover with
|
|
548
|
+
* error-class-aware cooldown, and a pluggable pre-call provider/model router.
|
|
549
|
+
*
|
|
550
|
+
* @example ModelPool
|
|
551
|
+
* ```typescript
|
|
552
|
+
* import { ModelPool, classifyProviderError } from '@juspay/neurolink';
|
|
553
|
+
*
|
|
554
|
+
* const pool = new ModelPool({
|
|
555
|
+
* members: [
|
|
556
|
+
* { provider: 'anthropic', model: 'claude-sonnet-4-5' },
|
|
557
|
+
* { provider: 'vertex', model: 'gemini-2.5-flash' },
|
|
558
|
+
* ],
|
|
559
|
+
* strategy: 'priority',
|
|
560
|
+
* cooldownMs: 30_000,
|
|
561
|
+
* });
|
|
562
|
+
* ```
|
|
563
|
+
*
|
|
564
|
+
* @example RequestRouter
|
|
565
|
+
* ```typescript
|
|
566
|
+
* import { createDefaultRequestRouter } from '@juspay/neurolink';
|
|
567
|
+
*
|
|
568
|
+
* const router = createDefaultRequestRouter({
|
|
569
|
+
* visionTier: { provider: 'vertex', model: 'gemini-2.5-pro' },
|
|
570
|
+
* largeTier: { provider: 'anthropic', model: 'claude-opus-4-5' },
|
|
571
|
+
* smallTier: { provider: 'anthropic', model: 'claude-haiku-3-5' },
|
|
572
|
+
* });
|
|
573
|
+
* ```
|
|
574
|
+
*/
|
|
575
|
+
export { classifyProviderError, ModelPool, createDefaultRequestRouter, } from "./routing/index.js";
|
|
576
|
+
// ============================================================================
|
|
544
577
|
// SERVER ADAPTERS - HTTP API Framework Integration
|
|
545
578
|
// ============================================================================
|
|
546
579
|
// Server Types
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -337,6 +337,36 @@ export { BALANCED_ADAPTIVE_WORKFLOW, createAdaptiveWorkflow, QUALITY_MAX_WORKFLO
|
|
|
337
337
|
export { CONSENSUS_3_FAST_WORKFLOW, CONSENSUS_3_WORKFLOW, createConsensus3WithPrompt, } from "./workflow/workflows/consensusWorkflow.js";
|
|
338
338
|
export { AGGRESSIVE_FALLBACK_WORKFLOW, FAST_FALLBACK_WORKFLOW, } from "./workflow/workflows/fallbackWorkflow.js";
|
|
339
339
|
export { createMultiJudgeWorkflow, MULTI_JUDGE_3_WORKFLOW, MULTI_JUDGE_5_WORKFLOW, } from "./workflow/workflows/multiJudgeWorkflow.js";
|
|
340
|
+
/**
|
|
341
|
+
* ModelPool and RequestRouter — opt-in multi-provider failover with
|
|
342
|
+
* error-class-aware cooldown, and a pluggable pre-call provider/model router.
|
|
343
|
+
*
|
|
344
|
+
* @example ModelPool
|
|
345
|
+
* ```typescript
|
|
346
|
+
* import { ModelPool, classifyProviderError } from '@juspay/neurolink';
|
|
347
|
+
*
|
|
348
|
+
* const pool = new ModelPool({
|
|
349
|
+
* members: [
|
|
350
|
+
* { provider: 'anthropic', model: 'claude-sonnet-4-5' },
|
|
351
|
+
* { provider: 'vertex', model: 'gemini-2.5-flash' },
|
|
352
|
+
* ],
|
|
353
|
+
* strategy: 'priority',
|
|
354
|
+
* cooldownMs: 30_000,
|
|
355
|
+
* });
|
|
356
|
+
* ```
|
|
357
|
+
*
|
|
358
|
+
* @example RequestRouter
|
|
359
|
+
* ```typescript
|
|
360
|
+
* import { createDefaultRequestRouter } from '@juspay/neurolink';
|
|
361
|
+
*
|
|
362
|
+
* const router = createDefaultRequestRouter({
|
|
363
|
+
* visionTier: { provider: 'vertex', model: 'gemini-2.5-pro' },
|
|
364
|
+
* largeTier: { provider: 'anthropic', model: 'claude-opus-4-5' },
|
|
365
|
+
* smallTier: { provider: 'anthropic', model: 'claude-haiku-3-5' },
|
|
366
|
+
* });
|
|
367
|
+
* ```
|
|
368
|
+
*/
|
|
369
|
+
export { classifyProviderError, ModelPool, createDefaultRequestRouter, } from "./routing/index.js";
|
|
340
370
|
/**
|
|
341
371
|
* Server Adapters for exposing NeuroLink as HTTP APIs
|
|
342
372
|
*
|
package/dist/lib/index.js
CHANGED
|
@@ -541,6 +541,39 @@ export { AGGRESSIVE_FALLBACK_WORKFLOW, FAST_FALLBACK_WORKFLOW, } from "./workflo
|
|
|
541
541
|
// Pre-built workflows - Multi-judge
|
|
542
542
|
export { createMultiJudgeWorkflow, MULTI_JUDGE_3_WORKFLOW, MULTI_JUDGE_5_WORKFLOW, } from "./workflow/workflows/multiJudgeWorkflow.js";
|
|
543
543
|
// ============================================================================
|
|
544
|
+
// MODEL POOL & REQUEST ROUTER - Pluggable pre-call routing + failover
|
|
545
|
+
// ============================================================================
|
|
546
|
+
/**
|
|
547
|
+
* ModelPool and RequestRouter — opt-in multi-provider failover with
|
|
548
|
+
* error-class-aware cooldown, and a pluggable pre-call provider/model router.
|
|
549
|
+
*
|
|
550
|
+
* @example ModelPool
|
|
551
|
+
* ```typescript
|
|
552
|
+
* import { ModelPool, classifyProviderError } from '@juspay/neurolink';
|
|
553
|
+
*
|
|
554
|
+
* const pool = new ModelPool({
|
|
555
|
+
* members: [
|
|
556
|
+
* { provider: 'anthropic', model: 'claude-sonnet-4-5' },
|
|
557
|
+
* { provider: 'vertex', model: 'gemini-2.5-flash' },
|
|
558
|
+
* ],
|
|
559
|
+
* strategy: 'priority',
|
|
560
|
+
* cooldownMs: 30_000,
|
|
561
|
+
* });
|
|
562
|
+
* ```
|
|
563
|
+
*
|
|
564
|
+
* @example RequestRouter
|
|
565
|
+
* ```typescript
|
|
566
|
+
* import { createDefaultRequestRouter } from '@juspay/neurolink';
|
|
567
|
+
*
|
|
568
|
+
* const router = createDefaultRequestRouter({
|
|
569
|
+
* visionTier: { provider: 'vertex', model: 'gemini-2.5-pro' },
|
|
570
|
+
* largeTier: { provider: 'anthropic', model: 'claude-opus-4-5' },
|
|
571
|
+
* smallTier: { provider: 'anthropic', model: 'claude-haiku-3-5' },
|
|
572
|
+
* });
|
|
573
|
+
* ```
|
|
574
|
+
*/
|
|
575
|
+
export { classifyProviderError, ModelPool, createDefaultRequestRouter, } from "./routing/index.js";
|
|
576
|
+
// ============================================================================
|
|
544
577
|
// SERVER ADAPTERS - HTTP API Framework Integration
|
|
545
578
|
// ============================================================================
|
|
546
579
|
// Server Types
|
package/dist/lib/neurolink.d.ts
CHANGED
|
@@ -109,6 +109,8 @@ export declare class NeuroLink {
|
|
|
109
109
|
private authInitPromise?;
|
|
110
110
|
private credentials?;
|
|
111
111
|
private readonly fallbackConfig;
|
|
112
|
+
private readonly modelPool;
|
|
113
|
+
private readonly requestRouter;
|
|
112
114
|
/**
|
|
113
115
|
* Merge instance-level credentials with per-call credentials.
|
|
114
116
|
*
|
|
@@ -612,6 +614,25 @@ export declare class NeuroLink {
|
|
|
612
614
|
private maybeHandleEarlyGenerateResult;
|
|
613
615
|
private runStandardGenerateRequest;
|
|
614
616
|
private maybeApplyGenerateOrchestration;
|
|
617
|
+
/**
|
|
618
|
+
* Applies the host-configured `requestRouter` to `options` in place.
|
|
619
|
+
*
|
|
620
|
+
* The router is skipped when:
|
|
621
|
+
* - no `requestRouter` is configured on this instance, or
|
|
622
|
+
* - the caller explicitly set both `options.provider` AND `options.model`
|
|
623
|
+
* (we only skip the router if BOTH are set; a caller setting only one
|
|
624
|
+
* still lets the router fill in the other field).
|
|
625
|
+
*
|
|
626
|
+
* Fails open: any router error is logged at WARN level and the call
|
|
627
|
+
* continues with the original options unmodified.
|
|
628
|
+
*
|
|
629
|
+
* @param options — the mutable options object (generate or stream).
|
|
630
|
+
* @param promptText — the text prompt used to build the RouterInputContext.
|
|
631
|
+
* @param hasTools — true when at least one tool is available for this call.
|
|
632
|
+
* @param requiresVision — true when the call includes image attachments.
|
|
633
|
+
* @param thinkingLevel — optional thinking level string from the call options.
|
|
634
|
+
*/
|
|
635
|
+
private applyRequestRouter;
|
|
615
636
|
private prepareGenerateAugmentations;
|
|
616
637
|
private buildGenerateTextOptions;
|
|
617
638
|
private finalizeGenerateRequestResult;
|