patchwork-os 0.2.0-beta.6.canary.21 → 0.2.0-beta.6.canary.23

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 (41) hide show
  1. package/dist/connectorRoutes.js +384 -0
  2. package/dist/connectorRoutes.js.map +1 -1
  3. package/dist/connectors/airtable.d.ts +108 -0
  4. package/dist/connectors/airtable.js +396 -0
  5. package/dist/connectors/airtable.js.map +1 -0
  6. package/dist/connectors/connectorRegistry.js +63 -0
  7. package/dist/connectors/connectorRegistry.js.map +1 -1
  8. package/dist/connectors/elasticsearch.d.ts +141 -0
  9. package/dist/connectors/elasticsearch.js +601 -0
  10. package/dist/connectors/elasticsearch.js.map +1 -0
  11. package/dist/connectors/figma.d.ts +130 -0
  12. package/dist/connectors/figma.js +387 -0
  13. package/dist/connectors/figma.js.map +1 -0
  14. package/dist/connectors/gmail.js +9 -0
  15. package/dist/connectors/gmail.js.map +1 -1
  16. package/dist/connectors/googleDrive.d.ts +12 -0
  17. package/dist/connectors/googleDrive.js +27 -0
  18. package/dist/connectors/googleDrive.js.map +1 -1
  19. package/dist/connectors/mongodb.d.ts +139 -0
  20. package/dist/connectors/mongodb.js +455 -0
  21. package/dist/connectors/mongodb.js.map +1 -0
  22. package/dist/connectors/postgres.d.ts +127 -0
  23. package/dist/connectors/postgres.js +512 -0
  24. package/dist/connectors/postgres.js.map +1 -0
  25. package/dist/connectors/redis.d.ts +140 -0
  26. package/dist/connectors/redis.js +571 -0
  27. package/dist/connectors/redis.js.map +1 -0
  28. package/dist/connectors/sendgrid.d.ts +102 -0
  29. package/dist/connectors/sendgrid.js +423 -0
  30. package/dist/connectors/sendgrid.js.map +1 -0
  31. package/dist/connectors/twilio.d.ts +118 -0
  32. package/dist/connectors/twilio.js +475 -0
  33. package/dist/connectors/twilio.js.map +1 -0
  34. package/dist/connectors/webflow.d.ts +118 -0
  35. package/dist/connectors/webflow.js +393 -0
  36. package/dist/connectors/webflow.js.map +1 -0
  37. package/dist/recipes/tools/gmail.js +27 -5
  38. package/dist/recipes/tools/gmail.js.map +1 -1
  39. package/dist/recipes/tools/googleDrive.js +64 -0
  40. package/dist/recipes/tools/googleDrive.js.map +1 -1
  41. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/connectors/redis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * SendGrid connector — outbound transactional email via SendGrid v3 REST API.
