solver-sdk
Version:
SDK для интеграции с Code Solver Backend API (совместимо с браузером и Node.js), с поддержкой функциональности мышления (Thinking Mode)
67 lines • 3.02 kB
JavaScript
/**
* Класс для работы с контекстом
*/
export class ContextApi {
/**
* Создает новый экземпляр API для работы с контекстом
* @param {HttpClient} httpClient HTTP клиент
* @param {ProjectsApi} projectsApi API для работы с проектами
*/
constructor(httpClient, projectsApi) {
this.httpClient = httpClient;
this.projectsApi = projectsApi;
}
/**
* Определяет контекст для запроса
* @param {DetectContextParams} params Параметры определения контекста
* @returns {Promise<AutoContext>} Определенный контекст
*/
async detectContext(params) {
return this.httpClient.post('/api/context/detect', params);
}
/**
* Получает содержимое файла
* @param {string} projectId Идентификатор проекта
* @param {string} filePath Путь к файлу
* @returns {Promise<string>} Содержимое файла
*/
async getFileContent(projectId, filePath) {
return this.httpClient.get(`/api/projects/${projectId}/files`, { path: filePath });
}
/**
* Получает содержимое фрагмента файла
* @param {string} projectId Идентификатор проекта
* @param {string} filePath Путь к файлу
* @param {number} startLine Начальная строка
* @param {number} endLine Конечная строка
* @returns {Promise<CodeSnippet>} Фрагмент кода
*/
async getFileSnippet(projectId, filePath, startLine, endLine) {
return this.httpClient.get(`/api/projects/${projectId}/snippets`, {
path: filePath,
startLine,
endLine
});
}
/**
* Получает структуру директории
* @param {string} projectId Идентификатор проекта
* @param {string} [dirPath='/'] Путь к директории
* @returns {Promise<Array<{name: string, type: 'file' | 'directory', path: string}>>} Структура директории
*/
async getDirectoryStructure(projectId, dirPath = '/') {
return this.httpClient.get(`/api/projects/${projectId}/directory`, { path: dirPath });
}
/**
* Обновляет индекс файла
* @param projectId ID проекта
* @param filePath Путь к файлу
* @param content Новое содержимое файла
* @param force Принудительное обновление
* @returns Информация об обновленном индексе файла
*/
async updateFileIndex(projectId, filePath, content, force = false) {
return this.projectsApi.updateFileIndex(projectId, filePath, { content, force });
}
}
//# sourceMappingURL=context-api.js.map