ToolUseMessage.fromJson constructor

ToolUseMessage.fromJson(
  1. Map<String, dynamic> json
)

Implementation

factory ToolUseMessage.fromJson(Map<String, dynamic> json) {
  ToolUseType type = ToolUseService.getToolUseTypeEnum(
    json["extraInfo"]?["typeDetails"]?["toolType"] ?? "",
    nativeToolType: json["extraInfo"]?["typeDetails"]?["nativeTool"]?["id"],
  );
  bool isPipeline = type == ToolUseType.pipeline;
  bool isRemoteCall = type == ToolUseType.remoteCall;
  bool isThinking = type == ToolUseType.nativeToolsThinking;
  bool isTodoList = type == ToolUseType.nativeToolsToDoList;
  bool isWebSearch = type == ToolUseType.nativeToolsWebSearch;
  bool isKnowledgeBase = type == ToolUseType.nativeToolsKnowledgeBase;
  bool isDocument = type == ToolUseType.nativeToolsDocument;
  bool isSMTP = type == ToolUseType.nativeToolsSMTP;
  bool isImageGeneration = type == ToolUseType.nativeToolsImageGeneration;
  bool isCodeInterpreter = type == ToolUseType.nativeToolsCodeInterpreter;
  bool isNativeDatabase = type == ToolUseType.nativeToolsNativeDatabase;
  final String nativeDbToolName =
      getString(json["extraInfo"]?["typeDetails"]?["toolName"]);
  final bool isSpreadsheetTool =
      isNativeDatabase && nativeDbToolName.trim().startsWith('spreadsheet_');
  bool isBrowserUse = type == ToolUseType.nativeToolsBrowserUse;
  bool isAskUser = type == ToolUseType.nativeToolsAskUser;
  bool isWebReader = type == ToolUseType.nativeToolsWebReader;
  bool isTaskTool = type == ToolUseType.nativeToolsTaskTool;
  bool isSubagent = type == ToolUseType.nativeToolsSubagent;
  Map<String, dynamic> answer = getMessage(json, false);
  Map<String, dynamic>? nativeForSubagent;
  if (isSubagent) {
    nativeForSubagent = ToolUseService.isNativeTool(type)
        ? getNativeToolData(json, false)
        : null;
  }

  return ToolUseMessage(
    id: getString(json["id"]),
    assistantName: json["assistantName"] ?? "",
    imageUuid: json["imageUuid"],
    chatBotId: getString(json["chatBotId"]),
    marketPlaceId: getString(json["marketPlaceId"]),
    type: type,
    toolName: json["extraInfo"]?["typeDetails"]?["toolName"] ?? "tool",
    queryGroupId: getString(json["queryGroupId"]),
    showTool: json["extraInfo"]?["typeDetails"]?["showTool"] ?? true,
    toolMessage: json["extraInfo"]?["typeDetails"]?["toolMessage"] ?? "",
    nativeToolData: ToolUseService.isNativeTool(type)
        ? getNativeToolData(json, false)
        : null,
    pipelineData: isPipeline ? ToolUsePipelineData.fromJson(answer) : null,
    remoteCallData: isRemoteCall ? answer : null,
    thinkingData: isThinking
        ? ToolUseThinkingData.fromJson(json["extraInfo"]?["typeDetails"])
        : null,
    toDoListData: isTodoList
        ? ToolUseToDoListData.fromJson(
            answer,
            json["extraInfo"]?["typeDetails"],
          )
        : null,
    webSearchData: isWebSearch ? ToolUseWebSearchData.fromJson(answer) : null,
    knowledgeBaseData: isKnowledgeBase
        ? ToolUseKnowledgeBaseData.fromJson(answer)
        : null,
    documentData: isDocument
        ? ToolUseDocumentData.fromJson(
            answer,
            json["extraInfo"]?["typeDetails"],
          )
        : null,
    smtpData: isSMTP ? ToolUseSMTPData.fromJson(answer) : null,
    imageGenerationData: isImageGeneration
        ? ToolUseImageGenerationData.fromJson(answer)
        : null,
    codeInterpreterData: isCodeInterpreter
        ? ToolUseCodeInterpreterData.fromJson(
            answer,
            json["extraInfo"]?["typeDetails"],
          )
        : null,
    nativeDatabaseData: isNativeDatabase && !isSpreadsheetTool
        ? ToolUseNativeDatabaseData.fromToolUseMessage(
            toolName: nativeDbToolName,
            message: answer,
            typeDetails: json["extraInfo"]?["typeDetails"],
          )
        : null,
    spreadsheetData: isSpreadsheetTool
        ? ToolUseSpreadsheetData.fromToolUseMessage(
            toolName: nativeDbToolName,
            message: answer,
            typeDetails: json["extraInfo"]?["typeDetails"],
          )
        : null,
    browserUseData: isBrowserUse
        ? ToolUseBrowserUseData.fromJson(
            answer,
            json["extraInfo"]?["typeDetails"],
          )
        : null,
    askUserData: isAskUser
        ? ToolUseAskUserData.fromJson(json["extraInfo"]?["typeDetails"])
        : null,
    webReaderData: isWebReader ? ToolUseWebReaderData.fromJson(answer) : null,
    taskToolData: isTaskTool
        ? ToolUseTaskData.fromJson(
            _taskToolDataWithSubTool(
              ToolUseMessage.getNativeToolData(json, false),
              json,
              false,
            ),
          )
        : null,
    subagentData: isSubagent && nativeForSubagent != null
        ? ToolUseSubagentData.fromNativeMap(nativeForSubagent)
        : null,
  );
}