Files
owlen/crates/owlen-tui/src/app/messages.rs
vikingowl ea04a25ed6 feat(app): add generation orchestration, messaging, and core App struct
Introduce `App` with provider manager, unbounded message channel, and active generation tracking.
Add `AppMessage` enum covering UI events, generation lifecycle (start, chunk, complete, error), model refresh, and provider status updates.
Implement `start_generation` to spawn asynchronous generation tasks, stream results, handle errors, and abort any previous generation.
Expose the new module via `pub mod app` in the crate root.
2025-10-16 20:39:53 +02:00

42 lines
1.2 KiB
Rust

use crossterm::event::KeyEvent;
use owlen_core::provider::{GenerateChunk, GenerateRequest, ProviderStatus};
use uuid::Uuid;
/// Messages exchanged between the UI event loop and background workers.
#[derive(Debug)]
pub enum AppMessage {
/// User input event bubbled up from the terminal layer.
KeyPress(KeyEvent),
/// Terminal resize notification.
Resize { width: u16, height: u16 },
/// Periodic tick used to drive animations.
Tick,
/// Initiate a new text generation request.
GenerateStart {
request_id: Uuid,
provider_id: String,
request: GenerateRequest,
},
/// Streamed response chunk from the active generation task.
GenerateChunk {
request_id: Uuid,
chunk: GenerateChunk,
},
/// Generation finished successfully.
GenerateComplete { request_id: Uuid },
/// Generation failed or was aborted.
GenerateError {
request_id: Option<Uuid>,
message: String,
},
/// Trigger a background refresh of available models.
ModelsRefresh,
/// New model list data is ready.
ModelsUpdated,
/// Provider health status update.
ProviderStatus {
provider_id: String,
status: ProviderStatus,
},
}