syntax = "proto3"; package memory; option go_package = "git.be.kaien.ru/l-ai/l-ai-memories/proto"; // Memory представляет воспоминание о пользователе message Memory { int64 id = 1; int64 user_id = 2; string username = 3; string key = 4; // Уникальный ключ факта string value = 5; // Значение факта string category = 6; // preference, fact, personality, relationship string priority = 7; // core, normal double confidence = 8; // 0.0 - 1.0 repeated string tags = 9; string source = 10; int64 created_at = 11; int64 updated_at = 12; } // StoreMemoryRequest запрос на сохранение воспоминания message StoreMemoryRequest { int64 user_id = 1; string username = 2; string message = 3; string key = 4; string value = 5; string category = 6; string priority = 7; double confidence = 8; repeated string tags = 9; string source = 10; } // StoreMemoryResponse ответ на сохранение воспоминания message StoreMemoryResponse { bool success = 1; string error = 2; int64 memory_id = 3; } // GetMemoriesRequest запрос на получение воспоминаний message GetMemoriesRequest { int64 user_id = 1; string username = 2; repeated string tags = 3; string search_query = 4; int32 limit = 5; } // GetMemoriesResponse ответ с воспоминаниями message GetMemoriesResponse { repeated Memory memories = 1; } // ProcessMessageRequest запрос на обработку сообщения для извлечения фактов message ProcessMessageRequest { int64 user_id = 1; string username = 2; string message = 3; string context = 4; } // ProcessMessageResponse ответ с извлечёнными фактами message ProcessMessageResponse { bool success = 1; string error = 2; int32 facts_extracted = 3; } // HealthCheckRequest для проверки здоровья сервиса message HealthCheckRequest {} // HealthCheckResponse для ответа на проверку здоровья message HealthCheckResponse { bool serving = 1; string version = 2; } // GetRelevantMemoriesRequest запрос на получение релевантных воспоминаний message GetRelevantMemoriesRequest { int64 user_id = 1; string username = 2; string current_message = 3; // Для генерации тегов int32 limit = 4; } // GetRelevantMemoriesResponse ответ с релевантными воспоминаниями message GetRelevantMemoriesResponse { repeated Memory memories = 1; string formatted_prompt = 2; // Готовый блок для вставки в промпт } // GetMemoriesByUserRequest запрос на получение всех воспоминаний пользователя message GetMemoriesByUserRequest { int64 user_id = 1; string username = 2; } // GetMemoriesByUserResponse ответ с воспоминаниями пользователя message GetMemoriesByUserResponse { repeated Memory memories = 1; } // BulkRefreshRequest запрос на массовую обработку сообщений message BulkRefreshRequest { int64 user_id = 1; string username = 2; repeated string messages = 3; // Список сообщений для обработки } // BulkRefreshResponse ответ с результатами массовой обработки message BulkRefreshResponse { bool success = 1; string error = 2; int32 messages_processed = 3; int32 facts_extracted = 4; int32 batch_count = 5; } // DeleteMemoryRequest запрос на удаление воспоминания message DeleteMemoryRequest { int64 memory_id = 1; } // DeleteMemoryResponse ответ на удаление воспоминания message DeleteMemoryResponse { bool success = 1; string error = 2; } // GetMemoriesForReviewRequest запрос воспоминаний для опроса-проверки. // Возвращает воспоминания с наименьшим confidence, которые давно не проверялись, // и сразу помечает их как отправленные на проверку (last_polled_at). message GetMemoriesForReviewRequest { int32 limit = 1; int32 cooldown_days = 2; // Не возвращать воспоминания, проверенные менее N дней назад (по умолчанию 14) } // GetMemoriesForReviewResponse ответ с воспоминаниями для проверки message GetMemoriesForReviewResponse { repeated Memory memories = 1; } // MemoryPoll представляет отправленный в чат опрос-проверку памяти message MemoryPoll { int64 id = 1; int64 chat_id = 2; int64 message_id = 3; repeated int64 memory_ids = 4; // Порядок соответствует вариантам опроса int64 evaluate_after = 5; // Unix time, когда пора подводить итоги } // RegisterMemoryPollRequest запрос на регистрацию отправленного опроса message RegisterMemoryPollRequest { int64 chat_id = 1; int64 message_id = 2; repeated int64 memory_ids = 3; int64 evaluate_after = 4; } // RegisterMemoryPollResponse ответ на регистрацию опроса message RegisterMemoryPollResponse { bool success = 1; string error = 2; int64 poll_id = 3; } // ListPendingMemoryPollsRequest запрос незавершённых опросов message ListPendingMemoryPollsRequest {} // ListPendingMemoryPollsResponse ответ с незавершёнными опросами message ListPendingMemoryPollsResponse { repeated MemoryPoll polls = 1; } // CompleteMemoryPollRequest запрос на завершение опроса message CompleteMemoryPollRequest { int64 poll_id = 1; } // CompleteMemoryPollResponse ответ на завершение опроса message CompleteMemoryPollResponse { bool success = 1; string error = 2; } // MemoryService - сервис для работы с памятью service MemoryService { // StoreMemory сохраняет воспоминание rpc StoreMemory(StoreMemoryRequest) returns (StoreMemoryResponse); // GetMemories получает воспоминания пользователя rpc GetMemories(GetMemoriesRequest) returns (GetMemoriesResponse); // ProcessMessage обрабатывает сообщение и извлекает факты rpc ProcessMessage(ProcessMessageRequest) returns (ProcessMessageResponse); // GetRelevantMemories получает релевантные воспоминания для текущего сообщения rpc GetRelevantMemories(GetRelevantMemoriesRequest) returns (GetRelevantMemoriesResponse); // GetMemoriesByUser получает все воспоминания пользователя rpc GetMemoriesByUser(GetMemoriesByUserRequest) returns (GetMemoriesByUserResponse); // BulkRefresh обрабатывает множество сообщений для извлечения фактов rpc BulkRefresh(BulkRefreshRequest) returns (BulkRefreshResponse); // DeleteMemory удаляет воспоминание по ID rpc DeleteMemory(DeleteMemoryRequest) returns (DeleteMemoryResponse); // GetMemoriesForReview возвращает воспоминания для опроса-проверки rpc GetMemoriesForReview(GetMemoriesForReviewRequest) returns (GetMemoriesForReviewResponse); // RegisterMemoryPoll регистрирует отправленный опрос-проверку rpc RegisterMemoryPoll(RegisterMemoryPollRequest) returns (RegisterMemoryPollResponse); // ListPendingMemoryPolls возвращает незавершённые опросы rpc ListPendingMemoryPolls(ListPendingMemoryPollsRequest) returns (ListPendingMemoryPollsResponse); // CompleteMemoryPoll помечает опрос завершённым rpc CompleteMemoryPoll(CompleteMemoryPollRequest) returns (CompleteMemoryPollResponse); // HealthCheck проверяет здоровье сервиса rpc HealthCheck(HealthCheckRequest) returns (HealthCheckResponse); }