UNPKG

review-copilot

Version:

ReviewCopilot - AI-powered code review assistant with customizable prompts

82 lines (81 loc) 3.63 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DeepSeekProvider = void 0; const base_provider_1 = require("./base-provider"); const chalk_1 = __importDefault(require("chalk")); const ai_messages_1 = require("../constants/ai-messages"); class DeepSeekProvider extends base_provider_1.BaseProvider { constructor(config) { super(config); } formatContent(prompt, content) { return JSON.stringify(`${prompt}. Content to review:\n${content}` .replace(/\n{1,}/g, ' ') .trim()); } async review(prompt, content) { try { console.log(chalk_1.default.blue('\nSending request to DeepSeek:')); console.log(chalk_1.default.gray('Model:'), this.config.model); console.log(chalk_1.default.gray('BaseURL:'), this.config.baseURL); console.log(chalk_1.default.gray('Prompt:'), prompt.slice(0, 100) + '...'); console.log(chalk_1.default.gray('Content:'), JSON.stringify(content)); if (!content.trim()) { return 'No content to review.'; } const requestBody = { model: this.config.model || 'deepseek-chat', messages: [ { role: 'system', content: ai_messages_1.SYSTEM_MESSAGES.CODE_REVIEW(this.config.reviewLanguage), }, { role: 'user', content: this.formatContent(prompt, content), }, ], temperature: 0.5, stream: false, max_tokens: 8192, }; console.log(chalk_1.default.gray('Request body:'), requestBody); const response = await this.client.chat.completions.create(requestBody); if (!response.choices?.[0]?.message?.content) { throw new Error('Empty response from DeepSeek API'); } const result = response.choices[0].message.content; console.log(chalk_1.default.green('\nReceived response from DeepSeek')); console.log(chalk_1.default.gray('Response:'), result); return result; } catch (error) { console.error(chalk_1.default.red('\nDeepSeek API Error:'), error); if (error instanceof Error) { const errorMessage = error.message; if (errorMessage.includes('401')) { throw new Error('DeepSeek API authentication failed. Please check your API key.'); } else if (errorMessage.includes('404')) { throw new Error('DeepSeek API endpoint not found. Please check the API URL.'); } else if (errorMessage.includes('429')) { throw new Error('DeepSeek API rate limit exceeded. Please try again later.'); } else if (errorMessage.includes('500')) { throw new Error('DeepSeek API internal server error. Please try again later.'); } console.error(chalk_1.default.red('Error details:'), { message: error.message, name: error.name, stack: error.stack, }); } throw error; } } } exports.DeepSeekProvider = DeepSeekProvider;