Справочник gRPC API

GoCPG предоставляет gRPC-интерфейс для операций с графом кода (CPG), запросов, навигации, lifecycle/status и сканирования шаблонов. Python-клиент (GrpcTransport в src/services/gocpg/grpc_transport.py) оборачивает все вызовы RPC в асинхронные методы, возвращающие те же Pydantic-модели, что и транспорт через подпроцесс.

Используются пять gRPC-сервисов: CPGService (разбор/обновление/индексы), QueryService (запросы/статистика/ветки/подмодули/фронтенды), PatternService (поиск/сканирование/валидация), NavigationService (методы nav_*), LifecycleService (status/freshness/maintenance).

Подключение

Параметр По умолчанию Описание
grpc_host localhost Имя хоста сервера
grpc_port 50051 Порт сервера
grpc_api_key None Токен Bearer для метаданных authorization
grpc_tls_cert None Путь к корневому сертификату CA для TLS

Максимальный размер сообщения: 64 МБ (отправка и получение). Все методы принимают необязательный параметр timeout (секунды).

Аутентификация передаётся через метаданные gRPC: ("authorization", "Bearer <api_key>").

Операции с CPG

parse

Разбор исходного кода в базу данных CPG (DuckDB). Потоковый серверный RPC с событиями прогресса.

Параметр Тип По умолчанию Описание
input_path str обязательный Путь к каталогу с исходным кодом
output_path str обязательный Путь к выходному файлу DuckDB
language str "c" Язык исходного кода
workers int \| None None Число параллельных обработчиков (0 = авто)
patterns PatternConfig \| None None Шаблоны включения/исключения и флаг тестов
include_tests bool False Включать тестовые файлы
exclude_patterns list[str] \| None None Glob-шаблоны для исключения
include_patterns list[str] \| None None Glob-шаблоны для включения
domain_config str \| None None Путь к файлу конфигурации домена
no_index bool False Пропустить создание индексов
timeout int \| None 3600 Тайм-аут RPC (секунды)

Возвращает: GoCPGParseResult

update

Инкрементальное обновление существующей базы CPG. Потоковый серверный RPC с событиями прогресса.

Параметр Тип По умолчанию Описание
input_path str обязательный Путь к каталогу с исходным кодом
output_path str обязательный Путь к существующему файлу DuckDB
git_refs GitRefConfig \| None None Диапазон коммитов (переопределяет отдельные параметры)
from_commit str \| None None Начальный хеш коммита
to_commit str \| None None Конечный хеш коммита
language str \| None None Язык исходного кода
force bool False Принудительная полная пересборка
domain_config str \| None None Путь к файлу конфигурации домена
timeout int \| None 600 Тайм-аут RPC (секунды)

Возвращает: GoCPGUpdateResult

ci_update

Инкрементальное обновление для CI-конвейера с поддержкой base/head ссылок. Унарный RPC.

Параметр Тип По умолчанию Описание
input_path str обязательный Путь к каталогу с исходным кодом
output_path str обязательный Путь к файлу DuckDB
git_refs GitRefConfig \| None None Диапазон коммитов (переопределяет отдельные параметры)
base_ref str "origin/main" Базовая git-ссылка
head_ref str "HEAD" Целевая git-ссылка
cache_dir str \| None None Каталог кеша для промежуточных результатов
language str \| None None Язык исходного кода
timeout int \| None 600 Тайм-аут RPC (секунды)

Возвращает: GoCPGCIUpdateResult

create_indexes

Создание или перестроение индексов в базе CPG. Унарный RPC.

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к файлу DuckDB
timeout int \| None 300 Тайм-аут RPC (секунды)

Возвращает: None

Запросы и поиск

query

Выполнение SQL-запроса к базе CPG. Унарный RPC.

Параметр Тип По умолчанию Описание
sql str обязательный Строка SQL-запроса
db_path str обязательный Путь к файлу DuckDB
timeout int \| None 60 Тайм-аут RPC (секунды)

Возвращает: GoCPGQueryResult

