@framers/agentos-ext-email-gmail 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,82 @@
1
+ /**
2
+ * @fileoverview ITool for searching Gmail messages using Gmail query syntax.
3
+ */
4
+ import type { ITool, ToolExecutionContext, ToolExecutionResult } from '@framers/agentos';
5
+ import type { GmailService } from '../GmailService';
6
+ interface SearchMessagesArgs {
7
+ query: string;
8
+ maxResults?: number;
9
+ }
10
+ export declare class GmailSearchMessagesTool implements ITool<SearchMessagesArgs> {
11
+ private readonly service;
12
+ readonly id = "gmailSearchMessages";
13
+ readonly name = "gmailSearchMessages";
14
+ readonly displayName = "Search Gmail Messages";
15
+ readonly description: string;
16
+ readonly category = "productivity";
17
+ readonly version = "0.1.0";
18
+ readonly hasSideEffects = false;
19
+ readonly inputSchema: {
20
+ type: "object";
21
+ required: readonly ["query"];
22
+ properties: {
23
+ query: {
24
+ type: string;
25
+ description: string;
26
+ };
27
+ maxResults: {
28
+ type: string;
29
+ description: string;
30
+ default: number;
31
+ };
32
+ };
33
+ };
34
+ readonly outputSchema: {
35
+ type: "object";
36
+ properties: {
37
+ messages: {
38
+ type: string;
39
+ items: {
40
+ type: string;
41
+ properties: {
42
+ id: {
43
+ type: string;
44
+ };
45
+ threadId: {
46
+ type: string;
47
+ };
48
+ subject: {
49
+ type: string;
50
+ };
51
+ from: {
52
+ type: string;
53
+ };
54
+ date: {
55
+ type: string;
56
+ };
57
+ snippet: {
58
+ type: string;
59
+ };
60
+ isUnread: {
61
+ type: string;
62
+ };
63
+ };
64
+ };
65
+ };
66
+ resultCount: {
67
+ type: string;
68
+ };
69
+ query: {
70
+ type: string;
71
+ };
72
+ };
73
+ };
74
+ constructor(service: GmailService);
75
+ execute(args: SearchMessagesArgs, _context: ToolExecutionContext): Promise<ToolExecutionResult>;
76
+ validateArgs(args: Record<string, any>): {
77
+ isValid: boolean;
78
+ errors?: string[];
79
+ };
80
+ }
81
+ export {};
82
+ //# sourceMappingURL=searchMessages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchMessages.d.ts","sourceRoot":"","sources":["../../src/tools/searchMessages.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,uBAAwB,YAAW,KAAK,CAAC,kBAAkB,CAAC;IAsD3D,OAAO,CAAC,QAAQ,CAAC,OAAO;IArDpC,SAAgB,EAAE,yBAAyB;IAC3C,SAAgB,IAAI,yBAAyB;IAC7C,SAAgB,WAAW,2BAA2B;IACtD,SAAgB,WAAW,SAI4C;IACvE,SAAgB,QAAQ,kBAAkB;IAC1C,SAAgB,OAAO,WAAW;IAClC,SAAgB,cAAc,SAAS;IAEvC,SAAgB,WAAW;;;;;;;;;;;;;;MAgBzB;IAEF,SAAgB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqB1B;gBAE2B,OAAO,EAAE,YAAY;IAE5C,OAAO,CACX,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC;IA2B/B,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE;CAcjF"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ // @ts-nocheck
3
+ /**
4
+ * @fileoverview ITool for searching Gmail messages using Gmail query syntax.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.GmailSearchMessagesTool = void 0;
8
+ class GmailSearchMessagesTool {
9
+ constructor(service) {
10
+ this.service = service;
11
+ this.id = 'gmailSearchMessages';
12
+ this.name = 'gmailSearchMessages';
13
+ this.displayName = 'Search Gmail Messages';
14
+ this.description = 'Full-text search across Gmail messages using Gmail search syntax. ' +
15
+ 'Supports operators like from:, to:, subject:, has:attachment, before:, after:, is:unread, ' +
16
+ 'label:, filename:, and boolean operators (AND, OR, NOT). ' +
17
+ 'Example: "from:alice@example.com subject:meeting after:2024/01/01"';
18
+ this.category = 'productivity';
19
+ this.version = '0.1.0';
20
+ this.hasSideEffects = false;
21
+ this.inputSchema = {
22
+ type: 'object',
23
+ required: ['query'],
24
+ properties: {
25
+ query: {
26
+ type: 'string',
27
+ description: 'Gmail search query using Gmail search syntax ' +
28
+ '(e.g. "from:alice@example.com", "subject:invoice has:attachment", "is:unread after:2024/06/01")',
29
+ },
30
+ maxResults: {
31
+ type: 'number',
32
+ description: 'Maximum number of results to return (default: 10, max: 100)',
33
+ default: 10,
34
+ },
35
+ },
36
+ };
37
+ this.outputSchema = {
38
+ type: 'object',
39
+ properties: {
40
+ messages: {
41
+ type: 'array',
42
+ items: {
43
+ type: 'object',
44
+ properties: {
45
+ id: { type: 'string' },
46
+ threadId: { type: 'string' },
47
+ subject: { type: 'string' },
48
+ from: { type: 'string' },
49
+ date: { type: 'string' },
50
+ snippet: { type: 'string' },
51
+ isUnread: { type: 'boolean' },
52
+ },
53
+ },
54
+ },
55
+ resultCount: { type: 'number' },
56
+ query: { type: 'string' },
57
+ },
58
+ };
59
+ }
60
+ async execute(args, _context) {
61
+ try {
62
+ const maxResults = Math.min(Math.max(args.maxResults ?? 10, 1), 100);
63
+ const messages = await this.service.searchMessages(args.query, maxResults);
64
+ // Return summaries for search results
65
+ const summaries = messages.map((msg) => ({
66
+ id: msg.id,
67
+ threadId: msg.threadId,
68
+ subject: msg.subject,
69
+ from: msg.from,
70
+ to: msg.to,
71
+ date: msg.date,
72
+ snippet: msg.snippet,
73
+ isUnread: msg.isUnread,
74
+ labelIds: msg.labelIds,
75
+ }));
76
+ return {
77
+ success: true,
78
+ output: { messages: summaries, resultCount: summaries.length, query: args.query },
79
+ };
80
+ }
81
+ catch (error) {
82
+ return { success: false, error: error.message };
83
+ }
84
+ }
85
+ validateArgs(args) {
86
+ const errors = [];
87
+ if (!args.query)
88
+ errors.push('query is required');
89
+ else if (typeof args.query !== 'string')
90
+ errors.push('query must be a string');
91
+ if (args.maxResults !== undefined) {
92
+ if (typeof args.maxResults !== 'number' || args.maxResults < 1) {
93
+ errors.push('maxResults must be a positive number');
94
+ }
95
+ if (args.maxResults > 100) {
96
+ errors.push('maxResults cannot exceed 100');
97
+ }
98
+ }
99
+ return { isValid: errors.length === 0, errors };
100
+ }
101
+ }
102
+ exports.GmailSearchMessagesTool = GmailSearchMessagesTool;
103
+ //# sourceMappingURL=searchMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchMessages.js","sourceRoot":"","sources":["../../src/tools/searchMessages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * @fileoverview ITool for composing and sending a new Gmail message.
3
+ */
4
+ import type { ITool, ToolExecutionContext, ToolExecutionResult } from '@framers/agentos';
5
+ import type { GmailService } from '../GmailService';
6
+ interface SendMessageArgs {
7
+ to: string;
8
+ subject: string;
9
+ body: string;
10
+ cc?: string;
11
+ bcc?: string;
12
+ }
13
+ export declare class GmailSendMessageTool implements ITool<SendMessageArgs> {
14
+ private readonly service;
15
+ readonly id = "gmailSendMessage";
16
+ readonly name = "gmailSendMessage";
17
+ readonly displayName = "Send Gmail Message";
18
+ readonly description: string;
19
+ readonly category = "productivity";
20
+ readonly version = "0.1.0";
21
+ readonly hasSideEffects = true;
22
+ readonly inputSchema: {
23
+ type: "object";
24
+ required: readonly ["to", "subject", "body"];
25
+ properties: {
26
+ to: {
27
+ type: string;
28
+ description: string;
29
+ };
30
+ subject: {
31
+ type: string;
32
+ description: string;
33
+ };
34
+ body: {
35
+ type: string;
36
+ description: string;
37
+ };
38
+ cc: {
39
+ type: string;
40
+ description: string;
41
+ };
42
+ bcc: {
43
+ type: string;
44
+ description: string;
45
+ };
46
+ };
47
+ };
48
+ readonly outputSchema: {
49
+ type: "object";
50
+ properties: {
51
+ id: {
52
+ type: string;
53
+ description: string;
54
+ };
55
+ threadId: {
56
+ type: string;
57
+ description: string;
58
+ };
59
+ };
60
+ };
61
+ constructor(service: GmailService);
62
+ execute(args: SendMessageArgs, _context: ToolExecutionContext): Promise<ToolExecutionResult>;
63
+ validateArgs(args: Record<string, any>): {
64
+ isValid: boolean;
65
+ errors?: string[];
66
+ };
67
+ }
68
+ export {};
69
+ //# sourceMappingURL=sendMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendMessage.d.ts","sourceRoot":"","sources":["../../src/tools/sendMessage.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,oBAAqB,YAAW,KAAK,CAAC,eAAe,CAAC;IA8CrD,OAAO,CAAC,QAAQ,CAAC,OAAO;IA7CpC,SAAgB,EAAE,sBAAsB;IACxC,SAAgB,IAAI,sBAAsB;IAC1C,SAAgB,WAAW,wBAAwB;IACnD,SAAgB,WAAW,SAEoD;IAC/E,SAAgB,QAAQ,kBAAkB;IAC1C,SAAgB,OAAO,WAAW;IAClC,SAAgB,cAAc,QAAQ;IAEtC,SAAgB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;MAyBzB;IAEF,SAAgB,YAAY;;;;;;;;;;;;MAM1B;gBAE2B,OAAO,EAAE,YAAY;IAE5C,OAAO,CACX,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC;IAmB/B,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE;CAYjF"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ // @ts-nocheck
3
+ /**
4
+ * @fileoverview ITool for composing and sending a new Gmail message.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.GmailSendMessageTool = void 0;
8
+ class GmailSendMessageTool {
9
+ constructor(service) {
10
+ this.service = service;
11
+ this.id = 'gmailSendMessage';
12
+ this.name = 'gmailSendMessage';
13
+ this.displayName = 'Send Gmail Message';
14
+ this.description = 'Compose and send a new email via Gmail. ' +
15
+ 'Supports To, CC, and BCC recipients. The email body is sent as plain text.';
16
+ this.category = 'productivity';
17
+ this.version = '0.1.0';
18
+ this.hasSideEffects = true;
19
+ this.inputSchema = {
20
+ type: 'object',
21
+ required: ['to', 'subject', 'body'],
22
+ properties: {
23
+ to: {
24
+ type: 'string',
25
+ description: 'Recipient email address (comma-separated for multiple)',
26
+ },
27
+ subject: {
28
+ type: 'string',
29
+ description: 'Email subject line',
30
+ },
31
+ body: {
32
+ type: 'string',
33
+ description: 'Email body text (plain text)',
34
+ },
35
+ cc: {
36
+ type: 'string',
37
+ description: 'CC recipients (comma-separated email addresses)',
38
+ },
39
+ bcc: {
40
+ type: 'string',
41
+ description: 'BCC recipients (comma-separated email addresses)',
42
+ },
43
+ },
44
+ };
45
+ this.outputSchema = {
46
+ type: 'object',
47
+ properties: {
48
+ id: { type: 'string', description: 'Sent message ID' },
49
+ threadId: { type: 'string', description: 'Thread ID of sent message' },
50
+ },
51
+ };
52
+ }
53
+ async execute(args, _context) {
54
+ try {
55
+ const result = await this.service.sendMessage({
56
+ to: args.to,
57
+ subject: args.subject,
58
+ body: args.body,
59
+ cc: args.cc,
60
+ bcc: args.bcc,
61
+ });
62
+ return {
63
+ success: true,
64
+ output: { id: result.id, threadId: result.threadId },
65
+ };
66
+ }
67
+ catch (error) {
68
+ return { success: false, error: error.message };
69
+ }
70
+ }
71
+ validateArgs(args) {
72
+ const errors = [];
73
+ if (!args.to)
74
+ errors.push('to is required');
75
+ else if (typeof args.to !== 'string')
76
+ errors.push('to must be a string');
77
+ if (!args.subject)
78
+ errors.push('subject is required');
79
+ else if (typeof args.subject !== 'string')
80
+ errors.push('subject must be a string');
81
+ if (!args.body)
82
+ errors.push('body is required');
83
+ else if (typeof args.body !== 'string')
84
+ errors.push('body must be a string');
85
+ if (args.cc !== undefined && typeof args.cc !== 'string')
86
+ errors.push('cc must be a string');
87
+ if (args.bcc !== undefined && typeof args.bcc !== 'string')
88
+ errors.push('bcc must be a string');
89
+ return { isValid: errors.length === 0, errors };
90
+ }
91
+ }
92
+ exports.GmailSendMessageTool = GmailSendMessageTool;
93
+ //# sourceMappingURL=sendMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendMessage.js","sourceRoot":"","sources":["../../src/tools/sendMessage.ts"],"names":[],"mappings":"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"}
package/manifest.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://agentos.sh/schemas/extension-manifest-v1.json",
3
3
  "id": "com.framers.productivity.gmail",
4
4
  "name": "Gmail Email Extension",
5
- "version": "0.1.0",
5
+ "version": "0.1.1",
6
6
  "description": "Gmail email integration with OAuth2 — list, read, send, reply, search messages and manage labels.",
7
7
  "categories": ["productivity", "email"],
8
8
  "platforms": ["gmail"],
@@ -37,6 +37,11 @@
37
37
  "kind": "tool",
38
38
  "id": "gmailListLabels",
39
39
  "displayName": "List Gmail Labels"
40
+ },
41
+ {
42
+ "kind": "productivity",
43
+ "id": "gmailService",
44
+ "displayName": "Gmail Service"
40
45
  }
41
46
  ],
42
47
  "requiredSecrets": [
package/package.json CHANGED
@@ -1,31 +1,54 @@
1
1
  {
2
2
  "name": "@framers/agentos-ext-email-gmail",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Gmail integration for AgentOS — email CRUD via Google Gmail API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
- "scripts": {
8
- "build": "tsc",
9
- "dev": "tsc --watch",
10
- "test": "vitest run",
11
- "test:watch": "vitest watch",
12
- "clean": "rm -rf dist"
7
+ "keywords": [
8
+ "agentos",
9
+ "extension",
10
+ "email",
11
+ "gmail",
12
+ "productivity"
13
+ ],
14
+ "author": {
15
+ "name": "Framers AI",
16
+ "url": "https://frame.dev"
13
17
  },
14
- "keywords": ["agentos", "extension", "email", "gmail", "productivity"],
15
- "author": { "name": "Framers AI", "url": "https://frame.dev" },
16
18
  "license": "MIT",
17
- "files": ["dist", "manifest.json"],
19
+ "files": [
20
+ "dist",
21
+ "manifest.json"
22
+ ],
18
23
  "peerDependencies": {
19
- "@framers/agentos": "^0.1.0"
24
+ "@framers/agentos": "^0.10.28"
20
25
  },
21
26
  "dependencies": {
22
27
  "googleapis": "^130.0.0"
23
28
  },
24
29
  "devDependencies": {
25
- "@framers/agentos": "workspace:*",
26
30
  "@types/node": "^20.0.0",
27
31
  "typescript": "^5.0.0",
28
- "vitest": "^1.0.0"
32
+ "vitest": "^1.0.0",
33
+ "@framers/agentos": "^0.10.28"
34
+ },
35
+ "engines": {
36
+ "node": ">=18.0.0"
37
+ },
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "git+https://github.com/framerslab/agentos-extensions.git",
41
+ "directory": "registry/curated/productivity/gmail"
29
42
  },
30
- "engines": { "node": ">=18.0.0" }
31
- }
43
+ "homepage": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/productivity/gmail#readme",
44
+ "bugs": {
45
+ "url": "https://github.com/framerslab/agentos-extensions/issues"
46
+ },
47
+ "scripts": {
48
+ "build": "tsc",
49
+ "dev": "tsc --watch",
50
+ "test": "vitest run --passWithNoTests",
51
+ "test:watch": "vitest watch",
52
+ "clean": "rm -rf dist"
53
+ }
54
+ }