route-claudecode
Version:
Advanced routing and transformation system for Claude Code outputs to multiple AI providers
81 lines • 2.3 kB
TypeScript
/**
* Max Tokens中间件 - 集成到请求处理流程
* Project Owner: Jason Zhang
*
* 职责:
* 1. 预处理检查:发送前验证token使用
* 2. 错误拦截:捕获max_tokens错误并智能处理
* 3. 用户反馈:提供清晰的处理状态和选择
* 4. 安全控制:防止无限重试和上下文丢失
*/
import { BaseRequest } from '@/types';
export interface MaxTokensMiddlewareOptions {
enablePreflightCheck: boolean;
enableAutoRetry: boolean;
maxRetryAttempts: number;
userInteractionMode: 'auto' | 'prompt' | 'disabled';
tokenSafetyMargin: number;
}
export interface MiddlewareResult {
action: 'proceed' | 'modified' | 'error' | 'user_required';
request?: BaseRequest;
error?: any;
userPrompt?: {
message: string;
options: string[];
defaultAction: string;
};
metadata?: {
tokensEstimated: number;
tokensReduced?: number;
truncationApplied: boolean;
retryAttempt: number;
};
}
export declare class MaxTokensMiddleware {
private safeHandler;
private options;
private processingRequests;
constructor(options?: Partial<MaxTokensMiddlewareOptions>);
/**
* 预处理请求 - 在发送到Provider前检查
*/
preprocessRequest(request: BaseRequest, maxTokens: number, requestId: string): Promise<MiddlewareResult>;
/**
* 后处理响应 - 处理max_tokens错误
*/
postprocessResponse(originalRequest: BaseRequest, response: any, error: any, requestId: string): Promise<MiddlewareResult>;
/**
* 处理SafeHandler的结果
*/
private processHandlingResult;
/**
* 检查是否是max_tokens错误
*/
private isMaxTokensError;
/**
* 创建用户友好的错误
*/
private createUserFriendlyError;
/**
* 估算token数量
*/
private estimateTokens;
/**
* 清理处理状态
*/
cleanup(): void;
/**
* 获取统计信息
*/
getStats(): {
activeRequests: number;
safeHandlerStats: {
activeRetries: number;
totalRequestsHandled: number;
averageRetryRate: number;
};
};
}
export default MaxTokensMiddleware;
//# sourceMappingURL=max-tokens-middleware.d.ts.map