social-mcp 1.7.1 → 1.8.0
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 +67 -1
- package/dist/index.js +38 -16
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +23 -0
- package/dist/lib/config.js +23 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/services/email-service.d.ts +10 -0
- package/dist/services/email-service.js +126 -0
- package/dist/services/email-service.js.map +1 -0
- package/dist/services/pinterest-service.d.ts +49 -0
- package/dist/services/pinterest-service.js +84 -0
- package/dist/services/pinterest-service.js.map +1 -0
- package/dist/tools/email-tools/send-bulk-email.d.ts +20 -0
- package/dist/tools/email-tools/send-bulk-email.js +32 -0
- package/dist/tools/email-tools/send-bulk-email.js.map +1 -0
- package/dist/tools/email-tools/send-email.d.ts +20 -0
- package/dist/tools/email-tools/send-email.js +29 -0
- package/dist/tools/email-tools/send-email.js.map +1 -0
- package/dist/tools/mastodon-tools/create-post.d.ts +2 -2
- package/dist/tools/mastodon-tools/reply-to-post.d.ts +2 -2
- package/dist/tools/pinterest-tools/create-board.d.ts +16 -0
- package/dist/tools/pinterest-tools/create-board.js +24 -0
- package/dist/tools/pinterest-tools/create-board.js.map +1 -0
- package/dist/tools/pinterest-tools/create-pin.d.ts +22 -0
- package/dist/tools/pinterest-tools/create-pin.js +31 -0
- package/dist/tools/pinterest-tools/create-pin.js.map +1 -0
- package/dist/tools/pinterest-tools/delete-pin.d.ts +14 -0
- package/dist/tools/pinterest-tools/delete-pin.js +23 -0
- package/dist/tools/pinterest-tools/delete-pin.js.map +1 -0
- package/dist/tools/pinterest-tools/get-board-pins.d.ts +16 -0
- package/dist/tools/pinterest-tools/get-board-pins.js +34 -0
- package/dist/tools/pinterest-tools/get-board-pins.js.map +1 -0
- package/dist/tools/pinterest-tools/get-boards.d.ts +14 -0
- package/dist/tools/pinterest-tools/get-boards.js +33 -0
- package/dist/tools/pinterest-tools/get-boards.js.map +1 -0
- package/dist/tools/pinterest-tools/get-pin.d.ts +14 -0
- package/dist/tools/pinterest-tools/get-pin.js +31 -0
- package/dist/tools/pinterest-tools/get-pin.js.map +1 -0
- package/package.json +9 -2
package/README.md
CHANGED
|
@@ -20,6 +20,8 @@ An MCP (Model Context Protocol) server that lets AI assistants post and interact
|
|
|
20
20
|
| Mastodon | Get profile, create post, reply, search posts, boost post, favourite post, delete post |
|
|
21
21
|
| TikTok | Query creator info, get user info, post video, photo post, get post status |
|
|
22
22
|
| YouTube | Get channel info, search videos, get video info, list channel videos, get comments, post comment, update video |
|
|
23
|
+
| Pinterest | Get boards, create board, create pin, get pin, get board pins, delete pin |
|
|
24
|
+
| Email | Send email, send bulk email (drivers: SMTP, SendGrid, Mailgun) |
|
|
23
25
|
|
|
24
26
|
## Quick Start
|
|
25
27
|
|
|
@@ -72,7 +74,16 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
|
|
|
72
74
|
"MASTODON_ACCESS_TOKEN": "your_token",
|
|
73
75
|
"MASTODON_INSTANCE_URL": "https://mastodon.social",
|
|
74
76
|
"TIKTOK_ACCESS_TOKEN": "your_token",
|
|
75
|
-
"YOUTUBE_ACCESS_TOKEN": "your_token"
|
|
77
|
+
"YOUTUBE_ACCESS_TOKEN": "your_token",
|
|
78
|
+
"PINTEREST_ACCESS_TOKEN": "your_token",
|
|
79
|
+
"MAIL_MAILER": "smtp",
|
|
80
|
+
"MAIL_FROM_ADDRESS": "you@example.com",
|
|
81
|
+
"MAIL_FROM_NAME": "Your Name",
|
|
82
|
+
"MAIL_HOST": "smtp.gmail.com",
|
|
83
|
+
"MAIL_PORT": "587",
|
|
84
|
+
"MAIL_USERNAME": "you@gmail.com",
|
|
85
|
+
"MAIL_PASSWORD": "your_password",
|
|
86
|
+
"MAIL_ENCRYPTION": "tls"
|
|
76
87
|
}
|
|
77
88
|
}
|
|
78
89
|
}
|
|
@@ -196,6 +207,45 @@ Copy `example.env` to `.env` and fill in the credentials for the platforms you w
|
|
|
196
207
|
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
197
208
|
| `YOUTUBE_ACCESS_TOKEN` | OAuth 2.0 access token from the [Google Cloud Console](https://console.cloud.google.com) — requires `https://www.googleapis.com/auth/youtube` scope |
|
|
198
209
|
|
|
210
|
+
### Pinterest
|
|
211
|
+
|
|
212
|
+
| Variable | Description |
|
|
213
|
+
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
214
|
+
| `PINTEREST_ACCESS_TOKEN` | OAuth 2.0 Bearer token from the [Pinterest Developer Portal](https://developers.pinterest.com) — requires `boards:read boards:write pins:read pins:write` scopes |
|
|
215
|
+
|
|
216
|
+
### Email
|
|
217
|
+
|
|
218
|
+
Email uses a Laravel-style driver system. Set `MAIL_MAILER` to select your provider — only configure the variables for the driver you choose.
|
|
219
|
+
|
|
220
|
+
| Variable | Description |
|
|
221
|
+
| -------------------- | ---------------------------------------------------------------------- |
|
|
222
|
+
| `MAIL_MAILER` | Mail driver: `smtp`, `sendgrid`, or `mailgun` (default: `smtp`) |
|
|
223
|
+
| `MAIL_FROM_ADDRESS` | Sender email address (required for all drivers) |
|
|
224
|
+
| `MAIL_FROM_NAME` | Sender display name (optional) |
|
|
225
|
+
|
|
226
|
+
**SMTP** (`MAIL_MAILER=smtp`)
|
|
227
|
+
|
|
228
|
+
| Variable | Description |
|
|
229
|
+
| ----------------- | -------------------------------------------------------------------------- |
|
|
230
|
+
| `MAIL_HOST` | SMTP server hostname (e.g. `smtp.gmail.com`, `smtp.mailgun.org`) |
|
|
231
|
+
| `MAIL_PORT` | SMTP port (default: `587`) |
|
|
232
|
+
| `MAIL_USERNAME` | SMTP authentication username |
|
|
233
|
+
| `MAIL_PASSWORD` | SMTP authentication password |
|
|
234
|
+
| `MAIL_ENCRYPTION` | Connection security: `tls` (default), `ssl`, or `none` |
|
|
235
|
+
|
|
236
|
+
**SendGrid** (`MAIL_MAILER=sendgrid`)
|
|
237
|
+
|
|
238
|
+
| Variable | Description |
|
|
239
|
+
| ------------------ | -------------------------------------------------------------------------------------- |
|
|
240
|
+
| `SENDGRID_API_KEY` | API key from the [SendGrid dashboard](https://app.sendgrid.com/settings/api_keys) |
|
|
241
|
+
|
|
242
|
+
**Mailgun** (`MAIL_MAILER=mailgun`)
|
|
243
|
+
|
|
244
|
+
| Variable | Description |
|
|
245
|
+
| ----------------- | -------------------------------------------------------------------------------------------- |
|
|
246
|
+
| `MAILGUN_API_KEY` | API key from [Mailgun account settings](https://app.mailgun.com/app/account/security/api_keys) |
|
|
247
|
+
| `MAILGUN_DOMAIN` | Your Mailgun sending domain (e.g. `mg.yourdomain.com`) |
|
|
248
|
+
|
|
199
249
|
## Available Tools
|
|
200
250
|
|
|
201
251
|
### Telegram
|
|
@@ -317,6 +367,22 @@ Copy `example.env` to `.env` and fill in the credentials for the platforms you w
|
|
|
317
367
|
|
|
318
368
|
> **Note:** YouTube requires an OAuth 2.0 access token with the `https://www.googleapis.com/auth/youtube` scope. Enable the **YouTube Data API v3** in your [Google Cloud Console](https://console.cloud.google.com) project. Video uploads are not supported via this API — use the YouTube Studio or resumable upload flow directly.
|
|
319
369
|
|
|
370
|
+
### Pinterest
|
|
371
|
+
|
|
372
|
+
- **PINTEREST_GET_BOARDS** — List all boards on your Pinterest account (`pageSize`)
|
|
373
|
+
- **PINTEREST_CREATE_BOARD** — Create a new board (`name`, `description`)
|
|
374
|
+
- **PINTEREST_CREATE_PIN** — Create a pin on a board (`boardId`, `title`, `description`, `imageUrl`, `link`)
|
|
375
|
+
- **PINTEREST_GET_PIN** — Get details of a specific pin (`pinId`)
|
|
376
|
+
- **PINTEREST_GET_BOARD_PINS** — List all pins on a board (`boardId`, `pageSize`)
|
|
377
|
+
- **PINTEREST_DELETE_PIN** — Delete a pin by ID (`pinId`)
|
|
378
|
+
|
|
379
|
+
### Email
|
|
380
|
+
|
|
381
|
+
- **EMAIL_SEND** — Send an email to a single recipient (`to`, `subject`, `text`, `html`)
|
|
382
|
+
- **EMAIL_SEND_BULK** — Send the same email to multiple recipients (`recipients`, `subject`, `text`, `html`)
|
|
383
|
+
|
|
384
|
+
> The active mail driver is selected by `MAIL_MAILER`. Switching providers (e.g. from SMTP to SendGrid) requires only changing that one variable and providing the corresponding credentials — no code changes needed.
|
|
385
|
+
|
|
320
386
|
## Development
|
|
321
387
|
|
|
322
388
|
```bash
|
package/dist/index.js
CHANGED
|
@@ -2,10 +2,14 @@
|
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import { FastMCP } from "fastmcp";
|
|
4
4
|
import { CredentialsError } from "./lib/errors.js";
|
|
5
|
+
import { getBlueskyService } from "./services/bluesky-service.js";
|
|
5
6
|
import { getDiscordService } from "./services/discord-service.js";
|
|
7
|
+
import { getEmailService } from "./services/email-service.js";
|
|
6
8
|
import { getFacebookService } from "./services/facebook-service.js";
|
|
7
9
|
import { getInstagramService } from "./services/instagram-service.js";
|
|
8
10
|
import { getLinkedInService } from "./services/linkedin-service.js";
|
|
11
|
+
import { getMastodonService } from "./services/mastodon-service.js";
|
|
12
|
+
import { getPinterestService } from "./services/pinterest-service.js";
|
|
9
13
|
import { getRedditService } from "./services/reddit-service.js";
|
|
10
14
|
import { getSlackService } from "./services/slack-service.js";
|
|
11
15
|
import { getTelegramService } from "./services/telegram-service.js";
|
|
@@ -14,10 +18,16 @@ import { getTikTokService } from "./services/tiktok-service.js";
|
|
|
14
18
|
import { getTwitterService } from "./services/twitter-service.js";
|
|
15
19
|
import { getWhatsappService } from "./services/whatsapp-service.js";
|
|
16
20
|
import { getYouTubeService } from "./services/youtube-service.js";
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
21
|
+
import { createPostTool as blueskyCreatePostTool } from "./tools/bluesky-tools/create-post.js";
|
|
22
|
+
import { deletePostTool as blueskyDeletePostTool } from "./tools/bluesky-tools/delete-post.js";
|
|
23
|
+
import { getProfileTool as blueskyGetProfileTool } from "./tools/bluesky-tools/get-profile.js";
|
|
24
|
+
import { likePostTool as blueskyLikePostTool } from "./tools/bluesky-tools/like-post.js";
|
|
25
|
+
import { replyToPostTool as blueskyReplyToPostTool } from "./tools/bluesky-tools/reply-to-post.js";
|
|
26
|
+
import { searchPostsTool as blueskySearchPostsTool } from "./tools/bluesky-tools/search-posts.js";
|
|
19
27
|
import { getMessagesTool as discordGetMessagesTool } from "./tools/discord-tools/get-messages.js";
|
|
20
28
|
import { sendMessageTool as discordSendMessageTool } from "./tools/discord-tools/send-message.js";
|
|
29
|
+
import { sendBulkEmailTool } from "./tools/email-tools/send-bulk-email.js";
|
|
30
|
+
import { sendEmailTool } from "./tools/email-tools/send-email.js";
|
|
21
31
|
import { createPostTool as facebookCreatePostTool } from "./tools/facebook-tools/create-post.js";
|
|
22
32
|
import { getPostsTool as facebookGetPostsTool } from "./tools/facebook-tools/get-posts.js";
|
|
23
33
|
import { createPostTool as instagramCreatePostTool } from "./tools/instagram-tools/create-post.js";
|
|
@@ -29,9 +39,22 @@ import { getPostsTool as linkedInGetPostsTool } from "./tools/linkedin-tools/get
|
|
|
29
39
|
import { getProfileTool as linkedInGetProfileTool } from "./tools/linkedin-tools/get-profile.js";
|
|
30
40
|
import { likePostTool as linkedInLikePostTool } from "./tools/linkedin-tools/like-post.js";
|
|
31
41
|
import { searchPeopleTool as linkedInSearchPeopleTool } from "./tools/linkedin-tools/search-people.js";
|
|
42
|
+
import { boostPostTool as mastodonBoostPostTool } from "./tools/mastodon-tools/boost-post.js";
|
|
43
|
+
import { createPostTool as mastodonCreatePostTool } from "./tools/mastodon-tools/create-post.js";
|
|
44
|
+
import { deletePostTool as mastodonDeletePostTool } from "./tools/mastodon-tools/delete-post.js";
|
|
45
|
+
import { favouritePostTool as mastodonFavouritePostTool } from "./tools/mastodon-tools/favourite-post.js";
|
|
46
|
+
import { getProfileTool as mastodonGetProfileTool } from "./tools/mastodon-tools/get-profile.js";
|
|
47
|
+
import { replyToPostTool as mastodonReplyToPostTool } from "./tools/mastodon-tools/reply-to-post.js";
|
|
48
|
+
import { searchPostsTool as mastodonSearchPostsTool } from "./tools/mastodon-tools/search-posts.js";
|
|
49
|
+
import { createBoardTool as pinterestCreateBoardTool } from "./tools/pinterest-tools/create-board.js";
|
|
50
|
+
import { createPinTool as pinterestCreatePinTool } from "./tools/pinterest-tools/create-pin.js";
|
|
51
|
+
import { deletePinTool as pinterestDeletePinTool } from "./tools/pinterest-tools/delete-pin.js";
|
|
52
|
+
import { getBoardPinsTool as pinterestGetBoardPinsTool } from "./tools/pinterest-tools/get-board-pins.js";
|
|
53
|
+
import { getBoardsTool as pinterestGetBoardsTool } from "./tools/pinterest-tools/get-boards.js";
|
|
54
|
+
import { getPinTool as pinterestGetPinTool } from "./tools/pinterest-tools/get-pin.js";
|
|
32
55
|
import { commentTool as redditCommentTool } from "./tools/reddit-tools/comment.js";
|
|
33
|
-
import { getUserInfoTool as redditGetUserInfoTool } from "./tools/reddit-tools/get-user-info.js";
|
|
34
56
|
import { getPostsTool as redditGetPostsTool } from "./tools/reddit-tools/get-posts.js";
|
|
57
|
+
import { getUserInfoTool as redditGetUserInfoTool } from "./tools/reddit-tools/get-user-info.js";
|
|
35
58
|
import { searchTool as redditSearchTool } from "./tools/reddit-tools/search.js";
|
|
36
59
|
import { submitPostTool as redditSubmitPostTool } from "./tools/reddit-tools/submit-post.js";
|
|
37
60
|
import { voteTool as redditVoteTool } from "./tools/reddit-tools/vote.js";
|
|
@@ -69,19 +92,6 @@ import { listChannelVideosTool as youtubeListChannelVideosTool } from "./tools/y
|
|
|
69
92
|
import { postCommentTool as youtubePostCommentTool } from "./tools/youtube-tools/post-comment.js";
|
|
70
93
|
import { searchVideosTool as youtubeSearchVideosTool } from "./tools/youtube-tools/search-videos.js";
|
|
71
94
|
import { updateVideoTool as youtubeUpdateVideoTool } from "./tools/youtube-tools/update-video.js";
|
|
72
|
-
import { createPostTool as blueskyCreatePostTool } from "./tools/bluesky-tools/create-post.js";
|
|
73
|
-
import { deletePostTool as blueskyDeletePostTool } from "./tools/bluesky-tools/delete-post.js";
|
|
74
|
-
import { getProfileTool as blueskyGetProfileTool } from "./tools/bluesky-tools/get-profile.js";
|
|
75
|
-
import { likePostTool as blueskyLikePostTool } from "./tools/bluesky-tools/like-post.js";
|
|
76
|
-
import { replyToPostTool as blueskyReplyToPostTool } from "./tools/bluesky-tools/reply-to-post.js";
|
|
77
|
-
import { searchPostsTool as blueskySearchPostsTool } from "./tools/bluesky-tools/search-posts.js";
|
|
78
|
-
import { boostPostTool as mastodonBoostPostTool } from "./tools/mastodon-tools/boost-post.js";
|
|
79
|
-
import { createPostTool as mastodonCreatePostTool } from "./tools/mastodon-tools/create-post.js";
|
|
80
|
-
import { deletePostTool as mastodonDeletePostTool } from "./tools/mastodon-tools/delete-post.js";
|
|
81
|
-
import { favouritePostTool as mastodonFavouritePostTool } from "./tools/mastodon-tools/favourite-post.js";
|
|
82
|
-
import { getProfileTool as mastodonGetProfileTool } from "./tools/mastodon-tools/get-profile.js";
|
|
83
|
-
import { replyToPostTool as mastodonReplyToPostTool } from "./tools/mastodon-tools/reply-to-post.js";
|
|
84
|
-
import { searchPostsTool as mastodonSearchPostsTool } from "./tools/mastodon-tools/search-posts.js";
|
|
85
95
|
const require = createRequire(import.meta.url);
|
|
86
96
|
const { version } = require("../package.json");
|
|
87
97
|
function checkPlatform(name, init) {
|
|
@@ -114,6 +124,8 @@ async function main() {
|
|
|
114
124
|
checkPlatform("YouTube", getYouTubeService);
|
|
115
125
|
checkPlatform("Bluesky", getBlueskyService);
|
|
116
126
|
checkPlatform("Mastodon", getMastodonService);
|
|
127
|
+
checkPlatform("Pinterest", getPinterestService);
|
|
128
|
+
checkPlatform("Email", getEmailService);
|
|
117
129
|
console.error("");
|
|
118
130
|
const server = new FastMCP({ name: "Social MCP Server", version });
|
|
119
131
|
// Telegram
|
|
@@ -196,6 +208,16 @@ async function main() {
|
|
|
196
208
|
server.addTool(mastodonFavouritePostTool);
|
|
197
209
|
server.addTool(mastodonGetProfileTool);
|
|
198
210
|
server.addTool(mastodonSearchPostsTool);
|
|
211
|
+
// Pinterest
|
|
212
|
+
server.addTool(pinterestGetBoardsTool);
|
|
213
|
+
server.addTool(pinterestCreateBoardTool);
|
|
214
|
+
server.addTool(pinterestCreatePinTool);
|
|
215
|
+
server.addTool(pinterestGetPinTool);
|
|
216
|
+
server.addTool(pinterestGetBoardPinsTool);
|
|
217
|
+
server.addTool(pinterestDeletePinTool);
|
|
218
|
+
// Email
|
|
219
|
+
server.addTool(sendEmailTool);
|
|
220
|
+
server.addTool(sendBulkEmailTool);
|
|
199
221
|
try {
|
|
200
222
|
await server.start({ transportType: "stdio" });
|
|
201
223
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,YAAY,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAAE,cAAc,IAAI,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACnG,OAAO,EAAE,YAAY,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7F,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,YAAY,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,YAAY,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAAE,gBAAgB,IAAI,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACvG,OAAO,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,YAAY,IAAI,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC7F,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,eAAe,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC9F,OAAO,EAAE,gBAAgB,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AACjG,OAAO,EAAE,eAAe,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC/F,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC/F,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC/F,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,IAAI,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAC7G,OAAO,EAAE,iBAAiB,IAAI,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AACvG,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC1F,OAAO,EAAE,oBAAoB,IAAI,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAChH,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,eAAe,IAAI,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACpG,OAAO,EAAE,kBAAkB,IAAI,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAC5G,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AACtG,OAAO,EAAE,qBAAqB,IAAI,4BAA4B,EAAE,MAAM,8CAA8C,CAAC;AACrH,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACrG,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC/F,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC/F,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC/F,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AACnG,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EAAE,aAAa,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC9F,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,iBAAiB,IAAI,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAC1G,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,eAAe,IAAI,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AACrG,OAAO,EAAE,eAAe,IAAI,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAEpG,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAE5C,CAAC;AAEF,SAAS,aAAa,CAAC,IAAY,EAAE,IAAmB;IACvD,IAAI,CAAC;QACJ,IAAI,EAAE,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,GAAG,YAAY,gBAAgB,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,KAAK,CACZ,UAAU,IAAI,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACrE,CAAC;QACH,CAAC;IACF,CAAC;AACF,CAAC;AAED,KAAK,UAAU,IAAI;IAClB,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC5D,aAAa,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC9C,aAAa,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;IAC9C,aAAa,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC5C,aAAa,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC9C,aAAa,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC9C,aAAa,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAChD,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACxC,aAAa,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC9C,aAAa,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC1C,aAAa,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC5C,aAAa,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC1C,aAAa,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC5C,aAAa,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC5C,aAAa,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC9C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAElB,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,CAAC;IAEnE,WAAW;IACX,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAChC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAClC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEhC,UAAU;IACV,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9B,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAChC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9B,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEhC,UAAU;IACV,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAEvC,WAAW;IACX,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAExC,WAAW;IACX,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAErC,YAAY;IACZ,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEtC,QAAQ;IACR,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEtC,WAAW;IACX,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAEzC,SAAS;IACT,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAClC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEtC,UAAU;IACV,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACpC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEtC,SAAS;IACT,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC3C,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC1C,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACpC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAExC,UAAU;IACV,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC1C,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAC7C,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAEvC,UAAU;IACV,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACpC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAEvC,WAAW;IACX,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC1C,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAExC,IAAI,CAAC;QACJ,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACtB,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;IAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -51,4 +51,27 @@ export declare const config: {
|
|
|
51
51
|
instanceUrl: string;
|
|
52
52
|
accessToken: string;
|
|
53
53
|
};
|
|
54
|
+
pinterest: {
|
|
55
|
+
baseUrl: string;
|
|
56
|
+
accessToken: string;
|
|
57
|
+
};
|
|
58
|
+
email: {
|
|
59
|
+
mailer: string;
|
|
60
|
+
fromAddress: string;
|
|
61
|
+
fromName: string;
|
|
62
|
+
smtp: {
|
|
63
|
+
host: string;
|
|
64
|
+
port: number;
|
|
65
|
+
username: string;
|
|
66
|
+
password: string;
|
|
67
|
+
encryption: "tls" | "ssl" | "none";
|
|
68
|
+
};
|
|
69
|
+
sendgrid: {
|
|
70
|
+
apiKey: string;
|
|
71
|
+
};
|
|
72
|
+
mailgun: {
|
|
73
|
+
apiKey: string;
|
|
74
|
+
domain: string;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
54
77
|
};
|
package/dist/lib/config.js
CHANGED
|
@@ -52,5 +52,28 @@ export const config = {
|
|
|
52
52
|
instanceUrl: process.env.MASTODON_INSTANCE_URL || "https://mastodon.social",
|
|
53
53
|
accessToken: process.env.MASTODON_ACCESS_TOKEN || "",
|
|
54
54
|
},
|
|
55
|
+
pinterest: {
|
|
56
|
+
baseUrl: "https://api.pinterest.com/v5",
|
|
57
|
+
accessToken: process.env.PINTEREST_ACCESS_TOKEN || "",
|
|
58
|
+
},
|
|
59
|
+
email: {
|
|
60
|
+
mailer: process.env.MAIL_MAILER || "smtp",
|
|
61
|
+
fromAddress: process.env.MAIL_FROM_ADDRESS || "",
|
|
62
|
+
fromName: process.env.MAIL_FROM_NAME || "",
|
|
63
|
+
smtp: {
|
|
64
|
+
host: process.env.MAIL_HOST || "",
|
|
65
|
+
port: parseInt(process.env.MAIL_PORT || "587", 10),
|
|
66
|
+
username: process.env.MAIL_USERNAME || "",
|
|
67
|
+
password: process.env.MAIL_PASSWORD || "",
|
|
68
|
+
encryption: (process.env.MAIL_ENCRYPTION || "tls"),
|
|
69
|
+
},
|
|
70
|
+
sendgrid: {
|
|
71
|
+
apiKey: process.env.SENDGRID_API_KEY || "",
|
|
72
|
+
},
|
|
73
|
+
mailgun: {
|
|
74
|
+
apiKey: process.env.MAILGUN_API_KEY || "",
|
|
75
|
+
domain: process.env.MAILGUN_DOMAIN || "",
|
|
76
|
+
},
|
|
77
|
+
},
|
|
55
78
|
};
|
|
56
79
|
//# sourceMappingURL=config.js.map
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACxC,MAAM,SAAS,GAAG,8BAA8B,gBAAgB,EAAE,CAAC;AAEnE,MAAM,CAAC,MAAM,MAAM,GAAG;IACrB,OAAO,EAAE;QACR,OAAO,EAAE,6BAA6B;QACtC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;KAC7C;IACD,QAAQ,EAAE;QACT,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE;QACpD,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE;KACzD;IACD,QAAQ,EAAE;QACT,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE;KACpD;IACD,SAAS,EAAE;QACV,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE;KACrD;IACD,QAAQ,EAAE;QACT,OAAO,EAAE,6BAA6B;QACtC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE;KACpD;IACD,MAAM,EAAE;QACP,OAAO,EAAE,0BAA0B;QACnC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE;QAC5C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE;QACpD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE;QAC3C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE;QAC3C,SAAS,EAAE,uCAAuC;KAClD;IACD,OAAO,EAAE;QACR,OAAO,EAAE,gCAAgC;QACzC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE;QACnD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE;KACzC;IACD,MAAM,EAAE;QACP,OAAO,EAAE,gCAAgC;QACzC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE;KAClD;IACD,OAAO,EAAE;QACR,OAAO,EAAE,uCAAuC;QAChD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE;KACnD;IACD,OAAO,EAAE;QACR,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,qBAAqB;QAC7D,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE;QAChD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE;KACnD;IACD,QAAQ,EAAE;QACT,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,yBAAyB;QAC3E,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE;KACpD;CACD,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class EmailService {
|
|
2
|
+
private mailer;
|
|
3
|
+
constructor();
|
|
4
|
+
send(to: string | string[], subject: string, text: string, html?: string): Promise<void>;
|
|
5
|
+
private fromHeader;
|
|
6
|
+
private sendViaSMTP;
|
|
7
|
+
private sendViaSendGrid;
|
|
8
|
+
private sendViaMailgun;
|
|
9
|
+
}
|
|
10
|
+
export declare function getEmailService(): EmailService;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import nodemailer from "nodemailer";
|
|
2
|
+
import { config } from "../lib/config.js";
|
|
3
|
+
import { CredentialsError } from "../lib/errors.js";
|
|
4
|
+
export class EmailService {
|
|
5
|
+
mailer;
|
|
6
|
+
constructor() {
|
|
7
|
+
const { mailer, fromAddress, smtp, sendgrid, mailgun } = config.email;
|
|
8
|
+
if (!fromAddress) {
|
|
9
|
+
throw new CredentialsError("Email", ["MAIL_FROM_ADDRESS", "MAIL_MAILER"]);
|
|
10
|
+
}
|
|
11
|
+
this.mailer = mailer;
|
|
12
|
+
if (mailer === "smtp") {
|
|
13
|
+
if (!smtp.host || !smtp.username || !smtp.password) {
|
|
14
|
+
throw new CredentialsError("Email (SMTP)", [
|
|
15
|
+
"MAIL_HOST",
|
|
16
|
+
"MAIL_USERNAME",
|
|
17
|
+
"MAIL_PASSWORD",
|
|
18
|
+
]);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
else if (mailer === "sendgrid") {
|
|
22
|
+
if (!sendgrid.apiKey) {
|
|
23
|
+
throw new CredentialsError("Email (SendGrid)", ["SENDGRID_API_KEY"]);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else if (mailer === "mailgun") {
|
|
27
|
+
if (!mailgun.apiKey || !mailgun.domain) {
|
|
28
|
+
throw new CredentialsError("Email (Mailgun)", [
|
|
29
|
+
"MAILGUN_API_KEY",
|
|
30
|
+
"MAILGUN_DOMAIN",
|
|
31
|
+
]);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
throw new Error(`Unsupported MAIL_MAILER: "${mailer}". Supported values: smtp, sendgrid, mailgun`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async send(to, subject, text, html) {
|
|
39
|
+
switch (this.mailer) {
|
|
40
|
+
case "smtp":
|
|
41
|
+
return this.sendViaSMTP(to, subject, text, html);
|
|
42
|
+
case "sendgrid":
|
|
43
|
+
return this.sendViaSendGrid(to, subject, text, html);
|
|
44
|
+
case "mailgun":
|
|
45
|
+
return this.sendViaMailgun(to, subject, text, html);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
fromHeader() {
|
|
49
|
+
const { fromName, fromAddress } = config.email;
|
|
50
|
+
return fromName ? `"${fromName}" <${fromAddress}>` : fromAddress;
|
|
51
|
+
}
|
|
52
|
+
async sendViaSMTP(to, subject, text, html) {
|
|
53
|
+
const { host, port, username, password, encryption } = config.email.smtp;
|
|
54
|
+
const transporter = nodemailer.createTransport({
|
|
55
|
+
host,
|
|
56
|
+
port,
|
|
57
|
+
secure: encryption === "ssl",
|
|
58
|
+
requireTLS: encryption === "tls",
|
|
59
|
+
auth: { user: username, pass: password },
|
|
60
|
+
});
|
|
61
|
+
await transporter.sendMail({
|
|
62
|
+
from: this.fromHeader(),
|
|
63
|
+
to: Array.isArray(to) ? to.join(", ") : to,
|
|
64
|
+
subject,
|
|
65
|
+
text,
|
|
66
|
+
html,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
async sendViaSendGrid(to, subject, text, html) {
|
|
70
|
+
const recipients = Array.isArray(to) ? to : [to];
|
|
71
|
+
const personalizations = recipients.map((email) => ({
|
|
72
|
+
to: [{ email }],
|
|
73
|
+
}));
|
|
74
|
+
const body = {
|
|
75
|
+
personalizations,
|
|
76
|
+
from: {
|
|
77
|
+
email: config.email.fromAddress,
|
|
78
|
+
...(config.email.fromName ? { name: config.email.fromName } : {}),
|
|
79
|
+
},
|
|
80
|
+
subject,
|
|
81
|
+
content: [
|
|
82
|
+
{ type: "text/plain", value: text },
|
|
83
|
+
...(html ? [{ type: "text/html", value: html }] : []),
|
|
84
|
+
],
|
|
85
|
+
};
|
|
86
|
+
const response = await fetch("https://api.sendgrid.com/v3/mail/send", {
|
|
87
|
+
method: "POST",
|
|
88
|
+
headers: {
|
|
89
|
+
Authorization: `Bearer ${config.email.sendgrid.apiKey}`,
|
|
90
|
+
"Content-Type": "application/json",
|
|
91
|
+
},
|
|
92
|
+
body: JSON.stringify(body),
|
|
93
|
+
});
|
|
94
|
+
if (!response.ok) {
|
|
95
|
+
const error = await response.text();
|
|
96
|
+
throw new Error(`SendGrid error (${response.status}): ${error}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
async sendViaMailgun(to, subject, text, html) {
|
|
100
|
+
const { apiKey, domain } = config.email.mailgun;
|
|
101
|
+
const formData = new FormData();
|
|
102
|
+
formData.append("from", this.fromHeader());
|
|
103
|
+
formData.append("to", Array.isArray(to) ? to.join(",") : to);
|
|
104
|
+
formData.append("subject", subject);
|
|
105
|
+
formData.append("text", text);
|
|
106
|
+
if (html)
|
|
107
|
+
formData.append("html", html);
|
|
108
|
+
const credentials = Buffer.from(`api:${apiKey}`).toString("base64");
|
|
109
|
+
const response = await fetch(`https://api.mailgun.net/v3/${domain}/messages`, {
|
|
110
|
+
method: "POST",
|
|
111
|
+
headers: { Authorization: `Basic ${credentials}` },
|
|
112
|
+
body: formData,
|
|
113
|
+
});
|
|
114
|
+
if (!response.ok) {
|
|
115
|
+
const error = await response.text();
|
|
116
|
+
throw new Error(`Mailgun error (${response.status}): ${error}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
let _instance;
|
|
121
|
+
export function getEmailService() {
|
|
122
|
+
if (!_instance)
|
|
123
|
+
_instance = new EmailService();
|
|
124
|
+
return _instance;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=email-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-service.js","sourceRoot":"","sources":["../../src/services/email-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export declare class PinterestService {
|
|
2
|
+
private baseUrl;
|
|
3
|
+
private headers;
|
|
4
|
+
constructor();
|
|
5
|
+
getBoards(pageSize?: number): Promise<{
|
|
6
|
+
items: {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
description?: string | undefined;
|
|
10
|
+
pin_count?: number | undefined;
|
|
11
|
+
created_at?: string | undefined;
|
|
12
|
+
}[];
|
|
13
|
+
}>;
|
|
14
|
+
createBoard(name: string, description?: string): Promise<{
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
description?: string | undefined;
|
|
18
|
+
pin_count?: number | undefined;
|
|
19
|
+
created_at?: string | undefined;
|
|
20
|
+
}>;
|
|
21
|
+
createPin(boardId: string, title: string, description: string, link: string, imageUrl: string): Promise<{
|
|
22
|
+
id: string;
|
|
23
|
+
title?: string | undefined;
|
|
24
|
+
description?: string | undefined;
|
|
25
|
+
link?: string | undefined;
|
|
26
|
+
board_id?: string | undefined;
|
|
27
|
+
created_at?: string | undefined;
|
|
28
|
+
}>;
|
|
29
|
+
getPin(pinId: string): Promise<{
|
|
30
|
+
id: string;
|
|
31
|
+
title?: string | undefined;
|
|
32
|
+
description?: string | undefined;
|
|
33
|
+
link?: string | undefined;
|
|
34
|
+
board_id?: string | undefined;
|
|
35
|
+
created_at?: string | undefined;
|
|
36
|
+
}>;
|
|
37
|
+
getBoardPins(boardId: string, pageSize?: number): Promise<{
|
|
38
|
+
items: {
|
|
39
|
+
id: string;
|
|
40
|
+
title?: string | undefined;
|
|
41
|
+
description?: string | undefined;
|
|
42
|
+
link?: string | undefined;
|
|
43
|
+
board_id?: string | undefined;
|
|
44
|
+
created_at?: string | undefined;
|
|
45
|
+
}[];
|
|
46
|
+
}>;
|
|
47
|
+
deletePin(pinId: string): Promise<void>;
|
|
48
|
+
}
|
|
49
|
+
export declare function getPinterestService(): PinterestService;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { config } from "../lib/config.js";
|
|
3
|
+
import { CredentialsError } from "../lib/errors.js";
|
|
4
|
+
import { fetchJson } from "../lib/http.js";
|
|
5
|
+
const boardSchema = z.object({
|
|
6
|
+
id: z.string(),
|
|
7
|
+
name: z.string(),
|
|
8
|
+
description: z.string().optional(),
|
|
9
|
+
pin_count: z.number().optional(),
|
|
10
|
+
created_at: z.string().optional(),
|
|
11
|
+
});
|
|
12
|
+
const boardListSchema = z.object({
|
|
13
|
+
items: z.array(boardSchema),
|
|
14
|
+
});
|
|
15
|
+
const pinSchema = z.object({
|
|
16
|
+
id: z.string(),
|
|
17
|
+
title: z.string().optional(),
|
|
18
|
+
description: z.string().optional(),
|
|
19
|
+
link: z.string().optional(),
|
|
20
|
+
board_id: z.string().optional(),
|
|
21
|
+
created_at: z.string().optional(),
|
|
22
|
+
});
|
|
23
|
+
const pinListSchema = z.object({
|
|
24
|
+
items: z.array(pinSchema),
|
|
25
|
+
});
|
|
26
|
+
export class PinterestService {
|
|
27
|
+
baseUrl = config.pinterest.baseUrl;
|
|
28
|
+
headers;
|
|
29
|
+
constructor() {
|
|
30
|
+
if (!config.pinterest.accessToken) {
|
|
31
|
+
throw new CredentialsError("Pinterest", ["PINTEREST_ACCESS_TOKEN"]);
|
|
32
|
+
}
|
|
33
|
+
this.headers = {
|
|
34
|
+
"Content-Type": "application/json",
|
|
35
|
+
Authorization: `Bearer ${config.pinterest.accessToken}`,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
async getBoards(pageSize = 25) {
|
|
39
|
+
return fetchJson(`${this.baseUrl}/boards?page_size=${pageSize}`, { method: "GET", headers: this.headers }, boardListSchema);
|
|
40
|
+
}
|
|
41
|
+
async createBoard(name, description) {
|
|
42
|
+
return fetchJson(`${this.baseUrl}/boards`, {
|
|
43
|
+
method: "POST",
|
|
44
|
+
headers: this.headers,
|
|
45
|
+
body: JSON.stringify({ name, description }),
|
|
46
|
+
}, boardSchema);
|
|
47
|
+
}
|
|
48
|
+
async createPin(boardId, title, description, link, imageUrl) {
|
|
49
|
+
return fetchJson(`${this.baseUrl}/pins`, {
|
|
50
|
+
method: "POST",
|
|
51
|
+
headers: this.headers,
|
|
52
|
+
body: JSON.stringify({
|
|
53
|
+
board_id: boardId,
|
|
54
|
+
title,
|
|
55
|
+
description,
|
|
56
|
+
link,
|
|
57
|
+
media_source: { source_type: "image_url", url: imageUrl },
|
|
58
|
+
}),
|
|
59
|
+
}, pinSchema);
|
|
60
|
+
}
|
|
61
|
+
async getPin(pinId) {
|
|
62
|
+
return fetchJson(`${this.baseUrl}/pins/${pinId}`, { method: "GET", headers: this.headers }, pinSchema);
|
|
63
|
+
}
|
|
64
|
+
async getBoardPins(boardId, pageSize = 25) {
|
|
65
|
+
return fetchJson(`${this.baseUrl}/boards/${boardId}/pins?page_size=${pageSize}`, { method: "GET", headers: this.headers }, pinListSchema);
|
|
66
|
+
}
|
|
67
|
+
async deletePin(pinId) {
|
|
68
|
+
const response = await fetch(`${this.baseUrl}/pins/${pinId}`, {
|
|
69
|
+
method: "DELETE",
|
|
70
|
+
headers: this.headers,
|
|
71
|
+
});
|
|
72
|
+
if (!response.ok) {
|
|
73
|
+
const text = await response.text();
|
|
74
|
+
throw new Error(`Pinterest API error: ${text}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
let _instance;
|
|
79
|
+
export function getPinterestService() {
|
|
80
|
+
if (!_instance)
|
|
81
|
+
_instance = new PinterestService();
|
|
82
|
+
return _instance;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=pinterest-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pinterest-service.js","sourceRoot":"","sources":["../../src/services/pinterest-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const sendBulkEmailParams: z.ZodObject<{
|
|
3
|
+
recipients: z.ZodArray<z.ZodString>;
|
|
4
|
+
subject: z.ZodString;
|
|
5
|
+
text: z.ZodString;
|
|
6
|
+
html: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
type SendBulkEmailParams = z.infer<typeof sendBulkEmailParams>;
|
|
9
|
+
export declare const sendBulkEmailTool: {
|
|
10
|
+
readonly name: "EMAIL_SEND_BULK";
|
|
11
|
+
readonly description: "Send the same email to multiple recipients via the configured mail driver (smtp, sendgrid, or mailgun)";
|
|
12
|
+
readonly parameters: z.ZodObject<{
|
|
13
|
+
recipients: z.ZodArray<z.ZodString>;
|
|
14
|
+
subject: z.ZodString;
|
|
15
|
+
text: z.ZodString;
|
|
16
|
+
html: z.ZodOptional<z.ZodString>;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
readonly execute: (params: SendBulkEmailParams) => Promise<string>;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { CredentialsError } from "../../lib/errors.js";
|
|
3
|
+
import { getEmailService } from "../../services/email-service.js";
|
|
4
|
+
const sendBulkEmailParams = z.object({
|
|
5
|
+
recipients: z
|
|
6
|
+
.array(z.string().email())
|
|
7
|
+
.min(1)
|
|
8
|
+
.describe("List of recipient email addresses"),
|
|
9
|
+
subject: z.string().min(1).describe("Email subject line"),
|
|
10
|
+
text: z.string().min(1).describe("Plain-text body of the email"),
|
|
11
|
+
html: z
|
|
12
|
+
.string()
|
|
13
|
+
.optional()
|
|
14
|
+
.describe("Optional HTML body (falls back to text if omitted)"),
|
|
15
|
+
});
|
|
16
|
+
export const sendBulkEmailTool = {
|
|
17
|
+
name: "EMAIL_SEND_BULK",
|
|
18
|
+
description: "Send the same email to multiple recipients via the configured mail driver (smtp, sendgrid, or mailgun)",
|
|
19
|
+
parameters: sendBulkEmailParams,
|
|
20
|
+
execute: async (params) => {
|
|
21
|
+
try {
|
|
22
|
+
await getEmailService().send(params.recipients, params.subject, params.text, params.html);
|
|
23
|
+
return `Email sent successfully to ${params.recipients.length} recipient(s): ${params.recipients.join(", ")}.`;
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
if (error instanceof CredentialsError)
|
|
27
|
+
return `Error: ${error.message}`;
|
|
28
|
+
return `Error sending bulk email: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=send-bulk-email.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-bulk-email.js","sourceRoot":"","sources":["../../../src/tools/email-tools/send-bulk-email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,UAAU,EAAE,CAAC;SACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,mCAAmC,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACzD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAChE,IAAI,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;CAChE,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAChC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACV,wGAAwG;IACzG,UAAU,EAAE,mBAAmB;IAC/B,OAAO,EAAE,KAAK,EAAE,MAA2B,EAAE,EAAE;QAC9C,IAAI,CAAC;YACJ,MAAM,eAAe,EAAE,CAAC,IAAI,CAC3B,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,IAAI,CACX,CAAC;YACF,OAAO,8BAA8B,MAAM,CAAC,UAAU,CAAC,MAAM,kBAAkB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAChH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,gBAAgB;gBAAE,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QAChG,CAAC;IACF,CAAC;CACQ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const sendEmailParams: z.ZodObject<{
|
|
3
|
+
to: z.ZodString;
|
|
4
|
+
subject: z.ZodString;
|
|
5
|
+
text: z.ZodString;
|
|
6
|
+
html: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
type SendEmailParams = z.infer<typeof sendEmailParams>;
|
|
9
|
+
export declare const sendEmailTool: {
|
|
10
|
+
readonly name: "EMAIL_SEND";
|
|
11
|
+
readonly description: "Send a single email via the configured mail driver (smtp, sendgrid, or mailgun)";
|
|
12
|
+
readonly parameters: z.ZodObject<{
|
|
13
|
+
to: z.ZodString;
|
|
14
|
+
subject: z.ZodString;
|
|
15
|
+
text: z.ZodString;
|
|
16
|
+
html: z.ZodOptional<z.ZodString>;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
readonly execute: (params: SendEmailParams) => Promise<string>;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { CredentialsError } from "../../lib/errors.js";
|
|
3
|
+
import { getEmailService } from "../../services/email-service.js";
|
|
4
|
+
const sendEmailParams = z.object({
|
|
5
|
+
to: z.string().email().describe("Recipient email address"),
|
|
6
|
+
subject: z.string().min(1).describe("Email subject line"),
|
|
7
|
+
text: z.string().min(1).describe("Plain-text body of the email"),
|
|
8
|
+
html: z
|
|
9
|
+
.string()
|
|
10
|
+
.optional()
|
|
11
|
+
.describe("Optional HTML body (falls back to text if omitted)"),
|
|
12
|
+
});
|
|
13
|
+
export const sendEmailTool = {
|
|
14
|
+
name: "EMAIL_SEND",
|
|
15
|
+
description: "Send a single email via the configured mail driver (smtp, sendgrid, or mailgun)",
|
|
16
|
+
parameters: sendEmailParams,
|
|
17
|
+
execute: async (params) => {
|
|
18
|
+
try {
|
|
19
|
+
await getEmailService().send(params.to, params.subject, params.text, params.html);
|
|
20
|
+
return `Email sent successfully to ${params.to}.`;
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
if (error instanceof CredentialsError)
|
|
24
|
+
return `Error: ${error.message}`;
|
|
25
|
+
return `Error sending email: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=send-email.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-email.js","sourceRoot":"","sources":["../../../src/tools/email-tools/send-email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC1D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACzD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAChE,IAAI,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;CAChE,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC5B,IAAI,EAAE,YAAY;IAClB,WAAW,EACV,iFAAiF;IAClF,UAAU,EAAE,eAAe;IAC3B,OAAO,EAAE,KAAK,EAAE,MAAuB,EAAE,EAAE;QAC1C,IAAI,CAAC;YACJ,MAAM,eAAe,EAAE,CAAC,IAAI,CAC3B,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,IAAI,CACX,CAAC;YACF,OAAO,8BAA8B,MAAM,CAAC,EAAE,GAAG,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,gBAAgB;gBAAE,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QAC3F,CAAC;IACF,CAAC;CACQ,CAAC"}
|
|
@@ -2,9 +2,9 @@ import { z } from "zod";
|
|
|
2
2
|
declare const createPostParams: z.ZodObject<{
|
|
3
3
|
status: z.ZodString;
|
|
4
4
|
visibility: z.ZodDefault<z.ZodEnum<{
|
|
5
|
-
private: "private";
|
|
6
5
|
public: "public";
|
|
7
6
|
unlisted: "unlisted";
|
|
7
|
+
private: "private";
|
|
8
8
|
direct: "direct";
|
|
9
9
|
}>>;
|
|
10
10
|
}, z.core.$strip>;
|
|
@@ -15,9 +15,9 @@ export declare const createPostTool: {
|
|
|
15
15
|
readonly parameters: z.ZodObject<{
|
|
16
16
|
status: z.ZodString;
|
|
17
17
|
visibility: z.ZodDefault<z.ZodEnum<{
|
|
18
|
-
private: "private";
|
|
19
18
|
public: "public";
|
|
20
19
|
unlisted: "unlisted";
|
|
20
|
+
private: "private";
|
|
21
21
|
direct: "direct";
|
|
22
22
|
}>>;
|
|
23
23
|
}, z.core.$strip>;
|
|
@@ -3,9 +3,9 @@ declare const replyToPostParams: z.ZodObject<{
|
|
|
3
3
|
status: z.ZodString;
|
|
4
4
|
inReplyToId: z.ZodString;
|
|
5
5
|
visibility: z.ZodDefault<z.ZodEnum<{
|
|
6
|
-
private: "private";
|
|
7
6
|
public: "public";
|
|
8
7
|
unlisted: "unlisted";
|
|
8
|
+
private: "private";
|
|
9
9
|
direct: "direct";
|
|
10
10
|
}>>;
|
|
11
11
|
}, z.core.$strip>;
|
|
@@ -17,9 +17,9 @@ export declare const replyToPostTool: {
|
|
|
17
17
|
status: z.ZodString;
|
|
18
18
|
inReplyToId: z.ZodString;
|
|
19
19
|
visibility: z.ZodDefault<z.ZodEnum<{
|
|
20
|
-
private: "private";
|
|
21
20
|
public: "public";
|
|
22
21
|
unlisted: "unlisted";
|
|
22
|
+
private: "private";
|
|
23
23
|
direct: "direct";
|
|
24
24
|
}>>;
|
|
25
25
|
}, z.core.$strip>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const createBoardParams: z.ZodObject<{
|
|
3
|
+
name: z.ZodString;
|
|
4
|
+
description: z.ZodOptional<z.ZodString>;
|
|
5
|
+
}, z.core.$strip>;
|
|
6
|
+
type CreateBoardParams = z.infer<typeof createBoardParams>;
|
|
7
|
+
export declare const createBoardTool: {
|
|
8
|
+
readonly name: "PINTEREST_CREATE_BOARD";
|
|
9
|
+
readonly description: "Create a new board on Pinterest";
|
|
10
|
+
readonly parameters: z.ZodObject<{
|
|
11
|
+
name: z.ZodString;
|
|
12
|
+
description: z.ZodOptional<z.ZodString>;
|
|
13
|
+
}, z.core.$strip>;
|
|
14
|
+
readonly execute: (params: CreateBoardParams) => Promise<string>;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { CredentialsError } from "../../lib/errors.js";
|
|
3
|
+
import { getPinterestService } from "../../services/pinterest-service.js";
|
|
4
|
+
const createBoardParams = z.object({
|
|
5
|
+
name: z.string().min(1).describe("The name of the board"),
|
|
6
|
+
description: z.string().optional().describe("Optional board description"),
|
|
7
|
+
});
|
|
8
|
+
export const createBoardTool = {
|
|
9
|
+
name: "PINTEREST_CREATE_BOARD",
|
|
10
|
+
description: "Create a new board on Pinterest",
|
|
11
|
+
parameters: createBoardParams,
|
|
12
|
+
execute: async (params) => {
|
|
13
|
+
try {
|
|
14
|
+
const board = await getPinterestService().createBoard(params.name, params.description);
|
|
15
|
+
return `Board created successfully!\n\nName: ${board.name}\nID: ${board.id}${board.description ? `\nDescription: ${board.description}` : ""}`;
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
if (error instanceof CredentialsError)
|
|
19
|
+
return `Error: ${error.message}`;
|
|
20
|
+
return `Error creating Pinterest board: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=create-board.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-board.js","sourceRoot":"","sources":["../../../src/tools/pinterest-tools/create-board.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACzD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CACzE,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC9B,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,iCAAiC;IAC9C,UAAU,EAAE,iBAAiB;IAC7B,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,EAAE;QAC5C,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,MAAM,mBAAmB,EAAE,CAAC,WAAW,CACpD,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,WAAW,CAClB,CAAC;YACF,OAAO,wCAAwC,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC/I,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,gBAAgB;gBAAE,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QACtG,CAAC;IACF,CAAC;CACQ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const createPinParams: z.ZodObject<{
|
|
3
|
+
boardId: z.ZodString;
|
|
4
|
+
title: z.ZodString;
|
|
5
|
+
description: z.ZodString;
|
|
6
|
+
imageUrl: z.ZodString;
|
|
7
|
+
link: z.ZodOptional<z.ZodString>;
|
|
8
|
+
}, z.core.$strip>;
|
|
9
|
+
type CreatePinParams = z.infer<typeof createPinParams>;
|
|
10
|
+
export declare const createPinTool: {
|
|
11
|
+
readonly name: "PINTEREST_CREATE_PIN";
|
|
12
|
+
readonly description: "Create a new pin on a Pinterest board";
|
|
13
|
+
readonly parameters: z.ZodObject<{
|
|
14
|
+
boardId: z.ZodString;
|
|
15
|
+
title: z.ZodString;
|
|
16
|
+
description: z.ZodString;
|
|
17
|
+
imageUrl: z.ZodString;
|
|
18
|
+
link: z.ZodOptional<z.ZodString>;
|
|
19
|
+
}, z.core.$strip>;
|
|
20
|
+
readonly execute: (params: CreatePinParams) => Promise<string>;
|
|
21
|
+
};
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { CredentialsError } from "../../lib/errors.js";
|
|
3
|
+
import { getPinterestService } from "../../services/pinterest-service.js";
|
|
4
|
+
const createPinParams = z.object({
|
|
5
|
+
boardId: z.string().min(1).describe("The ID of the board to pin to"),
|
|
6
|
+
title: z.string().min(1).describe("The title of the pin"),
|
|
7
|
+
description: z.string().describe("The description of the pin"),
|
|
8
|
+
imageUrl: z.string().url().describe("Publicly accessible URL of the image"),
|
|
9
|
+
link: z
|
|
10
|
+
.string()
|
|
11
|
+
.url()
|
|
12
|
+
.optional()
|
|
13
|
+
.describe("Destination URL when the pin is clicked"),
|
|
14
|
+
});
|
|
15
|
+
export const createPinTool = {
|
|
16
|
+
name: "PINTEREST_CREATE_PIN",
|
|
17
|
+
description: "Create a new pin on a Pinterest board",
|
|
18
|
+
parameters: createPinParams,
|
|
19
|
+
execute: async (params) => {
|
|
20
|
+
try {
|
|
21
|
+
const pin = await getPinterestService().createPin(params.boardId, params.title, params.description, params.link ?? "", params.imageUrl);
|
|
22
|
+
return `Pin created successfully!\n\nPin ID: ${pin.id}\nTitle: ${pin.title ?? params.title}${pin.link ? `\nLink: ${pin.link}` : ""}`;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
if (error instanceof CredentialsError)
|
|
26
|
+
return `Error: ${error.message}`;
|
|
27
|
+
return `Error creating Pinterest pin: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=create-pin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-pin.js","sourceRoot":"","sources":["../../../src/tools/pinterest-tools/create-pin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACpE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACzD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC9D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IAC3E,IAAI,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CAAC,yCAAyC,CAAC;CACrD,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC5B,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,uCAAuC;IACpD,UAAU,EAAE,eAAe;IAC3B,OAAO,EAAE,KAAK,EAAE,MAAuB,EAAE,EAAE;QAC1C,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,MAAM,mBAAmB,EAAE,CAAC,SAAS,CAChD,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,IAAI,IAAI,EAAE,EACjB,MAAM,CAAC,QAAQ,CACf,CAAC;YACF,OAAO,wCAAwC,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACtI,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,gBAAgB;gBAAE,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpG,CAAC;IACF,CAAC;CACQ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const deletePinParams: z.ZodObject<{
|
|
3
|
+
pinId: z.ZodString;
|
|
4
|
+
}, z.core.$strip>;
|
|
5
|
+
type DeletePinParams = z.infer<typeof deletePinParams>;
|
|
6
|
+
export declare const deletePinTool: {
|
|
7
|
+
readonly name: "PINTEREST_DELETE_PIN";
|
|
8
|
+
readonly description: "Delete a Pinterest pin by ID";
|
|
9
|
+
readonly parameters: z.ZodObject<{
|
|
10
|
+
pinId: z.ZodString;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
readonly execute: (params: DeletePinParams) => Promise<string>;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { CredentialsError } from "../../lib/errors.js";
|
|
3
|
+
import { getPinterestService } from "../../services/pinterest-service.js";
|
|
4
|
+
const deletePinParams = z.object({
|
|
5
|
+
pinId: z.string().min(1).describe("The ID of the pin to delete"),
|
|
6
|
+
});
|
|
7
|
+
export const deletePinTool = {
|
|
8
|
+
name: "PINTEREST_DELETE_PIN",
|
|
9
|
+
description: "Delete a Pinterest pin by ID",
|
|
10
|
+
parameters: deletePinParams,
|
|
11
|
+
execute: async (params) => {
|
|
12
|
+
try {
|
|
13
|
+
await getPinterestService().deletePin(params.pinId);
|
|
14
|
+
return `Pin ${params.pinId} deleted successfully.`;
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
if (error instanceof CredentialsError)
|
|
18
|
+
return `Error: ${error.message}`;
|
|
19
|
+
return `Error deleting Pinterest pin: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=delete-pin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-pin.js","sourceRoot":"","sources":["../../../src/tools/pinterest-tools/delete-pin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;CAChE,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC5B,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,8BAA8B;IAC3C,UAAU,EAAE,eAAe;IAC3B,OAAO,EAAE,KAAK,EAAE,MAAuB,EAAE,EAAE;QAC1C,IAAI,CAAC;YACJ,MAAM,mBAAmB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpD,OAAO,OAAO,MAAM,CAAC,KAAK,wBAAwB,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,gBAAgB;gBAAE,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpG,CAAC;IACF,CAAC;CACQ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const getBoardPinsParams: z.ZodObject<{
|
|
3
|
+
boardId: z.ZodString;
|
|
4
|
+
pageSize: z.ZodOptional<z.ZodNumber>;
|
|
5
|
+
}, z.core.$strip>;
|
|
6
|
+
type GetBoardPinsParams = z.infer<typeof getBoardPinsParams>;
|
|
7
|
+
export declare const getBoardPinsTool: {
|
|
8
|
+
readonly name: "PINTEREST_GET_BOARD_PINS";
|
|
9
|
+
readonly description: "List all pins on a specific Pinterest board";
|
|
10
|
+
readonly parameters: z.ZodObject<{
|
|
11
|
+
boardId: z.ZodString;
|
|
12
|
+
pageSize: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
}, z.core.$strip>;
|
|
14
|
+
readonly execute: (params: GetBoardPinsParams) => Promise<string>;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { CredentialsError } from "../../lib/errors.js";
|
|
3
|
+
import { getPinterestService } from "../../services/pinterest-service.js";
|
|
4
|
+
const getBoardPinsParams = z.object({
|
|
5
|
+
boardId: z.string().min(1).describe("The ID of the board"),
|
|
6
|
+
pageSize: z
|
|
7
|
+
.number()
|
|
8
|
+
.min(1)
|
|
9
|
+
.max(250)
|
|
10
|
+
.optional()
|
|
11
|
+
.describe("Number of pins to return (default 25, max 250)"),
|
|
12
|
+
});
|
|
13
|
+
export const getBoardPinsTool = {
|
|
14
|
+
name: "PINTEREST_GET_BOARD_PINS",
|
|
15
|
+
description: "List all pins on a specific Pinterest board",
|
|
16
|
+
parameters: getBoardPinsParams,
|
|
17
|
+
execute: async (params) => {
|
|
18
|
+
try {
|
|
19
|
+
const result = await getPinterestService().getBoardPins(params.boardId, params.pageSize);
|
|
20
|
+
if (result.items.length === 0)
|
|
21
|
+
return "No pins found on this board.";
|
|
22
|
+
const list = result.items
|
|
23
|
+
.map((p) => `• ${p.title ?? "(no title)"} (ID: ${p.id})${p.description ? ` — ${p.description}` : ""}${p.link ? ` [${p.link}]` : ""}`)
|
|
24
|
+
.join("\n");
|
|
25
|
+
return `Pins on board ${params.boardId} (${result.items.length}):\n\n${list}`;
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
if (error instanceof CredentialsError)
|
|
29
|
+
return `Error: ${error.message}`;
|
|
30
|
+
return `Error fetching Pinterest board pins: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=get-board-pins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-board-pins.js","sourceRoot":"","sources":["../../../src/tools/pinterest-tools/get-board-pins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC1D,QAAQ,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,gDAAgD,CAAC;CAC5D,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC/B,IAAI,EAAE,0BAA0B;IAChC,WAAW,EAAE,6CAA6C;IAC1D,UAAU,EAAE,kBAAkB;IAC9B,OAAO,EAAE,KAAK,EAAE,MAA0B,EAAE,EAAE;QAC7C,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC,YAAY,CACtD,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,QAAQ,CACf,CAAC;YACF,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,8BAA8B,CAAC;YACrE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK;iBACvB,GAAG,CACH,CAAC,CAAC,EAAE,EAAE,CACL,KAAK,CAAC,CAAC,KAAK,IAAI,YAAY,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACzH;iBACA,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,OAAO,iBAAiB,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,KAAK,CAAC,MAAM,SAAS,IAAI,EAAE,CAAC;QAC/E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,gBAAgB;gBAAE,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QAC3G,CAAC;IACF,CAAC;CACQ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const getBoardsParams: z.ZodObject<{
|
|
3
|
+
pageSize: z.ZodOptional<z.ZodNumber>;
|
|
4
|
+
}, z.core.$strip>;
|
|
5
|
+
type GetBoardsParams = z.infer<typeof getBoardsParams>;
|
|
6
|
+
export declare const getBoardsTool: {
|
|
7
|
+
readonly name: "PINTEREST_GET_BOARDS";
|
|
8
|
+
readonly description: "List all boards for the authenticated Pinterest account";
|
|
9
|
+
readonly parameters: z.ZodObject<{
|
|
10
|
+
pageSize: z.ZodOptional<z.ZodNumber>;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
readonly execute: (params: GetBoardsParams) => Promise<string>;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { CredentialsError } from "../../lib/errors.js";
|
|
3
|
+
import { getPinterestService } from "../../services/pinterest-service.js";
|
|
4
|
+
const getBoardsParams = z.object({
|
|
5
|
+
pageSize: z
|
|
6
|
+
.number()
|
|
7
|
+
.min(1)
|
|
8
|
+
.max(250)
|
|
9
|
+
.optional()
|
|
10
|
+
.describe("Number of boards to return (default 25, max 250)"),
|
|
11
|
+
});
|
|
12
|
+
export const getBoardsTool = {
|
|
13
|
+
name: "PINTEREST_GET_BOARDS",
|
|
14
|
+
description: "List all boards for the authenticated Pinterest account",
|
|
15
|
+
parameters: getBoardsParams,
|
|
16
|
+
execute: async (params) => {
|
|
17
|
+
try {
|
|
18
|
+
const result = await getPinterestService().getBoards(params.pageSize);
|
|
19
|
+
if (result.items.length === 0)
|
|
20
|
+
return "No boards found.";
|
|
21
|
+
const list = result.items
|
|
22
|
+
.map((b) => `• ${b.name} (ID: ${b.id})${b.description ? ` — ${b.description}` : ""}${b.pin_count !== undefined ? ` [${b.pin_count} pins]` : ""}`)
|
|
23
|
+
.join("\n");
|
|
24
|
+
return `Pinterest boards (${result.items.length}):\n\n${list}`;
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
if (error instanceof CredentialsError)
|
|
28
|
+
return `Error: ${error.message}`;
|
|
29
|
+
return `Error fetching Pinterest boards: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=get-boards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-boards.js","sourceRoot":"","sources":["../../../src/tools/pinterest-tools/get-boards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,QAAQ,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kDAAkD,CAAC;CAC9D,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC5B,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,yDAAyD;IACtE,UAAU,EAAE,eAAe;IAC3B,OAAO,EAAE,KAAK,EAAE,MAAuB,EAAE,EAAE;QAC1C,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtE,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,kBAAkB,CAAC;YACzD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK;iBACvB,GAAG,CACH,CAAC,CAAC,EAAE,EAAE,CACL,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CACrI;iBACA,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,OAAO,qBAAqB,MAAM,CAAC,KAAK,CAAC,MAAM,SAAS,IAAI,EAAE,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,gBAAgB;gBAAE,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO,oCAAoC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QACvG,CAAC;IACF,CAAC;CACQ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const getPinParams: z.ZodObject<{
|
|
3
|
+
pinId: z.ZodString;
|
|
4
|
+
}, z.core.$strip>;
|
|
5
|
+
type GetPinParams = z.infer<typeof getPinParams>;
|
|
6
|
+
export declare const getPinTool: {
|
|
7
|
+
readonly name: "PINTEREST_GET_PIN";
|
|
8
|
+
readonly description: "Get details of a specific Pinterest pin by ID";
|
|
9
|
+
readonly parameters: z.ZodObject<{
|
|
10
|
+
pinId: z.ZodString;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
readonly execute: (params: GetPinParams) => Promise<string>;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { CredentialsError } from "../../lib/errors.js";
|
|
3
|
+
import { getPinterestService } from "../../services/pinterest-service.js";
|
|
4
|
+
const getPinParams = z.object({
|
|
5
|
+
pinId: z.string().min(1).describe("The ID of the pin to retrieve"),
|
|
6
|
+
});
|
|
7
|
+
export const getPinTool = {
|
|
8
|
+
name: "PINTEREST_GET_PIN",
|
|
9
|
+
description: "Get details of a specific Pinterest pin by ID",
|
|
10
|
+
parameters: getPinParams,
|
|
11
|
+
execute: async (params) => {
|
|
12
|
+
try {
|
|
13
|
+
const pin = await getPinterestService().getPin(params.pinId);
|
|
14
|
+
const lines = [
|
|
15
|
+
`Pin ID: ${pin.id}`,
|
|
16
|
+
pin.title ? `Title: ${pin.title}` : null,
|
|
17
|
+
pin.description ? `Description: ${pin.description}` : null,
|
|
18
|
+
pin.link ? `Link: ${pin.link}` : null,
|
|
19
|
+
pin.board_id ? `Board ID: ${pin.board_id}` : null,
|
|
20
|
+
pin.created_at ? `Created: ${pin.created_at}` : null,
|
|
21
|
+
].filter(Boolean);
|
|
22
|
+
return lines.join("\n");
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
if (error instanceof CredentialsError)
|
|
26
|
+
return `Error: ${error.message}`;
|
|
27
|
+
return `Error fetching Pinterest pin: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=get-pin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-pin.js","sourceRoot":"","sources":["../../../src/tools/pinterest-tools/get-pin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CAClE,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,+CAA+C;IAC5D,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,KAAK,EAAE,MAAoB,EAAE,EAAE;QACvC,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,MAAM,mBAAmB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAG;gBACb,WAAW,GAAG,CAAC,EAAE,EAAE;gBACnB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI;gBACxC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC1D,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;gBACrC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;gBACjD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI;aACpD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,gBAAgB;gBAAE,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpG,CAAC;IACF,CAAC;CACQ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "social-mcp",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "MCP server for posting and interacting across social media platforms: Twitter, Instagram, Facebook, WhatsApp, Discord, Telegram, Slack, LinkedIn, Reddit, Threads, and
|
|
3
|
+
"version": "1.8.0",
|
|
4
|
+
"description": "MCP server for posting and interacting across social media platforms: Twitter, Instagram, Facebook, WhatsApp, Discord, Telegram, Slack, LinkedIn, Reddit, Threads, TikTok, Pinterest, and Email (SMTP/SendGrid/Mailgun)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
@@ -42,6 +42,11 @@
|
|
|
42
42
|
"reddit",
|
|
43
43
|
"threads",
|
|
44
44
|
"tiktok",
|
|
45
|
+
"pinterest",
|
|
46
|
+
"email",
|
|
47
|
+
"smtp",
|
|
48
|
+
"sendgrid",
|
|
49
|
+
"mailgun",
|
|
45
50
|
"ai",
|
|
46
51
|
"llm",
|
|
47
52
|
"automation"
|
|
@@ -53,6 +58,7 @@
|
|
|
53
58
|
"@slack/web-api": "^7.14.1",
|
|
54
59
|
"dotenv": "^17.3.1",
|
|
55
60
|
"fastmcp": "^3.33.0",
|
|
61
|
+
"nodemailer": "^8.0.6",
|
|
56
62
|
"telegraf": "^4.16.3",
|
|
57
63
|
"twitter-api-v2": "^1.29.0",
|
|
58
64
|
"zod": "^4.3.6"
|
|
@@ -61,6 +67,7 @@
|
|
|
61
67
|
"@biomejs/biome": "*",
|
|
62
68
|
"@changesets/cli": "^2.29.8",
|
|
63
69
|
"@types/node": "^22.15.19",
|
|
70
|
+
"@types/nodemailer": "^8.0.0",
|
|
64
71
|
"husky": "^9.1.7",
|
|
65
72
|
"lint-staged": "^15.5.2",
|
|
66
73
|
"shx": "^0.3.4",
|