oino_view/lib.rs
1//! `oino-view`: frontend-agnostic view models shared by the terminal client (`oino-tui`) and
2//! the GPUI apps (modes.md §7.1).
3//!
4//! Nothing here knows about a UI toolkit. Every model is a plain state machine fed with
5//! [`oino_core::events::ClientEvent`]s, RPC replies or user intents, and is unit-tested
6//! without a terminal.
7//!
8//! # API map
9//!
10//! | Module | Contents |
11//! |---|---|
12//! | [`transcript`] | [`transcript::Transcript`] rows keyed by tool-call id; reducer over session events |
13//! | [`ui_state`] | [`ui_state::RegistryMirror`]: v2 snapshot/patch mirror (ui-protocol §6, §9.2) with the dialog queue; [`ui_state::UiState`]: the transitional v1 request reducer |
14//! | [`ous`] | [`ous::OusNode`]: typed Oino UI Spec v1 nodes (deleted with the last v1 emitter, WP-U7) |
15//! | [`tree`] | [`tree::TreeModel`]: flattening, filter modes, folding, search |
16//! | [`sessions`] | [`sessions::SessionListModel`]: scope, sort, name filter, search |
17//! | [`settings_hub`] | extension settings hub: namespaces, flattened fields, display, cycling, parsing, `visibleIf`/`disabledIf` |
18//! | [`composer`] | [`composer::Composer`]: multi-line buffer, history, kill ring, undo, paste markers |
19//! | [`commands`] | built-in slash command table and parsing |
20//! | [`keys`] | [`keys::KeyId`], [`keys::Keybindings`] with defaults |
21//! | [`fuzzy`] | subsequence matcher |
22//! | [`mod@format`] | token, cwd, age formatting |
23//!
24//! Wire types come from `oino-core`/`oino-session`/`oino-ai` until `oino-protocol` exists
25//! (deviations/tui-client.md).
26
27#![forbid(unsafe_code)]
28#![cfg_attr(
29 test,
30 allow(
31 clippy::unwrap_used,
32 clippy::expect_used,
33 clippy::panic,
34 reason = "tests assert by unwrapping"
35 )
36)]
37
38pub mod commands;
39pub mod composer;
40pub mod format;
41pub mod fuzzy;
42pub mod keys;
43pub mod ous;
44pub mod sessions;
45pub mod settings_hub;
46pub mod transcript;
47pub mod tree;
48pub mod ui_state;
49
50/// JSON value type used throughout (re-exported from `oino-ai`).
51pub use oino_ai::{JsonObject, JsonValue};