lumnisai 0.1.5 → 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
@@ -491,6 +491,110 @@ class LocalFileNotSupportedError extends ValidationError {
491
491
  this.name = "LocalFileNotSupportedError";
492
492
  }
493
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
+ }
494
598
 
495
599
  class ResponsesResource {
496
600
  constructor(http) {
@@ -1016,6 +1120,7 @@ class LumnisClient {
1016
1120
  modelPreferences;
1017
1121
  mcpServers;
1018
1122
  skills;
1123
+ people;
1019
1124
  _scopedUserId;
1020
1125
  _defaultScope;
1021
1126
  constructor(options = {}) {
@@ -1046,6 +1151,7 @@ class LumnisClient {
1046
1151
  this.modelPreferences = new ModelPreferencesResource(this.http);
1047
1152
  this.mcpServers = new MCPServersResource(this.http);
1048
1153
  this.skills = new SkillsResource(this.http);
1154
+ this.people = new PeopleResource(this.http);
1049
1155
  }
1050
1156
  forUser(userId) {
1051
1157
  return new LumnisClient({
@@ -1425,10 +1531,13 @@ exports.InternalServerError = InternalServerError;
1425
1531
  exports.LocalFileNotSupportedError = LocalFileNotSupportedError;
1426
1532
  exports.LumnisClient = LumnisClient;
1427
1533
  exports.LumnisError = LumnisError;
1534
+ exports.NoDataSourcesError = NoDataSourcesError;
1428
1535
  exports.NotFoundError = NotFoundError;
1536
+ exports.PeopleDataSource = PeopleDataSource;
1429
1537
  exports.ProgressTracker = ProgressTracker;
1430
1538
  exports.ProviderType = ProviderType;
1431
1539
  exports.RateLimitError = RateLimitError;
1540
+ exports.SourcesNotAvailableError = SourcesNotAvailableError;
1432
1541
  exports.ValidationError = ValidationError;
1433
1542
  exports.default = LumnisClient;
1434
1543
  exports.displayProgress = displayProgress;
package/dist/index.d.cts CHANGED
@@ -1004,6 +1004,201 @@ declare class ModelPreferencesResource {
1004
1004
  }): Promise<TenantModelPreferencesResponse>;
1005
1005
  }
1006
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
+
1007
1202
  declare class ResponsesResource {
1008
1203
  private readonly http;
1009
1204
  constructor(http: Http);
@@ -1253,6 +1448,7 @@ declare class LumnisClient {
1253
1448
  readonly modelPreferences: ModelPreferencesResource;
1254
1449
  readonly mcpServers: MCPServersResource;
1255
1450
  readonly skills: SkillsResource;
1451
+ readonly people: PeopleResource;
1256
1452
  private readonly _scopedUserId?;
1257
1453
  private readonly _defaultScope;
1258
1454
  constructor(options?: LumnisClientOptions);
@@ -1343,6 +1539,13 @@ declare class InternalServerError extends LumnisError {
1343
1539
  declare class LocalFileNotSupportedError extends ValidationError {
1344
1540
  constructor(filePath: string);
1345
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
+ }
1346
1549
 
1347
1550
  /**
1348
1551
  * Utility functions for displaying progress updates
@@ -1395,4 +1598,4 @@ declare class ProgressTracker {
1395
1598
  }
1396
1599
 
1397
1600
  export = LumnisClient;
1398
- 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 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 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, NotFoundError, type PaginationInfo, type PaginationParams, type Plan, type ProcessingStatus, type ProcessingStatusResponse, type ProgressEntry, ProgressTracker, ProviderType, 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 UpdateAppStatusParams, 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 };
package/dist/index.d.mts CHANGED
@@ -1004,6 +1004,201 @@ declare class ModelPreferencesResource {
1004
1004
  }): Promise<TenantModelPreferencesResponse>;
1005
1005
  }
1006
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
+
1007
1202
  declare class ResponsesResource {
1008
1203
  private readonly http;
1009
1204
  constructor(http: Http);
@@ -1253,6 +1448,7 @@ declare class LumnisClient {
1253
1448
  readonly modelPreferences: ModelPreferencesResource;
1254
1449
  readonly mcpServers: MCPServersResource;
1255
1450
  readonly skills: SkillsResource;
1451
+ readonly people: PeopleResource;
1256
1452
  private readonly _scopedUserId?;
1257
1453
  private readonly _defaultScope;
1258
1454
  constructor(options?: LumnisClientOptions);
@@ -1343,6 +1539,13 @@ declare class InternalServerError extends LumnisError {
1343
1539
  declare class LocalFileNotSupportedError extends ValidationError {
1344
1540
  constructor(filePath: string);
1345
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
+ }
1346
1549
 
1347
1550
  /**
1348
1551
  * Utility functions for displaying progress updates
@@ -1394,4 +1597,4 @@ declare class ProgressTracker {
1394
1597
  reset(): void;
1395
1598
  }
1396
1599
 
1397
- 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 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 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, NotFoundError, type PaginationInfo, type PaginationParams, type Plan, type ProcessingStatus, type ProcessingStatusResponse, type ProgressEntry, ProgressTracker, ProviderType, 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 UpdateAppStatusParams, type UpdateAppStatusResponse, type UpdateThreadRequest, type UserConnectionsResponse, type UserCreateRequest, type UserDeleteResponse, type UserIdentifier, type UserListResponse, type UserResponse, type UserUpdateRequest, UsersResource, ValidationError, LumnisClient as default, displayProgress, formatProgressEntry };
1600
+ 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, LumnisClient as default, displayProgress, formatProgressEntry };
package/dist/index.d.ts CHANGED
@@ -1004,6 +1004,201 @@ declare class ModelPreferencesResource {
1004
1004
  }): Promise<TenantModelPreferencesResponse>;
1005
1005
  }
1006
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
+
1007
1202
  declare class ResponsesResource {
1008
1203
  private readonly http;
1009
1204
  constructor(http: Http);
@@ -1253,6 +1448,7 @@ declare class LumnisClient {
1253
1448
  readonly modelPreferences: ModelPreferencesResource;
1254
1449
  readonly mcpServers: MCPServersResource;
1255
1450
  readonly skills: SkillsResource;
1451
+ readonly people: PeopleResource;
1256
1452
  private readonly _scopedUserId?;
1257
1453
  private readonly _defaultScope;
1258
1454
  constructor(options?: LumnisClientOptions);
@@ -1343,6 +1539,13 @@ declare class InternalServerError extends LumnisError {
1343
1539
  declare class LocalFileNotSupportedError extends ValidationError {
1344
1540
  constructor(filePath: string);
1345
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
+ }
1346
1549
 
1347
1550
  /**
1348
1551
  * Utility functions for displaying progress updates
@@ -1395,4 +1598,4 @@ declare class ProgressTracker {
1395
1598
  }
1396
1599
 
1397
1600
  export = LumnisClient;
1398
- 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 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 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, NotFoundError, type PaginationInfo, type PaginationParams, type Plan, type ProcessingStatus, type ProcessingStatusResponse, type ProgressEntry, ProgressTracker, ProviderType, 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 UpdateAppStatusParams, 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 };
package/dist/index.mjs CHANGED
@@ -487,6 +487,110 @@ class LocalFileNotSupportedError extends ValidationError {
487
487
  this.name = "LocalFileNotSupportedError";
488
488
  }
489
489
  }
490
+ class NoDataSourcesError extends ValidationError {
491
+ constructor(message) {
492
+ super(
493
+ message || "No people data sources configured. Please configure API keys.",
494
+ { code: "NO_DATA_SOURCES" }
495
+ );
496
+ this.name = "NoDataSourcesError";
497
+ }
498
+ }
499
+ class SourcesNotAvailableError extends ValidationError {
500
+ availableSources;
501
+ constructor(message, availableSources) {
502
+ super(message, { code: "SOURCES_NOT_AVAILABLE" });
503
+ this.name = "SourcesNotAvailableError";
504
+ this.availableSources = availableSources;
505
+ }
506
+ }
507
+
508
+ var PeopleDataSource = /* @__PURE__ */ ((PeopleDataSource2) => {
509
+ PeopleDataSource2["PDL"] = "PDL";
510
+ PeopleDataSource2["CORESIGNAL"] = "CORESIGNAL";
511
+ PeopleDataSource2["CRUST_DATA"] = "CRUST_DATA";
512
+ return PeopleDataSource2;
513
+ })(PeopleDataSource || {});
514
+
515
+ class PeopleResource {
516
+ constructor(http) {
517
+ this.http = http;
518
+ }
519
+ /**
520
+ * Perform a quick people search across multiple data sources.
521
+ *
522
+ * This endpoint bypasses the full agent framework for faster response times.
523
+ * It searches across PDL, CoreSignal, and CrustData in parallel and returns
524
+ * deduplicated results.
525
+ *
526
+ * @param params - Search parameters
527
+ * @param params.query - Natural language search query
528
+ * @param params.limit - Maximum number of results (1-100, default: 20)
529
+ * @param params.dataSources - Specific data sources to use (optional)
530
+ * @returns Promise resolving to search results
531
+ * @throws {NoDataSourcesError} When no data sources are configured
532
+ * @throws {SourcesNotAvailableError} When requested sources aren't available
533
+ * @throws {ValidationError} For other validation errors
534
+ *
535
+ * @example
536
+ * ```typescript
537
+ * const response = await client.people.quickSearch({
538
+ * query: "Senior engineers in SF with Python",
539
+ * limit: 50,
540
+ * dataSources: [PeopleDataSource.CORESIGNAL, PeopleDataSource.PDL]
541
+ * });
542
+ * ```
543
+ */
544
+ async quickSearch(params) {
545
+ const { query, limit = 20, dataSources } = params;
546
+ if (limit < 1 || limit > 100) {
547
+ throw new ValidationError("Limit must be between 1 and 100", {
548
+ code: "INVALID_LIMIT"
549
+ });
550
+ }
551
+ if (dataSources) {
552
+ const validSources = Object.values(PeopleDataSource);
553
+ for (const source of dataSources) {
554
+ if (!validSources.includes(source)) {
555
+ throw new ValidationError(
556
+ `Invalid data source: ${source}. Valid sources: ${validSources.join(", ")}`,
557
+ { code: "INVALID_DATA_SOURCE" }
558
+ );
559
+ }
560
+ }
561
+ }
562
+ try {
563
+ const response = await this.http.post(
564
+ "/people/quick-search",
565
+ {
566
+ query,
567
+ limit,
568
+ // HTTP client will convert camelCase to snake_case automatically
569
+ dataSources: dataSources?.map((ds) => ds) || void 0
570
+ }
571
+ );
572
+ return response;
573
+ } catch (error) {
574
+ if (error instanceof ValidationError) {
575
+ const details = error.details || {};
576
+ const errorDetail = details.detail?.error || details.error;
577
+ if (errorDetail?.code === "NO_DATA_SOURCES") {
578
+ throw new NoDataSourcesError(errorDetail.message || void 0);
579
+ }
580
+ if (errorDetail?.code === "SOURCES_NOT_AVAILABLE") {
581
+ const message = errorDetail.message || "";
582
+ const availableMatch = message.match(/Available: \[(.+)\]/);
583
+ const availableSources = availableMatch ? availableMatch[1].replace(/'/g, "").split(", ").map((s) => s.trim()).filter((s) => s.length > 0) : [];
584
+ throw new SourcesNotAvailableError(
585
+ errorDetail.message || "Requested data sources not available",
586
+ availableSources
587
+ );
588
+ }
589
+ }
590
+ throw error;
591
+ }
592
+ }
593
+ }
490
594
 
491
595
  class ResponsesResource {
492
596
  constructor(http) {
@@ -1012,6 +1116,7 @@ class LumnisClient {
1012
1116
  modelPreferences;
1013
1117
  mcpServers;
1014
1118
  skills;
1119
+ people;
1015
1120
  _scopedUserId;
1016
1121
  _defaultScope;
1017
1122
  constructor(options = {}) {
@@ -1042,6 +1147,7 @@ class LumnisClient {
1042
1147
  this.modelPreferences = new ModelPreferencesResource(this.http);
1043
1148
  this.mcpServers = new MCPServersResource(this.http);
1044
1149
  this.skills = new SkillsResource(this.http);
1150
+ this.people = new PeopleResource(this.http);
1045
1151
  }
1046
1152
  forUser(userId) {
1047
1153
  return new LumnisClient({
@@ -1416,4 +1522,4 @@ class ProgressTracker {
1416
1522
  }
1417
1523
  }
1418
1524
 
1419
- export { AuthenticationError, InternalServerError, LocalFileNotSupportedError, LumnisClient, LumnisError, NotFoundError, ProgressTracker, ProviderType, RateLimitError, ValidationError, LumnisClient as default, displayProgress, formatProgressEntry };
1525
+ export { AuthenticationError, InternalServerError, LocalFileNotSupportedError, LumnisClient, LumnisError, NoDataSourcesError, NotFoundError, PeopleDataSource, ProgressTracker, ProviderType, RateLimitError, SourcesNotAvailableError, ValidationError, LumnisClient as default, displayProgress, formatProgressEntry };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "lumnisai",
3
3
  "type": "module",
4
- "version": "0.1.5",
4
+ "version": "0.1.6",
5
5
  "description": "Official Node.js SDK for the Lumnis AI API",
6
6
  "author": "Lumnis AI",
7
7
  "license": "MIT",