Tool.fromJson constructor

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

Implementation

factory Tool.fromJson(Map<String, dynamic> json) {
  switch (json['type']) {
    case 'function_tool':
      return FunctionTool(
        name: json['name'] as String,
        parameters: Map<String, dynamic>.from(json['parameters'] as Map),
        strict: json['strict'] as bool?,
        description: json['description'] as String?,
      );
    case 'file_search':
      return FileSearchTool(
        vectorStoreIds: (json['vector_store_ids'] as List?)?.cast<String>() ?? const [],
        filters: (json['filters'] as List?)?.cast<Map<String, dynamic>>().map(FileSearchFilter.fromJson).toList(),
        maxNumResults: json['max_num_results'] as int?,
        rankingOptions: json['ranking_options'] == null ? null : RankingOptions.fromJson(json['ranking_options'] as Map<String, dynamic>),
      );
    case 'web_search_preview':
      return WebSearchPreviewTool(
        searchContextSize: json['search_context_size'] == null ? null : SearchContextSize.fromJson(json['search_context_size'] as String),
        userLocation: json['user_location'] == null ? null : UserLocation.fromJson(json['user_location'] as Map<String, dynamic>),
      );
    case 'computer_use_preview':
      return ComputerUsePreviewTool(
        displayHeight: json['display_height'] as int,
        displayWidth: json['display_width'] as int,
        environment: json['environment'] as String,
      );
    case 'mcp':
      return McpTool(
        serverLabel: json['server_label'] as String,
        serverUrl: json['server_url'] as String,
        allowedTools: (json['allowed_tools'] as List?)?.cast<String>(),
        headers: (json['headers'] as Map?)?.cast<String, String>(),
        requireApproval: json['require_approval'] == null ? null : McpToolApproval.fromJson(json['require_approval']),
      );
    case 'code_interpreter':
      return CodeInterpreterTool(
        container: CodeInterpreterContainer.fromJson(json['container']),
      );
    case 'image_generation':
      return ImageGenerationTool(
        background: json['background'] == null ? null : ImageGenerationBackground.fromJson(json['background'] as String),
        inputImageMask:
            json['input_image_mask'] == null ? null : InputImageMask.fromJson(json['input_image_mask'] as Map<String, dynamic>),
        model: json['model'] as String?,
        moderation: json['moderation'] == null ? null : ImageModeration.fromJson(json['moderation'] as String),
        outputCompression: json['output_compression'] as int?,
        imageOutputFormat: json['output_format'] == null ? null : ImageOutputFormat.fromJson(json['output_format'] as String),
        partialImages: json['partial_images'] as int?,
        quality: json['quality'] == null ? null : ImageOutputQuality.fromJson(json['quality'] as String),
        imageOutputSize: json['size'] == null ? null : ImageOutputSize.fromJson(json['size'] as String),
      );
    case 'local_shell':
      return const LocalShellTool();
    default:
      return OtherTool(json);
  }
}