Skip to content

feat(tools/gmail): add download_attachment tool#2573

Merged
crazywoola merged 6 commits intolanggenius:mainfrom
CourTeous33:feat/gmail-add-download-attachment
Feb 12, 2026
Merged

feat(tools/gmail): add download_attachment tool#2573
crazywoola merged 6 commits intolanggenius:mainfrom
CourTeous33:feat/gmail-add-download-attachment

Conversation

@CourTeous33
Copy link
Contributor

Add new tool to download attachment content from Gmail messages. This tool allows users to retrieve attachment data by providing message_id and attachment_id (obtained from get_message tool).

Features:

  • Downloads attachments via Gmail API
  • Returns base64-encoded attachment data
  • Includes size validation (25MB limit)
  • Comprehensive error handling
  • Multi-language support (EN, ZH, PT, JA)

Related Issues or Context

This PR contains Changes to Non-Plugin

  • Documentation
  • Other

This PR contains Changes to Non-LLM Models Plugin

  • I have Run Comprehensive Tests Relevant to My Changes

This PR contains Changes to LLM Models Plugin

  • My Changes Affect Message Flow Handling (System Messages and User→Assistant Turn-Taking)
  • My Changes Affect Tool Interaction Flow (Multi-Round Usage and Output Handling, for both Agent App and Agent Node)
  • My Changes Affect Multimodal Input Handling (Images, PDFs, Audio, Video, etc.)
  • My Changes Affect Multimodal Output Generation (Images, Audio, Video, etc.)
  • My Changes Affect Structured Output Format (JSON, XML, etc.)
  • My Changes Affect Token Consumption Metrics
  • My Changes Affect Other LLM Functionalities (Reasoning Process, Grounding, Prompt Caching, etc.)
  • Other Changes (Add New Models, Fix Model Parameters etc.)

Version Control (Any Changes to the Plugin Will Require Bumping the Version)

  • I have Bumped Up the Version in Manifest.yaml (Top-Level Version Field, Not in Meta Section)

Dify Plugin SDK Version

  • I have Ensured dify_plugin>=0.3.0,<0.6.0 is in requirements.txt (SDK docs)

Environment Verification (If Any Code Changes)

Local Deployment Environment

  • Dify Version is: , I have Tested My Changes on Local Deployment Dify with a Clean Environment That Matches the Production Configuration.

SaaS Environment

  • I have Tested My Changes on cloud.dify.ai with a Clean Environment That Matches the Production Configuration

Add new tool to download attachment content from Gmail messages.
This tool allows users to retrieve attachment data by providing
message_id and attachment_id (obtained from get_message tool).

Features:
- Downloads attachments via Gmail API
- Returns base64-encoded attachment data
- Includes size validation (25MB limit)
- Comprehensive error handling
- Multi-language support (EN, ZH, PT, JA)
@dosubot dosubot bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Feb 11, 2026
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @CourTeous33, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the Gmail integration by introducing the capability to download email attachments. It provides a dedicated tool for retrieving attachment content, which is crucial for workflows requiring access to file data within emails. The change also updates the message retrieval tool to facilitate the discovery of attachment IDs, ensuring a seamless process for users to interact with email attachments.

Highlights

  • New Tool: download_attachment: A new tool has been added to the Gmail integration, allowing users to download attachment content from messages. This tool requires a message_id and an attachment_id to retrieve the attachment data.
  • Updated get_message tool: The existing get_message tool has been enhanced with a new include_attachments parameter. Setting this to true will ensure that attachment metadata (including attachment_ids) is returned, which is necessary for using the download_attachment tool.
  • Comprehensive Attachment Handling: The new download functionality includes robust error handling, base64url decoding for Gmail's specific encoding, re-encoding to standard base64 for output, and a warning for attachments exceeding Gmail's practical 25MB size limit.
  • Documentation Updates: The README.md file has been updated to reflect the new download_attachment tool, including its description, usage examples, and an updated reference table for the get_message tool's new parameter.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • tools/gmail/README.md
    • Documented the new download_attachment tool under 'Attachment Support'
    • Added a usage example for download_attachment demonstrating its two-step process with get_message
    • Updated the get_message tool reference to include the include_attachments parameter
    • Added download_attachment to the tool reference table
  • tools/gmail/tools/download_attachment.py
    • Implemented the DownloadAttachmentTool class to handle Gmail API calls for attachment retrieval
    • Included logic for authentication, parameter validation, and network error handling
    • Added base64url decoding for Gmail's specific attachment data format and re-encoding to standard base64
    • Incorporated a size check to warn about attachments exceeding 25MB
    • Provided structured output including status, message ID, attachment ID, size, and base64-encoded data
  • tools/gmail/tools/download_attachment.yaml
    • Defined the YAML configuration for the download_attachment tool
    • Specified tool identity, display name, author, and multi-language labels and descriptions
    • Configured required parameters (message_id, attachment_id) with detailed descriptions for human and LLM use
    • Defined the output schema for the tool, detailing the expected fields like status, size, and data
Activity
  • No specific activity (comments, reviews, approvals) has been recorded for this pull request yet.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@dosubot dosubot bot added the enhancement New feature or request label Feb 11, 2026
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new download_attachment tool to the Gmail plugin, which is a great addition. The implementation is solid, with good error handling and clear documentation updates. I've left a few suggestions to improve code quality and maintainability by using constants for magic numbers and making exception handling more specific. Overall, great work!

CourTeous33 and others added 3 commits February 11, 2026 02:27
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
@dosubot dosubot bot added the lgtm This PR has been approved by a maintainer label Feb 12, 2026
@crazywoola crazywoola merged commit 95cf4de into langgenius:main Feb 12, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request lgtm This PR has been approved by a maintainer size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants