utils/messages/message_utils library

Classes

AssistantMessage
Assistant message.
AttachmentMessage
Attachment message.
ContentBlock
A content block within a message.
ImageBlock
Image content block.
Message
Base message type.
MessageLookups
Pre-computed lookups for O(1) access to message relationships.
NormalizedMessage
A normalized message with exactly one content block.
ProgressMessage
Progress message for tool execution.
SystemMessage
System message.
TextBlock
Text content block.
ToolResultBlock
Tool result content block.
ToolUseBlock
Tool use content block.
Usage
Usage statistics for an API response.
UserMessage
User message.

Enums

HookEvent
Hook event types.
MessageOrigin
Origin of a message.
MessageType
Message types in the conversation.
PermissionMode
Permission mode for message context.
SystemMessageLevel
System message severity level.
SystemMessageSubtype
System message subtypes.

Properties

syntheticMessages Set<String>
final

Functions

autoRejectMessage(String toolName) String
Build an auto-reject message for a denied tool.
buildClassifierUnavailableMessage(String toolName, String classifierModel) String
Build a message for when the classifier is temporarily unavailable.
buildMessageLookups(List<Message> normalizedMessages, List<Message> messages) MessageLookups
Build pre-computed lookups for O(1) access to message relationships.
buildYoloRejectionMessage(String reason) String
Build a rejection message for auto mode classifier denials.
createAssistantAPIErrorMessage({required String content, Map<String, dynamic>? apiError, Map<String, dynamic>? error, String? errorDetails}) AssistantMessage
Create an assistant API error message.
createAssistantMessage({required dynamic content, Usage? usage, bool? isVirtual}) AssistantMessage
Create an assistant message.
createProgressMessage({required String toolUseID, required String parentToolUseID, required Map<String, dynamic> data}) ProgressMessage
Create a progress message.
createToolResultStopMessage(String toolUseID) ToolResultBlock
Create a tool result stop message.
createUserInterruptionMessage({bool toolUse = false}) UserMessage
Create a user interruption message.
createUserMessage({required dynamic content, bool? isMeta, bool? isVisibleInTranscriptOnly, bool? isVirtual, bool? isCompactSummary, dynamic toolUseResult, Map<String, dynamic>? mcpMeta, String? uuid, String? timestamp, List<int>? imagePasteIds, String? sourceToolAssistantUUID, PermissionMode? permissionMode, MessageOrigin? origin, Map<String, dynamic>? summarizeMetadata}) UserMessage
Create a user message with the given content.
deriveShortMessageId(String uuid) String
Derive a short stable message ID (6-char base36) from a UUID.
deriveUUID(String parentUUID, int index) String
Deterministic UUID derivation from parent UUID + index.
dontAskRejectMessage(String toolName) String
Build a don't-ask reject message for a denied tool.
extractTag(String html, String tagName) String?
Extract content from an XML-like tag in a string.
extractTextContent(Message message) String
Extract text content from a message.
getLastAssistantMessage(List<Message> messages) AssistantMessage?
Get the last assistant message from a list.
getProgressMessagesFromLookup(Message message, MessageLookups lookups) List<ProgressMessage>
Get progress messages from lookup.
getSiblingToolUseIDsFromLookup(Message message, MessageLookups lookups) Set<String>
Get sibling tool use IDs from lookup.
getToolResultIDs(List<Message> messages) Map<String, bool>
Get tool result IDs from normalized messages.
getToolUseID(Message message) String?
Get the tool use ID from a normalized message.
getToolUseIDs(List<Message> messages) Set<String>
Get all tool use IDs from a list of messages.
getUserMessageText(Message message) String
Get user message text content.
hasToolCallsInLastAssistantTurn(List<Message> messages) bool
Check if the last assistant turn has tool calls.
hasUnresolvedHooksFromLookup(String toolUseID, HookEvent hookEvent, MessageLookups lookups) bool
Check for unresolved hooks using pre-computed lookup.
isClassifierDenial(String content) bool
Check if a tool result is a classifier denial.
isNotEmptyMessage(Message message) bool
Check if a message is not empty.
isSyntheticMessage(Message message) bool
Check if a message is synthetic (interrupt, cancel, reject, etc.).
isThinkingMessage(Message message) bool
Check if a message is a thinking message (extended thinking).
isToolUseRequestMessage(Message message) bool
Check if a message is a tool use request.
isToolUseResultMessage(Message message) bool
Check if a message is a tool use result.
mergeAssistantMessages(AssistantMessage a, AssistantMessage b) AssistantMessage
Merge two assistant messages.
mergeUserMessages(UserMessage a, UserMessage b) UserMessage
Merge two user messages.
mergeUserMessagesAndToolResults(UserMessage a, UserMessage b) UserMessage
Merge two user messages including tool results.
prepareUserContent({required String inputString, required List<ContentBlock> precedingInputBlocks}) → dynamic
Prepare user content with preceding input blocks.
withMemoryCorrectionHint(String message, {bool autoMemoryEnabled = false}) String
Append a memory correction hint when auto-memory is enabled.
wrapInSystemReminder(String text) String
Wrap text in system-reminder XML tags.