pubconstGOAL_INSTRUCTIONS: &str="Persistent goal execution: plan the requested work, execute it, and verify each requested outcome. Intermediate progress replies do not finish the run. Preserve completed work and incorporate user steering. End your final reply with a standalone [GOAL_COMPLETE] line only when all outcomes are verified; explain the verification. When required information or human action is missing, explain exactly what is needed and end with a standalone [GOAL_BLOCKED] line. For a simple Cloudflare connection-check checkbox, observe the current screen and try connection_check once, then verify the requested content. For other CAPTCHA, failed verification, login or 2FA use request_takeover. Never claim completion merely because you planned the work.";
pubconstGOAL_CONTINUE: &str="The goal remains active. Continue the plan with tools and verify the outcome. Finish only with a standalone [GOAL_COMPLETE] line after verification, or [GOAL_BLOCKED] when required human input is missing.";
/// A run that stops in the middle must say so instead of going quiet. The
/// model marks the moment; the loop turns the marker into a paused run the
/// human can continue with one click.
pubconstNEEDS_INPUT_MARKER: &str="[NEEDS_INPUT]";
/// Turn budgets for self-correction. A goal run is expected to fight through
/// obstacles, so it gets more attempts than a plain task.
pubconstMAX_NUDGES_PLAIN: u32=6;
pubconstMAX_NUDGES_GOAL: u32=8;
/// Sent once per stop attempt: the cheapest way to tell "the work is done" from
/// "the model just ran out of sentences".
pubconstVERIFY_BEFORE_DONE: &str="Before you finish, verify the result against the CURRENT screen or file contents: say what you checked and what you still owe. If any requested outcome is missing, act on it now with a tool call. If the human must decide, supply something, or do a step you cannot do, say what you did so far and what the next step is, then end with a standalone [NEEDS_INPUT] line. Never end a half-finished task with a plain status sentence.";
/// Why the loop is handing the turn back to the human.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pubenumStopReason{
/// The model stopped mid-task and asked the human to take it from here.
MidTaskText,
/// The bounded turn budget is spent with work still outstanding.
BudgetExhausted,
}
implStopReason{
pubfnas_str(self)-> &'staticstr{
matchself{
Self::MidTaskText=>"mid_task_text",
Self::BudgetExhausted=>"budget_exhausted",
}
}
}
/// Only a standalone marker line asks for input, never a quoted mention.