Extend support for session management

This commit is contained in:
Illia Polosukhin
2026-02-03 08:59:59 -08:00
parent c9ebb117ab
commit dedda9c51d
11 changed files with 886 additions and 252 deletions
+1 -5
View File
@@ -1,18 +1,14 @@
//! Multi-channel input system.
//!
//! Channels receive messages from external sources (CLI, Slack, Telegram, HTTP)
//! Channels receive messages from external sources (CLI, HTTP, etc.)
//! and convert them to a unified message format for the agent to process.
mod channel;
pub mod cli;
mod http;
mod manager;
mod slack;
mod telegram;
pub use channel::{Channel, IncomingMessage, MessageStream, OutgoingResponse, StatusUpdate};
pub use cli::TuiChannel;
pub use http::HttpChannel;
pub use manager::ChannelManager;
pub use slack::SlackChannel;
pub use telegram::TelegramChannel;
-60
View File
@@ -1,60 +0,0 @@
//! Slack channel integration.
//!
//! TODO: Implement full Slack bot integration using slack-morphism.
use async_trait::async_trait;
use crate::channels::{Channel, IncomingMessage, MessageStream, OutgoingResponse};
use crate::config::SlackConfig;
use crate::error::ChannelError;
/// Slack channel for Slack bot integration.
pub struct SlackChannel {
#[allow(dead_code)]
config: SlackConfig,
}
impl SlackChannel {
/// Create a new Slack channel.
pub fn new(config: SlackConfig) -> Self {
Self { config }
}
}
#[async_trait]
impl Channel for SlackChannel {
fn name(&self) -> &str {
"slack"
}
async fn start(&self) -> Result<MessageStream, ChannelError> {
// TODO: Implement Slack socket mode connection
// 1. Connect via Slack Socket Mode
// 2. Listen for app_mention and direct message events
// 3. Convert Slack events to IncomingMessage
Err(ChannelError::StartupFailed {
name: "slack".to_string(),
reason: "Slack channel not yet implemented".to_string(),
})
}
async fn respond(
&self,
_msg: &IncomingMessage,
_response: OutgoingResponse,
) -> Result<(), ChannelError> {
// TODO: Use Slack Web API to post message
// - If in thread, reply in thread
// - Support blocks for rich formatting
Err(ChannelError::SendFailed {
name: "slack".to_string(),
reason: "Slack channel not yet implemented".to_string(),
})
}
async fn health_check(&self) -> Result<(), ChannelError> {
Err(ChannelError::HealthCheckFailed {
name: "slack".to_string(),
})
}
}
-60
View File
@@ -1,60 +0,0 @@
//! Telegram channel integration.
//!
//! TODO: Implement full Telegram bot integration using teloxide.
use async_trait::async_trait;
use crate::channels::{Channel, IncomingMessage, MessageStream, OutgoingResponse};
use crate::config::TelegramConfig;
use crate::error::ChannelError;
/// Telegram channel for Telegram bot integration.
pub struct TelegramChannel {
#[allow(dead_code)]
config: TelegramConfig,
}
impl TelegramChannel {
/// Create a new Telegram channel.
pub fn new(config: TelegramConfig) -> Self {
Self { config }
}
}
#[async_trait]
impl Channel for TelegramChannel {
fn name(&self) -> &str {
"telegram"
}
async fn start(&self) -> Result<MessageStream, ChannelError> {
// TODO: Implement Telegram long polling or webhook
// 1. Use teloxide to connect to Telegram Bot API
// 2. Handle incoming messages
// 3. Convert to IncomingMessage format
Err(ChannelError::StartupFailed {
name: "telegram".to_string(),
reason: "Telegram channel not yet implemented".to_string(),
})
}
async fn respond(
&self,
_msg: &IncomingMessage,
_response: OutgoingResponse,
) -> Result<(), ChannelError> {
// TODO: Use Telegram Bot API to send message
// - Reply to the same chat
// - Support reply_to_message_id for threaded replies
Err(ChannelError::SendFailed {
name: "telegram".to_string(),
reason: "Telegram channel not yet implemented".to_string(),
})
}
async fn health_check(&self) -> Result<(), ChannelError> {
Err(ChannelError::HealthCheckFailed {
name: "telegram".to_string(),
})
}
}