Files
bolt-diy/app/lib/.server/llm/constants.ts
Stijnus df242a7935 feat: add Moonshot AI (Kimi) provider and update xAI Grok models (#1953)
- Add comprehensive Moonshot AI provider with 11 models including:
  * Legacy moonshot-v1 series (8k, 32k, 128k context)
  * Latest Kimi K2 models (K2 Preview, Turbo, Thinking)
  * Vision-enabled models for multimodal capabilities
  * Auto-selecting model variants

- Update xAI provider with latest Grok models:
  * Add Grok 4 (256K context) and Grok 4 (07-09) variant
  * Add Grok 3 Mini Beta and Mini Fast Beta variants
  * Update context limits to match actual model capabilities
  * Remove outdated grok-beta and grok-2-1212 models

- Add MOONSHOT_API_KEY to environment configuration
- Register Moonshot provider in service status monitoring
- Full OpenAI-compatible API integration via api.moonshot.ai
- Fix TypeScript errors in GitHub provider

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-31 18:54:14 +02:00

85 lines
2.1 KiB
TypeScript

/*
* Maximum tokens for response generation (updated for modern model capabilities)
* This serves as a fallback when model-specific limits are unavailable
* Modern models like Claude 3.5, GPT-4o, and Gemini Pro support 128k+ tokens
*/
export const MAX_TOKENS = 128000;
/*
* Provider-specific default completion token limits
* Used as fallbacks when model doesn't specify maxCompletionTokens
*/
export const PROVIDER_COMPLETION_LIMITS: Record<string, number> = {
OpenAI: 4096, // Standard GPT models (o1 models have much higher limits)
Github: 4096, // GitHub Models use OpenAI-compatible limits
Anthropic: 64000, // Conservative limit for Claude 4 models (Opus: 32k, Sonnet: 64k)
Google: 8192, // Gemini 1.5 Pro/Flash standard limit
Cohere: 4000,
DeepSeek: 8192,
Groq: 8192,
HuggingFace: 4096,
Mistral: 8192,
Ollama: 8192,
OpenRouter: 8192,
Perplexity: 8192,
Together: 8192,
xAI: 8192,
LMStudio: 8192,
OpenAILike: 8192,
AmazonBedrock: 8192,
Hyperbolic: 8192,
};
/*
* Reasoning models that require maxCompletionTokens instead of maxTokens
* These models use internal reasoning tokens and have different API parameter requirements
*/
export function isReasoningModel(modelName: string): boolean {
const result = /^(o1|o3|gpt-5)/i.test(modelName);
// DEBUG: Test regex matching
console.log(`REGEX TEST: "${modelName}" matches reasoning pattern: ${result}`);
return result;
}
// limits the number of model responses that can be returned in a single request
export const MAX_RESPONSE_SEGMENTS = 2;
export interface File {
type: 'file';
content: string;
isBinary: boolean;
isLocked?: boolean;
lockedByFolder?: string;
}
export interface Folder {
type: 'folder';
isLocked?: boolean;
lockedByFolder?: string;
}
type Dirent = File | Folder;
export type FileMap = Record<string, Dirent | undefined>;
export const IGNORE_PATTERNS = [
'node_modules/**',
'.git/**',
'dist/**',
'build/**',
'.next/**',
'coverage/**',
'.cache/**',
'.vscode/**',
'.idea/**',
'**/*.log',
'**/.DS_Store',
'**/npm-debug.log*',
'**/yarn-debug.log*',
'**/yarn-error.log*',
'**/*lock.json',
'**/*lock.yml',
];