Skip to main content

oino_ai/
lib.rs

1//! `oino-ai`: the LLM data model for Oino.
2//!
3//! Every type serialises to a fixed JSON shape (field names, tags, optionality), so
4//! sessions, RPC records and WASM-boundary payloads stay interchangeable across processes and
5//! tools that speak the same format. The crate has
6//! no async runtime and builds for `wasm32-wasip2`; guests and host share these types (D5).
7//!
8//! # API map
9//!
10//! | Module | Contents |
11//! |---|---|
12//! | [`primitives`] | scalars: [`TimestampMs`], [`ThinkingLevel`] (+ clamping), [`StopReason`], [`Usage`] |
13//! | [`content`] | content blocks: [`TextContent`], [`ThinkingContent`], [`ImageContent`], [`ToolCall`], [`UserContent`], [`AssistantContent`], [`UserContentField`] |
14//! | [`message`] | [`Message`], [`AgentMessage`], [`SystemMessage`], [`AssistantMessage`], … |
15//! | [`model`] | [`Model`], [`ModelKey`], [`ThinkingLevelMap`], costs and limits |
16//! | [`stream`] | [`AssistantMessageEvent`], [`ProviderEvent`], [`PartialAssembler`] |
17//! | [`transcript`] | system-message replay, [`transcript::diff_sections`], collapsing |
18//! | [`transform`] | [`transform::transform_messages`] |
19//! | [`json`] | [`JsonObject`], [`JsonValue`], [`json::json_semantic_eq`] |
20//!
21//! Unknown JSON fields are ignored on read; optional fields are omitted on write exactly where
22//! the wire format omits them; integral `f64` costs serialise without a fraction like `JSON.stringify`.
23
24#![forbid(unsafe_code)]
25#![cfg_attr(
26    test,
27    allow(
28        clippy::unwrap_used,
29        clippy::expect_used,
30        clippy::panic,
31        reason = "tests assert by unwrapping"
32    )
33)]
34
35pub mod content;
36pub mod json;
37pub mod message;
38pub mod model;
39pub mod primitives;
40pub mod stream;
41pub mod transcript;
42pub mod transform;
43
44pub use content::{
45    AssistantContent, ImageContent, TextContent, ThinkingContent, ToolCall, TypedText, UserContent,
46    UserContentField, UserTextField,
47};
48pub use json::{JsonObject, JsonValue};
49pub use message::{
50    AgentMessage, AssistantDiagnostic, AssistantMessage, BashExecutionMessage,
51    BranchSummaryMessage, CompactionSummaryMessage, ConstrainedSampling, ConstrainedSamplingConfig,
52    CustomMessage, DeferredHandle, DiagnosticError, FalseLiteral, Message, NestedStatus,
53    NestedToolCallRecord, NestedToolCalls, Sections, StrictMode, SystemMessage, ToolDecl, ToolRef,
54    ToolResultMessage, UserMessage,
55};
56pub use model::{
57    AnyModel, ClassifierModel, ImageInputLimits, ImageModel, ImageResize, InputLimits, MapEntry,
58    Model, ModelCost, ModelCostTier, ModelKey, ModelKindChat, PromptCache, ThinkingLevelMap,
59};
60pub use primitives::{
61    CacheRetention, InputModality, StopReason, ThinkingLevel, TimestampMs, UnknownThinkingLevel,
62    Usage, UsageCost,
63};
64pub use stream::{
65    AssistantMessageEvent, Context, DoneReason, ErrorReason, PartialAssembler, ProviderEvent,
66    StreamOptions, ThinkingBudgets, Transport,
67};