DevCom.AgenticRuntime.Plugin.GoogleWorkspace 1.0.7

dotnet add package DevCom.AgenticRuntime.Plugin.GoogleWorkspace --version 1.0.7
                    
NuGet\Install-Package DevCom.AgenticRuntime.Plugin.GoogleWorkspace -Version 1.0.7
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DevCom.AgenticRuntime.Plugin.GoogleWorkspace" Version="1.0.7" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DevCom.AgenticRuntime.Plugin.GoogleWorkspace" Version="1.0.7" />
                    
Directory.Packages.props
<PackageReference Include="DevCom.AgenticRuntime.Plugin.GoogleWorkspace" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DevCom.AgenticRuntime.Plugin.GoogleWorkspace --version 1.0.7
                    
#r "nuget: DevCom.AgenticRuntime.Plugin.GoogleWorkspace, 1.0.7"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DevCom.AgenticRuntime.Plugin.GoogleWorkspace@1.0.7
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DevCom.AgenticRuntime.Plugin.GoogleWorkspace&version=1.0.7
                    
Install as a Cake Addin
#tool nuget:?package=DevCom.AgenticRuntime.Plugin.GoogleWorkspace&version=1.0.7
                    
Install as a Cake Tool

Google Workspace Plugin

DevCom Agentic Platform (DAP) plugin that adds a Google Drive folder-watch trigger plus Gmail and Google Drive skills. One shared google-oauth2 credential (authorize once) powers the trigger and every skill over the Drive v3 and Gmail v1 REST APIs — no Google SDK.

Features

  • Google Drive Folder Watch trigger (google-drive-folder-watch) — polls a Drive folder and fires agents when a new file appears. The file's bytes are stored as an attachment blob and the file name / mime type / Drive id / folder path are passed to the agent, together with folderUrl — the watched folder's Drive link (.../drive/folders/<id>, or .../drive/my-drive for My Drive root) — in both the JSON payload and the trigger message. The watched folder path is Scriban-templated (e.g. Invoices/{{ now | date.to_string '%Y-%m' }}).
  • Google Drive skillsdrive-list-folders, drive-list-files, drive-get-file, drive-move-file, drive-upload-file (details below).
  • Gmail skillgmail-send.
  • Credential probe — the trigger's "Test Connection" refreshes a token and calls Drive about.get to confirm authorization.

Credential

All surfaces use the platform google-oauth2 credential type (Authorization Code flow with access_type=offline&prompt=consent). Create the credential, click Authorize with Google, then reference the same credential from the trigger config, and bind it to the skill on the agent's Skills tab — nothing is passed in the tool call.

Required fields: ClientId, ClientSecret (from a Google Cloud Console Web application OAuth client), Scope (defaults to drive gmail.send). The redirect URI is /api/credentials/{credentialId}/oauth2/authorize — the platform's generic CredentialsController handles authorize/callback and stores the refresh token.

Google Drive skills

All Drive skills share the bound google-oauth2 credential. Folder paths are slash-separated from My Drive root (Invoices/Incoming; empty or root = My Drive root) and Scriban-templated (Invoices/{{ now | date.to_string '%Y-%m' }}). Trashed items are never returned; listings page through every result. Shared Drives / "Shared with me" items are included.

Skill Input Output
drive-list-folders folderPath? folderPath, folderId, folders[{id,name}]
drive-list-files folderPath?, mimeTypeFilter? (exact MIME), includeFolders? (default false) folderPath, folderId, items[{id,name,mimeType,size,createdTime,isFolder}]
drive-get-file fileId (Drive id, e.g. from drive-list-files) fileId, name, mimeType, size, createdTime, attachmentFileId
drive-move-file fileId, toFolderPath, fromFolderPath? moved file metadata
drive-upload-file fileId (DAP blob id), folderPath, name? driveFileId, name, folderPath, folderId

drive-get-file downloads the file (files.get?alt=media) and stores it as a tenant-scoped DAP binary blob — the same kind of attachment the folder-watch trigger produces — so the agent reads it with the standard read-file skill ({ "fileId": "<attachmentFileId>" }) or passes the id to drive-upload-file. The stored file keeps its Drive name and MIME type (falling back to application/octet-stream); files over 50 MB are rejected.

Google-native documents are not supported. Google Docs, Sheets, Slides, Forms, etc. (application/vnd.google-apps.*) cannot be downloaded via alt=media; drive-get-file rejects them with a clear error instead of exporting. They still appear in drive-list-files output (with their Google MIME type) so the agent can see and skip them. Drive shortcuts (application/vnd.google-apps.shortcut) are likewise rejected — fetch the target file by its own id. Only regular files — .docx, .csv, .txt, .pdf, images and the like — are fetched. includeFolders is ignored when mimeTypeFilter is set (folders have their own MIME type).

Errors (no credential bound, folder path segment not found, unknown file id, folder passed as a file, non-downloadable file, permission denied) come back as skill failures with a human-readable message rather than a crashed invocation. Any other failure — a database error while storing the fetched file, an unexpected bug — is logged and reported to the agent only as a fixed "internal error" sentence, so host, database and role names never reach the transcript.

Installation

Install from the DAP admin Plugins page, or drop the package into the host's plugin directory.

Changelog

1.0.7

  • feat(DAP-332): new drive-list-files skill lists the files (optionally folders) inside a Drive folder path with an exact MIME-type filter, and new drive-get-file skill downloads a Drive file by id into a tenant-scoped DAP blob (attachmentFileId) readable via read-file. Google-native Docs/Sheets/Slides and shortcuts are rejected with a clear message; files over 50 MB are refused before buffering. drive-list-folders keeps its contract. Drive API and OAuth failures (GoogleDriveApiException, GoogleOAuthException) now reach the agent as a short reason in every Drive/Gmail skill — the raw Google payload goes to the log only. Any other unexpected exception (e.g. a database failure while storing the blob) is logged and reaches the agent as a fixed "internal error" sentence. drive-get-file sizes its download buffer from Content-Length and returns it without a copy, so a file peaks at its own size.

1.0.6

  • feat(DAP-313): the folder-watch trigger emits folderUrl (the watched folder's Drive link) in the trigger payload and as a Folder URL: line in the agent message, for all three folder-selection modes. My Drive root emits https://drive.google.com/drive/my-drive. Existing trigger configs keep working unchanged.

1.0.0

  • feat(CDEV-9964, DAP-246): Google Drive folder-watch trigger + Gmail/Drive skills over a shared google-oauth2 credential.
Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.7 87 9/15/2026
1.0.6 105 9/7/2026
1.0.5 254 7/13/2026
1.0.4 118 7/8/2026
1.0.3 113 7/8/2026
1.0.2 123 7/8/2026
1.0.1 116 7/8/2026
1.0.0 117 7/8/2026