@juspay/neurolink
Version:
Universal AI Development Platform with working MCP integration, multi-provider support, voice (TTS/STT/realtime), and professional CLI. 58+ external MCP servers discoverable, multimodal file processing, RAG pipelines. Build, test, and deploy AI applicatio
78 lines (77 loc) • 2.58 kB
TypeScript
/**
* @file Base class for all rule-based scorers
* Provides common functionality for rule evaluation
*/
import type { RuleResult, RuleScorer, RuleScorerConfig, ScoreResult, ScorerInput, ScorerMetadata, ScorerRule } from "../../../types/index.js";
import { BaseScorer } from "../baseScorer.js";
/**
* Default rule scorer configuration
*/
export declare const DEFAULT_RULE_SCORER_CONFIG: RuleScorerConfig;
/**
* Abstract base class for rule-based scorers
*/
export declare abstract class BaseRuleScorer extends BaseScorer implements RuleScorer {
protected _ruleConfig: RuleScorerConfig;
constructor(metadata: ScorerMetadata, config?: RuleScorerConfig);
/**
* Get rule-specific configuration
*/
get ruleConfig(): RuleScorerConfig;
/**
* Get all rules for this scorer - must be implemented by subclasses
*/
abstract getRules(): ScorerRule[];
/**
* Evaluate a single rule - must be implemented by subclasses
*/
abstract evaluateRule(rule: ScorerRule, input: ScorerInput): {
passed: boolean;
score: number;
};
/**
* Main scoring method
*/
score(input: ScorerInput): Promise<ScoreResult>;
/**
* Combine rule results based on configuration
*/
protected combineRuleResults(results: RuleResult[], rules: ScorerRule[]): number;
/**
* Generate reasoning from rule results
*/
protected generateReasoning(results: Array<{
rule: ScorerRule;
result: {
passed: boolean;
score: number;
};
}>): string;
/**
* Helper: Check if text matches a regex pattern
*/
protected matchesRegex(text: string, pattern: string, flags?: string): boolean;
/**
* Helper: Check if text contains keyword with word boundaries
*/
protected containsKeyword(text: string, keyword: string, caseInsensitive?: boolean): boolean;
/**
* Helper: Count occurrences of a pattern
*/
protected countOccurrences(text: string, pattern: string, caseInsensitive?: boolean): number;
/**
* Helper: Get word count
*/
protected getWordCount(text: string): number;
/**
* Helper: Get character count (excluding whitespace)
*/
protected getCharacterCount(text: string, includeWhitespace?: boolean): number;
/**
* Helper: Check text length is within bounds
*/
protected isWithinLengthBounds(text: string, minWords?: number, maxWords?: number, minChars?: number, maxChars?: number): {
passed: boolean;
reason: string;
};
}