opensentinel 2.1.1 → 3.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.
- package/README.md +354 -283
- package/dist/archiver-AVNBYCKQ.js +15340 -0
- package/dist/archiver-AVNBYCKQ.js.map +1 -0
- package/dist/audit-logger-OBPR7CRO.js +22 -0
- package/dist/auth-UOX5K2BE.js +18 -0
- package/dist/autonomy-ZXDBDQUJ.js +86 -0
- package/dist/autonomy-ZXDBDQUJ.js.map +1 -0
- package/dist/aws-s3-Q4LLZZPD.js +146 -0
- package/dist/aws-s3-Q4LLZZPD.js.map +1 -0
- package/dist/backup-restore-PZ7CYYB7.js +16 -0
- package/dist/blocks-R3PODY47.js +23 -0
- package/dist/bot-QRARP4UN.js +36 -0
- package/dist/brain-7XLLM3KC.js +56 -0
- package/dist/camera-monitor-M5CYKUU4.js +335 -0
- package/dist/camera-monitor-M5CYKUU4.js.map +1 -0
- package/dist/{charts-MMXM6BWW.js → charts-V7ARZNKF.js} +2 -2
- package/dist/chunk-22VGGA7S.js +330 -0
- package/dist/chunk-22VGGA7S.js.map +1 -0
- package/dist/chunk-35WYTA3C.js +382 -0
- package/dist/chunk-35WYTA3C.js.map +1 -0
- package/dist/chunk-3E2PSU2C.js +146 -0
- package/dist/chunk-3E2PSU2C.js.map +1 -0
- package/dist/{chunk-L3F43VPB.js → chunk-4GLYY4NN.js} +2 -2
- package/dist/{chunk-L3F43VPB.js.map → chunk-4GLYY4NN.js.map} +1 -1
- package/dist/{chunk-L3PDU3XN.js → chunk-4UOE5TUZ.js} +4 -4
- package/dist/{chunk-6SNHU3CY.js → chunk-66OJ3WB4.js} +2 -2
- package/dist/chunk-6KONMXQ6.js +297 -0
- package/dist/chunk-6KONMXQ6.js.map +1 -0
- package/dist/chunk-6PMVAAA7.js +196 -0
- package/dist/chunk-6PMVAAA7.js.map +1 -0
- package/dist/chunk-766ASQWE.js +32620 -0
- package/dist/chunk-766ASQWE.js.map +1 -0
- package/dist/chunk-7WQO5J2M.js +29 -0
- package/dist/chunk-7WQO5J2M.js.map +1 -0
- package/dist/chunk-APHSRMBS.js +148 -0
- package/dist/chunk-APHSRMBS.js.map +1 -0
- package/dist/{chunk-4LVWXUNC.js → chunk-AYUKPTSM.js} +57 -39
- package/dist/chunk-AYUKPTSM.js.map +1 -0
- package/dist/chunk-BIPYADGB.js +84 -0
- package/dist/chunk-BIPYADGB.js.map +1 -0
- package/dist/chunk-BRBWNV65.js +457 -0
- package/dist/chunk-BRBWNV65.js.map +1 -0
- package/dist/chunk-BXZ6EA52.js +382 -0
- package/dist/chunk-BXZ6EA52.js.map +1 -0
- package/dist/chunk-EVE7MIIY.js +290 -0
- package/dist/chunk-EVE7MIIY.js.map +1 -0
- package/dist/chunk-F3TTNID2.js +138 -0
- package/dist/chunk-F3TTNID2.js.map +1 -0
- package/dist/chunk-H5RQOFO2.js +190 -0
- package/dist/chunk-H5RQOFO2.js.map +1 -0
- package/dist/chunk-HN3F4WSW.js +145 -0
- package/dist/chunk-HN3F4WSW.js.map +1 -0
- package/dist/{chunk-6DRDKB45.js → chunk-I6BDYQIG.js} +20 -9
- package/dist/chunk-I6BDYQIG.js.map +1 -0
- package/dist/chunk-IZJMVV7O.js +347 -0
- package/dist/chunk-IZJMVV7O.js.map +1 -0
- package/dist/chunk-KM22GV7G.js +211 -0
- package/dist/chunk-KM22GV7G.js.map +1 -0
- package/dist/chunk-MGFBLVR7.js +103 -0
- package/dist/chunk-MGFBLVR7.js.map +1 -0
- package/dist/chunk-MQJ2ECQT.js +228 -0
- package/dist/chunk-MQJ2ECQT.js.map +1 -0
- package/dist/{chunk-F6QUZQGI.js → chunk-MXAPLSJ5.js} +2 -2
- package/dist/{chunk-GK3E2I7A.js → chunk-NHMBTUMW.js} +2 -2
- package/dist/chunk-NPRTSZIF.js +131 -0
- package/dist/chunk-NPRTSZIF.js.map +1 -0
- package/dist/chunk-O7IH7JTI.js +1898 -0
- package/dist/chunk-O7IH7JTI.js.map +1 -0
- package/dist/chunk-OCVQGBJK.js +293 -0
- package/dist/chunk-OCVQGBJK.js.map +1 -0
- package/dist/chunk-P6QINGFL.js +332 -0
- package/dist/chunk-P6QINGFL.js.map +1 -0
- package/dist/chunk-PHDZKPNE.js +91 -0
- package/dist/chunk-PHDZKPNE.js.map +1 -0
- package/dist/chunk-PLDDJCW6.js +49 -0
- package/dist/chunk-PTGTGXV2.js +164 -0
- package/dist/chunk-PTGTGXV2.js.map +1 -0
- package/dist/chunk-REMIY4U2.js +171 -0
- package/dist/chunk-REMIY4U2.js.map +1 -0
- package/dist/chunk-RZ4YESBG.js +141 -0
- package/dist/chunk-RZ4YESBG.js.map +1 -0
- package/dist/chunk-SAX5MHK4.js +111 -0
- package/dist/chunk-SAX5MHK4.js.map +1 -0
- package/dist/{chunk-GVJVEWHI.js → chunk-SJSUSJ47.js} +2 -2
- package/dist/chunk-SPPMCAKG.js +777 -0
- package/dist/chunk-SPPMCAKG.js.map +1 -0
- package/dist/chunk-SVAPX2XN.js +2441 -0
- package/dist/chunk-SVAPX2XN.js.map +1 -0
- package/dist/chunk-TVEWKIK3.js +452 -0
- package/dist/chunk-TVEWKIK3.js.map +1 -0
- package/dist/{chunk-HH2HBTQM.js → chunk-TYAGMJNV.js} +5 -5
- package/dist/{chunk-JXUP2X7V.js → chunk-VEHFVBLI.js} +2 -2
- package/dist/chunk-VNX5GMTN.js +128 -0
- package/dist/chunk-VNX5GMTN.js.map +1 -0
- package/dist/chunk-VRD5CYRL.js +1568 -0
- package/dist/chunk-VRD5CYRL.js.map +1 -0
- package/dist/chunk-WLUHNG6X.js +122 -0
- package/dist/chunk-WLUHNG6X.js.map +1 -0
- package/dist/chunk-WRAKK6K6.js +265 -0
- package/dist/chunk-WRAKK6K6.js.map +1 -0
- package/dist/chunk-XKYRH4FM.js +681 -0
- package/dist/chunk-XKYRH4FM.js.map +1 -0
- package/dist/{chunk-GUBEEYDW.js → chunk-XMCVRVTF.js} +2 -2
- package/dist/{chunk-GUBEEYDW.js.map → chunk-XMCVRVTF.js.map} +1 -1
- package/dist/chunk-ZLZKF2PM.js +310 -0
- package/dist/chunk-ZLZKF2PM.js.map +1 -0
- package/dist/cli.js +5 -1
- package/dist/cli.js.map +1 -1
- package/dist/client-ZQSFPMOB.js +21 -0
- package/dist/clipboard-manager-TEO2GEDN.js +24 -0
- package/dist/commands/setup.js +3 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/start.js +3 -3
- package/dist/commands/status.js +2 -2
- package/dist/commands/stop.js +2 -2
- package/dist/commands/utils.js +2 -2
- package/dist/cron-explain-HHQKPD3M.js +16 -0
- package/dist/crypto-4AP47IKC.js +14 -0
- package/dist/crypto-4AP47IKC.js.map +1 -0
- package/dist/databases-37X4CI2Y.js +21 -0
- package/dist/databases-37X4CI2Y.js.map +1 -0
- package/dist/discord-B3HUPGQ6.js +70 -0
- package/dist/discord-B3HUPGQ6.js.map +1 -0
- package/dist/dist-UISMLMFN.js +21847 -0
- package/dist/dist-UISMLMFN.js.map +1 -0
- package/dist/email-K7LO2IPB.js +268 -0
- package/dist/email-K7LO2IPB.js.map +1 -0
- package/dist/enhanced-retrieval-DNLLEM4Z.js +753 -0
- package/dist/enhanced-retrieval-DNLLEM4Z.js.map +1 -0
- package/dist/enrichment-pipeline-MNHNW65K.js +13 -0
- package/dist/enrichment-pipeline-MNHNW65K.js.map +1 -0
- package/dist/entity-resolution-Y3IUWEAT.js +24 -0
- package/dist/entity-resolution-Y3IUWEAT.js.map +1 -0
- package/dist/env-IWXUVTCB.js +12 -0
- package/dist/env-IWXUVTCB.js.map +1 -0
- package/dist/google-workspace-DKWUVNGC.js +169 -0
- package/dist/google-workspace-DKWUVNGC.js.map +1 -0
- package/dist/hash-tool-ULQYD7B5.js +22 -0
- package/dist/hash-tool-ULQYD7B5.js.map +1 -0
- package/dist/heartbeat-monitor-GCISLXI3.js +22 -0
- package/dist/heartbeat-monitor-GCISLXI3.js.map +1 -0
- package/dist/image-generation-OSU7FP6F.js +486 -0
- package/dist/image-generation-OSU7FP6F.js.map +1 -0
- package/dist/imessage-NGA2XF2V.js +35 -0
- package/dist/imessage-NGA2XF2V.js.map +1 -0
- package/dist/inbox-summarizer-NRI4S7IF.js +47 -0
- package/dist/inbox-summarizer-NRI4S7IF.js.map +1 -0
- package/dist/incident-response-C5J7Q6DT.js +244 -0
- package/dist/incident-response-C5J7Q6DT.js.map +1 -0
- package/dist/inventory-manager-352OHXWD.js +24 -0
- package/dist/inventory-manager-352OHXWD.js.map +1 -0
- package/dist/jira-GSGDBMIG.js +199 -0
- package/dist/jira-GSGDBMIG.js.map +1 -0
- package/dist/json-tool-QE2SYHEG.js +26 -0
- package/dist/json-tool-QE2SYHEG.js.map +1 -0
- package/dist/key-rotation-DPHU4ZTB.js +18 -0
- package/dist/key-rotation-DPHU4ZTB.js.map +1 -0
- package/dist/lib.d.ts +603 -11
- package/dist/lib.js +161 -35
- package/dist/lib.js.map +1 -1
- package/dist/mailchimp-KKNF6QJ7.js +152 -0
- package/dist/mailchimp-KKNF6QJ7.js.map +1 -0
- package/dist/matrix-QVHG76I7.js +279 -0
- package/dist/matrix-QVHG76I7.js.map +1 -0
- package/dist/{mcp-LS7Q3Z5W.js → mcp-3JI6W7ZE.js} +3 -3
- package/dist/mcp-3JI6W7ZE.js.map +1 -0
- package/dist/microsoft365-UCBKJHNX.js +164 -0
- package/dist/microsoft365-UCBKJHNX.js.map +1 -0
- package/dist/ocr-AC7NPX33.js +22 -0
- package/dist/ocr-AC7NPX33.js.map +1 -0
- package/dist/ollama-BOAMSPLJ.js +8 -0
- package/dist/ollama-BOAMSPLJ.js.map +1 -0
- package/dist/pages-MI523RB7.js +26 -0
- package/dist/pages-MI523RB7.js.map +1 -0
- package/dist/pair-JDFTERIK.js +24 -0
- package/dist/pair-JDFTERIK.js.map +1 -0
- package/dist/pairing-IFQYCPNS.js +10 -0
- package/dist/pairing-IFQYCPNS.js.map +1 -0
- package/dist/pdf-ALQVOEJR.js +17 -0
- package/dist/pdf-ALQVOEJR.js.map +1 -0
- package/dist/presentations-DSV5IHG5.js +1002 -0
- package/dist/presentations-DSV5IHG5.js.map +1 -0
- package/dist/prometheus-JNT2BD4L.js +10 -0
- package/dist/prometheus-JNT2BD4L.js.map +1 -0
- package/dist/providers-J4LYPHDR.js +19 -0
- package/dist/providers-J4LYPHDR.js.map +1 -0
- package/dist/qr-code-WIX4PB4U.js +16 -0
- package/dist/qr-code-WIX4PB4U.js.map +1 -0
- package/dist/quickbooks-XB4NII2S.js +190 -0
- package/dist/quickbooks-XB4NII2S.js.map +1 -0
- package/dist/regex-tool-W4ABRKGK.js +24 -0
- package/dist/regex-tool-W4ABRKGK.js.map +1 -0
- package/dist/scheduler-VK4WFERV.js +63 -0
- package/dist/scheduler-VK4WFERV.js.map +1 -0
- package/dist/search-BCLBO5E3.js +25 -0
- package/dist/search-BCLBO5E3.js.map +1 -0
- package/dist/sendgrid-RNXCAFKM.js +152 -0
- package/dist/sendgrid-RNXCAFKM.js.map +1 -0
- package/dist/shopify-NCXYJB4R.js +171 -0
- package/dist/shopify-NCXYJB4R.js.map +1 -0
- package/dist/signal-6CGDFYL2.js +35 -0
- package/dist/signal-6CGDFYL2.js.map +1 -0
- package/dist/slack-IZQWIKOH.js +75 -0
- package/dist/slack-IZQWIKOH.js.map +1 -0
- package/dist/sms-M3JIOTCW.js +23 -0
- package/dist/sms-M3JIOTCW.js.map +1 -0
- package/dist/{src-K7GASHRH.js → src-VYUE6LRA.js} +138 -32
- package/dist/src-VYUE6LRA.js.map +1 -0
- package/dist/stocks-XXWBPOCU.js +14 -0
- package/dist/stocks-XXWBPOCU.js.map +1 -0
- package/dist/text-transform-6SGUA5Z4.js +22 -0
- package/dist/text-transform-6SGUA5Z4.js.map +1 -0
- package/dist/tools-2RLEI2N6.js +38 -0
- package/dist/tools-2RLEI2N6.js.map +1 -0
- package/dist/tunnel-IWMXUML4.js +301 -0
- package/dist/tunnel-IWMXUML4.js.map +1 -0
- package/dist/twilio-53GEW5JT.js +139 -0
- package/dist/twilio-53GEW5JT.js.map +1 -0
- package/dist/unit-converter-ZYXMEZOE.js +14 -0
- package/dist/unit-converter-ZYXMEZOE.js.map +1 -0
- package/dist/whatsapp-LFX6YKCM.js +35 -0
- package/dist/whatsapp-LFX6YKCM.js.map +1 -0
- package/dist/word-document-7B6SJMAY.js +902 -0
- package/dist/word-document-7B6SJMAY.js.map +1 -0
- package/dist/xero-QYO66D45.js +162 -0
- package/dist/xero-QYO66D45.js.map +1 -0
- package/dist/zapier-webhook-TBZ5YF2A.js +106 -0
- package/dist/zapier-webhook-TBZ5YF2A.js.map +1 -0
- package/drizzle/0002_mushy_master_mold.sql +140 -0
- package/drizzle/meta/0002_snapshot.json +3637 -0
- package/drizzle/meta/_journal.json +7 -0
- package/package.json +100 -98
- package/dist/bot-KJ26BG56.js +0 -15
- package/dist/chunk-4LVWXUNC.js.map +0 -1
- package/dist/chunk-4TG2IG5K.js +0 -5249
- package/dist/chunk-4TG2IG5K.js.map +0 -1
- package/dist/chunk-6DRDKB45.js.map +0 -1
- package/dist/chunk-CI6Q63MM.js +0 -1613
- package/dist/chunk-CI6Q63MM.js.map +0 -1
- package/dist/chunk-KHNYJY2Z.js +0 -178
- package/dist/chunk-KHNYJY2Z.js.map +0 -1
- package/dist/chunk-NSBPE2FW.js +0 -17
- package/dist/discord-ZOJFTVTB.js +0 -49
- package/dist/imessage-JFRB6EJ7.js +0 -14
- package/dist/scheduler-EZ7CZMCS.js +0 -42
- package/dist/signal-T3MCSULM.js +0 -14
- package/dist/slack-N2M4FHAJ.js +0 -54
- package/dist/src-K7GASHRH.js.map +0 -1
- package/dist/tools-24GZHYRF.js +0 -16
- package/dist/whatsapp-VCRUPAO5.js +0 -14
- /package/dist/{bot-KJ26BG56.js.map → audit-logger-OBPR7CRO.js.map} +0 -0
- /package/dist/{chunk-NSBPE2FW.js.map → auth-UOX5K2BE.js.map} +0 -0
- /package/dist/{discord-ZOJFTVTB.js.map → backup-restore-PZ7CYYB7.js.map} +0 -0
- /package/dist/{imessage-JFRB6EJ7.js.map → blocks-R3PODY47.js.map} +0 -0
- /package/dist/{mcp-LS7Q3Z5W.js.map → bot-QRARP4UN.js.map} +0 -0
- /package/dist/{scheduler-EZ7CZMCS.js.map → brain-7XLLM3KC.js.map} +0 -0
- /package/dist/{charts-MMXM6BWW.js.map → charts-V7ARZNKF.js.map} +0 -0
- /package/dist/{chunk-L3PDU3XN.js.map → chunk-4UOE5TUZ.js.map} +0 -0
- /package/dist/{chunk-6SNHU3CY.js.map → chunk-66OJ3WB4.js.map} +0 -0
- /package/dist/{chunk-F6QUZQGI.js.map → chunk-MXAPLSJ5.js.map} +0 -0
- /package/dist/{chunk-GK3E2I7A.js.map → chunk-NHMBTUMW.js.map} +0 -0
- /package/dist/{signal-T3MCSULM.js.map → chunk-PLDDJCW6.js.map} +0 -0
- /package/dist/{chunk-GVJVEWHI.js.map → chunk-SJSUSJ47.js.map} +0 -0
- /package/dist/{chunk-HH2HBTQM.js.map → chunk-TYAGMJNV.js.map} +0 -0
- /package/dist/{chunk-JXUP2X7V.js.map → chunk-VEHFVBLI.js.map} +0 -0
- /package/dist/{slack-N2M4FHAJ.js.map → client-ZQSFPMOB.js.map} +0 -0
- /package/dist/{tools-24GZHYRF.js.map → clipboard-manager-TEO2GEDN.js.map} +0 -0
- /package/dist/{whatsapp-VCRUPAO5.js.map → cron-explain-HHQKPD3M.js.map} +0 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BaseAdapter
|
|
3
|
+
} from "./chunk-7WQO5J2M.js";
|
|
4
|
+
import "./chunk-PLDDJCW6.js";
|
|
5
|
+
|
|
6
|
+
// src/core/adapters/adapters/sendgrid.ts
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
var SendGridAdapter = class extends BaseAdapter {
|
|
9
|
+
metadata = {
|
|
10
|
+
name: "SendGrid",
|
|
11
|
+
slug: "sendgrid",
|
|
12
|
+
displayName: "SendGrid",
|
|
13
|
+
description: "Send transactional and marketing emails, manage contacts, and track email engagement with SendGrid",
|
|
14
|
+
category: "email",
|
|
15
|
+
authType: "api_key"
|
|
16
|
+
};
|
|
17
|
+
async authenticate(credentials) {
|
|
18
|
+
return {
|
|
19
|
+
accessToken: credentials.apiKey || credentials.accessToken || "",
|
|
20
|
+
metadata: {
|
|
21
|
+
fromEmail: credentials.fromEmail,
|
|
22
|
+
fromName: credentials.fromName
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
actions = {
|
|
27
|
+
sendEmail: {
|
|
28
|
+
name: "Send Email",
|
|
29
|
+
description: "Send a transactional email via SendGrid",
|
|
30
|
+
inputSchema: z.object({
|
|
31
|
+
to: z.string().email(),
|
|
32
|
+
subject: z.string(),
|
|
33
|
+
htmlContent: z.string(),
|
|
34
|
+
textContent: z.string().optional(),
|
|
35
|
+
from: z.string().email().optional(),
|
|
36
|
+
fromName: z.string().optional(),
|
|
37
|
+
replyTo: z.string().email().optional(),
|
|
38
|
+
cc: z.array(z.string().email()).optional(),
|
|
39
|
+
bcc: z.array(z.string().email()).optional()
|
|
40
|
+
}),
|
|
41
|
+
outputSchema: z.object({ statusCode: z.number(), messageId: z.string() }),
|
|
42
|
+
execute: async (input, auth) => {
|
|
43
|
+
const { to, subject, htmlContent, textContent, from, fromName, replyTo, cc, bcc } = input;
|
|
44
|
+
const senderEmail = from || auth.metadata?.fromEmail || "";
|
|
45
|
+
const senderName = fromName || auth.metadata?.fromName || "";
|
|
46
|
+
const personalizations = {
|
|
47
|
+
to: [{ email: to }]
|
|
48
|
+
};
|
|
49
|
+
if (cc) personalizations.cc = cc.map((email) => ({ email }));
|
|
50
|
+
if (bcc) personalizations.bcc = bcc.map((email) => ({ email }));
|
|
51
|
+
const payload = {
|
|
52
|
+
personalizations: [personalizations],
|
|
53
|
+
from: { email: senderEmail, name: senderName },
|
|
54
|
+
subject,
|
|
55
|
+
content: [
|
|
56
|
+
...textContent ? [{ type: "text/plain", value: textContent }] : [],
|
|
57
|
+
{ type: "text/html", value: htmlContent }
|
|
58
|
+
]
|
|
59
|
+
};
|
|
60
|
+
if (replyTo) payload.reply_to = { email: replyTo };
|
|
61
|
+
const response = await this.makeRequest(
|
|
62
|
+
"https://api.sendgrid.com/v3/mail/send",
|
|
63
|
+
{ method: "POST", body: JSON.stringify(payload), auth }
|
|
64
|
+
);
|
|
65
|
+
return {
|
|
66
|
+
statusCode: response.status,
|
|
67
|
+
messageId: response.headers.get("X-Message-Id") || ""
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
sendTemplate: {
|
|
72
|
+
name: "Send Template Email",
|
|
73
|
+
description: "Send an email using a SendGrid dynamic template",
|
|
74
|
+
inputSchema: z.object({
|
|
75
|
+
to: z.string().email(),
|
|
76
|
+
templateId: z.string(),
|
|
77
|
+
dynamicTemplateData: z.record(z.unknown()),
|
|
78
|
+
from: z.string().email().optional(),
|
|
79
|
+
fromName: z.string().optional()
|
|
80
|
+
}),
|
|
81
|
+
outputSchema: z.object({ statusCode: z.number(), messageId: z.string() }),
|
|
82
|
+
execute: async (input, auth) => {
|
|
83
|
+
const { to, templateId, dynamicTemplateData, from, fromName } = input;
|
|
84
|
+
const senderEmail = from || auth.metadata?.fromEmail || "";
|
|
85
|
+
const senderName = fromName || auth.metadata?.fromName || "";
|
|
86
|
+
const payload = {
|
|
87
|
+
personalizations: [{ to: [{ email: to }], dynamic_template_data: dynamicTemplateData }],
|
|
88
|
+
from: { email: senderEmail, name: senderName },
|
|
89
|
+
template_id: templateId
|
|
90
|
+
};
|
|
91
|
+
const response = await this.makeRequest(
|
|
92
|
+
"https://api.sendgrid.com/v3/mail/send",
|
|
93
|
+
{ method: "POST", body: JSON.stringify(payload), auth }
|
|
94
|
+
);
|
|
95
|
+
return {
|
|
96
|
+
statusCode: response.status,
|
|
97
|
+
messageId: response.headers.get("X-Message-Id") || ""
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
addContact: {
|
|
102
|
+
name: "Add Contact",
|
|
103
|
+
description: "Add or update a contact in SendGrid",
|
|
104
|
+
inputSchema: z.object({
|
|
105
|
+
email: z.string().email(),
|
|
106
|
+
firstName: z.string().optional(),
|
|
107
|
+
lastName: z.string().optional(),
|
|
108
|
+
listIds: z.array(z.string()).optional(),
|
|
109
|
+
customFields: z.record(z.string()).optional()
|
|
110
|
+
}),
|
|
111
|
+
outputSchema: z.object({ jobId: z.string() }),
|
|
112
|
+
execute: async (input, auth) => {
|
|
113
|
+
const { email, firstName, lastName, listIds, customFields } = input;
|
|
114
|
+
const contact = { email };
|
|
115
|
+
if (firstName) contact.first_name = firstName;
|
|
116
|
+
if (lastName) contact.last_name = lastName;
|
|
117
|
+
if (customFields) contact.custom_fields = customFields;
|
|
118
|
+
const payload = { contacts: [contact] };
|
|
119
|
+
if (listIds) payload.list_ids = listIds;
|
|
120
|
+
const response = await this.makeRequest(
|
|
121
|
+
"https://api.sendgrid.com/v3/marketing/contacts",
|
|
122
|
+
{ method: "PUT", body: JSON.stringify(payload), auth }
|
|
123
|
+
);
|
|
124
|
+
return response.json();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
triggers = {
|
|
129
|
+
onEmailOpened: {
|
|
130
|
+
name: "Email Opened",
|
|
131
|
+
description: "Triggered when a recipient opens an email",
|
|
132
|
+
outputSchema: z.object({ email: z.string(), timestamp: z.string(), messageId: z.string(), campaignId: z.string().optional() }),
|
|
133
|
+
subscribe: async (_config, _auth) => {
|
|
134
|
+
},
|
|
135
|
+
unsubscribe: async (_config, _auth) => {
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
onEmailBounced: {
|
|
139
|
+
name: "Email Bounced",
|
|
140
|
+
description: "Triggered when an email bounces",
|
|
141
|
+
outputSchema: z.object({ email: z.string(), timestamp: z.string(), reason: z.string(), bounceType: z.string() }),
|
|
142
|
+
subscribe: async (_config, _auth) => {
|
|
143
|
+
},
|
|
144
|
+
unsubscribe: async (_config, _auth) => {
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
export {
|
|
150
|
+
SendGridAdapter
|
|
151
|
+
};
|
|
152
|
+
//# sourceMappingURL=sendgrid-RNXCAFKM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/adapters/adapters/sendgrid.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { BaseAdapter } from \"../base-adapter\";\nimport type { AuthResult, ActionDefinition, TriggerDefinition, TriggerConfig } from \"../types\";\n\nexport class SendGridAdapter extends BaseAdapter {\n metadata = {\n name: \"SendGrid\",\n slug: \"sendgrid\",\n displayName: \"SendGrid\",\n description: \"Send transactional and marketing emails, manage contacts, and track email engagement with SendGrid\",\n category: \"email\",\n authType: \"api_key\" as const,\n };\n\n async authenticate(credentials: Record<string, string>): Promise<AuthResult> {\n return {\n accessToken: credentials.apiKey || credentials.accessToken || \"\",\n metadata: {\n fromEmail: credentials.fromEmail,\n fromName: credentials.fromName,\n },\n };\n }\n\n actions: Record<string, ActionDefinition> = {\n sendEmail: {\n name: \"Send Email\",\n description: \"Send a transactional email via SendGrid\",\n inputSchema: z.object({\n to: z.string().email(),\n subject: z.string(),\n htmlContent: z.string(),\n textContent: z.string().optional(),\n from: z.string().email().optional(),\n fromName: z.string().optional(),\n replyTo: z.string().email().optional(),\n cc: z.array(z.string().email()).optional(),\n bcc: z.array(z.string().email()).optional(),\n }),\n outputSchema: z.object({ statusCode: z.number(), messageId: z.string() }),\n execute: async (input: unknown, auth: AuthResult) => {\n const { to, subject, htmlContent, textContent, from, fromName, replyTo, cc, bcc } = input as {\n to: string; subject: string; htmlContent: string; textContent?: string;\n from?: string; fromName?: string; replyTo?: string; cc?: string[]; bcc?: string[];\n };\n const senderEmail = from || (auth.metadata?.fromEmail as string) || \"\";\n const senderName = fromName || (auth.metadata?.fromName as string) || \"\";\n const personalizations: Record<string, unknown> = {\n to: [{ email: to }],\n };\n if (cc) personalizations.cc = cc.map((email) => ({ email }));\n if (bcc) personalizations.bcc = bcc.map((email) => ({ email }));\n const payload: Record<string, unknown> = {\n personalizations: [personalizations],\n from: { email: senderEmail, name: senderName },\n subject,\n content: [\n ...(textContent ? [{ type: \"text/plain\", value: textContent }] : []),\n { type: \"text/html\", value: htmlContent },\n ],\n };\n if (replyTo) payload.reply_to = { email: replyTo };\n const response = await this.makeRequest(\n \"https://api.sendgrid.com/v3/mail/send\",\n { method: \"POST\", body: JSON.stringify(payload), auth }\n );\n return {\n statusCode: response.status,\n messageId: response.headers.get(\"X-Message-Id\") || \"\",\n };\n },\n },\n sendTemplate: {\n name: \"Send Template Email\",\n description: \"Send an email using a SendGrid dynamic template\",\n inputSchema: z.object({\n to: z.string().email(),\n templateId: z.string(),\n dynamicTemplateData: z.record(z.unknown()),\n from: z.string().email().optional(),\n fromName: z.string().optional(),\n }),\n outputSchema: z.object({ statusCode: z.number(), messageId: z.string() }),\n execute: async (input: unknown, auth: AuthResult) => {\n const { to, templateId, dynamicTemplateData, from, fromName } = input as {\n to: string; templateId: string; dynamicTemplateData: Record<string, unknown>;\n from?: string; fromName?: string;\n };\n const senderEmail = from || (auth.metadata?.fromEmail as string) || \"\";\n const senderName = fromName || (auth.metadata?.fromName as string) || \"\";\n const payload = {\n personalizations: [{ to: [{ email: to }], dynamic_template_data: dynamicTemplateData }],\n from: { email: senderEmail, name: senderName },\n template_id: templateId,\n };\n const response = await this.makeRequest(\n \"https://api.sendgrid.com/v3/mail/send\",\n { method: \"POST\", body: JSON.stringify(payload), auth }\n );\n return {\n statusCode: response.status,\n messageId: response.headers.get(\"X-Message-Id\") || \"\",\n };\n },\n },\n addContact: {\n name: \"Add Contact\",\n description: \"Add or update a contact in SendGrid\",\n inputSchema: z.object({\n email: z.string().email(),\n firstName: z.string().optional(),\n lastName: z.string().optional(),\n listIds: z.array(z.string()).optional(),\n customFields: z.record(z.string()).optional(),\n }),\n outputSchema: z.object({ jobId: z.string() }),\n execute: async (input: unknown, auth: AuthResult) => {\n const { email, firstName, lastName, listIds, customFields } = input as {\n email: string; firstName?: string; lastName?: string;\n listIds?: string[]; customFields?: Record<string, string>;\n };\n const contact: Record<string, unknown> = { email };\n if (firstName) contact.first_name = firstName;\n if (lastName) contact.last_name = lastName;\n if (customFields) contact.custom_fields = customFields;\n const payload: Record<string, unknown> = { contacts: [contact] };\n if (listIds) payload.list_ids = listIds;\n const response = await this.makeRequest(\n \"https://api.sendgrid.com/v3/marketing/contacts\",\n { method: \"PUT\", body: JSON.stringify(payload), auth }\n );\n return response.json();\n },\n },\n };\n\n triggers: Record<string, TriggerDefinition> = {\n onEmailOpened: {\n name: \"Email Opened\",\n description: \"Triggered when a recipient opens an email\",\n outputSchema: z.object({ email: z.string(), timestamp: z.string(), messageId: z.string(), campaignId: z.string().optional() }),\n subscribe: async (_config: TriggerConfig, _auth: AuthResult) => {},\n unsubscribe: async (_config: TriggerConfig, _auth: AuthResult) => {},\n },\n onEmailBounced: {\n name: \"Email Bounced\",\n description: \"Triggered when an email bounces\",\n outputSchema: z.object({ email: z.string(), timestamp: z.string(), reason: z.string(), bounceType: z.string() }),\n subscribe: async (_config: TriggerConfig, _auth: AuthResult) => {},\n unsubscribe: async (_config: TriggerConfig, _auth: AuthResult) => {},\n },\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BaseAdapter
|
|
3
|
+
} from "./chunk-7WQO5J2M.js";
|
|
4
|
+
import "./chunk-PLDDJCW6.js";
|
|
5
|
+
|
|
6
|
+
// src/core/adapters/adapters/shopify.ts
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
var ShopifyAdapter = class extends BaseAdapter {
|
|
9
|
+
metadata = {
|
|
10
|
+
name: "Shopify",
|
|
11
|
+
slug: "shopify",
|
|
12
|
+
displayName: "Shopify",
|
|
13
|
+
description: "Manage products, inventory, and orders in your Shopify store",
|
|
14
|
+
category: "ecommerce",
|
|
15
|
+
authType: "api_key"
|
|
16
|
+
};
|
|
17
|
+
async authenticate(credentials) {
|
|
18
|
+
return {
|
|
19
|
+
accessToken: credentials.accessToken || credentials.apiKey || "",
|
|
20
|
+
metadata: {
|
|
21
|
+
shop: credentials.shop,
|
|
22
|
+
apiVersion: credentials.apiVersion || "2024-01"
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
getBaseUrl(auth) {
|
|
27
|
+
const shop = auth.metadata?.shop || "mystore";
|
|
28
|
+
const apiVersion = auth.metadata?.apiVersion || "2024-01";
|
|
29
|
+
return `https://${shop}.myshopify.com/admin/api/${apiVersion}`;
|
|
30
|
+
}
|
|
31
|
+
actions = {
|
|
32
|
+
createProduct: {
|
|
33
|
+
name: "Create Product",
|
|
34
|
+
description: "Create a new product in Shopify",
|
|
35
|
+
inputSchema: z.object({
|
|
36
|
+
title: z.string(),
|
|
37
|
+
bodyHtml: z.string().optional(),
|
|
38
|
+
vendor: z.string().optional(),
|
|
39
|
+
productType: z.string().optional(),
|
|
40
|
+
tags: z.string().optional(),
|
|
41
|
+
variants: z.array(z.object({
|
|
42
|
+
price: z.string(),
|
|
43
|
+
sku: z.string().optional(),
|
|
44
|
+
inventoryQuantity: z.number().optional()
|
|
45
|
+
})).optional()
|
|
46
|
+
}),
|
|
47
|
+
outputSchema: z.object({ product: z.object({ id: z.number(), title: z.string(), handle: z.string() }) }),
|
|
48
|
+
execute: async (input, auth) => {
|
|
49
|
+
const data = input;
|
|
50
|
+
const baseUrl = this.getBaseUrl(auth);
|
|
51
|
+
const response = await this.makeRequest(
|
|
52
|
+
`${baseUrl}/products.json`,
|
|
53
|
+
{ method: "POST", body: JSON.stringify({ product: data }), auth }
|
|
54
|
+
);
|
|
55
|
+
return response.json();
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
updateInventory: {
|
|
59
|
+
name: "Update Inventory",
|
|
60
|
+
description: "Update inventory level for a product variant",
|
|
61
|
+
inputSchema: z.object({
|
|
62
|
+
inventoryItemId: z.number(),
|
|
63
|
+
locationId: z.number(),
|
|
64
|
+
available: z.number()
|
|
65
|
+
}),
|
|
66
|
+
outputSchema: z.object({ inventoryLevel: z.object({ inventoryItemId: z.number(), locationId: z.number(), available: z.number() }) }),
|
|
67
|
+
execute: async (input, auth) => {
|
|
68
|
+
const { inventoryItemId, locationId, available } = input;
|
|
69
|
+
const baseUrl = this.getBaseUrl(auth);
|
|
70
|
+
const response = await this.makeRequest(
|
|
71
|
+
`${baseUrl}/inventory_levels/set.json`,
|
|
72
|
+
{
|
|
73
|
+
method: "POST",
|
|
74
|
+
body: JSON.stringify({
|
|
75
|
+
inventory_item_id: inventoryItemId,
|
|
76
|
+
location_id: locationId,
|
|
77
|
+
available
|
|
78
|
+
}),
|
|
79
|
+
auth
|
|
80
|
+
}
|
|
81
|
+
);
|
|
82
|
+
return response.json();
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
createOrder: {
|
|
86
|
+
name: "Create Order",
|
|
87
|
+
description: "Create a new order in Shopify",
|
|
88
|
+
inputSchema: z.object({
|
|
89
|
+
lineItems: z.array(z.object({
|
|
90
|
+
variantId: z.number(),
|
|
91
|
+
quantity: z.number()
|
|
92
|
+
})),
|
|
93
|
+
email: z.string().email().optional(),
|
|
94
|
+
shippingAddress: z.object({
|
|
95
|
+
firstName: z.string(),
|
|
96
|
+
lastName: z.string(),
|
|
97
|
+
address1: z.string(),
|
|
98
|
+
city: z.string(),
|
|
99
|
+
province: z.string(),
|
|
100
|
+
country: z.string(),
|
|
101
|
+
zip: z.string()
|
|
102
|
+
}).optional(),
|
|
103
|
+
financialStatus: z.enum(["pending", "authorized", "partially_paid", "paid"]).optional()
|
|
104
|
+
}),
|
|
105
|
+
outputSchema: z.object({ order: z.object({ id: z.number(), orderNumber: z.number(), totalPrice: z.string() }) }),
|
|
106
|
+
execute: async (input, auth) => {
|
|
107
|
+
const { lineItems, email, shippingAddress, financialStatus } = input;
|
|
108
|
+
const baseUrl = this.getBaseUrl(auth);
|
|
109
|
+
const order = {
|
|
110
|
+
line_items: lineItems.map((item) => ({
|
|
111
|
+
variant_id: item.variantId,
|
|
112
|
+
quantity: item.quantity
|
|
113
|
+
}))
|
|
114
|
+
};
|
|
115
|
+
if (email) order.email = email;
|
|
116
|
+
if (shippingAddress) order.shipping_address = shippingAddress;
|
|
117
|
+
if (financialStatus) order.financial_status = financialStatus;
|
|
118
|
+
const response = await this.makeRequest(
|
|
119
|
+
`${baseUrl}/orders.json`,
|
|
120
|
+
{ method: "POST", body: JSON.stringify({ order }), auth }
|
|
121
|
+
);
|
|
122
|
+
return response.json();
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
listOrders: {
|
|
126
|
+
name: "List Orders",
|
|
127
|
+
description: "List orders from your Shopify store",
|
|
128
|
+
inputSchema: z.object({
|
|
129
|
+
status: z.enum(["open", "closed", "cancelled", "any"]).optional().default("any"),
|
|
130
|
+
limit: z.number().optional().default(50),
|
|
131
|
+
sinceId: z.string().optional()
|
|
132
|
+
}),
|
|
133
|
+
outputSchema: z.object({ orders: z.array(z.object({ id: z.number(), orderNumber: z.number(), totalPrice: z.string(), financialStatus: z.string() })) }),
|
|
134
|
+
execute: async (input, auth) => {
|
|
135
|
+
const { status, limit, sinceId } = input;
|
|
136
|
+
const baseUrl = this.getBaseUrl(auth);
|
|
137
|
+
const params = new URLSearchParams({ status, limit: String(limit) });
|
|
138
|
+
if (sinceId) params.set("since_id", sinceId);
|
|
139
|
+
const response = await this.makeRequest(
|
|
140
|
+
`${baseUrl}/orders.json?${params.toString()}`,
|
|
141
|
+
{ auth }
|
|
142
|
+
);
|
|
143
|
+
return response.json();
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
triggers = {
|
|
148
|
+
onNewOrder: {
|
|
149
|
+
name: "New Order Created",
|
|
150
|
+
description: "Triggered when a new order is placed in Shopify",
|
|
151
|
+
outputSchema: z.object({ orderId: z.number(), orderNumber: z.number(), totalPrice: z.string(), customerEmail: z.string() }),
|
|
152
|
+
subscribe: async (_config, _auth) => {
|
|
153
|
+
},
|
|
154
|
+
unsubscribe: async (_config, _auth) => {
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
onInventoryLow: {
|
|
158
|
+
name: "Inventory Low",
|
|
159
|
+
description: "Triggered when inventory for a product drops below a threshold",
|
|
160
|
+
outputSchema: z.object({ productId: z.number(), variantId: z.number(), title: z.string(), available: z.number() }),
|
|
161
|
+
subscribe: async (_config, _auth) => {
|
|
162
|
+
},
|
|
163
|
+
unsubscribe: async (_config, _auth) => {
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
export {
|
|
169
|
+
ShopifyAdapter
|
|
170
|
+
};
|
|
171
|
+
//# sourceMappingURL=shopify-NCXYJB4R.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/adapters/adapters/shopify.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { BaseAdapter } from \"../base-adapter\";\nimport type { AuthResult, ActionDefinition, TriggerDefinition, TriggerConfig } from \"../types\";\n\nexport class ShopifyAdapter extends BaseAdapter {\n metadata = {\n name: \"Shopify\",\n slug: \"shopify\",\n displayName: \"Shopify\",\n description: \"Manage products, inventory, and orders in your Shopify store\",\n category: \"ecommerce\",\n authType: \"api_key\" as const,\n };\n\n async authenticate(credentials: Record<string, string>): Promise<AuthResult> {\n return {\n accessToken: credentials.accessToken || credentials.apiKey || \"\",\n metadata: {\n shop: credentials.shop,\n apiVersion: credentials.apiVersion || \"2024-01\",\n },\n };\n }\n\n private getBaseUrl(auth: AuthResult): string {\n const shop = (auth.metadata?.shop as string) || \"mystore\";\n const apiVersion = (auth.metadata?.apiVersion as string) || \"2024-01\";\n return `https://${shop}.myshopify.com/admin/api/${apiVersion}`;\n }\n\n actions: Record<string, ActionDefinition> = {\n createProduct: {\n name: \"Create Product\",\n description: \"Create a new product in Shopify\",\n inputSchema: z.object({\n title: z.string(),\n bodyHtml: z.string().optional(),\n vendor: z.string().optional(),\n productType: z.string().optional(),\n tags: z.string().optional(),\n variants: z.array(z.object({\n price: z.string(),\n sku: z.string().optional(),\n inventoryQuantity: z.number().optional(),\n })).optional(),\n }),\n outputSchema: z.object({ product: z.object({ id: z.number(), title: z.string(), handle: z.string() }) }),\n execute: async (input: unknown, auth: AuthResult) => {\n const data = input as Record<string, unknown>;\n const baseUrl = this.getBaseUrl(auth);\n const response = await this.makeRequest(\n `${baseUrl}/products.json`,\n { method: \"POST\", body: JSON.stringify({ product: data }), auth }\n );\n return response.json();\n },\n },\n updateInventory: {\n name: \"Update Inventory\",\n description: \"Update inventory level for a product variant\",\n inputSchema: z.object({\n inventoryItemId: z.number(),\n locationId: z.number(),\n available: z.number(),\n }),\n outputSchema: z.object({ inventoryLevel: z.object({ inventoryItemId: z.number(), locationId: z.number(), available: z.number() }) }),\n execute: async (input: unknown, auth: AuthResult) => {\n const { inventoryItemId, locationId, available } = input as {\n inventoryItemId: number; locationId: number; available: number;\n };\n const baseUrl = this.getBaseUrl(auth);\n const response = await this.makeRequest(\n `${baseUrl}/inventory_levels/set.json`,\n {\n method: \"POST\",\n body: JSON.stringify({\n inventory_item_id: inventoryItemId,\n location_id: locationId,\n available,\n }),\n auth,\n }\n );\n return response.json();\n },\n },\n createOrder: {\n name: \"Create Order\",\n description: \"Create a new order in Shopify\",\n inputSchema: z.object({\n lineItems: z.array(z.object({\n variantId: z.number(),\n quantity: z.number(),\n })),\n email: z.string().email().optional(),\n shippingAddress: z.object({\n firstName: z.string(),\n lastName: z.string(),\n address1: z.string(),\n city: z.string(),\n province: z.string(),\n country: z.string(),\n zip: z.string(),\n }).optional(),\n financialStatus: z.enum([\"pending\", \"authorized\", \"partially_paid\", \"paid\"]).optional(),\n }),\n outputSchema: z.object({ order: z.object({ id: z.number(), orderNumber: z.number(), totalPrice: z.string() }) }),\n execute: async (input: unknown, auth: AuthResult) => {\n const { lineItems, email, shippingAddress, financialStatus } = input as {\n lineItems: { variantId: number; quantity: number }[];\n email?: string; shippingAddress?: Record<string, string>; financialStatus?: string;\n };\n const baseUrl = this.getBaseUrl(auth);\n const order: Record<string, unknown> = {\n line_items: lineItems.map((item) => ({\n variant_id: item.variantId,\n quantity: item.quantity,\n })),\n };\n if (email) order.email = email;\n if (shippingAddress) order.shipping_address = shippingAddress;\n if (financialStatus) order.financial_status = financialStatus;\n const response = await this.makeRequest(\n `${baseUrl}/orders.json`,\n { method: \"POST\", body: JSON.stringify({ order }), auth }\n );\n return response.json();\n },\n },\n listOrders: {\n name: \"List Orders\",\n description: \"List orders from your Shopify store\",\n inputSchema: z.object({\n status: z.enum([\"open\", \"closed\", \"cancelled\", \"any\"]).optional().default(\"any\"),\n limit: z.number().optional().default(50),\n sinceId: z.string().optional(),\n }),\n outputSchema: z.object({ orders: z.array(z.object({ id: z.number(), orderNumber: z.number(), totalPrice: z.string(), financialStatus: z.string() })) }),\n execute: async (input: unknown, auth: AuthResult) => {\n const { status, limit, sinceId } = input as { status: string; limit: number; sinceId?: string };\n const baseUrl = this.getBaseUrl(auth);\n const params = new URLSearchParams({ status, limit: String(limit) });\n if (sinceId) params.set(\"since_id\", sinceId);\n const response = await this.makeRequest(\n `${baseUrl}/orders.json?${params.toString()}`,\n { auth }\n );\n return response.json();\n },\n },\n };\n\n triggers: Record<string, TriggerDefinition> = {\n onNewOrder: {\n name: \"New Order Created\",\n description: \"Triggered when a new order is placed in Shopify\",\n outputSchema: z.object({ orderId: z.number(), orderNumber: z.number(), totalPrice: z.string(), customerEmail: z.string() }),\n subscribe: async (_config: TriggerConfig, _auth: AuthResult) => {},\n unsubscribe: async (_config: TriggerConfig, _auth: AuthResult) => {},\n },\n onInventoryLow: {\n name: \"Inventory Low\",\n description: \"Triggered when inventory for a product drops below a threshold\",\n outputSchema: z.object({ productId: z.number(), variantId: z.number(), title: z.string(), available: z.number() }),\n subscribe: async (_config: TriggerConfig, _auth: AuthResult) => {},\n unsubscribe: async (_config: TriggerConfig, _auth: AuthResult) => {},\n },\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SignalBot,
|
|
3
|
+
signal_default
|
|
4
|
+
} from "./chunk-VEHFVBLI.js";
|
|
5
|
+
import "./chunk-766ASQWE.js";
|
|
6
|
+
import "./chunk-IZJMVV7O.js";
|
|
7
|
+
import "./chunk-6PMVAAA7.js";
|
|
8
|
+
import "./chunk-MQJ2ECQT.js";
|
|
9
|
+
import "./chunk-TVEWKIK3.js";
|
|
10
|
+
import "./chunk-BRBWNV65.js";
|
|
11
|
+
import "./chunk-H5RQOFO2.js";
|
|
12
|
+
import "./chunk-VRD5CYRL.js";
|
|
13
|
+
import "./chunk-KM22GV7G.js";
|
|
14
|
+
import "./chunk-P6QINGFL.js";
|
|
15
|
+
import "./chunk-HN3F4WSW.js";
|
|
16
|
+
import "./chunk-SVAPX2XN.js";
|
|
17
|
+
import "./chunk-WRAKK6K6.js";
|
|
18
|
+
import "./chunk-7WQO5J2M.js";
|
|
19
|
+
import "./chunk-BXZ6EA52.js";
|
|
20
|
+
import "./chunk-4GLYY4NN.js";
|
|
21
|
+
import "./chunk-EVE7MIIY.js";
|
|
22
|
+
import "./chunk-RZ4YESBG.js";
|
|
23
|
+
import "./chunk-CQ4JURG7.js";
|
|
24
|
+
import "./chunk-OCVQGBJK.js";
|
|
25
|
+
import "./chunk-XKYRH4FM.js";
|
|
26
|
+
import "./chunk-ZLZKF2PM.js";
|
|
27
|
+
import "./chunk-6KONMXQ6.js";
|
|
28
|
+
import "./chunk-22VGGA7S.js";
|
|
29
|
+
import "./chunk-35WYTA3C.js";
|
|
30
|
+
import "./chunk-PLDDJCW6.js";
|
|
31
|
+
export {
|
|
32
|
+
SignalBot,
|
|
33
|
+
signal_default as default
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=signal-6CGDFYL2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SlackBot,
|
|
3
|
+
addToSession,
|
|
4
|
+
askCommand,
|
|
5
|
+
chatCommand,
|
|
6
|
+
clearCommand,
|
|
7
|
+
clearSession,
|
|
8
|
+
createErrorBlocks,
|
|
9
|
+
createSlackBot,
|
|
10
|
+
createSuccessBlocks,
|
|
11
|
+
formatAsBlocks,
|
|
12
|
+
getCommand,
|
|
13
|
+
getCommandNames,
|
|
14
|
+
getSession,
|
|
15
|
+
helpCommand,
|
|
16
|
+
mainCommand,
|
|
17
|
+
remindCommand,
|
|
18
|
+
sessions,
|
|
19
|
+
slack_default,
|
|
20
|
+
slashCommands,
|
|
21
|
+
splitMessage,
|
|
22
|
+
statusCommand
|
|
23
|
+
} from "./chunk-4UOE5TUZ.js";
|
|
24
|
+
import "./chunk-SJSUSJ47.js";
|
|
25
|
+
import "./chunk-AYUKPTSM.js";
|
|
26
|
+
import "./chunk-766ASQWE.js";
|
|
27
|
+
import "./chunk-IZJMVV7O.js";
|
|
28
|
+
import "./chunk-6PMVAAA7.js";
|
|
29
|
+
import "./chunk-MQJ2ECQT.js";
|
|
30
|
+
import "./chunk-TVEWKIK3.js";
|
|
31
|
+
import "./chunk-BRBWNV65.js";
|
|
32
|
+
import "./chunk-H5RQOFO2.js";
|
|
33
|
+
import "./chunk-VRD5CYRL.js";
|
|
34
|
+
import "./chunk-KM22GV7G.js";
|
|
35
|
+
import "./chunk-P6QINGFL.js";
|
|
36
|
+
import "./chunk-HN3F4WSW.js";
|
|
37
|
+
import "./chunk-SVAPX2XN.js";
|
|
38
|
+
import "./chunk-WRAKK6K6.js";
|
|
39
|
+
import "./chunk-7WQO5J2M.js";
|
|
40
|
+
import "./chunk-BXZ6EA52.js";
|
|
41
|
+
import "./chunk-4GLYY4NN.js";
|
|
42
|
+
import "./chunk-EVE7MIIY.js";
|
|
43
|
+
import "./chunk-RZ4YESBG.js";
|
|
44
|
+
import "./chunk-CQ4JURG7.js";
|
|
45
|
+
import "./chunk-OCVQGBJK.js";
|
|
46
|
+
import "./chunk-XKYRH4FM.js";
|
|
47
|
+
import "./chunk-ZLZKF2PM.js";
|
|
48
|
+
import "./chunk-6KONMXQ6.js";
|
|
49
|
+
import "./chunk-22VGGA7S.js";
|
|
50
|
+
import "./chunk-35WYTA3C.js";
|
|
51
|
+
import "./chunk-PLDDJCW6.js";
|
|
52
|
+
export {
|
|
53
|
+
SlackBot,
|
|
54
|
+
addToSession,
|
|
55
|
+
askCommand,
|
|
56
|
+
chatCommand,
|
|
57
|
+
clearCommand,
|
|
58
|
+
clearSession,
|
|
59
|
+
createErrorBlocks,
|
|
60
|
+
createSlackBot,
|
|
61
|
+
createSuccessBlocks,
|
|
62
|
+
slack_default as default,
|
|
63
|
+
formatAsBlocks,
|
|
64
|
+
getCommand,
|
|
65
|
+
getCommandNames,
|
|
66
|
+
getSession,
|
|
67
|
+
helpCommand,
|
|
68
|
+
mainCommand,
|
|
69
|
+
remindCommand,
|
|
70
|
+
sessions,
|
|
71
|
+
slashCommands,
|
|
72
|
+
splitMessage,
|
|
73
|
+
statusCommand
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=slack-IZQWIKOH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {
|
|
2
|
+
generateSMSResponse,
|
|
3
|
+
getMessageStatus,
|
|
4
|
+
getTwilioConfig,
|
|
5
|
+
isTwilioConfigured,
|
|
6
|
+
parseIncomingSMS,
|
|
7
|
+
sendMMS,
|
|
8
|
+
sendSMS,
|
|
9
|
+
validateTwilioSignature
|
|
10
|
+
} from "./chunk-6PMVAAA7.js";
|
|
11
|
+
import "./chunk-ZLZKF2PM.js";
|
|
12
|
+
import "./chunk-PLDDJCW6.js";
|
|
13
|
+
export {
|
|
14
|
+
generateSMSResponse,
|
|
15
|
+
getMessageStatus,
|
|
16
|
+
getTwilioConfig,
|
|
17
|
+
isTwilioConfigured,
|
|
18
|
+
parseIncomingSMS,
|
|
19
|
+
sendMMS,
|
|
20
|
+
sendSMS,
|
|
21
|
+
validateTwilioSignature
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=sms-M3JIOTCW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|