Ir al contenido

Referencia gRPC — servicios, métodos y tipos de mensaje

Olivares AI habla gRPC en dos lugares que apuntan en direcciones opuestas:

  • La API del control plane del motor (olivares.api.v1.ControlPlane): un pequeño reflejo de la superficie REST para callers que prefieran un stub tipado. El contrato REST de la referencia de la API sigue siendo el más amplio de los dos.
  • El contrato de cable de plugins (olivares.sdk.v1.*): el contrato versionado que habla cada connector y módulo out-of-process. Es el que implementas cuando construyes un connector en un lenguaje distinto de Go.

Esta página se genera a partir de las tablas de registro que los servidores entregan a gRPC, no desde los archivos .proto. Esa distinción es intencional: un .proto editado sin regenerar describe un servicio que el binario no sirve, y la comprobación que respalda esta página informa de la discrepancia en vez de publicar la opción más vistosa. Los clientes pueden llamar a todos los métodos enumerados aquí.

Todos los métodos de los servicios siguientes salvo GetServerInfo requieren un principal autenticado y autorizado. Hay dos excepciones deliberadas, nombradas aquí para que no tengas que descubrirlas: GetServerInfo responde de forma anónima, y el servicio estándar grpc.health.v1.Health (Check, List, Watch) se sirve en el mismo listener sin principal, porque una sonda o una service mesh debe poder alcanzarlo en cada pod igual que un kubelet alcanza /livez. La ausencia de un bearer token deja una petición como anónima en lugar de rechazarla; un token presente pero no válido sí se rechaza. Se llega al servicio del control plane por el listener gRPC del motor; los servicios de plugins se conectan por el broker de go-plugin (connectors dentro del host) o por gRPC con TLS mutuo (un collector remoto). Configura el listener mediante las variables OLIVARES_* de la referencia de configuración.

El motor y el host de plugins registran 28 rpc repartidos en 7 servicios. Las tablas siguientes se leen de las tablas de registro generadas que los servidores entregan a gRPC; si un método aparece aquí, un cliente puede llamarlo.

Definido en apiv1/api.proto; 5 rpc.

MétodoMétodo completoTipoPeticiónRespuestaQué hace
CreateAgent/olivares.api.v1.ControlPlane/CreateAgentunaryCreateAgentRequestAgentRegistra un agente nuevo en el inventario y devuelve el registro almacenado, incluido el identificador que usa el resto de la API.
GetAgent/olivares.api.v1.ControlPlane/GetAgentunaryGetAgentRequestAgentDevuelve un agente por identificador, con los mismos campos que sirve el endpoint REST de inventario.
GetServerInfo/olivares.api.v1.ControlPlane/GetServerInfounaryEmptyServerInfoInforma de la versión, edición y readiness. Es el único método de este servicio que no requiere un principal autenticado.
ListAgents/olivares.api.v1.ControlPlane/ListAgentsunaryListAgentsRequestListAgentsResponseEnumera, página a página, los agentes visibles para el principal que llama.
VerifyAudit/olivares.api.v1.ControlPlane/VerifyAuditunaryVerifyAuditRequestVerifyAuditResponseVuelve a verificar la cadena de auditoría en un rango e informa de si los hashes siguen enlazados, incluido el estado del checkpoint.

Definido en olivaresv1/v1.proto; 7 rpc.

MétodoMétodo completoTipoPeticiónRespuestaQué hace
Close/olivares.sdk.v1.ContentSourceService/CloseunaryEmptyEmptyFinaliza la sesión abierta por Open y libera lo que el connector retuviera para ella.
DeltaList/olivares.sdk.v1.ContentSourceService/DeltaListserver-streamingContentDeltaRequestContentChange (stream)Transmite los cambios desde un cursor. Solo se llama cuando el connector anuncia la capacidad content.delta.
Describe/olivares.sdk.v1.ContentSourceService/DescribeunaryEmptyDescribeResponseDevuelve el descriptor del connector: su identidad, sus campos de configuración y las capacidades que anuncia.
Fetch/olivares.sdk.v1.ContentSourceService/FetchunaryContentFetchRequestContentDocumentDevuelve el cuerpo y los metadatos de un documento para la referencia que el host tomó del stream de List.
FetchACL/olivares.sdk.v1.ContentSourceService/FetchACLunaryContentFetchRequestContentACLResultDevuelve las referencias de permisos que gobiernan un documento. Un resultado vacío significa que se aplica el valor predeterminado de la base de conocimiento.
List/olivares.sdk.v1.ContentSourceService/Listserver-streamingContentListRequestContentDocRef (stream)Transmite referencias de documentos página a página, acotadas por los máximos que pasa el host para impedir que un corpus completo se cargue en memoria en una sola llamada.
Open/olivares.sdk.v1.ContentSourceService/OpenunaryOpenRequestEmptyInicia una sesión con la configuración proporcionada por el host, antes de cualquier llamada de contenido.

