@opentabs-dev/opentabs-plugin-linkedin 0.0.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +159 -0
  2. package/dist/adapter.iife.js +14733 -0
  3. package/dist/adapter.iife.js.map +7 -0
  4. package/dist/index.d.ts +14 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +32 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/linkedin-api.d.ts +34 -0
  9. package/dist/linkedin-api.d.ts.map +1 -0
  10. package/dist/linkedin-api.js +200 -0
  11. package/dist/linkedin-api.js.map +1 -0
  12. package/dist/tools/get-conversation-messages.d.ts +14 -0
  13. package/dist/tools/get-conversation-messages.d.ts.map +1 -0
  14. package/dist/tools/get-conversation-messages.js +27 -0
  15. package/dist/tools/get-conversation-messages.js.map +1 -0
  16. package/dist/tools/get-current-user.d.ts +14 -0
  17. package/dist/tools/get-current-user.d.ts.map +1 -0
  18. package/dist/tools/get-current-user.js +21 -0
  19. package/dist/tools/get-current-user.js.map +1 -0
  20. package/dist/tools/get-mailbox-counts.d.ts +8 -0
  21. package/dist/tools/get-mailbox-counts.d.ts.map +1 -0
  22. package/dist/tools/get-mailbox-counts.js +26 -0
  23. package/dist/tools/get-mailbox-counts.js.map +1 -0
  24. package/dist/tools/get-user-profile.d.ts +19 -0
  25. package/dist/tools/get-user-profile.d.ts.map +1 -0
  26. package/dist/tools/get-user-profile.js +37 -0
  27. package/dist/tools/get-user-profile.js.map +1 -0
  28. package/dist/tools/list-conversations.d.ts +17 -0
  29. package/dist/tools/list-conversations.d.ts.map +1 -0
  30. package/dist/tools/list-conversations.js +26 -0
  31. package/dist/tools/list-conversations.js.map +1 -0
  32. package/dist/tools/schemas.d.ts +213 -0
  33. package/dist/tools/schemas.d.ts.map +1 -0
  34. package/dist/tools/schemas.js +128 -0
  35. package/dist/tools/schemas.js.map +1 -0
  36. package/dist/tools/send-message.d.ts +8 -0
  37. package/dist/tools/send-message.d.ts.map +1 -0
  38. package/dist/tools/send-message.js +38 -0
  39. package/dist/tools/send-message.js.map +1 -0
  40. package/dist/tools.json +421 -0
  41. package/package.json +54 -0
