Skip to main content

a3s_runtime/
client.rs

1use crate::contract::{
2    RuntimeActionRequest, RuntimeApplyRequest, RuntimeCapabilities, RuntimeExecRequest,
3    RuntimeExecResult, RuntimeInspection, RuntimeLogChunk, RuntimeLogQuery, RuntimeObservation,
4    RuntimeRemoval,
5};
6use crate::RuntimeResult;
7use async_trait::async_trait;
8
9/// Stable provider-neutral lifecycle implemented by every A3S Runtime.
10#[async_trait]
11pub trait RuntimeClient: Send + Sync {
12    async fn capabilities(&self) -> RuntimeResult<RuntimeCapabilities>;
13
14    async fn apply(&self, request: &RuntimeApplyRequest) -> RuntimeResult<RuntimeObservation>;
15
16    async fn inspect(&self, unit_id: &str) -> RuntimeResult<RuntimeInspection>;
17
18    async fn stop(&self, request: &RuntimeActionRequest) -> RuntimeResult<RuntimeInspection>;
19
20    async fn remove(&self, request: &RuntimeActionRequest) -> RuntimeResult<RuntimeRemoval>;
21
22    async fn logs(&self, query: &RuntimeLogQuery) -> RuntimeResult<Vec<RuntimeLogChunk>>;
23
24    async fn exec(&self, request: &RuntimeExecRequest) -> RuntimeResult<RuntimeExecResult>;
25}