//! The live `update_plan` checklist for the current session.
//!
//! Thread-local (the browser is single-threaded) and deliberately NOT persisted:
//! a plan is scoped to the objective in flight, not to the agent's identity. Its
//! one structural job is telling `turn_flow::classify_turn` that a text-only
//! turn is mid-plan narration rather than a conversational goodbye — see
//! `crate::plan`.
use RefCell;
use cratePlan;
thread_local!
/// Replace the plan (`update_plan` is idempotent — the model re-sends the whole
/// list). An empty step list clears it.
pub
/// Does a plan with OPEN steps exist? This is the signal that keeps the turn
/// loop alive through a text-only planning turn.
pub
/// Drop the plan. Called when the model calls `finish` and when the context is
/// cleared — a stale plan must never hold a later turn open.
pub