@divyacon/piece-gmail 0.0.0-stage → 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.
Files changed (188) hide show
  1. package/LICENSE.MIT-AP +24 -0
  2. package/README.md +8 -2
  3. package/dist/index.d.ts +6 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +111 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/actions/ai-get-message-action.d.ts +7 -0
  8. package/dist/lib/actions/ai-get-message-action.d.ts.map +1 -0
  9. package/dist/lib/actions/ai-get-message-action.js +24 -0
  10. package/dist/lib/actions/ai-get-message-action.js.map +1 -0
  11. package/dist/lib/actions/ai-reply-to-thread-action.d.ts +16 -0
  12. package/dist/lib/actions/ai-reply-to-thread-action.d.ts.map +1 -0
  13. package/dist/lib/actions/ai-reply-to-thread-action.js +24 -0
  14. package/dist/lib/actions/ai-reply-to-thread-action.js.map +1 -0
  15. package/dist/lib/actions/ai-search-email-action.d.ts +21 -0
  16. package/dist/lib/actions/ai-search-email-action.d.ts.map +1 -0
  17. package/dist/lib/actions/ai-search-email-action.js +24 -0
  18. package/dist/lib/actions/ai-search-email-action.js.map +1 -0
  19. package/dist/lib/actions/ai-send-email-action.d.ts +18 -0
  20. package/dist/lib/actions/ai-send-email-action.d.ts.map +1 -0
  21. package/dist/lib/actions/ai-send-email-action.js +24 -0
  22. package/dist/lib/actions/ai-send-email-action.js.map +1 -0
  23. package/dist/lib/actions/create-draft-action.d.ts +16 -0
  24. package/dist/lib/actions/create-draft-action.d.ts.map +1 -0
  25. package/dist/lib/actions/create-draft-action.js +137 -0
  26. package/dist/lib/actions/create-draft-action.js.map +1 -0
  27. package/dist/lib/actions/create-draft-reply-action.d.ts +17 -0
  28. package/dist/lib/actions/create-draft-reply-action.d.ts.map +1 -0
  29. package/dist/lib/actions/create-draft-reply-action.js +269 -0
  30. package/dist/lib/actions/create-draft-reply-action.js.map +1 -0
  31. package/dist/lib/actions/delete-draft-action.d.ts +7 -0
  32. package/dist/lib/actions/delete-draft-action.d.ts.map +1 -0
  33. package/dist/lib/actions/delete-draft-action.js +62 -0
  34. package/dist/lib/actions/delete-draft-action.js.map +1 -0
  35. package/dist/lib/actions/forward-message-action.d.ts +12 -0
  36. package/dist/lib/actions/forward-message-action.d.ts.map +1 -0
  37. package/dist/lib/actions/forward-message-action.js +139 -0
  38. package/dist/lib/actions/forward-message-action.js.map +1 -0
  39. package/dist/lib/actions/get-attachment-action.d.ts +9 -0
  40. package/dist/lib/actions/get-attachment-action.d.ts.map +1 -0
  41. package/dist/lib/actions/get-attachment-action.js +80 -0
  42. package/dist/lib/actions/get-attachment-action.js.map +1 -0
  43. package/dist/lib/actions/get-draft-action.d.ts +7 -0
  44. package/dist/lib/actions/get-draft-action.d.ts.map +1 -0
  45. package/dist/lib/actions/get-draft-action.js +56 -0
  46. package/dist/lib/actions/get-draft-action.js.map +1 -0
  47. package/dist/lib/actions/get-label-action.d.ts +7 -0
  48. package/dist/lib/actions/get-label-action.d.ts.map +1 -0
  49. package/dist/lib/actions/get-label-action.js +55 -0
  50. package/dist/lib/actions/get-label-action.js.map +1 -0
  51. package/dist/lib/actions/get-mail-action.d.ts +7 -0
  52. package/dist/lib/actions/get-mail-action.d.ts.map +1 -0
  53. package/dist/lib/actions/get-mail-action.js +44 -0
  54. package/dist/lib/actions/get-mail-action.js.map +1 -0
  55. package/dist/lib/actions/get-profile-action.d.ts +5 -0
  56. package/dist/lib/actions/get-profile-action.d.ts.map +1 -0
  57. package/dist/lib/actions/get-profile-action.js +43 -0
  58. package/dist/lib/actions/get-profile-action.js.map +1 -0
  59. package/dist/lib/actions/get-thread-action.d.ts +9 -0
  60. package/dist/lib/actions/get-thread-action.d.ts.map +1 -0
  61. package/dist/lib/actions/get-thread-action.js +53 -0
  62. package/dist/lib/actions/get-thread-action.js.map +1 -0
  63. package/dist/lib/actions/list-drafts-action.d.ts +8 -0
  64. package/dist/lib/actions/list-drafts-action.d.ts.map +1 -0
  65. package/dist/lib/actions/list-drafts-action.js +62 -0
  66. package/dist/lib/actions/list-drafts-action.js.map +1 -0
  67. package/dist/lib/actions/list-history-action.d.ts +9 -0
  68. package/dist/lib/actions/list-history-action.d.ts.map +1 -0
  69. package/dist/lib/actions/list-history-action.js +74 -0
  70. package/dist/lib/actions/list-history-action.js.map +1 -0
  71. package/dist/lib/actions/list-labels-action.d.ts +5 -0
  72. package/dist/lib/actions/list-labels-action.d.ts.map +1 -0
  73. package/dist/lib/actions/list-labels-action.js +47 -0
  74. package/dist/lib/actions/list-labels-action.js.map +1 -0
  75. package/dist/lib/actions/list-threads-action.d.ts +10 -0
  76. package/dist/lib/actions/list-threads-action.d.ts.map +1 -0
  77. package/dist/lib/actions/list-threads-action.js +74 -0
  78. package/dist/lib/actions/list-threads-action.js.map +1 -0
  79. package/dist/lib/actions/reply-to-email-action.d.ts +16 -0
  80. package/dist/lib/actions/reply-to-email-action.d.ts.map +1 -0
  81. package/dist/lib/actions/reply-to-email-action.js +202 -0
  82. package/dist/lib/actions/reply-to-email-action.js.map +1 -0
  83. package/dist/lib/actions/request-approval-in-email.d.ts +15 -0
  84. package/dist/lib/actions/request-approval-in-email.d.ts.map +1 -0
  85. package/dist/lib/actions/request-approval-in-email.js +174 -0
  86. package/dist/lib/actions/request-approval-in-email.js.map +1 -0
  87. package/dist/lib/actions/search-email-action.d.ts +22 -0
  88. package/dist/lib/actions/search-email-action.d.ts.map +1 -0
  89. package/dist/lib/actions/search-email-action.js +179 -0
  90. package/dist/lib/actions/search-email-action.js.map +1 -0
  91. package/dist/lib/actions/send-draft-action.d.ts +7 -0
  92. package/dist/lib/actions/send-draft-action.d.ts.map +1 -0
  93. package/dist/lib/actions/send-draft-action.js +57 -0
  94. package/dist/lib/actions/send-draft-action.js.map +1 -0
  95. package/dist/lib/actions/send-email-action.d.ts +18 -0
  96. package/dist/lib/actions/send-email-action.d.ts.map +1 -0
  97. package/dist/lib/actions/send-email-action.js +196 -0
  98. package/dist/lib/actions/send-email-action.js.map +1 -0
  99. package/dist/lib/actions/stop-watch-action.d.ts +5 -0
  100. package/dist/lib/actions/stop-watch-action.d.ts.map +1 -0
  101. package/dist/lib/actions/stop-watch-action.js +41 -0
  102. package/dist/lib/actions/stop-watch-action.js.map +1 -0
  103. package/dist/lib/actions/update-draft-action.d.ts +17 -0
  104. package/dist/lib/actions/update-draft-action.d.ts.map +1 -0
  105. package/dist/lib/actions/update-draft-action.js +193 -0
  106. package/dist/lib/actions/update-draft-action.js.map +1 -0
  107. package/dist/lib/auth.d.ts +12 -0
  108. package/dist/lib/auth.d.ts.map +1 -0
  109. package/dist/lib/auth.js +108 -0
  110. package/dist/lib/auth.js.map +1 -0
  111. package/dist/lib/common/data.d.ts +132 -0
  112. package/dist/lib/common/data.d.ts.map +1 -0
  113. package/dist/lib/common/data.js +209 -0
  114. package/dist/lib/common/data.js.map +1 -0
  115. package/dist/lib/common/mime.d.ts +29 -0
  116. package/dist/lib/common/mime.d.ts.map +1 -0
  117. package/dist/lib/common/mime.js +59 -0
  118. package/dist/lib/common/mime.js.map +1 -0
  119. package/dist/lib/common/models.d.ts +86 -0
  120. package/dist/lib/common/models.d.ts.map +1 -0
  121. package/dist/lib/common/models.js +26 -0
  122. package/dist/lib/common/models.js.map +1 -0
  123. package/dist/lib/common/props.d.ts +28 -0
  124. package/dist/lib/common/props.d.ts.map +1 -0
  125. package/dist/lib/common/props.js +231 -0
  126. package/dist/lib/common/props.js.map +1 -0
  127. package/dist/lib/output-schemas.d.ts +29 -0
  128. package/dist/lib/output-schemas.d.ts.map +1 -0
  129. package/dist/lib/output-schemas.js +1029 -0
  130. package/dist/lib/output-schemas.js.map +1 -0
  131. package/dist/lib/triggers/new-attachment.d.ts +144 -0
  132. package/dist/lib/triggers/new-attachment.d.ts.map +1 -0
  133. package/dist/lib/triggers/new-attachment.js +150 -0
  134. package/dist/lib/triggers/new-attachment.js.map +1 -0
  135. package/dist/lib/triggers/new-conversation.d.ts +59 -0
  136. package/dist/lib/triggers/new-conversation.d.ts.map +1 -0
  137. package/dist/lib/triggers/new-conversation.js +308 -0
  138. package/dist/lib/triggers/new-conversation.js.map +1 -0
  139. package/dist/lib/triggers/new-email.d.ts +52 -0
  140. package/dist/lib/triggers/new-email.d.ts.map +1 -0
  141. package/dist/lib/triggers/new-email.js +135 -0
  142. package/dist/lib/triggers/new-email.js.map +1 -0
  143. package/dist/lib/triggers/new-label.d.ts +15 -0
  144. package/dist/lib/triggers/new-label.d.ts.map +1 -0
  145. package/dist/lib/triggers/new-label.js +82 -0
  146. package/dist/lib/triggers/new-label.js.map +1 -0
  147. package/dist/lib/triggers/new-labeled-email.d.ts +35 -0
  148. package/dist/lib/triggers/new-labeled-email.d.ts.map +1 -0
  149. package/dist/lib/triggers/new-labeled-email.js +147 -0
  150. package/dist/lib/triggers/new-labeled-email.js.map +1 -0
  151. package/package.json +54 -4
  152. package/src/index.ts +107 -0
  153. package/src/lib/actions/ai-get-message-action.ts +20 -0
  154. package/src/lib/actions/ai-reply-to-thread-action.ts +20 -0
  155. package/src/lib/actions/ai-search-email-action.ts +21 -0
  156. package/src/lib/actions/ai-send-email-action.ts +20 -0
  157. package/src/lib/actions/create-draft-action.ts +148 -0
  158. package/src/lib/actions/create-draft-reply-action.ts +314 -0
  159. package/src/lib/actions/delete-draft-action.ts +57 -0
  160. package/src/lib/actions/forward-message-action.ts +159 -0
  161. package/src/lib/actions/get-attachment-action.ts +83 -0
  162. package/src/lib/actions/get-draft-action.ts +53 -0
  163. package/src/lib/actions/get-label-action.ts +53 -0
  164. package/src/lib/actions/get-mail-action.ts +52 -0
  165. package/src/lib/actions/get-profile-action.ts +39 -0
  166. package/src/lib/actions/get-thread-action.ts +47 -0
  167. package/src/lib/actions/list-drafts-action.ts +72 -0
  168. package/src/lib/actions/list-history-action.ts +83 -0
  169. package/src/lib/actions/list-labels-action.ts +43 -0
  170. package/src/lib/actions/list-threads-action.ts +89 -0
  171. package/src/lib/actions/reply-to-email-action.ts +228 -0
  172. package/src/lib/actions/request-approval-in-email.ts +197 -0
  173. package/src/lib/actions/search-email-action.ts +219 -0
  174. package/src/lib/actions/send-draft-action.ts +54 -0
  175. package/src/lib/actions/send-email-action.ts +213 -0
  176. package/src/lib/actions/stop-watch-action.ts +37 -0
  177. package/src/lib/actions/update-draft-action.ts +211 -0
  178. package/src/lib/auth.ts +116 -0
  179. package/src/lib/common/data.ts +268 -0
  180. package/src/lib/common/mime.ts +82 -0
  181. package/src/lib/common/models.ts +91 -0
  182. package/src/lib/common/props.ts +262 -0
  183. package/src/lib/output-schemas.ts +1061 -0
  184. package/src/lib/triggers/new-attachment.ts +203 -0
  185. package/src/lib/triggers/new-conversation.ts +413 -0
  186. package/src/lib/triggers/new-email.ts +173 -0
  187. package/src/lib/triggers/new-label.ts +83 -0
  188. package/src/lib/triggers/new-labeled-email.ts +197 -0
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.gmailListThreadsAction = void 0;
4
+ const tslib_1 = require("tslib");
5
+ // Vendored from Activepieces packages/pieces/community/gmail/src/lib/actions/list-threads-action.ts (MIT).
6
+ // Generated by packages/scripts/vendor-ap.mjs - do not edit by hand.
7
+ const pieces_framework_1 = require("@agnocon/pieces-framework");
8
+ const auth_1 = require("../auth");
9
+ const gmail_1 = require("@googleapis/gmail");
10
+ const output_schemas_1 = require("../output-schemas");
11
+ exports.gmailListThreadsAction = (0, pieces_framework_1.createAction)({
12
+ auth: auth_1.gmailAuth,
13
+ name: 'gmail_list_threads',
14
+ displayName: 'List Threads',
15
+ description: 'List email conversation threads in the mailbox.',
16
+ audience: 'ai',
17
+ aiMetadata: {
18
+ description: 'Lists email conversation threads matching an optional Gmail search query and label filter, returning each thread ID and snippet. This is the resolver for obtaining thread IDs used by Get Thread and Reply to Thread. Resolve label IDs with List Labels. Idempotent: a read-only listing that does not modify the mailbox.',
19
+ idempotent: true,
20
+ },
21
+ props: {
22
+ query: pieces_framework_1.Property.ShortText({
23
+ displayName: 'Search Query',
24
+ description: 'Optional Gmail search query to filter threads (e.g. "from:boss@example.com is:unread").',
25
+ required: false,
26
+ }),
27
+ label_ids: pieces_framework_1.Property.Array({
28
+ displayName: 'Label IDs',
29
+ description: 'Optional list of label IDs to filter by (resolve via List Labels; system labels like INBOX, UNREAD are valid).',
30
+ required: false,
31
+ }),
32
+ include_spam_trash: pieces_framework_1.Property.Checkbox({
33
+ displayName: 'Include Spam & Trash',
34
+ description: 'Include threads from Spam and Trash in the results.',
35
+ required: false,
36
+ defaultValue: false,
37
+ }),
38
+ max_results: pieces_framework_1.Property.Number({
39
+ displayName: 'Max Results',
40
+ description: 'Maximum number of threads to return (1-500).',
41
+ required: false,
42
+ defaultValue: 20,
43
+ }),
44
+ },
45
+ outputSchema: output_schemas_1.gmailListThreadsActionOutputSchema,
46
+ run(context) {
47
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
48
+ var _a, _b;
49
+ const authClient = yield (0, auth_1.createGoogleClient)(context.auth);
50
+ const gmail = (0, gmail_1.gmail)({ version: 'v1', auth: authClient });
51
+ const maxResults = Math.min(Math.max(context.propsValue.max_results || 20, 1), 500);
52
+ const labelIds = (_a = context.propsValue.label_ids) === null || _a === void 0 ? void 0 : _a.filter((id) => id !== '');
53
+ try {
54
+ const response = yield gmail.users.threads.list(Object.assign(Object.assign({ userId: 'me', maxResults, includeSpamTrash: context.propsValue.include_spam_trash }, (((_b = context.propsValue.query) === null || _b === void 0 ? void 0 : _b.trim())
55
+ ? { q: context.propsValue.query.trim() }
56
+ : {})), (labelIds && labelIds.length > 0 ? { labelIds } : {})));
57
+ const threads = response.data.threads || [];
58
+ return Object.assign({ threads, count: threads.length, resultSizeEstimate: response.data.resultSizeEstimate }, (response.data.nextPageToken
59
+ ? { nextPageToken: response.data.nextPageToken }
60
+ : {}));
61
+ }
62
+ catch (error) {
63
+ if (error.code === 403) {
64
+ throw new Error('Insufficient permissions to list threads. Ensure the gmail.readonly scope is granted.');
65
+ }
66
+ else if (error.code === 429) {
67
+ throw new Error('Gmail API rate limit exceeded. Please try again later.');
68
+ }
69
+ throw new Error(`Failed to list threads: ${error.message}`);
70
+ }
71
+ });
72
+ },
73
+ });
74
+ //# sourceMappingURL=list-threads-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-threads-action.js","sourceRoot":"","sources":["../../../src/lib/actions/list-threads-action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export declare const gmailReplyToEmailAction: import("@agnocon/pieces-framework").IAction<(import("@agnocon/pieces-framework").OAuth2Property<import("@agnocon/pieces-framework").OAuth2Props> | import("@agnocon/pieces-framework").CustomAuthProperty<{
2
+ serviceAccount: import("@agnocon/pieces-framework").LongTextProperty<true>;
3
+ userEmail: import("@agnocon/pieces-framework").ShortTextProperty<true>;
4
+ }>)[], {
5
+ message_id: import("@agnocon/pieces-framework").DropdownProperty<string, true, (import("@agnocon/pieces-framework").OAuth2Property<import("@agnocon/pieces-framework").OAuth2Props> | import("@agnocon/pieces-framework").CustomAuthProperty<{
6
+ serviceAccount: import("@agnocon/pieces-framework").LongTextProperty<true>;
7
+ userEmail: import("@agnocon/pieces-framework").ShortTextProperty<true>;
8
+ }>)[]>;
9
+ reply_type: import("@agnocon/pieces-framework").StaticDropdownProperty<string, true>;
10
+ body_type: import("@agnocon/pieces-framework").StaticDropdownProperty<string, true>;
11
+ body: import("@agnocon/pieces-framework").LongTextProperty<true>;
12
+ sender_name: import("@agnocon/pieces-framework").ShortTextProperty<false>;
13
+ attachment: import("@agnocon/pieces-framework").FileProperty<false, false>;
14
+ attachment_name: import("@agnocon/pieces-framework").ShortTextProperty<false>;
15
+ }>;
16
+ //# sourceMappingURL=reply-to-email-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reply-to-email-action.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/reply-to-email-action.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;EA0NlC,CAAC"}
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.gmailReplyToEmailAction = void 0;
4
+ const tslib_1 = require("tslib");
5
+ // Vendored from Activepieces packages/pieces/community/gmail/src/lib/actions/reply-to-email-action.ts (MIT).
6
+ // Generated by packages/scripts/vendor-ap.mjs - do not edit by hand.
7
+ const pieces_framework_1 = require("@agnocon/pieces-framework");
8
+ const mime_types_1 = tslib_1.__importDefault(require("mime-types"));
9
+ const mail_composer_1 = tslib_1.__importDefault(require("nodemailer/lib/mail-composer"));
10
+ const auth_1 = require("../auth");
11
+ const gmail_1 = require("@googleapis/gmail");
12
+ const props_1 = require("../common/props");
13
+ const output_schemas_1 = require("../output-schemas");
14
+ exports.gmailReplyToEmailAction = (0, pieces_framework_1.createAction)({
15
+ auth: auth_1.gmailAuth,
16
+ name: 'reply_to_email',
17
+ displayName: 'Reply to Email',
18
+ description: 'Reply to an existing email.',
19
+ audience: 'human',
20
+ aiMetadata: {
21
+ description: 'Sends a reply to an existing email, preserving the thread and subject and addressing the original sender (reply) or all participants (reply all). Use this to respond within a known conversation; requires the Gmail message ID of the email being answered. Not idempotent: each call sends a new reply message into the thread.',
22
+ idempotent: false,
23
+ },
24
+ props: {
25
+ message_id: props_1.GmailProps.message,
26
+ reply_type: pieces_framework_1.Property.StaticDropdown({
27
+ displayName: 'Reply Type',
28
+ description: 'Choose whether to reply to sender only or to all recipients',
29
+ required: true,
30
+ defaultValue: 'reply',
31
+ options: {
32
+ disabled: false,
33
+ options: [
34
+ {
35
+ label: 'Reply (to sender only)',
36
+ value: 'reply',
37
+ },
38
+ {
39
+ label: 'Reply All (to all recipients)',
40
+ value: 'reply_all',
41
+ },
42
+ ],
43
+ },
44
+ }),
45
+ body_type: pieces_framework_1.Property.StaticDropdown({
46
+ displayName: 'Body Type',
47
+ required: true,
48
+ defaultValue: 'plain_text',
49
+ options: {
50
+ disabled: false,
51
+ options: [
52
+ {
53
+ label: 'Plain text',
54
+ value: 'plain_text',
55
+ },
56
+ {
57
+ label: 'HTML',
58
+ value: 'html',
59
+ },
60
+ ],
61
+ },
62
+ }),
63
+ body: pieces_framework_1.Property.LongText({
64
+ displayName: 'Reply Body',
65
+ description: 'Your reply message content',
66
+ required: true,
67
+ }),
68
+ sender_name: pieces_framework_1.Property.ShortText({
69
+ displayName: 'Sender Name',
70
+ description: 'Optional sender name to display',
71
+ required: false,
72
+ }),
73
+ attachment: pieces_framework_1.Property.File({
74
+ displayName: 'Attachment',
75
+ description: 'Optional file to attach to your reply',
76
+ required: false,
77
+ }),
78
+ attachment_name: pieces_framework_1.Property.ShortText({
79
+ displayName: 'Attachment Name',
80
+ description: 'Custom name for the attachment',
81
+ required: false,
82
+ }),
83
+ },
84
+ outputSchema: output_schemas_1.replyToEmailActionOutputSchema,
85
+ run(context) {
86
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
87
+ var _a;
88
+ const authClient = yield (0, auth_1.createGoogleClient)(context.auth);
89
+ const gmail = (0, gmail_1.gmail)({ version: 'v1', auth: authClient });
90
+ const originalMessage = yield gmail.users.messages.get({
91
+ userId: 'me',
92
+ id: context.propsValue.message_id,
93
+ format: 'full',
94
+ });
95
+ if (!originalMessage.data || !originalMessage.data.payload) {
96
+ throw new Error('Could not fetch original message details');
97
+ }
98
+ const headers = originalMessage.data.payload.headers || [];
99
+ const headerMap = headers.reduce((acc, header) => {
100
+ if (header.name && header.value) {
101
+ acc[header.name.toLowerCase()] = header.value;
102
+ }
103
+ return acc;
104
+ }, {});
105
+ const originalSubject = headerMap['subject'] || '';
106
+ const originalFrom = headerMap['from'] || '';
107
+ const originalTo = headerMap['to'] || '';
108
+ const originalCc = headerMap['cc'] || '';
109
+ const originalReplyTo = headerMap['reply-to'] || '';
110
+ const originalMessageId = headerMap['message-id'] || '';
111
+ const originalReferences = headerMap['references'] || '';
112
+ const toRecipients = [];
113
+ const ccRecipients = [];
114
+ if (context.propsValue.reply_type === 'reply_all') {
115
+ const senderEmail = originalReplyTo || originalFrom;
116
+ if (senderEmail) {
117
+ toRecipients.push(senderEmail);
118
+ }
119
+ const currentUserEmail = yield (0, auth_1.getUserEmail)(context.auth, authClient);
120
+ if (originalTo) {
121
+ const toEmails = originalTo.split(',').map((email) => email.trim());
122
+ toRecipients.push(...toEmails.filter((email) => !email.includes(currentUserEmail || '')));
123
+ }
124
+ if (originalCc) {
125
+ const ccEmails = originalCc.split(',').map((email) => email.trim());
126
+ ccRecipients.push(...ccEmails.filter((email) => !email.includes(currentUserEmail || '')));
127
+ }
128
+ }
129
+ else {
130
+ const senderEmail = originalReplyTo || originalFrom;
131
+ if (senderEmail) {
132
+ toRecipients.push(senderEmail);
133
+ }
134
+ }
135
+ let replySubject = originalSubject;
136
+ if (!replySubject.toLowerCase().startsWith('re:')) {
137
+ replySubject = `Re: ${replySubject}`;
138
+ }
139
+ let referencesHeader = originalMessageId;
140
+ if (originalReferences) {
141
+ referencesHeader = `${originalReferences} ${originalMessageId}`;
142
+ }
143
+ const senderEmail = yield (0, auth_1.getUserEmail)(context.auth, authClient);
144
+ const subjectBase64 = Buffer.from(replySubject).toString('base64');
145
+ const mailOptions = {
146
+ to: toRecipients.join(', '),
147
+ cc: ccRecipients.length > 0 ? ccRecipients.join(', ') : undefined,
148
+ subject: `=?UTF-8?B?${subjectBase64}?=`,
149
+ text: context.propsValue.body_type === 'plain_text'
150
+ ? context.propsValue.body
151
+ : undefined,
152
+ html: context.propsValue.body_type === 'html'
153
+ ? context.propsValue.body
154
+ : undefined,
155
+ attachments: [],
156
+ headers: [
157
+ {
158
+ key: 'In-Reply-To',
159
+ value: originalMessageId,
160
+ },
161
+ {
162
+ key: 'References',
163
+ value: referencesHeader,
164
+ },
165
+ ],
166
+ };
167
+ if (senderEmail) {
168
+ mailOptions.from = context.propsValue.sender_name
169
+ ? `${context.propsValue.sender_name} <${senderEmail}>`
170
+ : senderEmail;
171
+ }
172
+ if (context.propsValue.attachment) {
173
+ const lookupResult = mime_types_1.default.lookup(context.propsValue.attachment.extension || '');
174
+ const attachmentOption = [
175
+ {
176
+ filename: (_a = context.propsValue.attachment_name) !== null && _a !== void 0 ? _a : context.propsValue.attachment.filename,
177
+ content: context.propsValue.attachment.base64,
178
+ contentType: lookupResult || undefined,
179
+ encoding: 'base64',
180
+ },
181
+ ];
182
+ mailOptions.attachments = attachmentOption;
183
+ }
184
+ const mail = new mail_composer_1.default(mailOptions).compile();
185
+ mail.keepBcc = true;
186
+ const mailBody = yield mail.build();
187
+ const encodedPayload = Buffer.from(mailBody)
188
+ .toString('base64')
189
+ .replace(/\+/g, '-')
190
+ .replace(/\//g, '_');
191
+ const response = yield gmail.users.messages.send({
192
+ userId: 'me',
193
+ requestBody: {
194
+ threadId: originalMessage.data.threadId || undefined,
195
+ raw: encodedPayload,
196
+ },
197
+ });
198
+ return response.data;
199
+ });
200
+ },
201
+ });
202
+ //# sourceMappingURL=reply-to-email-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reply-to-email-action.js","sourceRoot":"","sources":["../../../src/lib/actions/reply-to-email-action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export declare const requestApprovalInEmail: import("@agnocon/pieces-framework").IAction<(import("@agnocon/pieces-framework").OAuth2Property<import("@agnocon/pieces-framework").OAuth2Props> | import("@agnocon/pieces-framework").CustomAuthProperty<{
2
+ serviceAccount: import("@agnocon/pieces-framework").LongTextProperty<true>;
3
+ userEmail: import("@agnocon/pieces-framework").ShortTextProperty<true>;
4
+ }>)[], {
5
+ receiver: import("@agnocon/pieces-framework").ShortTextProperty<true>;
6
+ cc: import("@agnocon/pieces-framework").ArrayProperty<false>;
7
+ bcc: import("@agnocon/pieces-framework").ArrayProperty<false>;
8
+ subject: import("@agnocon/pieces-framework").ShortTextProperty<true>;
9
+ body: import("@agnocon/pieces-framework").ShortTextProperty<true>;
10
+ reply_to: import("@agnocon/pieces-framework").ArrayProperty<false>;
11
+ sender_name: import("@agnocon/pieces-framework").ShortTextProperty<false>;
12
+ from: import("@agnocon/pieces-framework").ShortTextProperty<false>;
13
+ in_reply_to: import("@agnocon/pieces-framework").ShortTextProperty<false>;
14
+ }>;
15
+ //# sourceMappingURL=request-approval-in-email.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-approval-in-email.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/request-approval-in-email.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;EAsLjC,CAAC"}
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.requestApprovalInEmail = void 0;
4
+ const tslib_1 = require("tslib");
5
+ // Vendored from Activepieces packages/pieces/community/gmail/src/lib/actions/request-approval-in-email.ts (MIT).
6
+ // Generated by packages/scripts/vendor-ap.mjs - do not edit by hand.
7
+ const pieces_framework_1 = require("@agnocon/pieces-framework");
8
+ const auth_1 = require("../auth");
9
+ const gmail_1 = require("@googleapis/gmail");
10
+ const mail_composer_1 = tslib_1.__importDefault(require("nodemailer/lib/mail-composer"));
11
+ const pieces_framework_2 = require("@agnocon/pieces-framework");
12
+ const pieces_framework_3 = require("@agnocon/pieces-framework");
13
+ const output_schemas_1 = require("../output-schemas");
14
+ exports.requestApprovalInEmail = (0, pieces_framework_1.createAction)({
15
+ auth: auth_1.gmailAuth,
16
+ name: 'request_approval_in_mail',
17
+ displayName: 'Request Approval in Email',
18
+ description: 'Send approval request email and then wait until the email is approved or disapproved',
19
+ audience: 'both',
20
+ aiMetadata: {
21
+ description: 'Sends an email with a single link to a confirmation page where the recipient chooses Approve or Disapprove, then pauses the flow until they respond, resuming with their decision. Use this as a human-in-the-loop gate before proceeding with a sensitive action. The flow blocks indefinitely until a response arrives. Not idempotent: each call sends a new approval email and creates a new wait.',
22
+ idempotent: false,
23
+ },
24
+ props: {
25
+ receiver: pieces_framework_1.Property.ShortText({
26
+ displayName: 'Receiver Email (To)',
27
+ description: 'The email address of the recipient who will receive the approval request.',
28
+ required: true,
29
+ }),
30
+ cc: pieces_framework_1.Property.Array({
31
+ displayName: 'CC Email',
32
+ description: 'The email addresses of the recipients who will receive a carbon copy of the approval request.',
33
+ required: false,
34
+ }),
35
+ bcc: pieces_framework_1.Property.Array({
36
+ displayName: 'BCC Email',
37
+ description: 'The email addresses of the recipients who will receive a blind carbon copy of the approval request.',
38
+ required: false,
39
+ }),
40
+ subject: pieces_framework_1.Property.ShortText({
41
+ displayName: 'Subject',
42
+ description: 'The subject of the approval request email.',
43
+ required: true,
44
+ }),
45
+ body: pieces_framework_1.Property.ShortText({
46
+ displayName: 'Body',
47
+ description: 'Body for the email you want to send',
48
+ required: true,
49
+ }),
50
+ reply_to: pieces_framework_1.Property.Array({
51
+ displayName: 'Reply-To Email',
52
+ description: 'Email address to set as the "Reply-To" header',
53
+ required: false,
54
+ }),
55
+ sender_name: pieces_framework_1.Property.ShortText({
56
+ displayName: 'Sender Name',
57
+ required: false,
58
+ }),
59
+ from: pieces_framework_1.Property.ShortText({
60
+ displayName: 'Sender Email',
61
+ description: "The address must be listed in your GMail account's settings",
62
+ required: false,
63
+ }),
64
+ in_reply_to: pieces_framework_1.Property.ShortText({
65
+ displayName: 'In reply to',
66
+ description: 'Reply to this Message-ID',
67
+ required: false,
68
+ }),
69
+ },
70
+ outputSchema: output_schemas_1.requestApprovalInMailActionOutputSchema,
71
+ run(context) {
72
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
73
+ var _a, _b, _c, _d;
74
+ if (context.executionType === pieces_framework_3.ExecutionType.BEGIN) {
75
+ try {
76
+ const token = yield (0, auth_1.getAccessToken)(context.auth);
77
+ const { subject, body } = context.propsValue;
78
+ (0, pieces_framework_2.assertNotNullOrUndefined)(token, 'token');
79
+ (0, pieces_framework_2.assertNotNullOrUndefined)(context.propsValue.receiver, 'receiver');
80
+ (0, pieces_framework_2.assertNotNullOrUndefined)(subject, 'subject');
81
+ (0, pieces_framework_2.assertNotNullOrUndefined)(body, 'body');
82
+ const waitpoint = yield context.run.createWaitpoint({
83
+ type: 'WEBHOOK',
84
+ });
85
+ const confirmationLink = `${waitpoint.resumeUrl}/confirm`;
86
+ const htmlBody = `
87
+ <div>
88
+ <p>${body}</p>
89
+ <br />
90
+ <p>
91
+ <a href="${confirmationLink}" style="display: inline-block; padding: 10px 20px; background-color: #6e41e2; color: white; text-decoration: none; border-radius: 4px;">Review &amp; Respond</a>
92
+ </p>
93
+ </div>
94
+ `;
95
+ const authClient = yield (0, auth_1.createGoogleClient)(context.auth);
96
+ const gmail = (0, gmail_1.gmail)({ version: 'v1', auth: authClient });
97
+ const subjectBase64 = Buffer.from(context.propsValue['subject']).toString('base64');
98
+ const replyTo = (_a = context.propsValue['reply_to']) === null || _a === void 0 ? void 0 : _a.filter((email) => email !== '');
99
+ const receiverEmail = context.propsValue.receiver;
100
+ const cc = (_b = context.propsValue['cc']) === null || _b === void 0 ? void 0 : _b.filter((email) => email !== '');
101
+ const bcc = (_c = context.propsValue['bcc']) === null || _c === void 0 ? void 0 : _c.filter((email) => email !== '');
102
+ const mailOptions = {
103
+ to: receiverEmail,
104
+ cc: cc ? cc.join(', ') : undefined,
105
+ bcc: bcc ? bcc.join(', ') : undefined,
106
+ subject: `=?UTF-8?B?${subjectBase64}?=`,
107
+ replyTo: replyTo ? replyTo.join(', ') : '',
108
+ // text:
109
+ // context.propsValue.body_type === 'plain_text'
110
+ // ? context.propsValue['body']
111
+ // : undefined,
112
+ html: htmlBody,
113
+ attachments: [],
114
+ };
115
+ const senderEmail = context.propsValue.from ||
116
+ (yield (0, auth_1.getUserEmail)(context.auth, authClient));
117
+ if (senderEmail) {
118
+ mailOptions.from = context.propsValue.sender_name
119
+ ? `${context.propsValue['sender_name']} <${senderEmail}>`
120
+ : senderEmail;
121
+ }
122
+ let threadId = undefined;
123
+ if (context.propsValue.in_reply_to) {
124
+ mailOptions.headers = [
125
+ {
126
+ key: 'References',
127
+ value: context.propsValue.in_reply_to,
128
+ },
129
+ {
130
+ key: 'In-Reply-To',
131
+ value: context.propsValue.in_reply_to,
132
+ },
133
+ ];
134
+ const messages = yield gmail.users.messages.list({
135
+ userId: 'me',
136
+ q: `Rfc822msgid:${context.propsValue.in_reply_to}`,
137
+ });
138
+ threadId = (_d = messages.data.messages) === null || _d === void 0 ? void 0 : _d[0].threadId;
139
+ }
140
+ const mail = new mail_composer_1.default(mailOptions).compile();
141
+ mail.keepBcc = true;
142
+ const mailBody = yield mail.build();
143
+ const encodedPayload = Buffer.from(mailBody)
144
+ .toString('base64')
145
+ .replace(/\+/g, '-')
146
+ .replace(/\//g, '_');
147
+ yield gmail.users.messages.send({
148
+ userId: 'me',
149
+ requestBody: {
150
+ threadId,
151
+ raw: encodedPayload,
152
+ },
153
+ });
154
+ context.run.waitForWaitpoint(waitpoint.id);
155
+ return {
156
+ approved: false, // default approval is false
157
+ };
158
+ }
159
+ catch (error) {
160
+ console.error('[RequestApprovalEmail] Error during BEGIN execution:', error);
161
+ throw error;
162
+ }
163
+ }
164
+ else {
165
+ const action = context.resumePayload.queryParams['action'];
166
+ const approved = action === 'approve';
167
+ return {
168
+ approved,
169
+ };
170
+ }
171
+ });
172
+ },
173
+ });
174
+ //# sourceMappingURL=request-approval-in-email.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-approval-in-email.js","sourceRoot":"","sources":["../../../src/lib/actions/request-approval-in-email.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { GmailLabel } from '../common/models';
2
+ export declare const gmailSearchMailAction: import("@agnocon/pieces-framework").IAction<(import("@agnocon/pieces-framework").OAuth2Property<import("@agnocon/pieces-framework").OAuth2Props> | import("@agnocon/pieces-framework").CustomAuthProperty<{
3
+ serviceAccount: import("@agnocon/pieces-framework").LongTextProperty<true>;
4
+ userEmail: import("@agnocon/pieces-framework").ShortTextProperty<true>;
5
+ }>)[], {
6
+ from: import("@agnocon/pieces-framework").ShortTextProperty<false>;
7
+ to: import("@agnocon/pieces-framework").ShortTextProperty<false>;
8
+ subject: import("@agnocon/pieces-framework").ShortTextProperty<false>;
9
+ content: import("@agnocon/pieces-framework").ShortTextProperty<false>;
10
+ has_attachment: import("@agnocon/pieces-framework").CheckboxProperty<false>;
11
+ attachment_name: import("@agnocon/pieces-framework").ShortTextProperty<false>;
12
+ label: import("@agnocon/pieces-framework").DropdownProperty<GmailLabel, false, (import("@agnocon/pieces-framework").OAuth2Property<import("@agnocon/pieces-framework").OAuth2Props> | import("@agnocon/pieces-framework").CustomAuthProperty<{
13
+ serviceAccount: import("@agnocon/pieces-framework").LongTextProperty<true>;
14
+ userEmail: import("@agnocon/pieces-framework").ShortTextProperty<true>;
15
+ }>)[]>;
16
+ category: import("@agnocon/pieces-framework").StaticDropdownProperty<string, false>;
17
+ after_date: import("@agnocon/pieces-framework").DateTimeProperty<false>;
18
+ before_date: import("@agnocon/pieces-framework").DateTimeProperty<false>;
19
+ include_spam_trash: import("@agnocon/pieces-framework").CheckboxProperty<false>;
20
+ max_results: import("@agnocon/pieces-framework").NumberProperty<false>;
21
+ }>;
22
+ //# sourceMappingURL=search-email-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-email-action.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/search-email-action.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;EAkNhC,CAAC"}