jeevesagent.model.scripted
==========================

.. py:module:: jeevesagent.model.scripted

.. autoapi-nested-parse::

   A test-only model that replays a fixed sequence of turns.

   Each :class:`ScriptedTurn` describes one model response: optional text
   followed by zero or more tool calls, terminated by a finish chunk. The
   model advances through the script with each call to :meth:`stream`,
   which lets a single agent ``run()`` exercise multi-turn flows end-to-end.



Classes
-------

.. autoapisummary::

   jeevesagent.model.scripted.ScriptedModel
   jeevesagent.model.scripted.ScriptedTurn


Module Contents
---------------

.. py:class:: ScriptedModel(turns: list[ScriptedTurn])

   Model that emits canned responses, one per call to :meth:`stream`.


   .. py:method:: complete(messages: list[jeevesagent.core.types.Message], *, tools: list[jeevesagent.core.types.ToolDef] | None = None, temperature: float = 1.0, max_tokens: int | None = None) -> tuple[str, list[jeevesagent.core.types.ToolCall], jeevesagent.core.types.Usage, str]
      :async:


      Single-shot replay of the next scripted turn.

      Mirrors :meth:`stream` but returns the turn's text +
      tool_calls + usage in one tuple. Used by the non-streaming
      hot path (``agent.run()``); ``agent.stream()`` keeps using
      :meth:`stream` for per-chunk replay.



   .. py:method:: stream(messages: list[jeevesagent.core.types.Message], *, tools: list[jeevesagent.core.types.ToolDef] | None = None, temperature: float = 1.0, max_tokens: int | None = None) -> collections.abc.AsyncIterator[jeevesagent.core.types.ModelChunk]
      :async:



   .. py:attribute:: name
      :type:  str
      :value: 'scripted'



   .. py:property:: remaining
      :type: int



.. py:class:: ScriptedTurn

   .. py:attribute:: text
      :type:  str
      :value: ''



   .. py:attribute:: tool_calls
      :type:  list[jeevesagent.core.types.ToolCall]
      :value: []



   .. py:attribute:: usage
      :type:  jeevesagent.core.types.Usage


