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.
Files changed (268) hide show
  1. package/README.md +354 -283
  2. package/dist/archiver-AVNBYCKQ.js +15340 -0
  3. package/dist/archiver-AVNBYCKQ.js.map +1 -0
  4. package/dist/audit-logger-OBPR7CRO.js +22 -0
  5. package/dist/auth-UOX5K2BE.js +18 -0
  6. package/dist/autonomy-ZXDBDQUJ.js +86 -0
  7. package/dist/autonomy-ZXDBDQUJ.js.map +1 -0
  8. package/dist/aws-s3-Q4LLZZPD.js +146 -0
  9. package/dist/aws-s3-Q4LLZZPD.js.map +1 -0
  10. package/dist/backup-restore-PZ7CYYB7.js +16 -0
  11. package/dist/blocks-R3PODY47.js +23 -0
  12. package/dist/bot-QRARP4UN.js +36 -0
  13. package/dist/brain-7XLLM3KC.js +56 -0
  14. package/dist/camera-monitor-M5CYKUU4.js +335 -0
  15. package/dist/camera-monitor-M5CYKUU4.js.map +1 -0
  16. package/dist/{charts-MMXM6BWW.js → charts-V7ARZNKF.js} +2 -2
  17. package/dist/chunk-22VGGA7S.js +330 -0
  18. package/dist/chunk-22VGGA7S.js.map +1 -0
  19. package/dist/chunk-35WYTA3C.js +382 -0
  20. package/dist/chunk-35WYTA3C.js.map +1 -0
  21. package/dist/chunk-3E2PSU2C.js +146 -0
  22. package/dist/chunk-3E2PSU2C.js.map +1 -0
  23. package/dist/{chunk-L3F43VPB.js → chunk-4GLYY4NN.js} +2 -2
  24. package/dist/{chunk-L3F43VPB.js.map → chunk-4GLYY4NN.js.map} +1 -1
  25. package/dist/{chunk-L3PDU3XN.js → chunk-4UOE5TUZ.js} +4 -4
  26. package/dist/{chunk-6SNHU3CY.js → chunk-66OJ3WB4.js} +2 -2
  27. package/dist/chunk-6KONMXQ6.js +297 -0
  28. package/dist/chunk-6KONMXQ6.js.map +1 -0
  29. package/dist/chunk-6PMVAAA7.js +196 -0
  30. package/dist/chunk-6PMVAAA7.js.map +1 -0
  31. package/dist/chunk-766ASQWE.js +32620 -0
  32. package/dist/chunk-766ASQWE.js.map +1 -0
  33. package/dist/chunk-7WQO5J2M.js +29 -0
  34. package/dist/chunk-7WQO5J2M.js.map +1 -0
  35. package/dist/chunk-APHSRMBS.js +148 -0
  36. package/dist/chunk-APHSRMBS.js.map +1 -0
  37. package/dist/{chunk-4LVWXUNC.js → chunk-AYUKPTSM.js} +57 -39
  38. package/dist/chunk-AYUKPTSM.js.map +1 -0
  39. package/dist/chunk-BIPYADGB.js +84 -0
  40. package/dist/chunk-BIPYADGB.js.map +1 -0
  41. package/dist/chunk-BRBWNV65.js +457 -0
  42. package/dist/chunk-BRBWNV65.js.map +1 -0
  43. package/dist/chunk-BXZ6EA52.js +382 -0
  44. package/dist/chunk-BXZ6EA52.js.map +1 -0
  45. package/dist/chunk-EVE7MIIY.js +290 -0
  46. package/dist/chunk-EVE7MIIY.js.map +1 -0
  47. package/dist/chunk-F3TTNID2.js +138 -0
  48. package/dist/chunk-F3TTNID2.js.map +1 -0
  49. package/dist/chunk-H5RQOFO2.js +190 -0
  50. package/dist/chunk-H5RQOFO2.js.map +1 -0
  51. package/dist/chunk-HN3F4WSW.js +145 -0
  52. package/dist/chunk-HN3F4WSW.js.map +1 -0
  53. package/dist/{chunk-6DRDKB45.js → chunk-I6BDYQIG.js} +20 -9
  54. package/dist/chunk-I6BDYQIG.js.map +1 -0
  55. package/dist/chunk-IZJMVV7O.js +347 -0
  56. package/dist/chunk-IZJMVV7O.js.map +1 -0
  57. package/dist/chunk-KM22GV7G.js +211 -0
  58. package/dist/chunk-KM22GV7G.js.map +1 -0
  59. package/dist/chunk-MGFBLVR7.js +103 -0
  60. package/dist/chunk-MGFBLVR7.js.map +1 -0
  61. package/dist/chunk-MQJ2ECQT.js +228 -0
  62. package/dist/chunk-MQJ2ECQT.js.map +1 -0
  63. package/dist/{chunk-F6QUZQGI.js → chunk-MXAPLSJ5.js} +2 -2
  64. package/dist/{chunk-GK3E2I7A.js → chunk-NHMBTUMW.js} +2 -2
  65. package/dist/chunk-NPRTSZIF.js +131 -0
  66. package/dist/chunk-NPRTSZIF.js.map +1 -0
  67. package/dist/chunk-O7IH7JTI.js +1898 -0
  68. package/dist/chunk-O7IH7JTI.js.map +1 -0
  69. package/dist/chunk-OCVQGBJK.js +293 -0
  70. package/dist/chunk-OCVQGBJK.js.map +1 -0
  71. package/dist/chunk-P6QINGFL.js +332 -0
  72. package/dist/chunk-P6QINGFL.js.map +1 -0
  73. package/dist/chunk-PHDZKPNE.js +91 -0
  74. package/dist/chunk-PHDZKPNE.js.map +1 -0
  75. package/dist/chunk-PLDDJCW6.js +49 -0
  76. package/dist/chunk-PTGTGXV2.js +164 -0
  77. package/dist/chunk-PTGTGXV2.js.map +1 -0
  78. package/dist/chunk-REMIY4U2.js +171 -0
  79. package/dist/chunk-REMIY4U2.js.map +1 -0
  80. package/dist/chunk-RZ4YESBG.js +141 -0
  81. package/dist/chunk-RZ4YESBG.js.map +1 -0
  82. package/dist/chunk-SAX5MHK4.js +111 -0
  83. package/dist/chunk-SAX5MHK4.js.map +1 -0
  84. package/dist/{chunk-GVJVEWHI.js → chunk-SJSUSJ47.js} +2 -2
  85. package/dist/chunk-SPPMCAKG.js +777 -0
  86. package/dist/chunk-SPPMCAKG.js.map +1 -0
  87. package/dist/chunk-SVAPX2XN.js +2441 -0
  88. package/dist/chunk-SVAPX2XN.js.map +1 -0
  89. package/dist/chunk-TVEWKIK3.js +452 -0
  90. package/dist/chunk-TVEWKIK3.js.map +1 -0
  91. package/dist/{chunk-HH2HBTQM.js → chunk-TYAGMJNV.js} +5 -5
  92. package/dist/{chunk-JXUP2X7V.js → chunk-VEHFVBLI.js} +2 -2
  93. package/dist/chunk-VNX5GMTN.js +128 -0
  94. package/dist/chunk-VNX5GMTN.js.map +1 -0
  95. package/dist/chunk-VRD5CYRL.js +1568 -0
  96. package/dist/chunk-VRD5CYRL.js.map +1 -0
  97. package/dist/chunk-WLUHNG6X.js +122 -0
  98. package/dist/chunk-WLUHNG6X.js.map +1 -0
  99. package/dist/chunk-WRAKK6K6.js +265 -0
  100. package/dist/chunk-WRAKK6K6.js.map +1 -0
  101. package/dist/chunk-XKYRH4FM.js +681 -0
  102. package/dist/chunk-XKYRH4FM.js.map +1 -0
  103. package/dist/{chunk-GUBEEYDW.js → chunk-XMCVRVTF.js} +2 -2
  104. package/dist/{chunk-GUBEEYDW.js.map → chunk-XMCVRVTF.js.map} +1 -1
  105. package/dist/chunk-ZLZKF2PM.js +310 -0
  106. package/dist/chunk-ZLZKF2PM.js.map +1 -0
  107. package/dist/cli.js +5 -1
  108. package/dist/cli.js.map +1 -1
  109. package/dist/client-ZQSFPMOB.js +21 -0
  110. package/dist/clipboard-manager-TEO2GEDN.js +24 -0
  111. package/dist/commands/setup.js +3 -3
  112. package/dist/commands/setup.js.map +1 -1
  113. package/dist/commands/start.js +3 -3
  114. package/dist/commands/status.js +2 -2
  115. package/dist/commands/stop.js +2 -2
  116. package/dist/commands/utils.js +2 -2
  117. package/dist/cron-explain-HHQKPD3M.js +16 -0
  118. package/dist/crypto-4AP47IKC.js +14 -0
  119. package/dist/crypto-4AP47IKC.js.map +1 -0
  120. package/dist/databases-37X4CI2Y.js +21 -0
  121. package/dist/databases-37X4CI2Y.js.map +1 -0
  122. package/dist/discord-B3HUPGQ6.js +70 -0
  123. package/dist/discord-B3HUPGQ6.js.map +1 -0
  124. package/dist/dist-UISMLMFN.js +21847 -0
  125. package/dist/dist-UISMLMFN.js.map +1 -0
  126. package/dist/email-K7LO2IPB.js +268 -0
  127. package/dist/email-K7LO2IPB.js.map +1 -0
  128. package/dist/enhanced-retrieval-DNLLEM4Z.js +753 -0
  129. package/dist/enhanced-retrieval-DNLLEM4Z.js.map +1 -0
  130. package/dist/enrichment-pipeline-MNHNW65K.js +13 -0
  131. package/dist/enrichment-pipeline-MNHNW65K.js.map +1 -0
  132. package/dist/entity-resolution-Y3IUWEAT.js +24 -0
  133. package/dist/entity-resolution-Y3IUWEAT.js.map +1 -0
  134. package/dist/env-IWXUVTCB.js +12 -0
  135. package/dist/env-IWXUVTCB.js.map +1 -0
  136. package/dist/google-workspace-DKWUVNGC.js +169 -0
  137. package/dist/google-workspace-DKWUVNGC.js.map +1 -0
  138. package/dist/hash-tool-ULQYD7B5.js +22 -0
  139. package/dist/hash-tool-ULQYD7B5.js.map +1 -0
  140. package/dist/heartbeat-monitor-GCISLXI3.js +22 -0
  141. package/dist/heartbeat-monitor-GCISLXI3.js.map +1 -0
  142. package/dist/image-generation-OSU7FP6F.js +486 -0
  143. package/dist/image-generation-OSU7FP6F.js.map +1 -0
  144. package/dist/imessage-NGA2XF2V.js +35 -0
  145. package/dist/imessage-NGA2XF2V.js.map +1 -0
  146. package/dist/inbox-summarizer-NRI4S7IF.js +47 -0
  147. package/dist/inbox-summarizer-NRI4S7IF.js.map +1 -0
  148. package/dist/incident-response-C5J7Q6DT.js +244 -0
  149. package/dist/incident-response-C5J7Q6DT.js.map +1 -0
  150. package/dist/inventory-manager-352OHXWD.js +24 -0
  151. package/dist/inventory-manager-352OHXWD.js.map +1 -0
  152. package/dist/jira-GSGDBMIG.js +199 -0
  153. package/dist/jira-GSGDBMIG.js.map +1 -0
  154. package/dist/json-tool-QE2SYHEG.js +26 -0
  155. package/dist/json-tool-QE2SYHEG.js.map +1 -0
  156. package/dist/key-rotation-DPHU4ZTB.js +18 -0
  157. package/dist/key-rotation-DPHU4ZTB.js.map +1 -0
  158. package/dist/lib.d.ts +603 -11
  159. package/dist/lib.js +161 -35
  160. package/dist/lib.js.map +1 -1
  161. package/dist/mailchimp-KKNF6QJ7.js +152 -0
  162. package/dist/mailchimp-KKNF6QJ7.js.map +1 -0
  163. package/dist/matrix-QVHG76I7.js +279 -0
  164. package/dist/matrix-QVHG76I7.js.map +1 -0
  165. package/dist/{mcp-LS7Q3Z5W.js → mcp-3JI6W7ZE.js} +3 -3
  166. package/dist/mcp-3JI6W7ZE.js.map +1 -0
  167. package/dist/microsoft365-UCBKJHNX.js +164 -0
  168. package/dist/microsoft365-UCBKJHNX.js.map +1 -0
  169. package/dist/ocr-AC7NPX33.js +22 -0
  170. package/dist/ocr-AC7NPX33.js.map +1 -0
  171. package/dist/ollama-BOAMSPLJ.js +8 -0
  172. package/dist/ollama-BOAMSPLJ.js.map +1 -0
  173. package/dist/pages-MI523RB7.js +26 -0
  174. package/dist/pages-MI523RB7.js.map +1 -0
  175. package/dist/pair-JDFTERIK.js +24 -0
  176. package/dist/pair-JDFTERIK.js.map +1 -0
  177. package/dist/pairing-IFQYCPNS.js +10 -0
  178. package/dist/pairing-IFQYCPNS.js.map +1 -0
  179. package/dist/pdf-ALQVOEJR.js +17 -0
  180. package/dist/pdf-ALQVOEJR.js.map +1 -0
  181. package/dist/presentations-DSV5IHG5.js +1002 -0
  182. package/dist/presentations-DSV5IHG5.js.map +1 -0
  183. package/dist/prometheus-JNT2BD4L.js +10 -0
  184. package/dist/prometheus-JNT2BD4L.js.map +1 -0
  185. package/dist/providers-J4LYPHDR.js +19 -0
  186. package/dist/providers-J4LYPHDR.js.map +1 -0
  187. package/dist/qr-code-WIX4PB4U.js +16 -0
  188. package/dist/qr-code-WIX4PB4U.js.map +1 -0
  189. package/dist/quickbooks-XB4NII2S.js +190 -0
  190. package/dist/quickbooks-XB4NII2S.js.map +1 -0
  191. package/dist/regex-tool-W4ABRKGK.js +24 -0
  192. package/dist/regex-tool-W4ABRKGK.js.map +1 -0
  193. package/dist/scheduler-VK4WFERV.js +63 -0
  194. package/dist/scheduler-VK4WFERV.js.map +1 -0
  195. package/dist/search-BCLBO5E3.js +25 -0
  196. package/dist/search-BCLBO5E3.js.map +1 -0
  197. package/dist/sendgrid-RNXCAFKM.js +152 -0
  198. package/dist/sendgrid-RNXCAFKM.js.map +1 -0
  199. package/dist/shopify-NCXYJB4R.js +171 -0
  200. package/dist/shopify-NCXYJB4R.js.map +1 -0
  201. package/dist/signal-6CGDFYL2.js +35 -0
  202. package/dist/signal-6CGDFYL2.js.map +1 -0
  203. package/dist/slack-IZQWIKOH.js +75 -0
  204. package/dist/slack-IZQWIKOH.js.map +1 -0
  205. package/dist/sms-M3JIOTCW.js +23 -0
  206. package/dist/sms-M3JIOTCW.js.map +1 -0
  207. package/dist/{src-K7GASHRH.js → src-VYUE6LRA.js} +138 -32
  208. package/dist/src-VYUE6LRA.js.map +1 -0
  209. package/dist/stocks-XXWBPOCU.js +14 -0
  210. package/dist/stocks-XXWBPOCU.js.map +1 -0
  211. package/dist/text-transform-6SGUA5Z4.js +22 -0
  212. package/dist/text-transform-6SGUA5Z4.js.map +1 -0
  213. package/dist/tools-2RLEI2N6.js +38 -0
  214. package/dist/tools-2RLEI2N6.js.map +1 -0
  215. package/dist/tunnel-IWMXUML4.js +301 -0
  216. package/dist/tunnel-IWMXUML4.js.map +1 -0
  217. package/dist/twilio-53GEW5JT.js +139 -0
  218. package/dist/twilio-53GEW5JT.js.map +1 -0
  219. package/dist/unit-converter-ZYXMEZOE.js +14 -0
  220. package/dist/unit-converter-ZYXMEZOE.js.map +1 -0
  221. package/dist/whatsapp-LFX6YKCM.js +35 -0
  222. package/dist/whatsapp-LFX6YKCM.js.map +1 -0
  223. package/dist/word-document-7B6SJMAY.js +902 -0
  224. package/dist/word-document-7B6SJMAY.js.map +1 -0
  225. package/dist/xero-QYO66D45.js +162 -0
  226. package/dist/xero-QYO66D45.js.map +1 -0
  227. package/dist/zapier-webhook-TBZ5YF2A.js +106 -0
  228. package/dist/zapier-webhook-TBZ5YF2A.js.map +1 -0
  229. package/drizzle/0002_mushy_master_mold.sql +140 -0
  230. package/drizzle/meta/0002_snapshot.json +3637 -0
  231. package/drizzle/meta/_journal.json +7 -0
  232. package/package.json +100 -98
  233. package/dist/bot-KJ26BG56.js +0 -15
  234. package/dist/chunk-4LVWXUNC.js.map +0 -1
  235. package/dist/chunk-4TG2IG5K.js +0 -5249
  236. package/dist/chunk-4TG2IG5K.js.map +0 -1
  237. package/dist/chunk-6DRDKB45.js.map +0 -1
  238. package/dist/chunk-CI6Q63MM.js +0 -1613
  239. package/dist/chunk-CI6Q63MM.js.map +0 -1
  240. package/dist/chunk-KHNYJY2Z.js +0 -178
  241. package/dist/chunk-KHNYJY2Z.js.map +0 -1
  242. package/dist/chunk-NSBPE2FW.js +0 -17
  243. package/dist/discord-ZOJFTVTB.js +0 -49
  244. package/dist/imessage-JFRB6EJ7.js +0 -14
  245. package/dist/scheduler-EZ7CZMCS.js +0 -42
  246. package/dist/signal-T3MCSULM.js +0 -14
  247. package/dist/slack-N2M4FHAJ.js +0 -54
  248. package/dist/src-K7GASHRH.js.map +0 -1
  249. package/dist/tools-24GZHYRF.js +0 -16
  250. package/dist/whatsapp-VCRUPAO5.js +0 -14
  251. /package/dist/{bot-KJ26BG56.js.map → audit-logger-OBPR7CRO.js.map} +0 -0
  252. /package/dist/{chunk-NSBPE2FW.js.map → auth-UOX5K2BE.js.map} +0 -0
  253. /package/dist/{discord-ZOJFTVTB.js.map → backup-restore-PZ7CYYB7.js.map} +0 -0
  254. /package/dist/{imessage-JFRB6EJ7.js.map → blocks-R3PODY47.js.map} +0 -0
  255. /package/dist/{mcp-LS7Q3Z5W.js.map → bot-QRARP4UN.js.map} +0 -0
  256. /package/dist/{scheduler-EZ7CZMCS.js.map → brain-7XLLM3KC.js.map} +0 -0
  257. /package/dist/{charts-MMXM6BWW.js.map → charts-V7ARZNKF.js.map} +0 -0
  258. /package/dist/{chunk-L3PDU3XN.js.map → chunk-4UOE5TUZ.js.map} +0 -0
  259. /package/dist/{chunk-6SNHU3CY.js.map → chunk-66OJ3WB4.js.map} +0 -0
  260. /package/dist/{chunk-F6QUZQGI.js.map → chunk-MXAPLSJ5.js.map} +0 -0
  261. /package/dist/{chunk-GK3E2I7A.js.map → chunk-NHMBTUMW.js.map} +0 -0
  262. /package/dist/{signal-T3MCSULM.js.map → chunk-PLDDJCW6.js.map} +0 -0
  263. /package/dist/{chunk-GVJVEWHI.js.map → chunk-SJSUSJ47.js.map} +0 -0
  264. /package/dist/{chunk-HH2HBTQM.js.map → chunk-TYAGMJNV.js.map} +0 -0
  265. /package/dist/{chunk-JXUP2X7V.js.map → chunk-VEHFVBLI.js.map} +0 -0
  266. /package/dist/{slack-N2M4FHAJ.js.map → client-ZQSFPMOB.js.map} +0 -0
  267. /package/dist/{tools-24GZHYRF.js.map → clipboard-manager-TEO2GEDN.js.map} +0 -0
  268. /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":[]}