tmai-core 0.8.2

Core library for tmai - agent detection, state management, and monitoring
Documentation
/// Idle indicator - ✳ appears when Claude Code is waiting for input
pub(super) const IDLE_INDICATOR: char = '';

/// Processing spinner characters used in terminal title
///
/// Claude Code uses only ⠂ (U+2802) and ⠐ (U+2810) as title spinners.
/// The remaining Braille/circle patterns are kept for compatibility with
/// other agents or future changes, but are not used by Claude Code v2.1.39.
pub(super) const PROCESSING_SPINNERS: &[char] = &[
    // Claude Code actual spinners (2 frames, 960ms interval)
    '', '', // Legacy Braille patterns (kept for other agents / future compatibility)
    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
    '', // Circle spinners
    '', '', '', '',
];

/// Past-tense verbs used in turn duration display (e.g., "✻ Cooked for 1m 6s")
/// These indicate a completed turn and should be detected as Idle.
pub(super) const TURN_DURATION_VERBS: &[&str] = &[
    "Baked",
    "Brewed",
    "Churned",
    "Cogitated",
    "Cooked",
    "Crunched",
    "Sautéed",
    "Worked",
];

/// Content-area spinner characters (decorative asterisks used by Claude Code)
/// These appear in content as "✶ Spinning…", "✻ Working…", "✢ Thinking…", etc.
/// Claude Code animates through these characters, so all variants must be covered.
/// The full rotation includes: ✶ ✻ ✽ ✢ · * ✳ (and possibly ✹ ✧)
/// Note: ✳ is also the IDLE_INDICATOR in title, but in content it appears as a
/// spinner char (macOS/Ghostty). The detect_content_spinner() function requires
/// uppercase verb + ellipsis after the char, so title-based idle detection is unaffected.
pub(super) const CONTENT_SPINNER_CHARS: &[char] = &['', '', '', '', '', '', '·', ''];

/// Built-in spinner verbs used by Claude Code (v2.1.41, 185 verbs)
///
/// These are the default verbs that appear in content spinners like "✶ Spinning…".
/// When a verb from this list is detected, confidence is elevated to High.
/// Custom verbs from settings remain at Medium confidence.
pub(super) const BUILTIN_SPINNER_VERBS: &[&str] = &[
    "Accomplishing",
    "Actioning",
    "Actualizing",
    "Architecting",
    "Baking",
    "Beaming",
    "Beboppin'",
    "Befuddling",
    "Billowing",
    "Blanching",
    "Bloviating",
    "Boogieing",
    "Boondoggling",
    "Booping",
    "Bootstrapping",
    "Brewing",
    "Burrowing",
    "Calculating",
    "Canoodling",
    "Caramelizing",
    "Cascading",
    "Catapulting",
    "Cerebrating",
    "Channeling",
    "Channelling",
    "Choreographing",
    "Churning",
    "Clauding",
    "Coalescing",
    "Cogitating",
    "Combobulating",
    "Composing",
    "Computing",
    "Concocting",
    "Considering",
    "Contemplating",
    "Cooking",
    "Crafting",
    "Creating",
    "Crunching",
    "Crystallizing",
    "Cultivating",
    "Deciphering",
    "Deliberating",
    "Determining",
    "Dilly-dallying",
    "Discombobulating",
    "Doing",
    "Doodling",
    "Drizzling",
    "Ebbing",
    "Effecting",
    "Elucidating",
    "Embellishing",
    "Enchanting",
    "Envisioning",
    "Evaporating",
    "Fermenting",
    "Fiddle-faddling",
    "Finagling",
    "Flambéing",
    "Flibbertigibbeting",
    "Flowing",
    "Flummoxing",
    "Fluttering",
    "Forging",
    "Forming",
    "Frolicking",
    "Frosting",
    "Gallivanting",
    "Galloping",
    "Garnishing",
    "Generating",
    "Germinating",
    "Gitifying",
    "Grooving",
    "Gusting",
    "Harmonizing",
    "Hashing",
    "Hatching",
    "Herding",
    "Honking",
    "Hullaballooing",
    "Hyperspacing",
    "Ideating",
    "Imagining",
    "Improvising",
    "Incubating",
    "Inferring",
    "Infusing",
    "Ionizing",
    "Jitterbugging",
    "Julienning",
    "Kneading",
    "Leavening",
    "Levitating",
    "Lollygagging",
    "Manifesting",
    "Marinating",
    "Meandering",
    "Metamorphosing",
    "Misting",
    "Moonwalking",
    "Moseying",
    "Mulling",
    "Mustering",
    "Musing",
    "Nebulizing",
    "Nesting",
    "Newspapering",
    "Noodling",
    "Nucleating",
    "Orbiting",
    "Orchestrating",
    "Osmosing",
    "Perambulating",
    "Percolating",
    "Perusing",
    "Philosophising",
    "Photosynthesizing",
    "Pollinating",
    "Pondering",
    "Pontificating",
    "Pouncing",
    "Precipitating",
    "Prestidigitating",
    "Processing",
    "Proofing",
    "Propagating",
    "Puttering",
    "Puzzling",
    "Quantumizing",
    "Razzle-dazzling",
    "Razzmatazzing",
    "Recombobulating",
    "Reticulating",
    "Roosting",
    "Ruminating",
    "Sautéing",
    "Scampering",
    "Schlepping",
    "Scurrying",
    "Seasoning",
    "Shenaniganing",
    "Shimmying",
    "Simmering",
    "Skedaddling",
    "Sketching",
    "Slithering",
    "Smooshing",
    "Sock-hopping",
    "Spelunking",
    "Spinning",
    "Sprouting",
    "Stewing",
    "Sublimating",
    "Swirling",
    "Swooping",
    "Symbioting",
    "Synthesizing",
    "Tempering",
    "Thinking",
    "Thundering",
    "Tinkering",
    "Tomfoolering",
    "Topsy-turvying",
    "Transfiguring",
    "Transmuting",
    "Twisting",
    "Undulating",
    "Unfurling",
    "Unravelling",
    "Vibing",
    "Waddling",
    "Wandering",
    "Warping",
    "Whatchamacalliting",
    "Whirlpooling",
    "Whirring",
    "Whisking",
    "Wibbling",
    "Working",
    "Wrangling",
    "Zesting",
    "Zigzagging",
];