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
<PackageReference Include="DevCom.AgenticRuntime.Plugin.GoogleWorkspace" Version="1.0.7" />
<PackageVersion Include="DevCom.AgenticRuntime.Plugin.GoogleWorkspace" Version="1.0.7" />
<PackageReference Include="DevCom.AgenticRuntime.Plugin.GoogleWorkspace" />
paket add DevCom.AgenticRuntime.Plugin.GoogleWorkspace --version 1.0.7
#r "nuget: DevCom.AgenticRuntime.Plugin.GoogleWorkspace, 1.0.7"
#:package DevCom.AgenticRuntime.Plugin.GoogleWorkspace@1.0.7
#addin nuget:?package=DevCom.AgenticRuntime.Plugin.GoogleWorkspace&version=1.0.7
#tool nuget:?package=DevCom.AgenticRuntime.Plugin.GoogleWorkspace&version=1.0.7
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 withfolderUrl— the watched folder's Drive link (.../drive/folders/<id>, or.../drive/my-drivefor 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 skills —
drive-list-folders,drive-list-files,drive-get-file,drive-move-file,drive-upload-file(details below). - Gmail skill —
gmail-send. - Credential probe — the trigger's "Test Connection" refreshes a token and calls Drive
about.getto 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-filesskill lists the files (optionally folders) inside a Drive folder path with an exact MIME-type filter, and newdrive-get-fileskill downloads a Drive file by id into a tenant-scoped DAP blob (attachmentFileId) readable viaread-file. Google-native Docs/Sheets/Slides and shortcuts are rejected with a clear message; files over 50 MB are refused before buffering.drive-list-folderskeeps 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-filesizes 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 aFolder URL:line in the agent message, for all three folder-selection modes. My Drive root emitshttps://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 | Versions 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. |
-
net9.0
- DAP.Plugin.Sdk (>= 1.0.7)
- Scriban (>= 7.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.