Структурный поиск кода по шаблонам tree-sitter. Унарный RPC.

Параметр Тип По умолчанию Описание
pattern str обязательный Шаблон поиска
language str обязательный Язык исходного кода
db_path str \| None None Путь к файлу DuckDB
max_results int \| None None Максимальное число результатов (0 = без ограничений)
timeout int \| None 60 Тайм-аут RPC (секунды)

Возвращает: GoCPGSearchResult

stats

Получение статистики базы CPG. Унарный RPC.

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к файлу DuckDB
timeout int \| None 60 Тайм-аут RPC (секунды)

Возвращает: GoCPGStatsResult

quality_stats

Получение статистики качества кода (точки сложности, мёртвый код). Унарный RPC.

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к файлу DuckDB
top int 20 Количество записей в каждой категории
timeout int \| None 60 Тайм-аут RPC (секунды)

Возвращает: GoCPGQualityStatsResult

Жизненный цикл и обслуживание

lifecycle_status

Получение текущего lifecycle snapshot для базы. Соответствует LifecycleService.GetDatabaseStatus.

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к целевому DuckDB-файлу
repo_path str \| None None Корень git-репозитория для freshness checks
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: GoCPGLifecycleStatusResult

Модель включает поля state, read_available, active_operation, progress_percent, started_at, last_successful_update_at, last_successful_maintenance_at, lock metadata и freshness details.

watch_database_status

Потоковая выдача status snapshots для базы. Соответствует LifecycleService.WatchDatabaseStatus.

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к целевому DuckDB-файлу
repo_path str \| None None Корень git-репозитория для freshness checks
max_events int 0 Максимальное число событий (0 = до отмены)
poll_interval_ms int 0 Переопределение poll interval в миллисекундах
timeout int \| None 60 Тайм-аут RPC (секунды)

Возвращает: AsyncIterator[GoCPGLifecycleStatusResult]

freshness_status

Получение freshness-only проекции для базы. Соответствует LifecycleService.GetFreshnessStatus.

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к целевому DuckDB-файлу
repo_path str \| None None Корень git-репозитория для freshness checks
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: GoCPGFreshnessStatusResult

run_maintenance

Явный запуск DuckDB maintenance внутри GoCPG. Соответствует LifecycleService.RunMaintenance.

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к целевому DuckDB-файлу
mode str обязательный checkpoint_vacuum или copy_from_database_rewrite
timeout int \| None 300 Тайм-аут RPC (секунды)

Возвращает: GoCPGMaintenanceResult

maintenance_plan

Получение текущей рекомендации по обслуживанию базы. Соответствует LifecycleService.GetMaintenancePlan.

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к целевому DuckDB-файлу
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: GoCPGMaintenancePlanResult

Поиск символов по имени в графе кода. Поддерживает точное совпадение и поиск по префиксу.

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к файлу DuckDB
name str обязательный Имя символа для поиска
prefix bool False Включить поиск по префиксу
node_type str "" Фильтр по типу узла
file str "" Фильтр по пути к файлу
visibility str "" Фильтр по видимости
limit int 0 Максимальное число результатов (0 = без ограничений)
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: list[NavSymbolResult]

Поиск вызывающих функций для указанного метода с возможностью транзитивного обхода.

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к файлу DuckDB
name str обязательный Имя метода
depth int 0 Глубина транзитивного обхода (0 = только прямые)
limit int 0 Максимальное число результатов (0 = без ограничений)
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: list[NavCallerResult]

Поиск вызываемых функций из указанного метода с возможностью транзитивного обхода.

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к файлу DuckDB
name str обязательный Имя метода
depth int 0 Глубина транзитивного обхода (0 = только прямые)
limit int 0 Максимальное число результатов (0 = без ограничений)
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: list[NavCalleeResult]

Обход иерархии наследования типов (родительские/дочерние типы).

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к файлу DuckDB
name str обязательный Имя типа
direction str "" "up" (родительские), "down" (дочерние) или "" (оба направления)
depth int 0 Глубина обхода (0 = без ограничений)
limit int 0 Максимальное число результатов (0 = без ограничений)
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: list[NavHierarchyNode]

