handleToolArgsDeltaEvent method

void handleToolArgsDeltaEvent(
  1. Map<String, dynamic> data
)

Implementation

void handleToolArgsDeltaEvent(Map<String, dynamic> data) {
  try {
    final ToolUseArgsDeltaData event = ToolUseArgsDeltaData.fromJson(data);
    final String toolId = event.toolId.trim();
    final String toolName = event.toolName.trim();
    if (toolId.isEmpty || toolName.isEmpty) return;
    markToolLoadingStarted(toolName);

    // Track this tool as "active" (we're between TOOL_PENDING and TOOL_USE_START).
    activeToolLoadings[toolName] = event.toolUseType;
    activeToolLoadings.refresh();

    // Append delta to buffer.
    final ToolArgsDeltaComputation computation =
        ToolArgsDeltaService.computePreview(
          previousBuffer: _toolArgsDeltaBuffers[toolId] ?? '',
          argsDelta: event.argsDelta,
        );
    _toolArgsDeltaBuffers[toolId] = computation.fullBuffer;
    toolArgsPreviewToolIdByName[toolName] = toolId;
    toolArgsPreviewToolIdByName.refresh();

    if (computation.preview != null &&
        computation.preview!.trim().isNotEmpty) {
      toolArgsPreviewContentsById[toolId] = computation.preview!;
      toolArgsPreviewContentsById.refresh();
    }
    if (computation.title != null && computation.title!.trim().isNotEmpty) {
      toolArgsPreviewTitlesById[toolId] = computation.title!.trim();
      toolArgsPreviewTitlesById.refresh();
    }
    update();
    syncLoadingMessageFromActiveTools();
  } catch (_) {
    return;
  }
}