3
+ *
4
+ * Auth: Bearer API key (`SG.*`).
5
+ * - Env var: SENDGRID_API_KEY (+ optional SENDGRID_FROM_EMAIL)
6
+ * - Stored: getSecretJsonSync("sendgrid") → SendGridTokens
7
+ *
8
+ * Tools: send, listTemplates, getTemplate, listSenders, getStats
9
+ *
10
+ * Extends BaseConnector for unified auth, retry, rate-limit, error handling.
11
+ */
12
+ import { type AuthContext, BaseConnector, type ConnectorError, type ConnectorStatus } from "./baseConnector.js";
13
+ export interface SendGridTokens {
14
+ apiKey: string;
15
+ fromEmail?: string;
16
+ accountName?: string;
17
+ connected_at: string;
18
+ }
19
+ export interface SendGridTemplate {
20
+ id: string;
21
+ name: string;
22
+ generation: "legacy" | "dynamic";
23
+ updated_at?: string;
24
+ }
25
+ export interface SendGridTemplateListResult {
26
+ result: SendGridTemplate[];
27
+ }
28
+ export interface SendGridVerifiedSender {
29
+ id: number;
30
+ from_email: string;
31
+ from_name?: string;
32
+ verified: boolean;
33
+ }
34
+ export interface SendGridSenderListResult {
35
+ results: SendGridVerifiedSender[];
36
+ }
37
+ export interface SendGridStatsBucket {
38
+ date: string;
39
+ stats: Array<{
40
+ metrics: Record<string, number>;
41
+ name?: string;
42
+ type?: string;
43
+ }>;
44
+ }
45
+ export interface SendGridSendResult {
46
+ messageId: string;
47
+ }
48
+ export declare class SendGridConnector extends BaseConnector {
49
+ readonly providerName = "sendgrid";
50
+ private tokens;
51
+ protected getOAuthConfig(): null;
52
+ authenticate(): Promise<AuthContext>;
53
+ healthCheck(): Promise<{
54
+ ok: boolean;
55
+ error?: ConnectorError;
56
+ }>;
57
+ normalizeError(error: unknown): ConnectorError;
58
+ getStatus(): ConnectorStatus;
59
+ send(params: {
60
+ to: string;
61
+ subject: string;
62
+ text?: string;
63
+ html?: string;
64
+ from?: string;
65
+ }): Promise<SendGridSendResult>;
66
+ listTemplates(params?: {
67
+ limit?: number;
68
+ generations?: "legacy" | "dynamic";
69
+ }): Promise<SendGridTemplateListResult>;
70
+ getTemplate(templateId: string): Promise<SendGridTemplate>;
71
+ listSenders(params?: {
72
+ limit?: number;
73
+ }): Promise<SendGridSenderListResult>;
74
+ getStats(params: {
75
+ startDate: string;
76
+ endDate?: string;
77
+ aggregatedBy?: "day" | "week" | "month";
78
+ }): Promise<SendGridStatsBucket[]>;
79
+ private buildHeaders;
80
+ }
81
+ export declare function loadTokens(): SendGridTokens | null;
82
+ export declare function saveTokens(tokens: SendGridTokens): void;
83
+ export declare function clearTokens(): void;
84
+ export declare function getSendGridConnector(): SendGridConnector;
85
+ export { getSendGridConnector as sendgrid };
86
+ export interface ConnectorHandlerResult {
87
+ status: number;
88
+ body: string;
89
+ contentType?: string;
90
+ }
91
+ /**
92
+ * POST /connections/sendgrid/connect { apiKey, fromEmail? }
93
+ */
94
+ export declare function handleSendGridConnect(body: string): Promise<ConnectorHandlerResult>;
95
+ /**
96
+ * POST /connections/sendgrid/test
97
+ */
98
+ export declare function handleSendGridTest(): Promise<ConnectorHandlerResult>;
99
+ /**
100
+ * DELETE /connections/sendgrid
101
+ */
102
+ export declare function handleSendGridDisconnect(): ConnectorHandlerResult;
@@ -0,0 +1,423 @@
1
+ /**
2
+ * SendGrid connector — outbound transactional email via SendGrid v3 REST API.
3
+ *
4
+ * Auth: Bearer API key (`SG.*`).
5
+ * - Env var: SENDGRID_API_KEY (+ optional SENDGRID_FROM_EMAIL)
6
+ * - Stored: getSecretJsonSync("sendgrid") → SendGridTokens
7
+ *
8
+ * Tools: send, listTemplates, getTemplate, listSenders, getStats
9
+ *
10
+ * Extends BaseConnector for unified auth, retry, rate-limit, error handling.
11
+ */
12
+ import { BaseConnector, } from "./baseConnector.js";
13
+ import { deleteSecretJsonSync, getSecretJsonSync, storeSecretJsonSync, } from "./tokenStorage.js";
14
+ const BASE_URL = "https://api.sendgrid.com";
15
+ // Loose RFC 5322-ish email check — good enough to reject obvious garbage.
16
+ const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
17
+ function isValidEmail(s) {
18
+ return typeof s === "string" && EMAIL_RE.test(s);
19
+ }
20
+ export class SendGridConnector extends BaseConnector {
21
+ providerName = "sendgrid";
22
+ tokens = null;
23
+ getOAuthConfig() {
24
+ return null;
25
+ }
26
+ async authenticate() {
27
+ const tokens = loadTokens();
28
+ if (!tokens) {
29
+ throw new Error("SendGrid not connected. Run: patchwork-os connect sendgrid or set SENDGRID_API_KEY");
30
+ }
31
+ this.tokens = tokens;
32
+ return {
33
+ token: tokens.apiKey,
34
+ scopes: ["mail.send"],
35
+ };
36
+ }
37
+ async healthCheck() {
38
+ try {
39
+ const result = await this.apiCall(async () => {
40
+ const res = await fetch(`${BASE_URL}/v3/scopes`, {
41
+ headers: this.buildHeaders(),
42
+ });
43
+ if (!res.ok)
44
+ throw res;
45
+ return res.json();
46
+ });
47
+ if ("error" in result)
48
+ return { ok: false, error: result.error };
49
+ return { ok: true };
50
+ }
51
+ catch (err) {
52
+ return { ok: false, error: this.normalizeError(err) };
53
+ }
54
+ }
55
+ normalizeError(error) {
56
+ if (error instanceof Response) {
57
+ const s = error.status;
58
+ if (s === 401)
59
+ return {
60
+ code: "auth_expired",
61
+ message: "SendGrid authentication expired — reconnect",
62
+ retryable: false,
63
+ suggestedAction: "patchwork-os connect sendgrid",
64
+ };
65
+ if (s === 403)
66
+ return {
67
+ code: "permission_denied",
68
+ message: "Insufficient SendGrid permissions",
69
+ retryable: false,
70
+ };
71
+ if (s === 404)
72
+ return {
73
+ code: "not_found",
74
+ message: "SendGrid resource not found",
75
+ retryable: false,
76
+ };
77
+ if (s === 413)
78
+ return {
79
+ code: "provider_error",
80
+ message: "SendGrid payload too large",
81
+ retryable: false,
82
+ };
83
+ if (s === 429)
84
+ return {
85
+ code: "rate_limited",
86
+ message: "SendGrid API rate limit exceeded",
87
+ retryable: true,
88
+ suggestedAction: "Wait and retry",
89
+ };
90
+ if (s >= 500)
91
+ return {
92
+ code: "provider_error",
93
+ message: `SendGrid API error: HTTP ${s}`,
94
+ retryable: true,
95
+ };
96
+ return {
97
+ code: "provider_error",
98
+ message: `SendGrid API error: HTTP ${s}`,
99
+ retryable: false,
100
+ };
101
+ }
102
+ if (error instanceof Error) {
103
+ if (error.message.includes("ENOTFOUND") ||
104
+ error.message.includes("ECONNREFUSED")) {
105
+ return {
106
+ code: "network_error",
107
+ message: `Cannot connect to SendGrid: ${error.message}`,
108
+ retryable: true,
109
+ };
110
+ }
111
+ }
112
+ return {
113
+ code: "provider_error",
114
+ message: error instanceof Error ? error.message : String(error),
115
+ retryable: false,
116
+ };
117
+ }
118
+ getStatus() {
119
+ const tokens = loadTokens();
120
+ return {
121
+ id: "sendgrid",
122
+ status: tokens ? "connected" : "disconnected",
123
+ lastSync: tokens?.connected_at,
124
+ workspace: tokens?.accountName
125
+ ? `SendGrid (${tokens.accountName})`
126
+ : tokens?.fromEmail
127
+ ? `SendGrid <${tokens.fromEmail}>`
128
+ : undefined,
129
+ };
130
+ }
131
+ // ── API Methods ────────────────────────────────────────────────────────────
132
+ async send(params) {
133
+ if (!isValidEmail(params.to)) {
134
+ throw new Error("send: `to` must be a valid email address");
135
+ }
136
+ if (typeof params.subject !== "string" || !params.subject.trim()) {
137
+ throw new Error("send: `subject` is required");
138
+ }
139
+ if (!params.text && !params.html) {
140
+ throw new Error("send: one of `text` or `html` is required");
141
+ }
142
+ const tokens = this.tokens ?? loadTokens();
143
+ const from = params.from ?? tokens?.fromEmail;
144
+ if (!from) {
145
+ throw new Error("send: no `from` provided and no fromEmail stored — pass `from` or reconnect with a verified sender");
146
+ }
147
+ if (!isValidEmail(from)) {
148
+ throw new Error("send: `from` must be a valid email address");
149
+ }
150
+ const content = [];
151
+ if (params.text)
152
+ content.push({ type: "text/plain", value: params.text });
153
+ if (params.html)
154
+ content.push({ type: "text/html", value: params.html });
155
+ const body = {
156
+ personalizations: [{ to: [{ email: params.to }] }],
157
+ from: { email: from },
158
+ subject: params.subject,
159
+ content,
160
+ };
161
+ const result = await this.apiCall(async () => {
162
+ const res = await fetch(`${BASE_URL}/v3/mail/send`, {
163
+ method: "POST",
164
+ headers: {
165
+ ...this.buildHeaders(),
166
+ "Content-Type": "application/json",
167
+ },
168
+ body: JSON.stringify(body),
169
+ });
170
+ if (!res.ok)
171
+ throw res;
172
+ // SendGrid returns 202 + X-Message-Id header on success, empty body.
173
+ const messageId = res.headers.get("x-message-id") ?? "";
174
+ return { messageId };
175
+ });
176
+ if ("error" in result)
177
+ throw new Error(result.error.message);
178
+ return result.data;
179
+ }
180
+ async listTemplates(params = {}) {
181
+ const result = await this.apiCall(async () => {
182
+ const qs = new URLSearchParams();
183
+ if (params.limit)
184
+ qs.set("page_size", String(params.limit));
185
+ if (params.generations)
186
+ qs.set("generations", params.generations);
187
+ const url = `${BASE_URL}/v3/templates${qs.toString() ? `?${qs}` : ""}`;
188
+ const res = await fetch(url, { headers: this.buildHeaders() });
189
+ if (!res.ok)
190
+ throw res;
191
+ return res.json();
192
+ });
193
+ if ("error" in result)
194
+ throw new Error(result.error.message);
195
+ return result.data;
196
+ }
197
+ async getTemplate(templateId) {
198
+ if (!templateId || typeof templateId !== "string") {
199
+ throw new Error("getTemplate: templateId is required");
200
+ }
201
+ const result = await this.apiCall(async () => {
202
+ const res = await fetch(`${BASE_URL}/v3/templates/${encodeURIComponent(templateId)}`, { headers: this.buildHeaders() });
203
+ if (!res.ok)
204
+ throw res;
205
+ return res.json();
206
+ });
207
+ if ("error" in result)
208
+ throw new Error(result.error.message);
209
+ return result.data;
210
+ }
211
+ async listSenders(params = {}) {
212
+ const result = await this.apiCall(async () => {
213
+ const qs = new URLSearchParams();
214
+ if (params.limit)
215
+ qs.set("limit", String(params.limit));
216
+ const url = `${BASE_URL}/v3/verified_senders${qs.toString() ? `?${qs}` : ""}`;
217
+ const res = await fetch(url, { headers: this.buildHeaders() });
218
+ if (!res.ok)
219
+ throw res;
220
+ return res.json();
221
+ });
222
+ if ("error" in result)
223
+ throw new Error(result.error.message);
224
+ return result.data;
225
+ }
226
+ async getStats(params) {
227
+ if (!params.startDate) {
228
+ throw new Error("getStats: startDate is required (YYYY-MM-DD)");
229
+ }
230
+ const result = await this.apiCall(async () => {
231
+ const qs = new URLSearchParams();
232
+ qs.set("start_date", params.startDate);
233
+ if (params.endDate)
234
+ qs.set("end_date", params.endDate);
235
+ if (params.aggregatedBy)
236
+ qs.set("aggregated_by", params.aggregatedBy);
237
+ const res = await fetch(`${BASE_URL}/v3/stats?${qs}`, {
238
+ headers: this.buildHeaders(),
239
+ });
240
+ if (!res.ok)
241
+ throw res;
242
+ return res.json();
243
+ });
244
+ if ("error" in result)
245
+ throw new Error(result.error.message);
246
+ return result.data;
247
+ }
248
+ // ── Helpers ────────────────────────────────────────────────────────────────
249
+ buildHeaders() {
250
+ const key = this.tokens?.apiKey ?? loadTokens()?.apiKey ?? "";
251
+ return {
252
+ Authorization: `Bearer ${key}`,
253
+ Accept: "application/json",
254
+ };
255
+ }
256
+ }
257
+ // ── Token persistence ────────────────────────────────────────────────────────
258
+ export function loadTokens() {
259
+ const envKey = process.env.SENDGRID_API_KEY;
260
+ if (envKey) {
261
+ return {
262
+ apiKey: envKey,
263
+ fromEmail: process.env.SENDGRID_FROM_EMAIL,
264
+ connected_at: new Date().toISOString(),
265
+ };
266
+ }
267
+ return getSecretJsonSync("sendgrid");
268
+ }
269
+ export function saveTokens(tokens) {
270
+ storeSecretJsonSync("sendgrid", tokens);
271
+ }
272
+ export function clearTokens() {
273
+ try {
274
+ deleteSecretJsonSync("sendgrid");
275
+ }
276
+ catch {
277
+ // ignore
278
+ }
279
+ }
280
+ // ── Singleton instance ───────────────────────────────────────────────────────
281
+ let _instance = null;
282
+ function resetSendGridConnector() {
283
+ _instance = null;
284
+ }
285
+ export function getSendGridConnector() {
286
+ if (!_instance) {
287
+ _instance = new SendGridConnector();
288
+ }
289
+ return _instance;
290
+ }
291
+ export { getSendGridConnector as sendgrid };
292
+ /**
293
+ * POST /connections/sendgrid/connect { apiKey, fromEmail? }
294
+ */
295
+ export async function handleSendGridConnect(body) {
296
+ let apiKey;
297
+ let fromEmail;
298
+ try {
299
+ const parsed = JSON.parse(body);
300
+ if (typeof parsed.apiKey !== "string" || !parsed.apiKey) {
301
+ return {
302
+ status: 400,
303
+ contentType: "application/json",
304
+ body: JSON.stringify({ ok: false, error: "apiKey is required" }),
305
+ };
306
+ }
307
+ apiKey = parsed.apiKey;
308
+ if (parsed.fromEmail !== undefined) {
309
+ if (typeof parsed.fromEmail !== "string" ||
310
+ !isValidEmail(parsed.fromEmail)) {
311
+ return {
312
+ status: 400,
313
+ contentType: "application/json",
314
+ body: JSON.stringify({
315
+ ok: false,
316
+ error: "fromEmail must be a valid email address",
317
+ }),
318
+ };
319
+ }
320
+ fromEmail = parsed.fromEmail;
321
+ }
322
+ }
323
+ catch {
324
+ return {
325
+ status: 400,
326
+ contentType: "application/json",
327
+ body: JSON.stringify({ ok: false, error: "Invalid JSON body" }),
328
+ };
329
+ }
330
+ try {
331
+ const res = await fetch(`${BASE_URL}/v3/user/profile`, {
332
+ headers: {
333
+ Authorization: `Bearer ${apiKey}`,
334
+ Accept: "application/json",
335
+ },
336
+ });
337
+ if (!res.ok) {
338
+ return {
339
+ status: 401,
340
+ contentType: "application/json",
341
+ body: JSON.stringify({
342
+ ok: false,
343
+ error: `Credentials rejected by SendGrid (HTTP ${res.status}) — check apiKey`,
344
+ }),
345
+ };
346
+ }
347
+ const profile = (await res.json());
348
+ const accountName = profile.username ?? undefined;
349
+ const tokens = {
350
+ apiKey,
351
+ fromEmail,
352
+ accountName,
353
+ connected_at: new Date().toISOString(),
354
+ };
355
+ saveTokens(tokens);
356
+ resetSendGridConnector();
357
+ return {
358
+ status: 200,
359
+ contentType: "application/json",
360
+ body: JSON.stringify({
361
+ ok: true,
362
+ accountName,
363
+ fromEmail,
364
+ connectedAt: tokens.connected_at,
365
+ }),
366
+ };
367
+ }
368
+ catch (err) {
369
+ return {
370
+ status: 500,
371
+ contentType: "application/json",
372
+ body: JSON.stringify({
373
+ ok: false,
374
+ error: err instanceof Error ? err.message : String(err),
375
+ }),
376
+ };
377
+ }
378
+ }
379
+ /**
380
+ * POST /connections/sendgrid/test
381
+ */
382
+ export async function handleSendGridTest() {
383
+ const tokens = loadTokens();
384
+ if (!tokens) {
385
+ return {
386
+ status: 400,
387
+ contentType: "application/json",
388
+ body: JSON.stringify({ ok: false, error: "SendGrid not connected" }),
389
+ };
390
+ }
391
+ try {
392
+ const connector = getSendGridConnector();
393
+ const check = await connector.healthCheck();
394
+ return {
395
+ status: check.ok ? 200 : 401,
396
+ contentType: "application/json",
397
+ body: JSON.stringify(check.ok ? { ok: true } : { ok: false, error: check.error?.message }),
398
+ };
399
+ }
400
+ catch (err) {
401
+ return {
402
+ status: 500,
403
+ contentType: "application/json",
404
+ body: JSON.stringify({
405
+ ok: false,
406
+ error: err instanceof Error ? err.message : String(err),
407
+ }),
408
+ };
409
+ }
410
+ }
411
+ /**
412
+ * DELETE /connections/sendgrid
413
+ */
414
+ export function handleSendGridDisconnect() {
415
+ clearTokens();
416
+ resetSendGridConnector();
417
+ return {
418
+ status: 200,
419
+ contentType: "application/json",
420
+ body: JSON.stringify({ ok: true }),
421
+ };
422
+ }
423
+ //# sourceMappingURL=sendgrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendgrid.js","sourceRoot":"","sources":["../../src/connectors/sendgrid.ts"],"names":[],"mappings":"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"}