pub enum AnyChannel {
Cli(CliChannel),
JsonCli(JsonCliChannel),
Telegram(TelegramChannel),
}Expand description
Enum dispatch for runtime channel selection.
AnyChannel implements Channel by forwarding every method call to the
active variant through a private macro. The binary picks a variant at
startup; the rest of the codebase never needs to be generic over the
channel type.
§Variants
Cli— reads from stdin and writes to stdout viaCliChannel.JsonCli— reads from stdin and emits JSONL events to stdout viaJsonCliChannel.Telegram— Telegram Bot API adapter viacrate::telegram::TelegramChannel.Discord(featurediscord) — Discord gateway adapter.Slack(featureslack) — Slack Events API adapter.
§Examples
ⓘ
use zeph_channels::{AnyChannel, CliChannel};
use zeph_core::channel::Channel;
let mut ch = AnyChannel::Cli(CliChannel::new());
// Send a message regardless of the underlying channel.
ch.send("Hello!").await.unwrap();Variants§
Trait Implementations§
Source§impl Channel for AnyChannel
impl Channel for AnyChannel
Source§async fn recv(&mut self) -> Result<Option<ChannelMessage>, ChannelError>
async fn recv(&mut self) -> Result<Option<ChannelMessage>, ChannelError>
Receive the next message. Returns
None on EOF or shutdown. Read moreSource§async fn send(&mut self, text: &str) -> Result<(), ChannelError>
async fn send(&mut self, text: &str) -> Result<(), ChannelError>
Send a text response. Read more
Source§async fn send_chunk(&mut self, chunk: &str) -> Result<(), ChannelError>
async fn send_chunk(&mut self, chunk: &str) -> Result<(), ChannelError>
Send a partial chunk of streaming response. Read more
Source§async fn flush_chunks(&mut self) -> Result<(), ChannelError>
async fn flush_chunks(&mut self) -> Result<(), ChannelError>
Flush any buffered chunks. Read more
Source§async fn send_typing(&mut self) -> Result<(), ChannelError>
async fn send_typing(&mut self) -> Result<(), ChannelError>
Send a typing indicator. No-op by default. Read more
Source§async fn confirm(&mut self, prompt: &str) -> Result<bool, ChannelError>
async fn confirm(&mut self, prompt: &str) -> Result<bool, ChannelError>
Request user confirmation for a destructive action. Returns
true if confirmed.
Default: auto-confirm (for headless/test scenarios). Read moreSource§async fn elicit(
&mut self,
request: ElicitationRequest,
) -> Result<ElicitationResponse, ChannelError>
async fn elicit( &mut self, request: ElicitationRequest, ) -> Result<ElicitationResponse, ChannelError>
Request structured input from the user for an MCP elicitation. Read more
Source§fn try_recv(&mut self) -> Option<ChannelMessage>
fn try_recv(&mut self) -> Option<ChannelMessage>
Non-blocking receive. Returns
None if no message is immediately available.Source§fn supports_exit(&self) -> bool
fn supports_exit(&self) -> bool
Source§async fn send_status(&mut self, text: &str) -> Result<(), ChannelError>
async fn send_status(&mut self, text: &str) -> Result<(), ChannelError>
Send a status label (shown as spinner text in TUI). No-op by default. Read more
Source§async fn send_queue_count(&mut self, count: usize) -> Result<(), ChannelError>
async fn send_queue_count(&mut self, count: usize) -> Result<(), ChannelError>
Notify channel of queued message count. No-op by default. Read more
Source§async fn send_diff(&mut self, diff: DiffData) -> Result<(), ChannelError>
async fn send_diff(&mut self, diff: DiffData) -> Result<(), ChannelError>
Send diff data for a tool result. No-op by default (TUI overrides). Read more
Source§async fn send_tool_output(
&mut self,
event: ToolOutputEvent,
) -> Result<(), ChannelError>
async fn send_tool_output( &mut self, event: ToolOutputEvent, ) -> Result<(), ChannelError>
Send a complete tool output with optional diff and filter stats atomically. Read more
Source§async fn send_thinking_chunk(&mut self, chunk: &str) -> Result<(), ChannelError>
async fn send_thinking_chunk(&mut self, chunk: &str) -> Result<(), ChannelError>
Send a thinking/reasoning token chunk. No-op by default. Read more
Source§async fn send_stop_hint(&mut self, hint: StopHint) -> Result<(), ChannelError>
async fn send_stop_hint(&mut self, hint: StopHint) -> Result<(), ChannelError>
Signal the non-default stop reason to the consumer before flushing. Read more
Source§async fn send_usage(
&mut self,
input_tokens: u64,
output_tokens: u64,
context_window: u64,
) -> Result<(), ChannelError>
async fn send_usage( &mut self, input_tokens: u64, output_tokens: u64, context_window: u64, ) -> Result<(), ChannelError>
Send token usage after an LLM call. No-op by default. Read more
Source§async fn send_tool_start(
&mut self,
event: ToolStartEvent,
) -> Result<(), ChannelError>
async fn send_tool_start( &mut self, event: ToolStartEvent, ) -> Result<(), ChannelError>
Announce that a tool call is starting. Read more
Auto Trait Implementations§
impl Freeze for AnyChannel
impl !RefUnwindSafe for AnyChannel
impl Send for AnyChannel
impl !Sync for AnyChannel
impl Unpin for AnyChannel
impl UnsafeUnpin for AnyChannel
impl !UnwindSafe for AnyChannel
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> Erasable for T
impl<T> Erasable for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request