The Conversation type manages message history, validation, and transformations for LLM interactions.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/block/goose/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Conversation provides:- Ordered message storage
- Automatic message validation and fixing
- Message visibility filtering (user vs agent)
- Tool call/response pairing
- Message deduplication and merging
Conversation Struct
crates/goose/src/conversation/mod.rs:12
Constructor Methods
new()
Create a validated conversation.Iterator of messages
InvalidConversation if messages violate conversation rules
Source: crates/goose/src/conversation/mod.rs:22-27
Example:
new_unvalidated()
Create an unvalidated conversation.Iterator of messages
crates/goose/src/conversation/mod.rs:29-34
empty()
Create an empty conversation.crates/goose/src/conversation/mod.rs:36-38
Message Access
messages()
Get the message list.crates/goose/src/conversation/mod.rs:40-42
Example:
last()
Get the last message.crates/goose/src/conversation/mod.rs:65-67
first()
Get the first message.crates/goose/src/conversation/mod.rs:69-71
len()
Get message count.crates/goose/src/conversation/mod.rs:73-75
is_empty()
Check if conversation is empty.crates/goose/src/conversation/mod.rs:77-79
Message Manipulation
push()
Add a message, merging with the last if IDs match.Message to append
- If the last message has the same ID, content is merged
- Otherwise, message is appended
crates/goose/src/conversation/mod.rs:44-63
Example:
extend()
Add multiple messages.Messages to add
crates/goose/src/conversation/mod.rs:81-88
pop()
Remove and return the last message.crates/goose/src/conversation/mod.rs:94-96
truncate()
Keep only the first N messages.Number of messages to keep
crates/goose/src/conversation/mod.rs:98-100
clear()
Remove all messages.crates/goose/src/conversation/mod.rs:102-104
Filtering
filtered_messages()
Filter messages by metadata.Predicate function
crates/goose/src/conversation/mod.rs:106-115
agent_visible_messages()
Get messages visible to the agent.metadata.agent_visible = true
Source: crates/goose/src/conversation/mod.rs:117-119
Example:
user_visible_messages()
Get messages visible to the user.metadata.user_visible = true
Source: crates/goose/src/conversation/mod.rs:121-123
Validation and Fixing
fix_conversation()
Automatically fix conversation issues.Conversation to fix
- Merge consecutive text content in assistant messages
- Trim trailing whitespace from assistant messages
- Remove empty messages
- Fix orphaned tool calls/responses
- Merge consecutive messages with same role
- Ensure conversation starts with user and ends with user
- Add placeholder “Hello” if empty
crates/goose/src/conversation/mod.rs:164-200
Example:
Message Type
Message Struct
crates/goose/src/conversation/message.rs:663-670
Unique message identifier (auto-generated if not set)
Role::User or Role::AssistantUnix timestamp (seconds)
Message content items (text, images, tool calls, etc.)
Visibility settings
Message Constructors
user()
Create a user message.crates/goose/src/conversation/message.rs:700-708
assistant()
Create an assistant message.crates/goose/src/conversation/message.rs:710-718
Example:
Message Builders
with_text()
Add text content.crates/goose/src/conversation/message.rs:737-748
with_image()
Add image content.crates/goose/src/conversation/message.rs:751-753
with_tool_request()
Add a tool call.crates/goose/src/conversation/message.rs:756-762
with_tool_response()
Add a tool result.crates/goose/src/conversation/message.rs:780-786
with_visibility()
Set visibility flags.crates/goose/src/conversation/message.rs:927-931
Example:
Message Utilities
as_concat_text()
Get all text content concatenated.crates/goose/src/conversation/message.rs:835-841
is_tool_call()
Check if message contains tool requests.crates/goose/src/conversation/message.rs:844-848
is_tool_response()
Check if message contains tool responses.crates/goose/src/conversation/message.rs:851-855
MessageContent Variants
crates/goose/src/conversation/message.rs:185-199
MessageMetadata
Controls message visibility.crates/goose/src/conversation/message.rs:586-591
Constructors
crates/goose/src/conversation/message.rs:603-625
Example: