roboto.ai.core.record#
Module Contents#
- type roboto.ai.core.record.AgentContent = AgentTextContent | AgentToolUseContent | AgentToolResultContent | AgentErrorContent#
Type alias for all possible content types within agent messages.
- class roboto.ai.core.record.AgentContentType#
Bases:
roboto.compat.StrEnumEnumeration of different types of content within agent messages.
Defines the various content types that can be included in agent messages.
- ERROR = 'error'#
Error information when message generation fails.
- TEXT = 'text'#
Plain text content from users or AI responses.
- TOOL_RESULT = 'tool_result'#
Results returned from tool executions.
- TOOL_USE = 'tool_use'#
Tool invocation requests from the AI assistant.
- class roboto.ai.core.record.AgentErrorContent(/, **data)#
Bases:
pydantic.BaseModelError content within an agent message.
Used when message generation fails due to an error or is cancelled by the user.
- Parameters:
data (Any)
- content_type: Literal[AgentContentType]#
- error_code: str | None = None#
Optional error code for programmatic handling.
- error_message: str#
User-friendly error message describing what went wrong.
- class roboto.ai.core.record.AgentGoalStatus#
Bases:
roboto.compat.StrEnumLifecycle of a per-turn declared goal.
Goals begin PENDING when registered. They transition to ACHIEVED when the corresponding achieve-tool reports success, or to FAILED when the runner’s corrective re-prompt budget for the turn is exhausted (or when the worker cannot construct an achieve-tool for the goal).
- ACHIEVED = 'achieved'#
Goal’s corresponding achieve-tool was invoked successfully.
- FAILED = 'failed'#
Goal could not be achieved within the turn’s retry budget.
- PENDING = 'pending'#
Goal has been registered but not yet completed.
- class roboto.ai.core.record.AgentMessage(/, **data)#
Bases:
pydantic.BaseModelA single message within an agent thread.
Represents one message in the conversation, containing the sender role, content blocks, and generation status. Messages can contain multiple content blocks of different types (text, tool use, tool results).
- Parameters:
data (Any)
- content: list[AgentContent]#
List of content blocks that make up this message.
- created: datetime.datetime = None#
Timestamp when this message was created.
- is_complete()#
Check if message generation is complete.
- Returns:
True if the message status is COMPLETED, False otherwise.
- Return type:
bool
- is_unsuccessful()#
Check if message generation failed or was cancelled.
- Returns:
True if the message status is FAILED or CANCELLED, False otherwise.
- Return type:
bool
- status: AgentMessageStatus#
Current generation status of this message.
- classmethod text(text, role=AgentRole.USER)#
Create a simple text message.
Convenience method for creating a message containing only text content.
- Parameters:
text (str) – The text content for the message.
role (AgentRole) – The role of the message sender. Defaults to USER.
- Returns:
AgentMessage instance containing the text content.
- Return type:
- class roboto.ai.core.record.AgentMessageStatus#
Bases:
roboto.compat.StrEnumEnumeration of possible message generation states.
Tracks the lifecycle of message generation from initiation to completion.
- CANCELLED = 'cancelled'#
Message generation was cancelled by the user.
- COMPLETED = 'completed'#
Message generation has finished and content is complete.
- FAILED = 'failed'#
Message generation failed due to an error.
- GENERATING = 'generating'#
Message content is currently being generated.
- NOT_STARTED = 'not_started'#
Message has been queued but generation has not begun.
- is_terminal()#
Check if the message generation is in a terminal state.
- Returns:
True if the message is in a terminal state, False otherwise.
- Return type:
bool
- class roboto.ai.core.record.AgentRole#
Bases:
roboto.compat.StrEnumEnumeration of possible roles in an agent thread.
Defines the different participants that can send messages in a thread.
- ASSISTANT = 'assistant'#
AI agent responding to user queries and requests.
- ROBOTO = 'roboto'#
Roboto system providing tool results and system information.
- USER = 'user'#
Human user sending messages to the agent.
- class roboto.ai.core.record.AgentTextContent(/, **data)#
Bases:
pydantic.BaseModelText content within an agent message.
- Parameters:
data (Any)
- text: str#
The actual text content of the message.
- class roboto.ai.core.record.AgentThreadDelta(/, **data)#
Bases:
pydantic.BaseModelIncremental update to an agent thread.
Contains only the changes since the last synchronization, used for efficient real-time updates without transferring the entire thread history.
- Parameters:
data (Any)
- continuation_token: str#
Updated token for the next incremental synchronization.
- goals: list[AgentThreadGoalRecord] | None = None#
Latest snapshot of every goal declared in the thread, ordered by allocation.
Nonemeans there has been no change since the previous delta — clients should retain the snapshot they already hold. An empty list means the thread has no declared goals. A non-empty list is the authoritative current snapshot and replaces any prior value.
- messages_by_idx: dict[int, AgentMessage]#
New or updated messages indexed by their position in the conversation.
- status: AgentThreadStatus | None = None#
Updated status of the agent thread.
- title: str | None = None#
Updated title of the agent thread.
- class roboto.ai.core.record.AgentThreadGoalRecord(/, **data)#
Bases:
pydantic.BaseModelCustomer-visible read shape of a goal declared on an agent thread.
- Parameters:
data (Any)
- concluded_at: datetime.datetime | None = None#
Timestamp when the goal transitioned to a terminal state (ACHIEVED or FAILED).
Nonewhile the goal is still PENDING.
- created: datetime.datetime#
Timestamp when the goal was registered.
- goal_data: dict[str, Any]#
The validated goal payload as JSON. Use
to_agent_goal()to recover the typed model the caller declared.
- goal_type: str#
Discriminator selecting which
AgentGoalmodel thegoal_datapayload conforms to (e.g."dataset_summary").
- message_sequence_num: int#
Index in the thread’s full messages list of the
AgentRole.USERmessage that declared this goal. Use to render goals adjacent to the turn they were attached to.
- status: AgentGoalStatus#
Current lifecycle state of the goal.
- class roboto.ai.core.record.AgentThreadRecord(/, **data)#
Bases:
pydantic.BaseModelComplete record of an agent thread.
Contains all the persistent data for a thread including metadata, message history, and synchronization state.
- Parameters:
data (Any)
- continuation_token: str#
Token used for incremental updates and synchronization.
- created: datetime.datetime#
Timestamp when this agent thread was created.
- created_by: str#
User ID of the person who created this agent thread.
- created_from_agent_id: str | None = None#
If this thread was started via the agent launch flow, the id of the agent that produced it.
Nonefor threads started directly throughPOST /v1/ai/threads. Forks do not inherit this field — a fork is its own thread.
- forked_from_message_sequence_num: int | None = None#
Message sequence number in the source thread that this fork was taken from.
Populated in tandem with
forked_from_thread_id; both areNonefor threads that were not created as a fork.
- forked_from_thread_id: str | None = None#
If this thread was forked, the id of the source thread.
Noneotherwise.Deserialization also accepts the legacy
forked_from_session_idspelling for backward compatibility.
- goals: list[AgentThreadGoalRecord] | None = None#
Goals declared across this thread’s turns, ordered by the turn that declared them.
Nonemeans goals were not loaded for this record; an empty list means they were loaded but the thread never declared any.
- messages: list[AgentMessage] = None#
Complete list of messages in the conversation.
- model_profile: str | None = None#
Model profile used for this agent thread (e.g., ‘standard’, ‘advanced’).
- org_id: str#
Organization ID that owns this agent thread.
- status: AgentThreadStatus#
Current status of this agent thread.
- thread_id: str = None#
Unique identifier for this agent thread.
Deserialization also accepts the legacy
session_idandchat_idspellings for backward compatibility; the canonical attribute name isthread_id.
- title: str | None = None#
Title of this agent thread.
- visibility: ThreadVisibility#
Who can read this thread.
PRIVATE(the default) restricts reads to thecreated_byuser and Roboto admins;ORGopens the thread to every member oforg_id.
- class roboto.ai.core.record.AgentThreadStatus#
Bases:
roboto.compat.StrEnumEnumeration of possible agent thread states.
Tracks the overall status of an agent thread from creation to termination.
- CLIENT_TOOL_TURN = 'client_tool_turn'#
Client must execute pending tool uses and submit results.
- GOALS_FAILED = 'goals_failed'#
The agent runner exhausted its corrective re-prompt budget without achieving every declared goal for the most-recent turn. Signals to clients that the thread needs human intervention before it can continue.
- NOT_STARTED = 'not_started'#
Thread has been created but no messages have been sent.
- ROBOTO_TURN = 'roboto_turn'#
Roboto is generating a message.
- USER_TURN = 'user_turn'#
User has the turn to send a message.
- class roboto.ai.core.record.AgentToolResultContent(/, **data)#
Bases:
pydantic.BaseModelTool execution result content within an agent message.
- Parameters:
data (Any)
- content_type: Literal[AgentContentType]#
- raw_response: dict[str, Any] | None = None#
Raw, unparsed response payload from tool execution.
- runtime_ms: int#
Wall-clock execution time of the tool in milliseconds.
- status: str#
Outcome of the tool execution (e.g. ‘success’, ‘error’).
- tool_name: str#
Name of the tool that was executed.
- tool_use_id: str#
Identifier of the tool invocation this result corresponds to.
- class roboto.ai.core.record.AgentToolUseContent(/, **data)#
Bases:
pydantic.BaseModelTool usage request content within an agent message.
- Parameters:
data (Any)
- content_type: Literal[AgentContentType]#
- input: dict[str, Any] | None = None#
Parsed tool input parameters chosen by the LLM (provider-agnostic).
- raw_request: dict[str, Any] | None = None#
Raw, unparsed request payload for this tool invocation.
- tool_name: str#
Name of the tool the LLM is requesting to invoke.
- tool_use_id: str#
Unique identifier for this tool invocation, used to correlate with its result.
- roboto.ai.core.record.CLIENT_TOOL_NAME_PREFIX = 'client_'#
Required prefix for every client-declared tool name.
Distinguishes client tools from server-side tools at every layer (API, SDK, UI, Bedrock toolConfig) without ambiguity. Underscore is used rather than a colon so the resulting name still matches Bedrock’s Converse
toolSpec.namepattern (^[a-zA-Z][a-zA-Z0-9_]*$).
- class roboto.ai.core.record.ClientToolSpec(/, **data)#
Bases:
pydantic.BaseModelDeclarative specification for a client-side tool.
Unlike AgentTool (which is an ABC with a __call__ method for server-side execution), ClientToolSpec is a plain data model. The backend includes it in the LLM’s tool list but never executes it — the client is responsible for execution and submitting the result.
- Parameters:
data (Any)
- description: str#
- input_schema: dict[str, Any]#
- name: str#
- class roboto.ai.core.record.ModelProfileResponse(/, **data)#
Bases:
pydantic.BaseModelMetadata about an available model profile, returned by the API.
- Parameters:
data (Any)
- description: str#
Short description of the profile’s characteristics.
- id: str#
Profile identifier, e.g. ‘standard’ or ‘advanced’.
- is_default: bool = False#
Whether this profile is selected by default for new threads.
- label: str#
Human-readable display label.
- class roboto.ai.core.record.ThreadVisibility#
Bases:
roboto.compat.StrEnumRead-scope for an
AgentThreadRecord.Set at thread creation time and immutable for the life of the thread. Import as
roboto.ai.agent_thread.ThreadVisibility.- ORG = 'org'#
Any member of the thread’s organization (and Roboto admins) may read the thread.
Default for threads produced by the agent launch flow, since agents exist to share workflows across teammates. Forks of an
ORGthread do not inherit visibility — every fork lands asPRIVATE.
- PRIVATE = 'private'#
Only the creating user (and Roboto admins) may read the thread.
Default for threads created via
POST /v1/ai/threadsso an in-flight experiment does not leak to the rest of the org until the caller opts in.