@entro314labs/ai-changelog-generator
Version:
AI-powered changelog generator with MCP server support - works with most providers, online and local models
1,163 lines (1,162 loc) • 32 kB
TypeScript
/**
* Model configuration and capabilities for different AI providers
* Consolidates model-specific logic that was duplicated across providers
*/
export interface ProviderBaseModelConfig {
complexModel: string;
standardModel: string;
mediumModel: string;
smallModel: string;
reasoningModel?: string;
codingModel?: string;
fallbacks: string[];
contextWindow?: number;
maxOutputTokens?: number;
extendedContext?: number;
supportsEffortParameter?: boolean;
supportsToolSearch?: boolean;
/** Model selects its own thinking depth (`thinking: { type: 'adaptive' }`). */
supportsAdaptiveThinking?: boolean;
supportsThinkingLevel?: boolean;
supportsThoughtSignatures?: boolean;
requiresAuth?: boolean;
useV1Api?: boolean;
supportsThinkingMode?: boolean;
isHub?: boolean;
detectDeployments?: boolean;
detectModels?: boolean;
supportedProviders?: string[];
defaultProvider?: string;
region?: string;
location?: string;
hubModels?: Record<string, string[]>;
commonDeployments?: string[];
}
export interface ResolvedProviderModelConfig {
complexModel: string;
standardModel: string;
mediumModel: string;
smallModel: string;
fallbacks: string[];
availableModels?: string[];
isHub?: boolean;
hubInfo?: {
supportedProviders?: string[];
defaultProvider?: string;
hubModels?: Record<string, string[]>;
commonDeployments?: string[];
};
}
/**
* Standard model configurations for each provider
* Updated January 2026 - Latest models and SDK conventions
*/
export declare const MODEL_CONFIGS: Record<string, ProviderBaseModelConfig>;
/**
* Get model configuration for a provider with config overrides
* @param {string} providerName - Name of the provider
* @param {Object} config - Configuration object with potential overrides
* @returns {Object} Model configuration with overrides applied
*/
export declare function getProviderModelConfig(providerName: string, config?: Record<string, any>, availableModels?: string[]): ResolvedProviderModelConfig;
/**
* Model capabilities database
* Defines what each model family supports
* Updated January 2026
*/
export declare const MODEL_CAPABILITIES: {
'gpt-5.6': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
coding_optimized: boolean;
context_window: number;
max_output: number;
flagship: boolean;
};
'gpt-5.5': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
context_window: number;
max_output: number;
};
'gpt-5.4': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
context_window: number;
max_output: number;
};
'gpt-5.3-codex': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
coding_optimized: boolean;
context_window: number;
};
'claude-fable-5': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
adaptive_thinking: boolean;
effort_parameter: boolean;
coding_optimized: boolean;
parallel_tool_use: boolean;
most_capable: boolean;
context_window: number;
max_output: number;
};
'claude-opus-5': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
adaptive_thinking: boolean;
effort_parameter: boolean;
coding_optimized: boolean;
parallel_tool_use: boolean;
computer_use: boolean;
context_window: number;
max_output: number;
};
'claude-sonnet-5': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
adaptive_thinking: boolean;
effort_parameter: boolean;
coding_optimized: boolean;
agentic_coding: boolean;
context_window: number;
max_output: number;
};
'claude-opus-4-8': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
adaptive_thinking: boolean;
effort_parameter: boolean;
coding_optimized: boolean;
context_window: number;
};
'claude-sonnet-4-6': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
adaptive_thinking: boolean;
effort_parameter: boolean;
context_window: number;
};
'deepseek-v4': {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
streaming: boolean;
temperature_control: boolean;
coding_optimized: boolean;
context_window: number;
};
'gpt-5.2': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
coding_optimized: boolean;
context_window: number;
max_output: number;
flagship: boolean;
};
'gpt-5.2-codex': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
coding_optimized: boolean;
agentic_coding: boolean;
context_compaction: boolean;
cybersecurity: boolean;
};
'gpt-5': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
context_window: number;
};
'gpt-4o': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
previous_generation: boolean;
};
'gpt-4.1': {
prompt_caching: boolean;
tool_use: boolean;
json_mode: boolean;
vision: boolean;
large_context: boolean;
coding_optimized: boolean;
cost_reduction: number;
};
o4: {
reasoning: boolean;
advanced_reasoning: boolean;
tool_use: boolean;
large_context: boolean;
next_generation: boolean;
};
'o4-mini': {
reasoning: boolean;
advanced_reasoning: boolean;
tool_use: boolean;
large_context: boolean;
cost_effective: boolean;
};
o3: {
reasoning: boolean;
advanced_reasoning: boolean;
tool_use: boolean;
large_context: boolean;
};
o1: {
reasoning: boolean;
tool_use: boolean;
large_context: boolean;
advanced_reasoning: boolean;
previous_generation: boolean;
};
'claude-opus-4-5': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
hybrid_reasoning: boolean;
extended_thinking: boolean;
coding_optimized: boolean;
parallel_tool_use: boolean;
effort_parameter: boolean;
tool_search: boolean;
most_capable: boolean;
context_window: number;
extended_context: number;
};
'claude-sonnet-4-5': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
hybrid_reasoning: boolean;
extended_thinking: boolean;
coding_optimized: boolean;
agentic_coding: boolean;
computer_use: boolean;
context_window: number;
extended_context: number;
};
'claude-haiku-4-5': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
hybrid_reasoning: boolean;
extended_thinking: boolean;
fast_processing: boolean;
cost_effective: boolean;
context_window: number;
};
'claude-sonnet-4': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
balanced_performance: boolean;
coding_optimized: boolean;
};
'claude-opus-4': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
hybrid_reasoning: boolean;
extended_thinking: boolean;
coding_optimized: boolean;
parallel_tool_use: boolean;
most_capable: boolean;
};
'claude-3.7': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
previous_generation: boolean;
deprecated: boolean;
};
'claude-3.5': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
previous_generation: boolean;
deprecated: boolean;
};
'claude-3': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
deprecated: boolean;
};
'gemini-3.6': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
thinking_level: boolean;
context_window: number;
};
'gemini-3.5': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
thinking_level: boolean;
context_window: number;
};
'gemini-3.1': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
thinking_level: boolean;
context_window: number;
};
'gemini-3-pro': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
thinking_level: boolean;
thought_signatures: boolean;
agentic_workflows: boolean;
autonomous_coding: boolean;
context_window: number;
most_capable: boolean;
};
'gemini-3-flash': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
thinking_level: boolean;
thought_signatures: boolean;
fast_processing: boolean;
pro_level_intelligence: boolean;
context_window: number;
};
'gemini-2.5-pro': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
thinking_mode: boolean;
context_window: number;
previous_generation: boolean;
};
'gemini-2.5': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
thinking_mode: boolean;
previous_generation: boolean;
};
'gemini-2.0': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
fast_processing: boolean;
previous_generation: boolean;
};
'gemini-1.5': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
large_context: boolean;
multimodal: boolean;
deprecated: boolean;
};
'llama-4': {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
open_source: boolean;
community_license: boolean;
};
'llama-3.3': {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
open_source: boolean;
};
'llama-3.2': {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
open_source: boolean;
multimodal: boolean;
lightweight: boolean;
};
'llama-3.1': {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
open_source: boolean;
previous_generation: boolean;
};
qwen3: {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
thinking_mode: boolean;
open_source: boolean;
context_window: number;
extended_context: number;
};
'qwen2.5-coder': {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
coding_optimized: boolean;
open_source: boolean;
};
'deepseek-r1': {
reasoning: boolean;
advanced_reasoning: boolean;
thinking_mode: boolean;
json_mode: boolean;
open_source: boolean;
cost_effective: boolean;
};
'anthropic.claude': {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
bedrock_hosted: boolean;
};
'meta.llama4': {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
open_source: boolean;
bedrock_hosted: boolean;
};
'meta.llama': {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
open_source: boolean;
bedrock_hosted: boolean;
};
'amazon.titan': {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
bedrock_hosted: boolean;
aws_native: boolean;
};
'local-model': {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
offline: boolean;
privacy_focused: boolean;
};
};
/**
* Get capabilities for a specific model
* @param {string} modelName - Full model name
* @returns {Object} Model capabilities
*/
export declare function getModelCapabilities(modelName: any): {
vision?: undefined;
tool_use?: undefined;
json_mode?: undefined;
reasoning?: undefined;
large_context?: undefined;
streaming?: undefined;
temperature_control?: undefined;
max_tokens_control?: undefined;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
coding_optimized: boolean;
context_window: number;
max_output: number;
flagship: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
context_window: number;
max_output: number;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
coding_optimized: boolean;
context_window: number;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
adaptive_thinking: boolean;
effort_parameter: boolean;
coding_optimized: boolean;
parallel_tool_use: boolean;
most_capable: boolean;
context_window: number;
max_output: number;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
adaptive_thinking: boolean;
effort_parameter: boolean;
coding_optimized: boolean;
parallel_tool_use: boolean;
computer_use: boolean;
context_window: number;
max_output: number;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
adaptive_thinking: boolean;
effort_parameter: boolean;
coding_optimized: boolean;
agentic_coding: boolean;
context_window: number;
max_output: number;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
adaptive_thinking: boolean;
effort_parameter: boolean;
coding_optimized: boolean;
context_window: number;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
adaptive_thinking: boolean;
effort_parameter: boolean;
context_window: number;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
coding_optimized: boolean;
agentic_coding: boolean;
context_compaction: boolean;
cybersecurity: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
context_window: number;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
previous_generation: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
prompt_caching: boolean;
tool_use: boolean;
json_mode: boolean;
vision: boolean;
large_context: boolean;
coding_optimized: boolean;
cost_reduction: number;
reasoning: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
reasoning: boolean;
advanced_reasoning: boolean;
tool_use: boolean;
large_context: boolean;
next_generation: boolean;
vision: boolean;
json_mode: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
reasoning: boolean;
advanced_reasoning: boolean;
tool_use: boolean;
large_context: boolean;
cost_effective: boolean;
vision: boolean;
json_mode: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
reasoning: boolean;
advanced_reasoning: boolean;
tool_use: boolean;
large_context: boolean;
vision: boolean;
json_mode: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
reasoning: boolean;
tool_use: boolean;
large_context: boolean;
advanced_reasoning: boolean;
previous_generation: boolean;
vision: boolean;
json_mode: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
hybrid_reasoning: boolean;
extended_thinking: boolean;
coding_optimized: boolean;
parallel_tool_use: boolean;
effort_parameter: boolean;
tool_search: boolean;
most_capable: boolean;
context_window: number;
extended_context: number;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
hybrid_reasoning: boolean;
extended_thinking: boolean;
coding_optimized: boolean;
agentic_coding: boolean;
computer_use: boolean;
context_window: number;
extended_context: number;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
hybrid_reasoning: boolean;
extended_thinking: boolean;
fast_processing: boolean;
cost_effective: boolean;
context_window: number;
large_context: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
balanced_performance: boolean;
coding_optimized: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
hybrid_reasoning: boolean;
extended_thinking: boolean;
coding_optimized: boolean;
parallel_tool_use: boolean;
most_capable: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
previous_generation: boolean;
deprecated: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
deprecated: boolean;
reasoning: boolean;
large_context: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
thinking_level: boolean;
context_window: number;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
thinking_level: boolean;
thought_signatures: boolean;
agentic_workflows: boolean;
autonomous_coding: boolean;
context_window: number;
most_capable: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
thinking_level: boolean;
thought_signatures: boolean;
fast_processing: boolean;
pro_level_intelligence: boolean;
context_window: number;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
thinking_mode: boolean;
context_window: number;
previous_generation: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
thinking_mode: boolean;
previous_generation: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
fast_processing: boolean;
previous_generation: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
large_context: boolean;
multimodal: boolean;
deprecated: boolean;
reasoning: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
open_source: boolean;
community_license: boolean;
vision: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
open_source: boolean;
vision: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
open_source: boolean;
multimodal: boolean;
lightweight: boolean;
vision: boolean;
large_context: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
open_source: boolean;
previous_generation: boolean;
vision: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
thinking_mode: boolean;
open_source: boolean;
context_window: number;
extended_context: number;
vision: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
coding_optimized: boolean;
open_source: boolean;
vision: boolean;
large_context: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
reasoning: boolean;
advanced_reasoning: boolean;
thinking_mode: boolean;
json_mode: boolean;
open_source: boolean;
cost_effective: boolean;
vision: boolean;
tool_use: boolean;
large_context: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
bedrock_hosted: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
multimodal: boolean;
open_source: boolean;
bedrock_hosted: boolean;
vision: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
open_source: boolean;
bedrock_hosted: boolean;
vision: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
bedrock_hosted: boolean;
aws_native: boolean;
vision: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
offline: boolean;
privacy_focused: boolean;
vision: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
} | {
vision: boolean;
tool_use: boolean;
json_mode: boolean;
reasoning: boolean;
large_context: boolean;
streaming: boolean;
temperature_control: boolean;
max_tokens_control: boolean;
};
/**
* Get suggested alternative models for a provider
* @param {string} providerName - Provider name
* @param {string} unavailableModel - Model that's not available
* @returns {Array<string>} Suggested alternative models
*/
export declare function getSuggestedModels(providerName: any, unavailableModel: any): string[];
/**
* Check if a model supports a specific capability
* @param {string} modelName - Model name to check
* @param {string} capability - Capability to check for
* @returns {boolean} Whether the model supports the capability
*/
export declare function modelSupports(modelName: any, capability: any): boolean;
/**
* Get the best model for a specific use case
* @param {string} providerName - Provider name
* @param {Array<string>} requiredCapabilities - Required capabilities
* @param {Object} config - Configuration with model overrides
* @returns {string} Best model name for the use case
*/
export declare function getBestModelForCapabilities(providerName: any, requiredCapabilities?: any[], config?: Record<string, any>): string;
/**
* Get all hub providers and their status
* @returns {Array<Object>} Hub provider information
*/
export declare function getAllHubProviders(): {
name: string;
defaultProvider: string | undefined;
supportedProviders: string[];
modelCount: number;
region: string | undefined;
location: string | undefined;
detectDeployments: boolean | undefined;
detectModels: boolean | undefined;
}[];
/**
* Analyze commit complexity and recommend model tier
* @param {Object} commitInfo - Commit analysis information
* @param {string} providerName - Provider name
* @returns {Object} Model recommendation with reasoning
*/
export declare function analyzeCommitComplexity(commitInfo: any, providerName: any): {
complexity: string;
recommendedModel: any;
reasoning: string;
metrics: {
fileCount: any;
totalChanges: any;
additions: any;
deletions: any;
isComplex: any;
};
};
/**
* Resolve the model tier to use for a given analysis mode.
*
* Maps the high-level analysis mode onto the optimal-model tiers exposed by
* {@link getProviderModelConfig}/`ConfigurationManager.getOptimalModelConfig()`:
* - "standard" => the default tier
* - "detailed" => escalate to the complex tier (falling back to medium, then default)
* - "enterprise" => escalate to the complex tier (falling back to default)
*
* Unknown modes fall back to the default tier so callers always receive a usable model.
*
* @param {string} analysisMode - Analysis mode ("standard" | "detailed" | "enterprise")
* @param {Record<string, any>} optimalModels - Tier->model map (e.g. { default, medium, complex })
* @returns {string} The model name selected for the analysis mode
*/
export declare function getModelForAnalysisMode(analysisMode: string, optimalModels?: Record<string, any>): string;
/**
* Provider-specific model name normalization
* @param {string} providerName - Provider name
* @param {string} modelName - Raw model name
* @returns {string} Normalized model name
*/
export declare function normalizeModelName(providerName: any, modelName: any): any;