From 4fb7295e3b1be4a70bd654a9e1f29684c1378316 Mon Sep 17 00:00:00 2001 From: 190km Date: Wed, 25 Mar 2026 00:13:27 +0100 Subject: [PATCH 01/21] feat: add Terminal Bus, APC protocol, and orchestration types MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Core orchestration system — 2310 lines of new code: - src/bus/types.rs: TerminalHandle, TerminalStatus, TerminalRole, TerminalGroup, ContextEntry, BusEvent, EventFilter, TerminalInfo - src/bus/mod.rs: TerminalBus with terminal registry, command injection, output reading, group management, shared context, event system - src/bus/apc.rs: APC escape sequence parser and command dispatcher. Protocol: \x1b_VOID;{id};{method};{json}\x1b\ through the PTY pipe Not yet wired into VoidApp or the PTY reader thread — this is the foundation that the integration layer will build on. Co-Authored-By: Claude Opus 4.6 (1M context) --- src/bus/apc.rs | 584 +++++++++++++++++++++++ src/bus/mod.rs | 1168 ++++++++++++++++++++++++++++++++++++++++++++++ src/bus/types.rs | 542 +++++++++++++++++++++ src/main.rs | 1 + 4 files changed, 2295 insertions(+) create mode 100644 src/bus/apc.rs create mode 100644 src/bus/mod.rs create mode 100644 src/bus/types.rs diff --git a/src/bus/apc.rs b/src/bus/apc.rs new file mode 100644 index 0000000..39ad41c --- /dev/null +++ b/src/bus/apc.rs @@ -0,0 +1,584 @@ +// src/bus/apc.rs +// +// APC escape sequence interception and command handling for the Terminal Bus. +// +// Protocol: +// Request: \x1b_VOID;{json_request}\x1b\\ +// Response: \x1b_VOID;{json_response}\x1b\\ + +use std::sync::{Arc, Mutex}; + +use serde_json::{json, Value}; +use uuid::Uuid; + +use super::TerminalBus; + +// --------------------------------------------------------------------------- +// Constants +// --------------------------------------------------------------------------- + +const APC_START: &[u8] = b"\x1b_VOID;"; +const APC_END: u8 = 0x9C; // ST (String Terminator) +const APC_END_ALT: &[u8] = b"\x1b\\"; // ESC \ (alternative ST) + +// --------------------------------------------------------------------------- +// APC Command Extraction +// --------------------------------------------------------------------------- + +/// Scan a byte buffer for `\x1b_VOID;...ST` sequences. +/// +/// Returns (passthrough_bytes, extracted_command_payloads). +/// Handles partial sequences across read boundaries using the accumulator. +pub fn extract_void_commands(data: &[u8], accum: &mut Vec) -> (Vec, Vec) { + let mut passthrough = Vec::with_capacity(data.len()); + let mut commands = Vec::new(); + let mut i = 0; + + while i < data.len() { + // If we're accumulating a partial APC sequence + if !accum.is_empty() { + // Look for ST (0x9C) or ESC \ to end the sequence + if data[i] == APC_END { + // Complete — extract payload (skip the "VOID;" prefix already consumed) + if let Ok(payload) = std::str::from_utf8(accum) { + commands.push(payload.to_string()); + } + accum.clear(); + i += 1; + continue; + } + if data[i] == 0x1b && i + 1 < data.len() && data[i + 1] == b'\\' { + // ESC \ terminator + if let Ok(payload) = std::str::from_utf8(accum) { + commands.push(payload.to_string()); + } + accum.clear(); + i += 2; + continue; + } + accum.push(data[i]); + i += 1; + continue; + } + + // Check for APC_START at current position + if data[i] == 0x1b + && i + APC_START.len() <= data.len() + && &data[i..i + APC_START.len()] == APC_START + { + // Found start marker — begin accumulating (skip the marker itself) + i += APC_START.len(); + continue; + } + + // Check for partial APC_START at end of buffer + if data[i] == 0x1b && i + APC_START.len() > data.len() { + // Could be a partial match — check what we have + let remaining = &data[i..]; + if APC_START.starts_with(remaining) { + // Partial match at buffer boundary — save for next read + accum.extend_from_slice(remaining); + break; + } + } + + // Normal byte — pass through to VTE + passthrough.push(data[i]); + i += 1; + } + + (passthrough, commands) +} + +// --------------------------------------------------------------------------- +// APC Command Handling +// --------------------------------------------------------------------------- + +/// Parse an APC payload, dispatch to the bus, return the JSON response. +/// +/// Payload format: `{"jsonrpc":"2.0","id":1,"method":"list_terminals","params":{}}` +/// Response format: `\x1b_VOID;{"jsonrpc":"2.0","id":1,"result":{...}}\x1b\\` +pub fn handle_bus_command( + payload: &str, + caller_terminal: Uuid, + bus: &Arc>, +) -> Vec { + let request: Value = match serde_json::from_str(payload) { + Ok(v) => v, + Err(_) => { + let err = json!({ + "jsonrpc": "2.0", + "id": null, + "error": {"code": -32700, "message": "parse error"} + }); + return format_apc_response(&err); + } + }; + + let id = request["id"].clone(); + let method = request["method"].as_str().unwrap_or(""); + let params = &request["params"]; + + let response = dispatch_bus_method(method, params, Some(caller_terminal), bus); + + let response_json = match response { + Ok(result) => json!({ + "jsonrpc": "2.0", + "id": id, + "result": result, + }), + Err((code, message)) => json!({ + "jsonrpc": "2.0", + "id": id, + "error": {"code": code, "message": message}, + }), + }; + + format_apc_response(&response_json) +} + +/// Wrap a JSON value in APC framing: ESC _ VOID; ... ESC \ +fn format_apc_response(json: &Value) -> Vec { + let mut out = Vec::new(); + out.extend_from_slice(b"\x1b_VOID;"); + out.extend_from_slice(json.to_string().as_bytes()); + out.extend_from_slice(b"\x1b\\"); + out +} + +/// Route a JSON-RPC method to the appropriate bus operation. +fn dispatch_bus_method( + method: &str, + params: &Value, + caller_terminal: Option, + bus: &Arc>, +) -> Result { + match method { + "list_terminals" => { + let bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + let terminals = bus.list_terminals(); + let list: Vec = terminals + .iter() + .map(|t| { + json!({ + "id": t.id.to_string(), + "title": t.title, + "alive": t.alive, + "workspace_id": t.workspace_id.to_string(), + "group_id": t.group_id.map(|g| g.to_string()), + "group_name": t.group_name, + "role": format!("{:?}", t.role), + "status": t.status.label(), + "last_output_ms": t.last_output_elapsed_ms, + "last_input_ms": t.last_input_elapsed_ms, + }) + }) + .collect(); + Ok(json!({ "terminals": list })) + } + + "get_terminal" => { + let id_str = params["id"] + .as_str() + .ok_or((-32602, "missing 'id' param".to_string()))?; + let id = Uuid::parse_str(id_str).map_err(|_| (-32602, "invalid UUID".to_string()))?; + let bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + let info = bus + .get_terminal(id) + .ok_or((-32000, format!("terminal not found: {}", id)))?; + Ok(json!({ + "id": info.id.to_string(), + "title": info.title, + "alive": info.alive, + "workspace_id": info.workspace_id.to_string(), + "group_id": info.group_id.map(|g| g.to_string()), + "group_name": info.group_name, + "role": format!("{:?}", info.role), + "status": info.status.label(), + "last_output_ms": info.last_output_elapsed_ms, + "last_input_ms": info.last_input_elapsed_ms, + })) + } + + "inject" => { + let target_str = params["target"] + .as_str() + .ok_or((-32602, "missing 'target' param".to_string()))?; + let target = Uuid::parse_str(target_str) + .map_err(|_| (-32602, "invalid target UUID".to_string()))?; + let command = params["command"] + .as_str() + .ok_or((-32602, "missing 'command' param".to_string()))?; + let raw = params["raw"].as_bool().unwrap_or(false); + + let mut bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + + if raw { + bus.inject_bytes(target, command.as_bytes(), caller_terminal) + .map_err(|e| (-32000, e.to_string()))?; + } else { + bus.send_command(target, command, caller_terminal) + .map_err(|e| (-32000, e.to_string()))?; + } + + Ok(json!({ "ok": true })) + } + + "read_output" => { + let target_str = params["target"] + .as_str() + .ok_or((-32602, "missing 'target' param".to_string()))?; + let target = Uuid::parse_str(target_str) + .map_err(|_| (-32602, "invalid target UUID".to_string()))?; + let line_count = params["lines"].as_u64().unwrap_or(50) as usize; + let source = params["source"].as_str().unwrap_or("scrollback"); + + let bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + + let lines = if source == "screen" { + bus.read_screen(target) + .map_err(|e| (-32000, e.to_string()))? + } else { + bus.read_output(target, line_count) + .map_err(|e| (-32000, e.to_string()))? + }; + + Ok(json!({ + "lines": lines, + "total_lines": lines.len(), + })) + } + + "wait_idle" => { + let target_str = params["target"] + .as_str() + .ok_or((-32602, "missing 'target' param".to_string()))?; + let target = Uuid::parse_str(target_str) + .map_err(|_| (-32602, "invalid target UUID".to_string()))?; + let timeout_secs = params["timeout_secs"].as_f64().unwrap_or(120.0); + let quiet_secs = params["quiet_secs"].as_f64().unwrap_or(2.0); + + // Get handle outside the bus lock so we don't hold it during polling + let handle = { + let bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + bus.get_handle(target) + .ok_or((-32000, format!("terminal not found: {}", target)))? + }; + + let start = std::time::Instant::now(); + let timeout = std::time::Duration::from_secs_f64(timeout_secs); + let quiet = std::time::Duration::from_secs_f64(quiet_secs); + + let idle = TerminalBus::wait_idle_handle(&handle, timeout, quiet); + let elapsed = start.elapsed().as_secs_f64(); + + Ok(json!({ + "idle": idle, + "elapsed_secs": elapsed, + })) + } + + "set_status" => { + let target_str = params["target"] + .as_str() + .ok_or((-32602, "missing 'target' param".to_string()))?; + let target = Uuid::parse_str(target_str) + .map_err(|_| (-32602, "invalid target UUID".to_string()))?; + let status_str = params["status"] + .as_str() + .ok_or((-32602, "missing 'status' param".to_string()))?; + + let status = match status_str { + "idle" => super::types::TerminalStatus::Idle, + "running" => super::types::TerminalStatus::Running { + command: params["command"].as_str().map(|s| s.to_string()), + started_at: std::time::Instant::now(), + }, + "waiting" => super::types::TerminalStatus::Waiting { + reason: params["reason"].as_str().map(|s| s.to_string()), + }, + "done" => super::types::TerminalStatus::Done { + finished_at: std::time::Instant::now(), + }, + "error" => super::types::TerminalStatus::Error { + message: params["message"] + .as_str() + .unwrap_or("unknown error") + .to_string(), + occurred_at: std::time::Instant::now(), + }, + _ => return Err((-32602, format!("invalid status: {}", status_str))), + }; + + let mut bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + bus.set_status(target, status, caller_terminal) + .map_err(|e| (-32006, e.to_string()))?; + + Ok(json!({ "ok": true })) + } + + "group_create" => { + let name = params["name"] + .as_str() + .ok_or((-32602, "missing 'name' param".to_string()))?; + let mode = params["mode"].as_str().unwrap_or("orchestrated"); + let caller = caller_terminal.ok_or((-32602, "no caller terminal".to_string()))?; + + let mut bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + + let group_id = if mode == "peer" { + bus.create_peer_group(name, caller) + .map_err(|e| (-32000, e.to_string()))? + } else { + bus.create_orchestrated_group(name, caller) + .map_err(|e| (-32000, e.to_string()))? + }; + + Ok(json!({ + "group_id": group_id.to_string(), + "name": name, + "mode": mode, + })) + } + + "group_join" => { + let group_name = params["group"] + .as_str() + .ok_or((-32602, "missing 'group' param".to_string()))?; + let caller = caller_terminal.ok_or((-32602, "no caller terminal".to_string()))?; + + let mut bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + bus.join_group_by_name(caller, group_name) + .map_err(|e| (-32000, e.to_string()))?; + + Ok(json!({ "ok": true })) + } + + "group_leave" => { + let caller = caller_terminal.ok_or((-32602, "no caller terminal".to_string()))?; + + let mut bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + bus.leave_group(caller) + .map_err(|e| (-32000, e.to_string()))?; + + Ok(json!({ "ok": true })) + } + + "group_dissolve" => { + let group_name = params["group"] + .as_str() + .ok_or((-32602, "missing 'group' param".to_string()))?; + + let mut bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + let group_id = bus + .get_group_by_name(group_name) + .map(|g| g.id) + .ok_or((-32002, format!("group not found: {}", group_name)))?; + bus.dissolve_group(group_id); + + Ok(json!({ "ok": true })) + } + + "group_list" => { + let bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + let groups = bus.list_groups(); + let list: Vec = groups + .iter() + .map(|g| { + let members: Vec = g + .members + .iter() + .map(|m| { + json!({ + "id": m.terminal_id.to_string(), + "title": m.title, + "role": format!("{:?}", m.role), + "status": m.status.label(), + "alive": m.alive, + }) + }) + .collect(); + json!({ + "id": g.id.to_string(), + "name": g.name, + "mode": g.mode, + "orchestrator_id": g.orchestrator_id.map(|o| o.to_string()), + "member_count": g.member_count, + "members": members, + }) + }) + .collect(); + Ok(json!({ "groups": list })) + } + + "group_broadcast" => { + let group_name = params["group"] + .as_str() + .ok_or((-32602, "missing 'group' param".to_string()))?; + let command = params["command"] + .as_str() + .ok_or((-32602, "missing 'command' param".to_string()))?; + let caller = caller_terminal.ok_or((-32602, "no caller terminal".to_string()))?; + + let mut bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + let group_id = bus + .get_group_by_name(group_name) + .map(|g| g.id) + .ok_or((-32002, format!("group not found: {}", group_name)))?; + let targets = bus + .broadcast_command(group_id, command, caller) + .map_err(|e| (-32000, e.to_string()))?; + + Ok(json!({ + "ok": true, + "targets": targets.iter().map(|t| t.to_string()).collect::>(), + })) + } + + "context_set" => { + let key = params["key"] + .as_str() + .ok_or((-32602, "missing 'key' param".to_string()))?; + let value = params["value"] + .as_str() + .ok_or((-32602, "missing 'value' param".to_string()))?; + let ttl = params["ttl_secs"] + .as_f64() + .map(|s| std::time::Duration::from_secs_f64(s)); + let caller = caller_terminal.ok_or((-32602, "no caller terminal".to_string()))?; + + let mut bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + bus.context_set(key, value, caller, ttl) + .map_err(|e| (-32000, e.to_string()))?; + + Ok(json!({ "ok": true })) + } + + "context_get" => { + let key = params["key"] + .as_str() + .ok_or((-32602, "missing 'key' param".to_string()))?; + + let mut bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + let entry = bus.context_get_entry(key); + + match entry { + Some(e) => Ok(json!({ + "key": key, + "value": e.value, + "source": e.source.to_string(), + "updated_at": format!("{:?}", e.updated_at), + })), + None => Ok(json!({ "key": key, "value": null })), + } + } + + "context_list" => { + let prefix = params["prefix"].as_str().unwrap_or(""); + + let mut bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + let entries = bus.context_list(); + + let filtered: Vec = entries + .iter() + .filter(|(k, _)| prefix.is_empty() || k.starts_with(prefix)) + .map(|(k, v)| { + json!({ + "key": k, + "value": v.value, + "source": v.source.to_string(), + }) + }) + .collect(); + + Ok(json!({ "entries": filtered })) + } + + "context_delete" => { + let key = params["key"] + .as_str() + .ok_or((-32602, "missing 'key' param".to_string()))?; + + let mut bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + let deleted = bus.context_delete(key); + + Ok(json!({ "deleted": deleted })) + } + + "message_send" => { + let to_str = params["to"] + .as_str() + .ok_or((-32602, "missing 'to' param".to_string()))?; + let to = + Uuid::parse_str(to_str).map_err(|_| (-32602, "invalid 'to' UUID".to_string()))?; + let payload = params["payload"] + .as_str() + .ok_or((-32602, "missing 'payload' param".to_string()))?; + let caller = caller_terminal.ok_or((-32602, "no caller terminal".to_string()))?; + + let mut bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + bus.send_message(caller, to, payload) + .map_err(|e| (-32000, e.to_string()))?; + + Ok(json!({ "ok": true })) + } + + "message_list" => { + let caller = caller_terminal.ok_or((-32602, "no caller terminal".to_string()))?; + + let mut bus = bus + .lock() + .map_err(|_| (-32007, "lock failed".to_string()))?; + let messages = bus.list_messages(caller); + + let list: Vec = messages + .iter() + .map(|(from, payload, time)| { + json!({ + "from": from.to_string(), + "payload": payload, + "time": format!("{:?}", time), + }) + }) + .collect(); + + Ok(json!({ "messages": list })) + } + + _ => Err((-32601, format!("method not found: {}", method))), + } +} diff --git a/src/bus/mod.rs b/src/bus/mod.rs new file mode 100644 index 0000000..7c9bc8e --- /dev/null +++ b/src/bus/mod.rs @@ -0,0 +1,1168 @@ +// src/bus/mod.rs + +pub mod apc; +pub mod types; + +use std::collections::HashMap; +use std::io::Write; +use std::sync::atomic::Ordering; +use std::sync::mpsc; +use std::sync::{Arc, Mutex}; +use std::time::{Duration, Instant, SystemTime}; + +use alacritty_terminal::grid::Dimensions; +use uuid::Uuid; + +use types::*; + +// --------------------------------------------------------------------------- +// Constants +// --------------------------------------------------------------------------- + +/// How long a terminal must be silent before it is considered idle. +const IDLE_THRESHOLD: Duration = Duration::from_secs(2); + +/// Maximum number of events buffered per subscriber before dropping. +const EVENT_CHANNEL_CAPACITY: usize = 256; + +/// Maximum number of lines that can be read in a single read_output call. +const MAX_READ_LINES: usize = 10_000; + +// --------------------------------------------------------------------------- +// Terminal Bus +// --------------------------------------------------------------------------- + +/// The central registry and communication hub for all terminals. +/// +/// Thread-safe: all public methods acquire internal locks as needed. +/// The bus itself is behind `Arc>` in VoidApp. +pub struct TerminalBus { + /// All registered terminals, keyed by UUID. + terminals: HashMap, + + /// Terminal status (separate from TerminalHandle to avoid nested locking). + statuses: HashMap, + + /// All active groups, keyed by UUID. + groups: HashMap, + + /// Mapping from terminal ID to its group ID (if any). + terminal_to_group: HashMap, + + /// Shared context store. + context: HashMap, + + /// Event subscribers. Each subscriber gets a Sender end. + /// Subscribers are identified by a unique ID for cleanup. + subscribers: Vec<(Uuid, EventFilter, mpsc::Sender)>, +} + +impl TerminalBus { + /// Create a new, empty bus. + pub fn new() -> Self { + Self { + terminals: HashMap::new(), + statuses: HashMap::new(), + groups: HashMap::new(), + terminal_to_group: HashMap::new(), + context: HashMap::new(), + subscribers: Vec::new(), + } + } + + // ----------------------------------------------------------------------- + // Terminal Registration + // ----------------------------------------------------------------------- + + /// Register a terminal with the bus. + /// + /// Called by `Workspace::spawn_terminal()` after creating a PtyHandle. + /// The `handle` is built from cloned `Arc`s of the PtyHandle's fields. + pub fn register(&mut self, handle: TerminalHandle) { + let id = handle.id; + let title = handle.title.lock().map(|t| t.clone()).unwrap_or_default(); + + self.statuses.insert(id, TerminalStatus::Idle); + self.terminals.insert(id, handle); + + self.emit(BusEvent::TerminalRegistered { + terminal_id: id, + title, + }); + } + + /// Deregister a terminal from the bus. + /// + /// Called by `Workspace::close_panel()` or when a terminal's child process exits. + /// Automatically removes the terminal from its group. + pub fn deregister(&mut self, terminal_id: Uuid) { + // Remove from group first + if let Some(group_id) = self.terminal_to_group.remove(&terminal_id) { + self.remove_from_group_inner(terminal_id, group_id); + } + + self.terminals.remove(&terminal_id); + self.statuses.remove(&terminal_id); + + self.emit(BusEvent::TerminalExited { terminal_id }); + } + + // ----------------------------------------------------------------------- + // Terminal Queries + // ----------------------------------------------------------------------- + + /// List all registered terminals with their current info. + pub fn list_terminals(&self) -> Vec { + self.terminals + .values() + .map(|h| self.build_terminal_info(h)) + .collect() + } + + /// Get info for a specific terminal. + pub fn get_terminal(&self, id: Uuid) -> Option { + self.terminals.get(&id).map(|h| self.build_terminal_info(h)) + } + + /// Check if a terminal is alive. + pub fn is_alive(&self, id: Uuid) -> Option { + self.terminals + .get(&id) + .map(|h| h.alive.load(Ordering::Relaxed)) + } + + fn build_terminal_info(&self, handle: &TerminalHandle) -> TerminalInfo { + let title = handle.title.lock().map(|t| t.clone()).unwrap_or_default(); + let alive = handle.alive.load(Ordering::Relaxed); + let status = self.statuses.get(&handle.id).cloned().unwrap_or_default(); + let group_id = self.terminal_to_group.get(&handle.id).copied(); + let (group_name, role) = if let Some(gid) = group_id { + let group = self.groups.get(&gid); + let name = group.map(|g| g.name.clone()); + let role = group + .and_then(|g| g.role_of(handle.id)) + .unwrap_or(TerminalRole::Standalone); + (name, role) + } else { + (None, TerminalRole::Standalone) + }; + let last_output_elapsed_ms = handle + .last_output_at + .lock() + .map(|t| t.elapsed().as_millis() as u64) + .unwrap_or(0); + let last_input_elapsed_ms = handle + .last_input_at + .lock() + .map(|t| t.elapsed().as_millis() as u64) + .unwrap_or(0); + + TerminalInfo { + id: handle.id, + title, + alive, + workspace_id: handle.workspace_id, + group_id, + group_name, + role, + status, + last_output_elapsed_ms, + last_input_elapsed_ms, + } + } + + // ----------------------------------------------------------------------- + // Command Injection + // ----------------------------------------------------------------------- + + /// Inject bytes into a terminal's PTY stdin. + /// + /// This is the primary mechanism for one terminal to send commands to another. + /// The bytes are written directly to the PTY writer, exactly as if the user + /// had typed them. + /// + /// To send a command and press Enter: `inject_bytes(target, b"cargo test\r")` + /// To send Ctrl+C: `inject_bytes(target, b"\x03")` + /// + /// # Arguments + /// * `target` - UUID of the target terminal + /// * `bytes` - Raw bytes to inject (including \r for Enter, \x03 for Ctrl+C, etc.) + /// * `source` - UUID of the terminal that initiated the injection (for audit trail) + /// + /// # Errors + /// Returns an error if the target terminal is not found, is dead, or the write fails. + pub fn inject_bytes( + &mut self, + target: Uuid, + bytes: &[u8], + source: Option, + ) -> Result<(), BusError> { + let handle = self + .terminals + .get(&target) + .ok_or(BusError::TerminalNotFound(target))?; + + if !handle.alive.load(Ordering::Relaxed) { + return Err(BusError::TerminalDead(target)); + } + + // Permission check: in orchestrated mode, only the orchestrator can inject + // into workers. Workers cannot inject into the orchestrator or other workers. + if let Some(src) = source { + self.check_injection_permission(src, target)?; + } + + // Write to PTY + let mut writer = handle + .writer + .lock() + .map_err(|_| BusError::LockFailed("writer"))?; + writer + .write_all(bytes) + .map_err(|e| BusError::WriteFailed(e.to_string()))?; + writer + .flush() + .map_err(|e| BusError::WriteFailed(e.to_string()))?; + drop(writer); + + // Update status to Running + let command_str = String::from_utf8_lossy(bytes) + .trim_end_matches('\r') + .trim_end_matches('\n') + .to_string(); + + if !command_str.is_empty() && bytes != b"\x03" { + self.statuses.insert( + target, + TerminalStatus::Running { + command: Some(command_str.clone()), + started_at: Instant::now(), + }, + ); + } + + self.emit(BusEvent::CommandInjected { + source, + target, + command: command_str, + }); + + Ok(()) + } + + /// Send a command string to a terminal (convenience wrapper). + /// + /// Appends \r (Enter) to the command. Use `inject_bytes` for raw byte control. + pub fn send_command( + &mut self, + target: Uuid, + command: &str, + source: Option, + ) -> Result<(), BusError> { + let mut bytes = command.as_bytes().to_vec(); + bytes.push(b'\r'); + self.inject_bytes(target, &bytes, source) + } + + /// Send Ctrl+C (SIGINT) to a terminal. + pub fn send_interrupt(&mut self, target: Uuid, source: Option) -> Result<(), BusError> { + self.inject_bytes(target, b"\x03", source) + } + + /// Check whether `source` is allowed to inject into `target`. + fn check_injection_permission(&self, source: Uuid, target: Uuid) -> Result<(), BusError> { + let source_group = self.terminal_to_group.get(&source); + let target_group = self.terminal_to_group.get(&target); + + match (source_group, target_group) { + // Both in the same group + (Some(sg), Some(tg)) if sg == tg => { + let group = &self.groups[sg]; + match &group.mode { + GroupMode::Orchestrated { orchestrator } => { + // Orchestrator can inject into any worker + if *orchestrator == source { + Ok(()) + } + // Workers can send messages to orchestrator (limited) + else if *orchestrator == target { + Ok(()) + } + // Workers cannot inject into other workers + else { + Err(BusError::PermissionDenied( + "workers cannot inject into other workers".into(), + )) + } + } + GroupMode::Peer => { + // Peers can inject into any other peer + Ok(()) + } + } + } + // Not in the same group — allow (no group restrictions apply) + _ => Ok(()), + } + } + + // ----------------------------------------------------------------------- + // Output Reading + // ----------------------------------------------------------------------- + + /// Read the visible screen content of a terminal. + /// + /// Returns the text currently displayed on the terminal screen, line by line. + /// This is equivalent to what the user sees in the terminal panel. + /// + /// # Arguments + /// * `target` - UUID of the terminal to read + /// + /// # Returns + /// A vector of strings, one per screen line. + pub fn read_screen(&self, target: Uuid) -> Result, BusError> { + let handle = self + .terminals + .get(&target) + .ok_or(BusError::TerminalNotFound(target))?; + + let term = handle + .term + .lock() + .map_err(|_| BusError::LockFailed("term"))?; + + let grid = term.grid(); + let cols = grid.columns(); + let lines = grid.screen_lines(); + + let mut result = Vec::with_capacity(lines); + + // Build lines from the grid + for line_idx in 0..lines { + let mut line_str = String::with_capacity(cols); + for col in 0..cols { + let point = alacritty_terminal::index::Point::new( + alacritty_terminal::index::Line(line_idx as i32), + alacritty_terminal::index::Column(col), + ); + let cell = &grid[point]; + let c = cell.c; + if c == '\0' { + line_str.push(' '); + } else { + line_str.push(c); + } + } + result.push(line_str.trim_end().to_string()); + } + + Ok(result) + } + + /// Read the last N lines of output, including scrollback. + /// + /// This reads from the terminal's scrollback buffer, not just the visible screen. + /// Useful for capturing command output that has scrolled off screen. + /// + /// # Arguments + /// * `target` - UUID of the terminal to read + /// * `lines` - Number of lines to read (from the bottom) + /// + /// # Returns + /// A vector of strings, one per line, most recent last. + pub fn read_output(&self, target: Uuid, lines: usize) -> Result, BusError> { + let lines = lines.min(MAX_READ_LINES); + + let handle = self + .terminals + .get(&target) + .ok_or(BusError::TerminalNotFound(target))?; + + let term = handle + .term + .lock() + .map_err(|_| BusError::LockFailed("term"))?; + + let grid = term.grid(); + let total_lines = grid.screen_lines() + grid.history_size(); + let cols = grid.columns(); + let read_count = lines.min(total_lines); + + let mut result = Vec::with_capacity(read_count); + + // Read from the grid. In alacritty_terminal, line 0 is the topmost + // visible line, negative lines are scrollback. + // We want the last `read_count` lines of the entire buffer. + + let screen_lines = grid.screen_lines(); + let history = grid.history_size(); + + // Start from (screen_lines - read_count) counting from the bottom + let start_offset = if read_count <= screen_lines { + // All within visible screen + (screen_lines - read_count) as i32 + } else { + // Need to go into scrollback + -((read_count - screen_lines) as i32) + }; + + for i in 0..read_count { + let line_idx = start_offset + i as i32; + let mut line_str = String::with_capacity(cols); + + for col in 0..cols { + let point = alacritty_terminal::index::Point::new( + alacritty_terminal::index::Line(line_idx), + alacritty_terminal::index::Column(col), + ); + // Bounds check before accessing + if line_idx >= -(history as i32) && line_idx < screen_lines as i32 { + let cell = &grid[point]; + let c = cell.c; + if c == '\0' { + line_str.push(' '); + } else { + line_str.push(c); + } + } + } + + result.push(line_str.trim_end().to_string()); + } + + Ok(result) + } + + /// Read the full screen content as a single string (lines joined with \n). + pub fn read_screen_text(&self, target: Uuid) -> Result { + let lines = self.read_screen(target)?; + Ok(lines.join("\n")) + } + + /// Read the last N lines as a single string (lines joined with \n). + pub fn read_output_text(&self, target: Uuid, lines: usize) -> Result { + let output = self.read_output(target, lines)?; + Ok(output.join("\n")) + } + + // ----------------------------------------------------------------------- + // Idle Detection + // ----------------------------------------------------------------------- + + /// Check if a terminal appears idle (no output for `IDLE_THRESHOLD`). + pub fn is_idle(&self, target: Uuid) -> Result { + let handle = self + .terminals + .get(&target) + .ok_or(BusError::TerminalNotFound(target))?; + + let elapsed = handle + .last_output_at + .lock() + .map(|t| t.elapsed()) + .map_err(|_| BusError::LockFailed("last_output_at"))?; + + Ok(elapsed >= IDLE_THRESHOLD) + } + + /// Block until a terminal becomes idle or a timeout is reached. + /// + /// This is a polling implementation. The APC handler calls this in the + /// reader thread to avoid blocking the bus mutex. + /// + /// # Arguments + /// * `target` - UUID of the terminal to watch + /// * `timeout` - Maximum time to wait + /// * `quiet_period` - How long the terminal must be silent to be considered idle + /// + /// # Returns + /// `true` if the terminal became idle, `false` if the timeout was reached. + pub fn wait_idle_handle( + handle: &TerminalHandle, + timeout: Duration, + quiet_period: Duration, + ) -> bool { + let deadline = Instant::now() + timeout; + + loop { + if Instant::now() >= deadline { + return false; + } + + let elapsed = handle + .last_output_at + .lock() + .map(|t| t.elapsed()) + .unwrap_or(Duration::ZERO); + + if elapsed >= quiet_period { + return true; + } + + // Don't hold any locks while sleeping + std::thread::sleep(Duration::from_millis(100)); + } + } + + /// Get a clone of a terminal handle for use outside the bus lock. + /// + /// This is used by `wait_idle` to poll without holding the bus mutex. + pub fn get_handle(&self, target: Uuid) -> Option { + self.terminals.get(&target).cloned() + } + + // ----------------------------------------------------------------------- + // Status Management + // ----------------------------------------------------------------------- + + /// Get the current status of a terminal. + pub fn get_status(&self, target: Uuid) -> Option<&TerminalStatus> { + self.statuses.get(&target) + } + + /// Manually set the status of a terminal. + /// + /// Used by the orchestrator to mark terminals as waiting, done, or error. + /// Also used internally after command injection. + pub fn set_status( + &mut self, + target: Uuid, + status: TerminalStatus, + source: Option, + ) -> Result<(), BusError> { + if !self.terminals.contains_key(&target) { + return Err(BusError::TerminalNotFound(target)); + } + + // Permission: only orchestrator or the terminal itself can set status + if let Some(src) = source { + if src != target { + let target_group = self.terminal_to_group.get(&target); + if let Some(gid) = target_group { + let group = &self.groups[gid]; + if !group.is_orchestrator(src) { + return Err(BusError::PermissionDenied( + "only orchestrator can set worker status".into(), + )); + } + } + } + } + + let old = self + .statuses + .get(&target) + .map(|s| s.label().to_string()) + .unwrap_or_default(); + let new_label = status.label().to_string(); + + self.statuses.insert(target, status); + + if old != new_label { + self.emit(BusEvent::StatusChanged { + terminal_id: target, + old_status: old, + new_status: new_label, + }); + } + + Ok(()) + } + + /// Auto-update statuses based on output activity. + /// + /// Called periodically by VoidApp::update() (every frame). + /// Transitions: Running -> Done (if idle for IDLE_THRESHOLD after a command). + pub fn tick_statuses(&mut self) { + let mut transitions = Vec::new(); + + for (id, status) in &self.statuses { + if let TerminalStatus::Running { started_at, .. } = status { + if let Some(handle) = self.terminals.get(id) { + let output_elapsed = handle + .last_output_at + .lock() + .map(|t| t.elapsed()) + .unwrap_or(Duration::ZERO); + + // Terminal has been silent for IDLE_THRESHOLD after a command + if output_elapsed >= IDLE_THRESHOLD && started_at.elapsed() > IDLE_THRESHOLD { + transitions.push(( + *id, + TerminalStatus::Done { + finished_at: Instant::now(), + }, + )); + } + } + } + } + + for (id, new_status) in transitions { + let old_label = self + .statuses + .get(&id) + .map(|s| s.label().to_string()) + .unwrap_or_default(); + let new_label = new_status.label().to_string(); + self.statuses.insert(id, new_status); + if old_label != new_label { + self.emit(BusEvent::StatusChanged { + terminal_id: id, + old_status: old_label, + new_status: new_label, + }); + } + } + } + + // ----------------------------------------------------------------------- + // Group Management + // ----------------------------------------------------------------------- + + /// Create a new group in orchestrated mode. + /// + /// The creating terminal becomes the orchestrator. + pub fn create_orchestrated_group( + &mut self, + name: &str, + orchestrator: Uuid, + ) -> Result { + if !self.terminals.contains_key(&orchestrator) { + return Err(BusError::TerminalNotFound(orchestrator)); + } + + // Check if terminal is already in a group + if self.terminal_to_group.contains_key(&orchestrator) { + return Err(BusError::AlreadyInGroup(orchestrator)); + } + + // Check for duplicate group name + if self.groups.values().any(|g| g.name == name) { + return Err(BusError::GroupNameTaken(name.to_string())); + } + + let group = TerminalGroup::new_orchestrated(name, orchestrator); + let group_id = group.id; + + self.terminal_to_group.insert(orchestrator, group_id); + self.groups.insert(group_id, group); + + self.emit(BusEvent::GroupCreated { + group_id, + name: name.to_string(), + mode: "orchestrated".to_string(), + }); + + self.emit(BusEvent::GroupMemberJoined { + group_id, + terminal_id: orchestrator, + role: "orchestrator".to_string(), + }); + + Ok(group_id) + } + + /// Create a new group in peer mode. + pub fn create_peer_group(&mut self, name: &str, creator: Uuid) -> Result { + if !self.terminals.contains_key(&creator) { + return Err(BusError::TerminalNotFound(creator)); + } + + if self.terminal_to_group.contains_key(&creator) { + return Err(BusError::AlreadyInGroup(creator)); + } + + if self.groups.values().any(|g| g.name == name) { + return Err(BusError::GroupNameTaken(name.to_string())); + } + + let group = TerminalGroup::new_peer(name, creator); + let group_id = group.id; + + self.terminal_to_group.insert(creator, group_id); + self.groups.insert(group_id, group); + + self.emit(BusEvent::GroupCreated { + group_id, + name: name.to_string(), + mode: "peer".to_string(), + }); + + self.emit(BusEvent::GroupMemberJoined { + group_id, + terminal_id: creator, + role: "peer".to_string(), + }); + + Ok(group_id) + } + + /// Join an existing group. + /// + /// In orchestrated mode, joining terminals become workers. + /// In peer mode, joining terminals become peers. + pub fn join_group(&mut self, terminal_id: Uuid, group_id: Uuid) -> Result<(), BusError> { + if !self.terminals.contains_key(&terminal_id) { + return Err(BusError::TerminalNotFound(terminal_id)); + } + + if self.terminal_to_group.contains_key(&terminal_id) { + return Err(BusError::AlreadyInGroup(terminal_id)); + } + + let group = self + .groups + .get_mut(&group_id) + .ok_or(BusError::GroupNotFound(group_id))?; + + let role = match &group.mode { + GroupMode::Orchestrated { .. } => "worker", + GroupMode::Peer => "peer", + }; + + group.add_member(terminal_id); + self.terminal_to_group.insert(terminal_id, group_id); + + self.emit(BusEvent::GroupMemberJoined { + group_id, + terminal_id, + role: role.to_string(), + }); + + Ok(()) + } + + /// Join a group by name (convenience wrapper). + pub fn join_group_by_name( + &mut self, + terminal_id: Uuid, + group_name: &str, + ) -> Result<(), BusError> { + let group_id = self + .groups + .values() + .find(|g| g.name == group_name) + .map(|g| g.id) + .ok_or_else(|| BusError::GroupNotFound(Uuid::nil()))?; + + self.join_group(terminal_id, group_id) + } + + /// Leave a group. + /// + /// If the orchestrator leaves, the group is dissolved. + /// If the last member leaves, the group is dissolved. + pub fn leave_group(&mut self, terminal_id: Uuid) -> Result<(), BusError> { + let group_id = self + .terminal_to_group + .remove(&terminal_id) + .ok_or(BusError::NotInGroup(terminal_id))?; + + self.remove_from_group_inner(terminal_id, group_id); + Ok(()) + } + + fn remove_from_group_inner(&mut self, terminal_id: Uuid, group_id: Uuid) { + let should_dissolve; + let did_remove; + + if let Some(group) = self.groups.get_mut(&group_id) { + did_remove = group.remove_member(terminal_id); + should_dissolve = group.is_empty() || group.is_orchestrator(terminal_id); + } else { + return; + } + + if did_remove { + self.emit(BusEvent::GroupMemberLeft { + group_id, + terminal_id, + }); + } + + if should_dissolve { + self.dissolve_group(group_id); + } + } + + /// Dissolve a group, removing all members. + pub fn dissolve_group(&mut self, group_id: Uuid) { + if let Some(group) = self.groups.remove(&group_id) { + // Remove all member mappings + for member in &group.members { + self.terminal_to_group.remove(member); + } + + // Clean up group-scoped context + let prefix = group.context_prefix.clone(); + self.context.retain(|k, _| !k.starts_with(&prefix)); + + self.emit(BusEvent::GroupDissolved { + group_id, + name: group.name, + }); + } + } + + /// List all groups. + pub fn list_groups(&self) -> Vec { + self.groups + .values() + .map(|g| self.build_group_info(g)) + .collect() + } + + /// Get info for a specific group. + pub fn get_group(&self, group_id: Uuid) -> Option { + self.groups.get(&group_id).map(|g| self.build_group_info(g)) + } + + /// Get info for a group by name. + pub fn get_group_by_name(&self, name: &str) -> Option { + self.groups + .values() + .find(|g| g.name == name) + .map(|g| self.build_group_info(g)) + } + + fn build_group_info(&self, group: &TerminalGroup) -> GroupInfo { + let members: Vec = group + .members + .iter() + .filter_map(|id| { + let handle = self.terminals.get(id)?; + let title = handle.title.lock().ok()?.clone(); + let role = group.role_of(*id)?; + let status = self.statuses.get(id).cloned().unwrap_or_default(); + let alive = handle.alive.load(Ordering::Relaxed); + Some(GroupMemberInfo { + terminal_id: *id, + title, + role, + status, + alive, + }) + }) + .collect(); + + let orchestrator_id = match &group.mode { + GroupMode::Orchestrated { orchestrator } => Some(*orchestrator), + GroupMode::Peer => None, + }; + + GroupInfo { + id: group.id, + name: group.name.clone(), + mode: match &group.mode { + GroupMode::Orchestrated { .. } => "orchestrated".to_string(), + GroupMode::Peer => "peer".to_string(), + }, + orchestrator_id, + member_count: group.member_count(), + members, + } + } + + // ----------------------------------------------------------------------- + // Broadcast & Messaging + // ----------------------------------------------------------------------- + + /// Send a command to all workers in a group (orchestrator only). + /// + /// The command is injected into each worker's PTY sequentially. + pub fn broadcast_command( + &mut self, + group_id: Uuid, + command: &str, + source: Uuid, + ) -> Result, BusError> { + let group = self + .groups + .get(&group_id) + .ok_or(BusError::GroupNotFound(group_id))?; + + // In orchestrated mode, only the orchestrator can broadcast + if let GroupMode::Orchestrated { orchestrator } = &group.mode { + if *orchestrator != source { + return Err(BusError::PermissionDenied( + "only orchestrator can broadcast".into(), + )); + } + } + + // Collect targets (all members except the source) + let targets: Vec = group + .members + .iter() + .filter(|&&id| id != source) + .copied() + .collect(); + + // Inject command into each target + for &target in &targets { + // We call send_command which handles the \r appending + let mut bytes = command.as_bytes().to_vec(); + bytes.push(b'\r'); + // Direct write, bypassing permission check (already validated above) + if let Some(handle) = self.terminals.get(&target) { + if handle.alive.load(Ordering::Relaxed) { + if let Ok(mut writer) = handle.writer.lock() { + let _ = writer.write_all(&bytes); + let _ = writer.flush(); + } + self.statuses.insert( + target, + TerminalStatus::Running { + command: Some(command.to_string()), + started_at: Instant::now(), + }, + ); + } + } + } + + self.emit(BusEvent::BroadcastSent { + from: source, + group_id, + payload: command.to_string(), + }); + + Ok(targets) + } + + /// Send a direct message between terminals (stored in context). + /// + /// Messages are stored as context entries with a special key format: + /// `_msg:{from}:{to}:{timestamp}` + pub fn send_message(&mut self, from: Uuid, to: Uuid, payload: &str) -> Result<(), BusError> { + if !self.terminals.contains_key(&from) { + return Err(BusError::TerminalNotFound(from)); + } + if !self.terminals.contains_key(&to) { + return Err(BusError::TerminalNotFound(to)); + } + + let key = format!( + "_msg:{}:{}:{}", + from, + to, + SystemTime::now() + .duration_since(SystemTime::UNIX_EPOCH) + .map(|d| d.as_millis()) + .unwrap_or(0) + ); + + self.context.insert( + key, + ContextEntry { + value: payload.to_string(), + source: from, + updated_at: SystemTime::now(), + ttl: Some(Duration::from_secs(3600)), // Messages expire after 1 hour + }, + ); + + self.emit(BusEvent::MessageSent { + from, + to, + payload: payload.to_string(), + }); + + Ok(()) + } + + // ----------------------------------------------------------------------- + // Shared Context + // ----------------------------------------------------------------------- + + /// Set a context value. + /// + /// Keys can be: + /// - Global: `"key_name"` — visible to all terminals + /// - Group-scoped: `"group_name:key_name"` — only visible within the group + pub fn context_set( + &mut self, + key: &str, + value: &str, + source: Uuid, + ttl: Option, + ) -> Result<(), BusError> { + if !self.terminals.contains_key(&source) { + return Err(BusError::TerminalNotFound(source)); + } + + self.context.insert( + key.to_string(), + ContextEntry { + value: value.to_string(), + source, + updated_at: SystemTime::now(), + ttl, + }, + ); + + self.emit(BusEvent::ContextUpdated { + key: key.to_string(), + source, + }); + + Ok(()) + } + + /// Get a context value. + /// + /// Returns None if the key does not exist or has expired. + pub fn context_get(&mut self, key: &str) -> Option { + if let Some(entry) = self.context.get(key) { + if entry.is_expired() { + self.context.remove(key); + return None; + } + Some(entry.value.clone()) + } else { + None + } + } + + /// Get a context entry with metadata. + pub fn context_get_entry(&mut self, key: &str) -> Option { + if let Some(entry) = self.context.get(key) { + if entry.is_expired() { + self.context.remove(key); + return None; + } + Some(entry.clone()) + } else { + None + } + } + + /// List all context keys (excluding expired and messages). + pub fn context_list(&mut self) -> Vec<(String, ContextEntry)> { + // Clean up expired entries first + self.context.retain(|_, v| !v.is_expired()); + + self.context + .iter() + .filter(|(k, _)| !k.starts_with("_msg:")) + .map(|(k, v)| (k.clone(), v.clone())) + .collect() + } + + /// Delete a context entry. + pub fn context_delete(&mut self, key: &str) -> bool { + let existed = self.context.remove(key).is_some(); + if existed { + self.emit(BusEvent::ContextDeleted { + key: key.to_string(), + }); + } + existed + } + + /// List messages for a specific terminal (received messages). + pub fn list_messages(&mut self, terminal_id: Uuid) -> Vec<(Uuid, String, SystemTime)> { + let prefix = "_msg:".to_string(); + let target_str = terminal_id.to_string(); + + self.context.retain(|_, v| !v.is_expired()); + + self.context + .iter() + .filter_map(|(k, v)| { + if !k.starts_with(&prefix) { + return None; + } + // Parse key format: _msg:{from}:{to}:{timestamp} + let parts: Vec<&str> = k.splitn(4, ':').collect(); + if parts.len() == 4 && parts[2] == target_str { + let from = Uuid::parse_str(parts[1]).ok()?; + Some((from, v.value.clone(), v.updated_at)) + } else { + None + } + }) + .collect() + } + + // ----------------------------------------------------------------------- + // Event System + // ----------------------------------------------------------------------- + + /// Subscribe to bus events with an optional filter. + /// + /// Returns a receiver and a subscription ID (for unsubscribing). + pub fn subscribe(&mut self, filter: EventFilter) -> (Uuid, mpsc::Receiver) { + let (tx, rx) = mpsc::channel(); + let sub_id = Uuid::new_v4(); + self.subscribers.push((sub_id, filter, tx)); + (sub_id, rx) + } + + /// Unsubscribe from bus events. + pub fn unsubscribe(&mut self, subscription_id: Uuid) { + self.subscribers.retain(|(id, _, _)| *id != subscription_id); + } + + /// Emit an event to all matching subscribers. + fn emit(&self, event: BusEvent) { + for (_, filter, tx) in &self.subscribers { + if filter.matches(&event) { + // Non-blocking send. If the channel is full, drop the event + // for this subscriber (they'll catch up on the next one). + let _ = tx.send(event.clone()); + } + } + } + + /// Remove dead subscribers (disconnected channels). + pub fn cleanup_subscribers(&mut self) { + self.subscribers.retain(|(_, _, tx)| { + // Try sending a dummy — if the receiver is dropped, remove + // Actually, we can't do this without a real event. + // Instead, we'll let send() errors accumulate and clean up + // subscribers that have been failing. + // For now, rely on explicit unsubscribe. + true + }); + } +} + +// --------------------------------------------------------------------------- +// Bus Errors +// --------------------------------------------------------------------------- + +/// Errors returned by bus operations. +#[derive(Debug)] +pub enum BusError { + TerminalNotFound(Uuid), + TerminalDead(Uuid), + GroupNotFound(Uuid), + GroupNameTaken(String), + AlreadyInGroup(Uuid), + NotInGroup(Uuid), + PermissionDenied(String), + LockFailed(&'static str), + WriteFailed(String), + Timeout, +} + +impl std::fmt::Display for BusError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Self::TerminalNotFound(id) => write!(f, "terminal not found: {}", id), + Self::TerminalDead(id) => write!(f, "terminal is dead: {}", id), + Self::GroupNotFound(id) => write!(f, "group not found: {}", id), + Self::GroupNameTaken(name) => write!(f, "group name already taken: {}", name), + Self::AlreadyInGroup(id) => write!(f, "terminal already in a group: {}", id), + Self::NotInGroup(id) => write!(f, "terminal not in a group: {}", id), + Self::PermissionDenied(msg) => write!(f, "permission denied: {}", msg), + Self::LockFailed(what) => write!(f, "failed to lock: {}", what), + Self::WriteFailed(msg) => write!(f, "write failed: {}", msg), + Self::Timeout => write!(f, "operation timed out"), + } + } +} + +impl std::error::Error for BusError {} diff --git a/src/bus/types.rs b/src/bus/types.rs new file mode 100644 index 0000000..f2b4ee4 --- /dev/null +++ b/src/bus/types.rs @@ -0,0 +1,542 @@ +// src/bus/types.rs + +use std::collections::HashMap; +use std::io::Write; +use std::sync::atomic::AtomicBool; +use std::sync::{Arc, Mutex}; +use std::time::{Duration, Instant, SystemTime}; + +use alacritty_terminal::term::Term; +use uuid::Uuid; + +use crate::terminal::pty::EventProxy; + +// --------------------------------------------------------------------------- +// Terminal Handle — lightweight reference to a live terminal +// --------------------------------------------------------------------------- + +/// A cloneable, thread-safe reference to a terminal's internal state. +/// +/// Created by cloning the `Arc` fields from `PtyHandle`. Does not own +/// the terminal — just provides read/write access to it. +#[derive(Clone)] +pub struct TerminalHandle { + /// Unique identifier for this terminal (same as TerminalPanel.id). + pub id: Uuid, + + /// The alacritty terminal state machine. Lock to read the grid, + /// cursor position, scrollback, terminal mode flags, etc. + pub term: Arc>>, + + /// The PTY writer. Lock to inject bytes into the terminal's stdin. + /// Writing b"command\r" is equivalent to the user typing "command" + Enter. + pub writer: Arc>>, + + /// The terminal's current title (set by OSC 0/2 sequences from the shell). + pub title: Arc>, + + /// Whether the child process is still running. + pub alive: Arc, + + /// Timestamp of the last byte written to the terminal (user input or injection). + pub last_input_at: Arc>, + + /// Timestamp of the last byte read from the terminal (program output). + pub last_output_at: Arc>, + + /// The workspace this terminal belongs to. + pub workspace_id: Uuid, +} + +// --------------------------------------------------------------------------- +// Terminal Status — observable state for group coordination +// --------------------------------------------------------------------------- + +/// The observable status of a terminal within a group. +/// +/// Updated automatically by the bus (via output monitoring) or manually +/// by the orchestrator via `set_status`. +#[derive(Debug, Clone, PartialEq)] +pub enum TerminalStatus { + /// Shell prompt is visible, no command running. + /// Detected when `last_output_at` has not changed for `idle_threshold`. + Idle, + + /// A command is executing. Output is flowing. + Running { + /// The command string, if known (set by inject_command). + command: Option, + /// When the command started. + started_at: Instant, + }, + + /// Waiting for input or for a dependency. + Waiting { + /// Human-readable reason, e.g. "waiting for term B to finish". + reason: Option, + }, + + /// Last command completed successfully. + Done { + /// When the command finished. + finished_at: Instant, + }, + + /// Last command failed. + Error { + /// Error message or exit code. + message: String, + /// When the error occurred. + occurred_at: Instant, + }, +} + +impl Default for TerminalStatus { + fn default() -> Self { + Self::Idle + } +} + +impl TerminalStatus { + /// Short label for display in the title bar. + pub fn label(&self) -> &str { + match self { + Self::Idle => "idle", + Self::Running { .. } => "running", + Self::Waiting { .. } => "waiting", + Self::Done { .. } => "done", + Self::Error { .. } => "error", + } + } + + /// Whether this status indicates active work. + pub fn is_active(&self) -> bool { + matches!(self, Self::Running { .. } | Self::Waiting { .. }) + } +} + +// --------------------------------------------------------------------------- +// Terminal Role — position within a group +// --------------------------------------------------------------------------- + +/// A terminal's role within its group. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum TerminalRole { + /// Not part of any group. Default state. + Standalone, + + /// The orchestrator/parent of an orchestrated group. + /// Can send commands to workers, read their output, manage lifecycle. + Orchestrator, + + /// A worker/child in an orchestrated group. + /// Receives commands from the orchestrator, reports status back. + Worker, + + /// A peer in a peer-mode group. + /// Can communicate with any other peer in the same group. + Peer, +} + +impl TerminalRole { + /// Arrow indicator for the title bar. + /// + /// Orchestrator: ▲ (pointing up — in command) + /// Worker: ▼ (pointing down — receiving orders) + /// Peer: ◆ (diamond — equal standing) + /// Standalone: (empty) + pub fn indicator(&self) -> &str { + match self { + Self::Standalone => "", + Self::Orchestrator => "\u{25B2}", // ▲ + Self::Worker => "\u{25BC}", // ▼ + Self::Peer => "\u{25C6}", // ◆ + } + } +} + +// --------------------------------------------------------------------------- +// Group Mode +// --------------------------------------------------------------------------- + +/// How terminals in a group relate to each other. +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum GroupMode { + /// One orchestrator controls N workers. + /// The orchestrator's UUID is stored here. + Orchestrated { orchestrator: Uuid }, + + /// All members are peers with equal capabilities. + Peer, +} + +// --------------------------------------------------------------------------- +// Terminal Group +// --------------------------------------------------------------------------- + +/// A named collection of terminals that can communicate. +/// +/// Groups are created explicitly via `void-ctl group create` or the bus API. +/// Terminals join and leave groups dynamically. +#[derive(Debug, Clone)] +pub struct TerminalGroup { + /// Unique group identifier. + pub id: Uuid, + + /// Human-readable group name (e.g., "build", "research", "deploy"). + /// Used in the title bar indicator: `[build ▼ running]`. + pub name: String, + + /// How members relate to each other. + pub mode: GroupMode, + + /// All terminal UUIDs in this group, including the orchestrator. + pub members: Vec, + + /// When the group was created. + pub created_at: Instant, + + /// Per-group context namespace. Keys are prefixed with `{group_name}:` + /// in the shared context store. + pub context_prefix: String, +} + +impl TerminalGroup { + /// Create a new group in orchestrated mode. + pub fn new_orchestrated(name: impl Into, orchestrator: Uuid) -> Self { + let name = name.into(); + let context_prefix = format!("{}:", name); + Self { + id: Uuid::new_v4(), + name, + mode: GroupMode::Orchestrated { orchestrator }, + members: vec![orchestrator], + created_at: Instant::now(), + context_prefix, + } + } + + /// Create a new group in peer mode. + pub fn new_peer(name: impl Into, initial_member: Uuid) -> Self { + let name = name.into(); + let context_prefix = format!("{}:", name); + Self { + id: Uuid::new_v4(), + name, + mode: GroupMode::Peer, + members: vec![initial_member], + created_at: Instant::now(), + context_prefix, + } + } + + /// Add a member to the group. + pub fn add_member(&mut self, terminal_id: Uuid) { + if !self.members.contains(&terminal_id) { + self.members.push(terminal_id); + } + } + + /// Remove a member from the group. Returns true if the member was found. + pub fn remove_member(&mut self, terminal_id: Uuid) -> bool { + if let Some(pos) = self.members.iter().position(|&id| id == terminal_id) { + self.members.remove(pos); + true + } else { + false + } + } + + /// Whether this terminal is the orchestrator of this group. + pub fn is_orchestrator(&self, terminal_id: Uuid) -> bool { + match &self.mode { + GroupMode::Orchestrated { orchestrator } => *orchestrator == terminal_id, + GroupMode::Peer => false, + } + } + + /// Get the role of a terminal in this group. + pub fn role_of(&self, terminal_id: Uuid) -> Option { + if !self.members.contains(&terminal_id) { + return None; + } + match &self.mode { + GroupMode::Orchestrated { orchestrator } => { + if *orchestrator == terminal_id { + Some(TerminalRole::Orchestrator) + } else { + Some(TerminalRole::Worker) + } + } + GroupMode::Peer => Some(TerminalRole::Peer), + } + } + + /// Whether the group is empty (should be cleaned up). + pub fn is_empty(&self) -> bool { + self.members.is_empty() + } + + /// Number of members. + pub fn member_count(&self) -> usize { + self.members.len() + } +} + +// --------------------------------------------------------------------------- +// Context Entry +// --------------------------------------------------------------------------- + +/// A single entry in the shared context store. +#[derive(Debug, Clone)] +pub struct ContextEntry { + /// The stored value. + pub value: String, + + /// Which terminal wrote this entry. + pub source: Uuid, + + /// When this entry was written or last updated. + pub updated_at: SystemTime, + + /// Optional time-to-live. The entry is considered expired after this duration. + /// Expired entries are cleaned up lazily on next access. + pub ttl: Option, +} + +impl ContextEntry { + /// Whether this entry has expired. + pub fn is_expired(&self) -> bool { + if let Some(ttl) = self.ttl { + if let Ok(elapsed) = self.updated_at.elapsed() { + return elapsed > ttl; + } + } + false + } +} + +// --------------------------------------------------------------------------- +// Bus Events +// --------------------------------------------------------------------------- + +/// Events emitted by the terminal bus. +/// +/// External subscribers (via APC layer) and internal consumers (via the +/// event bus) receive these events. Events are non-blocking — if a +/// subscriber's channel is full, the event is dropped for that subscriber. +#[derive(Debug, Clone)] +pub enum BusEvent { + /// A terminal was registered with the bus (new terminal spawned). + TerminalRegistered { terminal_id: Uuid, title: String }, + + /// A terminal's child process exited. + TerminalExited { terminal_id: Uuid }, + + /// Bytes were injected into a terminal by another terminal or void-ctl. + CommandInjected { + source: Option, + target: Uuid, + command: String, + }, + + /// A terminal's output buffer changed (new data from PTY). + /// This event is coalesced — at most one per terminal per 100ms. + OutputChanged { terminal_id: Uuid }, + + /// A terminal's status changed (idle -> running, running -> done, etc.). + StatusChanged { + terminal_id: Uuid, + old_status: String, + new_status: String, + }, + + /// A terminal's title changed (OSC 0/2 from the shell). + TitleChanged { + terminal_id: Uuid, + old_title: String, + new_title: String, + }, + + /// A new group was created. + GroupCreated { + group_id: Uuid, + name: String, + mode: String, + }, + + /// A terminal joined a group. + GroupMemberJoined { + group_id: Uuid, + terminal_id: Uuid, + role: String, + }, + + /// A terminal left a group. + GroupMemberLeft { group_id: Uuid, terminal_id: Uuid }, + + /// A group was dissolved (last member left or explicit dissolve). + GroupDissolved { group_id: Uuid, name: String }, + + /// A context entry was created or updated. + ContextUpdated { key: String, source: Uuid }, + + /// A context entry was deleted. + ContextDeleted { key: String }, + + /// A direct message was sent between terminals. + MessageSent { + from: Uuid, + to: Uuid, + payload: String, + }, + + /// A broadcast message was sent to all members of a group. + BroadcastSent { + from: Uuid, + group_id: Uuid, + payload: String, + }, +} + +impl BusEvent { + /// Short type name for filtering. + pub fn event_type(&self) -> &str { + match self { + Self::TerminalRegistered { .. } => "terminal.registered", + Self::TerminalExited { .. } => "terminal.exited", + Self::CommandInjected { .. } => "command.injected", + Self::OutputChanged { .. } => "output.changed", + Self::StatusChanged { .. } => "status.changed", + Self::TitleChanged { .. } => "title.changed", + Self::GroupCreated { .. } => "group.created", + Self::GroupMemberJoined { .. } => "group.member.joined", + Self::GroupMemberLeft { .. } => "group.member.left", + Self::GroupDissolved { .. } => "group.dissolved", + Self::ContextUpdated { .. } => "context.updated", + Self::ContextDeleted { .. } => "context.deleted", + Self::MessageSent { .. } => "message.sent", + Self::BroadcastSent { .. } => "broadcast.sent", + } + } +} + +// --------------------------------------------------------------------------- +// Event Filter +// --------------------------------------------------------------------------- + +/// Filter for subscribing to specific event types and/or terminals. +#[derive(Debug, Clone, Default)] +pub struct EventFilter { + /// If non-empty, only events of these types are delivered. + pub event_types: Vec, + + /// If non-empty, only events involving these terminal IDs are delivered. + pub terminal_ids: Vec, + + /// If set, only events from this group are delivered. + pub group_id: Option, +} + +impl EventFilter { + /// Whether this filter matches an event. + pub fn matches(&self, event: &BusEvent) -> bool { + // Type filter + if !self.event_types.is_empty() && !self.event_types.iter().any(|t| t == event.event_type()) + { + return false; + } + + // Terminal filter (check if any relevant UUID matches) + if !self.terminal_ids.is_empty() { + let involved = self.involved_terminals(event); + if !involved.iter().any(|id| self.terminal_ids.contains(id)) { + return false; + } + } + + // Group filter + if let Some(gid) = &self.group_id { + match event { + BusEvent::GroupCreated { group_id, .. } + | BusEvent::GroupMemberJoined { group_id, .. } + | BusEvent::GroupMemberLeft { group_id, .. } + | BusEvent::GroupDissolved { group_id, .. } + | BusEvent::BroadcastSent { group_id, .. } => { + if group_id != gid { + return false; + } + } + _ => {} + } + } + + true + } + + fn involved_terminals(&self, event: &BusEvent) -> Vec { + match event { + BusEvent::TerminalRegistered { terminal_id, .. } => vec![*terminal_id], + BusEvent::TerminalExited { terminal_id } => vec![*terminal_id], + BusEvent::CommandInjected { source, target, .. } => { + let mut v = vec![*target]; + if let Some(s) = source { + v.push(*s); + } + v + } + BusEvent::OutputChanged { terminal_id } => vec![*terminal_id], + BusEvent::StatusChanged { terminal_id, .. } => vec![*terminal_id], + BusEvent::TitleChanged { terminal_id, .. } => vec![*terminal_id], + BusEvent::GroupMemberJoined { terminal_id, .. } => vec![*terminal_id], + BusEvent::GroupMemberLeft { terminal_id, .. } => vec![*terminal_id], + BusEvent::ContextUpdated { source, .. } => vec![*source], + BusEvent::MessageSent { from, to, .. } => vec![*from, *to], + BusEvent::BroadcastSent { from, .. } => vec![*from], + _ => vec![], + } + } +} + +// --------------------------------------------------------------------------- +// Terminal Info — serializable summary for API responses +// --------------------------------------------------------------------------- + +/// Lightweight terminal info for API responses (no Arc references). +#[derive(Debug, Clone)] +pub struct TerminalInfo { + pub id: Uuid, + pub title: String, + pub alive: bool, + pub workspace_id: Uuid, + pub group_id: Option, + pub group_name: Option, + pub role: TerminalRole, + pub status: TerminalStatus, + pub last_output_elapsed_ms: u64, + pub last_input_elapsed_ms: u64, +} + +// --------------------------------------------------------------------------- +// Group Info — serializable summary for API responses +// --------------------------------------------------------------------------- + +/// Lightweight group info for API responses. +#[derive(Debug, Clone)] +pub struct GroupInfo { + pub id: Uuid, + pub name: String, + pub mode: String, + pub orchestrator_id: Option, + pub member_count: usize, + pub members: Vec, +} + +#[derive(Debug, Clone)] +pub struct GroupMemberInfo { + pub terminal_id: Uuid, + pub title: String, + pub role: TerminalRole, + pub status: TerminalStatus, + pub alive: bool, +} diff --git a/src/main.rs b/src/main.rs index bb28d24..a4f6a73 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,7 @@ #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] mod app; +mod bus; mod canvas; mod command_palette; mod panel; From 917d3674aaa1193b06eee00f052a4694fe6afddf Mon Sep 17 00:00:00 2001 From: 190km Date: Wed, 25 Mar 2026 00:19:55 +0100 Subject: [PATCH 02/21] feat: wire Terminal Bus into app, PTY reader, and terminal lifecycle MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Complete integration of the orchestration bus: - VoidApp owns Arc>, threaded to all spawn/close sites - Terminals register with the bus on spawn, deregister on close - PTY reader thread intercepts APC sequences (\x1b_VOID;...\x1b\) before they reach the VTE parser, dispatches to bus, writes response back to PTY — enabling void-ctl communication through the pipe - VOID_TERMINAL_ID env var set on spawned shells so processes know which terminal they're running in - PtyHandle::create_bus_handle() creates TerminalHandle from Arc clones - Handles partial APC sequences across read boundaries Co-Authored-By: Claude Opus 4.6 (1M context) --- assets/demo.mp4 | Bin 0 -> 47129088 bytes orchestration-communication.md | 4801 ++++++++++++++++++++++++++++++++ src/app.rs | 40 +- src/state/workspace.rs | 62 +- src/terminal/panel.rs | 31 +- src/terminal/pty.rs | 50 +- 6 files changed, 4958 insertions(+), 26 deletions(-) create mode 100644 assets/demo.mp4 create mode 100644 orchestration-communication.md diff --git a/assets/demo.mp4 b/assets/demo.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..852b565ef75775869814dd2a872db65ccd6694d4 GIT binary patch literal 47129088 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