@marktoflow/integrations 2.0.0-alpha.3

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 (105) hide show
  1. package/dist/adapters/claude-code.d.ts +16 -0
  2. package/dist/adapters/claude-code.d.ts.map +1 -0
  3. package/dist/adapters/claude-code.js +56 -0
  4. package/dist/adapters/claude-code.js.map +1 -0
  5. package/dist/adapters/ollama.d.ts +3 -0
  6. package/dist/adapters/ollama.d.ts.map +1 -0
  7. package/dist/adapters/ollama.js +9 -0
  8. package/dist/adapters/ollama.js.map +1 -0
  9. package/dist/adapters/opencode.d.ts +21 -0
  10. package/dist/adapters/opencode.d.ts.map +1 -0
  11. package/dist/adapters/opencode.js +119 -0
  12. package/dist/adapters/opencode.js.map +1 -0
  13. package/dist/claude-code.d.ts +16 -0
  14. package/dist/claude-code.d.ts.map +1 -0
  15. package/dist/claude-code.js +56 -0
  16. package/dist/claude-code.js.map +1 -0
  17. package/dist/github.d.ts +3 -0
  18. package/dist/github.d.ts.map +1 -0
  19. package/dist/github.js +13 -0
  20. package/dist/github.js.map +1 -0
  21. package/dist/index.d.ts +21 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +67 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/jira.d.ts +3 -0
  26. package/dist/jira.d.ts.map +1 -0
  27. package/dist/jira.js +21 -0
  28. package/dist/jira.js.map +1 -0
  29. package/dist/ollama.d.ts +3 -0
  30. package/dist/ollama.d.ts.map +1 -0
  31. package/dist/ollama.js +9 -0
  32. package/dist/ollama.js.map +1 -0
  33. package/dist/opencode.d.ts +19 -0
  34. package/dist/opencode.d.ts.map +1 -0
  35. package/dist/opencode.js +104 -0
  36. package/dist/opencode.js.map +1 -0
  37. package/dist/script.d.ts +3 -0
  38. package/dist/script.d.ts.map +1 -0
  39. package/dist/script.js +21 -0
  40. package/dist/script.js.map +1 -0
  41. package/dist/services/airtable.d.ts +145 -0
  42. package/dist/services/airtable.d.ts.map +1 -0
  43. package/dist/services/airtable.js +295 -0
  44. package/dist/services/airtable.js.map +1 -0
  45. package/dist/services/confluence.d.ts +205 -0
  46. package/dist/services/confluence.d.ts.map +1 -0
  47. package/dist/services/confluence.js +356 -0
  48. package/dist/services/confluence.js.map +1 -0
  49. package/dist/services/discord.d.ts +212 -0
  50. package/dist/services/discord.d.ts.map +1 -0
  51. package/dist/services/discord.js +279 -0
  52. package/dist/services/discord.js.map +1 -0
  53. package/dist/services/github.d.ts +3 -0
  54. package/dist/services/github.d.ts.map +1 -0
  55. package/dist/services/github.js +13 -0
  56. package/dist/services/github.js.map +1 -0
  57. package/dist/services/gmail-trigger.d.ts +92 -0
  58. package/dist/services/gmail-trigger.d.ts.map +1 -0
  59. package/dist/services/gmail-trigger.js +172 -0
  60. package/dist/services/gmail-trigger.js.map +1 -0
  61. package/dist/services/gmail.d.ts +116 -0
  62. package/dist/services/gmail.d.ts.map +1 -0
  63. package/dist/services/gmail.js +333 -0
  64. package/dist/services/gmail.js.map +1 -0
  65. package/dist/services/http.d.ts +120 -0
  66. package/dist/services/http.d.ts.map +1 -0
  67. package/dist/services/http.js +284 -0
  68. package/dist/services/http.js.map +1 -0
  69. package/dist/services/jira.d.ts +3 -0
  70. package/dist/services/jira.d.ts.map +1 -0
  71. package/dist/services/jira.js +21 -0
  72. package/dist/services/jira.js.map +1 -0
  73. package/dist/services/linear.d.ts +163 -0
  74. package/dist/services/linear.d.ts.map +1 -0
  75. package/dist/services/linear.js +326 -0
  76. package/dist/services/linear.js.map +1 -0
  77. package/dist/services/notion.d.ts +206 -0
  78. package/dist/services/notion.d.ts.map +1 -0
  79. package/dist/services/notion.js +358 -0
  80. package/dist/services/notion.js.map +1 -0
  81. package/dist/services/outlook-trigger.d.ts +121 -0
  82. package/dist/services/outlook-trigger.d.ts.map +1 -0
  83. package/dist/services/outlook-trigger.js +204 -0
  84. package/dist/services/outlook-trigger.js.map +1 -0
  85. package/dist/services/outlook.d.ts +237 -0
  86. package/dist/services/outlook.d.ts.map +1 -0
  87. package/dist/services/outlook.js +475 -0
  88. package/dist/services/outlook.js.map +1 -0
  89. package/dist/services/slack-socket.d.ts +18 -0
  90. package/dist/services/slack-socket.d.ts.map +1 -0
  91. package/dist/services/slack-socket.js +46 -0
  92. package/dist/services/slack-socket.js.map +1 -0
  93. package/dist/services/slack.d.ts +3 -0
  94. package/dist/services/slack.d.ts.map +1 -0
  95. package/dist/services/slack.js +11 -0
  96. package/dist/services/slack.js.map +1 -0
  97. package/dist/slack.d.ts +3 -0
  98. package/dist/slack.d.ts.map +1 -0
  99. package/dist/slack.js +11 -0
  100. package/dist/slack.js.map +1 -0
  101. package/dist/tools/script.d.ts +3 -0
  102. package/dist/tools/script.d.ts.map +1 -0
  103. package/dist/tools/script.js +21 -0
  104. package/dist/tools/script.js.map +1 -0
  105. package/package.json +57 -0
