{
  "version": 3,
  "sources": ["../../../../node_modules/@sniptt/guards/lib/guards/primitives.ts", "../../../../node_modules/@sniptt/guards/lib/guards/structural.ts", "../../../../node_modules/@sniptt/guards/lib/guards/convenience.ts", "../../../../node_modules/@sniptt/guards/lib/index.ts", "twenty-sdk-define-stub:__twenty-sdk-define-stub__", "../../../../src/constants/update-fields-options.ts", "../../../../src/constants/update-fields-option-values.ts", "../../../../src/constants/universal-identifiers.ts", "../../../../src/logic-functions/handlers/enrich-person.ts", "../../../../src/logic-functions/utils/find-or-create-current-company.ts", "../../../../src/logic-functions/errors/apollo-error.ts", "../../../../src/logic-functions/errors/apollo-error-code.ts", "../../../../src/logic-functions/errors/apollo-operation-error.ts", "../../../../src/logic-functions/utils/to-text.ts", "../../../../src/utils/is-defined.ts", "../../../../src/logic-functions/utils/build-links.ts", "../../../../src/logic-functions/utils/normalize-domain.ts", "../../../../src/logic-functions/utils/normalize-linkedin-url.ts", "../../../../src/utils/prune-undefined.ts", "../../../../src/logic-functions/utils/build-company-create-data.ts", "../../../../src/logic-functions/utils/build-company-match-keys.ts", "../../../../src/logic-functions/utils/find-company-id.ts", "../../../../src/logic-functions/utils/find-company-id-by-filter.ts", "../../../../src/utils/is-unique-violation-error.ts", "../../../../src/logic-functions/utils/is-empty-emails.ts", "../../../../src/logic-functions/utils/is-empty-text.ts", "../../../../src/logic-functions/utils/is-empty-full-name.ts", "../../../../src/logic-functions/utils/is-empty-links.ts", "../../../../src/logic-functions/utils/is-empty-phones.ts", "../../../../src/logic-functions/utils/map-person.ts", "../../../../src/constants/email-status-options.ts", "../../../../src/constants/seniority-options.ts", "../../../../src/logic-functions/utils/build-allowed-values.ts", "../../../../src/logic-functions/utils/build-emails.ts", "../../../../src/logic-functions/utils/capitalize-name.ts", "../../../../src/logic-functions/utils/build-full-name.ts", "../../../../src/logic-functions/utils/pick-select.ts", "../../../../src/utils/normalize-enum-value.ts", "../../../../src/logic-functions/utils/to-json-array.ts", "../../../../src/logic-functions/utils/to-string-array.ts", "../../../../src/logic-functions/utils/pick-writable-standard.ts", "../../../../src/logic-functions/utils/build-person-matched-data.ts", "../../../../src/logic-functions/utils/enrich-people.ts", "../../../../src/logic-functions/utils/build-apollo-person-detail.ts", "../../../../src/logic-functions/utils/get-apollo-phone-webhook-url.ts", "../../../../src/logic-functions/utils/build-apollo-reveal-config.ts", "../../../../src/logic-functions/utils/is-apollo-matched.ts", "../../../../src/logic-functions/utils/post-apollo-enrich.ts", "../../../../src/logic-functions/utils/apollo-fetch.ts", "../../../../src/constants/apollo-base-url.ts", "../../../../src/logic-functions/utils/extract-apollo-error-message.ts", "../../../../src/logic-functions/utils/get-apollo-api-key.ts", "../../../../src/logic-functions/errors/apollo-config-error.ts", "../../../../src/logic-functions/utils/build-person-name-param.ts", "../../../../src/logic-functions/utils/extract-person-match-params.ts", "../../../../src/logic-functions/utils/read-people.ts", "../../../../src/logic-functions/utils/update-people-status.ts", "../../../../src/logic-functions/utils/update-person-record.ts", "../../../../src/logic-functions/handlers/person-enrichment-adapter.ts", "../../../../src/logic-functions/utils/post-apollo-single-enrich.ts", "../../../../src/logic-functions/utils/enrich-person.ts", "../../../../src/logic-functions/handlers/person-single-enrichment-adapter.ts", "../../../../src/logic-functions/utils/run-single-enrichment.ts", "../../../../src/logic-functions/utils/build-error-result.ts", "../../../../src/logic-functions/utils/aggregate-bulk-enrich-result.ts", "../../../../src/logic-functions/utils/build-skipped-result.ts", "../../../../src/logic-functions/utils/chunk.ts", "../../../../src/constants/enrichment-limits.ts", "../../../../src/logic-functions/utils/get-max-bulk-enrich.ts", "../../../../src/logic-functions/utils/build-matched-result.ts", "../../../../src/logic-functions/utils/build-not-found-result.ts", "../../../../src/logic-functions/utils/internal-field-names.ts", "../../../../src/logic-functions/utils/now-iso.ts", "../../../../src/logic-functions/utils/resolve-update-fields-mode.ts", "../../../../src/utils/to-error-message.ts", "../../../../src/logic-functions/utils/enrich-chunk.ts", "../../../../src/logic-functions/utils/extract-record-ids.ts", "../../../../src/logic-functions/utils/run-batch-enrichment.ts", "../../../../src/logic-functions/enrich-person.function.ts"],
  "sourcesContent": [null, null, null, null, "\n// Auto-generated stub for twenty-sdk/define injected by the SDK CLI build.\n// Real implementations would pull in zod, twenty-shared and ~1MB of code; at\n// runtime only `default.config.handler` is consumed, so tiny no-ops suffice.\nconst __defineFactoryStub = (config) => ({\n  success: true,\n  config,\n  errors: [],\n});\n\nconst __anyHandler = {\n  get(_target, prop) {\n    if (prop === '__esModule') return true;\n    if (prop === Symbol.toPrimitive) return () => '';\n    if (typeof prop === 'symbol') return undefined;\n    return new Proxy(() => undefined, __anyHandler);\n  },\n  apply() {\n    return new Proxy(() => undefined, __anyHandler);\n  },\n};\nconst __anyStub = new Proxy(() => undefined, __anyHandler);\n\nexport const createValidationResult = __defineFactoryStub;\nexport const defineAgent = __defineFactoryStub;\nexport const defineApplication = __defineFactoryStub;\nexport const defineApplicationRole = __defineFactoryStub;\nexport const defineCommandMenuItem = __defineFactoryStub;\nexport const defineConnectionProvider = __defineFactoryStub;\nexport const defineField = __defineFactoryStub;\nexport const defineFrontComponent = __defineFactoryStub;\nexport const defineIndex = __defineFactoryStub;\nexport const defineLogicFunction = __defineFactoryStub;\nexport const defineNavigationMenuItem = __defineFactoryStub;\nexport const defineObject = __defineFactoryStub;\nexport const definePageLayout = __defineFactoryStub;\nexport const definePageLayoutTab = __defineFactoryStub;\nexport const definePermissionFlag = __defineFactoryStub;\nexport const definePostInstallLogicFunction = __defineFactoryStub;\nexport const definePreInstallLogicFunction = __defineFactoryStub;\nexport const defineRole = __defineFactoryStub;\nexport const defineSkill = __defineFactoryStub;\nexport const defineView = __defineFactoryStub;\nexport const defineViewField = __defineFactoryStub;\nexport const AggregateOperations = __anyStub;\nexport const DateDisplayFormat = __anyStub;\nexport const FieldMetadataSettingsOnClickAction = __anyStub;\nexport const FieldType = __anyStub;\nexport const HTTPMethod = __anyStub;\nexport const NavigationMenuItemType = __anyStub;\nexport const NumberDataType = __anyStub;\nexport const ObjectRecordGroupByDateGranularity = __anyStub;\nexport const OnDeleteAction = __anyStub;\nexport const PageLayoutTabLayoutMode = __anyStub;\nexport const PageLayoutType = __anyStub;\nexport const RelationType = __anyStub;\nexport const RowLevelPermissionPredicateGroupLogicalOperator = __anyStub;\nexport const RowLevelPermissionPredicateOperand = __anyStub;\nexport const STANDARD_OBJECT = __anyStub;\nexport const STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS = __anyStub;\nexport const STANDARD_PAGE_LAYOUT = __anyStub;\nexport const STANDARD_PAGE_LAYOUT_UNIVERSAL_IDENTIFIERS = __anyStub;\nexport const SystemPermissionFlag = __anyStub;\nexport const ViewCalendarLayout = __anyStub;\nexport const ViewFilterGroupLogicalOperator = __anyStub;\nexport const ViewFilterOperand = __anyStub;\nexport const ViewKey = __anyStub;\nexport const ViewOpenRecordIn = __anyStub;\nexport const ViewSortDirection = __anyStub;\nexport const ViewType = __anyStub;\nexport const ViewVisibility = __anyStub;\nexport const canAccessFullAdminPanel = __anyStub;\nexport const canImpersonate = __anyStub;\nexport const every = __anyStub;\nexport const everyDefined = __anyStub;\nexport const everyEquals = __anyStub;\nexport const favoriteRecordIds = __anyStub;\nexport const featureFlags = __anyStub;\nexport const hasAnySoftDeleteFilterOnView = __anyStub;\nexport const includes = __anyStub;\nexport const includesEvery = __anyStub;\nexport const isDashboardPageLayoutInEditMode = __anyStub;\nexport const isDefined = __anyStub;\nexport const isInSidePanel = __anyStub;\nexport const isLayoutCustomizationModeEnabled = __anyStub;\nexport const isNonEmptyString = __anyStub;\nexport const isSelectAll = __anyStub;\nexport const none = __anyStub;\nexport const noneDefined = __anyStub;\nexport const noneEquals = __anyStub;\nexport const numberOfSelectedRecords = __anyStub;\nexport const objectMetadataItem = __anyStub;\nexport const objectMetadataLabel = __anyStub;\nexport const objectPermissions = __anyStub;\nexport const pageType = __anyStub;\nexport const selectedRecords = __anyStub;\nexport const some = __anyStub;\nexport const someDefined = __anyStub;\nexport const someEquals = __anyStub;\nexport const someNonEmptyString = __anyStub;\nexport const targetObjectReadPermissions = __anyStub;\nexport const targetObjectWritePermissions = __anyStub;\nexport const validateFields = __anyStub;\n", "import { type UpdateFieldsOption } from 'src/types/update-fields-option';\n\nexport const UPDATE_FIELDS_OPTIONS = {\n  overwrite: 'Yes and overwrite',\n  fillEmpty: \"Yes and don't overwrite\",\n  no: 'No',\n} as const satisfies Record<string, UpdateFieldsOption>;\n", "import { UPDATE_FIELDS_OPTIONS } from 'src/constants/update-fields-options';\nimport { type UpdateFieldsOption } from 'src/types/update-fields-option';\n\nexport const UPDATE_FIELDS_OPTION_VALUES: UpdateFieldsOption[] =\n  Object.values(UPDATE_FIELDS_OPTIONS);\n", "export const APPLICATION_UNIVERSAL_IDENTIFIER =\n  '542f6e42-3811-4ea6-956c-99211b8a5de1';\n\nexport const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER =\n  'eff0dd10-5535-4af1-8cdf-1e9288faf8bd';\n\n// Assignable role that gates who may trigger enrichment (spends Apollo credits).\nexport const ENRICHMENT_ROLE_UNIVERSAL_IDENTIFIER =\n  '9393797d-19eb-4f36-9679-374426f25704';\n\nexport const APOLLO_API_KEY_VARIABLE_UNIVERSAL_IDENTIFIER =\n  'ed335dda-2c2c-4740-ba3f-81edf67890fa';\n\nexport const APOLLO_PHONE_WEBHOOK_URL_VARIABLE_UNIVERSAL_IDENTIFIER =\n  'd32cfe36-b362-4521-8ae1-d05cb80f854d';\n\nexport const APOLLO_WEBHOOK_SECRET_VARIABLE_UNIVERSAL_IDENTIFIER =\n  '98d378ea-e8a7-4b8a-bf1f-e23e5b04c077';\n\nexport const APOLLO_MAX_BULK_ENRICH_VARIABLE_UNIVERSAL_IDENTIFIER =\n  '2da425fc-fffa-444f-9bcc-bbff78c637c1';\n\nexport const APOLLO_AUTO_ENRICH_COMPANIES_VARIABLE_UNIVERSAL_IDENTIFIER =\n  '8928c545-46a1-4446-a2b6-01682139bad6';\n\nexport const APOLLO_LOGIC_FUNCTION_CONSTANTS = {\n  enrichPeople: { universalIdentifier: 'a77baf5a-8664-47ea-8dd2-079688e3f2be', path: '/apollo/enrich-people' },\n  enrichPerson: { universalIdentifier: '06bc1839-9239-4de8-b189-ee54cdc5241f', path: '/apollo/enrich-person' },\n  enrichCompanies: { universalIdentifier: '896b2acb-9814-444e-9c0e-efc233614ebc', path: '/apollo/enrich-companies' },\n  enrichCompany: { universalIdentifier: '9a845649-40ea-4a59-97f9-cb22beb6fb77', path: '/apollo/enrich-company' },\n  autoEnrichCompany: { universalIdentifier: '8b5a3147-4bf5-46c2-aa8e-9e5af6a76941' },\n  postInstall: { universalIdentifier: '1b2fe555-1cd3-457e-993c-4cc8c4cacd72' },\n  phoneWebhook: { universalIdentifier: '4532acfd-77dc-4391-9427-ae219bed9e48', path: '/webhook/apollo-phone' },\n} as const;\n\nexport const APOLLO_FIELD_UNIVERSAL_IDENTIFIERS = {\n  person: {\n    apolloId: '3704636b-b293-4df8-a48a-8805e6a8091f',\n    apolloHeadline: 'a76dcdbf-6e73-4f63-b5c8-fd5de9b36e7b',\n    apolloSeniority: '9dce53b3-2caf-4ade-af8a-261429b991f7',\n    apolloDepartments: '92b4c56e-a7f9-4ebe-a78f-e1cdd46cf613',\n    apolloEmailStatus: '36ffbb70-4a97-4620-bc20-3d73c384be87',\n    apolloPhotoUrl: '4d974d8a-8c9e-45d6-aeff-5a49607b4019',\n    apolloEmploymentHistory: '3dad622b-4f3e-4ed3-b83b-663458add97d',\n    apolloPersonalEmails: 'c2c44e21-978e-4c13-ae67-0e6354b003aa',\n    apolloPhone: 'd766473e-38d5-4a8f-b454-6080a5bd88ea',\n    apolloPhoneStatus: 'bcddf586-5bc9-4e27-8798-ddfd7c28997a',\n    apolloRequestId: '81f4bc6e-f96a-4e3c-8311-dac54911ce17',\n    apolloEnrichmentStatus: '57c1a067-4f03-4ff3-bd81-23fe0cb1109b',\n    apolloLastEnrichedAt: 'ded5615f-bc7d-41a3-8965-6ab6c109da0a',\n    apolloRawPayload: '7f186737-cd22-43bb-9939-fb7848879256',\n  },\n  company: {\n    apolloId: 'd2293217-8822-4d50-bf1f-dc16238cbb60',\n    apolloIndustry: '60bf2068-a5ee-45d3-a6e5-fd8734cd04c3',\n    apolloEmployees: '134cb7a3-92d8-4f38-9799-26026d39044f',\n    apolloAnnualRevenue: '50c6a1a9-e710-4b3d-a87d-d89cfa5af43d',\n    apolloFoundedYear: 'f9c71381-6e7b-4e4b-bc5a-bad6ed75e43f',\n    apolloKeywords: 'af879dda-bbd0-408f-ac6f-50e11e8f2c53',\n    apolloTechnologies: 'd9849f05-5726-466c-92ff-ad02ddb3a538',\n    apolloTotalFunding: '0d962e01-d737-4330-9161-078421c3a5e3',\n    apolloLatestFundingStage: 'ae7824a2-839b-4e41-b872-f85e8143125e',\n    apolloLinkedinUrl: 'bac70564-38db-4efb-8afd-91753e4adeac',\n    apolloPhone: '6e889e80-c7c9-44ca-af9c-953175ff5b3c',\n    apolloLocation: '18e5b4e5-86ee-41de-99a9-f2c16a97c01f',\n    apolloHeadcountGrowth6mo: '6024a0df-a9a3-43bd-ac48-9f0864f3e5c5',\n    apolloHeadcountGrowth12mo: '6916fb0a-e440-402a-b272-24314bac4df7',\n    apolloNaicsCodes: '6a851361-37cf-4aa5-859c-3080f9eec9e8',\n    apolloEnrichmentStatus: '09dbbab3-4b06-400b-ae94-66950ef557f8',\n    apolloLastEnrichedAt: '0116d85f-43eb-4826-a344-3a475674df28',\n    apolloRawPayload: 'd31f9326-db94-4c48-8b7c-d2a5dabeb844',\n  },\n} as const;\n\nexport const APOLLO_VIEW_UNIVERSAL_IDENTIFIERS = {\n  enrichedCompanies: 'a1c0f35b-0fdd-466c-8dfb-5ec82cfd5a7e',\n  enrichedPeople: '75cd5bbb-ad41-4e42-b3a2-3b103ff4c944',\n} as const;\n\nexport const APOLLO_FRONT_COMPONENT_UNIVERSAL_IDENTIFIERS = {\n  enrichCompanies: '90cefc28-06b8-4906-839b-93e21f4c55d8',\n  enrichPeople: '41f99952-b612-4a79-8a07-4b7af6201b77',\n};\n\nexport const APOLLO_COMMAND_MENU_ITEM_UNIVERSAL_IDENTIFIERS = {\n  enrichCompanies: '66630fbd-b5d4-4c1c-8354-045848ab5a36',\n  enrichPeople: 'c1b8c22a-80b6-4142-a02c-6fa7189e4598',\n};\n\nexport const APOLLO_SELECT_OPTION_UNIVERSAL_IDENTIFIERS = {\n  personEnrichmentStatus: {\n    matched: '4a85006d-b385-414b-9819-cb938b0af0e0',\n    notFound: '7e5880eb-230b-42d9-9c03-31bfa5c6d767',\n    error: 'c043d25e-72d1-4f5b-b3f4-74d2af9821d8',\n  },\n  companyEnrichmentStatus: {\n    matched: '83878d08-22ed-4ce4-ae72-71dd9a7cfacd',\n    notFound: '58f1b921-0e50-46c2-a736-664b5de5e20d',\n    error: 'a6ead429-930c-48fe-b096-47c7717afa11',\n  },\n  seniority: {\n    owner: 'a19fdc3d-75e6-4a0d-8e7b-f9d2d214f177',\n    founder: '25311648-f73e-4873-8bbb-bcbcb7572330',\n    cSuite: '68b90894-4b71-48f8-b7c0-10911a90761f',\n    partner: '9b628d6d-edc5-4c60-a096-aa554433f7d1',\n    vp: '97bab39b-2d3a-473c-ac49-3a82fe87f79f',\n    head: '81eec4f7-a33f-4362-809c-e920c0678941',\n    director: '254c929e-ff9c-4377-90a7-d21699207813',\n    manager: '2312114c-01b9-4784-a13b-63d298e3e05e',\n    senior: '860a9f68-6c80-4906-8e55-36e7a7a3c907',\n    entry: '27bfe3f6-d789-46f4-af63-599f823e17c4',\n    intern: 'b03af194-342a-4fd1-b2a5-443f09ff817c',\n    unpaid: '70f4d88f-f7e6-40ca-a6ac-93fdbb6fd96e',\n  },\n  emailStatus: {\n    verified: '93967d65-6a5f-4540-a428-6abd43b0141e',\n    guessed: '592c83ef-4c31-4b20-9827-61a2335da6a1',\n    unavailable: 'd0a72c06-b808-4092-b568-109cf3b1f0a4',\n    bounced: '5a5968a6-6e52-46ef-976c-c2a55690ae2e',\n    pendingManualFulfillment: '741dd3f0-ca83-475e-a33c-f459f95223ce',\n  },\n  phoneStatus: {\n    none: '2226684c-c5a1-46b2-b4d2-f4887c8cba77',\n    pending: '74372233-dca6-40fd-9f76-0b1425a8fb73',\n    revealed: '2143d2f1-b6da-46b4-a4c2-d11f18219926',\n    failed: '3e9faee6-ca0c-426b-89eb-5b5db840ac86',\n  },\n} as const;\n", "import { CoreApiClient } from 'twenty-client-sdk/core';\n\nimport { personSingleEnrichmentAdapter } from 'src/logic-functions/handlers/person-single-enrichment-adapter';\nimport { runSingleEnrichment } from 'src/logic-functions/utils/run-single-enrichment';\nimport { type EnrichResult } from 'src/types/enrich-result';\nimport { type SingleEnrichInput } from 'src/types/single-enrich-input';\n\nexport const enrichPersonCore = ({\n  input,\n  client = new CoreApiClient(),\n}: {\n  input: SingleEnrichInput;\n  client?: CoreApiClient;\n}): Promise<EnrichResult> =>\n  runSingleEnrichment({\n    client,\n    input,\n    adapter: personSingleEnrichmentAdapter,\n  });\n", "import { isNonEmptyString } from '@sniptt/guards';\nimport { type CoreApiClient } from 'twenty-client-sdk/core';\n\nimport { ApolloOperationError } from 'src/logic-functions/errors/apollo-operation-error';\nimport { buildCompanyCreateData } from 'src/logic-functions/utils/build-company-create-data';\nimport { buildCompanyMatchKeys } from 'src/logic-functions/utils/build-company-match-keys';\nimport { findCompanyId } from 'src/logic-functions/utils/find-company-id';\nimport { type CompanyIdByMatchKeyCache } from 'src/types/company-id-by-match-key-cache';\nimport { type CompanyMatchKeys } from 'src/types/company-match-keys';\nimport { type ApolloPersonData } from 'src/types/apollo-person-data';\nimport { isDefined } from 'src/utils/is-defined';\nimport { isUniqueViolationError } from 'src/utils/is-unique-violation-error';\n\ntype CreateCompanyResult = { createCompany?: { id?: string } };\n\nconst findOrCreateUncachedCompany = async ({\n  client,\n  personData,\n  companyMatchKeys,\n}: {\n  client: CoreApiClient;\n  personData: ApolloPersonData;\n  companyMatchKeys: CompanyMatchKeys;\n}): Promise<string | undefined> => {\n  const existingCompanyId = await findCompanyId({\n    client,\n    matchKeys: companyMatchKeys,\n  });\n  if (isDefined(existingCompanyId)) {\n    return existingCompanyId;\n  }\n\n  const canCreateNewCompany =\n    isNonEmptyString(companyMatchKeys.name) ||\n    isNonEmptyString(companyMatchKeys.website);\n\n  if (!canCreateNewCompany) {\n    return undefined;\n  }\n\n  try {\n    const createCompanyResult = (await client.mutation({\n      createCompany: {\n        __args: { data: buildCompanyCreateData(personData) },\n        id: true,\n      },\n    })) as CreateCompanyResult;\n\n    const createdCompanyId = createCompanyResult.createCompany?.id;\n\n    if (!isDefined(createdCompanyId)) {\n      throw new ApolloOperationError('Failed to create company: no id returned.');\n    }\n\n    return createdCompanyId;\n  } catch (createCompanyError) {\n    if (!isUniqueViolationError(createCompanyError)) {\n      throw createCompanyError;\n    }\n\n    const raceWinnerCompanyId = await findCompanyId({\n      client,\n      matchKeys: companyMatchKeys,\n    });\n    if (isDefined(raceWinnerCompanyId)) {\n      return raceWinnerCompanyId;\n    }\n\n    throw createCompanyError;\n  }\n};\n\nexport const findOrCreateCurrentCompany = async ({\n  client,\n  personData,\n  companyIdByMatchKeyCache,\n}: {\n  client: CoreApiClient;\n  personData: ApolloPersonData;\n  companyIdByMatchKeyCache: CompanyIdByMatchKeyCache;\n}): Promise<string | undefined> => {\n  const companyMatchKeys = buildCompanyMatchKeys(personData);\n\n  const hasAnyCompanyMatchKey =\n    isNonEmptyString(companyMatchKeys.apolloId) ||\n    isNonEmptyString(companyMatchKeys.website) ||\n    isNonEmptyString(companyMatchKeys.linkedinUrl) ||\n    isNonEmptyString(companyMatchKeys.name);\n\n  if (!hasAnyCompanyMatchKey) {\n    return undefined;\n  }\n\n  const companyMatchKeyCacheKey = JSON.stringify(companyMatchKeys);\n  if (companyIdByMatchKeyCache.has(companyMatchKeyCacheKey)) {\n    return companyIdByMatchKeyCache.get(companyMatchKeyCacheKey);\n  }\n\n  const resolvedCompanyId = await findOrCreateUncachedCompany({\n    client,\n    personData,\n    companyMatchKeys,\n  });\n\n  companyIdByMatchKeyCache.set(companyMatchKeyCacheKey, resolvedCompanyId);\n\n  return resolvedCompanyId;\n};\n", "import { type ApolloErrorCode } from 'src/logic-functions/errors/apollo-error-code';\n\nexport abstract class ApolloError extends Error {\n  readonly code: ApolloErrorCode;\n\n  constructor({ message, code }: { message: string; code: ApolloErrorCode }) {\n    super(message);\n    Object.setPrototypeOf(this, new.target.prototype);\n    this.name = new.target.name;\n    this.code = code;\n  }\n}\n", "export const ApolloErrorCode = {\n  CONFIGURATION: 'CONFIGURATION',\n  INVALID_INPUT: 'INVALID_INPUT',\n  RECORD_NOT_FOUND: 'RECORD_NOT_FOUND',\n  OPERATION_FAILED: 'OPERATION_FAILED',\n} as const;\n\nexport type ApolloErrorCode = (typeof ApolloErrorCode)[keyof typeof ApolloErrorCode];\n", "import { ApolloError } from 'src/logic-functions/errors/apollo-error';\nimport { ApolloErrorCode } from 'src/logic-functions/errors/apollo-error-code';\n\nexport class ApolloOperationError extends ApolloError {\n  constructor(message: string) {\n    super({ message, code: ApolloErrorCode.OPERATION_FAILED });\n  }\n}\n", "import { isNonEmptyString, isString } from '@sniptt/guards';\n\nexport const toText = (value: unknown): string | undefined => {\n  if (!isString(value)) {\n    return undefined;\n  }\n\n  const trimmed = value.trim();\n\n  return isNonEmptyString(trimmed) ? trimmed : undefined;\n};\n", "import { isNull, isUndefined } from '@sniptt/guards';\n\nexport const isDefined = <T>(\n  value: T | null | undefined,\n): value is NonNullable<T> => !isUndefined(value) && !isNull(value);\n", "import { toText } from 'src/logic-functions/utils/to-text';\nimport { type LinksValue } from 'src/types/links-value';\nimport { isDefined } from 'src/utils/is-defined';\n\nconst ALLOWED_SCHEMES = new Set(['http:', 'https:']);\nconst SCHEME_PREFIX_REGEX = /^[a-z][a-z0-9+.-]*:/i;\n\n// Defense-in-depth: accept bare hosts/paths and http(s) URLs, but drop any\n// explicit non-http(s) scheme (javascript:, data:, etc.) before persisting.\nconst hasAllowedScheme = (value: string): boolean => {\n  const schemeMatch = value.match(SCHEME_PREFIX_REGEX);\n  if (schemeMatch === null) {\n    return true;\n  }\n\n  const remainder = value.slice(schemeMatch[0].length);\n  if (!remainder.startsWith('//')) {\n    // A dotted token before the colon is a host:port (e.g. \"example.com:8080\"),\n    // not a scheme; a dot-free token is a real scheme (mailto:, javascript:).\n    return schemeMatch[0].slice(0, -1).includes('.');\n  }\n\n  return ALLOWED_SCHEMES.has(schemeMatch[0].toLowerCase());\n};\n\nexport const buildLinks = ({\n  url,\n  label,\n}: {\n  url: unknown;\n  label?: unknown;\n}): LinksValue | undefined => {\n  const primaryLinkUrl = toText(url);\n\n  if (!isDefined(primaryLinkUrl) || !hasAllowedScheme(primaryLinkUrl)) {\n    return undefined;\n  }\n\n  return {\n    primaryLinkUrl,\n    primaryLinkLabel: toText(label) ?? '',\n    secondaryLinks: null,\n  };\n};\n", "import { toText } from 'src/logic-functions/utils/to-text';\nimport { isDefined } from 'src/utils/is-defined';\n\nconst SCHEME_REGEX = /^[a-z][a-z0-9+.-]*:\\/\\//;\nconst LEADING_WWW_REGEX = /^www\\./;\n\nexport const normalizeDomain = (\n  rawDomainValue: unknown,\n): string | undefined => {\n  const domainText = toText(rawDomainValue);\n  if (!isDefined(domainText)) {\n    return undefined;\n  }\n\n  const bareHost = domainText\n    .toLowerCase()\n    .replace(SCHEME_REGEX, '')\n    .split('/')[0]\n    .replace(LEADING_WWW_REGEX, '');\n\n  return bareHost === '' ? undefined : bareHost;\n};\n", "import { toText } from 'src/logic-functions/utils/to-text';\nimport { isDefined } from 'src/utils/is-defined';\n\nconst SCHEME_REGEX = /^[a-z][a-z0-9+.-]*:\\/\\//;\nconst LEADING_WWW_REGEX = /^www\\./;\nconst TRAILING_SLASHES_REGEX = /\\/+$/;\n\nexport const normalizeLinkedinUrl = (\n  rawLinkedinUrl: unknown,\n): string | undefined => {\n  const linkedinUrlText = toText(rawLinkedinUrl);\n  if (!isDefined(linkedinUrlText)) {\n    return undefined;\n  }\n\n  const canonicalUrlWithPath = linkedinUrlText\n    .toLowerCase()\n    .replace(SCHEME_REGEX, '')\n    .replace(LEADING_WWW_REGEX, '')\n    .replace(TRAILING_SLASHES_REGEX, '');\n\n  return canonicalUrlWithPath === '' ? undefined : canonicalUrlWithPath;\n};\n", "import { isUndefined } from '@sniptt/guards';\n\nexport const pruneUndefined = <TValue>(\n  record: Record<string, TValue | undefined>,\n): Record<string, TValue> => {\n  const prunedRecord: Record<string, TValue> = {};\n\n  for (const [key, value] of Object.entries(record)) {\n    if (!isUndefined(value)) {\n      prunedRecord[key] = value;\n    }\n  }\n\n  return prunedRecord;\n};\n", "import { buildLinks } from 'src/logic-functions/utils/build-links';\nimport { normalizeDomain } from 'src/logic-functions/utils/normalize-domain';\nimport { normalizeLinkedinUrl } from 'src/logic-functions/utils/normalize-linkedin-url';\nimport { toText } from 'src/logic-functions/utils/to-text';\nimport { type ApolloPersonData } from 'src/types/apollo-person-data';\nimport { pruneUndefined } from 'src/utils/prune-undefined';\n\nexport const buildCompanyCreateData = (\n  personData: ApolloPersonData,\n): Record<string, unknown> => {\n  const organization = personData.organization ?? {};\n\n  return pruneUndefined<unknown>({\n    name: toText(organization.name) ?? toText(personData.organization_name),\n    domainName: buildLinks({\n      url: normalizeDomain(\n        organization.primary_domain ?? organization.website_url,\n      ),\n    }),\n    linkedinLink: buildLinks({\n      url: normalizeLinkedinUrl(organization.linkedin_url),\n    }),\n    apolloId: toText(organization.id) ?? toText(personData.organization_id),\n    apolloIndustry: toText(organization.industry),\n  });\n};\n", "import { normalizeDomain } from 'src/logic-functions/utils/normalize-domain';\nimport { normalizeLinkedinUrl } from 'src/logic-functions/utils/normalize-linkedin-url';\nimport { toText } from 'src/logic-functions/utils/to-text';\nimport { type ApolloPersonData } from 'src/types/apollo-person-data';\nimport { type CompanyMatchKeys } from 'src/types/company-match-keys';\nimport { pruneUndefined } from 'src/utils/prune-undefined';\n\nexport const buildCompanyMatchKeys = (\n  personData: ApolloPersonData,\n): CompanyMatchKeys => {\n  const organization = personData.organization ?? {};\n\n  return pruneUndefined({\n    apolloId: toText(organization.id) ?? toText(personData.organization_id),\n    website: normalizeDomain(\n      organization.primary_domain ?? organization.website_url,\n    ),\n    linkedinUrl: normalizeLinkedinUrl(organization.linkedin_url),\n    name: toText(organization.name) ?? toText(personData.organization_name),\n  });\n};\n", "import { isNonEmptyString } from '@sniptt/guards';\nimport { type CoreApiClient } from 'twenty-client-sdk/core';\n\nimport { findCompanyIdByFilter } from 'src/logic-functions/utils/find-company-id-by-filter';\nimport { type CompanyMatchKeys } from 'src/types/company-match-keys';\nimport { isDefined } from 'src/utils/is-defined';\n\nexport const findCompanyId = async ({\n  client,\n  matchKeys,\n}: {\n  client: CoreApiClient;\n  matchKeys: CompanyMatchKeys;\n}): Promise<string | undefined> => {\n  const { apolloId, website, linkedinUrl, name } = matchKeys;\n\n  if (isNonEmptyString(apolloId)) {\n    const matchById = await findCompanyIdByFilter({\n      client,\n      filter: { apolloId: { eq: apolloId } },\n    });\n    if (isDefined(matchById)) {\n      return matchById;\n    }\n  }\n\n  if (isNonEmptyString(website)) {\n    const matchByDomain = await findCompanyIdByFilter({\n      client,\n      filter: { domainName: { primaryLinkUrl: { eq: website } } },\n    });\n    if (isDefined(matchByDomain)) {\n      return matchByDomain;\n    }\n  }\n\n  if (isNonEmptyString(linkedinUrl)) {\n    const matchByLinkedin = await findCompanyIdByFilter({\n      client,\n      filter: { linkedinLink: { primaryLinkUrl: { eq: linkedinUrl } } },\n    });\n    if (isDefined(matchByLinkedin)) {\n      return matchByLinkedin;\n    }\n  }\n\n  if (isNonEmptyString(name)) {\n    const matchByName = await findCompanyIdByFilter({\n      client,\n      filter: { name: { eq: name } },\n      requireUnique: true,\n    });\n    if (isDefined(matchByName)) {\n      return matchByName;\n    }\n  }\n\n  return undefined;\n};\n", "import { type CoreApiClient } from 'twenty-client-sdk/core';\n\ntype CompaniesConnection = { edges?: { node: { id: string } }[] };\n\nexport const findCompanyIdByFilter = async ({\n  client,\n  filter,\n  requireUnique = false,\n}: {\n  client: CoreApiClient;\n  filter: Record<string, unknown>;\n  requireUnique?: boolean;\n}): Promise<string | undefined> => {\n  const result = (await client.query({\n    companies: {\n      __args: { filter, first: requireUnique ? 2 : 1 },\n      edges: { node: { id: true } },\n    },\n  })) as { companies?: CompaniesConnection };\n\n  const edges = result.companies?.edges ?? [];\n\n  if (requireUnique && edges.length !== 1) {\n    return undefined;\n  }\n\n  return edges[0]?.node?.id;\n};\n", "import { isObject } from '@sniptt/guards';\n\nimport { isDefined } from 'src/utils/is-defined';\n\nconst DUPLICATE_VIOLATION_PHRASES = [\n  'duplicate',\n  'unique constraint',\n  'uniqueness',\n  'already exists',\n  'is already in use',\n  'violates unique',\n  'duplicate_entry_detected',\n];\n\nconst MAX_ERROR_TRAVERSAL_DEPTH = 4;\n\nconst stringifyWithoutThrowingOnCycles = (value: unknown): string => {\n  try {\n    return JSON.stringify(value) ?? '';\n  } catch {\n    return '';\n  }\n};\n\nconst collectErrorText = (error: unknown, depth = 0): string => {\n  if (!isDefined(error) || depth > MAX_ERROR_TRAVERSAL_DEPTH) {\n    return '';\n  }\n  if (typeof error === 'string') {\n    return error;\n  }\n  if (typeof error !== 'object') {\n    return String(error);\n  }\n\n  const errorObject = error as Record<string, unknown>;\n  const textFragments: string[] = [];\n\n  if (typeof errorObject.message === 'string') {\n    textFragments.push(errorObject.message);\n  }\n\n  if (Array.isArray(errorObject.graphQLErrors)) {\n    for (const graphQLError of errorObject.graphQLErrors) {\n      textFragments.push(collectErrorText(graphQLError, depth + 1));\n    }\n  }\n\n  if (isObject(errorObject.extensions)) {\n    const extensions = errorObject.extensions as Record<string, unknown>;\n    if (typeof extensions.code === 'string') {\n      textFragments.push(extensions.code);\n    }\n    if (typeof extensions.userFriendlyMessage === 'string') {\n      textFragments.push(extensions.userFriendlyMessage);\n    }\n  }\n\n  if (isDefined(errorObject.cause)) {\n    textFragments.push(collectErrorText(errorObject.cause, depth + 1));\n  }\n\n  textFragments.push(stringifyWithoutThrowingOnCycles(error));\n\n  return textFragments.join(' ');\n};\n\nexport const isUniqueViolationError = (error: unknown): boolean => {\n  const lowerCaseErrorText = collectErrorText(error).toLowerCase();\n\n  return DUPLICATE_VIOLATION_PHRASES.some((phrase) =>\n    lowerCaseErrorText.includes(phrase),\n  );\n};\n", "import { isObject } from '@sniptt/guards';\n\nimport { isEmptyText } from 'src/logic-functions/utils/is-empty-text';\n\nexport const isEmptyEmails = (value: unknown): boolean => {\n  if (!isObject(value)) {\n    return true;\n  }\n\n  const record = value as Record<string, unknown>;\n\n  return isEmptyText(record.primaryEmail);\n};\n", "import { toText } from 'src/logic-functions/utils/to-text';\nimport { isDefined } from 'src/utils/is-defined';\n\nexport const isEmptyText = (value: unknown): boolean => !isDefined(toText(value));\n", "import { isObject } from '@sniptt/guards';\n\nimport { isEmptyText } from 'src/logic-functions/utils/is-empty-text';\n\nexport const isEmptyFullName = (value: unknown): boolean => {\n  if (!isObject(value)) {\n    return true;\n  }\n\n  const record = value as Record<string, unknown>;\n\n  return isEmptyText(record.firstName) && isEmptyText(record.lastName);\n};\n", "import { isObject } from '@sniptt/guards';\n\nimport { isEmptyText } from 'src/logic-functions/utils/is-empty-text';\n\nexport const isEmptyLinks = (value: unknown): boolean => {\n  if (!isObject(value)) {\n    return true;\n  }\n\n  const record = value as Record<string, unknown>;\n\n  return isEmptyText(record.primaryLinkUrl);\n};\n", "import { isObject } from '@sniptt/guards';\n\nimport { isEmptyText } from 'src/logic-functions/utils/is-empty-text';\n\nexport const isEmptyPhones = (value: unknown): boolean => {\n  if (!isObject(value)) {\n    return true;\n  }\n\n  const record = value as Record<string, unknown>;\n\n  return isEmptyText(record.primaryPhoneNumber);\n};\n", "import { isArray } from '@sniptt/guards';\n\nimport { EMAIL_STATUS_OPTIONS } from 'src/constants/email-status-options';\nimport { SENIORITY_OPTIONS } from 'src/constants/seniority-options';\nimport { buildAllowedValues } from 'src/logic-functions/utils/build-allowed-values';\nimport { buildEmails } from 'src/logic-functions/utils/build-emails';\nimport { buildFullName } from 'src/logic-functions/utils/build-full-name';\nimport { buildLinks } from 'src/logic-functions/utils/build-links';\nimport { normalizeLinkedinUrl } from 'src/logic-functions/utils/normalize-linkedin-url';\nimport { pickSelect } from 'src/logic-functions/utils/pick-select';\nimport { toJsonArray } from 'src/logic-functions/utils/to-json-array';\nimport { toStringArray } from 'src/logic-functions/utils/to-string-array';\nimport { toText } from 'src/logic-functions/utils/to-text';\nimport { type ApolloPersonData } from 'src/types/apollo-person-data';\nimport { type MappedRecord } from 'src/types/mapped-record';\nimport { pruneUndefined } from 'src/utils/prune-undefined';\n\nconst SENIORITY_VALUES = buildAllowedValues(SENIORITY_OPTIONS);\nconst EMAIL_STATUS_VALUES = buildAllowedValues(EMAIL_STATUS_OPTIONS);\n\nexport const mapPerson = (personData: ApolloPersonData): MappedRecord => {\n  const personalEmails = isArray(personData.personal_emails)\n    ? personData.personal_emails\n    : [];\n\n  const standard = pruneUndefined({\n    name: buildFullName({\n      firstName: personData.first_name,\n      lastName: personData.last_name,\n      fullName: personData.name,\n    }),\n    jobTitle: toText(personData.title),\n    linkedinLink: buildLinks({\n      url: normalizeLinkedinUrl(personData.linkedin_url),\n    }),\n    emails: buildEmails([personData.email, ...personalEmails]),\n    city: toText(personData.city),\n  });\n\n  const apollo = pruneUndefined({\n    apolloId: toText(personData.id),\n    apolloHeadline: toText(personData.headline),\n    apolloSeniority: pickSelect({\n      raw: personData.seniority,\n      allowedValues: SENIORITY_VALUES,\n    }),\n    apolloDepartments: toStringArray(personData.departments),\n    apolloEmailStatus: pickSelect({\n      raw: personData.email_status,\n      allowedValues: EMAIL_STATUS_VALUES,\n    }),\n    apolloPhotoUrl: toText(personData.photo_url),\n    apolloEmploymentHistory: toJsonArray(personData.employment_history),\n    apolloPersonalEmails: toStringArray(personData.personal_emails),\n  });\n\n  return { standard, apollo };\n};\n", "import { type SelectOptionMeta } from 'src/types/select-option-meta';\n\n// Apollo person `email_status` values.\nexport const EMAIL_STATUS_OPTIONS: readonly SelectOptionMeta[] = [\n  { key: 'verified', value: 'VERIFIED', label: 'Verified', color: 'green', position: 0 },\n  { key: 'guessed', value: 'GUESSED', label: 'Guessed', color: 'yellow', position: 1 },\n  { key: 'unavailable', value: 'UNAVAILABLE', label: 'Unavailable', color: 'gray', position: 2 },\n  { key: 'bounced', value: 'BOUNCED', label: 'Bounced', color: 'red', position: 3 },\n  {\n    key: 'pendingManualFulfillment',\n    value: 'PENDING_MANUAL_FULFILLMENT',\n    label: 'Pending Manual Fulfillment',\n    color: 'orange',\n    position: 4,\n  },\n];\n", "import { type SelectOptionMeta } from 'src/types/select-option-meta';\n\n// Apollo person `seniority` values (lowercase in the API, normalized to\n// SCREAMING_SNAKE_CASE for storage by normalizeEnumValue).\nexport const SENIORITY_OPTIONS: readonly SelectOptionMeta[] = [\n  { key: 'owner', value: 'OWNER', label: 'Owner', color: 'red', position: 0 },\n  { key: 'founder', value: 'FOUNDER', label: 'Founder', color: 'purple', position: 1 },\n  { key: 'cSuite', value: 'C_SUITE', label: 'C-Suite', color: 'blue', position: 2 },\n  { key: 'partner', value: 'PARTNER', label: 'Partner', color: 'sky', position: 3 },\n  { key: 'vp', value: 'VP', label: 'VP', color: 'green', position: 4 },\n  { key: 'head', value: 'HEAD', label: 'Head', color: 'turquoise', position: 5 },\n  { key: 'director', value: 'DIRECTOR', label: 'Director', color: 'orange', position: 6 },\n  { key: 'manager', value: 'MANAGER', label: 'Manager', color: 'pink', position: 7 },\n  { key: 'senior', value: 'SENIOR', label: 'Senior', color: 'yellow', position: 8 },\n  { key: 'entry', value: 'ENTRY', label: 'Entry', color: 'cyan', position: 9 },\n  { key: 'intern', value: 'INTERN', label: 'Intern', color: 'gray', position: 10 },\n  { key: 'unpaid', value: 'UNPAID', label: 'Unpaid', color: 'brown', position: 11 },\n];\n", "import { type SelectOptionMeta } from 'src/types/select-option-meta';\n\nexport const buildAllowedValues = (\n  options: readonly SelectOptionMeta[],\n): Set<string> => new Set(options.map((option) => option.value));\n", "import { isNonEmptyArray } from '@sniptt/guards';\n\nimport { toText } from 'src/logic-functions/utils/to-text';\nimport { type EmailsValue } from 'src/types/emails-value';\nimport { isDefined } from 'src/utils/is-defined';\n\n// Simple sanity check to drop obviously malformed addresses before persisting.\nconst EMAIL_REGEX = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\nexport const buildEmails = (\n  candidates: (string | null | undefined)[],\n): EmailsValue | undefined => {\n  const emails: string[] = [];\n  const seenEmailKeys = new Set<string>();\n\n  for (const candidate of candidates) {\n    const email = toText(candidate);\n    if (!isDefined(email) || !EMAIL_REGEX.test(email)) {\n      continue;\n    }\n\n    const emailKey = email.toLowerCase();\n    if (!seenEmailKeys.has(emailKey)) {\n      seenEmailKeys.add(emailKey);\n      emails.push(email);\n    }\n  }\n\n  if (!isNonEmptyArray(emails)) {\n    return undefined;\n  }\n\n  return {\n    primaryEmail: emails[0],\n    additionalEmails: emails.length > 1 ? emails.slice(1) : null,\n  };\n};\n", "const NAME_BOUNDARY_REGEX = /(^|[\\s'-])(\\p{L})/gu;\n\nexport const capitalizeName = (value: string): string =>\n  value.replace(\n    NAME_BOUNDARY_REGEX,\n    (_match, boundary: string, letter: string) =>\n      `${boundary}${letter.toUpperCase()}`,\n  );\n", "import { capitalizeName } from 'src/logic-functions/utils/capitalize-name';\nimport { toText } from 'src/logic-functions/utils/to-text';\nimport { type FullNameValue } from 'src/types/full-name-value';\nimport { isDefined } from 'src/utils/is-defined';\n\nconst WHITESPACE_REGEX = /\\s+/;\n\nexport const buildFullName = ({\n  firstName,\n  lastName,\n  fullName,\n}: {\n  firstName: unknown;\n  lastName: unknown;\n  fullName: unknown;\n}): FullNameValue | undefined => {\n  const first = toText(firstName);\n  const last = toText(lastName);\n\n  if (isDefined(first) || isDefined(last)) {\n    return {\n      firstName: isDefined(first) ? capitalizeName(first) : '',\n      lastName: isDefined(last) ? capitalizeName(last) : '',\n    };\n  }\n\n  const full = toText(fullName);\n  if (!isDefined(full)) {\n    return undefined;\n  }\n\n  const [firstNameToken, ...remainingNameTokens] = full.split(WHITESPACE_REGEX);\n\n  return {\n    firstName: capitalizeName(firstNameToken),\n    lastName: capitalizeName(remainingNameTokens.join(' ')),\n  };\n};\n", "import { isNonEmptyString, isString } from '@sniptt/guards';\n\nimport { isDefined } from 'src/utils/is-defined';\nimport { normalizeEnumValue } from 'src/utils/normalize-enum-value';\n\nexport const pickSelect = ({\n  raw,\n  allowedValues,\n  transform = normalizeEnumValue,\n}: {\n  raw: unknown;\n  allowedValues: Set<string>;\n  transform?: (value: string) => string | undefined;\n}): string | undefined => {\n  if (!isString(raw)) {\n    return undefined;\n  }\n\n  const trimmed = raw.trim();\n  if (!isNonEmptyString(trimmed)) {\n    return undefined;\n  }\n\n  const candidate = transform(trimmed);\n  if (!isDefined(candidate) || !allowedValues.has(candidate)) {\n    return undefined;\n  }\n\n  return candidate;\n};\n", "const DIACRITICS_REGEX = new RegExp('[\\\\u0300-\\\\u036f]', 'g');\nconst NON_ALPHANUMERIC_RUN_REGEX = /[^A-Z0-9]+/g;\nconst LEADING_OR_TRAILING_UNDERSCORE_REGEX = /^_+|_+$/g;\nconst LEADING_DIGIT_REGEX = /^(\\d)/;\n\nexport const normalizeEnumValue = (rawEnumValue: string): string => {\n  const withoutDiacritics = rawEnumValue\n    .normalize('NFKD')\n    .replace(DIACRITICS_REGEX, '');\n  const upperCased = withoutDiacritics.toUpperCase();\n  const underscored = upperCased.replace(NON_ALPHANUMERIC_RUN_REGEX, '_');\n  const trimmed = underscored.replace(LEADING_OR_TRAILING_UNDERSCORE_REGEX, '');\n\n  return trimmed.replace(LEADING_DIGIT_REGEX, '_$1');\n};\n", "import { isNonEmptyArray } from '@sniptt/guards';\n\nexport const toJsonArray = (value: unknown): unknown[] | undefined =>\n  isNonEmptyArray(value) ? value : undefined;\n", "import { isArray, isNonEmptyArray } from '@sniptt/guards';\n\nimport { toText } from 'src/logic-functions/utils/to-text';\nimport { isDefined } from 'src/utils/is-defined';\n\nexport const toStringArray = (value: unknown): string[] | undefined => {\n  if (!isArray(value)) {\n    return undefined;\n  }\n\n  const uniqueStrings: string[] = [];\n  const seenLowercaseValues = new Set<string>();\n\n  for (const entry of value) {\n    const stringValue = toText(entry);\n    if (!isDefined(stringValue)) {\n      continue;\n    }\n\n    const lowercaseValue = stringValue.toLowerCase();\n    if (!seenLowercaseValues.has(lowercaseValue)) {\n      seenLowercaseValues.add(lowercaseValue);\n      uniqueStrings.push(stringValue);\n    }\n  }\n\n  return isNonEmptyArray(uniqueStrings) ? uniqueStrings : undefined;\n};\n", "import { isDefined } from 'src/utils/is-defined';\n\nexport const pickWritableStandard = ({\n  standard,\n  current,\n  emptyChecks,\n  overrideExistingValues,\n}: {\n  standard: Record<string, unknown>;\n  current: Record<string, unknown>;\n  emptyChecks: Record<string, (current: unknown) => boolean>;\n  overrideExistingValues?: boolean;\n}): Record<string, unknown> => {\n  const writableFields: Record<string, unknown> = {};\n\n  for (const [fieldName, fieldValue] of Object.entries(standard)) {\n    const isEmptyCheck = emptyChecks[fieldName];\n    if (\n      isDefined(isEmptyCheck) &&\n      (overrideExistingValues === true || isEmptyCheck(current[fieldName]))\n    ) {\n      writableFields[fieldName] = fieldValue;\n    }\n  }\n\n  return writableFields;\n};\n", "import { type CoreApiClient } from 'twenty-client-sdk/core';\n\nimport { findOrCreateCurrentCompany } from 'src/logic-functions/utils/find-or-create-current-company';\nimport { isEmptyEmails } from 'src/logic-functions/utils/is-empty-emails';\nimport { isEmptyFullName } from 'src/logic-functions/utils/is-empty-full-name';\nimport { isEmptyLinks } from 'src/logic-functions/utils/is-empty-links';\nimport { isEmptyPhones } from 'src/logic-functions/utils/is-empty-phones';\nimport { isEmptyText } from 'src/logic-functions/utils/is-empty-text';\nimport { mapPerson } from 'src/logic-functions/utils/map-person';\nimport { pickWritableStandard } from 'src/logic-functions/utils/pick-writable-standard';\nimport { toText } from 'src/logic-functions/utils/to-text';\nimport { type ApolloPersonData } from 'src/types/apollo-person-data';\nimport { type CompanyIdByMatchKeyCache } from 'src/types/company-id-by-match-key-cache';\nimport { type PersonNode } from 'src/types/person-node';\nimport { isDefined } from 'src/utils/is-defined';\nimport { pruneUndefined } from 'src/utils/prune-undefined';\n\nconst PERSON_EMPTY_CHECKS = {\n  name: isEmptyFullName,\n  emails: isEmptyEmails,\n  phones: isEmptyPhones,\n  jobTitle: isEmptyText,\n  linkedinLink: isEmptyLinks,\n};\n\nexport const buildPersonMatchedData = async ({\n  client,\n  node,\n  outcome,\n  enrichedAt,\n  companyIdByMatchKeyCache,\n  overrideExistingValues,\n  shouldPersist,\n}: {\n  client: CoreApiClient;\n  node: PersonNode;\n  outcome: { data: ApolloPersonData; requestId?: string };\n  enrichedAt: string;\n  companyIdByMatchKeyCache: CompanyIdByMatchKeyCache;\n  overrideExistingValues: boolean;\n  shouldPersist: boolean;\n}): Promise<{\n  mappedData: Record<string, unknown>;\n  persistData: Record<string, unknown>;\n}> => {\n  const mapped = mapPerson(outcome.data);\n  const mappedData = pruneUndefined({ ...mapped.standard, ...mapped.apollo });\n\n  if (!shouldPersist) {\n    return { mappedData, persistData: {} };\n  }\n\n  const writableStandard = pickWritableStandard({\n    standard: mapped.standard,\n    current: node as unknown as Record<string, unknown>,\n    emptyChecks: PERSON_EMPTY_CHECKS,\n    overrideExistingValues,\n  });\n\n  const currentCompanyId = isDefined(node.company?.id)\n    ? undefined\n    : await findOrCreateCurrentCompany({\n        client,\n        personData: outcome.data,\n        companyIdByMatchKeyCache,\n      });\n\n  // A request id means an async phone reveal is in flight; the phone number is\n  // filled in later by the apollo-phone-webhook logic function.\n  const phoneRevealRequestId = toText(outcome.requestId);\n\n  const persistData = pruneUndefined({\n    ...writableStandard,\n    ...mapped.apollo,\n    companyId: currentCompanyId,\n    apolloRawPayload: outcome.data,\n    apolloLastEnrichedAt: enrichedAt,\n    apolloEnrichmentStatus: 'MATCHED',\n    apolloRequestId: phoneRevealRequestId,\n    apolloPhoneStatus: isDefined(phoneRevealRequestId) ? 'PENDING' : undefined,\n  });\n\n  return { mappedData, persistData };\n};\n", "import { isArray } from '@sniptt/guards';\n\nimport { buildApolloPersonDetail } from 'src/logic-functions/utils/build-apollo-person-detail';\nimport { buildApolloRevealConfig } from 'src/logic-functions/utils/build-apollo-reveal-config';\nimport { isApolloPersonMatched } from 'src/logic-functions/utils/is-apollo-matched';\nimport { postApolloBulkEnrich } from 'src/logic-functions/utils/post-apollo-enrich';\nimport { type ApolloEnrichResult } from 'src/types/apollo-enrich-result';\nimport { type ApolloPersonData } from 'src/types/apollo-person-data';\nimport { type ApolloPersonEnrichParams } from 'src/types/apollo-person-enrich-params';\n\n// Apollo /people/bulk_match accepts at most 10 detail entries per request.\nexport const enrichPeople = (\n  params: ApolloPersonEnrichParams[],\n): Promise<ApolloEnrichResult<ApolloPersonData>[]> =>\n  postApolloBulkEnrich<ApolloPersonData>({\n    path: '/people/bulk_match',\n    body: {\n      details: params.map(buildApolloPersonDetail),\n      ...buildApolloRevealConfig({ includePhoneReveal: false }),\n    },\n    count: params.length,\n    extractList: (json) => (isArray(json.matches) ? json.matches : []),\n    isMatched: isApolloPersonMatched,\n  });\n", "import { type ApolloPersonEnrichParams } from 'src/types/apollo-person-enrich-params';\nimport { pruneUndefined } from 'src/utils/prune-undefined';\n\n// Maps our internal match params to an Apollo /people/match detail object.\nexport const buildApolloPersonDetail = (\n  entry: ApolloPersonEnrichParams,\n): Record<string, unknown> =>\n  pruneUndefined({\n    id: entry.apolloId,\n    name: entry.name,\n    email: entry.email,\n    organization_name: entry.organizationName,\n    domain: entry.domain,\n    linkedin_url: entry.linkedinUrl,\n  });\n", "import { toText } from 'src/logic-functions/utils/to-text';\n\n// Apollo's async phone reveal POSTs its result to a publicly reachable webhook.\n// TODO: the app cannot infer its own public base URL at runtime, so the workspace\n// admin must set APOLLO_PHONE_WEBHOOK_URL to the public URL that resolves to this\n// app's phone webhook httpRoute (APOLLO_LOGIC_FUNCTION_CONSTANTS.phoneWebhook.path,\n// i.e. `<public-app-base>/webhook/apollo-phone`). When unset, sync enrichment still\n// runs fully and only the async phone reveal is skipped.\nexport const getApolloPhoneWebhookUrl = (): string | undefined =>\n  toText(process.env.APOLLO_PHONE_WEBHOOK_URL);\n", "import { getApolloPhoneWebhookUrl } from 'src/logic-functions/utils/get-apollo-phone-webhook-url';\nimport { isDefined } from 'src/utils/is-defined';\n\n// Reveal flags for /people/match and /people/bulk_match. Personal emails are\n// returned synchronously and are always safe to request. Phone numbers are only\n// revealed asynchronously via a batch-level webhook that returns a single\n// request_id, so `reveal_phone_number` MUST only be requested on the single\n// /people/match path (`includePhoneReveal: true`) where that one request_id maps\n// to exactly one Person. The bulk path passes `includePhoneReveal: false` so it\n// never requests phone reveal nor a webhook_url.\nexport const buildApolloRevealConfig = ({\n  includePhoneReveal,\n}: {\n  includePhoneReveal: boolean;\n}): Record<string, unknown> => {\n  const webhookUrl = getApolloPhoneWebhookUrl();\n\n  if (!includePhoneReveal || !isDefined(webhookUrl)) {\n    return { reveal_personal_emails: true };\n  }\n\n  return {\n    reveal_personal_emails: true,\n    reveal_phone_number: true,\n    webhook_url: webhookUrl,\n  };\n};\n", "import { isObject } from '@sniptt/guards';\n\nimport { toText } from 'src/logic-functions/utils/to-text';\nimport { isDefined } from 'src/utils/is-defined';\n\n// Apollo returns HTTP 200 even when nothing matched, with a mostly-null entity\n// (an `id` may still be present). Treat as matched only when real data exists.\nexport const isApolloPersonMatched = (person: unknown): boolean => {\n  if (!isObject(person)) {\n    return false;\n  }\n\n  const record = person as Record<string, unknown>;\n\n  return (\n    isDefined(toText(record.name)) ||\n    isDefined(toText(record.first_name)) ||\n    isDefined(toText(record.last_name)) ||\n    isDefined(toText(record.email)) ||\n    isDefined(toText(record.title))\n  );\n};\n\nexport const isApolloOrganizationMatched = (organization: unknown): boolean => {\n  if (!isObject(organization)) {\n    return false;\n  }\n\n  const record = organization as Record<string, unknown>;\n\n  return (\n    isDefined(toText(record.name)) || isDefined(toText(record.primary_domain))\n  );\n};\n", "import { isObject } from '@sniptt/guards';\n\nimport { apolloFetch } from 'src/logic-functions/utils/apollo-fetch';\nimport { type ApolloEnrichResult } from 'src/types/apollo-enrich-result';\n\nexport const postApolloBulkEnrich = async <TData>({\n  path,\n  body,\n  count,\n  extractList,\n  isMatched,\n}: {\n  path: string;\n  body: Record<string, unknown>;\n  count: number;\n  extractList: (json: Record<string, unknown>) => unknown[];\n  isMatched: (entity: unknown) => boolean;\n}): Promise<ApolloEnrichResult<TData>[]> => {\n  if (count === 0) {\n    return [];\n  }\n\n  const result = await apolloFetch({ method: 'POST', path, body });\n\n  if (!result.ok) {\n    return Array.from({ length: count }, () => ({\n      outcome: 'error' as const,\n      httpStatus: result.httpStatus,\n      message: result.message,\n    }));\n  }\n\n  const entities = extractList(result.json);\n\n  // Apollo bulk endpoints return one batch-level request_id, which cannot be\n  // correlated back to an individual record. Phone reveal is therefore never\n  // requested on bulk paths, so no requestId is stamped here.\n  return Array.from({ length: count }, (_unused, index) => {\n    const entity = entities[index];\n\n    if (!isObject(entity) || !isMatched(entity)) {\n      return { outcome: 'not_found' as const, httpStatus: result.httpStatus };\n    }\n\n    return {\n      outcome: 'matched' as const,\n      httpStatus: result.httpStatus,\n      data: entity as TData,\n    };\n  });\n};\n", "import { isObject } from '@sniptt/guards';\n\nimport { APOLLO_BASE_URL } from 'src/constants/apollo-base-url';\nimport { extractApolloErrorMessage } from 'src/logic-functions/utils/extract-apollo-error-message';\nimport { getApolloApiKey } from 'src/logic-functions/utils/get-apollo-api-key';\n\nconst MAX_RETRIES = 3;\nconst BASE_BACKOFF_MS = 250;\nconst MAX_RETRY_AFTER_MS = 30_000;\n\nconst sleep = (ms: number): Promise<void> =>\n  new Promise((resolve) => setTimeout(resolve, ms));\n\nconst isRetryableStatus = (status: number): boolean =>\n  status === 429 || status >= 500;\n\n// Prefer the server-provided Retry-After (seconds) when present, clamped to a\n// sane maximum; otherwise fall back to bounded exponential backoff.\nconst computeBackoffMs = (response: Response, attempt: number): number => {\n  const retryAfterHeader = response.headers.get('retry-after');\n  if (retryAfterHeader !== null) {\n    const retryAfterSeconds = Number.parseInt(retryAfterHeader, 10);\n    if (Number.isFinite(retryAfterSeconds) && retryAfterSeconds > 0) {\n      return Math.min(retryAfterSeconds * 1000, MAX_RETRY_AFTER_MS);\n    }\n  }\n\n  return BASE_BACKOFF_MS * 2 ** attempt;\n};\n\nexport type ApolloFetchResult =\n  | { ok: true; httpStatus: number; json: Record<string, unknown> }\n  | { ok: false; httpStatus: number; message: string };\n\n// Low-level Apollo REST call. Retries transient failures (network errors, HTTP\n// 429, and 5xx responses) with bounded exponential backoff, honoring Retry-After.\nexport const apolloFetch = async ({\n  method,\n  path,\n  body,\n}: {\n  method: 'GET' | 'POST';\n  path: string;\n  body?: Record<string, unknown>;\n}): Promise<ApolloFetchResult> => {\n  const apiKey = getApolloApiKey();\n\n  for (let attempt = 0; ; attempt++) {\n    let response: Response;\n    try {\n      response = await fetch(`${APOLLO_BASE_URL}${path}`, {\n        method,\n        headers: {\n          'Content-Type': 'application/json',\n          'x-api-key': apiKey,\n        },\n        body: body === undefined ? undefined : JSON.stringify(body),\n      });\n    } catch (error) {\n      if (attempt < MAX_RETRIES) {\n        await sleep(BASE_BACKOFF_MS * 2 ** attempt);\n        continue;\n      }\n\n      const message = error instanceof Error ? error.message : String(error);\n\n      return { ok: false, httpStatus: 0, message: `Apollo.io request failed: ${message}` };\n    }\n\n    if (isRetryableStatus(response.status) && attempt < MAX_RETRIES) {\n      await sleep(computeBackoffMs(response, attempt));\n      continue;\n    }\n\n    let json: unknown;\n    try {\n      json = await response.json();\n    } catch {\n      return {\n        ok: false,\n        httpStatus: response.status,\n        message: `Apollo.io returned a non-JSON response (HTTP ${response.status}).`,\n      };\n    }\n\n    const responseObject = isObject(json) ? (json as Record<string, unknown>) : {};\n\n    if (!response.ok) {\n      return {\n        ok: false,\n        httpStatus: response.status,\n        message: extractApolloErrorMessage({\n          json: responseObject,\n          httpStatus: response.status,\n        }),\n      };\n    }\n\n    return { ok: true, httpStatus: response.status, json: responseObject };\n  }\n};\n", "export const APOLLO_BASE_URL = 'https://api.apollo.io/api/v1';\n", "import { isNonEmptyString, isObject, isString } from '@sniptt/guards';\n\nimport { isDefined } from 'src/utils/is-defined';\n\nconst extractMessageFromValue = (\n  messageValue: unknown,\n): string | undefined => {\n  if (isNonEmptyString(messageValue)) {\n    return messageValue;\n  }\n\n  if (Array.isArray(messageValue)) {\n    const joinedMessages = messageValue.filter(isString).join('; ');\n\n    return isNonEmptyString(joinedMessages) ? joinedMessages : undefined;\n  }\n\n  return undefined;\n};\n\nexport const extractApolloErrorMessage = ({\n  json,\n  httpStatus,\n}: {\n  json: Record<string, unknown>;\n  httpStatus: number;\n}): string => {\n  const errorField = json.error;\n\n  if (isObject(errorField)) {\n    const messageFromErrorObject = extractMessageFromValue(\n      (errorField as Record<string, unknown>).message,\n    );\n    if (isDefined(messageFromErrorObject)) {\n      return messageFromErrorObject;\n    }\n  }\n\n  const messageFromTopLevelField =\n    extractMessageFromValue(errorField) ??\n    extractMessageFromValue(json.message) ??\n    extractMessageFromValue(json.errors);\n  if (isDefined(messageFromTopLevelField)) {\n    return messageFromTopLevelField;\n  }\n\n  return `Apollo.io request failed (HTTP ${httpStatus}).`;\n};\n", "import { isNonEmptyString } from '@sniptt/guards';\n\nimport { ApolloConfigError } from 'src/logic-functions/errors/apollo-config-error';\n\nexport const getApolloApiKey = (): string => {\n  const apiKey = process.env.APOLLO_API_KEY?.trim();\n\n  if (!isNonEmptyString(apiKey)) {\n    throw new ApolloConfigError(\n      'APOLLO_API_KEY is not set. The workspace admin must configure the Apollo.io API key in Settings -> Apps.',\n    );\n  }\n\n  return apiKey;\n};\n", "import { ApolloError } from 'src/logic-functions/errors/apollo-error';\nimport { ApolloErrorCode } from 'src/logic-functions/errors/apollo-error-code';\n\nexport class ApolloConfigError extends ApolloError {\n  constructor(message: string) {\n    super({ message, code: ApolloErrorCode.CONFIGURATION });\n  }\n}\n", "import { toText } from 'src/logic-functions/utils/to-text';\nimport { isDefined } from 'src/utils/is-defined';\n\nexport const buildPersonNameParam = ({\n  firstName,\n  lastName,\n}: {\n  firstName: unknown;\n  lastName: unknown;\n}): string | undefined => {\n  const first = toText(firstName);\n  const last = toText(lastName);\n\n  if (!isDefined(first) || !isDefined(last)) {\n    return undefined;\n  }\n\n  return `${first} ${last}`;\n};\n", "import { buildPersonNameParam } from 'src/logic-functions/utils/build-person-name-param';\nimport { normalizeDomain } from 'src/logic-functions/utils/normalize-domain';\nimport { toText } from 'src/logic-functions/utils/to-text';\nimport { type ApolloPersonEnrichParams } from 'src/types/apollo-person-enrich-params';\nimport { type BulkEnrichInput } from 'src/types/bulk-enrich-input';\nimport { type PersonNode } from 'src/types/person-node';\nimport { isDefined } from 'src/utils/is-defined';\nimport { pruneUndefined } from 'src/utils/prune-undefined';\n\nexport const extractPersonMatchParams = ({\n  node,\n}: {\n  node: PersonNode;\n  input: BulkEnrichInput;\n}): ApolloPersonEnrichParams | undefined => {\n  const existingApolloId = toText(node.apolloId);\n  if (isDefined(existingApolloId)) {\n    return { apolloId: existingApolloId };\n  }\n\n  const params = pruneUndefined({\n    email: toText(node.emails?.primaryEmail),\n    linkedinUrl: toText(node.linkedinLink?.primaryLinkUrl),\n    name: buildPersonNameParam({\n      firstName: node.name?.firstName,\n      lastName: node.name?.lastName,\n    }),\n    organizationName: toText(node.company?.name),\n    // Use the company's real primary domain; a normalized company NAME is junk.\n    domain: normalizeDomain(node.company?.domainName?.primaryLinkUrl),\n  });\n\n  // Apollo cannot match a bare organization name without a person identifier.\n  const hasPersonIdentifier =\n    isDefined(params.email) ||\n    isDefined(params.linkedinUrl) ||\n    isDefined(params.name);\n\n  if (!hasPersonIdentifier) {\n    return undefined;\n  }\n\n  return params;\n};\n", "import { isNonEmptyString, isObject } from '@sniptt/guards';\nimport { type CoreApiClient } from 'twenty-client-sdk/core';\n\nimport { type PersonNode } from 'src/types/person-node';\n\nexport const readPeople = async ({\n  client,\n  recordIds,\n}: {\n  client: CoreApiClient;\n  recordIds: string[];\n}): Promise<PersonNode[]> => {\n  if (recordIds.length === 0) {\n    return [];\n  }\n\n  const result = (await client.query({\n    people: {\n      __args: { filter: { id: { in: recordIds } }, first: recordIds.length },\n      edges: {\n        node: {\n          id: true,\n          name: { firstName: true, lastName: true },\n          emails: { primaryEmail: true },\n          phones: { primaryPhoneNumber: true },\n          jobTitle: true,\n          linkedinLink: { primaryLinkUrl: true },\n          company: {\n            id: true,\n            name: true,\n            domainName: { primaryLinkUrl: true },\n          },\n          apolloId: true,\n          apolloLastEnrichedAt: true,\n        },\n      },\n    },\n  })) as { people?: { edges?: { node: PersonNode }[] } };\n\n  const edges = result.people?.edges;\n  if (!Array.isArray(edges)) {\n    return [];\n  }\n\n  return edges\n    .map((edge) => edge?.node)\n    .filter(\n      (personNode): personNode is PersonNode =>\n        isObject(personNode) &&\n        isNonEmptyString((personNode as { id?: unknown }).id),\n    );\n};\n", "import { type CoreApiClient } from 'twenty-client-sdk/core';\n\nexport const updatePeopleStatus = async ({\n  client,\n  recordIds,\n  data,\n}: {\n  client: CoreApiClient;\n  recordIds: string[];\n  data: Record<string, unknown>;\n}): Promise<void> => {\n  await client.mutation({\n    updatePeople: {\n      __args: { filter: { id: { in: recordIds } }, data },\n      id: true,\n    },\n  });\n};\n", "import { type CoreApiClient } from 'twenty-client-sdk/core';\n\nexport const updatePersonRecord = async ({\n  client,\n  recordId,\n  data,\n}: {\n  client: CoreApiClient;\n  recordId: string;\n  data: Record<string, unknown>;\n}): Promise<void> => {\n  await client.mutation({\n    updatePerson: { __args: { id: recordId, data }, id: true },\n  });\n};\n", "import { buildPersonMatchedData } from 'src/logic-functions/utils/build-person-matched-data';\nimport { enrichPeople } from 'src/logic-functions/utils/enrich-people';\nimport { extractPersonMatchParams } from 'src/logic-functions/utils/extract-person-match-params';\nimport { readPeople } from 'src/logic-functions/utils/read-people';\nimport { updatePeopleStatus } from 'src/logic-functions/utils/update-people-status';\nimport { updatePersonRecord } from 'src/logic-functions/utils/update-person-record';\nimport { type BatchEnrichmentAdapter } from 'src/types/batch-enrichment-adapter';\nimport { type ApolloPersonData } from 'src/types/apollo-person-data';\nimport { type ApolloPersonEnrichParams } from 'src/types/apollo-person-enrich-params';\nimport { type PersonNode } from 'src/types/person-node';\n\nexport const personEnrichmentAdapter: BatchEnrichmentAdapter<\n  PersonNode,\n  ApolloPersonData,\n  ApolloPersonEnrichParams\n> = {\n  objectNameSingular: 'Person',\n  noIdentifierMessage:\n    'No usable identifier (email, LinkedIn, Apollo id, or name) to match against Apollo.io.',\n  readRecords: readPeople,\n  getNodeId: (node) => node.id,\n  getLastEnrichedAt: (node) => node.apolloLastEnrichedAt ?? null,\n  extractParams: extractPersonMatchParams,\n  enrichBatch: enrichPeople,\n  buildMatchedData: buildPersonMatchedData,\n  updateOne: updatePersonRecord,\n  updateManyStatus: updatePeopleStatus,\n};\n", "import { isObject } from '@sniptt/guards';\n\nimport { apolloFetch } from 'src/logic-functions/utils/apollo-fetch';\nimport { toText } from 'src/logic-functions/utils/to-text';\nimport { type ApolloEnrichResult } from 'src/types/apollo-enrich-result';\n\nexport const postApolloSingleEnrich = async <TData>({\n  method,\n  path,\n  body,\n  extractEntity,\n  isMatched,\n  includeRequestId = false,\n}: {\n  method: 'GET' | 'POST';\n  path: string;\n  body?: Record<string, unknown>;\n  extractEntity: (json: Record<string, unknown>) => unknown;\n  isMatched: (entity: unknown) => boolean;\n  // Only the single /people/match path with an async phone reveal in flight\n  // should surface request_id, so the phone webhook can later correlate it.\n  includeRequestId?: boolean;\n}): Promise<ApolloEnrichResult<TData>> => {\n  const result = await apolloFetch({ method, path, body });\n\n  if (!result.ok) {\n    return { outcome: 'error', httpStatus: result.httpStatus, message: result.message };\n  }\n\n  const entity = extractEntity(result.json);\n\n  if (!isObject(entity) || !isMatched(entity)) {\n    return { outcome: 'not_found', httpStatus: result.httpStatus };\n  }\n\n  return {\n    outcome: 'matched',\n    httpStatus: result.httpStatus,\n    data: entity as TData,\n    requestId: includeRequestId ? toText(result.json.request_id) : undefined,\n  };\n};\n", "import { buildApolloPersonDetail } from 'src/logic-functions/utils/build-apollo-person-detail';\nimport { buildApolloRevealConfig } from 'src/logic-functions/utils/build-apollo-reveal-config';\nimport { isApolloPersonMatched } from 'src/logic-functions/utils/is-apollo-matched';\nimport { postApolloSingleEnrich } from 'src/logic-functions/utils/post-apollo-single-enrich';\nimport { type ApolloEnrichResult } from 'src/types/apollo-enrich-result';\nimport { type ApolloPersonData } from 'src/types/apollo-person-data';\nimport { type ApolloPersonEnrichParams } from 'src/types/apollo-person-enrich-params';\n\nexport const enrichPerson = (\n  params: ApolloPersonEnrichParams[],\n): Promise<ApolloEnrichResult<ApolloPersonData>[]> => {\n  const revealConfig = buildApolloRevealConfig({ includePhoneReveal: true });\n  // Only stamp request_id (and thus PENDING) when a phone reveal is actually\n  // in flight, i.e. a webhook URL is configured and reveal_phone_number was set.\n  const revealPhoneNumber = revealConfig.reveal_phone_number === true;\n\n  return Promise.all(\n    params.map((entry) =>\n      postApolloSingleEnrich<ApolloPersonData>({\n        method: 'POST',\n        path: '/people/match',\n        body: { ...buildApolloPersonDetail(entry), ...revealConfig },\n        extractEntity: (json) => json.person,\n        isMatched: isApolloPersonMatched,\n        includeRequestId: revealPhoneNumber,\n      }),\n    ),\n  );\n};\n", "import { personEnrichmentAdapter } from 'src/logic-functions/handlers/person-enrichment-adapter';\nimport { enrichPerson } from 'src/logic-functions/utils/enrich-person';\nimport { type BatchEnrichmentAdapter } from 'src/types/batch-enrichment-adapter';\nimport { type ApolloPersonData } from 'src/types/apollo-person-data';\nimport { type ApolloPersonEnrichParams } from 'src/types/apollo-person-enrich-params';\nimport { type PersonNode } from 'src/types/person-node';\n\nexport const personSingleEnrichmentAdapter: BatchEnrichmentAdapter<\n  PersonNode,\n  ApolloPersonData,\n  ApolloPersonEnrichParams\n> = {\n  ...personEnrichmentAdapter,\n  enrichBatch: enrichPerson,\n};\n", "import { isNonEmptyString } from '@sniptt/guards';\nimport { type CoreApiClient } from 'twenty-client-sdk/core';\n\nimport {\n  buildErrorResult,\n  ENRICHMENT_FAILED_MESSAGE,\n} from 'src/logic-functions/utils/build-error-result';\nimport { runBatchEnrichment } from 'src/logic-functions/utils/run-batch-enrichment';\nimport { type BatchEnrichmentAdapter } from 'src/types/batch-enrichment-adapter';\nimport { type EnrichResult } from 'src/types/enrich-result';\nimport { type SingleEnrichInput } from 'src/types/single-enrich-input';\n\nconst NO_RECORD_ID_MESSAGE = 'No record id was provided to enrich.';\n\nexport const runSingleEnrichment = async <TNode, TData, TParams>({\n  client,\n  input,\n  adapter,\n}: {\n  client: CoreApiClient;\n  input: SingleEnrichInput;\n  adapter: BatchEnrichmentAdapter<TNode, TData, TParams>;\n}): Promise<EnrichResult> => {\n  const recordId = input.recordId?.trim();\n\n  if (!isNonEmptyString(recordId)) {\n    return buildErrorResult({ recordId: '', error: NO_RECORD_ID_MESSAGE });\n  }\n\n  const bulkResult = await runBatchEnrichment({\n    client,\n    input: {\n      records: recordId,\n      updateFields: input.updateFields,\n      minLikelihood: input.minLikelihood,\n    },\n    adapter,\n  });\n\n  return (\n    bulkResult.results[0] ??\n    buildErrorResult({ recordId, error: ENRICHMENT_FAILED_MESSAGE })\n  );\n};\n", "import { type EnrichResult } from 'src/types/enrich-result';\n\nexport const ENRICHMENT_FAILED_MESSAGE = 'Apollo.io enrichment failed.';\n\nexport const buildErrorResult = ({\n  recordId,\n  error,\n}: {\n  recordId: string;\n  error: string;\n}): EnrichResult => ({\n  success: false,\n  recordId,\n  status: 'ERROR',\n  updatedFields: [],\n  message: ENRICHMENT_FAILED_MESSAGE,\n  error,\n});\n", "import { type BulkEnrichResult } from 'src/types/bulk-enrich-result';\nimport { type EnrichResult } from 'src/types/enrich-result';\n\nexport const aggregateBulkEnrichResult = (\n  results: EnrichResult[],\n  message?: string,\n): BulkEnrichResult => {\n  const countByStatus = (status: EnrichResult['status']): number =>\n    results.filter((result) => result.status === status).length;\n\n  const errored = countByStatus('ERROR');\n\n  return {\n    success: errored === 0,\n    total: results.length,\n    matched: countByStatus('MATCHED'),\n    notFound: countByStatus('NOT_FOUND'),\n    skipped: countByStatus('SKIPPED'),\n    errored,\n    results,\n    ...(message !== undefined ? { message } : {}),\n  };\n};\n", "import { type EnrichResult } from 'src/types/enrich-result';\n\nexport const buildSkippedResult = ({\n  recordId,\n  message,\n}: {\n  recordId: string;\n  message: string;\n}): EnrichResult => ({\n  success: true,\n  recordId,\n  status: 'SKIPPED',\n  updatedFields: [],\n  message,\n});\n", "export const chunk = <TItem>({\n  items,\n  size,\n}: {\n  items: TItem[];\n  size: number;\n}): TItem[][] => {\n  if (size <= 0) {\n    return items.length > 0 ? [items] : [];\n  }\n\n  const chunks: TItem[][] = [];\n  for (let index = 0; index < items.length; index += size) {\n    chunks.push(items.slice(index, index + size));\n  }\n\n  return chunks;\n};\n", "// Hard cap on how many records a single bulk enrichment may process. Protects\n// Apollo credits from an accidental \"select all -> Enrich\" on a large view.\n// Enforced server-side (in run-batch-enrichment) and echoed client-side for\n// immediate feedback.\nexport const MAX_BULK_ENRICH_RECORDS = 50;\n", "import { MAX_BULK_ENRICH_RECORDS } from 'src/constants/enrichment-limits';\n\n// The per-action bulk enrichment cap. Admins can override the default via the\n// APOLLO_MAX_BULK_ENRICH application variable (Settings -> Apps -> Apollo).\nexport const getMaxBulkEnrich = (): number => {\n  const raw = process.env.APOLLO_MAX_BULK_ENRICH?.trim();\n\n  if (raw === undefined || raw === '') {\n    return MAX_BULK_ENRICH_RECORDS;\n  }\n\n  const parsed = Number.parseInt(raw, 10);\n\n  if (!Number.isFinite(parsed) || parsed <= 0) {\n    return MAX_BULK_ENRICH_RECORDS;\n  }\n\n  return parsed;\n};\n", "import { type EnrichResult } from 'src/types/enrich-result';\n\nexport const buildMatchedResult = ({\n  recordId,\n  updatedFields,\n  data,\n}: {\n  recordId: string;\n  updatedFields: string[];\n  data?: Record<string, unknown>;\n}): EnrichResult => ({\n  success: true,\n  recordId,\n  status: 'MATCHED',\n  updatedFields,\n  data,\n  message:\n    updatedFields.length > 0\n      ? `Enriched with Apollo.io (${updatedFields.length} fields).`\n      : 'Matched Apollo.io data; no fields updated.',\n});\n", "import { type EnrichResult } from 'src/types/enrich-result';\n\nexport const buildNotFoundResult = (recordId: string): EnrichResult => ({\n  success: true,\n  recordId,\n  status: 'NOT_FOUND',\n  updatedFields: [],\n  message: 'Apollo.io returned no confident match.',\n});\n", "export const INTERNAL_BOOKKEEPING_FIELDS: ReadonlySet<string> = new Set([\n  'apolloRawPayload',\n  'apolloLastEnrichedAt',\n  'apolloEnrichmentStatus',\n  'apolloLikelihood',\n]);\n", "export const nowIso = (): string => new Date().toISOString();\n", "import { UPDATE_FIELDS_OPTIONS } from 'src/constants/update-fields-options';\nimport { type UpdateFieldsOption } from 'src/types/update-fields-option';\n\nexport const resolveUpdateFieldsMode = (\n  updateFields?: UpdateFieldsOption,\n): { shouldPersist: boolean; overrideExistingValues: boolean } => {\n  if (updateFields === UPDATE_FIELDS_OPTIONS.no) {\n    return { shouldPersist: false, overrideExistingValues: false };\n  }\n\n  if (updateFields === UPDATE_FIELDS_OPTIONS.overwrite) {\n    return { shouldPersist: true, overrideExistingValues: true };\n  }\n\n  return { shouldPersist: true, overrideExistingValues: false };\n};\n", "export const toErrorMessage = (error: unknown): string =>\n  error instanceof Error ? error.message : String(error);\n", "import { type CoreApiClient } from 'twenty-client-sdk/core';\n\nimport { buildErrorResult } from 'src/logic-functions/utils/build-error-result';\nimport { buildMatchedResult } from 'src/logic-functions/utils/build-matched-result';\nimport { buildNotFoundResult } from 'src/logic-functions/utils/build-not-found-result';\nimport { buildSkippedResult } from 'src/logic-functions/utils/build-skipped-result';\nimport { INTERNAL_BOOKKEEPING_FIELDS } from 'src/logic-functions/utils/internal-field-names';\nimport { nowIso } from 'src/logic-functions/utils/now-iso';\nimport { resolveUpdateFieldsMode } from 'src/logic-functions/utils/resolve-update-fields-mode';\nimport { type BatchEnrichmentAdapter } from 'src/types/batch-enrichment-adapter';\nimport { type BulkEnrichInput } from 'src/types/bulk-enrich-input';\nimport { type CompanyIdByMatchKeyCache } from 'src/types/company-id-by-match-key-cache';\nimport { type EnrichResult } from 'src/types/enrich-result';\nimport { type ApolloEnrichResult } from 'src/types/apollo-enrich-result';\nimport { isDefined } from 'src/utils/is-defined';\nimport { toErrorMessage } from 'src/utils/to-error-message';\n\nconst writeErrorStatusWithBackoff = async <TNode, TData, TParams>({\n  adapter,\n  client,\n  recordIds,\n  enrichedAt,\n}: {\n  adapter: BatchEnrichmentAdapter<TNode, TData, TParams>;\n  client: CoreApiClient;\n  recordIds: string[];\n  enrichedAt: string;\n}): Promise<void> => {\n  if (recordIds.length === 0) {\n    return;\n  }\n\n  await adapter\n    .updateManyStatus({\n      client,\n      recordIds,\n      data: { apolloEnrichmentStatus: 'ERROR', apolloLastEnrichedAt: enrichedAt },\n    })\n    .catch(() => undefined);\n};\n\ntype MatchedRecord = {\n  recordId: string;\n  mappedData: Record<string, unknown>;\n  persistData: Record<string, unknown>;\n};\n\nconst recordMatchedRecords = async <TNode, TData, TParams>({\n  adapter,\n  client,\n  matchedRecords,\n  shouldPersist,\n  resultById,\n}: {\n  adapter: BatchEnrichmentAdapter<TNode, TData, TParams>;\n  client: CoreApiClient;\n  matchedRecords: MatchedRecord[];\n  shouldPersist: boolean;\n  resultById: Map<string, EnrichResult>;\n}): Promise<string[]> => {\n  if (matchedRecords.length === 0) {\n    return [];\n  }\n\n  if (!shouldPersist) {\n    for (const matchedRecord of matchedRecords) {\n      resultById.set(\n        matchedRecord.recordId,\n        buildMatchedResult({\n          recordId: matchedRecord.recordId,\n          updatedFields: [],\n          data: matchedRecord.mappedData,\n        }),\n      );\n    }\n\n    return [];\n  }\n\n  const settledWriteResults = await Promise.allSettled(\n    matchedRecords.map((matchedRecord) =>\n      adapter.updateOne({\n        client,\n        recordId: matchedRecord.recordId,\n        data: matchedRecord.persistData,\n      }),\n    ),\n  );\n\n  const failedRecordIds: string[] = [];\n  for (const [index, writeResult] of settledWriteResults.entries()) {\n    const matchedRecord = matchedRecords[index];\n    if (writeResult.status === 'rejected') {\n      resultById.set(\n        matchedRecord.recordId,\n        buildErrorResult({\n          recordId: matchedRecord.recordId,\n          error: toErrorMessage(writeResult.reason),\n        }),\n      );\n      failedRecordIds.push(matchedRecord.recordId);\n      continue;\n    }\n\n    resultById.set(\n      matchedRecord.recordId,\n      buildMatchedResult({\n        recordId: matchedRecord.recordId,\n        updatedFields: Object.keys(matchedRecord.persistData).filter(\n          (fieldName) => !INTERNAL_BOOKKEEPING_FIELDS.has(fieldName),\n        ),\n        data: matchedRecord.mappedData,\n      }),\n    );\n  }\n\n  return failedRecordIds;\n};\n\nconst recordNotFoundRecords = async <TNode, TData, TParams>({\n  adapter,\n  client,\n  notFoundRecordIds,\n  shouldPersist,\n  enrichedAt,\n  resultById,\n}: {\n  adapter: BatchEnrichmentAdapter<TNode, TData, TParams>;\n  client: CoreApiClient;\n  notFoundRecordIds: string[];\n  shouldPersist: boolean;\n  enrichedAt: string;\n  resultById: Map<string, EnrichResult>;\n}): Promise<string[]> => {\n  if (notFoundRecordIds.length === 0) {\n    return [];\n  }\n\n  if (!shouldPersist) {\n    for (const recordId of notFoundRecordIds) {\n      resultById.set(recordId, buildNotFoundResult(recordId));\n    }\n\n    return [];\n  }\n\n  try {\n    await adapter.updateManyStatus({\n      client,\n      recordIds: notFoundRecordIds,\n      data: { apolloEnrichmentStatus: 'NOT_FOUND', apolloLastEnrichedAt: enrichedAt },\n    });\n    for (const recordId of notFoundRecordIds) {\n      resultById.set(recordId, buildNotFoundResult(recordId));\n    }\n\n    return [];\n  } catch (notFoundStatusWriteError) {\n    const notFoundStatusWriteErrorMessage = toErrorMessage(\n      notFoundStatusWriteError,\n    );\n    for (const recordId of notFoundRecordIds) {\n      resultById.set(\n        recordId,\n        buildErrorResult({ recordId, error: notFoundStatusWriteErrorMessage }),\n      );\n    }\n\n    return notFoundRecordIds;\n  }\n};\n\nexport const enrichChunk = async <TNode, TData, TParams>({\n  client,\n  recordIds,\n  input,\n  adapter,\n  resultById,\n  companyIdByMatchKeyCache,\n}: {\n  client: CoreApiClient;\n  recordIds: string[];\n  input: BulkEnrichInput;\n  adapter: BatchEnrichmentAdapter<TNode, TData, TParams>;\n  resultById: Map<string, EnrichResult>;\n  companyIdByMatchKeyCache: CompanyIdByMatchKeyCache;\n}): Promise<void> => {\n  const { shouldPersist, overrideExistingValues } = resolveUpdateFieldsMode(\n    input.updateFields,\n  );\n\n  // In fill-empty mode, don't re-enrich records that were already enriched \u2014\n  // it would spend Apollo credits for no field change. \"Overwrite\" and preview\n  // (\"no\") modes still run.\n  const skipAlreadyEnriched = shouldPersist && !overrideExistingValues;\n\n  let recordNodes: TNode[];\n  try {\n    recordNodes = await adapter.readRecords({ client, recordIds });\n  } catch (readError) {\n    const readErrorMessage = toErrorMessage(readError);\n    for (const recordId of recordIds) {\n      resultById.set(\n        recordId,\n        buildErrorResult({ recordId, error: readErrorMessage }),\n      );\n    }\n\n    return;\n  }\n\n  const nodeByRecordId = new Map(\n    recordNodes.map((recordNode) => [adapter.getNodeId(recordNode), recordNode]),\n  );\n\n  const recordsToEnrich: { recordId: string; node: TNode; params: TParams }[] =\n    [];\n  for (const recordId of recordIds) {\n    const recordNode = nodeByRecordId.get(recordId);\n    if (!isDefined(recordNode)) {\n      resultById.set(\n        recordId,\n        buildErrorResult({\n          recordId,\n          error: `${adapter.objectNameSingular} ${recordId} not found`,\n        }),\n      );\n      continue;\n    }\n\n    if (skipAlreadyEnriched && isDefined(adapter.getLastEnrichedAt(recordNode))) {\n      resultById.set(\n        recordId,\n        buildSkippedResult({\n          recordId,\n          message:\n            'Already enriched \u2014 use \"Yes and overwrite\" to re-enrich (spends Apollo credits).',\n        }),\n      );\n      continue;\n    }\n\n    const matchParams = adapter.extractParams({ node: recordNode, input });\n    if (!isDefined(matchParams)) {\n      resultById.set(\n        recordId,\n        buildSkippedResult({\n          recordId,\n          message: adapter.noIdentifierMessage,\n        }),\n      );\n      continue;\n    }\n\n    recordsToEnrich.push({ recordId, node: recordNode, params: matchParams });\n  }\n\n  if (recordsToEnrich.length === 0) {\n    return;\n  }\n\n  const enrichedAt = nowIso();\n  const recordIdsToMarkAsError: string[] = [];\n\n  let apolloEnrichmentOutcomes: ApolloEnrichResult<TData>[];\n  try {\n    apolloEnrichmentOutcomes = await adapter.enrichBatch(\n      recordsToEnrich.map((recordToEnrich) => recordToEnrich.params),\n    );\n  } catch (enrichBatchError) {\n    const enrichBatchErrorMessage = toErrorMessage(enrichBatchError);\n    for (const recordToEnrich of recordsToEnrich) {\n      resultById.set(\n        recordToEnrich.recordId,\n        buildErrorResult({\n          recordId: recordToEnrich.recordId,\n          error: enrichBatchErrorMessage,\n        }),\n      );\n    }\n    if (shouldPersist) {\n      await writeErrorStatusWithBackoff({\n        adapter,\n        client,\n        recordIds: recordsToEnrich.map(\n          (recordToEnrich) => recordToEnrich.recordId,\n        ),\n        enrichedAt,\n      });\n    }\n\n    return;\n  }\n\n  const notFoundRecordIds: string[] = [];\n  const matchedRecords: MatchedRecord[] = [];\n\n  for (let index = 0; index < recordsToEnrich.length; index++) {\n    const { recordId, node: recordNode } = recordsToEnrich[index];\n    const enrichmentOutcome = apolloEnrichmentOutcomes[index];\n\n    if (!isDefined(enrichmentOutcome) || enrichmentOutcome.outcome === 'error') {\n      const enrichmentErrorMessage = isDefined(enrichmentOutcome)\n        ? enrichmentOutcome.message\n        : 'Apollo.io returned no response for this record.';\n      resultById.set(\n        recordId,\n        buildErrorResult({ recordId, error: enrichmentErrorMessage }),\n      );\n      recordIdsToMarkAsError.push(recordId);\n      continue;\n    }\n\n    if (enrichmentOutcome.outcome === 'not_found') {\n      notFoundRecordIds.push(recordId);\n      continue;\n    }\n\n    try {\n      const { mappedData, persistData } = await adapter.buildMatchedData({\n        client,\n        node: recordNode,\n        outcome: enrichmentOutcome,\n        enrichedAt,\n        companyIdByMatchKeyCache,\n        overrideExistingValues,\n        shouldPersist,\n      });\n      matchedRecords.push({ recordId, mappedData, persistData });\n    } catch (buildMatchedDataError) {\n      resultById.set(\n        recordId,\n        buildErrorResult({\n          recordId,\n          error: toErrorMessage(buildMatchedDataError),\n        }),\n      );\n      recordIdsToMarkAsError.push(recordId);\n    }\n  }\n\n  const failedMatchedWriteRecordIds = await recordMatchedRecords({\n    adapter,\n    client,\n    matchedRecords,\n    shouldPersist,\n    resultById,\n  });\n  recordIdsToMarkAsError.push(...failedMatchedWriteRecordIds);\n\n  const failedNotFoundWriteRecordIds = await recordNotFoundRecords({\n    adapter,\n    client,\n    notFoundRecordIds,\n    shouldPersist,\n    enrichedAt,\n    resultById,\n  });\n  recordIdsToMarkAsError.push(...failedNotFoundWriteRecordIds);\n\n  if (shouldPersist) {\n    await writeErrorStatusWithBackoff({\n      adapter,\n      client,\n      recordIds: recordIdsToMarkAsError,\n      enrichedAt,\n    });\n  }\n};\n", "import { isNonEmptyString } from '@sniptt/guards';\n\nimport { type RecordInput } from 'src/types/bulk-enrich-input';\n\nexport const extractRecordIds = (\n  records: RecordInput | RecordInput[],\n): string[] => {\n  const recordsAsArray =\n    records === null || records === undefined\n      ? []\n      : Array.isArray(records)\n        ? records\n        : [records];\n\n  return recordsAsArray\n    .map((record) => (typeof record === 'string' ? record : record?.id))\n    .filter((id): id is string => isNonEmptyString(id));\n};\n", "import { type CoreApiClient } from 'twenty-client-sdk/core';\n\nimport { aggregateBulkEnrichResult } from 'src/logic-functions/utils/aggregate-bulk-enrich-result';\nimport {\n  buildErrorResult,\n  ENRICHMENT_FAILED_MESSAGE,\n} from 'src/logic-functions/utils/build-error-result';\nimport { buildSkippedResult } from 'src/logic-functions/utils/build-skipped-result';\nimport { chunk } from 'src/logic-functions/utils/chunk';\nimport { getMaxBulkEnrich } from 'src/logic-functions/utils/get-max-bulk-enrich';\nimport { enrichChunk } from 'src/logic-functions/utils/enrich-chunk';\nimport { extractRecordIds } from 'src/logic-functions/utils/extract-record-ids';\nimport { type BatchEnrichmentAdapter } from 'src/types/batch-enrichment-adapter';\nimport { type BulkEnrichInput } from 'src/types/bulk-enrich-input';\nimport { type BulkEnrichResult } from 'src/types/bulk-enrich-result';\nimport { type CompanyIdByMatchKeyCache } from 'src/types/company-id-by-match-key-cache';\nimport { type EnrichResult } from 'src/types/enrich-result';\n\n// Apollo bulk endpoints accept at most 10 records per request.\nconst APOLLO_BATCH_SIZE = 10;\n\nexport const runBatchEnrichment = async <TNode, TData, TParams>({\n  client,\n  input,\n  adapter,\n}: {\n  client: CoreApiClient;\n  input: BulkEnrichInput;\n  adapter: BatchEnrichmentAdapter<TNode, TData, TParams>;\n}): Promise<BulkEnrichResult> => {\n  const recordIds = Array.from(new Set(extractRecordIds(input.records)));\n\n  // Cap the batch to protect Apollo credits from an accidental \"select all ->\n  // Enrich\": refuse the whole batch (no Apollo calls) with a clear message. The\n  // cap is configurable via the APOLLO_MAX_BULK_ENRICH application variable.\n  const maxBulkEnrich = getMaxBulkEnrich();\n  if (recordIds.length > maxBulkEnrich) {\n    const message = `Enrichment is limited to ${maxBulkEnrich} records at a time (you selected ${recordIds.length}). Select fewer and try again.`;\n\n    return {\n      ...aggregateBulkEnrichResult(\n        recordIds.map((recordId) => buildSkippedResult({ recordId, message })),\n        message,\n      ),\n      success: false,\n    };\n  }\n\n  const resultById = new Map<string, EnrichResult>();\n  const companyIdByMatchKeyCache: CompanyIdByMatchKeyCache = new Map();\n\n  for (const recordIdsChunk of chunk({ items: recordIds, size: APOLLO_BATCH_SIZE })) {\n    await enrichChunk({\n      client,\n      recordIds: recordIdsChunk,\n      input,\n      adapter,\n      resultById,\n      companyIdByMatchKeyCache,\n    });\n  }\n\n  const results = recordIds.map(\n    (recordId) =>\n      resultById.get(recordId) ??\n      buildErrorResult({ recordId, error: ENRICHMENT_FAILED_MESSAGE }),\n  );\n\n  return aggregateBulkEnrichResult(results);\n};\n", "import { defineLogicFunction, STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS } from 'twenty-sdk/define';\n\nimport { UPDATE_FIELDS_OPTION_VALUES } from 'src/constants/update-fields-option-values';\nimport { APOLLO_LOGIC_FUNCTION_CONSTANTS } from 'src/constants/universal-identifiers';\nimport { enrichPersonCore } from 'src/logic-functions/handlers/enrich-person';\nimport { type SingleEnrichInput } from 'src/types/single-enrich-input';\n\nconst handler = (input: SingleEnrichInput) => enrichPersonCore({ input });\n\nexport default defineLogicFunction({\n  universalIdentifier: APOLLO_LOGIC_FUNCTION_CONSTANTS.enrichPerson.universalIdentifier,\n  name: 'enrich-person',\n  description:\n    'Enrich a single Person record with Apollo.io data (job, location, social profiles, etc.) given its record id.',\n  timeoutSeconds: 60,\n  handler,\n  workflowActionTriggerSettings: {\n    label: 'Enrich Person',\n    icon: 'IconSparkles',\n    inputSchema: [\n      {\n        type: 'object',\n        properties: {\n          recordId: {\n            type: 'record',\n            objectUniversalIdentifier:\n              STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.universalIdentifier,\n            label: 'Record',\n          },\n          updateFields: {\n            type: 'string',\n            label: 'Update fields',\n            enum: [...UPDATE_FIELDS_OPTION_VALUES],\n          },\n        },\n      },\n    ],\n    outputSchema: [\n      {\n        type: 'object',\n        properties: {\n          success: { type: 'boolean', label: 'Success' },\n          recordId: { type: 'string', label: 'Record Id' },\n          status: { type: 'string', label: 'Status' },\n          updatedFields: {\n            type: 'array',\n            items: { type: 'string' },\n            label: 'Updated Fields',\n          },\n          data: { type: 'object', label: 'Data' },\n          message: { type: 'string', label: 'Message' },\n        },\n      },\n    ],\n  },\n  toolTriggerSettings: {\n    inputSchema: {\n      type: 'object',\n      properties: {\n        recordId: {\n          type: 'string',\n          description: 'The id of the Person record to enrich.',\n        },\n        updateFields: {\n          type: 'string',\n          enum: [...UPDATE_FIELDS_OPTION_VALUES],\n          description:\n            'Whether to write the enriched data back to the record. \"Yes and overwrite\" replaces existing values; \"Yes and don\\'t overwrite\" only fills empty fields; \"No\" returns the enriched data without modifying the record.',\n        },\n      },\n      required: ['recordId'],\n      additionalProperties: false,\n    },\n  },\n});\n"],
  "mappings": "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",
  "names": ["isUndefined", "isString", "isNull", "isObject", "isArray", "isNonEmptyArray", "isNonEmptyString", "import_guards", "import_guards", "SCHEME_REGEX", "LEADING_WWW_REGEX", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards"]
}