@@ -0,0 +1,213 @@
1
+ import { z } from 'zod';
2
+ interface ImageArtifact {
3
+ width?: number;
4
+ fileIdentifyingUrlPathSegment?: string;
5
+ }
6
+ export declare const currentUserSchema: z.ZodObject<{
7
+ plain_id: z.ZodNumber;
8
+ first_name: z.ZodString;
9
+ last_name: z.ZodString;
10
+ occupation: z.ZodString;
11
+ public_identifier: z.ZodString;
12
+ profile_urn: z.ZodString;
13
+ profile_picture_url: z.ZodString;
14
+ is_premium: z.ZodBoolean;
15
+ }, z.core.$strip>;
16
+ export interface RawMeResponse {
17
+ plainId?: number;
18
+ miniProfile?: {
19
+ firstName?: string;
20
+ lastName?: string;
21
+ occupation?: string;
22
+ publicIdentifier?: string;
23
+ dashEntityUrn?: string;
24
+ entityUrn?: string;
25
+ picture?: {
26
+ 'com.linkedin.common.VectorImage'?: {
27
+ rootUrl?: string;
28
+ artifacts?: Array<{
29
+ width?: number;
30
+ fileIdentifyingUrlPathSegment?: string;
31
+ }>;
32
+ };
33
+ };
34
+ };
35
+ premiumSubscriber?: boolean;
36
+ }
37
+ export declare const mapCurrentUser: (data: RawMeResponse) => {
38
+ plain_id: number;
39
+ first_name: string;
40
+ last_name: string;
41
+ occupation: string;
42
+ public_identifier: string;
43
+ profile_urn: string;
44
+ profile_picture_url: string;
45
+ is_premium: boolean;
46
+ };
47
+ export declare const profileSchema: z.ZodObject<{
48
+ first_name: z.ZodString;
49
+ last_name: z.ZodString;
50
+ headline: z.ZodString;
51
+ public_identifier: z.ZodString;
52
+ profile_urn: z.ZodString;
53
+ profile_picture_url: z.ZodString;
54
+ location: z.ZodString;
55
+ country: z.ZodString;
56
+ is_premium: z.ZodBoolean;
57
+ is_influencer: z.ZodBoolean;
58
+ is_creator: z.ZodBoolean;
59
+ }, z.core.$strip>;
60
+ interface RawProfileElement {
61
+ firstName?: string;
62
+ lastName?: string;
63
+ headline?: string;
64
+ publicIdentifier?: string;
65
+ entityUrn?: string;
66
+ profilePicture?: {
67
+ displayImageReference?: {
68
+ vectorImage?: {
69
+ rootUrl?: string;
70
+ artifacts?: ImageArtifact[];
71
+ };
72
+ };
73
+ };
74
+ geoLocation?: {
75
+ geo?: {
76
+ defaultLocalizedNameWithoutCountryName?: string;
77
+ country?: {
78
+ defaultLocalizedName?: string;
79
+ };
80
+ };
81
+ };
82
+ premium?: boolean;
83
+ influencer?: boolean;
84
+ creator?: boolean;
85
+ }
86
+ export declare const mapProfile: (el: RawProfileElement) => {
87
+ first_name: string;
88
+ last_name: string;
89
+ headline: string;
90
+ public_identifier: string;
91
+ profile_urn: string;
92
+ profile_picture_url: string;
93
+ location: string;
94
+ country: string;
95
+ is_premium: boolean;
96
+ is_influencer: boolean;
97
+ is_creator: boolean;
98
+ };
99
+ export declare const conversationSchema: z.ZodObject<{
100
+ conversation_urn: z.ZodString;
101
+ title: z.ZodString;
102
+ last_message_text: z.ZodString;
103
+ last_message_at: z.ZodNumber;
104
+ is_read: z.ZodBoolean;
105
+ notification_status: z.ZodString;
106
+ participants: z.ZodArray<z.ZodObject<{
107
+ name: z.ZodString;
108
+ profile_urn: z.ZodString;
109
+ profile_picture_url: z.ZodString;
110
+ }, z.core.$strip>>;
111
+ }, z.core.$strip>;
112
+ interface RawParticipant {
113
+ hostIdentityUrn?: string;
114
+ entityUrn?: string;
115
+ participantType?: {
116
+ member?: {
117
+ firstName?: {
118
+ text?: string;
119
+ };
120
+ lastName?: {
121
+ text?: string;
122
+ };
123
+ profilePicture?: {
124
+ rootUrl?: string;
125
+ artifacts?: Array<{
126
+ width?: number;
127
+ fileIdentifyingUrlPathSegment?: string;
128
+ }>;
129
+ };
130
+ };
131
+ };
132
+ }
133
+ interface RawConversation {
134
+ entityUrn?: string;
135
+ conversationTitle?: {
136
+ text?: string;
137
+ };
138
+ lastMessage?: {
139
+ body?: {
140
+ text?: string;
141
+ };
142
+ deliveredAt?: number;
143
+ };
144
+ read?: boolean;
145
+ notificationStatus?: string;
146
+ conversationParticipants?: RawParticipant[];
147
+ }
148
+ export declare const mapConversation: (c: RawConversation) => {
149
+ conversation_urn: string;
150
+ title: string;
151
+ last_message_text: string;
152
+ last_message_at: number;
153
+ is_read: boolean;
154
+ notification_status: string;
155
+ participants: {
156
+ name: string;
157
+ profile_urn: string;
158
+ profile_picture_url: string;
159
+ }[];
160
+ };
161
+ export declare const messageSchema: z.ZodObject<{
162
+ message_urn: z.ZodString;
163
+ text: z.ZodString;
164
+ sender_name: z.ZodString;
165
+ sender_profile_urn: z.ZodString;
166
+ delivered_at: z.ZodNumber;
167
+ subject: z.ZodString;
168
+ }, z.core.$strip>;
169
+ interface RawMessage {
170
+ entityUrn?: string;
171
+ body?: {
172
+ text?: string;
173
+ };
174
+ sender?: {
175
+ participantType?: {
176
+ member?: {
177
+ firstName?: {
178
+ text?: string;
179
+ };
180
+ lastName?: {
181
+ text?: string;
182
+ };
183
+ };
184
+ };
185
+ hostIdentityUrn?: string;
186
+ };
187
+ deliveredAt?: number;
188
+ subject?: {
189
+ text?: string;
190
+ };
191
+ }
192
+ export declare const mapMessage: (m: RawMessage) => {
193
+ message_urn: string;
194
+ text: string;
195
+ sender_name: string;
196
+ sender_profile_urn: string;
197
+ delivered_at: number;
198
+ subject: string;
199
+ };
200
+ export declare const mailboxCountSchema: z.ZodObject<{
201
+ category: z.ZodString;
202
+ unread_count: z.ZodNumber;
203
+ }, z.core.$strip>;
204
+ interface RawMailboxCount {
205
+ category?: string;
206
+ unreadConversationCount?: number;
207
+ }
208
+ export declare const mapMailboxCount: (c: RawMailboxCount) => {
209
+ category: string;
210
+ unread_count: number;
211
+ };
212
+ export {};
213
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import { z } from 'zod';
2
+ /** Build the highest-resolution picture URL from a LinkedIn vector image. */
3
+ const buildPictureUrl = (rootUrl, artifacts) => {
4
+ const largest = artifacts?.filter(a => a.width !== undefined).sort((a, b) => (b.width ?? 0) - (a.width ?? 0))[0];
5
+ return rootUrl && largest?.fileIdentifyingUrlPathSegment ? `${rootUrl}${largest.fileIdentifyingUrlPathSegment}` : '';
6
+ };
7
+ /** Join first and last name into a full name. */
8
+ const fullName = (first, last) => `${first ?? ''} ${last ?? ''}`.trim();
9
+ // --- Current User (from /voyager/api/me) ---
10
+ export const currentUserSchema = z.object({
11
+ plain_id: z.number().describe('Numeric LinkedIn member ID'),
12
+ first_name: z.string().describe('First name'),
13
+ last_name: z.string().describe('Last name'),
14
+ occupation: z.string().describe('Current headline or occupation'),
15
+ public_identifier: z.string().describe('Public profile slug (e.g., "williamhgates")'),
16
+ profile_urn: z.string().describe('Profile URN (e.g., "urn:li:fsd_profile:...")'),
17
+ profile_picture_url: z.string().describe('Profile picture URL'),
18
+ is_premium: z.boolean().describe('Whether the user has a Premium subscription'),
19
+ });
20
+ export const mapCurrentUser = (data) => {
21
+ const mini = data.miniProfile;
22
+ const picture = mini?.picture?.['com.linkedin.common.VectorImage'];
23
+ return {
24
+ plain_id: data.plainId ?? 0,
25
+ first_name: mini?.firstName ?? '',
26
+ last_name: mini?.lastName ?? '',
27
+ occupation: mini?.occupation ?? '',
28
+ public_identifier: mini?.publicIdentifier ?? '',
29
+ profile_urn: mini?.dashEntityUrn ?? mini?.entityUrn ?? '',
30
+ profile_picture_url: buildPictureUrl(picture?.rootUrl, picture?.artifacts),
31
+ is_premium: data.premiumSubscriber ?? false,
32
+ };
33
+ };
34
+ // --- Profile (from /voyager/api/identity/dash/profiles) ---
35
+ export const profileSchema = z.object({
36
+ first_name: z.string().describe('First name'),
37
+ last_name: z.string().describe('Last name'),
38
+ headline: z.string().describe('Professional headline'),
39
+ public_identifier: z.string().describe('Public profile slug'),
40
+ profile_urn: z.string().describe('Profile URN'),
41
+ profile_picture_url: z.string().describe('Profile picture URL'),
42
+ location: z.string().describe('Geographic location'),
43
+ country: z.string().describe('Country name'),
44
+ is_premium: z.boolean().describe('Whether the user has a Premium subscription'),
45
+ is_influencer: z.boolean().describe('Whether the user is a LinkedIn influencer'),
46
+ is_creator: z.boolean().describe('Whether the user is a LinkedIn creator'),
47
+ });
48
+ export const mapProfile = (el) => {
49
+ const pic = el.profilePicture?.displayImageReference?.vectorImage;
50
+ return {
51
+ first_name: el.firstName ?? '',
52
+ last_name: el.lastName ?? '',
53
+ headline: el.headline ?? '',
54
+ public_identifier: el.publicIdentifier ?? '',
55
+ profile_urn: el.entityUrn ?? '',
56
+ profile_picture_url: buildPictureUrl(pic?.rootUrl, pic?.artifacts),
57
+ location: el.geoLocation?.geo?.defaultLocalizedNameWithoutCountryName ?? '',
58
+ country: el.geoLocation?.geo?.country?.defaultLocalizedName ?? '',
59
+ is_premium: el.premium ?? false,
60
+ is_influencer: el.influencer ?? false,
61
+ is_creator: el.creator ?? false,
62
+ };
63
+ };
64
+ // --- Messaging: Conversation ---
65
+ export const conversationSchema = z.object({
66
+ conversation_urn: z.string().describe('Conversation URN identifier'),
67
+ title: z.string().describe('Conversation title or participant name'),
68
+ last_message_text: z.string().describe('Text of the most recent message'),
69
+ last_message_at: z.number().describe('Timestamp of the last message in milliseconds'),
70
+ is_read: z.boolean().describe('Whether the conversation is read'),
71
+ notification_status: z.string().describe('Notification status (ACTIVE, MUTED, etc.)'),
72
+ participants: z
73
+ .array(z.object({
74
+ name: z.string().describe('Participant full name'),
75
+ profile_urn: z.string().describe('Participant profile URN'),
76
+ profile_picture_url: z.string().describe('Participant profile picture URL'),
77
+ }))
78
+ .describe('List of conversation participants'),
79
+ });
80
+ const mapParticipant = (p) => {
81
+ const member = p.participantType?.member;
82
+ const pic = member?.profilePicture;
83
+ return {
84
+ name: fullName(member?.firstName?.text, member?.lastName?.text),
85
+ profile_urn: p.hostIdentityUrn ?? '',
86
+ profile_picture_url: buildPictureUrl(pic?.rootUrl, pic?.artifacts),
87
+ };
88
+ };
89
+ export const mapConversation = (c) => ({
90
+ conversation_urn: c.entityUrn ?? '',
91
+ title: c.conversationTitle?.text ??
92
+ (c.conversationParticipants ?? [])
93
+ .map(p => fullName(p.participantType?.member?.firstName?.text, p.participantType?.member?.lastName?.text))
94
+ .filter(Boolean)
95
+ .join(', '),
96
+ last_message_text: c.lastMessage?.body?.text ?? '',
97
+ last_message_at: c.lastMessage?.deliveredAt ?? 0,
98
+ is_read: c.read ?? false,
99
+ notification_status: c.notificationStatus ?? '',
100
+ participants: (c.conversationParticipants ?? []).map(mapParticipant),
101
+ });
102
+ // --- Messaging: Message ---
103
+ export const messageSchema = z.object({
104
+ message_urn: z.string().describe('Message URN identifier'),
105
+ text: z.string().describe('Message text content'),
106
+ sender_name: z.string().describe('Sender full name'),
107
+ sender_profile_urn: z.string().describe('Sender profile URN'),
108
+ delivered_at: z.number().describe('Delivery timestamp in milliseconds'),
109
+ subject: z.string().describe('Message subject (if any)'),
110
+ });
111
+ export const mapMessage = (m) => ({
112
+ message_urn: m.entityUrn ?? '',
113
+ text: m.body?.text ?? '',
114
+ sender_name: fullName(m.sender?.participantType?.member?.firstName?.text, m.sender?.participantType?.member?.lastName?.text),
115
+ sender_profile_urn: m.sender?.hostIdentityUrn ?? '',
116
+ delivered_at: m.deliveredAt ?? 0,
117
+ subject: m.subject?.text ?? '',
118
+ });
119
+ // --- Mailbox Counts ---
120
+ export const mailboxCountSchema = z.object({
121
+ category: z.string().describe('Mailbox category (INBOX, SECONDARY_INBOX, ARCHIVE, SPAM, MESSAGE_REQUEST_PENDING)'),
122
+ unread_count: z.number().describe('Number of unread conversations in this category'),
123
+ });
124
+ export const mapMailboxCount = (c) => ({
125
+ category: c.category ?? '',
126
+ unread_count: c.unreadConversationCount ?? 0,
127
+ });
128
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,6EAA6E;AAC7E,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAE,SAA2B,EAAU,EAAE;IAChF,MAAM,OAAO,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjH,OAAO,OAAO,IAAI,OAAO,EAAE,6BAA6B,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACvH,CAAC,CAAC;AAEF,iDAAiD;AACjD,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,IAAa,EAAU,EAAE,CAAC,GAAG,KAAK,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AAElG,8CAA8C;AAE9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC3D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC7C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC3C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACjE,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IACrF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IAChF,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC/D,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;CAChF,CAAC,CAAC;AAwBH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAmB,EAAE,EAAE;IACpD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,iCAAiC,CAAC,CAAC;IAEnE,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC;QAC3B,UAAU,EAAE,IAAI,EAAE,SAAS,IAAI,EAAE;QACjC,SAAS,EAAE,IAAI,EAAE,QAAQ,IAAI,EAAE;QAC/B,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI,EAAE;QAClC,iBAAiB,EAAE,IAAI,EAAE,gBAAgB,IAAI,EAAE;QAC/C,WAAW,EAAE,IAAI,EAAE,aAAa,IAAI,IAAI,EAAE,SAAS,IAAI,EAAE;QACzD,mBAAmB,EAAE,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;QAC1E,UAAU,EAAE,IAAI,CAAC,iBAAiB,IAAI,KAAK;KAC5C,CAAC;AACJ,CAAC,CAAC;AAEF,6DAA6D;AAE7D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC7C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACtD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC7D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC/C,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC/D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACpD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IAC5C,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IAC/E,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IAChF,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;CAC3E,CAAC,CAAC;AA6BH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAqB,EAAE,EAAE;IAClD,MAAM,GAAG,GAAG,EAAE,CAAC,cAAc,EAAE,qBAAqB,EAAE,WAAW,CAAC;IAElE,OAAO;QACL,UAAU,EAAE,EAAE,CAAC,SAAS,IAAI,EAAE;QAC9B,SAAS,EAAE,EAAE,CAAC,QAAQ,IAAI,EAAE;QAC5B,QAAQ,EAAE,EAAE,CAAC,QAAQ,IAAI,EAAE;QAC3B,iBAAiB,EAAE,EAAE,CAAC,gBAAgB,IAAI,EAAE;QAC5C,WAAW,EAAE,EAAE,CAAC,SAAS,IAAI,EAAE;QAC/B,mBAAmB,EAAE,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC;QAClE,QAAQ,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,sCAAsC,IAAI,EAAE;QAC3E,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,oBAAoB,IAAI,EAAE;QACjE,UAAU,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK;QAC/B,aAAa,EAAE,EAAE,CAAC,UAAU,IAAI,KAAK;QACrC,UAAU,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK;KAChC,CAAC;AACJ,CAAC,CAAC;AAEF,kCAAkC;AAElC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACpE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IACpE,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACzE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IACrF,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACjE,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACrF,YAAY,EAAE,CAAC;SACZ,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAClD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAC3D,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KAC5E,CAAC,CACH;SACA,QAAQ,CAAC,mCAAmC,CAAC;CACjD,CAAC,CAAC;AAgCH,MAAM,cAAc,GAAG,CAAC,CAAiB,EAAE,EAAE;IAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,eAAe,EAAE,MAAM,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,EAAE,cAAc,CAAC;IAEnC,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC;QAC/D,WAAW,EAAE,CAAC,CAAC,eAAe,IAAI,EAAE;QACpC,mBAAmB,EAAE,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC;KACnE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAkB,EAAE,EAAE,CAAC,CAAC;IACtD,gBAAgB,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;IACnC,KAAK,EACH,CAAC,CAAC,iBAAiB,EAAE,IAAI;QACzB,CAAC,CAAC,CAAC,wBAAwB,IAAI,EAAE,CAAC;aAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;aACzG,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC;IACf,iBAAiB,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE;IAClD,eAAe,EAAE,CAAC,CAAC,WAAW,EAAE,WAAW,IAAI,CAAC;IAChD,OAAO,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK;IACxB,mBAAmB,EAAE,CAAC,CAAC,kBAAkB,IAAI,EAAE;IAC/C,YAAY,EAAE,CAAC,CAAC,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC;CACrE,CAAC,CAAC;AAEH,6BAA6B;AAE7B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAC1D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACjD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACpD,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC7D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IACvE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;CACzD,CAAC,CAAC;AAkBH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC;IAC5C,WAAW,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;IAC9B,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE;IACxB,WAAW,EAAE,QAAQ,CACnB,CAAC,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAClD,CAAC,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAClD;IACD,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,IAAI,EAAE;IACnD,YAAY,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE;CAC/B,CAAC,CAAC;AAEH,yBAAyB;AAEzB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mFAAmF,CAAC;IAClH,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;CACrF,CAAC,CAAC;AAOH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAkB,EAAE,EAAE,CAAC,CAAC;IACtD,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;IAC1B,YAAY,EAAE,CAAC,CAAC,uBAAuB,IAAI,CAAC;CAC7C,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ export declare const sendMessage: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ conversation_urn: z.ZodString;
4
+ text: z.ZodString;
5
+ }, z.core.$strip>, z.ZodObject<{
6
+ success: z.ZodBoolean;
7
+ }, z.core.$strip>>;
8
+ //# sourceMappingURL=send-message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-message.d.ts","sourceRoot":"","sources":["../../src/tools/send-message.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,WAAW;;;;;kBAoCtB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { getMyProfileUrn, messagingAction } from '../linkedin-api.js';
4
+ export const sendMessage = defineTool({
5
+ name: 'send_message',
6
+ displayName: 'Send Message',
7
+ description: 'Send a message in an existing LinkedIn messaging conversation. Requires the conversation URN from list_conversations. The message is sent as the authenticated user.',
8
+ summary: 'Send a message in a conversation',
9
+ icon: 'send',
10
+ group: 'Messaging',
11
+ input: z.object({
12
+ conversation_urn: z
13
+ .string()
14
+ .describe('Conversation URN to send the message in (e.g., "urn:li:msg_conversation:(...)")'),
15
+ text: z.string().describe('Message text to send'),
16
+ }),
17
+ output: z.object({
18
+ success: z.boolean().describe('Whether the message was sent successfully'),
19
+ }),
20
+ handle: async (params) => {
21
+ const profileUrn = await getMyProfileUrn();
22
+ await messagingAction('/voyagerMessagingDashMessengerMessages?action=createMessage', {
23
+ dedupeByClientGeneratedToken: false,
24
+ hostUrn: profileUrn,
25
+ message: {
26
+ body: {
27
+ attributes: [],
28
+ text: params.text,
29
+ },
30
+ conversationUrn: params.conversation_urn,
31
+ originToken: crypto.randomUUID(),
32
+ renderContentUnions: [],
33
+ },
34
+ });
35
+ return { success: true };
36
+ },
37
+ });
38
+ //# sourceMappingURL=send-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-message.js","sourceRoot":"","sources":["../../src/tools/send-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEtE,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EACT,sKAAsK;IACxK,OAAO,EAAE,kCAAkC;IAC3C,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,gBAAgB,EAAE,CAAC;aAChB,MAAM,EAAE;aACR,QAAQ,CAAC,iFAAiF,CAAC;QAC9F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KAClD,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KAC3E,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,UAAU,GAAG,MAAM,eAAe,EAAE,CAAC;QAE3C,MAAM,eAAe,CAAC,6DAA6D,EAAE;YACnF,4BAA4B,EAAE,KAAK;YACnC,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,IAAI,EAAE;oBACJ,UAAU,EAAE,EAAE;oBACd,IAAI,EAAE,MAAM,CAAC,IAAI;iBAClB;gBACD,eAAe,EAAE,MAAM,CAAC,gBAAgB;gBACxC,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE;gBAChC,mBAAmB,EAAE,EAAE;aACxB;SACF,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}