pub struct LocalFleet { /* private fields */ }Expand description
caliband-over-Unix-sockets backend — wraps today’s FleetManager verbatim.
Implementations§
Source§impl LocalFleet
impl LocalFleet
pub fn new(inner: FleetManager) -> Self
Sourcepub fn manager(&self) -> &FleetManager
pub fn manager(&self) -> &FleetManager
Access the underlying manager (session plane, API handlers still use it directly in P1).
Trait Implementations§
Source§impl Clone for LocalFleet
impl Clone for LocalFleet
Source§fn clone(&self) -> LocalFleet
fn clone(&self) -> LocalFleet
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl FleetAdmin for LocalFleet
impl FleetAdmin for LocalFleet
Source§fn add_workspace<'life0, 'async_trait>(
&'life0 self,
name: String,
root: PathBuf,
config: WorkspaceConfig,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn add_workspace<'life0, 'async_trait>(
&'life0 self,
name: String,
root: PathBuf,
config: WorkspaceConfig,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Register a workspace and persist it.
root is the LocalFleet checkout
path; k8s ignores it and uses config.sources instead.Source§fn remove_workspace<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn remove_workspace<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Unregister a workspace; returns whether one existed.
Source§fn set_workspace_config<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
config: WorkspaceConfig,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn set_workspace_config<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
config: WorkspaceConfig,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Replace a workspace’s configuration (local: restarts its caliband;
k8s: patches the
Workspace CR, operator reconciles).Source§fn list_workspaces<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<WorkspaceInfo>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_workspaces<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<WorkspaceInfo>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List configured workspaces with reconciliation status, for the read side
(
GET /api/workspaces). The default returns empty: backends whose
workspaces already appear in the fleet snapshot (local) need not
duplicate them here. K8sWorkspaceAdmin overrides this to return its
Workspace CRs, so a configured-but-agentless workspace is still
visible with its status. (#142)Source§fn workspace_ops_are_async(&self) -> bool
fn workspace_ops_are_async(&self) -> bool
Whether workspace create/config completes asynchronously (the caller
should treat success as accepted, reconciling rather than done).
Local applies config synchronously (
false); the k8s config plane hands
off to the operator’s reconcile loop (true → the API answers 202).Source§impl FleetProvider for LocalFleet
impl FleetProvider for LocalFleet
Source§fn ensure_agent<'life0, 'async_trait>(
&'life0 self,
spec: TaskSpec,
) -> Pin<Box<dyn Future<Output = Result<AgentHandle>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn ensure_agent<'life0, 'async_trait>(
&'life0 self,
spec: TaskSpec,
) -> Pin<Box<dyn Future<Output = Result<AgentHandle>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Ensure an agent for
spec exists and is attachable. Idempotent.Source§fn watch_fleet(&self) -> BoxStream<'static, FleetChange>
fn watch_fleet(&self) -> BoxStream<'static, FleetChange>
Observe the fleet: an initial listing followed by live change events.
Source§fn stop_agent<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 AgentId,
drain: DrainPolicy,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn stop_agent<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 AgentId,
drain: DrainPolicy,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Stop an agent per
drain policy.Source§fn restart_agent<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 AgentId,
) -> Pin<Box<dyn Future<Output = Result<AgentId>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn restart_agent<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 AgentId,
) -> Pin<Box<dyn Future<Output = Result<AgentId>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Restart an agent; returns the (possibly new) id.
Source§fn remove_agent<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 AgentId,
force: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn remove_agent<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 AgentId,
force: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Forget an agent entirely (local: remove from caliband’s registry; k8s:
delete its
CalibanTask CR). (#76)Source§fn snapshot<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = FleetSnapshot> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn snapshot<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = FleetSnapshot> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
A point-in-time view of the whole fleet. Local builds it from the poll
snapshot; k8s projects the live
CalibanTasks. (#76)Source§fn readiness<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Readiness> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn readiness<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Readiness> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Readiness of the backend + its store. Local reports store-writability +
per-workspace poll health; k8s reports store-writability + kube API
reachability. (#76)
Source§fn metrics(&self) -> MetricsSnapshot
fn metrics(&self) -> MetricsSnapshot
Backend counters for
/api/metrics. (#76)Source§fn send_input<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 AgentId,
input: AttachInbound,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn send_input<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 AgentId,
input: AttachInbound,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Steer an interactive agent: deliver an inbound frame to its session
plane (local: over the per-agent Unix socket; k8s: dial the agent’s
caliband endpoint over the network). (#76)
Auto Trait Implementations§
impl Freeze for LocalFleet
impl !RefUnwindSafe for LocalFleet
impl Send for LocalFleet
impl Sync for LocalFleet
impl Unpin for LocalFleet
impl UnsafeUnpin for LocalFleet
impl !UnwindSafe for LocalFleet
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more