lumnisai 0.1.4 → 0.1.6

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.cjs CHANGED
@@ -206,19 +206,27 @@ class IntegrationsResource {
206
206
  /**
207
207
  * Check the status of a specific connection
208
208
  */
209
- async getConnectionStatus(userId, appName) {
209
+ async getConnectionStatus(params) {
210
+ const { userId, appName, provider } = params;
211
+ const queryParams = new URLSearchParams();
212
+ if (provider)
213
+ queryParams.append("provider", provider);
214
+ const query = queryParams.toString() ? `?${queryParams.toString()}` : "";
210
215
  return this.http.get(
211
- `/integrations/connections/${encodeURIComponent(userId)}/${appName.toUpperCase()}`
216
+ `/integrations/connections/${encodeURIComponent(userId)}/${appName.toUpperCase()}${query}`
212
217
  );
213
218
  }
214
219
  /**
215
220
  * Get all connections for a user
216
221
  */
217
- async getUserConnections(userId, appFilter) {
218
- const params = new URLSearchParams();
222
+ async getUserConnections(params) {
223
+ const { userId, provider, appFilter } = params;
224
+ const queryParams = new URLSearchParams();
225
+ if (provider)
226
+ queryParams.append("provider", provider);
219
227
  if (appFilter)
220
- params.append("app_filter", appFilter);
221
- const query = params.toString() ? `?${params.toString()}` : "";
228
+ queryParams.append("app_filter", appFilter);
229
+ const query = queryParams.toString() ? `?${queryParams.toString()}` : "";
222
230
  return this.http.get(
223
231
  `/integrations/connections/${encodeURIComponent(userId)}${query}`
224
232
  );
@@ -256,23 +264,41 @@ class IntegrationsResource {
256
264
  const urlParams = new URLSearchParams();
257
265
  if (params?.includeAvailable)
258
266
  urlParams.append("include_available", "true");
267
+ if (params?.provider)
268
+ urlParams.append("provider", params.provider);
259
269
  const query = urlParams.toString() ? `?${urlParams.toString()}` : "";
260
270
  return this.http.get(`/integrations/apps${query}`);
261
271
  }
272
+ /**
273
+ * List available integration providers
274
+ */
275
+ async listProviders() {
276
+ return this.http.get("/integrations/providers");
277
+ }
262
278
  /**
263
279
  * Check if a specific app is enabled
264
280
  */
265
- async checkAppEnabled(appName) {
281
+ async checkAppEnabled(params) {
282
+ const { appName, provider } = params;
283
+ const queryParams = new URLSearchParams();
284
+ if (provider)
285
+ queryParams.append("provider", provider);
286
+ const query = queryParams.toString() ? `?${queryParams.toString()}` : "";
266
287
  return this.http.get(
267
- `/integrations/apps/${appName.toUpperCase()}/enabled`
288
+ `/integrations/apps/${appName.toUpperCase()}/enabled${query}`
268
289
  );
269
290
  }
270
291
  /**
271
292
  * Enable or disable an app for the tenant
272
293
  */
273
- async updateAppStatus(appName, enabled) {
294
+ async updateAppStatus(params) {
295
+ const { appName, enabled, provider } = params;
296
+ const queryParams = new URLSearchParams();
297
+ queryParams.append("enabled", String(enabled));
298
+ if (provider)
299
+ queryParams.append("provider", provider);
274
300
  return this.http.put(
275
- `/integrations/apps/${appName.toUpperCase()}?enabled=${enabled}`
301
+ `/integrations/apps/${appName.toUpperCase()}?${queryParams.toString()}`
276
302
  );
277
303
  }
278
304
  /**
@@ -285,14 +311,14 @@ class IntegrationsResource {
285
311
  );
286
312
  }
287
313
  // Aliases for backward compatibility with client methods
288
- async isAppEnabled(appName) {
289
- return this.checkAppEnabled(appName);
314
+ async isAppEnabled(appName, provider) {
315
+ return this.checkAppEnabled({ appName, provider });
290
316
  }
291
317
  async setAppEnabled(appName, data) {
292
- return this.updateAppStatus(appName, data.enabled);
318
+ return this.updateAppStatus({ appName, enabled: data.enabled, provider: data.provider });
293
319
  }
294
320
  async listConnections(userId, params) {
295
- return this.getUserConnections(userId, params?.appFilter);
321
+ return this.getUserConnections({ userId, appFilter: params?.appFilter, provider: params?.provider });
296
322
  }
297
323
  }
298
324
 
@@ -465,6 +491,110 @@ class LocalFileNotSupportedError extends ValidationError {
465
491
  this.name = "LocalFileNotSupportedError";
466
492
  }
467
493
  }
494
+ class NoDataSourcesError extends ValidationError {
495
+ constructor(message) {
496
+ super(
497
+ message || "No people data sources configured. Please configure API keys.",
498
+ { code: "NO_DATA_SOURCES" }
499
+ );
500
+ this.name = "NoDataSourcesError";
501
+ }
502
+ }
503
+ class SourcesNotAvailableError extends ValidationError {
504
+ availableSources;
505
+ constructor(message, availableSources) {
506
+ super(message, { code: "SOURCES_NOT_AVAILABLE" });
507
+ this.name = "SourcesNotAvailableError";
508
+ this.availableSources = availableSources;
509
+ }
510
+ }
511
+
512
+ var PeopleDataSource = /* @__PURE__ */ ((PeopleDataSource2) => {
513
+ PeopleDataSource2["PDL"] = "PDL";
514
+ PeopleDataSource2["CORESIGNAL"] = "CORESIGNAL";
515
+ PeopleDataSource2["CRUST_DATA"] = "CRUST_DATA";
516
+ return PeopleDataSource2;
517
+ })(PeopleDataSource || {});
518
+
519
+ class PeopleResource {
520
+ constructor(http) {
521
+ this.http = http;
522
+ }
523
+ /**
524
+ * Perform a quick people search across multiple data sources.
525
+ *
526
+ * This endpoint bypasses the full agent framework for faster response times.
527
+ * It searches across PDL, CoreSignal, and CrustData in parallel and returns
528
+ * deduplicated results.
529
+ *
530
+ * @param params - Search parameters
531
+ * @param params.query - Natural language search query
532
+ * @param params.limit - Maximum number of results (1-100, default: 20)
533
+ * @param params.dataSources - Specific data sources to use (optional)
534
+ * @returns Promise resolving to search results
535
+ * @throws {NoDataSourcesError} When no data sources are configured
536
+ * @throws {SourcesNotAvailableError} When requested sources aren't available
537
+ * @throws {ValidationError} For other validation errors
538
+ *
539
+ * @example
540
+ * ```typescript
541
+ * const response = await client.people.quickSearch({
542
+ * query: "Senior engineers in SF with Python",
543
+ * limit: 50,
544
+ * dataSources: [PeopleDataSource.CORESIGNAL, PeopleDataSource.PDL]
545
+ * });
546
+ * ```
547
+ */
548
+ async quickSearch(params) {
549
+ const { query, limit = 20, dataSources } = params;
550
+ if (limit < 1 || limit > 100) {
551
+ throw new ValidationError("Limit must be between 1 and 100", {
552
+ code: "INVALID_LIMIT"
553
+ });
554
+ }
555
+ if (dataSources) {
556
+ const validSources = Object.values(PeopleDataSource);
557
+ for (const source of dataSources) {
558
+ if (!validSources.includes(source)) {
559
+ throw new ValidationError(
560
+ `Invalid data source: ${source}. Valid sources: ${validSources.join(", ")}`,
561
+ { code: "INVALID_DATA_SOURCE" }
562
+ );
563
+ }
564
+ }
565
+ }
566
+ try {
567
+ const response = await this.http.post(
568
+ "/people/quick-search",
569
+ {
570
+ query,
571
+ limit,
572
+ // HTTP client will convert camelCase to snake_case automatically
573
+ dataSources: dataSources?.map((ds) => ds) || void 0
574
+ }
575
+ );
576
+ return response;
577
+ } catch (error) {
578
+ if (error instanceof ValidationError) {
579
+ const details = error.details || {};
580
+ const errorDetail = details.detail?.error || details.error;
581
+ if (errorDetail?.code === "NO_DATA_SOURCES") {
582
+ throw new NoDataSourcesError(errorDetail.message || void 0);
583
+ }
584
+ if (errorDetail?.code === "SOURCES_NOT_AVAILABLE") {
585
+ const message = errorDetail.message || "";
586
+ const availableMatch = message.match(/Available: \[(.+)\]/);
587
+ const availableSources = availableMatch ? availableMatch[1].replace(/'/g, "").split(", ").map((s) => s.trim()).filter((s) => s.length > 0) : [];
588
+ throw new SourcesNotAvailableError(
589
+ errorDetail.message || "Requested data sources not available",
590
+ availableSources
591
+ );
592
+ }
593
+ }
594
+ throw error;
595
+ }
596
+ }
597
+ }
468
598
 
469
599
  class ResponsesResource {
470
600
  constructor(http) {
@@ -990,6 +1120,7 @@ class LumnisClient {
990
1120
  modelPreferences;
991
1121
  mcpServers;
992
1122
  skills;
1123
+ people;
993
1124
  _scopedUserId;
994
1125
  _defaultScope;
995
1126
  constructor(options = {}) {
@@ -1020,6 +1151,7 @@ class LumnisClient {
1020
1151
  this.modelPreferences = new ModelPreferencesResource(this.http);
1021
1152
  this.mcpServers = new MCPServersResource(this.http);
1022
1153
  this.skills = new SkillsResource(this.http);
1154
+ this.people = new PeopleResource(this.http);
1023
1155
  }
1024
1156
  forUser(userId) {
1025
1157
  return new LumnisClient({
@@ -1197,7 +1329,7 @@ class LumnisClient {
1197
1329
  return this.integrations.initiateConnection(params);
1198
1330
  }
1199
1331
  async getConnectionStatus(userId, appName) {
1200
- return this.integrations.getConnectionStatus(userId, appName);
1332
+ return this.integrations.getConnectionStatus({ userId, appName });
1201
1333
  }
1202
1334
  async listConnections(userId, params) {
1203
1335
  return this.integrations.listConnections(userId, params);
@@ -1290,6 +1422,15 @@ function createSimpleProgressCallback() {
1290
1422
  };
1291
1423
  }
1292
1424
 
1425
+ var ProviderType = /* @__PURE__ */ ((ProviderType2) => {
1426
+ ProviderType2["COMPOSIO"] = "composio";
1427
+ ProviderType2["UNIPILE"] = "unipile";
1428
+ ProviderType2["NANGO"] = "nango";
1429
+ ProviderType2["ARCADE"] = "arcade";
1430
+ ProviderType2["MERGE"] = "merge";
1431
+ return ProviderType2;
1432
+ })(ProviderType || {});
1433
+
1293
1434
  function displayProgress(update, indent = " ") {
1294
1435
  if (update.state === "tool_update") {
1295
1436
  if (update.toolCalls && update.toolCalls.length > 0) {
@@ -1390,9 +1531,13 @@ exports.InternalServerError = InternalServerError;
1390
1531
  exports.LocalFileNotSupportedError = LocalFileNotSupportedError;
1391
1532
  exports.LumnisClient = LumnisClient;
1392
1533
  exports.LumnisError = LumnisError;
1534
+ exports.NoDataSourcesError = NoDataSourcesError;
1393
1535
  exports.NotFoundError = NotFoundError;
1536
+ exports.PeopleDataSource = PeopleDataSource;
1394
1537
  exports.ProgressTracker = ProgressTracker;
1538
+ exports.ProviderType = ProviderType;
1395
1539
  exports.RateLimitError = RateLimitError;
1540
+ exports.SourcesNotAvailableError = SourcesNotAvailableError;
1396
1541
  exports.ValidationError = ValidationError;
1397
1542
  exports.default = LumnisClient;
1398
1543
  exports.displayProgress = displayProgress;
package/dist/index.d.cts CHANGED
@@ -50,7 +50,7 @@ interface TenantDetailsResponse {
50
50
  updatedAt: string;
51
51
  }
52
52
 
53
- type ApiProvider = 'OPENAI_API_KEY' | 'ANTHROPIC_API_KEY' | 'EXA_API_KEY' | 'COHERE_API_KEY' | 'GOOGLE_API_KEY' | 'SERPAPI_API_KEY' | 'GROQ_API_KEY' | 'NVIDIA_API_KEY' | 'FIREWORKS_API_KEY' | 'MISTRAL_API_KEY' | 'TOGETHER_API_KEY' | 'XAI_API_KEY' | 'PPLX_API_KEY' | 'HUGGINGFACE_API_KEY' | 'DEEPSEEK_API_KEY' | 'IBM_API_KEY' | 'E2B_API_KEY';
53
+ type ApiProvider = 'OPENAI_API_KEY' | 'ANTHROPIC_API_KEY' | 'EXA_API_KEY' | 'COHERE_API_KEY' | 'CORESIGNAL_API_KEY' | 'GOOGLE_API_KEY' | 'SERPAPI_API_KEY' | 'GROQ_API_KEY' | 'NVIDIA_API_KEY' | 'FIREWORKS_API_KEY' | 'MISTRAL_API_KEY' | 'TOGETHER_API_KEY' | 'XAI_API_KEY' | 'PPLX_API_KEY' | 'HUGGINGFACE_API_KEY' | 'DEEPSEEK_API_KEY' | 'IBM_API_KEY' | 'E2B_API_KEY';
54
54
  interface StoreApiKeyRequest {
55
55
  provider: ApiProvider;
56
56
  apiKey: string;
@@ -73,11 +73,24 @@ interface DeleteApiKeyResponse {
73
73
  message: string;
74
74
  }
75
75
 
76
+ /**
77
+ * Integration provider types
78
+ */
79
+ declare enum ProviderType {
80
+ COMPOSIO = "composio",
81
+ UNIPILE = "unipile",
82
+ NANGO = "nango",// Future
83
+ ARCADE = "arcade",// Future
84
+ MERGE = "merge"
85
+ }
76
86
  type ConnectionStatus = 'pending' | 'active' | 'failed' | 'expired' | 'not_connected';
77
87
  interface InitiateConnectionRequest {
78
88
  userId: string;
79
89
  appName: string;
90
+ provider?: ProviderType;
80
91
  redirectUrl?: string;
92
+ successRedirectUrl?: string;
93
+ failureRedirectUrl?: string;
81
94
  authMode?: string;
82
95
  connectionParams?: Record<string, any>;
83
96
  }
@@ -93,10 +106,14 @@ interface ConnectionStatusResponse {
93
106
  errorMessage?: string | null;
94
107
  }
95
108
  interface ConnectionInfo {
109
+ connectionId: string | null;
110
+ tenantId: string;
111
+ userId: string;
112
+ provider: ProviderType;
96
113
  appName: string;
97
114
  status: ConnectionStatus;
98
- connectedAt?: string | null;
99
- errorMessage?: string | null;
115
+ connectedAt: string | null;
116
+ metadata: Record<string, any>;
100
117
  }
101
118
  interface UserConnectionsResponse {
102
119
  userId: string;
@@ -104,6 +121,7 @@ interface UserConnectionsResponse {
104
121
  }
105
122
  interface GetToolsRequest {
106
123
  userId: string;
124
+ provider?: ProviderType;
107
125
  appFilter?: string[];
108
126
  }
109
127
  interface ToolInfo {
@@ -120,6 +138,7 @@ interface GetToolsResponse {
120
138
  interface DisconnectRequest {
121
139
  userId: string;
122
140
  appName: string;
141
+ provider?: ProviderType;
123
142
  }
124
143
  interface DisconnectResponse {
125
144
  success: boolean;
@@ -137,12 +156,15 @@ interface ConnectionCallbackResponse {
137
156
  message: string;
138
157
  }
139
158
  interface AppsListResponse {
140
- enabledApps: string[];
141
- totalEnabled: number;
159
+ providers: Record<string, string[]>;
160
+ totalProviders: number;
161
+ enabledApps?: string[];
162
+ totalEnabled?: number;
142
163
  availableApps?: string[];
143
164
  totalAvailable?: number;
144
165
  }
145
166
  interface AppEnabledResponse {
167
+ provider: ProviderType;
146
168
  appName: string;
147
169
  enabled: boolean;
148
170
  message: string;
@@ -153,6 +175,29 @@ interface UpdateAppStatusResponse {
153
175
  message: string;
154
176
  updatedAt: string;
155
177
  }
178
+ interface ListProvidersResponse {
179
+ providers: string[];
180
+ total: number;
181
+ }
182
+ interface GetConnectionStatusParams {
183
+ userId: string;
184
+ appName: string;
185
+ provider?: ProviderType;
186
+ }
187
+ interface GetUserConnectionsParams {
188
+ userId: string;
189
+ provider?: ProviderType;
190
+ appFilter?: string;
191
+ }
192
+ interface CheckAppEnabledParams {
193
+ appName: string;
194
+ provider?: ProviderType;
195
+ }
196
+ interface UpdateAppStatusParams {
197
+ appName: string;
198
+ enabled: boolean;
199
+ provider?: ProviderType;
200
+ }
156
201
 
157
202
  type MCPTransport = 'stdio' | 'streamable_http' | 'sse';
158
203
  type MCPScope = 'tenant' | 'user';
@@ -824,11 +869,11 @@ declare class IntegrationsResource {
824
869
  /**
825
870
  * Check the status of a specific connection
826
871
  */
827
- getConnectionStatus(userId: string, appName: string): Promise<ConnectionStatusResponse>;
872
+ getConnectionStatus(params: GetConnectionStatusParams): Promise<ConnectionStatusResponse>;
828
873
  /**
829
874
  * Get all connections for a user
830
875
  */
831
- getUserConnections(userId: string, appFilter?: string): Promise<UserConnectionsResponse>;
876
+ getUserConnections(params: GetUserConnectionsParams): Promise<UserConnectionsResponse>;
832
877
  /**
833
878
  * Get available tools for a user based on connections
834
879
  */
@@ -846,25 +891,32 @@ declare class IntegrationsResource {
846
891
  */
847
892
  listApps(params?: {
848
893
  includeAvailable?: boolean;
894
+ provider?: string;
849
895
  }): Promise<AppsListResponse>;
896
+ /**
897
+ * List available integration providers
898
+ */
899
+ listProviders(): Promise<ListProvidersResponse>;
850
900
  /**
851
901
  * Check if a specific app is enabled
852
902
  */
853
- checkAppEnabled(appName: string): Promise<AppEnabledResponse>;
903
+ checkAppEnabled(params: CheckAppEnabledParams): Promise<AppEnabledResponse>;
854
904
  /**
855
905
  * Enable or disable an app for the tenant
856
906
  */
857
- updateAppStatus(appName: string, enabled: boolean): Promise<UpdateAppStatusResponse>;
907
+ updateAppStatus(params: UpdateAppStatusParams): Promise<UpdateAppStatusResponse>;
858
908
  /**
859
909
  * Get required fields for non-OAuth authentication (future)
860
910
  */
861
911
  getNonOAuthRequiredFields(appName: string, authScheme: string): Promise<any>;
862
- isAppEnabled(appName: string): Promise<AppEnabledResponse>;
912
+ isAppEnabled(appName: string, provider?: string): Promise<AppEnabledResponse>;
863
913
  setAppEnabled(appName: string, data: {
864
914
  enabled: boolean;
915
+ provider?: string;
865
916
  }): Promise<UpdateAppStatusResponse>;
866
917
  listConnections(userId: string, params?: {
867
918
  appFilter?: string;
919
+ provider?: string;
868
920
  }): Promise<UserConnectionsResponse>;
869
921
  }
870
922
 
@@ -952,6 +1004,201 @@ declare class ModelPreferencesResource {
952
1004
  }): Promise<TenantModelPreferencesResponse>;
953
1005
  }
954
1006
 
1007
+ /**
1008
+ * Available people search data sources
1009
+ */
1010
+ declare enum PeopleDataSource {
1011
+ PDL = "PDL",
1012
+ CORESIGNAL = "CORESIGNAL",
1013
+ CRUST_DATA = "CRUST_DATA"
1014
+ }
1015
+ /**
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.
1019
+ */
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;
1031
+ }
1032
+ /**
1033
+ * Simplified person result model returned in search results.
1034
+ * Contains normalized data from multiple sources (PDL, CoreSignal, CrustData).
1035
+ */
1036
+ interface PersonResult {
1037
+ /** Unique identifier for the person */
1038
+ id: string;
1039
+ /** Full name */
1040
+ 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[];
1083
+ }
1084
+ /**
1085
+ * Request model for people search queries.
1086
+ */
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[];
1111
+ }
1112
+ /**
1113
+ * Logic operator for filter values
1114
+ */
1115
+ type FilterLogic = 'or' | 'and' | 'should';
1116
+ /**
1117
+ * A filter with values and logic operator.
1118
+ * Used in applied_filters response.
1119
+ */
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;
1130
+ }
1131
+ /**
1132
+ * Structure of the applied_filters field in the response.
1133
+ * Contains extracted filters from the natural language query.
1134
+ */
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;
1154
+ }
1155
+ /**
1156
+ * Response model for people search endpoint.
1157
+ */
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[];
1169
+ }
1170
+
1171
+ declare class PeopleResource {
1172
+ private readonly http;
1173
+ constructor(http: Http);
1174
+ /**
1175
+ * Perform a quick people search across multiple data sources.
1176
+ *
1177
+ * This endpoint bypasses the full agent framework for faster response times.
1178
+ * It searches across PDL, CoreSignal, and CrustData in parallel and returns
1179
+ * deduplicated results.
1180
+ *
1181
+ * @param params - Search parameters
1182
+ * @param params.query - Natural language search query
1183
+ * @param params.limit - Maximum number of results (1-100, default: 20)
1184
+ * @param params.dataSources - Specific data sources to use (optional)
1185
+ * @returns Promise resolving to search results
1186
+ * @throws {NoDataSourcesError} When no data sources are configured
1187
+ * @throws {SourcesNotAvailableError} When requested sources aren't available
1188
+ * @throws {ValidationError} For other validation errors
1189
+ *
1190
+ * @example
1191
+ * ```typescript
1192
+ * const response = await client.people.quickSearch({
1193
+ * query: "Senior engineers in SF with Python",
1194
+ * limit: 50,
1195
+ * dataSources: [PeopleDataSource.CORESIGNAL, PeopleDataSource.PDL]
1196
+ * });
1197
+ * ```
1198
+ */
1199
+ quickSearch(params: PeopleSearchRequest): Promise<PeopleSearchResponse>;
1200
+ }
1201
+
955
1202
  declare class ResponsesResource {
956
1203
  private readonly http;
957
1204
  constructor(http: Http);
@@ -1201,6 +1448,7 @@ declare class LumnisClient {
1201
1448
  readonly modelPreferences: ModelPreferencesResource;
1202
1449
  readonly mcpServers: MCPServersResource;
1203
1450
  readonly skills: SkillsResource;
1451
+ readonly people: PeopleResource;
1204
1452
  private readonly _scopedUserId?;
1205
1453
  private readonly _defaultScope;
1206
1454
  constructor(options?: LumnisClientOptions);
@@ -1291,6 +1539,13 @@ declare class InternalServerError extends LumnisError {
1291
1539
  declare class LocalFileNotSupportedError extends ValidationError {
1292
1540
  constructor(filePath: string);
1293
1541
  }
1542
+ declare class NoDataSourcesError extends ValidationError {
1543
+ constructor(message?: string);
1544
+ }
1545
+ declare class SourcesNotAvailableError extends ValidationError {
1546
+ availableSources: string[];
1547
+ constructor(message: string, availableSources: string[]);
1548
+ }
1294
1549
 
1295
1550
  /**
1296
1551
  * Utility functions for displaying progress updates
@@ -1343,4 +1598,4 @@ declare class ProgressTracker {
1343
1598
  }
1344
1599
 
1345
1600
  export = LumnisClient;
1346
- export { type AgentConfig, type ApiKeyMode, type ApiKeyModeRequest, type ApiKeyModeResponse, type ApiProvider, type AppEnabledResponse, type AppsListResponse, type ArtifactObject, type ArtifactsListResponse, AuthenticationError, type BaseResource, type BillingStatus, type BulkDeleteRequest, type BulkDeleteResponse, type BulkUploadResponse, type CancelResponseResponse, 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 GetToolsRequest, type GetToolsResponse, type InitiateConnectionRequest, type InitiateConnectionResponse, IntegrationsResource, InternalServerError, 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, NotFoundError, type PaginationInfo, type PaginationParams, type Plan, type ProcessingStatus, type ProcessingStatusResponse, type ProgressEntry, ProgressTracker, RateLimitError, type RateLimitErrorOptions, type ResponseArtifact, type ResponseListResponse, type ResponseObject, type ResponseStatus, ResponsesResource, 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, type StoreApiKeyRequest, type TenantDetailsResponse, TenantInfoResource, type TenantModelPreference, type TenantModelPreferencesResponse, type TestConnectionResponse, type ThreadListResponse, type ThreadObject, type ThreadResponsesParams, ThreadsResource, type ToolInfo, type UUID, type UpdateAppStatusResponse, type UpdateThreadRequest, type UserConnectionsResponse, type UserCreateRequest, type UserDeleteResponse, type UserIdentifier, type UserListResponse, type UserResponse, type UserUpdateRequest, UsersResource, ValidationError, displayProgress, formatProgressEntry };
1601
+ 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 };