Получение структуры файла (функции, классы, методы).

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к файлу DuckDB
file str обязательный Путь к файлу внутри проекта
limit int 0 Максимальное число результатов (0 = без ограничений)
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: list[NavOutlineEntry]

Поиск всех использований (ссылок) символа.

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к файлу DuckDB
name str обязательный Имя символа
limit int 0 Максимальное число результатов (0 = без ограничений)
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: list[NavUsageResult]

Получение зависимостей на уровне файлов (импорты/включения).

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к файлу DuckDB
file str обязательный Путь к файлу внутри проекта
direction str "" "in" (зависящие), "out" (зависимости) или "" (оба направления)
limit int 0 Максимальное число результатов (0 = без ограничений)
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: list[NavDepResult]

Разрешение имени символа в цепочку полностью квалифицированных имён.

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к файлу DuckDB
name str обязательный Имя символа для разрешения
signature str "" Сигнатура метода для устранения неоднозначности
file str "" Подсказка по файлу для устранения неоднозначности
limit int 0 Максимальное число шагов разрешения (0 = без ограничений)
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: list[NavResolveStep]

Управление ветками

list_frontends

Получение списка доступных языковых фронтендов на сервере.

Параметр Тип По умолчанию Описание
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: list[GoCPGFrontendInfo]

list_branches

Получение списка веток CPG в базе данных.

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к файлу DuckDB
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: list[GoCPGBranchInfo]

switch_branch

Переключение активной ветки CPG в базе данных.

Параметр Тип По умолчанию Описание
branch_name str обязательный Целевое имя ветки
db_path str обязательный Путь к файлу DuckDB
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: None

prune_branches

Удаление веток из базы данных, которые более не существуют в git-репозитории.

Параметр Тип По умолчанию Описание
input_path str обязательный Путь к репозиторию с исходным кодом
db_path str обязательный Путь к файлу DuckDB
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: int (количество удалённых веток)

list_submodules

Получение списка подмодулей, отслеживаемых в базе CPG.

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к файлу DuckDB
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: list[GoCPGSubmoduleInfo]

prune_submodules

Удаление данных подмодулей, которые более не присутствуют в репозитории.

Параметр Тип По умолчанию Описание
input_path str обязательный Путь к репозиторию с исходным кодом
db_path str обязательный Путь к файлу DuckDB
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: int (количество удалённых подмодулей)

Механизм шаблонов

scan

Запуск правил шаблонов по базе CPG. Потоковый серверный RPC с событиями обнаружения.

Параметр Тип По умолчанию Описание
db_path str обязательный Путь к файлу DuckDB
config ScanConfig \| None None Конфигурация сканирования (переопределяет отдельные параметры)
rule_dirs list[str] \| None None Каталоги с YAML-файлами правил
rule_id str \| None None Запуск одного правила по идентификатору
severity_filter str \| None None Фильтр по уровню серьёзности
incremental bool False Инкрементальное сканирование (только изменённые файлы)
fix bool False Применить предложения автоисправления
dry_run bool False Показать исправления без применения
output_format str \| None None Формат вывода
output_path str \| None None Путь к файлу вывода
domain_rules bool False Включить доменные правила
timeout int \| None 300 Тайм-аут RPC (секунды)

Возвращает: GoCPGScanResult

validate_rule

Валидация YAML-файла правила шаблона, с возможностью проверки на тестовом коде. Унарный RPC.

Параметр Тип По умолчанию Описание
rule_path str обязательный Путь к YAML-файлу правила
test_code str \| None None Фрагмент тестового кода
test_lang str \| None None Язык тестового кода
timeout int \| None 30 Тайм-аут RPC (секунды)

Возвращает: dict[str, Any]

Примечания по транспорту

GrpcTransport.check_health() является клиентским helper-методом проверки соединения, а не публичным gRPC RPC. Он использует ListFrontends как лёгкий probe и поэтому намеренно исключён из RPC-surface, который отслеживает docs-sync.