formatToolCallEntry function

ToolCallEntryDisplay formatToolCallEntry({
  1. required String toolkit,
  2. required String tool,
  3. required Map<String, Object?>? arguments,
  4. required List<String> logs,
  5. required String? errorMessage,
  6. bool completed = true,
  7. bool pending = false,
  8. int? detailLineLimit = _toolLogRenderLimit,
  9. int argumentDeltaBytes = 0,
})

Implementation

ToolCallEntryDisplay formatToolCallEntry({
  required String toolkit,
  required String tool,
  required Map<String, Object?>? arguments,
  required List<String> logs,
  required String? errorMessage,
  bool completed = true,
  bool pending = false,
  int? detailLineLimit = _toolLogRenderLimit,
  int argumentDeltaBytes = 0,
}) {
  final failed = errorMessage != null;
  var headline = toolCallHeadline(
    toolkit: toolkit,
    tool: tool,
    arguments: arguments,
    failed: failed,
    completed: completed,
    pending: pending,
    argumentDeltaBytes: argumentDeltaBytes,
  );
  final rawHeadline = '${failed ? "Failed" : "Ran"} ${toolCallRawLabel(toolkit: toolkit, tool: tool)}';
  final logLines = _toolLogLines(logs).toList(growable: true);
  if (failed && _logLinesLookLikeTraceback(logLines)) {
    logLines.clear();
  }
  if (headline.text == rawHeadline && logLines.isNotEmpty) {
    headline = _logHeadline(logLines.removeAt(0));
  }

  final detailsTruncated = detailLineLimit != null && logLines.length > detailLineLimit;
  final displayedLogLines = detailLineLimit == null ? logLines : _trailingLogLines(logLines, detailLineLimit);
  final detailLines = <String>[...displayedLogLines];
  final errorLine = _toolErrorLine(errorMessage);
  if (errorLine != null) {
    detailLines.add(errorLine);
  }
  return ToolCallEntryDisplay(headline: headline, detailLines: detailLines, detailsTruncated: detailsTruncated);
}