lumnisai 0.5.16 → 0.5.18

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
@@ -922,6 +922,65 @@ class ContactRelationshipsResource {
922
922
  }
923
923
  }
924
924
 
925
+ class CrmResource {
926
+ constructor(http) {
927
+ this.http = http;
928
+ }
929
+ /**
930
+ * Push one Lumnis prospect to the connected CRM.
931
+ *
932
+ * Idempotent: repeated calls for the same
933
+ * `(userId, provider, linkedinUrl)` return `linked` with the same
934
+ * `crmRecordId`. Stale links (record deleted in the CRM) are detected
935
+ * and re-created automatically.
936
+ *
937
+ * @example
938
+ * ```typescript
939
+ * const result = await client.crm.syncProspect({
940
+ * userId: 'user@example.com',
941
+ * provider: 'attio',
942
+ * linkedinUrl: 'https://www.linkedin.com/in/jane-doe/',
943
+ * })
944
+ * console.log(result.action, result.crmUrl)
945
+ * ```
946
+ */
947
+ async syncProspect(data) {
948
+ return this.http.post("/crm/prospects/sync", data);
949
+ }
950
+ /**
951
+ * Bulk-check whether prospects are already in the CRM. Designed for
952
+ * list-view badge rendering: feed it every visible LinkedIn URL and
953
+ * render a "linked" indicator for the ones that come back true.
954
+ *
955
+ * Layered cache on the server side: persistent positive matches are
956
+ * served from the `campaign_prospects.crm_record_id` column, negative
957
+ * results are served from a Redis cache (TTL configured by
958
+ * `CRM_MATCH_NEGATIVE_CACHE_TTL_SECONDS`). Only the leftover unknowns
959
+ * fan out to the live CRM, bounded by
960
+ * `CRM_MATCH_LIVE_SEARCH_PARALLELISM`.
961
+ *
962
+ * Note: HubSpot does not expose a LinkedIn-URL search field through
963
+ * Composio, so for `provider: 'hubspot'` URLs that aren't already in
964
+ * the persistent cache will always come back `linked: false`. The
965
+ * sync endpoint still reconciles via email when available.
966
+ *
967
+ * @example
968
+ * ```typescript
969
+ * const { matches } = await client.crm.matchBatch({
970
+ * userId: 'user@example.com',
971
+ * provider: 'attio',
972
+ * linkedinUrls: prospects.map(p => p.linkedinUrl),
973
+ * })
974
+ * for (const m of matches) {
975
+ * if (m.linked) console.log(m.linkedinUrl, '->', m.crmUrl)
976
+ * }
977
+ * ```
978
+ */
979
+ async matchBatch(data) {
980
+ return this.http.post("/crm/prospects/match-batch", data);
981
+ }
982
+ }
983
+
925
984
  class EmailResource {
926
985
  constructor(http) {
927
986
  this.http = http;
@@ -4274,6 +4333,7 @@ class LumnisClient {
4274
4333
  contactRelationships;
4275
4334
  enrichment;
4276
4335
  email;
4336
+ crm;
4277
4337
  _scopedUserId;
4278
4338
  _defaultScope;
4279
4339
  constructor(options = {}) {
@@ -4311,6 +4371,7 @@ class LumnisClient {
4311
4371
  this.contactRelationships = new ContactRelationshipsResource(this.http);
4312
4372
  this.enrichment = new EnrichmentResource(this.http);
4313
4373
  this.email = new EmailResource(this.http);
4374
+ this.crm = new CrmResource(this.http);
4314
4375
  }
4315
4376
  forUser(userId) {
4316
4377
  return new LumnisClient({
package/dist/index.d.cts CHANGED
@@ -1006,7 +1006,17 @@ interface ValidatedCandidate {
1006
1006
  /** When source is job_signal: hiring-company context from CrustData job listings */
1007
1007
  jobSignalMetadata?: {
1008
1008
  companyId?: number | null;
1009
+ companyName?: string;
1010
+ companyLinkedinUrl?: string;
1009
1011
  jobCount?: number;
1012
+ signalSource?: string;
1013
+ sampleJobListings?: Array<{
1014
+ title?: string;
1015
+ description?: string;
1016
+ workplaceType?: string;
1017
+ country?: string;
1018
+ dateAdded?: string;
1019
+ }>;
1010
1020
  };
1011
1021
  /** Raw profile data */
1012
1022
  [key: string]: any;
@@ -1310,6 +1320,16 @@ interface SpecializedAgentParams {
1310
1320
  * Used by deep_people_search.
1311
1321
  */
1312
1322
  searchJobSignal?: boolean | 'auto';
1323
+ /**
1324
+ * Maximum candidates to return per company. Prevents results
1325
+ * dominated by a single large company. Applied after validation,
1326
+ * keeps highest-scored per company.
1327
+ * @default 3
1328
+ * @minimum 1
1329
+ * @maximum 1000
1330
+ * Used by deep_people_search.
1331
+ */
1332
+ maxCandidatesPerCompany?: number;
1313
1333
  /**
1314
1334
  * Additional parameters for any specialized agent
1315
1335
  * This allows flexibility for future agents without SDK updates
@@ -1809,6 +1829,13 @@ interface CampaignProspectResponse {
1809
1829
  nextEvaluateAt?: string | null;
1810
1830
  stopReason?: string | null;
1811
1831
  stopReasoning?: string | null;
1832
+ /**
1833
+ * CRM provider this prospect is linked to via the CRM Sync API.
1834
+ * Populated by `client.crm.syncProspect` and `client.crm.matchBatch`.
1835
+ */
1836
+ crmProvider?: 'attio' | 'hubspot' | null;
1837
+ /** External CRM record id (Attio record_id, HubSpot contact id). */
1838
+ crmRecordId?: string | null;
1812
1839
  metadata: Record<string, unknown>;
1813
1840
  version: number;
1814
1841
  createdAt: string;
@@ -2287,6 +2314,150 @@ declare class ContactRelationshipsResource {
2287
2314
  get(options: GetContactRelationshipsOptions): Promise<ContactRelationshipResponse>;
2288
2315
  }
2289
2316
 
2317
+ /**
2318
+ * CRM Sync API types.
2319
+ *
2320
+ * These types map to the Python backend endpoints under /v1/crm.
2321
+ * Provider list mirrors `CrmProvider` in src/app/api/schemas/crm_schemas.py.
2322
+ *
2323
+ * All types are prefixed with `Crm` to avoid collisions with the
2324
+ * messaging-API prospect-sync types (`SyncProspectRequest`,
2325
+ * `SyncProspectResponse` in `./messaging`), which serve a different
2326
+ * purpose (LinkedIn/email conversation sync, not CRM linkage).
2327
+ */
2328
+ /**
2329
+ * Connected CRM systems supported by the sync API.
2330
+ *
2331
+ * Capability notes:
2332
+ * - `attio` supports both email and LinkedIn-URL person search.
2333
+ * - `hubspot` only supports email search; LinkedIn URLs are stored as a
2334
+ * custom property on create but are not searchable through the
2335
+ * reconciliation flow.
2336
+ */
2337
+ type CrmProvider = 'attio' | 'hubspot';
2338
+ /**
2339
+ * Push one Lumnis prospect to the connected CRM.
2340
+ *
2341
+ * The prospect must already exist in a `campaign_prospects` row owned
2342
+ * by `userId`; the linkedin URL is the lookup key.
2343
+ */
2344
+ interface CrmSyncProspectRequest {
2345
+ /** UUID or email of the user whose CRM connection executes the call. */
2346
+ userId: string;
2347
+ provider: CrmProvider;
2348
+ /** Must contain `linkedin.com/in/`. */
2349
+ linkedinUrl: string;
2350
+ }
2351
+ interface CrmSyncProspectResponse {
2352
+ /**
2353
+ * `linked` — record already existed in the CRM (matched by email or
2354
+ * LinkedIn URL) and was linked back to the prospect.
2355
+ * `created` — no existing match, a new CRM record was created.
2356
+ */
2357
+ action: 'linked' | 'created';
2358
+ /** Provider-native record id (Attio record_id, HubSpot contact id). */
2359
+ crmRecordId: string;
2360
+ /** Stable URL that opens the record in the CRM UI. */
2361
+ crmUrl: string;
2362
+ }
2363
+ /**
2364
+ * Bulk-check whether prospects are already in the CRM.
2365
+ *
2366
+ * Server-side fan-out is bounded by the
2367
+ * `CRM_MATCH_LIVE_SEARCH_PARALLELISM` setting; the array max
2368
+ * (1000) is a Pydantic guard, not a UX cap.
2369
+ */
2370
+ interface CrmMatchBatchRequest {
2371
+ userId: string;
2372
+ provider: CrmProvider;
2373
+ /** 1..1000 LinkedIn profile URLs. */
2374
+ linkedinUrls: string[];
2375
+ }
2376
+ interface CrmMatchedProspect {
2377
+ /** Echoed input URL (in original casing/form). */
2378
+ linkedinUrl: string;
2379
+ linked: boolean;
2380
+ /** Present iff `linked` is true. */
2381
+ crmRecordId?: string | null;
2382
+ crmUrl?: string | null;
2383
+ }
2384
+ interface CrmMatchBatchResponse {
2385
+ matches: CrmMatchedProspect[];
2386
+ }
2387
+
2388
+ /**
2389
+ * Resource for the user-triggered CRM Sync API.
2390
+ *
2391
+ * Wraps `POST /v1/crm/prospects/sync` and `POST /v1/crm/prospects/match-batch`.
2392
+ *
2393
+ * The user identified by `userId` must already have an active CRM
2394
+ * connection (see `client.integrations.initiateConnection`). When the
2395
+ * connection is missing, the server returns `409 crm_not_connected`
2396
+ * with `connect_url` in the error body so callers can route the user
2397
+ * to the OAuth flow.
2398
+ *
2399
+ * Failure modes worth handling:
2400
+ * - `409 crm_not_connected` — user hasn't connected the provider.
2401
+ * - `404 prospect_not_found` (sync only) — no `campaign_prospects` row
2402
+ * matches `linkedinUrl` for this user.
2403
+ * - `502 crm_upstream_error` — Attio/HubSpot returned an error.
2404
+ * - `503 crm_upstream_rate_limited` — upstream rate-limit; the response
2405
+ * includes a `Retry-After` header.
2406
+ */
2407
+ declare class CrmResource {
2408
+ private readonly http;
2409
+ constructor(http: Http);
2410
+ /**
2411
+ * Push one Lumnis prospect to the connected CRM.
2412
+ *
2413
+ * Idempotent: repeated calls for the same
2414
+ * `(userId, provider, linkedinUrl)` return `linked` with the same
2415
+ * `crmRecordId`. Stale links (record deleted in the CRM) are detected
2416
+ * and re-created automatically.
2417
+ *
2418
+ * @example
2419
+ * ```typescript
2420
+ * const result = await client.crm.syncProspect({
2421
+ * userId: 'user@example.com',
2422
+ * provider: 'attio',
2423
+ * linkedinUrl: 'https://www.linkedin.com/in/jane-doe/',
2424
+ * })
2425
+ * console.log(result.action, result.crmUrl)
2426
+ * ```
2427
+ */
2428
+ syncProspect(data: CrmSyncProspectRequest): Promise<CrmSyncProspectResponse>;
2429
+ /**
2430
+ * Bulk-check whether prospects are already in the CRM. Designed for
2431
+ * list-view badge rendering: feed it every visible LinkedIn URL and
2432
+ * render a "linked" indicator for the ones that come back true.
2433
+ *
2434
+ * Layered cache on the server side: persistent positive matches are
2435
+ * served from the `campaign_prospects.crm_record_id` column, negative
2436
+ * results are served from a Redis cache (TTL configured by
2437
+ * `CRM_MATCH_NEGATIVE_CACHE_TTL_SECONDS`). Only the leftover unknowns
2438
+ * fan out to the live CRM, bounded by
2439
+ * `CRM_MATCH_LIVE_SEARCH_PARALLELISM`.
2440
+ *
2441
+ * Note: HubSpot does not expose a LinkedIn-URL search field through
2442
+ * Composio, so for `provider: 'hubspot'` URLs that aren't already in
2443
+ * the persistent cache will always come back `linked: false`. The
2444
+ * sync endpoint still reconciles via email when available.
2445
+ *
2446
+ * @example
2447
+ * ```typescript
2448
+ * const { matches } = await client.crm.matchBatch({
2449
+ * userId: 'user@example.com',
2450
+ * provider: 'attio',
2451
+ * linkedinUrls: prospects.map(p => p.linkedinUrl),
2452
+ * })
2453
+ * for (const m of matches) {
2454
+ * if (m.linked) console.log(m.linkedinUrl, '->', m.crmUrl)
2455
+ * }
2456
+ * ```
2457
+ */
2458
+ matchBatch(data: CrmMatchBatchRequest): Promise<CrmMatchBatchResponse>;
2459
+ }
2460
+
2290
2461
  /**
2291
2462
  * Email infrastructure types.
2292
2463
  *
@@ -5748,6 +5919,7 @@ declare class LumnisClient {
5748
5919
  readonly contactRelationships: ContactRelationshipsResource;
5749
5920
  readonly enrichment: EnrichmentResource;
5750
5921
  readonly email: EmailResource;
5922
+ readonly crm: CrmResource;
5751
5923
  private readonly _scopedUserId?;
5752
5924
  private readonly _defaultScope;
5753
5925
  constructor(options?: LumnisClientOptions);
@@ -6100,4 +6272,4 @@ declare class ProgressTracker {
6100
6272
  */
6101
6273
  declare function verifyWebhookSignature(payload: string, signature: string, secret: string): boolean;
6102
6274
 
6103
- export { ACTION_DELAYS, type ActionLimit, type ActiveHours, type AddAndRunCriterionRequest, type AddCriterionRequest, type AddOrgMemberRequest, type AddOrgMemberResponse, type AddPersonaRequest, type AddPersonaResponse, type AddProspectsRequest, type AddProspectsResponse, type AgentConfig, type ApiKeyMode, type ApiKeyModeRequest, type ApiKeyModeResponse, type ApiProvider, type AppEnabledResponse, type AppliedFilters, type ApprovalActionRequest, type ApprovalItem, type ApprovalListResponse, type ApprovalMode, type ApprovalResponse, type ApprovalSettings, type ApprovalStatus, type ApprovalsParams, type ApprovalsRequestItem, type ApprovalsResponseItem, type ApproveStepRequest, type AppsListResponse, type ArtifactObject, type ArtifactsListResponse, AuthenticationError, type BaseResource, type BatchCheckConnectionRequest, type BatchCheckPriorContactRequest, type BatchCheckPriorContactResponse, type BatchConnectionRequest, type BatchConnectionResponse, type BatchConnectionStatus, type BatchConnectionStatusResponse, type BatchDraftCompleteData, type BatchDraftCreatedData, type BatchDraftErrorData, type BatchDraftJobProgress, type BatchDraftJobResponse, type BatchDraftJobStartedData, type BatchDraftJobStatusResponse, type BatchDraftProgressData, type BatchDraftRequest, type BatchDraftResponse, type BatchDraftStreamCallbacks, type BatchDraftStreamEvent, type BatchDraftStreamEventType, type BatchExecutionInclude, type BatchExecutionRequest, type BatchExecutionResponse, BatchJobStatus, type BatchPollRequest, type BatchPollResponse, type BatchProspectIdentifier, type BatchRequestItem, type BatchRequestType, type BatchResponseItem, type BatchSendRequest, type BatchSendResponse, type BatchStepMetric, type BillingStatus, type BulkApprovalAction, type BulkApprovalFailure, type BulkApprovalRequest, type BulkApprovalResponse, type BulkCompleteFailure, type BulkCompleteRequest, type BulkCompleteResponse, type BulkDeleteRequest, type BulkDeleteResponse, type BulkOperationRequest, type BulkOperationResponse, type BulkUploadResponse, CONTENT_LIMITS, CONTENT_LIMITS_MAP, type CampaignActionListResponse, type CampaignActionResponse, type CampaignActionStatus, type CampaignActionType, type CampaignBulkApprovalAction, type CampaignBulkApprovalItem, type CampaignBulkApprovalRequest, type CampaignBulkApprovalResponse, type CampaignBulkApprovalResult, type CampaignCreate, type CampaignGuardrails, type CampaignListResponse, type CampaignMetricsResponse, type CampaignOutcomeType, type CampaignProspectDetailResponse, type CampaignProspectInput, type CampaignProspectResponse, type CampaignProspectState, type CampaignResponse, type CampaignStatus, type CampaignUpdate, CampaignsResource, type CancelDraftResponse, type CancelQueuedRequest, type CancelResponseResponse, type ChannelContactHistory, ChannelType, type CheckAppEnabledParams, type CheckLinkedInConnectionRequest, type CheckPriorContactRequest, type CheckPriorContactResponse, type ChunkingStrategy, type CompleteExecutionRequest, type CompleteExecutionResponse, type ConnectionAcceptedData, type ConnectionCallbackRequest, type ConnectionCallbackResponse, type ConnectionInfo, type ConnectionStatus, type ConnectionStatusResponse, type ConnectionSummary, type ConnectionsSyncStatus, type ContactDetailsInput, type ContactEnrichPersonInput, type ContactEnrichPersonResult, type ContactEnrichRequest, type ContactEnrichResponse, type ContactHistorySyncStatus, type ContactRelationshipProvider, type ContactRelationshipResponse, type ContactRelationshipStatus, ContactRelationshipsResource, type ContactScore, type ContentLimit, type ContentSource, type ContentType, type ConversationDetail, ConversationStatus, type ConversationSummary, type CreateDraftRequest, type CreateFeedbackRequest, type CreateFeedbackResponse, type CreateResponseRequest, type CreateResponseResponse, type CreateThreadRequest, type CriteriaClassification, type CriteriaMetadata, type CriterionDefinition, type CriterionResult, type CriterionType, DAILY_INMAIL_LIMITS, DEFAULT_SUBSCRIPTION_TYPE, type DatabaseStatus, type DeepPeopleSearchOutput, type DeepSearchPreview, type DeepSearchStats, type DeleteApiKeyResponse, type DeleteConnectionsResponse, type DeleteConversationResponse, type DeleteConversationsByProjectResponse, type DisconnectRequest, type DisconnectResponse, type DraftResponse, type DraftSendOverride, DraftStatus, type DuplicateHandling, type DuplicateTemplateRequest, type EditQueuedRequest, type Email, type EmailAction, type EmailOnboardRequest, type EmailOnboardResponse, type EmailOnboardStatusResponse, type EmailOrgHealthResponse, type EmailOrgListResponse, type EmailOrgSettingsResponse, type EmailOrgSettingsUpdate, type EmailOrgSummary, EmailResource, type EmailThreadSummary, type EngagementStatus, type EngagementStatusData, type EngagementStatusRequest, type EngagementStatusResponse, EnrichmentResource, type ErrorDetail, type ErrorResponse, type ErrorResponseItem, type EvidenceSource, type ExecutionDetailResponse, type ExecutionEvent, type ExecutionEventData, type ExecutionListResponse, type ExecutionMetricsOptions, type ExecutionMetricsResponse, type ExecutionStatus, type ExecutionSummary, type ExecutionSummaryExtended, type ExecutionsParams, type ExecutionsRequestItem, type ExecutionsResponseItem, 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 FunnelStage, type GetConnectionStatusParams, type GetContactRelationshipsOptions, type GetToolsRequest, type GetToolsResponse, type GetUserConnectionsParams, type InitiateConnectionRequest, type InitiateConnectionResponse, type InmailSubscription, IntegrationsResource, InternalServerError, LINKEDIN_LIMITS, type LifecycleOperationRequest, type LifecycleOperationResponse, type LinkAssetsRequest, type LinkedAssetsResponse, type LinkedInAccountInfoResponse, type LinkedInAccountRateLimits, type LinkedInAccountRateLimitsResponse, type LinkedInAccountRateLimitsUpdate, type LinkedInAction, type LinkedInConnectionStatus, type LinkedInCreditsResponse, type LinkedInLimitSubscriptionType, type LinkedInLimits, type LinkedInSendRequest, type LinkedInSubscriptionInfo, LinkedInSubscriptionType, type LinkedInSyncStatusResponse, type ListApprovalsOptions, type ListAssetsOptions, type ListCampaignActionsOptions, type ListCampaignProspectsOptions, type ListCampaignsOptions, type ListExecutionsOptions, type ListPendingApprovalsOptions, type ListPlaybooksOptions, type ListProvidersResponse, type ListStepExecutionsOptions, type ListTemplatesOptions, 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 MetricsParams, type MetricsRequestItem, type MetricsResponseItem, type ModelAvailability, type ModelOverrides, type ModelPreferenceCreate, type ModelPreferencesBulkUpdate, ModelPreferencesResource, type ModelProvider, type ModelType, NetworkDistance, NoDataSourcesError, NotFoundError, type OnFailure, type OutcomeType, type OutreachAssetCreate, type OutreachAssetResponse, type OutreachAssetType, type OutreachAssetUpdate, OutreachMethod, type PaginationInfo, type PaginationParams, type PauseResumeQueuedRequest, type PendingApprovalExtended, PeopleDataSource, PeopleResource, type PeopleSearchRequest, type PeopleSearchResponse, type PersonResult, type Plan, type PlaybookCreate, type PlaybookGenerateJobResponse, type PlaybookGenerateJobStatusResponse, type PlaybookGenerateRequest, type PlaybookResponse, type PlaybookUpdate, type PlaybookVersionResponse, type PostPreviewRequest, type PostPreviewResponse, type PostPreviewResult, type PostsSearchStats, type PriorContactMessage, type ProcessingStatus, type ProcessingStatusResponse, type ProgressEntry, ProgressTracker, type ProjectApprovalsData, type ProjectExecutionsData, type ProjectMetricsData, type ProspectConnectionCheck, type ProspectInfo, type ProspectInput, type ProspectPriorContactResult, type ProspectSyncIdentifier, type ProspectSyncResult, type ProspectWarning, ProviderType, QueueItemStatus, type QuickPeopleSearchOutput, RATE_LIMIT_COOLDOWNS, type RateLimitData, RateLimitError, type RateLimitErrorOptions, type RateLimitInfo$1 as RateLimitInfo, type RateLimitStatusResponse, type RateLimitsParams, type RateLimitsRequestItem, type RateLimitsResponseItem, type RecordOutcomeRequest, type RejectActionRequest, type RejectStepRequest, type RemoveOrgMemberResponse, type ReplySentiment, type ResponseArtifact, type ResponseListResponse, type ResponseObject, type ResponseStatus, ResponsesResource, SEQUENCE_RATE_LIMITS, type SalaryRange, type Scope, type SelectedSkill, type SendMessageRequest, type SendMessageResponse, type SendReplyRequest, type SendResult, type SenderPersonaInput, type SequenceAction, type SequenceApprovalNeededData, type SequenceChannel, type SequenceEventType, type SequenceExecutionCompletedData, type SequenceExecutionFailedData, type SequenceRateLimitAction, type SequenceStepCompletedData, type SequenceTemplateCreate, type SequenceTemplateResponse, type SequenceTemplateUpdate, SequencesResource, SharePermission, 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 SkipActionRequest, type SkipStepRequest, type SkipStepResponse, type SkippedProspect, SourcesNotAvailableError, type SpecializedAgentParams, type SpecializedAgentType, type StartExecutionRequest, type StartExecutionResponse, type StepConfig, type StepExecutionItem, type StepExecutionListResponse, type StepExecutionStatus, type StepHistoryEntry, type StepMetric, type StoppedBreakdown, type StoreApiKeyRequest, type StructuredResponse, type SyncJobResponse, SyncJobStatus, SyncPhaseStatus, type SyncProspectRequest, type SyncProspectResponse, type SyncRequest, type SyncStats, type TeardownOrgResponse, type TemplateShareConfig, type TemplateShareInfo, type TemplateShareRequest, type TemplateSharesResponse, type TenantDetailsResponse, TenantInfoResource, type TenantModelPreference, type TenantModelPreferencesResponse, type TestConnectionResponse, type ThreadListResponse, type ThreadObject, type ThreadResponsesParams, ThreadsResource, type ToolInfo, type TransitionCondition, type TransitionConditionOperator, type TransitionConditionType, type TransitionConfig, type TransitionEventParams, type TriggerSyncResponse, UNIPILE_RATE_LIMIT_ERRORS, UNIPILE_SAFE_LIMITS, type UUID, type UnlinkConversationsResponse, type UpdateAppStatusParams, type UpdateAppStatusResponse, type UpdateDraftRequest, type UpdateLinkedInSubscriptionRequest, type UpdateStepExecutionRequest, type UpdateStepExecutionResponse, type UpdateThreadRequest, type UserConnectionsResponse, type UserCreateRequest, type UserDeleteResponse, type UserIdentifier, type UserListResponse, type UserResponse, type UserUpdateRequest, UsersResource, VALID_EVENT_TYPES, type ValidatedCandidate, ValidationError, type ValidationIssue, type ValidationResponse, type WebhookEvent, type WebhookPayload, canSendInmail, displayProgress, formatProgressEntry, getBestSubscriptionForAction, getConnectionRequestLimit, getContentLimit, getDailyInmailLimit, getDefaultDailyLimits, getInmailAllowance, getLimits, getMessageLimit, getRateLimit, hasOpenProfileMessages, isRecruiterSubscription, normalizeAction, verifyWebhookSignature };
6275
+ export { ACTION_DELAYS, type ActionLimit, type ActiveHours, type AddAndRunCriterionRequest, type AddCriterionRequest, type AddOrgMemberRequest, type AddOrgMemberResponse, type AddPersonaRequest, type AddPersonaResponse, type AddProspectsRequest, type AddProspectsResponse, type AgentConfig, type ApiKeyMode, type ApiKeyModeRequest, type ApiKeyModeResponse, type ApiProvider, type AppEnabledResponse, type AppliedFilters, type ApprovalActionRequest, type ApprovalItem, type ApprovalListResponse, type ApprovalMode, type ApprovalResponse, type ApprovalSettings, type ApprovalStatus, type ApprovalsParams, type ApprovalsRequestItem, type ApprovalsResponseItem, type ApproveStepRequest, type AppsListResponse, type ArtifactObject, type ArtifactsListResponse, AuthenticationError, type BaseResource, type BatchCheckConnectionRequest, type BatchCheckPriorContactRequest, type BatchCheckPriorContactResponse, type BatchConnectionRequest, type BatchConnectionResponse, type BatchConnectionStatus, type BatchConnectionStatusResponse, type BatchDraftCompleteData, type BatchDraftCreatedData, type BatchDraftErrorData, type BatchDraftJobProgress, type BatchDraftJobResponse, type BatchDraftJobStartedData, type BatchDraftJobStatusResponse, type BatchDraftProgressData, type BatchDraftRequest, type BatchDraftResponse, type BatchDraftStreamCallbacks, type BatchDraftStreamEvent, type BatchDraftStreamEventType, type BatchExecutionInclude, type BatchExecutionRequest, type BatchExecutionResponse, BatchJobStatus, type BatchPollRequest, type BatchPollResponse, type BatchProspectIdentifier, type BatchRequestItem, type BatchRequestType, type BatchResponseItem, type BatchSendRequest, type BatchSendResponse, type BatchStepMetric, type BillingStatus, type BulkApprovalAction, type BulkApprovalFailure, type BulkApprovalRequest, type BulkApprovalResponse, type BulkCompleteFailure, type BulkCompleteRequest, type BulkCompleteResponse, type BulkDeleteRequest, type BulkDeleteResponse, type BulkOperationRequest, type BulkOperationResponse, type BulkUploadResponse, CONTENT_LIMITS, CONTENT_LIMITS_MAP, type CampaignActionListResponse, type CampaignActionResponse, type CampaignActionStatus, type CampaignActionType, type CampaignBulkApprovalAction, type CampaignBulkApprovalItem, type CampaignBulkApprovalRequest, type CampaignBulkApprovalResponse, type CampaignBulkApprovalResult, type CampaignCreate, type CampaignGuardrails, type CampaignListResponse, type CampaignMetricsResponse, type CampaignOutcomeType, type CampaignProspectDetailResponse, type CampaignProspectInput, type CampaignProspectResponse, type CampaignProspectState, type CampaignResponse, type CampaignStatus, type CampaignUpdate, CampaignsResource, type CancelDraftResponse, type CancelQueuedRequest, type CancelResponseResponse, type ChannelContactHistory, ChannelType, type CheckAppEnabledParams, type CheckLinkedInConnectionRequest, type CheckPriorContactRequest, type CheckPriorContactResponse, type ChunkingStrategy, type CompleteExecutionRequest, type CompleteExecutionResponse, type ConnectionAcceptedData, type ConnectionCallbackRequest, type ConnectionCallbackResponse, type ConnectionInfo, type ConnectionStatus, type ConnectionStatusResponse, type ConnectionSummary, type ConnectionsSyncStatus, type ContactDetailsInput, type ContactEnrichPersonInput, type ContactEnrichPersonResult, type ContactEnrichRequest, type ContactEnrichResponse, type ContactHistorySyncStatus, type ContactRelationshipProvider, type ContactRelationshipResponse, type ContactRelationshipStatus, ContactRelationshipsResource, type ContactScore, type ContentLimit, type ContentSource, type ContentType, type ConversationDetail, ConversationStatus, type ConversationSummary, type CreateDraftRequest, type CreateFeedbackRequest, type CreateFeedbackResponse, type CreateResponseRequest, type CreateResponseResponse, type CreateThreadRequest, type CriteriaClassification, type CriteriaMetadata, type CriterionDefinition, type CriterionResult, type CriterionType, type CrmMatchBatchRequest, type CrmMatchBatchResponse, type CrmMatchedProspect, type CrmProvider, CrmResource, type CrmSyncProspectRequest, type CrmSyncProspectResponse, DAILY_INMAIL_LIMITS, DEFAULT_SUBSCRIPTION_TYPE, type DatabaseStatus, type DeepPeopleSearchOutput, type DeepSearchPreview, type DeepSearchStats, type DeleteApiKeyResponse, type DeleteConnectionsResponse, type DeleteConversationResponse, type DeleteConversationsByProjectResponse, type DisconnectRequest, type DisconnectResponse, type DraftResponse, type DraftSendOverride, DraftStatus, type DuplicateHandling, type DuplicateTemplateRequest, type EditQueuedRequest, type Email, type EmailAction, type EmailOnboardRequest, type EmailOnboardResponse, type EmailOnboardStatusResponse, type EmailOrgHealthResponse, type EmailOrgListResponse, type EmailOrgSettingsResponse, type EmailOrgSettingsUpdate, type EmailOrgSummary, EmailResource, type EmailThreadSummary, type EngagementStatus, type EngagementStatusData, type EngagementStatusRequest, type EngagementStatusResponse, EnrichmentResource, type ErrorDetail, type ErrorResponse, type ErrorResponseItem, type EvidenceSource, type ExecutionDetailResponse, type ExecutionEvent, type ExecutionEventData, type ExecutionListResponse, type ExecutionMetricsOptions, type ExecutionMetricsResponse, type ExecutionStatus, type ExecutionSummary, type ExecutionSummaryExtended, type ExecutionsParams, type ExecutionsRequestItem, type ExecutionsResponseItem, 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 FunnelStage, type GetConnectionStatusParams, type GetContactRelationshipsOptions, type GetToolsRequest, type GetToolsResponse, type GetUserConnectionsParams, type InitiateConnectionRequest, type InitiateConnectionResponse, type InmailSubscription, IntegrationsResource, InternalServerError, LINKEDIN_LIMITS, type LifecycleOperationRequest, type LifecycleOperationResponse, type LinkAssetsRequest, type LinkedAssetsResponse, type LinkedInAccountInfoResponse, type LinkedInAccountRateLimits, type LinkedInAccountRateLimitsResponse, type LinkedInAccountRateLimitsUpdate, type LinkedInAction, type LinkedInConnectionStatus, type LinkedInCreditsResponse, type LinkedInLimitSubscriptionType, type LinkedInLimits, type LinkedInSendRequest, type LinkedInSubscriptionInfo, LinkedInSubscriptionType, type LinkedInSyncStatusResponse, type ListApprovalsOptions, type ListAssetsOptions, type ListCampaignActionsOptions, type ListCampaignProspectsOptions, type ListCampaignsOptions, type ListExecutionsOptions, type ListPendingApprovalsOptions, type ListPlaybooksOptions, type ListProvidersResponse, type ListStepExecutionsOptions, type ListTemplatesOptions, 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 MetricsParams, type MetricsRequestItem, type MetricsResponseItem, type ModelAvailability, type ModelOverrides, type ModelPreferenceCreate, type ModelPreferencesBulkUpdate, ModelPreferencesResource, type ModelProvider, type ModelType, NetworkDistance, NoDataSourcesError, NotFoundError, type OnFailure, type OutcomeType, type OutreachAssetCreate, type OutreachAssetResponse, type OutreachAssetType, type OutreachAssetUpdate, OutreachMethod, type PaginationInfo, type PaginationParams, type PauseResumeQueuedRequest, type PendingApprovalExtended, PeopleDataSource, PeopleResource, type PeopleSearchRequest, type PeopleSearchResponse, type PersonResult, type Plan, type PlaybookCreate, type PlaybookGenerateJobResponse, type PlaybookGenerateJobStatusResponse, type PlaybookGenerateRequest, type PlaybookResponse, type PlaybookUpdate, type PlaybookVersionResponse, type PostPreviewRequest, type PostPreviewResponse, type PostPreviewResult, type PostsSearchStats, type PriorContactMessage, type ProcessingStatus, type ProcessingStatusResponse, type ProgressEntry, ProgressTracker, type ProjectApprovalsData, type ProjectExecutionsData, type ProjectMetricsData, type ProspectConnectionCheck, type ProspectInfo, type ProspectInput, type ProspectPriorContactResult, type ProspectSyncIdentifier, type ProspectSyncResult, type ProspectWarning, ProviderType, QueueItemStatus, type QuickPeopleSearchOutput, RATE_LIMIT_COOLDOWNS, type RateLimitData, RateLimitError, type RateLimitErrorOptions, type RateLimitInfo$1 as RateLimitInfo, type RateLimitStatusResponse, type RateLimitsParams, type RateLimitsRequestItem, type RateLimitsResponseItem, type RecordOutcomeRequest, type RejectActionRequest, type RejectStepRequest, type RemoveOrgMemberResponse, type ReplySentiment, type ResponseArtifact, type ResponseListResponse, type ResponseObject, type ResponseStatus, ResponsesResource, SEQUENCE_RATE_LIMITS, type SalaryRange, type Scope, type SelectedSkill, type SendMessageRequest, type SendMessageResponse, type SendReplyRequest, type SendResult, type SenderPersonaInput, type SequenceAction, type SequenceApprovalNeededData, type SequenceChannel, type SequenceEventType, type SequenceExecutionCompletedData, type SequenceExecutionFailedData, type SequenceRateLimitAction, type SequenceStepCompletedData, type SequenceTemplateCreate, type SequenceTemplateResponse, type SequenceTemplateUpdate, SequencesResource, SharePermission, 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 SkipActionRequest, type SkipStepRequest, type SkipStepResponse, type SkippedProspect, SourcesNotAvailableError, type SpecializedAgentParams, type SpecializedAgentType, type StartExecutionRequest, type StartExecutionResponse, type StepConfig, type StepExecutionItem, type StepExecutionListResponse, type StepExecutionStatus, type StepHistoryEntry, type StepMetric, type StoppedBreakdown, type StoreApiKeyRequest, type StructuredResponse, type SyncJobResponse, SyncJobStatus, SyncPhaseStatus, type SyncProspectRequest, type SyncProspectResponse, type SyncRequest, type SyncStats, type TeardownOrgResponse, type TemplateShareConfig, type TemplateShareInfo, type TemplateShareRequest, type TemplateSharesResponse, type TenantDetailsResponse, TenantInfoResource, type TenantModelPreference, type TenantModelPreferencesResponse, type TestConnectionResponse, type ThreadListResponse, type ThreadObject, type ThreadResponsesParams, ThreadsResource, type ToolInfo, type TransitionCondition, type TransitionConditionOperator, type TransitionConditionType, type TransitionConfig, type TransitionEventParams, type TriggerSyncResponse, UNIPILE_RATE_LIMIT_ERRORS, UNIPILE_SAFE_LIMITS, type UUID, type UnlinkConversationsResponse, type UpdateAppStatusParams, type UpdateAppStatusResponse, type UpdateDraftRequest, type UpdateLinkedInSubscriptionRequest, type UpdateStepExecutionRequest, type UpdateStepExecutionResponse, type UpdateThreadRequest, type UserConnectionsResponse, type UserCreateRequest, type UserDeleteResponse, type UserIdentifier, type UserListResponse, type UserResponse, type UserUpdateRequest, UsersResource, VALID_EVENT_TYPES, type ValidatedCandidate, ValidationError, type ValidationIssue, type ValidationResponse, type WebhookEvent, type WebhookPayload, canSendInmail, displayProgress, formatProgressEntry, getBestSubscriptionForAction, getConnectionRequestLimit, getContentLimit, getDailyInmailLimit, getDefaultDailyLimits, getInmailAllowance, getLimits, getMessageLimit, getRateLimit, hasOpenProfileMessages, isRecruiterSubscription, normalizeAction, verifyWebhookSignature };
package/dist/index.d.mts CHANGED
@@ -1006,7 +1006,17 @@ interface ValidatedCandidate {
1006
1006
  /** When source is job_signal: hiring-company context from CrustData job listings */
1007
1007
  jobSignalMetadata?: {
1008
1008
  companyId?: number | null;
1009
+ companyName?: string;
1010
+ companyLinkedinUrl?: string;
1009
1011
  jobCount?: number;
1012
+ signalSource?: string;
1013
+ sampleJobListings?: Array<{
1014
+ title?: string;
1015
+ description?: string;
1016
+ workplaceType?: string;
1017
+ country?: string;
1018
+ dateAdded?: string;
1019
+ }>;
1010
1020
  };
1011
1021
  /** Raw profile data */
1012
1022
  [key: string]: any;
@@ -1310,6 +1320,16 @@ interface SpecializedAgentParams {
1310
1320
  * Used by deep_people_search.
1311
1321
  */
1312
1322
  searchJobSignal?: boolean | 'auto';
1323
+ /**
1324
+ * Maximum candidates to return per company. Prevents results
1325
+ * dominated by a single large company. Applied after validation,
1326
+ * keeps highest-scored per company.
1327
+ * @default 3
1328
+ * @minimum 1
1329
+ * @maximum 1000
1330
+ * Used by deep_people_search.
1331
+ */
1332
+ maxCandidatesPerCompany?: number;
1313
1333
  /**
1314
1334
  * Additional parameters for any specialized agent
1315
1335
  * This allows flexibility for future agents without SDK updates
@@ -1809,6 +1829,13 @@ interface CampaignProspectResponse {
1809
1829
  nextEvaluateAt?: string | null;
1810
1830
  stopReason?: string | null;
1811
1831
  stopReasoning?: string | null;
1832
+ /**
1833
+ * CRM provider this prospect is linked to via the CRM Sync API.
1834
+ * Populated by `client.crm.syncProspect` and `client.crm.matchBatch`.
1835
+ */
1836
+ crmProvider?: 'attio' | 'hubspot' | null;
1837
+ /** External CRM record id (Attio record_id, HubSpot contact id). */
1838
+ crmRecordId?: string | null;
1812
1839
  metadata: Record<string, unknown>;
1813
1840
  version: number;
1814
1841
  createdAt: string;
@@ -2287,6 +2314,150 @@ declare class ContactRelationshipsResource {
2287
2314
  get(options: GetContactRelationshipsOptions): Promise<ContactRelationshipResponse>;
2288
2315
  }
2289
2316
 
2317
+ /**
2318
+ * CRM Sync API types.
2319
+ *
2320
+ * These types map to the Python backend endpoints under /v1/crm.
2321
+ * Provider list mirrors `CrmProvider` in src/app/api/schemas/crm_schemas.py.
2322
+ *
2323
+ * All types are prefixed with `Crm` to avoid collisions with the
2324
+ * messaging-API prospect-sync types (`SyncProspectRequest`,
2325
+ * `SyncProspectResponse` in `./messaging`), which serve a different
2326
+ * purpose (LinkedIn/email conversation sync, not CRM linkage).
2327
+ */
2328
+ /**
2329
+ * Connected CRM systems supported by the sync API.
2330
+ *
2331
+ * Capability notes:
2332
+ * - `attio` supports both email and LinkedIn-URL person search.
2333
+ * - `hubspot` only supports email search; LinkedIn URLs are stored as a
2334
+ * custom property on create but are not searchable through the
2335
+ * reconciliation flow.
2336
+ */
2337
+ type CrmProvider = 'attio' | 'hubspot';
2338
+ /**
2339
+ * Push one Lumnis prospect to the connected CRM.
2340
+ *
2341
+ * The prospect must already exist in a `campaign_prospects` row owned
2342
+ * by `userId`; the linkedin URL is the lookup key.
2343
+ */
2344
+ interface CrmSyncProspectRequest {
2345
+ /** UUID or email of the user whose CRM connection executes the call. */
2346
+ userId: string;
2347
+ provider: CrmProvider;
2348
+ /** Must contain `linkedin.com/in/`. */
2349
+ linkedinUrl: string;
2350
+ }
2351
+ interface CrmSyncProspectResponse {
2352
+ /**
2353
+ * `linked` — record already existed in the CRM (matched by email or
2354
+ * LinkedIn URL) and was linked back to the prospect.
2355
+ * `created` — no existing match, a new CRM record was created.
2356
+ */
2357
+ action: 'linked' | 'created';
2358
+ /** Provider-native record id (Attio record_id, HubSpot contact id). */
2359
+ crmRecordId: string;
2360
+ /** Stable URL that opens the record in the CRM UI. */
2361
+ crmUrl: string;
2362
+ }
2363
+ /**
2364
+ * Bulk-check whether prospects are already in the CRM.
2365
+ *
2366
+ * Server-side fan-out is bounded by the
2367
+ * `CRM_MATCH_LIVE_SEARCH_PARALLELISM` setting; the array max
2368
+ * (1000) is a Pydantic guard, not a UX cap.
2369
+ */
2370
+ interface CrmMatchBatchRequest {
2371
+ userId: string;
2372
+ provider: CrmProvider;
2373
+ /** 1..1000 LinkedIn profile URLs. */
2374
+ linkedinUrls: string[];
2375
+ }
2376
+ interface CrmMatchedProspect {
2377
+ /** Echoed input URL (in original casing/form). */
2378
+ linkedinUrl: string;
2379
+ linked: boolean;
2380
+ /** Present iff `linked` is true. */
2381
+ crmRecordId?: string | null;
2382
+ crmUrl?: string | null;
2383
+ }
2384
+ interface CrmMatchBatchResponse {
2385
+ matches: CrmMatchedProspect[];
2386
+ }
2387
+
2388
+ /**
2389
+ * Resource for the user-triggered CRM Sync API.
2390
+ *
2391
+ * Wraps `POST /v1/crm/prospects/sync` and `POST /v1/crm/prospects/match-batch`.
2392
+ *
2393
+ * The user identified by `userId` must already have an active CRM
2394
+ * connection (see `client.integrations.initiateConnection`). When the
2395
+ * connection is missing, the server returns `409 crm_not_connected`
2396
+ * with `connect_url` in the error body so callers can route the user
2397
+ * to the OAuth flow.
2398
+ *
2399
+ * Failure modes worth handling:
2400
+ * - `409 crm_not_connected` — user hasn't connected the provider.
2401
+ * - `404 prospect_not_found` (sync only) — no `campaign_prospects` row
2402
+ * matches `linkedinUrl` for this user.
2403
+ * - `502 crm_upstream_error` — Attio/HubSpot returned an error.
2404
+ * - `503 crm_upstream_rate_limited` — upstream rate-limit; the response
2405
+ * includes a `Retry-After` header.
2406
+ */
2407
+ declare class CrmResource {
2408
+ private readonly http;
2409
+ constructor(http: Http);
2410
+ /**
2411
+ * Push one Lumnis prospect to the connected CRM.
2412
+ *
2413
+ * Idempotent: repeated calls for the same
2414
+ * `(userId, provider, linkedinUrl)` return `linked` with the same
2415
+ * `crmRecordId`. Stale links (record deleted in the CRM) are detected
2416
+ * and re-created automatically.
2417
+ *
2418
+ * @example
2419
+ * ```typescript
2420
+ * const result = await client.crm.syncProspect({
2421
+ * userId: 'user@example.com',
2422
+ * provider: 'attio',
2423
+ * linkedinUrl: 'https://www.linkedin.com/in/jane-doe/',
2424
+ * })
2425
+ * console.log(result.action, result.crmUrl)
2426
+ * ```
2427
+ */
2428
+ syncProspect(data: CrmSyncProspectRequest): Promise<CrmSyncProspectResponse>;
2429
+ /**
2430
+ * Bulk-check whether prospects are already in the CRM. Designed for
2431
+ * list-view badge rendering: feed it every visible LinkedIn URL and
2432
+ * render a "linked" indicator for the ones that come back true.
2433
+ *
2434
+ * Layered cache on the server side: persistent positive matches are
2435
+ * served from the `campaign_prospects.crm_record_id` column, negative
2436
+ * results are served from a Redis cache (TTL configured by
2437
+ * `CRM_MATCH_NEGATIVE_CACHE_TTL_SECONDS`). Only the leftover unknowns
2438
+ * fan out to the live CRM, bounded by
2439
+ * `CRM_MATCH_LIVE_SEARCH_PARALLELISM`.
2440
+ *
2441
+ * Note: HubSpot does not expose a LinkedIn-URL search field through
2442
+ * Composio, so for `provider: 'hubspot'` URLs that aren't already in
2443
+ * the persistent cache will always come back `linked: false`. The
2444
+ * sync endpoint still reconciles via email when available.
2445
+ *
2446
+ * @example
2447
+ * ```typescript
2448
+ * const { matches } = await client.crm.matchBatch({
2449
+ * userId: 'user@example.com',
2450
+ * provider: 'attio',
2451
+ * linkedinUrls: prospects.map(p => p.linkedinUrl),
2452
+ * })
2453
+ * for (const m of matches) {
2454
+ * if (m.linked) console.log(m.linkedinUrl, '->', m.crmUrl)
2455
+ * }
2456
+ * ```
2457
+ */
2458
+ matchBatch(data: CrmMatchBatchRequest): Promise<CrmMatchBatchResponse>;
2459
+ }
2460
+
2290
2461
  /**
2291
2462
  * Email infrastructure types.
2292
2463
  *
@@ -5748,6 +5919,7 @@ declare class LumnisClient {
5748
5919
  readonly contactRelationships: ContactRelationshipsResource;
5749
5920
  readonly enrichment: EnrichmentResource;
5750
5921
  readonly email: EmailResource;
5922
+ readonly crm: CrmResource;
5751
5923
  private readonly _scopedUserId?;
5752
5924
  private readonly _defaultScope;
5753
5925
  constructor(options?: LumnisClientOptions);
@@ -6100,4 +6272,4 @@ declare class ProgressTracker {
6100
6272
  */
6101
6273
  declare function verifyWebhookSignature(payload: string, signature: string, secret: string): boolean;
6102
6274
 
6103
- export { ACTION_DELAYS, type ActionLimit, type ActiveHours, type AddAndRunCriterionRequest, type AddCriterionRequest, type AddOrgMemberRequest, type AddOrgMemberResponse, type AddPersonaRequest, type AddPersonaResponse, type AddProspectsRequest, type AddProspectsResponse, type AgentConfig, type ApiKeyMode, type ApiKeyModeRequest, type ApiKeyModeResponse, type ApiProvider, type AppEnabledResponse, type AppliedFilters, type ApprovalActionRequest, type ApprovalItem, type ApprovalListResponse, type ApprovalMode, type ApprovalResponse, type ApprovalSettings, type ApprovalStatus, type ApprovalsParams, type ApprovalsRequestItem, type ApprovalsResponseItem, type ApproveStepRequest, type AppsListResponse, type ArtifactObject, type ArtifactsListResponse, AuthenticationError, type BaseResource, type BatchCheckConnectionRequest, type BatchCheckPriorContactRequest, type BatchCheckPriorContactResponse, type BatchConnectionRequest, type BatchConnectionResponse, type BatchConnectionStatus, type BatchConnectionStatusResponse, type BatchDraftCompleteData, type BatchDraftCreatedData, type BatchDraftErrorData, type BatchDraftJobProgress, type BatchDraftJobResponse, type BatchDraftJobStartedData, type BatchDraftJobStatusResponse, type BatchDraftProgressData, type BatchDraftRequest, type BatchDraftResponse, type BatchDraftStreamCallbacks, type BatchDraftStreamEvent, type BatchDraftStreamEventType, type BatchExecutionInclude, type BatchExecutionRequest, type BatchExecutionResponse, BatchJobStatus, type BatchPollRequest, type BatchPollResponse, type BatchProspectIdentifier, type BatchRequestItem, type BatchRequestType, type BatchResponseItem, type BatchSendRequest, type BatchSendResponse, type BatchStepMetric, type BillingStatus, type BulkApprovalAction, type BulkApprovalFailure, type BulkApprovalRequest, type BulkApprovalResponse, type BulkCompleteFailure, type BulkCompleteRequest, type BulkCompleteResponse, type BulkDeleteRequest, type BulkDeleteResponse, type BulkOperationRequest, type BulkOperationResponse, type BulkUploadResponse, CONTENT_LIMITS, CONTENT_LIMITS_MAP, type CampaignActionListResponse, type CampaignActionResponse, type CampaignActionStatus, type CampaignActionType, type CampaignBulkApprovalAction, type CampaignBulkApprovalItem, type CampaignBulkApprovalRequest, type CampaignBulkApprovalResponse, type CampaignBulkApprovalResult, type CampaignCreate, type CampaignGuardrails, type CampaignListResponse, type CampaignMetricsResponse, type CampaignOutcomeType, type CampaignProspectDetailResponse, type CampaignProspectInput, type CampaignProspectResponse, type CampaignProspectState, type CampaignResponse, type CampaignStatus, type CampaignUpdate, CampaignsResource, type CancelDraftResponse, type CancelQueuedRequest, type CancelResponseResponse, type ChannelContactHistory, ChannelType, type CheckAppEnabledParams, type CheckLinkedInConnectionRequest, type CheckPriorContactRequest, type CheckPriorContactResponse, type ChunkingStrategy, type CompleteExecutionRequest, type CompleteExecutionResponse, type ConnectionAcceptedData, type ConnectionCallbackRequest, type ConnectionCallbackResponse, type ConnectionInfo, type ConnectionStatus, type ConnectionStatusResponse, type ConnectionSummary, type ConnectionsSyncStatus, type ContactDetailsInput, type ContactEnrichPersonInput, type ContactEnrichPersonResult, type ContactEnrichRequest, type ContactEnrichResponse, type ContactHistorySyncStatus, type ContactRelationshipProvider, type ContactRelationshipResponse, type ContactRelationshipStatus, ContactRelationshipsResource, type ContactScore, type ContentLimit, type ContentSource, type ContentType, type ConversationDetail, ConversationStatus, type ConversationSummary, type CreateDraftRequest, type CreateFeedbackRequest, type CreateFeedbackResponse, type CreateResponseRequest, type CreateResponseResponse, type CreateThreadRequest, type CriteriaClassification, type CriteriaMetadata, type CriterionDefinition, type CriterionResult, type CriterionType, DAILY_INMAIL_LIMITS, DEFAULT_SUBSCRIPTION_TYPE, type DatabaseStatus, type DeepPeopleSearchOutput, type DeepSearchPreview, type DeepSearchStats, type DeleteApiKeyResponse, type DeleteConnectionsResponse, type DeleteConversationResponse, type DeleteConversationsByProjectResponse, type DisconnectRequest, type DisconnectResponse, type DraftResponse, type DraftSendOverride, DraftStatus, type DuplicateHandling, type DuplicateTemplateRequest, type EditQueuedRequest, type Email, type EmailAction, type EmailOnboardRequest, type EmailOnboardResponse, type EmailOnboardStatusResponse, type EmailOrgHealthResponse, type EmailOrgListResponse, type EmailOrgSettingsResponse, type EmailOrgSettingsUpdate, type EmailOrgSummary, EmailResource, type EmailThreadSummary, type EngagementStatus, type EngagementStatusData, type EngagementStatusRequest, type EngagementStatusResponse, EnrichmentResource, type ErrorDetail, type ErrorResponse, type ErrorResponseItem, type EvidenceSource, type ExecutionDetailResponse, type ExecutionEvent, type ExecutionEventData, type ExecutionListResponse, type ExecutionMetricsOptions, type ExecutionMetricsResponse, type ExecutionStatus, type ExecutionSummary, type ExecutionSummaryExtended, type ExecutionsParams, type ExecutionsRequestItem, type ExecutionsResponseItem, 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 FunnelStage, type GetConnectionStatusParams, type GetContactRelationshipsOptions, type GetToolsRequest, type GetToolsResponse, type GetUserConnectionsParams, type InitiateConnectionRequest, type InitiateConnectionResponse, type InmailSubscription, IntegrationsResource, InternalServerError, LINKEDIN_LIMITS, type LifecycleOperationRequest, type LifecycleOperationResponse, type LinkAssetsRequest, type LinkedAssetsResponse, type LinkedInAccountInfoResponse, type LinkedInAccountRateLimits, type LinkedInAccountRateLimitsResponse, type LinkedInAccountRateLimitsUpdate, type LinkedInAction, type LinkedInConnectionStatus, type LinkedInCreditsResponse, type LinkedInLimitSubscriptionType, type LinkedInLimits, type LinkedInSendRequest, type LinkedInSubscriptionInfo, LinkedInSubscriptionType, type LinkedInSyncStatusResponse, type ListApprovalsOptions, type ListAssetsOptions, type ListCampaignActionsOptions, type ListCampaignProspectsOptions, type ListCampaignsOptions, type ListExecutionsOptions, type ListPendingApprovalsOptions, type ListPlaybooksOptions, type ListProvidersResponse, type ListStepExecutionsOptions, type ListTemplatesOptions, 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 MetricsParams, type MetricsRequestItem, type MetricsResponseItem, type ModelAvailability, type ModelOverrides, type ModelPreferenceCreate, type ModelPreferencesBulkUpdate, ModelPreferencesResource, type ModelProvider, type ModelType, NetworkDistance, NoDataSourcesError, NotFoundError, type OnFailure, type OutcomeType, type OutreachAssetCreate, type OutreachAssetResponse, type OutreachAssetType, type OutreachAssetUpdate, OutreachMethod, type PaginationInfo, type PaginationParams, type PauseResumeQueuedRequest, type PendingApprovalExtended, PeopleDataSource, PeopleResource, type PeopleSearchRequest, type PeopleSearchResponse, type PersonResult, type Plan, type PlaybookCreate, type PlaybookGenerateJobResponse, type PlaybookGenerateJobStatusResponse, type PlaybookGenerateRequest, type PlaybookResponse, type PlaybookUpdate, type PlaybookVersionResponse, type PostPreviewRequest, type PostPreviewResponse, type PostPreviewResult, type PostsSearchStats, type PriorContactMessage, type ProcessingStatus, type ProcessingStatusResponse, type ProgressEntry, ProgressTracker, type ProjectApprovalsData, type ProjectExecutionsData, type ProjectMetricsData, type ProspectConnectionCheck, type ProspectInfo, type ProspectInput, type ProspectPriorContactResult, type ProspectSyncIdentifier, type ProspectSyncResult, type ProspectWarning, ProviderType, QueueItemStatus, type QuickPeopleSearchOutput, RATE_LIMIT_COOLDOWNS, type RateLimitData, RateLimitError, type RateLimitErrorOptions, type RateLimitInfo$1 as RateLimitInfo, type RateLimitStatusResponse, type RateLimitsParams, type RateLimitsRequestItem, type RateLimitsResponseItem, type RecordOutcomeRequest, type RejectActionRequest, type RejectStepRequest, type RemoveOrgMemberResponse, type ReplySentiment, type ResponseArtifact, type ResponseListResponse, type ResponseObject, type ResponseStatus, ResponsesResource, SEQUENCE_RATE_LIMITS, type SalaryRange, type Scope, type SelectedSkill, type SendMessageRequest, type SendMessageResponse, type SendReplyRequest, type SendResult, type SenderPersonaInput, type SequenceAction, type SequenceApprovalNeededData, type SequenceChannel, type SequenceEventType, type SequenceExecutionCompletedData, type SequenceExecutionFailedData, type SequenceRateLimitAction, type SequenceStepCompletedData, type SequenceTemplateCreate, type SequenceTemplateResponse, type SequenceTemplateUpdate, SequencesResource, SharePermission, 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 SkipActionRequest, type SkipStepRequest, type SkipStepResponse, type SkippedProspect, SourcesNotAvailableError, type SpecializedAgentParams, type SpecializedAgentType, type StartExecutionRequest, type StartExecutionResponse, type StepConfig, type StepExecutionItem, type StepExecutionListResponse, type StepExecutionStatus, type StepHistoryEntry, type StepMetric, type StoppedBreakdown, type StoreApiKeyRequest, type StructuredResponse, type SyncJobResponse, SyncJobStatus, SyncPhaseStatus, type SyncProspectRequest, type SyncProspectResponse, type SyncRequest, type SyncStats, type TeardownOrgResponse, type TemplateShareConfig, type TemplateShareInfo, type TemplateShareRequest, type TemplateSharesResponse, type TenantDetailsResponse, TenantInfoResource, type TenantModelPreference, type TenantModelPreferencesResponse, type TestConnectionResponse, type ThreadListResponse, type ThreadObject, type ThreadResponsesParams, ThreadsResource, type ToolInfo, type TransitionCondition, type TransitionConditionOperator, type TransitionConditionType, type TransitionConfig, type TransitionEventParams, type TriggerSyncResponse, UNIPILE_RATE_LIMIT_ERRORS, UNIPILE_SAFE_LIMITS, type UUID, type UnlinkConversationsResponse, type UpdateAppStatusParams, type UpdateAppStatusResponse, type UpdateDraftRequest, type UpdateLinkedInSubscriptionRequest, type UpdateStepExecutionRequest, type UpdateStepExecutionResponse, type UpdateThreadRequest, type UserConnectionsResponse, type UserCreateRequest, type UserDeleteResponse, type UserIdentifier, type UserListResponse, type UserResponse, type UserUpdateRequest, UsersResource, VALID_EVENT_TYPES, type ValidatedCandidate, ValidationError, type ValidationIssue, type ValidationResponse, type WebhookEvent, type WebhookPayload, canSendInmail, displayProgress, formatProgressEntry, getBestSubscriptionForAction, getConnectionRequestLimit, getContentLimit, getDailyInmailLimit, getDefaultDailyLimits, getInmailAllowance, getLimits, getMessageLimit, getRateLimit, hasOpenProfileMessages, isRecruiterSubscription, normalizeAction, verifyWebhookSignature };
6275
+ export { ACTION_DELAYS, type ActionLimit, type ActiveHours, type AddAndRunCriterionRequest, type AddCriterionRequest, type AddOrgMemberRequest, type AddOrgMemberResponse, type AddPersonaRequest, type AddPersonaResponse, type AddProspectsRequest, type AddProspectsResponse, type AgentConfig, type ApiKeyMode, type ApiKeyModeRequest, type ApiKeyModeResponse, type ApiProvider, type AppEnabledResponse, type AppliedFilters, type ApprovalActionRequest, type ApprovalItem, type ApprovalListResponse, type ApprovalMode, type ApprovalResponse, type ApprovalSettings, type ApprovalStatus, type ApprovalsParams, type ApprovalsRequestItem, type ApprovalsResponseItem, type ApproveStepRequest, type AppsListResponse, type ArtifactObject, type ArtifactsListResponse, AuthenticationError, type BaseResource, type BatchCheckConnectionRequest, type BatchCheckPriorContactRequest, type BatchCheckPriorContactResponse, type BatchConnectionRequest, type BatchConnectionResponse, type BatchConnectionStatus, type BatchConnectionStatusResponse, type BatchDraftCompleteData, type BatchDraftCreatedData, type BatchDraftErrorData, type BatchDraftJobProgress, type BatchDraftJobResponse, type BatchDraftJobStartedData, type BatchDraftJobStatusResponse, type BatchDraftProgressData, type BatchDraftRequest, type BatchDraftResponse, type BatchDraftStreamCallbacks, type BatchDraftStreamEvent, type BatchDraftStreamEventType, type BatchExecutionInclude, type BatchExecutionRequest, type BatchExecutionResponse, BatchJobStatus, type BatchPollRequest, type BatchPollResponse, type BatchProspectIdentifier, type BatchRequestItem, type BatchRequestType, type BatchResponseItem, type BatchSendRequest, type BatchSendResponse, type BatchStepMetric, type BillingStatus, type BulkApprovalAction, type BulkApprovalFailure, type BulkApprovalRequest, type BulkApprovalResponse, type BulkCompleteFailure, type BulkCompleteRequest, type BulkCompleteResponse, type BulkDeleteRequest, type BulkDeleteResponse, type BulkOperationRequest, type BulkOperationResponse, type BulkUploadResponse, CONTENT_LIMITS, CONTENT_LIMITS_MAP, type CampaignActionListResponse, type CampaignActionResponse, type CampaignActionStatus, type CampaignActionType, type CampaignBulkApprovalAction, type CampaignBulkApprovalItem, type CampaignBulkApprovalRequest, type CampaignBulkApprovalResponse, type CampaignBulkApprovalResult, type CampaignCreate, type CampaignGuardrails, type CampaignListResponse, type CampaignMetricsResponse, type CampaignOutcomeType, type CampaignProspectDetailResponse, type CampaignProspectInput, type CampaignProspectResponse, type CampaignProspectState, type CampaignResponse, type CampaignStatus, type CampaignUpdate, CampaignsResource, type CancelDraftResponse, type CancelQueuedRequest, type CancelResponseResponse, type ChannelContactHistory, ChannelType, type CheckAppEnabledParams, type CheckLinkedInConnectionRequest, type CheckPriorContactRequest, type CheckPriorContactResponse, type ChunkingStrategy, type CompleteExecutionRequest, type CompleteExecutionResponse, type ConnectionAcceptedData, type ConnectionCallbackRequest, type ConnectionCallbackResponse, type ConnectionInfo, type ConnectionStatus, type ConnectionStatusResponse, type ConnectionSummary, type ConnectionsSyncStatus, type ContactDetailsInput, type ContactEnrichPersonInput, type ContactEnrichPersonResult, type ContactEnrichRequest, type ContactEnrichResponse, type ContactHistorySyncStatus, type ContactRelationshipProvider, type ContactRelationshipResponse, type ContactRelationshipStatus, ContactRelationshipsResource, type ContactScore, type ContentLimit, type ContentSource, type ContentType, type ConversationDetail, ConversationStatus, type ConversationSummary, type CreateDraftRequest, type CreateFeedbackRequest, type CreateFeedbackResponse, type CreateResponseRequest, type CreateResponseResponse, type CreateThreadRequest, type CriteriaClassification, type CriteriaMetadata, type CriterionDefinition, type CriterionResult, type CriterionType, type CrmMatchBatchRequest, type CrmMatchBatchResponse, type CrmMatchedProspect, type CrmProvider, CrmResource, type CrmSyncProspectRequest, type CrmSyncProspectResponse, DAILY_INMAIL_LIMITS, DEFAULT_SUBSCRIPTION_TYPE, type DatabaseStatus, type DeepPeopleSearchOutput, type DeepSearchPreview, type DeepSearchStats, type DeleteApiKeyResponse, type DeleteConnectionsResponse, type DeleteConversationResponse, type DeleteConversationsByProjectResponse, type DisconnectRequest, type DisconnectResponse, type DraftResponse, type DraftSendOverride, DraftStatus, type DuplicateHandling, type DuplicateTemplateRequest, type EditQueuedRequest, type Email, type EmailAction, type EmailOnboardRequest, type EmailOnboardResponse, type EmailOnboardStatusResponse, type EmailOrgHealthResponse, type EmailOrgListResponse, type EmailOrgSettingsResponse, type EmailOrgSettingsUpdate, type EmailOrgSummary, EmailResource, type EmailThreadSummary, type EngagementStatus, type EngagementStatusData, type EngagementStatusRequest, type EngagementStatusResponse, EnrichmentResource, type ErrorDetail, type ErrorResponse, type ErrorResponseItem, type EvidenceSource, type ExecutionDetailResponse, type ExecutionEvent, type ExecutionEventData, type ExecutionListResponse, type ExecutionMetricsOptions, type ExecutionMetricsResponse, type ExecutionStatus, type ExecutionSummary, type ExecutionSummaryExtended, type ExecutionsParams, type ExecutionsRequestItem, type ExecutionsResponseItem, 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 FunnelStage, type GetConnectionStatusParams, type GetContactRelationshipsOptions, type GetToolsRequest, type GetToolsResponse, type GetUserConnectionsParams, type InitiateConnectionRequest, type InitiateConnectionResponse, type InmailSubscription, IntegrationsResource, InternalServerError, LINKEDIN_LIMITS, type LifecycleOperationRequest, type LifecycleOperationResponse, type LinkAssetsRequest, type LinkedAssetsResponse, type LinkedInAccountInfoResponse, type LinkedInAccountRateLimits, type LinkedInAccountRateLimitsResponse, type LinkedInAccountRateLimitsUpdate, type LinkedInAction, type LinkedInConnectionStatus, type LinkedInCreditsResponse, type LinkedInLimitSubscriptionType, type LinkedInLimits, type LinkedInSendRequest, type LinkedInSubscriptionInfo, LinkedInSubscriptionType, type LinkedInSyncStatusResponse, type ListApprovalsOptions, type ListAssetsOptions, type ListCampaignActionsOptions, type ListCampaignProspectsOptions, type ListCampaignsOptions, type ListExecutionsOptions, type ListPendingApprovalsOptions, type ListPlaybooksOptions, type ListProvidersResponse, type ListStepExecutionsOptions, type ListTemplatesOptions, 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 MetricsParams, type MetricsRequestItem, type MetricsResponseItem, type ModelAvailability, type ModelOverrides, type ModelPreferenceCreate, type ModelPreferencesBulkUpdate, ModelPreferencesResource, type ModelProvider, type ModelType, NetworkDistance, NoDataSourcesError, NotFoundError, type OnFailure, type OutcomeType, type OutreachAssetCreate, type OutreachAssetResponse, type OutreachAssetType, type OutreachAssetUpdate, OutreachMethod, type PaginationInfo, type PaginationParams, type PauseResumeQueuedRequest, type PendingApprovalExtended, PeopleDataSource, PeopleResource, type PeopleSearchRequest, type PeopleSearchResponse, type PersonResult, type Plan, type PlaybookCreate, type PlaybookGenerateJobResponse, type PlaybookGenerateJobStatusResponse, type PlaybookGenerateRequest, type PlaybookResponse, type PlaybookUpdate, type PlaybookVersionResponse, type PostPreviewRequest, type PostPreviewResponse, type PostPreviewResult, type PostsSearchStats, type PriorContactMessage, type ProcessingStatus, type ProcessingStatusResponse, type ProgressEntry, ProgressTracker, type ProjectApprovalsData, type ProjectExecutionsData, type ProjectMetricsData, type ProspectConnectionCheck, type ProspectInfo, type ProspectInput, type ProspectPriorContactResult, type ProspectSyncIdentifier, type ProspectSyncResult, type ProspectWarning, ProviderType, QueueItemStatus, type QuickPeopleSearchOutput, RATE_LIMIT_COOLDOWNS, type RateLimitData, RateLimitError, type RateLimitErrorOptions, type RateLimitInfo$1 as RateLimitInfo, type RateLimitStatusResponse, type RateLimitsParams, type RateLimitsRequestItem, type RateLimitsResponseItem, type RecordOutcomeRequest, type RejectActionRequest, type RejectStepRequest, type RemoveOrgMemberResponse, type ReplySentiment, type ResponseArtifact, type ResponseListResponse, type ResponseObject, type ResponseStatus, ResponsesResource, SEQUENCE_RATE_LIMITS, type SalaryRange, type Scope, type SelectedSkill, type SendMessageRequest, type SendMessageResponse, type SendReplyRequest, type SendResult, type SenderPersonaInput, type SequenceAction, type SequenceApprovalNeededData, type SequenceChannel, type SequenceEventType, type SequenceExecutionCompletedData, type SequenceExecutionFailedData, type SequenceRateLimitAction, type SequenceStepCompletedData, type SequenceTemplateCreate, type SequenceTemplateResponse, type SequenceTemplateUpdate, SequencesResource, SharePermission, 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 SkipActionRequest, type SkipStepRequest, type SkipStepResponse, type SkippedProspect, SourcesNotAvailableError, type SpecializedAgentParams, type SpecializedAgentType, type StartExecutionRequest, type StartExecutionResponse, type StepConfig, type StepExecutionItem, type StepExecutionListResponse, type StepExecutionStatus, type StepHistoryEntry, type StepMetric, type StoppedBreakdown, type StoreApiKeyRequest, type StructuredResponse, type SyncJobResponse, SyncJobStatus, SyncPhaseStatus, type SyncProspectRequest, type SyncProspectResponse, type SyncRequest, type SyncStats, type TeardownOrgResponse, type TemplateShareConfig, type TemplateShareInfo, type TemplateShareRequest, type TemplateSharesResponse, type TenantDetailsResponse, TenantInfoResource, type TenantModelPreference, type TenantModelPreferencesResponse, type TestConnectionResponse, type ThreadListResponse, type ThreadObject, type ThreadResponsesParams, ThreadsResource, type ToolInfo, type TransitionCondition, type TransitionConditionOperator, type TransitionConditionType, type TransitionConfig, type TransitionEventParams, type TriggerSyncResponse, UNIPILE_RATE_LIMIT_ERRORS, UNIPILE_SAFE_LIMITS, type UUID, type UnlinkConversationsResponse, type UpdateAppStatusParams, type UpdateAppStatusResponse, type UpdateDraftRequest, type UpdateLinkedInSubscriptionRequest, type UpdateStepExecutionRequest, type UpdateStepExecutionResponse, type UpdateThreadRequest, type UserConnectionsResponse, type UserCreateRequest, type UserDeleteResponse, type UserIdentifier, type UserListResponse, type UserResponse, type UserUpdateRequest, UsersResource, VALID_EVENT_TYPES, type ValidatedCandidate, ValidationError, type ValidationIssue, type ValidationResponse, type WebhookEvent, type WebhookPayload, canSendInmail, displayProgress, formatProgressEntry, getBestSubscriptionForAction, getConnectionRequestLimit, getContentLimit, getDailyInmailLimit, getDefaultDailyLimits, getInmailAllowance, getLimits, getMessageLimit, getRateLimit, hasOpenProfileMessages, isRecruiterSubscription, normalizeAction, verifyWebhookSignature };
package/dist/index.d.ts CHANGED
@@ -1006,7 +1006,17 @@ interface ValidatedCandidate {
1006
1006
  /** When source is job_signal: hiring-company context from CrustData job listings */
1007
1007
  jobSignalMetadata?: {
1008
1008
  companyId?: number | null;
1009
+ companyName?: string;
1010
+ companyLinkedinUrl?: string;
1009
1011
  jobCount?: number;
1012
+ signalSource?: string;
1013
+ sampleJobListings?: Array<{
1014
+ title?: string;
1015
+ description?: string;
1016
+ workplaceType?: string;
1017
+ country?: string;
1018
+ dateAdded?: string;
1019
+ }>;
1010
1020
  };
1011
1021
  /** Raw profile data */
1012
1022
  [key: string]: any;
@@ -1310,6 +1320,16 @@ interface SpecializedAgentParams {
1310
1320
  * Used by deep_people_search.
1311
1321
  */
1312
1322
  searchJobSignal?: boolean | 'auto';
1323
+ /**
1324
+ * Maximum candidates to return per company. Prevents results
1325
+ * dominated by a single large company. Applied after validation,
1326
+ * keeps highest-scored per company.
1327
+ * @default 3
1328
+ * @minimum 1
1329
+ * @maximum 1000
1330
+ * Used by deep_people_search.
1331
+ */
1332
+ maxCandidatesPerCompany?: number;
1313
1333
  /**
1314
1334
  * Additional parameters for any specialized agent
1315
1335
  * This allows flexibility for future agents without SDK updates
@@ -1809,6 +1829,13 @@ interface CampaignProspectResponse {
1809
1829
  nextEvaluateAt?: string | null;
1810
1830
  stopReason?: string | null;
1811
1831
  stopReasoning?: string | null;
1832
+ /**
1833
+ * CRM provider this prospect is linked to via the CRM Sync API.
1834
+ * Populated by `client.crm.syncProspect` and `client.crm.matchBatch`.
1835
+ */
1836
+ crmProvider?: 'attio' | 'hubspot' | null;
1837
+ /** External CRM record id (Attio record_id, HubSpot contact id). */
1838
+ crmRecordId?: string | null;
1812
1839
  metadata: Record<string, unknown>;
1813
1840
  version: number;
1814
1841
  createdAt: string;
@@ -2287,6 +2314,150 @@ declare class ContactRelationshipsResource {
2287
2314
  get(options: GetContactRelationshipsOptions): Promise<ContactRelationshipResponse>;
2288
2315
  }
2289
2316
 
2317
+ /**
2318
+ * CRM Sync API types.
2319
+ *
2320
+ * These types map to the Python backend endpoints under /v1/crm.
2321
+ * Provider list mirrors `CrmProvider` in src/app/api/schemas/crm_schemas.py.
2322
+ *
2323
+ * All types are prefixed with `Crm` to avoid collisions with the
2324
+ * messaging-API prospect-sync types (`SyncProspectRequest`,
2325
+ * `SyncProspectResponse` in `./messaging`), which serve a different
2326
+ * purpose (LinkedIn/email conversation sync, not CRM linkage).
2327
+ */
2328
+ /**
2329
+ * Connected CRM systems supported by the sync API.
2330
+ *
2331
+ * Capability notes:
2332
+ * - `attio` supports both email and LinkedIn-URL person search.
2333
+ * - `hubspot` only supports email search; LinkedIn URLs are stored as a
2334
+ * custom property on create but are not searchable through the
2335
+ * reconciliation flow.
2336
+ */
2337
+ type CrmProvider = 'attio' | 'hubspot';
2338
+ /**
2339
+ * Push one Lumnis prospect to the connected CRM.
2340
+ *
2341
+ * The prospect must already exist in a `campaign_prospects` row owned
2342
+ * by `userId`; the linkedin URL is the lookup key.
2343
+ */
2344
+ interface CrmSyncProspectRequest {
2345
+ /** UUID or email of the user whose CRM connection executes the call. */
2346
+ userId: string;
2347
+ provider: CrmProvider;
2348
+ /** Must contain `linkedin.com/in/`. */
2349
+ linkedinUrl: string;
2350
+ }
2351
+ interface CrmSyncProspectResponse {
2352
+ /**
2353
+ * `linked` — record already existed in the CRM (matched by email or
2354
+ * LinkedIn URL) and was linked back to the prospect.
2355
+ * `created` — no existing match, a new CRM record was created.
2356
+ */
2357
+ action: 'linked' | 'created';
2358
+ /** Provider-native record id (Attio record_id, HubSpot contact id). */
2359
+ crmRecordId: string;
2360
+ /** Stable URL that opens the record in the CRM UI. */
2361
+ crmUrl: string;
2362
+ }
2363
+ /**
2364
+ * Bulk-check whether prospects are already in the CRM.
2365
+ *
2366
+ * Server-side fan-out is bounded by the
2367
+ * `CRM_MATCH_LIVE_SEARCH_PARALLELISM` setting; the array max
2368
+ * (1000) is a Pydantic guard, not a UX cap.
2369
+ */
2370
+ interface CrmMatchBatchRequest {
2371
+ userId: string;
2372
+ provider: CrmProvider;
2373
+ /** 1..1000 LinkedIn profile URLs. */
2374
+ linkedinUrls: string[];
2375
+ }
2376
+ interface CrmMatchedProspect {
2377
+ /** Echoed input URL (in original casing/form). */
2378
+ linkedinUrl: string;
2379
+ linked: boolean;
2380
+ /** Present iff `linked` is true. */
2381
+ crmRecordId?: string | null;
2382
+ crmUrl?: string | null;
2383
+ }
2384
+ interface CrmMatchBatchResponse {
2385
+ matches: CrmMatchedProspect[];
2386
+ }
2387
+
2388
+ /**
2389
+ * Resource for the user-triggered CRM Sync API.
2390
+ *
2391
+ * Wraps `POST /v1/crm/prospects/sync` and `POST /v1/crm/prospects/match-batch`.
2392
+ *
2393
+ * The user identified by `userId` must already have an active CRM
2394
+ * connection (see `client.integrations.initiateConnection`). When the
2395
+ * connection is missing, the server returns `409 crm_not_connected`
2396
+ * with `connect_url` in the error body so callers can route the user
2397
+ * to the OAuth flow.
2398
+ *
2399
+ * Failure modes worth handling:
2400
+ * - `409 crm_not_connected` — user hasn't connected the provider.
2401
+ * - `404 prospect_not_found` (sync only) — no `campaign_prospects` row
2402
+ * matches `linkedinUrl` for this user.
2403
+ * - `502 crm_upstream_error` — Attio/HubSpot returned an error.
2404
+ * - `503 crm_upstream_rate_limited` — upstream rate-limit; the response
2405
+ * includes a `Retry-After` header.
2406
+ */
2407
+ declare class CrmResource {
2408
+ private readonly http;
2409
+ constructor(http: Http);
2410
+ /**
2411
+ * Push one Lumnis prospect to the connected CRM.
2412
+ *
2413
+ * Idempotent: repeated calls for the same
2414
+ * `(userId, provider, linkedinUrl)` return `linked` with the same
2415
+ * `crmRecordId`. Stale links (record deleted in the CRM) are detected
2416
+ * and re-created automatically.
2417
+ *
2418
+ * @example
2419
+ * ```typescript
2420
+ * const result = await client.crm.syncProspect({
2421
+ * userId: 'user@example.com',
2422
+ * provider: 'attio',
2423
+ * linkedinUrl: 'https://www.linkedin.com/in/jane-doe/',
2424
+ * })
2425
+ * console.log(result.action, result.crmUrl)
2426
+ * ```
2427
+ */
2428
+ syncProspect(data: CrmSyncProspectRequest): Promise<CrmSyncProspectResponse>;
2429
+ /**
2430
+ * Bulk-check whether prospects are already in the CRM. Designed for
2431
+ * list-view badge rendering: feed it every visible LinkedIn URL and
2432
+ * render a "linked" indicator for the ones that come back true.
2433
+ *
2434
+ * Layered cache on the server side: persistent positive matches are
2435
+ * served from the `campaign_prospects.crm_record_id` column, negative
2436
+ * results are served from a Redis cache (TTL configured by
2437
+ * `CRM_MATCH_NEGATIVE_CACHE_TTL_SECONDS`). Only the leftover unknowns
2438
+ * fan out to the live CRM, bounded by
2439
+ * `CRM_MATCH_LIVE_SEARCH_PARALLELISM`.
2440
+ *
2441
+ * Note: HubSpot does not expose a LinkedIn-URL search field through
2442
+ * Composio, so for `provider: 'hubspot'` URLs that aren't already in
2443
+ * the persistent cache will always come back `linked: false`. The
2444
+ * sync endpoint still reconciles via email when available.
2445
+ *
2446
+ * @example
2447
+ * ```typescript
2448
+ * const { matches } = await client.crm.matchBatch({
2449
+ * userId: 'user@example.com',
2450
+ * provider: 'attio',
2451
+ * linkedinUrls: prospects.map(p => p.linkedinUrl),
2452
+ * })
2453
+ * for (const m of matches) {
2454
+ * if (m.linked) console.log(m.linkedinUrl, '->', m.crmUrl)
2455
+ * }
2456
+ * ```
2457
+ */
2458
+ matchBatch(data: CrmMatchBatchRequest): Promise<CrmMatchBatchResponse>;
2459
+ }
2460
+
2290
2461
  /**
2291
2462
  * Email infrastructure types.
2292
2463
  *
@@ -5748,6 +5919,7 @@ declare class LumnisClient {
5748
5919
  readonly contactRelationships: ContactRelationshipsResource;
5749
5920
  readonly enrichment: EnrichmentResource;
5750
5921
  readonly email: EmailResource;
5922
+ readonly crm: CrmResource;
5751
5923
  private readonly _scopedUserId?;
5752
5924
  private readonly _defaultScope;
5753
5925
  constructor(options?: LumnisClientOptions);
@@ -6100,4 +6272,4 @@ declare class ProgressTracker {
6100
6272
  */
6101
6273
  declare function verifyWebhookSignature(payload: string, signature: string, secret: string): boolean;
6102
6274
 
6103
- export { ACTION_DELAYS, type ActionLimit, type ActiveHours, type AddAndRunCriterionRequest, type AddCriterionRequest, type AddOrgMemberRequest, type AddOrgMemberResponse, type AddPersonaRequest, type AddPersonaResponse, type AddProspectsRequest, type AddProspectsResponse, type AgentConfig, type ApiKeyMode, type ApiKeyModeRequest, type ApiKeyModeResponse, type ApiProvider, type AppEnabledResponse, type AppliedFilters, type ApprovalActionRequest, type ApprovalItem, type ApprovalListResponse, type ApprovalMode, type ApprovalResponse, type ApprovalSettings, type ApprovalStatus, type ApprovalsParams, type ApprovalsRequestItem, type ApprovalsResponseItem, type ApproveStepRequest, type AppsListResponse, type ArtifactObject, type ArtifactsListResponse, AuthenticationError, type BaseResource, type BatchCheckConnectionRequest, type BatchCheckPriorContactRequest, type BatchCheckPriorContactResponse, type BatchConnectionRequest, type BatchConnectionResponse, type BatchConnectionStatus, type BatchConnectionStatusResponse, type BatchDraftCompleteData, type BatchDraftCreatedData, type BatchDraftErrorData, type BatchDraftJobProgress, type BatchDraftJobResponse, type BatchDraftJobStartedData, type BatchDraftJobStatusResponse, type BatchDraftProgressData, type BatchDraftRequest, type BatchDraftResponse, type BatchDraftStreamCallbacks, type BatchDraftStreamEvent, type BatchDraftStreamEventType, type BatchExecutionInclude, type BatchExecutionRequest, type BatchExecutionResponse, BatchJobStatus, type BatchPollRequest, type BatchPollResponse, type BatchProspectIdentifier, type BatchRequestItem, type BatchRequestType, type BatchResponseItem, type BatchSendRequest, type BatchSendResponse, type BatchStepMetric, type BillingStatus, type BulkApprovalAction, type BulkApprovalFailure, type BulkApprovalRequest, type BulkApprovalResponse, type BulkCompleteFailure, type BulkCompleteRequest, type BulkCompleteResponse, type BulkDeleteRequest, type BulkDeleteResponse, type BulkOperationRequest, type BulkOperationResponse, type BulkUploadResponse, CONTENT_LIMITS, CONTENT_LIMITS_MAP, type CampaignActionListResponse, type CampaignActionResponse, type CampaignActionStatus, type CampaignActionType, type CampaignBulkApprovalAction, type CampaignBulkApprovalItem, type CampaignBulkApprovalRequest, type CampaignBulkApprovalResponse, type CampaignBulkApprovalResult, type CampaignCreate, type CampaignGuardrails, type CampaignListResponse, type CampaignMetricsResponse, type CampaignOutcomeType, type CampaignProspectDetailResponse, type CampaignProspectInput, type CampaignProspectResponse, type CampaignProspectState, type CampaignResponse, type CampaignStatus, type CampaignUpdate, CampaignsResource, type CancelDraftResponse, type CancelQueuedRequest, type CancelResponseResponse, type ChannelContactHistory, ChannelType, type CheckAppEnabledParams, type CheckLinkedInConnectionRequest, type CheckPriorContactRequest, type CheckPriorContactResponse, type ChunkingStrategy, type CompleteExecutionRequest, type CompleteExecutionResponse, type ConnectionAcceptedData, type ConnectionCallbackRequest, type ConnectionCallbackResponse, type ConnectionInfo, type ConnectionStatus, type ConnectionStatusResponse, type ConnectionSummary, type ConnectionsSyncStatus, type ContactDetailsInput, type ContactEnrichPersonInput, type ContactEnrichPersonResult, type ContactEnrichRequest, type ContactEnrichResponse, type ContactHistorySyncStatus, type ContactRelationshipProvider, type ContactRelationshipResponse, type ContactRelationshipStatus, ContactRelationshipsResource, type ContactScore, type ContentLimit, type ContentSource, type ContentType, type ConversationDetail, ConversationStatus, type ConversationSummary, type CreateDraftRequest, type CreateFeedbackRequest, type CreateFeedbackResponse, type CreateResponseRequest, type CreateResponseResponse, type CreateThreadRequest, type CriteriaClassification, type CriteriaMetadata, type CriterionDefinition, type CriterionResult, type CriterionType, DAILY_INMAIL_LIMITS, DEFAULT_SUBSCRIPTION_TYPE, type DatabaseStatus, type DeepPeopleSearchOutput, type DeepSearchPreview, type DeepSearchStats, type DeleteApiKeyResponse, type DeleteConnectionsResponse, type DeleteConversationResponse, type DeleteConversationsByProjectResponse, type DisconnectRequest, type DisconnectResponse, type DraftResponse, type DraftSendOverride, DraftStatus, type DuplicateHandling, type DuplicateTemplateRequest, type EditQueuedRequest, type Email, type EmailAction, type EmailOnboardRequest, type EmailOnboardResponse, type EmailOnboardStatusResponse, type EmailOrgHealthResponse, type EmailOrgListResponse, type EmailOrgSettingsResponse, type EmailOrgSettingsUpdate, type EmailOrgSummary, EmailResource, type EmailThreadSummary, type EngagementStatus, type EngagementStatusData, type EngagementStatusRequest, type EngagementStatusResponse, EnrichmentResource, type ErrorDetail, type ErrorResponse, type ErrorResponseItem, type EvidenceSource, type ExecutionDetailResponse, type ExecutionEvent, type ExecutionEventData, type ExecutionListResponse, type ExecutionMetricsOptions, type ExecutionMetricsResponse, type ExecutionStatus, type ExecutionSummary, type ExecutionSummaryExtended, type ExecutionsParams, type ExecutionsRequestItem, type ExecutionsResponseItem, 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 FunnelStage, type GetConnectionStatusParams, type GetContactRelationshipsOptions, type GetToolsRequest, type GetToolsResponse, type GetUserConnectionsParams, type InitiateConnectionRequest, type InitiateConnectionResponse, type InmailSubscription, IntegrationsResource, InternalServerError, LINKEDIN_LIMITS, type LifecycleOperationRequest, type LifecycleOperationResponse, type LinkAssetsRequest, type LinkedAssetsResponse, type LinkedInAccountInfoResponse, type LinkedInAccountRateLimits, type LinkedInAccountRateLimitsResponse, type LinkedInAccountRateLimitsUpdate, type LinkedInAction, type LinkedInConnectionStatus, type LinkedInCreditsResponse, type LinkedInLimitSubscriptionType, type LinkedInLimits, type LinkedInSendRequest, type LinkedInSubscriptionInfo, LinkedInSubscriptionType, type LinkedInSyncStatusResponse, type ListApprovalsOptions, type ListAssetsOptions, type ListCampaignActionsOptions, type ListCampaignProspectsOptions, type ListCampaignsOptions, type ListExecutionsOptions, type ListPendingApprovalsOptions, type ListPlaybooksOptions, type ListProvidersResponse, type ListStepExecutionsOptions, type ListTemplatesOptions, 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 MetricsParams, type MetricsRequestItem, type MetricsResponseItem, type ModelAvailability, type ModelOverrides, type ModelPreferenceCreate, type ModelPreferencesBulkUpdate, ModelPreferencesResource, type ModelProvider, type ModelType, NetworkDistance, NoDataSourcesError, NotFoundError, type OnFailure, type OutcomeType, type OutreachAssetCreate, type OutreachAssetResponse, type OutreachAssetType, type OutreachAssetUpdate, OutreachMethod, type PaginationInfo, type PaginationParams, type PauseResumeQueuedRequest, type PendingApprovalExtended, PeopleDataSource, PeopleResource, type PeopleSearchRequest, type PeopleSearchResponse, type PersonResult, type Plan, type PlaybookCreate, type PlaybookGenerateJobResponse, type PlaybookGenerateJobStatusResponse, type PlaybookGenerateRequest, type PlaybookResponse, type PlaybookUpdate, type PlaybookVersionResponse, type PostPreviewRequest, type PostPreviewResponse, type PostPreviewResult, type PostsSearchStats, type PriorContactMessage, type ProcessingStatus, type ProcessingStatusResponse, type ProgressEntry, ProgressTracker, type ProjectApprovalsData, type ProjectExecutionsData, type ProjectMetricsData, type ProspectConnectionCheck, type ProspectInfo, type ProspectInput, type ProspectPriorContactResult, type ProspectSyncIdentifier, type ProspectSyncResult, type ProspectWarning, ProviderType, QueueItemStatus, type QuickPeopleSearchOutput, RATE_LIMIT_COOLDOWNS, type RateLimitData, RateLimitError, type RateLimitErrorOptions, type RateLimitInfo$1 as RateLimitInfo, type RateLimitStatusResponse, type RateLimitsParams, type RateLimitsRequestItem, type RateLimitsResponseItem, type RecordOutcomeRequest, type RejectActionRequest, type RejectStepRequest, type RemoveOrgMemberResponse, type ReplySentiment, type ResponseArtifact, type ResponseListResponse, type ResponseObject, type ResponseStatus, ResponsesResource, SEQUENCE_RATE_LIMITS, type SalaryRange, type Scope, type SelectedSkill, type SendMessageRequest, type SendMessageResponse, type SendReplyRequest, type SendResult, type SenderPersonaInput, type SequenceAction, type SequenceApprovalNeededData, type SequenceChannel, type SequenceEventType, type SequenceExecutionCompletedData, type SequenceExecutionFailedData, type SequenceRateLimitAction, type SequenceStepCompletedData, type SequenceTemplateCreate, type SequenceTemplateResponse, type SequenceTemplateUpdate, SequencesResource, SharePermission, 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 SkipActionRequest, type SkipStepRequest, type SkipStepResponse, type SkippedProspect, SourcesNotAvailableError, type SpecializedAgentParams, type SpecializedAgentType, type StartExecutionRequest, type StartExecutionResponse, type StepConfig, type StepExecutionItem, type StepExecutionListResponse, type StepExecutionStatus, type StepHistoryEntry, type StepMetric, type StoppedBreakdown, type StoreApiKeyRequest, type StructuredResponse, type SyncJobResponse, SyncJobStatus, SyncPhaseStatus, type SyncProspectRequest, type SyncProspectResponse, type SyncRequest, type SyncStats, type TeardownOrgResponse, type TemplateShareConfig, type TemplateShareInfo, type TemplateShareRequest, type TemplateSharesResponse, type TenantDetailsResponse, TenantInfoResource, type TenantModelPreference, type TenantModelPreferencesResponse, type TestConnectionResponse, type ThreadListResponse, type ThreadObject, type ThreadResponsesParams, ThreadsResource, type ToolInfo, type TransitionCondition, type TransitionConditionOperator, type TransitionConditionType, type TransitionConfig, type TransitionEventParams, type TriggerSyncResponse, UNIPILE_RATE_LIMIT_ERRORS, UNIPILE_SAFE_LIMITS, type UUID, type UnlinkConversationsResponse, type UpdateAppStatusParams, type UpdateAppStatusResponse, type UpdateDraftRequest, type UpdateLinkedInSubscriptionRequest, type UpdateStepExecutionRequest, type UpdateStepExecutionResponse, type UpdateThreadRequest, type UserConnectionsResponse, type UserCreateRequest, type UserDeleteResponse, type UserIdentifier, type UserListResponse, type UserResponse, type UserUpdateRequest, UsersResource, VALID_EVENT_TYPES, type ValidatedCandidate, ValidationError, type ValidationIssue, type ValidationResponse, type WebhookEvent, type WebhookPayload, canSendInmail, displayProgress, formatProgressEntry, getBestSubscriptionForAction, getConnectionRequestLimit, getContentLimit, getDailyInmailLimit, getDefaultDailyLimits, getInmailAllowance, getLimits, getMessageLimit, getRateLimit, hasOpenProfileMessages, isRecruiterSubscription, normalizeAction, verifyWebhookSignature };
6275
+ export { ACTION_DELAYS, type ActionLimit, type ActiveHours, type AddAndRunCriterionRequest, type AddCriterionRequest, type AddOrgMemberRequest, type AddOrgMemberResponse, type AddPersonaRequest, type AddPersonaResponse, type AddProspectsRequest, type AddProspectsResponse, type AgentConfig, type ApiKeyMode, type ApiKeyModeRequest, type ApiKeyModeResponse, type ApiProvider, type AppEnabledResponse, type AppliedFilters, type ApprovalActionRequest, type ApprovalItem, type ApprovalListResponse, type ApprovalMode, type ApprovalResponse, type ApprovalSettings, type ApprovalStatus, type ApprovalsParams, type ApprovalsRequestItem, type ApprovalsResponseItem, type ApproveStepRequest, type AppsListResponse, type ArtifactObject, type ArtifactsListResponse, AuthenticationError, type BaseResource, type BatchCheckConnectionRequest, type BatchCheckPriorContactRequest, type BatchCheckPriorContactResponse, type BatchConnectionRequest, type BatchConnectionResponse, type BatchConnectionStatus, type BatchConnectionStatusResponse, type BatchDraftCompleteData, type BatchDraftCreatedData, type BatchDraftErrorData, type BatchDraftJobProgress, type BatchDraftJobResponse, type BatchDraftJobStartedData, type BatchDraftJobStatusResponse, type BatchDraftProgressData, type BatchDraftRequest, type BatchDraftResponse, type BatchDraftStreamCallbacks, type BatchDraftStreamEvent, type BatchDraftStreamEventType, type BatchExecutionInclude, type BatchExecutionRequest, type BatchExecutionResponse, BatchJobStatus, type BatchPollRequest, type BatchPollResponse, type BatchProspectIdentifier, type BatchRequestItem, type BatchRequestType, type BatchResponseItem, type BatchSendRequest, type BatchSendResponse, type BatchStepMetric, type BillingStatus, type BulkApprovalAction, type BulkApprovalFailure, type BulkApprovalRequest, type BulkApprovalResponse, type BulkCompleteFailure, type BulkCompleteRequest, type BulkCompleteResponse, type BulkDeleteRequest, type BulkDeleteResponse, type BulkOperationRequest, type BulkOperationResponse, type BulkUploadResponse, CONTENT_LIMITS, CONTENT_LIMITS_MAP, type CampaignActionListResponse, type CampaignActionResponse, type CampaignActionStatus, type CampaignActionType, type CampaignBulkApprovalAction, type CampaignBulkApprovalItem, type CampaignBulkApprovalRequest, type CampaignBulkApprovalResponse, type CampaignBulkApprovalResult, type CampaignCreate, type CampaignGuardrails, type CampaignListResponse, type CampaignMetricsResponse, type CampaignOutcomeType, type CampaignProspectDetailResponse, type CampaignProspectInput, type CampaignProspectResponse, type CampaignProspectState, type CampaignResponse, type CampaignStatus, type CampaignUpdate, CampaignsResource, type CancelDraftResponse, type CancelQueuedRequest, type CancelResponseResponse, type ChannelContactHistory, ChannelType, type CheckAppEnabledParams, type CheckLinkedInConnectionRequest, type CheckPriorContactRequest, type CheckPriorContactResponse, type ChunkingStrategy, type CompleteExecutionRequest, type CompleteExecutionResponse, type ConnectionAcceptedData, type ConnectionCallbackRequest, type ConnectionCallbackResponse, type ConnectionInfo, type ConnectionStatus, type ConnectionStatusResponse, type ConnectionSummary, type ConnectionsSyncStatus, type ContactDetailsInput, type ContactEnrichPersonInput, type ContactEnrichPersonResult, type ContactEnrichRequest, type ContactEnrichResponse, type ContactHistorySyncStatus, type ContactRelationshipProvider, type ContactRelationshipResponse, type ContactRelationshipStatus, ContactRelationshipsResource, type ContactScore, type ContentLimit, type ContentSource, type ContentType, type ConversationDetail, ConversationStatus, type ConversationSummary, type CreateDraftRequest, type CreateFeedbackRequest, type CreateFeedbackResponse, type CreateResponseRequest, type CreateResponseResponse, type CreateThreadRequest, type CriteriaClassification, type CriteriaMetadata, type CriterionDefinition, type CriterionResult, type CriterionType, type CrmMatchBatchRequest, type CrmMatchBatchResponse, type CrmMatchedProspect, type CrmProvider, CrmResource, type CrmSyncProspectRequest, type CrmSyncProspectResponse, DAILY_INMAIL_LIMITS, DEFAULT_SUBSCRIPTION_TYPE, type DatabaseStatus, type DeepPeopleSearchOutput, type DeepSearchPreview, type DeepSearchStats, type DeleteApiKeyResponse, type DeleteConnectionsResponse, type DeleteConversationResponse, type DeleteConversationsByProjectResponse, type DisconnectRequest, type DisconnectResponse, type DraftResponse, type DraftSendOverride, DraftStatus, type DuplicateHandling, type DuplicateTemplateRequest, type EditQueuedRequest, type Email, type EmailAction, type EmailOnboardRequest, type EmailOnboardResponse, type EmailOnboardStatusResponse, type EmailOrgHealthResponse, type EmailOrgListResponse, type EmailOrgSettingsResponse, type EmailOrgSettingsUpdate, type EmailOrgSummary, EmailResource, type EmailThreadSummary, type EngagementStatus, type EngagementStatusData, type EngagementStatusRequest, type EngagementStatusResponse, EnrichmentResource, type ErrorDetail, type ErrorResponse, type ErrorResponseItem, type EvidenceSource, type ExecutionDetailResponse, type ExecutionEvent, type ExecutionEventData, type ExecutionListResponse, type ExecutionMetricsOptions, type ExecutionMetricsResponse, type ExecutionStatus, type ExecutionSummary, type ExecutionSummaryExtended, type ExecutionsParams, type ExecutionsRequestItem, type ExecutionsResponseItem, 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 FunnelStage, type GetConnectionStatusParams, type GetContactRelationshipsOptions, type GetToolsRequest, type GetToolsResponse, type GetUserConnectionsParams, type InitiateConnectionRequest, type InitiateConnectionResponse, type InmailSubscription, IntegrationsResource, InternalServerError, LINKEDIN_LIMITS, type LifecycleOperationRequest, type LifecycleOperationResponse, type LinkAssetsRequest, type LinkedAssetsResponse, type LinkedInAccountInfoResponse, type LinkedInAccountRateLimits, type LinkedInAccountRateLimitsResponse, type LinkedInAccountRateLimitsUpdate, type LinkedInAction, type LinkedInConnectionStatus, type LinkedInCreditsResponse, type LinkedInLimitSubscriptionType, type LinkedInLimits, type LinkedInSendRequest, type LinkedInSubscriptionInfo, LinkedInSubscriptionType, type LinkedInSyncStatusResponse, type ListApprovalsOptions, type ListAssetsOptions, type ListCampaignActionsOptions, type ListCampaignProspectsOptions, type ListCampaignsOptions, type ListExecutionsOptions, type ListPendingApprovalsOptions, type ListPlaybooksOptions, type ListProvidersResponse, type ListStepExecutionsOptions, type ListTemplatesOptions, 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 MetricsParams, type MetricsRequestItem, type MetricsResponseItem, type ModelAvailability, type ModelOverrides, type ModelPreferenceCreate, type ModelPreferencesBulkUpdate, ModelPreferencesResource, type ModelProvider, type ModelType, NetworkDistance, NoDataSourcesError, NotFoundError, type OnFailure, type OutcomeType, type OutreachAssetCreate, type OutreachAssetResponse, type OutreachAssetType, type OutreachAssetUpdate, OutreachMethod, type PaginationInfo, type PaginationParams, type PauseResumeQueuedRequest, type PendingApprovalExtended, PeopleDataSource, PeopleResource, type PeopleSearchRequest, type PeopleSearchResponse, type PersonResult, type Plan, type PlaybookCreate, type PlaybookGenerateJobResponse, type PlaybookGenerateJobStatusResponse, type PlaybookGenerateRequest, type PlaybookResponse, type PlaybookUpdate, type PlaybookVersionResponse, type PostPreviewRequest, type PostPreviewResponse, type PostPreviewResult, type PostsSearchStats, type PriorContactMessage, type ProcessingStatus, type ProcessingStatusResponse, type ProgressEntry, ProgressTracker, type ProjectApprovalsData, type ProjectExecutionsData, type ProjectMetricsData, type ProspectConnectionCheck, type ProspectInfo, type ProspectInput, type ProspectPriorContactResult, type ProspectSyncIdentifier, type ProspectSyncResult, type ProspectWarning, ProviderType, QueueItemStatus, type QuickPeopleSearchOutput, RATE_LIMIT_COOLDOWNS, type RateLimitData, RateLimitError, type RateLimitErrorOptions, type RateLimitInfo$1 as RateLimitInfo, type RateLimitStatusResponse, type RateLimitsParams, type RateLimitsRequestItem, type RateLimitsResponseItem, type RecordOutcomeRequest, type RejectActionRequest, type RejectStepRequest, type RemoveOrgMemberResponse, type ReplySentiment, type ResponseArtifact, type ResponseListResponse, type ResponseObject, type ResponseStatus, ResponsesResource, SEQUENCE_RATE_LIMITS, type SalaryRange, type Scope, type SelectedSkill, type SendMessageRequest, type SendMessageResponse, type SendReplyRequest, type SendResult, type SenderPersonaInput, type SequenceAction, type SequenceApprovalNeededData, type SequenceChannel, type SequenceEventType, type SequenceExecutionCompletedData, type SequenceExecutionFailedData, type SequenceRateLimitAction, type SequenceStepCompletedData, type SequenceTemplateCreate, type SequenceTemplateResponse, type SequenceTemplateUpdate, SequencesResource, SharePermission, 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 SkipActionRequest, type SkipStepRequest, type SkipStepResponse, type SkippedProspect, SourcesNotAvailableError, type SpecializedAgentParams, type SpecializedAgentType, type StartExecutionRequest, type StartExecutionResponse, type StepConfig, type StepExecutionItem, type StepExecutionListResponse, type StepExecutionStatus, type StepHistoryEntry, type StepMetric, type StoppedBreakdown, type StoreApiKeyRequest, type StructuredResponse, type SyncJobResponse, SyncJobStatus, SyncPhaseStatus, type SyncProspectRequest, type SyncProspectResponse, type SyncRequest, type SyncStats, type TeardownOrgResponse, type TemplateShareConfig, type TemplateShareInfo, type TemplateShareRequest, type TemplateSharesResponse, type TenantDetailsResponse, TenantInfoResource, type TenantModelPreference, type TenantModelPreferencesResponse, type TestConnectionResponse, type ThreadListResponse, type ThreadObject, type ThreadResponsesParams, ThreadsResource, type ToolInfo, type TransitionCondition, type TransitionConditionOperator, type TransitionConditionType, type TransitionConfig, type TransitionEventParams, type TriggerSyncResponse, UNIPILE_RATE_LIMIT_ERRORS, UNIPILE_SAFE_LIMITS, type UUID, type UnlinkConversationsResponse, type UpdateAppStatusParams, type UpdateAppStatusResponse, type UpdateDraftRequest, type UpdateLinkedInSubscriptionRequest, type UpdateStepExecutionRequest, type UpdateStepExecutionResponse, type UpdateThreadRequest, type UserConnectionsResponse, type UserCreateRequest, type UserDeleteResponse, type UserIdentifier, type UserListResponse, type UserResponse, type UserUpdateRequest, UsersResource, VALID_EVENT_TYPES, type ValidatedCandidate, ValidationError, type ValidationIssue, type ValidationResponse, type WebhookEvent, type WebhookPayload, canSendInmail, displayProgress, formatProgressEntry, getBestSubscriptionForAction, getConnectionRequestLimit, getContentLimit, getDailyInmailLimit, getDefaultDailyLimits, getInmailAllowance, getLimits, getMessageLimit, getRateLimit, hasOpenProfileMessages, isRecruiterSubscription, normalizeAction, verifyWebhookSignature };
package/dist/index.mjs CHANGED
@@ -916,6 +916,65 @@ class ContactRelationshipsResource {
916
916
  }
917
917
  }
918
918
 
919
+ class CrmResource {
920
+ constructor(http) {
921
+ this.http = http;
922
+ }
923
+ /**
924
+ * Push one Lumnis prospect to the connected CRM.
925
+ *
926
+ * Idempotent: repeated calls for the same
927
+ * `(userId, provider, linkedinUrl)` return `linked` with the same
928
+ * `crmRecordId`. Stale links (record deleted in the CRM) are detected
929
+ * and re-created automatically.
930
+ *
931
+ * @example
932
+ * ```typescript
933
+ * const result = await client.crm.syncProspect({
934
+ * userId: 'user@example.com',
935
+ * provider: 'attio',
936
+ * linkedinUrl: 'https://www.linkedin.com/in/jane-doe/',
937
+ * })
938
+ * console.log(result.action, result.crmUrl)
939
+ * ```
940
+ */
941
+ async syncProspect(data) {
942
+ return this.http.post("/crm/prospects/sync", data);
943
+ }
944
+ /**
945
+ * Bulk-check whether prospects are already in the CRM. Designed for
946
+ * list-view badge rendering: feed it every visible LinkedIn URL and
947
+ * render a "linked" indicator for the ones that come back true.
948
+ *
949
+ * Layered cache on the server side: persistent positive matches are
950
+ * served from the `campaign_prospects.crm_record_id` column, negative
951
+ * results are served from a Redis cache (TTL configured by
952
+ * `CRM_MATCH_NEGATIVE_CACHE_TTL_SECONDS`). Only the leftover unknowns
953
+ * fan out to the live CRM, bounded by
954
+ * `CRM_MATCH_LIVE_SEARCH_PARALLELISM`.
955
+ *
956
+ * Note: HubSpot does not expose a LinkedIn-URL search field through
957
+ * Composio, so for `provider: 'hubspot'` URLs that aren't already in
958
+ * the persistent cache will always come back `linked: false`. The
959
+ * sync endpoint still reconciles via email when available.
960
+ *
961
+ * @example
962
+ * ```typescript
963
+ * const { matches } = await client.crm.matchBatch({
964
+ * userId: 'user@example.com',
965
+ * provider: 'attio',
966
+ * linkedinUrls: prospects.map(p => p.linkedinUrl),
967
+ * })
968
+ * for (const m of matches) {
969
+ * if (m.linked) console.log(m.linkedinUrl, '->', m.crmUrl)
970
+ * }
971
+ * ```
972
+ */
973
+ async matchBatch(data) {
974
+ return this.http.post("/crm/prospects/match-batch", data);
975
+ }
976
+ }
977
+
919
978
  class EmailResource {
920
979
  constructor(http) {
921
980
  this.http = http;
@@ -4268,6 +4327,7 @@ class LumnisClient {
4268
4327
  contactRelationships;
4269
4328
  enrichment;
4270
4329
  email;
4330
+ crm;
4271
4331
  _scopedUserId;
4272
4332
  _defaultScope;
4273
4333
  constructor(options = {}) {
@@ -4305,6 +4365,7 @@ class LumnisClient {
4305
4365
  this.contactRelationships = new ContactRelationshipsResource(this.http);
4306
4366
  this.enrichment = new EnrichmentResource(this.http);
4307
4367
  this.email = new EmailResource(this.http);
4368
+ this.crm = new CrmResource(this.http);
4308
4369
  }
4309
4370
  forUser(userId) {
4310
4371
  return new LumnisClient({
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "lumnisai",
3
3
  "type": "module",
4
- "version": "0.5.16",
4
+ "version": "0.5.18",
5
5
  "description": "Official Node.js SDK for the Lumnis AI API",
6
6
  "author": "Lumnis AI",
7
7
  "license": "MIT",