lumnisai 0.1.7 → 0.1.9

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/dist/index.d.cts CHANGED
@@ -104,6 +104,7 @@ interface ConnectionStatusResponse {
104
104
  status: ConnectionStatus;
105
105
  connectedAt?: string | null;
106
106
  errorMessage?: string | null;
107
+ isEnabled?: boolean;
107
108
  }
108
109
  interface ConnectionInfo {
109
110
  connectionId: string | null;
@@ -183,6 +184,7 @@ interface GetConnectionStatusParams {
183
184
  userId: string;
184
185
  appName: string;
185
186
  provider?: ProviderType;
187
+ includeEnabled?: boolean;
186
188
  }
187
189
  interface GetUserConnectionsParams {
188
190
  userId: string;
@@ -198,6 +200,34 @@ interface UpdateAppStatusParams {
198
200
  enabled: boolean;
199
201
  provider?: ProviderType;
200
202
  }
203
+ /**
204
+ * Request parameters for batch connection status check
205
+ */
206
+ interface BatchConnectionRequest {
207
+ userId: string;
208
+ appNames: string[];
209
+ provider?: ProviderType;
210
+ includeEnabledStatus?: boolean;
211
+ }
212
+ /**
213
+ * Connection status in batch response
214
+ */
215
+ interface BatchConnectionStatus {
216
+ appName: string;
217
+ status: ConnectionStatus;
218
+ connectedAt: string | null;
219
+ isEnabled: boolean;
220
+ errorMessage: string | null;
221
+ }
222
+ /**
223
+ * Response from batch connection status check
224
+ */
225
+ interface BatchConnectionResponse {
226
+ userId: string;
227
+ connections: BatchConnectionStatus[];
228
+ totalChecked: number;
229
+ activeCount: number;
230
+ }
201
231
 
202
232
  type MCPTransport = 'stdio' | 'streamable_http' | 'sse';
203
233
  type MCPScope = 'tenant' | 'user';
@@ -296,6 +326,170 @@ interface ModelAvailability {
296
326
  requiresApiKey: boolean;
297
327
  }
298
328
 
329
+ /**
330
+ * Available people search data sources
331
+ */
332
+ declare enum PeopleDataSource {
333
+ PDL = "PDL",
334
+ CORESIGNAL = "CORESIGNAL",
335
+ CRUST_DATA = "CRUST_DATA"
336
+ }
337
+ /**
338
+ * Salary range projection data.
339
+ * Note: Values represent total compensation (base salary + bonuses + equity),
340
+ * not just base salary. Only available for CoreSignal results.
341
+ */
342
+ interface SalaryRange {
343
+ /** Minimum total compensation (includes base + bonuses + equity, etc.) */
344
+ min?: number;
345
+ /** Median total compensation projection */
346
+ median?: number;
347
+ /** Maximum total compensation (includes base + bonuses + equity, etc.) */
348
+ max?: number;
349
+ /** Currency code (e.g., "USD", "EUR") */
350
+ currency?: string;
351
+ /** Period (e.g., "yearly", "monthly") */
352
+ period?: string;
353
+ }
354
+ /**
355
+ * Simplified person result model returned in search results.
356
+ * Contains normalized data from multiple sources (PDL, CoreSignal, CrustData).
357
+ */
358
+ interface PersonResult {
359
+ /** Unique identifier for the person */
360
+ id: string;
361
+ /** Full name */
362
+ name: string;
363
+ /** Current job title */
364
+ currentTitle?: string;
365
+ /** Current company name */
366
+ currentCompany?: string;
367
+ /** Current department */
368
+ currentDepartment?: string;
369
+ /** Full location string */
370
+ location?: string;
371
+ /** City */
372
+ city?: string;
373
+ /** Country */
374
+ country?: string;
375
+ /** Primary email address */
376
+ email?: string;
377
+ /** List of email addresses (up to 3) */
378
+ emails: string[];
379
+ /** LinkedIn profile URL */
380
+ linkedinUrl?: string;
381
+ /** Years of professional experience */
382
+ yearsExperience?: number;
383
+ /** List of skills (up to 15) */
384
+ skills: string[];
385
+ /** Seniority level (e.g., "Senior", "Director", "VP") */
386
+ seniorityLevel?: string;
387
+ /** Whether person is identified as a decision maker */
388
+ isDecisionMaker: boolean;
389
+ /** Number of LinkedIn connections */
390
+ connectionsCount?: number;
391
+ /** Whether person recently changed jobs */
392
+ recentlyChangedJobs: boolean;
393
+ /** Data source identifier ("PDL", "CORESIGNAL", or "CRUST_DATA") */
394
+ source: string;
395
+ /** Confidence score (0.0-1.0) if available */
396
+ confidenceScore?: number;
397
+ /** Salary range projection (CoreSignal only) */
398
+ salaryRange?: SalaryRange;
399
+ /** Number of certifications (CoreSignal only) */
400
+ certificationsCount?: number;
401
+ /** List of languages spoken (CoreSignal only) */
402
+ languages?: string[];
403
+ /** List of education degrees (CoreSignal only, up to 3) */
404
+ educationDegrees?: string[];
405
+ }
406
+ /**
407
+ * Request model for people search queries.
408
+ */
409
+ interface PeopleSearchRequest {
410
+ /**
411
+ * Natural language search query describing the people you want to find.
412
+ * Examples:
413
+ * - "Senior software engineers in San Francisco with Python skills"
414
+ * - "Product managers at Google or Meta with MBA"
415
+ * - "Data scientists in NYC with 5+ years experience"
416
+ */
417
+ query: string;
418
+ /**
419
+ * Maximum number of results to return.
420
+ * Range: 1-100
421
+ * Default: 20
422
+ */
423
+ limit?: number;
424
+ /**
425
+ * Specific data sources to use for the search.
426
+ * If not provided, all available sources will be used.
427
+ * Valid values: "PDL", "CORESIGNAL", "CRUST_DATA"
428
+ *
429
+ * Note: The API accepts string values. SDKs should use enums for type safety
430
+ * but serialize them as strings when sending the request.
431
+ */
432
+ dataSources?: PeopleDataSource[];
433
+ }
434
+ /**
435
+ * Logic operator for filter values
436
+ */
437
+ type FilterLogic = 'or' | 'and' | 'should';
438
+ /**
439
+ * A filter with values and logic operator.
440
+ * Used in applied_filters response.
441
+ */
442
+ interface FilterValue {
443
+ /** List of values for this filter */
444
+ values: string[];
445
+ /**
446
+ * Logic operator:
447
+ * - "or": ANY value matches (for alternatives like "SF or NYC")
448
+ * - "and": ALL values must match (for "must have Python AND Java")
449
+ * - "should": Optional/preferred (for "preferably PhD")
450
+ */
451
+ logic: FilterLogic;
452
+ }
453
+ /**
454
+ * Structure of the applied_filters field in the response.
455
+ * Contains extracted filters from the natural language query.
456
+ */
457
+ interface AppliedFilters {
458
+ /** Cities for the search */
459
+ cities?: FilterValue;
460
+ /** Countries for the search */
461
+ countries?: FilterValue;
462
+ /** Job titles/roles */
463
+ jobTitles?: FilterValue;
464
+ /** Company names */
465
+ companies?: FilterValue;
466
+ /** Technical skills */
467
+ skills?: FilterValue;
468
+ /** Minimum years of professional experience */
469
+ minYearsExperience?: number;
470
+ /** Seniority levels (entry/junior/mid/senior/lead/principal/staff/director/vp/executive) */
471
+ seniorityLevels?: FilterValue;
472
+ /** Education levels (bachelors/masters/phd/mba) */
473
+ educationLevels?: FilterValue;
474
+ /** Industries/sectors */
475
+ industries?: FilterValue;
476
+ }
477
+ /**
478
+ * Response model for people search endpoint.
479
+ */
480
+ interface PeopleSearchResponse {
481
+ /** List of matching candidates */
482
+ candidates: PersonResult[];
483
+ /** Total number of unique candidates found (may be more than returned) */
484
+ totalFound: number;
485
+ /** Filters extracted and applied from the query */
486
+ appliedFilters: AppliedFilters;
487
+ /** Execution time in milliseconds */
488
+ executionTimeMs: number;
489
+ /** List of data sources that were actually used */
490
+ dataSourcesUsed: string[];
491
+ }
492
+
299
493
  type ResponseStatus = 'queued' | 'in_progress' | 'succeeded' | 'failed' | 'cancelled';
300
494
  interface FileAttachment {
301
495
  name: string;
@@ -320,6 +514,25 @@ interface AgentConfig {
320
514
  interface ModelOverrides {
321
515
  [key: string]: string;
322
516
  }
517
+ /**
518
+ * Available specialized agents
519
+ */
520
+ type SpecializedAgentType = 'quick_people_search';
521
+ /**
522
+ * Parameters for specialized agent execution
523
+ */
524
+ interface SpecializedAgentParams {
525
+ /**
526
+ * Maximum number of results (1-100)
527
+ * Agent-specific: For quick_people_search, limits the number of candidates returned
528
+ */
529
+ limit?: number;
530
+ /**
531
+ * Specific data sources to use (agent-specific)
532
+ * For quick_people_search: ["PDL", "CORESIGNAL", "CRUST_DATA"]
533
+ */
534
+ dataSources?: string[];
535
+ }
323
536
  interface CreateResponseRequest {
324
537
  threadId?: UUID;
325
538
  messages: Message[];
@@ -330,6 +543,15 @@ interface CreateResponseRequest {
330
543
  responseFormat?: Record<string, any>;
331
544
  responseFormatInstructions?: string;
332
545
  modelOverrides?: ModelOverrides;
546
+ /**
547
+ * Route to a specialized agent instead of the main Lumnis agent
548
+ * Available agents: 'quick_people_search'
549
+ */
550
+ specializedAgent?: SpecializedAgentType;
551
+ /**
552
+ * Parameters specific to the specialized agent
553
+ */
554
+ specializedAgentParams?: SpecializedAgentParams;
333
555
  }
334
556
  interface ProgressEntry {
335
557
  ts: string;
@@ -430,6 +652,18 @@ interface FeedbackListResponse {
430
652
  feedback: FeedbackObject[];
431
653
  note: string;
432
654
  }
655
+ /**
656
+ * Structured output from quick_people_search specialized agent
657
+ * This will be available in ResponseObject.structuredResponse
658
+ * Note: PersonResult is imported from './people' to avoid duplication
659
+ */
660
+ interface QuickPeopleSearchOutput {
661
+ candidates: PersonResult[];
662
+ totalFound: number;
663
+ appliedFilters: Record<string, any>;
664
+ executionTimeMs: number;
665
+ dataSourcesUsed: string[];
666
+ }
433
667
 
434
668
  interface SkillGuidelineBase {
435
669
  name: string;
@@ -870,6 +1104,11 @@ declare class IntegrationsResource {
870
1104
  * Check the status of a specific connection
871
1105
  */
872
1106
  getConnectionStatus(params: GetConnectionStatusParams): Promise<ConnectionStatusResponse>;
1107
+ /**
1108
+ * Check connection status for multiple apps in a single request
1109
+ * Optimized for onboarding flows - checks multiple connections in parallel
1110
+ */
1111
+ getConnectionsBatch(params: BatchConnectionRequest): Promise<BatchConnectionResponse>;
873
1112
  /**
874
1113
  * Get all connections for a user
875
1114
  */
@@ -973,199 +1212,553 @@ declare class MCPServersResource {
973
1212
  }): Promise<TestConnectionResponse>;
974
1213
  }
975
1214
 
976
- declare class ModelPreferencesResource {
977
- private readonly http;
978
- constructor(http: Http);
979
- /**
980
- * Get all model preferences for the tenant
981
- */
982
- get(includeDefaults?: boolean): Promise<TenantModelPreferencesResponse>;
983
- /**
984
- * Update multiple model preferences in a single request
985
- */
986
- updateBulk(data: ModelPreferencesBulkUpdate): Promise<TenantModelPreferencesResponse>;
987
- /**
988
- * Update a specific model type preference
989
- */
990
- update(modelType: ModelType, data: ModelPreferenceCreate): Promise<TenantModelPreference>;
991
- /**
992
- * Delete a model preference to revert to system default
993
- */
994
- delete(modelType: ModelType): Promise<void>;
995
- /**
996
- * Check which models are available based on API key configuration
997
- */
998
- checkAvailability(models: ModelPreferenceCreate[]): Promise<ModelAvailability[]>;
999
- /**
1000
- * List all model preferences (alias for get)
1001
- */
1002
- list(params?: {
1003
- includeDefaults?: boolean;
1004
- }): Promise<TenantModelPreferencesResponse>;
1215
+ /**
1216
+ * Channel types for messaging
1217
+ */
1218
+ declare enum ChannelType {
1219
+ GMAIL = "gmail",
1220
+ OUTLOOK = "outlook",
1221
+ LINKEDIN = "linkedin"
1005
1222
  }
1006
-
1007
1223
  /**
1008
- * Available people search data sources
1224
+ * Outreach methods for LinkedIn
1009
1225
  */
1010
- declare enum PeopleDataSource {
1011
- PDL = "PDL",
1012
- CORESIGNAL = "CORESIGNAL",
1013
- CRUST_DATA = "CRUST_DATA"
1226
+ declare enum OutreachMethod {
1227
+ CONNECTION_REQUEST = "connection_request",
1228
+ DIRECT_MESSAGE = "direct_message",
1229
+ INMAIL = "inmail",
1230
+ INMAIL_ESCALATION = "inmail_escalation",
1231
+ EMAIL = "email"
1014
1232
  }
1015
1233
  /**
1016
- * Salary range projection data.
1017
- * Note: Values represent total compensation (base salary + bonuses + equity),
1018
- * not just base salary. Only available for CoreSignal results.
1234
+ * Conversation status types
1019
1235
  */
1020
- interface SalaryRange {
1021
- /** Minimum total compensation (includes base + bonuses + equity, etc.) */
1022
- min?: number;
1023
- /** Median total compensation projection */
1024
- median?: number;
1025
- /** Maximum total compensation (includes base + bonuses + equity, etc.) */
1026
- max?: number;
1027
- /** Currency code (e.g., "USD", "EUR") */
1028
- currency?: string;
1029
- /** Period (e.g., "yearly", "monthly") */
1030
- period?: string;
1236
+ declare enum ConversationStatus {
1237
+ ACTIVE = "active",
1238
+ NEEDS_RESPONSE = "needs_response",
1239
+ WAITING = "waiting",
1240
+ BOOKED = "booked",
1241
+ CLOSED = "closed"
1031
1242
  }
1032
1243
  /**
1033
- * Simplified person result model returned in search results.
1034
- * Contains normalized data from multiple sources (PDL, CoreSignal, CrustData).
1244
+ * Message types in a conversation
1035
1245
  */
1036
- interface PersonResult {
1037
- /** Unique identifier for the person */
1038
- id: string;
1039
- /** Full name */
1246
+ declare enum MessageType {
1247
+ MESSAGE = "message",
1248
+ CONNECTION_REQUEST = "connection_request",
1249
+ CONNECTION_ACCEPTED = "connection_accepted",
1250
+ INMAIL = "inmail"
1251
+ }
1252
+ /**
1253
+ * Draft status types
1254
+ */
1255
+ declare enum DraftStatus {
1256
+ PENDING_REVIEW = "pending_review",
1257
+ APPROVED = "approved",
1258
+ SCHEDULED = "scheduled",
1259
+ SENDING = "sending",
1260
+ SENT = "sent",
1261
+ FAILED = "failed",
1262
+ DISCARDED = "discarded"
1263
+ }
1264
+ /**
1265
+ * Sync job status types
1266
+ */
1267
+ declare enum SyncJobStatus {
1268
+ QUEUED = "queued",
1269
+ IN_PROGRESS = "in_progress",
1270
+ COMPLETED = "completed",
1271
+ FAILED = "failed"
1272
+ }
1273
+ /**
1274
+ * Queue item status types
1275
+ */
1276
+ declare enum QueueItemStatus {
1277
+ QUEUED = "queued",
1278
+ PROCESSING = "processing",
1279
+ COMPLETED = "completed",
1280
+ FAILED = "failed",
1281
+ CANCELLED = "cancelled"
1282
+ }
1283
+ /**
1284
+ * LinkedIn subscription types
1285
+ */
1286
+ declare enum LinkedInSubscriptionType {
1287
+ BASIC = "basic",
1288
+ PREMIUM = "premium",// Career Premium - 5 InMails/month
1289
+ SALES_NAVIGATOR = "sales_navigator",
1290
+ RECRUITER_LITE = "recruiter_lite",
1291
+ RECRUITER_CORPORATE = "recruiter_corporate"
1292
+ }
1293
+ /**
1294
+ * LinkedIn network distance values
1295
+ */
1296
+ declare enum NetworkDistance {
1297
+ FIRST_DEGREE = "FIRST_DEGREE",
1298
+ SECOND_DEGREE = "SECOND_DEGREE",
1299
+ THIRD_DEGREE = "THIRD_DEGREE",
1300
+ OUT_OF_NETWORK = "OUT_OF_NETWORK"
1301
+ }
1302
+ /**
1303
+ * Prospect identifier for sync operations
1304
+ */
1305
+ interface ProspectSyncIdentifier {
1306
+ prospectId?: string | null;
1307
+ email?: string | null;
1308
+ linkedinUrl?: string | null;
1309
+ providerId?: string | null;
1310
+ }
1311
+ /**
1312
+ * Request to sync conversations (prospects REQUIRED)
1313
+ */
1314
+ interface SyncRequest {
1315
+ channels?: string[] | null;
1316
+ prospects: ProspectSyncIdentifier[];
1317
+ }
1318
+ /**
1319
+ * Request to sync a single prospect
1320
+ */
1321
+ interface SyncProspectRequest {
1322
+ email?: string | null;
1323
+ linkedinUrl?: string | null;
1324
+ providerId?: string | null;
1325
+ channel?: string | null;
1326
+ }
1327
+ /**
1328
+ * Request to check LinkedIn connection
1329
+ */
1330
+ interface CheckLinkedInConnectionRequest {
1331
+ linkedinUrl?: string | null;
1332
+ providerId?: string | null;
1333
+ }
1334
+ /**
1335
+ * Request to send LinkedIn outreach
1336
+ */
1337
+ interface LinkedInSendRequest {
1338
+ prospectProviderId?: string | null;
1339
+ prospectLinkedInUrl?: string | null;
1340
+ prospectName: string;
1341
+ content: string;
1342
+ isPriority?: boolean;
1343
+ enableEscalation?: boolean;
1344
+ escalationDays?: number;
1345
+ projectId?: string | null;
1346
+ prospectExternalId?: string | null;
1347
+ }
1348
+ /**
1349
+ * Request to send a message
1350
+ */
1351
+ interface SendMessageRequest {
1352
+ channel: string;
1353
+ recipientId: string;
1354
+ content: string;
1355
+ conversationId?: string | null;
1356
+ subject?: string | null;
1357
+ recipientName?: string | null;
1358
+ projectId?: string | null;
1359
+ prospectExternalId?: string | null;
1360
+ }
1361
+ /**
1362
+ * Request to reply to a conversation
1363
+ */
1364
+ interface SendReplyRequest {
1365
+ content: string;
1366
+ }
1367
+ /**
1368
+ * Prospect connection check for batch operations
1369
+ */
1370
+ interface ProspectConnectionCheck {
1371
+ prospectId: string;
1372
+ linkedinUrl?: string | null;
1373
+ providerId?: string | null;
1374
+ }
1375
+ /**
1376
+ * Request to batch check LinkedIn connections
1377
+ */
1378
+ interface BatchCheckConnectionRequest {
1379
+ prospects: ProspectConnectionCheck[];
1380
+ }
1381
+ /**
1382
+ * Request to create a draft
1383
+ */
1384
+ interface CreateDraftRequest {
1385
+ channel: string;
1386
+ content: string;
1387
+ recipientEmail?: string | null;
1388
+ recipientLinkedinUrl?: string | null;
1389
+ recipientProviderId?: string | null;
1390
+ recipientName?: string | null;
1391
+ conversationId?: string | null;
1392
+ projectId?: string | null;
1393
+ prospectExternalId?: string | null;
1394
+ subject?: string | null;
1395
+ isPriority?: boolean;
1396
+ outreachMethod?: string | null;
1397
+ }
1398
+ /**
1399
+ * Prospect info for batch draft creation
1400
+ */
1401
+ interface ProspectInfo {
1402
+ externalId: string;
1040
1403
  name: string;
1041
- /** Current job title */
1042
- currentTitle?: string;
1043
- /** Current company name */
1044
- currentCompany?: string;
1045
- /** Current department */
1046
- currentDepartment?: string;
1047
- /** Full location string */
1048
- location?: string;
1049
- /** City */
1050
- city?: string;
1051
- /** Country */
1052
- country?: string;
1053
- /** Primary email address */
1054
- email?: string;
1055
- /** List of email addresses (up to 3) */
1056
- emails: string[];
1057
- /** LinkedIn profile URL */
1058
- linkedinUrl?: string;
1059
- /** Years of professional experience */
1060
- yearsExperience?: number;
1061
- /** List of skills (up to 15) */
1062
- skills: string[];
1063
- /** Seniority level (e.g., "Senior", "Director", "VP") */
1064
- seniorityLevel?: string;
1065
- /** Whether person is identified as a decision maker */
1066
- isDecisionMaker: boolean;
1067
- /** Number of LinkedIn connections */
1068
- connectionsCount?: number;
1069
- /** Whether person recently changed jobs */
1070
- recentlyChangedJobs: boolean;
1071
- /** Data source identifier ("PDL", "CORESIGNAL", or "CRUST_DATA") */
1072
- source: string;
1073
- /** Confidence score (0.0-1.0) if available */
1074
- confidenceScore?: number;
1075
- /** Salary range projection (CoreSignal only) */
1076
- salaryRange?: SalaryRange;
1077
- /** Number of certifications (CoreSignal only) */
1078
- certificationsCount?: number;
1079
- /** List of languages spoken (CoreSignal only) */
1080
- languages?: string[];
1081
- /** List of education degrees (CoreSignal only, up to 3) */
1082
- educationDegrees?: string[];
1404
+ email?: string | null;
1405
+ linkedinUrl?: string | null;
1406
+ providerId?: string | null;
1407
+ currentTitle?: string | null;
1408
+ currentCompany?: string | null;
1409
+ isPriority?: boolean;
1410
+ selectedChannel?: string | null;
1411
+ /** Outreach method to use for this prospect */
1412
+ outreachMethod?: 'direct_message' | 'connection_request' | 'inmail' | 'email' | null;
1413
+ /** Whether the user is already connected to this prospect on LinkedIn */
1414
+ isConnected?: boolean | null;
1083
1415
  }
1084
1416
  /**
1085
- * Request model for people search queries.
1417
+ * Request to create batch drafts
1086
1418
  */
1087
- interface PeopleSearchRequest {
1088
- /**
1089
- * Natural language search query describing the people you want to find.
1090
- * Examples:
1091
- * - "Senior software engineers in San Francisco with Python skills"
1092
- * - "Product managers at Google or Meta with MBA"
1093
- * - "Data scientists in NYC with 5+ years experience"
1094
- */
1095
- query: string;
1096
- /**
1097
- * Maximum number of results to return.
1098
- * Range: 1-100
1099
- * Default: 20
1100
- */
1101
- limit?: number;
1102
- /**
1103
- * Specific data sources to use for the search.
1104
- * If not provided, all available sources will be used.
1105
- * Valid values: "PDL", "CORESIGNAL", "CRUST_DATA"
1106
- *
1107
- * Note: The API accepts string values. SDKs should use enums for type safety
1108
- * but serialize them as strings when sending the request.
1109
- */
1110
- dataSources?: PeopleDataSource[];
1419
+ interface BatchDraftRequest {
1420
+ prospects: ProspectInfo[];
1421
+ projectId: string;
1422
+ channel?: string;
1423
+ subjectTemplate?: string | null;
1424
+ contentTemplate?: string | null;
1425
+ useAiGeneration?: boolean;
1426
+ aiContext?: Record<string, any> | null;
1111
1427
  }
1112
1428
  /**
1113
- * Logic operator for filter values
1429
+ * Request to batch send drafts
1114
1430
  */
1115
- type FilterLogic = 'or' | 'and' | 'should';
1431
+ interface BatchSendRequest {
1432
+ draftIds: string[];
1433
+ sendRatePerDay?: number;
1434
+ }
1116
1435
  /**
1117
- * A filter with values and logic operator.
1118
- * Used in applied_filters response.
1436
+ * Request to update LinkedIn subscription
1119
1437
  */
1120
- interface FilterValue {
1121
- /** List of values for this filter */
1122
- values: string[];
1123
- /**
1124
- * Logic operator:
1125
- * - "or": ANY value matches (for alternatives like "SF or NYC")
1126
- * - "and": ALL values must match (for "must have Python AND Java")
1127
- * - "should": Optional/preferred (for "preferably PhD")
1128
- */
1129
- logic: FilterLogic;
1438
+ interface UpdateLinkedInSubscriptionRequest {
1439
+ subscriptionType: LinkedInSubscriptionType | string;
1440
+ inmailCredits?: number | null;
1130
1441
  }
1131
1442
  /**
1132
- * Structure of the applied_filters field in the response.
1133
- * Contains extracted filters from the natural language query.
1443
+ * Statistics from a sync operation
1134
1444
  */
1135
- interface AppliedFilters {
1136
- /** Cities for the search */
1137
- cities?: FilterValue;
1138
- /** Countries for the search */
1139
- countries?: FilterValue;
1140
- /** Job titles/roles */
1141
- jobTitles?: FilterValue;
1142
- /** Company names */
1143
- companies?: FilterValue;
1144
- /** Technical skills */
1145
- skills?: FilterValue;
1146
- /** Minimum years of professional experience */
1147
- minYearsExperience?: number;
1148
- /** Seniority levels (entry/junior/mid/senior/lead/principal/staff/director/vp/executive) */
1149
- seniorityLevels?: FilterValue;
1150
- /** Education levels (bachelors/masters/phd/mba) */
1151
- educationLevels?: FilterValue;
1152
- /** Industries/sectors */
1153
- industries?: FilterValue;
1445
+ interface SyncStats {
1446
+ synced: number;
1447
+ created: number;
1448
+ updated: number;
1449
+ errors: number;
1450
+ prospectsRequested?: number;
1451
+ prospectsFound?: number;
1154
1452
  }
1155
1453
  /**
1156
- * Response model for people search endpoint.
1454
+ * Response from sync operations
1157
1455
  */
1158
- interface PeopleSearchResponse {
1159
- /** List of matching candidates */
1160
- candidates: PersonResult[];
1161
- /** Total number of unique candidates found (may be more than returned) */
1162
- totalFound: number;
1163
- /** Filters extracted and applied from the query */
1164
- appliedFilters: AppliedFilters;
1165
- /** Execution time in milliseconds */
1166
- executionTimeMs: number;
1167
- /** List of data sources that were actually used */
1168
- dataSourcesUsed: string[];
1456
+ interface SyncJobResponse {
1457
+ jobId: string;
1458
+ status: SyncJobStatus | string;
1459
+ startedAt?: string | null;
1460
+ completedAt?: string | null;
1461
+ stats?: SyncStats | null;
1462
+ error?: string | null;
1463
+ }
1464
+ /**
1465
+ * Result for a single prospect sync
1466
+ */
1467
+ interface ProspectSyncResult {
1468
+ prospectId?: string | null;
1469
+ email?: string | null;
1470
+ linkedinUrl?: string | null;
1471
+ conversationId?: string | null;
1472
+ messagesSynced: number;
1473
+ status: string;
1474
+ error?: string | null;
1475
+ }
1476
+ /**
1477
+ * Response from single prospect sync
1478
+ */
1479
+ interface SyncProspectResponse {
1480
+ result: ProspectSyncResult;
1481
+ conversation?: ConversationSummary | null;
1482
+ }
1483
+ /**
1484
+ * LinkedIn connection status
1485
+ */
1486
+ interface LinkedInConnectionStatus {
1487
+ connected: boolean;
1488
+ providerId?: string | null;
1489
+ chatId?: string | null;
1490
+ canMessage: boolean;
1491
+ canInmail: boolean;
1492
+ isOpenProfile?: boolean;
1493
+ networkDistance?: NetworkDistance | null;
1494
+ }
1495
+ /**
1496
+ * Connection summary for batch operations
1497
+ */
1498
+ interface ConnectionSummary {
1499
+ total: number;
1500
+ connected: number;
1501
+ notConnected: number;
1502
+ }
1503
+ /**
1504
+ * Response from batch connection check
1505
+ */
1506
+ interface BatchConnectionStatusResponse {
1507
+ results: Record<string, LinkedInConnectionStatus>;
1508
+ summary: ConnectionSummary;
1509
+ }
1510
+ /**
1511
+ * LinkedIn credits response
1512
+ */
1513
+ interface LinkedInCreditsResponse {
1514
+ subscriptionType?: string | null;
1515
+ creditsRemaining?: number | null;
1516
+ creditsUpdatedAt?: string | null;
1517
+ isRealTime?: boolean;
1518
+ }
1519
+ /**
1520
+ * Conversation summary
1521
+ */
1522
+ interface ConversationSummary {
1523
+ id: string;
1524
+ channel: string;
1525
+ outreachMethod?: string | null;
1526
+ status: string;
1527
+ prospectName: string;
1528
+ prospectEmail?: string | null;
1529
+ prospectCompany?: string | null;
1530
+ prospectTitle?: string | null;
1531
+ lastMessageAt?: string | null;
1532
+ lastMessagePreview?: string | null;
1533
+ messageCount: number;
1534
+ aiSuggestedResponse?: string | null;
1535
+ isLinkedinConnected?: boolean | null;
1536
+ networkDistance?: NetworkDistance | null;
1537
+ connectionRequestSentAt?: string | null;
1538
+ connectionAcceptedAt?: string | null;
1539
+ escalationScheduledFor?: string | null;
1540
+ prospectExternalId?: string | null;
1541
+ projectId?: string | null;
1542
+ }
1543
+ /**
1544
+ * Message response
1545
+ */
1546
+ interface MessageResponse {
1547
+ id: string;
1548
+ messageType?: string;
1549
+ direction: string;
1550
+ content: string;
1551
+ subject?: string | null;
1552
+ senderName: string;
1553
+ sentAt: string;
1554
+ aiGenerated?: boolean;
1555
+ }
1556
+ /**
1557
+ * Conversation detail with messages
1558
+ */
1559
+ interface ConversationDetail {
1560
+ conversation: ConversationSummary;
1561
+ messages: MessageResponse[];
1562
+ }
1563
+ /**
1564
+ * Email thread summary
1565
+ */
1566
+ interface EmailThreadSummary {
1567
+ threadId: string;
1568
+ subject?: string | null;
1569
+ lastMessageAt: string;
1570
+ messageCount: number;
1571
+ preview?: string | null;
1572
+ isLumnisInitiated: boolean;
1573
+ }
1574
+ /**
1575
+ * Draft response
1576
+ */
1577
+ interface DraftResponse {
1578
+ id: string;
1579
+ status: string;
1580
+ content: string;
1581
+ createdAt: string;
1582
+ prospectExternalId?: string | null;
1583
+ conversationId?: string | null;
1584
+ /** Outreach method used for this draft: 'connection_request' | 'direct_message' | 'inmail' | 'email' */
1585
+ outreachMethod?: 'direct_message' | 'connection_request' | 'inmail' | 'email' | null;
1586
+ }
1587
+ /**
1588
+ * Response from batch draft creation
1589
+ */
1590
+ interface BatchDraftResponse {
1591
+ drafts: DraftResponse[];
1592
+ created: number;
1593
+ errors: number;
1594
+ errorDetails?: Array<Record<string, any>> | null;
1595
+ }
1596
+ /**
1597
+ * Send result (returned by reply, linkedin/send, drafts endpoints)
1598
+ */
1599
+ interface SendResult {
1600
+ success: boolean;
1601
+ draftId?: string | null;
1602
+ conversationId?: string | null;
1603
+ messageId?: string | null;
1604
+ outreachMethod?: string | null;
1605
+ queued?: boolean | null;
1606
+ isFreeInmail?: boolean | null;
1607
+ error?: string | null;
1608
+ errorCode?: string | null;
1609
+ prospectExternalId?: string | null;
1610
+ }
1611
+ /**
1612
+ * Response from the generic send message endpoint
1613
+ */
1614
+ interface SendMessageResponse {
1615
+ success: boolean;
1616
+ messageId?: string | null;
1617
+ conversationId?: string | null;
1618
+ externalId?: string | null;
1619
+ }
1620
+ /**
1621
+ * Response from batch send operation
1622
+ */
1623
+ interface BatchSendResponse {
1624
+ results: SendResult[];
1625
+ sent: number;
1626
+ failed: number;
1627
+ queued: number;
1628
+ }
1629
+
1630
+ declare class MessagingResource {
1631
+ private readonly http;
1632
+ constructor(http: Http);
1633
+ /**
1634
+ * Sync conversations from connected providers for specific prospects.
1635
+ * Prospects list is REQUIRED.
1636
+ */
1637
+ syncConversations(userId: string, request: SyncRequest): Promise<SyncJobResponse>;
1638
+ /**
1639
+ * Sync conversation for a single prospect on-demand.
1640
+ * Use when viewing a prospect's detail page.
1641
+ */
1642
+ syncProspect(userId: string, request: SyncProspectRequest): Promise<SyncProspectResponse>;
1643
+ /**
1644
+ * Get sync job status
1645
+ */
1646
+ getSyncStatus(jobId: string): Promise<SyncJobResponse>;
1647
+ /**
1648
+ * List conversations with filtering
1649
+ */
1650
+ listConversations(userId: string, params?: {
1651
+ status?: string;
1652
+ channel?: string;
1653
+ projectId?: string;
1654
+ networkDistance?: NetworkDistance | null;
1655
+ limit?: number;
1656
+ offset?: number;
1657
+ }): Promise<ConversationSummary[]>;
1658
+ /**
1659
+ * Get all conversations for a project
1660
+ */
1661
+ listConversationsByProject(projectId: string, userId: string, params?: {
1662
+ limit?: number;
1663
+ offset?: number;
1664
+ }): Promise<ConversationSummary[]>;
1665
+ /**
1666
+ * Get conversation with messages
1667
+ */
1668
+ getConversation(conversationId: string, userId: string, params?: {
1669
+ fetchLive?: boolean;
1670
+ }): Promise<ConversationDetail>;
1671
+ /**
1672
+ * Send a message (creates new conversation or adds to existing)
1673
+ */
1674
+ sendMessage(userId: string, request: SendMessageRequest): Promise<SendMessageResponse>;
1675
+ /**
1676
+ * Reply to an existing conversation
1677
+ */
1678
+ replyToConversation(conversationId: string, userId: string, request: SendReplyRequest): Promise<SendResult>;
1679
+ /**
1680
+ * Get all email threads with a specific person
1681
+ */
1682
+ getEmailThreads(emailAddress: string, userId: string, params?: {
1683
+ limit?: number;
1684
+ }): Promise<EmailThreadSummary[]>;
1685
+ /**
1686
+ * Check if user is connected to a prospect on LinkedIn
1687
+ */
1688
+ checkLinkedInConnection(userId: string, request: CheckLinkedInConnectionRequest): Promise<LinkedInConnectionStatus>;
1689
+ /**
1690
+ * Batch check connection status for multiple prospects
1691
+ */
1692
+ batchCheckLinkedInConnections(userId: string, request: BatchCheckConnectionRequest): Promise<BatchConnectionStatusResponse>;
1693
+ /**
1694
+ * Smart LinkedIn outreach with automatic method selection
1695
+ */
1696
+ sendLinkedInOutreach(userId: string, request: LinkedInSendRequest): Promise<SendResult>;
1697
+ /**
1698
+ * Get InMail credit information.
1699
+ * By default returns cached data. Set forceRefresh=true to fetch real-time data from Unipile API.
1700
+ */
1701
+ getLinkedInCredits(userId: string, options?: {
1702
+ forceRefresh?: boolean;
1703
+ }): Promise<LinkedInCreditsResponse>;
1704
+ /**
1705
+ * Force refresh InMail credits from Unipile API.
1706
+ * Fetches real-time credit balance from provider and updates cache.
1707
+ */
1708
+ refreshLinkedInCredits(userId: string): Promise<LinkedInCreditsResponse>;
1709
+ /**
1710
+ * Update LinkedIn subscription type and credits
1711
+ */
1712
+ updateLinkedInSubscription(userId: string, request: UpdateLinkedInSubscriptionRequest): Promise<{
1713
+ success: boolean;
1714
+ }>;
1715
+ /**
1716
+ * Create a single draft message
1717
+ */
1718
+ createDraft(userId: string, request: CreateDraftRequest): Promise<DraftResponse>;
1719
+ /**
1720
+ * Create drafts for multiple prospects with AI generation
1721
+ */
1722
+ createBatchDrafts(userId: string, request: BatchDraftRequest): Promise<BatchDraftResponse>;
1723
+ /**
1724
+ * Approve and send a single draft
1725
+ */
1726
+ sendDraft(draftId: string, userId: string): Promise<SendResult>;
1727
+ /**
1728
+ * Send multiple drafts with rate limiting
1729
+ */
1730
+ sendBatchDrafts(userId: string, request: BatchSendRequest): Promise<BatchSendResponse>;
1731
+ }
1732
+
1733
+ declare class ModelPreferencesResource {
1734
+ private readonly http;
1735
+ constructor(http: Http);
1736
+ /**
1737
+ * Get all model preferences for the tenant
1738
+ */
1739
+ get(includeDefaults?: boolean): Promise<TenantModelPreferencesResponse>;
1740
+ /**
1741
+ * Update multiple model preferences in a single request
1742
+ */
1743
+ updateBulk(data: ModelPreferencesBulkUpdate): Promise<TenantModelPreferencesResponse>;
1744
+ /**
1745
+ * Update a specific model type preference
1746
+ */
1747
+ update(modelType: ModelType, data: ModelPreferenceCreate): Promise<TenantModelPreference>;
1748
+ /**
1749
+ * Delete a model preference to revert to system default
1750
+ */
1751
+ delete(modelType: ModelType): Promise<void>;
1752
+ /**
1753
+ * Check which models are available based on API key configuration
1754
+ */
1755
+ checkAvailability(models: ModelPreferenceCreate[]): Promise<ModelAvailability[]>;
1756
+ /**
1757
+ * List all model preferences (alias for get)
1758
+ */
1759
+ list(params?: {
1760
+ includeDefaults?: boolean;
1761
+ }): Promise<TenantModelPreferencesResponse>;
1169
1762
  }
1170
1763
 
1171
1764
  declare class PeopleResource {
@@ -1257,6 +1850,23 @@ declare class ResponsesResource {
1257
1850
  listFeedback(responseId: string, options?: {
1258
1851
  progressId?: string;
1259
1852
  }): Promise<FeedbackListResponse>;
1853
+ /**
1854
+ * Perform a quick people search using the specialized quick_people_search agent
1855
+ * @param query - Natural language search query (e.g., "Find engineers at Google in SF")
1856
+ * @param options - Optional search parameters
1857
+ * @param options.limit - Maximum number of results (1-100, default: 20)
1858
+ * @param options.dataSources - Specific data sources to use: ["PDL", "CORESIGNAL", "CRUST_DATA"]
1859
+ * @returns Response with structured_response containing:
1860
+ * - candidates: List of person results
1861
+ * - totalFound: Total unique candidates found
1862
+ * - appliedFilters: Extracted search filters
1863
+ * - executionTimeMs: Search duration
1864
+ * - dataSourcesUsed: Which sources were queried
1865
+ */
1866
+ quickPeopleSearch(query: string, options?: {
1867
+ limit?: number;
1868
+ dataSources?: string[];
1869
+ }): Promise<CreateResponseResponse>;
1260
1870
  }
1261
1871
 
1262
1872
  declare class SkillsResource {
@@ -1449,6 +2059,7 @@ declare class LumnisClient {
1449
2059
  readonly mcpServers: MCPServersResource;
1450
2060
  readonly skills: SkillsResource;
1451
2061
  readonly people: PeopleResource;
2062
+ readonly messaging: MessagingResource;
1452
2063
  private readonly _scopedUserId?;
1453
2064
  private readonly _defaultScope;
1454
2065
  constructor(options?: LumnisClientOptions);
@@ -1483,6 +2094,16 @@ declare class LumnisClient {
1483
2094
  setAppEnabled(appName: string, enabled: boolean, provider?: string): Promise<UpdateAppStatusResponse>;
1484
2095
  initiateConnection(params: Parameters<IntegrationsResource['initiateConnection']>[0]): Promise<InitiateConnectionResponse>;
1485
2096
  getConnectionStatus(userId: string, appName: string, provider?: string): Promise<ConnectionStatusResponse>;
2097
+ getConnectionStatus(userId: string, appName: string, options?: {
2098
+ provider?: string;
2099
+ includeEnabled?: boolean;
2100
+ }): Promise<ConnectionStatusResponse>;
2101
+ getConnectionsBatch(params: {
2102
+ userId: string;
2103
+ appNames: string[];
2104
+ provider?: string;
2105
+ includeEnabledStatus?: boolean;
2106
+ }): Promise<BatchConnectionResponse>;
1486
2107
  listConnections(userId: string, params?: {
1487
2108
  appFilter?: string;
1488
2109
  provider?: string;
@@ -1552,6 +2173,79 @@ declare class SourcesNotAvailableError extends ValidationError {
1552
2173
  availableSources: string[];
1553
2174
  constructor(message: string, availableSources: string[]);
1554
2175
  }
2176
+ declare class MessagingAPIError extends LumnisError {
2177
+ constructor(message: string, options?: LumnisErrorOptions);
2178
+ }
2179
+ declare class MessagingNotFoundError extends MessagingAPIError {
2180
+ constructor(message: string, options?: LumnisErrorOptions);
2181
+ }
2182
+ declare class MessagingValidationError extends MessagingAPIError {
2183
+ constructor(message: string, options?: LumnisErrorOptions);
2184
+ }
2185
+ declare class MessagingSendError extends MessagingAPIError {
2186
+ constructor(message: string, options?: LumnisErrorOptions);
2187
+ }
2188
+ declare class MessagingConnectionError extends MessagingAPIError {
2189
+ constructor(message: string, options?: LumnisErrorOptions);
2190
+ }
2191
+
2192
+ /**
2193
+ * Webhook event types
2194
+ */
2195
+ type WebhookEvent = 'message.sent' | 'message.received' | 'connection.accepted';
2196
+ /**
2197
+ * Base webhook payload structure
2198
+ */
2199
+ interface WebhookPayload {
2200
+ event: WebhookEvent;
2201
+ data: MessageSentData | MessageReceivedData | ConnectionAcceptedData;
2202
+ timestamp: string;
2203
+ }
2204
+ /**
2205
+ * Data payload for message.sent event
2206
+ * Sent when a queued message is actually sent by the queue processor
2207
+ */
2208
+ interface MessageSentData {
2209
+ conversationId: string;
2210
+ prospectExternalId: string;
2211
+ projectId?: string | null;
2212
+ channel: string;
2213
+ outreachMethod: string;
2214
+ lastMessage: {
2215
+ id?: string | null;
2216
+ content?: string | null;
2217
+ senderType: 'user';
2218
+ sentAt: string;
2219
+ };
2220
+ }
2221
+ /**
2222
+ * Data payload for message.received event
2223
+ * Sent when a prospect replies to a message
2224
+ */
2225
+ interface MessageReceivedData {
2226
+ conversationId: string;
2227
+ prospectExternalId: string;
2228
+ projectId?: string | null;
2229
+ channel: string;
2230
+ lastMessage: {
2231
+ id?: string | null;
2232
+ content?: string | null;
2233
+ senderType: 'prospect';
2234
+ senderName?: string | null;
2235
+ sentAt: string;
2236
+ };
2237
+ }
2238
+ /**
2239
+ * Data payload for connection.accepted event
2240
+ * Sent when a LinkedIn connection request is accepted
2241
+ */
2242
+ interface ConnectionAcceptedData {
2243
+ conversationId: string;
2244
+ prospectExternalId: string;
2245
+ projectId?: string | null;
2246
+ prospectName?: string | null;
2247
+ acceptedAt: string;
2248
+ }
1555
2249
 
1556
2250
  /**
1557
2251
  * Utility functions for displaying progress updates
@@ -1603,5 +2297,28 @@ declare class ProgressTracker {
1603
2297
  reset(): void;
1604
2298
  }
1605
2299
 
2300
+ /**
2301
+ * Verify webhook signature using HMAC SHA-256
2302
+ *
2303
+ * @param payload - Raw request body as string
2304
+ * @param signature - Signature from x-webhook-signature header
2305
+ * @param secret - Shared secret key (must match backend's FRONTEND_WEBHOOK_SECRET)
2306
+ * @returns true if signature is valid, false otherwise
2307
+ *
2308
+ * @example
2309
+ * ```typescript
2310
+ * const isValid = verifyWebhookSignature(
2311
+ * requestBody,
2312
+ * request.headers.get('x-webhook-signature') || '',
2313
+ * process.env.MESSAGING_WEBHOOK_SECRET!
2314
+ * )
2315
+ *
2316
+ * if (!isValid) {
2317
+ * return NextResponse.json({ error: 'Invalid signature' }, { status: 401 })
2318
+ * }
2319
+ * ```
2320
+ */
2321
+ declare function verifyWebhookSignature(payload: string, signature: string, secret: string): boolean;
2322
+
1606
2323
  export = LumnisClient;
1607
- export { type AgentConfig, type ApiKeyMode, type ApiKeyModeRequest, type ApiKeyModeResponse, type ApiProvider, type AppEnabledResponse, type AppliedFilters, type AppsListResponse, type ArtifactObject, type ArtifactsListResponse, AuthenticationError, type BaseResource, type BillingStatus, type BulkDeleteRequest, type BulkDeleteResponse, type BulkUploadResponse, type CancelResponseResponse, type CheckAppEnabledParams, type ChunkingStrategy, type ConnectionCallbackRequest, type ConnectionCallbackResponse, type ConnectionInfo, type ConnectionStatus, type ConnectionStatusResponse, type ContentType, type CreateFeedbackRequest, type CreateFeedbackResponse, type CreateResponseRequest, type CreateResponseResponse, type CreateThreadRequest, type DatabaseStatus, type DeleteApiKeyResponse, type DisconnectRequest, type DisconnectResponse, type DuplicateHandling, type Email, type ErrorResponse, ExternalAPIKeysResource, type ExternalApiKeyResponse, type FeedbackListResponse, type FeedbackObject, type FeedbackType, type FileAttachment, type FileChunk, type FileContentResponse, type FileListResponse, type FileMetadata, type FileScope, type FileScopeUpdateRequest, type FileSearchRequest, type FileSearchResponse, type FileSearchResult, type FileStatisticsResponse, type FileUploadResponse, FilesResource, type FilterLogic, type FilterValue, type GetConnectionStatusParams, type GetToolsRequest, type GetToolsResponse, type GetUserConnectionsParams, type InitiateConnectionRequest, type InitiateConnectionResponse, IntegrationsResource, InternalServerError, type ListProvidersResponse, LocalFileNotSupportedError, LumnisClient, type LumnisClientOptions, LumnisError, type LumnisErrorOptions, type MCPScope, type MCPServerCreateRequest, type MCPServerListResponse, type MCPServerResponse, type MCPServerUpdateRequest, MCPServersResource, type MCPToolListResponse, type MCPToolResponse, type MCPTransport, type Message, type ModelAvailability, type ModelOverrides, type ModelPreferenceCreate, type ModelPreferencesBulkUpdate, ModelPreferencesResource, type ModelProvider, type ModelType, NoDataSourcesError, NotFoundError, type PaginationInfo, type PaginationParams, PeopleDataSource, PeopleResource, type PeopleSearchRequest, type PeopleSearchResponse, type PersonResult, type Plan, type ProcessingStatus, type ProcessingStatusResponse, type ProgressEntry, ProgressTracker, ProviderType, RateLimitError, type RateLimitErrorOptions, type ResponseArtifact, type ResponseListResponse, type ResponseObject, type ResponseStatus, ResponsesResource, type SalaryRange, type Scope, type SelectedSkill, type SkillAnalyticsRequest, type SkillEffectivenessMetrics, type SkillGuidelineBase, type SkillGuidelineCreate, type SkillGuidelineListResponse, type SkillGuidelineResponse, type SkillGuidelineUpdate, type SkillRetrievalMetadata, type SkillUsageBase, type SkillUsageCreate, type SkillUsageListResponse, type SkillUsageResponse, type SkillUsageUpdate, SkillsResource, SourcesNotAvailableError, type StoreApiKeyRequest, type TenantDetailsResponse, TenantInfoResource, type TenantModelPreference, type TenantModelPreferencesResponse, type TestConnectionResponse, type ThreadListResponse, type ThreadObject, type ThreadResponsesParams, ThreadsResource, type ToolInfo, type UUID, type UpdateAppStatusParams, type UpdateAppStatusResponse, type UpdateThreadRequest, type UserConnectionsResponse, type UserCreateRequest, type UserDeleteResponse, type UserIdentifier, type UserListResponse, type UserResponse, type UserUpdateRequest, UsersResource, ValidationError, displayProgress, formatProgressEntry };
2324
+ export { type AgentConfig, type ApiKeyMode, type ApiKeyModeRequest, type ApiKeyModeResponse, type ApiProvider, type AppEnabledResponse, type AppliedFilters, type AppsListResponse, type ArtifactObject, type ArtifactsListResponse, AuthenticationError, type BaseResource, type BatchCheckConnectionRequest, type BatchConnectionRequest, type BatchConnectionResponse, type BatchConnectionStatus, type BatchConnectionStatusResponse, type BatchDraftRequest, type BatchDraftResponse, type BatchSendRequest, type BatchSendResponse, type BillingStatus, type BulkDeleteRequest, type BulkDeleteResponse, type BulkUploadResponse, type CancelResponseResponse, ChannelType, type CheckAppEnabledParams, type CheckLinkedInConnectionRequest, type ChunkingStrategy, type ConnectionAcceptedData, type ConnectionCallbackRequest, type ConnectionCallbackResponse, type ConnectionInfo, type ConnectionStatus, type ConnectionStatusResponse, type ConnectionSummary, type ContentType, type ConversationDetail, ConversationStatus, type ConversationSummary, type CreateDraftRequest, type CreateFeedbackRequest, type CreateFeedbackResponse, type CreateResponseRequest, type CreateResponseResponse, type CreateThreadRequest, type DatabaseStatus, type DeleteApiKeyResponse, type DisconnectRequest, type DisconnectResponse, type DraftResponse, DraftStatus, type DuplicateHandling, type Email, type EmailThreadSummary, type ErrorResponse, ExternalAPIKeysResource, type ExternalApiKeyResponse, type FeedbackListResponse, type FeedbackObject, type FeedbackType, type FileAttachment, type FileChunk, type FileContentResponse, type FileListResponse, type FileMetadata, type FileScope, type FileScopeUpdateRequest, type FileSearchRequest, type FileSearchResponse, type FileSearchResult, type FileStatisticsResponse, type FileUploadResponse, FilesResource, type FilterLogic, type FilterValue, type GetConnectionStatusParams, type GetToolsRequest, type GetToolsResponse, type GetUserConnectionsParams, type InitiateConnectionRequest, type InitiateConnectionResponse, IntegrationsResource, InternalServerError, type LinkedInConnectionStatus, type LinkedInCreditsResponse, type LinkedInSendRequest, LinkedInSubscriptionType, type ListProvidersResponse, LocalFileNotSupportedError, LumnisClient, type LumnisClientOptions, LumnisError, type LumnisErrorOptions, type MCPScope, type MCPServerCreateRequest, type MCPServerListResponse, type MCPServerResponse, type MCPServerUpdateRequest, MCPServersResource, type MCPToolListResponse, type MCPToolResponse, type MCPTransport, type Message, type MessageReceivedData, type MessageResponse, type MessageSentData, MessageType, MessagingAPIError, MessagingConnectionError, MessagingNotFoundError, MessagingResource, MessagingSendError, MessagingValidationError, type ModelAvailability, type ModelOverrides, type ModelPreferenceCreate, type ModelPreferencesBulkUpdate, ModelPreferencesResource, type ModelProvider, type ModelType, NetworkDistance, NoDataSourcesError, NotFoundError, OutreachMethod, type PaginationInfo, type PaginationParams, PeopleDataSource, PeopleResource, type PeopleSearchRequest, type PeopleSearchResponse, type PersonResult, type Plan, type ProcessingStatus, type ProcessingStatusResponse, type ProgressEntry, ProgressTracker, type ProspectConnectionCheck, type ProspectInfo, type ProspectSyncIdentifier, type ProspectSyncResult, ProviderType, QueueItemStatus, type QuickPeopleSearchOutput, RateLimitError, type RateLimitErrorOptions, type ResponseArtifact, type ResponseListResponse, type ResponseObject, type ResponseStatus, ResponsesResource, type SalaryRange, type Scope, type SelectedSkill, type SendMessageRequest, type SendMessageResponse, type SendReplyRequest, type SendResult, type SkillAnalyticsRequest, type SkillEffectivenessMetrics, type SkillGuidelineBase, type SkillGuidelineCreate, type SkillGuidelineListResponse, type SkillGuidelineResponse, type SkillGuidelineUpdate, type SkillRetrievalMetadata, type SkillUsageBase, type SkillUsageCreate, type SkillUsageListResponse, type SkillUsageResponse, type SkillUsageUpdate, SkillsResource, SourcesNotAvailableError, type SpecializedAgentParams, type SpecializedAgentType, type StoreApiKeyRequest, type SyncJobResponse, SyncJobStatus, type SyncProspectRequest, type SyncProspectResponse, type SyncRequest, type SyncStats, type TenantDetailsResponse, TenantInfoResource, type TenantModelPreference, type TenantModelPreferencesResponse, type TestConnectionResponse, type ThreadListResponse, type ThreadObject, type ThreadResponsesParams, ThreadsResource, type ToolInfo, type UUID, type UpdateAppStatusParams, type UpdateAppStatusResponse, type UpdateLinkedInSubscriptionRequest, type UpdateThreadRequest, type UserConnectionsResponse, type UserCreateRequest, type UserDeleteResponse, type UserIdentifier, type UserListResponse, type UserResponse, type UserUpdateRequest, UsersResource, ValidationError, type WebhookEvent, type WebhookPayload, displayProgress, formatProgressEntry, verifyWebhookSignature };