@marktoflow/integrations 2.0.0-alpha.12

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 (181) hide show
  1. package/README.md +1341 -0
  2. package/dist/adapters/claude-agent-hooks.d.ts.map +1 -0
  3. package/dist/adapters/claude-agent-hooks.js +339 -0
  4. package/dist/adapters/claude-agent-hooks.js.map +1 -0
  5. package/dist/adapters/claude-agent-types.d.ts +426 -0
  6. package/dist/adapters/claude-agent-types.d.ts.map +1 -0
  7. package/dist/adapters/claude-agent-types.js +62 -0
  8. package/dist/adapters/claude-agent-types.js.map +1 -0
  9. package/dist/adapters/claude-agent-workflow.d.ts +393 -0
  10. package/dist/adapters/claude-agent-workflow.d.ts.map +1 -0
  11. package/dist/adapters/claude-agent-workflow.js +445 -0
  12. package/dist/adapters/claude-agent-workflow.js.map +1 -0
  13. package/dist/adapters/claude-agent.d.ts +189 -0
  14. package/dist/adapters/claude-agent.d.ts.map +1 -0
  15. package/dist/adapters/claude-agent.js +504 -0
  16. package/dist/adapters/claude-agent.js.map +1 -0
  17. package/dist/adapters/claude-code.d.ts +34 -0
  18. package/dist/adapters/claude-code.d.ts.map +1 -0
  19. package/dist/adapters/claude-code.js +89 -0
  20. package/dist/adapters/claude-code.js.map +1 -0
  21. package/dist/adapters/codex-types.d.ts +463 -0
  22. package/dist/adapters/codex-types.d.ts.map +1 -0
  23. package/dist/adapters/codex-types.js +53 -0
  24. package/dist/adapters/codex-types.js.map +1 -0
  25. package/dist/adapters/codex-workflow.d.ts +414 -0
  26. package/dist/adapters/codex-workflow.d.ts.map +1 -0
  27. package/dist/adapters/codex-workflow.js +470 -0
  28. package/dist/adapters/codex-workflow.js.map +1 -0
  29. package/dist/adapters/codex.d.ts +154 -0
  30. package/dist/adapters/codex.d.ts.map +1 -0
  31. package/dist/adapters/codex.js +416 -0
  32. package/dist/adapters/codex.js.map +1 -0
  33. package/dist/adapters/github-copilot-types.d.ts +1012 -0
  34. package/dist/adapters/github-copilot-types.d.ts.map +1 -0
  35. package/dist/adapters/github-copilot-types.js +80 -0
  36. package/dist/adapters/github-copilot-types.js.map +1 -0
  37. package/dist/adapters/github-copilot-workflow.d.ts +462 -0
  38. package/dist/adapters/github-copilot-workflow.d.ts.map +1 -0
  39. package/dist/adapters/github-copilot-workflow.js +473 -0
  40. package/dist/adapters/github-copilot-workflow.js.map +1 -0
  41. package/dist/adapters/github-copilot.d.ts +280 -0
  42. package/dist/adapters/github-copilot.d.ts.map +1 -0
  43. package/dist/adapters/github-copilot.js +468 -0
  44. package/dist/adapters/github-copilot.js.map +1 -0
  45. package/dist/adapters/ollama.d.ts.map +1 -0
  46. package/dist/adapters/ollama.js +9 -0
  47. package/dist/adapters/ollama.js.map +1 -0
  48. package/dist/adapters/opencode.d.ts +41 -0
  49. package/dist/adapters/opencode.d.ts.map +1 -0
  50. package/dist/adapters/opencode.js +148 -0
  51. package/dist/adapters/opencode.js.map +1 -0
  52. package/dist/index.d.ts +52 -0
  53. package/dist/index.d.ts.map +1 -0
  54. package/dist/index.js +161 -0
  55. package/dist/index.js.map +1 -0
  56. package/dist/services/ai-browser.d.ts +112 -0
  57. package/dist/services/ai-browser.d.ts.map +1 -0
  58. package/dist/services/ai-browser.js +363 -0
  59. package/dist/services/ai-browser.js.map +1 -0
  60. package/dist/services/airtable.d.ts.map +1 -0
  61. package/dist/services/airtable.js +295 -0
  62. package/dist/services/airtable.js.map +1 -0
  63. package/dist/services/asana.d.ts +159 -0
  64. package/dist/services/asana.d.ts.map +1 -0
  65. package/dist/services/asana.js +196 -0
  66. package/dist/services/asana.js.map +1 -0
  67. package/dist/services/aws-s3.d.ts +89 -0
  68. package/dist/services/aws-s3.d.ts.map +1 -0
  69. package/dist/services/aws-s3.js +154 -0
  70. package/dist/services/aws-s3.js.map +1 -0
  71. package/dist/services/confluence.d.ts.map +1 -0
  72. package/dist/services/confluence.js +356 -0
  73. package/dist/services/confluence.js.map +1 -0
  74. package/dist/services/discord.d.ts.map +1 -0
  75. package/dist/services/discord.js +279 -0
  76. package/dist/services/discord.js.map +1 -0
  77. package/dist/services/dropbox.d.ts +134 -0
  78. package/dist/services/dropbox.d.ts.map +1 -0
  79. package/dist/services/dropbox.js +190 -0
  80. package/dist/services/dropbox.js.map +1 -0
  81. package/dist/services/github.d.ts.map +1 -0
  82. package/dist/services/github.js +13 -0
  83. package/dist/services/github.js.map +1 -0
  84. package/dist/services/gmail-trigger.d.ts.map +1 -0
  85. package/dist/services/gmail-trigger.js +172 -0
  86. package/dist/services/gmail-trigger.js.map +1 -0
  87. package/dist/services/gmail.d.ts.map +1 -0
  88. package/dist/services/gmail.js +372 -0
  89. package/dist/services/gmail.js.map +1 -0
  90. package/dist/services/google-calendar.d.ts.map +1 -0
  91. package/dist/services/google-calendar.js +357 -0
  92. package/dist/services/google-calendar.js.map +1 -0
  93. package/dist/services/google-docs.d.ts.map +1 -0
  94. package/dist/services/google-docs.js +332 -0
  95. package/dist/services/google-docs.js.map +1 -0
  96. package/dist/services/google-drive.d.ts.map +1 -0
  97. package/dist/services/google-drive.js +327 -0
  98. package/dist/services/google-drive.js.map +1 -0
  99. package/dist/services/google-sheets.d.ts.map +1 -0
  100. package/dist/services/google-sheets.js +391 -0
  101. package/dist/services/google-sheets.js.map +1 -0
  102. package/dist/services/http.d.ts.map +1 -0
  103. package/dist/services/http.js +284 -0
  104. package/dist/services/http.js.map +1 -0
  105. package/dist/services/jira.d.ts.map +1 -0
  106. package/dist/services/jira.js +35 -0
  107. package/dist/services/jira.js.map +1 -0
  108. package/dist/services/linear.d.ts.map +1 -0
  109. package/dist/services/linear.js +326 -0
  110. package/dist/services/linear.js.map +1 -0
  111. package/dist/services/mailchimp.d.ts +169 -0
  112. package/dist/services/mailchimp.d.ts.map +1 -0
  113. package/dist/services/mailchimp.js +180 -0
  114. package/dist/services/mailchimp.js.map +1 -0
  115. package/dist/services/mysql.d.ts.map +1 -0
  116. package/dist/services/mysql.js +250 -0
  117. package/dist/services/mysql.js.map +1 -0
  118. package/dist/services/notion.d.ts.map +1 -0
  119. package/dist/services/notion.js +358 -0
  120. package/dist/services/notion.js.map +1 -0
  121. package/dist/services/outlook-trigger.d.ts.map +1 -0
  122. package/dist/services/outlook-trigger.js +204 -0
  123. package/dist/services/outlook-trigger.js.map +1 -0
  124. package/dist/services/outlook.d.ts.map +1 -0
  125. package/dist/services/outlook.js +486 -0
  126. package/dist/services/outlook.js.map +1 -0
  127. package/dist/services/playwright.d.ts +678 -0
  128. package/dist/services/playwright.d.ts.map +1 -0
  129. package/dist/services/playwright.js +1141 -0
  130. package/dist/services/playwright.js.map +1 -0
  131. package/dist/services/postgres.d.ts.map +1 -0
  132. package/dist/services/postgres.js +230 -0
  133. package/dist/services/postgres.js.map +1 -0
  134. package/dist/services/sendgrid.d.ts +43 -0
  135. package/dist/services/sendgrid.d.ts.map +1 -0
  136. package/dist/services/sendgrid.js +87 -0
  137. package/dist/services/sendgrid.js.map +1 -0
  138. package/dist/services/shopify.d.ts +160 -0
  139. package/dist/services/shopify.d.ts.map +1 -0
  140. package/dist/services/shopify.js +166 -0
  141. package/dist/services/shopify.js.map +1 -0
  142. package/dist/services/slack-socket.d.ts.map +1 -0
  143. package/dist/services/slack-socket.js +48 -0
  144. package/dist/services/slack-socket.js.map +1 -0
  145. package/dist/services/slack.d.ts.map +1 -0
  146. package/dist/services/slack.js +11 -0
  147. package/dist/services/slack.js.map +1 -0
  148. package/dist/services/stripe.d.ts +275 -0
  149. package/dist/services/stripe.d.ts.map +1 -0
  150. package/dist/services/stripe.js +229 -0
  151. package/dist/services/stripe.js.map +1 -0
  152. package/dist/services/supabase.d.ts.map +1 -0
  153. package/dist/services/supabase.js +328 -0
  154. package/dist/services/supabase.js.map +1 -0
  155. package/dist/services/teams.d.ts +224 -0
  156. package/dist/services/teams.d.ts.map +1 -0
  157. package/dist/services/teams.js +229 -0
  158. package/dist/services/teams.js.map +1 -0
  159. package/dist/services/telegram.d.ts.map +1 -0
  160. package/dist/services/telegram.js +247 -0
  161. package/dist/services/telegram.js.map +1 -0
  162. package/dist/services/trello.d.ts +160 -0
  163. package/dist/services/trello.d.ts.map +1 -0
  164. package/dist/services/trello.js +194 -0
  165. package/dist/services/trello.js.map +1 -0
  166. package/dist/services/twilio.d.ts +126 -0
  167. package/dist/services/twilio.d.ts.map +1 -0
  168. package/dist/services/twilio.js +153 -0
  169. package/dist/services/twilio.js.map +1 -0
  170. package/dist/services/whatsapp.d.ts.map +1 -0
  171. package/dist/services/whatsapp.js +253 -0
  172. package/dist/services/whatsapp.js.map +1 -0
  173. package/dist/services/zendesk.d.ts +134 -0
  174. package/dist/services/zendesk.d.ts.map +1 -0
  175. package/dist/services/zendesk.js +148 -0
  176. package/dist/services/zendesk.js.map +1 -0
  177. package/dist/tools/script.d.ts +21 -0
  178. package/dist/tools/script.d.ts.map +1 -0
  179. package/dist/tools/script.js +136 -0
  180. package/dist/tools/script.js.map +1 -0
  181. package/package.json +98 -0
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Dropbox Integration
3
+ *
4
+ * Cloud file storage and collaboration.
5
+ * API Docs: https://www.dropbox.com/developers/documentation/http/overview
6
+ * SDK: https://github.com/dropbox/dropbox-sdk-js
7
+ */
8
+ import { Dropbox } from 'dropbox';
9
+ import { SDKInitializer } from '@marktoflow/core';
10
+ export interface DropboxFileMetadata {
11
+ name: string;
12
+ path_display?: string;
13
+ id?: string;
14
+ client_modified?: string;
15
+ server_modified?: string;
16
+ size?: number;
17
+ }
18
+ export interface DropboxFolderMetadata {
19
+ name: string;
20
+ path_display?: string;
21
+ id?: string;
22
+ }
23
+ export interface UploadOptions {
24
+ path: string;
25
+ contents: string | Buffer;
26
+ mode?: 'add' | 'overwrite' | 'update';
27
+ autorename?: boolean;
28
+ mute?: boolean;
29
+ }
30
+ export interface DownloadOptions {
31
+ path: string;
32
+ }
33
+ export interface SearchOptions {
34
+ query: string;
35
+ max_results?: number;
36
+ }
37
+ export interface ShareOptions {
38
+ path: string;
39
+ settings?: {
40
+ requested_visibility?: 'public' | 'team_only' | 'password';
41
+ audience?: 'public' | 'team' | 'no_one';
42
+ access?: 'viewer' | 'editor';
43
+ };
44
+ }
45
+ /**
46
+ * Dropbox client wrapper for workflow integration
47
+ */
48
+ export declare class DropboxClient {
49
+ private client;
50
+ constructor(client: Dropbox);
51
+ /**
52
+ * Upload file
53
+ */
54
+ uploadFile(options: UploadOptions): Promise<import("dropbox").DropboxResponse<import("dropbox").files.FileMetadata>>;
55
+ /**
56
+ * Download file
57
+ */
58
+ downloadFile(options: DownloadOptions): Promise<import("dropbox").DropboxResponse<import("dropbox").files.FileMetadata>>;
59
+ /**
60
+ * Get file metadata
61
+ */
62
+ getMetadata(path: string): Promise<import("dropbox").DropboxResponse<import("dropbox").files.FileMetadataReference | import("dropbox").files.FolderMetadataReference | import("dropbox").files.DeletedMetadataReference>>;
63
+ /**
64
+ * List folder contents
65
+ */
66
+ listFolder(path: string, options?: {
67
+ recursive?: boolean;
68
+ limit?: number;
69
+ }): Promise<import("dropbox").DropboxResponse<import("dropbox").files.ListFolderResult>>;
70
+ /**
71
+ * Continue listing folder (pagination)
72
+ */
73
+ listFolderContinue(cursor: string): Promise<import("dropbox").DropboxResponse<import("dropbox").files.ListFolderResult>>;
74
+ /**
75
+ * Create folder
76
+ */
77
+ createFolder(path: string, autorename?: boolean): Promise<import("dropbox").DropboxResponse<import("dropbox").files.CreateFolderResult>>;
78
+ /**
79
+ * Delete file or folder
80
+ */
81
+ delete(path: string): Promise<import("dropbox").DropboxResponse<import("dropbox").files.DeleteResult>>;
82
+ /**
83
+ * Move file or folder
84
+ */
85
+ move(fromPath: string, toPath: string, autorename?: boolean): Promise<import("dropbox").DropboxResponse<import("dropbox").files.RelocationResult>>;
86
+ /**
87
+ * Copy file or folder
88
+ */
89
+ copy(fromPath: string, toPath: string, autorename?: boolean): Promise<import("dropbox").DropboxResponse<import("dropbox").files.RelocationResult>>;
90
+ /**
91
+ * Search files
92
+ */
93
+ search(options: SearchOptions): Promise<import("dropbox").DropboxResponse<import("dropbox").files.SearchV2Result>>;
94
+ /**
95
+ * Create shared link
96
+ */
97
+ createSharedLink(options: ShareOptions): Promise<import("dropbox").DropboxResponse<import("dropbox").sharing.FileLinkMetadataReference | import("dropbox").sharing.FolderLinkMetadataReference | import("dropbox").sharing.SharedLinkMetadataReference>>;
98
+ /**
99
+ * List shared links
100
+ */
101
+ listSharedLinks(path?: string): Promise<import("dropbox").DropboxResponse<import("dropbox").sharing.ListSharedLinksResult>>;
102
+ /**
103
+ * Revoke shared link
104
+ */
105
+ revokeSharedLink(url: string): Promise<import("dropbox").DropboxResponse<void>>;
106
+ /**
107
+ * Share folder
108
+ */
109
+ shareFolder(path: string, options?: {
110
+ member_policy?: 'team' | 'anyone';
111
+ acl_update_policy?: 'owner' | 'editors';
112
+ }): Promise<import("dropbox").DropboxResponse<import("dropbox").sharing.ShareFolderLaunch>>;
113
+ /**
114
+ * Add folder member
115
+ */
116
+ addFolderMember(sharedFolderId: string, members: Array<{
117
+ email: string;
118
+ access_level?: 'owner' | 'editor' | 'viewer' | 'viewer_no_comment';
119
+ }>): Promise<import("dropbox").DropboxResponse<void>>;
120
+ /**
121
+ * Remove folder member
122
+ */
123
+ removeFolderMember(sharedFolderId: string, memberEmail: string, leaveACopy?: boolean): Promise<import("dropbox").DropboxResponse<import("dropbox").async.LaunchResultBaseAsyncJobId>>;
124
+ /**
125
+ * Get current account info
126
+ */
127
+ getCurrentAccount(): Promise<import("dropbox").DropboxResponse<import("dropbox").users.FullAccount>>;
128
+ /**
129
+ * Get space usage
130
+ */
131
+ getSpaceUsage(): Promise<import("dropbox").DropboxResponse<import("dropbox").users.SpaceUsage>>;
132
+ }
133
+ export declare const DropboxInitializer: SDKInitializer;
134
+ //# sourceMappingURL=dropbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropbox.d.ts","sourceRoot":"","sources":["../../src/services/dropbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Dropbox Integration
3
+ *
4
+ * Cloud file storage and collaboration.
5
+ * API Docs: https://www.dropbox.com/developers/documentation/http/overview
6
+ * SDK: https://github.com/dropbox/dropbox-sdk-js
7
+ */
8
+ import { Dropbox } from 'dropbox';
9
+ /**
10
+ * Dropbox client wrapper for workflow integration
11
+ */
12
+ export class DropboxClient {
13
+ client;
14
+ constructor(client) {
15
+ this.client = client;
16
+ }
17
+ // ==================== Files ====================
18
+ /**
19
+ * Upload file
20
+ */
21
+ async uploadFile(options) {
22
+ return await this.client.filesUpload({
23
+ path: options.path,
24
+ contents: options.contents,
25
+ mode: options.mode ? { '.tag': options.mode } : { '.tag': 'add' },
26
+ autorename: options.autorename ?? false,
27
+ mute: options.mute ?? false,
28
+ });
29
+ }
30
+ /**
31
+ * Download file
32
+ */
33
+ async downloadFile(options) {
34
+ return await this.client.filesDownload({ path: options.path });
35
+ }
36
+ /**
37
+ * Get file metadata
38
+ */
39
+ async getMetadata(path) {
40
+ return await this.client.filesGetMetadata({ path });
41
+ }
42
+ /**
43
+ * List folder contents
44
+ */
45
+ async listFolder(path, options) {
46
+ return await this.client.filesListFolder({
47
+ path: path || '',
48
+ recursive: options?.recursive ?? false,
49
+ limit: options?.limit,
50
+ });
51
+ }
52
+ /**
53
+ * Continue listing folder (pagination)
54
+ */
55
+ async listFolderContinue(cursor) {
56
+ return await this.client.filesListFolderContinue({ cursor });
57
+ }
58
+ /**
59
+ * Create folder
60
+ */
61
+ async createFolder(path, autorename) {
62
+ return await this.client.filesCreateFolderV2({
63
+ path,
64
+ autorename: autorename ?? false,
65
+ });
66
+ }
67
+ /**
68
+ * Delete file or folder
69
+ */
70
+ async delete(path) {
71
+ return await this.client.filesDeleteV2({ path });
72
+ }
73
+ /**
74
+ * Move file or folder
75
+ */
76
+ async move(fromPath, toPath, autorename) {
77
+ return await this.client.filesMoveV2({
78
+ from_path: fromPath,
79
+ to_path: toPath,
80
+ autorename: autorename ?? false,
81
+ });
82
+ }
83
+ /**
84
+ * Copy file or folder
85
+ */
86
+ async copy(fromPath, toPath, autorename) {
87
+ return await this.client.filesCopyV2({
88
+ from_path: fromPath,
89
+ to_path: toPath,
90
+ autorename: autorename ?? false,
91
+ });
92
+ }
93
+ // ==================== Search ====================
94
+ /**
95
+ * Search files
96
+ */
97
+ async search(options) {
98
+ return await this.client.filesSearchV2({
99
+ query: options.query,
100
+ options: {
101
+ max_results: options.max_results ?? 100,
102
+ },
103
+ });
104
+ }
105
+ // ==================== Sharing ====================
106
+ /**
107
+ * Create shared link
108
+ */
109
+ async createSharedLink(options) {
110
+ return await this.client.sharingCreateSharedLinkWithSettings({
111
+ path: options.path,
112
+ settings: options.settings,
113
+ });
114
+ }
115
+ /**
116
+ * List shared links
117
+ */
118
+ async listSharedLinks(path) {
119
+ return await this.client.sharingListSharedLinks({
120
+ path: path || '',
121
+ });
122
+ }
123
+ /**
124
+ * Revoke shared link
125
+ */
126
+ async revokeSharedLink(url) {
127
+ return await this.client.sharingRevokeSharedLink({ url });
128
+ }
129
+ /**
130
+ * Share folder
131
+ */
132
+ async shareFolder(path, options) {
133
+ return await this.client.sharingShareFolder({
134
+ path,
135
+ member_policy: options?.member_policy ? { '.tag': options.member_policy } : undefined,
136
+ acl_update_policy: options?.acl_update_policy ? { '.tag': options.acl_update_policy } : undefined,
137
+ });
138
+ }
139
+ /**
140
+ * Add folder member
141
+ */
142
+ async addFolderMember(sharedFolderId, members) {
143
+ return await this.client.sharingAddFolderMember({
144
+ shared_folder_id: sharedFolderId,
145
+ members: members.map((m) => ({
146
+ member: { '.tag': 'email', email: m.email },
147
+ access_level: m.access_level ? { '.tag': m.access_level } : { '.tag': 'viewer' },
148
+ })),
149
+ });
150
+ }
151
+ /**
152
+ * Remove folder member
153
+ */
154
+ async removeFolderMember(sharedFolderId, memberEmail, leaveACopy) {
155
+ return await this.client.sharingRemoveFolderMember({
156
+ shared_folder_id: sharedFolderId,
157
+ member: { '.tag': 'email', email: memberEmail },
158
+ leave_a_copy: leaveACopy ?? false,
159
+ });
160
+ }
161
+ // ==================== Account ====================
162
+ /**
163
+ * Get current account info
164
+ */
165
+ async getCurrentAccount() {
166
+ return await this.client.usersGetCurrentAccount();
167
+ }
168
+ /**
169
+ * Get space usage
170
+ */
171
+ async getSpaceUsage() {
172
+ return await this.client.usersGetSpaceUsage();
173
+ }
174
+ }
175
+ export const DropboxInitializer = {
176
+ async initialize(_module, config) {
177
+ const accessToken = config.auth?.['access_token'];
178
+ if (!accessToken) {
179
+ throw new Error('Dropbox SDK requires auth.access_token');
180
+ }
181
+ const client = new Dropbox({ accessToken });
182
+ const wrapper = new DropboxClient(client);
183
+ return {
184
+ client: wrapper,
185
+ actions: wrapper,
186
+ rawClient: client,
187
+ };
188
+ },
189
+ };
190
+ //# sourceMappingURL=dropbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropbox.js","sourceRoot":"","sources":["../../src/services/dropbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/services/github.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE9D,eAAO,MAAM,iBAAiB,EAAE,cAW/B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Octokit } from '@octokit/rest';
2
+ export const GitHubInitializer = {
3
+ async initialize(_module, config) {
4
+ const token = config.auth?.['token'];
5
+ // GitHub API can be used without token for public data, but usually we want a token
6
+ // We'll enforce token for now to match other integrations, or make it optional.
7
+ // Let's make it optional but recommended.
8
+ return new Octokit({
9
+ auth: token
10
+ });
11
+ },
12
+ };
13
+ //# sourceMappingURL=github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/services/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,MAAM,CAAC,MAAM,iBAAiB,GAAmB;IAC/C,KAAK,CAAC,UAAU,CAAC,OAAgB,EAAE,MAAkB;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAW,CAAC;QAC/C,oFAAoF;QACpF,gFAAgF;QAChF,0CAA0C;QAE1C,OAAO,IAAI,OAAO,CAAC;YACjB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmail-trigger.d.ts","sourceRoot":"","sources":["../../src/services/gmail-trigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,gBAAgB,CAAC;QACxB,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1D,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,gBAAgB,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,qBAAa,YAAY;IAKX,OAAO,CAAC,MAAM;IAJ1B,OAAO,CAAC,KAAK,CAAC,CAAiB;IAC/B,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,aAAa,CAAC,CAAS;gBAEX,MAAM,EAAE,kBAAkB;IAE9C;;OAEG;IACH,OAAO,CAAC,SAAS;IAgBjB;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAqBjE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B;;OAEG;IACH,aAAa,IAAI,OAAO;IAKxB;;;OAGG;IACG,wBAAwB,CAAC,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwC/E;;OAEG;YACW,gBAAgB;IAgC9B;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,kBAAkB;CAYxE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,YAAY,IAC/C,KAAK;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,EAAE,KAAK;IAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAA;CAAE,mBAc3G"}
@@ -0,0 +1,172 @@
1
+ import { google } from 'googleapis';
2
+ import { TriggerType } from '@marktoflow/core';
3
+ /**
4
+ * Gmail trigger handler for Pub/Sub push notifications.
5
+ *
6
+ * Setup requirements:
7
+ * 1. Create a Google Cloud Pub/Sub topic
8
+ * 2. Create a push subscription pointing to your webhook URL
9
+ * 3. Grant Gmail API watch permissions on your account
10
+ * 4. Call watch() to start receiving notifications
11
+ */
12
+ export class GmailTrigger {
13
+ config;
14
+ gmail;
15
+ watchExpiration;
16
+ lastHistoryId;
17
+ constructor(config) {
18
+ this.config = config;
19
+ }
20
+ /**
21
+ * Initialize the Gmail client
22
+ */
23
+ getClient() {
24
+ if (!this.gmail) {
25
+ const oauth2Client = new google.auth.OAuth2(this.config.clientId, this.config.clientSecret, this.config.redirectUri);
26
+ oauth2Client.setCredentials({
27
+ refresh_token: this.config.refreshToken,
28
+ access_token: this.config.accessToken,
29
+ });
30
+ this.gmail = google.gmail({ version: 'v1', auth: oauth2Client });
31
+ }
32
+ return this.gmail;
33
+ }
34
+ /**
35
+ * Start watching for email notifications via Pub/Sub.
36
+ * This needs to be called initially and periodically (watch expires after ~7 days).
37
+ */
38
+ async watch() {
39
+ const gmail = this.getClient();
40
+ const response = await gmail.users.watch({
41
+ userId: 'me',
42
+ requestBody: {
43
+ topicName: this.config.topicName,
44
+ labelIds: this.config.labelIds ?? ['INBOX'],
45
+ labelFilterBehavior: 'include',
46
+ },
47
+ });
48
+ this.lastHistoryId = response.data.historyId ?? undefined;
49
+ this.watchExpiration = parseInt(response.data.expiration ?? '0', 10);
50
+ return {
51
+ historyId: this.lastHistoryId ?? '',
52
+ expiration: this.watchExpiration,
53
+ };
54
+ }
55
+ /**
56
+ * Stop watching for email notifications.
57
+ */
58
+ async stop() {
59
+ const gmail = this.getClient();
60
+ await gmail.users.stop({ userId: 'me' });
61
+ this.watchExpiration = undefined;
62
+ this.lastHistoryId = undefined;
63
+ }
64
+ /**
65
+ * Check if the watch is still active.
66
+ */
67
+ isWatchActive() {
68
+ if (!this.watchExpiration)
69
+ return false;
70
+ return Date.now() < this.watchExpiration;
71
+ }
72
+ /**
73
+ * Handle an incoming Pub/Sub push notification.
74
+ * Call this from your webhook endpoint.
75
+ */
76
+ async handlePubSubNotification(notification) {
77
+ // Decode the Pub/Sub message data
78
+ const data = JSON.parse(Buffer.from(notification.message.data, 'base64').toString('utf-8'));
79
+ const { emailAddress, historyId } = data;
80
+ // Fetch new messages since the last history ID
81
+ let messages = [];
82
+ if (this.lastHistoryId) {
83
+ try {
84
+ messages = await this.fetchNewMessages(this.lastHistoryId);
85
+ }
86
+ catch (error) {
87
+ // History may have expired, just notify with empty messages
88
+ console.warn('Failed to fetch history, may have expired:', error);
89
+ }
90
+ }
91
+ // Update last history ID
92
+ this.lastHistoryId = historyId;
93
+ // Create payload
94
+ const payload = {
95
+ type: TriggerType.WEBHOOK,
96
+ event: 'email_received',
97
+ historyId,
98
+ emailAddress,
99
+ messages: messages.length > 0 ? messages : undefined,
100
+ };
101
+ // Call all registered handlers
102
+ for (const trigger of this.config.triggers) {
103
+ if (trigger.event === 'email_received') {
104
+ await trigger.handler(payload);
105
+ }
106
+ }
107
+ }
108
+ /**
109
+ * Fetch new messages since a given history ID.
110
+ */
111
+ async fetchNewMessages(startHistoryId) {
112
+ const gmail = this.getClient();
113
+ const historyResponse = await gmail.users.history.list({
114
+ userId: 'me',
115
+ startHistoryId,
116
+ historyTypes: ['messageAdded'],
117
+ });
118
+ const messageIds = new Set();
119
+ for (const history of historyResponse.data.history ?? []) {
120
+ for (const added of history.messagesAdded ?? []) {
121
+ if (added.message?.id) {
122
+ messageIds.add(added.message.id);
123
+ }
124
+ }
125
+ }
126
+ const messages = [];
127
+ for (const id of messageIds) {
128
+ const msg = await gmail.users.messages.get({
129
+ userId: 'me',
130
+ id,
131
+ format: 'metadata',
132
+ metadataHeaders: ['Subject', 'From', 'To', 'Date'],
133
+ });
134
+ messages.push(msg.data);
135
+ }
136
+ return messages;
137
+ }
138
+ /**
139
+ * Validate a Pub/Sub push request (basic validation).
140
+ * For production, you should verify the token in the subscription.
141
+ */
142
+ static validatePubSubRequest(body) {
143
+ if (!body || typeof body !== 'object')
144
+ return false;
145
+ const msg = body;
146
+ if (!msg.message || typeof msg.message !== 'object')
147
+ return false;
148
+ const message = msg.message;
149
+ return (typeof message.data === 'string' &&
150
+ typeof message.messageId === 'string');
151
+ }
152
+ }
153
+ /**
154
+ * Express/Fastify-compatible middleware for handling Gmail Pub/Sub webhooks.
155
+ */
156
+ export function createGmailWebhookHandler(trigger) {
157
+ return async (req, res) => {
158
+ try {
159
+ if (!GmailTrigger.validatePubSubRequest(req.body)) {
160
+ res.status(400).send('Invalid Pub/Sub message');
161
+ return;
162
+ }
163
+ await trigger.handlePubSubNotification(req.body);
164
+ res.status(200).send('OK');
165
+ }
166
+ catch (error) {
167
+ console.error('Gmail webhook error:', error);
168
+ res.status(500).send('Internal error');
169
+ }
170
+ };
171
+ }
172
+ //# sourceMappingURL=gmail-trigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmail-trigger.js","sourceRoot":"","sources":["../../src/services/gmail-trigger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmail.d.ts","sourceRoot":"","sources":["../../src/services/gmail.ts"],"names":[],"mappings":"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"}