Definido en olivaresv1/v1.proto; 3 rpc.

MétodoMétodo completoTipoPeticiónRespuestaQué hace
Log/olivares.sdk.v1.HostService/LogunaryLogRecordEmptyEscribe un registro de log estructurado mediante el motor, de forma que un módulo out-of-process escribe donde lo hace uno in-process.
Publish/olivares.sdk.v1.HostService/PublishunaryEventEmptyPublica un evento en el bus del motor en nombre de un módulo out-of-process.
Subscribe/olivares.sdk.v1.HostService/Subscribeserver-streamingSubscribeRequestEvent (stream)Transmite eventos del bus al módulo, filtrados por los tipos de evento que solicita. Un filtro vacío incluye todos los tipos.

Definido en olivaresv1/v1.proto; 1 rpc.

MétodoMétodo completoTipoPeticiónRespuestaQué hace
Push/olivares.sdk.v1.IngestService/Pushclient-streamingIngestEnvelope (stream)IngestSummaryAcepta un stream de observaciones enviadas por un daemon collector, eleva cada una al bus de eventos y devuelve un resumen cuando termina el stream.

Definido en olivaresv1/v1.proto; 4 rpc.

MétodoMétodo completoTipoPeticiónRespuestaQué hace
Describe/olivares.sdk.v1.ModuleService/DescribeunaryEmptyDescribeResponseDevuelve el descriptor del módulo: su identidad y la configuración que acepta.
Init/olivares.sdk.v1.ModuleService/InitunaryInitRequestEmptyEntrega al módulo su configuración y le permite prepararse antes de arrancar nada.
Start/olivares.sdk.v1.ModuleService/StartunaryEmptyEmptyInicia el trabajo del módulo después de un Init correcto.
Stop/olivares.sdk.v1.ModuleService/StopunaryEmptyEmptyDetiene el módulo y le permite liberar lo que retiene.

Definido en olivaresv1/v1.proto; 4 rpc.

MétodoMétodo completoTipoPeticiónRespuestaQué hace
Close/olivares.sdk.v1.OutputService/CloseunaryEmptyEmptyFinaliza la sesión abierta por Open y libera lo que el connector retuviera para ella.
Describe/olivares.sdk.v1.OutputService/DescribeunaryEmptyDescribeResponseDevuelve el descriptor del connector: su identidad, sus campos de configuración y las capacidades que anuncia.
Notify/olivares.sdk.v1.OutputService/NotifyunaryNotifyRequestNotifyResponseEntrega una notificación al destino e informa de lo que este hizo con ella, lo que determina si el host reintenta.
Open/olivares.sdk.v1.OutputService/OpenunaryOpenRequestEmptyInicia una sesión con la configuración proporcionada por el host, antes de cualquier entrega.

Definido en olivaresv1/v1.proto; 4 rpc.

MétodoMétodo completoTipoPeticiónRespuestaQué hace
Close/olivares.sdk.v1.SourceService/CloseunaryEmptyEmptyFinaliza la sesión abierta por Open y libera lo que el connector retuviera para ella.
Describe/olivares.sdk.v1.SourceService/DescribeunaryEmptyDescribeResponseDevuelve el descriptor del connector: su identidad, sus campos de configuración y las capacidades que anuncia.
Gather/olivares.sdk.v1.SourceService/Gatherserver-streamingEmptyObservation (stream)Transmite observaciones al host, que eleva cada una al bus de eventos. El stream termina cuando finaliza una ejecución por lotes o cuando el host la cancela.
Open/olivares.sdk.v1.SourceService/OpenunaryOpenRequestEmptyInicia una sesión con la configuración proporcionada por el host, antes de recopilar ninguna observación.

Las tablas nombran cada mensaje de petición y respuesta; sus campos se declaran en los archivos .proto indicados para cada servicio, que se distribuyen en el repositorio y son la fuente de la que se generan los stubs. Conviene conocer dos convenciones antes de leerlos:

  • Los campos de vocabulario son strings, no enums cerrados: modo de acceso, fuente de señal, confianza, severidad y tipo de evento. Un connector de terceros puede introducir su propia fuente de señal sin esperar a una release del SDK.
  • Las formas de payload son cerradas. El payload de un Observation o un Event es un oneof de los tipos de mensaje conocidos más un fallback JSON para payloads de eventos definidos por módulos. Un payload no reconocido es un error de contrato; no se descarta en silencio.

Los archivos .proto son el contrato. Apunta el toolchain protobuf de tu lenguaje a sdk/plugin/proto/olivaresv1/v1.proto para el contrato de plugins, o a core/api/proto/apiv1/api.proto para el reflejo del control plane. Los clientes listos para Go y TypeScript se describen en Usar los SDK de cliente.