Skip to content

Commit 7bf9251

Browse files
authored
feat(tools): added smtp, sendgrid, mailgun, linkedin, fixed permissions in context menu (#2133)
* feat(tools): added twilio sendgrid integration * feat(tools): added smtp, sendgrid, mailgun, fixed permissions in context menu * added top level mocks for sporadically failing tests * incr type safety
1 parent 21a640a commit 7bf9251

File tree

107 files changed

+6379
-127
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

107 files changed

+6379
-127
lines changed

apps/docs/components/icons.tsx

Lines changed: 89 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1464,11 +1464,17 @@ export function DiscordIcon(props: SVGProps<SVGSVGElement>) {
14641464

14651465
export function LinkedInIcon(props: SVGProps<SVGSVGElement>) {
14661466
return (
1467-
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='4 4 42 42' width='1em' height='1em'>
1468-
<path
1469-
fill='currentColor'
1470-
d='M41,4H9C6.24,4,4,6.24,4,9v32c0,2.76,2.24,5,5,5h32c2.76,0,5-2.24,5-5V9C46,6.24,43.76,4,41,4z M17,20v19h-6V20H17z M11,14.47c0-1.4,1.2-2.47,3-2.47s2.93,1.07,3,2.47c0,1.4-1.12,2.53-3,2.53C12.2,17,11,15.87,11,14.47z M39,39h-6c0,0,0-9.26,0-10 c0-2-1-4-3.5-4.04h-0.08C27,24.96,26,27.02,26,29c0,0.91,0,10,0,10h-6V20h6v2.56c0,0,1.93-2.56,5.81-2.56 c3.97,0,7.19,2.73,7.19,8.26V39z'
1471-
/>
1467+
<svg {...props} height='72' viewBox='0 0 72 72' width='72' xmlns='http://www.w3.org/2000/svg'>
1468+
<g fill='none' fillRule='evenodd'>
1469+
<path
1470+
d='M8,72 L64,72 C68.418278,72 72,68.418278 72,64 L72,8 C72,3.581722 68.418278,-8.11624501e-16 64,0 L8,0 C3.581722,8.11624501e-16 -5.41083001e-16,3.581722 0,8 L0,64 C5.41083001e-16,68.418278 3.581722,72 8,72 Z'
1471+
fill='#0072B1'
1472+
/>
1473+
<path
1474+
d='M62,62 L51.315625,62 L51.315625,43.8021149 C51.315625,38.8127542 49.4197917,36.0245323 45.4707031,36.0245323 C41.1746094,36.0245323 38.9300781,38.9261103 38.9300781,43.8021149 L38.9300781,62 L28.6333333,62 L28.6333333,27.3333333 L38.9300781,27.3333333 L38.9300781,32.0029283 C38.9300781,32.0029283 42.0260417,26.2742151 49.3825521,26.2742151 C56.7356771,26.2742151 62,30.7644705 62,40.051212 L62,62 Z M16.349349,22.7940133 C12.8420573,22.7940133 10,19.9296567 10,16.3970067 C10,12.8643566 12.8420573,10 16.349349,10 C19.8566406,10 22.6970052,12.8643566 22.6970052,16.3970067 C22.6970052,19.9296567 19.8566406,22.7940133 16.349349,22.7940133 Z M11.0325521,62 L21.769401,62 L21.769401,27.3333333 L11.0325521,27.3333333 L11.0325521,62 Z'
1475+
fill='#FFF'
1476+
/>
1477+
</g>
14721478
</svg>
14731479
)
14741480
}
@@ -4344,3 +4350,81 @@ export function PylonIcon(props: SVGProps<SVGSVGElement>) {
43444350
</svg>
43454351
)
43464352
}
4353+
4354+
export function SendgridIcon(props: SVGProps<SVGSVGElement>) {
4355+
return (
4356+
<svg
4357+
{...props}
4358+
width='800px'
4359+
height='800px'
4360+
viewBox='0 0 256 256'
4361+
version='1.1'
4362+
xmlns='http://www.w3.org/2000/svg'
4363+
xmlnsXlink='http://www.w3.org/1999/xlink'
4364+
preserveAspectRatio='xMidYMid'
4365+
>
4366+
<g>
4367+
<path
4368+
d='M256.000405,0 L256.000405,170.666936 L170.666936,170.666936 L170.666936,255.996382 L0.00201096905,255.996382 L0.002,170.666 L0,170.666936 L0,85.3314569 L85.3334681,85.3314569 L85.3334681,0 L256.000405,0 Z'
4369+
fill='#9DD6E3'
4370+
/>
4371+
<polygon
4372+
fill='#3F72AB'
4373+
points='0.00201096905 255.996382 85.3354791 255.996382 85.3354791 170.662915 0.00201096905 170.662915'
4374+
/>
4375+
<polygon
4376+
fill='#00A9D1'
4377+
points='170.666936 170.666936 256.000405 170.666936 256.000405 85.3314569 170.666936 85.3314569'
4378+
/>
4379+
<polygon
4380+
fill='#00A9D1'
4381+
points='85.3334681 85.3334679 170.666936 85.3334679 170.666936 0 85.3334681 0'
4382+
/>
4383+
<polygon
4384+
fill='#2191C4'
4385+
points='85.3334681 170.664925 170.666936 170.664925 170.666936 85.3314569 85.3334681 85.3314569'
4386+
/>
4387+
<polygon
4388+
fill='#3F72AB'
4389+
points='170.666936 85.3334679 256.000405 85.3334679 256.000405 0 170.666936 0'
4390+
/>
4391+
</g>
4392+
</svg>
4393+
)
4394+
}
4395+
4396+
export function MailgunIcon(props: SVGProps<SVGSVGElement>) {
4397+
return (
4398+
<svg
4399+
{...props}
4400+
fill='currentColor'
4401+
xmlns='http://www.w3.org/2000/svg'
4402+
xmlSpace='preserve'
4403+
viewBox='0 0 512 512'
4404+
>
4405+
<path d='M256.5 159.5c-53.5 0-97 43.5-97 97s43.5 97 97 97 97-43.5 97-97-43.5-97-97-97m-151.1 97c0-83.4 67.7-151.1 151.1-151.1s151.1 67.7 151.1 151.1c0 5.8-.5 11-1 16.3-1 14.7 9.4 25.7 24.1 25.7 24.7 0 27.3-32 27.3-42.5 0-111.7-90.2-202-202-202S54 144.3 54 256s90.2 202 202 202c59.3 0 112.3-25.7 149.5-66.1l41.4 34.6C400.3 479 332.1 512 256 512 114.4 512 0 397.1 0 256 0 114.4 114.9 0 256 0c141.6 0 256 114.9 256 256 0 56.7-27.3 102.8-81.3 102.8-24.1 0-38.3-11-46.7-23.1-26.8 43-74 71.3-128.5 71.3-82.4.6-150.1-67.1-150.1-150.5m151.1-44.6c24.7 0 44.6 19.9 44.6 44.1 0 24.7-19.9 44.6-44.6 44.6s-44.6-19.9-44.6-44.6c.6-24.1 20-44.1 44.6-44.1' />
4406+
</svg>
4407+
)
4408+
}
4409+
4410+
export function SmtpIcon(props: SVGProps<SVGSVGElement>) {
4411+
return (
4412+
<svg
4413+
{...props}
4414+
width='30'
4415+
height='24'
4416+
viewBox='0 0 30 24'
4417+
fill='none'
4418+
xmlns='http://www.w3.org/2000/svg'
4419+
>
4420+
<path
4421+
d='M2.35742 5.83288L11.7674 12.1071C13.0656 12.9712 13.7141 13.404 14.4151 13.5725C15.0352 13.7208 15.681 13.7208 16.2998 13.5725C17.0008 13.404 17.6492 12.9712 18.9475 12.1071L28.3574 5.83288M8.82844 21.7219H21.8864C24.1513 21.7219 25.2837 21.7219 26.1492 21.2811C26.9097 20.8931 27.5278 20.2744 27.9152 19.5137C28.3574 18.6482 28.3574 17.5158 28.3574 15.2509V7.97102C28.3574 5.70616 28.3574 4.57373 27.9166 3.70823C27.5288 2.94727 26.9102 2.32858 26.1492 1.94084C25.2837 1.5 24.1513 1.5 21.8864 1.5H8.82844C6.56358 1.5 5.43115 1.5 4.56566 1.94084C3.80519 2.32881 3.187 2.94747 2.79961 3.70823C2.35742 4.57373 2.35742 5.70616 2.35742 7.97102V15.2509C2.35742 17.5158 2.35742 18.6482 2.79826 19.5137C3.186 20.2747 3.80469 20.8933 4.56566 21.2811C5.43115 21.7219 6.56358 21.7219 8.82844 21.7219Z'
4422+
stroke='currentColor'
4423+
strokeWidth='2.5'
4424+
strokeLinecap='round'
4425+
strokeLinejoin='round'
4426+
/>
4427+
<circle cx='24' cy='6' r='4' fill='currentColor' stroke='none' />
4428+
</svg>
4429+
)
4430+
}

apps/docs/components/ui/icon-mapping.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,10 @@ import {
3737
JinaAIIcon,
3838
JiraIcon,
3939
LinearIcon,
40+
LinkedInIcon,
4041
LinkupIcon,
4142
MailchimpIcon,
43+
MailgunIcon,
4244
Mem0Icon,
4345
MicrosoftExcelIcon,
4446
MicrosoftOneDriveIcon,
@@ -65,9 +67,11 @@ import {
6567
ResendIcon,
6668
S3Icon,
6769
SalesforceIcon,
70+
SendgridIcon,
6871
SentryIcon,
6972
SerperIcon,
7073
SlackIcon,
74+
SmtpIcon,
7175
STTIcon,
7276
StagehandIcon,
7377
StripeIcon,
@@ -117,10 +121,12 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
117121
stripe: StripeIcon,
118122
stagehand_agent: StagehandIcon,
119123
stagehand: StagehandIcon,
124+
smtp: SmtpIcon,
120125
slack: SlackIcon,
121126
sharepoint: MicrosoftSharepointIcon,
122127
serper: SerperIcon,
123128
sentry: SentryIcon,
129+
sendgrid: SendgridIcon,
124130
salesforce: SalesforceIcon,
125131
s3: S3Icon,
126132
resend: ResendIcon,
@@ -146,8 +152,10 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
146152
microsoft_excel: MicrosoftExcelIcon,
147153
memory: BrainIcon,
148154
mem0: Mem0Icon,
155+
mailgun: MailgunIcon,
149156
mailchimp: MailchimpIcon,
150157
linkup: LinkupIcon,
158+
linkedin: LinkedInIcon,
151159
linear: LinearIcon,
152160
knowledge: PackageSearchIcon,
153161
jira: JiraIcon,
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
---
2+
title: LinkedIn
3+
description: Share posts and manage your LinkedIn presence
4+
---
5+
6+
import { BlockInfoCard } from "@/components/ui/block-info-card"
7+
8+
<BlockInfoCard
9+
type="linkedin"
10+
color="#0072B1"
11+
/>
12+
13+
{/* MANUAL-CONTENT-START:intro */}
14+
[LinkedIn](https://www.linkedin.com) is the world’s largest professional networking platform, empowering users to build their careers, connect with their network, and share professional content. LinkedIn is widely used by professionals across industries for personal branding, recruiting, job search, and business development.
15+
16+
With LinkedIn, you can easily share posts to your personal feed to engage with your network, and access information about your profile to highlight your professional achievements. Automated integration with Sim allows you to leverage LinkedIn functionality programmatically—enabling agents and workflows to post updates, report on your professional presence, and keep your feed active without manual effort.
17+
18+
Key LinkedIn features available through this integration include:
19+
20+
- **Share Posts:** Automatically publish professional updates, articles, or announcements to your LinkedIn personal feed.
21+
- **Profile Information:** Retrieve detailed information about your LinkedIn profile to monitor or use in downstream tasks within your workflows.
22+
23+
These capabilities make it easy to keep your LinkedIn network engaged and to extend your professional reach efficiently as part of your AI or workflow automation strategy.
24+
{/* MANUAL-CONTENT-END */}
25+
26+
27+
## Usage Instructions
28+
29+
Integrate LinkedIn into workflows. Share posts to your personal feed and access your LinkedIn profile information.
30+
31+
32+
33+
## Tools
34+
35+
### `linkedin_share_post`
36+
37+
Share a post to your personal LinkedIn feed
38+
39+
#### Input
40+
41+
| Parameter | Type | Required | Description |
42+
| --------- | ---- | -------- | ----------- |
43+
| `text` | string | Yes | The text content of your LinkedIn post |
44+
| `visibility` | string | No | Who can see this post: "PUBLIC" or "CONNECTIONS" \(default: "PUBLIC"\) |
45+
| `request` | string | No | No description |
46+
| `output` | string | No | No description |
47+
| `output` | string | No | No description |
48+
| `specificContent` | string | No | No description |
49+
| `shareCommentary` | string | No | No description |
50+
| `visibility` | string | No | No description |
51+
| `headers` | string | No | No description |
52+
| `output` | string | No | No description |
53+
| `output` | string | No | No description |
54+
| `output` | string | No | No description |
55+
56+
#### Output
57+
58+
| Parameter | Type | Description |
59+
| --------- | ---- | ----------- |
60+
| `success` | boolean | Operation success status |
61+
| `postId` | string | Created post ID |
62+
| `profile` | json | LinkedIn profile information |
63+
| `error` | string | Error message if operation failed |
64+
65+
### `linkedin_get_profile`
66+
67+
Retrieve your LinkedIn profile information
68+
69+
#### Input
70+
71+
| Parameter | Type | Required | Description |
72+
| --------- | ---- | -------- | ----------- |
73+
74+
#### Output
75+
76+
| Parameter | Type | Description |
77+
| --------- | ---- | ----------- |
78+
| `success` | boolean | Operation success status |
79+
| `postId` | string | Created post ID |
80+
| `profile` | json | LinkedIn profile information |
81+
| `error` | string | Error message if operation failed |
82+
83+
84+
85+
## Notes
86+
87+
- Category: `tools`
88+
- Type: `linkedin`

0 commit comments

Comments
 (0)