CollapseUtils class

Manages message collapsing and grouping logic.

Usage:

final utils = Sint.put(CollapseUtils());
final collapsed = utils.collapseReadSearchGroups(messages, tools);
Inheritance

Constructors

CollapseUtils({bool fullscreenEnabled = false, bool teamMemEnabled = false, bool historySnipEnabled = false})

Properties

fullscreenEnabled bool
Feature flags.
final
hashCode int
The hash code for this object.
no setterinherited
historySnipEnabled bool
final
initialized bool
Checks whether the controller has already been initialized.
no setterinherited
isAutoManagedMemoryFile bool Function(String path)?
Memory file detection callbacks.
getter/setter pair
isAutoManagedMemoryPattern bool Function(String pattern)?
getter/setter pair
isClosed bool
Checks whether the controller has already been closed.
no setterinherited
isDisposed bool
no setterinherited
isMemoryDirectory bool Function(String path)?
getter/setter pair
isSearchOrReadChecker bool Function(String toolName, dynamic toolInput)?
Tool name to isSearchOrRead checker callback. Set this externally for tool-aware collapsing.
getter/setter pair
isShellCommandTargetingMemory bool Function(String command)?
getter/setter pair
listenersLength int
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
teamMemEnabled bool
final

Methods

addListener(SintStateUpdate listener) → Disposer
Register a closure to be called when the object notifies its listeners.
inherited
addListenerId(Object? key, SintStateUpdate listener) → Disposer
inherited
collapseReadSearchGroups(List<RenderableMessage> messages) List
Collapse consecutive Read/Search operations into summary groups.
containsListener(SintStateUpdate listener) bool
inherited
debounce<T>(RxInterface<T> rx, void callback(T), {Duration duration = const Duration(milliseconds: 400)}) → void
Calls callback after rx stops changing for duration. Useful for search-as-you-type, form validation, etc.
inherited
dispose() → void
inherited
ever<T>(RxInterface<T> rx, void callback(T)) → void
Calls callback every time rx changes. Auto-cancels on controller disposal.
inherited
getSearchOrReadFromContent(Map<String, dynamic>? content) SearchOrReadResult?
Check if a tool_use content block is collapsible.
getToolSearchOrReadInfo(String toolName, dynamic toolInput) SearchOrReadResult
Checks if a tool is a search/read operation.
interval<T>(RxInterface<T> rx, void callback(T), {Duration duration = const Duration(seconds: 1)}) → void
Calls callback at most once per duration, ignoring intermediate changes. Useful for rate-limiting UI updates.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
once<T>(RxInterface<T> rx, void callback(T)) → void
Calls callback only the first time rx changes, then cancels.
inherited
onClose() → void
Called before onDelete method. onClose might be used to dispose resources used by the controller. Like closing events, or streams before the controller is destroyed. Or dispose objects that can potentially create some memory leaks, like TextEditingControllers, AnimationControllers. Might be useful as well to persist some data on disk.
inherited
onDelete() → void
inherited
onInit() → void
Called immediately after the widget is allocated in memory. You might use this to initialize something for the controller.
inherited
onReady() → void
Called 1 frame after onInit(). It is the perfect place to enter navigation events, like snackbar, dialogs, or a new route, or async request.
inherited
onStart() → void
Called at the exact moment the widget is allocated in memory. It uses an internal "callable" type, to avoid any @overrides in subclasses. This method should be internal and is required to define the lifetime cycle of the subclass.
inherited
refresh() → void
inherited
refreshGroup(Object id) → void
inherited
removeListener(VoidCallback listener) → void
Remove a previously registered closure from the list of closures that the object notifies.
inherited
removeListenerId(Object id, VoidCallback listener) → void
inherited
reportAdd(VoidCallback disposer) → void
inherited
reportRead() → void
inherited
toString() String
A string representation of this object.
inherited
update([List<Object>? ids, bool condition = true]) → void
Notifies listeners to update the UI.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

collapseBackgroundBashNotifications(List<RenderableMessage> messages, {required bool verbose, required bool fullscreenEnabled}) List<RenderableMessage>
Collapses consecutive completed-background-bash task-notifications into a single synthetic "N background commands completed" notification.
collapseHookSummaries(List<RenderableMessage> messages) List<RenderableMessage>
Collapses consecutive hook summary messages with the same hookLabel into a single summary.
collapseTeammateShutdowns(List<RenderableMessage> messages) List<RenderableMessage>
Collapses consecutive in-process teammate shutdown task_status attachments into a single batch attachment with a count.
commandAsHint(String command) String
Format a bash command for the hint display.
countToolUses(RenderableMessage msg) int
Count the number of tool uses in a message.
getFilePathFromToolInput(dynamic toolInput) String?
Extract the primary file/directory path from a tool_use input.
getFilePathsFromReadMessage(RenderableMessage msg) List<String>
Extract file paths from read tool inputs in a message.
getSearchReadSummaryText({required int searchCount, required int readCount, required bool isActive, int replCount = 0, int memorySearchCount = 0, int memoryReadCount = 0, int memoryWriteCount = 0, int teamMemorySearchCount = 0, int teamMemoryReadCount = 0, int teamMemoryWriteCount = 0, int listCount = 0}) String
Generate a summary text for search/read/REPL counts.
getToolUseIdsFromCollapsedGroup(CollapsedReadSearchGroup message) List<String>
Get all tool use IDs from a collapsed group.
getToolUseIdsFromMessage(RenderableMessage msg) List<String>
Get all tool use IDs from a single message.
hasAnyToolInProgress(CollapsedReadSearchGroup message, Set<String> inProgressToolUseIDs) bool
Check if any tool in a collapsed group is in progress.
isPreToolHookSummary(RenderableMessage msg) bool
Check if a message is a pre-tool hook summary.
isTextBreaker(RenderableMessage msg) bool
Check if a message is assistant text that should break a group.
shouldSkipMessage(RenderableMessage msg) bool
Check if a message should be skipped (not break the group).
summarizeRecentActivities(List<Map<String, dynamic>> activities) String?
Summarize a list of recent tool activities into a compact description.