1//! The ports of Whiskers' backend, in Whiskers' own words. See README.md. 2//! 3//! Nothing here names a hosting product. Cloudflare, celld and the native binary are *adapters* of 4//! these traits, written elsewhere; the traits are owned by the core of Whiskers and a new host is 5//! a new implementation, never an edit here. 6//! 7//! Everything in this crate builds for `wasm32-unknown-unknown`: no files, no sockets, no threads and 8//! no system clock. Time is a [`Clock`] port and I/O is a port. 9 10#![forbid(unsafe_code)] 11 12mod allowance; 13mod capability; 14mod embed; 15mod error; 16mod exec; 17mod hub; 18mod journal; 19mod judge; 20mod pictures; 21mod secrets; 22mod think; 23mod time; 24mod timing; 25mod voice; 26 27pub use allowance::{ 28 Allowance, ReserveError, Settlement, ThinkingLedger, ThinkingRoom, ThinkingUsage, Tokens, VoiceDay, VoiceReservation, VoiceSpend, tokens_in, 29}; 30pub use capability::{ 31 Backend, HasAllowance, HasChat, HasClock, HasEmbedder, HasHousehold, HasJournal, HasJudge, HasMemory, HasPictures, HasThinker, HasVoice, 32}; 33pub use embed::{BatchError, EMBED_CHARS_MAX, EMBED_TEXTS_MAX, EmbedBatch, EmbedError, Embedder}; 34pub use error::{Diagnostic, StoreError}; 35pub use exec::run_ready; 36pub use hub::{ChatHub, Hub, HouseholdHub, MemoryHub, Merged}; 37pub use journal::{ 38 Appended, DEVICE_NAME_MAX, DeviceCursor, DeviceName, EntryLine, Journal, LogCursor, NotADeviceName, NotAnEntry, PULL_LIMIT, Page, StoredLine, 39}; 40pub use judge::{Judge, JudgeError}; 41pub use pictures::{PictureShelf, Put, SafePictureId, UnsafePictureId}; 42pub use secrets::{Lookup, SecretName, SecretValue, Secrets}; 43pub use think::{ModelName, NoModelNamed, REPLY_TOKENS_MAX, Reply, ThinkError, ThinkRefusal, ThinkRequest, Thinker}; 44pub use time::{Clock, Day, ManualClock, Millis}; 45pub use voice::{Audio, CreditsError, LineError, SPEECH_LINE_MAX, SpeakError, SpeechLine, Voice, VoiceCredits}; 46pub use timing::{AudioMs, LineTiming, Span, TimedAudio, TimingError};