@@ -0,0 +1,204 @@
1
+ import { Client } from '@microsoft/microsoft-graph-client';
2
+ import { TriggerType } from '@marktoflow/core';
3
+ /**
4
+ * Outlook trigger handler for Microsoft Graph webhook subscriptions.
5
+ *
6
+ * Setup requirements:
7
+ * 1. Register an Azure AD application with Mail.Read permissions
8
+ * 2. Set up a publicly accessible webhook endpoint
9
+ * 3. Call subscribe() to start receiving notifications
10
+ * 4. Handle subscription renewal before expiration (max ~3 days)
11
+ */
12
+ export class OutlookTrigger {
13
+ config;
14
+ client;
15
+ subscription;
16
+ constructor(config) {
17
+ this.config = config;
18
+ this.client = Client.init({
19
+ authProvider: (done) => {
20
+ done(null, config.token);
21
+ },
22
+ });
23
+ }
24
+ /**
25
+ * Create a subscription to receive mail notifications.
26
+ */
27
+ async subscribe() {
28
+ const changeTypes = this.config.changeTypes ?? ['created'];
29
+ const resource = this.config.resource ?? 'me/mailFolders/inbox/messages';
30
+ const expirationMinutes = this.config.expirationMinutes ?? 4230;
31
+ const expirationDateTime = new Date(Date.now() + expirationMinutes * 60 * 1000).toISOString();
32
+ const subscription = await this.client.api('/subscriptions').post({
33
+ changeType: changeTypes.join(','),
34
+ notificationUrl: this.config.notificationUrl,
35
+ resource,
36
+ expirationDateTime,
37
+ clientState: this.config.clientState,
38
+ });
39
+ this.subscription = {
40
+ id: subscription.id,
41
+ resource: subscription.resource,
42
+ changeType: subscription.changeType,
43
+ notificationUrl: subscription.notificationUrl,
44
+ expirationDateTime: subscription.expirationDateTime,
45
+ clientState: subscription.clientState,
46
+ };
47
+ return this.subscription;
48
+ }
49
+ /**
50
+ * Renew an existing subscription.
51
+ */
52
+ async renew(expirationMinutes) {
53
+ if (!this.subscription) {
54
+ throw new Error('No active subscription to renew. Call subscribe() first.');
55
+ }
56
+ const minutes = expirationMinutes ?? this.config.expirationMinutes ?? 4230;
57
+ const expirationDateTime = new Date(Date.now() + minutes * 60 * 1000).toISOString();
58
+ const updated = await this.client.api(`/subscriptions/${this.subscription.id}`).patch({
59
+ expirationDateTime,
60
+ });
61
+ this.subscription.expirationDateTime = updated.expirationDateTime;
62
+ return this.subscription;
63
+ }
64
+ /**
65
+ * Delete the subscription (stop receiving notifications).
66
+ */
67
+ async unsubscribe() {
68
+ if (!this.subscription) {
69
+ return;
70
+ }
71
+ await this.client.api(`/subscriptions/${this.subscription.id}`).delete();
72
+ this.subscription = undefined;
73
+ }
74
+ /**
75
+ * Get the current subscription status.
76
+ */
77
+ getSubscription() {
78
+ return this.subscription;
79
+ }
80
+ /**
81
+ * Check if subscription is still active (not expired).
82
+ */
83
+ isSubscriptionActive() {
84
+ if (!this.subscription)
85
+ return false;
86
+ return new Date(this.subscription.expirationDateTime) > new Date();
87
+ }
88
+ /**
89
+ * Handle an incoming Graph notification.
90
+ * Call this from your webhook endpoint after validation.
91
+ */
92
+ async handleNotification(notification) {
93
+ for (const item of notification.value) {
94
+ // Validate client state if configured
95
+ if (this.config.clientState && item.clientState !== this.config.clientState) {
96
+ console.warn('Invalid client state in notification, skipping');
97
+ continue;
98
+ }
99
+ // Map change type to event
100
+ let event;
101
+ switch (item.changeType) {
102
+ case 'created':
103
+ event = 'email_received';
104
+ break;
105
+ case 'updated':
106
+ event = 'email_updated';
107
+ break;
108
+ case 'deleted':
109
+ event = 'email_deleted';
110
+ break;
111
+ default:
112
+ console.warn(`Unknown change type: ${item.changeType}`);
113
+ continue;
114
+ }
115
+ const payload = {
116
+ type: TriggerType.WEBHOOK,
117
+ event,
118
+ subscriptionId: item.subscriptionId,
119
+ changeType: item.changeType,
120
+ resource: item.resource,
121
+ resourceData: item.resourceData
122
+ ? {
123
+ '@odata.type': item.resourceData['@odata.type'],
124
+ '@odata.id': item.resourceData['@odata.id'],
125
+ '@odata.etag': item.resourceData['@odata.etag'],
126
+ id: item.resourceData.id,
127
+ }
128
+ : undefined,
129
+ clientState: item.clientState,
130
+ tenantId: item.tenantId,
131
+ };
132
+ // Call matching handlers
133
+ for (const trigger of this.config.triggers) {
134
+ if (trigger.event === event) {
135
+ await trigger.handler(payload);
136
+ }
137
+ }
138
+ }
139
+ }
140
+ /**
141
+ * Check if a request is a validation request from Graph.
142
+ */
143
+ static isValidationRequest(query) {
144
+ return typeof query.validationToken === 'string';
145
+ }
146
+ /**
147
+ * Validate the notification body structure.
148
+ */
149
+ static validateNotification(body) {
150
+ if (!body || typeof body !== 'object')
151
+ return false;
152
+ const notification = body;
153
+ if (!Array.isArray(notification.value))
154
+ return false;
155
+ return notification.value.every((item) => {
156
+ if (!item || typeof item !== 'object')
157
+ return false;
158
+ const entry = item;
159
+ return (typeof entry.subscriptionId === 'string' &&
160
+ typeof entry.changeType === 'string' &&
161
+ typeof entry.resource === 'string');
162
+ });
163
+ }
164
+ }
165
+ /**
166
+ * Express/Fastify-compatible middleware for handling Outlook Graph webhooks.
167
+ *
168
+ * Handles both:
169
+ * - Subscription validation (GET with validationToken)
170
+ * - Notification processing (POST with notification payload)
171
+ */
172
+ export function createOutlookWebhookHandler(trigger) {
173
+ return async (req, res) => {
174
+ try {
175
+ // Handle subscription validation (Microsoft Graph sends GET with validationToken)
176
+ if (req.method === 'GET' || OutlookTrigger.isValidationRequest(req.query)) {
177
+ if (OutlookTrigger.isValidationRequest(req.query)) {
178
+ res.contentType('text/plain');
179
+ res.status(200).send(req.query.validationToken);
180
+ return;
181
+ }
182
+ res.status(400).send('Missing validationToken');
183
+ return;
184
+ }
185
+ // Handle notification
186
+ if (!OutlookTrigger.validateNotification(req.body)) {
187
+ res.status(400).send('Invalid notification format');
188
+ return;
189
+ }
190
+ // Process notification asynchronously (Graph expects quick 202 response)
191
+ setImmediate(() => {
192
+ trigger.handleNotification(req.body).catch((error) => {
193
+ console.error('Error processing notification:', error);
194
+ });
195
+ });
196
+ res.status(202).send('Accepted');
197
+ }
198
+ catch (error) {
199
+ console.error('Outlook webhook error:', error);
200
+ res.status(500).send('Internal error');
201
+ }
202
+ };
203
+ }
204
+ //# sourceMappingURL=outlook-trigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outlook-trigger.js","sourceRoot":"","sources":["../../src/services/outlook-trigger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,237 @@
1
+ import { Client } from '@microsoft/microsoft-graph-client';
2
+ import { SDKInitializer } from '@marktoflow/core';
3
+ export interface OutlookEmail {
4
+ id: string;
5
+ conversationId: string;
6
+ subject: string;
7
+ from: string;
8
+ fromAddress: string;
9
+ to: {
10
+ name: string;
11
+ address: string;
12
+ }[];
13
+ cc?: {
14
+ name: string;
15
+ address: string;
16
+ }[];
17
+ bcc?: {
18
+ name: string;
19
+ address: string;
20
+ }[];
21
+ receivedDateTime: string;
22
+ sentDateTime?: string;
23
+ bodyPreview: string;
24
+ body?: string;
25
+ bodyHtml?: string;
26
+ isRead: boolean;
27
+ hasAttachments: boolean;
28
+ importance: 'low' | 'normal' | 'high';
29
+ categories: string[];
30
+ webLink?: string;
31
+ }
32
+ export interface GetEmailsOptions {
33
+ folder?: string;
34
+ filter?: string;
35
+ select?: string[];
36
+ top?: number;
37
+ skip?: number;
38
+ orderBy?: string;
39
+ search?: string;
40
+ }
41
+ export interface SendEmailOptions {
42
+ to: string | string[] | {
43
+ name?: string;
44
+ address: string;
45
+ }[];
46
+ subject: string;
47
+ body: string;
48
+ bodyType?: 'text' | 'html';
49
+ cc?: string | string[] | {
50
+ name?: string;
51
+ address: string;
52
+ }[];
53
+ bcc?: string | string[] | {
54
+ name?: string;
55
+ address: string;
56
+ }[];
57
+ importance?: 'low' | 'normal' | 'high';
58
+ saveToSentItems?: boolean;
59
+ replyTo?: string | {
60
+ name?: string;
61
+ address: string;
62
+ }[];
63
+ }
64
+ export interface CreateDraftOptions {
65
+ to?: string | string[] | {
66
+ name?: string;
67
+ address: string;
68
+ }[];
69
+ subject?: string;
70
+ body?: string;
71
+ bodyType?: 'text' | 'html';
72
+ cc?: string | string[] | {
73
+ name?: string;
74
+ address: string;
75
+ }[];
76
+ bcc?: string | string[] | {
77
+ name?: string;
78
+ address: string;
79
+ }[];
80
+ importance?: 'low' | 'normal' | 'high';
81
+ }
82
+ export interface CalendarEvent {
83
+ id: string;
84
+ subject: string;
85
+ body?: string;
86
+ bodyHtml?: string;
87
+ start: {
88
+ dateTime: string;
89
+ timeZone: string;
90
+ };
91
+ end: {
92
+ dateTime: string;
93
+ timeZone: string;
94
+ };
95
+ location?: string;
96
+ attendees: {
97
+ name: string;
98
+ address: string;
99
+ type: string;
100
+ }[];
101
+ organizer?: {
102
+ name: string;
103
+ address: string;
104
+ };
105
+ isOnlineMeeting: boolean;
106
+ onlineMeetingUrl?: string;
107
+ webLink?: string;
108
+ }
109
+ export interface GetEventsOptions {
110
+ startDateTime?: string;
111
+ endDateTime?: string;
112
+ top?: number;
113
+ skip?: number;
114
+ filter?: string;
115
+ orderBy?: string;
116
+ }
117
+ export interface CreateEventOptions {
118
+ subject: string;
119
+ body?: string;
120
+ bodyType?: 'text' | 'html';
121
+ start: {
122
+ dateTime: string;
123
+ timeZone?: string;
124
+ };
125
+ end: {
126
+ dateTime: string;
127
+ timeZone?: string;
128
+ };
129
+ location?: string;
130
+ attendees?: (string | {
131
+ name?: string;
132
+ address: string;
133
+ })[];
134
+ isOnlineMeeting?: boolean;
135
+ reminderMinutesBeforeStart?: number;
136
+ }
137
+ export interface OutlookDraft {
138
+ id: string;
139
+ conversationId?: string;
140
+ webLink?: string;
141
+ }
142
+ export interface GetEmailsResult {
143
+ emails: OutlookEmail[];
144
+ nextLink?: string;
145
+ }
146
+ /**
147
+ * Outlook actions for workflow integration (Email + Calendar)
148
+ */
149
+ export declare class OutlookActions {
150
+ private client;
151
+ constructor(client: Client);
152
+ /**
153
+ * Get emails from Outlook mailbox
154
+ */
155
+ getEmails(options?: GetEmailsOptions): Promise<GetEmailsResult>;
156
+ /**
157
+ * Get a specific email by ID
158
+ */
159
+ getEmail(id: string): Promise<OutlookEmail>;
160
+ /**
161
+ * Send an email via Outlook
162
+ */
163
+ sendEmail(options: SendEmailOptions): Promise<void>;
164
+ /**
165
+ * Create a draft email in Outlook
166
+ */
167
+ createDraft(options: CreateDraftOptions): Promise<OutlookDraft>;
168
+ /**
169
+ * Reply to an email
170
+ */
171
+ reply(messageId: string, body: string, bodyType?: 'text' | 'html', replyAll?: boolean): Promise<void>;
172
+ /**
173
+ * Forward an email
174
+ */
175
+ forward(messageId: string, to: string | string[] | {
176
+ name?: string;
177
+ address: string;
178
+ }[], comment?: string): Promise<void>;
179
+ /**
180
+ * Mark an email as read
181
+ */
182
+ markAsRead(id: string): Promise<void>;
183
+ /**
184
+ * Mark an email as unread
185
+ */
186
+ markAsUnread(id: string): Promise<void>;
187
+ /**
188
+ * Move an email to a folder
189
+ */
190
+ moveToFolder(messageId: string, destinationFolderId: string): Promise<void>;
191
+ /**
192
+ * Delete an email (move to deleted items)
193
+ */
194
+ delete(id: string): Promise<void>;
195
+ /**
196
+ * List mail folders
197
+ */
198
+ listFolders(): Promise<{
199
+ id: string;
200
+ displayName: string;
201
+ totalItemCount: number;
202
+ }[]>;
203
+ /**
204
+ * Get calendar events
205
+ */
206
+ getEvents(options?: GetEventsOptions): Promise<CalendarEvent[]>;
207
+ /**
208
+ * Get a specific calendar event by ID
209
+ */
210
+ getEvent(id: string): Promise<CalendarEvent>;
211
+ /**
212
+ * Create a calendar event
213
+ */
214
+ createEvent(options: CreateEventOptions): Promise<CalendarEvent>;
215
+ /**
216
+ * Update a calendar event
217
+ */
218
+ updateEvent(id: string, updates: Partial<CreateEventOptions>): Promise<CalendarEvent>;
219
+ /**
220
+ * Delete a calendar event
221
+ */
222
+ deleteEvent(id: string): Promise<void>;
223
+ /**
224
+ * Accept a meeting invitation
225
+ */
226
+ acceptEvent(id: string, comment?: string, sendResponse?: boolean): Promise<void>;
227
+ /**
228
+ * Decline a meeting invitation
229
+ */
230
+ declineEvent(id: string, comment?: string, sendResponse?: boolean): Promise<void>;
231
+ /**
232
+ * Tentatively accept a meeting invitation
233
+ */
234
+ tentativelyAcceptEvent(id: string, comment?: string, sendResponse?: boolean): Promise<void>;
235
+ }
236
+ export declare const OutlookInitializer: SDKInitializer;
237
+ //# sourceMappingURL=outlook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outlook.d.ts","sourceRoot":"","sources":["../../src/services/outlook.ts"],"names":[],"mappings":"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"}