@pipe0/base 1.0.0 → 1.0.1
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/CHANGELOG.md +8 -0
- package/dist/index.d.mts +13 -4
- package/dist/index.mjs +29 -29
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -64,27 +64,27 @@ From the current S24 batch.
|
|
|
64
64
|
How do you...`,`Y Combinator's most popular startups.
|
|
65
65
|
From the current S24 batch.
|
|
66
66
|
|
|
67
|
-
How do you...`]}},crustdata_post_list:{label:`Crustdata Post list`,type:`json`,format:`json_list_string`,description:`Rich JSON post list`,jsonMeta:{zodSchema:fr,exampleValue:pr}},role_finder_match:{label:`Role finder match`,type:`json`,format:`json_object`,description:`Result of a role finder operation`,jsonMeta:{zodSchema:qi,exampleValue:Ji}},post_text:{label:`Post text`,description:`Raw text content of a social media post`,format:`text`,type:`string`,jsonMeta:null},post_id:{label:`Post ID`,description:`Stable identifier of the post (its LinkedIn share URN)`,format:`text`,type:`string`,jsonMeta:null},amplemarket_person_match:{label:`Person match`,type:`json`,format:`json_object`,description:`Person match object as returned by Amplemarket`,jsonMeta:{zodSchema:en,exampleValue:tn}},amplemarket_company_match:{label:`Company match`,type:`json`,format:`json_object`,description:`Company match object as returned by Amplemarket`,jsonMeta:{zodSchema:Qt,exampleValue:$t}},companyenrich_matches:{label:`CompanyEnrich matches`,type:`json`,format:`json_object`,description:`CompanyEnrich response list.`,jsonMeta:{zodSchema:r.array(er),exampleValue:[tr]}},logo_url:{label:`Logo URL`,type:`string`,format:`text`,description:`Company or organization logo`,jsonMeta:null},logodev_describe_match:{label:`Company match`,type:`json`,format:`json_object`,description:`Get company logos & brand data`,jsonMeta:{exampleValue:ii,zodSchema:ri}},mobile_number:{label:`Mobile`,type:`string`,description:`Mobile telephone number of a person.`,jsonMeta:null,format:`phone`},company_social_url:{label:`Company Social URL`,type:`string`,description:`Social Media URL for a given company (e.g. LinkedIn profile URL).`,jsonMeta:null,format:`profile_url`},professional_profile:{label:`Professional profile (LinkedIn)`,type:`json`,description:`A standardized format for returning LinkedIn profile data.`,jsonMeta:{zodSchema:Gi,exampleValue:Ki},format:`json_object`},hubspot_contact_found:{label:`HubSpot contact found`,type:`boolean`,description:`Whether a HubSpot contact matched the email (a clean miss is not an error).`,jsonMeta:null,format:null},hubspot_contact_match:{order:90,label:`HubSpot contact`,type:`json`,format:`json_object`,description:`One HubSpot contact record: id, url, and the standard property set as flat keys; picked custom properties nest under custom_properties. Match-pipe output also carries matched_by.`,jsonMeta:{zodSchema:Tr,exampleValue:Er}},hubspot_companies_found_count:{label:`HubSpot companies found`,type:`number`,format:`int`,description:`Number of HubSpot companies matching the domain. Domain is HubSpot's dedupe key but not unique — multiple matches are normal.`,jsonMeta:null},hubspot_company_match:{order:90,label:`HubSpot company`,type:`json`,format:`json_object`,description:`One HubSpot company record: id, url, and the standard property set as flat keys; picked custom properties nest under custom_properties.`,jsonMeta:{zodSchema:Dr,exampleValue:Or}},hubspot_company_matches:{order:90,label:`HubSpot company matches`,type:`json`,format:`json_list`,description:`All HubSpot companies matching the domain, each with id, url, matched_by, and the selected properties.`,jsonMeta:{zodSchema:Nr,exampleValue:Pr}},hubspot_deals_found_count:{label:`HubSpot deals found`,type:`number`,format:`int`,description:`Number of HubSpot deals associated with the matched company or contact.`,jsonMeta:null},hubspot_deal_match:{order:90,label:`HubSpot deal`,type:`json`,format:`json_object`,description:`One HubSpot deal record: id, url, and the standard property set as flat keys; picked custom properties nest under custom_properties.`,jsonMeta:{zodSchema:kr,exampleValue:Ar}},hubspot_deal_matches:{order:90,label:`HubSpot deal matches`,type:`json`,format:`json_list`,description:`Matched HubSpot deals (sorted by close date, newest first), each with id, url, and the selected properties.`,jsonMeta:{zodSchema:Fr,exampleValue:Ir}},hubspot_object_id:{order:10,label:`HubSpot object ID`,type:`string`,description:`Record ID (hs_object_id) of the HubSpot record — the identifier to write back to it (object:update, object:associations).`,jsonMeta:null,format:`text`},hubspot_owner_id:{order:12,label:`HubSpot owner ID`,type:`string`,description:"ID of the HubSpot owner (user) — the value stored in `hubspot_owner_id` properties on contacts, companies, and deals.",jsonMeta:null,format:`text`},hubspot_owned_count:{order:50,label:`Owned records`,type:`number`,format:`int`,description:`Number of records of the selected object type owned by this HubSpot owner (only when ownership counts are enabled).`,jsonMeta:null},hubspot_owner_match:{order:90,label:`HubSpot owner`,type:`json`,format:`json_object`,description:`The HubSpot owner record: id, email, name, archived flag, and team memberships.`,jsonMeta:{zodSchema:jr,exampleValue:Mr}},hubspot_update_result:{label:`HubSpot update result`,type:`json`,format:`json_object`,description:`Result of the HubSpot update: id, url, object type, and updated property names.`,jsonMeta:{zodSchema:Lr,exampleValue:Rr}},hubspot_associated_count:{label:`HubSpot associations found`,type:`number`,format:`int`,description:`Number of associated HubSpot objects found for the source record.`,jsonMeta:null},hubspot_associated_objects:{order:90,label:`HubSpot associated objects`,type:`json`,format:`json_list`,description:`Associated HubSpot objects, each with id, url, association labels, and the selected properties under properties.`,jsonMeta:{zodSchema:zr,exampleValue:Br}},hubspot_activity_result:{label:`HubSpot activity result`,type:`json`,format:`json_object`,description:`Result of logging a HubSpot engagement: id, url, the engagement type, and the record it was associated to.`,jsonMeta:{zodSchema:Vr,exampleValue:Hr}},salesforce_record_id:{order:10,label:`Salesforce record ID`,type:`string`,description:`18-character ID of the Salesforce record — the identifier to write back to it (record:update, record:lookup). Every Salesforce surface emits this same column, so it chains regardless of source.`,jsonMeta:null,format:`text`},salesforce_owned_count:{order:50,label:`Owned records`,type:`number`,format:`int`,description:`Number of records of the selected object type owned by this Salesforce user (only when ownership counts are enabled).`,jsonMeta:null},salesforce_person_found:{label:`Salesforce person found`,type:`boolean`,description:`Whether the email matched a Salesforce Contact, Lead, or Person Account (a clean miss is not an error).`,jsonMeta:null,format:null},salesforce_accounts_found_count:{label:`Salesforce accounts found`,type:`number`,format:`int`,description:`Number of Salesforce accounts matching the domain. Accounts have no unique domain key — multiple matches are normal.`,jsonMeta:null},salesforce_opportunities_found_count:{label:`Salesforce opportunities found`,type:`number`,format:`int`,description:`Number of Salesforce opportunities reached via the matched account or contact role.`,jsonMeta:null},salesforce_record_found:{label:`Salesforce record found`,type:`boolean`,description:`Whether the record ID resolved to a live Salesforce record (deleted/missing is a clean miss, not an error).`,jsonMeta:null,format:null},salesforce_record_created:{label:`Salesforce record created`,type:`boolean`,description:`Whether the assert created a new record (true) or updated an existing one matched by the external ID (false).`,jsonMeta:null,format:null},salesforce_contact_match:{order:90,label:`Salesforce contact`,type:`json`,format:`json_object`,description:`One Salesforce contact record: id, url, and the standard field set as flat typed keys; picked custom fields nest under custom_properties.`,jsonMeta:{zodSchema:oa,exampleValue:sa}},salesforce_lead_match:{order:90,label:`Salesforce lead`,type:`json`,format:`json_object`,description:`One Salesforce lead record: id, url, and the standard field set as flat typed keys (including IsConverted/ConvertedContactId); picked custom fields nest under custom_properties.`,jsonMeta:{zodSchema:ca,exampleValue:la}},salesforce_account_match:{order:90,label:`Salesforce account`,type:`json`,format:`json_object`,description:`One Salesforce account record: id, url, and the standard field set as flat typed keys; picked custom fields nest under custom_properties.`,jsonMeta:{zodSchema:ua,exampleValue:da}},salesforce_account_matches:{order:90,label:`Salesforce account matches`,type:`json`,format:`json_list`,description:`All Salesforce accounts matching the domain (oldest first), each with id, url, matched_variant, and the selected fields.`,jsonMeta:{zodSchema:ya,exampleValue:ba}},salesforce_opportunity_match:{order:90,label:`Salesforce opportunity`,type:`json`,format:`json_object`,description:`One Salesforce opportunity record: id, url, and the standard field set as flat typed keys (IsClosed/IsWon carry the org-invariant status); picked custom fields nest under custom_properties.`,jsonMeta:{zodSchema:fa,exampleValue:pa}},salesforce_opportunity_matches:{order:90,label:`Salesforce opportunity matches`,type:`json`,format:`json_list`,description:`Matched Salesforce opportunities (newest close date first), each with id, url, contact_roles edge metadata, and the selected fields.`,jsonMeta:{zodSchema:xa,exampleValue:Sa}},salesforce_user_match:{order:90,label:`Salesforce user`,type:`json`,format:`json_object`,description:`One Salesforce user record: id, url, and the standard field set as flat typed keys; picked custom fields nest under custom_properties.`,jsonMeta:{zodSchema:ma,exampleValue:ha}},salesforce_person_match:{order:90,label:`Salesforce person`,type:`json`,format:`json_object`,description:`The matched Salesforce person across Contact, Lead, and Person Account shapes: object_type says which; keys foreign to the matched shape are null. Carries matched_by and is_converted_redirect.`,jsonMeta:{zodSchema:_a,exampleValue:va}},salesforce_record_match:{order:90,label:`Salesforce record`,type:`json`,format:`json_object`,description:`A generic Salesforce record (any object): id, url, object_type, and ALL fields visible to the connected user nested under record.`,jsonMeta:{zodSchema:Ca,exampleValue:wa}},salesforce_update_result:{label:`Salesforce update result`,type:`json`,format:`json_object`,description:`Result of the Salesforce update: id, url, object type, updated field names, and the fresh post-write record (formulas/triggers may rewrite values after save).`,jsonMeta:{zodSchema:Ta,exampleValue:Ea}},salesforce_activities_found_count:{label:`Salesforce activities found`,type:`number`,format:`int`,description:`Total tasks and events on the record's timeline matching the filters — the true total before the display limit.`,jsonMeta:null},salesforce_last_activity_date:{label:`Salesforce last activity date`,type:`string`,format:`date`,description:`Most recent activity date across the record's tasks and events (null when the timeline is empty) — chain a run_if on it to gate stale records.`,jsonMeta:null},salesforce_activities:{order:90,label:`Salesforce activities`,type:`json`,format:`json_list`,description:`The record's activity timeline (tasks and events, newest first), each with id, url, object_type, subject, status, activity_date, subtype, who_id/what_id anchors, and picked custom fields under custom_properties.`,jsonMeta:{zodSchema:Oa,exampleValue:ka}},salesforce_activity_result:{label:`Salesforce activity result`,type:`json`,format:`json_object`,description:`Result of logging a Salesforce activity: id, url, subject, subtype, the who_id/what_id anchors, and created (false only when an idempotency key matched an existing record).`,jsonMeta:{zodSchema:Aa,exampleValue:ja}},professional_profile_url:{label:`LinkedIn Profile URL`,type:`string`,format:`profile_url`,description:`A person's LinkedIn profile URL.`,jsonMeta:null},attio_record_id:{order:10,label:`Attio record ID`,type:`string`,description:`Record ID of the Attio record — the identifier to write back to it (record:lookup, record:update).`,jsonMeta:null,format:`text`},attio_entry_id:{order:11,label:`Attio entry ID`,type:`string`,description:`ID of the Attio list entry (a record can sit in a list more than once; the entry carries the list-level attributes such as stage).`,jsonMeta:null,format:`text`},attio_person_found:{label:`Attio person found`,type:`boolean`,description:`Whether an Attio person matched the email (a clean miss is not an error).`,jsonMeta:null,format:null},attio_person_match:{order:90,label:`Attio person`,type:`json`,format:`json_object`,description:`One Attio person record: id, url, and the standard attribute set as flat keys; picked custom attributes nest under custom_properties. Match-pipe output also carries matched_by.`,jsonMeta:{zodSchema:mn,exampleValue:hn}},attio_companies_found_count:{label:`Attio companies found`,type:`number`,format:`int`,description:`Number of Attio companies matching the domain. Exact domain values are unique (≤1); root-domain matching can legitimately return several subdomain records.`,jsonMeta:null},attio_company_match:{order:90,label:`Attio company`,type:`json`,format:`json_object`,description:`One Attio company record: id, url, and the standard attribute set as flat keys; picked custom attributes nest under custom_properties.`,jsonMeta:{zodSchema:gn,exampleValue:_n}},attio_company_matches:{order:90,label:`Attio company matches`,type:`json`,format:`json_list`,description:`All Attio companies matching the domain, each with id, url, matched_on, and the selected attributes.`,jsonMeta:{zodSchema:vn,exampleValue:yn}},attio_deals_found_count:{label:`Attio deals found`,type:`number`,format:`int`,description:`Number of Attio deals associated with the matched company or person.`,jsonMeta:null},attio_deal_match:{order:90,label:`Attio deal`,type:`json`,format:`json_object`,description:`One Attio deal record: id, url, and the standard attribute set as flat keys; picked custom attributes nest under custom_properties. Stage titles are workspace-defined.`,jsonMeta:{zodSchema:bn,exampleValue:xn}},attio_deal_matches:{order:90,label:`Attio deal matches`,type:`json`,format:`json_list`,description:`Matched Attio deals (newest first), each with id, url, and the selected attributes.`,jsonMeta:{zodSchema:Sn,exampleValue:Cn}},attio_entry_match:{order:90,label:`Attio list entry`,type:`json`,format:`json_object`,description:`One Attio list entry: entry id, the parent record's url and id, entry-level attribute values under entry_values, and picked parent attributes under custom_properties.`,jsonMeta:{zodSchema:En,exampleValue:Dn}},attio_record_found:{label:`Attio record found`,type:`boolean`,description:`Whether an Attio record was found (a clean miss is not an error).`,jsonMeta:null,format:null},attio_record_match:{order:90,label:`Attio record`,type:`json`,format:`json_object`,description:`One Attio record of any object (custom objects included): id, url, object, attribute values under values, and picked attributes under custom_properties.`,jsonMeta:{zodSchema:wn,exampleValue:Tn}},attio_update_result:{label:`Attio update result`,type:`json`,format:`json_object`,description:`Result of the Attio update: id, url, object, and updated attribute slugs.`,jsonMeta:{zodSchema:An,exampleValue:jn}},attio_activities_found_count:{label:`Attio activities found`,type:`number`,format:`int`,description:`Number of Attio activities (notes, meetings, tasks) linked to the record — the true total before the display cap.`,jsonMeta:null},attio_last_activity_date:{label:`Attio last activity date`,type:`string`,format:`text`,description:`Timestamp of the most recent Attio activity linked to the record — the chainable staleness gate (null when there is none).`,jsonMeta:null},attio_activities:{order:90,label:`Attio activities`,type:`json`,format:`json_list`,description:`Per-record activity timeline merged from Attio notes, meetings, and tasks (newest first): each item carries id, type, title, content, occurred_at, url, and type-specific fields.`,jsonMeta:{zodSchema:rn,exampleValue:an}},attio_workspace_member_id:{order:10,label:`Attio workspace member ID`,type:`string`,description:`Workspace member ID of the Attio user — matches actor-reference attributes (e.g. a deal's owner) on other Attio records.`,jsonMeta:null,format:`text`},attio_workspace_member_match:{order:90,label:`Attio workspace member`,type:`json`,format:`json_object`,description:`One Attio workspace member: id, email, name, access level, and avatar URL.`,jsonMeta:{zodSchema:On,exampleValue:kn}}},Eo={is_claim_successful:{},bucket_counter:{},found_in_bucket:{},bucket_event_count:{},bucket_event_last_at:{},signal_list:{getStaticWidgets(e){return Array.isArray(e)?{display_value:{label:`${e.length} ${e.length===1?`signal`:`signals`}`}}:{}}},signal_match:{getStaticWidgets(e){let t=e&&typeof e==`object`&&`signal_label`in e&&typeof e.signal_label==`string`?e.signal_label:null;return t?{display_value:{label:t}}:{}}},signal_count:{},signal_window_start:{},formula_result:{},company_description:{},cleaned_company_name:{},company_industry:{},icypeas_person_match:{getStaticWidgets(e){if(!e)return{};let t=e;return{display_value:{label:`${t.firstname} ${t.lastname} profile`}}}},icypeas_company_match:{getStaticWidgets(e){return e?{display_value:{label:`${e.name} profile`}}:{}}},person_profile_match:{},primary_job_title:{getStaticWidgets(e){return typeof e==`string`?{emoji:{value:Bi(e)}}:{}}},primary_seniority:{},primary_company_domain:{},company_region:{getStaticWidgets:e=>{let t={},n=So(e);return n&&(t.location_indicator={emoji:n}),t}},location_hint:{},estimated_revenue:{},founded_year:{},technology_list:{},spending_trend:{getStaticWidgets(e){let t=e;return{display_value:{label:`${t>3?`🔼🔼🔼`:t>1?`🔼🔼`:t>0?`🔼`:t<-3?`🔽🔽🔽`:t<-1?`🔽🔽`:t<0?`🔽`:``} ${Math.round(t*100)}%`}}}},technology_match_builtwith:{getStaticWidgets(e){return{display_value:{label:`Technology profile`}}}},number_of_social_followers:{},email:{},personal_email:{},alternate_personal_emails:{},company_news_summary:{},work_email:{},headcount:{},company_website_url:{},company_domain:{getStaticWidgets(e){return typeof e==`string`?{entity_logo:{entity:e,image_url:Ut(e)}}:{}}},company_name:{},first_name:{},addressee_name:{},address_line_1:{},address_line_2:{},job_title:{getStaticWidgets(e){return typeof e==`string`?{emoji:{value:Bi(e)}}:{}}},job_description:{},profile_headline:{},address_city:{},address_country:{},address_state:{},zip_code:{},last_name:{},is_work_email:{},name:{getStaticWidgets(e){return typeof e==`string`?{avatar:{image_url:``,name:e}}:{}}},ip_address:{},skills:{},avatar_url:{},string_input:{},domain:{},url_input:{},slugified:{},timestamp:{},http_response_status:{},http_response_body:{},http_response_headers:{},luma_id:{},registered_at:{},luma_event_guest_match:{getStaticWidgets(){return{display_value:{label:`Guest`}}}},google_calendar_event_id:{getStaticWidgets(e){return e?{entity_logo:{entity:`Google Calendar`,image_url:Ut(`calendar.google.com`)}}:{}}},event_title:{},attendee_emails:{},calendar_event_match:{getStaticWidgets(){return{display_value:{label:`Event`}}}},slack_user_id:{},slack_member_match:{getStaticWidgets(e){if(!e)return{};let t=e,n=t.member_real_name||t.member_display_name||t.member_handle;return n?{display_value:{label:n}}:{}}},estimated_salary:{},scrape_list_response:{},clado_person_match:{getStaticWidgets(e){return e?{display_value:{label:`${e.profile?.name||`Person`} profile`}}:{}}},clado_person_match_v2:{getStaticWidgets(e){return e?{display_value:{label:`${e.profile?.name||`Person`} profile`}}:{}}},company_social_url:{getStaticWidgets(e){let t=wo(e);return{display_value:t?{label:t}:void 0}}},crustdata_profile_match_score:{},is_email_valid:{},amplemarket_person_match:{getStaticWidgets(){return{display_value:{label:`Person match`}}}},amplemarket_company_match:{getStaticWidgets(){return{display_value:{label:`Company match`}}}},profile_url:{getStaticWidgets(e){let t=wo(e);return{display_value:t?{label:t}:void 0,icon:{key:`linkedin`}}}},company_profile_url:{getStaticWidgets(e){let t=wo(e);return{display_value:t?{label:t}:void 0,icon:{key:`linkedin`}}}},developer_profile_url:{},alternative_developer_profile_urls:{},profile_posts:{getStaticWidgets(){return{display_value:{label:`LinkedIn posts`}}}},profile:{getStaticWidgets(e){return e?{display_value:{label:`${e.name||`Person`} LinkedIn profile`}}:{}}},clado_person_profile:{getStaticWidgets(e){return e?{display_value:{label:`${e.profile?.name||`Person`} match`}}:{}}},email_subject:{},message:{},slack_message_success:{getStaticWidgets(e){return{display_value:{label:e?`✅ Sent`:`❌ Not sent`}}}},slack_direct_message_success:{getStaticWidgets(e){return{display_value:{label:e?`✅ Sent`:`❌ Not sent`}}}},resend_email_success:{getStaticWidgets(e){return{display_value:{label:e?`✅ Sent`:`❌ Not sent`}}}},email_body:{},mobile:{},landline:{},phone:{},funding_history:{},funding_total_usd:{},deal_name:{},deal_amount:{},leadmagic_competitor_list:{getStaticWidgets(e){return e?{display_value:{label:e.map(e=>e.company_name).slice(0,4).join(`, `)}}:{}}},leadmagic_acquisition_history:{getStaticWidgets(e){return e?{display_value:{label:e.map(e=>e.company_name).slice(0,4).join(`, `)}}:{}}},leadmagic_company_news_list:{getStaticWidgets(e){return e?{display_value:{label:`${e.length} news sources`}}:{}}},merge_result:{},website_markdown:{getStaticWidgets(e){return e?{display_value:{label:`📝 Markdown result`}}:{}}},urls:{},website_html:{},website_url:{},website_links:{},mapped_links:{},firecrawl_extract_result:{getStaticWidgets(){return{display_value:{label:`Extract result`}}}},parallel_extract_result:{getStaticWidgets(){return{display_value:{label:`Extract result`}}}},exa_match_evaluation:{getStaticWidgets(){return{display_value:{label:`Exa match`}}}},email_validation_status:{},million_validation_match:{getStaticWidgets(){return{display_value:{label:`Validation result`}}}},post_list_string:{getStaticWidgets(e){return{entity_logo:{entity:`LinkedIn`,image_url:Ht.linkedin}}}},crustdata_post_list:{getStaticWidgets(e){return{entity_logo:{entity:`LinkedIn`,image_url:Ht.linkedin}}}},crustdata_company_match:{},crustdata_company_match_v2:{},crustdata_company_identity_matches:{},crustdata_person_match:{},parallel_person_entity_match:{},parallel_company_entity_match:{},resend_contact_id:{},lemlist_lead_id:{},hubspot_contact_found:{},hubspot_contact_match:{},hubspot_companies_found_count:{},hubspot_company_match:{},hubspot_company_matches:{},hubspot_deals_found_count:{},hubspot_deal_match:{},hubspot_object_id:{getStaticWidgets(){return{entity_logo:{entity:`Hubspot`,image_url:Zt(`hubspot`).logoUrl}}}},hubspot_owner_id:{getStaticWidgets(){return{entity_logo:{entity:`Hubspot`,image_url:Zt(`hubspot`).logoUrl}}}},hubspot_owned_count:{},hubspot_owner_match:{},hubspot_deal_matches:{},hubspot_update_result:{},hubspot_associated_count:{},hubspot_associated_objects:{},hubspot_activity_result:{},salesforce_record_id:{getStaticWidgets(){return{entity_logo:{entity:`Salesforce`,image_url:Zt(`salesforce`).logoUrl}}}},salesforce_owned_count:{},salesforce_person_found:{},salesforce_accounts_found_count:{},salesforce_opportunities_found_count:{},salesforce_record_found:{},salesforce_record_created:{},salesforce_contact_match:{},salesforce_lead_match:{},salesforce_account_match:{},salesforce_account_matches:{},salesforce_opportunity_match:{},salesforce_opportunity_matches:{},salesforce_user_match:{},salesforce_person_match:{},salesforce_record_match:{},salesforce_update_result:{},salesforce_activities_found_count:{},salesforce_last_activity_date:{},salesforce_activities:{},salesforce_activity_result:{},lemlist_enrollment_result:{getStaticWidgets(e){return e?{display_value:{label:`Enrolled`}}:{}}},amplemarket_sequence_id:{},sheet_record_id:{},sheet_record_ids:{},sheet_rows_found_count:{},sheet_deleted_count:{},sheet_found_rows:{getStaticWidgets(e){if(!e)return{};let t=e;return{display_value:{label:`${t.length} row${t.length===1?``:`s`}`}}}},sheet_found_row_ids:{},db_rows_found_count:{},db_found_rows:{getStaticWidgets(e){if(!e)return{};let t=e;return{display_value:{label:`${t.length} row${t.length===1?``:`s`}`}}}},companyenrich_match:{},companyenrich_matches:{},input_objects:{},role_finder_match:{},sheet:{},logodev_describe_match:{getStaticWidgets(){return{display_value:{label:`Match`}}}},logo_url:{getStaticWidgets(){return{display_value:{label:`Logo URL`}}}},post_match:{},post_text:{},post_id:{},mobile_number:{},created_sheet:{},professional_profile:{},professional_profile_url:{},crustdata_companyenrich_match:{},template_output:{},zerobounce_validation_match:{},zerobounce_validation_status:{getStaticWidgets(e){return{display_value:{label:e===`valid`?`✅ Valid`:e===`invalid`?`❌ Invalid`:e===`catch-all`?`⚾️ Catch All`:e===`abuse`?`⚠️ Abuse`:e===`do_not_mail`?`❌❌ Do not mail`:e===`spamtrap`?`❌❌❌ Spam Trap`:e}}}},gmail_email_success:{getStaticWidgets(e){return{display_value:{label:e?`✅ Sent`:`❌ Not sent`}}}},gmail_draft_id:{getStaticWidgets(e){return{display_value:{label:e?`✅ Draft created`:`❌ No draft`}}}},attio_record_id:{getStaticWidgets(){return{entity_logo:{entity:`Attio`,image_url:Zt(`attio`).logoUrl}}}},attio_entry_id:{getStaticWidgets(){return{entity_logo:{entity:`Attio`,image_url:Zt(`attio`).logoUrl}}}},attio_person_found:{},attio_person_match:{},attio_companies_found_count:{},attio_company_match:{},attio_company_matches:{},attio_deals_found_count:{},attio_deal_match:{},attio_deal_matches:{},attio_entry_match:{},attio_record_found:{},attio_record_match:{},attio_update_result:{},attio_activities:{},attio_activities_found_count:{},attio_last_activity_date:{},attio_workspace_member_id:{getStaticWidgets(){return{entity_logo:{entity:`Attio`,image_url:Zt(`attio`).logoUrl}}}},attio_workspace_member_match:{}};function g(e){return{...To[e],name:e}}function Do(e,t){if(Ao(e,t))return Eo[e]}function Oo(e){return e in To}function ko(e){return Oo(e)?To[e].order??null:null}function Ao(e,t){return e in To?To[e].format===t:!1}function jo(e,t,n){if(!t.added_by||t.added_by.ref===`input`||t.added_by.pipe_index==null)throw Error(`Tried to find output field info for field not generated by pipe: ${e}, added_by: ${t.added_by}`);let r=n.orderedPipeInstances[t.added_by.pipe_index];if(!r)throw Error(`Unable to find pipe instance at index ${t.added_by.pipe_index} for resolved field ${e}`);let i=Object.entries(r.getOutputFields()).find(([t,n])=>n.resolvedName===e);if(!i)throw Error(`Resolved pipe output field '${e}' not found for pipe ${t.added_by.ref}`);let[a,o]=i;return{fieldName:a,...o}}const Mo=r.enum(`company_description.cleaned_company_name.company_industry.company_region.location_hint.estimated_revenue.founded_year.technology_list.spending_trend.technology_match_builtwith.number_of_social_followers.email.personal_email.alternate_personal_emails.company_news_summary.work_email.headcount.company_website_url.company_domain.company_name.first_name.addressee_name.address_line_1.address_line_2.job_title.job_description.profile_headline.address_city.address_country.address_state.zip_code.last_name.is_work_email.companyenrich_match.companyenrich_matches.name.ip_address.skills.avatar_url.estimated_salary.is_email_valid.profile_url.developer_profile_url.alternative_developer_profile_urls.company_profile_url.profile_posts.clado_person_match.clado_person_match_v2.icypeas_person_match.icypeas_company_match.clado_person_profile.resend_email_success.email_body.email_subject.profile.mobile.landline.phone.message.slack_message_success.slack_direct_message_success.slack_user_id.slack_member_match.funding_history.funding_total_usd.deal_name.deal_amount.template_output.gmail_email_success.gmail_draft_id.zerobounce_validation_status.zerobounce_validation_match.leadmagic_competitor_list.leadmagic_acquisition_history.leadmagic_company_news_list.merge_result.mapped_links.website_markdown.website_html.website_url.urls.website_links.firecrawl_extract_result.parallel_extract_result.exa_match_evaluation.email_validation_status.million_validation_match.scrape_list_response.resend_contact_id.sheet_record_id.sheet_record_ids.sheet_rows_found_count.sheet_deleted_count.sheet_found_rows.sheet_found_row_ids.db_rows_found_count.db_found_rows.input_objects.role_finder_match.logodev_describe_match.logo_url.crustdata_company_match.crustdata_company_match_v2.crustdata_companyenrich_match.crustdata_company_identity_matches.crustdata_person_match.person_profile_match.primary_job_title.primary_seniority.primary_company_domain.parallel_person_entity_match.parallel_company_entity_match.post_list_string.crustdata_post_list.crustdata_profile_match_score.amplemarket_person_match.amplemarket_company_match.created_sheet.sheet.string_input.domain.url_input.slugified.timestamp.http_response_status.http_response_body.http_response_headers.luma_id.registered_at.luma_event_guest_match.google_calendar_event_id.event_title.attendee_emails.calendar_event_match.post_match.post_text.post_id.lemlist_lead_id.lemlist_enrollment_result.amplemarket_sequence_id.is_claim_successful.bucket_counter.found_in_bucket.bucket_event_count.bucket_event_last_at.signal_list.signal_match.signal_count.signal_window_start.formula_result.hubspot_contact_found.hubspot_contact_match.hubspot_companies_found_count.hubspot_company_match.hubspot_company_matches.hubspot_deals_found_count.hubspot_deal_match.hubspot_deal_matches.hubspot_owner_id.hubspot_owned_count.hubspot_owner_match.hubspot_object_id.hubspot_update_result.hubspot_associated_count.hubspot_associated_objects.hubspot_activity_result.salesforce_record_id.salesforce_owned_count.salesforce_person_found.salesforce_accounts_found_count.salesforce_opportunities_found_count.salesforce_record_found.salesforce_record_created.salesforce_contact_match.salesforce_lead_match.salesforce_account_match.salesforce_account_matches.salesforce_opportunity_match.salesforce_opportunity_matches.salesforce_user_match.salesforce_person_match.salesforce_record_match.salesforce_update_result.salesforce_activities.salesforce_activities_found_count.salesforce_last_activity_date.salesforce_activity_result.attio_record_id.attio_entry_id.attio_person_found.attio_person_match.attio_companies_found_count.attio_company_match.attio_company_matches.attio_deals_found_count.attio_deal_match.attio_deal_matches.attio_entry_match.attio_record_found.attio_record_match.attio_update_result.attio_activities.attio_activities_found_count.attio_last_activity_date.attio_workspace_member_id.attio_workspace_member_match.professional_profile_url.professional_profile.company_social_url.mobile_number`.split(`.`)),No=r.enum(`pipe0.findymail.crustdata.hunter.zerobounce.millionverifier.googlemaps.gemini.anthropic.leadmagic.mixrank.builtwith.perplexity.serper.icypeas.prospeo.clado.resend.slack.gmail.googlecalendar.firecrawl.exa.openai.companyenrich.logodev.amplemarket.parallel.luma.postgres.databricks.lemlist.hubspot.salesforce.attio`.split(`.`)),Po=r.enum([`production`,`sandbox`]),Fo=`prompt:run@1.agent:run@1.company:newssummary:website@1.company:newssummary:domain@1.company:techstack:builtwith@1.company:techstack:builtwith@2.company:websiteurl:email@1.company:domain:workemail@1.company:funding:leadmagic@1.company:funding:leadmagic@2.company:funding:waterfall@1.people:workemail:waterfall@1.person:workemail:waterfall@1.people:email:iswork@1.email:iswork@1.people:name:split@1.person:name:split@1.person:name:join@1.people:validate:email:zerobounce@1.people:email:validate:zerobounce@2.email:validate:zerobounce@1.people:mobilenumber:workemail:waterfall@1.company:overview@1.company:overview@2.company:overview@3.json:extract:multi@1.email:write@1.message:write@1.email:send:resend@1.email:send:gmail@1.email:draft:gmail@1.message:send:slack@1.message:send-direct:slack@1.template:fill@1.contact:create:resend@1.lead:enroll:lemlist@1.contact:match:hubspot@1.company:match:hubspot@1.deal:match:hubspot@1.object:update:hubspot@1.object:associations:hubspot@1.activity:log:hubspot@1.person:match:salesforce@1.account:match:salesforce@1.opportunity:match:salesforce@1.record:lookup:salesforce@1.record:update:salesforce@1.record:assert:salesforce@1.activities:find:salesforce@1.activity:log:salesforce@1.person:match:attio@1.company:match:attio@1.deal:match:attio@1.record:match:attio@1.record:lookup:attio@1.record:update:attio@1.activities:find:attio@1.lead:enroll:amplemarket@1.people:match:role:waterfall@1.person:match:role:waterfall@1.person:identity:amplemarket@1.company:identity@2.company:identity@3.company:identity:crustdata@1.person:match:amplemarket@1.people:phone:profile:waterfall@1.person:mobile:profileurl:waterfall@1.people:personalemail:profile:waterfall@1.person:personalemail:profileurl:waterfall@1.people:profile:waterfall@1.person:profile:waterfall@1.person:profile:waterfall@2.people:profileurl:email:waterfall@1.person:profileurl:email:waterfall@1.person:profileurl:name@1.people:email:validate:zerobounce@1.person:email:validate:millionverifier@1.people:phone:workemail:waterfall@1.person:mobile:workemail:waterfall@1.fields:merge@1.field:slugify@1.field:domainify@1.field:timestamp@1.formula:run@1.signals:personprofilematch@1.website:scrape:firecrawl@1.website:scrapelist:firecrawl@1.website:extract:firecrawl@1.website:extract:parallel@1.website:maplinks:firecrawl@1.row:append:sheet@1.row:expandappend:sheet@1.row:roundrobin:sheet@1.bucket:claim@1.bucket:count@1.bucket:check@1.bucket:countif@1.rows:find:sheet@1.rows:delete:sheet@1.rows:find:postgres@1.rows:find:databricks@1.company:lookalikes:companyenrich@1.company:lookalikes:companyenrich@2.company:match:logodev@1.company:match:logodev@2.person:posts:content:crustdata@1.company:match:crustdata@1.company:match:crustdata@2.people:profile:workemail:crustdata@1.person:profile:workemail:crustdata@1.people:workemail:profileurl:waterfall@1.person:workemail:profileurl:waterfall@1.people:identity:email:waterfall@1.person:identity:email:waterfall@1.person:identity:email:waterfall@2.person:devprofileurl:profileurl:waterfall@1.http:request@1.company:identity@1.people:professionalprofile:waterfall@1.people:professionalprofileurl:name@1.people:professionalprofileurl:email:waterfall@1.people:mobilenumber:professionalprofile:waterfall@1`.split(`.`),Io=r.enum(Fo),Lo=[`string`,`number`,`boolean`,`json`,`unknown`],Ro=r.enum(Lo),zo=r.union([r.number(),r.string()]),Bo=r.union([r.literal(`completed`),r.literal(`failed`),r.literal(`pending`),r.literal(`queued`),r.literal(`processing`),r.literal(`no_result`),r.literal(`skipped`)]),Vo=r.union([r.string().min(1),r.number(),r.boolean(),r.null(),r.record(r.string(),r.unknown()),r.array(r.unknown())]),Ho=r.object({example_value:r.any().nullable(),schema:r.any().nullable()}),Uo=r.object({type:r.literal(`static`).optional()}),Wo=Uo.extend({image_url:r.url().describe(`URL to the provider's logo image.`),entity:r.string().describe(`The name of the entity.`)}),Go=Uo.extend({emoji:r.string().describe(`Country flag emoji.`)}),Ko=Uo.extend({image_url:r.url().describe(`URL to the provider's logo image.`),name:r.string().describe(`The name of the avatar owner.`)}),qo=Uo.extend({attempted_providers:r.array(r.object({provider:No})),available_providers:r.array(No),successful_provider:No.optional()}),Jo=r.enum([`linkedin`,`job`]),Yo=Uo.extend({key:Jo}).optional(),Xo=Uo.extend({result_status:r.enum([`completed`,`failed`])}).optional(),Zo=Uo.extend({list:r.array(r.object({source:r.string(),description:r.string().optional(),url:r.string()}))}).optional(),Qo=Uo.extend({numeric:r.int().min(1).max(5)}).optional(),$o=Uo.extend({value:r.string().min(1)}).optional(),es=r.object({display_value:Uo.extend({label:r.string().optional()}),entity_logo:Wo.optional(),location_indicator:Go.optional(),avatar:Ko.optional(),waterfall:qo.optional(),icon:Yo,action_summary:Xo,sources:Zo,confidence:Qo,emoji:$o}).partial().describe(`A map of widgets associated with this field for UI display, keyed by widget type.`),ts=r.object({code:r.string(),message:r.string(),path:r.string().optional()}),ns=r.object({code:r.string(),summary:r.string(),message:r.string()}),rs=[`json_object`,`json_list`,`json_list_string`,`url`,`website_url`,`profile_url`,`email`,`datetime`,`currency`,`date`,`phone`,`markdown`,`text`,`int`,`decimal`,`address_line_1`,`zip_code`,`percent`],is=r.enum(rs);is.nullable();const as=r.object({type:Ro,label:r.string().nullable().optional(),format:is.nullable().optional(),json_metadata:Ho.nullable().optional(),order:r.number().nullable().optional()}),os=r.record(r.string(),as),ss=r.strictObject({order:r.number().int().gte(-1e9).lte(1e9).nullable()}),cs=r.enum([...Fo,`input`]).nullable(),ls=r.enum([...Fo,`input`,`system`]).nullable(),us=r.object({ref:cs,config_hash:r.string().nullable()}),ds=r.object({ref:ls,environment:Po.nullable(),config_hash:r.string().nullable(),input_hash:r.string().nullable()}),fs=r.object({value:Vo,status:Bo,type:Ro,reason:ns.nullable(),claimed_by:us,resolved_by:ds.nullable(),widgets:es.optional(),format:is.nullable()}),ps=r.object({value:Vo,status:Bo,reason:ns.nullable().optional(),type:Ro.optional(),format:is.nullable().optional(),claimed_by:us.optional(),resolved_by:ds.nullable().optional(),widgets:es.optional()}),ms=r.record(r.string(),r.union([Vo,ps])).openapi(`PipesInput`),hs=r.object({id:zo,fields:r.record(zo,fs)}),gs=r.object({type:r.literal(`catalog`),fieldName:r.string().min(1)}),_s=r.object({type:Ro,label:r.string(),added_by:r.object({ref:r.union([Io,r.literal(`input`)]),config_hash:r.string().nullable(),pipe_index:r.number().nullable()}),format:is.nullable(),is_primary_output:r.boolean(),order:r.number().nullable().optional()}),vs=r.record(r.string(),_s),ys=r.object({field_name:r.string().min(1),extractions:r.array(r.object({path:r.string().min(1),output_field:r.object({name:r.string().min(1),format:is.nullable().default(null),label:r.string().optional(),type:Ro})})).min(1).check(e=>{let t=new Set;Object.values(e.value).forEach(n=>{t.has(n.output_field.name)?e.issues.push({code:`custom`,message:`Output field names must be unique. The name ${n.output_field.name} exists more than once in your config.`,input:e.value}):t.add(n.output_field.name)})})}),bs=r.enum([`eq`,`neq`,`gt`,`gte`,`lt`,`lte`,`contains`,`matches`,`older_than_days`,`within_last_days`]),xs={eq:`equals`,neq:`not equals`,gt:`greater than`,gte:`greater than or equal`,lt:`less than`,lte:`less than or equal`,contains:`contains`,matches:`matches regex`,older_than_days:`older than (days)`,within_last_days:`within last (days)`},Ss=[`eq`,`neq`,`gt`,`gte`,`lt`,`lte`,`contains`,`matches`,`older_than_days`,`within_last_days`],Cs=[`eq`,`neq`],ws=r.object({type:r.literal(`vault`),connection:r.string().refine(e=>{let t=e.split(`_`)[0];return t!=null&&No.safeParse(t).success},{message:`Invalid vault connection string: expected the full provider-prefixed value (e.g. "slack_my-workspace") where the segment before the first "_" is a known provider name. Copy the string exactly as the vault lists it — never strip the prefix.`})}),Ts=r.object({strategy:r.enum([`first`]).default(`first`),connections:r.array(ws)}).nullable().optional(),Es=r.object({strategy:r.enum([`first`]).default(`first`),connections:r.array(ws).min(1,{message:`Provide your own credentials to use this object.`})},{error:`Provide your own credentials to use this object.`}),Ds=r.object({strategy:r.enum([`first`]).default(`first`),connections:r.array(r.object({type:r.literal(`vault`),connection:r.string()})).max(0,{message:`This pipe does not support custom connectors.`})}).optional().nullable(),Os=r.enum(Ss),ks=r.enum(Cs),As=r.enum([`failed`,`no_result`,`completed`,`skipped`]),js=r.object({property:r.literal(`value`).describe(`Compare the actual field value. Use operators: eq, neq, gt, gte, lt, lte, contains, matches, older_than_days, within_last_days.`),field_name:r.string().min(1,{message:`Provide a target field for the condition.`}).describe(`Name of a field from input data or produced by an earlier pipe in the workflow.`),operator:Os.describe(`Comparison operator: "eq", "neq", "gt", "gte", "lt", "lte", "contains", "matches" (regex), "older_than_days" / "within_last_days" (relative to now, evaluated at run time — for date/datetime fields).`),value:r.union([r.number(),r.string(),r.boolean(),r.null()]).describe(`The value to compare the field against. Must be a primitive (string, number, boolean, or null). For older_than_days/within_last_days it is the number of days.`).check(e=>{(e.value===void 0||e.value===``)&&e.issues.push({code:`custom`,input:e.value,message:`Provide a value to compare against.`}),typeof e.value==`object`&&e.value!==null&&e.issues.push({code:`custom`,input:e.value,message:`Conditions can only be defined on primitive fields. To apply a condition on a JSON value, expand it into an object first.`})})}),Ms=r.object({property:r.literal(`status`).describe(`Compare the field resolution status instead of its value. Use operators: eq, neq.`),field_name:r.string().min(1).describe(`Name of a field from input data or produced by an earlier pipe in the workflow.`),operator:ks.describe(`Status comparison operator: "eq" or "neq".`),value:As.describe(`Field status to compare against: "completed", "no_result", "failed", or "skipped".`)}),Ns=r.object({logic:r.enum([`and`,`or`]).describe(`"and" = all conditions must match. "or" = any condition matches.`),conditions:r.array(r.discriminatedUnion(`property`,[js,Ms])).min(1).describe(`Array of conditions to evaluate. Each condition checks either a field value or its resolution status.`)}).describe(`Condition block. All conditions are combined with the chosen logic (and/or).`),Ps=r.object({logic:r.enum([`and`,`or`]).describe(`"and" = all conditions must match. "or" = any condition matches.`),conditions:r.array(js).min(1).describe(`Array of value conditions to evaluate.`)}).describe(`Condition block. All conditions are combined with the chosen logic (and/or).`),Fs=r.object({action:r.enum([`run`]).default(`run`).describe(`What to do when conditions match. Defaults to "run" (run the pipe only on matching records). Reserved for future extension.`),when:Ns}).describe(`Run-if gate for a pipe. When set, the pipe only runs on records matching the conditions. Example: { "when": { "logic": "and", "conditions": [{ "property": "status", "field_name": "work_email", "operator": "neq", "value": "no_result" }] } }`),Is=[`if`,`elsif`,`else`,`endif`,`unless`,`endunless`,`for`,`endfor`,`break`,`continue`,`output`],Ls=[`json`,`escape`,`escape_once`,`default`,`upcase`,`downcase`,`size`,`join`,`first`,`last`,`replace`,`truncate`,`strip`,`newline_to_br`,`url_encode`],Rs=/^[A-Z][A-Z0-9_]*$/,zs=/^[A-Z][A-Z0-9_]*$/,Bs=/^[a-zA-Z_][a-zA-Z0-9_]*$/,Vs=`SECRETS`,Hs=`CONSTANTS`,Us=new Set(Is),Ws=new Set(Ls),Gs=e=>`{${e}}`;var Ks=class extends u{constructor(e){super(),this.values=e}liquidMethodMissing(e){let t=String(e);if(!Rs.test(t))throw Error(`Secret key "${t}" must be uppercase letters, digits, and underscores (e.g. SECRETS.API_KEY).`);if(!(t in this.values))throw Error(`Missing secret: SECRETS.${t}`);return this.values[t]}},qs=class extends u{constructor(e){super(),this.values=e}liquidMethodMissing(e){let t=String(e);if(!zs.test(t))throw Error(`Constant key "${t}" must be uppercase letters, digits, and underscores (e.g. CONSTANTS.PROMO).`);if(!(t in this.values))throw Error(`Missing constant: CONSTANTS.${t}`);return this.values[t]}};function Js(e){let t=e.trim();if(!t)throw Error(`Empty {% output %} tag — expected at least a name (e.g. {% output rec, type: "string", description: "..." %}).`);let n=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\s*(?:,|$)/);if(!n||!n[1])throw Error(`Invalid {% output %} tag — expected a name as the first argument, got: ${t}`);let r=n[1];if(!Bs.test(r))throw Error(`Invalid {% output %} tag name "${r}" — must start with a letter or underscore and contain only letters, digits, and underscores.`);let i=t.slice(n[0].length).trim(),a={},o=/([a-zA-Z_][a-zA-Z0-9_]*)\s*:\s*(?:"((?:\\.|[^"\\])*)"|'((?:\\.|[^'\\])*)'|(true|false))\s*(?:,|$)/g,s=0,c;for(;(c=o.exec(i))!==null;){s=c.index+c[0].length;let e=c[1],t=c[2]??c[3]??c[4];c[4]===void 0?a[e]=t:a[e]=t===`true`}if(i&&s<i.length)throw Error(`Invalid {% output %} tag — could not parse arguments after "${i.slice(s)}". Expected key: "value" pairs.`);let l=a.type;if(typeof l!=`string`||!l)throw Error(`{% output ${r} %} tag is missing required "type" argument (e.g. type: "string").`);let u=a.description;if(typeof u!=`string`||!u)throw Error(`{% output ${r} %} tag is missing required "description" argument (e.g. description: "What this means.").`);return{name:r,type:l,description:u,required:typeof a.required==`boolean`?a.required:!0,format:typeof a.format==`string`?a.format:null,schemaRef:typeof a.schema==`string`?a.schema:null}}function Ys(){let e=new d({strictVariables:!1,strictFilters:!0,jsTruthy:!0,greedy:!1,catchAllErrors:!1,ownPropertyOnly:!0});e.registerTag(`output`,{parse(e,t){let n=Js(e.args);this.outputDecl=n},render(e,t){let n=this.outputDecl;if(!(e.globals&&e.globals.__outputAllowed))throw Error(`{% output %} is not allowed in this template (referenced output "${n.name}").`);t.write(Gs(n.name))}});for(let t of Object.keys(e.tags))Us.has(t)||delete e.tags[t];for(let t of Object.keys(e.filters))Ws.has(t)||delete e.filters[t];return e}let Xs=null;function Zs(){return Xs||=Ys(),Xs}async function Qs(e,t,n={}){let r=Zs(),i=n.renderLimitMs??250,a={...t.inputs??{},[Vs]:new Ks(t.secrets??{}),[Hs]:new qs(t.constants??{})},o={globals:{__outputAllowed:n.outputAllowed===!0},renderLimit:i},s=await Promise.race([r.parseAndRender(e,a,o),new Promise((e,t)=>setTimeout(()=>t(Error(`Liquid render exceeded ${i}ms.`)),i))]);return String(s)}function $s(e,t,n={}){let r=Zs(),i=n.renderLimitMs??250,a={...t.inputs??{},[Vs]:new Ks(t.secrets??{}),[Hs]:new qs(t.constants??{})},o=r.parseAndRenderSync(e,a,{globals:{__outputAllowed:n.outputAllowed===!0},renderLimit:i});return String(o)}function ec(e){return Zs().parse(e)}function tc(e){let t=Zs().parse(e),n={scopeStack:[],guardStack:[],inputs:new Map,secrets:new Set,constants:new Set,outputs:[],forDepth:0};nc(t,n);let r={};for(let[e,t]of n.inputs)r[e]={required:t.unguardedRefs>0};return{inputs:r,secrets:[...n.secrets],constants:[...n.constants],outputs:n.outputs}}function nc(e,t){for(let n of e)rc(n,t)}function rc(e,t){let n=e;if(n.value&&typeof n.value==`object`&&`filters`in n.value&&`initial`in n.value){cc(n.value,t,!1);return}if(typeof n.name==`string`){ic(n,t);return}}function ic(e,t){switch(e.name){case`for`:ac(e,t);return;case`if`:case`unless`:oc(e,t);return;case`output`:sc(e,t);return;case`break`:case`continue`:return;default:throw Error(`Unhandled liquid tag in analyzer: ${e.name}`)}}function ac(e,t){if(t.forDepth+=1,t.forDepth>3)throw Error(`Liquid template exceeds maximum nested {% for %} depth of 3.`);e.collection!==void 0&&e.collection!==null&&lc(e.collection,t,!1);let n=typeof e.variable==`string`?e.variable:null;n&&t.scopeStack.push(n),nc(Array.isArray(e.templates)?e.templates:[],t),n&&t.scopeStack.pop(),nc(Array.isArray(e.elseTemplates)?e.elseTemplates:[],t),--t.forDepth}function oc(e,t){let n=Array.isArray(e.branches)?e.branches:[];e.name;for(let e=0;e<n.length;e++){let r=n[e],i=r.value,a=null;e===0&&i&&typeof i==`object`&&(a=fc(i.initial)),a&&t.guardStack.push(a),i&&typeof i==`object`&&cc(i,t,!1),nc(r.templates,t),a&&t.guardStack.pop()}nc(Array.isArray(e.elseTemplates)?e.elseTemplates:[],t)}function sc(e,t){let n=e.outputDecl;if(!n){let t=e.token?.args;typeof t==`string`&&(n=Js(t))}if(!n)throw Error(`Internal: {% output %} tag missing parsed declaration.`);t.outputs.push({name:n.name,type:n.type,description:n.description,required:n.required,format:n.format,schemaRef:n.schemaRef??void 0})}function cc(e,t,n){let r=e.filters.some(e=>e.name===`default`),i=n||r;for(let n of e.initial.postfix)pc(n)&&dc(n,t,i);for(let n of e.filters)for(let e of n.args)uc(e,t)}function lc(e,t,n){pc(e)&&dc(e,t,n)}function uc(e,t){if(Array.isArray(e)){let n=e[1];n&&lc(n,t,!1)}else lc(e,t,!1)}function dc(e,t,n){let r=e.props;if(r.length===0)return;let i=r[0];if(!i||!mc(i))return;let a=i.content;if(t.scopeStack.includes(a))return;if(a===`SECRETS`){let e=r[1];if(!e||!mc(e))throw Error(`Invalid SECRETS reference — expected SECRETS.KEY (got ${_c(r)}).`);let n=e.content;if(!Rs.test(n))throw Error(`Invalid SECRETS key "${n}" — must be uppercase letters, digits, and underscores (e.g. SECRETS.API_KEY).`);t.secrets.add(n);return}if(a===`CONSTANTS`){let e=r[1];if(!e||!mc(e))throw Error(`Invalid CONSTANTS reference — expected CONSTANTS.KEY (got ${_c(r)}).`);let n=e.content;if(!zs.test(n))throw Error(`Invalid CONSTANTS key "${n}" — must be uppercase letters, digits, and underscores (e.g. CONSTANTS.PROMO).`);t.constants.add(n);return}let o=n||t.guardStack.includes(a),s=t.inputs.get(a)??{unguardedRefs:0,guardedRefs:0};o?s.guardedRefs+=1:s.unguardedRefs+=1,t.inputs.set(a,s)}function fc(e){if(e.postfix.length===1){let t=e.postfix[0];if(t&&pc(t)&&t.props.length===1){let e=t.props[0];if(e&&mc(e))return e.content}}if(e.postfix.length===3){let[t,n,r]=e.postfix;if(t&&n&&r&&pc(t)&&t.props.length===1){let e=t.props[0];if(e&&mc(e)&&hc(n)&&gc(r,[`==`,`!=`]))return e.content}}return null}function pc(e){return e.kind===f.PropertyAccess}function mc(e){return!!e&&typeof e==`object`&&e.kind===f.Word}function hc(e){if(e.kind!==f.Literal)return!1;let t=e.literal;return t===`nil`||t===`null`}function gc(e,t){return e.kind===f.Operator?t.includes(e.operator):!1}function _c(e){let t=[];for(let n of e)n&&mc(n)?t.push(n.content):t.push(`?`);return t.join(`.`)}const vc=`default`;function yc(e){let t=e.split(`_`),n=t[0],r=t.slice(1).join(`_`);if(!n)throw Error(`connection string of invalid format`);try{return{provider:No.parse(n),id:r}}catch{throw Error(`Connection string ${e}: Failed to parse provider name.`)}}function bc(e){return`${e.provider}_${e.id}`}const xc=new p;function Sc(e){return xc.validateSchema(e)}function Cc(e){let t=!1;return ee(e,{},e=>{e.type&&[`string`,`number`,`boolean`,`integer`,`null`].includes(e.type)&&(t=!0),e.type===`object`&&e.properties&&Object.keys(e.properties).length>0&&(t=!0),e.type===`array`&&e.items&&(t=!0)}),!t}function wc(e){try{return JSON.parse(e)}catch{}return JSON.parse(kc(e))}function Tc(e){try{return wc(e)}catch{return}}const Ec=/[A-Za-z_$]/,Dc=/[\w$]/,Oc=/\s/;function kc(e){let t=``,n=0,r=e.length;for(;n<r;){let i=e[n];if(i===`"`||i===`'`){let a=i,o=``;for(n++;n<r&&e[n]!==a;){if(e[n]===`\\`){o+=`\\${e[n+1]??``}`,n+=2;continue}o+=e[n],n++}n++,t+=JSON.stringify(Ac(o));continue}if(Ec.test(i)){let i=n;for(;i<r&&Dc.test(e[i]);)i++;let a=e.slice(n,i),o=i;for(;o<r&&Oc.test(e[o]);)o++;t+=e[o]===`:`?JSON.stringify(a):a,n=i;continue}if(i===`,`){let t=n+1;for(;t<r&&Oc.test(e[t]);)t++;if(e[t]===`}`||e[t]===`]`){n++;continue}}t+=i,n++}return t}function Ac(e){let t=``;for(let n=0;n<e.length;n++){if(e[n]!==`\\`){t+=e[n];continue}let r=e[++n];switch(r){case`n`:t+=`
|
|
68
|
-
`;break;case`t`:t+=` `;break;case`r`:t+=`\r`;break;case`b`:t+=`\b`;break;case`f`:t+=`\f`;break;case`v`:t+=`\v`;break;case`0`:t+=`\0`;break;case`u`:{let r=e.slice(n+1,n+5);/^[0-9a-fA-F]{4}$/.test(r)?(t+=String.fromCharCode(Number.parseInt(r,16)),n+=4):t+=`u`;break}default:t+=r??``;break}}return t}const _=(e,t=`Add a ${e} connection to enable this field`)=>n=>(n.connector?.connections??[]).some(t=>t?.connection?.startsWith(`${e}_`))?{disabled:!1}:{disabled:!0,message:t},jc=(e,t)=>n=>{let r=e(n);return r!=null&&r!==``?{disabled:!1}:{disabled:!0,message:t}},Mc=(...e)=>t=>{for(let n of e){let e=n(t);if(e.disabled)return e}return{disabled:!1}},Nc=(...e)=>t=>{let n={disabled:!0,message:`No condition matched`};for(let r of e){let e=r(t);if(!e.disabled)return e;n=e}return n},Pc=[`google-low`,`openai-high`,`openai-medium`,`anthropic-high`,`anthropic-low`],Fc={"google-low":{label:`Gemini 3.5 Flash`,provider:`gemini`,rateLimitOperation:`gemini_35_flash`,rateLimitRatio:1,allowManagedConnection:!0,billingMode:`always`},"openai-high":{label:`GPT 5.6 Sol`,provider:`openai`,rateLimitOperation:`openai_gpt-5`,rateLimitRatio:1,allowManagedConnection:!0,billingMode:`always`},"openai-medium":{label:`GPT 5.6 Terra`,provider:`openai`,rateLimitOperation:`openai_gpt-5-6-terra`,rateLimitRatio:1,allowManagedConnection:!0,billingMode:`always`},"anthropic-high":{label:`Claude Opus 4.8`,provider:`anthropic`,rateLimitOperation:`anthropic_opus`,rateLimitRatio:1,allowManagedConnection:!0,billingMode:`always`},"anthropic-low":{label:`Claude Sonnet 5`,provider:`anthropic`,rateLimitOperation:`anthropic_sonnet`,rateLimitRatio:1,allowManagedConnection:!0,billingMode:`always`}},Ic=.03,Lc=.3,Rc=100,zc=100,Bc={"google-low":{inputPer1M:1.5,outputPer1M:9},"openai-high":{inputPer1M:5,outputPer1M:30},"openai-medium":{inputPer1M:2.5,outputPer1M:15},"anthropic-high":{inputPer1M:5,outputPer1M:25},"anthropic-low":{inputPer1M:1,outputPer1M:5}},Vc=`openai-medium`,Hc=`openai-medium`,Uc=`openai-medium`;function Wc(e){let t=Fc[e];if(!t)throw Error(`Unknown AI model: ${e}`);return[t.provider]}function Gc(e){let t=Fc[e];if(!t)throw Error(`Unknown AI model: ${e}`);return[{provider:t.provider,rateLimitRatio:t.rateLimitRatio,rateLimitOperation:t.rateLimitOperation,allowManagedConnection:t.allowManagedConnection}]}function Kc(){let e=new Set;for(let t of Pc)e.add(Fc[t].provider);return[...e]}function qc(e){return Object.keys(e).some(e=>Pc.some(t=>e.endsWith(`-in-${t}`)||e.endsWith(`-out-${t}`)))}function Jc(e,t){return e/1e6*(1+Lc)/Ic*t}function Yc(e){let t=Bc[e];if(!t)throw Error(`Unknown AI model: ${e}`);return{in:Jc(t.inputPer1M,100),out:Jc(t.outputPer1M,100)}}function Xc(e,t){let n=Math.round(Lc*100);return`Billed per 100 ${e} tokens at ${Number(t.toPrecision(4))} credits/block (managed keys include a ${n}% margin over provider cost).`}function Zc(e){let t={};for(let n of Pc){let r=Fc[n],i=Yc(n);t[`${e}-in-${n}`]={credits:{default:i.in},allowManagedConnection:!0,provider:r.provider,mode:r.billingMode,note:Xc(`input`,i.in)},t[`${e}-out-${n}`]={credits:{default:i.out},allowManagedConnection:!0,provider:r.provider,mode:r.billingMode,note:Xc(`output`,i.out)}}return t}function Qc(e,t){return{input:`${t}-in-${e}`,output:`${t}-out-${e}`}}function $c(e,t){let n=Qc(t.model,t.prefix);return[{billableOperation:n.input,quantity:e.count*Math.ceil(t.inputTokens/100)},{billableOperation:n.output,quantity:e.count*Math.ceil(t.outputTokens/100)}]}var el=class{carriedInput=0;carriedOutput=0;addUsage(e){this.carriedInput+=Math.max(0,e.inputTokens),this.carriedOutput+=Math.max(0,e.outputTokens)}drainBlocks(){let e=Math.floor(this.carriedInput/100),t=Math.floor(this.carriedOutput/100);return this.carriedInput-=e*100,this.carriedOutput-=t*100,{inBlocks:e,outBlocks:t}}flush(){let e=+(this.carriedInput>0),t=+(this.carriedOutput>0);return this.carriedInput=0,this.carriedOutput=0,{inBlocks:e,outBlocks:t}}};function tl(e){if(!e?.requires)return;let t=[];e.requires.connection&&t.push(_(e.requires.connection));for(let n of e.requires.fields??[])t.push(jc(e=>n.split(`.`).reduce((e,t)=>e==null?e:e[t],e),`Set ${n} first`));if(t.length!==0)return t.length===1?t[0]:Mc(...t)}function nl(e,t,n){let i={exampleValue:null,jsonSchema:null},a=t.fieldAnnotations.annotations[e];if(a?.json_metadata?.example_value&&(i.exampleValue=a.json_metadata.example_value||null),a?.json_metadata?.schema&&(i.jsonSchema=a.json_metadata.schema||null),i.exampleValue&&i.jsonSchema||!t.resolvedFieldNames[e])return i;let o=jo(e,n,t),s=Oo(o.fieldName)?g(o.fieldName):null;return s?.jsonMeta?{jsonSchema:s.jsonMeta.zodSchema?r.toJSONSchema(s.jsonMeta.zodSchema):null,exampleValue:s.jsonMeta.exampleValue||null}:i}const v=r.registry();{let e=v._map,t=v.get.bind(v);v.get=n=>{let r=n;for(;r;){let t=e.get(r);if(typeof t==`function`)return t;r=r?._zod?.parent}return t(n)}}const y=r.registry();{let e=y._map,t=y.get.bind(y);y.get=n=>{let r=n;for(;r;){let t=e.get(r);if(typeof t==`function`)return t;r=r?._zod?.parent}return t(n)}}const rl=r.registry();{let e=rl._map,t=rl.get.bind(rl);rl.get=n=>{let r=n;for(;r;){let t=e.get(r);if(typeof t==`function`)return t;r=r?._zod?.parent}return t(n)}}const il=e=>e,al={text_input:r.coerce.string(),textarea_input:r.string(),prompt_input:r.object({template:r.string(),json_schemas:r.record(r.string(),r.record(r.string(),r.unknown()))}),template_input:r.string(),tagged_text_input:r.coerce.string(),boolean_input:r.boolean(),nullable_boolean_input:r.boolean().nullable(),select_input:r.string(),multi_select_input:r.array(r.string()),async_multi_select_input:r.array(r.string()),int_input:r.coerce.number().int(),number_input:r.coerce.number(),min_max_int_input:r.object({min:r.number().nullable().default(null),max:r.number().nullable().default(null)}),include_exclude_input:r.object({include:r.array(r.string()).default([]),exclude:r.array(r.string()).default([])}),include_exclude_select_input:r.object({include:r.array(r.string()).default([]),exclude:r.array(r.string()).default([])}),async_include_exclude_select_input:r.object({include:r.array(r.string()).default([]),exclude:r.array(r.string()).default([])}),exact_range_input:r.record(r.string(),r.number().nullable()),range_input:r.object({from:r.number().nullable(),to:r.number().nullable()}),date_range_input:r.record(r.string(),r.string()),multi_create_input:r.array(r.string()),property_list_input:r.array(r.object({property:r.string().min(1)})),ordered_multi_create_input:r.array(r.string()),tagged_ordered_multi_create_input:r.array(r.string()),loose_object_input:r.record(r.string(),r.string()),connector_input:r.object({connections:r.array(r.object({type:r.string(),connection:r.string()}))}).nullable(),providers_input:r.array(r.object({provider:r.string()})),json_extraction_input:r.record(r.string(),r.unknown()),pipes_run_if_input:r.record(r.string(),r.unknown()).nullable(),condition_block_input:r.record(r.string(),r.unknown()).nullable(),fields_select_input:r.array(r.object({field_name:r.string()})),typed_fields_select_input:r.array(r.object({field_name:r.string(),type:r.enum(Lo),format:r.enum(rs).nullable().optional(),alias:r.string().optional()})),field_select_input:r.object({field_name:r.string()}),output_field_input:r.object({alias:r.string(),enabled:r.boolean()}),json_schema_input:r.record(r.string(),r.unknown()),cursor_pagination_metadata:r.object({limit:r.number()}),context_select_input:r.union([r.string(),r.array(r.string())]),search_payload_input:r.looseObject({search_id:r.string()})},ol=(e,t,n)=>{let r=[t.description||n,t.guide].filter(Boolean).join(` `);return r?e.describe(r):e.check(()=>{})},sl=(e,t)=>{let n=al.multi_create_input;return e.maxItems&&(n=n.max(e.maxItems)),n=e.minItems?n.min(e.minItems):n.default([]),t.add(n,{type:`multi_create_input`,...e}),n},cl=(e,t)=>{let n=al.property_list_input;e.maxItems&&(n=n.max(e.maxItems)),n=e.minItems?n.min(e.minItems):n.default([]);let r=e.enabledIf??tl(e.optionsDef);return t.add(n,{type:`property_list_input`,...e,enabledIf:r}),n},ll=(e,t)=>{let n=al.ordered_multi_create_input;return e.maxItems&&(n=n.max(e.maxItems)),n=e.minItems?n.min(e.minItems):n.default([]),t.add(n,{type:`ordered_multi_create_input`,...e}),n},ul=/^\s*\{\{\s*[a-zA-Z_][a-zA-Z0-9_.]*(?:\s*\|\s*[^}]+)?\s*\}\}\s*$/,dl=/\{\{|\{%/,fl=(e,t)=>{let n=al.tagged_ordered_multi_create_input;e.maxItems&&(n=n.max(e.maxItems)),n=n.check(e=>{let t=e;(t.value??[]).forEach((e,n)=>{let r=ul.test(e),i=dl.test(e);!r&&i&&t.issues.push({code:`custom`,input:e,path:[n],message:`Each entry must be either plain text or a single field reference — not mixed.`})})}),n=e.minItems?n.min(e.minItems):n.default([]);let r={type:`tagged_ordered_multi_create_input`,...e};if(t===v){let i=t=>{let n=t.validationContext,i=n?Object.entries(n.fieldDefinitions).filter(([e,n])=>n.added_by.config_hash!==t.hash).filter(([t,n])=>!e.expectedTagType||n.type===e.expectedTagType).map(([e,t])=>({...t,resolvedName:e})):[];return{...r,inputFields:i}};return i.staticMeta={...r,inputFields:[]},t.add(n,i),n}return t.add(n,r),n},pl=(e,t)=>{let n=al.loose_object_input;n=n.check(t=>{let n=t,r=Object.entries(n.value??{});e.minKeys!=null&&r.length<e.minKeys&&n.issues.push({code:`custom`,input:n.value,message:`Add at least ${e.minKeys} ${e.keyLabel?.toLowerCase()??`entr`}${e.keyLabel?`s`:`ies`}.`}),e.maxKeys!=null&&r.length>e.maxKeys&&n.issues.push({code:`custom`,input:n.value,message:`Use at most ${e.maxKeys} ${e.keyLabel?.toLowerCase()??`entr`}${e.keyLabel?`s`:`ies`}.`}),r.forEach(([e,t])=>{Wl({value:t,issues:n.issues},!1,[e])})}),n=n.default({});let r={type:`loose_object_input`,...e},i=e=>{let t=e.validationContext,n=t?Object.entries(t.fieldDefinitions).filter(([t,n])=>n.added_by.config_hash!==e.hash).map(([e,t])=>({...t,resolvedName:e})):[];return{...r,inputFields:n}};return i.staticMeta={...r,inputFields:[]},t.add(n,i),n},ml=(e,t)=>{let n=e.maxItems||200,r=ol(al.include_exclude_input.check(e=>{e.value.include.length>n&&e.issues.push({code:`custom`,input:e.value.include,path:[`include`],message:`Array must contain at most ${n} element(s)`}),e.value.exclude.length>n&&e.issues.push({code:`custom`,input:e.value.exclude,path:[`exclude`],message:`Array must contain at most ${n} element(s)`})}),e);return t.add(r,{type:`include_exclude_input`,...e}),r},hl=()=>{let e=ys;return v.add(e,e=>{let t=e.validationContext;return{label:``,description:``,type:`json_extraction_input`,fields:Object.entries(t.fieldDefinitions).filter(([e,t])=>e.toLowerCase()!==`id`&&t.type===`json`).map(([e,n])=>{let{jsonSchema:r,exampleValue:i}=nl(e,t,n)||{};return{fieldName:e,fieldLabel:n.label,schema:r||null,exampleValue:i||null}}),path:`config.json_extraction`,groupPath:`config.json_extraction`,sectionKey:`general`}}),e},gl=(e,t)=>{let n=r.array(r.object({provider:r.enum(e.availableProviders)})).max(e.maxItems||99).min(1).default(e.defaultProviders),i=e.availableProviders.filter(t=>!e.deprecatedProviders?.includes(t)).map(t=>{let n=e.providerCredits?.[t];return{value:t,label:Xt[t].label,widgets:{provider_logo:{provider:t},...typeof n==`number`?{pricing:{credits:n}}:{}}}});return t.add(n,{label:`Provider sequence`,description:``,path:`config.providers`,groupPath:`config.providers`,type:`providers_input`,options:i,defaultProviders:e.defaultProviders,maxItems:e.maxItems,sectionKey:e.sectionKey}),n},_l=(e,t)=>{let n=e.maxItems||200,r=ol(al.include_exclude_select_input.check(e=>{e.value.include.length>n&&e.issues.push({code:`custom`,input:e.value.include,path:[`include`],message:`Array must contain at most ${n} element(s)`}),e.value.exclude.length>n&&e.issues.push({code:`custom`,input:e.value.exclude,path:[`exclude`],message:`Array must contain at most ${n} element(s)`})}),e);return t.add(r,{type:`include_exclude_select_input`,...e}),r},vl=(e,t)=>{let n=ol(al.exact_range_input.check(t=>{e.min===void 0&&e.max===void 0||Object.values(t.value).filter(e=>e!==null).some(t=>e.min!=null&&t<e.min||e.max!=null&&t>e.max)&&t.issues.push({code:`custom`,input:t.value,message:`Values must be between ${e.min??`any`} and ${e.max??`any`}`})}),e);return t.add(n,{type:`exact_range_input`,...e}),n},yl=(e,t)=>{let n=r.object({from:r.number().optional().nullable(),to:r.number().optional().nullable()}).default({from:null,to:null}),i=n;(e.min!==void 0||e.max!==void 0)&&(i=n.check(t=>{Object.values(t.value).filter(e=>e!=null).every(t=>(e?.min==null||t>=e.min)&&(e.max==null||t<=e.max))||t.issues.push({code:`custom`,input:t.value,message:`Values must be between ${e.min??`any`} and ${e.max??`any`}`}),t.value.from&&t.value.to&&t.value.from>t.value.to&&t.issues.push({code:`custom`,input:t.value,message:`'From' value must be smaller than 'to' value.`})}));let a=ol(i,e);return t.add(a,{type:`range_input`,...e}),a},bl=(e,t)=>{let n=ol(al.date_range_input.check(e=>{let t=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/;for(let[n,r]of Object.entries(e.value))r&&!t.test(r)&&e.issues.push({code:`custom`,input:r,path:[n],message:`Must be an ISO datetime string`})}),e);return t.add(n,{type:`date_range_input`,...e}),n},xl=(e,t)=>{let n=ol(al.boolean_input.default(e.defaultValue),e);return t.add(n,{...e,required:!1,type:`boolean_input`}),n},Sl=(e,t)=>{let n=ol(al.nullable_boolean_input.default(e.defaultValue),e);return t.add(n,{...e,required:!1,type:`nullable_boolean_input`,defaultValue:e.defaultValue}),n},Cl=(e,t)=>{let n=al.text_input;e.minLength&&(n=n.min(e.minLength)),e.maxLength&&(n=n.max(e.maxLength)),e.pattern&&(n=n.regex(new RegExp(e.pattern)));let r=ol(n,e);return t.add(r,{type:`text_input`,...e}),r},wl=(e,t)=>{let n=al.textarea_input;e.minLength&&(n=n.min(e.minLength)),e.maxLength&&(n=n.max(e.maxLength));let r=ol(n,e);return t.add(r,{type:`textarea_input`,...e}),r},Tl=(e,t,n=`pipe_io`)=>{let i=r.object({alias:r.string().default(``).describe(`Rename this output field. Leave empty to use default name.`),enabled:r.boolean().default(!0).describe(`Whether to include this field in the output.`)}).describe(`Output field '${e.fieldName}'`);return t.add(i,{type:`output_field_input`,label:`Rename *${e.fieldName}*`,placeholder:e.fieldName,path:`config.output_fields.${e.fieldName}`,description:void 0,groupPath:`config.output_fields`,sectionKey:n}),i.default({alias:``,enabled:!0})},El=(e,t)=>r.unknown().check(e=>{t(e.value)&&e.issues.push({code:`custom`,input:e.value,message:`Required`})}).pipe(e),Dl=(e,t)=>{let n=ol(El(al.int_input.check(t=>{e.min!=null&&t.value<e.min&&t.issues.push({code:`custom`,input:t.value,message:`Value must be at least ${e.min}`}),e.max!=null&&t.value>e.max&&t.issues.push({code:`custom`,input:t.value,message:`Value must be at most ${e.max}`})}),e=>e==null),e);return t.add(n,{...e,type:`int_input`}),n},Ol=(e,t)=>{let n=ol(El(al.number_input.check(t=>{e.min!=null&&t.value<e.min&&t.issues.push({code:`custom`,input:t.value,message:`Value must be at least ${e.min}`}),e.max!=null&&t.value>e.max&&t.issues.push({code:`custom`,input:t.value,message:`Value must be at most ${e.max}`})}),e=>e===void 0),e);return t.add(n,{...e,type:`number_input`}),n},kl=(e,t)=>{let n=al.json_schema_input;return n.check(e=>{Sc(e.value)||e.issues.push({code:`custom`,input:e.value,message:`JSON schema is invalid. Check your input.`})}),e.allowEmpty||(n=n.check(e=>{Cc(e.value)&&e.issues.push({code:`custom`,message:`JSON Schema must define a meaningful value. Can not be an empty object or array.`,input:e.value})})),t.add(n,{...e,type:`json_schema_input`}),n},Al=(e,t)=>{let n=e.options.map(e=>e.value),r=new Set([...n,``]),i=al.select_input.check(t=>{if(t.value===``){e.required&&t.issues.push({code:`custom`,input:t.value,message:`Required`});return}r.has(t.value)||t.issues.push({code:`custom`,input:t.value,message:`Must be one of: ${[...r].filter(e=>e).join(`, `)}`})}),a=ol(e.defaultValue?i.default(e.defaultValue):i,e);return t.add(a,{type:`select_input`,...e}),a},jl=(e,t,n)=>{let r=ol(al.search_payload_input.check(e=>{if(!e.value?.search_id){e.issues.push({code:`custom`,input:e.value,message:`Required`});return}let t=n?.safeParse(e.value);if(t&&!t.success)for(let n of t.error.issues)e.issues.push({code:`custom`,input:e.value,message:n.message,path:n.path})}),e);return t.add(r,{...e,type:`search_payload_input`,required:!0}),r},Ml=({billableOperations:e,...t},n)=>{let i=r.enum(Pc).default(t.defaultValue||`google-low`);return n.add(i,{type:`select_input`,options:Pc.map(t=>{let n=Object.keys(e).find(e=>e.endsWith(`-in-${t}`)),r=Object.keys(e).find(e=>e.endsWith(`-out-${t}`)),i=n?e[n]:void 0,a=r?e[r]:void 0;if(!i||!a)throw Error(`Unable to find token billing info for model ${t}`);return{label:Fc[t].label,value:t,widgets:{logo:{url:Xt[Fc[t].provider].logoUrl},token_pricing:{inputPerBlock:i.credits.default,outputPerBlock:a.credits.default,blockSize:100}}}}),required:!0,description:``,label:`AI Models`,...t}),i},Nl=(e,t)=>{let n=e.options.map(e=>e.value),i=new Set(n),a=r.array(r.enum(Array.from(i))).check(t=>{e.required&&t.value.length===0&&t.issues.push({code:`custom`,input:t.value,message:`Required`});let r=new Set;t.value.forEach((e,a)=>{i.has(e)?r.has(e)?t.issues.push({code:`custom`,input:e,path:[a],message:`Duplicate option: ${e}`}):r.add(e):t.issues.push({code:`custom`,input:e,path:[a],message:`Must be one of: ${n.join(`, `)}`})})});return t.add(a,{type:`multi_select_input`,...e}),a},Pl=(e,t)=>{let n=al.context_select_input.check(t=>{e.required&&(t.value===``||Array.isArray(t.value)&&t.value.length===0)&&t.issues.push({code:`custom`,input:t.value,message:`Required`})}),r=e.defaultValue?n.default(e.defaultValue):n,i=e.enabledIf??tl(e.optionsDef);return t.add(r,{type:`context_select_input`,...e,enabledIf:i,options:[]}),r},Fl=(e,t)=>{let n=al.min_max_int_input.check(t=>{for(let n of[`min`,`max`]){let r=t.value[n];if(r!=null){if(!Number.isInteger(r)){t.issues.push({code:`custom`,input:r,path:[n],message:`Must be an integer`});continue}(r<e.min||r>e.max)&&t.issues.push({code:`custom`,input:r,path:[n],message:`Must be between ${e.min} and ${e.max}`})}}});return t.add(n,{type:`min_max_int_input`,...e}),n},Il=(e,t)=>{let n=al.async_multi_select_input.check(t=>{e.required&&t.value.length===0&&t.issues.push({code:`custom`,input:t.value,message:`Required`})});return e.maxItems&&(n=n.max(e.maxItems)),t.add(n,{type:`async_multi_select_input`,...e}),n},Ll=(e,t)=>{let n=e.maxItems||200,r=al.async_include_exclude_select_input.check(e=>{e.value.include.length>n&&e.issues.push({code:`custom`,input:e.value.include,path:[`include`],message:`Array must contain at most ${n} element(s)`}),e.value.exclude.length>n&&e.issues.push({code:`custom`,input:e.value.exclude,path:[`exclude`],message:`Array must contain at most ${n} element(s)`})});return t.add(r,{type:`async_include_exclude_select_input`,...e}),r},b=()=>{let e=Fs.nullish();return v.add(e,e=>{let t=e.validationContext;return{label:``,description:``,type:`pipes_run_if_input`,groupPath:`run_if`,path:`run_if`,sectionKey:`pipe_io`,fields:Object.entries(t.fieldDefinitions).filter(([e])=>e.toLowerCase()!==`id`).map(([e,t])=>({fieldName:e,fieldLabel:t.label,format:t.format,type:t.type}))}}),e},Rl=e=>{let t=Ns.nullish();return v.add(t,t=>{let n=t.validationContext;return{type:`condition_block_input`,...e,fields:Object.entries(n.fieldDefinitions).filter(([e])=>e.toLowerCase()!==`id`).map(([e,t])=>({fieldName:e,fieldLabel:t.label,format:t.format,type:t.type}))}}),t},zl=e=>{let t=Ns.nullish();return rl.add(t,t=>{let n=t.validationContext;return{type:`condition_block_input`,...e,fields:Object.entries(n.fieldDefinitions).filter(([e])=>e.toLowerCase()!==`id`).map(([e,t])=>({fieldName:e,fieldLabel:t.label,format:t.format,type:t.type}))}}),t},Bl=e=>{let{required:t=!0,...n}=e,r=ol(Ps.nullable().check(e=>{let n=e;if(n.value===null){t&&n.issues.push({code:`custom`,input:n.value,message:`Add at least one condition.`});return}(n.value?.conditions??[]).forEach((e,t)=>{typeof e.value==`string`&&Wl({value:e.value,issues:n.issues},!1,[`conditions`,t,`value`])})}),n,"Condition block over the target sheet's columns. `field_name` is a LITERAL column name of the looked-up sheet (never templated); string `value`s may contain `{{ field }}` / `{{ SECRETS.KEY }}` / `{{ CONSTANTS.KEY }}` Liquid references resolved per row."+(t?``:" `null` means no filtering.")),i=n.optionsDef?{...n.optionsDef,enabledIf:n.optionsDef.enabledIf??tl(n.optionsDef)}:void 0,a={type:`condition_block_input`,fields:[],fieldNameMode:`text`,properties:[`value`],...n,optionsDef:i,options:[]},o=e=>{let t=e.validationContext;return{...a,inputFields:Object.entries(t.fieldDefinitions).filter(([t,n])=>n.added_by.config_hash!==e.hash).map(([e,t])=>({...t,resolvedName:e}))}};return o.staticMeta={...a,inputFields:[]},v.add(r,o),t?r:r.default(null)};function Vl(e,t){if(!t)return e;let n={...e};for(let[r,i]of Object.entries(t))n[r]=i===null?null:{...e[r]??{},...i};return n}function Hl({fieldMetadata:e,store:t}){let n=e;if(e.type===`context_select_input`||e.type===`tagged_text_input`||(e.type===`condition_block_input`||e.type===`field_select_input`||e.type===`fields_select_input`||e.type===`typed_fields_select_input`||e.type===`property_list_input`)&&n.optionsDef){t.field_options??={};let r=t.field_options[e.path]?.options||[],i=n.optionsDef?.widgets;e.options=i?r.map(e=>({...e,widgets:{...i,...e.widgets??{}}})):r}return e}const Ul=({schema:e,extractFromSchema:t,store:n,formResolvers:i,sectionMap:a,groupMap:o,pathMap:s})=>{let c={};function l(e){let t=e?._zod?.def?.type;return!(t===`optional`||t===`nullable`||t===`default`)}function u(e,d){let f=t(e),p=f?.required,ee=f&&p===void 0&&d!==void 0?{...f,required:d}:f;if(ee){let{sectionKey:e,groupPath:t,path:r}=ee,l=a?.[e],u=o?.[t],d=s?.[r];if(!(l===null||u===null||d===null)){let r=d?{...ee,label:d.label??ee.label,description:d.description??ee.description}:ee;c[e]??={type:`section`,groups:[],metadata:{type:`form_section`,path:l?.path??e,label:l?.label,description:l?.description}};let a=c[e];if(!a)throw Error(`Section not defined`);let o=a.groups.find(e=>e.groupPath===t);if(o){let e=Hl({fieldMetadata:r,store:n,formResolvers:i});e&&o.fields.push(e)}else{let e=Hl({fieldMetadata:r,store:n,formResolvers:i});e&&a.groups.push({groupPath:t,fields:[e],type:`group`,label:u?.label,defaultExpand:!!u?.defaultExpand,description:u?.description,iconKey:u?.iconKey,order:u?.order})}}}if(typeof e==`object`&&`unwrap`in e&&typeof e.unwrap==`function`&&u(e.unwrap(),d),e instanceof r.ZodObject)for(let t of Object.values(e.shape))u(t,l(t))}u(e);for(let e of Object.values(c))e.groups=e.groups.filter(e=>e.fields.length!==0),e.groups.sort((e,t)=>(e.order??99)-(t.order??99));return Object.entries(c).filter(([,e])=>e.groups.length!==0).sort(([e],[t])=>(a?.[e]?.order??99)-(a?.[t]?.order??99)).map(([,e])=>e)};function Wl(e,t,n=[]){let r=e.value;if(!(typeof r!=`string`||!r))try{let i=tc(r);!t&&i.outputs.length>0&&e.issues.push({code:`custom`,input:r,path:n,message:`{% output %} tags are not allowed in this field.`}),t&&i.outputs.length===0&&e.issues.push({code:`custom`,input:r,path:n,message:`At least one {% output %} tag is required, e.g. {% output result, type: "string", description: "..." %}`})}catch(t){e.issues.push({code:`custom`,input:r,path:n,message:t instanceof Error?t.message:String(t)})}}const Gl=e=>{let t=(e.supportedTags??[]).includes(`output`),n=r.object({template:ol(r.string().min(10).check(e=>Wl(e,t,[])),e,'Liquid prompt with `{{ field }}` input refs, `{{ field | default: "" }}` for optional refs, `{{ SECRETS.KEY }}` for secrets, `{{ CONSTANTS.KEY }}` for plaintext constants, and `{% output name, type: "string", description: "..." %}` to declare model outputs. Supports `{% if %}` / `{% for %}` control flow. Example: "Summarize {{ name }}. {% output summary, type: \\"string\\", description: \\"One-line summary\\" %}"'),json_schemas:r.record(r.string().min(1,`Schema name cannot be empty`),r.record(r.string(),r.any())).optional().describe(`JSON schemas for output fields with type="json". Keys are referenced via schema="<name>" in output tags.`)});return v.add(n,t=>{let n=t.validationContext;return{type:`prompt_input`,inputFields:Object.entries(n.fieldDefinitions).filter(([e,n])=>n.added_by.config_hash!==t.hash).map(([e,t])=>({...t,resolvedName:e})),...e}}),n},Kl=e=>{let t=`Liquid template with \`{{ field }}\` input refs, \`{{ field | default: "" }}\` for optional refs, \`{{ SECRETS.KEY }}\` for secrets, \`{{ CONSTANTS.KEY }}\` for plaintext constants, and \`{% if %}\` / \`{% for %}\` control flow. Filters are hard-whitelisted — ONLY: ${Ls.join(`, `)}; anything else (split, slice, …) fails validation. Example: "Write to {{ name }} about {{ topic | default: \\"the project\\" }}."`,n=r.string();e.required&&(n=n.min(1)),e.maxLength&&(n=n.max(e.maxLength));let i=ol(n.check(e=>Wl(e,!1,[])),e,t);return v.add(i,t=>{let n=t.validationContext;return{type:`template_input`,inputFields:Object.entries(n.fieldDefinitions).filter(([e,n])=>n.added_by.config_hash!==t.hash).map(([e,t])=>({...t,resolvedName:e})),rows:e.rows||10,...e}}),i},x=e=>{let t=`${e.multiline?`Multi-line`:`Single-line`} ${e.expectedTagType} value, optionally containing \`{{ field }}\` Liquid input refs (use \`| default: ""\` for optional refs), \`{{ SECRETS.KEY }}\` for encrypted secrets, and \`{{ CONSTANTS.KEY }}\` for plaintext constants.`,n=r.coerce.string();e.minLength&&(n=n.min(e.minLength)),e.maxLength&&(n=n.max(e.maxLength)),e.pattern&&(n=n.regex(new RegExp(e.pattern))),n=n.check(e=>Wl(e,!1,[])),n=ol(n,e,t);let i=e.optionsDef?{...e.optionsDef,enabledIf:e.optionsDef.enabledIf??tl(e.optionsDef)}:void 0,a={type:`tagged_text_input`,...e,optionsDef:i,options:[]},o=t=>{let n=t.validationContext,r=Object.entries(n.fieldDefinitions).filter(([e,n])=>n.added_by.config_hash!==t.hash).filter(([t,n])=>n.type===e.expectedTagType).map(([e,t])=>({...t,resolvedName:e}));return{...a,inputFields:r}};return o.staticMeta={...a,inputFields:[]},v.add(n,o),n};function ql(e,t){v.add(e,({userConnections:e,pipeEntry:n})=>{let r=new Set(n.allowedUserConnectionProviders),i=e.filter(e=>r.has(e.provider));return{label:t===`required`?`Custom connection`:``,description:``,required:t===`required`,groupPath:`connector`,path:`connector`,connectorMode:t,type:`connector_input`,sectionKey:`pipe_io`,supportsUserConnections:r.size>0,filteredConnections:i.map(e=>({provider:e.provider,connection:bc({id:e.public_id,provider:e.provider}),is_default:e.is_default??!1,ownership_level:e.ownership_level}))}})}const S=()=>{let e=Es;return ql(e,`required`),e},C=()=>{let e=Ts;return ql(e,`optional`),e},Jl=()=>{let e=Ds;return ql(e,`disabled`),e};function Yl(e,t){y.add(e,({userConnections:e,searchEntry:n})=>{let r=n.allowsUserConnection?[n.provider]:[],i=new Set(r),a=e.filter(e=>i.has(e.provider));return{label:t===`required`?`Custom connection`:``,description:``,required:t===`required`,groupPath:`connector`,path:`connector`,connectorMode:t,type:`connector_input`,sectionKey:`pipe_io`,supportsUserConnections:i.size>0,filteredConnections:a.map(e=>({provider:e.provider,connection:bc({id:e.public_id,provider:e.provider}),is_default:e.is_default??!1,ownership_level:e.ownership_level}))}})}const Xl=()=>{let e=Es;return Yl(e,`required`),e},Zl=()=>{let e=Ts;return Yl(e,`optional`),e};function Ql(e,t){rl.add(e,({userConnections:e,effectEntry:n})=>{let r=new Set(n.allowedUserConnectionProviders),i=e.filter(e=>r.has(e.provider));return{label:t===`required`?`Custom connection`:``,description:``,required:t===`required`,groupPath:`connector`,path:`connector`,connectorMode:t,type:`connector_input`,sectionKey:`pipe_io`,supportsUserConnections:r.size>0,filteredConnections:i.map(e=>({provider:e.provider,connection:bc({id:e.public_id,provider:e.provider}),is_default:e.is_default??!1,ownership_level:e.ownership_level}))}})}const $l=()=>{let e=Es;return Ql(e,`required`),e},eu=()=>{let e=Ts;return Ql(e,`optional`),e},tu=()=>{let e=Ds;return Ql(e,`disabled`),e};function nu(e,t){return Object.entries(t.fieldDefinitions).filter(([t,n])=>n.added_by.config_hash!==e&&t.toLowerCase()!==`id`).map(([e,t])=>({label:e,value:e,type:t.type,format:t.format}))}const w=e=>{let t=r.object({alias:r.string().describe(`Override field name mapping. Leave empty to use default.`)});return v.add(t,t=>{let n=t.validationContext;return{type:`select_input`,required:!1,sectionKey:`pipe_io`,defaultValue:void 0,placeholder:e.fieldName,options:nu(t.hash,n),path:`config.input_fields.${e.fieldName}.alias`,label:`Assign *${e.fieldName}* to:`,description:``,groupPath:`config.input_fields`,multiple:!1}}),t.default({alias:``})},T=e=>gl(e,v),ru=(e,t)=>{let n=e.optionsDef?{...e.optionsDef,enabledIf:e.optionsDef.enabledIf??tl(e.optionsDef)}:void 0,r={type:`fields_select_input`,...e,optionsDef:n,options:[]},i=e=>{if(n)return{...r};let t=e.validationContext;return{...r,options:Object.entries(t.fieldDefinitions).filter(([e])=>e.toLowerCase()!==`id`).map(([e,t])=>({value:e,label:e,widgets:{field_type:{type:t.type}}}))}};i.staticMeta=r,v.add(t,i)},iu=e=>{let t=al.fields_select_input.check(e=>{e.value.forEach((t,n)=>{t.field_name.length<1&&e.issues.push({code:`custom`,input:t.field_name,path:[n,`field_name`],message:`field_name must not be empty`})})});return t=e.minItems?t.min(e.minItems):t.default([]),ru(e,t),t},au=r.array(r.object({field_name:r.string(),alias:r.string().optional()})),ou=e=>{let t=au.check(e=>{e.value.forEach((t,n)=>{t.field_name.length<1&&e.issues.push({code:`custom`,input:t.field_name,path:[n,`field_name`],message:`field_name must not be empty`})})});return t=e.minItems?t.min(e.minItems):t.default([]),ru({...e,withAlias:!0},t),t},su=e=>{let t=al.typed_fields_select_input.check(e=>{e.value.forEach((t,n)=>{t.field_name.length<1&&e.issues.push({code:`custom`,input:t.field_name,path:[n,`field_name`],message:`field_name must not be empty`})})});t=e.minItems?t.min(e.minItems):t.default([]);let n=e.optionsDef?{...e.optionsDef,enabledIf:e.optionsDef.enabledIf??tl(e.optionsDef)}:void 0,r={type:`typed_fields_select_input`,...e,optionsDef:n,options:[]},i=e=>{if(n)return{...r};let t=e.validationContext;return{...r,options:Object.entries(t.fieldDefinitions).filter(([e])=>e.toLowerCase()!==`id`).map(([e,t])=>{let n=typeof t.type==`function`?`unknown`:t.type;return{value:e,label:e,data:{type:String(n),...t.format?{format:String(t.format)}:{}},widgets:{field_type:{type:t.type}}}})}};return i.staticMeta=r,v.add(t,i),t},cu=e=>{let t=al.field_select_input.check(t=>{e.required&&t.value.field_name.length<1&&t.issues.push({code:`custom`,input:t.value.field_name,path:[`field_name`],message:`Select a field`})});e.required||(t=t.default({field_name:``})),t=ol(t,e,"Reference to a single sheet column by name (`{ field_name }`).");let n=e.optionsDef?{...e.optionsDef,enabledIf:e.optionsDef.enabledIf??tl(e.optionsDef)}:void 0,r={type:`field_select_input`,...e,optionsDef:n,options:[]},i=e=>{if(n)return{...r};let t=e.validationContext;return{...r,options:Object.entries(t.fieldDefinitions).filter(([t,n])=>t.toLowerCase()!==`id`&&n.added_by.config_hash!==e.hash).map(([e,t])=>({value:e,label:e,widgets:{field_type:{type:t.type}}}))}};return i.staticMeta=r,v.add(t,i),t},lu=e=>{let t=al.fields_select_input.check(e=>{e.value.forEach((t,n)=>{t.field_name.length<1&&e.issues.push({code:`custom`,input:t.field_name,path:[n,`field_name`],message:`field_name must not be empty`})})});return t=e.minItems?t.min(e.minItems):t.default([]),rl.add(t,t=>{let n=t.validationContext;return{type:`fields_select_input`,options:Object.entries(n.fieldDefinitions).filter(([e])=>e.toLowerCase()!==`id`).map(([e,t])=>({fieldName:e,fieldLabel:e,type:t.type})).map(e=>({value:e.fieldName,label:e.fieldLabel,widgets:{field_type:{type:e.type}}})),...e}}),t},uu=(e,t)=>{let n=t===`selection`?Et:t===`sheet`?Dt:kt,i={label:`All rows`,value:{type:`all`}},a={label:`Specific rows by ID`,value:{type:`rows`,record_ids:[]}},o=t===`selection`?[a]:t===`sheet`?[i]:[i,a,{label:`Window of 10 rows`,value:{type:`window`,count:10}}],s=r.preprocess(e=>{if(typeof e!=`string`)return e;let t=e.trim();if(t===``)return;let n=Tc(t);return n===void 0?e:n},n).optional();return rl.add(s,{type:`textarea_input`,rows:3,language:`json`,quickOptions:o,...e}),s},du=e=>ml(e,v),fu=e=>sl(e,v),pu=e=>cl(e,v),mu=e=>ll(e,v),hu=e=>fl(e,v),gu=e=>pl(e,v),_u=e=>_l(e,v),vu=e=>Ll(e,v),yu=e=>vl(e,v),bu=e=>bl(e,v),E=e=>xl(e,v),D=e=>Tl(e,v),xu=e=>{let{groupPath:t,sectionKey:n=`pipe_io`,defaultName:r,nameInfo:i}=e;return{destination_field_name:Su({label:`Field name`,description:`Destination field name`,info:i??`Name of the field written to the destination sheet.`,placeholder:r,inputType:`text`,path:`config.destination_field_name`,groupPath:t,sectionKey:n}).nullable().default(``),destination_field_type:wu({label:`Type`,info:`Field data type. Leave unset to infer it from the data.`,path:`config.destination_field_type`,groupPath:t,sectionKey:n,required:!1,options:Lo.filter(e=>e!==`unknown`).map(e=>({value:e,label:e}))}).default(``),destination_field_format:wu({label:`Format`,info:`Optional display format for the field.`,path:`config.destination_field_format`,groupPath:t,sectionKey:n,required:!1,options:rs.map(e=>({value:e,label:e}))}).default(``),destination_field_label:Su({label:`Label`,description:`Destination field label`,info:`Human-friendly column header. Defaults to the field name.`,inputType:`text`,path:`config.destination_field_label`,groupPath:t,sectionKey:n}).nullable().default(``)}},Su=e=>Cl(e,v),Cu=e=>wl(e,v),wu=e=>Al(e,v),Tu=e=>Ml(e,v),Eu=e=>Nl(e,v),Du=e=>Dl(e,v),Ou=e=>Ol(e,v),ku=e=>kl(e,v),Au=e=>Pl(e,v),ju=e=>{let{required:t=!1,...n}=e,r=Ps.nullable().check(e=>{let n=e;n.value===null&&t&&n.issues.push({code:`custom`,input:n.value,message:`Add at least one condition.`})});return y.add(r,{type:`condition_block_input`,fields:[],fieldNameMode:`text`,properties:[`value`],...n}),t?r:r.default(null)},O=e=>sl(e,y),Mu=e=>cl(e,y),Nu=e=>ll(e,y),Pu=e=>Fl(e,y),k=e=>ml(e,y),Fu=e=>_l(e,y),Iu=e=>vl(e,y),Lu=e=>yl(e,y),Ru=e=>bl(e,y),zu=e=>xl(e,y),Bu=e=>Sl(e,y),A=e=>Tl(e,y,`pipe_io`),Vu=e=>Cl(e,y),Hu=e=>wl(e,y),Uu=e=>Al(e,y),Wu=e=>Pl(e,y),j=e=>Nl(e,y),Gu=e=>Il(e,y),M=e=>Ll(e,y),N=e=>Dl(e,y),Ku=e=>Ol(e,y),qu=e=>Cl(e,il(rl)),Ju=e=>wl(e,il(rl)),Yu=e=>Al(e,il(rl)),Xu=e=>Nl(e,il(rl)),Zu=e=>Dl(e,il(rl)),Qu=e=>Dl(e,il(rl)).nullish(),$u=e=>xl(e,il(rl)),ed=e=>Pl(e,il(rl)),td=e=>Ml(e,il(rl)),nd=(e,t)=>jl(e,il(rl),t),P=e=>(e=e.check(e=>{let t=e.value,n=!1;for(let e in t)if(t[e]?.enabled){n=!0;break}n||e.issues.push({code:`custom`,input:e.value,message:`All output fields are disabled. Enable at least one output.`})}),e.optional()),F=e=>e.optional();function rd(e,t,n){return{next:{environment:t,pipes:e.orderedPipePayloads,fieldAnnotations:e.fieldAnnotations.annotations,validationContext:e},...n?{rowMigration:n}:{}}}var I=class extends zt{producesDynamicFields(){return!1}evolveSchema(e){return{next:e}}getRecordQueueConfig(e){return null}getRowFilter(){return null}};function L(e){return Lt(e)}function id(e,t){return Rt(e,t)}const ad=`env:change@1`,od={},sd=r.object({effect_id:r.literal(ad),connector:tu(),config:r.object({environment:Po})}),cd=class extends I{effectId=ad;schema=sd;payload;billableOperations=od;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}},ld=sd,ud={effectId:ad,baseEffect:L(ad),label:`Change environment`,description:`Switch the sheet between production and sandbox.`,categories:[`internal`],tags:[],lifecycle:null,billableOperations:od,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`hidden`,defaultPayload:{effect_id:ad,connector:null,config:{environment:`production`}}},dd=[`id`],fd=e=>dd.includes(e.trim().toLowerCase()),pd=`input`;function md({fieldDefinitions:e,fieldAnnotations:t={}}){let n=new Map;for(let[t,r]of Object.entries(e)){let e=r.added_by.config_hash||`input`,i=n.get(e)??{pipeIdx:r.added_by.pipe_index,fields:[]};i.fields.push([t,r]),n.set(e,i)}let r=e=>{let n=t[e]?.order;return typeof n==`number`&&Number.isFinite(n)?n:1/0},i=e=>Math.min(...n.get(e).fields.map(([e])=>r(e))),a=[...n.keys()].sort((e,t)=>{if(e===`input`)return-1;if(t===`input`)return 1;let r=i(e),a=i(t);return r===a?(n.get(e).pipeIdx||0)-(n.get(t).pipeIdx||0):r-a}),o={};for(let e of a)o[e]=n.get(e).fields.sort(([t,n],[i,a])=>{let o=r(t),s=r(i);if(o!==s)return o-s;if(e!==`input`&&n.is_primary_output!==a.is_primary_output)return n.is_primary_output?-1:1;let c=n.order??1/0,l=a.order??1/0;return c===l?t.localeCompare(i):c-l}).map(([e])=>e);return{groupOrder:a,fieldOrder:o}}const hd=e=>typeof e.kind==`string`,gd=e=>hd(e)?e:{kind:`field`,field:e},R=e=>({kind:`field`,field:e}),z=(...e)=>({kind:`all`,of:e.map(gd)}),_d=(...e)=>({kind:`any`,of:e.map(gd)}),vd=e=>({kind:`optional`,field:e});function yd(e,t){switch(e.kind){case`optional`:return!0;case`field`:return t.has(e.field.resolvedName);case`all`:return e.of.every(e=>yd(e,t));case`any`:return e.of.some(e=>yd(e,t))}}function bd(e){switch(e.kind){case`field`:return[{field:e.field,required:!0}];case`optional`:return[{field:e.field,required:!1}];case`all`:case`any`:return e.of.flatMap(bd)}}function xd(e,t){let n=Sd(e,t);return n.ok?{valid:!0,failedPipeInputField:null,failedRecordField:null}:{valid:!1,failedPipeInputField:n.field,failedRecordField:n.recordField}}function Sd(e,t){switch(e.kind){case`optional`:return{ok:!0};case`field`:{let n=t.fields[e.field.resolvedName];if(!n)throw Error(`Record field does not exist ${e.field.name} for requirement.`);return n.status===`completed`||n.status===`queued`?{ok:!0}:{ok:!1,field:e.field,recordField:n}}case`all`:for(let n of e.of){let e=Sd(n,t);if(!e.ok)return e}return{ok:!0};case`any`:{let n=null,r=!1;for(let i of e.of)try{let e=Sd(i,t);if(r=!0,e.ok)return{ok:!0};n=e}catch{}return r?n:{ok:!0}}}}function Cd(e,t){let n={pipeId:e,config:Pt(t)};return It.hashObject(n)}function wd(e,t){let n={};return Object.values(t).forEach(t=>{let r=t,i=e.fields[r.resolvedName];i?.value!=null&&(n[r.resolvedName]=i.value)}),Object.keys(n).length===0?null:It.hashObject(Pt(n))}var B=class{validatePayload(e){try{return this.payloadSchema.parse(e)}catch(e){throw e instanceof n?Error(r.prettifyError(e)):e}}getSecretRequirements(){return[]}getConstantRequirements(){return[]}getBucketRequirements(){return[]}getRowConditionBlocks(){return[]}async getAgentContext(e){return null}catalogOutput(e,{isPrimaryOutput:t=!1,resolveFormat:n,resolveType:r}={resolveType:void 0,resolveFormat:void 0,isPrimaryOutput:!1}){return{name:e.name,enabled:!!this.payload.config?.output_fields?.[e.name].enabled,type:r||e.type,format:n||e.format,resolvedName:this.payload.config?.output_fields?.[e.name]?.alias||e.name,description:e.description,jsonMeta:e.jsonMeta,label:e.label,isCatalogFIeld:!0,order:`order`in e?e.order:void 0,isPrimaryOutput:t}}getOutputFields(){let e={};for(let[t,n]of Object.entries(this.getRawOutputFields()))n.enabled&&(e[t]=n);return e}get inputFields(){let e={};for(let{field:t}of bd(this.getInputRequirement()))e[t.name]=t;return e}getConfigHashKey(){return Cd(this.payload.pipe_id,this.payload.config||{})}getInputHashKey(e){return wd(e,this.inputFields)}};const V={EMAIL:`Email`,TEXT:`Text`,CHAT:`Chat`,PERSONAL_EMAIL:`Personal Email`,NAMES:`Names`,WORK_EMAIL:`Work Email`,WATERFALL:`Waterfall`,WEBSITE:`Website`,SCRAPE:`Scrape`,ADDRESS:`Address`,NEWS:`News`,LINKEDIN:`LinkedIn`,FINANCIAL_DATA:`Financial Data`,AI:`AI`,PHONE:`Phone Number`,NEW:`New`,BETA:`Beta`,PEOPLE_PROFILES:`People Profiles`,COMPANY_PROFILES:`Company Profiles`,EVENTS:`Events`,JSON:`Json`,FIELDS:`Fields`,LOGIC:`Logic`,DEPRECATED:`Deprecated ❌`};function H(e,...t){return t.map(t=>({billableOperation:t,quantity:e.count}))}function Td(e,t){return n=>{let r=e[n];if(!r)throw Error(`Missing billableOperation def for "${n}"`);return!r.allowManagedConnection||t?.(r.provider)?0:r.credits.default}}function Ed(e,t,n=`sum`){let r=e.map(e=>e.quantity*t(e.billableOperation));return r.length===0?0:n===`max`?Math.max(...r):r.reduce((e,t)=>e+t,0)}function Dd(e,t){let n={};for(let r of t)for(let t of Object.values(e))if(t&&t.provider===r&&t.allowManagedConnection){n[r]=t.credits.default;break}return n}function Od(e){return bd(e).map(({field:e})=>e)}function kd({recordField:e,value:t,resolvedBy:n,widgets:r}){return e.value=t,e.status=`completed`,e.resolved_by=n,e.widgets=r,e}function Ad({recordField:e}){return e.status=`pending`,e.resolved_by=null,e.value=null,e}function jd({recordField:e,reason:t,resolvedBy:n,widgets:r={}}){return e.value=null,e.status=`no_result`,e.resolved_by=n,e.reason=t,e.widgets=r,e}function Md(e,t,n){return e.value=null,e.status=`failed`,e.resolved_by=null,e.reason=t,e.resolved_by=n,e.widgets={},e}function Nd(e,t){return e.value=null,e.status=`skipped`,e.resolved_by=null,e.reason=t,e.widgets={},e}function Pd(e){return e.value=null,e.status=`processing`,e.resolved_by=null,e.widgets={},e}function U(e){return e.split(`@`)[0]}function W(e){return`/docs/pipe-catalog/${U(e)}/${e.split(`@`)[1]}`}function G(e,t){return{name:e.name,description:e.description,resolvedName:t?.input_fields?.[e.name]?.alias||e.name,type:e.type,label:e.label,format:e.format}}const K={MissingSecretError:class extends Error{constructor({providerName:e}){super(`Missing secret for ${e}`)}},HttpError:class extends Error{constructor({msg:e}){super(e)}}};function Fd(e,t){return typeof t==`string`?t:t(e)}function Id(e,t){return typeof t==`string`||t===null?t:t(e)}function Ld(e,t){let n={};for(let r of t){let t=!1;for(let i of e.pipes){let a=i.getOutputFields();if(a[r]){n[r]??={type:Fd(e,a[r].type),format:Id(e,a[r].format)},t=!0;break}}if(t)continue;let i=e.derivedInputFields[r];i&&(n[r]??={type:i.type,format:null})}return n}function Rd(e,t){for(let n of e.pipes){let r=n.getOutputFields();if(r[t])return{type:Fd(e,r[t].type),format:Id(e,r[t].format)}}let n=e.derivedInputFields[t];if(n)return{type:n.type,format:null}}const zd=`v67.0`;function Bd(e){try{let t=JSON.parse(e);if(t.access_token&&t.instance_url)return{access_token:t.access_token,instance_url:t.instance_url}}catch{}throw new K.HttpError({msg:`Salesforce credential is not a valid token bundle — reconnect Salesforce through the OAuth flow.`})}async function Vd(e,t){let{access_token:n,instance_url:r}=Bd(e),i=await fetch(`${r.replace(/\/$/,``)}${t}`,{headers:{Authorization:`Bearer ${n}`},signal:AbortSignal.timeout(1e4)});if(!i.ok)throw new K.HttpError({msg:await i.text()});return await i.json()}async function Hd(e,t){return(await Vd(e,`/services/data/${zd}/query?q=${encodeURIComponent(t)}`)).records??[]}function Ud(e,t){if(!t)return e;let n=t.toLowerCase();return e.filter(e=>e.label.toLowerCase().includes(n))}const Wd=e=>({requires:{connection:`salesforce`},options:async({query:t,secret:n,environment:r})=>{if(r===`sandbox`)return Ud([{label:`Contact`,value:`Contact`},{label:`Account`,value:`Account`},{label:`Lead`,value:`Lead`},{label:`Opportunity`,value:`Opportunity`},{label:`Demo Object (custom)`,value:`Demo_Object__c`}],t);if(!n)throw new K.MissingSecretError({providerName:`salesforce`});return Ud((await Vd(n,`/services/data/${zd}/sobjects/`)).sobjects.filter(t=>t.queryable&&(!e?.updateableOnly||t.updateable)).map(e=>({label:e.custom?`${e.label} (custom)`:e.label,value:e.name})),t)},widgets:{provider_logo:{provider:`salesforce`}}}),Gd={requires:{connection:`salesforce`,fields:[`config.object`]},options:async({query:e,secret:t,payload:n,environment:r})=>{if(r===`sandbox`)return[{label:`External Id (External_Id__c)`,value:`External_Id__c`}];if(!t)throw new K.MissingSecretError({providerName:`salesforce`});let i=n?.config,a=$d(i?.object);return a?Ud((await Vd(t,`/services/data/${zd}/sobjects/${encodeURIComponent(a)}/describe`)).fields.filter(e=>e.externalId).map(e=>({label:`${e.label} (${e.name})`,value:e.name})),e):[]},widgets:{provider_logo:{provider:`salesforce`}}},Kd={requires:{connection:`salesforce`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return[{label:`Demo · Prospecting`,value:`Prospecting`},{label:`Demo · Negotiation`,value:`Negotiation`},{label:`Demo · Closed Won ✓ won`,value:`Closed Won`}];if(!t)throw new K.MissingSecretError({providerName:`salesforce`});return Ud((await Hd(t,`SELECT ApiName, MasterLabel, IsClosed, IsWon FROM OpportunityStage ORDER BY SortOrder ASC`)).map(e=>({label:`${e.MasterLabel}${e.IsWon?` ✓ won`:e.IsClosed?` ✕ closed`:``}`,value:e.ApiName})),e)},widgets:{provider_logo:{provider:`salesforce`}}},qd={requires:{connection:`salesforce`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return[{label:`Demo · Ada Lovelace (ada@example.com)`,value:`005000000000001AAA`},{label:`Demo · Alan Turing (alan@example.com)`,value:`005000000000002AAA`}];if(!t)throw new K.MissingSecretError({providerName:`salesforce`});return Ud((await Hd(t,`SELECT Id, Name, Email FROM User WHERE IsActive = true ORDER BY Name ASC LIMIT 500`)).map(e=>({label:`${e.Name} (${e.Email})`,value:e.Id})),e)},widgets:{provider_logo:{provider:`salesforce`}}},Jd={requires:{connection:`salesforce`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return[{label:`Demo · Open - Not Contacted`,value:`Open - Not Contacted`},{label:`Demo · Working - Contacted`,value:`Working - Contacted`}];if(!t)throw new K.MissingSecretError({providerName:`salesforce`});return Ud((await Hd(t,`SELECT ApiName, MasterLabel FROM LeadStatus ORDER BY SortOrder ASC`)).map(e=>({label:e.MasterLabel,value:e.ApiName})),e)},widgets:{provider_logo:{provider:`salesforce`}}},Yd={requires:{connection:`salesforce`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return[{label:`Demo · Not Started`,value:`Not Started`},{label:`Demo · In Progress`,value:`In Progress`},{label:`Demo · Completed ✓`,value:`Completed`}];if(!t)throw new K.MissingSecretError({providerName:`salesforce`});return Ud((await Hd(t,`SELECT ApiName, MasterLabel, IsClosed FROM TaskStatus ORDER BY SortOrder ASC`)).map(e=>({label:`${e.MasterLabel}${e.IsClosed?` ✓ closed`:``}`,value:e.ApiName})),e)},widgets:{provider_logo:{provider:`salesforce`}}},Xd={requires:{connection:`salesforce`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return[{label:`Outreach Key (Outreach_Key__c)`,value:`Outreach_Key__c`}];if(!t)throw new K.MissingSecretError({providerName:`salesforce`});return Ud((await Vd(t,`/services/data/${zd}/sobjects/Task/describe`)).fields.filter(e=>e.externalId).map(e=>({label:`${e.label} (${e.name})`,value:e.name})),e)},widgets:{provider_logo:{provider:`salesforce`}}},Zd=(e,t)=>({requires:{connection:`salesforce`},options:async({query:n,secret:r,environment:i})=>{if(i===`sandbox`)return[{label:`Demo · Technology`,value:`Technology`},{label:`Demo · Finance`,value:`Finance`}];if(!r)throw new K.MissingSecretError({providerName:`salesforce`});return Ud(((await Vd(r,`/services/data/${zd}/sobjects/${encodeURIComponent(e)}/describe`)).fields.find(e=>e.name===t)?.picklistValues??[]).filter(e=>e.active).map(e=>({label:e.label,value:e.value})),n)},widgets:{provider_logo:{provider:`salesforce`}}}),Qd=e=>({requires:{connection:`salesforce`},options:async({query:t,secret:n,environment:r})=>{if(r===`sandbox`)return[{label:`Demo · All Records`,value:`00B000000000001AAA`},{label:`Demo · My Records`,value:`00B000000000002AAA`}];if(!n)throw new K.MissingSecretError({providerName:`salesforce`});return Ud((await Vd(n,`/services/data/${zd}/sobjects/${encodeURIComponent(e)}/listviews`)).listviews.map(e=>({label:e.soqlCompatible?e.label:`${e.label} (not SOQL-compatible)`,value:e.id})),t)},widgets:{provider_logo:{provider:`salesforce`}}});function $d(e){return Array.isArray(e)?e[0]??``:e??``}const ef=e=>{let t=new Set;for(let n of e)if(n)try{let e=tc(n);for(let n of Object.keys(e.inputs))t.add(n)}catch{}return[...t].map(e=>vd({name:e,resolvedName:e,label:e,description:``,type:t=>Rd(t,e)?.type||`string`,format:`text`}))};async function tf(e,{objects:t,includeStages:n=!1,includeListViewsFor:r=[],includeOwners:i=!1,includeTaskMeta:a=!1,writableOnly:o=!1}){if(e.environment===`sandbox`)return{summary:[`Sandbox Salesforce org (demo data — field names below are examples, real orgs differ):`,`- Contact: FirstName, LastName, Email, Title, AccountId, OwnerId, Lead_Score__c (custom)`,`- Lead: FirstName, LastName, Email, Company, Status (options: Open - Not Contacted, Working - Contacted), IsConverted`,`- Account: Name, Website, Industry (picklist), NumberOfEmployees, AnnualRevenue`,`- Opportunity: Name, StageName (stages: Prospecting, Negotiation, Closed Won), Amount, CloseDate, IsClosed, IsWon`,"Use field API names verbatim (`__c` suffix = custom). Call this tool against a production connection for the org's real shape."].join(`
|
|
69
|
-
`)};let s=e.connectionSecrets.salesforce;if(!s)return null;let c={},l=[];try{let[e]=await
|
|
70
|
-
`),data:c}}const
|
|
71
|
-
`)}async function
|
|
72
|
-
`)};let o=e.connectionSecrets.attio;if(!o)return null;let s={},c=[],l=await
|
|
73
|
-
`),data:s}}const Nf=g(`attio_record_id`),Pf=g(`attio_activities_found_count`),Ff=g(`attio_last_activity_date`),If=g(`attio_activities`),Lf=`activities:find:attio@1`,Rf=r.object({pipe_id:r.literal(Lf),run_if:b(),connector:S(),config:r.object({object:Au({sectionKey:`general`,required:!0,label:`Object`,groupPath:`config.general`,path:`config.object`,info:`The object the record belongs to (people, companies, or a custom object). Notes, meetings, and tasks are linked per record.`,enabledIf:_(`attio`),optionsDef:Sf}),input_fields:F(r.object({[Nf.name]:w({fieldName:Nf.name})})),include:Eu({sectionKey:`general`,required:!1,label:`Include`,groupPath:`config.general`,disableSearch:!0,info:`Which Attio activity surfaces to merge into the timeline. Notes and meetings (Call Intelligence) carry the 'what happened'; tasks are open/scheduled follow-ups.`,path:`config.include`,options:[{label:`Notes`,value:`notes`},{label:`Meetings`,value:`meetings`},{label:`Tasks`,value:`tasks`}]}).default([`notes`,`meetings`,`tasks`]),occurred_within:wu({sectionKey:`general`,required:!1,label:`Time window`,groupPath:`config.general`,path:`config.occurred_within`,description:`Only include activities whose timestamp falls within this window (resolved at run time). 'Any time' returns the most recent activities regardless of age.`,options:[{label:`Any time`,value:``},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`},{label:`Last 90 days`,value:`l90d`}]}).default(``),limit:Du({sectionKey:`general`,label:`Limit`,groupPath:`config.general`,path:`config.limit`,info:`Max activities returned in the timeline (newest first). The found count reports the true total before this cap.`,min:1,max:50}).default(10),output_fields:P(r.object({[Pf.name]:D({fieldName:Pf.name}),[Ff.name]:D({fieldName:Ff.name}),[If.name]:D({fieldName:If.name})}))})}),zf=e=>R(G(Nf,e)),Bf={"activities-find-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},Vf=class extends B{pipeId=Lf;payload;payloadSchema=Rf;billableOperations=Bf;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`activities-find-attio-v1-attio`)}getInputRequirement(){return zf(this.payload.config)}getRawOutputFields(){return{[Pf.name]:this.catalogOutput(Pf),[Ff.name]:this.catalogOutput(Ff),[If.name]:this.catalogOutput(If)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_generic`,allowManagedConnection:!1}]}async getAgentContext(e){let t=this.payload.config.object,n=Array.isArray(t)?t[0]??``:t;return Mf(e,{objects:n?[n]:`discover`})}},Hf=Rf,Uf={pipeId:Lf,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Lf),label:`Attio find activities`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Read the activity timeline of one Attio record — notes, meetings, and tasks linked to it — merged newest-first. A record with no activity completes with found count = 0.`,tags:[V.NEW],keywords:[`crm`,`activity`,`timeline`,`notes`,`meetings`,`tasks`,`engagement`],docPath:W(Lf),guide:"Map the record's Attio ID into the `attio_record_id` input (chained from a match pipe or search). This merges Attio's activity surfaces — notes, meetings (Call Intelligence), and tasks — into one timeline; pick which via 'Include'. attio_last_activity_date is the chainable staleness gate (run_if on it). For pure recency/relationship signals prefer the read-only interaction attributes on the record itself (pick `last_interaction` in a search or record:lookup) — they need no extra call. Meeting transcripts/summaries live in Attio's separate beta Call Recording API (not surfaced here yet).",billableOperations:Bf,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:zf(null),defaultPayload:{pipe_id:Lf,connector:{strategy:`first`,connections:[]},run_if:null,config:{object:`people`,input_fields:{attio_record_id:{alias:``}},include:[`notes`,`meetings`,`tasks`],occurred_within:``,limit:10,output_fields:{attio_activities_found_count:{alias:``,enabled:!0},attio_last_activity_date:{alias:``,enabled:!0},attio_activities:{alias:``,enabled:!0}}}}},Wf=g(`salesforce_record_id`),Gf=g(`salesforce_activities_found_count`),Kf=g(`salesforce_last_activity_date`),qf=g(`salesforce_activities`),Jf=`activities:find:salesforce@1`,Yf=r.object({pipe_id:r.literal(Jf),run_if:b(),connector:S(),config:r.object({type:wu({sectionKey:`general`,label:`Activity type`,groupPath:`config.general`,path:`config.type`,defaultValue:`all`,required:!0,options:[{value:`all`,label:`Tasks & events`},{value:`tasks`,label:`Tasks only`},{value:`events`,label:`Events only`}]}),status:wu({sectionKey:`general`,label:`Status`,groupPath:`config.general`,path:`config.status`,defaultValue:`all`,required:!0,options:[{value:`all`,label:`Any`},{value:`open`,label:`Open`},{value:`completed`,label:`Completed`}]}),occurred_within:wu({sectionKey:`general`,label:`Time window`,groupPath:`config.general`,path:`config.occurred_within`,required:!1,options:[{value:``,label:`Any time`},{value:`l7d`,label:`Last 7 days`},{value:`l30d`,label:`Last 30 days`},{value:`l90d`,label:`Last 90 days`}]}).default(``),custom_properties:pu({sectionKey:`general`,label:`Custom fields`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`CallDurationInSeconds`,info:"Task/Event field API names added to each activity JSON under `custom_properties` (standard timeline keys are already top-level)."}),limit:Du({sectionKey:`general`,label:`Limit`,groupPath:`config.general`,path:`config.limit`,info:`Maximum activities returned in the list output. The found count is always the true total before this cap.`,min:1,max:50}).default(10),input_fields:F(r.object({[Wf.name]:w({fieldName:Wf.name})})),output_fields:P(r.object({[Gf.name]:D({fieldName:Gf.name}),[Kf.name]:D({fieldName:Kf.name}),[qf.name]:D({fieldName:qf.name})}))})}),Xf=e=>R(G(Wf,e)),Zf={"activities-find-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},Qf=class extends B{pipeId=Jf;payload;payloadSchema=Yf;billableOperations=Zf;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`salesforce`]}estimateBillableOperations(e){return H(e,`activities-find-salesforce-v1-salesforce`)}getInputRequirement(){return Xf(this.payload.config)}getRawOutputFields(){return{[Gf.name]:this.catalogOutput(Gf),[Kf.name]:this.catalogOutput(Kf),[qf.name]:this.catalogOutput(qf)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return tf(e,{objects:[`Task`,`Event`],includeTaskMeta:!0})}},$f=Yf,ep={pipeId:Jf,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Jf),label:`Salesforce activities`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Read a Salesforce record's activity timeline — tasks and events (calls, emails, meetings) associated with a contact, lead, account, or opportunity. Returns the true activity count, the last-activity date, and the timeline items. An empty timeline completes with count = 0.`,tags:[V.FIELDS],keywords:[`crm`,`sfdc`,`task`,`event`,`call`,`timeline`,`activity`,`history`],docPath:W(Jf),guide:"The record-ID input consumes `salesforce_record_id`, which every Salesforce surface emits — chain from a match pipe or search (alias it to point at a differently named column). The ID's prefix picks the anchor automatically: Contact/Lead → WhoId, everything else → WhatId. Tasks and events are queried directly (not via ActivityHistories) so status/type/recency filter server-side. `salesforce_last_activity_date` is the staleness gate — run_if on it (e.g. only act when it's older than 90 days). For an org-wide activity report use query:salesforce@1 with raw SOQL over Task/Event instead. count = 0 is a successful result.",billableOperations:Zf,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:Xf(null),defaultPayload:{pipe_id:Jf,connector:{strategy:`first`,connections:[]},run_if:null,config:{type:`all`,status:`all`,occurred_within:``,custom_properties:[],limit:10,input_fields:{salesforce_record_id:{alias:``}},output_fields:{salesforce_activities_found_count:{alias:``,enabled:!0},salesforce_last_activity_date:{alias:``,enabled:!0},salesforce_activities:{alias:``,enabled:!0}}}}};function tp(e,t={}){let n=t.expectedType??`string`,r=t.expectedFormat??`text`,i=new Map;for(let t of e){if(!t)continue;let e;try{e=tc(t)}catch{continue}for(let[t,n]of Object.entries(e.inputs)){let e=i.get(t);i.set(t,{required:e&&e.required||n.required})}}let a=[];for(let[e,t]of i){let i={name:e,resolvedName:e,label:e,description:``,type:t=>Rd(t,e)?.type||n,format:r};a.push(t.required?R(i):vd(i))}return z(...a)}function q(e){let t=new Set;for(let n of e)if(n)try{let e=tc(n);for(let n of e.secrets)t.add(n)}catch{}return[...t]}function np(e){let t=new Set;for(let n of e)if(n)try{let e=tc(n);for(let n of e.constants)t.add(n)}catch{}return[...t]}const rp=[{label:`Contact`,value:`0-1`},{label:`Company`,value:`0-2`},{label:`Deal`,value:`0-3`},{label:`Ticket`,value:`0-5`},{label:`Note`,value:`0-46`},{label:`Task`,value:`0-27`},{label:`Call`,value:`0-48`},{label:`Meeting`,value:`0-47`},{label:`Email`,value:`0-49`}],ip={note:`0-46`,task:`0-27`,call:`0-48`,meeting:`0-47`,email:`0-49`},ap=e=>{let t=new Set;for(let n of e)if(n)try{let e=tc(n);for(let n of Object.keys(e.inputs))t.add(n)}catch{}return[...t].map(e=>vd({name:e,resolvedName:e,label:e,description:``,type:t=>Rd(t,e)?.type||`string`,format:`text`}))};async function op(e,t){let n=await fetch(`https://api.hubapi.com${t}`,{headers:{Authorization:`Bearer ${e}`},signal:AbortSignal.timeout(1e4)});if(!n.ok)throw new K.HttpError({msg:await n.text()});return await n.json()}function sp(e,t){if(!t)return e;let n=t.toLowerCase();return e.filter(e=>e.label.toLowerCase().includes(n))}const cp=e=>({requires:{connection:`hubspot`},options:async({query:t,secret:n,environment:r})=>{if(r===`sandbox`)return[{label:`Demo · Sales pipeline`,value:`sandbox-pipeline-1`},{label:`Demo · Renewals`,value:`sandbox-pipeline-2`}];if(!n)throw new K.MissingSecretError({providerName:`hubspot`});return sp((await op(n,`/crm/v3/pipelines/${encodeURIComponent(e)}`)).results.map(e=>({label:e.label,value:e.id})),t)},widgets:{provider_logo:{provider:`hubspot`}}}),lp={requires:{connection:`hubspot`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return sp([...rp,{label:`Demo · Domain map (custom)`,value:`2-000001`}],e);if(!t)throw new K.MissingSecretError({providerName:`hubspot`});let r=[];try{r=(await op(t,`/crm-object-schemas/v3/schemas`)).results.map(e=>({label:`${e.labels?.singular||e.name} (custom)`,value:e.objectTypeId}))}catch{r=[]}return sp([...rp,...r],e)},widgets:{provider_logo:{provider:`hubspot`}}},up={requires:{connection:`hubspot`,fields:[`config.from_object_type`,`config.to_object_type`]},options:async({query:e,secret:t,payload:n,environment:r})=>{if(r===`sandbox`)return[{label:`Primary`,value:`1`},{label:`Demo · Decision maker`,value:`35`}];if(!t)throw new K.MissingSecretError({providerName:`hubspot`});let i=n?.config,a=i?.from_object_type,o=i?.to_object_type;return!a||!o?[]:sp((await op(t,`/crm/v4/associations/${encodeURIComponent(a)}/${encodeURIComponent(o)}/labels`)).results.map(e=>({label:e.label||`Unlabeled (${e.category.toLowerCase().replace(`_`,` `)})`,value:String(e.typeId)})),e)},widgets:{provider_logo:{provider:`hubspot`}}},dp={requires:{connection:`hubspot`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return[{label:`Demo · Ada Lovelace (ada@example.com)`,value:`1001`},{label:`Demo · Alan Turing (alan@example.com)`,value:`1002`}];if(!t)throw new K.MissingSecretError({providerName:`hubspot`});return sp((await op(t,`/crm/v3/owners?limit=500`)).results.map(e=>({label:[e.firstName,e.lastName].filter(Boolean).join(` `)+(e.email?` (${e.email})`:``),value:e.id})),e)},widgets:{provider_logo:{provider:`hubspot`}}},fp=(e,t)=>({requires:{connection:`hubspot`},options:async({query:n,secret:r,environment:i})=>{if(i===`sandbox`)return[{label:`Demo · Lead`,value:`lead`},{label:`Demo · Customer`,value:`customer`},{label:`Demo · Custom stage`,value:`12345678`}];if(!r)throw new K.MissingSecretError({providerName:`hubspot`});return sp(((await op(r,`/crm/v3/properties/${encodeURIComponent(e)}/${encodeURIComponent(t)}`)).options??[]).filter(e=>!e.hidden).map(e=>({label:e.label,value:e.value})),n)},widgets:{provider_logo:{provider:`hubspot`}}}),pp={requires:{connection:`hubspot`,fields:[`config.filters.pipeline`]},options:async({query:e,secret:t,payload:n,environment:r})=>{if(r===`sandbox`)return[{label:`Demo · Qualified (Sales pipeline)`,value:`qualifiedtobuy`},{label:`Demo · Closed won (Sales pipeline)`,value:`closedwon`}];if(!t)throw new K.MissingSecretError({providerName:`hubspot`});let i=(n?.config)?.filters?.pipeline,a=Array.isArray(i)?i[0]:i,o=await op(t,`/crm/v3/pipelines/deals`);return sp((a?o.results.filter(e=>e.id===a):o.results).flatMap(e=>e.stages.map(t=>({label:`${t.label} (${e.label})`,value:t.id}))),e)},widgets:{provider_logo:{provider:`hubspot`}}};async function mp(e,{objectTypes:t,includePipelinesFor:n=[],writableOnly:r=!1}){if(e.environment===`sandbox`)return{summary:[`Sandbox HubSpot portal (demo data — property names below are examples, real portals differ):`,`- contacts: email, firstname, lastname, lifecyclestage (options: subscriber, lead, customer, demo_stage_1), hubspot_owner_id, custom_score`,`- companies: name, domain, industry, numberofemployees, hubspot_owner_id`,`- deals: dealname, pipeline, dealstage, amount, closedate`,`Call this tool against a production connection to get the portal's real properties.`].join(`
|
|
74
|
-
`)};let i=e.connectionSecrets.hubspot;if(!i)return null;let a={},o=[];for(let[e,n]of t){let t=(await
|
|
75
|
-
`),data:a}}const hp=g(`hubspot_object_id`),gp=g(`hubspot_activity_result`),_p=`activity:log:hubspot@1`,vp=(e,t)=>{let n=e.value;for(let r of Object.keys(n[t]??{})){let n=r.trim();if(!n)continue;let i=n=>e.issues.push({code:`custom`,input:r,message:n,path:[t,r]});if(n.includes(`{{`)){i("Property name must be a literal internal name (no `{{ }}` templating).");continue}/^[a-z][a-z0-9_]*$/.test(n)||i(`Invalid HubSpot property name "${n}" — internal names are lowercase letters, digits, and underscores.`)}},yp=r.object({pipe_id:r.literal(_p),run_if:b(),connector:S(),config:r.object({type:wu({sectionKey:`general`,label:`Activity type`,groupPath:`config.general`,path:`config.type`,defaultValue:`note`,required:!0,options:[{value:`note`,label:`Note`},{value:`task`,label:`Task`},{value:`call`,label:`Call`},{value:`email`,label:`Email`},{value:`meeting`,label:`Meeting`}]}),subject:x({sectionKey:`general`,label:`Subject / title`,inputType:`text`,expectedTagType:`string`,expectedTagFormat:`text`,groupPath:`config.general`,path:`config.subject`,placeholder:`Follow up with {{ first_name }}`,info:`The engagement's title (task subject, call/meeting/email title). Ignored for notes.`}),body:Cu({sectionKey:`general`,label:`Body`,groupPath:`config.general`,path:`config.body`,rows:3,placeholder:`Enriched via pipe0.`,info:"The engagement's body / note text. Type `/` to insert a field reference."}),timestamp:x({sectionKey:`general`,label:`Timestamp`,inputType:`text`,expectedTagType:`string`,expectedTagFormat:`text`,groupPath:`config.general`,path:`config.timestamp`,placeholder:`2026-07-08T09:00:00Z`,info:`Optional ISO timestamp or epoch ms (HubSpot requires one on every engagement). Empty = now.`}),record_object_type:Au({sectionKey:`general`,required:!0,label:`Record object type`,groupPath:`config.general`,path:`config.record_object_type`,info:`The type of the record being associated (contacts, companies, deals, or a custom object).`,enabledIf:_(`hubspot`),optionsDef:lp}),owner:Au({sectionKey:`general`,required:!1,label:`Owner`,groupPath:`config.general`,path:`config.owner`,info:`The HubSpot owner to assign the engagement to (hubspot_owner_id). Empty = unassigned.`,enabledIf:_(`hubspot`),optionsDef:dp}),values:gu({sectionKey:`general`,groupPath:`config.general`,path:`config.values`,label:`Additional properties`,info:"Extra engagement properties → values by internal name (e.g. `hs_task_status`, `hs_task_priority`, `hs_call_direction`). Type `/` in the Value column to insert a field reference. Blank values are skipped.",keyLabel:`Property name`,valueLabel:`Value`,keyPlaceholder:`hs_task_status`,valuePlaceholder:`NOT_STARTED`,maxKeys:50}),input_fields:F(r.object({[hp.name]:w({fieldName:hp.name})})),output_fields:P(r.object({[gp.name]:D({fieldName:gp.name})}))}).check(e=>vp(e,`values`))}),bp=e=>R(G(hp,e)),xp={"activity-log-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},Sp=class extends B{pipeId=_p;payload;payloadSchema=yp;billableOperations=xp;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`hubspot`]}estimateBillableOperations(e){return H(e,`activity-log-hubspot-v1-hubspot`)}getTemplates(){return[this.payload.config.subject,this.payload.config.body,this.payload.config.timestamp,...Object.values(this.payload.config.values??{})].filter(e=>!!e)}getInputRequirement(){return z(bp(this.payload.config),...ap(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[gp.name]:this.catalogOutput(gp)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_generic`,allowManagedConnection:!1}]}async getAgentContext(e){let t=this.payload.config.type,n=ip[t]??`0-46`;return mp(e,{objectTypes:[[`${t} engagement`,n]],writableOnly:!0})}},Cp=yp,wp={pipeId:_p,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(_p),label:`HubSpot log activity`,executionMode:`single`,categories:[`actions`,`integrations`],lifecycle:null,description:`Log an activity in HubSpot — a note, task, call, email, or meeting engagement — and associate it with a contact, company, deal, or custom object so it shows on the record's timeline.`,tags:[V.FIELDS],keywords:[`crm`,`note`,`task`,`call`,`email`,`engagement`,`meeting`,`timeline`],docPath:W(_p),guide:"Engagements are HubSpot's activity objects; this creates one and associates it (default association) to the record so it renders on the timeline. The record input consumes `hubspot_object_id`, which every HubSpot surface emits — chain from a match pipe or search; the record object type must match the record the ID belongs to. Subject maps per type (task subject, call/meeting/email title; ignored for notes); body maps to the type's body property. Put type-specific extras (e.g. `hs_task_status`, `hs_call_direction`) in Additional properties by internal name. To leave a CRM trace after sending, chain this after `email:send:*` with a run_if on the send-success output. HubSpot has no upsert for engagements — reruns create duplicate activities (the whole ecosystem shares this limitation).",billableOperations:xp,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:bp(null),defaultPayload:{pipe_id:_p,connector:{strategy:`first`,connections:[]},run_if:null,config:{type:`note`,subject:``,body:``,timestamp:``,record_object_type:`0-1`,owner:``,values:{},input_fields:{hubspot_object_id:{alias:``}},output_fields:{hubspot_activity_result:{alias:``,enabled:!0}}}}},Tp=g(`salesforce_record_id`),Ep=g(`salesforce_activity_result`),Dp=`activity:log:salesforce@1`,Op=(e,t)=>{let n=e.value;for(let r of Object.keys(n[t]??{})){let n=r.trim();if(!n)continue;let i=n=>e.issues.push({code:`custom`,input:r,message:n,path:[t,r]});if(n.includes(`{{`)){i("Field name must be a literal API name (no `{{ }}` templating).");continue}if(n.includes(`.`)){i(`Invalid field name "${n}" — dotted paths cannot be written on a Task.`);continue}/^[a-zA-Z][a-zA-Z0-9_]*$/.test(n)||i(`Invalid Salesforce field name "${n}" — API names are letters, digits, and underscores (custom fields end in __c).`)}},kp=r.object({pipe_id:r.literal(Dp),run_if:b(),connector:S(),config:r.object({subject:x({sectionKey:`general`,label:`Subject`,inputType:`text`,minLength:1,expectedTagType:`string`,expectedTagFormat:`text`,groupPath:`config.general`,path:`config.subject`,placeholder:`Emailed {{ first_name }}`,info:`The activity subject line — the headline shown on the timeline.`}),body:Cu({sectionKey:`general`,label:`Comments`,groupPath:`config.general`,path:`config.body`,rows:3,placeholder:`Sent via pipe0.`,info:"Optional activity description / comments. Type `/` to insert a field reference."}),subtype:wu({sectionKey:`general`,label:`Type`,groupPath:`config.general`,path:`config.subtype`,defaultValue:`task`,required:!0,options:[{value:`task`,label:`Task`},{value:`call`,label:`Call`},{value:`email`,label:`Email`}]}),status:Au({sectionKey:`general`,required:!1,label:`Status`,groupPath:`config.general`,path:`config.status`,info:`The task status (from the org's TaskStatus values). Empty = the org default. Marking a closed status sets the record's LastActivityDate.`,enabledIf:_(`salesforce`),optionsDef:Yd}),related_record:x({sectionKey:`general`,label:`Related record`,inputType:`text`,expectedTagType:`string`,expectedTagFormat:`text`,groupPath:`config.general`,path:`config.related_record`,placeholder:`001KJ000001xyzDIA2`,info:`Optional: the Account, Opportunity, or custom record this activity relates to (WhatId). At least one of related person / related record is required.`}),activity_date:x({sectionKey:`general`,label:`Activity date`,inputType:`text`,expectedTagType:`string`,expectedTagFormat:`text`,groupPath:`config.general`,path:`config.activity_date`,placeholder:`2026-07-08`,info:`Optional due/logged date (YYYY-MM-DD). Empty = today.`}),owner:Au({sectionKey:`general`,required:!1,label:`Assigned to`,groupPath:`config.general`,path:`config.owner`,info:`The Salesforce user the task is assigned to (OwnerId). Empty = the connected user.`,enabledIf:_(`salesforce`),optionsDef:qd}),external_id_field:Au({sectionKey:`general`,required:!1,label:`Idempotency key field`,groupPath:`config.general`,path:`config.external_id_field`,info:`Optional. A custom External ID field on Activity/Task — with a value below, logging becomes rerun-safe (upsert): the same key updates instead of creating a duplicate.`,enabledIf:_(`salesforce`),optionsDef:Xd}),external_id_value:x({sectionKey:`general`,label:`Idempotency key value`,inputType:`text`,expectedTagType:`string`,expectedTagFormat:`text`,groupPath:`config.general`,path:`config.external_id_value`,placeholder:`{{ email }}-outreach-2026-07`,info:`The unique value for the idempotency key field. Required only when an idempotency key field is selected.`}),values:gu({sectionKey:`general`,groupPath:`config.general`,path:`config.values`,label:`Additional fields`,info:"Extra Task field API names → values (e.g. `Priority`, custom fields). Field = the Salesforce API name; in the Value column type `/` to insert a field reference. Blank values are skipped.",keyLabel:`Field API name`,valueLabel:`Value`,keyPlaceholder:`Priority`,valuePlaceholder:`High`,maxKeys:50}),input_fields:F(r.object({[Tp.name]:w({fieldName:Tp.name})})),output_fields:P(r.object({[Ep.name]:D({fieldName:Ep.name})}))}).check(e=>Op(e,`values`))}),Ap=e=>vd(G(Tp,e)),jp={"activity-log-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},Mp=class extends B{pipeId=Dp;payload;payloadSchema=kp;billableOperations=jp;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`salesforce`]}estimateBillableOperations(e){return H(e,`activity-log-salesforce-v1-salesforce`)}getTemplates(){return[this.payload.config.subject,this.payload.config.body,this.payload.config.related_record,this.payload.config.activity_date,this.payload.config.external_id_value,...Object.values(this.payload.config.values??{})].filter(e=>!!e)}getInputRequirement(){return z(Ap(this.payload.config),...ef(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[Ep.name]:this.catalogOutput(Ep)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return tf(e,{objects:[`Task`],includeTaskMeta:!0,writableOnly:!0})}},Np=kp,Pp={pipeId:Dp,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Dp),label:`Salesforce log activity`,executionMode:`single`,categories:[`actions`,`integrations`],lifecycle:null,description:`Log an activity in Salesforce as a Task (the native 'Log a Call' idiom — subtype call/email/task) against a contact, lead, account, or opportunity. Optionally rerun-safe via an External ID idempotency key.`,tags:[V.FIELDS],keywords:[`crm`,`sfdc`,`task`,`call`,`email`,`write`,`note`,`touch`],docPath:W(Dp),guide:"Logging a call/email is creating a Task with the matching subtype — exactly what Salesforce's 'Log a Call' button does. The related-person input consumes `salesforce_record_id` (WhoId: Contact/Lead — optional, chain from a match pipe); and/or set a related record (WhatId: Account/Opportunity/custom, literal or `{{ column }}`); at least one is required per row. Status comes from the org's TaskStatus values (empty = org default; a closed status sets the record's LastActivityDate). To leave a CRM trace after sending, chain this after `email:send:*` with a run_if on the send-success output (`gmail_email_success` / `resend_email_success`). Reruns WITHOUT an idempotency key create duplicate tasks — set the External ID field + value to make it rerun-safe (the same key updates instead of duplicating).",billableOperations:jp,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:Ap(null),defaultPayload:{pipe_id:Dp,connector:{strategy:`first`,connections:[]},run_if:null,config:{subject:``,body:``,subtype:`task`,status:``,related_record:``,activity_date:``,owner:``,external_id_field:``,external_id_value:``,values:{},input_fields:{salesforce_record_id:{alias:``}},output_fields:{salesforce_activity_result:{alias:``,enabled:!0}}}}},Fp={title:`Software Engineer, CEO, ...`,seniority:`C-Suite, Senior, ...`,department:`Consulting, Finance, ...`,certification:`CISSP, AWS, ...`,crunchbase_category:`3D Printing, Big Date, ...`,honor:`Cum Laude, 40 Under 40, ...`,field_of_study:`Engineering, Computer Science, ...`,degree_name:`Bachelor of Science, ...`,extracurricular:`Athelete, Debate Team, ...`,job_function:`Accounting, Advertising, ...`,location:`United States, Germany, France, ...`,company_name:`Google, Anthropic, ...`,company_domain:`google.com, openai.com, ...`,company_profile_keyword:`B2B, Software, ...`,headline_keywords:`Founder, JavaScript, ...`,profile_keywords:`Coach, Scrum, ...`,languages:`German, English, ...`,languages_1:`Spanish, Italian, ...`,skills:`TypeScript, Playwright, ...`,industry:`IT, Agriculture, ...`,investor:`a16z, Inside Partners, ...`,school:`MIT, Harvard, ...`,person_profile_url:`https://www.linkedin.com/in/janedoe, ...`,person_name:`Jane Doe, John Smith, ...`,prompt:`Enter prompt here...`,template:`Enter template here...`};function J(e){return Fp[e]}const Ip=`agent:run@1`,Lp=`agent-run-v1`,Rp=[{value:`web_researcher`,label:`Web researcher`,widgets:{emoji:{char:`🔎`}}}],zp={...Zc(Lp),"agent-run-v1-search-parallel":{allowManagedConnection:!0,provider:`parallel`,credits:{default:.2},mode:`always`,note:`Billed per web search the agent performs.`},"agent-run-v1-extract-parallel":{allowManagedConnection:!0,provider:`parallel`,credits:{default:.1},mode:`always`,note:`Billed per URL-extraction call the agent performs.`}},Bp=r.object({pipe_id:r.literal(Ip),connector:C(),run_if:b(),config:r.object({agent_type:wu({sectionKey:`general`,groupPath:`config.prompt`,path:`config.agent_type`,label:`Agent type`,defaultValue:`web_researcher`,options:[...Rp],required:!0}),prompt:Gl({sectionKey:`general`,path:`config.prompt`,placeholder:J(`prompt`),groupPath:`config.prompt`,supportedTags:[`input`,`output`]}),model:Tu({sectionKey:`general`,label:`Model`,path:`config.model`,groupPath:`config.prompt`,billableOperations:zp,defaultValue:Vc})})}),Vp=class extends B{pipeId=Ip;payload;payloadSchema=Bp;billableOperations=zp;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[...Wc(this.payload.config.model),`parallel`]}estimateBillableOperations(e){return[...$c(e,{model:this.payload.config.model,prefix:Lp,inputTokens:2e4,outputTokens:1500}),{billableOperation:`agent-run-v1-search-parallel`,quantity:e.count*4},{billableOperation:`agent-run-v1-extract-parallel`,quantity:e.count*1}]}getInputRequirement(){return tp([this.payload.config.prompt.template])}getSecretRequirements(){return q([this.payload.config.prompt.template])}getConstantRequirements(){return np([this.payload.config.prompt.template])}getRawOutputFields(){let e=this.payload.config.prompt.template,t=this.payload.config.prompt.json_schemas??{},n={},r;try{r=tc(e)}catch{return n}for(let e of r.outputs){let r=e.type;if(r===`json`){let i=e.schemaRef?t[e.schemaRef]:void 0;n[e.name]={enabled:!0,name:e.name,label:e.name,resolvedName:e.name,type:r,description:e.description,jsonMeta:{zodSchema:i,exampleValue:null},format:null,isCatalogFIeld:!1,isPrimaryOutput:!1}}else n[e.name]={enabled:!0,name:e.name,label:e.name,resolvedName:e.name,type:r,description:e.description,jsonMeta:null,format:e.format??null,isCatalogFIeld:!1,isPrimaryOutput:!1}}return n}getConnectionsRequirements(){return[...Gc(this.payload.config.model),{provider:`parallel`,rateLimitRatio:4,rateLimitOperation:`parallel_search_base`,allowManagedConnection:!0},{provider:`parallel`,rateLimitRatio:1,rateLimitOperation:`parallel_extract`,allowManagedConnection:!0}]}},Hp=Bp,Up={pipeId:Ip,inputFieldMode:`config`,outputFieldMode:`config`,basePipe:U(Ip),label:`AI agent`,executionMode:`single`,categories:[`actions`,`tools`],lifecycle:null,description:`Runs an AI research agent with web tools and structured output fields.`,guide:`AI agent with tools. Like prompt:run@1, inputs and outputs are fully dynamic — defined by the tags in the prompt template — but the agent can call tools before answering. The agent type decides the toolset: web_researcher gets web search and URL extraction, for questions model knowledge alone can't answer ('has {{ company_name }} ever raised money?', 'find the general counsel of {{ company_name }}'). Every tool call is billed on top of tokens, so when no live research is needed, use prompt:run@1 instead. Fields the agent cannot ground in evidence come back as no_result, not a guess.`,tags:[V.AI],keywords:[`research`,`web search`,`llm`,`gpt`,`chatgpt`,`browse`,`tools`],docPath:W(Ip),defaultInputRequirement:null,billableOperations:zp,allowedUserConnectionProviders:[...Kc(),`parallel`],managedProviders:[...Kc(),`parallel`],deprecatedProviders:[],defaultPayload:{pipe_id:Ip,connector:null,run_if:null,config:{agent_type:`web_researcher`,model:Vc,prompt:{template:``,json_schemas:{}}}}},Wp=r.array(r.object({field_name:r.string(),entry_field:r.string().optional()})).check(e=>{let t=new Set;e.value.forEach((n,r)=>{n.field_name.length<1&&e.issues.push({code:`custom`,input:n.field_name,path:[r,`field_name`],message:`Map every bucket field to a row column.`});let i=n.entry_field?.trim()||n.field_name;i&&t.has(i)&&e.issues.push({code:`custom`,input:i,path:[r,`entry_field`],message:`Duplicate bucket field "${i}".`}),i&&t.add(i)})}).check(e=>{e.value.length<1&&e.issues.push({code:`custom`,input:e.value,message:`Map at least one field.`})}),Gp=()=>r.string().nullable().default(``),Kp=e=>({requires:{connection:`pipe0`},enabledIf:_(`pipe0`,`Select a pipe0 connection to see bucket suggestions`),options:async({query:t,client:n})=>n?(await n.buckets.list({query:t,type:e})).map(e=>({label:e.name&&e.name!==e.slug?`${e.name} (${e.slug})`:e.slug,value:e.slug,data:{contract:e.contract,type:e.type}})):[],widgets:{provider_logo:{provider:`pipe0`}}}),qp=e=>{let t=r.union([r.string(),r.array(r.string())]).check(e=>{(e.value===``||Array.isArray(e.value)&&e.value.length===0)&&e.issues.push({code:`custom`,input:e.value,message:`Required`})}),n={type:`context_select_input`,label:`Bucket`,info:`Pick an existing bucket (its identifying fields appear below for mapping), or type a new slug and choose Create — the new bucket's schema is built from the columns you pick and written on first run (requires 'Allow bucket creation').`,groupPath:`config.general`,sectionKey:`general`,path:`config.bucket`,required:!0,allowCreate:!0,placeholder:`Select or create a bucket…`,optionsDef:Kp(e),options:[],mappingPath:`config.entry_fields`,contractPath:`config.contract`,keyLabel:`Bucket field`},i=e=>{let t=e.validationContext,r=t?Object.entries(t.fieldDefinitions).filter(([e])=>e.toLowerCase()!==`id`).map(([e,t])=>({value:e,label:e,widgets:{field_type:{type:t.type}}})):[];return{...n,fieldOptions:r}};return i.staticMeta=n,v.add(t,i),t},Jp={on_own_entry:[{value:`proceed`,label:`Proceed (at-least-once)`},{value:`block`,label:`Block (at-most-once)`}],on_missing:[{value:`proceed`,label:`Treat as part of the entry`},{value:`block`,label:`Skip the row`}]},Yp=()=>Su({label:`New bucket: name`,path:`config.new_bucket_name`,groupPath:`config.bucket_creation`,sectionKey:`general`,inputType:`text`,placeholder:`CRM contacts`,maxLength:120}).nullable().default(``),Xp=()=>({new_bucket_name:Yp(),new_bucket_ttl_in_seconds:Du({label:`New bucket: TTL (seconds)`,description:`Claims expire after this many seconds. Empty = never.`,path:`config.new_bucket_ttl_in_seconds`,groupPath:`config.bucket_creation`,sectionKey:`general`,min:1}).nullable().default(null),new_bucket_own_entry_behavior:wu({label:`New bucket: own entry re-claimed`,description:`What happens when a row re-claims an entry it already wrote.`,path:`config.new_bucket_own_entry_behavior`,groupPath:`config.bucket_creation`,sectionKey:`general`,required:!1,options:Jp.on_own_entry}).default(`block`),new_bucket_missing_value_behavior:wu({label:`New bucket: missing values`,description:`Proceed treats missing values as part of the entry; Block skips the row.`,path:`config.new_bucket_missing_value_behavior`,groupPath:`config.bucket_creation`,sectionKey:`general`,required:!1,options:Jp.on_missing}).default(`proceed`)}),Zp=()=>({new_bucket_name:Yp(),new_bucket_start:Du({label:`New bucket: start`,description:`First number the counter assigns.`,path:`config.new_bucket_start`,groupPath:`config.bucket_creation`,sectionKey:`general`}).nullable().default(1),new_bucket_step:Du({label:`New bucket: step`,description:`Increment between assigned numbers.`,path:`config.new_bucket_step`,groupPath:`config.bucket_creation`,sectionKey:`general`,min:1}).nullable().default(1)}),Qp=()=>({new_bucket_name:Yp()}),$p={provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_api_operation`,allowManagedConnection:!0};function em(e){let t=pt(e.contract),n=e.entry_fields??[],r=[tp([ot(e.bucket)],{expectedType:`string`,expectedFormat:`text`})],i=n.map(e=>{let{column:n,bucketField:r}=it(e),i=t?.input_fields[r]?.type;return R({name:n,resolvedName:n,label:``,description:``,type:i?()=>i:e=>Rd(e,n)?.type||`unknown`,format:null})});return i.length>0&&r.push(_d(...i)),z(...r)}function tm(e){return q([ot(e.bucket)])}function nm(e){return np([ot(e.bucket)])}const rm=`bucket:check@1`,im=g(`found_in_bucket`),am=r.object({pipe_id:r.literal(rm),connector:S(),run_if:b(),config:r.object({bucket:qp(`claim`),entry_fields:Wp,contract:Gp(),output_fields:P(r.object({[im.name]:D({fieldName:im.name})}))})}),om={"bucket-check-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},sm=class extends B{pipeId=rm;payload;payloadSchema=am;billableOperations=om;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`bucket-check-v1-pipe0`)}getInputRequirement(){return em(this.payload.config)}getSecretRequirements(){return tm(this.payload.config)}getConstantRequirements(){return nm(this.payload.config)}getBucketRequirements(){let e=ot(this.payload.config.bucket);return!e||e.includes(`{{`)?[]:[{slug:e,type:`claim`,schema:pt(this.payload.config.contract),allowCreation:!1}]}getRawOutputFields(){return{[im.name]:this.catalogOutput(im)}}getConnectionsRequirements(){return[$p]}},cm=am,lm={pipeId:rm,basePipe:U(rm),label:`Check`,executionMode:`single`,categories:[`actions`,`tools`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:`Look up an entry in an existing claim bucket WITHOUT writing. Present → no_result (e.g. suppressed); absent → completed. For suppression / do-not-contact / already-seen gates.`,guide:`Consult a claim bucket read-only before an action — the canonical suppression / do-not-contact gate. Map the identifying field(s) via entry_fields. If the entry is PRESENT (and live) the pipe resolves no_result, skipping downstream pipes (the send/append is suppressed); if ABSENT it completes and downstream runs. Unlike bucket:claim@1 this NEVER writes or creates — the list is curated elsewhere (a bucket:claim@1 writer, an import, or the Assets tab), so readers can't corrupt it. Missing values follow the bucket's on_missing policy: 'proceed' looks up the entry with those values stored as empty (the mirror of what bucket:claim@1 wrote for a row missing the same fields); 'block' resolves no_result; a row where EVERY identifying value is missing is always skipped. Requires an existing claim bucket. FREE pipe0 operation; requires a pipe0 connection.`,docPath:W(rm),tags:[V.FIELDS],keywords:[`suppression`,`do not contact`,`blocklist`,`lookup`,`exclude`,`gate`,`dedupe`],billableOperations:om,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:rm,connector:{strategy:`first`,connections:[]},run_if:null,config:{bucket:``,entry_fields:[],contract:``,output_fields:{found_in_bucket:{alias:``,enabled:!0}}}}},um=`bucket:claim@1`,dm=g(`is_claim_successful`),fm=r.object({pipe_id:r.literal(um),connector:S(),run_if:b(),config:r.object({bucket:qp(`claim`),entry_fields:Wp,contract:Gp(),...Xp(),allow_bucket_creation:E({label:`Allow bucket creation`,description:`Create the bucket (typed as a claim bucket from this pipe's fields) on first write if it does not already exist. Off by default.`,defaultValue:!1,groupPath:`config.general`,path:`config.allow_bucket_creation`,sectionKey:`general`}),output_fields:P(r.object({[dm.name]:D({fieldName:dm.name})}))})}),pm={"bucket-claim-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},mm=class extends B{pipeId=um;payload;payloadSchema=fm;billableOperations=pm;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`bucket-claim-v1-pipe0`)}getInputRequirement(){return em(this.payload.config)}getSecretRequirements(){return tm(this.payload.config)}getConstantRequirements(){return nm(this.payload.config)}getBucketRequirements(){let e=ot(this.payload.config.bucket);return!e||e.includes(`{{`)?[]:[{slug:e,type:`claim`,schema:pt(this.payload.config.contract),allowCreation:this.payload.config.allow_bucket_creation??!1}]}getRawOutputFields(){return{[dm.name]:this.catalogOutput(dm)}}getConnectionsRequirements(){return[$p]}},hm=fm,gm={pipeId:um,basePipe:U(um),label:`Claim`,executionMode:`single`,categories:[`actions`,`tools`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:`Claim an entry in a bucket (write-if-absent). Wins (is_claim_successful: true) or finds the entry already taken (no_result). Put this before a write pipe to guard against duplicates across sheets, runs, and time.`,guide:`Claim an identity in a claim bucket before an irreversible action (an append, a send). Map the identifying field(s) via entry_fields (bucket field → row column alias); the bucket's slug is org-unique. If is_claim_successful:true this row is the first to write this entry — let the guarded pipe run on it. If the entry already exists the pipe resolves no_result, which SKIPS every downstream pipe depending on this output — so a duplicate never reaches the writer. Dedup (no TTL), time gates (bucket TTL), suppression (populate here, consult with bucket:check@1) and idempotent writes are all this one op. Behavior lives on the bucket, not the pipe: ttl_seconds (an expired entry can be claimed again — a frequency gate), on_own_entry ('proceed' = the row that wrote an entry re-claims it successfully on re-runs, at-least-once; 'block' = it can't, at-most-once — the default), and on_missing. Missing values follow on_missing: 'proceed' stores them as empty (null) parts of the entry, so rows missing the same fields dedupe against each other while ('Tom','t@t.com') stays distinct from (null,'t@t.com'); 'block' resolves no_result; a row where EVERY identifying value is missing is always skipped. allow_bucket_creation (default off) creates the bucket, typed from the mapped fields, on first write; the new_bucket_* settings (name, TTL, own-entry, missing-value policy) configure ONLY that newly created bucket and are ignored when it already exists — an existing bucket's policy is edited in the dash, not from a pipe. FREE pipe0 operation; requires a pipe0 connection (list_connections).`,docPath:W(um),tags:[V.FIELDS],keywords:[`dedupe`,`deduplicate`,`duplicate`,`guard`,`reserve`,`idempotent`,`lock`],billableOperations:pm,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:um,connector:{strategy:`first`,connections:[]},run_if:null,config:{bucket:``,entry_fields:[],contract:``,new_bucket_name:``,new_bucket_ttl_in_seconds:null,new_bucket_own_entry_behavior:`block`,new_bucket_missing_value_behavior:`proceed`,allow_bucket_creation:!1,output_fields:{is_claim_successful:{alias:``,enabled:!0}}}}},_m=`bucket:count@1`,vm=g(`bucket_counter`),ym=r.object({pipe_id:r.literal(_m),connector:S(),run_if:b(),config:r.object({bucket:qp(`counter`),entry_fields:Wp,contract:Gp(),...Zp(),allow_bucket_creation:E({label:`Allow bucket creation`,description:`Create the bucket (typed as a counter bucket from this pipe's fields) on first write if it does not already exist. Off by default.`,defaultValue:!1,groupPath:`config.general`,path:`config.allow_bucket_creation`,sectionKey:`general`}),output_fields:P(r.object({[vm.name]:D({fieldName:vm.name})}))})}),bm={"bucket-count-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},xm=class extends B{pipeId=_m;payload;payloadSchema=ym;billableOperations=bm;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`bucket-count-v1-pipe0`)}getInputRequirement(){return em(this.payload.config)}getSecretRequirements(){return tm(this.payload.config)}getConstantRequirements(){return nm(this.payload.config)}getBucketRequirements(){let e=ot(this.payload.config.bucket);return!e||e.includes(`{{`)?[]:[{slug:e,type:`counter`,schema:pt(this.payload.config.contract),allowCreation:this.payload.config.allow_bucket_creation??!1}]}getRawOutputFields(){return{[vm.name]:this.catalogOutput(vm)}}getConnectionsRequirements(){return[$p]}},Sm=ym,Cm={pipeId:_m,basePipe:U(_m),label:`Count`,executionMode:`single`,categories:[`actions`,`tools`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:`Assign the next sequence number to an entry in a counter bucket, exactly once (a re-run returns the same number). The building block for round-robin lead routing.`,guide:`Give each unique entry its own stable number from a counter bucket. Map the identifying field(s) via entry_fields (bucket field → row column alias). A NEW entry takes the next number (bucket.start, then +step); an entry that already has a number returns that SAME number on every re-run — so assignments are stable and re-run-safe. Compose round-robin routing: a sellers sheet + this counter + (seller_index = (value - 1) mod seller_count) + a row lookup by that ordinal. Behavior (start, step) lives on the bucket. A row with ANY missing identifying value gets no number (no_result) — counters have no missing-value policy. allow_bucket_creation (default off) creates the counter bucket on first write; new_bucket_start/new_bucket_step configure ONLY that newly created bucket and are ignored when it already exists. FREE pipe0 operation; requires a pipe0 connection.`,docPath:W(_m),tags:[V.FIELDS],keywords:[`counter`,`sequence`,`increment`,`numbering`,`bucket`],billableOperations:bm,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:_m,connector:{strategy:`first`,connections:[]},run_if:null,config:{bucket:``,entry_fields:[],contract:``,new_bucket_name:``,new_bucket_start:1,new_bucket_step:1,allow_bucket_creation:!1,output_fields:{bucket_counter:{alias:``,enabled:!0}}}}},wm=`bucket:countif@1`,Tm=g(`bucket_event_count`),Em=g(`bucket_event_last_at`),Dm=r.object({pipe_id:r.literal(wm),connector:S(),run_if:b(),config:r.object({bucket:qp(`event_counter`),entry_fields:Wp,contract:Gp(),where:Rl({path:`config.where`,groupPath:`config.general`,sectionKey:`general`,label:`Count if (optional)`,description:`Count one event when the row matches this condition; otherwise output the current count unchanged. Leave empty to count every run.`}),...Qp(),allow_bucket_creation:E({label:`Allow bucket creation`,description:`Create the bucket (typed as an event-counter bucket from this pipe's fields) on first write if it does not already exist. Off by default.`,defaultValue:!1,groupPath:`config.general`,path:`config.allow_bucket_creation`,sectionKey:`general`}),output_fields:P(r.object({[Tm.name]:D({fieldName:Tm.name}),[Em.name]:D({fieldName:Em.name})}))})}),Om={"bucket-countif-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},km=class extends B{pipeId=wm;payload;payloadSchema=Dm;billableOperations=Om;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`bucket-countif-v1-pipe0`)}getInputRequirement(){return em(this.payload.config)}getSecretRequirements(){return tm(this.payload.config)}getConstantRequirements(){return nm(this.payload.config)}getRowConditionBlocks(){return this.payload.config.where?[this.payload.config.where]:[]}getBucketRequirements(){let e=ot(this.payload.config.bucket);return!e||e.includes(`{{`)?[]:[{slug:e,type:`event_counter`,schema:pt(this.payload.config.contract),allowCreation:this.payload.config.allow_bucket_creation??!1}]}getRawOutputFields(){return{[Tm.name]:this.catalogOutput(Tm),[Em.name]:this.catalogOutput(Em)}}getConnectionsRequirements(){return[$p]}},Am=Dm,jm={pipeId:wm,basePipe:U(wm),label:`Count if`,executionMode:`single`,categories:[`actions`,`tools`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:`Count events per entry in an event-counter bucket: each run where the condition matches increments the entry's count; otherwise the current count is read unchanged. Outputs the running count and when it last changed.`,guide:`Count how often something has happened per entity, durably across runs and sheets — the canonical error/attempt counter for freshness systems. Map the identifying field(s) via entry_fields (e.g. user_id); config.where decides whether THIS run counts: match ⇒ increment (one event per executed matching run), no match ⇒ read-only output of the current count, empty where ⇒ every run counts. The where can reference field STATUS (property 'status'), so 'count if status(profile) eq failed' counts failed attempts while the pipe itself still runs — unlike a run_if gate, a non-matching row still gets the current count (always numeric, 0 before any event), keeping conditions like 'error_count lte 3' evaluable. IMPORTANT: also reference the where's fields in run_if listing every possible status (completed, failed, no_result, skipped) — the run_if reference is what ORDERS this pipe after those fields' producers; without it the where may read a stale status. Outputs: bucket_event_count (alias e.g. error_count) and bucket_event_last_at (when the count last changed — alias e.g. last_successfully_enriched_at with 'where status(profile) eq completed'; survives failed re-runs because the read branch re-emits it from the bucket). Re-run semantics: a force-requeued cell executes once and counts once; pinning run_statuses ['completed'] on this pipe alone inflates counts. Event counters have no TTL/decay in v1 — clear the entry in the dash to reset. allow_bucket_creation (default off) creates the bucket, typed from the mapped fields, on first write. FREE pipe0 operation; requires a pipe0 connection (list_connections).`,docPath:W(wm),tags:[V.FIELDS],keywords:[`count`,`counter`,`increment`,`events`,`error count`,`attempts`,`retry cap`,`failures`,`tally`,`bucket`],billableOperations:Om,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:wm,connector:{strategy:`first`,connections:[]},run_if:null,config:{bucket:``,entry_fields:[],contract:``,where:null,new_bucket_name:``,allow_bucket_creation:!1,output_fields:{bucket_event_count:{alias:``,enabled:!0},bucket_event_last_at:{alias:``,enabled:!1}}}}},Mm=`company:domain:workemail@1`,Nm=g(`company_domain`),Pm=g(`work_email`),Fm=r.object({pipe_id:r.literal(Mm),run_if:b(),connector:Jl(),config:r.object({input_fields:F(r.object({[Pm.name]:w({fieldName:Pm.name})})),output_fields:P(r.object({[Nm.name]:D({fieldName:Nm.name})}))}).optional()}),Im=e=>R(G(Pm,e)),Lm={"company-domain-workemail-v1-pipe0":{credits:{default:0},allowManagedConnection:!0,mode:`always`,provider:`pipe0`}},Rm=class extends B{pipeId=Mm;payload;payloadSchema=Fm;billableOperations=Lm;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-domain-workemail-v1-pipe0`)}getInputRequirement(){return Im(this.payload.config)}getRawOutputFields(){return{[Nm.name]:this.catalogOutput(Nm)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},zm=Fm,Bm={pipeId:Mm,basePipe:U(Mm),inputFieldMode:`static`,outputFieldMode:`static`,label:`Website from email`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`Extract the company website URL from a work email address.`,tags:[V.EMAIL,V.WORK_EMAIL,V.WEBSITE],keywords:[`url`,`extract`,`site`,`web address`],docPath:W(Mm),allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],billableOperations:Lm,defaultInputRequirement:Im(null),defaultPayload:{pipe_id:Mm,connector:null,run_if:null,config:{input_fields:{[Pm.name]:{alias:``}},output_fields:{[Nm.name]:{alias:``,enabled:!0}}}}};function Vm(e){return(e.widgets||{}).display_value?.label}function Hm(e){console.dir(e,{depth:100})}function Um(e){return typeof e==`object`&&e?JSON.stringify(e):e}function Y(e){return e===0?1:e===1?.3:e===2?.2:.1}function Wm(e){if(typeof e!=`object`||!e||Array.isArray(e))return e;let t={};return Object.keys(e).sort().forEach(n=>{t[n]=Wm(e[n])}),t}const Gm={string:[`address_line_1`,`email`,`url`,`website_url`,`markdown`,`zip_code`,`date`,`datetime`,`phone`,`text`,`profile_url`],json:[`json_object`,`json_list`],number:[`int`,`decimal`],boolean:[],unknown:[]};function X(e,t){let n=Object.entries(t).filter(([t,n])=>n.provider===e);if(n.length!==1)throw Error(`Found ${n.length} billing operations for provider ${e}. This is not allowed. There must be exactly 1 billing operation per provider.`);let[r,i]=n[0];return{billableOperation:r,billableOperationDef:i}}const Km=`company:funding:waterfall@1`,qm=g(`company_name`),Jm=g(`company_domain`),Ym=g(`funding_history`),Xm=g(`funding_total_usd`),Zm=[`amplemarket`,`leadmagic`],Qm=[{provider:`amplemarket`},{provider:`leadmagic`}],$m={"company-funding-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:1.5},mode:`onSuccess`},"company-funding-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`}},eh=r.object({pipe_id:r.literal(Km),connector:C(),run_if:b(),config:r.object({providers:T({availableProviders:Zm,defaultProviders:Qm,sectionKey:`general`,providerCredits:Dd($m,Zm)}),input_fields:F(r.object({[qm.name]:w({fieldName:qm.name}),[Jm.name]:w({fieldName:Jm.name})})),output_fields:P(r.object({[Ym.name]:D({fieldName:Ym.name}),[Xm.name]:D({fieldName:Xm.name})}))}).optional()}),th=e=>_d(G(qm,e),G(Jm,e)),nh=class extends B{pipeId=Km;payload;payloadSchema=eh;billableOperations=$m;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return th(this.payload.config)}getRawOutputFields(){return{[Ym.name]:this.catalogOutput(Ym,{isPrimaryOutput:!0}),[Xm.name]:this.catalogOutput(Xm)}}getConnectionsRequirements(){let e={amplemarket:`amplemarket_generic`,leadmagic:`leadmagic_company_funding`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},rh=eh,ih={pipeId:Km,basePipe:U(Km),label:`Funding history`,executionMode:`waterfall`,categories:[`company_data`],lifecycle:null,description:`Funding rounds, investors, and total funding in a waterfall motion.`,tags:[V.FINANCIAL_DATA,V.WATERFALL],keywords:[`investors`,`rounds`,`raised`,`venture`,`series`,`capital`,`fallback`],docPath:W(Km),managedProviders:Zm,deprecatedProviders:[],allowedUserConnectionProviders:Zm,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:$m,defaultInputRequirement:th(null),defaultPayload:{pipe_id:Km,connector:null,run_if:null,config:{providers:Qm,input_fields:{company_name:{alias:``},company_domain:{alias:``}},output_fields:{funding_history:{alias:``,enabled:!0},funding_total_usd:{alias:``,enabled:!0}}}}},ah=g(`company_name`),oh=g(`company_profile_url`),sh=g(`company_domain`),ch=g(`cleaned_company_name`),lh=`company:identity@3`,uh=r.object({pipe_id:r.literal(lh),run_if:b(),connector:Jl(),config:r.object({input_fields:F(r.object({[ah.name]:w({fieldName:ah.name})})),output_fields:P(r.object({[oh.name]:D({fieldName:oh.name}),[ch.name]:D({fieldName:ch.name}),[sh.name]:D({fieldName:sh.name})}))}).optional()}),dh=e=>R(G(ah,e)),fh={"company-identity-v3-pipe0":{allowManagedConnection:!0,credits:{default:.3,level1:{credits:.2,weight:1}},mode:`always`,provider:`pipe0`}},ph=class extends B{pipeId=lh;payload;payloadSchema=uh;billableOperations=fh;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-identity-v3-pipe0`)}getInputRequirement(){return dh(this.payload.config)}getRawOutputFields(){return{[oh.name]:this.catalogOutput(oh),[sh.name]:this.catalogOutput(sh),[ch.name]:this.catalogOutput(ch)}}getConnectionsRequirements(){return[{provider:`gemini`,rateLimitRatio:1,rateLimitOperation:`gemini_35_flash`,allowManagedConnection:!0},{provider:`serper`,rateLimitRatio:2,rateLimitOperation:`serper_search`,allowManagedConnection:!0},{provider:`leadmagic`,rateLimitRatio:.2,rateLimitOperation:`leadmagic_company_search`,allowManagedConnection:!0},{provider:`perplexity`,rateLimitRatio:.2,rateLimitOperation:`perplexity_generic`,allowManagedConnection:!0},{provider:`pipe0`,rateLimitRatio:.02,rateLimitOperation:`pipe0_scraper`,allowManagedConnection:!0}]}},mh=uh,hh={pipeId:lh,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(lh),label:`Company identity`,executionMode:`mix`,categories:[`company_data`],lifecycle:null,description:`Find any company's website URL, LinkedIn profile URL, and cleaned name.`,tags:[V.WEBSITE,V.LINKEDIN],keywords:[`website`,`linkedin`,`url`,`domain`,`resolve`,`normalize`],docPath:W(lh),billableOperations:fh,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:dh(null),defaultPayload:{pipe_id:lh,connector:null,run_if:null,config:{input_fields:{company_name:{alias:``}},output_fields:{cleaned_company_name:{alias:``,enabled:!0},company_profile_url:{alias:``,enabled:!0},company_domain:{alias:``,enabled:!0}}}}},gh=g(`company_domain`),_h=g(`company_name`),vh=g(`crustdata_company_identity_matches`),yh=`company:identity:crustdata@1`,bh=r.object({pipe_id:r.literal(yh),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[gh.name]:w({fieldName:gh.name}),[_h.name]:w({fieldName:_h.name})})),output_fields:P(r.object({[vh.name]:D({fieldName:vh.name})}))}).optional()}),xh=e=>_d(G(gh,e),G(_h,e)),Sh={"company-identity-crustdata-v1-crustdata":{allowManagedConnection:!0,credits:{default:.001},mode:`onSuccess`,provider:`crustdata`}},Ch=class extends B{pipeId=yh;payload;payloadSchema=bh;billableOperations=Sh;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`company-identity-crustdata-v1-crustdata`)}getInputRequirement(){return xh(this.payload.config)}getRawOutputFields(){return{[vh.name]:this.catalogOutput(vh)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_company_identify`,allowManagedConnection:!0}]}},wh=bh,Th={pipeId:yh,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(yh),label:`Company identity`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`Resolve a company to Crustdata's matching candidates by domain or name. Returns the full list of matches.`,tags:[V.WEBSITE,V.LINKEDIN],keywords:[`website`,`linkedin`,`url`,`domain`,`resolve`,`match`,`candidates`],docPath:W(yh),billableOperations:Sh,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:xh(null),defaultPayload:{pipe_id:yh,connector:null,run_if:null,config:{input_fields:{company_domain:{alias:``},company_name:{alias:``}},output_fields:{crustdata_company_identity_matches:{alias:``,enabled:!0}}}}},Eh=g(`company_domain`),Dh=g(`companyenrich_matches`),Oh=`company:lookalikes:companyenrich@2`,kh=r.object({pipe_id:r.literal(Oh),run_if:b(),connector:C(),config:r.object({limit:Du({groupPath:`config.general`,max:50,min:1,path:`config.limit`,sectionKey:`general`,info:`Define how many lookalikes you want to find.`,label:`Limit`}),input_fields:F(r.object({[Eh.name]:w({fieldName:Eh.name})})),output_fields:P(r.object({[Dh.name]:D({fieldName:Dh.name})}))}).optional()}),Ah=e=>R(G(Eh,e)),jh={"company-lookalikes-companyenrich-v2-companyenrich":{allowManagedConnection:!0,credits:{default:.2,level1:{credits:.1,weight:1}},mode:`onSuccess`,note:`One billing event per result.`,provider:`companyenrich`}},Mh=class extends B{pipeId=Oh;payload;payloadSchema=kh;billableOperations=jh;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`companyenrich`]}estimateBillableOperations(e){return[{billableOperation:`company-lookalikes-companyenrich-v2-companyenrich`,quantity:e.count*5}]}getInputRequirement(){return Ah(this.payload.config)}getRawOutputFields(){return{[Dh.name]:this.catalogOutput(Dh)}}getConnectionsRequirements(){return[{provider:`companyenrich`,rateLimitRatio:1,rateLimitOperation:`company_enrich_generic`,allowManagedConnection:!0}]}},Nh=kh,Ph={pipeId:Oh,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Oh),label:`Find company lookalikes`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`Find companies similar to the company you provide as input.`,tags:[V.COMPANY_PROFILES],keywords:[`similar`,`competitors`,`comparable`,`peers`,`alike`,`related`],docPath:W(Oh),billableOperations:jh,allowedUserConnectionProviders:[`companyenrich`],managedProviders:[`companyenrich`],deprecatedProviders:[],defaultInputRequirement:Ah(null),defaultPayload:{pipe_id:Oh,connector:null,run_if:null,config:{limit:20,input_fields:{company_domain:{alias:``}},output_fields:{companyenrich_matches:{alias:``,enabled:!0}}}}},Fh=g(`company_domain`),Ih=g(`attio_companies_found_count`),Lh=g(`attio_record_id`),Rh=g(`attio_company_matches`),zh=`company:match:attio@1`,Bh=r.object({pipe_id:r.literal(zh),run_if:b(),connector:S(),config:r.object({match_on:wu({sectionKey:`general`,required:!1,label:`Match on`,groupPath:`config.general`,path:`config.match_on`,description:`Exact domain values are unique in Attio (at most one company). Root domain also matches subdomain records (app.acme.com, shop.acme.com) — several results are normal.`,options:[{label:`Exact domain`,value:`domain`},{label:`Root domain`,value:`root_domain`}]}).default(`domain`),custom_properties:pu({sectionKey:`general`,label:`Custom attributes`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`categories`,optionsDef:Af({target:`objects`,identifier:`companies`}),info:'Attio attribute api_slugs to include in each match (e.g. `categories`, not "Categories"). Custom attributes work too and nest under `custom_properties`. Empty = a standard identity set.'}),input_fields:F(r.object({[Fh.name]:w({fieldName:Fh.name})})),output_fields:P(r.object({[Ih.name]:D({fieldName:Ih.name}),[Lh.name]:D({fieldName:Lh.name}),[Rh.name]:D({fieldName:Rh.name})}))}).optional()}),Vh=e=>R(G(Fh,e)),Hh={"company-match-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},Uh=class extends B{pipeId=zh;payload;payloadSchema=Bh;billableOperations=Hh;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`company-match-attio-v1-attio`)}getInputRequirement(){return Vh(this.payload.config)}getRawOutputFields(){return{[Ih.name]:this.catalogOutput(Ih),[Lh.name]:this.catalogOutput(Lh),[Rh.name]:this.catalogOutput(Rh)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_query`,allowManagedConnection:!1}]}async getAgentContext(e){return Mf(e,{objects:[`companies`]})}},Wh=Bh,Gh={pipeId:zh,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(zh),label:`Attio company match`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Check whether a company exists in your Attio workspace by domain. Exact domain values are unique (at most one match); root-domain matching also finds subdomain records. A clean miss completes with a count of 0.`,tags:[V.NEW],keywords:[`crm`,`lookup`,`exists`,`dedupe`,`record`,`account`,`domain`],docPath:W(zh),guide:`Call get_provider_context first to discover this workspace's attributes; use attribute api_slugs verbatim. domains is Attio's unique identity attribute — exact-domain matches return at most one company, root-domain matches can return several (subdomains). attio_record_id carries the first (oldest) match; gate follow-ups with run_if on attio_companies_found_count. Chain attio_record_id into record:update:attio@1 or record:lookup:attio@1.`,billableOperations:Hh,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:Vh(null),defaultPayload:{pipe_id:zh,connector:{strategy:`first`,connections:[]},run_if:null,config:{match_on:`domain`,custom_properties:[],input_fields:{company_domain:{alias:``}},output_fields:{attio_companies_found_count:{alias:``,enabled:!0},attio_record_id:{alias:``,enabled:!0},attio_company_matches:{alias:``,enabled:!0}}}}},Kh=g(`company_domain`),qh=g(`crustdata_companyenrich_match`),Jh=`company:match:crustdata@2`,Yh=r.object({pipe_id:r.literal(Jh),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[Kh.name]:w({fieldName:Kh.name})})),output_fields:P(r.object({[qh.name]:D({fieldName:qh.name})}))}).optional()}),Xh=e=>R(G(Kh,e)),Zh={"company-match-crustdata-v2-crustdata":{allowManagedConnection:!0,credits:{default:2.5,level1:{credits:1.2,weight:1}},mode:`onSuccess`,provider:`crustdata`}},Qh=class extends B{pipeId=Jh;payload;payloadSchema=Yh;billableOperations=Zh;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`company-match-crustdata-v2-crustdata`)}getInputRequirement(){return Xh(this.payload.config)}getRawOutputFields(){return{[qh.name]:this.catalogOutput(qh)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_company_enrich`,allowManagedConnection:!0}]}},$h=Yh,eg={pipeId:Jh,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Jh),label:`Company match`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`Company data like headcount distribution, LinkedIn URLs etc. via the Crustdata API.`,tags:[V.WEBSITE,V.LINKEDIN],keywords:[`enrich`,`headcount`,`employees`,`linkedin`,`firmographics`,`profile`],docPath:W(Jh),billableOperations:Zh,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:Xh(null),defaultPayload:{pipe_id:Jh,connector:null,run_if:null,config:{input_fields:{company_domain:{alias:``}},output_fields:{crustdata_companyenrich_match:{alias:``,enabled:!0}}}}},tg=g(`company_domain`),ng=g(`hubspot_companies_found_count`),rg=g(`hubspot_object_id`),ig=g(`hubspot_company_matches`),ag=`company:match:hubspot@1`,og=r.object({pipe_id:r.literal(ag),run_if:b(),connector:S(),config:r.object({check_additional_domains:E({sectionKey:`general`,defaultValue:!0,label:`Also match secondary domains`,groupPath:`config.general`,path:`config.check_additional_domains`,info:"Also match companies whose `hs_additional_domains` contains the domain (primary-domain matches still rank first)."}),custom_properties:pu({sectionKey:`general`,label:`Custom properties`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`industry`,info:"Added to the match JSON under `custom_properties` — internal names, custom properties included (standard-set names are already top-level)."}),input_fields:F(r.object({[tg.name]:w({fieldName:tg.name})})),output_fields:P(r.object({[ng.name]:D({fieldName:ng.name}),[rg.name]:D({fieldName:rg.name}),[ig.name]:D({fieldName:ig.name})}))}).optional()}),sg=e=>R(G(tg,e)),cg={"company-match-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},lg=class extends B{pipeId=ag;payload;payloadSchema=og;billableOperations=cg;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`hubspot`]}estimateBillableOperations(e){return H(e,`company-match-hubspot-v1-hubspot`)}getInputRequirement(){return sg(this.payload.config)}getRawOutputFields(){return{[ng.name]:this.catalogOutput(ng),[rg.name]:this.catalogOutput(rg),[ig.name]:this.catalogOutput(ig)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_crm_search`,allowManagedConnection:!1}]}async getAgentContext(e){return mp(e,{objectTypes:[[`companies`,`0-2`]]})}},ug=og,dg={pipeId:ag,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(ag),label:`HubSpot company match`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Check whether a company exists in your HubSpot portal by domain. Domain is HubSpot's dedupe key but not unique — 0..N matches are normal; the primary match is the oldest record.`,tags:[V.WEBSITE],keywords:[`crm`,`lookup`,`exists`,`dedupe`,`record`,`account`],docPath:W(ag),guide:`Domain matching uses the HubSpot Search API — records created in the last few moments may not be indexed yet. Multiple matches are normal (branches, franchises); the count output tells you. found_count = 0 is a successful result — gate follow-ups with run_if. Chain the id output into deal:match, object:update, or object:associations pipes.`,billableOperations:cg,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:sg(null),defaultPayload:{pipe_id:ag,connector:{strategy:`first`,connections:[]},run_if:null,config:{check_additional_domains:!0,custom_properties:[],input_fields:{company_domain:{alias:``}},output_fields:{hubspot_companies_found_count:{alias:``,enabled:!0},hubspot_object_id:{alias:``,enabled:!0},hubspot_company_matches:{alias:``,enabled:!0}}}}},fg=g(`company_domain`),pg=g(`company_name`),mg=g(`company_profile_url`),hg=g(`logodev_describe_match`),gg=g(`logo_url`),_g=`company:match:logodev@2`,vg=r.object({pipe_id:r.literal(_g),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[fg.name]:w({fieldName:fg.name})})),output_fields:P(r.object({[mg.name]:D({fieldName:mg.name}),[gg.name]:D({fieldName:gg.name}),[pg.name]:D({fieldName:pg.name}),[hg.name]:D({fieldName:hg.name})}))}).optional()}),yg=e=>R(G(fg,e)),bg={"company-match-logodev-v2-logodev":{allowManagedConnection:!0,credits:{default:.1},mode:`onSuccess`,provider:`logodev`}},xg=class extends B{pipeId=_g;payload;payloadSchema=vg;billableOperations=bg;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`logodev`]}estimateBillableOperations(e){return H(e,`company-match-logodev-v2-logodev`)}getInputRequirement(){return yg(this.payload.config)}getRawOutputFields(){return{[mg.name]:this.catalogOutput(mg),[pg.name]:this.catalogOutput(pg),[gg.name]:this.catalogOutput(gg),[hg.name]:this.catalogOutput(hg)}}getConnectionsRequirements(){return[{provider:`logodev`,rateLimitRatio:1,rateLimitOperation:`logodev_describe`,allowManagedConnection:!0}]}},Sg=vg,Cg={pipeId:_g,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(_g),label:`Company match`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`Find brand data like logos, colors, and social links via the Logo.dev API.`,tags:[V.WEBSITE,V.LINKEDIN],keywords:[`logo`,`brand`,`branding`,`colors`,`social`,`icon`],docPath:W(_g),billableOperations:bg,allowedUserConnectionProviders:[`logodev`],managedProviders:[`logodev`],deprecatedProviders:[],defaultInputRequirement:yg(null),defaultPayload:{pipe_id:_g,connector:null,run_if:null,config:{input_fields:{company_domain:{alias:``}},output_fields:{company_profile_url:{alias:``,enabled:!0},logo_url:{alias:``,enabled:!0},logodev_describe_match:{alias:``,enabled:!0},company_name:{alias:``,enabled:!1}}}}},wg=`company:newssummary:domain@1`,Tg=g(`company_news_summary`),Eg=g(`company_domain`),Dg=r.object({pipe_id:r.literal(wg),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[Eg.name]:w({fieldName:Eg.name})})),output_fields:P(r.object({[Tg.name]:D({fieldName:Tg.name})}))}).optional()}),Og=e=>R(G(Eg,e)),kg={"company-newssummary-domain-v1-pipe0":{allowManagedConnection:!0,credits:{default:2},mode:`always`,provider:`pipe0`}},Ag=class extends B{pipeId=wg;payloadSchema=Dg;billableOperations=kg;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-newssummary-domain-v1-pipe0`)}getInputRequirement(){return Og(this.payload.config)}getRawOutputFields(){return{[Tg.name]:this.catalogOutput(Tg)}}getConnectionsRequirements(){return[{provider:`parallel`,rateLimitRatio:4,rateLimitOperation:`parallel_search_base`,allowManagedConnection:!0},{provider:`gemini`,rateLimitRatio:1,rateLimitOperation:`gemini_35_flash`,allowManagedConnection:!0}]}},jg=Dg,Mg={pipeId:wg,basePipe:U(wg),inputFieldMode:`static`,outputFieldMode:`static`,label:`Company news`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`Find recent company news by performing a search and scrape.`,tags:[V.NEWS],keywords:[`press`,`articles`,`headlines`,`media`,`summary`,`updates`],docPath:W(wg),billableOperations:kg,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:Og(null),defaultPayload:{pipe_id:wg,run_if:null,connector:null,config:{input_fields:{company_domain:{alias:``}},output_fields:{company_news_summary:{alias:``,enabled:!0}}}}},Ng=g(`company_domain`),Pg=g(`company_profile_url`),Fg=g(`company_description`),Ig=g(`company_industry`),Lg=g(`company_region`),Rg=g(`headcount`),zg=g(`estimated_revenue`),Bg=g(`founded_year`),Vg=g(`company_name`),Hg=`company:overview@3`,Ug=r.object({pipe_id:r.literal(Hg),run_if:b(),connector:Jl(),config:r.object({input_fields:F(r.object({[Ng.name]:w({fieldName:Ng.name}),[Pg.name]:w({fieldName:Pg.name})})),output_fields:P(r.object({[Fg.name]:D({fieldName:Fg.name}),[Ig.name]:D({fieldName:Ig.name}),[Lg.name]:D({fieldName:Lg.name}),[Rg.name]:D({fieldName:Rg.name}),[zg.name]:D({fieldName:zg.name}),[Bg.name]:D({fieldName:Bg.name}),[Vg.name]:D({fieldName:Vg.name})}))}).optional()}),Wg=e=>_d(G(Ng,e),G(Pg,e)),Gg={"company-overview-v3-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:1,level1:{credits:.5,weight:1}},mode:`always`}},Kg=class extends B{pipeId=Hg;payloadSchema=Ug;billableOperations=Gg;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-overview-v3-pipe0`)}getInputRequirement(){return Wg(this.payload.config)}getRawOutputFields(){return{[Fg.name]:this.catalogOutput(Fg),[Ig.name]:this.catalogOutput(Ig),[Lg.name]:this.catalogOutput(Lg),[Rg.name]:this.catalogOutput(Rg),[zg.name]:this.catalogOutput(zg),[Bg.name]:this.catalogOutput(Bg),[Vg.name]:this.catalogOutput(Vg)}}getConnectionsRequirements(){return[{provider:`perplexity`,rateLimitRatio:1,rateLimitOperation:`perplexity_generic`,allowManagedConnection:!0},{provider:`leadmagic`,rateLimitRatio:.2,rateLimitOperation:`leadmagic_email_lookup`,allowManagedConnection:!0},{provider:`gemini`,rateLimitOperation:`gemini_20_flash`,rateLimitRatio:.1,allowManagedConnection:!0}]}},qg=Ug,Jg={pipeId:Hg,basePipe:U(Hg),inputFieldMode:`static`,outputFieldMode:`static`,label:`Company overview`,executionMode:`mix`,categories:[`company_data`],lifecycle:null,description:`Business description, industry, and financial information.`,docPath:W(Hg),tags:[V.WEBSITE,V.LINKEDIN,V.FINANCIAL_DATA],keywords:[`enrich`,`firmographics`,`industry`,`profile`,`about`,`financials`,`revenue`],allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],billableOperations:Gg,defaultInputRequirement:Wg(null),defaultPayload:{pipe_id:Hg,run_if:null,connector:void 0,config:{input_fields:{company_profile_url:{alias:``},company_domain:{alias:``}},output_fields:{company_description:{alias:``,enabled:!0},company_industry:{alias:``,enabled:!0},company_region:{alias:``,enabled:!0},estimated_revenue:{alias:``,enabled:!0},founded_year:{alias:``,enabled:!0},headcount:{alias:``,enabled:!0},company_name:{alias:``,enabled:!1}}}}},Yg=g(`company_domain`),Xg=g(`technology_list`),Zg=g(`spending_trend`),Qg=g(`technology_match_builtwith`),$g=`company:techstack:builtwith@2`,e_=r.object({pipe_id:r.literal($g),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[Yg.name]:w({fieldName:Yg.name})})),output_fields:P(r.object({[Xg.name]:D({fieldName:Xg.name}),[Qg.name]:D({fieldName:Qg.name}),[Zg.name]:D({fieldName:Zg.name})}))}).optional()}),t_=e=>R(G(Yg,e)),n_={"company-techstack-builtwith-v2-builtwith":{provider:`builtwith`,allowManagedConnection:!0,credits:{default:2},mode:`always`}},r_=class extends B{pipeId=$g;payload;payloadSchema=e_;billableOperations=n_;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`builtwith`]}estimateBillableOperations(e){return H(e,`company-techstack-builtwith-v2-builtwith`)}getInputRequirement(){return t_(this.payload.config)}getRawOutputFields(){return{[Xg.name]:this.catalogOutput(Xg),[Qg.name]:this.catalogOutput(Qg),[Zg.name]:this.catalogOutput(Zg)}}getConnectionsRequirements(){return[{provider:`builtwith`,rateLimitRatio:1,rateLimitOperation:`builtwith_generic`,allowManagedConnection:!0}]}},i_=e_,a_={pipeId:$g,basePipe:U($g),managedProviders:[`builtwith`],deprecatedProviders:[],allowedUserConnectionProviders:[`builtwith`],label:`Tech stack`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`All technologies and frameworks powering a given website.`,tags:[V.WEBSITE],keywords:[`technologies`,`technographics`,`software`,`frameworks`,`website`,`tools`],inputFieldMode:`static`,outputFieldMode:`static`,docPath:W($g),billableOperations:n_,defaultInputRequirement:t_(null),defaultPayload:{pipe_id:$g,connector:null,run_if:null,config:{input_fields:{company_domain:{alias:``}},output_fields:{technology_list:{alias:``,enabled:!0},technology_match_builtwith:{alias:``,enabled:!0},spending_trend:{alias:``,enabled:!0}}}}},o_=`contact:create:resend@1`,s_={"contact-create-resend-v1-resend":{allowManagedConnection:!1,provider:`resend`,credits:null,mode:null}},c_=g(`email`),l_=g(`name`),u_=g(`resend_contact_id`),d_=[{label:`Demo subscribers`,value:`sandbox-segment-1`},{label:`Demo product updates`,value:`sandbox-segment-2`}],f_=r.object({pipe_id:r.literal(o_),connector:S(),run_if:b(),config:r.object({segment_id:Au({sectionKey:`general`,required:!0,label:`Segment`,groupPath:`config.general`,path:`config.segment_id`,info:``,enabledIf:_(`resend`),optionsDef:{requires:{connection:`resend`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return d_;if(!t)throw new K.MissingSecretError({providerName:`resend`});let r=await fetch(`https://api.resend.com/segments?limit=100`,{headers:{Authorization:`Bearer ${t}`}});if(!r.ok){let e=await r.text();throw new K.HttpError({msg:e})}let i=(await r.json()).data.map(e=>({label:e.name,value:e.id}));return e?i.filter(t=>t.label.toLowerCase().includes(e.toLowerCase())):i}}}),add_as_subscribed:E({sectionKey:`general`,defaultValue:!0,label:`Add as subscribed`,groupPath:`config.general`,path:`config.add_as_subscribed`,info:``}),input_fields:F(r.object({[l_.name]:w({fieldName:l_.name}),[c_.name]:w({fieldName:c_.name})})),output_fields:P(r.object({[u_.name]:D({fieldName:u_.name})}))})}),p_=e=>z(R(G(c_,e)),R(G(l_,e))),m_=class extends B{pipeId=o_;payload;payloadSchema=f_;billableOperations=s_;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`resend`]}estimateBillableOperations(e){return H(e,`contact-create-resend-v1-resend`)}getInputRequirement(){return p_(this.payload.config)}getRawOutputFields(){return{[u_.name]:this.catalogOutput(u_)}}getConnectionsRequirements(){return[{provider:`resend`,rateLimitRatio:1,rateLimitOperation:`resend_generic`,allowManagedConnection:!1}]}},h_=f_,g_={pipeId:o_,basePipe:U(o_),label:`Create Contact`,executionMode:`single`,categories:[`actions`],lifecycle:null,description:`Create a contact inside a Resend audience.`,tags:[V.EMAIL],keywords:[`audience`,`subscriber`,`add`,`mailing list`,`newsletter`,`email list`],docPath:W(o_),billableOperations:s_,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`resend`],defaultInputRequirement:p_(null),managedProviders:[],deprecatedProviders:[],defaultPayload:{pipe_id:o_,connector:{strategy:`first`,connections:[]},run_if:null,config:{segment_id:``,add_as_subscribed:!0,input_fields:{name:{alias:``},email:{alias:``}},output_fields:{resend_contact_id:{alias:``,enabled:!0}}}}},__=g(`email`),v_=g(`hubspot_contact_found`),y_=g(`hubspot_object_id`),b_=g(`hubspot_contact_match`),x_=`contact:match:hubspot@1`,S_=r.object({pipe_id:r.literal(x_),run_if:b(),connector:S(),config:r.object({check_additional_emails:E({sectionKey:`general`,defaultValue:!0,label:`Also match secondary emails`,groupPath:`config.general`,path:`config.check_additional_emails`,info:"When the primary-email lookup misses, also search `hs_additional_emails`. Uses the portal's shared 5 req/s search budget."}),custom_properties:pu({sectionKey:`general`,label:`Custom properties`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`lifecyclestage`,info:'HubSpot internal property names to include in the match output (e.g. `lifecyclestage`, not "Lifecycle Stage"). Custom properties work too and nest under `custom_properties`. Empty = a standard identity set.'}),input_fields:F(r.object({[__.name]:w({fieldName:__.name})})),output_fields:P(r.object({[v_.name]:D({fieldName:v_.name}),[y_.name]:D({fieldName:y_.name}),[b_.name]:D({fieldName:b_.name})}))}).optional()}),C_=e=>R(G(__,e)),w_={"contact-match-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},T_=class extends B{pipeId=x_;payload;payloadSchema=S_;billableOperations=w_;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`hubspot`]}estimateBillableOperations(e){return H(e,`contact-match-hubspot-v1-hubspot`)}getInputRequirement(){return C_(this.payload.config)}getRawOutputFields(){return{[v_.name]:this.catalogOutput(v_),[y_.name]:this.catalogOutput(y_),[b_.name]:this.catalogOutput(b_)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_crm_search`,allowManagedConnection:!1}]}async getAgentContext(e){return mp(e,{objectTypes:[[`contacts`,`0-1`]]})}},E_=S_,D_={pipeId:x_,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(x_),label:`HubSpot contact match`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Check whether a contact exists in your HubSpot portal by email. Matches the primary email exactly (and optionally secondary emails); a clean miss completes with found = false.`,tags:[V.EMAIL],keywords:[`crm`,`lookup`,`exists`,`dedupe`,`record`,`person`],docPath:W(x_),guide:"Call get_provider_context first to discover this portal's properties; use internal property names verbatim (e.g. `lifecyclestage`). The match by email is exact (HubSpot's own contact dedupe key). found = false is a successful result — gate follow-up pipes with run_if on it. Chain the id output into object:update:hubspot@1 or object:associations:hubspot@1.",billableOperations:w_,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:C_(null),defaultPayload:{pipe_id:x_,connector:{strategy:`first`,connections:[]},run_if:null,config:{check_additional_emails:!0,custom_properties:[],input_fields:{email:{alias:``}},output_fields:{hubspot_contact_found:{alias:``,enabled:!0},hubspot_object_id:{alias:``,enabled:!0},hubspot_contact_match:{alias:``,enabled:!0}}}}},O_=g(`company_domain`),k_=g(`email`),A_=g(`attio_deals_found_count`),j_=g(`attio_record_id`),M_=g(`attio_deal_matches`),N_=`deal:match:attio@1`,P_=r.object({pipe_id:r.literal(N_),run_if:b(),connector:S(),config:r.object({stage:Au({sectionKey:`general`,required:!1,label:`Deal stage`,groupPath:`config.general`,path:`config.stage`,info:`Only match deals in these stages. This workspace's actual stage titles — custom stages included.`,enabledIf:_(`attio`),optionsDef:Cf,multiple:!0}),custom_properties:pu({sectionKey:`general`,label:`Custom attributes`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`close_date`,optionsDef:Af({target:`objects`,identifier:`deals`}),info:'Attio attribute api_slugs to include in each match (e.g. `value`, not "Deal value"). Custom attributes work too and nest under `custom_properties`. Empty = a standard deal set.'}),input_fields:F(r.object({[O_.name]:w({fieldName:O_.name}),[k_.name]:w({fieldName:k_.name})})),output_fields:P(r.object({[A_.name]:D({fieldName:A_.name}),[j_.name]:D({fieldName:j_.name}),[M_.name]:D({fieldName:M_.name})}))}).optional()}),F_=e=>_d(R(G(O_,e)),R(G(k_,e))),I_={"deal-match-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},L_=class extends B{pipeId=N_;payload;payloadSchema=P_;billableOperations=I_;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`deal-match-attio-v1-attio`)}getInputRequirement(){return F_(this.payload.config)}getRawOutputFields(){return{[A_.name]:this.catalogOutput(A_),[j_.name]:this.catalogOutput(j_),[M_.name]:this.catalogOutput(M_)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_query`,allowManagedConnection:!1}]}async getAgentContext(e){return Mf(e,{objects:[`deals`]})}},R_=P_,z_={pipeId:N_,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(N_),label:`Attio deal match`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Find deals in your Attio workspace linked to a company (by domain) or person (by email), optionally narrowed to specific stages. Deals have no natural key — matching traverses the relationship. A clean miss completes with a count of 0.`,tags:[V.NEW],keywords:[`crm`,`lookup`,`exists`,`opportunity`,`pipeline`,`record`],docPath:W(N_),guide:`Call get_provider_context first — deal stage titles are workspace-defined (never assume Won/Lost exist; the defaults include 'Won 🎉' with an emoji). Deals are found via their company/person relationship: prefer the domain input; email is the fallback. The Deals object is opt-in per workspace — a disabled object fails with a settings hint, while zero matches is a successful result (gate with run_if on attio_deals_found_count). Chain attio_record_id (newest matching deal) into record:update:attio@1.`,billableOperations:I_,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:F_(null),defaultPayload:{pipe_id:N_,connector:{strategy:`first`,connections:[]},run_if:null,config:{stage:[],custom_properties:[],input_fields:{company_domain:{alias:``},email:{alias:``}},output_fields:{attio_deals_found_count:{alias:``,enabled:!0},attio_record_id:{alias:``,enabled:!0},attio_deal_matches:{alias:``,enabled:!0}}}}},B_=g(`company_domain`),V_=g(`email`),H_=g(`hubspot_deals_found_count`),U_=g(`hubspot_object_id`),W_=g(`hubspot_deal_matches`),G_=`deal:match:hubspot@1`,K_=r.object({pipe_id:r.literal(G_),run_if:b(),connector:S(),config:r.object({pipeline:Au({sectionKey:`general`,required:!1,label:`Pipeline`,groupPath:`config.general`,path:`config.pipeline`,info:`Only match deals in this pipeline. Empty = all pipelines.`,enabledIf:_(`hubspot`),optionsDef:cp(`deals`)}),status:wu({sectionKey:`general`,required:!1,label:`Deal status`,groupPath:`config.general`,path:`config.status`,description:`Filters on HubSpot's computed hs_is_closed / hs_is_closed_won — portal-invariant, unlike stage names.`,options:[{label:`Any`,value:`any`},{label:`Open`,value:`open`},{label:`Won`,value:`won`},{label:`Lost`,value:`lost`}]}).default(`any`),custom_properties:pu({sectionKey:`general`,label:`Custom properties`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`amount`,info:"Added to the match JSON under `custom_properties` — internal names, custom properties included (standard-set names are already top-level)."}),input_fields:F(r.object({[B_.name]:w({fieldName:B_.name}),[V_.name]:w({fieldName:V_.name})})),output_fields:P(r.object({[H_.name]:D({fieldName:H_.name}),[U_.name]:D({fieldName:U_.name}),[W_.name]:D({fieldName:W_.name})}))}).optional()}),q_=e=>_d(R(G(B_,e)),R(G(V_,e))),J_={"deal-match-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},Y_=class extends B{pipeId=G_;payload;payloadSchema=K_;billableOperations=J_;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`hubspot`]}estimateBillableOperations(e){return H(e,`deal-match-hubspot-v1-hubspot`)}getInputRequirement(){return q_(this.payload.config)}getRawOutputFields(){return{[H_.name]:this.catalogOutput(H_),[U_.name]:this.catalogOutput(U_),[W_.name]:this.catalogOutput(W_)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_crm_search`,allowManagedConnection:!1}]}async getAgentContext(e){return mp(e,{objectTypes:[[`deals`,`0-3`]],includePipelinesFor:[`deals`]})}},X_=K_,Z_={pipeId:G_,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(G_),label:`HubSpot deal match`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Find deals in your HubSpot portal for a company (by domain) or contact (by email) via HubSpot's association graph — deals have no natural key of their own.`,tags:[V.WEBSITE,V.EMAIL],keywords:[`crm`,`opportunity`,`lookup`,`exists`,`association`,`pipeline`],docPath:W(G_),guide:`Deals are found via associations from the matched company (preferred when both inputs are present) or contact — never by dealname. Stage ids outside the default pipeline are numeric; call get_provider_context for this portal's pipelines and stage ids. found_count = 0 is a successful result.`,billableOperations:J_,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:q_(null),defaultPayload:{pipe_id:G_,connector:{strategy:`first`,connections:[]},run_if:null,config:{pipeline:``,status:`any`,custom_properties:[],input_fields:{company_domain:{alias:``},email:{alias:``}},output_fields:{hubspot_deals_found_count:{alias:``,enabled:!0},hubspot_object_id:{alias:``,enabled:!0},hubspot_deal_matches:{alias:``,enabled:!0}}}}},Q_=`company:funding:leadmagic@1`,$_=g(`company_name`),ev=g(`company_website_url`),tv=g(`funding_history`),nv=g(`funding_total_usd`),rv=g(`leadmagic_competitor_list`),iv=g(`leadmagic_acquisition_history`),av=g(`leadmagic_company_news_list`),ov=r.object({pipe_id:r.literal(Q_),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[$_.name]:w({fieldName:$_.name}),[ev.name]:w({fieldName:ev.name})})),output_fields:P(r.object({[tv.name]:D({fieldName:tv.name}),[nv.name]:D({fieldName:nv.name}),[rv.name]:D({fieldName:rv.name}),[iv.name]:D({fieldName:iv.name}),[av.name]:D({fieldName:av.name})}))}).optional()}),sv=e=>_d(G($_,e),G(ev,e)),cv={"company-funding-leadmagic-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`}},lv=class extends B{pipeId=Q_;payload;payloadSchema=ov;billableOperations=cv;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`leadmagic`]}estimateBillableOperations(e){return H(e,`company-funding-leadmagic-v1-leadmagic`)}getInputRequirement(){return sv(this.payload.config)}getRawOutputFields(){return{[tv.name]:this.catalogOutput(tv),[nv.name]:this.catalogOutput(nv)}}getConnectionsRequirements(){return[{provider:`leadmagic`,rateLimitRatio:1,rateLimitOperation:`leadmagic_company_funding`,allowManagedConnection:!0}]}},uv=ov,dv={pipeId:Q_,basePipe:U(Q_),label:`Funding history`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:funding:leadmagic@2`},description:`Information on funding rounds, acquisition, competitors, and investors.`,tags:[V.FINANCIAL_DATA],docPath:W(Q_),billableOperations:cv,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`leadmagic`],managedProviders:[`leadmagic`],deprecatedProviders:[],defaultInputRequirement:sv(null),defaultPayload:{pipe_id:Q_,connector:null,run_if:null,config:{input_fields:{company_name:{alias:``},company_website_url:{alias:``}},output_fields:{funding_history:{enabled:!0,alias:``},funding_total_usd:{enabled:!0,alias:``},leadmagic_acquisition_history:{enabled:!1,alias:``},leadmagic_company_news_list:{enabled:!1,alias:``},leadmagic_competitor_list:{enabled:!1,alias:``}}}}},fv=`company:funding:leadmagic@2`,pv=g(`company_name`),mv=g(`company_domain`),hv=g(`funding_history`),gv=g(`funding_total_usd`),_v=g(`leadmagic_competitor_list`),vv=g(`leadmagic_acquisition_history`),yv=g(`leadmagic_company_news_list`),bv=r.object({pipe_id:r.literal(fv),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[pv.name]:w({fieldName:pv.name}),[mv.name]:w({fieldName:mv.name})})),output_fields:P(r.object({[hv.name]:D({fieldName:hv.name}),[gv.name]:D({fieldName:gv.name}),[_v.name]:D({fieldName:_v.name}),[vv.name]:D({fieldName:vv.name}),[yv.name]:D({fieldName:yv.name})}))}).optional()}),xv=e=>_d(G(pv,e),G(mv,e)),Sv={"company-funding-leadmagic-v2-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`}},Cv=class extends B{pipeId=fv;payload;payloadSchema=bv;billableOperations=Sv;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`leadmagic`]}estimateBillableOperations(e){return H(e,`company-funding-leadmagic-v2-leadmagic`)}getInputRequirement(){return xv(this.payload.config)}getRawOutputFields(){return{[hv.name]:this.catalogOutput(hv),[gv.name]:this.catalogOutput(gv),[vv.name]:this.catalogOutput(vv),[yv.name]:this.catalogOutput(yv),[_v.name]:this.catalogOutput(_v)}}getConnectionsRequirements(){return[{provider:`leadmagic`,rateLimitRatio:1,rateLimitOperation:`leadmagic_company_funding`,allowManagedConnection:!0}]}},wv=bv,Tv={pipeId:fv,basePipe:U(fv),label:`Funding history`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-07-20`,replacedBy:`company:funding:waterfall@1`},description:`Information on funding rounds, acquisition, competitors, and investors.`,tags:[V.FINANCIAL_DATA],docPath:W(fv),billableOperations:Sv,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`leadmagic`],managedProviders:[`leadmagic`],deprecatedProviders:[],defaultInputRequirement:xv(null),defaultPayload:{pipe_id:fv,connector:null,run_if:null,config:{input_fields:{company_name:{alias:``},company_domain:{alias:``}},output_fields:{funding_history:{enabled:!0,alias:``},funding_total_usd:{enabled:!0,alias:``},leadmagic_acquisition_history:{enabled:!1,alias:``},leadmagic_company_news_list:{enabled:!1,alias:``},leadmagic_competitor_list:{enabled:!1,alias:``}}}}},Ev=g(`company_name`),Dv=g(`company_social_url`),Ov=g(`company_website_url`),kv=g(`cleaned_company_name`),Av=`company:identity@1`,jv=r.object({pipe_id:r.literal(Av),run_if:b(),connector:Jl(),config:r.object({input_fields:F(r.object({[Ev.name]:w({fieldName:Ev.name})})),output_fields:P(r.object({[Dv.name]:D({fieldName:Dv.name}),[kv.name]:D({fieldName:kv.name}),[Ov.name]:D({fieldName:Ov.name})}))}).optional()}),Mv=e=>R(G(Ev,e)),Nv={"company-identity-v1-pipe0":{allowManagedConnection:!0,credits:{default:.3},mode:`always`,provider:`pipe0`}},Pv=class extends B{pipeId=Av;payload;payloadSchema=jv;billableOperations=Nv;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-identity-v1-pipe0`)}getInputRequirement(){return Mv(this.payload.config)}getRawOutputFields(){return{[Dv.name]:this.catalogOutput(Dv),[Ov.name]:this.catalogOutput(Ov),[kv.name]:this.catalogOutput(kv)}}getConnectionsRequirements(){return[{provider:`gemini`,rateLimitRatio:1,rateLimitOperation:`gemini_35_flash`,allowManagedConnection:!0},{provider:`serper`,rateLimitRatio:2,rateLimitOperation:`serper_search`,allowManagedConnection:!0},{provider:`leadmagic`,rateLimitRatio:.2,rateLimitOperation:`leadmagic_company_search`,allowManagedConnection:!0},{provider:`perplexity`,rateLimitRatio:.2,rateLimitOperation:`perplexity_generic`,allowManagedConnection:!0},{provider:`pipe0`,rateLimitRatio:.02,rateLimitOperation:`pipe0_scraper`,allowManagedConnection:!0}]}},Fv=jv,Iv={pipeId:Av,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Av),label:`Company identity`,executionMode:`mix`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:identity@2`},description:`Find any company's website URL, LinkedIn profile URL, and cleaned name.`,tags:[V.WEBSITE,V.LINKEDIN],docPath:`/resources/pipe-catalog/company:identity/1`,billableOperations:Nv,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:Mv(null),defaultPayload:{pipe_id:Av,connector:null,run_if:null,config:{input_fields:{company_name:{alias:``}},output_fields:{cleaned_company_name:{alias:``,enabled:!0},company_social_url:{alias:``,enabled:!0},company_website_url:{alias:``,enabled:!0}}}}},Lv=g(`company_name`),Rv=g(`company_profile_url`),zv=g(`company_website_url`),Bv=g(`cleaned_company_name`),Vv=`company:identity@2`,Hv=r.object({pipe_id:r.literal(Vv),run_if:b(),connector:Jl(),config:r.object({input_fields:F(r.object({[Lv.name]:w({fieldName:Lv.name})})),output_fields:P(r.object({[Rv.name]:D({fieldName:Rv.name}),[Bv.name]:D({fieldName:Bv.name}),[zv.name]:D({fieldName:zv.name})}))}).optional()}),Uv=e=>R(G(Lv,e)),Wv={"company-identity-v2-pipe0":{allowManagedConnection:!0,credits:{default:.3},mode:`always`,provider:`pipe0`}},Gv=class extends B{pipeId=Vv;payload;payloadSchema=Hv;billableOperations=Wv;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-identity-v2-pipe0`)}getInputRequirement(){return Uv(this.payload.config)}getRawOutputFields(){return{[Rv.name]:this.catalogOutput(Rv),[zv.name]:this.catalogOutput(zv),[Bv.name]:this.catalogOutput(Bv)}}getConnectionsRequirements(){return[{provider:`gemini`,rateLimitRatio:1,rateLimitOperation:`gemini_35_flash`,allowManagedConnection:!0},{provider:`serper`,rateLimitRatio:2,rateLimitOperation:`serper_search`,allowManagedConnection:!0},{provider:`leadmagic`,rateLimitRatio:.2,rateLimitOperation:`leadmagic_company_search`,allowManagedConnection:!0},{provider:`perplexity`,rateLimitRatio:.2,rateLimitOperation:`perplexity_generic`,allowManagedConnection:!0},{provider:`pipe0`,rateLimitRatio:.02,rateLimitOperation:`pipe0_scraper`,allowManagedConnection:!0}]}},Kv=Hv,qv={pipeId:Vv,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Vv),label:`Company identity`,executionMode:`mix`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:identity@3`},description:`Find any company's website URL, LinkedIn profile URL, and cleaned name.`,tags:[V.WEBSITE,V.LINKEDIN],docPath:W(Vv),billableOperations:Wv,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:Uv(null),defaultPayload:{pipe_id:Vv,connector:null,run_if:null,config:{input_fields:{company_name:{alias:``}},output_fields:{cleaned_company_name:{alias:``,enabled:!0},company_profile_url:{alias:``,enabled:!0},company_website_url:{alias:``,enabled:!0}}}}},Jv=g(`company_website_url`),Yv=g(`companyenrich_matches`),Xv=`company:lookalikes:companyenrich@1`,Zv=r.object({pipe_id:r.literal(Xv),run_if:b(),connector:C(),config:r.object({limit:Du({groupPath:`config.general`,max:50,min:1,path:`config.limit`,sectionKey:`general`,info:`Define how many lookalikes you want to find.`,label:`Limit`}),input_fields:F(r.object({[Jv.name]:w({fieldName:Jv.name})})),output_fields:P(r.object({[Yv.name]:D({fieldName:Yv.name})}))}).optional()}),Qv=e=>R(G(Jv,e)),$v={"company-lookalikes-companyenrich-v1-companyenrich":{allowManagedConnection:!0,credits:{default:.2},mode:`onSuccess`,note:`One billing event per result.`,provider:`companyenrich`}},ey=class extends B{pipeId=Xv;payload;payloadSchema=Zv;billableOperations=$v;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`companyenrich`]}estimateBillableOperations(e){return[{billableOperation:`company-lookalikes-companyenrich-v1-companyenrich`,quantity:e.count*5}]}getInputRequirement(){return Qv(this.payload.config)}getRawOutputFields(){return{[Yv.name]:this.catalogOutput(Yv)}}getConnectionsRequirements(){return[{provider:`companyenrich`,rateLimitRatio:1,rateLimitOperation:`company_enrich_generic`,allowManagedConnection:!0}]}},ty=Zv,ny={pipeId:Xv,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Xv),label:`Find company lookalikes`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:lookalikes:companyenrich@2`},description:`Find companies similar to the company you provide as input.`,tags:[V.COMPANY_PROFILES],docPath:W(Xv),billableOperations:$v,allowedUserConnectionProviders:[`companyenrich`],managedProviders:[`companyenrich`],deprecatedProviders:[],defaultInputRequirement:Qv(null),defaultPayload:{pipe_id:Xv,connector:null,run_if:null,config:{limit:20,input_fields:{company_website_url:{alias:``}},output_fields:{companyenrich_matches:{alias:``,enabled:!0}}}}},ry=g(`company_website_url`),iy=g(`crustdata_companyenrich_match`),ay=`company:match:crustdata@1`,oy=r.object({pipe_id:r.literal(ay),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[ry.name]:w({fieldName:ry.name})})),output_fields:P(r.object({[iy.name]:D({fieldName:iy.name})}))}).optional()}),sy=e=>R(G(ry,e)),cy={"company-match-crustdata-v1-crustdata":{allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`,provider:`crustdata`}},ly=class extends B{pipeId=ay;payload;payloadSchema=oy;billableOperations=cy;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`company-match-crustdata-v1-crustdata`)}getInputRequirement(){return sy(this.payload.config)}getRawOutputFields(){return{[iy.name]:this.catalogOutput(iy)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_company_enrich`,allowManagedConnection:!0}]}},uy=oy,dy={pipeId:ay,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(ay),label:`Company match`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:match:crustdata@2`},description:`Company data like headcount distribution, LinkedIn URLs etc. via the Crustdata API.`,tags:[V.WEBSITE,V.LINKEDIN],docPath:W(ay),billableOperations:cy,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:sy(null),defaultPayload:{pipe_id:ay,connector:null,run_if:null,config:{input_fields:{company_website_url:{alias:``}},output_fields:{crustdata_companyenrich_match:{alias:``,enabled:!0}}}}},fy=g(`company_website_url`),py=g(`company_name`),my=g(`company_profile_url`),hy=g(`logodev_describe_match`),gy=g(`logo_url`),_y=`company:match:logodev@1`,vy=r.object({pipe_id:r.literal(_y),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[fy.name]:w({fieldName:fy.name})})),output_fields:P(r.object({[my.name]:D({fieldName:my.name}),[gy.name]:D({fieldName:gy.name}),[py.name]:D({fieldName:py.name}),[hy.name]:D({fieldName:hy.name})}))}).optional()}),yy=e=>R(G(fy,e)),by={"company-match-logodev-v1-logodev":{allowManagedConnection:!0,credits:{default:.1},mode:`onSuccess`,provider:`logodev`}},xy=class extends B{pipeId=_y;payload;payloadSchema=vy;billableOperations=by;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`logodev`]}estimateBillableOperations(e){return H(e,`company-match-logodev-v1-logodev`)}getInputRequirement(){return yy(this.payload.config)}getRawOutputFields(){return{[my.name]:this.catalogOutput(my),[py.name]:this.catalogOutput(py),[gy.name]:this.catalogOutput(gy),[hy.name]:this.catalogOutput(hy)}}getConnectionsRequirements(){return[{provider:`logodev`,rateLimitRatio:1,rateLimitOperation:`logodev_describe`,allowManagedConnection:!0}]}},Sy=vy,Cy={pipeId:_y,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(_y),label:`Company match`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:match:logodev@2`},description:`Find brand data like logos, colors, and social links via the Logo.dev API.`,tags:[V.WEBSITE,V.LINKEDIN],docPath:W(_y),billableOperations:by,allowedUserConnectionProviders:[`logodev`],managedProviders:[`logodev`],deprecatedProviders:[],defaultInputRequirement:yy(null),defaultPayload:{pipe_id:_y,connector:null,run_if:null,config:{input_fields:{company_website_url:{alias:``}},output_fields:{company_profile_url:{alias:``,enabled:!0},logo_url:{alias:``,enabled:!0},logodev_describe_match:{alias:``,enabled:!0},company_name:{alias:``,enabled:!1}}}}},wy=`company:newssummary:website@1`,Ty=g(`company_news_summary`),Ey=g(`company_website_url`),Dy=r.object({pipe_id:r.literal(wy),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[Ey.name]:w({fieldName:Ey.name})})),output_fields:P(r.object({[Ty.name]:D({fieldName:Ty.name})}))}).optional()}),Oy=e=>R(G(Ey,e)),ky={"company-newssummary-website-v1-pipe0":{allowManagedConnection:!0,credits:{default:1},mode:`always`,provider:`pipe0`}},Ay=class extends B{pipeId=wy;payloadSchema=Dy;billableOperations=ky;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-newssummary-website-v1-pipe0`)}getInputRequirement(){return Oy(this.payload.config)}getRawOutputFields(){return{[Ty.name]:this.catalogOutput(Ty)}}getConnectionsRequirements(){return[{provider:`perplexity`,rateLimitRatio:1,rateLimitOperation:`perplexity_generic`,allowManagedConnection:!0}]}},jy=Dy,My={pipeId:wy,basePipe:U(wy),inputFieldMode:`static`,outputFieldMode:`static`,label:`Company news`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:newssummary:domain@1`},description:`Find recent company news by performing a search and scrape.`,tags:[V.NEWS],docPath:W(wy),billableOperations:ky,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:Oy(null),defaultPayload:{pipe_id:wy,run_if:null,connector:null,config:{input_fields:{company_website_url:{alias:``}},output_fields:{company_news_summary:{alias:``,enabled:!0}}}}},Ny=g(`company_website_url`),Py=g(`company_social_url`),Fy=g(`company_description`),Iy=g(`company_industry`),Ly=g(`company_region`),Ry=g(`headcount`),zy=g(`estimated_revenue`),By=g(`founded_year`),Vy=`company:overview@1`,Hy=r.object({pipe_id:r.literal(Vy),run_if:b(),connector:Jl(),config:r.object({input_fields:F(r.object({[Ny.name]:w({fieldName:Ny.name}),[Py.name]:w({fieldName:Py.name})})),output_fields:P(r.object({[Fy.name]:D({fieldName:Fy.name}),[Iy.name]:D({fieldName:Iy.name}),[Ly.name]:D({fieldName:Ly.name}),[Ry.name]:D({fieldName:Ry.name}),[zy.name]:D({fieldName:zy.name}),[By.name]:D({fieldName:By.name})}))}).optional()}),Uy=e=>_d(G(Ny,e),G(Py,e)),Wy={"company-overview-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:1},mode:`always`}},Gy=class extends B{pipeId=Vy;payloadSchema=Hy;billableOperations=Wy;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-overview-v1-pipe0`)}getInputRequirement(){return Uy(this.payload.config)}getRawOutputFields(){return{[Fy.name]:this.catalogOutput(Fy),[Iy.name]:this.catalogOutput(Iy),[Ly.name]:this.catalogOutput(Ly),[Ry.name]:this.catalogOutput(Ry),[zy.name]:this.catalogOutput(zy),[By.name]:this.catalogOutput(By)}}getConnectionsRequirements(){return[{provider:`perplexity`,rateLimitRatio:1,rateLimitOperation:`perplexity_generic`,allowManagedConnection:!0},{provider:`leadmagic`,rateLimitRatio:.2,rateLimitOperation:`leadmagic_email_lookup`,allowManagedConnection:!0},{provider:`gemini`,rateLimitOperation:`gemini_20_flash`,rateLimitRatio:.1,allowManagedConnection:!0}]}},Ky=Hy,qy={pipeId:Vy,basePipe:U(Vy),inputFieldMode:`static`,outputFieldMode:`static`,label:`Company overview`,executionMode:`mix`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:identity@2`},description:`Find high-level business and financial information like company description, estimated revenue, and headcount.`,docPath:`/resources/pipe-catalog/company:overview/1`,tags:[V.WEBSITE,V.LINKEDIN,V.FINANCIAL_DATA,V.DEPRECATED],allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],billableOperations:Wy,defaultInputRequirement:Uy(null),defaultPayload:{pipe_id:Vy,run_if:null,connector:void 0,config:{input_fields:{company_social_url:{alias:``},company_website_url:{alias:``}},output_fields:{company_description:{alias:``,enabled:!0},company_industry:{alias:``,enabled:!0},company_region:{alias:``,enabled:!0},estimated_revenue:{alias:``,enabled:!0},founded_year:{alias:``,enabled:!0},headcount:{alias:``,enabled:!0}}}}},Jy=g(`company_website_url`),Yy=g(`company_profile_url`),Xy=g(`company_description`),Zy=g(`company_industry`),Qy=g(`company_region`),$y=g(`headcount`),eb=g(`estimated_revenue`),tb=g(`founded_year`),nb=g(`company_name`),rb=`company:overview@2`,ib=r.object({pipe_id:r.literal(rb),run_if:b(),connector:Jl(),config:r.object({input_fields:F(r.object({[Jy.name]:w({fieldName:Jy.name}),[Yy.name]:w({fieldName:Yy.name})})),output_fields:P(r.object({[Xy.name]:D({fieldName:Xy.name}),[Zy.name]:D({fieldName:Zy.name}),[Qy.name]:D({fieldName:Qy.name}),[$y.name]:D({fieldName:$y.name}),[eb.name]:D({fieldName:eb.name}),[tb.name]:D({fieldName:tb.name}),[nb.name]:D({fieldName:nb.name})}))}).optional()}),ab=e=>_d(G(Jy,e),G(Yy,e)),ob={"company-overview-v2-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:1},mode:`always`}},sb=class extends B{pipeId=rb;payloadSchema=ib;billableOperations=ob;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-overview-v2-pipe0`)}getInputRequirement(){return ab(this.payload.config)}getRawOutputFields(){return{[Xy.name]:this.catalogOutput(Xy),[Zy.name]:this.catalogOutput(Zy),[Qy.name]:this.catalogOutput(Qy),[$y.name]:this.catalogOutput($y),[eb.name]:this.catalogOutput(eb),[tb.name]:this.catalogOutput(tb),[nb.name]:this.catalogOutput(nb)}}getConnectionsRequirements(){return[{provider:`perplexity`,rateLimitRatio:1,rateLimitOperation:`perplexity_generic`,allowManagedConnection:!0},{provider:`leadmagic`,rateLimitRatio:.2,rateLimitOperation:`leadmagic_email_lookup`,allowManagedConnection:!0},{provider:`gemini`,rateLimitOperation:`gemini_20_flash`,rateLimitRatio:.1,allowManagedConnection:!0}]}},cb=ib,lb={pipeId:rb,basePipe:U(rb),inputFieldMode:`static`,outputFieldMode:`static`,label:`Company overview`,executionMode:`mix`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:overview@3`},description:`Business description, industry, and financial information.`,docPath:W(rb),tags:[V.WEBSITE,V.LINKEDIN,V.FINANCIAL_DATA],allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],billableOperations:ob,defaultInputRequirement:ab(null),defaultPayload:{pipe_id:rb,run_if:null,connector:void 0,config:{input_fields:{company_profile_url:{alias:``},company_website_url:{alias:``}},output_fields:{company_description:{alias:``,enabled:!0},company_industry:{alias:``,enabled:!0},company_region:{alias:``,enabled:!0},estimated_revenue:{alias:``,enabled:!0},founded_year:{alias:``,enabled:!0},headcount:{alias:``,enabled:!0},company_name:{alias:``,enabled:!1}}}}},ub=g(`company_website_url`),db=g(`technology_list`),fb=g(`spending_trend`),pb=g(`technology_match_builtwith`),mb=`company:techstack:builtwith@1`,hb=r.object({pipe_id:r.literal(mb),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[ub.name]:w({fieldName:ub.name})})),output_fields:P(r.object({[db.name]:D({fieldName:db.name}),[pb.name]:D({fieldName:pb.name}),[fb.name]:D({fieldName:fb.name})}))}).optional()}),gb=e=>R(G(ub,e)),_b={"company-techstack-builtwith-v1-builtwith":{provider:`builtwith`,allowManagedConnection:!0,credits:{default:2},mode:`always`}},vb=class extends B{pipeId=mb;payload;payloadSchema=hb;billableOperations=_b;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`builtwith`]}estimateBillableOperations(e){return H(e,`company-techstack-builtwith-v1-builtwith`)}getInputRequirement(){return gb(this.payload.config)}getRawOutputFields(){return{[db.name]:this.catalogOutput(db),[pb.name]:this.catalogOutput(pb),[fb.name]:this.catalogOutput(fb)}}getConnectionsRequirements(){return[{provider:`builtwith`,rateLimitRatio:1,rateLimitOperation:`builtwith_generic`,allowManagedConnection:!0}]}},yb=hb,bb={pipeId:mb,basePipe:U(mb),managedProviders:[`builtwith`],deprecatedProviders:[],allowedUserConnectionProviders:[`builtwith`],label:`Tech stack`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:techstack:builtwith@2`},description:`All technologies and frameworks powering a given website.`,tags:[V.WEBSITE],inputFieldMode:`static`,outputFieldMode:`static`,docPath:W(mb),billableOperations:_b,defaultInputRequirement:gb(null),defaultPayload:{pipe_id:mb,connector:null,run_if:null,config:{input_fields:{company_website_url:{alias:``}},output_fields:{technology_list:{alias:``,enabled:!0},technology_match_builtwith:{alias:``,enabled:!0},spending_trend:{alias:``,enabled:!0}}}}},xb=`company:websiteurl:email@1`,Sb=g(`company_website_url`),Cb=g(`email`),wb=r.object({pipe_id:r.literal(xb),run_if:b(),connector:Jl(),config:r.object({input_fields:F(r.object({[Cb.name]:w({fieldName:Cb.name})})),output_fields:P(r.object({[Sb.name]:D({fieldName:Sb.name})}))}).optional()}),Tb=e=>R(G(Cb,e)),Eb={"company-websiteurl-email-v1-pipe0":{credits:{default:0},allowManagedConnection:!0,mode:`always`,provider:`pipe0`}},Db=class extends B{pipeId=xb;payload;payloadSchema=wb;billableOperations=Eb;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-websiteurl-email-v1-pipe0`)}getInputRequirement(){return Tb(this.payload.config)}getRawOutputFields(){return{[Sb.name]:this.catalogOutput(Sb)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},Ob=wb,kb={pipeId:xb,basePipe:U(xb),inputFieldMode:`static`,outputFieldMode:`static`,label:`Website from email`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:domain:workemail@1`},description:`Extract the company website URL from a work email address.`,tags:[V.EMAIL,V.WORK_EMAIL,V.WEBSITE],docPath:W(xb),allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],billableOperations:Eb,defaultInputRequirement:Tb(null),defaultPayload:{pipe_id:xb,connector:null,run_if:null,config:{input_fields:{email:{alias:``}},output_fields:{company_website_url:{alias:``,enabled:!0}}}}},Ab=`people:email:iswork@1`,jb=g(`is_work_email`),Mb=g(`email`),Nb=r.object({pipe_id:r.literal(Ab),run_if:b(),connector:Jl(),config:r.object({input_fields:F(r.object({[Mb.name]:w({fieldName:Mb.name})})),output_fields:P(r.object({[jb.name]:D({fieldName:jb.name})}))}).optional()}),Pb=e=>R(G(Mb,e)),Fb={"people-email-iswork-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},Ib=class extends B{pipeId=Ab;payload;payloadSchema=Nb;billableOperations=Fb;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`people-email-iswork-v1-pipe0`)}getInputRequirement(){return Pb(this.payload.config)}getRawOutputFields(){return{[jb.name]:this.catalogOutput(jb)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},Lb=Nb,Rb={pipeId:Ab,label:`Work email checker`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`email:iswork@1`},description:`Check if a given email address is personal or professional.`,tags:[V.EMAIL,V.WORK_EMAIL],docPath:W(Ab),billableOperations:Fb,basePipe:U(Ab),allowedUserConnectionProviders:[],inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:Pb(null),defaultPayload:{pipe_id:Ab,run_if:null,connector:null,config:{input_fields:{email:{alias:``}},output_fields:{is_work_email:{alias:``,enabled:!0}}}}},zb=`people:email:validate:zerobounce@1`,Bb=g(`work_email`),Vb=g(`is_email_valid`),Hb=r.object({pipe_id:r.literal(zb),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[Bb.name]:w({fieldName:Bb.name})})),output_fields:P(r.object({[Vb.name]:D({fieldName:Vb.name})}))}).optional()}),Ub=e=>R(G(Bb,e)),Wb={"people-email-validate-zerobounce-v1-zerobounce":{provider:`zerobounce`,allowManagedConnection:!0,credits:{default:.3},mode:`always`}},Gb=class extends B{pipeId=zb;payload;payloadSchema=Hb;billableOperations=Wb;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`zerobounce`]}estimateBillableOperations(e){return H(e,`people-email-validate-zerobounce-v1-zerobounce`)}getInputRequirement(){return Ub(this.payload.config)}getRawOutputFields(){return{[Vb.name]:this.catalogOutput(Vb)}}getConnectionsRequirements(){return[{provider:`zerobounce`,rateLimitRatio:1,rateLimitOperation:`zerobounce_generic`,allowManagedConnection:!0}]}},Kb=Hb,qb={pipeId:zb,basePipe:U(zb),label:`Validate email`,executionMode:`single`,categories:[`people_data`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:email:validate:zerobounce@2`},description:`Verify email address against various factors, including syntax, domain, and server existence, to ensure it is deliverable and active.`,tags:[V.EMAIL],docPath:`/resources/pipe-catalog/people:email:validate:zerobounce/1`,billableOperations:Wb,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`zerobounce`],managedProviders:[`zerobounce`],deprecatedProviders:[],defaultInputRequirement:Ub(null),defaultPayload:{pipe_id:zb,connector:null,run_if:null,config:{input_fields:{work_email:{alias:``}},output_fields:{is_email_valid:{alias:``,enabled:!0}}}}},Jb=`people:email:validate:zerobounce@2`,Yb=g(`email`),Xb=g(`zerobounce_validation_status`),Zb=g(`zerobounce_validation_match`),Qb=r.object({pipe_id:r.literal(Jb),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[Yb.name]:w({fieldName:Yb.name})})),output_fields:P(r.object({[Zb.name]:D({fieldName:Zb.name}),[Xb.name]:D({fieldName:Xb.name})}))}).optional()}),$b=e=>R(G(Yb,e)),ex={"people-email-validate-zerobounce-v2-zerobounce":{provider:`zerobounce`,allowManagedConnection:!0,credits:{default:.3},mode:`always`}},tx=class extends B{pipeId=Jb;payload;payloadSchema=Qb;billableOperations=ex;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`zerobounce`]}estimateBillableOperations(e){return H(e,`people-email-validate-zerobounce-v2-zerobounce`)}getInputRequirement(){return $b(this.payload.config)}getRawOutputFields(){return{[Xb.name]:this.catalogOutput(Xb),[Zb.name]:this.catalogOutput(Zb)}}getConnectionsRequirements(){return[{provider:`zerobounce`,rateLimitRatio:1,rateLimitOperation:`zerobounce_generic`,allowManagedConnection:!0}]}},nx=Qb,rx={pipeId:Jb,basePipe:U(Jb),label:`Validate email`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`email:validate:zerobounce@1`},description:`Verify email address against various factors, including syntax, domain, and server existence, to ensure it is deliverable and active.`,tags:[V.EMAIL],docPath:W(Jb),billableOperations:ex,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`zerobounce`],managedProviders:[`zerobounce`],deprecatedProviders:[],defaultInputRequirement:$b(null),defaultPayload:{pipe_id:Jb,connector:null,run_if:null,config:{input_fields:{email:{alias:``}},output_fields:{zerobounce_validation_status:{alias:``,enabled:!0},zerobounce_validation_match:{alias:``,enabled:!0}}}}},ix=`people:identity:email:waterfall@1`,ax=g(`email`),ox=g(`company_website_url`),sx=g(`name`),cx=g(`job_title`),lx=g(`profile_url`),ux=g(`company_profile_url`),dx=g(`company_name`),fx=[`findymail`,`hunter`,`crustdata`],px=[{provider:`findymail`},{provider:`hunter`},{provider:`crustdata`}],mx=r.object({pipe_id:r.literal(ix),connector:C(),run_if:b(),config:r.object({providers:T({availableProviders:fx,defaultProviders:px,sectionKey:`general`}),input_fields:F(r.object({[ax.name]:w({fieldName:ax.name})})),output_fields:P(r.object({[sx.name]:D({fieldName:sx.name}),[lx.name]:D({fieldName:lx.name}),[cx.name]:D({fieldName:cx.name}),[ox.name]:D({fieldName:ox.name}),[dx.name]:D({fieldName:dx.name}),[ux.name]:D({fieldName:ux.name})}))}).optional()}),hx=e=>R(G(ax,e)),gx={"people-identity-email-waterfall-v1-hunter":{provider:`hunter`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"people-identity-email-waterfall-v1-findymail":{provider:`findymail`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"people-identity-email-waterfall-v1-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`}},_x=class extends B{pipeId=ix;payload;payloadSchema=mx;billableOperations=gx;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return hx(this.payload.config)}getRawOutputFields(){return{[sx.name]:this.catalogOutput(sx,{isPrimaryOutput:!0}),[lx.name]:this.catalogOutput(lx,{isPrimaryOutput:!0}),[cx.name]:this.catalogOutput(cx,{isPrimaryOutput:!0}),[dx.name]:this.catalogOutput(dx,{isPrimaryOutput:!0}),[ux.name]:this.catalogOutput(ux,{isPrimaryOutput:!0}),[ox.name]:this.catalogOutput(ox,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={hunter:`prospeo_email_lookup`,findymail:`findymail_email_b2b_lookup`,crustdata:`crustdata_realtime_person_enrich`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},vx=mx,yx={pipeId:ix,basePipe:U(ix),label:`Person identity from email`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:identity:email:waterfall@1`},description:`Find identity of a person from their email address.`,tags:[V.EMAIL,V.PEOPLE_PROFILES],docPath:W(ix),managedProviders:fx,deprecatedProviders:[],allowedUserConnectionProviders:fx,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:gx,defaultInputRequirement:hx(null),defaultPayload:{pipe_id:ix,connector:null,run_if:null,config:{providers:px,input_fields:{email:{alias:``}},output_fields:{name:{alias:``,enabled:!0},profile_url:{alias:``,enabled:!0},job_title:{alias:``,enabled:!0},company_name:{alias:``,enabled:!0},company_profile_url:{alias:``,enabled:!0},company_website_url:{alias:``,enabled:!0}}}}},bx=`people:match:role:waterfall@1`,xx=g(`company_website_url`),Sx=g(`role_finder_match`),Cx=[`leadmagic`],wx=[{provider:`leadmagic`}],Tx=r.object({pipe_id:r.literal(bx),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:wx,availableProviders:Cx}),roles:mu({sectionKey:`general`,groupPath:`config.general`,label:`Roles`,path:`config.roles`,info:`Company roles to include`,maxItems:3,minItems:1}),input_fields:F(r.object({[xx.name]:w({fieldName:xx.name})})),output_fields:P(r.object({[Sx.name]:D({fieldName:Sx.name})}))})}),Ex=e=>_d(G(xx,e)),Dx={"people-match-role-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`}},Ox=class extends B{pipeId=bx;payload;payloadSchema=Tx;billableOperations=Dx;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return Ex(this.payload.config)}getRawOutputFields(){return{[Sx.name]:this.catalogOutput(Sx,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_role_finder`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},kx=Tx,Ax={pipeId:bx,basePipe:U(bx),managedProviders:Cx,deprecatedProviders:[],allowedUserConnectionProviders:Cx,label:`Role finder`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:match:role:waterfall@1`},description:`Find role matches for a given companies like "CEO" or "CFO".`,tags:[V.PEOPLE_PROFILES],docPath:W(bx),billableOperations:Dx,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:Ex(null),defaultPayload:{pipe_id:bx,run_if:null,connector:null,config:{roles:[],providers:wx,input_fields:{company_website_url:{alias:``}},output_fields:{role_finder_match:{alias:``,enabled:!0}}}}},jx=`people:mobilenumber:professionalprofile:waterfall@1`,Mx=g(`professional_profile_url`),Nx=g(`mobile_number`),Px=[`leadmagic`,`prospeo`],Fx=[{provider:`leadmagic`},{provider:`prospeo`}],Ix=r.object({pipe_id:r.literal(jx),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:Fx,availableProviders:Px}),input_fields:F(r.object({[Mx.name]:w({fieldName:Mx.name})})),output_fields:P(r.object({[Nx.name]:D({fieldName:Nx.name})}))}).optional()}),Lx=e=>R(G(Mx,e)),Rx={"people-mobilenumber-professionalprofile-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"people-mobilenumber-professionalprofile-waterfall-v1-prospeo":{provider:`prospeo`,allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`}},zx=class extends B{pipeId=jx;payload;payloadSchema=Ix;billableOperations=Rx;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return Lx(this.payload.config)}getRawOutputFields(){return{[Nx.name]:this.catalogOutput(Nx)}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,prospeo:`prospeo_phone_number_lookup`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},Bx=Ix,Vx={pipeId:jx,basePipe:U(jx),label:`Mobile number from LinkedIn profile`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:phone:profile:waterfall@1`},description:`Find a mobile phone number for any prospect using multiple data providers in a waterfall motion.`,docPath:`/resources/pipe-catalog/people:mobilenumber:professionalprofile:waterfall/1`,tags:[V.PHONE,V.WATERFALL],billableOperations:Rx,defaultInputRequirement:Lx(null),inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:Px,deprecatedProviders:[],allowedUserConnectionProviders:Px,defaultPayload:{pipe_id:jx,connector:null,run_if:null,config:{providers:Fx,input_fields:{professional_profile_url:{alias:``}},output_fields:{mobile_number:{alias:``,enabled:!0}}}}},Hx=`people:mobilenumber:workemail:waterfall@1`,Ux=g(`work_email`),Wx=g(`mobile_number`),Gx=[`leadmagic`],Kx=[{provider:`leadmagic`}],qx=r.object({pipe_id:r.literal(Hx),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:Gx,defaultProviders:Kx}),input_fields:F(r.object({[Ux.name]:w({fieldName:Ux.name})})),output_fields:P(r.object({[Wx.name]:D({fieldName:Wx.name})}))}).optional()}),Jx=e=>R(G(Ux,e)),Yx={"people-mobilenumber-workemail-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`}},Xx=class extends B{pipeId=Hx;payload;payloadSchema=qx;billableOperations=Yx;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers?.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return Jx(this.payload.config)}getRawOutputFields(){return{[Wx.name]:this.catalogOutput(Wx)}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},Zx=qx,Qx={pipeId:Hx,basePipe:U(Hx),label:`Mobile number from email`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:phone:workemail:waterfall@1`},description:`Find a mobile phone number for a prospect.`,tags:[V.PHONE,V.WATERFALL],docPath:`/resources/pipe-catalog/people:mobilenumber:workemail:waterfall/1`,billableOperations:Yx,defaultInputRequirement:Jx(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:Gx,managedProviders:Gx,deprecatedProviders:[],defaultPayload:{pipe_id:Hx,connector:null,run_if:null,config:{providers:Kx,input_fields:{work_email:{alias:``}},output_fields:{mobile_number:{alias:``,enabled:!0}}}}},$x=`people:name:split@1`,eS=g(`name`),tS=g(`first_name`),nS=g(`last_name`),rS=r.object({pipe_id:r.literal($x),connector:Jl(),run_if:b(),config:r.object({input_fields:F(r.object({[eS.name]:w({fieldName:eS.name})})),output_fields:P(r.object({[tS.name]:D({fieldName:tS.name}),[nS.name]:D({fieldName:nS.name})}))}).optional()}),iS=e=>R(G(eS,e)),aS={"people-name-split-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},oS=class extends B{pipeId=$x;payload;payloadSchema=rS;billableOperations=aS;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`people-name-split-v1-pipe0`)}getInputRequirement(){return iS(this.payload.config)}getRawOutputFields(){return{[tS.name]:this.catalogOutput(tS),[nS.name]:this.catalogOutput(nS)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},sS=rS,cS={pipeId:$x,basePipe:U($x),label:`Split name`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:name:split@1`},description:`Split a full name into first and last name.`,tags:[V.NAMES],docPath:W($x),billableOperations:aS,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:iS(null),allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:$x,run_if:null,connector:void 0,config:{input_fields:{name:{alias:``}},output_fields:{first_name:{alias:``,enabled:!0},last_name:{alias:``,enabled:!0}}}}},lS=`people:personalemail:profile:waterfall@1`,uS=g(`profile_url`),dS=g(`personal_email`),fS=g(`alternate_personal_emails`),pS=[`clado`,`leadmagic`,`mixrank`],mS=[{provider:`leadmagic`},{provider:`mixrank`}],hS=r.object({pipe_id:r.literal(lS),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:pS,defaultProviders:mS}),input_fields:F(r.object({[uS.name]:w({fieldName:uS.name})})),output_fields:P(r.object({[dS.name]:D({fieldName:dS.name}),[fS.name]:D({fieldName:fS.name})}))}).optional()}),gS=e=>R(G(uS,e)),_S={"people-personalemail-profile-waterfall-v1-clado":{provider:`clado`,allowManagedConnection:!0,credits:{default:2},mode:`always`},"people-personalemail-profile-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`},"people-personalemail-profile-waterfall-v1-mixrank":{provider:`mixrank`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`}},vS=class extends B{pipeId=lS;payload;payloadSchema=hS;billableOperations=_S;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return gS(this.payload.config)}getRawOutputFields(){return{[dS.name]:this.catalogOutput(dS,{isPrimaryOutput:!0}),[fS.name]:this.catalogOutput(fS)}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_personal_email_finder`,clado:`clado_contact_information`,mixrank:`mixrank-person-match`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},yS=hS,bS={pipeId:lS,basePipe:U(lS),allowedUserConnectionProviders:pS,managedProviders:pS,deprecatedProviders:[`clado`],label:`Personal email from LinkedIn`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:personalemail:profileurl:waterfall@1`},description:`Find the personal email address of a prospect by using a professional profile URL as input.`,tags:[V.EMAIL,V.PERSONAL_EMAIL],docPath:W(lS),billableOperations:_S,defaultInputRequirement:gS(null),inputFieldMode:`static`,outputFieldMode:`static`,defaultPayload:{pipe_id:lS,connector:null,run_if:null,config:{providers:mS,input_fields:{profile_url:{alias:``}},output_fields:{personal_email:{alias:``,enabled:!0},alternate_personal_emails:{alias:``,enabled:!0}}}}},xS=`people:phone:profile:waterfall@1`,SS=g(`profile_url`),CS=g(`mobile`),wS=[`leadmagic`,`prospeo`,`amplemarket`,`findymail`,`clado`],TS=[{provider:`leadmagic`},{provider:`prospeo`},{provider:`amplemarket`},{provider:`findymail`}],ES=r.object({pipe_id:r.literal(xS),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:TS,availableProviders:wS}),input_fields:F(r.object({[SS.name]:w({fieldName:SS.name})})),output_fields:P(r.object({[CS.name]:D({fieldName:CS.name})}))}).optional()}),DS=e=>R(G(SS,e)),OS={"people-phone-profile-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"people-phone-profile-waterfall-v1-clado":{provider:`clado`,allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`},"people-phone-profile-waterfall-v1-prospeo":{provider:`prospeo`,allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`},"people-phone-profile-waterfall-v1-findymail":{provider:`findymail`,allowManagedConnection:!0,credits:{default:6},mode:`onSuccess`},"people-phone-profile-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:4},mode:`onSuccess`}},kS=class extends B{pipeId=xS;payload;payloadSchema=ES;billableOperations=OS;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return DS(this.payload.config)}getRawOutputFields(){return{[CS.name]:this.catalogOutput(CS,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,prospeo:`prospeo_phone_number_lookup`,findymail:`findymail_phone_lookup`,clado:`clado_contact_information`,amplemarket:`amplemarket-person-reveal`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},AS=ES,jS={pipeId:xS,basePipe:U(xS),label:`Mobile number from LinkedIn profile`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:mobile:profileurl:waterfall@1`},description:`Find a mobile phone number for any prospect using multiple data providers in a waterfall motion.`,docPath:W(xS),tags:[V.PHONE,V.WATERFALL],billableOperations:OS,defaultInputRequirement:DS(null),inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:wS,allowedUserConnectionProviders:wS,deprecatedProviders:[`clado`],defaultPayload:{pipe_id:xS,connector:null,run_if:null,config:{providers:TS,input_fields:{profile_url:{alias:``}},output_fields:{mobile:{alias:``,enabled:!0}}}}},MS=`people:phone:workemail:waterfall@1`,NS=g(`work_email`),PS=g(`mobile`),FS=[`leadmagic`,`amplemarket`],IS=[{provider:`leadmagic`},{provider:`amplemarket`}],LS=r.object({pipe_id:r.literal(MS),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:FS,defaultProviders:IS}),input_fields:F(r.object({[NS.name]:w({fieldName:NS.name})})),output_fields:P(r.object({[PS.name]:D({fieldName:PS.name})}))}).optional()}),RS=e=>R(G(NS,e)),zS={"people-phone-workemail-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"people-phone-workemail-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:4},mode:`onSuccess`}},BS=class extends B{pipeId=MS;payload;payloadSchema=LS;billableOperations=zS;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return RS(this.payload.config)}getRawOutputFields(){return{[PS.name]:this.catalogOutput(PS,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,amplemarket:`amplemarket-person-reveal`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},VS=LS,HS={pipeId:MS,basePipe:U(MS),label:`Mobile number from email`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:mobile:workemail:waterfall@1`},description:`Find a mobile phone number for a prospect.`,tags:[V.PHONE,V.WATERFALL],docPath:W(MS),billableOperations:zS,defaultInputRequirement:RS(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:FS,managedProviders:FS,deprecatedProviders:[],defaultPayload:{pipe_id:MS,connector:null,run_if:null,config:{providers:IS,input_fields:{work_email:{alias:``}},output_fields:{mobile:{alias:``,enabled:!0}}}}},US=`people:professionalprofile:waterfall@1`,WS=g(`professional_profile`),GS=g(`professional_profile_url`),KS=[`prospeo`,`icypeas`],qS=[{provider:`prospeo`},{provider:`icypeas`}],JS=r.object({pipe_id:r.literal(US),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:KS,defaultProviders:qS}),input_fields:F(r.object({[GS.name]:w({fieldName:GS.name})})),output_fields:P(r.object({[WS.name]:D({fieldName:WS.name})}))}).optional()}),YS=e=>R(G(GS,e)),XS={"people-professionalprofile-waterfall-v1-icypeas":{provider:`icypeas`,credits:{default:1},mode:`onSuccess`,allowManagedConnection:!0},"people-professionalprofile-waterfall-v1-prospeo":{provider:`prospeo`,credits:{default:1},mode:`onSuccess`,allowManagedConnection:!0}},ZS=class extends B{pipeId=US;payload;payloadSchema=JS;billableOperations=XS;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return YS(this.payload.config)}getRawOutputFields(){return{[WS.name]:this.catalogOutput(WS)}}getConnectionsRequirements(){let e={icypeas:`icypeas_scrape_profile`,prospeo:`prospeo_social_profile_lookup`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},QS=JS,$S={pipeId:US,basePipe:U(US),label:`Full LinkedIn profile`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:profile:waterfall@1`},description:`Find a JSON representation of a LinkedIn profile.`,docPath:`/resources/pipe-catalog/people:professionalprofile:waterfall/1`,tags:[V.LINKEDIN,V.WATERFALL],managedProviders:KS,deprecatedProviders:[],allowedUserConnectionProviders:KS,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:XS,defaultInputRequirement:YS(null),defaultPayload:{pipe_id:US,run_if:null,connector:null,config:{providers:qS,input_fields:{professional_profile_url:{alias:``}},output_fields:{professional_profile:{alias:``,enabled:!0}}}}},eC=`people:professionalprofileurl:email:waterfall@1`,tC=g(`email`),nC=g(`work_email`),rC=g(`professional_profile_url`),iC=[`leadmagic`],aC=[{provider:`leadmagic`}],oC=r.object({pipe_id:r.literal(eC),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:aC,availableProviders:iC}),input_fields:F(r.object({[tC.name]:w({fieldName:tC.name}),[nC.name]:w({fieldName:nC.name})})),output_fields:P(r.object({[rC.name]:D({fieldName:rC.name})}))}).optional()}),sC=e=>_d(G(tC,e),G(nC,e)),cC={"people-professionalprofileurl-email-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:3.5},mode:`onSuccess`}},lC=class extends B{pipeId=eC;payload;payloadSchema=oC;billableOperations=cC;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return sC(this.payload.config)}getRawOutputFields(){return{[rC.name]:this.catalogOutput(rC)}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_to_b2b_profile`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},uC=oC,dC={pipeId:eC,basePipe:U(eC),managedProviders:iC,deprecatedProviders:[],allowedUserConnectionProviders:iC,label:`LinkedIn URL from email`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:profileurl:email:waterfall@1`},description:`Find the URL for a prospect's LinkedIn profile from their personal or professional email address.`,tags:[V.LINKEDIN],docPath:`/resources/pipe-catalog/people:professionalprofileurl:email:waterfall/1`,billableOperations:cC,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:sC(null),defaultPayload:{pipe_id:eC,run_if:null,connector:null,config:{providers:aC,input_fields:{email:{alias:``},work_email:{alias:``}},output_fields:{professional_profile_url:{alias:``,enabled:!0}}}}},fC=`people:professionalprofileurl:name@1`,pC=g(`name`),mC=g(`company_name`),hC=g(`location_hint`),gC=g(`professional_profile_url`),_C=r.object({pipe_id:r.literal(fC),connector:Jl(),run_if:b(),config:r.object({input_fields:F(r.object({[pC.name]:w({fieldName:pC.name}),[mC.name]:w({fieldName:mC.name}),[hC.name]:w({fieldName:hC.name})})),output_fields:P(r.object({[gC.name]:D({fieldName:gC.name})}))}).optional()}),vC=e=>z(R(G(pC,e)),R(G(mC,e)),vd(G(hC,e))),yC={"people-professionalprofileurl-name-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:.6},mode:`always`}},bC=class extends B{pipeId=fC;payload;payloadSchema=_C;billableOperations=yC;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`people-professionalprofileurl-name-v1-pipe0`)}getInputRequirement(){return vC(this.payload.config)}getRawOutputFields(){return{[gC.name]:this.catalogOutput(gC)}}getConnectionsRequirements(){return[{provider:`serper`,rateLimitRatio:1,rateLimitOperation:`serper_search`,allowManagedConnection:!0}]}},xC=_C,SC={pipeId:fC,basePipe:U(fC),label:`LinkedIn URL from name`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:profileurl:name@1`},allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],description:`Find the LinkedIn profile URL by using the prospect's name as input.`,docPath:`/resources/pipe-catalog/people:professionalprofileurl:name/1`,tags:[V.LINKEDIN],billableOperations:yC,defaultInputRequirement:vC(null),inputFieldMode:`static`,outputFieldMode:`static`,defaultPayload:{pipe_id:fC,connector:void 0,run_if:null,config:{input_fields:{company_name:{alias:``},location_hint:{alias:``},name:{alias:``}},output_fields:{professional_profile_url:{alias:``,enabled:!0}}}}},CC=`people:profile:waterfall@1`,wC=g(`profile`),TC=g(`profile_url`),EC=[`prospeo`,`icypeas`,`amplemarket`,`clado`],DC=[{provider:`amplemarket`},{provider:`prospeo`},{provider:`icypeas`}],OC=r.object({pipe_id:r.literal(CC),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:EC,defaultProviders:DC}),input_fields:F(r.object({[TC.name]:w({fieldName:TC.name})})),output_fields:P(r.object({[wC.name]:D({fieldName:wC.name})}))}).optional()}),kC=e=>R(G(TC,e)),AC={"people-profile-waterfall-v1-icypeas":{provider:`icypeas`,credits:{default:1},mode:`onSuccess`,allowManagedConnection:!0},"people-profile-waterfall-v1-prospeo":{provider:`prospeo`,credits:{default:1},mode:`onSuccess`,allowManagedConnection:!0},"people-profile-waterfall-v1-clado":{provider:`clado`,credits:{default:1},mode:`onSuccess`,allowManagedConnection:!0},"people-profile-waterfall-v1-amplemarket":{provider:`amplemarket`,credits:{default:1},mode:`onSuccess`,allowManagedConnection:!0}},jC=class extends B{pipeId=CC;payload;payloadSchema=OC;billableOperations=AC;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return kC(this.payload.config)}getRawOutputFields(){return{[wC.name]:this.catalogOutput(wC,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={icypeas:`icypeas_scrape_profile`,prospeo:`prospeo_social_profile_lookup`,clado:`clado_social_profile_lookup`,amplemarket:`amplemarket-person-reveal`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},MC=OC,NC={pipeId:CC,basePipe:U(CC),label:`Full LinkedIn profile`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:profile:waterfall@1`},description:`Find a JSON representation of a LinkedIn profile.`,docPath:W(CC),tags:[V.LINKEDIN,V.WATERFALL],managedProviders:EC,deprecatedProviders:[`clado`],allowedUserConnectionProviders:EC,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:AC,defaultInputRequirement:kC(null),defaultPayload:{pipe_id:CC,run_if:null,connector:null,config:{providers:DC,input_fields:{profile_url:{alias:``}},output_fields:{profile:{alias:``,enabled:!0}}}}},PC=g(`work_email`),FC=g(`crustdata_person_match`),IC=g(`crustdata_profile_match_score`),LC=`people:profile:workemail:crustdata@1`,RC=r.object({pipe_id:r.literal(LC),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[PC.name]:w({fieldName:PC.name})})),output_fields:P(r.object({[FC.name]:D({fieldName:FC.name}),[IC.name]:D({fieldName:IC.name})}))}).optional()}),zC=e=>R(G(PC,e)),BC={"people-profile-workemail-crustdata-v1-crustdata":{allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`,provider:`crustdata`}},VC=class extends B{pipeId=LC;payload;payloadSchema=RC;billableOperations=BC;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`people-profile-workemail-crustdata-v1-crustdata`)}getInputRequirement(){return zC(this.payload.config)}getRawOutputFields(){return{[FC.name]:this.catalogOutput(FC),[IC.name]:this.catalogOutput(IC)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_realtime_person_enrich`,allowManagedConnection:!0}]}},HC=RC,UC={pipeId:LC,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(LC),label:`Profile from work email`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:profile:workemail:crustdata@1`},description:`Find person profile by their work email address.`,tags:[V.EMAIL,V.PEOPLE_PROFILES],docPath:W(LC),billableOperations:BC,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:zC(null),defaultPayload:{pipe_id:LC,connector:null,run_if:null,config:{input_fields:{work_email:{alias:``}},output_fields:{crustdata_person_match:{alias:``,enabled:!0},crustdata_profile_match_score:{alias:``,enabled:!0}}}}},WC=`people:profileurl:email:waterfall@1`,GC=g(`email`),KC=g(`work_email`),qC=g(`profile_url`),JC=[`leadmagic`],YC=[{provider:`leadmagic`}],XC=r.object({pipe_id:r.literal(WC),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:YC,availableProviders:JC}),input_fields:F(r.object({[GC.name]:w({fieldName:GC.name}),[KC.name]:w({fieldName:KC.name})})),output_fields:P(r.object({[qC.name]:D({fieldName:qC.name})}))}).optional()}),ZC=e=>_d(G(GC,e),G(KC,e)),QC={"people-profileurl-email-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:3.5},mode:`onSuccess`}},$C=class extends B{pipeId=WC;payload;payloadSchema=XC;billableOperations=QC;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return ZC(this.payload.config)}getRawOutputFields(){return{[qC.name]:this.catalogOutput(qC,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_to_b2b_profile`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},ew=XC,tw={pipeId:WC,basePipe:U(WC),managedProviders:JC,deprecatedProviders:[],allowedUserConnectionProviders:JC,label:`LinkedIn URL from email`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:profileurl:email:waterfall@1`},description:`Find the URL for a prospect's LinkedIn profile from their personal or professional email address.`,tags:[V.LINKEDIN],docPath:W(WC),billableOperations:QC,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:ZC(null),defaultPayload:{pipe_id:WC,run_if:null,connector:null,config:{providers:YC,input_fields:{email:{alias:``},work_email:{alias:``}},output_fields:{profile_url:{alias:``,enabled:!0}}}}},nw=`people:validate:email:zerobounce@1`,rw=g(`work_email`),iw=g(`ip_address`),aw=g(`is_email_valid`),ow=r.object({pipe_id:r.literal(nw),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[rw.name]:w({fieldName:rw.name}),[iw.name]:w({fieldName:iw.name})})),output_fields:P(r.object({[aw.name]:D({fieldName:aw.name})}))}).optional()}),sw=e=>z(R(G(rw,e)),vd(G(iw,e))),cw={"people-validate-email-zerobounce-v1-zerobounce":{provider:`zerobounce`,allowManagedConnection:!0,credits:{default:.5},mode:`always`}},lw=class extends B{pipeId=nw;payload;payloadSchema=ow;billableOperations=cw;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`zerobounce`]}estimateBillableOperations(e){return H(e,`people-validate-email-zerobounce-v1-zerobounce`)}getInputRequirement(){return sw(this.payload.config)}getRawOutputFields(){return{[aw.name]:this.catalogOutput(aw)}}getConnectionsRequirements(){return[{provider:`zerobounce`,rateLimitRatio:1,rateLimitOperation:`zerobounce_generic`,allowManagedConnection:!0}]}},uw=ow,dw={pipeId:nw,basePipe:U(nw),label:`Validate email`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:email:validate:zerobounce@1`},description:`Verify email address against various factors, including syntax, domain, and server existence, to ensure it is deliverable and active.`,tags:[V.EMAIL],docPath:`/resources/pipe-catalog/people:validate:email:zerobounce/1`,billableOperations:cw,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`zerobounce`],managedProviders:[`zerobounce`],deprecatedProviders:[],defaultInputRequirement:sw(null),defaultPayload:{pipe_id:nw,connector:null,run_if:null,config:{input_fields:{ip_address:{alias:``},work_email:{alias:``}},output_fields:{is_email_valid:{alias:``,enabled:!0}}}}},fw=`people:workemail:profileurl:waterfall@1`,pw=g(`profile_url`),mw=g(`work_email`),hw=g(`email_validation_status`),gw=[`hunter`,`amplemarket`,`findymail`,`leadmagic`,`crustdata`,`clado`],_w=[`clado`],vw=[{provider:`hunter`},{provider:`amplemarket`},{provider:`leadmagic`},{provider:`findymail`},{provider:`crustdata`}],yw=r.object({pipe_id:r.literal(fw),connector:C(),run_if:b(),config:r.object({providers:T({availableProviders:gw,defaultProviders:vw,sectionKey:`general`}),allow_catch_all_emails:E({path:`config.allow_catch_all_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,info:``,label:`Allow catch-all emails`}),allow_risky_emails:E({path:`config.allow_risky_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,info:`Higher chance of bouncing or being marked as spam.`,label:`Allow risky emails`}),input_fields:F(r.object({[pw.name]:w({fieldName:pw.name})})),output_fields:P(r.object({[mw.name]:D({fieldName:mw.name}),[hw.name]:D({fieldName:hw.name})}))}).optional()}),bw=e=>R(G(pw,e)),xw={"people-workemail-profileurl-waterfall-v1-hunter":{provider:`hunter`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`},"people-workemail-profileurl-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"people-workemail-profileurl-waterfall-v1-findymail":{provider:`findymail`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"people-workemail-profileurl-waterfall-v1-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:3},mode:`onSuccess`},"people-workemail-profileurl-waterfall-v1-clado":{provider:`clado`,allowManagedConnection:!0,credits:{default:3.5},mode:`onSuccess`},"people-workemail-profileurl-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:2.5},mode:`onSuccess`}},Sw=class extends B{pipeId=fw;payload;payloadSchema=yw;billableOperations=xw;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return bw(this.payload.config)}getRawOutputFields(){return{[mw.name]:this.catalogOutput(mw,{isPrimaryOutput:!0}),[hw.name]:this.catalogOutput(hw,{isPrimaryOutput:!1})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_b2b_lookup`,hunter:`prospeo_email_lookup`,amplemarket:`amplemarket-person-reveal`,findymail:`findymail_email_b2b_lookup`,crustdata:`crustdata_realtime_person_enrich`,clado:`clado_contact_information`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},Cw=yw,ww={pipeId:fw,basePipe:U(fw),label:`Work email from LinkedIn URL`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:workemail:profileurl:waterfall@1`},description:`Find work email addresses from B2B profile.`,tags:[V.EMAIL,V.WORK_EMAIL,V.WATERFALL],docPath:W(fw),managedProviders:gw,allowedUserConnectionProviders:gw,deprecatedProviders:_w,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:xw,defaultInputRequirement:bw(null),defaultPayload:{pipe_id:fw,connector:null,run_if:null,config:{providers:vw,allow_catch_all_emails:!0,allow_risky_emails:!0,input_fields:{profile_url:{alias:``}},output_fields:{work_email:{alias:``,enabled:!0},email_validation_status:{alias:``,enabled:!0}}}}},Tw=`people:workemail:waterfall@1`,Ew=g(`name`),Dw=g(`company_website_url`),Ow=g(`company_name`),kw=g(`work_email`),Aw=g(`email_validation_status`),jw=[`leadmagic`,`prospeo`,`amplemarket`,`hunter`,`icypeas`,`findymail`],Mw=[`icypeas`],Nw=[{provider:`leadmagic`},{provider:`prospeo`},{provider:`amplemarket`},{provider:`hunter`},{provider:`findymail`}],Pw=r.object({pipe_id:r.literal(Tw),connector:C(),run_if:b(),config:r.object({providers:T({availableProviders:jw,defaultProviders:Nw,deprecatedProviders:Mw,sectionKey:`general`}),allow_catch_all_emails:E({path:`config.allow_catch_all_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,description:`Catch-alls appear valid but remain undeliverable-risk.`,label:`Allow catch-all emails`}),allow_risky_emails:E({path:`config.allow_risky_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,description:`DNS configuration and spam reputation may flag emails as high-risk.`,label:`Allow risky emails`}),input_fields:F(r.object({[Ew.name]:w({fieldName:Ew.name}),[Dw.name]:w({fieldName:Dw.name}),[Ow.name]:w({fieldName:Ow.name})})),output_fields:P(r.object({[kw.name]:D({fieldName:kw.name}),[Aw.name]:D({fieldName:Aw.name})}))}).optional()}),Fw=e=>z(R(G(Ew,e)),_d(G(Dw,e),G(Ow,e))),Iw={"people-workemail-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:.5},mode:`onSuccess`},"people-workemail-waterfall-v1-icypeas":{provider:`icypeas`,allowManagedConnection:!0,credits:{default:.5},mode:`onSuccess`},"people-workemail-waterfall-v1-prospeo":{provider:`prospeo`,allowManagedConnection:!0,credits:{default:1,level1:{credits:.5,weight:1}},mode:`onSuccess`},"people-workemail-waterfall-v1-findymail":{provider:`findymail`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`},"people-workemail-waterfall-v1-hunter":{provider:`hunter`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`},"people-workemail-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:2.5},mode:`onSuccess`}},Lw=class extends B{pipeId=Tw;payload;payloadSchema=Pw;billableOperations=Iw;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return Fw(this.payload.config)}getRawOutputFields(){return{[kw.name]:this.catalogOutput(kw,{isPrimaryOutput:!0}),[Aw.name]:this.catalogOutput(Aw,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,prospeo:`prospeo_email_lookup`,icypeas:`icypeas_email_lookup`,findymail:`findymail_email_lookup`,hunter:`hunter_email_finder`,amplemarket:`amplemarket-person-reveal`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},Rw=Pw,zw={pipeId:Tw,basePipe:U(Tw),label:`Work email from name`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:workemail:waterfall@1`},description:`Find work email addresses in a waterfall motion.`,tags:[V.EMAIL,V.WORK_EMAIL,V.WATERFALL],docPath:W(Tw),managedProviders:jw,deprecatedProviders:Mw,allowedUserConnectionProviders:jw,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:Iw,defaultInputRequirement:Fw(null),defaultPayload:{pipe_id:Tw,connector:null,run_if:null,config:{providers:Nw,allow_catch_all_emails:!0,allow_risky_emails:!0,input_fields:{company_name:{alias:``},company_website_url:{alias:``},name:{alias:``}},output_fields:{work_email:{alias:``,enabled:!0},email_validation_status:{alias:``,enabled:!1}}}}},Bw=g(`email`),Vw=g(`amplemarket_person_match`),Hw=`person:identity:amplemarket@1`,Uw=r.object({pipe_id:r.literal(Hw),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[Bw.name]:w({fieldName:Bw.name})})),output_fields:P(r.object({[Vw.name]:D({fieldName:Vw.name})}))}).optional()}),Ww=e=>R(G(Bw,e)),Gw={"person-identity-amplemarket-v1-amplemarket":{allowManagedConnection:!1,credits:null,mode:null,provider:`amplemarket`}},Kw=class extends B{pipeId=Hw;payload;payloadSchema=Uw;billableOperations=Gw;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`amplemarket`]}estimateBillableOperations(){return[]}getInputRequirement(){return Ww(this.payload.config)}getRawOutputFields(){return{[Vw.name]:this.catalogOutput(Vw)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitRatio:1,rateLimitOperation:`amplemarket_generic`,allowManagedConnection:!1}]}},qw=Uw,Jw={pipeId:Hw,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Hw),label:`Person identity`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-07-28`,replacedBy:`person:identity:email:waterfall@2`},description:`Find information on a person based on their email`,tags:[V.PEOPLE_PROFILES],keywords:[`enrich`,`enrichment`,`reverse lookup`,`contact`,`profile`],docPath:W(Hw),billableOperations:Gw,allowedUserConnectionProviders:[`amplemarket`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:Ww(null),defaultPayload:{pipe_id:Hw,connector:null,run_if:null,config:{input_fields:{email:{alias:``}},output_fields:{amplemarket_person_match:{alias:``,enabled:!0}}}}},Yw=`person:identity:email:waterfall@1`,Xw=g(`email`),Zw=g(`company_domain`),Qw=g(`name`),$w=g(`job_title`),eT=g(`profile_url`),tT=g(`company_profile_url`),nT=g(`company_name`),rT=[`findymail`,`hunter`,`crustdata`],iT=[{provider:`findymail`},{provider:`hunter`},{provider:`crustdata`}],aT=r.object({pipe_id:r.literal(Yw),connector:C(),run_if:b(),config:r.object({providers:T({availableProviders:rT,defaultProviders:iT,sectionKey:`general`}),input_fields:F(r.object({[Xw.name]:w({fieldName:Xw.name})})),output_fields:P(r.object({[Qw.name]:D({fieldName:Qw.name}),[eT.name]:D({fieldName:eT.name}),[$w.name]:D({fieldName:$w.name}),[Zw.name]:D({fieldName:Zw.name}),[nT.name]:D({fieldName:nT.name}),[tT.name]:D({fieldName:tT.name})}))}).optional()}),oT=e=>R(G(Xw,e)),sT={"person-identity-email-waterfall-v1-hunter":{provider:`hunter`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"person-identity-email-waterfall-v1-findymail":{provider:`findymail`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"person-identity-email-waterfall-v1-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`}},cT=class extends B{pipeId=Yw;payload;payloadSchema=aT;billableOperations=sT;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return oT(this.payload.config)}getRawOutputFields(){return{[Qw.name]:this.catalogOutput(Qw,{isPrimaryOutput:!0}),[eT.name]:this.catalogOutput(eT,{isPrimaryOutput:!0}),[$w.name]:this.catalogOutput($w,{isPrimaryOutput:!0}),[nT.name]:this.catalogOutput(nT,{isPrimaryOutput:!0}),[tT.name]:this.catalogOutput(tT,{isPrimaryOutput:!0}),[Zw.name]:this.catalogOutput(Zw,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={hunter:`prospeo_email_lookup`,findymail:`findymail_email_b2b_lookup`,crustdata:`crustdata_realtime_person_enrich`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},lT=aT,uT={pipeId:Yw,basePipe:U(Yw),label:`Person identity from email`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-07-17`,replacedBy:`person:identity:email:waterfall@2`},description:`Find identity of a person from their email address.`,tags:[V.EMAIL,V.PEOPLE_PROFILES],keywords:[`enrich`,`enrichment`,`reverse lookup`,`contact`,`profile`],docPath:W(Yw),managedProviders:rT,deprecatedProviders:[],allowedUserConnectionProviders:rT,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:sT,defaultInputRequirement:oT(null),defaultPayload:{pipe_id:Yw,connector:null,run_if:null,config:{providers:iT,input_fields:{email:{alias:``}},output_fields:{name:{alias:``,enabled:!0},profile_url:{alias:``,enabled:!0},job_title:{alias:``,enabled:!0},company_name:{alias:``,enabled:!0},company_profile_url:{alias:``,enabled:!0},company_domain:{alias:``,enabled:!0}}}}},dT=g(`profile_url`),fT=g(`amplemarket_person_match`),pT=`person:match:amplemarket@1`,mT=r.object({pipe_id:r.literal(pT),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[dT.name]:w({fieldName:dT.name})})),output_fields:P(r.object({[fT.name]:D({fieldName:fT.name})}))}).optional()}),hT=e=>R(G(dT,e)),gT={"person-match-amplemarket-v1-amplemarket":{allowManagedConnection:!1,credits:null,mode:null,provider:`amplemarket`}},_T=class extends B{pipeId=pT;payload;payloadSchema=mT;billableOperations=gT;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`amplemarket`]}estimateBillableOperations(){return[]}getInputRequirement(){return hT(this.payload.config)}getRawOutputFields(){return{[fT.name]:this.catalogOutput(fT)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitRatio:1,rateLimitOperation:`amplemarket_generic`,allowManagedConnection:!1}]}},vT=mT,yT={pipeId:pT,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(pT),label:`Person match`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-07-28`,replacedBy:`person:profile:waterfall@2`},description:`Find information on a person based on their LinkedIn profile URL.`,tags:[V.PEOPLE_PROFILES],keywords:[`enrich`,`enrichment`,`linkedin`,`profile`,`lookup`,`contact`],docPath:W(pT),billableOperations:gT,allowedUserConnectionProviders:[`amplemarket`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:hT(null),defaultPayload:{pipe_id:pT,connector:null,run_if:null,config:{input_fields:{profile_url:{alias:``}},output_fields:{amplemarket_person_match:{alias:``,enabled:!0}}}}},bT=`person:profile:waterfall@1`,xT=g(`profile`),ST=g(`profile_url`),CT=[`prospeo`,`icypeas`,`amplemarket`],wT=[{provider:`amplemarket`},{provider:`prospeo`},{provider:`icypeas`}],TT=r.object({pipe_id:r.literal(bT),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:CT,defaultProviders:wT}),input_fields:F(r.object({[ST.name]:w({fieldName:ST.name})})),output_fields:P(r.object({[xT.name]:D({fieldName:xT.name})}))}).optional()}),ET=e=>R(G(ST,e)),DT={"person-profile-waterfall-v1-icypeas":{provider:`icypeas`,credits:{default:1,level1:{credits:.5,weight:1}},mode:`onSuccess`,allowManagedConnection:!0},"person-profile-waterfall-v1-prospeo":{provider:`prospeo`,credits:{default:1,level1:{credits:.5,weight:1}},mode:`onSuccess`,allowManagedConnection:!0},"person-profile-waterfall-v1-amplemarket":{provider:`amplemarket`,credits:{default:1,level1:{credits:.5,weight:1}},mode:`onSuccess`,allowManagedConnection:!0}},OT=class extends B{pipeId=bT;payload;payloadSchema=TT;billableOperations=DT;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return ET(this.payload.config)}getRawOutputFields(){return{[xT.name]:this.catalogOutput(xT,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={icypeas:`icypeas_scrape_profile`,prospeo:`prospeo_social_profile_lookup`,amplemarket:`amplemarket-person-reveal`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},kT=TT,AT={pipeId:bT,basePipe:U(bT),label:`Full LinkedIn profile`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-07-17`,replacedBy:`person:profile:waterfall@2`},description:`Find a JSON representation of a LinkedIn profile.`,docPath:W(bT),tags:[V.LINKEDIN,V.WATERFALL],keywords:[`enrich`,`enrichment`,`json`,`scrape`,`bio`,`experience`],managedProviders:CT,deprecatedProviders:[],allowedUserConnectionProviders:CT,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:DT,defaultInputRequirement:ET(null),defaultPayload:{pipe_id:bT,run_if:null,connector:null,config:{providers:wT,input_fields:{profile_url:{alias:``}},output_fields:{profile:{alias:``,enabled:!0}}}}},jT=`email:draft:gmail@1`,MT=g(`gmail_draft_id`),NT=r.object({pipe_id:r.literal(jT),connector:S(),run_if:b(),config:r.object({to:x({sectionKey:`general`,groupPath:`config.general`,path:`config.to`,label:`To`,info:"Draft recipient address. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`{{ email }}`,inputType:`email`,minLength:1,maxLength:320,expectedTagType:`string`,expectedTagFormat:`email`}),reply_to:x({sectionKey:`general`,groupPath:`config.general`,path:`config.reply_to`,label:`Reply-To`,info:"Optional address recipients can reply to. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`support@example.com`,inputType:`email`,maxLength:320,expectedTagType:`string`,expectedTagFormat:`email`}).nullable(),subject:x({sectionKey:`general`,groupPath:`config.general`,path:`config.subject`,label:`Subject`,info:"Email subject line. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`Hi {{ first_name }}`,inputType:`text`,minLength:1,maxLength:998,expectedTagType:`string`,expectedTagFormat:`text`}),body:x({sectionKey:`general`,groupPath:`config.general`,path:`config.body`,label:`Body`,info:"Email body in markdown. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`Hi {{ first_name }},
|
|
76
|
-
|
|
77
|
-
…`,inputType:`text`,minLength:1,maxLength:1e6,expectedTagType:`string`,expectedTagFormat:`markdown`,multiline:!0}),output_fields:P(r.object({[
|
|
78
|
-
|
|
79
|
-
…`,inputType:`text`,minLength:1,maxLength:1e6,expectedTagType:`string`,expectedTagFormat:`markdown`,multiline:!0}),output_fields:P(r.object({[
|
|
80
|
-
|
|
81
|
-
…`,inputType:`text`,minLength:1,maxLength:1e6,expectedTagType:`string`,expectedTagFormat:`markdown`,multiline:!0}),output_fields:P(r.object({[tE.name]:D({fieldName:tE.name})}))})}),rE={"email-send-resend-v1-resend":{allowManagedConnection:!1,provider:`resend`,credits:null,mode:null}},iE=class extends B{pipeId=eE;payload;payloadSchema=nE;billableOperations=rE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`resend`]}estimateBillableOperations(e){return H(e,`email-send-resend-v1-resend`)}getTemplatedFields(){return[this.payload.config.from,this.payload.config.to,this.payload.config.reply_to,this.payload.config.subject,this.payload.config.body]}getInputRequirement(){return tp(this.getTemplatedFields())}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return np(this.getTemplatedFields())}getRawOutputFields(){return{[tE.name]:this.catalogOutput(tE)}}getConnectionsRequirements(){return[{provider:`resend`,rateLimitRatio:1,rateLimitOperation:`resend_generic`,allowManagedConnection:!1}]}},aE=nE,oE={pipeId:eE,basePipe:U(eE),label:`Send email with Resend`,executionMode:`single`,categories:[`actions`],lifecycle:null,description:`Send an email with Resend.`,guide:"Send an email via Resend. From, To, Reply-To, Subject and Body are templated config fields — reference upstream fields with `{{ field_name }}` and stored secrets with `{{ SECRETS.KEY }}`. Requires a Resend vault connection (call list_connections to find one).",tags:[V.EMAIL],keywords:[`outreach`,`message`,`mail`,`deliver`,`outbound`,`transactional`],docPath:W(eE),billableOperations:rE,inputFieldMode:`config`,outputFieldMode:`static`,allowedUserConnectionProviders:[`resend`],defaultInputRequirement:null,managedProviders:[],deprecatedProviders:[],defaultPayload:{pipe_id:eE,connector:{strategy:`first`,connections:[]},run_if:null,config:{from:``,to:``,reply_to:``,subject:``,body:``,output_fields:{resend_email_success:{alias:``,enabled:!0}}}}},sE=`email:validate:zerobounce@1`,cE=g(`email`),lE=g(`zerobounce_validation_status`),uE=g(`zerobounce_validation_match`),dE=r.object({pipe_id:r.literal(sE),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[cE.name]:w({fieldName:cE.name})})),output_fields:P(r.object({[uE.name]:D({fieldName:uE.name}),[lE.name]:D({fieldName:lE.name})}))}).optional()}),fE=e=>R(G(cE,e)),pE={"email-validate-zerobounce-v1-zerobounce":{provider:`zerobounce`,allowManagedConnection:!0,credits:{default:.4,level1:{credits:.3,weight:1},level2:{credits:.15,weight:6}},mode:`always`}},mE=class extends B{pipeId=sE;payload;payloadSchema=dE;billableOperations=pE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`zerobounce`]}estimateBillableOperations(e){return H(e,`email-validate-zerobounce-v1-zerobounce`)}getInputRequirement(){return fE(this.payload.config)}getRawOutputFields(){return{[lE.name]:this.catalogOutput(lE),[uE.name]:this.catalogOutput(uE)}}getConnectionsRequirements(){return[{provider:`zerobounce`,rateLimitRatio:1,rateLimitOperation:`zerobounce_generic`,allowManagedConnection:!0}]}},hE=dE,gE={pipeId:sE,basePipe:U(sE),label:`Validate email`,executionMode:`single`,categories:[`people_data`],lifecycle:null,description:`Verify email address against various factors, including syntax, domain, and server existence, to ensure it is deliverable and active.`,tags:[V.EMAIL],keywords:[`verify`,`verification`,`bounce`,`deliverability`,`check`,`clean`],docPath:W(sE),billableOperations:pE,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`zerobounce`],managedProviders:[`zerobounce`],deprecatedProviders:[],defaultInputRequirement:fE(null),defaultPayload:{pipe_id:sE,connector:null,run_if:null,config:{input_fields:{email:{alias:``}},output_fields:{zerobounce_validation_status:{alias:``,enabled:!0},zerobounce_validation_match:{alias:``,enabled:!0}}}}},_E=`email:write@1`,vE=`email-write-v1`,yE=Zc(vE),bE=g(`email_subject`),xE=g(`email_body`),SE=r.object({pipe_id:r.literal(_E),connector:C(),run_if:b(),config:r.object({template:Kl({sectionKey:`general`,label:`Prompt`,path:`config.template`,placeholder:J(`prompt`),groupPath:`config.prompt`,required:!0}),model:Tu({sectionKey:`general`,label:`Model`,path:`config.model`,groupPath:`config.prompt`,billableOperations:yE,defaultValue:Hc}),signature:Cu({sectionKey:`general`,label:`Signature (Markdown)`,path:`config.signature`,groupPath:`config.email`,minLength:5,rows:10}),persona:wu({sectionKey:`general`,label:`Persona`,info:`Define the unique tone of your email`,path:`config.persona`,groupPath:`config.prompt`,required:!1,options:[{label:`Sales`,value:`sales`},{label:`Human Resources`,value:`human_resources`},{label:`Customer Success`,value:`customer_success`}]}),output_fields:P(r.object({[bE.name]:D({fieldName:bE.name}),[xE.name]:D({fieldName:xE.name})}))})}),CE=class extends B{pipeId=_E;payload;payloadSchema=SE;billableOperations=yE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return Wc(this.payload.config.model)}estimateBillableOperations(e){return $c(e,{model:this.payload.config.model,prefix:vE,inputTokens:600,outputTokens:800})}getInputRequirement(){return tp([this.payload.config.template])}getSecretRequirements(){return q([this.payload.config.template])}getConstantRequirements(){return np([this.payload.config.template])}getRawOutputFields(){return{[bE.name]:this.catalogOutput(bE),[xE.name]:this.catalogOutput(xE)}}getConnectionsRequirements(){return Gc(this.payload.config.model)}},wE=SE,TE={pipeId:_E,inputFieldMode:`config`,outputFieldMode:`static`,basePipe:U(_E),label:`Email writer`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`An AI agent specialized in composing emails.`,guide:`AI email composer. Outputs: email_subject, email_body. Pair with email:send:gmail@1 or email:send:resend@1 to send the composed email. Requires 'email' field in input records for the sender pipe.`,tags:[V.AI],keywords:[`ai`,`compose`,`draft`,`generate`,`copywriting`,`personalize`,`outreach`],docPath:W(_E),defaultInputRequirement:null,billableOperations:yE,allowedUserConnectionProviders:Kc(),managedProviders:Kc(),deprecatedProviders:[],defaultPayload:{pipe_id:_E,connector:null,run_if:null,config:{template:``,output_fields:{email_body:{alias:``,enabled:!0},email_subject:{alias:``,enabled:!0}},persona:`sales`,model:Hc,signature:``}}},EE=`field:domainify@1`,DE=g(`url_input`),OE=g(`domain`),kE=r.object({pipe_id:r.literal(EE),run_if:b(),connector:Jl(),config:r.object({input_fields:F(r.object({[DE.name]:w({fieldName:DE.name})})),output_fields:P(r.object({[OE.name]:D({fieldName:OE.name})}))}).optional()}),AE=e=>R(G(DE,e)),jE={"field-domainify-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},ME=class extends B{pipeId=EE;payload;payloadSchema=kE;billableOperations=jE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getInputRequirement(){return AE(this.payload.config)}getRawOutputFields(){return{[OE.name]:this.catalogOutput(OE)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},NE=kE,PE={pipeId:EE,basePipe:U(EE),label:`Extract domain`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Transform URL input into a domain. Also tolerates bare domains and email addresses (the part after @ is used). Examples: 'https://go.com' → 'go.com'; 'jane@acme.io' → 'acme.io'.`,tags:[V.LOGIC,V.FIELDS],keywords:[`url`,`website`,`hostname`,`clean`,`strip`,`parse`],docPath:W(EE),billableOperations:jE,defaultInputRequirement:AE(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:EE,run_if:null,connector:null,config:{input_fields:{url_input:{alias:``}},output_fields:{domain:{alias:``,enabled:!0}}}}},FE=`field:slugify@1`,IE=g(`string_input`),LE=g(`slugified`),RE=r.object({pipe_id:r.literal(FE),run_if:b(),connector:Jl(),config:r.object({input_fields:F(r.object({[IE.name]:w({fieldName:IE.name})})),output_fields:P(r.object({[LE.name]:D({fieldName:LE.name})}))}).optional()}),zE=e=>R(G(IE,e)),BE={"field-slugify-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},VE=class extends B{pipeId=FE;payload;payloadSchema=RE;billableOperations=BE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getInputRequirement(){return zE(this.payload.config)}getRawOutputFields(){return{[LE.name]:this.catalogOutput(LE)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},HE=RE,UE={pipeId:FE,basePipe:U(FE),label:`Slugify field`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Strip a field value of characters not commonly found in slugs.`,tags:[V.LOGIC,V.FIELDS],keywords:[`clean`,`sanitize`,`normalize`,`url safe`,`format`,`strip`],docPath:W(FE),billableOperations:BE,defaultInputRequirement:zE(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:FE,run_if:null,connector:null,config:{input_fields:{string_input:{alias:``}},output_fields:{slugified:{alias:``,enabled:!0}}}}},WE=`field:timestamp@1`,GE=g(`timestamp`),KE=r.object({pipe_id:r.literal(WE),run_if:b(),connector:Jl(),config:r.object({offset_days:Du({label:`Offset (days)`,info:`Shift the stamped moment by this many days: positive = future (a follow-up or expiry date), negative = past. Empty = now.`,path:`config.offset_days`,groupPath:`config.general`,sectionKey:`general`,min:-36500,max:36500}).nullish(),granularity:wu({label:`Granularity`,description:`"datetime" (default) keeps the full instant; "date" truncates to midnight UTC for stable date-only comparisons and cohort labels.`,path:`config.granularity`,groupPath:`config.general`,sectionKey:`general`,required:!1,options:[{label:`Datetime`,value:`datetime`},{label:`Date`,value:`date`}]}).nullish(),output_fields:P(r.object({[GE.name]:D({fieldName:GE.name})}))}).optional()}),qE={"field-timestamp-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},JE=class extends B{pipeId=WE;payload;payloadSchema=KE;billableOperations=qE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getInputRequirement(){return z()}getRawOutputFields(){return{[GE.name]:this.catalogOutput(GE)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},YE=KE,XE={pipeId:WE,basePipe:U(WE),label:`Timestamp`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Write the moment the pipe ran (ISO 8601, UTC) into a column — optionally offset into the future/past or truncated to a date. The building block for freshness cadences, follow-up dates, and expiry columns.`,guide:`Stamps the run moment into one datetime column (alias it to name the moment: last_attempted_at, next_review_at, valid_until). It has NO typed inputs, so its cell NEVER re-runs on data drift — it recomputes only when force-requeued (rows:enrich@1 run_statuses covering its current status) or when this config changes. Pair with a run_if referencing the field whose attempt it stamps: the run_if reference is what ORDERS this pipe after that field's producer, so list EVERY status the field can end in (completed, failed, no_result, skipped ⇒ effectively always-true) — a narrower set wipes the stamp to skipped on non-matching forced runs. config.offset_days shifts the moment (positive = future: follow-up/expiry dates that feed older_than_days / within_last_days conditions; negative = past); config.granularity 'date' truncates to midnight UTC for stable date-only comparisons. Derives from the run moment + static config ONLY — for date math over a row's own fields, use a dedicated pipe, not this one. Deterministic-local: runs for REAL in sandbox, FREE pipe0 operation.`,tags:[V.LOGIC,V.FIELDS],keywords:[`timestamp`,`now`,`date`,`time`,`stamp`,`enriched at`,`last run`,`freshness`,`expiry`,`follow up`],docPath:W(WE),billableOperations:qE,defaultInputRequirement:null,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:WE,run_if:null,connector:null,config:{offset_days:null,granularity:``,output_fields:{timestamp:{alias:``,enabled:!0}}}}};function ZE({name:e,resolvedName:t,source:n}){let r=e===t?`'${e}'`:`'${e}' (resolved to '${t}')`;return n?`${r} (from ${n})`:r}const QE=e=>(e.kind===`all`||e.kind===`any`)&&e.of.length===0;function $E(e){switch(e.kind){case`field`:return ZE(e.field);case`optional`:return`[optional ${ZE(e.field)}]`;case`all`:case`any`:{let t=e.of.filter(e=>!QE(e));return t.length===0?`(none)`:t.length===1?$E(t[0]):`(${t.map($E).join(e.kind===`all`?` AND `:` OR `)})`}}}function eD(e,t){return`Pipe input requirement is not satisfied${t?.pipeId!==void 0||t?.index!==void 0?` for pipe${t.index===void 0?``:` at index ${t.index}`}${t.pipeId===void 0?``:` (${t.pipeId})`}`:``}: ${$E(e)}. Map missing fields to existing ones, add a pipe that outputs them, or include them in your inputs.`}var tD=class extends Error{constructor(e){super(`Request validation failed (${e.length} errors): ${e.join(`, `)}`),this.errors=e,this.name=`RequestValidationError`,Object.setPrototypeOf(this,new.target.prototype)}};const nD={ConditionTargetFieldNotFound:({fieldName:e,pipeId:t,pipeIdx:n})=>({code:`ConditionTargetFieldNotFound`,message:`${t} (idx: ${n}) has an invalid condition. Field '${e}' not found.`}),ConditionValueOnJsonField:({fieldName:e,pipeId:t,pipeIdx:n})=>({code:`ConditionValueOnJsonField`,message:`${t} (idx: ${n}) has an invalid condition. '${e}' is a json field — its VALUE cannot be compared. Use a STATUS condition (property: "status"), or extract the nested property into its own flat field first.`}),FaultyEnrichmentOrder:()=>({code:`FaultyEnrichmentOrder`,message:`Enrichment not found while ordering. Was the request invalid?`}),MustDefineAnnotations:()=>({code:`MustDefineAnnotations`,message:`Must define either input or field annoations to validate pipes payload.`}),CircularDependency:({currentPipe:e,circularPipe:t})=>({code:`CircularDependency`,message:`'${e.pipe_id}' (${e.idx}) and '${t.pipeId}' (${t.idx}) create a dependency loop. They both need the other's output to complete. Neither can complete. You can map the pipe outputs or input to fields with different names if you want the pipes to be independent or each other.`}),ValidationFailed:({error:e})=>({code:`ValidationFailed`,message:`Failed to validate task request: ${e instanceof Error?e.message:String(e)}`}),MissingCustomConnections:({pipeId:e,index:t,missingProviders:n})=>({code:`MissingCustomConnections`,message:`Pipe ${e} (index ${t}) requires you to specify custom connections for the providers ${n.join(`, `)}. Create the custom connections in the dashbard and reference them in your request.`}),ResponseGenerationFailed:({error:e})=>({code:`ResponseGenerationFailed`,message:`Failed to generate response: ${e instanceof Error?e.message:String(e)}`}),InputValuesMustHaveSameType:({pipeId:e,fieldNames:t})=>({code:`InputValuesMustHaveSameType`,message:`Pipe ${e} requires all input values to have the same type. But values ${t.join(`, `)} have different types.`}),NotValidated:()=>({code:`NotValidated`,message:`PipelineRequest must be validated before accessing results`}),MissingIdInInput:()=>({code:`MissingIdInInput`,message:`Inputs missing 'id' property.`}),InputDataTypeMismatch:({key:e,derivedInputFieldType:t,fieldType:n})=>({code:`InputDataTypeMismatch`,message:`Input data has values with matching keys '${e}' but different types. Expected type: '${t}'. Actual: '${n}'.`}),UnresolvableDependency:({index:e,dependencyIndex:t})=>({code:`UnresolvableDependency`,message:`Unresolvable dependency at index ${e} to ${t}`}),RequirementUnmet:({requirement:e,pipeId:t,index:n})=>({code:`RequirementUnmet`,message:eD(e,{pipeId:t,index:n})}),HardInputDependencyViolation:({index:e,indexPipeId:t,dependencyIndex:n,dependencyIndexPipeId:r})=>({code:`HardInputDependencyViolation`,message:`Dependency violation: pipe at idx: ${e} (${t}) must come after pipe at idx: ${n} (${r})`}),HardConditionDependencyViolation:({index:e,indexPipeId:t,dependencyIndex:n,dependencyIndexPipeId:r})=>({code:`HardConditionDependencyViolation`,message:`Dependency violation: pipe at idx: ${e} (${t}) has a condition that points to pipe at idx: ${n} (${r}). But pipe index: ${e} (${t}) is always must be processed after pipe at index ${n} (${r}). This is due to input requirements or other conditions.`}),DuplicateInitialField:({name:e})=>({code:`DuplicateInitialField`,message:`Duplicate initial field '${e}' detected. Each field must be defined only once.`}),MissingInputId:({index:e})=>({code:`MissingInputId`,message:`Input record at index ${e} is missing a required ID field.`}),InvalidId:()=>({code:`InvalidId`,message:`Cell IDs must be numbers or strings`}),IDConflict:({index:e,id:t})=>({code:`IDConflict`,message:`Input data at index ${e} has Id conflict. Id '${t}' is not unique.`}),UnknownResolver:({pipeId:e,index:t})=>({code:`UnknownResolver`,message:`Unknown pipe '${e}' specified at position ${t}.`}),DuplicatePipeOutput:({pipeId:e,outputField:t})=>({code:`DuplicateEnrichmentOutput`,message:`Field conflict for '${e}'. Cannot add output field ${ZE(t)} to pipeline because it already exists. Try renaming it.`}),ReservedOutputFieldName:({})=>({code:`ReservedOutputFieldName`,message:`'id' is reserved field name. Please rename your output field.`}),InputDataDoesNotMatchOutputField:({index:e,resolvedName:t,type:n,inputValueType:r})=>({code:`InputDataDoesNotMatchOutputField`,message:`Input at position ${e} provided data for field '${t}' that did not match expected type. Expected: '${n}', Actual: '${r}'.`}),AmbiguousDependency:({fieldName:e})=>({code:`AmbiguousDependency`,message:`Found more than one pipe that produces field: ${e}. Rename or disable the field to add it.`}),EmptyObjectProperty:()=>({code:`EmptyObjectProperty`,message:`Input data contains empty object property "". This is not allowed.`}),JSONSchemaMissing:({schemaRef:e,outputName:t})=>({code:`JSONSchemaMissing`,message:`Missing jsonSchema '${e}' for output with name '${t}'.`}),InvalidJSONSchema:({schemaRef:e})=>({code:`InvalidJSONSchema`,message:`JSON Schema (ref: ${e}) is invalid.`}),MissingOutputFieldDescription:({outputName:e})=>({code:`MissingOutputFieldDescription`,message:`The output field ${e} is missing a "description" property. Define it {{ ${e} description="Foo bar" }}`}),InvalidFormatTag:({outputName:e,format:t})=>({code:`InvalidFormatTag`,message:`The output field ${e} has an invalid format tag ${t}.`}),RecursiveExpandedValue:()=>({code:`RecursiveExpandedValue`,message:`Your input values contain a recursive expanded valuetype `})};var rD=class extends Error{},iD=class extends rD{codes;appErrors;constructor(e){super(e.map(e=>e.message).join(`, `)||`Unknown`),this.errors=e,this.codes=e.map(e=>e.code),this.appErrors=e}};const aD=`fields:merge@1`,oD=g(`merge_result`),sD=r.object({pipe_id:r.literal(aD),connector:Jl(),run_if:b(),config:r.object({merge_fields:iu({sectionKey:`general`,groupPath:`config.general`,path:`config.merge_fields`,label:`Fields`,info:`Provide references to input fields`,minItems:1}),output_fields:P(r.object({[oD.name]:D({fieldName:oD.name})}))})}),cD={"fields-merge-v1-pipe0":{credits:{default:0},allowManagedConnection:!0,provider:`pipe0`,mode:`always`}},lD=class extends B{pipeId=aD;payload;payloadSchema=sD;billableOperations=cD;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`fields-merge-v1-pipe0`)}getInputRequirement(){let e=this.payload.config.merge_fields.map(e=>e.field_name),t;return _d(...this.payload.config.merge_fields.map(n=>R({format:null,type:r=>{let i=Ld(r,e)[n.field_name],a=i?.type?i.type:`unknown`;if(a!==`unknown`){if(t&&t!==a)throw new iD([nD.InputValuesMustHaveSameType({pipeId:this.pipeId,fieldNames:e})]);t=a}return i?.type?i.type:`unknown`},label:``,description:``,name:n.field_name,resolvedName:n.field_name})))}getRawOutputFields(){return{[oD.name]:this.catalogOutput(oD,{resolveType:e=>{let t=Ld(e,this.payload.config.merge_fields.map(e=>e.field_name));return Object.values(t).find(e=>!!e.type)?.type||`string`}})}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},uD=sD,dD={pipeId:aD,inputFieldMode:`config`,outputFieldMode:`static`,basePipe:U(aD),label:`Merge fields`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Join one or more fields into one field. The final result will be the first defined field. A single-source merge pins a stable output name that additional sources can join later without consumers changing.`,tags:[V.FIELDS,V.LOGIC],keywords:[`combine`,`join`,`coalesce`,`fallback`,`concat`,`first defined`,`alias`],docPath:W(aD),defaultInputRequirement:null,billableOperations:cD,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:aD,connector:null,run_if:null,config:{merge_fields:[],output_fields:{merge_result:{alias:``,enabled:!0}}}}},fD=`formula:run@1`,pD=g(`formula_result`),mD=[`string`,`number`,`boolean`,`date`,`json`],hD={string:{type:`string`,format:`text`},number:{type:`number`,format:`decimal`},boolean:{type:`boolean`,format:null},date:{type:`string`,format:`date`},json:{type:`json`,format:`json_object`}},gD=r.object({pipe_id:r.literal(fD),run_if:b(),connector:Jl(),config:r.object({code:Cu({label:`Formula`,info:"Synchronous JavaScript body that must `return` a value. Mapped columns are available as `inputs.<column_name>`. Standard built-ins only (Math, String, Array, Date, RegExp, Number, Object, JSON) — no network, imports, or async.",path:`config.code`,groupPath:`config.general`,sectionKey:`general`,rows:8,minLength:1,maxLength:1e4,placeholder:`const days = inputs.primary_seniority === "c_suite" ? 90 : 270;
|
|
82
|
-
return new Date(Date.now() - days * 86400000).toISOString().slice(0, 10);`}),formula_inputs:
|
|
67
|
+
How do you...`]}},crustdata_post_list:{label:`Crustdata Post list`,type:`json`,format:`json_list_string`,description:`Rich JSON post list`,jsonMeta:{zodSchema:fr,exampleValue:pr}},role_finder_match:{label:`Role finder match`,type:`json`,format:`json_object`,description:`Result of a role finder operation`,jsonMeta:{zodSchema:qi,exampleValue:Ji}},post_text:{label:`Post text`,description:`Raw text content of a social media post`,format:`text`,type:`string`,jsonMeta:null},post_id:{label:`Post ID`,description:`Stable identifier of the post (its LinkedIn share URN)`,format:`text`,type:`string`,jsonMeta:null},amplemarket_person_match:{label:`Person match`,type:`json`,format:`json_object`,description:`Person match object as returned by Amplemarket`,jsonMeta:{zodSchema:en,exampleValue:tn}},amplemarket_company_match:{label:`Company match`,type:`json`,format:`json_object`,description:`Company match object as returned by Amplemarket`,jsonMeta:{zodSchema:Qt,exampleValue:$t}},companyenrich_matches:{label:`CompanyEnrich matches`,type:`json`,format:`json_object`,description:`CompanyEnrich response list.`,jsonMeta:{zodSchema:r.array(er),exampleValue:[tr]}},logo_url:{label:`Logo URL`,type:`string`,format:`text`,description:`Company or organization logo`,jsonMeta:null},logodev_describe_match:{label:`Company match`,type:`json`,format:`json_object`,description:`Get company logos & brand data`,jsonMeta:{exampleValue:ii,zodSchema:ri}},mobile_number:{label:`Mobile`,type:`string`,description:`Mobile telephone number of a person.`,jsonMeta:null,format:`phone`},company_social_url:{label:`Company Social URL`,type:`string`,description:`Social Media URL for a given company (e.g. LinkedIn profile URL).`,jsonMeta:null,format:`profile_url`},professional_profile:{label:`Professional profile (LinkedIn)`,type:`json`,description:`A standardized format for returning LinkedIn profile data.`,jsonMeta:{zodSchema:Gi,exampleValue:Ki},format:`json_object`},hubspot_contact_found:{label:`HubSpot contact found`,type:`boolean`,description:`Whether a HubSpot contact matched the email (a clean miss is not an error).`,jsonMeta:null,format:null},hubspot_contact_match:{order:90,label:`HubSpot contact`,type:`json`,format:`json_object`,description:`One HubSpot contact record: id, url, and the standard property set as flat keys; picked custom properties nest under custom_properties. Match-pipe output also carries matched_by.`,jsonMeta:{zodSchema:Tr,exampleValue:Er}},hubspot_companies_found_count:{label:`HubSpot companies found`,type:`number`,format:`int`,description:`Number of HubSpot companies matching the domain. Domain is HubSpot's dedupe key but not unique — multiple matches are normal.`,jsonMeta:null},hubspot_company_match:{order:90,label:`HubSpot company`,type:`json`,format:`json_object`,description:`One HubSpot company record: id, url, and the standard property set as flat keys; picked custom properties nest under custom_properties.`,jsonMeta:{zodSchema:Dr,exampleValue:Or}},hubspot_company_matches:{order:90,label:`HubSpot company matches`,type:`json`,format:`json_list`,description:`All HubSpot companies matching the domain, each with id, url, matched_by, and the selected properties.`,jsonMeta:{zodSchema:Nr,exampleValue:Pr}},hubspot_deals_found_count:{label:`HubSpot deals found`,type:`number`,format:`int`,description:`Number of HubSpot deals associated with the matched company or contact.`,jsonMeta:null},hubspot_deal_match:{order:90,label:`HubSpot deal`,type:`json`,format:`json_object`,description:`One HubSpot deal record: id, url, and the standard property set as flat keys; picked custom properties nest under custom_properties.`,jsonMeta:{zodSchema:kr,exampleValue:Ar}},hubspot_deal_matches:{order:90,label:`HubSpot deal matches`,type:`json`,format:`json_list`,description:`Matched HubSpot deals (sorted by close date, newest first), each with id, url, and the selected properties.`,jsonMeta:{zodSchema:Fr,exampleValue:Ir}},hubspot_object_id:{order:10,label:`HubSpot object ID`,type:`string`,description:`Record ID (hs_object_id) of the HubSpot record — the identifier to write back to it (object:update, object:associations).`,jsonMeta:null,format:`text`},hubspot_owner_id:{order:12,label:`HubSpot owner ID`,type:`string`,description:"ID of the HubSpot owner (user) — the value stored in `hubspot_owner_id` properties on contacts, companies, and deals.",jsonMeta:null,format:`text`},hubspot_owned_count:{order:50,label:`Owned records`,type:`number`,format:`int`,description:`Number of records of the selected object type owned by this HubSpot owner (only when ownership counts are enabled).`,jsonMeta:null},hubspot_owner_match:{order:90,label:`HubSpot owner`,type:`json`,format:`json_object`,description:`The HubSpot owner record: id, email, name, archived flag, and team memberships.`,jsonMeta:{zodSchema:jr,exampleValue:Mr}},hubspot_update_result:{label:`HubSpot update result`,type:`json`,format:`json_object`,description:`Result of the HubSpot update: id, url, object type, and updated property names.`,jsonMeta:{zodSchema:Lr,exampleValue:Rr}},hubspot_associated_count:{label:`HubSpot associations found`,type:`number`,format:`int`,description:`Number of associated HubSpot objects found for the source record.`,jsonMeta:null},hubspot_associated_objects:{order:90,label:`HubSpot associated objects`,type:`json`,format:`json_list`,description:`Associated HubSpot objects, each with id, url, association labels, and the selected properties under properties.`,jsonMeta:{zodSchema:zr,exampleValue:Br}},hubspot_activity_result:{label:`HubSpot activity result`,type:`json`,format:`json_object`,description:`Result of logging a HubSpot engagement: id, url, the engagement type, and the record it was associated to.`,jsonMeta:{zodSchema:Vr,exampleValue:Hr}},salesforce_record_id:{order:10,label:`Salesforce record ID`,type:`string`,description:`18-character ID of the Salesforce record — the identifier to write back to it (record:update, record:lookup). Every Salesforce surface emits this same column, so it chains regardless of source.`,jsonMeta:null,format:`text`},salesforce_owned_count:{order:50,label:`Owned records`,type:`number`,format:`int`,description:`Number of records of the selected object type owned by this Salesforce user (only when ownership counts are enabled).`,jsonMeta:null},salesforce_person_found:{label:`Salesforce person found`,type:`boolean`,description:`Whether the email matched a Salesforce Contact, Lead, or Person Account (a clean miss is not an error).`,jsonMeta:null,format:null},salesforce_accounts_found_count:{label:`Salesforce accounts found`,type:`number`,format:`int`,description:`Number of Salesforce accounts matching the domain. Accounts have no unique domain key — multiple matches are normal.`,jsonMeta:null},salesforce_opportunities_found_count:{label:`Salesforce opportunities found`,type:`number`,format:`int`,description:`Number of Salesforce opportunities reached via the matched account or contact role.`,jsonMeta:null},salesforce_record_found:{label:`Salesforce record found`,type:`boolean`,description:`Whether the record ID resolved to a live Salesforce record (deleted/missing is a clean miss, not an error).`,jsonMeta:null,format:null},salesforce_record_created:{label:`Salesforce record created`,type:`boolean`,description:`Whether the assert created a new record (true) or updated an existing one matched by the external ID (false).`,jsonMeta:null,format:null},salesforce_contact_match:{order:90,label:`Salesforce contact`,type:`json`,format:`json_object`,description:`One Salesforce contact record: id, url, and the standard field set as flat typed keys; picked custom fields nest under custom_properties.`,jsonMeta:{zodSchema:oa,exampleValue:sa}},salesforce_lead_match:{order:90,label:`Salesforce lead`,type:`json`,format:`json_object`,description:`One Salesforce lead record: id, url, and the standard field set as flat typed keys (including IsConverted/ConvertedContactId); picked custom fields nest under custom_properties.`,jsonMeta:{zodSchema:ca,exampleValue:la}},salesforce_account_match:{order:90,label:`Salesforce account`,type:`json`,format:`json_object`,description:`One Salesforce account record: id, url, and the standard field set as flat typed keys; picked custom fields nest under custom_properties.`,jsonMeta:{zodSchema:ua,exampleValue:da}},salesforce_account_matches:{order:90,label:`Salesforce account matches`,type:`json`,format:`json_list`,description:`All Salesforce accounts matching the domain (oldest first), each with id, url, matched_variant, and the selected fields.`,jsonMeta:{zodSchema:ya,exampleValue:ba}},salesforce_opportunity_match:{order:90,label:`Salesforce opportunity`,type:`json`,format:`json_object`,description:`One Salesforce opportunity record: id, url, and the standard field set as flat typed keys (IsClosed/IsWon carry the org-invariant status); picked custom fields nest under custom_properties.`,jsonMeta:{zodSchema:fa,exampleValue:pa}},salesforce_opportunity_matches:{order:90,label:`Salesforce opportunity matches`,type:`json`,format:`json_list`,description:`Matched Salesforce opportunities (newest close date first), each with id, url, contact_roles edge metadata, and the selected fields.`,jsonMeta:{zodSchema:xa,exampleValue:Sa}},salesforce_user_match:{order:90,label:`Salesforce user`,type:`json`,format:`json_object`,description:`One Salesforce user record: id, url, and the standard field set as flat typed keys; picked custom fields nest under custom_properties.`,jsonMeta:{zodSchema:ma,exampleValue:ha}},salesforce_person_match:{order:90,label:`Salesforce person`,type:`json`,format:`json_object`,description:`The matched Salesforce person across Contact, Lead, and Person Account shapes: object_type says which; keys foreign to the matched shape are null. Carries matched_by and is_converted_redirect.`,jsonMeta:{zodSchema:_a,exampleValue:va}},salesforce_record_match:{order:90,label:`Salesforce record`,type:`json`,format:`json_object`,description:`A generic Salesforce record (any object): id, url, object_type, and ALL fields visible to the connected user nested under record.`,jsonMeta:{zodSchema:Ca,exampleValue:wa}},salesforce_update_result:{label:`Salesforce update result`,type:`json`,format:`json_object`,description:`Result of the Salesforce update: id, url, object type, updated field names, and the fresh post-write record (formulas/triggers may rewrite values after save).`,jsonMeta:{zodSchema:Ta,exampleValue:Ea}},salesforce_activities_found_count:{label:`Salesforce activities found`,type:`number`,format:`int`,description:`Total tasks and events on the record's timeline matching the filters — the true total before the display limit.`,jsonMeta:null},salesforce_last_activity_date:{label:`Salesforce last activity date`,type:`string`,format:`date`,description:`Most recent activity date across the record's tasks and events (null when the timeline is empty) — chain a run_if on it to gate stale records.`,jsonMeta:null},salesforce_activities:{order:90,label:`Salesforce activities`,type:`json`,format:`json_list`,description:`The record's activity timeline (tasks and events, newest first), each with id, url, object_type, subject, status, activity_date, subtype, who_id/what_id anchors, and picked custom fields under custom_properties.`,jsonMeta:{zodSchema:Oa,exampleValue:ka}},salesforce_activity_result:{label:`Salesforce activity result`,type:`json`,format:`json_object`,description:`Result of logging a Salesforce activity: id, url, subject, subtype, the who_id/what_id anchors, and created (false only when an idempotency key matched an existing record).`,jsonMeta:{zodSchema:Aa,exampleValue:ja}},professional_profile_url:{label:`LinkedIn Profile URL`,type:`string`,format:`profile_url`,description:`A person's LinkedIn profile URL.`,jsonMeta:null},attio_record_id:{order:10,label:`Attio record ID`,type:`string`,description:`Record ID of the Attio record — the identifier to write back to it (record:lookup, record:update).`,jsonMeta:null,format:`text`},attio_entry_id:{order:11,label:`Attio entry ID`,type:`string`,description:`ID of the Attio list entry (a record can sit in a list more than once; the entry carries the list-level attributes such as stage).`,jsonMeta:null,format:`text`},attio_person_found:{label:`Attio person found`,type:`boolean`,description:`Whether an Attio person matched the email (a clean miss is not an error).`,jsonMeta:null,format:null},attio_person_match:{order:90,label:`Attio person`,type:`json`,format:`json_object`,description:`One Attio person record: id, url, and the standard attribute set as flat keys; picked custom attributes nest under custom_properties. Match-pipe output also carries matched_by.`,jsonMeta:{zodSchema:mn,exampleValue:hn}},attio_companies_found_count:{label:`Attio companies found`,type:`number`,format:`int`,description:`Number of Attio companies matching the domain. Exact domain values are unique (≤1); root-domain matching can legitimately return several subdomain records.`,jsonMeta:null},attio_company_match:{order:90,label:`Attio company`,type:`json`,format:`json_object`,description:`One Attio company record: id, url, and the standard attribute set as flat keys; picked custom attributes nest under custom_properties.`,jsonMeta:{zodSchema:gn,exampleValue:_n}},attio_company_matches:{order:90,label:`Attio company matches`,type:`json`,format:`json_list`,description:`All Attio companies matching the domain, each with id, url, matched_on, and the selected attributes.`,jsonMeta:{zodSchema:vn,exampleValue:yn}},attio_deals_found_count:{label:`Attio deals found`,type:`number`,format:`int`,description:`Number of Attio deals associated with the matched company or person.`,jsonMeta:null},attio_deal_match:{order:90,label:`Attio deal`,type:`json`,format:`json_object`,description:`One Attio deal record: id, url, and the standard attribute set as flat keys; picked custom attributes nest under custom_properties. Stage titles are workspace-defined.`,jsonMeta:{zodSchema:bn,exampleValue:xn}},attio_deal_matches:{order:90,label:`Attio deal matches`,type:`json`,format:`json_list`,description:`Matched Attio deals (newest first), each with id, url, and the selected attributes.`,jsonMeta:{zodSchema:Sn,exampleValue:Cn}},attio_entry_match:{order:90,label:`Attio list entry`,type:`json`,format:`json_object`,description:`One Attio list entry: entry id, the parent record's url and id, entry-level attribute values under entry_values, and picked parent attributes under custom_properties.`,jsonMeta:{zodSchema:En,exampleValue:Dn}},attio_record_found:{label:`Attio record found`,type:`boolean`,description:`Whether an Attio record was found (a clean miss is not an error).`,jsonMeta:null,format:null},attio_record_match:{order:90,label:`Attio record`,type:`json`,format:`json_object`,description:`One Attio record of any object (custom objects included): id, url, object, attribute values under values, and picked attributes under custom_properties.`,jsonMeta:{zodSchema:wn,exampleValue:Tn}},attio_update_result:{label:`Attio update result`,type:`json`,format:`json_object`,description:`Result of the Attio update: id, url, object, and updated attribute slugs.`,jsonMeta:{zodSchema:An,exampleValue:jn}},attio_activities_found_count:{label:`Attio activities found`,type:`number`,format:`int`,description:`Number of Attio activities (notes, meetings, tasks) linked to the record — the true total before the display cap.`,jsonMeta:null},attio_last_activity_date:{label:`Attio last activity date`,type:`string`,format:`text`,description:`Timestamp of the most recent Attio activity linked to the record — the chainable staleness gate (null when there is none).`,jsonMeta:null},attio_activities:{order:90,label:`Attio activities`,type:`json`,format:`json_list`,description:`Per-record activity timeline merged from Attio notes, meetings, and tasks (newest first): each item carries id, type, title, content, occurred_at, url, and type-specific fields.`,jsonMeta:{zodSchema:rn,exampleValue:an}},attio_workspace_member_id:{order:10,label:`Attio workspace member ID`,type:`string`,description:`Workspace member ID of the Attio user — matches actor-reference attributes (e.g. a deal's owner) on other Attio records.`,jsonMeta:null,format:`text`},attio_workspace_member_match:{order:90,label:`Attio workspace member`,type:`json`,format:`json_object`,description:`One Attio workspace member: id, email, name, access level, and avatar URL.`,jsonMeta:{zodSchema:On,exampleValue:kn}}},Eo={is_claim_successful:{},bucket_counter:{},found_in_bucket:{},bucket_event_count:{},bucket_event_last_at:{},signal_list:{getStaticWidgets(e){return Array.isArray(e)?{display_value:{label:`${e.length} ${e.length===1?`signal`:`signals`}`}}:{}}},signal_match:{getStaticWidgets(e){let t=e&&typeof e==`object`&&`signal_label`in e&&typeof e.signal_label==`string`?e.signal_label:null;return t?{display_value:{label:t}}:{}}},signal_count:{},signal_window_start:{},formula_result:{},company_description:{},cleaned_company_name:{},company_industry:{},icypeas_person_match:{getStaticWidgets(e){if(!e)return{};let t=e;return{display_value:{label:`${t.firstname} ${t.lastname} profile`}}}},icypeas_company_match:{getStaticWidgets(e){return e?{display_value:{label:`${e.name} profile`}}:{}}},person_profile_match:{},primary_job_title:{getStaticWidgets(e){return typeof e==`string`?{emoji:{value:Bi(e)}}:{}}},primary_seniority:{},primary_company_domain:{},company_region:{getStaticWidgets:e=>{let t={},n=So(e);return n&&(t.location_indicator={emoji:n}),t}},location_hint:{},estimated_revenue:{},founded_year:{},technology_list:{},spending_trend:{getStaticWidgets(e){let t=e;return{display_value:{label:`${t>3?`🔼🔼🔼`:t>1?`🔼🔼`:t>0?`🔼`:t<-3?`🔽🔽🔽`:t<-1?`🔽🔽`:t<0?`🔽`:``} ${Math.round(t*100)}%`}}}},technology_match_builtwith:{getStaticWidgets(e){return{display_value:{label:`Technology profile`}}}},number_of_social_followers:{},email:{},personal_email:{},alternate_personal_emails:{},company_news_summary:{},work_email:{},headcount:{},company_website_url:{},company_domain:{getStaticWidgets(e){return typeof e==`string`?{entity_logo:{entity:e,image_url:Ut(e)}}:{}}},company_name:{},first_name:{},addressee_name:{},address_line_1:{},address_line_2:{},job_title:{getStaticWidgets(e){return typeof e==`string`?{emoji:{value:Bi(e)}}:{}}},job_description:{},profile_headline:{},address_city:{},address_country:{},address_state:{},zip_code:{},last_name:{},is_work_email:{},name:{getStaticWidgets(e){return typeof e==`string`?{avatar:{image_url:``,name:e}}:{}}},ip_address:{},skills:{},avatar_url:{},string_input:{},domain:{},url_input:{},slugified:{},timestamp:{},http_response_status:{},http_response_body:{},http_response_headers:{},luma_id:{},registered_at:{},luma_event_guest_match:{getStaticWidgets(){return{display_value:{label:`Guest`}}}},google_calendar_event_id:{getStaticWidgets(e){return e?{entity_logo:{entity:`Google Calendar`,image_url:Ut(`calendar.google.com`)}}:{}}},event_title:{},attendee_emails:{},calendar_event_match:{getStaticWidgets(){return{display_value:{label:`Event`}}}},slack_user_id:{},slack_member_match:{getStaticWidgets(e){if(!e)return{};let t=e,n=t.member_real_name||t.member_display_name||t.member_handle;return n?{display_value:{label:n}}:{}}},estimated_salary:{},scrape_list_response:{},clado_person_match:{getStaticWidgets(e){return e?{display_value:{label:`${e.profile?.name||`Person`} profile`}}:{}}},clado_person_match_v2:{getStaticWidgets(e){return e?{display_value:{label:`${e.profile?.name||`Person`} profile`}}:{}}},company_social_url:{getStaticWidgets(e){let t=wo(e);return{display_value:t?{label:t}:void 0}}},crustdata_profile_match_score:{},is_email_valid:{},amplemarket_person_match:{getStaticWidgets(){return{display_value:{label:`Person match`}}}},amplemarket_company_match:{getStaticWidgets(){return{display_value:{label:`Company match`}}}},profile_url:{getStaticWidgets(e){let t=wo(e);return{display_value:t?{label:t}:void 0,icon:{key:`linkedin`}}}},company_profile_url:{getStaticWidgets(e){let t=wo(e);return{display_value:t?{label:t}:void 0,icon:{key:`linkedin`}}}},developer_profile_url:{},alternative_developer_profile_urls:{},profile_posts:{getStaticWidgets(){return{display_value:{label:`LinkedIn posts`}}}},profile:{getStaticWidgets(e){return e?{display_value:{label:`${e.name||`Person`} LinkedIn profile`}}:{}}},clado_person_profile:{getStaticWidgets(e){return e?{display_value:{label:`${e.profile?.name||`Person`} match`}}:{}}},email_subject:{},message:{},slack_message_success:{getStaticWidgets(e){return{display_value:{label:e?`✅ Sent`:`❌ Not sent`}}}},slack_direct_message_success:{getStaticWidgets(e){return{display_value:{label:e?`✅ Sent`:`❌ Not sent`}}}},resend_email_success:{getStaticWidgets(e){return{display_value:{label:e?`✅ Sent`:`❌ Not sent`}}}},email_body:{},mobile:{},landline:{},phone:{},funding_history:{},funding_total_usd:{},deal_name:{},deal_amount:{},leadmagic_competitor_list:{getStaticWidgets(e){return e?{display_value:{label:e.map(e=>e.company_name).slice(0,4).join(`, `)}}:{}}},leadmagic_acquisition_history:{getStaticWidgets(e){return e?{display_value:{label:e.map(e=>e.company_name).slice(0,4).join(`, `)}}:{}}},leadmagic_company_news_list:{getStaticWidgets(e){return e?{display_value:{label:`${e.length} news sources`}}:{}}},merge_result:{},website_markdown:{getStaticWidgets(e){return e?{display_value:{label:`📝 Markdown result`}}:{}}},urls:{},website_html:{},website_url:{},website_links:{},mapped_links:{},firecrawl_extract_result:{getStaticWidgets(){return{display_value:{label:`Extract result`}}}},parallel_extract_result:{getStaticWidgets(){return{display_value:{label:`Extract result`}}}},exa_match_evaluation:{getStaticWidgets(){return{display_value:{label:`Exa match`}}}},email_validation_status:{},million_validation_match:{getStaticWidgets(){return{display_value:{label:`Validation result`}}}},post_list_string:{getStaticWidgets(e){return{entity_logo:{entity:`LinkedIn`,image_url:Ht.linkedin}}}},crustdata_post_list:{getStaticWidgets(e){return{entity_logo:{entity:`LinkedIn`,image_url:Ht.linkedin}}}},crustdata_company_match:{},crustdata_company_match_v2:{},crustdata_company_identity_matches:{},crustdata_person_match:{},parallel_person_entity_match:{},parallel_company_entity_match:{},resend_contact_id:{},lemlist_lead_id:{},hubspot_contact_found:{},hubspot_contact_match:{},hubspot_companies_found_count:{},hubspot_company_match:{},hubspot_company_matches:{},hubspot_deals_found_count:{},hubspot_deal_match:{},hubspot_object_id:{getStaticWidgets(){return{entity_logo:{entity:`Hubspot`,image_url:Zt(`hubspot`).logoUrl}}}},hubspot_owner_id:{getStaticWidgets(){return{entity_logo:{entity:`Hubspot`,image_url:Zt(`hubspot`).logoUrl}}}},hubspot_owned_count:{},hubspot_owner_match:{},hubspot_deal_matches:{},hubspot_update_result:{},hubspot_associated_count:{},hubspot_associated_objects:{},hubspot_activity_result:{},salesforce_record_id:{getStaticWidgets(){return{entity_logo:{entity:`Salesforce`,image_url:Zt(`salesforce`).logoUrl}}}},salesforce_owned_count:{},salesforce_person_found:{},salesforce_accounts_found_count:{},salesforce_opportunities_found_count:{},salesforce_record_found:{},salesforce_record_created:{},salesforce_contact_match:{},salesforce_lead_match:{},salesforce_account_match:{},salesforce_account_matches:{},salesforce_opportunity_match:{},salesforce_opportunity_matches:{},salesforce_user_match:{},salesforce_person_match:{},salesforce_record_match:{},salesforce_update_result:{},salesforce_activities_found_count:{},salesforce_last_activity_date:{},salesforce_activities:{},salesforce_activity_result:{},lemlist_enrollment_result:{getStaticWidgets(e){return e?{display_value:{label:`Enrolled`}}:{}}},amplemarket_sequence_id:{},sheet_record_id:{},sheet_record_ids:{},sheet_rows_found_count:{},sheet_deleted_count:{},sheet_found_rows:{getStaticWidgets(e){if(!e)return{};let t=e;return{display_value:{label:`${t.length} row${t.length===1?``:`s`}`}}}},sheet_found_row_ids:{},db_rows_found_count:{},db_found_rows:{getStaticWidgets(e){if(!e)return{};let t=e;return{display_value:{label:`${t.length} row${t.length===1?``:`s`}`}}}},companyenrich_match:{},companyenrich_matches:{},input_objects:{},role_finder_match:{},sheet:{},logodev_describe_match:{getStaticWidgets(){return{display_value:{label:`Match`}}}},logo_url:{getStaticWidgets(){return{display_value:{label:`Logo URL`}}}},post_match:{},post_text:{},post_id:{},mobile_number:{},created_sheet:{},professional_profile:{},professional_profile_url:{},crustdata_companyenrich_match:{},template_output:{},zerobounce_validation_match:{},zerobounce_validation_status:{getStaticWidgets(e){return{display_value:{label:e===`valid`?`✅ Valid`:e===`invalid`?`❌ Invalid`:e===`catch-all`?`⚾️ Catch All`:e===`abuse`?`⚠️ Abuse`:e===`do_not_mail`?`❌❌ Do not mail`:e===`spamtrap`?`❌❌❌ Spam Trap`:e}}}},gmail_email_success:{getStaticWidgets(e){return{display_value:{label:e?`✅ Sent`:`❌ Not sent`}}}},gmail_draft_id:{getStaticWidgets(e){return{display_value:{label:e?`✅ Draft created`:`❌ No draft`}}}},attio_record_id:{getStaticWidgets(){return{entity_logo:{entity:`Attio`,image_url:Zt(`attio`).logoUrl}}}},attio_entry_id:{getStaticWidgets(){return{entity_logo:{entity:`Attio`,image_url:Zt(`attio`).logoUrl}}}},attio_person_found:{},attio_person_match:{},attio_companies_found_count:{},attio_company_match:{},attio_company_matches:{},attio_deals_found_count:{},attio_deal_match:{},attio_deal_matches:{},attio_entry_match:{},attio_record_found:{},attio_record_match:{},attio_update_result:{},attio_activities:{},attio_activities_found_count:{},attio_last_activity_date:{},attio_workspace_member_id:{getStaticWidgets(){return{entity_logo:{entity:`Attio`,image_url:Zt(`attio`).logoUrl}}}},attio_workspace_member_match:{}};function g(e){return{...To[e],name:e}}function Do(e,t){if(Ao(e,t))return Eo[e]}function Oo(e){return e in To}function ko(e){return Oo(e)?To[e].order??null:null}function Ao(e,t){return e in To?To[e].format===t:!1}function jo(e,t,n){if(!t.added_by||t.added_by.ref===`input`||t.added_by.pipe_index==null)throw Error(`Tried to find output field info for field not generated by pipe: ${e}, added_by: ${t.added_by}`);let r=n.orderedPipeInstances[t.added_by.pipe_index];if(!r)throw Error(`Unable to find pipe instance at index ${t.added_by.pipe_index} for resolved field ${e}`);let i=Object.entries(r.getOutputFields()).find(([t,n])=>n.resolvedName===e);if(!i)throw Error(`Resolved pipe output field '${e}' not found for pipe ${t.added_by.ref}`);let[a,o]=i;return{fieldName:a,...o}}const Mo=r.enum(`company_description.cleaned_company_name.company_industry.company_region.location_hint.estimated_revenue.founded_year.technology_list.spending_trend.technology_match_builtwith.number_of_social_followers.email.personal_email.alternate_personal_emails.company_news_summary.work_email.headcount.company_website_url.company_domain.company_name.first_name.addressee_name.address_line_1.address_line_2.job_title.job_description.profile_headline.address_city.address_country.address_state.zip_code.last_name.is_work_email.companyenrich_match.companyenrich_matches.name.ip_address.skills.avatar_url.estimated_salary.is_email_valid.profile_url.developer_profile_url.alternative_developer_profile_urls.company_profile_url.profile_posts.clado_person_match.clado_person_match_v2.icypeas_person_match.icypeas_company_match.clado_person_profile.resend_email_success.email_body.email_subject.profile.mobile.landline.phone.message.slack_message_success.slack_direct_message_success.slack_user_id.slack_member_match.funding_history.funding_total_usd.deal_name.deal_amount.template_output.gmail_email_success.gmail_draft_id.zerobounce_validation_status.zerobounce_validation_match.leadmagic_competitor_list.leadmagic_acquisition_history.leadmagic_company_news_list.merge_result.mapped_links.website_markdown.website_html.website_url.urls.website_links.firecrawl_extract_result.parallel_extract_result.exa_match_evaluation.email_validation_status.million_validation_match.scrape_list_response.resend_contact_id.sheet_record_id.sheet_record_ids.sheet_rows_found_count.sheet_deleted_count.sheet_found_rows.sheet_found_row_ids.db_rows_found_count.db_found_rows.input_objects.role_finder_match.logodev_describe_match.logo_url.crustdata_company_match.crustdata_company_match_v2.crustdata_companyenrich_match.crustdata_company_identity_matches.crustdata_person_match.person_profile_match.primary_job_title.primary_seniority.primary_company_domain.parallel_person_entity_match.parallel_company_entity_match.post_list_string.crustdata_post_list.crustdata_profile_match_score.amplemarket_person_match.amplemarket_company_match.created_sheet.sheet.string_input.domain.url_input.slugified.timestamp.http_response_status.http_response_body.http_response_headers.luma_id.registered_at.luma_event_guest_match.google_calendar_event_id.event_title.attendee_emails.calendar_event_match.post_match.post_text.post_id.lemlist_lead_id.lemlist_enrollment_result.amplemarket_sequence_id.is_claim_successful.bucket_counter.found_in_bucket.bucket_event_count.bucket_event_last_at.signal_list.signal_match.signal_count.signal_window_start.formula_result.hubspot_contact_found.hubspot_contact_match.hubspot_companies_found_count.hubspot_company_match.hubspot_company_matches.hubspot_deals_found_count.hubspot_deal_match.hubspot_deal_matches.hubspot_owner_id.hubspot_owned_count.hubspot_owner_match.hubspot_object_id.hubspot_update_result.hubspot_associated_count.hubspot_associated_objects.hubspot_activity_result.salesforce_record_id.salesforce_owned_count.salesforce_person_found.salesforce_accounts_found_count.salesforce_opportunities_found_count.salesforce_record_found.salesforce_record_created.salesforce_contact_match.salesforce_lead_match.salesforce_account_match.salesforce_account_matches.salesforce_opportunity_match.salesforce_opportunity_matches.salesforce_user_match.salesforce_person_match.salesforce_record_match.salesforce_update_result.salesforce_activities.salesforce_activities_found_count.salesforce_last_activity_date.salesforce_activity_result.attio_record_id.attio_entry_id.attio_person_found.attio_person_match.attio_companies_found_count.attio_company_match.attio_company_matches.attio_deals_found_count.attio_deal_match.attio_deal_matches.attio_entry_match.attio_record_found.attio_record_match.attio_update_result.attio_activities.attio_activities_found_count.attio_last_activity_date.attio_workspace_member_id.attio_workspace_member_match.professional_profile_url.professional_profile.company_social_url.mobile_number`.split(`.`)),No=r.enum(`pipe0.findymail.crustdata.hunter.zerobounce.millionverifier.googlemaps.gemini.anthropic.leadmagic.mixrank.builtwith.perplexity.serper.icypeas.prospeo.clado.resend.slack.gmail.googlecalendar.firecrawl.exa.openai.companyenrich.logodev.amplemarket.parallel.luma.postgres.databricks.lemlist.hubspot.salesforce.attio`.split(`.`)),Po=r.enum([`production`,`sandbox`]),Fo=`prompt:run@1.agent:run@1.company:newssummary:website@1.company:newssummary:domain@1.company:techstack:builtwith@1.company:techstack:builtwith@2.company:websiteurl:email@1.company:domain:workemail@1.company:funding:leadmagic@1.company:funding:leadmagic@2.company:funding:waterfall@1.people:workemail:waterfall@1.person:workemail:waterfall@1.people:email:iswork@1.email:iswork@1.people:name:split@1.person:name:split@1.person:name:join@1.people:validate:email:zerobounce@1.people:email:validate:zerobounce@2.email:validate:zerobounce@1.people:mobilenumber:workemail:waterfall@1.company:overview@1.company:overview@2.company:overview@3.json:extract:multi@1.email:write@1.message:write@1.email:send:resend@1.email:send:gmail@1.email:draft:gmail@1.message:send:slack@1.message:send-direct:slack@1.template:fill@1.contact:create:resend@1.lead:enroll:lemlist@1.contact:match:hubspot@1.company:match:hubspot@1.deal:match:hubspot@1.object:update:hubspot@1.object:associations:hubspot@1.activity:log:hubspot@1.person:match:salesforce@1.account:match:salesforce@1.opportunity:match:salesforce@1.record:lookup:salesforce@1.record:update:salesforce@1.record:assert:salesforce@1.activities:find:salesforce@1.activity:log:salesforce@1.person:match:attio@1.company:match:attio@1.deal:match:attio@1.record:match:attio@1.record:lookup:attio@1.record:update:attio@1.activities:find:attio@1.lead:enroll:amplemarket@1.people:match:role:waterfall@1.person:match:role:waterfall@1.person:identity:amplemarket@1.company:identity@2.company:identity@3.company:identity:crustdata@1.person:match:amplemarket@1.people:phone:profile:waterfall@1.person:mobile:profileurl:waterfall@1.people:personalemail:profile:waterfall@1.person:personalemail:profileurl:waterfall@1.people:profile:waterfall@1.person:profile:waterfall@1.person:profile:waterfall@2.people:profileurl:email:waterfall@1.person:profileurl:email:waterfall@1.person:profileurl:name@1.people:email:validate:zerobounce@1.person:email:validate:millionverifier@1.people:phone:workemail:waterfall@1.person:mobile:workemail:waterfall@1.fields:merge@1.field:slugify@1.field:domainify@1.field:timestamp@1.formula:run@1.signals:personprofilematch@1.website:scrape:firecrawl@1.website:scrapelist:firecrawl@1.website:extract:firecrawl@1.website:extract:parallel@1.website:maplinks:firecrawl@1.row:append:sheet@1.row:expandappend:sheet@1.row:roundrobin:sheet@1.bucket:claim@1.bucket:count@1.bucket:check@1.bucket:countif@1.rows:find:sheet@1.rows:delete:sheet@1.rows:find:postgres@1.rows:find:databricks@1.company:lookalikes:companyenrich@1.company:lookalikes:companyenrich@2.company:match:logodev@1.company:match:logodev@2.person:posts:content:crustdata@1.company:match:crustdata@1.company:match:crustdata@2.people:profile:workemail:crustdata@1.person:profile:workemail:crustdata@1.people:workemail:profileurl:waterfall@1.person:workemail:profileurl:waterfall@1.people:identity:email:waterfall@1.person:identity:email:waterfall@1.person:identity:email:waterfall@2.person:devprofileurl:profileurl:waterfall@1.http:request@1.company:identity@1.people:professionalprofile:waterfall@1.people:professionalprofileurl:name@1.people:professionalprofileurl:email:waterfall@1.people:mobilenumber:professionalprofile:waterfall@1`.split(`.`),Io=r.enum(Fo),Lo=[`string`,`number`,`boolean`,`json`,`unknown`],Ro=r.enum(Lo),zo=r.union([r.number(),r.string()]),Bo=r.union([r.literal(`completed`),r.literal(`failed`),r.literal(`pending`),r.literal(`queued`),r.literal(`processing`),r.literal(`no_result`),r.literal(`skipped`)]),Vo=r.union([r.string().min(1),r.number(),r.boolean(),r.null(),r.record(r.string(),r.unknown()),r.array(r.unknown())]),Ho=r.object({example_value:r.any().nullable(),schema:r.any().nullable()}),Uo=r.object({type:r.literal(`static`).optional()}),Wo=Uo.extend({image_url:r.url().describe(`URL to the provider's logo image.`),entity:r.string().describe(`The name of the entity.`)}),Go=Uo.extend({emoji:r.string().describe(`Country flag emoji.`)}),Ko=Uo.extend({image_url:r.url().describe(`URL to the provider's logo image.`),name:r.string().describe(`The name of the avatar owner.`)}),qo=Uo.extend({attempted_providers:r.array(r.object({provider:No})),available_providers:r.array(No),successful_provider:No.optional()}),Jo=r.enum([`linkedin`,`job`]),Yo=Uo.extend({key:Jo}).optional(),Xo=Uo.extend({result_status:r.enum([`completed`,`failed`])}).optional(),Zo=Uo.extend({list:r.array(r.object({source:r.string(),description:r.string().optional(),url:r.string()}))}).optional(),Qo=Uo.extend({numeric:r.int().min(1).max(5)}).optional(),$o=Uo.extend({value:r.string().min(1)}).optional(),es=r.object({display_value:Uo.extend({label:r.string().optional()}),entity_logo:Wo.optional(),location_indicator:Go.optional(),avatar:Ko.optional(),waterfall:qo.optional(),icon:Yo,action_summary:Xo,sources:Zo,confidence:Qo,emoji:$o}).partial().describe(`A map of widgets associated with this field for UI display, keyed by widget type.`),ts=r.object({code:r.string(),message:r.string(),path:r.string().optional()}),ns=r.object({code:r.string(),summary:r.string(),message:r.string()}),rs=[`json_object`,`json_list`,`json_list_string`,`url`,`website_url`,`profile_url`,`email`,`datetime`,`currency`,`date`,`phone`,`markdown`,`text`,`int`,`decimal`,`address_line_1`,`zip_code`,`percent`],is=r.enum(rs);is.nullable();const as=r.object({type:Ro,label:r.string().nullable().optional(),format:is.nullable().optional(),json_metadata:Ho.nullable().optional(),order:r.number().nullable().optional()}),os=r.record(r.string(),as),ss=r.strictObject({order:r.number().int().gte(-1e9).lte(1e9).nullable()}),cs=r.enum([...Fo,`input`]).nullable(),ls=r.enum([...Fo,`input`,`system`]).nullable(),us=r.object({ref:cs,config_hash:r.string().nullable()}),ds=r.object({ref:ls,environment:Po.nullable(),config_hash:r.string().nullable(),input_hash:r.string().nullable()}),fs=r.object({value:Vo,status:Bo,type:Ro,reason:ns.nullable(),claimed_by:us,resolved_by:ds.nullable(),widgets:es.optional(),format:is.nullable()}),ps=r.object({value:Vo,status:Bo,reason:ns.nullable().optional(),type:Ro.optional(),format:is.nullable().optional(),claimed_by:us.optional(),resolved_by:ds.nullable().optional(),widgets:es.optional()}),ms=r.record(r.string(),r.union([Vo,ps])).openapi(`PipesInput`),hs=r.object({id:zo,fields:r.record(zo,fs)}),gs=r.object({type:r.literal(`catalog`),fieldName:r.string().min(1)}),_s=r.object({type:Ro,label:r.string(),added_by:r.object({ref:r.union([Io,r.literal(`input`)]),config_hash:r.string().nullable(),pipe_index:r.number().nullable()}),format:is.nullable(),is_primary_output:r.boolean(),order:r.number().nullable().optional()}),vs=r.record(r.string(),_s),ys=r.object({field_name:r.string().min(1),extractions:r.array(r.object({path:r.string().min(1),output_field:r.object({name:r.string().min(1),format:is.nullable().default(null),label:r.string().optional(),type:Ro})})).min(1).check(e=>{let t=new Set;Object.values(e.value).forEach(n=>{t.has(n.output_field.name)?e.issues.push({code:`custom`,message:`Output field names must be unique. The name ${n.output_field.name} exists more than once in your config.`,input:e.value}):t.add(n.output_field.name)})})}),bs=r.enum([`eq`,`neq`,`gt`,`gte`,`lt`,`lte`,`contains`,`matches`,`older_than_days`,`within_last_days`]),xs={eq:`equals`,neq:`not equals`,gt:`greater than`,gte:`greater than or equal`,lt:`less than`,lte:`less than or equal`,contains:`contains`,matches:`matches regex`,older_than_days:`older than (days)`,within_last_days:`within last (days)`},Ss=[`eq`,`neq`,`gt`,`gte`,`lt`,`lte`,`contains`,`matches`,`older_than_days`,`within_last_days`],Cs=[`eq`,`neq`],ws=r.object({type:r.literal(`vault`),connection:r.string().refine(e=>{let t=e.split(`_`)[0];return t!=null&&No.safeParse(t).success},{message:`Invalid vault connection string: expected the full provider-prefixed value (e.g. "slack_my-workspace") where the segment before the first "_" is a known provider name. Copy the string exactly as the vault lists it — never strip the prefix.`})}),Ts=r.object({strategy:r.enum([`first`]).default(`first`),connections:r.array(ws)}).nullable().optional(),Es=r.object({strategy:r.enum([`first`]).default(`first`),connections:r.array(ws).min(1,{message:`Provide your own credentials to use this object.`})},{error:`Provide your own credentials to use this object.`}),Ds=r.object({strategy:r.enum([`first`]).default(`first`),connections:r.array(r.object({type:r.literal(`vault`),connection:r.string()})).max(0,{message:`This pipe does not support custom connectors.`})}).optional().nullable(),Os=r.enum(Ss),ks=r.enum(Cs),As=r.enum([`failed`,`no_result`,`completed`,`skipped`]),js=r.object({property:r.literal(`value`).describe(`Compare the actual field value. Use operators: eq, neq, gt, gte, lt, lte, contains, matches, older_than_days, within_last_days.`),field_name:r.string().min(1,{message:`Provide a target field for the condition.`}).describe(`Name of a field from input data or produced by an earlier pipe in the workflow.`),operator:Os.describe(`Comparison operator: "eq", "neq", "gt", "gte", "lt", "lte", "contains", "matches" (regex), "older_than_days" / "within_last_days" (relative to now, evaluated at run time — for date/datetime fields).`),value:r.union([r.number(),r.string(),r.boolean(),r.null()]).describe(`The value to compare the field against. Must be a primitive (string, number, boolean, or null). For older_than_days/within_last_days it is the number of days.`).check(e=>{(e.value===void 0||e.value===``)&&e.issues.push({code:`custom`,input:e.value,message:`Provide a value to compare against.`}),typeof e.value==`object`&&e.value!==null&&e.issues.push({code:`custom`,input:e.value,message:`Conditions can only be defined on primitive fields. To apply a condition on a JSON value, expand it into an object first.`})})}),Ms=r.object({property:r.literal(`status`).describe(`Compare the field resolution status instead of its value. Use operators: eq, neq.`),field_name:r.string().min(1).describe(`Name of a field from input data or produced by an earlier pipe in the workflow.`),operator:ks.describe(`Status comparison operator: "eq" or "neq".`),value:As.describe(`Field status to compare against: "completed", "no_result", "failed", or "skipped".`)}),Ns=r.object({logic:r.enum([`and`,`or`]).describe(`"and" = all conditions must match. "or" = any condition matches.`),conditions:r.array(r.discriminatedUnion(`property`,[js,Ms])).min(1).describe(`Array of conditions to evaluate. Each condition checks either a field value or its resolution status.`)}).describe(`Condition block. All conditions are combined with the chosen logic (and/or).`),Ps=r.object({logic:r.enum([`and`,`or`]).describe(`"and" = all conditions must match. "or" = any condition matches.`),conditions:r.array(js).min(1).describe(`Array of value conditions to evaluate.`)}).describe(`Condition block. All conditions are combined with the chosen logic (and/or).`),Fs=r.object({action:r.enum([`run`]).default(`run`).describe(`What to do when conditions match. Defaults to "run" (run the pipe only on matching records). Reserved for future extension.`),when:Ns}).describe(`Run-if gate for a pipe. When set, the pipe only runs on records matching the conditions. Example: { "when": { "logic": "and", "conditions": [{ "property": "status", "field_name": "work_email", "operator": "neq", "value": "no_result" }] } }`),Is=[`if`,`elsif`,`else`,`endif`,`unless`,`endunless`,`for`,`endfor`,`break`,`continue`,`output`],Ls=[`json`,`escape`,`escape_once`,`default`,`upcase`,`downcase`,`size`,`join`,`first`,`last`,`replace`,`truncate`,`strip`,`newline_to_br`,`url_encode`],Rs=/^[A-Z][A-Z0-9_]*$/,zs=/^[A-Z][A-Z0-9_]*$/,Bs=/^[a-zA-Z_][a-zA-Z0-9_]*$/,Vs=new Set(Is),Hs=new Set(Ls),Us=e=>`{${e}}`;var Ws=class extends u{constructor(e){super(),this.values=e}liquidMethodMissing(e){let t=String(e);if(!Rs.test(t))throw Error(`Secret key "${t}" must be uppercase letters, digits, and underscores (e.g. SECRETS.API_KEY).`);if(!(t in this.values))throw Error(`Missing secret: SECRETS.${t}`);return this.values[t]}},Gs=class extends u{constructor(e){super(),this.values=e}liquidMethodMissing(e){let t=String(e);if(!zs.test(t))throw Error(`Constant key "${t}" must be uppercase letters, digits, and underscores (e.g. CONSTANTS.PROMO).`);if(!(t in this.values))throw Error(`Missing constant: CONSTANTS.${t}`);return this.values[t]}};function Ks(e){let t=e.trim();if(!t)throw Error(`Empty {% output %} tag — expected at least a name (e.g. {% output rec, type: "string", description: "..." %}).`);let n=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\s*(?:,|$)/);if(!n||!n[1])throw Error(`Invalid {% output %} tag — expected a name as the first argument, got: ${t}`);let r=n[1];if(!Bs.test(r))throw Error(`Invalid {% output %} tag name "${r}" — must start with a letter or underscore and contain only letters, digits, and underscores.`);let i=t.slice(n[0].length).trim(),a={},o=/([a-zA-Z_][a-zA-Z0-9_]*)\s*:\s*(?:"((?:\\.|[^"\\])*)"|'((?:\\.|[^'\\])*)'|(true|false))\s*(?:,|$)/g,s=0,c;for(;(c=o.exec(i))!==null;){s=c.index+c[0].length;let e=c[1],t=c[2]??c[3]??c[4];c[4]===void 0?a[e]=t:a[e]=t===`true`}if(i&&s<i.length)throw Error(`Invalid {% output %} tag — could not parse arguments after "${i.slice(s)}". Expected key: "value" pairs.`);let l=a.type;if(typeof l!=`string`||!l)throw Error(`{% output ${r} %} tag is missing required "type" argument (e.g. type: "string").`);let u=a.description;if(typeof u!=`string`||!u)throw Error(`{% output ${r} %} tag is missing required "description" argument (e.g. description: "What this means.").`);return{name:r,type:l,description:u,required:typeof a.required==`boolean`?a.required:!0,format:typeof a.format==`string`?a.format:null,schemaRef:typeof a.schema==`string`?a.schema:null}}function qs(){let e=new d({strictVariables:!1,strictFilters:!0,jsTruthy:!0,greedy:!1,catchAllErrors:!1,ownPropertyOnly:!0,outputEscape:(e=>typeof e==`object`&&e&&!(e instanceof u)?JSON.stringify(e):e)});e.registerTag(`output`,{parse(e,t){let n=Ks(e.args);this.outputDecl=n},render(e,t){let n=this.outputDecl;if(!(e.globals&&e.globals.__outputAllowed))throw Error(`{% output %} is not allowed in this template (referenced output "${n.name}").`);t.write(Us(n.name))}});for(let t of Object.keys(e.tags))Vs.has(t)||delete e.tags[t];for(let t of Object.keys(e.filters))Hs.has(t)||delete e.filters[t];return e}let Js=null;function Ys(){return Js||=qs(),Js}function Xs(e){let t={};for(let[n,r]of Object.entries(e.inputs??{}))t[n]=typeof r==`string`?r.trim():r;return t.SECRETS=new Ws(e.secrets??{}),t.CONSTANTS=new Gs(e.constants??{}),t}async function Zs(e,t,n={}){let r=Ys(),i=n.renderLimitMs??250,a=Xs(t),o={globals:{__outputAllowed:n.outputAllowed===!0},renderLimit:i},s=await Promise.race([r.parseAndRender(e,a,o),new Promise((e,t)=>setTimeout(()=>t(Error(`Liquid render exceeded ${i}ms.`)),i))]);return String(s)}function Qs(e,t,n={}){let r=Ys(),i=n.renderLimitMs??250,a=Xs(t),o=r.parseAndRenderSync(e,a,{globals:{__outputAllowed:n.outputAllowed===!0},renderLimit:i});return String(o)}function $s(e){return Ys().parse(e)}function ec(e){let t=Ys().parse(e),n={scopeStack:[],guardStack:[],inputs:new Map,secrets:new Set,constants:new Set,outputs:[],forDepth:0};tc(t,n);let r={};for(let[e,t]of n.inputs)r[e]={required:t.unguardedRefs>0};return{inputs:r,secrets:[...n.secrets],constants:[...n.constants],outputs:n.outputs}}function tc(e,t){for(let n of e)nc(n,t)}function nc(e,t){let n=e;if(n.value&&typeof n.value==`object`&&`filters`in n.value&&`initial`in n.value){sc(n.value,t,!1);return}if(typeof n.name==`string`){rc(n,t);return}}function rc(e,t){switch(e.name){case`for`:ic(e,t);return;case`if`:case`unless`:ac(e,t);return;case`output`:oc(e,t);return;case`break`:case`continue`:return;default:throw Error(`Unhandled liquid tag in analyzer: ${e.name}`)}}function ic(e,t){if(t.forDepth+=1,t.forDepth>3)throw Error(`Liquid template exceeds maximum nested {% for %} depth of 3.`);e.collection!==void 0&&e.collection!==null&&cc(e.collection,t,!1);let n=typeof e.variable==`string`?e.variable:null;n&&t.scopeStack.push(n),tc(Array.isArray(e.templates)?e.templates:[],t),n&&t.scopeStack.pop(),tc(Array.isArray(e.elseTemplates)?e.elseTemplates:[],t),--t.forDepth}function ac(e,t){let n=Array.isArray(e.branches)?e.branches:[];e.name;for(let e=0;e<n.length;e++){let r=n[e],i=r.value,a=null;e===0&&i&&typeof i==`object`&&(a=dc(i.initial)),a&&t.guardStack.push(a),i&&typeof i==`object`&&sc(i,t,!1),tc(r.templates,t),a&&t.guardStack.pop()}tc(Array.isArray(e.elseTemplates)?e.elseTemplates:[],t)}function oc(e,t){let n=e.outputDecl;if(!n){let t=e.token?.args;typeof t==`string`&&(n=Ks(t))}if(!n)throw Error(`Internal: {% output %} tag missing parsed declaration.`);t.outputs.push({name:n.name,type:n.type,description:n.description,required:n.required,format:n.format,schemaRef:n.schemaRef??void 0})}function sc(e,t,n){let r=e.filters.some(e=>e.name===`default`),i=n||r;for(let n of e.initial.postfix)fc(n)&&uc(n,t,i);for(let n of e.filters)for(let e of n.args)lc(e,t)}function cc(e,t,n){fc(e)&&uc(e,t,n)}function lc(e,t){if(Array.isArray(e)){let n=e[1];n&&cc(n,t,!1)}else cc(e,t,!1)}function uc(e,t,n){let r=e.props;if(r.length===0)return;let i=r[0];if(!i||!pc(i))return;let a=i.content;if(t.scopeStack.includes(a))return;if(a===`SECRETS`){let e=r[1];if(!e||!pc(e))throw Error(`Invalid SECRETS reference — expected SECRETS.KEY (got ${gc(r)}).`);let n=e.content;if(!Rs.test(n))throw Error(`Invalid SECRETS key "${n}" — must be uppercase letters, digits, and underscores (e.g. SECRETS.API_KEY).`);t.secrets.add(n);return}if(a===`CONSTANTS`){let e=r[1];if(!e||!pc(e))throw Error(`Invalid CONSTANTS reference — expected CONSTANTS.KEY (got ${gc(r)}).`);let n=e.content;if(!zs.test(n))throw Error(`Invalid CONSTANTS key "${n}" — must be uppercase letters, digits, and underscores (e.g. CONSTANTS.PROMO).`);t.constants.add(n);return}let o=n||t.guardStack.includes(a),s=t.inputs.get(a)??{unguardedRefs:0,guardedRefs:0};o?s.guardedRefs+=1:s.unguardedRefs+=1,t.inputs.set(a,s)}function dc(e){if(e.postfix.length===1){let t=e.postfix[0];if(t&&fc(t)&&t.props.length===1){let e=t.props[0];if(e&&pc(e))return e.content}}if(e.postfix.length===3){let[t,n,r]=e.postfix;if(t&&n&&r&&fc(t)&&t.props.length===1){let e=t.props[0];if(e&&pc(e)&&mc(n)&&hc(r,[`==`,`!=`]))return e.content}}return null}function fc(e){return e.kind===f.PropertyAccess}function pc(e){return!!e&&typeof e==`object`&&e.kind===f.Word}function mc(e){if(e.kind!==f.Literal)return!1;let t=e.literal;return t===`nil`||t===`null`}function hc(e,t){return e.kind===f.Operator?t.includes(e.operator):!1}function gc(e){let t=[];for(let n of e)n&&pc(n)?t.push(n.content):t.push(`?`);return t.join(`.`)}const _c=`default`;function vc(e){let t=e.split(`_`),n=t[0],r=t.slice(1).join(`_`);if(!n)throw Error(`connection string of invalid format`);try{return{provider:No.parse(n),id:r}}catch{throw Error(`Connection string ${e}: Failed to parse provider name.`)}}function yc(e){return`${e.provider}_${e.id}`}const bc=new p;function xc(e){return bc.validateSchema(e)}function Sc(e){let t=!1;return ee(e,{},e=>{e.type&&[`string`,`number`,`boolean`,`integer`,`null`].includes(e.type)&&(t=!0),e.type===`object`&&e.properties&&Object.keys(e.properties).length>0&&(t=!0),e.type===`array`&&e.items&&(t=!0)}),!t}function Cc(e){try{return JSON.parse(e)}catch{}return JSON.parse(Oc(e))}function wc(e){try{return Cc(e)}catch{return}}const Tc=/[A-Za-z_$]/,Ec=/[\w$]/,Dc=/\s/;function Oc(e){let t=``,n=0,r=e.length;for(;n<r;){let i=e[n];if(i===`"`||i===`'`){let a=i,o=``;for(n++;n<r&&e[n]!==a;){if(e[n]===`\\`){o+=`\\${e[n+1]??``}`,n+=2;continue}o+=e[n],n++}n++,t+=JSON.stringify(kc(o));continue}if(Tc.test(i)){let i=n;for(;i<r&&Ec.test(e[i]);)i++;let a=e.slice(n,i),o=i;for(;o<r&&Dc.test(e[o]);)o++;t+=e[o]===`:`?JSON.stringify(a):a,n=i;continue}if(i===`,`){let t=n+1;for(;t<r&&Dc.test(e[t]);)t++;if(e[t]===`}`||e[t]===`]`){n++;continue}}t+=i,n++}return t}function kc(e){let t=``;for(let n=0;n<e.length;n++){if(e[n]!==`\\`){t+=e[n];continue}let r=e[++n];switch(r){case`n`:t+=`
|
|
68
|
+
`;break;case`t`:t+=` `;break;case`r`:t+=`\r`;break;case`b`:t+=`\b`;break;case`f`:t+=`\f`;break;case`v`:t+=`\v`;break;case`0`:t+=`\0`;break;case`u`:{let r=e.slice(n+1,n+5);/^[0-9a-fA-F]{4}$/.test(r)?(t+=String.fromCharCode(Number.parseInt(r,16)),n+=4):t+=`u`;break}default:t+=r??``;break}}return t}const _=(e,t=`Add a ${e} connection to enable this field`)=>n=>(n.connector?.connections??[]).some(t=>t?.connection?.startsWith(`${e}_`))?{disabled:!1}:{disabled:!0,message:t},Ac=(e,t)=>n=>{let r=e(n);return r!=null&&r!==``?{disabled:!1}:{disabled:!0,message:t}},jc=(...e)=>t=>{for(let n of e){let e=n(t);if(e.disabled)return e}return{disabled:!1}},Mc=(...e)=>t=>{let n={disabled:!0,message:`No condition matched`};for(let r of e){let e=r(t);if(!e.disabled)return e;n=e}return n},Nc=[`google-low`,`openai-high`,`openai-medium`,`anthropic-high`,`anthropic-low`],Pc={"google-low":{label:`Gemini 3.5 Flash`,provider:`gemini`,rateLimitOperation:`gemini_35_flash`,rateLimitRatio:1,allowManagedConnection:!0,billingMode:`always`},"openai-high":{label:`GPT 5.6 Sol`,provider:`openai`,rateLimitOperation:`openai_gpt-5`,rateLimitRatio:1,allowManagedConnection:!0,billingMode:`always`},"openai-medium":{label:`GPT 5.6 Terra`,provider:`openai`,rateLimitOperation:`openai_gpt-5-6-terra`,rateLimitRatio:1,allowManagedConnection:!0,billingMode:`always`},"anthropic-high":{label:`Claude Opus 4.8`,provider:`anthropic`,rateLimitOperation:`anthropic_opus`,rateLimitRatio:1,allowManagedConnection:!0,billingMode:`always`},"anthropic-low":{label:`Claude Sonnet 5`,provider:`anthropic`,rateLimitOperation:`anthropic_sonnet`,rateLimitRatio:1,allowManagedConnection:!0,billingMode:`always`}},Fc=.03,Ic=.3,Lc=100,Rc=100,zc={"google-low":{inputPer1M:1.5,outputPer1M:9},"openai-high":{inputPer1M:5,outputPer1M:30},"openai-medium":{inputPer1M:2.5,outputPer1M:15},"anthropic-high":{inputPer1M:5,outputPer1M:25},"anthropic-low":{inputPer1M:1,outputPer1M:5}},Bc=`openai-medium`,Vc=`openai-medium`,Hc=`openai-medium`;function Uc(e){let t=Pc[e];if(!t)throw Error(`Unknown AI model: ${e}`);return[t.provider]}function Wc(e){let t=Pc[e];if(!t)throw Error(`Unknown AI model: ${e}`);return[{provider:t.provider,rateLimitRatio:t.rateLimitRatio,rateLimitOperation:t.rateLimitOperation,allowManagedConnection:t.allowManagedConnection}]}function Gc(){let e=new Set;for(let t of Nc)e.add(Pc[t].provider);return[...e]}function Kc(e){return Object.keys(e).some(e=>Nc.some(t=>e.endsWith(`-in-${t}`)||e.endsWith(`-out-${t}`)))}function qc(e,t){return e/1e6*(1+Ic)/Fc*t}function Jc(e){let t=zc[e];if(!t)throw Error(`Unknown AI model: ${e}`);return{in:qc(t.inputPer1M,100),out:qc(t.outputPer1M,100)}}function Yc(e,t){let n=Math.round(Ic*100);return`Billed per 100 ${e} tokens at ${Number(t.toPrecision(4))} credits/block (managed keys include a ${n}% margin over provider cost).`}function Xc(e){let t={};for(let n of Nc){let r=Pc[n],i=Jc(n);t[`${e}-in-${n}`]={credits:{default:i.in},allowManagedConnection:!0,provider:r.provider,mode:r.billingMode,note:Yc(`input`,i.in)},t[`${e}-out-${n}`]={credits:{default:i.out},allowManagedConnection:!0,provider:r.provider,mode:r.billingMode,note:Yc(`output`,i.out)}}return t}function Zc(e,t){return{input:`${t}-in-${e}`,output:`${t}-out-${e}`}}function Qc(e,t){let n=Zc(t.model,t.prefix);return[{billableOperation:n.input,quantity:e.count*Math.ceil(t.inputTokens/100)},{billableOperation:n.output,quantity:e.count*Math.ceil(t.outputTokens/100)}]}var $c=class{carriedInput=0;carriedOutput=0;addUsage(e){this.carriedInput+=Math.max(0,e.inputTokens),this.carriedOutput+=Math.max(0,e.outputTokens)}drainBlocks(){let e=Math.floor(this.carriedInput/100),t=Math.floor(this.carriedOutput/100);return this.carriedInput-=e*100,this.carriedOutput-=t*100,{inBlocks:e,outBlocks:t}}flush(){let e=+(this.carriedInput>0),t=+(this.carriedOutput>0);return this.carriedInput=0,this.carriedOutput=0,{inBlocks:e,outBlocks:t}}};function el(e){if(!e?.requires)return;let t=[];e.requires.connection&&t.push(_(e.requires.connection));for(let n of e.requires.fields??[])t.push(Ac(e=>n.split(`.`).reduce((e,t)=>e==null?e:e[t],e),`Set ${n} first`));if(t.length!==0)return t.length===1?t[0]:jc(...t)}function tl(e,t,n){let i={exampleValue:null,jsonSchema:null},a=t.fieldAnnotations.annotations[e];if(a?.json_metadata?.example_value&&(i.exampleValue=a.json_metadata.example_value||null),a?.json_metadata?.schema&&(i.jsonSchema=a.json_metadata.schema||null),i.exampleValue&&i.jsonSchema||!t.resolvedFieldNames[e])return i;let o=jo(e,n,t),s=Oo(o.fieldName)?g(o.fieldName):null;return s?.jsonMeta?{jsonSchema:s.jsonMeta.zodSchema?r.toJSONSchema(s.jsonMeta.zodSchema):null,exampleValue:s.jsonMeta.exampleValue||null}:i}const v=r.registry();{let e=v._map,t=v.get.bind(v);v.get=n=>{let r=n;for(;r;){let t=e.get(r);if(typeof t==`function`)return t;r=r?._zod?.parent}return t(n)}}const y=r.registry();{let e=y._map,t=y.get.bind(y);y.get=n=>{let r=n;for(;r;){let t=e.get(r);if(typeof t==`function`)return t;r=r?._zod?.parent}return t(n)}}const nl=r.registry();{let e=nl._map,t=nl.get.bind(nl);nl.get=n=>{let r=n;for(;r;){let t=e.get(r);if(typeof t==`function`)return t;r=r?._zod?.parent}return t(n)}}const rl=e=>e,il={text_input:r.coerce.string(),textarea_input:r.string(),prompt_input:r.object({template:r.string(),json_schemas:r.record(r.string(),r.record(r.string(),r.unknown()))}),template_input:r.string(),tagged_text_input:r.coerce.string(),boolean_input:r.boolean(),nullable_boolean_input:r.boolean().nullable(),select_input:r.string(),multi_select_input:r.array(r.string()),async_multi_select_input:r.array(r.string()),int_input:r.coerce.number().int(),number_input:r.coerce.number(),min_max_int_input:r.object({min:r.number().nullable().default(null),max:r.number().nullable().default(null)}),include_exclude_input:r.object({include:r.array(r.string()).default([]),exclude:r.array(r.string()).default([])}),include_exclude_select_input:r.object({include:r.array(r.string()).default([]),exclude:r.array(r.string()).default([])}),async_include_exclude_select_input:r.object({include:r.array(r.string()).default([]),exclude:r.array(r.string()).default([])}),exact_range_input:r.record(r.string(),r.number().nullable()),range_input:r.object({from:r.number().nullable(),to:r.number().nullable()}),date_range_input:r.record(r.string(),r.string()),multi_create_input:r.array(r.string()),property_list_input:r.array(r.object({property:r.string().min(1)})),ordered_multi_create_input:r.array(r.string()),tagged_ordered_multi_create_input:r.array(r.string()),loose_object_input:r.record(r.string(),r.string()),connector_input:r.object({connections:r.array(r.object({type:r.string(),connection:r.string()}))}).nullable(),providers_input:r.array(r.object({provider:r.string()})),json_extraction_input:r.record(r.string(),r.unknown()),pipes_run_if_input:r.record(r.string(),r.unknown()).nullable(),condition_block_input:r.record(r.string(),r.unknown()).nullable(),fields_select_input:r.array(r.object({field_name:r.string()})),typed_fields_select_input:r.array(r.object({field_name:r.string(),type:r.enum(Lo),format:r.enum(rs).nullable().optional(),alias:r.string().optional()})),field_select_input:r.object({field_name:r.string()}),output_field_input:r.object({alias:r.string(),enabled:r.boolean()}),json_schema_input:r.record(r.string(),r.unknown()),cursor_pagination_metadata:r.object({limit:r.number()}),context_select_input:r.union([r.string(),r.array(r.string())]),search_payload_input:r.looseObject({search_id:r.string()})},al=(e,t,n)=>{let r=[t.description||n,t.guide].filter(Boolean).join(` `);return r?e.describe(r):e.check(()=>{})},ol=(e,t)=>{let n=il.multi_create_input;return e.maxItems&&(n=n.max(e.maxItems)),n=e.minItems?n.min(e.minItems):n.default([]),t.add(n,{type:`multi_create_input`,...e}),n},sl=(e,t)=>{let n=il.property_list_input;e.maxItems&&(n=n.max(e.maxItems)),n=e.minItems?n.min(e.minItems):n.default([]);let r=e.enabledIf??el(e.optionsDef);return t.add(n,{type:`property_list_input`,...e,enabledIf:r}),n},cl=(e,t)=>{let n=il.ordered_multi_create_input;return e.maxItems&&(n=n.max(e.maxItems)),n=e.minItems?n.min(e.minItems):n.default([]),t.add(n,{type:`ordered_multi_create_input`,...e}),n},ll=/^\s*\{\{\s*[a-zA-Z_][a-zA-Z0-9_.]*(?:\s*\|\s*[^}]+)?\s*\}\}\s*$/,ul=/\{\{|\{%/,dl=(e,t)=>{let n=il.tagged_ordered_multi_create_input;e.maxItems&&(n=n.max(e.maxItems)),n=n.check(e=>{let t=e;(t.value??[]).forEach((e,n)=>{let r=ll.test(e),i=ul.test(e);!r&&i&&t.issues.push({code:`custom`,input:e,path:[n],message:`Each entry must be either plain text or a single field reference — not mixed.`})})}),n=e.minItems?n.min(e.minItems):n.default([]);let r={type:`tagged_ordered_multi_create_input`,...e};if(t===v){let i=t=>{let n=t.validationContext,i=n?Object.entries(n.fieldDefinitions).filter(([e,n])=>n.added_by.config_hash!==t.hash).filter(([t,n])=>!e.expectedTagType||n.type===e.expectedTagType).map(([e,t])=>({...t,resolvedName:e})):[];return{...r,inputFields:i}};return i.staticMeta={...r,inputFields:[]},t.add(n,i),n}return t.add(n,r),n},fl=(e,t)=>{let n=il.loose_object_input;n=n.check(t=>{let n=t,r=Object.entries(n.value??{});e.minKeys!=null&&r.length<e.minKeys&&n.issues.push({code:`custom`,input:n.value,message:`Add at least ${e.minKeys} ${e.keyLabel?.toLowerCase()??`entr`}${e.keyLabel?`s`:`ies`}.`}),e.maxKeys!=null&&r.length>e.maxKeys&&n.issues.push({code:`custom`,input:n.value,message:`Use at most ${e.maxKeys} ${e.keyLabel?.toLowerCase()??`entr`}${e.keyLabel?`s`:`ies`}.`}),r.forEach(([e,t])=>{Ul({value:t,issues:n.issues},!1,[e])})}),n=n.default({});let r={type:`loose_object_input`,...e},i=e=>{let t=e.validationContext,n=t?Object.entries(t.fieldDefinitions).filter(([t,n])=>n.added_by.config_hash!==e.hash).map(([e,t])=>({...t,resolvedName:e})):[];return{...r,inputFields:n}};return i.staticMeta={...r,inputFields:[]},t.add(n,i),n},pl=(e,t)=>{let n=e.maxItems||200,r=al(il.include_exclude_input.check(e=>{e.value.include.length>n&&e.issues.push({code:`custom`,input:e.value.include,path:[`include`],message:`Array must contain at most ${n} element(s)`}),e.value.exclude.length>n&&e.issues.push({code:`custom`,input:e.value.exclude,path:[`exclude`],message:`Array must contain at most ${n} element(s)`})}),e);return t.add(r,{type:`include_exclude_input`,...e}),r},ml=()=>{let e=ys;return v.add(e,e=>{let t=e.validationContext;return{label:``,description:``,type:`json_extraction_input`,fields:Object.entries(t.fieldDefinitions).filter(([e,t])=>e.toLowerCase()!==`id`&&t.type===`json`).map(([e,n])=>{let{jsonSchema:r,exampleValue:i}=tl(e,t,n)||{};return{fieldName:e,fieldLabel:n.label,schema:r||null,exampleValue:i||null}}),path:`config.json_extraction`,groupPath:`config.json_extraction`,sectionKey:`general`}}),e},hl=(e,t)=>{let n=r.array(r.object({provider:r.enum(e.availableProviders)})).max(e.maxItems||99).min(1).default(e.defaultProviders),i=e.availableProviders.filter(t=>!e.deprecatedProviders?.includes(t)).map(t=>{let n=e.providerCredits?.[t];return{value:t,label:Xt[t].label,widgets:{provider_logo:{provider:t},...typeof n==`number`?{pricing:{credits:n}}:{}}}});return t.add(n,{label:`Provider sequence`,description:``,path:`config.providers`,groupPath:`config.providers`,type:`providers_input`,options:i,defaultProviders:e.defaultProviders,maxItems:e.maxItems,sectionKey:e.sectionKey}),n},gl=(e,t)=>{let n=e.maxItems||200,r=al(il.include_exclude_select_input.check(e=>{e.value.include.length>n&&e.issues.push({code:`custom`,input:e.value.include,path:[`include`],message:`Array must contain at most ${n} element(s)`}),e.value.exclude.length>n&&e.issues.push({code:`custom`,input:e.value.exclude,path:[`exclude`],message:`Array must contain at most ${n} element(s)`})}),e);return t.add(r,{type:`include_exclude_select_input`,...e}),r},_l=(e,t)=>{let n=al(il.exact_range_input.check(t=>{e.min===void 0&&e.max===void 0||Object.values(t.value).filter(e=>e!==null).some(t=>e.min!=null&&t<e.min||e.max!=null&&t>e.max)&&t.issues.push({code:`custom`,input:t.value,message:`Values must be between ${e.min??`any`} and ${e.max??`any`}`})}),e);return t.add(n,{type:`exact_range_input`,...e}),n},vl=(e,t)=>{let n=r.object({from:r.number().optional().nullable(),to:r.number().optional().nullable()}).default({from:null,to:null}),i=n;(e.min!==void 0||e.max!==void 0)&&(i=n.check(t=>{Object.values(t.value).filter(e=>e!=null).every(t=>(e?.min==null||t>=e.min)&&(e.max==null||t<=e.max))||t.issues.push({code:`custom`,input:t.value,message:`Values must be between ${e.min??`any`} and ${e.max??`any`}`}),t.value.from&&t.value.to&&t.value.from>t.value.to&&t.issues.push({code:`custom`,input:t.value,message:`'From' value must be smaller than 'to' value.`})}));let a=al(i,e);return t.add(a,{type:`range_input`,...e}),a},yl=(e,t)=>{let n=al(il.date_range_input.check(e=>{let t=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/;for(let[n,r]of Object.entries(e.value))r&&!t.test(r)&&e.issues.push({code:`custom`,input:r,path:[n],message:`Must be an ISO datetime string`})}),e);return t.add(n,{type:`date_range_input`,...e}),n},bl=(e,t)=>{let n=al(il.boolean_input.default(e.defaultValue),e);return t.add(n,{...e,required:!1,type:`boolean_input`}),n},xl=(e,t)=>{let n=al(il.nullable_boolean_input.default(e.defaultValue),e);return t.add(n,{...e,required:!1,type:`nullable_boolean_input`,defaultValue:e.defaultValue}),n},Sl=(e,t)=>{let n=il.text_input;e.minLength&&(n=n.min(e.minLength)),e.maxLength&&(n=n.max(e.maxLength)),e.pattern&&(n=n.regex(new RegExp(e.pattern)));let r=al(n,e);return t.add(r,{type:`text_input`,...e}),r},Cl=(e,t)=>{let n=il.textarea_input;e.minLength&&(n=n.min(e.minLength)),e.maxLength&&(n=n.max(e.maxLength));let r=al(n,e);return t.add(r,{type:`textarea_input`,...e}),r},wl=(e,t,n=`pipe_io`)=>{let i=r.object({alias:r.string().default(``).describe(`Rename this output field. Leave empty to use default name.`),enabled:r.boolean().default(!0).describe(`Whether to include this field in the output.`)}).describe(`Output field '${e.fieldName}'`);return t.add(i,{type:`output_field_input`,label:`Rename *${e.fieldName}*`,placeholder:e.fieldName,path:`config.output_fields.${e.fieldName}`,description:void 0,groupPath:`config.output_fields`,sectionKey:n}),i.default({alias:``,enabled:!0})},Tl=(e,t)=>r.unknown().check(e=>{t(e.value)&&e.issues.push({code:`custom`,input:e.value,message:`Required`})}).pipe(e),El=(e,t)=>{let n=al(Tl(il.int_input.check(t=>{e.min!=null&&t.value<e.min&&t.issues.push({code:`custom`,input:t.value,message:`Value must be at least ${e.min}`}),e.max!=null&&t.value>e.max&&t.issues.push({code:`custom`,input:t.value,message:`Value must be at most ${e.max}`})}),e=>e==null),e);return t.add(n,{...e,type:`int_input`}),n},Dl=(e,t)=>{let n=al(Tl(il.number_input.check(t=>{e.min!=null&&t.value<e.min&&t.issues.push({code:`custom`,input:t.value,message:`Value must be at least ${e.min}`}),e.max!=null&&t.value>e.max&&t.issues.push({code:`custom`,input:t.value,message:`Value must be at most ${e.max}`})}),e=>e===void 0),e);return t.add(n,{...e,type:`number_input`}),n},Ol=(e,t)=>{let n=il.json_schema_input;return n.check(e=>{xc(e.value)||e.issues.push({code:`custom`,input:e.value,message:`JSON schema is invalid. Check your input.`})}),e.allowEmpty||(n=n.check(e=>{Sc(e.value)&&e.issues.push({code:`custom`,message:`JSON Schema must define a meaningful value. Can not be an empty object or array.`,input:e.value})})),t.add(n,{...e,type:`json_schema_input`}),n},kl=(e,t)=>{let n=e.options.map(e=>e.value),r=new Set([...n,``]),i=il.select_input.check(t=>{if(t.value===``){e.required&&t.issues.push({code:`custom`,input:t.value,message:`Required`});return}r.has(t.value)||t.issues.push({code:`custom`,input:t.value,message:`Must be one of: ${[...r].filter(e=>e).join(`, `)}`})}),a=al(e.defaultValue?i.default(e.defaultValue):i,e);return t.add(a,{type:`select_input`,...e}),a},Al=(e,t,n)=>{let r=al(il.search_payload_input.check(e=>{if(!e.value?.search_id){e.issues.push({code:`custom`,input:e.value,message:`Required`});return}let t=n?.safeParse(e.value);if(t&&!t.success)for(let n of t.error.issues)e.issues.push({code:`custom`,input:e.value,message:n.message,path:n.path})}),e);return t.add(r,{...e,type:`search_payload_input`,required:!0}),r},jl=({billableOperations:e,...t},n)=>{let i=r.enum(Nc).default(t.defaultValue||`google-low`);return n.add(i,{type:`select_input`,options:Nc.map(t=>{let n=Object.keys(e).find(e=>e.endsWith(`-in-${t}`)),r=Object.keys(e).find(e=>e.endsWith(`-out-${t}`)),i=n?e[n]:void 0,a=r?e[r]:void 0;if(!i||!a)throw Error(`Unable to find token billing info for model ${t}`);return{label:Pc[t].label,value:t,widgets:{logo:{url:Xt[Pc[t].provider].logoUrl},token_pricing:{inputPerBlock:i.credits.default,outputPerBlock:a.credits.default,blockSize:100}}}}),required:!0,description:``,label:`AI Models`,...t}),i},Ml=(e,t)=>{let n=e.options.map(e=>e.value),i=new Set(n),a=r.array(r.enum(Array.from(i))).check(t=>{e.required&&t.value.length===0&&t.issues.push({code:`custom`,input:t.value,message:`Required`});let r=new Set;t.value.forEach((e,a)=>{i.has(e)?r.has(e)?t.issues.push({code:`custom`,input:e,path:[a],message:`Duplicate option: ${e}`}):r.add(e):t.issues.push({code:`custom`,input:e,path:[a],message:`Must be one of: ${n.join(`, `)}`})})});return t.add(a,{type:`multi_select_input`,...e}),a},Nl=(e,t)=>{let n=il.context_select_input.check(t=>{e.required&&(t.value===``||Array.isArray(t.value)&&t.value.length===0)&&t.issues.push({code:`custom`,input:t.value,message:`Required`})}),r=e.defaultValue?n.default(e.defaultValue):n,i=e.enabledIf??el(e.optionsDef);return t.add(r,{type:`context_select_input`,...e,enabledIf:i,options:[]}),r},Pl=(e,t)=>{let n=il.min_max_int_input.check(t=>{for(let n of[`min`,`max`]){let r=t.value[n];if(r!=null){if(!Number.isInteger(r)){t.issues.push({code:`custom`,input:r,path:[n],message:`Must be an integer`});continue}(r<e.min||r>e.max)&&t.issues.push({code:`custom`,input:r,path:[n],message:`Must be between ${e.min} and ${e.max}`})}}});return t.add(n,{type:`min_max_int_input`,...e}),n},Fl=(e,t)=>{let n=il.async_multi_select_input.check(t=>{e.required&&t.value.length===0&&t.issues.push({code:`custom`,input:t.value,message:`Required`})});return e.maxItems&&(n=n.max(e.maxItems)),t.add(n,{type:`async_multi_select_input`,...e}),n},Il=(e,t)=>{let n=e.maxItems||200,r=il.async_include_exclude_select_input.check(e=>{e.value.include.length>n&&e.issues.push({code:`custom`,input:e.value.include,path:[`include`],message:`Array must contain at most ${n} element(s)`}),e.value.exclude.length>n&&e.issues.push({code:`custom`,input:e.value.exclude,path:[`exclude`],message:`Array must contain at most ${n} element(s)`})});return t.add(r,{type:`async_include_exclude_select_input`,...e}),r},b=()=>{let e=Fs.nullish();return v.add(e,e=>{let t=e.validationContext;return{label:``,description:``,type:`pipes_run_if_input`,groupPath:`run_if`,path:`run_if`,sectionKey:`pipe_io`,fields:Object.entries(t.fieldDefinitions).filter(([e])=>e.toLowerCase()!==`id`).map(([e,t])=>({fieldName:e,fieldLabel:t.label,format:t.format,type:t.type}))}}),e},Ll=e=>{let t=Ns.nullish();return v.add(t,t=>{let n=t.validationContext;return{type:`condition_block_input`,...e,fields:Object.entries(n.fieldDefinitions).filter(([e])=>e.toLowerCase()!==`id`).map(([e,t])=>({fieldName:e,fieldLabel:t.label,format:t.format,type:t.type}))}}),t},Rl=e=>{let t=Ns.nullish();return nl.add(t,t=>{let n=t.validationContext;return{type:`condition_block_input`,...e,fields:Object.entries(n.fieldDefinitions).filter(([e])=>e.toLowerCase()!==`id`).map(([e,t])=>({fieldName:e,fieldLabel:t.label,format:t.format,type:t.type}))}}),t},zl=e=>{let{required:t=!0,...n}=e,r=al(Ps.nullable().check(e=>{let n=e;if(n.value===null){t&&n.issues.push({code:`custom`,input:n.value,message:`Add at least one condition.`});return}(n.value?.conditions??[]).forEach((e,t)=>{typeof e.value==`string`&&Ul({value:e.value,issues:n.issues},!1,[`conditions`,t,`value`])})}),n,"Condition block over the target sheet's columns. `field_name` is a LITERAL column name of the looked-up sheet (never templated); string `value`s may contain `{{ field }}` / `{{ SECRETS.KEY }}` / `{{ CONSTANTS.KEY }}` Liquid references resolved per row."+(t?``:" `null` means no filtering.")),i=n.optionsDef?{...n.optionsDef,enabledIf:n.optionsDef.enabledIf??el(n.optionsDef)}:void 0,a={type:`condition_block_input`,fields:[],fieldNameMode:`text`,properties:[`value`],...n,optionsDef:i,options:[]},o=e=>{let t=e.validationContext;return{...a,inputFields:Object.entries(t.fieldDefinitions).filter(([t,n])=>n.added_by.config_hash!==e.hash).map(([e,t])=>({...t,resolvedName:e}))}};return o.staticMeta={...a,inputFields:[]},v.add(r,o),t?r:r.default(null)};function Bl(e,t){if(!t)return e;let n={...e};for(let[r,i]of Object.entries(t))n[r]=i===null?null:{...e[r]??{},...i};return n}function Vl({fieldMetadata:e,store:t}){let n=e;if(e.type===`context_select_input`||e.type===`tagged_text_input`||(e.type===`condition_block_input`||e.type===`field_select_input`||e.type===`fields_select_input`||e.type===`typed_fields_select_input`||e.type===`property_list_input`)&&n.optionsDef){t.field_options??={};let r=t.field_options[e.path]?.options||[],i=n.optionsDef?.widgets;e.options=i?r.map(e=>({...e,widgets:{...i,...e.widgets??{}}})):r}return e}const Hl=({schema:e,extractFromSchema:t,store:n,formResolvers:i,sectionMap:a,groupMap:o,pathMap:s})=>{let c={};function l(e){let t=e?._zod?.def?.type;return!(t===`optional`||t===`nullable`||t===`default`)}function u(e,d){let f=t(e),p=f?.required,ee=f&&p===void 0&&d!==void 0?{...f,required:d}:f;if(ee){let{sectionKey:e,groupPath:t,path:r}=ee,l=a?.[e],u=o?.[t],d=s?.[r];if(!(l===null||u===null||d===null)){let r=d?{...ee,label:d.label??ee.label,description:d.description??ee.description}:ee;c[e]??={type:`section`,groups:[],metadata:{type:`form_section`,path:l?.path??e,label:l?.label,description:l?.description}};let a=c[e];if(!a)throw Error(`Section not defined`);let o=a.groups.find(e=>e.groupPath===t);if(o){let e=Vl({fieldMetadata:r,store:n,formResolvers:i});e&&o.fields.push(e)}else{let e=Vl({fieldMetadata:r,store:n,formResolvers:i});e&&a.groups.push({groupPath:t,fields:[e],type:`group`,label:u?.label,defaultExpand:!!u?.defaultExpand,description:u?.description,iconKey:u?.iconKey,order:u?.order})}}}if(typeof e==`object`&&`unwrap`in e&&typeof e.unwrap==`function`&&u(e.unwrap(),d),e instanceof r.ZodObject)for(let t of Object.values(e.shape))u(t,l(t))}u(e);for(let e of Object.values(c))e.groups=e.groups.filter(e=>e.fields.length!==0),e.groups.sort((e,t)=>(e.order??99)-(t.order??99));return Object.entries(c).filter(([,e])=>e.groups.length!==0).sort(([e],[t])=>(a?.[e]?.order??99)-(a?.[t]?.order??99)).map(([,e])=>e)};function Ul(e,t,n=[]){let r=e.value;if(!(typeof r!=`string`||!r))try{let i=ec(r);!t&&i.outputs.length>0&&e.issues.push({code:`custom`,input:r,path:n,message:`{% output %} tags are not allowed in this field.`}),t&&i.outputs.length===0&&e.issues.push({code:`custom`,input:r,path:n,message:`At least one {% output %} tag is required, e.g. {% output result, type: "string", description: "..." %}`})}catch(t){e.issues.push({code:`custom`,input:r,path:n,message:t instanceof Error?t.message:String(t)})}}const Wl=e=>{let t=(e.supportedTags??[]).includes(`output`),n=r.object({template:al(r.string().min(10).check(e=>Ul(e,t,[])),e,'Liquid prompt with `{{ field }}` input refs, `{{ field | default: "" }}` for optional refs, `{{ SECRETS.KEY }}` for secrets, `{{ CONSTANTS.KEY }}` for plaintext constants, and `{% output name, type: "string", description: "..." %}` to declare model outputs. Supports `{% if %}` / `{% for %}` control flow. Example: "Summarize {{ name }}. {% output summary, type: \\"string\\", description: \\"One-line summary\\" %}"'),json_schemas:r.record(r.string().min(1,`Schema name cannot be empty`),r.record(r.string(),r.any())).optional().describe(`JSON schemas for output fields with type="json". Keys are referenced via schema="<name>" in output tags.`)});return v.add(n,t=>{let n=t.validationContext;return{type:`prompt_input`,inputFields:Object.entries(n.fieldDefinitions).filter(([e,n])=>n.added_by.config_hash!==t.hash).map(([e,t])=>({...t,resolvedName:e})),...e}}),n},Gl=e=>{let t=`Liquid template with \`{{ field }}\` input refs, \`{{ field | default: "" }}\` for optional refs, \`{{ SECRETS.KEY }}\` for secrets, \`{{ CONSTANTS.KEY }}\` for plaintext constants, and \`{% if %}\` / \`{% for %}\` control flow. Filters are hard-whitelisted — ONLY: ${Ls.join(`, `)}; anything else (split, slice, …) fails validation. Example: "Write to {{ name }} about {{ topic | default: \\"the project\\" }}."`,n=r.string();e.required&&(n=n.min(1)),e.maxLength&&(n=n.max(e.maxLength));let i=al(n.check(e=>Ul(e,!1,[])),e,t);return v.add(i,t=>{let n=t.validationContext;return{type:`template_input`,inputFields:Object.entries(n.fieldDefinitions).filter(([e,n])=>n.added_by.config_hash!==t.hash).map(([e,t])=>({...t,resolvedName:e})),rows:e.rows||10,...e}}),i},x=e=>{let t=`${e.multiline?`Multi-line`:`Single-line`} ${e.expectedTagType} value, optionally containing \`{{ field }}\` Liquid input refs (use \`| default: ""\` for optional refs), \`{{ SECRETS.KEY }}\` for encrypted secrets, and \`{{ CONSTANTS.KEY }}\` for plaintext constants.`,n=r.coerce.string();e.minLength&&(n=n.min(e.minLength)),e.maxLength&&(n=n.max(e.maxLength)),e.pattern&&(n=n.regex(new RegExp(e.pattern))),n=n.check(e=>Ul(e,!1,[])),n=al(n,e,t);let i=e.optionsDef?{...e.optionsDef,enabledIf:e.optionsDef.enabledIf??el(e.optionsDef)}:void 0,a={type:`tagged_text_input`,...e,optionsDef:i,options:[]},o=t=>{let n=t.validationContext,r=Object.entries(n.fieldDefinitions).filter(([e,n])=>n.added_by.config_hash!==t.hash).filter(([t,n])=>n.type===e.expectedTagType).map(([e,t])=>({...t,resolvedName:e}));return{...a,inputFields:r}};return o.staticMeta={...a,inputFields:[]},v.add(n,o),n};function Kl(e,t){v.add(e,({userConnections:e,pipeEntry:n})=>{let r=new Set(n.allowedUserConnectionProviders),i=e.filter(e=>r.has(e.provider));return{label:t===`required`?`Custom connection`:``,description:``,required:t===`required`,groupPath:`connector`,path:`connector`,connectorMode:t,type:`connector_input`,sectionKey:`pipe_io`,supportsUserConnections:r.size>0,filteredConnections:i.map(e=>({provider:e.provider,connection:yc({id:e.public_id,provider:e.provider}),is_default:e.is_default??!1,ownership_level:e.ownership_level}))}})}const S=()=>{let e=Es;return Kl(e,`required`),e},C=()=>{let e=Ts;return Kl(e,`optional`),e},ql=()=>{let e=Ds;return Kl(e,`disabled`),e};function Jl(e,t){y.add(e,({userConnections:e,searchEntry:n})=>{let r=n.allowsUserConnection?[n.provider]:[],i=new Set(r),a=e.filter(e=>i.has(e.provider));return{label:t===`required`?`Custom connection`:``,description:``,required:t===`required`,groupPath:`connector`,path:`connector`,connectorMode:t,type:`connector_input`,sectionKey:`pipe_io`,supportsUserConnections:i.size>0,filteredConnections:a.map(e=>({provider:e.provider,connection:yc({id:e.public_id,provider:e.provider}),is_default:e.is_default??!1,ownership_level:e.ownership_level}))}})}const Yl=()=>{let e=Es;return Jl(e,`required`),e},Xl=()=>{let e=Ts;return Jl(e,`optional`),e};function Zl(e,t){nl.add(e,({userConnections:e,effectEntry:n})=>{let r=new Set(n.allowedUserConnectionProviders),i=e.filter(e=>r.has(e.provider));return{label:t===`required`?`Custom connection`:``,description:``,required:t===`required`,groupPath:`connector`,path:`connector`,connectorMode:t,type:`connector_input`,sectionKey:`pipe_io`,supportsUserConnections:r.size>0,filteredConnections:i.map(e=>({provider:e.provider,connection:yc({id:e.public_id,provider:e.provider}),is_default:e.is_default??!1,ownership_level:e.ownership_level}))}})}const Ql=()=>{let e=Es;return Zl(e,`required`),e},$l=()=>{let e=Ts;return Zl(e,`optional`),e},eu=()=>{let e=Ds;return Zl(e,`disabled`),e};function tu(e,t){return Object.entries(t.fieldDefinitions).filter(([t,n])=>n.added_by.config_hash!==e&&t.toLowerCase()!==`id`).map(([e,t])=>({label:e,value:e,type:t.type,format:t.format}))}const w=e=>{let t=r.object({alias:r.string().describe(`Override field name mapping. Leave empty to use default.`)});return v.add(t,t=>{let n=t.validationContext;return{type:`select_input`,required:!1,sectionKey:`pipe_io`,defaultValue:void 0,placeholder:e.fieldName,options:tu(t.hash,n),path:`config.input_fields.${e.fieldName}.alias`,label:`Assign *${e.fieldName}* to:`,description:``,groupPath:`config.input_fields`,multiple:!1}}),t.default({alias:``})},T=e=>hl(e,v),nu=(e,t)=>{let n=e.optionsDef?{...e.optionsDef,enabledIf:e.optionsDef.enabledIf??el(e.optionsDef)}:void 0,r={type:`fields_select_input`,...e,optionsDef:n,options:[]},i=e=>{if(n)return{...r};let t=e.validationContext;return{...r,options:Object.entries(t.fieldDefinitions).filter(([e])=>e.toLowerCase()!==`id`).map(([e,t])=>({value:e,label:e,widgets:{field_type:{type:t.type}}}))}};i.staticMeta=r,v.add(t,i)},ru=e=>{let t=il.fields_select_input.check(e=>{e.value.forEach((t,n)=>{t.field_name.length<1&&e.issues.push({code:`custom`,input:t.field_name,path:[n,`field_name`],message:`field_name must not be empty`})})});return t=e.minItems?t.min(e.minItems):t.default([]),nu(e,t),t},iu=r.array(r.object({field_name:r.string(),alias:r.string().optional()})),au=e=>{let t=iu.check(e=>{e.value.forEach((t,n)=>{t.field_name.length<1&&e.issues.push({code:`custom`,input:t.field_name,path:[n,`field_name`],message:`field_name must not be empty`})})});return t=e.minItems?t.min(e.minItems):t.default([]),nu({...e,withAlias:!0},t),t},ou=e=>{let t=il.typed_fields_select_input.check(e=>{e.value.forEach((t,n)=>{t.field_name.length<1&&e.issues.push({code:`custom`,input:t.field_name,path:[n,`field_name`],message:`field_name must not be empty`})})});t=e.minItems?t.min(e.minItems):t.default([]);let n=e.optionsDef?{...e.optionsDef,enabledIf:e.optionsDef.enabledIf??el(e.optionsDef)}:void 0,r={type:`typed_fields_select_input`,...e,optionsDef:n,options:[]},i=e=>{if(n)return{...r};let t=e.validationContext;return{...r,options:Object.entries(t.fieldDefinitions).filter(([e])=>e.toLowerCase()!==`id`).map(([e,t])=>{let n=typeof t.type==`function`?`unknown`:t.type;return{value:e,label:e,data:{type:String(n),...t.format?{format:String(t.format)}:{}},widgets:{field_type:{type:t.type}}}})}};return i.staticMeta=r,v.add(t,i),t},su=e=>{let t=il.field_select_input.check(t=>{e.required&&t.value.field_name.length<1&&t.issues.push({code:`custom`,input:t.value.field_name,path:[`field_name`],message:`Select a field`})});e.required||(t=t.default({field_name:``})),t=al(t,e,"Reference to a single sheet column by name (`{ field_name }`).");let n=e.optionsDef?{...e.optionsDef,enabledIf:e.optionsDef.enabledIf??el(e.optionsDef)}:void 0,r={type:`field_select_input`,...e,optionsDef:n,options:[]},i=e=>{if(n)return{...r};let t=e.validationContext;return{...r,options:Object.entries(t.fieldDefinitions).filter(([t,n])=>t.toLowerCase()!==`id`&&n.added_by.config_hash!==e.hash).map(([e,t])=>({value:e,label:e,widgets:{field_type:{type:t.type}}}))}};return i.staticMeta=r,v.add(t,i),t},cu=e=>{let t=il.fields_select_input.check(e=>{e.value.forEach((t,n)=>{t.field_name.length<1&&e.issues.push({code:`custom`,input:t.field_name,path:[n,`field_name`],message:`field_name must not be empty`})})});return t=e.minItems?t.min(e.minItems):t.default([]),nl.add(t,t=>{let n=t.validationContext;return{type:`fields_select_input`,options:Object.entries(n.fieldDefinitions).filter(([e])=>e.toLowerCase()!==`id`).map(([e,t])=>({fieldName:e,fieldLabel:e,type:t.type})).map(e=>({value:e.fieldName,label:e.fieldLabel,widgets:{field_type:{type:e.type}}})),...e}}),t},lu=(e,t)=>{let n=t===`selection`?Et:t===`sheet`?Dt:kt,i={label:`All rows`,value:{type:`all`}},a={label:`Specific rows by ID`,value:{type:`rows`,record_ids:[]}},o=t===`selection`?[a]:t===`sheet`?[i]:[i,a,{label:`Window of 10 rows`,value:{type:`window`,count:10}}],s=r.preprocess(e=>{if(typeof e!=`string`)return e;let t=e.trim();if(t===``)return;let n=wc(t);return n===void 0?e:n},n).optional();return nl.add(s,{type:`textarea_input`,rows:3,language:`json`,quickOptions:o,...e}),s},uu=e=>pl(e,v),du=e=>ol(e,v),fu=e=>sl(e,v),pu=e=>cl(e,v),mu=e=>dl(e,v),hu=e=>fl(e,v),gu=e=>gl(e,v),_u=e=>Il(e,v),vu=e=>_l(e,v),yu=e=>yl(e,v),E=e=>bl(e,v),D=e=>wl(e,v),bu=e=>{let{groupPath:t,sectionKey:n=`pipe_io`,defaultName:r,nameInfo:i}=e;return{destination_field_name:xu({label:`Field name`,description:`Destination field name`,info:i??`Name of the field written to the destination sheet.`,placeholder:r,inputType:`text`,path:`config.destination_field_name`,groupPath:t,sectionKey:n}).nullable().default(``),destination_field_type:Cu({label:`Type`,info:`Field data type. Leave unset to infer it from the data.`,path:`config.destination_field_type`,groupPath:t,sectionKey:n,required:!1,options:Lo.filter(e=>e!==`unknown`).map(e=>({value:e,label:e}))}).default(``),destination_field_format:Cu({label:`Format`,info:`Optional display format for the field.`,path:`config.destination_field_format`,groupPath:t,sectionKey:n,required:!1,options:rs.map(e=>({value:e,label:e}))}).default(``),destination_field_label:xu({label:`Label`,description:`Destination field label`,info:`Human-friendly column header. Defaults to the field name.`,inputType:`text`,path:`config.destination_field_label`,groupPath:t,sectionKey:n}).nullable().default(``)}},xu=e=>Sl(e,v),Su=e=>Cl(e,v),Cu=e=>kl(e,v),wu=e=>jl(e,v),Tu=e=>Ml(e,v),Eu=e=>El(e,v),Du=e=>Dl(e,v),Ou=e=>Ol(e,v),ku=e=>Nl(e,v),Au=e=>{let{required:t=!1,...n}=e,r=Ps.nullable().check(e=>{let n=e;n.value===null&&t&&n.issues.push({code:`custom`,input:n.value,message:`Add at least one condition.`})});return y.add(r,{type:`condition_block_input`,fields:[],fieldNameMode:`text`,properties:[`value`],...n}),t?r:r.default(null)},O=e=>ol(e,y),ju=e=>sl(e,y),Mu=e=>cl(e,y),Nu=e=>Pl(e,y),k=e=>pl(e,y),Pu=e=>gl(e,y),Fu=e=>_l(e,y),Iu=e=>vl(e,y),Lu=e=>yl(e,y),Ru=e=>bl(e,y),zu=e=>xl(e,y),A=e=>wl(e,y,`pipe_io`),Bu=e=>Sl(e,y),Vu=e=>Cl(e,y),Hu=e=>kl(e,y),Uu=e=>Nl(e,y),j=e=>Ml(e,y),Wu=e=>Fl(e,y),M=e=>Il(e,y),N=e=>El(e,y),Gu=e=>Dl(e,y),Ku=e=>Sl(e,rl(nl)),qu=e=>Cl(e,rl(nl)),Ju=e=>kl(e,rl(nl)),Yu=e=>Ml(e,rl(nl)),Xu=e=>El(e,rl(nl)),Zu=e=>El(e,rl(nl)).nullish(),Qu=e=>bl(e,rl(nl)),$u=e=>Nl(e,rl(nl)),ed=e=>jl(e,rl(nl)),td=(e,t)=>Al(e,rl(nl),t),P=e=>(e=e.check(e=>{let t=e.value,n=!1;for(let e in t)if(t[e]?.enabled){n=!0;break}n||e.issues.push({code:`custom`,input:e.value,message:`All output fields are disabled. Enable at least one output.`})}),e.optional()),F=e=>e.optional();function nd(e,t,n){return{next:{environment:t,pipes:e.orderedPipePayloads,fieldAnnotations:e.fieldAnnotations.annotations,validationContext:e},...n?{rowMigration:n}:{}}}var I=class extends zt{producesDynamicFields(){return!1}evolveSchema(e){return{next:e}}getRecordQueueConfig(e){return null}getRowFilter(){return null}};function L(e){return Lt(e)}function rd(e,t){return Rt(e,t)}const id=`env:change@1`,ad={},od=r.object({effect_id:r.literal(id),connector:eu(),config:r.object({environment:Po})}),sd=class extends I{effectId=id;schema=od;payload;billableOperations=ad;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}},cd=od,ld={effectId:id,baseEffect:L(id),label:`Change environment`,description:`Switch the sheet between production and sandbox.`,categories:[`internal`],tags:[],lifecycle:null,billableOperations:ad,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`hidden`,defaultPayload:{effect_id:id,connector:null,config:{environment:`production`}}},ud=[`id`],dd=e=>ud.includes(e.trim().toLowerCase()),fd=`input`;function pd({fieldDefinitions:e,fieldAnnotations:t={}}){let n=new Map;for(let[t,r]of Object.entries(e)){let e=r.added_by.config_hash||`input`,i=n.get(e)??{pipeIdx:r.added_by.pipe_index,fields:[]};i.fields.push([t,r]),n.set(e,i)}let r=e=>{let n=t[e]?.order;return typeof n==`number`&&Number.isFinite(n)?n:1/0},i=e=>Math.min(...n.get(e).fields.map(([e])=>r(e))),a=[...n.keys()].sort((e,t)=>{if(e===`input`)return-1;if(t===`input`)return 1;let r=i(e),a=i(t);return r===a?(n.get(e).pipeIdx||0)-(n.get(t).pipeIdx||0):r-a}),o={};for(let e of a)o[e]=n.get(e).fields.sort(([t,n],[i,a])=>{let o=r(t),s=r(i);if(o!==s)return o-s;if(e!==`input`&&n.is_primary_output!==a.is_primary_output)return n.is_primary_output?-1:1;let c=n.order??1/0,l=a.order??1/0;return c===l?t.localeCompare(i):c-l}).map(([e])=>e);return{groupOrder:a,fieldOrder:o}}const md=e=>typeof e.kind==`string`,hd=e=>md(e)?e:{kind:`field`,field:e},R=e=>({kind:`field`,field:e}),z=(...e)=>({kind:`all`,of:e.map(hd)}),gd=(...e)=>({kind:`any`,of:e.map(hd)}),_d=e=>({kind:`optional`,field:e});function vd(e,t){switch(e.kind){case`optional`:return!0;case`field`:return t.has(e.field.resolvedName);case`all`:return e.of.every(e=>vd(e,t));case`any`:return e.of.some(e=>vd(e,t))}}function yd(e){switch(e.kind){case`field`:return[{field:e.field,required:!0}];case`optional`:return[{field:e.field,required:!1}];case`all`:case`any`:return e.of.flatMap(yd)}}function bd(e,t){let n=xd(e,t);return n.ok?{valid:!0,failedPipeInputField:null,failedRecordField:null}:{valid:!1,failedPipeInputField:n.field,failedRecordField:n.recordField}}function xd(e,t){switch(e.kind){case`optional`:return{ok:!0};case`field`:{let n=t.fields[e.field.resolvedName];if(!n)throw Error(`Record field does not exist ${e.field.name} for requirement.`);return n.status===`completed`||n.status===`queued`?{ok:!0}:{ok:!1,field:e.field,recordField:n}}case`all`:for(let n of e.of){let e=xd(n,t);if(!e.ok)return e}return{ok:!0};case`any`:{let n=null,r=!1;for(let i of e.of)try{let e=xd(i,t);if(r=!0,e.ok)return{ok:!0};n=e}catch{}return r?n:{ok:!0}}}}function Sd(e,t){let n={pipeId:e,config:Pt(t)};return It.hashObject(n)}function Cd(e,t){let n={};return Object.values(t).forEach(t=>{let r=t,i=e.fields[r.resolvedName];i?.value!=null&&(n[r.resolvedName]=i.value)}),Object.keys(n).length===0?null:It.hashObject(Pt(n))}var B=class{validatePayload(e){try{return this.payloadSchema.parse(e)}catch(e){throw e instanceof n?Error(r.prettifyError(e)):e}}getSecretRequirements(){return[]}getConstantRequirements(){return[]}getBucketRequirements(){return[]}getRowConditionBlocks(){return[]}async getAgentContext(e){return null}catalogOutput(e,{isPrimaryOutput:t=!1,resolveFormat:n,resolveType:r}={resolveType:void 0,resolveFormat:void 0,isPrimaryOutput:!1}){return{name:e.name,enabled:!!this.payload.config?.output_fields?.[e.name].enabled,type:r||e.type,format:n||e.format,resolvedName:this.payload.config?.output_fields?.[e.name]?.alias||e.name,description:e.description,jsonMeta:e.jsonMeta,label:e.label,isCatalogFIeld:!0,order:`order`in e?e.order:void 0,isPrimaryOutput:t}}getOutputFields(){let e={};for(let[t,n]of Object.entries(this.getRawOutputFields()))n.enabled&&(e[t]=n);return e}get inputFields(){let e={};for(let{field:t}of yd(this.getInputRequirement()))e[t.name]=t;return e}getConfigHashKey(){return Sd(this.payload.pipe_id,this.payload.config||{})}getInputHashKey(e){return Cd(e,this.inputFields)}};const V={EMAIL:`Email`,TEXT:`Text`,CHAT:`Chat`,PERSONAL_EMAIL:`Personal Email`,NAMES:`Names`,WORK_EMAIL:`Work Email`,WATERFALL:`Waterfall`,WEBSITE:`Website`,SCRAPE:`Scrape`,ADDRESS:`Address`,NEWS:`News`,LINKEDIN:`LinkedIn`,FINANCIAL_DATA:`Financial Data`,AI:`AI`,PHONE:`Phone Number`,NEW:`New`,BETA:`Beta`,PEOPLE_PROFILES:`People Profiles`,COMPANY_PROFILES:`Company Profiles`,EVENTS:`Events`,JSON:`Json`,FIELDS:`Fields`,LOGIC:`Logic`,DEPRECATED:`Deprecated ❌`};function H(e,...t){return t.map(t=>({billableOperation:t,quantity:e.count}))}function wd(e,t){return n=>{let r=e[n];if(!r)throw Error(`Missing billableOperation def for "${n}"`);return!r.allowManagedConnection||t?.(r.provider)?0:r.credits.default}}function Td(e,t,n=`sum`){let r=e.map(e=>e.quantity*t(e.billableOperation));return r.length===0?0:n===`max`?Math.max(...r):r.reduce((e,t)=>e+t,0)}function Ed(e,t){let n={};for(let r of t)for(let t of Object.values(e))if(t&&t.provider===r&&t.allowManagedConnection){n[r]=t.credits.default;break}return n}function Dd(e){return yd(e).map(({field:e})=>e)}function Od({recordField:e,value:t,resolvedBy:n,widgets:r}){return e.value=t,e.status=`completed`,e.resolved_by=n,e.widgets=r,e}function kd({recordField:e}){return e.status=`pending`,e.resolved_by=null,e.value=null,e}function Ad({recordField:e,reason:t,resolvedBy:n,widgets:r={}}){return e.value=null,e.status=`no_result`,e.resolved_by=n,e.reason=t,e.widgets=r,e}function jd(e,t,n){return e.value=null,e.status=`failed`,e.resolved_by=null,e.reason=t,e.resolved_by=n,e.widgets={},e}function Md(e,t){return e.value=null,e.status=`skipped`,e.resolved_by=null,e.reason=t,e.widgets={},e}function Nd(e){return e.value=null,e.status=`processing`,e.resolved_by=null,e.widgets={},e}function U(e){return e.split(`@`)[0]}function W(e){return`/docs/pipe-catalog/${U(e)}/${e.split(`@`)[1]}`}function G(e,t){return{name:e.name,description:e.description,resolvedName:t?.input_fields?.[e.name]?.alias||e.name,type:e.type,label:e.label,format:e.format}}const K={MissingSecretError:class extends Error{constructor({providerName:e}){super(`Missing secret for ${e}`)}},HttpError:class extends Error{constructor({msg:e}){super(e)}}};function Pd(e,t){return typeof t==`string`?t:t(e)}function Fd(e,t){return typeof t==`string`||t===null?t:t(e)}function Id(e,t){let n={};for(let r of t){let t=!1;for(let i of e.pipes){let a=i.getOutputFields();if(a[r]){n[r]??={type:Pd(e,a[r].type),format:Fd(e,a[r].format)},t=!0;break}}if(t)continue;let i=e.derivedInputFields[r];i&&(n[r]??={type:i.type,format:null})}return n}function Ld(e,t){for(let n of e.pipes){let r=n.getOutputFields();if(r[t])return{type:Pd(e,r[t].type),format:Fd(e,r[t].format)}}let n=e.derivedInputFields[t];if(n)return{type:n.type,format:null}}const Rd=`v67.0`;function zd(e){try{let t=JSON.parse(e);if(t.access_token&&t.instance_url)return{access_token:t.access_token,instance_url:t.instance_url}}catch{}throw new K.HttpError({msg:`Salesforce credential is not a valid token bundle — reconnect Salesforce through the OAuth flow.`})}async function Bd(e,t){let{access_token:n,instance_url:r}=zd(e),i=await fetch(`${r.replace(/\/$/,``)}${t}`,{headers:{Authorization:`Bearer ${n}`},signal:AbortSignal.timeout(1e4)});if(!i.ok)throw new K.HttpError({msg:await i.text()});return await i.json()}async function Vd(e,t){return(await Bd(e,`/services/data/${Rd}/query?q=${encodeURIComponent(t)}`)).records??[]}function Hd(e,t){if(!t)return e;let n=t.toLowerCase();return e.filter(e=>e.label.toLowerCase().includes(n))}const Ud=e=>({requires:{connection:`salesforce`},options:async({query:t,secret:n,environment:r})=>{if(r===`sandbox`)return Hd([{label:`Contact`,value:`Contact`},{label:`Account`,value:`Account`},{label:`Lead`,value:`Lead`},{label:`Opportunity`,value:`Opportunity`},{label:`Demo Object (custom)`,value:`Demo_Object__c`}],t);if(!n)throw new K.MissingSecretError({providerName:`salesforce`});return Hd((await Bd(n,`/services/data/${Rd}/sobjects/`)).sobjects.filter(t=>t.queryable&&(!e?.updateableOnly||t.updateable)).map(e=>({label:e.custom?`${e.label} (custom)`:e.label,value:e.name})),t)},widgets:{provider_logo:{provider:`salesforce`}}}),Wd={requires:{connection:`salesforce`,fields:[`config.object`]},options:async({query:e,secret:t,payload:n,environment:r})=>{if(r===`sandbox`)return[{label:`External Id (External_Id__c)`,value:`External_Id__c`}];if(!t)throw new K.MissingSecretError({providerName:`salesforce`});let i=n?.config,a=Qd(i?.object);return a?Hd((await Bd(t,`/services/data/${Rd}/sobjects/${encodeURIComponent(a)}/describe`)).fields.filter(e=>e.externalId).map(e=>({label:`${e.label} (${e.name})`,value:e.name})),e):[]},widgets:{provider_logo:{provider:`salesforce`}}},Gd={requires:{connection:`salesforce`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return[{label:`Demo · Prospecting`,value:`Prospecting`},{label:`Demo · Negotiation`,value:`Negotiation`},{label:`Demo · Closed Won ✓ won`,value:`Closed Won`}];if(!t)throw new K.MissingSecretError({providerName:`salesforce`});return Hd((await Vd(t,`SELECT ApiName, MasterLabel, IsClosed, IsWon FROM OpportunityStage ORDER BY SortOrder ASC`)).map(e=>({label:`${e.MasterLabel}${e.IsWon?` ✓ won`:e.IsClosed?` ✕ closed`:``}`,value:e.ApiName})),e)},widgets:{provider_logo:{provider:`salesforce`}}},Kd={requires:{connection:`salesforce`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return[{label:`Demo · Ada Lovelace (ada@example.com)`,value:`005000000000001AAA`},{label:`Demo · Alan Turing (alan@example.com)`,value:`005000000000002AAA`}];if(!t)throw new K.MissingSecretError({providerName:`salesforce`});return Hd((await Vd(t,`SELECT Id, Name, Email FROM User WHERE IsActive = true ORDER BY Name ASC LIMIT 500`)).map(e=>({label:`${e.Name} (${e.Email})`,value:e.Id})),e)},widgets:{provider_logo:{provider:`salesforce`}}},qd={requires:{connection:`salesforce`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return[{label:`Demo · Open - Not Contacted`,value:`Open - Not Contacted`},{label:`Demo · Working - Contacted`,value:`Working - Contacted`}];if(!t)throw new K.MissingSecretError({providerName:`salesforce`});return Hd((await Vd(t,`SELECT ApiName, MasterLabel FROM LeadStatus ORDER BY SortOrder ASC`)).map(e=>({label:e.MasterLabel,value:e.ApiName})),e)},widgets:{provider_logo:{provider:`salesforce`}}},Jd={requires:{connection:`salesforce`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return[{label:`Demo · Not Started`,value:`Not Started`},{label:`Demo · In Progress`,value:`In Progress`},{label:`Demo · Completed ✓`,value:`Completed`}];if(!t)throw new K.MissingSecretError({providerName:`salesforce`});return Hd((await Vd(t,`SELECT ApiName, MasterLabel, IsClosed FROM TaskStatus ORDER BY SortOrder ASC`)).map(e=>({label:`${e.MasterLabel}${e.IsClosed?` ✓ closed`:``}`,value:e.ApiName})),e)},widgets:{provider_logo:{provider:`salesforce`}}},Yd={requires:{connection:`salesforce`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return[{label:`Outreach Key (Outreach_Key__c)`,value:`Outreach_Key__c`}];if(!t)throw new K.MissingSecretError({providerName:`salesforce`});return Hd((await Bd(t,`/services/data/${Rd}/sobjects/Task/describe`)).fields.filter(e=>e.externalId).map(e=>({label:`${e.label} (${e.name})`,value:e.name})),e)},widgets:{provider_logo:{provider:`salesforce`}}},Xd=(e,t)=>({requires:{connection:`salesforce`},options:async({query:n,secret:r,environment:i})=>{if(i===`sandbox`)return[{label:`Demo · Technology`,value:`Technology`},{label:`Demo · Finance`,value:`Finance`}];if(!r)throw new K.MissingSecretError({providerName:`salesforce`});return Hd(((await Bd(r,`/services/data/${Rd}/sobjects/${encodeURIComponent(e)}/describe`)).fields.find(e=>e.name===t)?.picklistValues??[]).filter(e=>e.active).map(e=>({label:e.label,value:e.value})),n)},widgets:{provider_logo:{provider:`salesforce`}}}),Zd=e=>({requires:{connection:`salesforce`},options:async({query:t,secret:n,environment:r})=>{if(r===`sandbox`)return[{label:`Demo · All Records`,value:`00B000000000001AAA`},{label:`Demo · My Records`,value:`00B000000000002AAA`}];if(!n)throw new K.MissingSecretError({providerName:`salesforce`});return Hd((await Bd(n,`/services/data/${Rd}/sobjects/${encodeURIComponent(e)}/listviews`)).listviews.map(e=>({label:e.soqlCompatible?e.label:`${e.label} (not SOQL-compatible)`,value:e.id})),t)},widgets:{provider_logo:{provider:`salesforce`}}});function Qd(e){return Array.isArray(e)?e[0]??``:e??``}const $d=e=>{let t=new Set;for(let n of e)if(n)try{let e=ec(n);for(let n of Object.keys(e.inputs))t.add(n)}catch{}return[...t].map(e=>_d({name:e,resolvedName:e,label:e,description:``,type:t=>Ld(t,e)?.type||`string`,format:null}))};async function ef(e,{objects:t,includeStages:n=!1,includeListViewsFor:r=[],includeOwners:i=!1,includeTaskMeta:a=!1,writableOnly:o=!1}){if(e.environment===`sandbox`)return{summary:[`Sandbox Salesforce org (demo data — field names below are examples, real orgs differ):`,`- Contact: FirstName, LastName, Email, Title, AccountId, OwnerId, Lead_Score__c (custom)`,`- Lead: FirstName, LastName, Email, Company, Status (options: Open - Not Contacted, Working - Contacted), IsConverted`,`- Account: Name, Website, Industry (picklist), NumberOfEmployees, AnnualRevenue`,`- Opportunity: Name, StageName (stages: Prospecting, Negotiation, Closed Won), Amount, CloseDate, IsClosed, IsWon`,"Use field API names verbatim (`__c` suffix = custom). Call this tool against a production connection for the org's real shape."].join(`
|
|
69
|
+
`)};let s=e.connectionSecrets.salesforce;if(!s)return null;let c={},l=[];try{let[e]=await Vd(s,`SELECT IsSandbox, OrganizationType FROM Organization`),t=null,n=!1;try{let e=await Vd(s,`SELECT IsoCode FROM CurrencyType WHERE IsCorporate = true`);n=!0,t=e[0]?.IsoCode??null}catch{n=!1}c.org={is_sandbox:e?.IsSandbox??null,edition:e?.OrganizationType??null,multi_currency:n,corporate_currency_iso:t},l.push(`Org: ${e?.OrganizationType??`unknown edition`}${e?.IsSandbox?` (SANDBOX — tokens die on refresh, emails end in .invalid)`:``}${n?`; multi-currency (corporate ${t}) — prefix amount literals like ${t}5000`:``}.`)}catch{}for(let e of t){let t=await Bd(s,`/services/data/${Rd}/sobjects/${encodeURIComponent(e)}/describe`),n=t.fields.filter(e=>!o||e.updateable&&!e.calculated).map(e=>({name:e.name,label:e.label,type:e.type,updateable:e.updateable,createable:e.createable,external_id:e.externalId||void 0,read_only:e.calculated||!e.updateable?!0:void 0,restricted_picklist:e.restrictedPicklist||void 0,reference_to:e.referenceTo?.length?e.referenceTo:void 0,relationship_name:e.relationshipName??void 0,picklist_values:e.picklistValues?.length?e.picklistValues.filter(e=>e.active).slice(0,25).map(e=>e.value):void 0}));c[e]=n,e===`Account`&&t.fields.some(e=>e.name===`IsPersonAccount`)&&(c.has_person_accounts=!0,l.push(`Person Accounts are ENABLED: B2C people live as Accounts (PersonEmail); Account.Name is read-only on them.`));let r=n.filter(e=>e.restricted_picklist).map(e=>e.name);l.push(`${e}: ${n.length} fields${o?` (writable only)`:``}. Restricted picklists (values validated): ${r.join(`, `)||`none`}.`)}if(n)try{let e=await Vd(s,`SELECT ApiName, MasterLabel, IsClosed, IsWon, SortOrder FROM OpportunityStage ORDER BY SortOrder ASC`);c.opportunity_stages=e,l.push(`Opportunity stages (use ApiName verbatim; never assume "Closed Won" exists): ${e.map(e=>`${e.ApiName}${e.IsWon?`(won)`:e.IsClosed?`(closed)`:``}`).join(`, `)}.`)}catch{}for(let e of r)try{let t=await Bd(s,`/services/data/${Rd}/sobjects/${encodeURIComponent(e)}/listviews`);c[`${e}_list_views`]=t.listviews.slice(0,25)}catch{}if(i)try{c.active_owners_sample=await Vd(s,`SELECT Id, Name, Email FROM User WHERE IsActive = true ORDER BY Name ASC LIMIT 25`)}catch{}if(a)try{let e=await Vd(s,`SELECT ApiName, MasterLabel, IsClosed FROM TaskStatus ORDER BY SortOrder ASC`);c.task_statuses=e,l.push(`Task statuses (write the ApiName verbatim; labels localize): ${e.map(e=>`${e.ApiName}${e.IsClosed?`(closed)`:``}`).join(`, `)}.`,"Logging a call = a Task with subtype `call`; an email = subtype `email`. WhoId takes a Contact or Lead; WhatId takes an Account, Opportunity, or custom object. Reruns WITHOUT an idempotency key create duplicate tasks — set an external-id field + value to make logging rerun-safe.")}catch{}return l.push("Use field API names verbatim (`__c` = custom, `ns__Field__c` = managed package).",`Converted leads are read-only; duplicate rules may block writes (the error lists matching records).`,`Fields absent here may still exist but be hidden from the connected user by field-level security — and 'no match' can mean 'no record access' under private sharing.`),{summary:l.join(`
|
|
70
|
+
`),data:c}}const tf=g(`company_domain`),nf=g(`salesforce_accounts_found_count`),rf=g(`salesforce_record_id`),af=g(`salesforce_account_matches`),of=`account:match:salesforce@1`,sf=r.object({pipe_id:r.literal(of),run_if:b(),connector:S(),config:r.object({website_field:xu({sectionKey:`general`,inputType:`text`,label:`Website field`,groupPath:`config.general`,path:`config.website_field`,placeholder:`Website`,info:"The Account field holding the company web address. Salesforce has NO standard domain field — matching normalizes this field's URL spellings. Point it at a custom field like `Domain__c` if your org keeps clean domains there."}).default(`Website`),custom_properties:fu({sectionKey:`general`,label:`Custom fields`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`AnnualRevenue`,info:"Field API names added to each match JSON under `custom_properties` (standard-set names are already top-level)."}),input_fields:F(r.object({[tf.name]:w({fieldName:tf.name})})),output_fields:P(r.object({[nf.name]:D({fieldName:nf.name}),[rf.name]:D({fieldName:rf.name}),[af.name]:D({fieldName:af.name})}))}).optional()}),cf=e=>R(G(tf,e)),lf={"account-match-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},uf=class extends B{pipeId=of;payload;payloadSchema=sf;billableOperations=lf;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`salesforce`]}estimateBillableOperations(e){return H(e,`account-match-salesforce-v1-salesforce`)}getInputRequirement(){return cf(this.payload.config)}getRawOutputFields(){return{[nf.name]:this.catalogOutput(nf),[rf.name]:this.catalogOutput(rf),[af.name]:this.catalogOutput(af)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return ef(e,{objects:[`Account`]})}},df=sf,ff={pipeId:of,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(of),label:`Salesforce account match`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Find accounts in your Salesforce org by company domain. Salesforce has no domain field, so the match probes exact spellings of the Website URL (never substring matching). Multiple matches are normal; a clean miss completes with count = 0.`,tags:[V.WEBSITE],keywords:[`crm`,`sfdc`,`company`,`lookup`,`exists`,`dedupe`,`domain`],docPath:W(of),guide:"Matching is exact-IN over ~10 generated Website spellings (acme.com, www.acme.com, https variants…) — exotic stored formats (acme.com/about-us) will miss; the org-side fix is a clean custom field targeted via `website_field`. Person accounts are excluded. `salesforce_record_id` = the OLDEST match (CreatedDate ASC — usually the canonical record); all matches ride in the matches JSON. found_count = 0 is a successful result.",billableOperations:lf,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:cf(null),defaultPayload:{pipe_id:of,connector:{strategy:`first`,connections:[]},run_if:null,config:{website_field:`Website`,custom_properties:[],input_fields:{company_domain:{alias:``}},output_fields:{salesforce_accounts_found_count:{alias:``,enabled:!0},salesforce_record_id:{alias:``,enabled:!0},salesforce_account_matches:{alias:``,enabled:!0}}}}},pf=[`eq`,`neq`,`gt`,`gte`,`lt`,`lte`],mf=[`eq`,`neq`,`contains`],hf={text:{operators:mf,filterTarget:null,flatten:`scalar`,columnType:`string`},number:{operators:pf,filterTarget:null,flatten:`scalar`,columnType:`number`},rating:{operators:pf,filterTarget:null,flatten:`scalar`,columnType:`number`},currency:{operators:pf,filterTarget:`currency_value`,flatten:`currency`,columnType:`number`},date:{operators:pf,filterTarget:null,flatten:`scalar`,columnType:`string`},timestamp:{operators:pf,filterTarget:null,flatten:`scalar`,columnType:`string`},checkbox:{operators:[`eq`],filterTarget:null,flatten:`scalar`,columnType:`boolean`},select:{operators:[`eq`],filterTarget:null,flatten:`select_titles`,columnType:`string`},status:{operators:[`eq`],filterTarget:null,flatten:`status_title`,columnType:`string`},"personal-name":{operators:[`eq`,`neq`,`contains`],filterTarget:`full_name`,explicitTargets:[`first_name`,`last_name`,`full_name`],flatten:`personal_name`,columnType:`string`},"email-address":{operators:[`eq`,`neq`,`contains`],filterTarget:`email_address`,explicitTargets:[`email_address`,`email_domain`,`email_root_domain`,`email_local_specifier`,`original_email_address`],flatten:`email_join`,columnType:`string`},domain:{operators:[`eq`,`neq`,`contains`],filterTarget:`domain`,explicitTargets:[`domain`,`root_domain`],flatten:`domain_join`,columnType:`string`},"phone-number":{operators:[`eq`,`neq`,`contains`],filterTarget:`phone_number`,explicitTargets:[`phone_number`,`original_phone_number`,`country_code`],flatten:`phone_join`,columnType:`string`},location:{operators:[`eq`,`neq`,`contains`],filterTarget:null,requiresExplicitTarget:!0,explicitTargets:[`line_1`,`line_2`,`line_3`,`line_4`,`locality`,`region`,`postcode`,`country_code`],flatten:`location`,columnType:`string`},"record-reference":{operators:[`eq`],filterTarget:`target_record_id`,explicitTargets:[`target_record_id`,`target_object`],flatten:`record_refs`,columnType:`string`},"actor-reference":{operators:[`eq`],filterTarget:null,actorCompound:!0,flatten:`actor_ref`,columnType:`string`},interaction:{operators:pf,filterTarget:`interacted_at`,explicitTargets:[`interacted_at`,`interaction_type`],flatten:`interaction`,columnType:`string`}};function gf(e){return hf[e]??{operators:mf,filterTarget:null,flatten:`scalar`,columnType:`string`}}function _f(){let e=[];for(let[t,n]of Object.entries(hf)){if(n.filterRejection){e.push(`- ${t}: not filterable (${n.filterRejection})`);continue}let r=n.requiresExplicitTarget?` (name a sub-property: ${n.explicitTargets?.join(`, `)})`:n.filterTarget?` (targets ${n.filterTarget}${n.explicitTargets?`; also: ${n.explicitTargets.join(`, `)}`:``})`:``;e.push(`- ${t}: ${n.operators.join(`, `)}${r}`)}return e.join(`
|
|
71
|
+
`)}async function vf(e,t){let n=await fetch(`https://api.attio.com/v2${t}`,{headers:{Authorization:`Bearer ${e}`},signal:AbortSignal.timeout(1e4)});if(!n.ok)throw new K.HttpError({msg:await n.text()});return await n.json()}function yf(e,t){if(!t)return e;let n=t.toLowerCase();return e.filter(e=>e.label.toLowerCase().includes(n))}const bf=(e,t)=>{let n=e?.config?.[t],r=Array.isArray(n)?n[0]:n;return typeof r==`string`&&r?r:void 0},xf={requires:{connection:`attio`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return yf([{label:`Person`,value:`people`},{label:`Company`,value:`companies`},{label:`Deal`,value:`deals`},{label:`Demo · Listing (custom)`,value:`listings`}],e);if(!t)throw new K.MissingSecretError({providerName:`attio`});return yf((await vf(t,`/objects`)).data.map(e=>({label:e.singular_noun,value:e.api_slug})),e)},widgets:{provider_logo:{provider:`attio`}}},Sf={requires:{connection:`attio`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return[{label:`Demo · Lead`,value:`Lead`},{label:`Demo · In Progress`,value:`In Progress`},{label:`Demo · Won 🎉`,value:`Won 🎉`}];if(!t)throw new K.MissingSecretError({providerName:`attio`});return yf((await vf(t,`/objects/deals/attributes/stage/statuses`)).data.filter(e=>!e.is_archived).map(e=>({label:e.title,value:e.title})),e)},widgets:{provider_logo:{provider:`attio`}}},Cf={requires:{connection:`attio`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return[{label:`Demo · Sales (parent: companies)`,value:`sales`},{label:`Demo · Hiring (parent: people)`,value:`hiring`}];if(!t)throw new K.MissingSecretError({providerName:`attio`});return yf((await vf(t,`/lists`)).data.map(e=>({label:`${e.name} (parent: ${e.parent_object.join(`, `)||`unknown`})`,value:e.api_slug})),e)},widgets:{provider_logo:{provider:`attio`}}},wf=e=>({requires:{connection:`attio`,fields:[`config.${e}`]},options:async({query:t,secret:n,payload:r,environment:i})=>{if(i===`sandbox`)return[{label:`Demo · Qualified`,value:`Qualified`},{label:`Demo · Negotiation`,value:`Negotiation`}];if(!n)throw new K.MissingSecretError({providerName:`attio`});let a=bf(r,e);if(!a)return[];let o=(await vf(n,`/lists/${encodeURIComponent(a)}/attributes?limit=500`)).data.find(e=>e.type===`status`&&!e.is_archived);return o?yf((await vf(n,`/lists/${encodeURIComponent(a)}/attributes/${encodeURIComponent(o.api_slug)}/statuses`)).data.filter(e=>!e.is_archived).map(e=>({label:e.title,value:e.title})),t):[]},widgets:{provider_logo:{provider:`attio`}}}),Tf=e=>({requires:{connection:`attio`,...e.fromField?{fields:[`config.${e.fromField}`]}:{}},options:async({query:t,secret:n,payload:r,environment:i})=>{if(i===`sandbox`)return[{label:`Demo · All records`,value:`sandbox-view-1`},{label:`Demo · My focus list`,value:`sandbox-view-2`}];if(!n)throw new K.MissingSecretError({providerName:`attio`});let a=e.identifier??(e.fromField?bf(r,e.fromField):void 0);return a?yf((await vf(n,`/${e.target}/${encodeURIComponent(a)}/views`)).data.map(e=>({label:e.title,value:e.id.view_id})),t):[]},widgets:{provider_logo:{provider:`attio`}}}),Ef=e=>{let t=[e.first_name,e.last_name].filter(Boolean).join(` `);return t?`${t}${e.email_address?` (${e.email_address})`:``}`:e.email_address??e.id.workspace_member_id},Df={requires:{connection:`attio`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return[{label:`Demo · Ada Lovelace (ada@example.com)`,value:`member-1`},{label:`Demo · Alan Turing (alan@example.com)`,value:`member-2`}];if(!t)throw new K.MissingSecretError({providerName:`attio`});return yf((await vf(t,`/workspace_members`)).data.map(e=>({label:Ef(e),value:e.id.workspace_member_id})),e)},widgets:{provider_logo:{provider:`attio`}}},Of=e=>({requires:{connection:`attio`,fields:[`config.${e}`]},options:async({query:t,secret:n,payload:r,environment:i})=>{if(i===`sandbox`)return[{label:`Demo · Email addresses (email_addresses)`,value:`email_addresses`},{label:`Demo · Listing ref (listing_ref)`,value:`listing_ref`}];if(!n)throw new K.MissingSecretError({providerName:`attio`});let a=bf(r,e);return a?yf((await vf(n,`/objects/${encodeURIComponent(a)}/attributes?limit=500`)).data.filter(e=>e.is_unique&&!e.is_archived).map(e=>({label:`${e.title} (${e.api_slug})`,value:e.api_slug})),t):[]},widgets:{provider_logo:{provider:`attio`}}}),kf=e=>({requires:{connection:`attio`,...e.fromField?{fields:[`config.${e.fromField}`]}:{}},options:async({query:t,secret:n,payload:r,environment:i})=>{if(i===`sandbox`)return yf([{label:`Demo · Watch type (watch_type)`,value:`watch_type`},{label:`Demo · Lead score (lead_score)`,value:`lead_score`}],t);if(!n)throw new K.MissingSecretError({providerName:`attio`});let a=e.identifier??(e.fromField?bf(r,e.fromField):void 0);return a?yf((await vf(n,`/${e.target}/${encodeURIComponent(a)}/attributes?limit=500`)).data.filter(e=>!e.is_system_attribute&&!e.is_archived).map(e=>({label:`${e.title} (${e.api_slug})`,value:e.api_slug})),t):[]},widgets:{provider_logo:{provider:`attio`}}}),Af=e=>({requires:{connection:`attio`,fields:[`config.${e}`]},options:async({query:t,secret:n,payload:r,environment:i})=>{if(i===`sandbox`)return yf([{label:`Demo · Parent · Name (parent.name)`,value:`parent.name`},{label:`Demo · Parent · Watch type (parent.watch_type)`,value:`parent.watch_type`}],t);if(!n)throw new K.MissingSecretError({providerName:`attio`});let a=bf(r,e);if(!a)return[];let o=(await vf(n,`/lists`)).data.find(e=>e.api_slug===a)?.parent_object[0];return o?yf((await vf(n,`/objects/${encodeURIComponent(o)}/attributes?limit=500`)).data.filter(e=>!e.is_archived).map(e=>({label:`Parent · ${e.title} (parent.${e.api_slug})`,value:`parent.${e.api_slug}`})),t):[]},widgets:{provider_logo:{provider:`attio`}}});async function jf(e,{objects:t,includeLists:n=!1,includeViewsFor:r=[],includeMembers:i=!1,writableOnly:a=!1}){if(e.environment===`sandbox`)return{summary:[`Sandbox Attio workspace (demo data — slugs below are examples, real workspaces differ):`,`- objects: people, companies, deals, listings (custom)`,`- people: name (personal-name), email_addresses (unique), job_title, company (record-reference), owner_ref (actor-reference)`,`- deals: name, stage (status; demo titles: Lead, In Progress, Won 🎉), value (currency), owner, associated_company`,`- lists: sales (parent: companies; status attribute stage: Qualified, Negotiation)`,`Call this tool against a production connection to get the workspace's real objects, attributes, and status titles.`].join(`
|
|
72
|
+
`)};let o=e.connectionSecrets.attio;if(!o)return null;let s={},c=[],l=await vf(o,`/objects`),u=new Set([`people`,`companies`,`deals`,`users`,`workspaces`]),d=l.data.filter(e=>!u.has(e.api_slug));s.objects=l.data.map(e=>({api_slug:e.api_slug,singular_noun:e.singular_noun,custom:!u.has(e.api_slug)})),c.push(`Objects: ${l.data.map(e=>e.api_slug).join(`, `)}.`+(d.length>0?` Custom objects present (${d.map(e=>e.api_slug).join(`, `)}) — use records:attio@1 / record:match/lookup/update for them.`:``));let f=t===`discover`?l.data.map(e=>e.api_slug):t;for(let e of f){if(!l.data.some(t=>t.api_slug===e)){c.push(`Object "${e}" is not enabled in this workspace (Deals/Users/Workspaces are opt-in).`);continue}let t=(await vf(o,`/objects/${encodeURIComponent(e)}/attributes?limit=500`)).data.filter(e=>!e.is_archived&&(!a||e.is_writable)),n=await Promise.all(t.map(async t=>{let n;if(t.type===`select`||t.type===`status`){let r=t.type===`select`?`options`:`statuses`;try{n=(await vf(o,`/objects/${encodeURIComponent(e)}/attributes/${encodeURIComponent(t.api_slug)}/${r}`)).data.filter(e=>!e.is_archived).slice(0,50).map(e=>e.title)}catch{n=void 0}}return{api_slug:t.api_slug,title:t.title,type:t.type,is_unique:t.is_unique,is_multiselect:t.is_multiselect,read_only:!t.is_writable,options:n}}));s[e]=n;let r=n.filter(e=>e.options?.length),i=n.filter(e=>e.is_unique),u=t.filter(e=>e.type===`actor-reference`);c.push(`${e}: ${n.length} attributes${a?` (writable only)`:``}. Unique (match keys): ${i.map(e=>e.api_slug).join(`, `)||`none`}. Enumerations with workspace-defined titles: ${r.map(e=>e.api_slug).join(`, `)||`none`}.`+(u.length>0?` Ownership-like actor-references: ${u.map(e=>e.api_slug).join(`, `)} (workspace-defined — never assume a slug).`:``))}if(n){let e=await vf(o,`/lists`);s.lists=e.data.map(e=>({api_slug:e.api_slug,name:e.name,parent_object:e.parent_object})),c.push(`Lists (pipelines live here; entries carry list-level attributes like stage): ${e.data.map(e=>`${e.name} (${e.api_slug}, parent: ${e.parent_object.join(`/`)})`).join(`; `)||`none`}.`)}for(let e of r)try{let t=await vf(o,`/objects/${encodeURIComponent(e)}/views`);s[`views_${e}`]=t.data.map(e=>({id:e.id.view_id,name:e.title})),c.push(`Saved views for ${e} (usable as saved_view): ${t.data.map(e=>e.title).join(`, `)||`none`}.`)}catch{}if(i){let e=await vf(o,`/workspace_members`);s.workspace_members=e.data.map(e=>({id:e.id.workspace_member_id,name:[e.first_name,e.last_name].filter(Boolean).join(` `)||null,email:e.email_address})),c.push(`Workspace members: ${e.data.slice(0,25).map(Ef).join(`, `)}.`)}return c.push(`Use attribute api_slugs and select/status TITLES verbatim (workspace-defined — never assume titles like Won/Lost exist).`,`Filter operator support by attribute type:`,_f()),{summary:c.join(`
|
|
73
|
+
`),data:s}}const Mf=g(`attio_record_id`),Nf=g(`attio_activities_found_count`),Pf=g(`attio_last_activity_date`),Ff=g(`attio_activities`),If=`activities:find:attio@1`,Lf=r.object({pipe_id:r.literal(If),run_if:b(),connector:S(),config:r.object({object:ku({sectionKey:`general`,required:!0,label:`Object`,groupPath:`config.general`,path:`config.object`,info:`The object the record belongs to (people, companies, or a custom object). Notes, meetings, and tasks are linked per record.`,enabledIf:_(`attio`),optionsDef:xf}),input_fields:F(r.object({[Mf.name]:w({fieldName:Mf.name})})),include:Tu({sectionKey:`general`,required:!1,label:`Include`,groupPath:`config.general`,disableSearch:!0,info:`Which Attio activity surfaces to merge into the timeline. Notes and meetings (Call Intelligence) carry the 'what happened'; tasks are open/scheduled follow-ups.`,path:`config.include`,options:[{label:`Notes`,value:`notes`},{label:`Meetings`,value:`meetings`},{label:`Tasks`,value:`tasks`}]}).default([`notes`,`meetings`,`tasks`]),occurred_within:Cu({sectionKey:`general`,required:!1,label:`Time window`,groupPath:`config.general`,path:`config.occurred_within`,description:`Only include activities whose timestamp falls within this window (resolved at run time). 'Any time' returns the most recent activities regardless of age.`,options:[{label:`Any time`,value:``},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`},{label:`Last 90 days`,value:`l90d`}]}).default(``),limit:Eu({sectionKey:`general`,label:`Limit`,groupPath:`config.general`,path:`config.limit`,info:`Max activities returned in the timeline (newest first). The found count reports the true total before this cap.`,min:1,max:50}).default(10),output_fields:P(r.object({[Nf.name]:D({fieldName:Nf.name}),[Pf.name]:D({fieldName:Pf.name}),[Ff.name]:D({fieldName:Ff.name})}))})}),Rf=e=>R(G(Mf,e)),zf={"activities-find-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},Bf=class extends B{pipeId=If;payload;payloadSchema=Lf;billableOperations=zf;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`activities-find-attio-v1-attio`)}getInputRequirement(){return Rf(this.payload.config)}getRawOutputFields(){return{[Nf.name]:this.catalogOutput(Nf),[Pf.name]:this.catalogOutput(Pf),[Ff.name]:this.catalogOutput(Ff)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_generic`,allowManagedConnection:!1}]}async getAgentContext(e){let t=this.payload.config.object,n=Array.isArray(t)?t[0]??``:t;return jf(e,{objects:n?[n]:`discover`})}},Vf=Lf,Hf={pipeId:If,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(If),label:`Attio find activities`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Read the activity timeline of one Attio record — notes, meetings, and tasks linked to it — merged newest-first. A record with no activity completes with found count = 0.`,tags:[V.NEW],keywords:[`crm`,`activity`,`timeline`,`notes`,`meetings`,`tasks`,`engagement`],docPath:W(If),guide:"Map the record's Attio ID into the `attio_record_id` input (chained from a match pipe or search). This merges Attio's activity surfaces — notes, meetings (Call Intelligence), and tasks — into one timeline; pick which via 'Include'. attio_last_activity_date is the chainable staleness gate (run_if on it). For pure recency/relationship signals prefer the read-only interaction attributes on the record itself (pick `last_interaction` in a search or record:lookup) — they need no extra call. Meeting transcripts/summaries live in Attio's separate beta Call Recording API (not surfaced here yet).",billableOperations:zf,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:Rf(null),defaultPayload:{pipe_id:If,connector:{strategy:`first`,connections:[]},run_if:null,config:{object:`people`,input_fields:{attio_record_id:{alias:``}},include:[`notes`,`meetings`,`tasks`],occurred_within:``,limit:10,output_fields:{attio_activities_found_count:{alias:``,enabled:!0},attio_last_activity_date:{alias:``,enabled:!0},attio_activities:{alias:``,enabled:!0}}}}},Uf=g(`salesforce_record_id`),Wf=g(`salesforce_activities_found_count`),Gf=g(`salesforce_last_activity_date`),Kf=g(`salesforce_activities`),qf=`activities:find:salesforce@1`,Jf=r.object({pipe_id:r.literal(qf),run_if:b(),connector:S(),config:r.object({type:Cu({sectionKey:`general`,label:`Activity type`,groupPath:`config.general`,path:`config.type`,defaultValue:`all`,required:!0,options:[{value:`all`,label:`Tasks & events`},{value:`tasks`,label:`Tasks only`},{value:`events`,label:`Events only`}]}),status:Cu({sectionKey:`general`,label:`Status`,groupPath:`config.general`,path:`config.status`,defaultValue:`all`,required:!0,options:[{value:`all`,label:`Any`},{value:`open`,label:`Open`},{value:`completed`,label:`Completed`}]}),occurred_within:Cu({sectionKey:`general`,label:`Time window`,groupPath:`config.general`,path:`config.occurred_within`,required:!1,options:[{value:``,label:`Any time`},{value:`l7d`,label:`Last 7 days`},{value:`l30d`,label:`Last 30 days`},{value:`l90d`,label:`Last 90 days`}]}).default(``),custom_properties:fu({sectionKey:`general`,label:`Custom fields`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`CallDurationInSeconds`,info:"Task/Event field API names added to each activity JSON under `custom_properties` (standard timeline keys are already top-level)."}),limit:Eu({sectionKey:`general`,label:`Limit`,groupPath:`config.general`,path:`config.limit`,info:`Maximum activities returned in the list output. The found count is always the true total before this cap.`,min:1,max:50}).default(10),input_fields:F(r.object({[Uf.name]:w({fieldName:Uf.name})})),output_fields:P(r.object({[Wf.name]:D({fieldName:Wf.name}),[Gf.name]:D({fieldName:Gf.name}),[Kf.name]:D({fieldName:Kf.name})}))})}),Yf=e=>R(G(Uf,e)),Xf={"activities-find-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},Zf=class extends B{pipeId=qf;payload;payloadSchema=Jf;billableOperations=Xf;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`salesforce`]}estimateBillableOperations(e){return H(e,`activities-find-salesforce-v1-salesforce`)}getInputRequirement(){return Yf(this.payload.config)}getRawOutputFields(){return{[Wf.name]:this.catalogOutput(Wf),[Gf.name]:this.catalogOutput(Gf),[Kf.name]:this.catalogOutput(Kf)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return ef(e,{objects:[`Task`,`Event`],includeTaskMeta:!0})}},Qf=Jf,$f={pipeId:qf,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(qf),label:`Salesforce activities`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Read a Salesforce record's activity timeline — tasks and events (calls, emails, meetings) associated with a contact, lead, account, or opportunity. Returns the true activity count, the last-activity date, and the timeline items. An empty timeline completes with count = 0.`,tags:[V.FIELDS],keywords:[`crm`,`sfdc`,`task`,`event`,`call`,`timeline`,`activity`,`history`],docPath:W(qf),guide:"The record-ID input consumes `salesforce_record_id`, which every Salesforce surface emits — chain from a match pipe or search (alias it to point at a differently named column). The ID's prefix picks the anchor automatically: Contact/Lead → WhoId, everything else → WhatId. Tasks and events are queried directly (not via ActivityHistories) so status/type/recency filter server-side. `salesforce_last_activity_date` is the staleness gate — run_if on it (e.g. only act when it's older than 90 days). For an org-wide activity report use query:salesforce@1 with raw SOQL over Task/Event instead. count = 0 is a successful result.",billableOperations:Xf,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:Yf(null),defaultPayload:{pipe_id:qf,connector:{strategy:`first`,connections:[]},run_if:null,config:{type:`all`,status:`all`,occurred_within:``,custom_properties:[],limit:10,input_fields:{salesforce_record_id:{alias:``}},output_fields:{salesforce_activities_found_count:{alias:``,enabled:!0},salesforce_last_activity_date:{alias:``,enabled:!0},salesforce_activities:{alias:``,enabled:!0}}}}};function ep(e,t={}){let n=t.expectedType??`string`,r=new Map;for(let t of e){if(!t)continue;let e;try{e=ec(t)}catch{continue}for(let[t,n]of Object.entries(e.inputs)){let e=r.get(t);r.set(t,{required:e&&e.required||n.required})}}let i=[];for(let[e,t]of r){let r={name:e,resolvedName:e,label:e,description:``,type:t=>Ld(t,e)?.type||n,format:null};i.push(t.required?R(r):_d(r))}return z(...i)}function q(e){let t=new Set;for(let n of e)if(n)try{let e=ec(n);for(let n of e.secrets)t.add(n)}catch{}return[...t]}function tp(e){let t=new Set;for(let n of e)if(n)try{let e=ec(n);for(let n of e.constants)t.add(n)}catch{}return[...t]}const np=[{label:`Contact`,value:`0-1`},{label:`Company`,value:`0-2`},{label:`Deal`,value:`0-3`},{label:`Ticket`,value:`0-5`},{label:`Note`,value:`0-46`},{label:`Task`,value:`0-27`},{label:`Call`,value:`0-48`},{label:`Meeting`,value:`0-47`},{label:`Email`,value:`0-49`}],rp={note:`0-46`,task:`0-27`,call:`0-48`,meeting:`0-47`,email:`0-49`},ip=e=>{let t=new Set;for(let n of e)if(n)try{let e=ec(n);for(let n of Object.keys(e.inputs))t.add(n)}catch{}return[...t].map(e=>_d({name:e,resolvedName:e,label:e,description:``,type:t=>Ld(t,e)?.type||`string`,format:null}))};async function ap(e,t){let n=await fetch(`https://api.hubapi.com${t}`,{headers:{Authorization:`Bearer ${e}`},signal:AbortSignal.timeout(1e4)});if(!n.ok)throw new K.HttpError({msg:await n.text()});return await n.json()}function op(e,t){if(!t)return e;let n=t.toLowerCase();return e.filter(e=>e.label.toLowerCase().includes(n))}const sp=e=>({requires:{connection:`hubspot`},options:async({query:t,secret:n,environment:r})=>{if(r===`sandbox`)return[{label:`Demo · Sales pipeline`,value:`sandbox-pipeline-1`},{label:`Demo · Renewals`,value:`sandbox-pipeline-2`}];if(!n)throw new K.MissingSecretError({providerName:`hubspot`});return op((await ap(n,`/crm/v3/pipelines/${encodeURIComponent(e)}`)).results.map(e=>({label:e.label,value:e.id})),t)},widgets:{provider_logo:{provider:`hubspot`}}}),cp={requires:{connection:`hubspot`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return op([...np,{label:`Demo · Domain map (custom)`,value:`2-000001`}],e);if(!t)throw new K.MissingSecretError({providerName:`hubspot`});let r=[];try{r=(await ap(t,`/crm-object-schemas/v3/schemas`)).results.map(e=>({label:`${e.labels?.singular||e.name} (custom)`,value:e.objectTypeId}))}catch{r=[]}return op([...np,...r],e)},widgets:{provider_logo:{provider:`hubspot`}}},lp={requires:{connection:`hubspot`,fields:[`config.from_object_type`,`config.to_object_type`]},options:async({query:e,secret:t,payload:n,environment:r})=>{if(r===`sandbox`)return[{label:`Primary`,value:`1`},{label:`Demo · Decision maker`,value:`35`}];if(!t)throw new K.MissingSecretError({providerName:`hubspot`});let i=n?.config,a=i?.from_object_type,o=i?.to_object_type;return!a||!o?[]:op((await ap(t,`/crm/v4/associations/${encodeURIComponent(a)}/${encodeURIComponent(o)}/labels`)).results.map(e=>({label:e.label||`Unlabeled (${e.category.toLowerCase().replace(`_`,` `)})`,value:String(e.typeId)})),e)},widgets:{provider_logo:{provider:`hubspot`}}},up={requires:{connection:`hubspot`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return[{label:`Demo · Ada Lovelace (ada@example.com)`,value:`1001`},{label:`Demo · Alan Turing (alan@example.com)`,value:`1002`}];if(!t)throw new K.MissingSecretError({providerName:`hubspot`});return op((await ap(t,`/crm/v3/owners?limit=500`)).results.map(e=>({label:[e.firstName,e.lastName].filter(Boolean).join(` `)+(e.email?` (${e.email})`:``),value:e.id})),e)},widgets:{provider_logo:{provider:`hubspot`}}},dp=(e,t)=>({requires:{connection:`hubspot`},options:async({query:n,secret:r,environment:i})=>{if(i===`sandbox`)return[{label:`Demo · Lead`,value:`lead`},{label:`Demo · Customer`,value:`customer`},{label:`Demo · Custom stage`,value:`12345678`}];if(!r)throw new K.MissingSecretError({providerName:`hubspot`});return op(((await ap(r,`/crm/v3/properties/${encodeURIComponent(e)}/${encodeURIComponent(t)}`)).options??[]).filter(e=>!e.hidden).map(e=>({label:e.label,value:e.value})),n)},widgets:{provider_logo:{provider:`hubspot`}}}),fp={requires:{connection:`hubspot`,fields:[`config.filters.pipeline`]},options:async({query:e,secret:t,payload:n,environment:r})=>{if(r===`sandbox`)return[{label:`Demo · Qualified (Sales pipeline)`,value:`qualifiedtobuy`},{label:`Demo · Closed won (Sales pipeline)`,value:`closedwon`}];if(!t)throw new K.MissingSecretError({providerName:`hubspot`});let i=(n?.config)?.filters?.pipeline,a=Array.isArray(i)?i[0]:i,o=await ap(t,`/crm/v3/pipelines/deals`);return op((a?o.results.filter(e=>e.id===a):o.results).flatMap(e=>e.stages.map(t=>({label:`${t.label} (${e.label})`,value:t.id}))),e)},widgets:{provider_logo:{provider:`hubspot`}}};async function pp(e,{objectTypes:t,includePipelinesFor:n=[],writableOnly:r=!1}){if(e.environment===`sandbox`)return{summary:[`Sandbox HubSpot portal (demo data — property names below are examples, real portals differ):`,`- contacts: email, firstname, lastname, lifecyclestage (options: subscriber, lead, customer, demo_stage_1), hubspot_owner_id, custom_score`,`- companies: name, domain, industry, numberofemployees, hubspot_owner_id`,`- deals: dealname, pipeline, dealstage, amount, closedate`,`Call this tool against a production connection to get the portal's real properties.`].join(`
|
|
74
|
+
`)};let i=e.connectionSecrets.hubspot;if(!i)return null;let a={},o=[];for(let[e,n]of t){let t=(await ap(i,`/crm/v3/properties/${encodeURIComponent(n)}`)).results.filter(e=>!r||!(e.calculated||e.modificationMetadata?.readOnlyValue)).map(e=>({name:e.name,label:e.label,type:e.type,options:e.options?.filter(e=>!e.hidden).slice(0,50).map(e=>({label:e.label,value:e.value}))??void 0,read_only:!!(e.calculated||e.modificationMetadata?.readOnlyValue)}));a[e]=t;let s=t.filter(e=>e.options?.length);o.push(`${e} (${n}): ${t.length} properties${r?` (writable only)`:``}. Enumerations with portal-specific option values: ${s.map(e=>e.name).join(`, `)||`none`}.`)}let s={};for(let e of n){let t=await ap(i,`/crm/v3/pipelines/${encodeURIComponent(e)}`);s[e]=t.results.map(e=>({id:e.id,label:e.label,stages:e.stages.map(e=>({id:e.id,label:e.label}))})),o.push(`Pipelines for ${e}: ${t.results.map(e=>`${e.label} (${e.id}) with stages ${e.stages.map(e=>`${e.label}=${e.id}`).join(`, `)}`).join(`; `)}.`)}return n.length>0&&(a.pipelines=s),o.push(`Use internal property names and enumeration option VALUES verbatim (labels differ). Values in filters are case-sensitive.`),{summary:o.join(`
|
|
75
|
+
`),data:a}}const mp=g(`hubspot_object_id`),hp=g(`hubspot_activity_result`),gp=`activity:log:hubspot@1`,_p=(e,t)=>{let n=e.value;for(let r of Object.keys(n[t]??{})){let n=r.trim();if(!n)continue;let i=n=>e.issues.push({code:`custom`,input:r,message:n,path:[t,r]});if(n.includes(`{{`)){i("Property name must be a literal internal name (no `{{ }}` templating).");continue}/^[a-z][a-z0-9_]*$/.test(n)||i(`Invalid HubSpot property name "${n}" — internal names are lowercase letters, digits, and underscores.`)}},vp=r.object({pipe_id:r.literal(gp),run_if:b(),connector:S(),config:r.object({type:Cu({sectionKey:`general`,label:`Activity type`,groupPath:`config.general`,path:`config.type`,defaultValue:`note`,required:!0,options:[{value:`note`,label:`Note`},{value:`task`,label:`Task`},{value:`call`,label:`Call`},{value:`email`,label:`Email`},{value:`meeting`,label:`Meeting`}]}),subject:x({sectionKey:`general`,label:`Subject / title`,inputType:`text`,expectedTagType:`string`,expectedTagFormat:`text`,groupPath:`config.general`,path:`config.subject`,placeholder:`Follow up with {{ first_name }}`,info:`The engagement's title (task subject, call/meeting/email title). Ignored for notes.`}),body:Su({sectionKey:`general`,label:`Body`,groupPath:`config.general`,path:`config.body`,rows:3,placeholder:`Enriched via pipe0.`,info:"The engagement's body / note text. Type `/` to insert a field reference."}),timestamp:x({sectionKey:`general`,label:`Timestamp`,inputType:`text`,expectedTagType:`string`,expectedTagFormat:`text`,groupPath:`config.general`,path:`config.timestamp`,placeholder:`2026-07-08T09:00:00Z`,info:`Optional ISO timestamp or epoch ms (HubSpot requires one on every engagement). Empty = now.`}),record_object_type:ku({sectionKey:`general`,required:!0,label:`Record object type`,groupPath:`config.general`,path:`config.record_object_type`,info:`The type of the record being associated (contacts, companies, deals, or a custom object).`,enabledIf:_(`hubspot`),optionsDef:cp}),owner:ku({sectionKey:`general`,required:!1,label:`Owner`,groupPath:`config.general`,path:`config.owner`,info:`The HubSpot owner to assign the engagement to (hubspot_owner_id). Empty = unassigned.`,enabledIf:_(`hubspot`),optionsDef:up}),values:hu({sectionKey:`general`,groupPath:`config.general`,path:`config.values`,label:`Additional properties`,info:"Extra engagement properties → values by internal name (e.g. `hs_task_status`, `hs_task_priority`, `hs_call_direction`). Type `/` in the Value column to insert a field reference. Blank values are skipped.",keyLabel:`Property name`,valueLabel:`Value`,keyPlaceholder:`hs_task_status`,valuePlaceholder:`NOT_STARTED`,maxKeys:50}),input_fields:F(r.object({[mp.name]:w({fieldName:mp.name})})),output_fields:P(r.object({[hp.name]:D({fieldName:hp.name})}))}).check(e=>_p(e,`values`))}),yp=e=>R(G(mp,e)),bp={"activity-log-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},xp=class extends B{pipeId=gp;payload;payloadSchema=vp;billableOperations=bp;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`hubspot`]}estimateBillableOperations(e){return H(e,`activity-log-hubspot-v1-hubspot`)}getTemplates(){return[this.payload.config.subject,this.payload.config.body,this.payload.config.timestamp,...Object.values(this.payload.config.values??{})].filter(e=>!!e)}getInputRequirement(){return z(yp(this.payload.config),...ip(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[hp.name]:this.catalogOutput(hp)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_generic`,allowManagedConnection:!1}]}async getAgentContext(e){let t=this.payload.config.type,n=rp[t]??`0-46`;return pp(e,{objectTypes:[[`${t} engagement`,n]],writableOnly:!0})}},Sp=vp,Cp={pipeId:gp,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(gp),label:`HubSpot log activity`,executionMode:`single`,categories:[`actions`,`integrations`],lifecycle:null,description:`Log an activity in HubSpot — a note, task, call, email, or meeting engagement — and associate it with a contact, company, deal, or custom object so it shows on the record's timeline.`,tags:[V.FIELDS],keywords:[`crm`,`note`,`task`,`call`,`email`,`engagement`,`meeting`,`timeline`],docPath:W(gp),guide:"Engagements are HubSpot's activity objects; this creates one and associates it (default association) to the record so it renders on the timeline. The record input consumes `hubspot_object_id`, which every HubSpot surface emits — chain from a match pipe or search; the record object type must match the record the ID belongs to. Subject maps per type (task subject, call/meeting/email title; ignored for notes); body maps to the type's body property. Put type-specific extras (e.g. `hs_task_status`, `hs_call_direction`) in Additional properties by internal name. To leave a CRM trace after sending, chain this after `email:send:*` with a run_if on the send-success output. HubSpot has no upsert for engagements — reruns create duplicate activities (the whole ecosystem shares this limitation).",billableOperations:bp,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:yp(null),defaultPayload:{pipe_id:gp,connector:{strategy:`first`,connections:[]},run_if:null,config:{type:`note`,subject:``,body:``,timestamp:``,record_object_type:`0-1`,owner:``,values:{},input_fields:{hubspot_object_id:{alias:``}},output_fields:{hubspot_activity_result:{alias:``,enabled:!0}}}}},wp=g(`salesforce_record_id`),Tp=g(`salesforce_activity_result`),Ep=`activity:log:salesforce@1`,Dp=(e,t)=>{let n=e.value;for(let r of Object.keys(n[t]??{})){let n=r.trim();if(!n)continue;let i=n=>e.issues.push({code:`custom`,input:r,message:n,path:[t,r]});if(n.includes(`{{`)){i("Field name must be a literal API name (no `{{ }}` templating).");continue}if(n.includes(`.`)){i(`Invalid field name "${n}" — dotted paths cannot be written on a Task.`);continue}/^[a-zA-Z][a-zA-Z0-9_]*$/.test(n)||i(`Invalid Salesforce field name "${n}" — API names are letters, digits, and underscores (custom fields end in __c).`)}},Op=r.object({pipe_id:r.literal(Ep),run_if:b(),connector:S(),config:r.object({subject:x({sectionKey:`general`,label:`Subject`,inputType:`text`,minLength:1,expectedTagType:`string`,expectedTagFormat:`text`,groupPath:`config.general`,path:`config.subject`,placeholder:`Emailed {{ first_name }}`,info:`The activity subject line — the headline shown on the timeline.`}),body:Su({sectionKey:`general`,label:`Comments`,groupPath:`config.general`,path:`config.body`,rows:3,placeholder:`Sent via pipe0.`,info:"Optional activity description / comments. Type `/` to insert a field reference."}),subtype:Cu({sectionKey:`general`,label:`Type`,groupPath:`config.general`,path:`config.subtype`,defaultValue:`task`,required:!0,options:[{value:`task`,label:`Task`},{value:`call`,label:`Call`},{value:`email`,label:`Email`}]}),status:ku({sectionKey:`general`,required:!1,label:`Status`,groupPath:`config.general`,path:`config.status`,info:`The task status (from the org's TaskStatus values). Empty = the org default. Marking a closed status sets the record's LastActivityDate.`,enabledIf:_(`salesforce`),optionsDef:Jd}),related_record:x({sectionKey:`general`,label:`Related record`,inputType:`text`,expectedTagType:`string`,expectedTagFormat:`text`,groupPath:`config.general`,path:`config.related_record`,placeholder:`001KJ000001xyzDIA2`,info:`Optional: the Account, Opportunity, or custom record this activity relates to (WhatId). At least one of related person / related record is required.`}),activity_date:x({sectionKey:`general`,label:`Activity date`,inputType:`text`,expectedTagType:`string`,expectedTagFormat:`text`,groupPath:`config.general`,path:`config.activity_date`,placeholder:`2026-07-08`,info:`Optional due/logged date (YYYY-MM-DD). Empty = today.`}),owner:ku({sectionKey:`general`,required:!1,label:`Assigned to`,groupPath:`config.general`,path:`config.owner`,info:`The Salesforce user the task is assigned to (OwnerId). Empty = the connected user.`,enabledIf:_(`salesforce`),optionsDef:Kd}),external_id_field:ku({sectionKey:`general`,required:!1,label:`Idempotency key field`,groupPath:`config.general`,path:`config.external_id_field`,info:`Optional. A custom External ID field on Activity/Task — with a value below, logging becomes rerun-safe (upsert): the same key updates instead of creating a duplicate.`,enabledIf:_(`salesforce`),optionsDef:Yd}),external_id_value:x({sectionKey:`general`,label:`Idempotency key value`,inputType:`text`,expectedTagType:`string`,expectedTagFormat:`text`,groupPath:`config.general`,path:`config.external_id_value`,placeholder:`{{ email }}-outreach-2026-07`,info:`The unique value for the idempotency key field. Required only when an idempotency key field is selected.`}),values:hu({sectionKey:`general`,groupPath:`config.general`,path:`config.values`,label:`Additional fields`,info:"Extra Task field API names → values (e.g. `Priority`, custom fields). Field = the Salesforce API name; in the Value column type `/` to insert a field reference. Blank values are skipped.",keyLabel:`Field API name`,valueLabel:`Value`,keyPlaceholder:`Priority`,valuePlaceholder:`High`,maxKeys:50}),input_fields:F(r.object({[wp.name]:w({fieldName:wp.name})})),output_fields:P(r.object({[Tp.name]:D({fieldName:Tp.name})}))}).check(e=>Dp(e,`values`))}),kp=e=>_d(G(wp,e)),Ap={"activity-log-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},jp=class extends B{pipeId=Ep;payload;payloadSchema=Op;billableOperations=Ap;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`salesforce`]}estimateBillableOperations(e){return H(e,`activity-log-salesforce-v1-salesforce`)}getTemplates(){return[this.payload.config.subject,this.payload.config.body,this.payload.config.related_record,this.payload.config.activity_date,this.payload.config.external_id_value,...Object.values(this.payload.config.values??{})].filter(e=>!!e)}getInputRequirement(){return z(kp(this.payload.config),...$d(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[Tp.name]:this.catalogOutput(Tp)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return ef(e,{objects:[`Task`],includeTaskMeta:!0,writableOnly:!0})}},Mp=Op,Np={pipeId:Ep,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Ep),label:`Salesforce log activity`,executionMode:`single`,categories:[`actions`,`integrations`],lifecycle:null,description:`Log an activity in Salesforce as a Task (the native 'Log a Call' idiom — subtype call/email/task) against a contact, lead, account, or opportunity. Optionally rerun-safe via an External ID idempotency key.`,tags:[V.FIELDS],keywords:[`crm`,`sfdc`,`task`,`call`,`email`,`write`,`note`,`touch`],docPath:W(Ep),guide:"Logging a call/email is creating a Task with the matching subtype — exactly what Salesforce's 'Log a Call' button does. The related-person input consumes `salesforce_record_id` (WhoId: Contact/Lead — optional, chain from a match pipe); and/or set a related record (WhatId: Account/Opportunity/custom, literal or `{{ column }}`); at least one is required per row. Status comes from the org's TaskStatus values (empty = org default; a closed status sets the record's LastActivityDate). To leave a CRM trace after sending, chain this after `email:send:*` with a run_if on the send-success output (`gmail_email_success` / `resend_email_success`). Reruns WITHOUT an idempotency key create duplicate tasks — set the External ID field + value to make it rerun-safe (the same key updates instead of duplicating).",billableOperations:Ap,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:kp(null),defaultPayload:{pipe_id:Ep,connector:{strategy:`first`,connections:[]},run_if:null,config:{subject:``,body:``,subtype:`task`,status:``,related_record:``,activity_date:``,owner:``,external_id_field:``,external_id_value:``,values:{},input_fields:{salesforce_record_id:{alias:``}},output_fields:{salesforce_activity_result:{alias:``,enabled:!0}}}}},Pp={title:`Software Engineer, CEO, ...`,seniority:`C-Suite, Senior, ...`,department:`Consulting, Finance, ...`,certification:`CISSP, AWS, ...`,crunchbase_category:`3D Printing, Big Date, ...`,honor:`Cum Laude, 40 Under 40, ...`,field_of_study:`Engineering, Computer Science, ...`,degree_name:`Bachelor of Science, ...`,extracurricular:`Athelete, Debate Team, ...`,job_function:`Accounting, Advertising, ...`,location:`United States, Germany, France, ...`,company_name:`Google, Anthropic, ...`,company_domain:`google.com, openai.com, ...`,company_profile_keyword:`B2B, Software, ...`,headline_keywords:`Founder, JavaScript, ...`,profile_keywords:`Coach, Scrum, ...`,languages:`German, English, ...`,languages_1:`Spanish, Italian, ...`,skills:`TypeScript, Playwright, ...`,industry:`IT, Agriculture, ...`,investor:`a16z, Inside Partners, ...`,school:`MIT, Harvard, ...`,person_profile_url:`https://www.linkedin.com/in/janedoe, ...`,person_name:`Jane Doe, John Smith, ...`,prompt:`Enter prompt here...`,template:`Enter template here...`};function J(e){return Pp[e]}const Fp=`agent:run@1`,Ip=`agent-run-v1`,Lp=[{value:`web_researcher`,label:`Web researcher`,widgets:{emoji:{char:`🔎`}}}],Rp={...Xc(Ip),"agent-run-v1-search-parallel":{allowManagedConnection:!0,provider:`parallel`,credits:{default:.2},mode:`always`,note:`Billed per web search the agent performs.`},"agent-run-v1-extract-parallel":{allowManagedConnection:!0,provider:`parallel`,credits:{default:.1},mode:`always`,note:`Billed per URL-extraction call the agent performs.`}},zp=r.object({pipe_id:r.literal(Fp),connector:C(),run_if:b(),config:r.object({agent_type:Cu({sectionKey:`general`,groupPath:`config.prompt`,path:`config.agent_type`,label:`Agent type`,defaultValue:`web_researcher`,options:[...Lp],required:!0}),prompt:Wl({sectionKey:`general`,path:`config.prompt`,placeholder:J(`prompt`),groupPath:`config.prompt`,supportedTags:[`input`,`output`]}),model:wu({sectionKey:`general`,label:`Model`,path:`config.model`,groupPath:`config.prompt`,billableOperations:Rp,defaultValue:Bc})})}),Bp=class extends B{pipeId=Fp;payload;payloadSchema=zp;billableOperations=Rp;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[...Uc(this.payload.config.model),`parallel`]}estimateBillableOperations(e){return[...Qc(e,{model:this.payload.config.model,prefix:Ip,inputTokens:2e4,outputTokens:1500}),{billableOperation:`agent-run-v1-search-parallel`,quantity:e.count*4},{billableOperation:`agent-run-v1-extract-parallel`,quantity:e.count*1}]}getInputRequirement(){return ep([this.payload.config.prompt.template])}getSecretRequirements(){return q([this.payload.config.prompt.template])}getConstantRequirements(){return tp([this.payload.config.prompt.template])}getRawOutputFields(){let e=this.payload.config.prompt.template,t=this.payload.config.prompt.json_schemas??{},n={},r;try{r=ec(e)}catch{return n}for(let e of r.outputs){let r=e.type;if(r===`json`){let i=e.schemaRef?t[e.schemaRef]:void 0;n[e.name]={enabled:!0,name:e.name,label:e.name,resolvedName:e.name,type:r,description:e.description,jsonMeta:{zodSchema:i,exampleValue:null},format:null,isCatalogFIeld:!1,isPrimaryOutput:!1}}else n[e.name]={enabled:!0,name:e.name,label:e.name,resolvedName:e.name,type:r,description:e.description,jsonMeta:null,format:e.format??null,isCatalogFIeld:!1,isPrimaryOutput:!1}}return n}getConnectionsRequirements(){return[...Wc(this.payload.config.model),{provider:`parallel`,rateLimitRatio:4,rateLimitOperation:`parallel_search_base`,allowManagedConnection:!0},{provider:`parallel`,rateLimitRatio:1,rateLimitOperation:`parallel_extract`,allowManagedConnection:!0}]}},Vp=zp,Hp={pipeId:Fp,inputFieldMode:`config`,outputFieldMode:`config`,basePipe:U(Fp),label:`AI agent`,executionMode:`single`,categories:[`actions`,`tools`],lifecycle:null,description:`Runs an AI research agent with web tools and structured output fields.`,guide:`AI agent with tools. Like prompt:run@1, inputs and outputs are fully dynamic — defined by the tags in the prompt template — but the agent can call tools before answering. The agent type decides the toolset: web_researcher gets web search and URL extraction, for questions model knowledge alone can't answer ('has {{ company_name }} ever raised money?', 'find the general counsel of {{ company_name }}'). Every tool call is billed on top of tokens, so when no live research is needed, use prompt:run@1 instead. Fields the agent cannot ground in evidence come back as no_result, not a guess.`,tags:[V.AI],keywords:[`research`,`web search`,`llm`,`gpt`,`chatgpt`,`browse`,`tools`],docPath:W(Fp),defaultInputRequirement:null,billableOperations:Rp,allowedUserConnectionProviders:[...Gc(),`parallel`],managedProviders:[...Gc(),`parallel`],deprecatedProviders:[],defaultPayload:{pipe_id:Fp,connector:null,run_if:null,config:{agent_type:`web_researcher`,model:Bc,prompt:{template:``,json_schemas:{}}}}},Up=r.array(r.object({field_name:r.string(),entry_field:r.string().optional()})).check(e=>{let t=new Set;e.value.forEach((n,r)=>{n.field_name.length<1&&e.issues.push({code:`custom`,input:n.field_name,path:[r,`field_name`],message:`Map every bucket field to a row column.`});let i=n.entry_field?.trim()||n.field_name;i&&t.has(i)&&e.issues.push({code:`custom`,input:i,path:[r,`entry_field`],message:`Duplicate bucket field "${i}".`}),i&&t.add(i)})}).check(e=>{e.value.length<1&&e.issues.push({code:`custom`,input:e.value,message:`Map at least one field.`})}),Wp=()=>r.string().nullable().default(``),Gp=e=>({requires:{connection:`pipe0`},enabledIf:_(`pipe0`,`Select a pipe0 connection to see bucket suggestions`),options:async({query:t,client:n})=>n?(await n.buckets.list({query:t,type:e})).map(e=>({label:e.name&&e.name!==e.slug?`${e.name} (${e.slug})`:e.slug,value:e.slug,data:{contract:e.contract,type:e.type}})):[],widgets:{provider_logo:{provider:`pipe0`}}}),Kp=e=>{let t=r.union([r.string(),r.array(r.string())]).check(e=>{(e.value===``||Array.isArray(e.value)&&e.value.length===0)&&e.issues.push({code:`custom`,input:e.value,message:`Required`})}),n={type:`context_select_input`,label:`Bucket`,info:`Pick an existing bucket (its identifying fields appear below for mapping), or type a new slug and choose Create — the new bucket's schema is built from the columns you pick and written on first run (requires 'Allow bucket creation').`,groupPath:`config.general`,sectionKey:`general`,path:`config.bucket`,required:!0,allowCreate:!0,placeholder:`Select or create a bucket…`,optionsDef:Gp(e),options:[],mappingPath:`config.entry_fields`,contractPath:`config.contract`,keyLabel:`Bucket field`},i=e=>{let t=e.validationContext,r=t?Object.entries(t.fieldDefinitions).filter(([e])=>e.toLowerCase()!==`id`).map(([e,t])=>({value:e,label:e,widgets:{field_type:{type:t.type}}})):[];return{...n,fieldOptions:r}};return i.staticMeta=n,v.add(t,i),t},qp={on_own_entry:[{value:`proceed`,label:`Proceed (at-least-once)`},{value:`block`,label:`Block (at-most-once)`}],on_missing:[{value:`proceed`,label:`Treat as part of the entry`},{value:`block`,label:`Skip the row`}]},Jp=()=>xu({label:`New bucket: name`,path:`config.new_bucket_name`,groupPath:`config.bucket_creation`,sectionKey:`general`,inputType:`text`,placeholder:`CRM contacts`,maxLength:120}).nullable().default(``),Yp=()=>({new_bucket_name:Jp(),new_bucket_ttl_in_seconds:Eu({label:`New bucket: TTL (seconds)`,description:`Claims expire after this many seconds. Empty = never.`,path:`config.new_bucket_ttl_in_seconds`,groupPath:`config.bucket_creation`,sectionKey:`general`,min:1}).nullable().default(null),new_bucket_own_entry_behavior:Cu({label:`New bucket: own entry re-claimed`,description:`What happens when a row re-claims an entry it already wrote.`,path:`config.new_bucket_own_entry_behavior`,groupPath:`config.bucket_creation`,sectionKey:`general`,required:!1,options:qp.on_own_entry}).default(`block`),new_bucket_missing_value_behavior:Cu({label:`New bucket: missing values`,description:`Proceed treats missing values as part of the entry; Block skips the row.`,path:`config.new_bucket_missing_value_behavior`,groupPath:`config.bucket_creation`,sectionKey:`general`,required:!1,options:qp.on_missing}).default(`proceed`)}),Xp=()=>({new_bucket_name:Jp(),new_bucket_start:Eu({label:`New bucket: start`,description:`First number the counter assigns.`,path:`config.new_bucket_start`,groupPath:`config.bucket_creation`,sectionKey:`general`}).nullable().default(1),new_bucket_step:Eu({label:`New bucket: step`,description:`Increment between assigned numbers.`,path:`config.new_bucket_step`,groupPath:`config.bucket_creation`,sectionKey:`general`,min:1}).nullable().default(1)}),Zp=()=>({new_bucket_name:Jp()}),Qp={provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_api_operation`,allowManagedConnection:!0};function $p(e){let t=pt(e.contract),n=e.entry_fields??[],r=[ep([ot(e.bucket)],{expectedType:`string`})],i=n.map(e=>{let{column:n,bucketField:r}=it(e),i=t?.input_fields[r]?.type;return R({name:n,resolvedName:n,label:``,description:``,type:i?()=>i:e=>Ld(e,n)?.type||`unknown`,format:null})});return i.length>0&&r.push(gd(...i)),z(...r)}function em(e){return q([ot(e.bucket)])}function tm(e){return tp([ot(e.bucket)])}const nm=`bucket:check@1`,rm=g(`found_in_bucket`),im=r.object({pipe_id:r.literal(nm),connector:S(),run_if:b(),config:r.object({bucket:Kp(`claim`),entry_fields:Up,contract:Wp(),output_fields:P(r.object({[rm.name]:D({fieldName:rm.name})}))})}),am={"bucket-check-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},om=class extends B{pipeId=nm;payload;payloadSchema=im;billableOperations=am;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`bucket-check-v1-pipe0`)}getInputRequirement(){return $p(this.payload.config)}getSecretRequirements(){return em(this.payload.config)}getConstantRequirements(){return tm(this.payload.config)}getBucketRequirements(){let e=ot(this.payload.config.bucket);return!e||e.includes(`{{`)?[]:[{slug:e,type:`claim`,schema:pt(this.payload.config.contract),allowCreation:!1}]}getRawOutputFields(){return{[rm.name]:this.catalogOutput(rm)}}getConnectionsRequirements(){return[Qp]}},sm=im,cm={pipeId:nm,basePipe:U(nm),label:`Check`,executionMode:`single`,categories:[`actions`,`tools`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:`Look up an entry in an existing claim bucket WITHOUT writing. Present → no_result (e.g. suppressed); absent → completed. For suppression / do-not-contact / already-seen gates.`,guide:`Consult a claim bucket read-only before an action — the canonical suppression / do-not-contact gate. Map the identifying field(s) via entry_fields. If the entry is PRESENT (and live) the pipe resolves no_result, skipping downstream pipes (the send/append is suppressed); if ABSENT it completes and downstream runs. Unlike bucket:claim@1 this NEVER writes or creates — the list is curated elsewhere (a bucket:claim@1 writer, an import, or the Assets tab), so readers can't corrupt it. Missing values follow the bucket's on_missing policy: 'proceed' looks up the entry with those values stored as empty (the mirror of what bucket:claim@1 wrote for a row missing the same fields); 'block' resolves no_result; a row where EVERY identifying value is missing is always skipped. Requires an existing claim bucket. FREE pipe0 operation; requires a pipe0 connection.`,docPath:W(nm),tags:[V.FIELDS],keywords:[`suppression`,`do not contact`,`blocklist`,`lookup`,`exclude`,`gate`,`dedupe`],billableOperations:am,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:nm,connector:{strategy:`first`,connections:[]},run_if:null,config:{bucket:``,entry_fields:[],contract:``,output_fields:{found_in_bucket:{alias:``,enabled:!0}}}}},lm=`bucket:claim@1`,um=g(`is_claim_successful`),dm=r.object({pipe_id:r.literal(lm),connector:S(),run_if:b(),config:r.object({bucket:Kp(`claim`),entry_fields:Up,contract:Wp(),...Yp(),allow_bucket_creation:E({label:`Allow bucket creation`,description:`Create the bucket (typed as a claim bucket from this pipe's fields) on first write if it does not already exist. Off by default.`,defaultValue:!1,groupPath:`config.general`,path:`config.allow_bucket_creation`,sectionKey:`general`}),output_fields:P(r.object({[um.name]:D({fieldName:um.name})}))})}),fm={"bucket-claim-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},pm=class extends B{pipeId=lm;payload;payloadSchema=dm;billableOperations=fm;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`bucket-claim-v1-pipe0`)}getInputRequirement(){return $p(this.payload.config)}getSecretRequirements(){return em(this.payload.config)}getConstantRequirements(){return tm(this.payload.config)}getBucketRequirements(){let e=ot(this.payload.config.bucket);return!e||e.includes(`{{`)?[]:[{slug:e,type:`claim`,schema:pt(this.payload.config.contract),allowCreation:this.payload.config.allow_bucket_creation??!1}]}getRawOutputFields(){return{[um.name]:this.catalogOutput(um)}}getConnectionsRequirements(){return[Qp]}},mm=dm,hm={pipeId:lm,basePipe:U(lm),label:`Claim`,executionMode:`single`,categories:[`actions`,`tools`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:`Claim an entry in a bucket (write-if-absent). Wins (is_claim_successful: true) or finds the entry already taken (no_result). Put this before a write pipe to guard against duplicates across sheets, runs, and time.`,guide:`Claim an identity in a claim bucket before an irreversible action (an append, a send). Map the identifying field(s) via entry_fields (bucket field → row column alias); the bucket's slug is org-unique. If is_claim_successful:true this row is the first to write this entry — let the guarded pipe run on it. If the entry already exists the pipe resolves no_result, which SKIPS every downstream pipe depending on this output — so a duplicate never reaches the writer. Dedup (no TTL), time gates (bucket TTL), suppression (populate here, consult with bucket:check@1) and idempotent writes are all this one op. Behavior lives on the bucket, not the pipe: ttl_seconds (an expired entry can be claimed again — a frequency gate), on_own_entry ('proceed' = the row that wrote an entry re-claims it successfully on re-runs, at-least-once; 'block' = it can't, at-most-once — the default), and on_missing. Missing values follow on_missing: 'proceed' stores them as empty (null) parts of the entry, so rows missing the same fields dedupe against each other while ('Tom','t@t.com') stays distinct from (null,'t@t.com'); 'block' resolves no_result; a row where EVERY identifying value is missing is always skipped. allow_bucket_creation (default off) creates the bucket, typed from the mapped fields, on first write; the new_bucket_* settings (name, TTL, own-entry, missing-value policy) configure ONLY that newly created bucket and are ignored when it already exists — an existing bucket's policy is edited in the dash, not from a pipe. FREE pipe0 operation; requires a pipe0 connection (list_connections).`,docPath:W(lm),tags:[V.FIELDS],keywords:[`dedupe`,`deduplicate`,`duplicate`,`guard`,`reserve`,`idempotent`,`lock`],billableOperations:fm,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:lm,connector:{strategy:`first`,connections:[]},run_if:null,config:{bucket:``,entry_fields:[],contract:``,new_bucket_name:``,new_bucket_ttl_in_seconds:null,new_bucket_own_entry_behavior:`block`,new_bucket_missing_value_behavior:`proceed`,allow_bucket_creation:!1,output_fields:{is_claim_successful:{alias:``,enabled:!0}}}}},gm=`bucket:count@1`,_m=g(`bucket_counter`),vm=r.object({pipe_id:r.literal(gm),connector:S(),run_if:b(),config:r.object({bucket:Kp(`counter`),entry_fields:Up,contract:Wp(),...Xp(),allow_bucket_creation:E({label:`Allow bucket creation`,description:`Create the bucket (typed as a counter bucket from this pipe's fields) on first write if it does not already exist. Off by default.`,defaultValue:!1,groupPath:`config.general`,path:`config.allow_bucket_creation`,sectionKey:`general`}),output_fields:P(r.object({[_m.name]:D({fieldName:_m.name})}))})}),ym={"bucket-count-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},bm=class extends B{pipeId=gm;payload;payloadSchema=vm;billableOperations=ym;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`bucket-count-v1-pipe0`)}getInputRequirement(){return $p(this.payload.config)}getSecretRequirements(){return em(this.payload.config)}getConstantRequirements(){return tm(this.payload.config)}getBucketRequirements(){let e=ot(this.payload.config.bucket);return!e||e.includes(`{{`)?[]:[{slug:e,type:`counter`,schema:pt(this.payload.config.contract),allowCreation:this.payload.config.allow_bucket_creation??!1}]}getRawOutputFields(){return{[_m.name]:this.catalogOutput(_m)}}getConnectionsRequirements(){return[Qp]}},xm=vm,Sm={pipeId:gm,basePipe:U(gm),label:`Count`,executionMode:`single`,categories:[`actions`,`tools`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:`Assign the next sequence number to an entry in a counter bucket, exactly once (a re-run returns the same number). The building block for round-robin lead routing.`,guide:`Give each unique entry its own stable number from a counter bucket. Map the identifying field(s) via entry_fields (bucket field → row column alias). A NEW entry takes the next number (bucket.start, then +step); an entry that already has a number returns that SAME number on every re-run — so assignments are stable and re-run-safe. Compose round-robin routing: a sellers sheet + this counter + (seller_index = (value - 1) mod seller_count) + a row lookup by that ordinal. Behavior (start, step) lives on the bucket. A row with ANY missing identifying value gets no number (no_result) — counters have no missing-value policy. allow_bucket_creation (default off) creates the counter bucket on first write; new_bucket_start/new_bucket_step configure ONLY that newly created bucket and are ignored when it already exists. FREE pipe0 operation; requires a pipe0 connection.`,docPath:W(gm),tags:[V.FIELDS],keywords:[`counter`,`sequence`,`increment`,`numbering`,`bucket`],billableOperations:ym,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:gm,connector:{strategy:`first`,connections:[]},run_if:null,config:{bucket:``,entry_fields:[],contract:``,new_bucket_name:``,new_bucket_start:1,new_bucket_step:1,allow_bucket_creation:!1,output_fields:{bucket_counter:{alias:``,enabled:!0}}}}},Cm=`bucket:countif@1`,wm=g(`bucket_event_count`),Tm=g(`bucket_event_last_at`),Em=r.object({pipe_id:r.literal(Cm),connector:S(),run_if:b(),config:r.object({bucket:Kp(`event_counter`),entry_fields:Up,contract:Wp(),where:Ll({path:`config.where`,groupPath:`config.general`,sectionKey:`general`,label:`Count if (optional)`,description:`Count one event when the row matches this condition; otherwise output the current count unchanged. Leave empty to count every run.`}),...Zp(),allow_bucket_creation:E({label:`Allow bucket creation`,description:`Create the bucket (typed as an event-counter bucket from this pipe's fields) on first write if it does not already exist. Off by default.`,defaultValue:!1,groupPath:`config.general`,path:`config.allow_bucket_creation`,sectionKey:`general`}),output_fields:P(r.object({[wm.name]:D({fieldName:wm.name}),[Tm.name]:D({fieldName:Tm.name})}))})}),Dm={"bucket-countif-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},Om=class extends B{pipeId=Cm;payload;payloadSchema=Em;billableOperations=Dm;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`bucket-countif-v1-pipe0`)}getInputRequirement(){return $p(this.payload.config)}getSecretRequirements(){return em(this.payload.config)}getConstantRequirements(){return tm(this.payload.config)}getRowConditionBlocks(){return this.payload.config.where?[this.payload.config.where]:[]}getBucketRequirements(){let e=ot(this.payload.config.bucket);return!e||e.includes(`{{`)?[]:[{slug:e,type:`event_counter`,schema:pt(this.payload.config.contract),allowCreation:this.payload.config.allow_bucket_creation??!1}]}getRawOutputFields(){return{[wm.name]:this.catalogOutput(wm),[Tm.name]:this.catalogOutput(Tm)}}getConnectionsRequirements(){return[Qp]}},km=Em,Am={pipeId:Cm,basePipe:U(Cm),label:`Count if`,executionMode:`single`,categories:[`actions`,`tools`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:`Count events per entry in an event-counter bucket: each run where the condition matches increments the entry's count; otherwise the current count is read unchanged. Outputs the running count and when it last changed.`,guide:`Count how often something has happened per entity, durably across runs and sheets — the canonical error/attempt counter for freshness systems. Map the identifying field(s) via entry_fields (e.g. user_id); config.where decides whether THIS run counts: match ⇒ increment (one event per executed matching run), no match ⇒ read-only output of the current count, empty where ⇒ every run counts. The where can reference field STATUS (property 'status'), so 'count if status(profile) eq failed' counts failed attempts while the pipe itself still runs — unlike a run_if gate, a non-matching row still gets the current count (always numeric, 0 before any event), keeping conditions like 'error_count lte 3' evaluable. IMPORTANT: also reference the where's fields in run_if listing every possible status (completed, failed, no_result, skipped) — the run_if reference is what ORDERS this pipe after those fields' producers; without it the where may read a stale status. Outputs: bucket_event_count (alias e.g. error_count) and bucket_event_last_at (when the count last changed — alias e.g. last_successfully_enriched_at with 'where status(profile) eq completed'; survives failed re-runs because the read branch re-emits it from the bucket). Re-run semantics: a force-requeued cell executes once and counts once; pinning run_statuses ['completed'] on this pipe alone inflates counts. Event counters have no TTL/decay in v1 — clear the entry in the dash to reset. allow_bucket_creation (default off) creates the bucket, typed from the mapped fields, on first write. FREE pipe0 operation; requires a pipe0 connection (list_connections).`,docPath:W(Cm),tags:[V.FIELDS],keywords:[`count`,`counter`,`increment`,`events`,`error count`,`attempts`,`retry cap`,`failures`,`tally`,`bucket`],billableOperations:Dm,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:Cm,connector:{strategy:`first`,connections:[]},run_if:null,config:{bucket:``,entry_fields:[],contract:``,where:null,new_bucket_name:``,allow_bucket_creation:!1,output_fields:{bucket_event_count:{alias:``,enabled:!0},bucket_event_last_at:{alias:``,enabled:!1}}}}},jm=`company:domain:workemail@1`,Mm=g(`company_domain`),Nm=g(`work_email`),Pm=r.object({pipe_id:r.literal(jm),run_if:b(),connector:ql(),config:r.object({input_fields:F(r.object({[Nm.name]:w({fieldName:Nm.name})})),output_fields:P(r.object({[Mm.name]:D({fieldName:Mm.name})}))}).optional()}),Fm=e=>R(G(Nm,e)),Im={"company-domain-workemail-v1-pipe0":{credits:{default:0},allowManagedConnection:!0,mode:`always`,provider:`pipe0`}},Lm=class extends B{pipeId=jm;payload;payloadSchema=Pm;billableOperations=Im;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-domain-workemail-v1-pipe0`)}getInputRequirement(){return Fm(this.payload.config)}getRawOutputFields(){return{[Mm.name]:this.catalogOutput(Mm)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},Rm=Pm,zm={pipeId:jm,basePipe:U(jm),inputFieldMode:`static`,outputFieldMode:`static`,label:`Website from email`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`Extract the company website URL from a work email address.`,tags:[V.EMAIL,V.WORK_EMAIL,V.WEBSITE],keywords:[`url`,`extract`,`site`,`web address`],docPath:W(jm),allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],billableOperations:Im,defaultInputRequirement:Fm(null),defaultPayload:{pipe_id:jm,connector:null,run_if:null,config:{input_fields:{[Nm.name]:{alias:``}},output_fields:{[Mm.name]:{alias:``,enabled:!0}}}}};function Bm(e){return(e.widgets||{}).display_value?.label}function Vm(e){console.dir(e,{depth:100})}function Hm(e){return typeof e==`object`&&e?JSON.stringify(e):e}function Y(e){return e===0?1:e===1?.3:e===2?.2:.1}function Um(e){if(typeof e!=`object`||!e||Array.isArray(e))return e;let t={};return Object.keys(e).sort().forEach(n=>{t[n]=Um(e[n])}),t}const Wm={string:[`address_line_1`,`email`,`url`,`website_url`,`markdown`,`zip_code`,`date`,`datetime`,`phone`,`text`,`profile_url`],json:[`json_object`,`json_list`],number:[`int`,`decimal`],boolean:[],unknown:[]};function X(e,t){let n=Object.entries(t).filter(([t,n])=>n.provider===e);if(n.length!==1)throw Error(`Found ${n.length} billing operations for provider ${e}. This is not allowed. There must be exactly 1 billing operation per provider.`);let[r,i]=n[0];return{billableOperation:r,billableOperationDef:i}}const Gm=`company:funding:waterfall@1`,Km=g(`company_name`),qm=g(`company_domain`),Jm=g(`funding_history`),Ym=g(`funding_total_usd`),Xm=[`amplemarket`,`leadmagic`],Zm=[{provider:`amplemarket`},{provider:`leadmagic`}],Qm={"company-funding-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:1.5},mode:`onSuccess`},"company-funding-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`}},$m=r.object({pipe_id:r.literal(Gm),connector:C(),run_if:b(),config:r.object({providers:T({availableProviders:Xm,defaultProviders:Zm,sectionKey:`general`,providerCredits:Ed(Qm,Xm)}),input_fields:F(r.object({[Km.name]:w({fieldName:Km.name}),[qm.name]:w({fieldName:qm.name})})),output_fields:P(r.object({[Jm.name]:D({fieldName:Jm.name}),[Ym.name]:D({fieldName:Ym.name})}))}).optional()}),eh=e=>gd(G(Km,e),G(qm,e)),th=class extends B{pipeId=Gm;payload;payloadSchema=$m;billableOperations=Qm;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return eh(this.payload.config)}getRawOutputFields(){return{[Jm.name]:this.catalogOutput(Jm,{isPrimaryOutput:!0}),[Ym.name]:this.catalogOutput(Ym)}}getConnectionsRequirements(){let e={amplemarket:`amplemarket_generic`,leadmagic:`leadmagic_company_funding`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},nh=$m,rh={pipeId:Gm,basePipe:U(Gm),label:`Funding history`,executionMode:`waterfall`,categories:[`company_data`],lifecycle:null,description:`Funding rounds, investors, and total funding in a waterfall motion.`,tags:[V.FINANCIAL_DATA,V.WATERFALL],keywords:[`investors`,`rounds`,`raised`,`venture`,`series`,`capital`,`fallback`],docPath:W(Gm),managedProviders:Xm,deprecatedProviders:[],allowedUserConnectionProviders:Xm,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:Qm,defaultInputRequirement:eh(null),defaultPayload:{pipe_id:Gm,connector:null,run_if:null,config:{providers:Zm,input_fields:{company_name:{alias:``},company_domain:{alias:``}},output_fields:{funding_history:{alias:``,enabled:!0},funding_total_usd:{alias:``,enabled:!0}}}}},ih=g(`company_name`),ah=g(`company_profile_url`),oh=g(`company_domain`),sh=g(`cleaned_company_name`),ch=`company:identity@3`,lh=r.object({pipe_id:r.literal(ch),run_if:b(),connector:ql(),config:r.object({input_fields:F(r.object({[ih.name]:w({fieldName:ih.name})})),output_fields:P(r.object({[ah.name]:D({fieldName:ah.name}),[sh.name]:D({fieldName:sh.name}),[oh.name]:D({fieldName:oh.name})}))}).optional()}),uh=e=>R(G(ih,e)),dh={"company-identity-v3-pipe0":{allowManagedConnection:!0,credits:{default:.3,level1:{credits:.2,weight:1}},mode:`always`,provider:`pipe0`}},fh=class extends B{pipeId=ch;payload;payloadSchema=lh;billableOperations=dh;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-identity-v3-pipe0`)}getInputRequirement(){return uh(this.payload.config)}getRawOutputFields(){return{[ah.name]:this.catalogOutput(ah),[oh.name]:this.catalogOutput(oh),[sh.name]:this.catalogOutput(sh)}}getConnectionsRequirements(){return[{provider:`gemini`,rateLimitRatio:1,rateLimitOperation:`gemini_35_flash`,allowManagedConnection:!0},{provider:`serper`,rateLimitRatio:2,rateLimitOperation:`serper_search`,allowManagedConnection:!0},{provider:`leadmagic`,rateLimitRatio:.2,rateLimitOperation:`leadmagic_company_search`,allowManagedConnection:!0},{provider:`perplexity`,rateLimitRatio:.2,rateLimitOperation:`perplexity_generic`,allowManagedConnection:!0},{provider:`pipe0`,rateLimitRatio:.02,rateLimitOperation:`pipe0_scraper`,allowManagedConnection:!0}]}},ph=lh,mh={pipeId:ch,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(ch),label:`Company identity`,executionMode:`mix`,categories:[`company_data`],lifecycle:null,description:`Find any company's website URL, LinkedIn profile URL, and cleaned name.`,tags:[V.WEBSITE,V.LINKEDIN],keywords:[`website`,`linkedin`,`url`,`domain`,`resolve`,`normalize`],docPath:W(ch),billableOperations:dh,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:uh(null),defaultPayload:{pipe_id:ch,connector:null,run_if:null,config:{input_fields:{company_name:{alias:``}},output_fields:{cleaned_company_name:{alias:``,enabled:!0},company_profile_url:{alias:``,enabled:!0},company_domain:{alias:``,enabled:!0}}}}},hh=g(`company_domain`),gh=g(`company_name`),_h=g(`crustdata_company_identity_matches`),vh=`company:identity:crustdata@1`,yh=r.object({pipe_id:r.literal(vh),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[hh.name]:w({fieldName:hh.name}),[gh.name]:w({fieldName:gh.name})})),output_fields:P(r.object({[_h.name]:D({fieldName:_h.name})}))}).optional()}),bh=e=>gd(G(hh,e),G(gh,e)),xh={"company-identity-crustdata-v1-crustdata":{allowManagedConnection:!0,credits:{default:.001},mode:`onSuccess`,provider:`crustdata`}},Sh=class extends B{pipeId=vh;payload;payloadSchema=yh;billableOperations=xh;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`company-identity-crustdata-v1-crustdata`)}getInputRequirement(){return bh(this.payload.config)}getRawOutputFields(){return{[_h.name]:this.catalogOutput(_h)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_company_identify`,allowManagedConnection:!0}]}},Ch=yh,wh={pipeId:vh,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(vh),label:`Company identity`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`Resolve a company to Crustdata's matching candidates by domain or name. Returns the full list of matches.`,tags:[V.WEBSITE,V.LINKEDIN],keywords:[`website`,`linkedin`,`url`,`domain`,`resolve`,`match`,`candidates`],docPath:W(vh),billableOperations:xh,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:bh(null),defaultPayload:{pipe_id:vh,connector:null,run_if:null,config:{input_fields:{company_domain:{alias:``},company_name:{alias:``}},output_fields:{crustdata_company_identity_matches:{alias:``,enabled:!0}}}}},Th=g(`company_domain`),Eh=g(`companyenrich_matches`),Dh=`company:lookalikes:companyenrich@2`,Oh=r.object({pipe_id:r.literal(Dh),run_if:b(),connector:C(),config:r.object({limit:Eu({groupPath:`config.general`,max:50,min:1,path:`config.limit`,sectionKey:`general`,info:`Define how many lookalikes you want to find.`,label:`Limit`}),input_fields:F(r.object({[Th.name]:w({fieldName:Th.name})})),output_fields:P(r.object({[Eh.name]:D({fieldName:Eh.name})}))}).optional()}),kh=e=>R(G(Th,e)),Ah={"company-lookalikes-companyenrich-v2-companyenrich":{allowManagedConnection:!0,credits:{default:.2,level1:{credits:.1,weight:1}},mode:`onSuccess`,note:`One billing event per result.`,provider:`companyenrich`}},jh=class extends B{pipeId=Dh;payload;payloadSchema=Oh;billableOperations=Ah;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`companyenrich`]}estimateBillableOperations(e){return[{billableOperation:`company-lookalikes-companyenrich-v2-companyenrich`,quantity:e.count*5}]}getInputRequirement(){return kh(this.payload.config)}getRawOutputFields(){return{[Eh.name]:this.catalogOutput(Eh)}}getConnectionsRequirements(){return[{provider:`companyenrich`,rateLimitRatio:1,rateLimitOperation:`company_enrich_generic`,allowManagedConnection:!0}]}},Mh=Oh,Nh={pipeId:Dh,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Dh),label:`Find company lookalikes`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`Find companies similar to the company you provide as input.`,tags:[V.COMPANY_PROFILES],keywords:[`similar`,`competitors`,`comparable`,`peers`,`alike`,`related`],docPath:W(Dh),billableOperations:Ah,allowedUserConnectionProviders:[`companyenrich`],managedProviders:[`companyenrich`],deprecatedProviders:[],defaultInputRequirement:kh(null),defaultPayload:{pipe_id:Dh,connector:null,run_if:null,config:{limit:20,input_fields:{company_domain:{alias:``}},output_fields:{companyenrich_matches:{alias:``,enabled:!0}}}}},Ph=g(`company_domain`),Fh=g(`attio_companies_found_count`),Ih=g(`attio_record_id`),Lh=g(`attio_company_matches`),Rh=`company:match:attio@1`,zh=r.object({pipe_id:r.literal(Rh),run_if:b(),connector:S(),config:r.object({match_on:Cu({sectionKey:`general`,required:!1,label:`Match on`,groupPath:`config.general`,path:`config.match_on`,description:`Exact domain values are unique in Attio (at most one company). Root domain also matches subdomain records (app.acme.com, shop.acme.com) — several results are normal.`,options:[{label:`Exact domain`,value:`domain`},{label:`Root domain`,value:`root_domain`}]}).default(`domain`),custom_properties:fu({sectionKey:`general`,label:`Custom attributes`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`categories`,optionsDef:kf({target:`objects`,identifier:`companies`}),info:'Attio attribute api_slugs to include in each match (e.g. `categories`, not "Categories"). Custom attributes work too and nest under `custom_properties`. Empty = a standard identity set.'}),input_fields:F(r.object({[Ph.name]:w({fieldName:Ph.name})})),output_fields:P(r.object({[Fh.name]:D({fieldName:Fh.name}),[Ih.name]:D({fieldName:Ih.name}),[Lh.name]:D({fieldName:Lh.name})}))}).optional()}),Bh=e=>R(G(Ph,e)),Vh={"company-match-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},Hh=class extends B{pipeId=Rh;payload;payloadSchema=zh;billableOperations=Vh;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`company-match-attio-v1-attio`)}getInputRequirement(){return Bh(this.payload.config)}getRawOutputFields(){return{[Fh.name]:this.catalogOutput(Fh),[Ih.name]:this.catalogOutput(Ih),[Lh.name]:this.catalogOutput(Lh)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_query`,allowManagedConnection:!1}]}async getAgentContext(e){return jf(e,{objects:[`companies`]})}},Uh=zh,Wh={pipeId:Rh,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Rh),label:`Attio company match`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Check whether a company exists in your Attio workspace by domain. Exact domain values are unique (at most one match); root-domain matching also finds subdomain records. A clean miss completes with a count of 0.`,tags:[V.NEW],keywords:[`crm`,`lookup`,`exists`,`dedupe`,`record`,`account`,`domain`],docPath:W(Rh),guide:`Call get_provider_context first to discover this workspace's attributes; use attribute api_slugs verbatim. domains is Attio's unique identity attribute — exact-domain matches return at most one company, root-domain matches can return several (subdomains). attio_record_id carries the first (oldest) match; gate follow-ups with run_if on attio_companies_found_count. Chain attio_record_id into record:update:attio@1 or record:lookup:attio@1.`,billableOperations:Vh,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:Bh(null),defaultPayload:{pipe_id:Rh,connector:{strategy:`first`,connections:[]},run_if:null,config:{match_on:`domain`,custom_properties:[],input_fields:{company_domain:{alias:``}},output_fields:{attio_companies_found_count:{alias:``,enabled:!0},attio_record_id:{alias:``,enabled:!0},attio_company_matches:{alias:``,enabled:!0}}}}},Gh=g(`company_domain`),Kh=g(`crustdata_companyenrich_match`),qh=`company:match:crustdata@2`,Jh=r.object({pipe_id:r.literal(qh),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[Gh.name]:w({fieldName:Gh.name})})),output_fields:P(r.object({[Kh.name]:D({fieldName:Kh.name})}))}).optional()}),Yh=e=>R(G(Gh,e)),Xh={"company-match-crustdata-v2-crustdata":{allowManagedConnection:!0,credits:{default:2.5,level1:{credits:1.2,weight:1}},mode:`onSuccess`,provider:`crustdata`}},Zh=class extends B{pipeId=qh;payload;payloadSchema=Jh;billableOperations=Xh;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`company-match-crustdata-v2-crustdata`)}getInputRequirement(){return Yh(this.payload.config)}getRawOutputFields(){return{[Kh.name]:this.catalogOutput(Kh)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_company_enrich`,allowManagedConnection:!0}]}},Qh=Jh,$h={pipeId:qh,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(qh),label:`Company match`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`Company data like headcount distribution, LinkedIn URLs etc. via the Crustdata API.`,tags:[V.WEBSITE,V.LINKEDIN],keywords:[`enrich`,`headcount`,`employees`,`linkedin`,`firmographics`,`profile`],docPath:W(qh),billableOperations:Xh,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:Yh(null),defaultPayload:{pipe_id:qh,connector:null,run_if:null,config:{input_fields:{company_domain:{alias:``}},output_fields:{crustdata_companyenrich_match:{alias:``,enabled:!0}}}}},eg=g(`company_domain`),tg=g(`hubspot_companies_found_count`),ng=g(`hubspot_object_id`),rg=g(`hubspot_company_matches`),ig=`company:match:hubspot@1`,ag=r.object({pipe_id:r.literal(ig),run_if:b(),connector:S(),config:r.object({check_additional_domains:E({sectionKey:`general`,defaultValue:!0,label:`Also match secondary domains`,groupPath:`config.general`,path:`config.check_additional_domains`,info:"Also match companies whose `hs_additional_domains` contains the domain (primary-domain matches still rank first)."}),custom_properties:fu({sectionKey:`general`,label:`Custom properties`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`industry`,info:"Added to the match JSON under `custom_properties` — internal names, custom properties included (standard-set names are already top-level)."}),input_fields:F(r.object({[eg.name]:w({fieldName:eg.name})})),output_fields:P(r.object({[tg.name]:D({fieldName:tg.name}),[ng.name]:D({fieldName:ng.name}),[rg.name]:D({fieldName:rg.name})}))}).optional()}),og=e=>R(G(eg,e)),sg={"company-match-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},cg=class extends B{pipeId=ig;payload;payloadSchema=ag;billableOperations=sg;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`hubspot`]}estimateBillableOperations(e){return H(e,`company-match-hubspot-v1-hubspot`)}getInputRequirement(){return og(this.payload.config)}getRawOutputFields(){return{[tg.name]:this.catalogOutput(tg),[ng.name]:this.catalogOutput(ng),[rg.name]:this.catalogOutput(rg)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_crm_search`,allowManagedConnection:!1}]}async getAgentContext(e){return pp(e,{objectTypes:[[`companies`,`0-2`]]})}},lg=ag,ug={pipeId:ig,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(ig),label:`HubSpot company match`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Check whether a company exists in your HubSpot portal by domain. Domain is HubSpot's dedupe key but not unique — 0..N matches are normal; the primary match is the oldest record.`,tags:[V.WEBSITE],keywords:[`crm`,`lookup`,`exists`,`dedupe`,`record`,`account`],docPath:W(ig),guide:`Domain matching uses the HubSpot Search API — records created in the last few moments may not be indexed yet. Multiple matches are normal (branches, franchises); the count output tells you. found_count = 0 is a successful result — gate follow-ups with run_if. Chain the id output into deal:match, object:update, or object:associations pipes.`,billableOperations:sg,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:og(null),defaultPayload:{pipe_id:ig,connector:{strategy:`first`,connections:[]},run_if:null,config:{check_additional_domains:!0,custom_properties:[],input_fields:{company_domain:{alias:``}},output_fields:{hubspot_companies_found_count:{alias:``,enabled:!0},hubspot_object_id:{alias:``,enabled:!0},hubspot_company_matches:{alias:``,enabled:!0}}}}},dg=g(`company_domain`),fg=g(`company_name`),pg=g(`company_profile_url`),mg=g(`logodev_describe_match`),hg=g(`logo_url`),gg=`company:match:logodev@2`,_g=r.object({pipe_id:r.literal(gg),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[dg.name]:w({fieldName:dg.name})})),output_fields:P(r.object({[pg.name]:D({fieldName:pg.name}),[hg.name]:D({fieldName:hg.name}),[fg.name]:D({fieldName:fg.name}),[mg.name]:D({fieldName:mg.name})}))}).optional()}),vg=e=>R(G(dg,e)),yg={"company-match-logodev-v2-logodev":{allowManagedConnection:!0,credits:{default:.1},mode:`onSuccess`,provider:`logodev`}},bg=class extends B{pipeId=gg;payload;payloadSchema=_g;billableOperations=yg;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`logodev`]}estimateBillableOperations(e){return H(e,`company-match-logodev-v2-logodev`)}getInputRequirement(){return vg(this.payload.config)}getRawOutputFields(){return{[pg.name]:this.catalogOutput(pg),[fg.name]:this.catalogOutput(fg),[hg.name]:this.catalogOutput(hg),[mg.name]:this.catalogOutput(mg)}}getConnectionsRequirements(){return[{provider:`logodev`,rateLimitRatio:1,rateLimitOperation:`logodev_describe`,allowManagedConnection:!0}]}},xg=_g,Sg={pipeId:gg,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(gg),label:`Company match`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`Find brand data like logos, colors, and social links via the Logo.dev API.`,tags:[V.WEBSITE,V.LINKEDIN],keywords:[`logo`,`brand`,`branding`,`colors`,`social`,`icon`],docPath:W(gg),billableOperations:yg,allowedUserConnectionProviders:[`logodev`],managedProviders:[`logodev`],deprecatedProviders:[],defaultInputRequirement:vg(null),defaultPayload:{pipe_id:gg,connector:null,run_if:null,config:{input_fields:{company_domain:{alias:``}},output_fields:{company_profile_url:{alias:``,enabled:!0},logo_url:{alias:``,enabled:!0},logodev_describe_match:{alias:``,enabled:!0},company_name:{alias:``,enabled:!1}}}}},Cg=`company:newssummary:domain@1`,wg=g(`company_news_summary`),Tg=g(`company_domain`),Eg=r.object({pipe_id:r.literal(Cg),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[Tg.name]:w({fieldName:Tg.name})})),output_fields:P(r.object({[wg.name]:D({fieldName:wg.name})}))}).optional()}),Dg=e=>R(G(Tg,e)),Og={"company-newssummary-domain-v1-pipe0":{allowManagedConnection:!0,credits:{default:2},mode:`always`,provider:`pipe0`}},kg=class extends B{pipeId=Cg;payloadSchema=Eg;billableOperations=Og;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-newssummary-domain-v1-pipe0`)}getInputRequirement(){return Dg(this.payload.config)}getRawOutputFields(){return{[wg.name]:this.catalogOutput(wg)}}getConnectionsRequirements(){return[{provider:`parallel`,rateLimitRatio:4,rateLimitOperation:`parallel_search_base`,allowManagedConnection:!0},{provider:`gemini`,rateLimitRatio:1,rateLimitOperation:`gemini_35_flash`,allowManagedConnection:!0}]}},Ag=Eg,jg={pipeId:Cg,basePipe:U(Cg),inputFieldMode:`static`,outputFieldMode:`static`,label:`Company news`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`Find recent company news by performing a search and scrape.`,tags:[V.NEWS],keywords:[`press`,`articles`,`headlines`,`media`,`summary`,`updates`],docPath:W(Cg),billableOperations:Og,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:Dg(null),defaultPayload:{pipe_id:Cg,run_if:null,connector:null,config:{input_fields:{company_domain:{alias:``}},output_fields:{company_news_summary:{alias:``,enabled:!0}}}}},Mg=g(`company_domain`),Ng=g(`company_profile_url`),Pg=g(`company_description`),Fg=g(`company_industry`),Ig=g(`company_region`),Lg=g(`headcount`),Rg=g(`estimated_revenue`),zg=g(`founded_year`),Bg=g(`company_name`),Vg=`company:overview@3`,Hg=r.object({pipe_id:r.literal(Vg),run_if:b(),connector:ql(),config:r.object({input_fields:F(r.object({[Mg.name]:w({fieldName:Mg.name}),[Ng.name]:w({fieldName:Ng.name})})),output_fields:P(r.object({[Pg.name]:D({fieldName:Pg.name}),[Fg.name]:D({fieldName:Fg.name}),[Ig.name]:D({fieldName:Ig.name}),[Lg.name]:D({fieldName:Lg.name}),[Rg.name]:D({fieldName:Rg.name}),[zg.name]:D({fieldName:zg.name}),[Bg.name]:D({fieldName:Bg.name})}))}).optional()}),Ug=e=>gd(G(Mg,e),G(Ng,e)),Wg={"company-overview-v3-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:1,level1:{credits:.5,weight:1}},mode:`always`}},Gg=class extends B{pipeId=Vg;payloadSchema=Hg;billableOperations=Wg;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-overview-v3-pipe0`)}getInputRequirement(){return Ug(this.payload.config)}getRawOutputFields(){return{[Pg.name]:this.catalogOutput(Pg),[Fg.name]:this.catalogOutput(Fg),[Ig.name]:this.catalogOutput(Ig),[Lg.name]:this.catalogOutput(Lg),[Rg.name]:this.catalogOutput(Rg),[zg.name]:this.catalogOutput(zg),[Bg.name]:this.catalogOutput(Bg)}}getConnectionsRequirements(){return[{provider:`perplexity`,rateLimitRatio:1,rateLimitOperation:`perplexity_generic`,allowManagedConnection:!0},{provider:`leadmagic`,rateLimitRatio:.2,rateLimitOperation:`leadmagic_email_lookup`,allowManagedConnection:!0},{provider:`gemini`,rateLimitOperation:`gemini_20_flash`,rateLimitRatio:.1,allowManagedConnection:!0}]}},Kg=Hg,qg={pipeId:Vg,basePipe:U(Vg),inputFieldMode:`static`,outputFieldMode:`static`,label:`Company overview`,executionMode:`mix`,categories:[`company_data`],lifecycle:null,description:`Business description, industry, and financial information.`,docPath:W(Vg),tags:[V.WEBSITE,V.LINKEDIN,V.FINANCIAL_DATA],keywords:[`enrich`,`firmographics`,`industry`,`profile`,`about`,`financials`,`revenue`],allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],billableOperations:Wg,defaultInputRequirement:Ug(null),defaultPayload:{pipe_id:Vg,run_if:null,connector:void 0,config:{input_fields:{company_profile_url:{alias:``},company_domain:{alias:``}},output_fields:{company_description:{alias:``,enabled:!0},company_industry:{alias:``,enabled:!0},company_region:{alias:``,enabled:!0},estimated_revenue:{alias:``,enabled:!0},founded_year:{alias:``,enabled:!0},headcount:{alias:``,enabled:!0},company_name:{alias:``,enabled:!1}}}}},Jg=g(`company_domain`),Yg=g(`technology_list`),Xg=g(`spending_trend`),Zg=g(`technology_match_builtwith`),Qg=`company:techstack:builtwith@2`,$g=r.object({pipe_id:r.literal(Qg),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[Jg.name]:w({fieldName:Jg.name})})),output_fields:P(r.object({[Yg.name]:D({fieldName:Yg.name}),[Zg.name]:D({fieldName:Zg.name}),[Xg.name]:D({fieldName:Xg.name})}))}).optional()}),e_=e=>R(G(Jg,e)),t_={"company-techstack-builtwith-v2-builtwith":{provider:`builtwith`,allowManagedConnection:!0,credits:{default:2},mode:`always`}},n_=class extends B{pipeId=Qg;payload;payloadSchema=$g;billableOperations=t_;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`builtwith`]}estimateBillableOperations(e){return H(e,`company-techstack-builtwith-v2-builtwith`)}getInputRequirement(){return e_(this.payload.config)}getRawOutputFields(){return{[Yg.name]:this.catalogOutput(Yg),[Zg.name]:this.catalogOutput(Zg),[Xg.name]:this.catalogOutput(Xg)}}getConnectionsRequirements(){return[{provider:`builtwith`,rateLimitRatio:1,rateLimitOperation:`builtwith_generic`,allowManagedConnection:!0}]}},r_=$g,i_={pipeId:Qg,basePipe:U(Qg),managedProviders:[`builtwith`],deprecatedProviders:[],allowedUserConnectionProviders:[`builtwith`],label:`Tech stack`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`All technologies and frameworks powering a given website.`,tags:[V.WEBSITE],keywords:[`technologies`,`technographics`,`software`,`frameworks`,`website`,`tools`],inputFieldMode:`static`,outputFieldMode:`static`,docPath:W(Qg),billableOperations:t_,defaultInputRequirement:e_(null),defaultPayload:{pipe_id:Qg,connector:null,run_if:null,config:{input_fields:{company_domain:{alias:``}},output_fields:{technology_list:{alias:``,enabled:!0},technology_match_builtwith:{alias:``,enabled:!0},spending_trend:{alias:``,enabled:!0}}}}},a_=`contact:create:resend@1`,o_={"contact-create-resend-v1-resend":{allowManagedConnection:!1,provider:`resend`,credits:null,mode:null}},s_=g(`email`),c_=g(`name`),l_=g(`resend_contact_id`),u_=[{label:`Demo subscribers`,value:`sandbox-segment-1`},{label:`Demo product updates`,value:`sandbox-segment-2`}],d_=r.object({pipe_id:r.literal(a_),connector:S(),run_if:b(),config:r.object({segment_id:ku({sectionKey:`general`,required:!0,label:`Segment`,groupPath:`config.general`,path:`config.segment_id`,info:``,enabledIf:_(`resend`),optionsDef:{requires:{connection:`resend`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return u_;if(!t)throw new K.MissingSecretError({providerName:`resend`});let r=await fetch(`https://api.resend.com/segments?limit=100`,{headers:{Authorization:`Bearer ${t}`}});if(!r.ok){let e=await r.text();throw new K.HttpError({msg:e})}let i=(await r.json()).data.map(e=>({label:e.name,value:e.id}));return e?i.filter(t=>t.label.toLowerCase().includes(e.toLowerCase())):i}}}),add_as_subscribed:E({sectionKey:`general`,defaultValue:!0,label:`Add as subscribed`,groupPath:`config.general`,path:`config.add_as_subscribed`,info:``}),input_fields:F(r.object({[c_.name]:w({fieldName:c_.name}),[s_.name]:w({fieldName:s_.name})})),output_fields:P(r.object({[l_.name]:D({fieldName:l_.name})}))})}),f_=e=>z(R(G(s_,e)),R(G(c_,e))),p_=class extends B{pipeId=a_;payload;payloadSchema=d_;billableOperations=o_;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`resend`]}estimateBillableOperations(e){return H(e,`contact-create-resend-v1-resend`)}getInputRequirement(){return f_(this.payload.config)}getRawOutputFields(){return{[l_.name]:this.catalogOutput(l_)}}getConnectionsRequirements(){return[{provider:`resend`,rateLimitRatio:1,rateLimitOperation:`resend_generic`,allowManagedConnection:!1}]}},m_=d_,h_={pipeId:a_,basePipe:U(a_),label:`Create Contact`,executionMode:`single`,categories:[`actions`],lifecycle:null,description:`Create a contact inside a Resend audience.`,tags:[V.EMAIL],keywords:[`audience`,`subscriber`,`add`,`mailing list`,`newsletter`,`email list`],docPath:W(a_),billableOperations:o_,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`resend`],defaultInputRequirement:f_(null),managedProviders:[],deprecatedProviders:[],defaultPayload:{pipe_id:a_,connector:{strategy:`first`,connections:[]},run_if:null,config:{segment_id:``,add_as_subscribed:!0,input_fields:{name:{alias:``},email:{alias:``}},output_fields:{resend_contact_id:{alias:``,enabled:!0}}}}},g_=g(`email`),__=g(`hubspot_contact_found`),v_=g(`hubspot_object_id`),y_=g(`hubspot_contact_match`),b_=`contact:match:hubspot@1`,x_=r.object({pipe_id:r.literal(b_),run_if:b(),connector:S(),config:r.object({check_additional_emails:E({sectionKey:`general`,defaultValue:!0,label:`Also match secondary emails`,groupPath:`config.general`,path:`config.check_additional_emails`,info:"When the primary-email lookup misses, also search `hs_additional_emails`. Uses the portal's shared 5 req/s search budget."}),custom_properties:fu({sectionKey:`general`,label:`Custom properties`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`lifecyclestage`,info:'HubSpot internal property names to include in the match output (e.g. `lifecyclestage`, not "Lifecycle Stage"). Custom properties work too and nest under `custom_properties`. Empty = a standard identity set.'}),input_fields:F(r.object({[g_.name]:w({fieldName:g_.name})})),output_fields:P(r.object({[__.name]:D({fieldName:__.name}),[v_.name]:D({fieldName:v_.name}),[y_.name]:D({fieldName:y_.name})}))}).optional()}),S_=e=>R(G(g_,e)),C_={"contact-match-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},w_=class extends B{pipeId=b_;payload;payloadSchema=x_;billableOperations=C_;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`hubspot`]}estimateBillableOperations(e){return H(e,`contact-match-hubspot-v1-hubspot`)}getInputRequirement(){return S_(this.payload.config)}getRawOutputFields(){return{[__.name]:this.catalogOutput(__),[v_.name]:this.catalogOutput(v_),[y_.name]:this.catalogOutput(y_)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_crm_search`,allowManagedConnection:!1}]}async getAgentContext(e){return pp(e,{objectTypes:[[`contacts`,`0-1`]]})}},T_=x_,E_={pipeId:b_,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(b_),label:`HubSpot contact match`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Check whether a contact exists in your HubSpot portal by email. Matches the primary email exactly (and optionally secondary emails); a clean miss completes with found = false.`,tags:[V.EMAIL],keywords:[`crm`,`lookup`,`exists`,`dedupe`,`record`,`person`],docPath:W(b_),guide:"Call get_provider_context first to discover this portal's properties; use internal property names verbatim (e.g. `lifecyclestage`). The match by email is exact (HubSpot's own contact dedupe key). found = false is a successful result — gate follow-up pipes with run_if on it. Chain the id output into object:update:hubspot@1 or object:associations:hubspot@1.",billableOperations:C_,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:S_(null),defaultPayload:{pipe_id:b_,connector:{strategy:`first`,connections:[]},run_if:null,config:{check_additional_emails:!0,custom_properties:[],input_fields:{email:{alias:``}},output_fields:{hubspot_contact_found:{alias:``,enabled:!0},hubspot_object_id:{alias:``,enabled:!0},hubspot_contact_match:{alias:``,enabled:!0}}}}},D_=g(`company_domain`),O_=g(`email`),k_=g(`attio_deals_found_count`),A_=g(`attio_record_id`),j_=g(`attio_deal_matches`),M_=`deal:match:attio@1`,N_=r.object({pipe_id:r.literal(M_),run_if:b(),connector:S(),config:r.object({stage:ku({sectionKey:`general`,required:!1,label:`Deal stage`,groupPath:`config.general`,path:`config.stage`,info:`Only match deals in these stages. This workspace's actual stage titles — custom stages included.`,enabledIf:_(`attio`),optionsDef:Sf,multiple:!0}),custom_properties:fu({sectionKey:`general`,label:`Custom attributes`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`close_date`,optionsDef:kf({target:`objects`,identifier:`deals`}),info:'Attio attribute api_slugs to include in each match (e.g. `value`, not "Deal value"). Custom attributes work too and nest under `custom_properties`. Empty = a standard deal set.'}),input_fields:F(r.object({[D_.name]:w({fieldName:D_.name}),[O_.name]:w({fieldName:O_.name})})),output_fields:P(r.object({[k_.name]:D({fieldName:k_.name}),[A_.name]:D({fieldName:A_.name}),[j_.name]:D({fieldName:j_.name})}))}).optional()}),P_=e=>gd(R(G(D_,e)),R(G(O_,e))),F_={"deal-match-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},I_=class extends B{pipeId=M_;payload;payloadSchema=N_;billableOperations=F_;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`deal-match-attio-v1-attio`)}getInputRequirement(){return P_(this.payload.config)}getRawOutputFields(){return{[k_.name]:this.catalogOutput(k_),[A_.name]:this.catalogOutput(A_),[j_.name]:this.catalogOutput(j_)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_query`,allowManagedConnection:!1}]}async getAgentContext(e){return jf(e,{objects:[`deals`]})}},L_=N_,R_={pipeId:M_,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(M_),label:`Attio deal match`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Find deals in your Attio workspace linked to a company (by domain) or person (by email), optionally narrowed to specific stages. Deals have no natural key — matching traverses the relationship. A clean miss completes with a count of 0.`,tags:[V.NEW],keywords:[`crm`,`lookup`,`exists`,`opportunity`,`pipeline`,`record`],docPath:W(M_),guide:`Call get_provider_context first — deal stage titles are workspace-defined (never assume Won/Lost exist; the defaults include 'Won 🎉' with an emoji). Deals are found via their company/person relationship: prefer the domain input; email is the fallback. The Deals object is opt-in per workspace — a disabled object fails with a settings hint, while zero matches is a successful result (gate with run_if on attio_deals_found_count). Chain attio_record_id (newest matching deal) into record:update:attio@1.`,billableOperations:F_,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:P_(null),defaultPayload:{pipe_id:M_,connector:{strategy:`first`,connections:[]},run_if:null,config:{stage:[],custom_properties:[],input_fields:{company_domain:{alias:``},email:{alias:``}},output_fields:{attio_deals_found_count:{alias:``,enabled:!0},attio_record_id:{alias:``,enabled:!0},attio_deal_matches:{alias:``,enabled:!0}}}}},z_=g(`company_domain`),B_=g(`email`),V_=g(`hubspot_deals_found_count`),H_=g(`hubspot_object_id`),U_=g(`hubspot_deal_matches`),W_=`deal:match:hubspot@1`,G_=r.object({pipe_id:r.literal(W_),run_if:b(),connector:S(),config:r.object({pipeline:ku({sectionKey:`general`,required:!1,label:`Pipeline`,groupPath:`config.general`,path:`config.pipeline`,info:`Only match deals in this pipeline. Empty = all pipelines.`,enabledIf:_(`hubspot`),optionsDef:sp(`deals`)}),status:Cu({sectionKey:`general`,required:!1,label:`Deal status`,groupPath:`config.general`,path:`config.status`,description:`Filters on HubSpot's computed hs_is_closed / hs_is_closed_won — portal-invariant, unlike stage names.`,options:[{label:`Any`,value:`any`},{label:`Open`,value:`open`},{label:`Won`,value:`won`},{label:`Lost`,value:`lost`}]}).default(`any`),custom_properties:fu({sectionKey:`general`,label:`Custom properties`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`amount`,info:"Added to the match JSON under `custom_properties` — internal names, custom properties included (standard-set names are already top-level)."}),input_fields:F(r.object({[z_.name]:w({fieldName:z_.name}),[B_.name]:w({fieldName:B_.name})})),output_fields:P(r.object({[V_.name]:D({fieldName:V_.name}),[H_.name]:D({fieldName:H_.name}),[U_.name]:D({fieldName:U_.name})}))}).optional()}),K_=e=>gd(R(G(z_,e)),R(G(B_,e))),q_={"deal-match-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},J_=class extends B{pipeId=W_;payload;payloadSchema=G_;billableOperations=q_;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`hubspot`]}estimateBillableOperations(e){return H(e,`deal-match-hubspot-v1-hubspot`)}getInputRequirement(){return K_(this.payload.config)}getRawOutputFields(){return{[V_.name]:this.catalogOutput(V_),[H_.name]:this.catalogOutput(H_),[U_.name]:this.catalogOutput(U_)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_crm_search`,allowManagedConnection:!1}]}async getAgentContext(e){return pp(e,{objectTypes:[[`deals`,`0-3`]],includePipelinesFor:[`deals`]})}},Y_=G_,X_={pipeId:W_,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(W_),label:`HubSpot deal match`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Find deals in your HubSpot portal for a company (by domain) or contact (by email) via HubSpot's association graph — deals have no natural key of their own.`,tags:[V.WEBSITE,V.EMAIL],keywords:[`crm`,`opportunity`,`lookup`,`exists`,`association`,`pipeline`],docPath:W(W_),guide:`Deals are found via associations from the matched company (preferred when both inputs are present) or contact — never by dealname. Stage ids outside the default pipeline are numeric; call get_provider_context for this portal's pipelines and stage ids. found_count = 0 is a successful result.`,billableOperations:q_,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:K_(null),defaultPayload:{pipe_id:W_,connector:{strategy:`first`,connections:[]},run_if:null,config:{pipeline:``,status:`any`,custom_properties:[],input_fields:{company_domain:{alias:``},email:{alias:``}},output_fields:{hubspot_deals_found_count:{alias:``,enabled:!0},hubspot_object_id:{alias:``,enabled:!0},hubspot_deal_matches:{alias:``,enabled:!0}}}}},Z_=`company:funding:leadmagic@1`,Q_=g(`company_name`),$_=g(`company_website_url`),ev=g(`funding_history`),tv=g(`funding_total_usd`),nv=g(`leadmagic_competitor_list`),rv=g(`leadmagic_acquisition_history`),iv=g(`leadmagic_company_news_list`),av=r.object({pipe_id:r.literal(Z_),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[Q_.name]:w({fieldName:Q_.name}),[$_.name]:w({fieldName:$_.name})})),output_fields:P(r.object({[ev.name]:D({fieldName:ev.name}),[tv.name]:D({fieldName:tv.name}),[nv.name]:D({fieldName:nv.name}),[rv.name]:D({fieldName:rv.name}),[iv.name]:D({fieldName:iv.name})}))}).optional()}),ov=e=>gd(G(Q_,e),G($_,e)),sv={"company-funding-leadmagic-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`}},cv=class extends B{pipeId=Z_;payload;payloadSchema=av;billableOperations=sv;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`leadmagic`]}estimateBillableOperations(e){return H(e,`company-funding-leadmagic-v1-leadmagic`)}getInputRequirement(){return ov(this.payload.config)}getRawOutputFields(){return{[ev.name]:this.catalogOutput(ev),[tv.name]:this.catalogOutput(tv)}}getConnectionsRequirements(){return[{provider:`leadmagic`,rateLimitRatio:1,rateLimitOperation:`leadmagic_company_funding`,allowManagedConnection:!0}]}},lv=av,uv={pipeId:Z_,basePipe:U(Z_),label:`Funding history`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:funding:leadmagic@2`},description:`Information on funding rounds, acquisition, competitors, and investors.`,tags:[V.FINANCIAL_DATA],docPath:W(Z_),billableOperations:sv,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`leadmagic`],managedProviders:[`leadmagic`],deprecatedProviders:[],defaultInputRequirement:ov(null),defaultPayload:{pipe_id:Z_,connector:null,run_if:null,config:{input_fields:{company_name:{alias:``},company_website_url:{alias:``}},output_fields:{funding_history:{enabled:!0,alias:``},funding_total_usd:{enabled:!0,alias:``},leadmagic_acquisition_history:{enabled:!1,alias:``},leadmagic_company_news_list:{enabled:!1,alias:``},leadmagic_competitor_list:{enabled:!1,alias:``}}}}},dv=`company:funding:leadmagic@2`,fv=g(`company_name`),pv=g(`company_domain`),mv=g(`funding_history`),hv=g(`funding_total_usd`),gv=g(`leadmagic_competitor_list`),_v=g(`leadmagic_acquisition_history`),vv=g(`leadmagic_company_news_list`),yv=r.object({pipe_id:r.literal(dv),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[fv.name]:w({fieldName:fv.name}),[pv.name]:w({fieldName:pv.name})})),output_fields:P(r.object({[mv.name]:D({fieldName:mv.name}),[hv.name]:D({fieldName:hv.name}),[gv.name]:D({fieldName:gv.name}),[_v.name]:D({fieldName:_v.name}),[vv.name]:D({fieldName:vv.name})}))}).optional()}),bv=e=>gd(G(fv,e),G(pv,e)),xv={"company-funding-leadmagic-v2-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`}},Sv=class extends B{pipeId=dv;payload;payloadSchema=yv;billableOperations=xv;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`leadmagic`]}estimateBillableOperations(e){return H(e,`company-funding-leadmagic-v2-leadmagic`)}getInputRequirement(){return bv(this.payload.config)}getRawOutputFields(){return{[mv.name]:this.catalogOutput(mv),[hv.name]:this.catalogOutput(hv),[_v.name]:this.catalogOutput(_v),[vv.name]:this.catalogOutput(vv),[gv.name]:this.catalogOutput(gv)}}getConnectionsRequirements(){return[{provider:`leadmagic`,rateLimitRatio:1,rateLimitOperation:`leadmagic_company_funding`,allowManagedConnection:!0}]}},Cv=yv,wv={pipeId:dv,basePipe:U(dv),label:`Funding history`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-07-20`,replacedBy:`company:funding:waterfall@1`},description:`Information on funding rounds, acquisition, competitors, and investors.`,tags:[V.FINANCIAL_DATA],docPath:W(dv),billableOperations:xv,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`leadmagic`],managedProviders:[`leadmagic`],deprecatedProviders:[],defaultInputRequirement:bv(null),defaultPayload:{pipe_id:dv,connector:null,run_if:null,config:{input_fields:{company_name:{alias:``},company_domain:{alias:``}},output_fields:{funding_history:{enabled:!0,alias:``},funding_total_usd:{enabled:!0,alias:``},leadmagic_acquisition_history:{enabled:!1,alias:``},leadmagic_company_news_list:{enabled:!1,alias:``},leadmagic_competitor_list:{enabled:!1,alias:``}}}}},Tv=g(`company_name`),Ev=g(`company_social_url`),Dv=g(`company_website_url`),Ov=g(`cleaned_company_name`),kv=`company:identity@1`,Av=r.object({pipe_id:r.literal(kv),run_if:b(),connector:ql(),config:r.object({input_fields:F(r.object({[Tv.name]:w({fieldName:Tv.name})})),output_fields:P(r.object({[Ev.name]:D({fieldName:Ev.name}),[Ov.name]:D({fieldName:Ov.name}),[Dv.name]:D({fieldName:Dv.name})}))}).optional()}),jv=e=>R(G(Tv,e)),Mv={"company-identity-v1-pipe0":{allowManagedConnection:!0,credits:{default:.3},mode:`always`,provider:`pipe0`}},Nv=class extends B{pipeId=kv;payload;payloadSchema=Av;billableOperations=Mv;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-identity-v1-pipe0`)}getInputRequirement(){return jv(this.payload.config)}getRawOutputFields(){return{[Ev.name]:this.catalogOutput(Ev),[Dv.name]:this.catalogOutput(Dv),[Ov.name]:this.catalogOutput(Ov)}}getConnectionsRequirements(){return[{provider:`gemini`,rateLimitRatio:1,rateLimitOperation:`gemini_35_flash`,allowManagedConnection:!0},{provider:`serper`,rateLimitRatio:2,rateLimitOperation:`serper_search`,allowManagedConnection:!0},{provider:`leadmagic`,rateLimitRatio:.2,rateLimitOperation:`leadmagic_company_search`,allowManagedConnection:!0},{provider:`perplexity`,rateLimitRatio:.2,rateLimitOperation:`perplexity_generic`,allowManagedConnection:!0},{provider:`pipe0`,rateLimitRatio:.02,rateLimitOperation:`pipe0_scraper`,allowManagedConnection:!0}]}},Pv=Av,Fv={pipeId:kv,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(kv),label:`Company identity`,executionMode:`mix`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:identity@2`},description:`Find any company's website URL, LinkedIn profile URL, and cleaned name.`,tags:[V.WEBSITE,V.LINKEDIN],docPath:`/resources/pipe-catalog/company:identity/1`,billableOperations:Mv,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:jv(null),defaultPayload:{pipe_id:kv,connector:null,run_if:null,config:{input_fields:{company_name:{alias:``}},output_fields:{cleaned_company_name:{alias:``,enabled:!0},company_social_url:{alias:``,enabled:!0},company_website_url:{alias:``,enabled:!0}}}}},Iv=g(`company_name`),Lv=g(`company_profile_url`),Rv=g(`company_website_url`),zv=g(`cleaned_company_name`),Bv=`company:identity@2`,Vv=r.object({pipe_id:r.literal(Bv),run_if:b(),connector:ql(),config:r.object({input_fields:F(r.object({[Iv.name]:w({fieldName:Iv.name})})),output_fields:P(r.object({[Lv.name]:D({fieldName:Lv.name}),[zv.name]:D({fieldName:zv.name}),[Rv.name]:D({fieldName:Rv.name})}))}).optional()}),Hv=e=>R(G(Iv,e)),Uv={"company-identity-v2-pipe0":{allowManagedConnection:!0,credits:{default:.3},mode:`always`,provider:`pipe0`}},Wv=class extends B{pipeId=Bv;payload;payloadSchema=Vv;billableOperations=Uv;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-identity-v2-pipe0`)}getInputRequirement(){return Hv(this.payload.config)}getRawOutputFields(){return{[Lv.name]:this.catalogOutput(Lv),[Rv.name]:this.catalogOutput(Rv),[zv.name]:this.catalogOutput(zv)}}getConnectionsRequirements(){return[{provider:`gemini`,rateLimitRatio:1,rateLimitOperation:`gemini_35_flash`,allowManagedConnection:!0},{provider:`serper`,rateLimitRatio:2,rateLimitOperation:`serper_search`,allowManagedConnection:!0},{provider:`leadmagic`,rateLimitRatio:.2,rateLimitOperation:`leadmagic_company_search`,allowManagedConnection:!0},{provider:`perplexity`,rateLimitRatio:.2,rateLimitOperation:`perplexity_generic`,allowManagedConnection:!0},{provider:`pipe0`,rateLimitRatio:.02,rateLimitOperation:`pipe0_scraper`,allowManagedConnection:!0}]}},Gv=Vv,Kv={pipeId:Bv,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Bv),label:`Company identity`,executionMode:`mix`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:identity@3`},description:`Find any company's website URL, LinkedIn profile URL, and cleaned name.`,tags:[V.WEBSITE,V.LINKEDIN],docPath:W(Bv),billableOperations:Uv,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:Hv(null),defaultPayload:{pipe_id:Bv,connector:null,run_if:null,config:{input_fields:{company_name:{alias:``}},output_fields:{cleaned_company_name:{alias:``,enabled:!0},company_profile_url:{alias:``,enabled:!0},company_website_url:{alias:``,enabled:!0}}}}},qv=g(`company_website_url`),Jv=g(`companyenrich_matches`),Yv=`company:lookalikes:companyenrich@1`,Xv=r.object({pipe_id:r.literal(Yv),run_if:b(),connector:C(),config:r.object({limit:Eu({groupPath:`config.general`,max:50,min:1,path:`config.limit`,sectionKey:`general`,info:`Define how many lookalikes you want to find.`,label:`Limit`}),input_fields:F(r.object({[qv.name]:w({fieldName:qv.name})})),output_fields:P(r.object({[Jv.name]:D({fieldName:Jv.name})}))}).optional()}),Zv=e=>R(G(qv,e)),Qv={"company-lookalikes-companyenrich-v1-companyenrich":{allowManagedConnection:!0,credits:{default:.2},mode:`onSuccess`,note:`One billing event per result.`,provider:`companyenrich`}},$v=class extends B{pipeId=Yv;payload;payloadSchema=Xv;billableOperations=Qv;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`companyenrich`]}estimateBillableOperations(e){return[{billableOperation:`company-lookalikes-companyenrich-v1-companyenrich`,quantity:e.count*5}]}getInputRequirement(){return Zv(this.payload.config)}getRawOutputFields(){return{[Jv.name]:this.catalogOutput(Jv)}}getConnectionsRequirements(){return[{provider:`companyenrich`,rateLimitRatio:1,rateLimitOperation:`company_enrich_generic`,allowManagedConnection:!0}]}},ey=Xv,ty={pipeId:Yv,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Yv),label:`Find company lookalikes`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:lookalikes:companyenrich@2`},description:`Find companies similar to the company you provide as input.`,tags:[V.COMPANY_PROFILES],docPath:W(Yv),billableOperations:Qv,allowedUserConnectionProviders:[`companyenrich`],managedProviders:[`companyenrich`],deprecatedProviders:[],defaultInputRequirement:Zv(null),defaultPayload:{pipe_id:Yv,connector:null,run_if:null,config:{limit:20,input_fields:{company_website_url:{alias:``}},output_fields:{companyenrich_matches:{alias:``,enabled:!0}}}}},ny=g(`company_website_url`),ry=g(`crustdata_companyenrich_match`),iy=`company:match:crustdata@1`,ay=r.object({pipe_id:r.literal(iy),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[ny.name]:w({fieldName:ny.name})})),output_fields:P(r.object({[ry.name]:D({fieldName:ry.name})}))}).optional()}),oy=e=>R(G(ny,e)),sy={"company-match-crustdata-v1-crustdata":{allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`,provider:`crustdata`}},cy=class extends B{pipeId=iy;payload;payloadSchema=ay;billableOperations=sy;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`company-match-crustdata-v1-crustdata`)}getInputRequirement(){return oy(this.payload.config)}getRawOutputFields(){return{[ry.name]:this.catalogOutput(ry)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_company_enrich`,allowManagedConnection:!0}]}},ly=ay,uy={pipeId:iy,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(iy),label:`Company match`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:match:crustdata@2`},description:`Company data like headcount distribution, LinkedIn URLs etc. via the Crustdata API.`,tags:[V.WEBSITE,V.LINKEDIN],docPath:W(iy),billableOperations:sy,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:oy(null),defaultPayload:{pipe_id:iy,connector:null,run_if:null,config:{input_fields:{company_website_url:{alias:``}},output_fields:{crustdata_companyenrich_match:{alias:``,enabled:!0}}}}},dy=g(`company_website_url`),fy=g(`company_name`),py=g(`company_profile_url`),my=g(`logodev_describe_match`),hy=g(`logo_url`),gy=`company:match:logodev@1`,_y=r.object({pipe_id:r.literal(gy),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[dy.name]:w({fieldName:dy.name})})),output_fields:P(r.object({[py.name]:D({fieldName:py.name}),[hy.name]:D({fieldName:hy.name}),[fy.name]:D({fieldName:fy.name}),[my.name]:D({fieldName:my.name})}))}).optional()}),vy=e=>R(G(dy,e)),yy={"company-match-logodev-v1-logodev":{allowManagedConnection:!0,credits:{default:.1},mode:`onSuccess`,provider:`logodev`}},by=class extends B{pipeId=gy;payload;payloadSchema=_y;billableOperations=yy;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`logodev`]}estimateBillableOperations(e){return H(e,`company-match-logodev-v1-logodev`)}getInputRequirement(){return vy(this.payload.config)}getRawOutputFields(){return{[py.name]:this.catalogOutput(py),[fy.name]:this.catalogOutput(fy),[hy.name]:this.catalogOutput(hy),[my.name]:this.catalogOutput(my)}}getConnectionsRequirements(){return[{provider:`logodev`,rateLimitRatio:1,rateLimitOperation:`logodev_describe`,allowManagedConnection:!0}]}},xy=_y,Sy={pipeId:gy,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(gy),label:`Company match`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:match:logodev@2`},description:`Find brand data like logos, colors, and social links via the Logo.dev API.`,tags:[V.WEBSITE,V.LINKEDIN],docPath:W(gy),billableOperations:yy,allowedUserConnectionProviders:[`logodev`],managedProviders:[`logodev`],deprecatedProviders:[],defaultInputRequirement:vy(null),defaultPayload:{pipe_id:gy,connector:null,run_if:null,config:{input_fields:{company_website_url:{alias:``}},output_fields:{company_profile_url:{alias:``,enabled:!0},logo_url:{alias:``,enabled:!0},logodev_describe_match:{alias:``,enabled:!0},company_name:{alias:``,enabled:!1}}}}},Cy=`company:newssummary:website@1`,wy=g(`company_news_summary`),Ty=g(`company_website_url`),Ey=r.object({pipe_id:r.literal(Cy),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[Ty.name]:w({fieldName:Ty.name})})),output_fields:P(r.object({[wy.name]:D({fieldName:wy.name})}))}).optional()}),Dy=e=>R(G(Ty,e)),Oy={"company-newssummary-website-v1-pipe0":{allowManagedConnection:!0,credits:{default:1},mode:`always`,provider:`pipe0`}},ky=class extends B{pipeId=Cy;payloadSchema=Ey;billableOperations=Oy;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-newssummary-website-v1-pipe0`)}getInputRequirement(){return Dy(this.payload.config)}getRawOutputFields(){return{[wy.name]:this.catalogOutput(wy)}}getConnectionsRequirements(){return[{provider:`perplexity`,rateLimitRatio:1,rateLimitOperation:`perplexity_generic`,allowManagedConnection:!0}]}},Ay=Ey,jy={pipeId:Cy,basePipe:U(Cy),inputFieldMode:`static`,outputFieldMode:`static`,label:`Company news`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:newssummary:domain@1`},description:`Find recent company news by performing a search and scrape.`,tags:[V.NEWS],docPath:W(Cy),billableOperations:Oy,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:Dy(null),defaultPayload:{pipe_id:Cy,run_if:null,connector:null,config:{input_fields:{company_website_url:{alias:``}},output_fields:{company_news_summary:{alias:``,enabled:!0}}}}},My=g(`company_website_url`),Ny=g(`company_social_url`),Py=g(`company_description`),Fy=g(`company_industry`),Iy=g(`company_region`),Ly=g(`headcount`),Ry=g(`estimated_revenue`),zy=g(`founded_year`),By=`company:overview@1`,Vy=r.object({pipe_id:r.literal(By),run_if:b(),connector:ql(),config:r.object({input_fields:F(r.object({[My.name]:w({fieldName:My.name}),[Ny.name]:w({fieldName:Ny.name})})),output_fields:P(r.object({[Py.name]:D({fieldName:Py.name}),[Fy.name]:D({fieldName:Fy.name}),[Iy.name]:D({fieldName:Iy.name}),[Ly.name]:D({fieldName:Ly.name}),[Ry.name]:D({fieldName:Ry.name}),[zy.name]:D({fieldName:zy.name})}))}).optional()}),Hy=e=>gd(G(My,e),G(Ny,e)),Uy={"company-overview-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:1},mode:`always`}},Wy=class extends B{pipeId=By;payloadSchema=Vy;billableOperations=Uy;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-overview-v1-pipe0`)}getInputRequirement(){return Hy(this.payload.config)}getRawOutputFields(){return{[Py.name]:this.catalogOutput(Py),[Fy.name]:this.catalogOutput(Fy),[Iy.name]:this.catalogOutput(Iy),[Ly.name]:this.catalogOutput(Ly),[Ry.name]:this.catalogOutput(Ry),[zy.name]:this.catalogOutput(zy)}}getConnectionsRequirements(){return[{provider:`perplexity`,rateLimitRatio:1,rateLimitOperation:`perplexity_generic`,allowManagedConnection:!0},{provider:`leadmagic`,rateLimitRatio:.2,rateLimitOperation:`leadmagic_email_lookup`,allowManagedConnection:!0},{provider:`gemini`,rateLimitOperation:`gemini_20_flash`,rateLimitRatio:.1,allowManagedConnection:!0}]}},Gy=Vy,Ky={pipeId:By,basePipe:U(By),inputFieldMode:`static`,outputFieldMode:`static`,label:`Company overview`,executionMode:`mix`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:identity@2`},description:`Find high-level business and financial information like company description, estimated revenue, and headcount.`,docPath:`/resources/pipe-catalog/company:overview/1`,tags:[V.WEBSITE,V.LINKEDIN,V.FINANCIAL_DATA,V.DEPRECATED],allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],billableOperations:Uy,defaultInputRequirement:Hy(null),defaultPayload:{pipe_id:By,run_if:null,connector:void 0,config:{input_fields:{company_social_url:{alias:``},company_website_url:{alias:``}},output_fields:{company_description:{alias:``,enabled:!0},company_industry:{alias:``,enabled:!0},company_region:{alias:``,enabled:!0},estimated_revenue:{alias:``,enabled:!0},founded_year:{alias:``,enabled:!0},headcount:{alias:``,enabled:!0}}}}},qy=g(`company_website_url`),Jy=g(`company_profile_url`),Yy=g(`company_description`),Xy=g(`company_industry`),Zy=g(`company_region`),Qy=g(`headcount`),$y=g(`estimated_revenue`),eb=g(`founded_year`),tb=g(`company_name`),nb=`company:overview@2`,rb=r.object({pipe_id:r.literal(nb),run_if:b(),connector:ql(),config:r.object({input_fields:F(r.object({[qy.name]:w({fieldName:qy.name}),[Jy.name]:w({fieldName:Jy.name})})),output_fields:P(r.object({[Yy.name]:D({fieldName:Yy.name}),[Xy.name]:D({fieldName:Xy.name}),[Zy.name]:D({fieldName:Zy.name}),[Qy.name]:D({fieldName:Qy.name}),[$y.name]:D({fieldName:$y.name}),[eb.name]:D({fieldName:eb.name}),[tb.name]:D({fieldName:tb.name})}))}).optional()}),ib=e=>gd(G(qy,e),G(Jy,e)),ab={"company-overview-v2-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:1},mode:`always`}},ob=class extends B{pipeId=nb;payloadSchema=rb;billableOperations=ab;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-overview-v2-pipe0`)}getInputRequirement(){return ib(this.payload.config)}getRawOutputFields(){return{[Yy.name]:this.catalogOutput(Yy),[Xy.name]:this.catalogOutput(Xy),[Zy.name]:this.catalogOutput(Zy),[Qy.name]:this.catalogOutput(Qy),[$y.name]:this.catalogOutput($y),[eb.name]:this.catalogOutput(eb),[tb.name]:this.catalogOutput(tb)}}getConnectionsRequirements(){return[{provider:`perplexity`,rateLimitRatio:1,rateLimitOperation:`perplexity_generic`,allowManagedConnection:!0},{provider:`leadmagic`,rateLimitRatio:.2,rateLimitOperation:`leadmagic_email_lookup`,allowManagedConnection:!0},{provider:`gemini`,rateLimitOperation:`gemini_20_flash`,rateLimitRatio:.1,allowManagedConnection:!0}]}},sb=rb,cb={pipeId:nb,basePipe:U(nb),inputFieldMode:`static`,outputFieldMode:`static`,label:`Company overview`,executionMode:`mix`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:overview@3`},description:`Business description, industry, and financial information.`,docPath:W(nb),tags:[V.WEBSITE,V.LINKEDIN,V.FINANCIAL_DATA],allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],billableOperations:ab,defaultInputRequirement:ib(null),defaultPayload:{pipe_id:nb,run_if:null,connector:void 0,config:{input_fields:{company_profile_url:{alias:``},company_website_url:{alias:``}},output_fields:{company_description:{alias:``,enabled:!0},company_industry:{alias:``,enabled:!0},company_region:{alias:``,enabled:!0},estimated_revenue:{alias:``,enabled:!0},founded_year:{alias:``,enabled:!0},headcount:{alias:``,enabled:!0},company_name:{alias:``,enabled:!1}}}}},lb=g(`company_website_url`),ub=g(`technology_list`),db=g(`spending_trend`),fb=g(`technology_match_builtwith`),pb=`company:techstack:builtwith@1`,mb=r.object({pipe_id:r.literal(pb),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[lb.name]:w({fieldName:lb.name})})),output_fields:P(r.object({[ub.name]:D({fieldName:ub.name}),[fb.name]:D({fieldName:fb.name}),[db.name]:D({fieldName:db.name})}))}).optional()}),hb=e=>R(G(lb,e)),gb={"company-techstack-builtwith-v1-builtwith":{provider:`builtwith`,allowManagedConnection:!0,credits:{default:2},mode:`always`}},_b=class extends B{pipeId=pb;payload;payloadSchema=mb;billableOperations=gb;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`builtwith`]}estimateBillableOperations(e){return H(e,`company-techstack-builtwith-v1-builtwith`)}getInputRequirement(){return hb(this.payload.config)}getRawOutputFields(){return{[ub.name]:this.catalogOutput(ub),[fb.name]:this.catalogOutput(fb),[db.name]:this.catalogOutput(db)}}getConnectionsRequirements(){return[{provider:`builtwith`,rateLimitRatio:1,rateLimitOperation:`builtwith_generic`,allowManagedConnection:!0}]}},vb=mb,yb={pipeId:pb,basePipe:U(pb),managedProviders:[`builtwith`],deprecatedProviders:[],allowedUserConnectionProviders:[`builtwith`],label:`Tech stack`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:techstack:builtwith@2`},description:`All technologies and frameworks powering a given website.`,tags:[V.WEBSITE],inputFieldMode:`static`,outputFieldMode:`static`,docPath:W(pb),billableOperations:gb,defaultInputRequirement:hb(null),defaultPayload:{pipe_id:pb,connector:null,run_if:null,config:{input_fields:{company_website_url:{alias:``}},output_fields:{technology_list:{alias:``,enabled:!0},technology_match_builtwith:{alias:``,enabled:!0},spending_trend:{alias:``,enabled:!0}}}}},bb=`company:websiteurl:email@1`,xb=g(`company_website_url`),Sb=g(`email`),Cb=r.object({pipe_id:r.literal(bb),run_if:b(),connector:ql(),config:r.object({input_fields:F(r.object({[Sb.name]:w({fieldName:Sb.name})})),output_fields:P(r.object({[xb.name]:D({fieldName:xb.name})}))}).optional()}),wb=e=>R(G(Sb,e)),Tb={"company-websiteurl-email-v1-pipe0":{credits:{default:0},allowManagedConnection:!0,mode:`always`,provider:`pipe0`}},Eb=class extends B{pipeId=bb;payload;payloadSchema=Cb;billableOperations=Tb;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-websiteurl-email-v1-pipe0`)}getInputRequirement(){return wb(this.payload.config)}getRawOutputFields(){return{[xb.name]:this.catalogOutput(xb)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},Db=Cb,Ob={pipeId:bb,basePipe:U(bb),inputFieldMode:`static`,outputFieldMode:`static`,label:`Website from email`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`company:domain:workemail@1`},description:`Extract the company website URL from a work email address.`,tags:[V.EMAIL,V.WORK_EMAIL,V.WEBSITE],docPath:W(bb),allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],billableOperations:Tb,defaultInputRequirement:wb(null),defaultPayload:{pipe_id:bb,connector:null,run_if:null,config:{input_fields:{email:{alias:``}},output_fields:{company_website_url:{alias:``,enabled:!0}}}}},kb=`people:email:iswork@1`,Ab=g(`is_work_email`),jb=g(`email`),Mb=r.object({pipe_id:r.literal(kb),run_if:b(),connector:ql(),config:r.object({input_fields:F(r.object({[jb.name]:w({fieldName:jb.name})})),output_fields:P(r.object({[Ab.name]:D({fieldName:Ab.name})}))}).optional()}),Nb=e=>R(G(jb,e)),Pb={"people-email-iswork-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},Fb=class extends B{pipeId=kb;payload;payloadSchema=Mb;billableOperations=Pb;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`people-email-iswork-v1-pipe0`)}getInputRequirement(){return Nb(this.payload.config)}getRawOutputFields(){return{[Ab.name]:this.catalogOutput(Ab)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},Ib=Mb,Lb={pipeId:kb,label:`Work email checker`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`email:iswork@1`},description:`Check if a given email address is personal or professional.`,tags:[V.EMAIL,V.WORK_EMAIL],docPath:W(kb),billableOperations:Pb,basePipe:U(kb),allowedUserConnectionProviders:[],inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:Nb(null),defaultPayload:{pipe_id:kb,run_if:null,connector:null,config:{input_fields:{email:{alias:``}},output_fields:{is_work_email:{alias:``,enabled:!0}}}}},Rb=`people:email:validate:zerobounce@1`,zb=g(`work_email`),Bb=g(`is_email_valid`),Vb=r.object({pipe_id:r.literal(Rb),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[zb.name]:w({fieldName:zb.name})})),output_fields:P(r.object({[Bb.name]:D({fieldName:Bb.name})}))}).optional()}),Hb=e=>R(G(zb,e)),Ub={"people-email-validate-zerobounce-v1-zerobounce":{provider:`zerobounce`,allowManagedConnection:!0,credits:{default:.3},mode:`always`}},Wb=class extends B{pipeId=Rb;payload;payloadSchema=Vb;billableOperations=Ub;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`zerobounce`]}estimateBillableOperations(e){return H(e,`people-email-validate-zerobounce-v1-zerobounce`)}getInputRequirement(){return Hb(this.payload.config)}getRawOutputFields(){return{[Bb.name]:this.catalogOutput(Bb)}}getConnectionsRequirements(){return[{provider:`zerobounce`,rateLimitRatio:1,rateLimitOperation:`zerobounce_generic`,allowManagedConnection:!0}]}},Gb=Vb,Kb={pipeId:Rb,basePipe:U(Rb),label:`Validate email`,executionMode:`single`,categories:[`people_data`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:email:validate:zerobounce@2`},description:`Verify email address against various factors, including syntax, domain, and server existence, to ensure it is deliverable and active.`,tags:[V.EMAIL],docPath:`/resources/pipe-catalog/people:email:validate:zerobounce/1`,billableOperations:Ub,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`zerobounce`],managedProviders:[`zerobounce`],deprecatedProviders:[],defaultInputRequirement:Hb(null),defaultPayload:{pipe_id:Rb,connector:null,run_if:null,config:{input_fields:{work_email:{alias:``}},output_fields:{is_email_valid:{alias:``,enabled:!0}}}}},qb=`people:email:validate:zerobounce@2`,Jb=g(`email`),Yb=g(`zerobounce_validation_status`),Xb=g(`zerobounce_validation_match`),Zb=r.object({pipe_id:r.literal(qb),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[Jb.name]:w({fieldName:Jb.name})})),output_fields:P(r.object({[Xb.name]:D({fieldName:Xb.name}),[Yb.name]:D({fieldName:Yb.name})}))}).optional()}),Qb=e=>R(G(Jb,e)),$b={"people-email-validate-zerobounce-v2-zerobounce":{provider:`zerobounce`,allowManagedConnection:!0,credits:{default:.3},mode:`always`}},ex=class extends B{pipeId=qb;payload;payloadSchema=Zb;billableOperations=$b;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`zerobounce`]}estimateBillableOperations(e){return H(e,`people-email-validate-zerobounce-v2-zerobounce`)}getInputRequirement(){return Qb(this.payload.config)}getRawOutputFields(){return{[Yb.name]:this.catalogOutput(Yb),[Xb.name]:this.catalogOutput(Xb)}}getConnectionsRequirements(){return[{provider:`zerobounce`,rateLimitRatio:1,rateLimitOperation:`zerobounce_generic`,allowManagedConnection:!0}]}},tx=Zb,nx={pipeId:qb,basePipe:U(qb),label:`Validate email`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`email:validate:zerobounce@1`},description:`Verify email address against various factors, including syntax, domain, and server existence, to ensure it is deliverable and active.`,tags:[V.EMAIL],docPath:W(qb),billableOperations:$b,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`zerobounce`],managedProviders:[`zerobounce`],deprecatedProviders:[],defaultInputRequirement:Qb(null),defaultPayload:{pipe_id:qb,connector:null,run_if:null,config:{input_fields:{email:{alias:``}},output_fields:{zerobounce_validation_status:{alias:``,enabled:!0},zerobounce_validation_match:{alias:``,enabled:!0}}}}},rx=`people:identity:email:waterfall@1`,ix=g(`email`),ax=g(`company_website_url`),ox=g(`name`),sx=g(`job_title`),cx=g(`profile_url`),lx=g(`company_profile_url`),ux=g(`company_name`),dx=[`findymail`,`hunter`,`crustdata`],fx=[{provider:`findymail`},{provider:`hunter`},{provider:`crustdata`}],px=r.object({pipe_id:r.literal(rx),connector:C(),run_if:b(),config:r.object({providers:T({availableProviders:dx,defaultProviders:fx,sectionKey:`general`}),input_fields:F(r.object({[ix.name]:w({fieldName:ix.name})})),output_fields:P(r.object({[ox.name]:D({fieldName:ox.name}),[cx.name]:D({fieldName:cx.name}),[sx.name]:D({fieldName:sx.name}),[ax.name]:D({fieldName:ax.name}),[ux.name]:D({fieldName:ux.name}),[lx.name]:D({fieldName:lx.name})}))}).optional()}),mx=e=>R(G(ix,e)),hx={"people-identity-email-waterfall-v1-hunter":{provider:`hunter`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"people-identity-email-waterfall-v1-findymail":{provider:`findymail`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"people-identity-email-waterfall-v1-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`}},gx=class extends B{pipeId=rx;payload;payloadSchema=px;billableOperations=hx;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return mx(this.payload.config)}getRawOutputFields(){return{[ox.name]:this.catalogOutput(ox,{isPrimaryOutput:!0}),[cx.name]:this.catalogOutput(cx,{isPrimaryOutput:!0}),[sx.name]:this.catalogOutput(sx,{isPrimaryOutput:!0}),[ux.name]:this.catalogOutput(ux,{isPrimaryOutput:!0}),[lx.name]:this.catalogOutput(lx,{isPrimaryOutput:!0}),[ax.name]:this.catalogOutput(ax,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={hunter:`prospeo_email_lookup`,findymail:`findymail_email_b2b_lookup`,crustdata:`crustdata_realtime_person_enrich`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},_x=px,vx={pipeId:rx,basePipe:U(rx),label:`Person identity from email`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:identity:email:waterfall@1`},description:`Find identity of a person from their email address.`,tags:[V.EMAIL,V.PEOPLE_PROFILES],docPath:W(rx),managedProviders:dx,deprecatedProviders:[],allowedUserConnectionProviders:dx,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:hx,defaultInputRequirement:mx(null),defaultPayload:{pipe_id:rx,connector:null,run_if:null,config:{providers:fx,input_fields:{email:{alias:``}},output_fields:{name:{alias:``,enabled:!0},profile_url:{alias:``,enabled:!0},job_title:{alias:``,enabled:!0},company_name:{alias:``,enabled:!0},company_profile_url:{alias:``,enabled:!0},company_website_url:{alias:``,enabled:!0}}}}},yx=`people:match:role:waterfall@1`,bx=g(`company_website_url`),xx=g(`role_finder_match`),Sx=[`leadmagic`],Cx=[{provider:`leadmagic`}],wx=r.object({pipe_id:r.literal(yx),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:Cx,availableProviders:Sx}),roles:pu({sectionKey:`general`,groupPath:`config.general`,label:`Roles`,path:`config.roles`,info:`Company roles to include`,maxItems:3,minItems:1}),input_fields:F(r.object({[bx.name]:w({fieldName:bx.name})})),output_fields:P(r.object({[xx.name]:D({fieldName:xx.name})}))})}),Tx=e=>gd(G(bx,e)),Ex={"people-match-role-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`}},Dx=class extends B{pipeId=yx;payload;payloadSchema=wx;billableOperations=Ex;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return Tx(this.payload.config)}getRawOutputFields(){return{[xx.name]:this.catalogOutput(xx,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_role_finder`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},Ox=wx,kx={pipeId:yx,basePipe:U(yx),managedProviders:Sx,deprecatedProviders:[],allowedUserConnectionProviders:Sx,label:`Role finder`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:match:role:waterfall@1`},description:`Find role matches for a given companies like "CEO" or "CFO".`,tags:[V.PEOPLE_PROFILES],docPath:W(yx),billableOperations:Ex,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:Tx(null),defaultPayload:{pipe_id:yx,run_if:null,connector:null,config:{roles:[],providers:Cx,input_fields:{company_website_url:{alias:``}},output_fields:{role_finder_match:{alias:``,enabled:!0}}}}},Ax=`people:mobilenumber:professionalprofile:waterfall@1`,jx=g(`professional_profile_url`),Mx=g(`mobile_number`),Nx=[`leadmagic`,`prospeo`],Px=[{provider:`leadmagic`},{provider:`prospeo`}],Fx=r.object({pipe_id:r.literal(Ax),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:Px,availableProviders:Nx}),input_fields:F(r.object({[jx.name]:w({fieldName:jx.name})})),output_fields:P(r.object({[Mx.name]:D({fieldName:Mx.name})}))}).optional()}),Ix=e=>R(G(jx,e)),Lx={"people-mobilenumber-professionalprofile-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"people-mobilenumber-professionalprofile-waterfall-v1-prospeo":{provider:`prospeo`,allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`}},Rx=class extends B{pipeId=Ax;payload;payloadSchema=Fx;billableOperations=Lx;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return Ix(this.payload.config)}getRawOutputFields(){return{[Mx.name]:this.catalogOutput(Mx)}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,prospeo:`prospeo_phone_number_lookup`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},zx=Fx,Bx={pipeId:Ax,basePipe:U(Ax),label:`Mobile number from LinkedIn profile`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:phone:profile:waterfall@1`},description:`Find a mobile phone number for any prospect using multiple data providers in a waterfall motion.`,docPath:`/resources/pipe-catalog/people:mobilenumber:professionalprofile:waterfall/1`,tags:[V.PHONE,V.WATERFALL],billableOperations:Lx,defaultInputRequirement:Ix(null),inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:Nx,deprecatedProviders:[],allowedUserConnectionProviders:Nx,defaultPayload:{pipe_id:Ax,connector:null,run_if:null,config:{providers:Px,input_fields:{professional_profile_url:{alias:``}},output_fields:{mobile_number:{alias:``,enabled:!0}}}}},Vx=`people:mobilenumber:workemail:waterfall@1`,Hx=g(`work_email`),Ux=g(`mobile_number`),Wx=[`leadmagic`],Gx=[{provider:`leadmagic`}],Kx=r.object({pipe_id:r.literal(Vx),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:Wx,defaultProviders:Gx}),input_fields:F(r.object({[Hx.name]:w({fieldName:Hx.name})})),output_fields:P(r.object({[Ux.name]:D({fieldName:Ux.name})}))}).optional()}),qx=e=>R(G(Hx,e)),Jx={"people-mobilenumber-workemail-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`}},Yx=class extends B{pipeId=Vx;payload;payloadSchema=Kx;billableOperations=Jx;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers?.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return qx(this.payload.config)}getRawOutputFields(){return{[Ux.name]:this.catalogOutput(Ux)}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},Xx=Kx,Zx={pipeId:Vx,basePipe:U(Vx),label:`Mobile number from email`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:phone:workemail:waterfall@1`},description:`Find a mobile phone number for a prospect.`,tags:[V.PHONE,V.WATERFALL],docPath:`/resources/pipe-catalog/people:mobilenumber:workemail:waterfall/1`,billableOperations:Jx,defaultInputRequirement:qx(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:Wx,managedProviders:Wx,deprecatedProviders:[],defaultPayload:{pipe_id:Vx,connector:null,run_if:null,config:{providers:Gx,input_fields:{work_email:{alias:``}},output_fields:{mobile_number:{alias:``,enabled:!0}}}}},Qx=`people:name:split@1`,$x=g(`name`),eS=g(`first_name`),tS=g(`last_name`),nS=r.object({pipe_id:r.literal(Qx),connector:ql(),run_if:b(),config:r.object({input_fields:F(r.object({[$x.name]:w({fieldName:$x.name})})),output_fields:P(r.object({[eS.name]:D({fieldName:eS.name}),[tS.name]:D({fieldName:tS.name})}))}).optional()}),rS=e=>R(G($x,e)),iS={"people-name-split-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},aS=class extends B{pipeId=Qx;payload;payloadSchema=nS;billableOperations=iS;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`people-name-split-v1-pipe0`)}getInputRequirement(){return rS(this.payload.config)}getRawOutputFields(){return{[eS.name]:this.catalogOutput(eS),[tS.name]:this.catalogOutput(tS)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},oS=nS,sS={pipeId:Qx,basePipe:U(Qx),label:`Split name`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:name:split@1`},description:`Split a full name into first and last name.`,tags:[V.NAMES],docPath:W(Qx),billableOperations:iS,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:rS(null),allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:Qx,run_if:null,connector:void 0,config:{input_fields:{name:{alias:``}},output_fields:{first_name:{alias:``,enabled:!0},last_name:{alias:``,enabled:!0}}}}},cS=`people:personalemail:profile:waterfall@1`,lS=g(`profile_url`),uS=g(`personal_email`),dS=g(`alternate_personal_emails`),fS=[`clado`,`leadmagic`,`mixrank`],pS=[{provider:`leadmagic`},{provider:`mixrank`}],mS=r.object({pipe_id:r.literal(cS),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:fS,defaultProviders:pS}),input_fields:F(r.object({[lS.name]:w({fieldName:lS.name})})),output_fields:P(r.object({[uS.name]:D({fieldName:uS.name}),[dS.name]:D({fieldName:dS.name})}))}).optional()}),hS=e=>R(G(lS,e)),gS={"people-personalemail-profile-waterfall-v1-clado":{provider:`clado`,allowManagedConnection:!0,credits:{default:2},mode:`always`},"people-personalemail-profile-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`},"people-personalemail-profile-waterfall-v1-mixrank":{provider:`mixrank`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`}},_S=class extends B{pipeId=cS;payload;payloadSchema=mS;billableOperations=gS;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return hS(this.payload.config)}getRawOutputFields(){return{[uS.name]:this.catalogOutput(uS,{isPrimaryOutput:!0}),[dS.name]:this.catalogOutput(dS)}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_personal_email_finder`,clado:`clado_contact_information`,mixrank:`mixrank-person-match`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},vS=mS,yS={pipeId:cS,basePipe:U(cS),allowedUserConnectionProviders:fS,managedProviders:fS,deprecatedProviders:[`clado`],label:`Personal email from LinkedIn`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:personalemail:profileurl:waterfall@1`},description:`Find the personal email address of a prospect by using a professional profile URL as input.`,tags:[V.EMAIL,V.PERSONAL_EMAIL],docPath:W(cS),billableOperations:gS,defaultInputRequirement:hS(null),inputFieldMode:`static`,outputFieldMode:`static`,defaultPayload:{pipe_id:cS,connector:null,run_if:null,config:{providers:pS,input_fields:{profile_url:{alias:``}},output_fields:{personal_email:{alias:``,enabled:!0},alternate_personal_emails:{alias:``,enabled:!0}}}}},bS=`people:phone:profile:waterfall@1`,xS=g(`profile_url`),SS=g(`mobile`),CS=[`leadmagic`,`prospeo`,`amplemarket`,`findymail`,`clado`],wS=[{provider:`leadmagic`},{provider:`prospeo`},{provider:`amplemarket`},{provider:`findymail`}],TS=r.object({pipe_id:r.literal(bS),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:wS,availableProviders:CS}),input_fields:F(r.object({[xS.name]:w({fieldName:xS.name})})),output_fields:P(r.object({[SS.name]:D({fieldName:SS.name})}))}).optional()}),ES=e=>R(G(xS,e)),DS={"people-phone-profile-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"people-phone-profile-waterfall-v1-clado":{provider:`clado`,allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`},"people-phone-profile-waterfall-v1-prospeo":{provider:`prospeo`,allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`},"people-phone-profile-waterfall-v1-findymail":{provider:`findymail`,allowManagedConnection:!0,credits:{default:6},mode:`onSuccess`},"people-phone-profile-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:4},mode:`onSuccess`}},OS=class extends B{pipeId=bS;payload;payloadSchema=TS;billableOperations=DS;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return ES(this.payload.config)}getRawOutputFields(){return{[SS.name]:this.catalogOutput(SS,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,prospeo:`prospeo_phone_number_lookup`,findymail:`findymail_phone_lookup`,clado:`clado_contact_information`,amplemarket:`amplemarket-person-reveal`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},kS=TS,AS={pipeId:bS,basePipe:U(bS),label:`Mobile number from LinkedIn profile`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:mobile:profileurl:waterfall@1`},description:`Find a mobile phone number for any prospect using multiple data providers in a waterfall motion.`,docPath:W(bS),tags:[V.PHONE,V.WATERFALL],billableOperations:DS,defaultInputRequirement:ES(null),inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:CS,allowedUserConnectionProviders:CS,deprecatedProviders:[`clado`],defaultPayload:{pipe_id:bS,connector:null,run_if:null,config:{providers:wS,input_fields:{profile_url:{alias:``}},output_fields:{mobile:{alias:``,enabled:!0}}}}},jS=`people:phone:workemail:waterfall@1`,MS=g(`work_email`),NS=g(`mobile`),PS=[`leadmagic`,`amplemarket`],FS=[{provider:`leadmagic`},{provider:`amplemarket`}],IS=r.object({pipe_id:r.literal(jS),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:PS,defaultProviders:FS}),input_fields:F(r.object({[MS.name]:w({fieldName:MS.name})})),output_fields:P(r.object({[NS.name]:D({fieldName:NS.name})}))}).optional()}),LS=e=>R(G(MS,e)),RS={"people-phone-workemail-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"people-phone-workemail-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:4},mode:`onSuccess`}},zS=class extends B{pipeId=jS;payload;payloadSchema=IS;billableOperations=RS;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return LS(this.payload.config)}getRawOutputFields(){return{[NS.name]:this.catalogOutput(NS,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,amplemarket:`amplemarket-person-reveal`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},BS=IS,VS={pipeId:jS,basePipe:U(jS),label:`Mobile number from email`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:mobile:workemail:waterfall@1`},description:`Find a mobile phone number for a prospect.`,tags:[V.PHONE,V.WATERFALL],docPath:W(jS),billableOperations:RS,defaultInputRequirement:LS(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:PS,managedProviders:PS,deprecatedProviders:[],defaultPayload:{pipe_id:jS,connector:null,run_if:null,config:{providers:FS,input_fields:{work_email:{alias:``}},output_fields:{mobile:{alias:``,enabled:!0}}}}},HS=`people:professionalprofile:waterfall@1`,US=g(`professional_profile`),WS=g(`professional_profile_url`),GS=[`prospeo`,`icypeas`],KS=[{provider:`prospeo`},{provider:`icypeas`}],qS=r.object({pipe_id:r.literal(HS),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:GS,defaultProviders:KS}),input_fields:F(r.object({[WS.name]:w({fieldName:WS.name})})),output_fields:P(r.object({[US.name]:D({fieldName:US.name})}))}).optional()}),JS=e=>R(G(WS,e)),YS={"people-professionalprofile-waterfall-v1-icypeas":{provider:`icypeas`,credits:{default:1},mode:`onSuccess`,allowManagedConnection:!0},"people-professionalprofile-waterfall-v1-prospeo":{provider:`prospeo`,credits:{default:1},mode:`onSuccess`,allowManagedConnection:!0}},XS=class extends B{pipeId=HS;payload;payloadSchema=qS;billableOperations=YS;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return JS(this.payload.config)}getRawOutputFields(){return{[US.name]:this.catalogOutput(US)}}getConnectionsRequirements(){let e={icypeas:`icypeas_scrape_profile`,prospeo:`prospeo_social_profile_lookup`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},ZS=qS,QS={pipeId:HS,basePipe:U(HS),label:`Full LinkedIn profile`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:profile:waterfall@1`},description:`Find a JSON representation of a LinkedIn profile.`,docPath:`/resources/pipe-catalog/people:professionalprofile:waterfall/1`,tags:[V.LINKEDIN,V.WATERFALL],managedProviders:GS,deprecatedProviders:[],allowedUserConnectionProviders:GS,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:YS,defaultInputRequirement:JS(null),defaultPayload:{pipe_id:HS,run_if:null,connector:null,config:{providers:KS,input_fields:{professional_profile_url:{alias:``}},output_fields:{professional_profile:{alias:``,enabled:!0}}}}},$S=`people:professionalprofileurl:email:waterfall@1`,eC=g(`email`),tC=g(`work_email`),nC=g(`professional_profile_url`),rC=[`leadmagic`],iC=[{provider:`leadmagic`}],aC=r.object({pipe_id:r.literal($S),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:iC,availableProviders:rC}),input_fields:F(r.object({[eC.name]:w({fieldName:eC.name}),[tC.name]:w({fieldName:tC.name})})),output_fields:P(r.object({[nC.name]:D({fieldName:nC.name})}))}).optional()}),oC=e=>gd(G(eC,e),G(tC,e)),sC={"people-professionalprofileurl-email-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:3.5},mode:`onSuccess`}},cC=class extends B{pipeId=$S;payload;payloadSchema=aC;billableOperations=sC;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return oC(this.payload.config)}getRawOutputFields(){return{[nC.name]:this.catalogOutput(nC)}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_to_b2b_profile`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},lC=aC,uC={pipeId:$S,basePipe:U($S),managedProviders:rC,deprecatedProviders:[],allowedUserConnectionProviders:rC,label:`LinkedIn URL from email`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:profileurl:email:waterfall@1`},description:`Find the URL for a prospect's LinkedIn profile from their personal or professional email address.`,tags:[V.LINKEDIN],docPath:`/resources/pipe-catalog/people:professionalprofileurl:email:waterfall/1`,billableOperations:sC,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:oC(null),defaultPayload:{pipe_id:$S,run_if:null,connector:null,config:{providers:iC,input_fields:{email:{alias:``},work_email:{alias:``}},output_fields:{professional_profile_url:{alias:``,enabled:!0}}}}},dC=`people:professionalprofileurl:name@1`,fC=g(`name`),pC=g(`company_name`),mC=g(`location_hint`),hC=g(`professional_profile_url`),gC=r.object({pipe_id:r.literal(dC),connector:ql(),run_if:b(),config:r.object({input_fields:F(r.object({[fC.name]:w({fieldName:fC.name}),[pC.name]:w({fieldName:pC.name}),[mC.name]:w({fieldName:mC.name})})),output_fields:P(r.object({[hC.name]:D({fieldName:hC.name})}))}).optional()}),_C=e=>z(R(G(fC,e)),R(G(pC,e)),_d(G(mC,e))),vC={"people-professionalprofileurl-name-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:.6},mode:`always`}},yC=class extends B{pipeId=dC;payload;payloadSchema=gC;billableOperations=vC;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`people-professionalprofileurl-name-v1-pipe0`)}getInputRequirement(){return _C(this.payload.config)}getRawOutputFields(){return{[hC.name]:this.catalogOutput(hC)}}getConnectionsRequirements(){return[{provider:`serper`,rateLimitRatio:1,rateLimitOperation:`serper_search`,allowManagedConnection:!0}]}},bC=gC,xC={pipeId:dC,basePipe:U(dC),label:`LinkedIn URL from name`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:profileurl:name@1`},allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],description:`Find the LinkedIn profile URL by using the prospect's name as input.`,docPath:`/resources/pipe-catalog/people:professionalprofileurl:name/1`,tags:[V.LINKEDIN],billableOperations:vC,defaultInputRequirement:_C(null),inputFieldMode:`static`,outputFieldMode:`static`,defaultPayload:{pipe_id:dC,connector:void 0,run_if:null,config:{input_fields:{company_name:{alias:``},location_hint:{alias:``},name:{alias:``}},output_fields:{professional_profile_url:{alias:``,enabled:!0}}}}},SC=`people:profile:waterfall@1`,CC=g(`profile`),wC=g(`profile_url`),TC=[`prospeo`,`icypeas`,`amplemarket`,`clado`],EC=[{provider:`amplemarket`},{provider:`prospeo`},{provider:`icypeas`}],DC=r.object({pipe_id:r.literal(SC),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:TC,defaultProviders:EC}),input_fields:F(r.object({[wC.name]:w({fieldName:wC.name})})),output_fields:P(r.object({[CC.name]:D({fieldName:CC.name})}))}).optional()}),OC=e=>R(G(wC,e)),kC={"people-profile-waterfall-v1-icypeas":{provider:`icypeas`,credits:{default:1},mode:`onSuccess`,allowManagedConnection:!0},"people-profile-waterfall-v1-prospeo":{provider:`prospeo`,credits:{default:1},mode:`onSuccess`,allowManagedConnection:!0},"people-profile-waterfall-v1-clado":{provider:`clado`,credits:{default:1},mode:`onSuccess`,allowManagedConnection:!0},"people-profile-waterfall-v1-amplemarket":{provider:`amplemarket`,credits:{default:1},mode:`onSuccess`,allowManagedConnection:!0}},AC=class extends B{pipeId=SC;payload;payloadSchema=DC;billableOperations=kC;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return OC(this.payload.config)}getRawOutputFields(){return{[CC.name]:this.catalogOutput(CC,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={icypeas:`icypeas_scrape_profile`,prospeo:`prospeo_social_profile_lookup`,clado:`clado_social_profile_lookup`,amplemarket:`amplemarket-person-reveal`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},jC=DC,MC={pipeId:SC,basePipe:U(SC),label:`Full LinkedIn profile`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:profile:waterfall@1`},description:`Find a JSON representation of a LinkedIn profile.`,docPath:W(SC),tags:[V.LINKEDIN,V.WATERFALL],managedProviders:TC,deprecatedProviders:[`clado`],allowedUserConnectionProviders:TC,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:kC,defaultInputRequirement:OC(null),defaultPayload:{pipe_id:SC,run_if:null,connector:null,config:{providers:EC,input_fields:{profile_url:{alias:``}},output_fields:{profile:{alias:``,enabled:!0}}}}},NC=g(`work_email`),PC=g(`crustdata_person_match`),FC=g(`crustdata_profile_match_score`),IC=`people:profile:workemail:crustdata@1`,LC=r.object({pipe_id:r.literal(IC),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[NC.name]:w({fieldName:NC.name})})),output_fields:P(r.object({[PC.name]:D({fieldName:PC.name}),[FC.name]:D({fieldName:FC.name})}))}).optional()}),RC=e=>R(G(NC,e)),zC={"people-profile-workemail-crustdata-v1-crustdata":{allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`,provider:`crustdata`}},BC=class extends B{pipeId=IC;payload;payloadSchema=LC;billableOperations=zC;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`people-profile-workemail-crustdata-v1-crustdata`)}getInputRequirement(){return RC(this.payload.config)}getRawOutputFields(){return{[PC.name]:this.catalogOutput(PC),[FC.name]:this.catalogOutput(FC)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_realtime_person_enrich`,allowManagedConnection:!0}]}},VC=LC,HC={pipeId:IC,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(IC),label:`Profile from work email`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:profile:workemail:crustdata@1`},description:`Find person profile by their work email address.`,tags:[V.EMAIL,V.PEOPLE_PROFILES],docPath:W(IC),billableOperations:zC,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:RC(null),defaultPayload:{pipe_id:IC,connector:null,run_if:null,config:{input_fields:{work_email:{alias:``}},output_fields:{crustdata_person_match:{alias:``,enabled:!0},crustdata_profile_match_score:{alias:``,enabled:!0}}}}},UC=`people:profileurl:email:waterfall@1`,WC=g(`email`),GC=g(`work_email`),KC=g(`profile_url`),qC=[`leadmagic`],JC=[{provider:`leadmagic`}],YC=r.object({pipe_id:r.literal(UC),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:JC,availableProviders:qC}),input_fields:F(r.object({[WC.name]:w({fieldName:WC.name}),[GC.name]:w({fieldName:GC.name})})),output_fields:P(r.object({[KC.name]:D({fieldName:KC.name})}))}).optional()}),XC=e=>gd(G(WC,e),G(GC,e)),ZC={"people-profileurl-email-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:3.5},mode:`onSuccess`}},QC=class extends B{pipeId=UC;payload;payloadSchema=YC;billableOperations=ZC;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return XC(this.payload.config)}getRawOutputFields(){return{[KC.name]:this.catalogOutput(KC,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_to_b2b_profile`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},$C=YC,ew={pipeId:UC,basePipe:U(UC),managedProviders:qC,deprecatedProviders:[],allowedUserConnectionProviders:qC,label:`LinkedIn URL from email`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:profileurl:email:waterfall@1`},description:`Find the URL for a prospect's LinkedIn profile from their personal or professional email address.`,tags:[V.LINKEDIN],docPath:W(UC),billableOperations:ZC,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:XC(null),defaultPayload:{pipe_id:UC,run_if:null,connector:null,config:{providers:JC,input_fields:{email:{alias:``},work_email:{alias:``}},output_fields:{profile_url:{alias:``,enabled:!0}}}}},tw=`people:validate:email:zerobounce@1`,nw=g(`work_email`),rw=g(`ip_address`),iw=g(`is_email_valid`),aw=r.object({pipe_id:r.literal(tw),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[nw.name]:w({fieldName:nw.name}),[rw.name]:w({fieldName:rw.name})})),output_fields:P(r.object({[iw.name]:D({fieldName:iw.name})}))}).optional()}),ow=e=>z(R(G(nw,e)),_d(G(rw,e))),sw={"people-validate-email-zerobounce-v1-zerobounce":{provider:`zerobounce`,allowManagedConnection:!0,credits:{default:.5},mode:`always`}},cw=class extends B{pipeId=tw;payload;payloadSchema=aw;billableOperations=sw;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`zerobounce`]}estimateBillableOperations(e){return H(e,`people-validate-email-zerobounce-v1-zerobounce`)}getInputRequirement(){return ow(this.payload.config)}getRawOutputFields(){return{[iw.name]:this.catalogOutput(iw)}}getConnectionsRequirements(){return[{provider:`zerobounce`,rateLimitRatio:1,rateLimitOperation:`zerobounce_generic`,allowManagedConnection:!0}]}},lw=aw,uw={pipeId:tw,basePipe:U(tw),label:`Validate email`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:email:validate:zerobounce@1`},description:`Verify email address against various factors, including syntax, domain, and server existence, to ensure it is deliverable and active.`,tags:[V.EMAIL],docPath:`/resources/pipe-catalog/people:validate:email:zerobounce/1`,billableOperations:sw,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`zerobounce`],managedProviders:[`zerobounce`],deprecatedProviders:[],defaultInputRequirement:ow(null),defaultPayload:{pipe_id:tw,connector:null,run_if:null,config:{input_fields:{ip_address:{alias:``},work_email:{alias:``}},output_fields:{is_email_valid:{alias:``,enabled:!0}}}}},dw=`people:workemail:profileurl:waterfall@1`,fw=g(`profile_url`),pw=g(`work_email`),mw=g(`email_validation_status`),hw=[`hunter`,`amplemarket`,`findymail`,`leadmagic`,`crustdata`,`clado`],gw=[`clado`],_w=[{provider:`hunter`},{provider:`amplemarket`},{provider:`leadmagic`},{provider:`findymail`},{provider:`crustdata`}],vw=r.object({pipe_id:r.literal(dw),connector:C(),run_if:b(),config:r.object({providers:T({availableProviders:hw,defaultProviders:_w,sectionKey:`general`}),allow_catch_all_emails:E({path:`config.allow_catch_all_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,info:``,label:`Allow catch-all emails`}),allow_risky_emails:E({path:`config.allow_risky_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,info:`Higher chance of bouncing or being marked as spam.`,label:`Allow risky emails`}),input_fields:F(r.object({[fw.name]:w({fieldName:fw.name})})),output_fields:P(r.object({[pw.name]:D({fieldName:pw.name}),[mw.name]:D({fieldName:mw.name})}))}).optional()}),yw=e=>R(G(fw,e)),bw={"people-workemail-profileurl-waterfall-v1-hunter":{provider:`hunter`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`},"people-workemail-profileurl-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"people-workemail-profileurl-waterfall-v1-findymail":{provider:`findymail`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"people-workemail-profileurl-waterfall-v1-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:3},mode:`onSuccess`},"people-workemail-profileurl-waterfall-v1-clado":{provider:`clado`,allowManagedConnection:!0,credits:{default:3.5},mode:`onSuccess`},"people-workemail-profileurl-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:2.5},mode:`onSuccess`}},xw=class extends B{pipeId=dw;payload;payloadSchema=vw;billableOperations=bw;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return yw(this.payload.config)}getRawOutputFields(){return{[pw.name]:this.catalogOutput(pw,{isPrimaryOutput:!0}),[mw.name]:this.catalogOutput(mw,{isPrimaryOutput:!1})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_b2b_lookup`,hunter:`prospeo_email_lookup`,amplemarket:`amplemarket-person-reveal`,findymail:`findymail_email_b2b_lookup`,crustdata:`crustdata_realtime_person_enrich`,clado:`clado_contact_information`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},Sw=vw,Cw={pipeId:dw,basePipe:U(dw),label:`Work email from LinkedIn URL`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:workemail:profileurl:waterfall@1`},description:`Find work email addresses from B2B profile.`,tags:[V.EMAIL,V.WORK_EMAIL,V.WATERFALL],docPath:W(dw),managedProviders:hw,allowedUserConnectionProviders:hw,deprecatedProviders:gw,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:bw,defaultInputRequirement:yw(null),defaultPayload:{pipe_id:dw,connector:null,run_if:null,config:{providers:_w,allow_catch_all_emails:!0,allow_risky_emails:!0,input_fields:{profile_url:{alias:``}},output_fields:{work_email:{alias:``,enabled:!0},email_validation_status:{alias:``,enabled:!0}}}}},ww=`people:workemail:waterfall@1`,Tw=g(`name`),Ew=g(`company_website_url`),Dw=g(`company_name`),Ow=g(`work_email`),kw=g(`email_validation_status`),Aw=[`leadmagic`,`prospeo`,`amplemarket`,`hunter`,`icypeas`,`findymail`],jw=[`icypeas`],Mw=[{provider:`leadmagic`},{provider:`prospeo`},{provider:`amplemarket`},{provider:`hunter`},{provider:`findymail`}],Nw=r.object({pipe_id:r.literal(ww),connector:C(),run_if:b(),config:r.object({providers:T({availableProviders:Aw,defaultProviders:Mw,deprecatedProviders:jw,sectionKey:`general`}),allow_catch_all_emails:E({path:`config.allow_catch_all_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,description:`Catch-alls appear valid but remain undeliverable-risk.`,label:`Allow catch-all emails`}),allow_risky_emails:E({path:`config.allow_risky_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,description:`DNS configuration and spam reputation may flag emails as high-risk.`,label:`Allow risky emails`}),input_fields:F(r.object({[Tw.name]:w({fieldName:Tw.name}),[Ew.name]:w({fieldName:Ew.name}),[Dw.name]:w({fieldName:Dw.name})})),output_fields:P(r.object({[Ow.name]:D({fieldName:Ow.name}),[kw.name]:D({fieldName:kw.name})}))}).optional()}),Pw=e=>z(R(G(Tw,e)),gd(G(Ew,e),G(Dw,e))),Fw={"people-workemail-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:.5},mode:`onSuccess`},"people-workemail-waterfall-v1-icypeas":{provider:`icypeas`,allowManagedConnection:!0,credits:{default:.5},mode:`onSuccess`},"people-workemail-waterfall-v1-prospeo":{provider:`prospeo`,allowManagedConnection:!0,credits:{default:1,level1:{credits:.5,weight:1}},mode:`onSuccess`},"people-workemail-waterfall-v1-findymail":{provider:`findymail`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`},"people-workemail-waterfall-v1-hunter":{provider:`hunter`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`},"people-workemail-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:2.5},mode:`onSuccess`}},Iw=class extends B{pipeId=ww;payload;payloadSchema=Nw;billableOperations=Fw;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return Pw(this.payload.config)}getRawOutputFields(){return{[Ow.name]:this.catalogOutput(Ow,{isPrimaryOutput:!0}),[kw.name]:this.catalogOutput(kw,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,prospeo:`prospeo_email_lookup`,icypeas:`icypeas_email_lookup`,findymail:`findymail_email_lookup`,hunter:`hunter_email_finder`,amplemarket:`amplemarket-person-reveal`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},Lw=Nw,Rw={pipeId:ww,basePipe:U(ww),label:`Work email from name`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`person:workemail:waterfall@1`},description:`Find work email addresses in a waterfall motion.`,tags:[V.EMAIL,V.WORK_EMAIL,V.WATERFALL],docPath:W(ww),managedProviders:Aw,deprecatedProviders:jw,allowedUserConnectionProviders:Aw,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:Fw,defaultInputRequirement:Pw(null),defaultPayload:{pipe_id:ww,connector:null,run_if:null,config:{providers:Mw,allow_catch_all_emails:!0,allow_risky_emails:!0,input_fields:{company_name:{alias:``},company_website_url:{alias:``},name:{alias:``}},output_fields:{work_email:{alias:``,enabled:!0},email_validation_status:{alias:``,enabled:!1}}}}},zw=g(`email`),Bw=g(`amplemarket_person_match`),Vw=`person:identity:amplemarket@1`,Hw=r.object({pipe_id:r.literal(Vw),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[zw.name]:w({fieldName:zw.name})})),output_fields:P(r.object({[Bw.name]:D({fieldName:Bw.name})}))}).optional()}),Uw=e=>R(G(zw,e)),Ww={"person-identity-amplemarket-v1-amplemarket":{allowManagedConnection:!1,credits:null,mode:null,provider:`amplemarket`}},Gw=class extends B{pipeId=Vw;payload;payloadSchema=Hw;billableOperations=Ww;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`amplemarket`]}estimateBillableOperations(){return[]}getInputRequirement(){return Uw(this.payload.config)}getRawOutputFields(){return{[Bw.name]:this.catalogOutput(Bw)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitRatio:1,rateLimitOperation:`amplemarket_generic`,allowManagedConnection:!1}]}},Kw=Hw,qw={pipeId:Vw,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Vw),label:`Person identity`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-07-28`,replacedBy:`person:identity:email:waterfall@2`},description:`Find information on a person based on their email`,tags:[V.PEOPLE_PROFILES],keywords:[`enrich`,`enrichment`,`reverse lookup`,`contact`,`profile`],docPath:W(Vw),billableOperations:Ww,allowedUserConnectionProviders:[`amplemarket`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:Uw(null),defaultPayload:{pipe_id:Vw,connector:null,run_if:null,config:{input_fields:{email:{alias:``}},output_fields:{amplemarket_person_match:{alias:``,enabled:!0}}}}},Jw=`person:identity:email:waterfall@1`,Yw=g(`email`),Xw=g(`company_domain`),Zw=g(`name`),Qw=g(`job_title`),$w=g(`profile_url`),eT=g(`company_profile_url`),tT=g(`company_name`),nT=[`findymail`,`hunter`,`crustdata`],rT=[{provider:`findymail`},{provider:`hunter`},{provider:`crustdata`}],iT=r.object({pipe_id:r.literal(Jw),connector:C(),run_if:b(),config:r.object({providers:T({availableProviders:nT,defaultProviders:rT,sectionKey:`general`}),input_fields:F(r.object({[Yw.name]:w({fieldName:Yw.name})})),output_fields:P(r.object({[Zw.name]:D({fieldName:Zw.name}),[$w.name]:D({fieldName:$w.name}),[Qw.name]:D({fieldName:Qw.name}),[Xw.name]:D({fieldName:Xw.name}),[tT.name]:D({fieldName:tT.name}),[eT.name]:D({fieldName:eT.name})}))}).optional()}),aT=e=>R(G(Yw,e)),oT={"person-identity-email-waterfall-v1-hunter":{provider:`hunter`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"person-identity-email-waterfall-v1-findymail":{provider:`findymail`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`},"person-identity-email-waterfall-v1-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`}},sT=class extends B{pipeId=Jw;payload;payloadSchema=iT;billableOperations=oT;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return aT(this.payload.config)}getRawOutputFields(){return{[Zw.name]:this.catalogOutput(Zw,{isPrimaryOutput:!0}),[$w.name]:this.catalogOutput($w,{isPrimaryOutput:!0}),[Qw.name]:this.catalogOutput(Qw,{isPrimaryOutput:!0}),[tT.name]:this.catalogOutput(tT,{isPrimaryOutput:!0}),[eT.name]:this.catalogOutput(eT,{isPrimaryOutput:!0}),[Xw.name]:this.catalogOutput(Xw,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={hunter:`prospeo_email_lookup`,findymail:`findymail_email_b2b_lookup`,crustdata:`crustdata_realtime_person_enrich`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},cT=iT,lT={pipeId:Jw,basePipe:U(Jw),label:`Person identity from email`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-07-17`,replacedBy:`person:identity:email:waterfall@2`},description:`Find identity of a person from their email address.`,tags:[V.EMAIL,V.PEOPLE_PROFILES],keywords:[`enrich`,`enrichment`,`reverse lookup`,`contact`,`profile`],docPath:W(Jw),managedProviders:nT,deprecatedProviders:[],allowedUserConnectionProviders:nT,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:oT,defaultInputRequirement:aT(null),defaultPayload:{pipe_id:Jw,connector:null,run_if:null,config:{providers:rT,input_fields:{email:{alias:``}},output_fields:{name:{alias:``,enabled:!0},profile_url:{alias:``,enabled:!0},job_title:{alias:``,enabled:!0},company_name:{alias:``,enabled:!0},company_profile_url:{alias:``,enabled:!0},company_domain:{alias:``,enabled:!0}}}}},uT=g(`profile_url`),dT=g(`amplemarket_person_match`),fT=`person:match:amplemarket@1`,pT=r.object({pipe_id:r.literal(fT),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[uT.name]:w({fieldName:uT.name})})),output_fields:P(r.object({[dT.name]:D({fieldName:dT.name})}))}).optional()}),mT=e=>R(G(uT,e)),hT={"person-match-amplemarket-v1-amplemarket":{allowManagedConnection:!1,credits:null,mode:null,provider:`amplemarket`}},gT=class extends B{pipeId=fT;payload;payloadSchema=pT;billableOperations=hT;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`amplemarket`]}estimateBillableOperations(){return[]}getInputRequirement(){return mT(this.payload.config)}getRawOutputFields(){return{[dT.name]:this.catalogOutput(dT)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitRatio:1,rateLimitOperation:`amplemarket_generic`,allowManagedConnection:!1}]}},_T=pT,vT={pipeId:fT,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(fT),label:`Person match`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-07-28`,replacedBy:`person:profile:waterfall@2`},description:`Find information on a person based on their LinkedIn profile URL.`,tags:[V.PEOPLE_PROFILES],keywords:[`enrich`,`enrichment`,`linkedin`,`profile`,`lookup`,`contact`],docPath:W(fT),billableOperations:hT,allowedUserConnectionProviders:[`amplemarket`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:mT(null),defaultPayload:{pipe_id:fT,connector:null,run_if:null,config:{input_fields:{profile_url:{alias:``}},output_fields:{amplemarket_person_match:{alias:``,enabled:!0}}}}},yT=`person:profile:waterfall@1`,bT=g(`profile`),xT=g(`profile_url`),ST=[`prospeo`,`icypeas`,`amplemarket`],CT=[{provider:`amplemarket`},{provider:`prospeo`},{provider:`icypeas`}],wT=r.object({pipe_id:r.literal(yT),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:ST,defaultProviders:CT}),input_fields:F(r.object({[xT.name]:w({fieldName:xT.name})})),output_fields:P(r.object({[bT.name]:D({fieldName:bT.name})}))}).optional()}),TT=e=>R(G(xT,e)),ET={"person-profile-waterfall-v1-icypeas":{provider:`icypeas`,credits:{default:1,level1:{credits:.5,weight:1}},mode:`onSuccess`,allowManagedConnection:!0},"person-profile-waterfall-v1-prospeo":{provider:`prospeo`,credits:{default:1,level1:{credits:.5,weight:1}},mode:`onSuccess`,allowManagedConnection:!0},"person-profile-waterfall-v1-amplemarket":{provider:`amplemarket`,credits:{default:1,level1:{credits:.5,weight:1}},mode:`onSuccess`,allowManagedConnection:!0}},DT=class extends B{pipeId=yT;payload;payloadSchema=wT;billableOperations=ET;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return TT(this.payload.config)}getRawOutputFields(){return{[bT.name]:this.catalogOutput(bT,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={icypeas:`icypeas_scrape_profile`,prospeo:`prospeo_social_profile_lookup`,amplemarket:`amplemarket-person-reveal`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},OT=wT,kT={pipeId:yT,basePipe:U(yT),label:`Full LinkedIn profile`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-07-17`,replacedBy:`person:profile:waterfall@2`},description:`Find a JSON representation of a LinkedIn profile.`,docPath:W(yT),tags:[V.LINKEDIN,V.WATERFALL],keywords:[`enrich`,`enrichment`,`json`,`scrape`,`bio`,`experience`],managedProviders:ST,deprecatedProviders:[],allowedUserConnectionProviders:ST,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:ET,defaultInputRequirement:TT(null),defaultPayload:{pipe_id:yT,run_if:null,connector:null,config:{providers:CT,input_fields:{profile_url:{alias:``}},output_fields:{profile:{alias:``,enabled:!0}}}}},AT=`email:draft:gmail@1`,jT=g(`gmail_draft_id`),MT=r.object({pipe_id:r.literal(AT),connector:S(),run_if:b(),config:r.object({to:x({sectionKey:`general`,groupPath:`config.general`,path:`config.to`,label:`To`,info:"Draft recipient address. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`{{ email }}`,inputType:`email`,minLength:1,maxLength:320,expectedTagType:`string`,expectedTagFormat:`email`}),reply_to:x({sectionKey:`general`,groupPath:`config.general`,path:`config.reply_to`,label:`Reply-To`,info:"Optional address recipients can reply to. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`support@example.com`,inputType:`email`,maxLength:320,expectedTagType:`string`,expectedTagFormat:`email`}).nullable(),subject:x({sectionKey:`general`,groupPath:`config.general`,path:`config.subject`,label:`Subject`,info:"Email subject line. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`Hi {{ first_name }}`,inputType:`text`,minLength:1,maxLength:998,expectedTagType:`string`,expectedTagFormat:`text`}),body:x({sectionKey:`general`,groupPath:`config.general`,path:`config.body`,label:`Body`,info:"Email body in markdown. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`Hi {{ first_name }},
|
|
76
|
+
|
|
77
|
+
…`,inputType:`text`,minLength:1,maxLength:1e6,expectedTagType:`string`,expectedTagFormat:`markdown`,multiline:!0}),output_fields:P(r.object({[jT.name]:D({fieldName:jT.name})}))})}),NT={"email-draft-gmail-v1-gmail":{allowManagedConnection:!1,provider:`gmail`,credits:null,mode:null}},PT=class extends B{pipeId=AT;payload;payloadSchema=MT;billableOperations=NT;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`gmail`]}estimateBillableOperations(e){return H(e,`email-draft-gmail-v1-gmail`)}getTemplatedFields(){return[this.payload.config.to,this.payload.config.reply_to,this.payload.config.subject,this.payload.config.body]}getInputRequirement(){return ep(this.getTemplatedFields())}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return tp(this.getTemplatedFields())}getRawOutputFields(){return{[jT.name]:this.catalogOutput(jT)}}getConnectionsRequirements(){return[{provider:`gmail`,rateLimitRatio:1,rateLimitOperation:`gmail_create_draft`,allowManagedConnection:!1}]}},FT=MT,IT={pipeId:AT,basePipe:U(AT),label:`Create email draft`,executionMode:`single`,categories:[`actions`],lifecycle:null,description:`Create a draft email in Gmail (does not send).`,guide:"Create a draft email in the connected Gmail account's Drafts folder — nothing is sent. To, Reply-To, Subject and Body are templated config fields — reference upstream fields with `{{ field_name }}` and stored secrets with `{{ SECRETS.KEY }}`. Requires a Gmail vault connection (call list_connections to find one). Gmail connections created before the drafts permission was added fail with a permission error until reconnected.",tags:[V.EMAIL],keywords:[`gmail`,`compose`,`prepare`,`outreach`,`unsent`,`review`],docPath:W(AT),billableOperations:NT,inputFieldMode:`config`,outputFieldMode:`static`,allowedUserConnectionProviders:[`gmail`],defaultInputRequirement:null,managedProviders:[],deprecatedProviders:[],defaultPayload:{pipe_id:AT,connector:{strategy:`first`,connections:[]},run_if:null,config:{to:``,reply_to:``,subject:``,body:``,output_fields:{gmail_draft_id:{alias:``,enabled:!0}}}}},LT=`email:iswork@1`,RT=g(`is_work_email`),zT=g(`email`),BT=r.object({pipe_id:r.literal(LT),run_if:b(),connector:ql(),config:r.object({input_fields:F(r.object({[zT.name]:w({fieldName:zT.name})})),output_fields:P(r.object({[RT.name]:D({fieldName:RT.name})}))}).optional()}),VT=e=>R(G(zT,e)),HT={"email-iswork-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},UT=class extends B{pipeId=LT;payload;payloadSchema=BT;billableOperations=HT;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`email-iswork-v1-pipe0`)}getInputRequirement(){return VT(this.payload.config)}getRawOutputFields(){return{[RT.name]:this.catalogOutput(RT)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},WT=BT,GT={pipeId:LT,label:`Work email checker`,executionMode:`single`,categories:[`people_data`],lifecycle:null,description:`Check if a given email address is personal or professional.`,tags:[V.EMAIL,V.WORK_EMAIL],keywords:[`personal`,`professional`,`business`,`corporate`,`classify`,`detect`],docPath:W(LT),billableOperations:HT,basePipe:U(LT),allowedUserConnectionProviders:[],inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:VT(null),defaultPayload:{pipe_id:LT,run_if:null,connector:null,config:{input_fields:{email:{alias:``}},output_fields:{is_work_email:{alias:``,enabled:!0}}}}},KT=`email:send:gmail@1`,qT=g(`gmail_email_success`),JT=r.object({pipe_id:r.literal(KT),connector:S(),run_if:b(),config:r.object({to:x({sectionKey:`general`,groupPath:`config.general`,path:`config.to`,label:`To`,info:"Recipient address. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`{{ email }}`,inputType:`email`,minLength:1,maxLength:320,expectedTagType:`string`,expectedTagFormat:`email`}),reply_to:x({sectionKey:`general`,groupPath:`config.general`,path:`config.reply_to`,label:`Reply-To`,info:"Optional address recipients can reply to. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`support@example.com`,inputType:`email`,maxLength:320,expectedTagType:`string`,expectedTagFormat:`email`}).nullable(),subject:x({sectionKey:`general`,groupPath:`config.general`,path:`config.subject`,label:`Subject`,info:"Email subject line. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`Hi {{ first_name }}`,inputType:`text`,minLength:1,maxLength:998,expectedTagType:`string`,expectedTagFormat:`text`}),body:x({sectionKey:`general`,groupPath:`config.general`,path:`config.body`,label:`Body`,info:"Email body in markdown. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`Hi {{ first_name }},
|
|
78
|
+
|
|
79
|
+
…`,inputType:`text`,minLength:1,maxLength:1e6,expectedTagType:`string`,expectedTagFormat:`markdown`,multiline:!0}),output_fields:P(r.object({[qT.name]:D({fieldName:qT.name})}))})}),YT={"email-send-gmail-v1-gmail":{allowManagedConnection:!1,provider:`gmail`,credits:null,mode:null}},XT=class extends B{pipeId=KT;payload;payloadSchema=JT;billableOperations=YT;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`gmail`]}estimateBillableOperations(e){return H(e,`email-send-gmail-v1-gmail`)}getTemplatedFields(){return[this.payload.config.to,this.payload.config.reply_to,this.payload.config.subject,this.payload.config.body]}getInputRequirement(){return ep(this.getTemplatedFields())}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return tp(this.getTemplatedFields())}getRawOutputFields(){return{[qT.name]:this.catalogOutput(qT)}}getConnectionsRequirements(){return[{provider:`gmail`,rateLimitRatio:1,rateLimitOperation:`gmail_send_email`,allowManagedConnection:!1}]}},ZT=JT,QT={pipeId:KT,basePipe:U(KT),label:`Send email`,executionMode:`single`,categories:[`actions`],lifecycle:null,description:`Send an email with Gmail.`,guide:"Send an email via Gmail. To, Reply-To, Subject and Body are templated config fields — reference upstream fields with `{{ field_name }}` and stored secrets with `{{ SECRETS.KEY }}`. Requires a Gmail vault connection (call list_connections to find one).",tags:[V.EMAIL],keywords:[`outreach`,`message`,`mail`,`compose`,`deliver`,`outbound`],docPath:W(KT),billableOperations:YT,inputFieldMode:`config`,outputFieldMode:`static`,allowedUserConnectionProviders:[`gmail`],defaultInputRequirement:null,managedProviders:[],deprecatedProviders:[],defaultPayload:{pipe_id:KT,connector:{strategy:`first`,connections:[]},run_if:null,config:{to:``,reply_to:``,subject:``,body:``,output_fields:{gmail_email_success:{alias:``,enabled:!0}}}}},$T=`email:send:resend@1`,eE=g(`resend_email_success`),tE=r.object({pipe_id:r.literal($T),connector:S(),run_if:b(),config:r.object({from:x({sectionKey:`general`,groupPath:`config.general`,path:`config.from`,label:`From`,info:"Sender address. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`noreply@example.com`,inputType:`email`,minLength:3,maxLength:320,expectedTagType:`string`,expectedTagFormat:`email`}),to:x({sectionKey:`general`,groupPath:`config.general`,path:`config.to`,label:`To`,info:"Recipient address. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`{{ email }}`,inputType:`email`,minLength:1,maxLength:320,expectedTagType:`string`,expectedTagFormat:`email`}),reply_to:x({sectionKey:`general`,groupPath:`config.general`,path:`config.reply_to`,label:`Reply-To`,info:"Optional address recipients can reply to. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`support@example.com`,inputType:`email`,maxLength:320,expectedTagType:`string`,expectedTagFormat:`email`}).nullable(),subject:x({sectionKey:`general`,groupPath:`config.general`,path:`config.subject`,label:`Subject`,info:"Email subject line. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`Hi {{ first_name }}`,inputType:`text`,minLength:1,maxLength:998,expectedTagType:`string`,expectedTagFormat:`text`}),body:x({sectionKey:`general`,groupPath:`config.general`,path:`config.body`,label:`Body`,info:"Email body in markdown. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`Hi {{ first_name }},
|
|
80
|
+
|
|
81
|
+
…`,inputType:`text`,minLength:1,maxLength:1e6,expectedTagType:`string`,expectedTagFormat:`markdown`,multiline:!0}),output_fields:P(r.object({[eE.name]:D({fieldName:eE.name})}))})}),nE={"email-send-resend-v1-resend":{allowManagedConnection:!1,provider:`resend`,credits:null,mode:null}},rE=class extends B{pipeId=$T;payload;payloadSchema=tE;billableOperations=nE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`resend`]}estimateBillableOperations(e){return H(e,`email-send-resend-v1-resend`)}getTemplatedFields(){return[this.payload.config.from,this.payload.config.to,this.payload.config.reply_to,this.payload.config.subject,this.payload.config.body]}getInputRequirement(){return ep(this.getTemplatedFields())}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return tp(this.getTemplatedFields())}getRawOutputFields(){return{[eE.name]:this.catalogOutput(eE)}}getConnectionsRequirements(){return[{provider:`resend`,rateLimitRatio:1,rateLimitOperation:`resend_generic`,allowManagedConnection:!1}]}},iE=tE,aE={pipeId:$T,basePipe:U($T),label:`Send email with Resend`,executionMode:`single`,categories:[`actions`],lifecycle:null,description:`Send an email with Resend.`,guide:"Send an email via Resend. From, To, Reply-To, Subject and Body are templated config fields — reference upstream fields with `{{ field_name }}` and stored secrets with `{{ SECRETS.KEY }}`. Requires a Resend vault connection (call list_connections to find one).",tags:[V.EMAIL],keywords:[`outreach`,`message`,`mail`,`deliver`,`outbound`,`transactional`],docPath:W($T),billableOperations:nE,inputFieldMode:`config`,outputFieldMode:`static`,allowedUserConnectionProviders:[`resend`],defaultInputRequirement:null,managedProviders:[],deprecatedProviders:[],defaultPayload:{pipe_id:$T,connector:{strategy:`first`,connections:[]},run_if:null,config:{from:``,to:``,reply_to:``,subject:``,body:``,output_fields:{resend_email_success:{alias:``,enabled:!0}}}}},oE=`email:validate:zerobounce@1`,sE=g(`email`),cE=g(`zerobounce_validation_status`),lE=g(`zerobounce_validation_match`),uE=r.object({pipe_id:r.literal(oE),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[sE.name]:w({fieldName:sE.name})})),output_fields:P(r.object({[lE.name]:D({fieldName:lE.name}),[cE.name]:D({fieldName:cE.name})}))}).optional()}),dE=e=>R(G(sE,e)),fE={"email-validate-zerobounce-v1-zerobounce":{provider:`zerobounce`,allowManagedConnection:!0,credits:{default:.4,level1:{credits:.3,weight:1},level2:{credits:.15,weight:6}},mode:`always`}},pE=class extends B{pipeId=oE;payload;payloadSchema=uE;billableOperations=fE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`zerobounce`]}estimateBillableOperations(e){return H(e,`email-validate-zerobounce-v1-zerobounce`)}getInputRequirement(){return dE(this.payload.config)}getRawOutputFields(){return{[cE.name]:this.catalogOutput(cE),[lE.name]:this.catalogOutput(lE)}}getConnectionsRequirements(){return[{provider:`zerobounce`,rateLimitRatio:1,rateLimitOperation:`zerobounce_generic`,allowManagedConnection:!0}]}},mE=uE,hE={pipeId:oE,basePipe:U(oE),label:`Validate email`,executionMode:`single`,categories:[`people_data`],lifecycle:null,description:`Verify email address against various factors, including syntax, domain, and server existence, to ensure it is deliverable and active.`,tags:[V.EMAIL],keywords:[`verify`,`verification`,`bounce`,`deliverability`,`check`,`clean`],docPath:W(oE),billableOperations:fE,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`zerobounce`],managedProviders:[`zerobounce`],deprecatedProviders:[],defaultInputRequirement:dE(null),defaultPayload:{pipe_id:oE,connector:null,run_if:null,config:{input_fields:{email:{alias:``}},output_fields:{zerobounce_validation_status:{alias:``,enabled:!0},zerobounce_validation_match:{alias:``,enabled:!0}}}}},gE=`email:write@1`,_E=`email-write-v1`,vE=Xc(_E),yE=g(`email_subject`),bE=g(`email_body`),xE=r.object({pipe_id:r.literal(gE),connector:C(),run_if:b(),config:r.object({template:Gl({sectionKey:`general`,label:`Prompt`,path:`config.template`,placeholder:J(`prompt`),groupPath:`config.prompt`,required:!0}),model:wu({sectionKey:`general`,label:`Model`,path:`config.model`,groupPath:`config.prompt`,billableOperations:vE,defaultValue:Vc}),signature:Su({sectionKey:`general`,label:`Signature (Markdown)`,path:`config.signature`,groupPath:`config.email`,minLength:5,rows:10}),persona:Cu({sectionKey:`general`,label:`Persona`,info:`Define the unique tone of your email`,path:`config.persona`,groupPath:`config.prompt`,required:!1,options:[{label:`Sales`,value:`sales`},{label:`Human Resources`,value:`human_resources`},{label:`Customer Success`,value:`customer_success`}]}),output_fields:P(r.object({[yE.name]:D({fieldName:yE.name}),[bE.name]:D({fieldName:bE.name})}))})}),SE=class extends B{pipeId=gE;payload;payloadSchema=xE;billableOperations=vE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return Uc(this.payload.config.model)}estimateBillableOperations(e){return Qc(e,{model:this.payload.config.model,prefix:_E,inputTokens:600,outputTokens:800})}getInputRequirement(){return ep([this.payload.config.template])}getSecretRequirements(){return q([this.payload.config.template])}getConstantRequirements(){return tp([this.payload.config.template])}getRawOutputFields(){return{[yE.name]:this.catalogOutput(yE),[bE.name]:this.catalogOutput(bE)}}getConnectionsRequirements(){return Wc(this.payload.config.model)}},CE=xE,wE={pipeId:gE,inputFieldMode:`config`,outputFieldMode:`static`,basePipe:U(gE),label:`Email writer`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`An AI agent specialized in composing emails.`,guide:`AI email composer. Outputs: email_subject, email_body. Pair with email:send:gmail@1 or email:send:resend@1 to send the composed email. Requires 'email' field in input records for the sender pipe.`,tags:[V.AI],keywords:[`ai`,`compose`,`draft`,`generate`,`copywriting`,`personalize`,`outreach`],docPath:W(gE),defaultInputRequirement:null,billableOperations:vE,allowedUserConnectionProviders:Gc(),managedProviders:Gc(),deprecatedProviders:[],defaultPayload:{pipe_id:gE,connector:null,run_if:null,config:{template:``,output_fields:{email_body:{alias:``,enabled:!0},email_subject:{alias:``,enabled:!0}},persona:`sales`,model:Vc,signature:``}}},TE=`field:domainify@1`,EE=g(`url_input`),DE=g(`domain`),OE=r.object({pipe_id:r.literal(TE),run_if:b(),connector:ql(),config:r.object({input_fields:F(r.object({[EE.name]:w({fieldName:EE.name})})),output_fields:P(r.object({[DE.name]:D({fieldName:DE.name})}))}).optional()}),kE=e=>R(G(EE,e)),AE={"field-domainify-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},jE=class extends B{pipeId=TE;payload;payloadSchema=OE;billableOperations=AE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getInputRequirement(){return kE(this.payload.config)}getRawOutputFields(){return{[DE.name]:this.catalogOutput(DE)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},ME=OE,NE={pipeId:TE,basePipe:U(TE),label:`Extract domain`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Transform URL input into a domain. Also tolerates bare domains and email addresses (the part after @ is used). Examples: 'https://go.com' → 'go.com'; 'jane@acme.io' → 'acme.io'.`,tags:[V.LOGIC,V.FIELDS],keywords:[`url`,`website`,`hostname`,`clean`,`strip`,`parse`],docPath:W(TE),billableOperations:AE,defaultInputRequirement:kE(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:TE,run_if:null,connector:null,config:{input_fields:{url_input:{alias:``}},output_fields:{domain:{alias:``,enabled:!0}}}}},PE=`field:slugify@1`,FE=g(`string_input`),IE=g(`slugified`),LE=r.object({pipe_id:r.literal(PE),run_if:b(),connector:ql(),config:r.object({input_fields:F(r.object({[FE.name]:w({fieldName:FE.name})})),output_fields:P(r.object({[IE.name]:D({fieldName:IE.name})}))}).optional()}),RE=e=>R(G(FE,e)),zE={"field-slugify-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},BE=class extends B{pipeId=PE;payload;payloadSchema=LE;billableOperations=zE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getInputRequirement(){return RE(this.payload.config)}getRawOutputFields(){return{[IE.name]:this.catalogOutput(IE)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},VE=LE,HE={pipeId:PE,basePipe:U(PE),label:`Slugify field`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Strip a field value of characters not commonly found in slugs.`,tags:[V.LOGIC,V.FIELDS],keywords:[`clean`,`sanitize`,`normalize`,`url safe`,`format`,`strip`],docPath:W(PE),billableOperations:zE,defaultInputRequirement:RE(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:PE,run_if:null,connector:null,config:{input_fields:{string_input:{alias:``}},output_fields:{slugified:{alias:``,enabled:!0}}}}},UE=`field:timestamp@1`,WE=g(`timestamp`),GE=r.object({pipe_id:r.literal(UE),run_if:b(),connector:ql(),config:r.object({offset_days:Eu({label:`Offset (days)`,info:`Shift the stamped moment by this many days: positive = future (a follow-up or expiry date), negative = past. Empty = now.`,path:`config.offset_days`,groupPath:`config.general`,sectionKey:`general`,min:-36500,max:36500}).nullish(),granularity:Cu({label:`Granularity`,description:`"datetime" (default) keeps the full instant; "date" truncates to midnight UTC for stable date-only comparisons and cohort labels.`,path:`config.granularity`,groupPath:`config.general`,sectionKey:`general`,required:!1,options:[{label:`Datetime`,value:`datetime`},{label:`Date`,value:`date`}]}).nullish(),output_fields:P(r.object({[WE.name]:D({fieldName:WE.name})}))}).optional()}),KE={"field-timestamp-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},qE=class extends B{pipeId=UE;payload;payloadSchema=GE;billableOperations=KE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getInputRequirement(){return z()}getRawOutputFields(){return{[WE.name]:this.catalogOutput(WE)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},JE=GE,YE={pipeId:UE,basePipe:U(UE),label:`Timestamp`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Write the moment the pipe ran (ISO 8601, UTC) into a column — optionally offset into the future/past or truncated to a date. The building block for freshness cadences, follow-up dates, and expiry columns.`,guide:`Stamps the run moment into one datetime column (alias it to name the moment: last_attempted_at, next_review_at, valid_until). It has NO typed inputs, so its cell NEVER re-runs on data drift — it recomputes only when force-requeued (rows:enrich@1 run_statuses covering its current status) or when this config changes. Pair with a run_if referencing the field whose attempt it stamps: the run_if reference is what ORDERS this pipe after that field's producer, so list EVERY status the field can end in (completed, failed, no_result, skipped ⇒ effectively always-true) — a narrower set wipes the stamp to skipped on non-matching forced runs. config.offset_days shifts the moment (positive = future: follow-up/expiry dates that feed older_than_days / within_last_days conditions; negative = past); config.granularity 'date' truncates to midnight UTC for stable date-only comparisons. Derives from the run moment + static config ONLY — for date math over a row's own fields, use a dedicated pipe, not this one. Deterministic-local: runs for REAL in sandbox, FREE pipe0 operation.`,tags:[V.LOGIC,V.FIELDS],keywords:[`timestamp`,`now`,`date`,`time`,`stamp`,`enriched at`,`last run`,`freshness`,`expiry`,`follow up`],docPath:W(UE),billableOperations:KE,defaultInputRequirement:null,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:UE,run_if:null,connector:null,config:{offset_days:null,granularity:``,output_fields:{timestamp:{alias:``,enabled:!0}}}}};function XE({name:e,resolvedName:t,source:n}){let r=e===t?`'${e}'`:`'${e}' (resolved to '${t}')`;return n?`${r} (from ${n})`:r}const ZE=e=>(e.kind===`all`||e.kind===`any`)&&e.of.length===0;function QE(e){switch(e.kind){case`field`:return XE(e.field);case`optional`:return`[optional ${XE(e.field)}]`;case`all`:case`any`:{let t=e.of.filter(e=>!ZE(e));return t.length===0?`(none)`:t.length===1?QE(t[0]):`(${t.map(QE).join(e.kind===`all`?` AND `:` OR `)})`}}}function $E(e,t){return`Pipe input requirement is not satisfied${t?.pipeId!==void 0||t?.index!==void 0?` for pipe${t.index===void 0?``:` at index ${t.index}`}${t.pipeId===void 0?``:` (${t.pipeId})`}`:``}: ${QE(e)}. Map missing fields to existing ones, add a pipe that outputs them, or include them in your inputs.`}var eD=class extends Error{constructor(e){super(`Request validation failed (${e.length} errors): ${e.join(`, `)}`),this.errors=e,this.name=`RequestValidationError`,Object.setPrototypeOf(this,new.target.prototype)}};const tD={ConditionTargetFieldNotFound:({fieldName:e,pipeId:t,pipeIdx:n})=>({code:`ConditionTargetFieldNotFound`,message:`${t} (idx: ${n}) has an invalid condition. Field '${e}' not found.`}),ConditionValueOnJsonField:({fieldName:e,pipeId:t,pipeIdx:n})=>({code:`ConditionValueOnJsonField`,message:`${t} (idx: ${n}) has an invalid condition. '${e}' is a json field — its VALUE cannot be compared. Use a STATUS condition (property: "status"), or extract the nested property into its own flat field first.`}),FaultyEnrichmentOrder:()=>({code:`FaultyEnrichmentOrder`,message:`Enrichment not found while ordering. Was the request invalid?`}),MustDefineAnnotations:()=>({code:`MustDefineAnnotations`,message:`Must define either input or field annoations to validate pipes payload.`}),CircularDependency:({currentPipe:e,circularPipe:t})=>({code:`CircularDependency`,message:`'${e.pipe_id}' (${e.idx}) and '${t.pipeId}' (${t.idx}) create a dependency loop. They both need the other's output to complete. Neither can complete. You can map the pipe outputs or input to fields with different names if you want the pipes to be independent or each other.`}),ValidationFailed:({error:e})=>({code:`ValidationFailed`,message:`Failed to validate task request: ${e instanceof Error?e.message:String(e)}`}),MissingCustomConnections:({pipeId:e,index:t,missingProviders:n})=>({code:`MissingCustomConnections`,message:`Pipe ${e} (index ${t}) requires you to specify custom connections for the providers ${n.join(`, `)}. Create the custom connections in the dashbard and reference them in your request.`}),ResponseGenerationFailed:({error:e})=>({code:`ResponseGenerationFailed`,message:`Failed to generate response: ${e instanceof Error?e.message:String(e)}`}),InputValuesMustHaveSameType:({pipeId:e,fieldNames:t})=>({code:`InputValuesMustHaveSameType`,message:`Pipe ${e} requires all input values to have the same type. But values ${t.join(`, `)} have different types.`}),NotValidated:()=>({code:`NotValidated`,message:`PipelineRequest must be validated before accessing results`}),MissingIdInInput:()=>({code:`MissingIdInInput`,message:`Inputs missing 'id' property.`}),InputDataTypeMismatch:({key:e,derivedInputFieldType:t,fieldType:n})=>({code:`InputDataTypeMismatch`,message:`Input data has values with matching keys '${e}' but different types. Expected type: '${t}'. Actual: '${n}'.`}),UnresolvableDependency:({index:e,dependencyIndex:t})=>({code:`UnresolvableDependency`,message:`Unresolvable dependency at index ${e} to ${t}`}),RequirementUnmet:({requirement:e,pipeId:t,index:n})=>({code:`RequirementUnmet`,message:$E(e,{pipeId:t,index:n})}),HardInputDependencyViolation:({index:e,indexPipeId:t,dependencyIndex:n,dependencyIndexPipeId:r})=>({code:`HardInputDependencyViolation`,message:`Dependency violation: pipe at idx: ${e} (${t}) must come after pipe at idx: ${n} (${r})`}),HardConditionDependencyViolation:({index:e,indexPipeId:t,dependencyIndex:n,dependencyIndexPipeId:r})=>({code:`HardConditionDependencyViolation`,message:`Dependency violation: pipe at idx: ${e} (${t}) has a condition that points to pipe at idx: ${n} (${r}). But pipe index: ${e} (${t}) is always must be processed after pipe at index ${n} (${r}). This is due to input requirements or other conditions.`}),DuplicateInitialField:({name:e})=>({code:`DuplicateInitialField`,message:`Duplicate initial field '${e}' detected. Each field must be defined only once.`}),MissingInputId:({index:e})=>({code:`MissingInputId`,message:`Input record at index ${e} is missing a required ID field.`}),InvalidId:()=>({code:`InvalidId`,message:`Cell IDs must be numbers or strings`}),IDConflict:({index:e,id:t})=>({code:`IDConflict`,message:`Input data at index ${e} has Id conflict. Id '${t}' is not unique.`}),UnknownResolver:({pipeId:e,index:t})=>({code:`UnknownResolver`,message:`Unknown pipe '${e}' specified at position ${t}.`}),DuplicatePipeOutput:({pipeId:e,outputField:t})=>({code:`DuplicateEnrichmentOutput`,message:`Field conflict for '${e}'. Cannot add output field ${XE(t)} to pipeline because it already exists. Try renaming it.`}),ReservedOutputFieldName:({})=>({code:`ReservedOutputFieldName`,message:`'id' is reserved field name. Please rename your output field.`}),InputDataDoesNotMatchOutputField:({index:e,resolvedName:t,type:n,inputValueType:r})=>({code:`InputDataDoesNotMatchOutputField`,message:`Input at position ${e} provided data for field '${t}' that did not match expected type. Expected: '${n}', Actual: '${r}'.`}),AmbiguousDependency:({fieldName:e})=>({code:`AmbiguousDependency`,message:`Found more than one pipe that produces field: ${e}. Rename or disable the field to add it.`}),EmptyObjectProperty:()=>({code:`EmptyObjectProperty`,message:`Input data contains empty object property "". This is not allowed.`}),JSONSchemaMissing:({schemaRef:e,outputName:t})=>({code:`JSONSchemaMissing`,message:`Missing jsonSchema '${e}' for output with name '${t}'.`}),InvalidJSONSchema:({schemaRef:e})=>({code:`InvalidJSONSchema`,message:`JSON Schema (ref: ${e}) is invalid.`}),MissingOutputFieldDescription:({outputName:e})=>({code:`MissingOutputFieldDescription`,message:`The output field ${e} is missing a "description" property. Define it {{ ${e} description="Foo bar" }}`}),InvalidFormatTag:({outputName:e,format:t})=>({code:`InvalidFormatTag`,message:`The output field ${e} has an invalid format tag ${t}.`}),RecursiveExpandedValue:()=>({code:`RecursiveExpandedValue`,message:`Your input values contain a recursive expanded valuetype `})};var nD=class extends Error{},rD=class extends nD{codes;appErrors;constructor(e){super(e.map(e=>e.message).join(`, `)||`Unknown`),this.errors=e,this.codes=e.map(e=>e.code),this.appErrors=e}};const iD=`fields:merge@1`,aD=g(`merge_result`),oD=r.object({pipe_id:r.literal(iD),connector:ql(),run_if:b(),config:r.object({merge_fields:ru({sectionKey:`general`,groupPath:`config.general`,path:`config.merge_fields`,label:`Fields`,info:`Provide references to input fields`,minItems:1}),output_fields:P(r.object({[aD.name]:D({fieldName:aD.name})}))})}),sD={"fields-merge-v1-pipe0":{credits:{default:0},allowManagedConnection:!0,provider:`pipe0`,mode:`always`}},cD=class extends B{pipeId=iD;payload;payloadSchema=oD;billableOperations=sD;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`fields-merge-v1-pipe0`)}getInputRequirement(){let e=this.payload.config.merge_fields.map(e=>e.field_name),t;return gd(...this.payload.config.merge_fields.map(n=>R({format:null,type:r=>{let i=Id(r,e)[n.field_name],a=i?.type?i.type:`unknown`;if(a!==`unknown`){if(t&&t!==a)throw new rD([tD.InputValuesMustHaveSameType({pipeId:this.pipeId,fieldNames:e})]);t=a}return i?.type?i.type:`unknown`},label:``,description:``,name:n.field_name,resolvedName:n.field_name})))}getRawOutputFields(){return{[aD.name]:this.catalogOutput(aD,{resolveType:e=>{let t=Id(e,this.payload.config.merge_fields.map(e=>e.field_name));return Object.values(t).find(e=>!!e.type)?.type||`string`}})}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},lD=oD,uD={pipeId:iD,inputFieldMode:`config`,outputFieldMode:`static`,basePipe:U(iD),label:`Merge fields`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Join one or more fields into one field. The final result will be the first defined field. A single-source merge pins a stable output name that additional sources can join later without consumers changing.`,tags:[V.FIELDS,V.LOGIC],keywords:[`combine`,`join`,`coalesce`,`fallback`,`concat`,`first defined`,`alias`],docPath:W(iD),defaultInputRequirement:null,billableOperations:sD,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:iD,connector:null,run_if:null,config:{merge_fields:[],output_fields:{merge_result:{alias:``,enabled:!0}}}}},dD=`formula:run@1`,fD=g(`formula_result`),pD=[`string`,`number`,`boolean`,`date`,`json`],mD={string:{type:`string`,format:`text`},number:{type:`number`,format:`decimal`},boolean:{type:`boolean`,format:null},date:{type:`string`,format:`date`},json:{type:`json`,format:`json_object`}},hD=r.object({pipe_id:r.literal(dD),run_if:b(),connector:ql(),config:r.object({code:Su({label:`Formula`,info:"Synchronous JavaScript body that must `return` a value. Mapped columns are available as `inputs.<column_name>`. Standard built-ins only (Math, String, Array, Date, RegExp, Number, Object, JSON) — no network, imports, or async.",path:`config.code`,groupPath:`config.general`,sectionKey:`general`,rows:8,minLength:1,maxLength:1e4,placeholder:`const days = inputs.primary_seniority === "c_suite" ? 90 : 270;
|
|
82
|
+
return new Date(Date.now() - days * 86400000).toISOString().slice(0, 10);`}),formula_inputs:ru({label:`Input columns`,info:`Columns injected into the formula as inputs.<column_name>. The formula re-runs when any of them changes.`,path:`config.formula_inputs`,groupPath:`config.general`,sectionKey:`general`}),result_type:Cu({label:`Result type`,info:`Type of the result column. The returned value must match it (a date is a YYYY-MM-DD string).`,path:`config.result_type`,groupPath:`config.general`,sectionKey:`general`,required:!1,defaultValue:`string`,options:[{value:`string`,label:`String`},{value:`number`,label:`Number`},{value:`boolean`,label:`Boolean`},{value:`date`,label:`Date`},{value:`json`,label:`JSON`}]}),output_fields:P(r.object({[fD.name]:D({fieldName:fD.name})}))})}),gD={"formula-run-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},_D=class extends B{pipeId=dD;payload;payloadSchema=hD;billableOperations=gD;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getInputRequirement(){return z(...this.payload.config.formula_inputs.map(e=>R({name:e.field_name,resolvedName:e.field_name,label:``,description:``,source:`config.formula_inputs — columns injected as inputs.<column_name>`,type:`unknown`,format:null})))}getRawOutputFields(){let e=mD[this.payload.config.result_type||`string`];return{[fD.name]:this.catalogOutput(fD,{isPrimaryOutput:!0,resolveType:()=>e.type,resolveFormat:()=>e.format})}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_generic`,allowManagedConnection:!0}]}},vD=hD,yD={pipeId:dD,basePipe:U(dD),label:`Formula`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Compute a value per row with a JavaScript formula over mapped columns — cleanup, math, conditionals, date arithmetic — without an external provider.`,guide:"Runs config.code as a synchronous JavaScript body in an isolated remote sandbox: standard built-ins (Math, String, Array, Date, RegExp, Number, Object, JSON) and nothing else — NO network, imports, or async. Mapped columns arrive as `inputs.<column_name>` (null when the cell is empty), typed as JavaScript values — but values arrive AS STORED, so coerce when the type matters (a manually-entered number can arrive as a string: `Number(inputs.x)`). The clock (Date.now(), new Date()) is the real run-time clock — plain JavaScript, no injected globals. The body must `return` a JSON-serializable value matching config.result_type; pick 'date' to emit YYYY-MM-DD strings that date conditions (older_than_days / within_last_days) and date-input pipes can consume — e.g. derive a per-row signal_window_start from primary_seniority for signals:personprofilematch@1. Each mapped column is a typed input: the cell re-runs when an input value changes, and editing the code re-runs every row (config drift). Errors (throw, timeout, non-serializable result, type mismatch) fail the cell with the message. Executes remotely in an isolated worker with strict CPU/memory caps; FREE pipe0 operation.",docPath:W(dD),tags:[V.LOGIC,V.FIELDS],keywords:[`javascript`,`js`,`code`,`compute`,`calculate`,`derive`,`expression`,`transform`],billableOperations:gD,defaultInputRequirement:null,inputFieldMode:`static`,outputFieldMode:`config`,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:dD,run_if:null,connector:null,config:{code:``,formula_inputs:[],result_type:`string`,output_fields:{formula_result:{alias:``,enabled:!0}}}}},bD=`http:request@1`,xD=g(`http_response_status`),SD=g(`http_response_body`),CD=g(`http_response_headers`),wD=r.object({pipe_id:r.literal(bD),connector:ql(),run_if:b(),config:r.object({method:Cu({sectionKey:`general`,groupPath:`config.general`,path:`config.method`,label:`Method`,defaultValue:`GET`,options:[...[{value:`GET`,label:`GET`},{value:`POST`,label:`POST`},{value:`PUT`,label:`PUT`},{value:`PATCH`,label:`PATCH`},{value:`DELETE`,label:`DELETE`}]],required:!0}),url:x({sectionKey:`general`,groupPath:`config.general`,path:`config.url`,label:`Endpoint`,info:"Target URL. Only http/https. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`https://api.example.com/v1/things`,inputType:`text`,minLength:1,maxLength:2048,expectedTagType:`string`,expectedTagFormat:`text`}),query_params:hu({sectionKey:`general`,groupPath:`config.general`,path:`config.query_params`,label:`Query parameters`,info:"Appended to the URL. In the value column, type `/` to insert a field or secret reference.",keyLabel:`Key`,valueLabel:`Value`,keyPlaceholder:`page`,valuePlaceholder:`1`,maxKeys:50}),body:x({sectionKey:`general`,groupPath:`config.general`,path:`config.body`,label:`Body`,info:"Sent verbatim as the request body. Type `@` to insert a field reference or `$` to insert a secret reference. Set Content-Type via Headers.",placeholder:`{
|
|
83
83
|
"key": "value"
|
|
84
|
-
}`,inputType:`text`,maxLength:1e6,expectedTagType:`string`,expectedTagFormat:`text`,multiline:!0}).nullable(),headers:gu({sectionKey:`general`,groupPath:`config.general`,path:`config.headers`,label:`Headers`,info:"In the value column, type `/` to insert a field or secret reference (e.g. `Bearer {{ secret … }}`).",keyLabel:`Header`,valueLabel:`Value`,keyPlaceholder:`Authorization`,valuePlaceholder:`Bearer {{ secret … }}`,maxKeys:50}),expected_response_schema:ku({sectionKey:`general`,groupPath:`config.advanced`,path:`config.expected_response_schema`,label:`Expected response shape`,description:`Optional JSON Schema. Successful responses that don't satisfy it are marked failed. Extra properties are always tolerated (whitelist).`,allowEmpty:!0}).optional(),output_fields:P(r.object({[SD.name]:D({fieldName:SD.name}),[CD.name]:D({fieldName:CD.name}),[wD.name]:D({fieldName:wD.name})}))})}),ED={"http-request-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:.001},mode:`always`}},DD=class extends B{pipeId=xD;payload;payloadSchema=TD;billableOperations=ED;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`http-request-v1-pipe0`)}getTemplatedFields(){return[this.payload.config.url,this.payload.config.body,...Object.values(this.payload.config.query_params??{}),...Object.values(this.payload.config.headers??{})]}getInputRequirement(){return tp(this.getTemplatedFields(),{expectedType:`string`,expectedFormat:`text`})}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return np(this.getTemplatedFields())}getRawOutputFields(){return{[SD.name]:this.catalogOutput(SD),[CD.name]:this.catalogOutput(CD),[wD.name]:this.catalogOutput(wD)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},OD=TD,kD={pipeId:xD,basePipe:U(xD),label:`HTTP request`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Make a generic GET/POST/PUT/PATCH/DELETE HTTP request and capture the JSON response. Optionally validate the response against a JSON schema.`,tags:[V.LOGIC,V.JSON,V.NEW],keywords:[`api`,`rest`,`webhook`,`fetch`,`get`,`post`,`endpoint`,`curl`],docPath:W(xD),billableOperations:ED,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:xD,run_if:null,connector:null,config:{method:`GET`,url:``,query_params:{},body:``,headers:{},expected_response_schema:{},output_fields:{http_response_status:{alias:``,enabled:!0},http_response_body:{alias:``,enabled:!0},http_response_headers:{alias:``,enabled:!1}}}}},AD=`json:extract:multi@1`,jD=r.object({pipe_id:r.literal(AD),run_if:b(),connector:Jl(),config:r.object({json_extraction:hl()})}),MD={"json-extract-multi-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},ND=class extends B{pipeId=AD;payload;payloadSchema=jD;billableOperations=MD;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`json-extract-multi-v1-pipe0`)}getInputRequirement(){return R({description:``,name:this.payload.config.json_extraction.field_name,format:null,label:``,type:`json`,resolvedName:this.payload.config.json_extraction.field_name})}getRawOutputFields(){let e={};for(let t of this.payload.config.json_extraction.extractions)e[t.output_field.name||t.output_field.name]={description:`Extracted value from JSON input field ${this.payload.config.json_extraction.field_name}.`,enabled:!0,format:t.output_field.format||null,label:t.output_field.label||`Extract JSON`,name:t.output_field.name,resolvedName:t.output_field.name,jsonMeta:null,type:t.output_field.type,isCatalogFIeld:!1,isPrimaryOutput:!1};return e}getConnectionsRequirements(){return[]}},PD=jD,FD={pipeId:AD,basePipe:U(AD),inputFieldMode:`config`,outputFieldMode:`config`,label:`JSON extract`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Extract nested JSON properties into new output fields.`,guide:'Deterministic JSON extraction — PREFER this over prompt:run@1 whenever you need a value out of a JSON / known-schema column (no LLM, reproducible, schedulable). config.json_extraction.field_name is the source json column; each extraction has a JSONata `path` plus an output_field. Read the source column\'s JSON schema (get_pipe_schema / get_search_schema output fields, or get_sheet_schema) to author the path. Examples over a profile\'s employment_history array: `employment_history[is_current_employer=true][]` (array of current jobs → output_field.type "json"); `employment_history[is_primary_current_employer=true].company_domain` (scalar → output_field.type "string"). Set output_field.type to "json" for an object/array result, "string" for a scalar. CRITICAL for a list you will fan out (e.g. into row:expandappend:sheet@1): a JSONata filter returns the matched ELEMENT when exactly one row matches but an ARRAY when several do — so ALWAYS append the array constructor `[]` to force a consistent array in every row (`employment_history[is_current_employer=true][]`, not `...=true]`). Without it the column is an object in single-match rows and an array in others, and the downstream expand rejects the object rows. To confirm a NEW path resolves the shape you expect before running anything downstream, switch the sheet to SANDBOX (env:change@1) and run just this extraction — it runs for REAL in sandbox (no writes, no spend), so you can read the actual result, fix the path, then switch back to production.',docPath:W(AD),tags:[V.JSON],keywords:[`parse`,`pick`,`path`,`nested`,`property`,`jsonata`,`unpack`],managedProviders:[`pipe0`],deprecatedProviders:[],allowedUserConnectionProviders:[],billableOperations:MD,defaultInputRequirement:null,defaultPayload:{pipe_id:AD,run_if:null,connector:null,config:{json_extraction:{field_name:``,extractions:[]}}}},ID=`lead:enroll:amplemarket@1`,LD={"lead-enroll-amplemarket-v1-amplemarket":{allowManagedConnection:!1,provider:`amplemarket`,credits:null,mode:null}},RD=g(`email`),zD=g(`profile_url`),BD=g(`amplemarket_sequence_id`),VD=new Set([`active`,`paused`]),HD=[{label:`Demo · Q3 Outbound`,value:`seq_sandbox_1`},{label:`Demo · Founder Intros`,value:`seq_sandbox_2`}],UD=r.object({pipe_id:r.literal(ID),connector:S(),run_if:b(),config:r.object({sequence_id:Au({sectionKey:`general`,required:!0,label:`Sequence`,groupPath:`config.general`,path:`config.sequence_id`,info:`The Amplemarket sequence to enroll the lead into (must be active or paused).`,enabledIf:_(`amplemarket`),optionsDef:{requires:{connection:`amplemarket`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return HD;if(!t)throw new K.MissingSecretError({providerName:`amplemarket`});let r=[],i=`https://api.amplemarket.com/sequences?page[size]=100`;for(let e=0;e<10&&i;e++){let e=await fetch(i,{headers:{Authorization:`Bearer ${t}`}});if(!e.ok){let t=await e.text();throw new K.HttpError({msg:t})}let n=await e.json();for(let e of n.sequences??[])VD.has(e.status)&&r.push({label:e.name,value:e.id});let a=n._links?.next?.href;i=a?new URL(a,`https://api.amplemarket.com`).toString():null}return e?r.filter(t=>t.label.toLowerCase().includes(e.toLowerCase())):r},widgets:{provider_logo:{provider:`amplemarket`}}}}),input_fields:F(r.object({[RD.name]:w({fieldName:RD.name}),[zD.name]:w({fieldName:zD.name})})),custom_variables:gu({sectionKey:`general`,groupPath:`config.general`,path:`config.custom_variables`,label:`Custom variables`,info:"Amplemarket dynamic fields, sent as the lead's data. The Variable name must match what your sequence references (e.g. `{{ pain_point }}`) — lowercase letters, digits, and underscores only. In the Value column, type `/` to insert a field or secret; leave a Value empty to skip that row. Amplemarket rejects the enrollment if the sequence references a dynamic field that is missing.",keyLabel:`Variable`,valueLabel:`Value`,keyPlaceholder:`pain_point`,valuePlaceholder:`{{ pain_point }}`,maxKeys:50}).default({}),output_fields:P(r.object({[BD.name]:D({fieldName:BD.name})}))}).check(e=>{let t=e.value;for(let n of Object.keys(t.custom_variables??{})){let t=n.trim();if(!t)continue;let r=t=>e.issues.push({code:`custom`,input:n,message:t,path:[`custom_variables`,n]});if(t.includes(`{{`)){r("Variable name must be a literal (no `{{ }}` templating).");continue}if(!/^[a-z][a-z0-9_]*$/.test(t)){r(`Invalid Amplemarket dynamic-field name "${t}" — use lowercase letters, digits, and underscores, starting with a letter.`);continue}t.length>255&&r(`Dynamic-field name "${t.slice(0,32)}…" exceeds 255 characters.`)}})}),WD=e=>_d(R(G(RD,e)),R(G(zD,e))),GD=e=>{let t=new Set;for(let n of e)if(n)try{let e=tc(n);for(let n of Object.keys(e.inputs))t.add(n)}catch{}return[...t].map(e=>vd({name:e,resolvedName:e,label:e,description:``,type:t=>Rd(t,e)?.type||`string`,format:`text`}))},KD=class extends B{pipeId=ID;payload;payloadSchema=UD;billableOperations=LD;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`amplemarket`]}estimateBillableOperations(e){return H(e,`lead-enroll-amplemarket-v1-amplemarket`)}getCustomVariableValueTemplates(){return Object.values(this.payload.config.custom_variables??{})}getInputRequirement(){return z(WD(this.payload.config),...GD(this.getCustomVariableValueTemplates()))}getSecretRequirements(){return q(this.getCustomVariableValueTemplates())}getConstantRequirements(){return np(this.getCustomVariableValueTemplates())}getRawOutputFields(){return{[BD.name]:this.catalogOutput(BD)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitRatio:1,rateLimitOperation:`amplemarket_account_operation`,allowManagedConnection:!1}]}},qD=UD,JD={pipeId:ID,basePipe:U(ID),label:`Enroll Lead in Sequence`,executionMode:`single`,categories:[`actions`],lifecycle:null,description:`Add a lead to an Amplemarket sequence, with custom dynamic fields.`,tags:[V.EMAIL],keywords:[`campaign`,`outreach`,`add`,`subscribe`,`outbound`,`email marketing`],docPath:W(ID),billableOperations:LD,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`amplemarket`],defaultInputRequirement:WD(null),managedProviders:[],deprecatedProviders:[],defaultPayload:{pipe_id:ID,connector:{strategy:`first`,connections:[]},run_if:null,config:{sequence_id:``,input_fields:{email:{alias:``},profile_url:{alias:``}},custom_variables:{},output_fields:{amplemarket_sequence_id:{alias:``,enabled:!0}}}}},YD=`lead:enroll:lemlist@1`,XD={"lead-enroll-lemlist-v1-lemlist":{allowManagedConnection:!1,provider:`lemlist`,credits:null,mode:null}},ZD=g(`email`),QD=g(`name`),$D=g(`first_name`),eO=g(`last_name`),tO=g(`company_name`),nO=g(`job_title`),rO=g(`profile_url`),iO=g(`phone`),aO=g(`lemlist_lead_id`),oO=g(`lemlist_enrollment_result`),sO=new Set([`email`,`firstName`,`lastName`,`name`,`companyName`,`jobTitle`,`linkedinUrl`,`phone`,`companyDomain`,`icebreaker`,`picture`]),cO=[{label:`Demo · Q3 Outbound`,value:`cam_sandbox_1`},{label:`Demo · Founder Intros`,value:`cam_sandbox_2`}],lO={requires:{connection:`lemlist`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return cO;if(!t)throw new K.MissingSecretError({providerName:`lemlist`});let r=await fetch(`https://api.lemlist.com/api/campaigns?limit=100`,{headers:{Authorization:`Basic ${t}`}});if(!r.ok){let e=await r.text();throw new K.HttpError({msg:e})}let i=await r.json(),a=(Array.isArray(i)?i:i.campaigns??[]).map(e=>({label:e.name,value:e._id}));return e?a.filter(t=>t.label.toLowerCase().includes(e.toLowerCase())):a},widgets:{provider_logo:{provider:`lemlist`}}};function uO(e){let t=new Set,n=new Set;try{let r=tc(e);for(let[e,i]of Object.entries(r.inputs))(i.required?t:n).add(e)}catch{for(let n of e.matchAll(/\{\{\s*([A-Za-z_][A-Za-z0-9_]*)/g))t.add(n[1])}return{required:[...t],optional:[...n]}}const dO=r.object({pipe_id:r.literal(YD),connector:S(),run_if:b(),config:r.object({campaign_id:Au({sectionKey:`general`,required:!0,label:`Campaign`,groupPath:`config.general`,path:`config.campaign_id`,info:`The lemlist campaign to enroll the lead into.`,enabledIf:_(`lemlist`),optionsDef:lO}),input_fields:F(r.object({[ZD.name]:w({fieldName:ZD.name}),[QD.name]:w({fieldName:QD.name}),[$D.name]:w({fieldName:$D.name}),[eO.name]:w({fieldName:eO.name}),[tO.name]:w({fieldName:tO.name}),[nO.name]:w({fieldName:nO.name}),[rO.name]:w({fieldName:rO.name}),[iO.name]:w({fieldName:iO.name})})),custom_variables:gu({sectionKey:`general`,groupPath:`config.general`,path:`config.custom_variables`,label:`Custom variables`,info:"lemlist custom variables, set on the lead after enrollment. The Variable name must match what your sequence references (e.g. `{{ painPoint }}`) — case-sensitive, no spaces. In the Value column, type `/` to insert a field or secret; leave a Value empty to skip that row. Standard fields (company, job title, LinkedIn, phone) are set via the fields above, not here.",keyLabel:`Variable`,valueLabel:`Value`,keyPlaceholder:`painPoint`,valuePlaceholder:`{{ pain_point }}`,maxKeys:50}),output_fields:P(r.object({[aO.name]:D({fieldName:aO.name}),[oO.name]:D({fieldName:oO.name})}))}).check(e=>{let t=e.value;for(let n of Object.keys(t.custom_variables??{})){let t=n.trim();if(!t)continue;let r=t=>e.issues.push({code:`custom`,input:n,message:t,path:[`custom_variables`,n]});if(t.includes(`{{`)){r("Variable name must be a literal (no `{{ }}` templating).");continue}if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t)){r(`Invalid lemlist variable name "${t}" — use letters, digits, and underscores; no spaces.`);continue}sO.has(t)&&r(`"${t}" is a standard lemlist field — set it via the dedicated field above, not as a custom variable.`)}})}),fO=e=>z(R(G(ZD,e)),_d(R(G(QD,e)),z(R(G($D,e)),R(G(eO,e)))),vd(G(tO,e)),vd(G(nO,e)),vd(G(rO,e)),vd(G(iO,e))),pO=e=>{let t=new Set;for(let n of e)if(n)try{let e=tc(n);for(let n of Object.keys(e.inputs))t.add(n)}catch{}return[...t].map(e=>vd({name:e,resolvedName:e,label:e,description:``,type:t=>Rd(t,e)?.type||`string`,format:`text`}))},mO=class extends B{pipeId=YD;payload;payloadSchema=dO;billableOperations=XD;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`lemlist`]}estimateBillableOperations(e){return H(e,`lead-enroll-lemlist-v1-lemlist`)}getCustomVariableValueTemplates(){return Object.values(this.payload.config.custom_variables??{})}getInputRequirement(){return z(fO(this.payload.config),...pO(this.getCustomVariableValueTemplates()))}getSecretRequirements(){return q(this.getCustomVariableValueTemplates())}getConstantRequirements(){return np(this.getCustomVariableValueTemplates())}getRawOutputFields(){return{[aO.name]:this.catalogOutput(aO),[oO.name]:this.catalogOutput(oO)}}getConnectionsRequirements(){return[{provider:`lemlist`,rateLimitRatio:1,rateLimitOperation:`lemlist_create_lead`,allowManagedConnection:!1}]}async getAgentContext({connectionSecrets:e,environment:t}){let n=this.payload.config.campaign_id,r=Array.isArray(n)?n[0]:n;if(!r)return null;if(t===`sandbox`)return{summary:`Sandbox: this sequence references custom variables painPoint and eventLink — set each via config.custom_variables.`,data:{required_custom_variables:[`painPoint`,`eventLink`],used_standard_fields:[`firstName`]}};let i=e.lemlist;if(!i)throw new K.MissingSecretError({providerName:`lemlist`});let a=await fetch(`https://api.lemlist.com/api/campaigns/${encodeURIComponent(r)}/sequences`,{headers:{Authorization:`Basic ${i}`},signal:AbortSignal.timeout(1e4)});if(!a.ok){let e=await a.text();throw new K.HttpError({msg:e})}let o=await a.json(),s=new Set;for(let e of Object.values(o??{}))for(let t of e?.steps??[])for(let e of[t?.subject,t?.message]){if(!e)continue;let{required:t,optional:n}=uO(e);for(let e of[...t,...n])s.add(e)}let c=[...s].filter(e=>sO.has(e)),l=[...s].filter(e=>!sO.has(e));return{summary:l.length===0?`This sequence uses only standard lemlist fields — no custom variables to set.`:`This sequence requires these custom variables — set each via config.custom_variables (the value is a Liquid template over your sheet columns, e.g. {{ pain_point }}): ${l.join(`, `)}. Standard fields (email, firstName, …) are populated by the input fields above, not here.`,data:{required_custom_variables:l,used_standard_fields:c}}}},hO=dO,gO={pipeId:YD,basePipe:U(YD),label:`Enroll Lead in Campaign`,executionMode:`single`,categories:[`actions`],lifecycle:null,description:`Add a lead to a lemlist campaign sequence, with custom variables.`,tags:[V.EMAIL],keywords:[`sequence`,`outreach`,`add`,`subscribe`,`outbound`,`email marketing`],docPath:W(YD),billableOperations:XD,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`lemlist`],defaultInputRequirement:fO(null),managedProviders:[],deprecatedProviders:[],defaultPayload:{pipe_id:YD,connector:{strategy:`first`,connections:[]},run_if:null,config:{campaign_id:``,input_fields:{email:{alias:``},name:{alias:``},first_name:{alias:``},last_name:{alias:``},company_name:{alias:``},job_title:{alias:``},profile_url:{alias:``},phone:{alias:``}},custom_variables:{},output_fields:{lemlist_lead_id:{alias:``,enabled:!0},lemlist_enrollment_result:{alias:``,enabled:!1}}}}},_O=`message:send-direct:slack@1`,vO=g(`slack_direct_message_success`),yO=r.object({pipe_id:r.literal(_O),connector:S(),run_if:b(),config:r.object({slack_user_id:x({sectionKey:`general`,groupPath:`config.general`,path:`config.slack_user_id`,label:`Slack user ID`,info:"The member to DM (e.g. U024BE7LH) — chains from the Slack channel members search. Type `@` to insert a field reference.",placeholder:`{{ slack_user_id }}`,inputType:`text`,minLength:3,expectedTagType:`string`,expectedTagFormat:`text`}),message:x({sectionKey:`general`,groupPath:`config.general`,path:`config.message`,label:`Message`,info:"The message body. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`Hi {{ name }}, …`,inputType:`text`,minLength:1,maxLength:4e4,expectedTagType:`string`,expectedTagFormat:`markdown`,multiline:!0}),output_fields:P(r.object({[vO.name]:D({fieldName:vO.name})}))})}),bO={"message-send-direct-slack-v1-slack":{allowManagedConnection:!1,provider:`slack`,credits:null,mode:null}},xO=class extends B{pipeId=_O;payload;payloadSchema=yO;billableOperations=bO;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`slack`]}estimateBillableOperations(e){return H(e,`message-send-direct-slack-v1-slack`)}getTemplatedFields(){return[this.payload.config.slack_user_id,this.payload.config.message]}getInputRequirement(){return tp(this.getTemplatedFields())}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return np(this.getTemplatedFields())}getRawOutputFields(){return{[vO.name]:this.catalogOutput(vO)}}getConnectionsRequirements(){return[{provider:`slack`,rateLimitRatio:1,rateLimitOperation:`slack_post_message`,allowManagedConnection:!1}]}},SO=yO,CO={pipeId:_O,basePipe:U(_O),label:`Send direct message`,executionMode:`single`,categories:[`actions`],lifecycle:null,description:`Send a Slack direct message to a workspace member.`,guide:"Send a Slack DM to one member per row. `slack_user_id` is the member's workspace ID — the people:channelmembers:slack@1 search outputs it, which makes 'list channel members → DM each' a two-step chain. The message body is templated: reference upstream fields with `{{ field_name }}` and stored secrets with `{{ SECRETS.KEY }}`. The DM comes from the pipe0 app (bots cannot impersonate people). Requires a Slack vault connection (call list_connections to find one).",tags:[V.CHAT],keywords:[`dm`,`direct message`,`private message`,`notify`,`outreach`,`chat`],docPath:W(_O),billableOperations:bO,inputFieldMode:`config`,outputFieldMode:`static`,allowedUserConnectionProviders:[`slack`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:null,defaultPayload:{pipe_id:_O,connector:{strategy:`first`,connections:[]},run_if:null,config:{slack_user_id:`{{ slack_user_id }}`,message:``,output_fields:{slack_direct_message_success:{alias:``,enabled:!0}}}}},wO=[{label:`#demo-general`,value:`C0SANDBOX001`},{label:`#demo-alerts`,value:`C0SANDBOX002`}],TO=`https://slack.com/api/conversations.list?limit=200&exclude_archived=true&types=public_channel,private_channel`,EO={requires:{connection:`slack`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return wO;if(!t)throw new K.MissingSecretError({providerName:`slack`});let r=[],i=null;for(let e=0;e<5;e++){let e=await fetch(i?`${TO}&cursor=${encodeURIComponent(i)}`:TO,{headers:{Authorization:`Bearer ${t}`}});if(!e.ok){let t=await e.text();throw new K.HttpError({msg:t})}let n=await e.json();if(!n.ok)throw new K.HttpError({msg:n.error??`slack_error`});for(let e of n.channels??[])r.push({label:`#${e.name}${e.is_ext_shared?` (Slack Connect)`:``}`,value:e.id});if(i=n.response_metadata?.next_cursor||null,!i)break}return e?r.filter(t=>t.label.toLowerCase().includes(e.toLowerCase())):r},widgets:{provider_logo:{provider:`slack`}}},DO=`message:send:slack@1`,OO=g(`slack_message_success`),kO=r.object({pipe_id:r.literal(DO),connector:S(),run_if:b(),config:r.object({channel_id:x({sectionKey:`general`,groupPath:`config.general`,path:`config.channel_id`,label:`Channel ID`,info:"Your connection must be authorized to post to this channel. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`C0123456789`,inputType:`text`,minLength:3,expectedTagType:`string`,expectedTagFormat:`text`,optionsDef:EO}),message:x({sectionKey:`general`,groupPath:`config.general`,path:`config.message`,label:`Message`,info:"The message body. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`Hi {{ name }}, …`,inputType:`text`,minLength:1,maxLength:4e4,expectedTagType:`string`,expectedTagFormat:`markdown`,multiline:!0}),output_fields:P(r.object({[OO.name]:D({fieldName:OO.name})}))})}),AO={"message-send-slack-v1-slack":{allowManagedConnection:!1,provider:`slack`,credits:null,mode:null}},jO=class extends B{pipeId=DO;payload;payloadSchema=kO;billableOperations=AO;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`slack`]}estimateBillableOperations(e){return H(e,`message-send-slack-v1-slack`)}getTemplatedFields(){return[this.payload.config.channel_id,this.payload.config.message]}getInputRequirement(){return tp(this.getTemplatedFields())}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return np(this.getTemplatedFields())}getRawOutputFields(){return{[OO.name]:this.catalogOutput(OO)}}getConnectionsRequirements(){return[{provider:`slack`,rateLimitRatio:1,rateLimitOperation:`slack_post_message`,allowManagedConnection:!1}]}},MO=kO,NO={pipeId:DO,basePipe:U(DO),label:`Send message into channel`,executionMode:`single`,categories:[`actions`],lifecycle:null,description:`Send a Slack message to a channel.`,guide:"Send a Slack message. The channel ID and message body are templated config fields — reference upstream fields with `{{ field_name }}` and stored secrets with `{{ SECRETS.KEY }}`. Requires a Slack vault connection (call list_connections to find one).",tags:[V.CHAT],keywords:[`notify`,`notification`,`alert`,`post`,`chat`],docPath:W(DO),billableOperations:AO,inputFieldMode:`config`,outputFieldMode:`static`,allowedUserConnectionProviders:[`slack`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:null,defaultPayload:{pipe_id:DO,connector:{strategy:`first`,connections:[]},run_if:null,config:{channel_id:``,message:``,output_fields:{slack_message_success:{alias:``,enabled:!0}}}}},PO=`message:write@1`,FO=g(`message`),IO=`message-write-v1`,LO=Zc(IO),RO=r.object({pipe_id:r.literal(PO),connector:C(),run_if:b(),config:r.object({template:Kl({sectionKey:`general`,label:`Template`,path:`config.template`,placeholder:J(`prompt`),groupPath:`config.prompt`,required:!0}),model:Tu({sectionKey:`general`,label:`Model`,path:`config.model`,groupPath:`config.prompt`,billableOperations:LO,defaultValue:Hc}),output_fields:P(r.object({[FO.name]:D({fieldName:FO.name})}))})}),zO=class extends B{pipeId=PO;payload;payloadSchema=RO;billableOperations=LO;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return Wc(this.payload.config.model)}estimateBillableOperations(e){return $c(e,{model:this.payload.config.model,prefix:IO,inputTokens:600,outputTokens:800})}getInputRequirement(){return tp([this.payload.config.template])}getSecretRequirements(){return q([this.payload.config.template])}getConstantRequirements(){return np([this.payload.config.template])}getRawOutputFields(){return{[FO.name]:this.catalogOutput(FO)}}getConnectionsRequirements(){return Gc(this.payload.config.model)}},BO=RO,VO={pipeId:PO,inputFieldMode:`config`,outputFieldMode:`static`,basePipe:U(PO),label:`Message writer`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`An AI agent specialized in composing messages for modern workplace communication platforms (Slack, Teams, Discord, etc.)`,guide:`AI message composer for Slack/Teams/Discord. Outputs: message. Pair with message:send:slack@1 to send.`,tags:[V.AI],keywords:[`ai`,`compose`,`draft`,`copywriting`,`outreach`,`slack`,`teams`],docPath:W(PO),defaultInputRequirement:null,billableOperations:LO,allowedUserConnectionProviders:Kc(),managedProviders:Kc(),deprecatedProviders:[],defaultPayload:{pipe_id:PO,connector:null,run_if:null,config:{model:Hc,template:``,output_fields:{message:{alias:``,enabled:!0}}}}},HO=g(`hubspot_object_id`),UO=g(`hubspot_associated_count`),WO=g(`hubspot_associated_objects`),GO=`object:associations:hubspot@1`,KO=r.object({pipe_id:r.literal(GO),run_if:b(),connector:S(),config:r.object({from_object_type:Au({sectionKey:`general`,required:!0,label:`From object type`,groupPath:`config.general`,path:`config.from_object_type`,info:`The type of the source record (standard or custom object).`,enabledIf:_(`hubspot`),optionsDef:lp}),to_object_type:Au({sectionKey:`general`,required:!0,label:`To object type`,groupPath:`config.general`,path:`config.to_object_type`,info:`The type of the associated records to retrieve (standard or custom object).`,enabledIf:_(`hubspot`),optionsDef:lp}),association_label:Au({sectionKey:`general`,required:!1,label:`Association label`,groupPath:`config.general`,path:`config.association_label`,info:`Only follow associations with this label (labels are portal-specific, e.g. "Decision maker"). Empty = all associations.`,enabledIf:_(`hubspot`),optionsDef:up}),properties:pu({sectionKey:`general`,label:`Properties`,groupPath:`config.general`,path:`config.properties`,placeholder:`name`,info:`HubSpot internal property names of the TARGET object to include per associated record. Empty = HubSpot's default properties.`}),limit:Du({sectionKey:`general`,label:`Limit`,groupPath:`config.general`,path:`config.limit`,info:``,min:1,max:100}).default(20),input_fields:F(r.object({[HO.name]:w({fieldName:HO.name})})),output_fields:P(r.object({[UO.name]:D({fieldName:UO.name}),[WO.name]:D({fieldName:WO.name})}))})}),qO=e=>R(G(HO,e)),JO={"object-associations-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},YO=class extends B{pipeId=GO;payload;payloadSchema=KO;billableOperations=JO;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`hubspot`]}estimateBillableOperations(e){return H(e,`object-associations-hubspot-v1-hubspot`)}getInputRequirement(){return qO(this.payload.config)}getRawOutputFields(){return{[UO.name]:this.catalogOutput(UO),[WO.name]:this.catalogOutput(WO)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_generic`,allowManagedConnection:!1}]}async getAgentContext(e){let t=this.payload.config.to_object_type,n=Array.isArray(t)?t[0]??``:t;return mp(e,{objectTypes:[[n||`target object`,n||`0-1`]]})}},XO=KO,ZO={pipeId:GO,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(GO),label:`HubSpot associated objects`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Retrieve the HubSpot records associated with a source record — one level of joins across standard and custom objects (e.g. a company's deals, or a custom object linked to a company).`,tags:[V.FIELDS],keywords:[`crm`,`join`,`related`,`association`,`custom object`,`linked`],docPath:W(GO),guide:"Associations are HubSpot's joins — the Search API never returns them, so this pipe is the way to fetch related records. The source-record input consumes `hubspot_object_id`, which every HubSpot surface emits (alias it to point at a differently named column); the from-object type must match the record the ID belongs to. Activities (notes, tasks, calls, meetings, emails) are associated objects too — pick them as the to-object to read a record's timeline; when you leave properties empty for an engagement the pipe fills a sensible default set (timestamp + body/subject). Association labels are portal-specific; leave the label empty to follow all associations. Zero associations is a successful result (count = 0). Target-object properties use internal names — call get_provider_context for the portal's catalog.",billableOperations:JO,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:qO(null),defaultPayload:{pipe_id:GO,connector:{strategy:`first`,connections:[]},run_if:null,config:{from_object_type:`0-2`,to_object_type:`0-3`,association_label:``,properties:[],limit:20,input_fields:{hubspot_object_id:{alias:``}},output_fields:{hubspot_associated_count:{alias:``,enabled:!0},hubspot_associated_objects:{alias:``,enabled:!0}}}}},QO=g(`hubspot_object_id`),$O=g(`hubspot_update_result`),ek=`object:update:hubspot@1`,tk=r.object({pipe_id:r.literal(ek),run_if:b(),connector:S(),config:r.object({object_type:Au({sectionKey:`general`,required:!0,label:`Object type`,groupPath:`config.general`,path:`config.object_type`,info:`Standard objects plus this portal's custom objects (custom objects need HubSpot Enterprise).`,enabledIf:_(`hubspot`),optionsDef:lp}),properties:gu({sectionKey:`general`,groupPath:`config.general`,path:`config.properties`,label:`Property values`,info:"Property = the HubSpot internal name (e.g. `jobtitle`, custom properties too). In the Value column, type `/` to insert a field reference. Enumeration values must be existing internal option values (case-sensitive).",keyLabel:`Property`,valueLabel:`Value`,keyPlaceholder:`jobtitle`,valuePlaceholder:`{{ job_title }}`,maxKeys:50}),ignore_blank_values:E({sectionKey:`general`,defaultValue:!0,label:`Ignore blank values`,groupPath:`config.general`,path:`config.ignore_blank_values`,info:`ON: rows whose value renders empty are skipped, preserving CRM data. OFF: empty values CLEAR the property in HubSpot.`}),input_fields:F(r.object({[QO.name]:w({fieldName:QO.name})})),output_fields:P(r.object({[$O.name]:D({fieldName:$O.name})}))}).check(e=>{let t=e.value;for(let n of Object.keys(t.properties??{})){let t=n.trim();if(!t)continue;let r=t=>e.issues.push({code:`custom`,input:n,message:t,path:[`properties`,n]});if(t.includes(`{{`)){r("Property name must be a literal internal name (no `{{ }}` templating).");continue}/^[a-z][a-z0-9_]*$/.test(t)||r(`Invalid HubSpot property name "${t}" — internal names are lowercase letters, digits, and underscores.`)}})}),nk=e=>R(G(QO,e)),rk={"object-update-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},ik=class extends B{pipeId=ek;payload;payloadSchema=tk;billableOperations=rk;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`hubspot`]}estimateBillableOperations(e){return H(e,`object-update-hubspot-v1-hubspot`)}getTemplates(){return Object.values(this.payload.config.properties??{}).filter(e=>!!e)}getInputRequirement(){return z(nk(this.payload.config),...ap(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[$O.name]:this.catalogOutput($O)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_generic`,allowManagedConnection:!1}]}async getAgentContext(e){let t=this.payload.config.object_type,n=Array.isArray(t)?t[0]??``:t;return mp(e,{objectTypes:[[n||`contacts`,n||`0-1`]],writableOnly:!0})}},ak=tk,ok={pipeId:ek,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(ek),label:`HubSpot update object`,executionMode:`single`,categories:[`actions`,`integrations`],lifecycle:null,description:`Update a HubSpot record (standard or custom object) by its record ID, mapping columns to properties. Blank values are skipped by default so un-enriched cells never erase CRM data.`,tags:[V.FIELDS],keywords:[`crm`,`write`,`sync`,`record`,`property`,`custom object`],docPath:W(ek),guide:"The object-ID input consumes `hubspot_object_id`, which every HubSpot surface emits — chain from a match pipe (Lookup → Update by ID is the canonical HubSpot recipe; there is no reliable upsert for companies). Call get_provider_context for the selected object type to see WRITABLE properties and enumeration option values — HubSpot rejects read-only properties and unknown enum values (case-sensitive, never auto-created). Property writes fire the portal's workflows; rows where every value renders blank skip the API call entirely. With 'Ignore blank values' OFF, an empty value CLEARS the property in HubSpot.",billableOperations:rk,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:nk(null),defaultPayload:{pipe_id:ek,connector:{strategy:`first`,connections:[]},run_if:null,config:{object_type:`0-1`,properties:{},ignore_blank_values:!0,input_fields:{hubspot_object_id:{alias:``}},output_fields:{hubspot_update_result:{alias:``,enabled:!0}}}}},sk=g(`company_domain`),ck=g(`email`),lk=g(`salesforce_opportunities_found_count`),uk=g(`salesforce_record_id`),dk=g(`salesforce_opportunity_matches`),fk=`opportunity:match:salesforce@1`,pk=r.object({pipe_id:r.literal(fk),run_if:b(),connector:S(),config:r.object({status:wu({sectionKey:`general`,required:!1,label:`Opportunity status`,groupPath:`config.general`,path:`config.status`,description:`Filters on Salesforce's computed IsClosed / IsWon — org-invariant, unlike stage names.`,options:[{label:`Any`,value:`any`},{label:`Open`,value:`open`},{label:`Won`,value:`won`},{label:`Lost`,value:`lost`}]}).default(`any`),stage:Au({sectionKey:`general`,required:!1,label:`Stage`,groupPath:`config.general`,path:`config.stage`,info:`Only match opportunities in this stage (the org's own OpportunityStage list). Empty = all stages.`,enabledIf:_(`salesforce`),optionsDef:Kd}),custom_properties:pu({sectionKey:`general`,label:`Custom fields`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`NextStep`,info:"Field API names added to each match JSON under `custom_properties` (standard-set names are already top-level)."}),input_fields:F(r.object({[sk.name]:w({fieldName:sk.name}),[ck.name]:w({fieldName:ck.name})})),output_fields:P(r.object({[lk.name]:D({fieldName:lk.name}),[uk.name]:D({fieldName:uk.name}),[dk.name]:D({fieldName:dk.name})}))}).optional()}),mk=e=>_d(R(G(sk,e)),R(G(ck,e))),hk={"opportunity-match-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},gk=class extends B{pipeId=fk;payload;payloadSchema=pk;billableOperations=hk;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`salesforce`]}estimateBillableOperations(e){return H(e,`opportunity-match-salesforce-v1-salesforce`)}getInputRequirement(){return mk(this.payload.config)}getRawOutputFields(){return{[lk.name]:this.catalogOutput(lk),[uk.name]:this.catalogOutput(uk),[dk.name]:this.catalogOutput(dk)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return tf(e,{objects:[`Opportunity`],includeStages:!0})}},_k=pk,vk={pipeId:fk,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(fk),label:`Salesforce opportunity match`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Find opportunities in your Salesforce org for a company (by domain, via the matched account) or person (by email, via contact roles) — opportunities have no natural key of their own. A clean miss completes with count = 0.`,tags:[V.WEBSITE,V.EMAIL],keywords:[`crm`,`sfdc`,`deal`,`pipeline`,`lookup`,`exists`,`revenue`],docPath:W(fk),guide:"Domain input resolves via account match → Opportunity.AccountId (preferred when both inputs are present); email resolves via the contact's OpportunityContactRole (note: OCRs the connected user cannot see are silently missed under private sharing). Filter open/won via `status` (computed IsClosed/IsWon — never assume a stage named 'Closed Won' exists); `stage` values are OpportunityStage ApiNames from get_provider_context. Contact roles ride each match as `contact_roles` edge metadata. found_count = 0 is a successful result.",billableOperations:hk,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:mk(null),defaultPayload:{pipe_id:fk,connector:{strategy:`first`,connections:[]},run_if:null,config:{status:`any`,stage:``,custom_properties:[],input_fields:{company_domain:{alias:``},email:{alias:``}},output_fields:{salesforce_opportunities_found_count:{alias:``,enabled:!0},salesforce_record_id:{alias:``,enabled:!0},salesforce_opportunity_matches:{alias:``,enabled:!0}}}}},yk=`person:devprofileurl:profileurl:waterfall@1`,bk=g(`profile_url`),xk=g(`developer_profile_url`),Sk=g(`alternative_developer_profile_urls`),Ck=[`crustdata`],wk=[{provider:`crustdata`}],Tk=r.object({pipe_id:r.literal(yk),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:wk,availableProviders:Ck}),input_fields:F(r.object({[bk.name]:w({fieldName:bk.name})})),output_fields:P(r.object({[xk.name]:D({fieldName:xk.name}),[Sk.name]:D({fieldName:Sk.name})}))}).optional()}),Ek=e=>R(G(bk,e)),Dk={"person-devprofileurl-profileurl-waterfall-v1-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:2,level1:{credits:1.3,weight:1}},mode:`onSuccess`}},Ok=class extends B{pipeId=yk;payload;payloadSchema=Tk;billableOperations=Dk;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return Ek(this.payload.config)}getRawOutputFields(){return{[xk.name]:this.catalogOutput(xk,{isPrimaryOutput:!0}),[Sk.name]:this.catalogOutput(Sk,{isPrimaryOutput:!1})}}getConnectionsRequirements(){let e={crustdata:`crustdata_realtime_person_enrich`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},kk=Tk,Ak={pipeId:yk,basePipe:U(yk),label:`GitHub profile from LinkedIn URL`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find a developer profile URL (e.g. GitHub) for any prospect using multiple data providers in a waterfall motion.`,docPath:W(yk),tags:[V.LINKEDIN,V.WATERFALL,V.NEW],keywords:[`developer`,`dev`,`engineer`,`coder`,`git`],billableOperations:Dk,defaultInputRequirement:Ek(null),inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:Ck,allowedUserConnectionProviders:Ck,deprecatedProviders:[],defaultPayload:{pipe_id:yk,connector:null,run_if:null,config:{providers:wk,input_fields:{profile_url:{alias:``}},output_fields:{developer_profile_url:{alias:``,enabled:!0},alternative_developer_profile_urls:{alias:``,enabled:!1}}}}},jk=`person:email:validate:millionverifier@1`,Mk=g(`email`),Nk=g(`email_validation_status`),Pk=g(`million_validation_match`),Fk=r.object({pipe_id:r.literal(jk),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[Mk.name]:w({fieldName:Mk.name})})),output_fields:P(r.object({[Nk.name]:D({fieldName:Nk.name}),[Pk.name]:D({fieldName:Pk.name})}))}).optional()}),Ik=e=>R(G(Mk,e)),Lk={"person-email-validate-millionverifier-v1-millionverifier":{provider:`millionverifier`,allowManagedConnection:!0,credits:{default:.1,level1:{credits:.05,weight:1}},mode:`always`}},Rk=class extends B{pipeId=jk;payload;payloadSchema=Fk;billableOperations=Lk;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`millionverifier`]}estimateBillableOperations(e){return H(e,`person-email-validate-millionverifier-v1-millionverifier`)}getInputRequirement(){return Ik(this.payload.config)}getRawOutputFields(){return{[Nk.name]:this.catalogOutput(Nk),[Pk.name]:this.catalogOutput(Pk)}}getConnectionsRequirements(){return[{provider:`millionverifier`,rateLimitRatio:1,rateLimitOperation:`millionverifier_generic`,allowManagedConnection:!0}]}},zk=Fk,Bk={pipeId:jk,basePipe:U(jk),label:`Validate email`,executionMode:`single`,categories:[`people_data`],lifecycle:null,description:`Verify email addresses to ensure is deliverability.`,tags:[V.EMAIL],keywords:[`verify`,`verification`,`deliverability`,`bounce`,`check`,`clean`],docPath:W(jk),billableOperations:Lk,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`millionverifier`],managedProviders:[`millionverifier`],deprecatedProviders:[],defaultInputRequirement:Ik(null),defaultPayload:{pipe_id:jk,connector:null,run_if:null,config:{input_fields:{email:{alias:``}},output_fields:{email_validation_status:{alias:``,enabled:!0},million_validation_match:{alias:``,enabled:!0}}}}},Vk=`person:identity:email:waterfall@2`,Hk=g(`email`),Uk=g(`profile_url`),Wk=g(`person_profile_match`),Gk=[`hunter`,`crustdata`,`mixrank`],Kk=[{provider:`hunter`},{provider:`crustdata`},{provider:`mixrank`}],qk=r.object({pipe_id:r.literal(Vk),connector:C(),run_if:b(),config:r.object({providers:T({availableProviders:Gk,defaultProviders:Kk,sectionKey:`general`}),input_fields:F(r.object({[Hk.name]:w({fieldName:Hk.name})})),output_fields:P(r.object({[Uk.name]:D({fieldName:Uk.name}),[Wk.name]:D({fieldName:Wk.name})}))}).optional()}),Jk=e=>R(G(Hk,e)),Yk={"person-identity-email-waterfall-v2-hunter":{provider:`hunter`,allowManagedConnection:!0,credits:{default:2.5,level1:{credits:1.25,weight:1}},mode:`onSuccess`},"person-identity-email-waterfall-v2-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:5,level1:{credits:2.5,weight:1}},mode:`onSuccess`},"person-identity-email-waterfall-v2-mixrank":{provider:`mixrank`,allowManagedConnection:!0,credits:{default:1.5,level1:{credits:.75,weight:1}},mode:`onSuccess`}},Xk=class extends B{pipeId=Vk;payload;payloadSchema=qk;billableOperations=Yk;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return Jk(this.payload.config)}getRawOutputFields(){return{[Uk.name]:this.catalogOutput(Uk),[Wk.name]:this.catalogOutput(Wk,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={hunter:`hunter_email_enrichment`,crustdata:`crustdata_realtime_person_enrich`,mixrank:`mixrank-person-match`},t=this.payload.config?.providers||[],n=t.map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0})),r=t.findIndex(e=>e.provider===`hunter`);return r!==-1&&n.push({provider:`amplemarket`,rateLimitRatio:Y(r),rateLimitOperation:`amplemarket-person-reveal`,allowManagedConnection:!0}),n}},Zk=qk,Qk={pipeId:Vk,basePipe:U(Vk),label:`Full LinkedIn profile from email`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find a person's LinkedIn profile URL and a standardized JSON profile from their email address.`,tags:[V.EMAIL,V.PEOPLE_PROFILES,V.LINKEDIN,V.WATERFALL],keywords:[`enrich`,`enrichment`,`reverse lookup`,`contact`,`identity`,`person`],docPath:W(Vk),managedProviders:Gk,deprecatedProviders:[],allowedUserConnectionProviders:Gk,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:Yk,defaultInputRequirement:Jk(null),defaultPayload:{pipe_id:Vk,connector:null,run_if:null,config:{providers:Kk,input_fields:{email:{alias:``}},output_fields:{profile_url:{alias:``,enabled:!0},person_profile_match:{alias:``,enabled:!0}}}}},$k=g(`email`),eA=g(`attio_person_found`),tA=g(`attio_record_id`),nA=g(`attio_person_match`),rA=`person:match:attio@1`,iA=r.object({pipe_id:r.literal(rA),run_if:b(),connector:S(),config:r.object({custom_properties:pu({sectionKey:`general`,label:`Custom attributes`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`job_title`,optionsDef:Af({target:`objects`,identifier:`people`}),info:'Attio attribute api_slugs to include in the match output (e.g. `job_title`, not "Job title"). Custom attributes work too and nest under `custom_properties`. Empty = a standard identity set.'}),input_fields:F(r.object({[$k.name]:w({fieldName:$k.name})})),output_fields:P(r.object({[eA.name]:D({fieldName:eA.name}),[tA.name]:D({fieldName:tA.name}),[nA.name]:D({fieldName:nA.name})}))}).optional()}),aA=e=>R(G($k,e)),oA={"person-match-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},sA=class extends B{pipeId=rA;payload;payloadSchema=iA;billableOperations=oA;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`person-match-attio-v1-attio`)}getInputRequirement(){return aA(this.payload.config)}getRawOutputFields(){return{[eA.name]:this.catalogOutput(eA),[tA.name]:this.catalogOutput(tA),[nA.name]:this.catalogOutput(nA)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_query`,allowManagedConnection:!1}]}async getAgentContext(e){return Mf(e,{objects:[`people`]})}},cA=iA,lA={pipeId:rA,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(rA),label:`Attio person match`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Check whether a person exists in your Attio workspace by email. email_addresses is Attio's unique identity attribute, so any address on a record matches exactly; a clean miss completes with found = false.`,tags:[V.EMAIL],keywords:[`crm`,`lookup`,`exists`,`dedupe`,`record`,`contact`],docPath:W(rA),guide:"Call get_provider_context first to discover this workspace's attributes; use attribute api_slugs verbatim (e.g. `job_title`). email_addresses is unique + multiselect — one exact match covers every address on the record, so there is no secondary-email option. found = false is a successful result — gate follow-up pipes with run_if on it. Chain the attio_record_id output into record:update:attio@1 or record:lookup:attio@1. No email column yet? Chain a work-email pipe (e.g. people:workemail:waterfall@1) ahead of this one and match on its output.",billableOperations:oA,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:aA(null),defaultPayload:{pipe_id:rA,connector:{strategy:`first`,connections:[]},run_if:null,config:{custom_properties:[],input_fields:{email:{alias:``}},output_fields:{attio_person_found:{alias:``,enabled:!0},attio_record_id:{alias:``,enabled:!0},attio_person_match:{alias:``,enabled:!0}}}}},uA=`person:match:role:waterfall@1`,dA=g(`company_domain`),fA=g(`role_finder_match`),pA=[`leadmagic`],mA=[{provider:`leadmagic`}],hA=r.object({pipe_id:r.literal(uA),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:mA,availableProviders:pA}),roles:hu({sectionKey:`general`,groupPath:`config.general`,label:`Roles`,path:`config.roles`,info:`Company roles to include`,maxItems:3,minItems:1,suggestionsDef:h(`titles`),expectedTagType:`string`}),input_fields:F(r.object({[dA.name]:w({fieldName:dA.name})})),output_fields:P(r.object({[fA.name]:D({fieldName:fA.name})}))})}),gA=e=>_d(G(dA,e)),_A={"person-match-role-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`}},vA=class extends B{pipeId=uA;payload;payloadSchema=hA;billableOperations=_A;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return gA(this.payload.config)}getSecretRequirements(){return q(this.payload.config?.roles??[])}getConstantRequirements(){return np(this.payload.config?.roles??[])}getRawOutputFields(){return{[fA.name]:this.catalogOutput(fA,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_role_finder`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},yA=hA,bA={pipeId:uA,basePipe:U(uA),managedProviders:pA,deprecatedProviders:[],allowedUserConnectionProviders:pA,label:`Role finder`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find role matches for a given companies like "CEO" or "CFO".`,tags:[V.PEOPLE_PROFILES],keywords:[`job title`,`title`,`ceo`,`executive`,`decision maker`,`employee`],docPath:W(uA),billableOperations:_A,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:gA(null),defaultPayload:{pipe_id:uA,run_if:null,connector:null,config:{roles:[],providers:mA,input_fields:{company_domain:{alias:``}},output_fields:{role_finder_match:{alias:``,enabled:!0}}}}},xA=g(`email`),SA=g(`salesforce_person_found`),CA=g(`salesforce_record_id`),wA=g(`salesforce_person_match`),TA=`person:match:salesforce@1`,EA=r.object({pipe_id:r.literal(TA),run_if:b(),connector:S(),config:r.object({match_scope:wu({sectionKey:`general`,required:!1,label:`Match scope`,groupPath:`config.general`,path:`config.match_scope`,description:`Which Salesforce person shapes to probe. Person Accounts are included automatically when the org has them.`,options:[{label:`Contacts and leads`,value:`contacts_and_leads`},{label:`Contacts only`,value:`contacts_only`},{label:`Leads only`,value:`leads_only`}]}).default(`contacts_and_leads`),custom_properties:pu({sectionKey:`general`,label:`Custom fields`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`Lead_Score__c`,info:"Field API names added to the match JSON under `custom_properties` (standard-set names are already top-level). Dotted parent paths like `Account.Industry` work."}),input_fields:F(r.object({[xA.name]:w({fieldName:xA.name})})),output_fields:P(r.object({[SA.name]:D({fieldName:SA.name}),[CA.name]:D({fieldName:CA.name}),[wA.name]:D({fieldName:wA.name})}))}).optional()}),DA=e=>R(G(xA,e)),OA={"person-match-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},kA=class extends B{pipeId=TA;payload;payloadSchema=EA;billableOperations=OA;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`salesforce`]}estimateBillableOperations(e){return H(e,`person-match-salesforce-v1-salesforce`)}getInputRequirement(){return DA(this.payload.config)}getRawOutputFields(){return{[SA.name]:this.catalogOutput(SA),[CA.name]:this.catalogOutput(CA),[wA.name]:this.catalogOutput(wA)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return tf(e,{objects:[`Contact`,`Lead`]})}},AA=EA,jA={pipeId:TA,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(TA),label:`Salesforce person match`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Check whether a person exists in your Salesforce org by email — across Contacts, Leads, and Person Accounts in one call, with deterministic precedence and converted-lead redirect. A clean miss completes with found = false.`,tags:[V.EMAIL],keywords:[`crm`,`sfdc`,`contact`,`lead`,`lookup`,`exists`,`dedupe`],docPath:W(TA),guide:"Matches by exact email in ONE API call across up to three shapes, with precedence: live Contact → converted Lead's contact (is_converted_redirect = true) → live Lead → Person Account. found = false is a successful result — gate follow-ups with run_if on it. `object_type` in the match JSON says which shape matched; chain `salesforce_record_id` into record:update:salesforce@1 or record:lookup:salesforce@1. Note: 'no match' can also mean the connected user lacks record access (private sharing).",billableOperations:OA,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:DA(null),defaultPayload:{pipe_id:TA,connector:{strategy:`first`,connections:[]},run_if:null,config:{match_scope:`contacts_and_leads`,custom_properties:[],input_fields:{email:{alias:``}},output_fields:{salesforce_person_found:{alias:``,enabled:!0},salesforce_record_id:{alias:``,enabled:!0},salesforce_person_match:{alias:``,enabled:!0}}}}},MA=`person:mobile:profileurl:waterfall@1`,NA=g(`profile_url`),PA=g(`mobile`),FA=[`leadmagic`,`prospeo`,`amplemarket`,`crustdata`,`findymail`],IA=[{provider:`leadmagic`},{provider:`prospeo`},{provider:`amplemarket`},{provider:`crustdata`},{provider:`findymail`}],LA=r.object({pipe_id:r.literal(MA),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:IA,availableProviders:FA}),input_fields:F(r.object({[NA.name]:w({fieldName:NA.name})})),output_fields:P(r.object({[PA.name]:D({fieldName:PA.name})}))}).optional()}),RA=e=>R(G(NA,e)),zA={"person-mobile-profileurl-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:3,level1:{credits:2,weight:1}},mode:`onSuccess`},"person-mobile-profileurl-waterfall-v1-prospeo":{provider:`prospeo`,allowManagedConnection:!0,credits:{default:5,level1:{credits:3,weight:1}},mode:`onSuccess`},"person-mobile-profileurl-waterfall-v1-findymail":{provider:`findymail`,allowManagedConnection:!0,credits:{default:6,level1:{credits:4,weight:1}},mode:`onSuccess`},"person-mobile-profileurl-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:4,level1:{credits:3,weight:1}},mode:`onSuccess`},"person-mobile-profileurl-waterfall-v1-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`}},BA=class extends B{pipeId=MA;payload;payloadSchema=LA;billableOperations=zA;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return RA(this.payload.config)}getRawOutputFields(){return{[PA.name]:this.catalogOutput(PA,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,prospeo:`prospeo_phone_number_lookup`,findymail:`findymail_phone_lookup`,amplemarket:`amplemarket-person-reveal`,crustdata:`crustdata_contact_enrich`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},VA=LA,HA={pipeId:MA,basePipe:U(MA),label:`Mobile number from LinkedIn profile`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find a mobile phone number for any prospect using multiple data providers in a waterfall motion.`,docPath:W(MA),tags:[V.PHONE,V.WATERFALL],keywords:[`phone`,`phone number`,`cell`,`direct dial`],billableOperations:zA,defaultInputRequirement:RA(null),inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:FA,allowedUserConnectionProviders:FA,deprecatedProviders:[],defaultPayload:{pipe_id:MA,connector:null,run_if:null,config:{providers:IA,input_fields:{profile_url:{alias:``}},output_fields:{mobile:{alias:``,enabled:!0}}}}},UA=`person:mobile:workemail:waterfall@1`,WA=g(`work_email`),GA=g(`mobile`),KA=[`leadmagic`,`amplemarket`,`crustdata`],qA=[{provider:`leadmagic`},{provider:`amplemarket`},{provider:`crustdata`}],JA=r.object({pipe_id:r.literal(UA),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:KA,defaultProviders:qA}),input_fields:F(r.object({[WA.name]:w({fieldName:WA.name})})),output_fields:P(r.object({[GA.name]:D({fieldName:GA.name})}))}).optional()}),YA=e=>R(G(WA,e)),XA={"person-mobile-workemail-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:3,level1:{credits:2,weight:1}},mode:`onSuccess`},"person-mobile-workemail-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:5,level1:{credits:4,weight:1}},mode:`onSuccess`},"person-mobile-workemail-waterfall-v1-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`}},ZA=class extends B{pipeId=UA;payload;payloadSchema=JA;billableOperations=XA;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return YA(this.payload.config)}getRawOutputFields(){return{[GA.name]:this.catalogOutput(GA,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,amplemarket:`amplemarket-person-reveal`,crustdata:`crustdata_contact_enrich`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},QA=JA,$A={pipeId:UA,basePipe:U(UA),label:`Mobile number from email`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find a mobile phone number for a prospect.`,tags:[V.PHONE,V.WATERFALL],keywords:[`phone`,`phone number`,`cell`,`direct dial`],docPath:W(UA),billableOperations:XA,defaultInputRequirement:YA(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:KA,managedProviders:KA,deprecatedProviders:[],defaultPayload:{pipe_id:UA,connector:null,run_if:null,config:{providers:qA,input_fields:{work_email:{alias:``}},output_fields:{mobile:{alias:``,enabled:!0}}}}},ej=`person:name:join@1`,tj=g(`first_name`),nj=g(`last_name`),rj=g(`name`),ij=r.object({pipe_id:r.literal(ej),run_if:b(),connector:Jl(),config:r.object({input_fields:F(r.object({[tj.name]:w({fieldName:tj.name}),[nj.name]:w({fieldName:nj.name})})),output_fields:P(r.object({[rj.name]:D({fieldName:rj.name})}))}).optional()}),aj=e=>z(G(tj,e),G(nj,e)),oj={"person-name-join-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},sj=class extends B{pipeId=ej;payload;payloadSchema=ij;billableOperations=oj;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`person-name-join-v1-pipe0`)}getInputRequirement(){return aj(this.payload.config)}getRawOutputFields(){return{[rj.name]:this.catalogOutput(rj)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},cj=ij,lj={pipeId:ej,basePipe:U(ej),label:`Join name`,executionMode:`single`,categories:[`people_data`],lifecycle:null,description:`Combine the first and last names of a prospect into a full name field.`,tags:[V.NAMES],keywords:[`combine`,`concatenate`,`merge`,`first`,`last`,`full`],docPath:W(ej),billableOperations:oj,defaultInputRequirement:aj(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:ej,run_if:null,connector:null,config:{input_fields:{first_name:{alias:``},last_name:{alias:``}},output_fields:{name:{alias:``,enabled:!0}}}}},uj=`person:name:split@1`,dj=g(`name`),fj=g(`first_name`),pj=g(`last_name`),mj=r.object({pipe_id:r.literal(uj),connector:Jl(),run_if:b(),config:r.object({input_fields:F(r.object({[dj.name]:w({fieldName:dj.name})})),output_fields:P(r.object({[fj.name]:D({fieldName:fj.name}),[pj.name]:D({fieldName:pj.name})}))}).optional()}),hj=e=>R(G(dj,e)),gj={"person-name-split-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},_j=class extends B{pipeId=uj;payload;payloadSchema=mj;billableOperations=gj;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`person-name-split-v1-pipe0`)}getInputRequirement(){return hj(this.payload.config)}getRawOutputFields(){return{[fj.name]:this.catalogOutput(fj),[pj.name]:this.catalogOutput(pj)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},vj=mj,yj={pipeId:uj,basePipe:U(uj),label:`Split name`,executionMode:`single`,categories:[`people_data`],lifecycle:null,description:`Split a full name into first and last name.`,tags:[V.NAMES],keywords:[`parse`,`separate`,`first`,`last`,`full`],docPath:W(uj),billableOperations:gj,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:hj(null),allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:uj,run_if:null,connector:void 0,config:{input_fields:{name:{alias:``}},output_fields:{first_name:{alias:``,enabled:!0},last_name:{alias:``,enabled:!0}}}}},bj=`person:personalemail:profileurl:waterfall@1`,xj=g(`profile_url`),Sj=g(`personal_email`),Cj=g(`alternate_personal_emails`),wj=[`leadmagic`,`mixrank`],Tj=[{provider:`leadmagic`},{provider:`mixrank`}],Ej=r.object({pipe_id:r.literal(bj),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:wj,defaultProviders:Tj}),input_fields:F(r.object({[xj.name]:w({fieldName:xj.name})})),output_fields:P(r.object({[Sj.name]:D({fieldName:Sj.name}),[Cj.name]:D({fieldName:Cj.name})}))}).optional()}),Dj=e=>R(G(xj,e)),Oj={"person-personalemail-profileurl-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`},"person-personalemail-profileurl-waterfall-v1-mixrank":{provider:`mixrank`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`}},kj=class extends B{pipeId=bj;payload;payloadSchema=Ej;billableOperations=Oj;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return Dj(this.payload.config)}getRawOutputFields(){return{[Sj.name]:this.catalogOutput(Sj,{isPrimaryOutput:!0}),[Cj.name]:this.catalogOutput(Cj)}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_personal_email_finder`,mixrank:`mixrank-person-match`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},Aj=Ej,jj={pipeId:bj,basePipe:U(bj),allowedUserConnectionProviders:wj,managedProviders:wj,deprecatedProviders:[],label:`Personal email from LinkedIn`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find the personal email address of a prospect by using a professional profile URL as input.`,tags:[V.EMAIL,V.PERSONAL_EMAIL],keywords:[`gmail`,`private`,`consumer`,`contact`],docPath:W(bj),billableOperations:Oj,defaultInputRequirement:Dj(null),inputFieldMode:`static`,outputFieldMode:`static`,defaultPayload:{pipe_id:bj,connector:null,run_if:null,config:{providers:Tj,input_fields:{profile_url:{alias:``}},output_fields:{personal_email:{alias:``,enabled:!0},alternate_personal_emails:{alias:``,enabled:!1}}}}},Mj=g(`profile_url`),Nj=g(`post_list_string`),Pj=g(`crustdata_post_list`),Fj=`person:posts:content:crustdata@1`,Ij=r.object({pipe_id:r.literal(Fj),run_if:b(),connector:C(),config:r.object({limit:Du({path:`config.limit`,groupPath:`config.general`,max:100,min:1,sectionKey:`general`,info:``,label:`Limit`,legend:`Max. 100`}),input_fields:F(r.object({[Mj.name]:w({fieldName:Mj.name})})),output_fields:P(r.object({[Nj.name]:D({fieldName:Nj.name}),[Pj.name]:D({fieldName:Pj.name})}))}).optional()}),Lj=e=>R(G(Mj,e)),Rj={"person-posts-crustdata-v1-crustdata":{allowManagedConnection:!0,credits:{default:2,level1:{credits:1,weight:1}},mode:`onSuccess`,note:`1.5 credits per post. Posts are fetched in increments of 5.`,provider:`crustdata`}},zj=class extends B{pipeId=Fj;payload;payloadSchema=Ij;billableOperations=Rj;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`person-posts-crustdata-v1-crustdata`)}getInputRequirement(){return Lj(this.payload.config)}getRawOutputFields(){return{[Nj.name]:this.catalogOutput(Nj),[Pj.name]:this.catalogOutput(Pj)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_realtime_post_fetch`,allowManagedConnection:!0}]}},Bj=Ij,Vj={pipeId:Fj,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Fj),label:`LinkedIn posts`,executionMode:`single`,categories:[`people_data`],lifecycle:null,description:`Find list of recent LinkedIn posts.`,tags:[V.LINKEDIN],keywords:[`activity`,`content`,`social`,`updates`,`engagement`,`feed`],docPath:W(Fj),billableOperations:Rj,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:Lj(null),defaultPayload:{pipe_id:Fj,connector:null,run_if:null,config:{limit:5,input_fields:{profile_url:{alias:``}},output_fields:{crustdata_post_list:{alias:``,enabled:!0},post_list_string:{alias:``,enabled:!0}}}}},Hj=`person:profile:waterfall@2`,Uj=g(`person_profile_match`),Wj=g(`primary_job_title`),Gj=g(`primary_seniority`),Kj=g(`primary_company_domain`),qj=g(`profile_url`),Jj=[`crustdata`,`amplemarket`,`prospeo`],Yj=[{provider:`crustdata`},{provider:`amplemarket`},{provider:`prospeo`}],Xj=r.object({pipe_id:r.literal(Hj),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:Jj,defaultProviders:Yj}),input_fields:F(r.object({[qj.name]:w({fieldName:qj.name})})),output_fields:P(r.object({[Uj.name]:D({fieldName:Uj.name}),[Wj.name]:D({fieldName:Wj.name}),[Gj.name]:D({fieldName:Gj.name}),[Kj.name]:D({fieldName:Kj.name})}))}).optional()}),Zj=e=>R(G(qj,e)),Qj={"person-profile-waterfall-v2-crustdata":{provider:`crustdata`,credits:{default:2,level1:{credits:1,weight:1}},mode:`onSuccess`,allowManagedConnection:!0},"person-profile-waterfall-v2-amplemarket":{provider:`amplemarket`,credits:{default:1,level1:{credits:.5,weight:1}},mode:`onSuccess`,allowManagedConnection:!0},"person-profile-waterfall-v2-prospeo":{provider:`prospeo`,credits:{default:1,level1:{credits:.5,weight:1}},mode:`onSuccess`,allowManagedConnection:!0}},$j=class extends B{pipeId=Hj;payload;payloadSchema=Xj;billableOperations=Qj;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return Zj(this.payload.config)}getRawOutputFields(){return{[Uj.name]:this.catalogOutput(Uj,{isPrimaryOutput:!0}),[Wj.name]:this.catalogOutput(Wj),[Gj.name]:this.catalogOutput(Gj),[Kj.name]:this.catalogOutput(Kj)}}getConnectionsRequirements(){let e={crustdata:`crustdata_realtime_person_enrich`,amplemarket:`amplemarket-person-reveal`,prospeo:`prospeo_social_profile_lookup`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},eM=Xj,tM={pipeId:Hj,basePipe:U(Hj),label:`Full LinkedIn profile`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find a standardized JSON representation of a LinkedIn profile.`,docPath:W(Hj),tags:[V.LINKEDIN,V.WATERFALL],keywords:[`enrich`,`enrichment`,`json`,`scrape`,`bio`,`experience`,`education`],managedProviders:Jj,deprecatedProviders:[],allowedUserConnectionProviders:Jj,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:Qj,defaultInputRequirement:Zj(null),defaultPayload:{pipe_id:Hj,run_if:null,connector:null,config:{providers:Yj,input_fields:{profile_url:{alias:``}},output_fields:{person_profile_match:{alias:``,enabled:!0},primary_job_title:{alias:``,enabled:!0},primary_seniority:{alias:``,enabled:!0},primary_company_domain:{alias:``,enabled:!0}}}}},nM=g(`work_email`),rM=g(`crustdata_person_match`),iM=g(`crustdata_profile_match_score`),aM=`person:profile:workemail:crustdata@1`,oM=r.object({pipe_id:r.literal(aM),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[nM.name]:w({fieldName:nM.name})})),output_fields:P(r.object({[rM.name]:D({fieldName:rM.name}),[iM.name]:D({fieldName:iM.name})}))}).optional()}),sM=e=>R(G(nM,e)),cM={"person-profile-workemail-crustdata-v1-crustdata":{allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`,provider:`crustdata`}},lM=class extends B{pipeId=aM;payload;payloadSchema=oM;billableOperations=cM;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`person-profile-workemail-crustdata-v1-crustdata`)}getInputRequirement(){return sM(this.payload.config)}getRawOutputFields(){return{[rM.name]:this.catalogOutput(rM),[iM.name]:this.catalogOutput(iM)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_realtime_person_enrich`,allowManagedConnection:!0}]}},uM=oM,dM={pipeId:aM,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(aM),label:`Profile from work email`,executionMode:`single`,categories:[`people_data`],lifecycle:null,description:`Find person profile by their work email address.`,tags:[V.EMAIL,V.PEOPLE_PROFILES],keywords:[`enrich`,`enrichment`,`reverse lookup`,`linkedin`,`person`],docPath:W(aM),billableOperations:cM,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:sM(null),defaultPayload:{pipe_id:aM,connector:null,run_if:null,config:{input_fields:{work_email:{alias:``}},output_fields:{crustdata_person_match:{alias:``,enabled:!0},crustdata_profile_match_score:{alias:``,enabled:!0}}}}},fM=`person:profileurl:email:waterfall@1`,pM=g(`email`),mM=g(`work_email`),hM=g(`profile_url`),gM=[`leadmagic`],_M=[{provider:`leadmagic`}],vM=r.object({pipe_id:r.literal(fM),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:_M,availableProviders:gM}),input_fields:F(r.object({[pM.name]:w({fieldName:pM.name}),[mM.name]:w({fieldName:mM.name})})),output_fields:P(r.object({[hM.name]:D({fieldName:hM.name})}))}).optional()}),yM=e=>_d(G(pM,e),G(mM,e)),bM={"person-profileurl-email-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:3.5},mode:`onSuccess`}},xM=class extends B{pipeId=fM;payload;payloadSchema=vM;billableOperations=bM;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return yM(this.payload.config)}getRawOutputFields(){return{[hM.name]:this.catalogOutput(hM,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_to_b2b_profile`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},SM=vM,CM={pipeId:fM,basePipe:U(fM),managedProviders:gM,deprecatedProviders:[],allowedUserConnectionProviders:gM,label:`LinkedIn URL from email`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find the URL for a prospect's LinkedIn profile from their personal or professional email address.`,guide:`Reverse email → LinkedIn profile URL, nothing else. Unless the user specifically asks for a URL-only lookup, FAVOR person:identity:email:waterfall@2: same email input, also resolves profile_url, plus the full standardized person_profile_match JSON profile (employment and education history, seniority, location) in one call — the richer grounding almost every downstream flow (profile enrichment, CRM match) needs anyway. Reach for THIS pipe when the profile URL is genuinely the only thing wanted.`,tags:[V.LINKEDIN],keywords:[`profile`,`reverse lookup`,`social`,`person`],docPath:W(fM),billableOperations:bM,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:yM(null),defaultPayload:{pipe_id:fM,run_if:null,connector:null,config:{providers:_M,input_fields:{email:{alias:``},work_email:{alias:``}},output_fields:{profile_url:{alias:``,enabled:!0}}}}},wM=`person:profileurl:name@1`,TM=g(`name`),EM=g(`company_name`),DM=g(`location_hint`),OM=g(`profile_url`),kM=r.object({pipe_id:r.literal(wM),connector:Jl(),run_if:b(),config:r.object({input_fields:F(r.object({[TM.name]:w({fieldName:TM.name}),[EM.name]:w({fieldName:EM.name}),[DM.name]:w({fieldName:DM.name})})),output_fields:P(r.object({[OM.name]:D({fieldName:OM.name})}))}).optional()}),AM=e=>z(R(G(TM,e)),R(G(EM,e)),vd(G(DM,e))),jM={"person-profileurl-name-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:.6},mode:`always`}},MM=class extends B{pipeId=wM;payload;payloadSchema=kM;billableOperations=jM;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`person-profileurl-name-v1-pipe0`)}getInputRequirement(){return AM(this.payload.config)}getRawOutputFields(){return{[OM.name]:this.catalogOutput(OM)}}getConnectionsRequirements(){return[{provider:`serper`,rateLimitRatio:1,rateLimitOperation:`serper_search`,allowManagedConnection:!0}]}},NM=kM,PM={pipeId:wM,basePipe:U(wM),label:`LinkedIn URL from name`,executionMode:`single`,categories:[`people_data`],lifecycle:null,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],description:`Find the LinkedIn profile URL by using the prospect's name as input.`,docPath:W(wM),tags:[V.LINKEDIN],keywords:[`profile`,`social`,`lookup`,`person`],billableOperations:jM,defaultInputRequirement:AM(null),inputFieldMode:`static`,outputFieldMode:`static`,defaultPayload:{pipe_id:wM,connector:void 0,run_if:null,config:{input_fields:{company_name:{alias:``},location_hint:{alias:``},name:{alias:``}},output_fields:{profile_url:{alias:``,enabled:!0}}}}},FM=`person:workemail:profileurl:waterfall@1`,IM=g(`profile_url`),LM=g(`work_email`),RM=g(`email_validation_status`),zM=[`hunter`,`amplemarket`,`findymail`,`leadmagic`,`crustdata`],BM=[{provider:`hunter`},{provider:`amplemarket`},{provider:`leadmagic`},{provider:`findymail`},{provider:`crustdata`}],VM=r.object({pipe_id:r.literal(FM),connector:C(),run_if:b(),config:r.object({providers:T({availableProviders:zM,defaultProviders:BM,sectionKey:`general`}),allow_catch_all_emails:E({path:`config.allow_catch_all_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,info:``,label:`Allow catch-all emails`}),allow_risky_emails:E({path:`config.allow_risky_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,info:`Higher chance of bouncing or being marked as spam.`,label:`Allow risky emails`}),input_fields:F(r.object({[IM.name]:w({fieldName:IM.name})})),output_fields:P(r.object({[LM.name]:D({fieldName:LM.name}),[RM.name]:D({fieldName:RM.name})}))}).optional()}),HM=e=>R(G(IM,e)),UM={"person-workemail-profileurl-waterfall-v1-hunter":{provider:`hunter`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`},"person-workemail-profileurl-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2,level1:{credits:.7,weight:1}},mode:`onSuccess`},"person-workemail-profileurl-waterfall-v1-findymail":{provider:`findymail`,allowManagedConnection:!0,credits:{default:2,level1:{credits:1,weight:1}},mode:`onSuccess`},"person-workemail-profileurl-waterfall-v1-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:3,level1:{credits:2,weight:1}},mode:`onSuccess`},"person-workemail-profileurl-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:2.5,level1:{credits:1.5,weight:1}},mode:`onSuccess`}},WM=class extends B{pipeId=FM;payload;payloadSchema=VM;billableOperations=UM;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return HM(this.payload.config)}getRawOutputFields(){return{[LM.name]:this.catalogOutput(LM,{isPrimaryOutput:!0}),[RM.name]:this.catalogOutput(RM,{isPrimaryOutput:!1})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_b2b_lookup`,hunter:`prospeo_email_lookup`,amplemarket:`amplemarket-person-reveal`,findymail:`findymail_email_b2b_lookup`,crustdata:`crustdata_realtime_person_enrich`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},GM=VM,KM={pipeId:FM,basePipe:U(FM),label:`Work email from LinkedIn URL`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find work email addresses from B2B profile.`,tags:[V.EMAIL,V.WORK_EMAIL,V.WATERFALL],keywords:[`business email`,`b2b`,`corporate`,`contact`],docPath:W(FM),managedProviders:zM,allowedUserConnectionProviders:zM,deprecatedProviders:[],inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:UM,defaultInputRequirement:HM(null),defaultPayload:{pipe_id:FM,connector:null,run_if:null,config:{providers:BM,allow_catch_all_emails:!0,allow_risky_emails:!0,input_fields:{profile_url:{alias:``}},output_fields:{work_email:{alias:``,enabled:!0},email_validation_status:{alias:``,enabled:!1}}}}},qM=`person:workemail:waterfall@1`,JM=g(`name`),YM=g(`company_domain`),XM=g(`company_name`),ZM=g(`work_email`),QM=g(`email_validation_status`),$M=[`leadmagic`,`prospeo`,`amplemarket`,`hunter`,`icypeas`,`findymail`],eN=[`icypeas`],tN=[{provider:`leadmagic`},{provider:`prospeo`},{provider:`amplemarket`},{provider:`hunter`},{provider:`findymail`}],nN={"person-workemail-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:.5,level1:{credits:.25,weight:1}},mode:`onSuccess`},"person-workemail-waterfall-v1-icypeas":{provider:`icypeas`,allowManagedConnection:!0,credits:{default:.5,level1:{credits:.25,weight:1}},mode:`onSuccess`},"person-workemail-waterfall-v1-prospeo":{provider:`prospeo`,allowManagedConnection:!0,credits:{default:1,level1:{credits:.5,weight:1}},mode:`onSuccess`},"person-workemail-waterfall-v1-findymail":{provider:`findymail`,allowManagedConnection:!0,credits:{default:1.5,level1:{credits:.75,weight:1}},mode:`onSuccess`},"person-workemail-waterfall-v1-hunter":{provider:`hunter`,allowManagedConnection:!0,credits:{default:1.3,level1:{credits:.75,weight:1}},mode:`onSuccess`},"person-workemail-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:3,level1:{credits:2,weight:1}},mode:`onSuccess`}},rN=r.object({pipe_id:r.literal(qM),connector:C(),run_if:b(),config:r.object({providers:T({availableProviders:$M,defaultProviders:tN,deprecatedProviders:eN,sectionKey:`general`,providerCredits:Dd(nN,$M)}),allow_catch_all_emails:E({path:`config.allow_catch_all_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,info:`Catch-alls appear valid but remain undeliverable-risk.`,label:`Allow catch-all emails`}),allow_risky_emails:E({path:`config.allow_risky_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,info:`DNS configuration and spam reputation may flag emails as high-risk.`,label:`Allow risky emails`}),input_fields:F(r.object({[JM.name]:w({fieldName:JM.name}),[YM.name]:w({fieldName:YM.name}),[XM.name]:w({fieldName:XM.name})})),output_fields:P(r.object({[ZM.name]:D({fieldName:ZM.name}),[QM.name]:D({fieldName:QM.name})}))}).optional()}),iN=e=>z(R(G(JM,e)),R(G(YM,e))),aN=class extends B{pipeId=qM;payload;payloadSchema=rN;billableOperations=nN;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return iN(this.payload.config)}getRawOutputFields(){return{[ZM.name]:this.catalogOutput(ZM,{isPrimaryOutput:!0}),[QM.name]:this.catalogOutput(QM,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,prospeo:`prospeo_email_lookup`,icypeas:`icypeas_email_lookup`,findymail:`findymail_email_lookup`,hunter:`hunter_email_finder`,amplemarket:`amplemarket-person-reveal`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},oN=rN,sN={pipeId:qM,basePipe:U(qM),label:`Work email from name`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find work email addresses in a waterfall motion.`,tags:[V.EMAIL,V.WORK_EMAIL,V.WATERFALL],keywords:[`business email`,`b2b`,`corporate`,`contact`],docPath:W(qM),managedProviders:$M,deprecatedProviders:eN,allowedUserConnectionProviders:$M,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:nN,defaultInputRequirement:iN(null),defaultPayload:{pipe_id:qM,connector:null,run_if:null,config:{providers:tN,allow_catch_all_emails:!0,allow_risky_emails:!0,input_fields:{company_name:{alias:``},company_domain:{alias:``},name:{alias:``}},output_fields:{work_email:{alias:``,enabled:!0},email_validation_status:{alias:``,enabled:!1}}}}},cN=`prompt:run@1`,lN=`prompt-run-v1`,uN=Zc(lN),dN=r.object({pipe_id:r.literal(cN),connector:C(),run_if:b(),config:r.object({prompt:Gl({sectionKey:`general`,path:`config.prompt`,placeholder:J(`prompt`),groupPath:`config.prompt`,supportedTags:[`input`,`output`]}),model:Tu({sectionKey:`general`,label:`Model`,path:`config.model`,groupPath:`config.prompt`,billableOperations:uN,defaultValue:Vc})})}),fN=class extends B{pipeId=cN;payload;payloadSchema=dN;billableOperations=uN;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return Wc(this.payload.config.model)}estimateBillableOperations(e){return $c(e,{model:this.payload.config.model,prefix:lN,inputTokens:600,outputTokens:800})}getInputRequirement(){return tp([this.payload.config.prompt.template])}getSecretRequirements(){return q([this.payload.config.prompt.template])}getConstantRequirements(){return np([this.payload.config.prompt.template])}getRawOutputFields(){let e=this.payload.config.prompt.template,t=this.payload.config.prompt.json_schemas??{},n={},r;try{r=tc(e)}catch{return n}for(let e of r.outputs){let r=e.type;if(r===`json`){let i=e.schemaRef?t[e.schemaRef]:void 0;n[e.name]={enabled:!0,name:e.name,label:e.name,resolvedName:e.name,type:r,description:e.description,jsonMeta:{zodSchema:i,exampleValue:null},format:null,isCatalogFIeld:!1,isPrimaryOutput:!1}}else n[e.name]={enabled:!0,name:e.name,label:e.name,resolvedName:e.name,type:r,description:e.description,jsonMeta:null,format:e.format??null,isCatalogFIeld:!1,isPrimaryOutput:!1}}return n}getConnectionsRequirements(){return Gc(this.payload.config.model)}},pN=dN,mN={pipeId:cN,inputFieldMode:`config`,outputFieldMode:`config`,basePipe:U(cN),label:`AI prompt`,executionMode:`single`,categories:[`actions`,`tools`],lifecycle:null,description:`Executes configurable AI prompts with structured output fields.`,guide:`General-purpose AI prompt runner. Inputs and outputs are fully dynamic — defined by the tags in the prompt template. For extracting a value from a JSON / known-schema field, do NOT use this — use the deterministic json:extract:multi@1 (JSONata) instead: it's cheaper, reproducible, and runs on a schedule with no model. Reserve prompt:run@1 for genuine judgment or free-text generation (classify, summarize, rewrite).`,tags:[V.AI],keywords:[`llm`,`gpt`,`chatgpt`,`openai`,`generate`,`classify`,`extract`],docPath:W(cN),defaultInputRequirement:null,billableOperations:uN,allowedUserConnectionProviders:Kc(),managedProviders:Kc(),deprecatedProviders:[],defaultPayload:{pipe_id:cN,connector:null,run_if:null,config:{model:Vc,prompt:{template:``,json_schemas:{}}}}},hN=g(`salesforce_record_id`),gN=g(`salesforce_record_created`),_N=g(`salesforce_record_match`),vN=`record:assert:salesforce@1`,yN=r.object({pipe_id:r.literal(vN),run_if:b(),connector:S(),config:r.object({object:Au({sectionKey:`general`,required:!0,label:`Object`,groupPath:`config.general`,path:`config.object`,info:`Standard and custom objects the connected user can create/update.`,enabledIf:_(`salesforce`),optionsDef:Wd({updateableOnly:!0})}),external_id_field:Au({sectionKey:`general`,required:!0,label:`External ID field`,groupPath:`config.general`,path:`config.external_id_field`,info:`The object's External-ID field anchoring the upsert (fields marked External ID in Setup). If the picker is empty, the object has none — create one in Setup; it is the ecosystem-standard idempotency anchor.`,enabledIf:_(`salesforce`),optionsDef:Gd}),external_id_value:x({sectionKey:`general`,label:`External ID value`,inputType:`text`,expectedTagType:`string`,expectedTagFormat:`text`,groupPath:`config.general`,path:`config.external_id_value`,placeholder:`{{ company_domain }}`,info:"The value to match/create on — a literal or a `{{ column }}` reference."}),values:gu({sectionKey:`general`,groupPath:`config.general`,path:`config.values`,label:`Field values`,info:`Field = the Salesforce API name. Include every field required at create (e.g. Name on Account, LastName+Company on Lead) — a create with missing required fields fails and names them. Blank values are skipped, never cleared.`,keyLabel:`Field API name`,valueLabel:`Value`,keyPlaceholder:`Name`,valuePlaceholder:`{{ company_name }}`,maxKeys:50}),bypass_duplicate_alerts:E({sectionKey:`general`,defaultValue:!1,label:`Bypass duplicate alerts`,groupPath:`config.general`,path:`config.bypass_duplicate_alerts`,info:`Acknowledge ALERT-mode duplicate rules and save anyway. BLOCK-mode rules can never be bypassed — those errors list the matching records.`}),output_fields:P(r.object({[hN.name]:D({fieldName:hN.name}),[gN.name]:D({fieldName:gN.name}),[_N.name]:D({fieldName:_N.name})}))}).check(e=>{let t=e.value;for(let n of Object.keys(t.values??{})){let t=n.trim();if(!t)continue;let r=t=>e.issues.push({code:`custom`,input:n,message:t,path:[`values`,n]});if(t.includes(`{{`)){r("Field name must be a literal API name (no `{{ }}` templating).");continue}if(t.includes(`.`)){r(`Invalid field name "${t}" — dotted paths cannot be written; set the lookup ID field (e.g. AccountId) instead.`);continue}/^[a-zA-Z][a-zA-Z0-9_]*$/.test(t)||r(`Invalid Salesforce field name "${t}" — API names are letters, digits, and underscores (custom fields end in __c).`)}})}),bN={"record-assert-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},xN=class extends B{pipeId=vN;payload;payloadSchema=yN;billableOperations=bN;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`salesforce`]}estimateBillableOperations(e){return H(e,`record-assert-salesforce-v1-salesforce`)}getTemplates(){return[this.payload.config.external_id_value,...Object.values(this.payload.config.values??{})].filter(e=>!!e)}getInputRequirement(){return z(...ef(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[hN.name]:this.catalogOutput(hN),[gN.name]:this.catalogOutput(gN),[_N.name]:this.catalogOutput(_N)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return tf(e,{objects:[$d(this.payload.config.object)||`Account`],writableOnly:!0})}},SN=yN,CN={pipeId:vN,inputFieldMode:`config`,outputFieldMode:`static`,basePipe:U(vN),label:`Salesforce assert record`,executionMode:`single`,categories:[`actions`,`integrations`],lifecycle:null,description:"Create-or-update (upsert) a Salesforce record anchored on an External ID field — Salesforce's native idempotent write. One matching record updates, none creates; `created` says which happened.",tags:[V.FIELDS],keywords:[`crm`,`sfdc`,`upsert`,`create`,`write`,`sync`,`idempotent`],docPath:W(vN),guide:"The upsert is anchored on the External-ID field: no match creates, one match updates, MULTIPLE matches fail with the record IDs and write nothing (resolve duplicates or use record:update). On the create path Salesforce enforces required fields (the error names them) and duplicate rules may block the save (`bypass_duplicate_alerts` acknowledges ALERT-mode rules only). Call get_provider_context for the object's writable fields; blanks skip, never clear. `salesforce_record_created` = true means a new record — the fresh record rides the output JSON.",billableOperations:bN,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:z(),defaultPayload:{pipe_id:vN,connector:{strategy:`first`,connections:[]},run_if:null,config:{object:`Account`,external_id_field:``,external_id_value:`{{ company_domain }}`,values:{},bypass_duplicate_alerts:!1,output_fields:{salesforce_record_id:{alias:``,enabled:!0},salesforce_record_created:{alias:``,enabled:!0},salesforce_record_match:{alias:``,enabled:!0}}}}},wN=g(`attio_record_id`),TN=g(`attio_record_found`),EN=g(`attio_record_match`),DN=`record:lookup:attio@1`,ON=r.object({pipe_id:r.literal(DN),run_if:b(),connector:S(),config:r.object({object:Au({sectionKey:`general`,required:!0,label:`Object`,groupPath:`config.general`,path:`config.object`,info:`Standard objects plus this workspace's custom objects — all objects work.`,enabledIf:_(`attio`),optionsDef:Sf}),input_fields:F(r.object({[wN.name]:w({fieldName:wN.name})})),output_fields:P(r.object({[TN.name]:D({fieldName:TN.name}),[EN.name]:D({fieldName:EN.name})}))})}),kN=e=>R(G(wN,e)),AN={"record-lookup-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},jN=class extends B{pipeId=DN;payload;payloadSchema=ON;billableOperations=AN;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`record-lookup-attio-v1-attio`)}getInputRequirement(){return kN(this.payload.config)}getRawOutputFields(){return{[TN.name]:this.catalogOutput(TN),[EN.name]:this.catalogOutput(EN)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_generic`,allowManagedConnection:!1}]}async getAgentContext(e){let t=this.payload.config.object,n=Array.isArray(t)?t[0]??``:t;return Mf(e,{objects:n?[n]:`discover`})}},MN=ON,NN={pipeId:DN,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(DN),label:`Attio lookup record`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Fetch one Attio record of any object (custom objects included) by its record ID — the full record with every attribute. A missing record completes with found = false.`,tags:[V.NEW],keywords:[`crm`,`get`,`fetch`,`by id`,`custom object`,`read`],docPath:W(DN),guide:"Map the record's Attio ID into the `attio_record_id` input — typically chained from a match pipe or search that outputs it. The output JSON carries ALL of the record's attribute values under `values` (id and deep-link url beside them) — extract specific attributes with json:extract downstream. found = false is a successful result. Works on every object in the workspace, custom objects included.",billableOperations:AN,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:kN(null),defaultPayload:{pipe_id:DN,connector:{strategy:`first`,connections:[]},run_if:null,config:{object:`people`,input_fields:{attio_record_id:{alias:``}},output_fields:{attio_record_found:{alias:``,enabled:!0},attio_record_match:{alias:``,enabled:!0}}}}},PN=g(`salesforce_record_id`),FN=g(`salesforce_record_found`),IN=g(`salesforce_record_match`),LN=`record:lookup:salesforce@1`,RN=r.object({pipe_id:r.literal(LN),run_if:b(),connector:S(),config:r.object({object:Au({sectionKey:`general`,required:!0,label:`Object`,groupPath:`config.general`,path:`config.object`,info:`Standard and custom objects the connected user can query.`,enabledIf:_(`salesforce`),optionsDef:Wd()}),input_fields:F(r.object({[PN.name]:w({fieldName:PN.name})})),output_fields:P(r.object({[FN.name]:D({fieldName:FN.name}),[IN.name]:D({fieldName:IN.name})}))})}),zN=e=>R(G(PN,e)),BN={"record-lookup-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},VN=class extends B{pipeId=LN;payload;payloadSchema=RN;billableOperations=BN;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`salesforce`]}estimateBillableOperations(e){return H(e,`record-lookup-salesforce-v1-salesforce`)}getInputRequirement(){return zN(this.payload.config)}getRawOutputFields(){return{[FN.name]:this.catalogOutput(FN),[IN.name]:this.catalogOutput(IN)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return tf(e,{objects:[$d(this.payload.config.object)||`Contact`]})}},HN=RN,UN={pipeId:LN,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(LN),label:`Salesforce record lookup`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Fetch a full Salesforce record (any standard or custom object) by its record ID — every field visible to the connected user. A deleted or missing record completes with found = false.`,tags:[V.FIELDS],keywords:[`crm`,`sfdc`,`read`,`fetch`,`get`,`record`,`custom object`],docPath:W(LN),guide:"The record-ID input consumes `salesforce_record_id`, which every Salesforce surface emits — chain from a match pipe or search (alias it to point at a differently named column). Returns ALL fields the connected user can see, nested under `record` in the output JSON — fields hidden by field-level security are silently absent. found = false (deleted/missing id) is a successful result.",billableOperations:BN,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:zN(null),defaultPayload:{pipe_id:LN,connector:{strategy:`first`,connections:[]},run_if:null,config:{object:`Contact`,input_fields:{salesforce_record_id:{alias:``}},output_fields:{salesforce_record_found:{alias:``,enabled:!0},salesforce_record_match:{alias:``,enabled:!0}}}}},WN=g(`attio_record_found`),GN=g(`attio_record_id`),KN=g(`attio_record_match`),qN=`record:match:attio@1`,JN=r.object({pipe_id:r.literal(qN),run_if:b(),connector:S(),config:r.object({object:Au({sectionKey:`general`,required:!0,label:`Object`,groupPath:`config.general`,path:`config.object`,info:`Standard objects plus this workspace's custom objects — all objects work.`,enabledIf:_(`attio`),optionsDef:Sf}),matching_attribute:Au({sectionKey:`general`,required:!0,label:`Matching attribute`,groupPath:`config.general`,path:`config.matching_attribute`,info:`The object's UNIQUE attributes — one value maps to at most one record. Deals have none by default (find them via deal:match instead); custom objects list their own unique attributes.`,enabledIf:_(`attio`),optionsDef:kf(`object`)}),value:x({sectionKey:`general`,label:`Value`,inputType:`text`,expectedTagType:`string`,expectedTagFormat:`text`,groupPath:`config.general`,path:`config.value`,placeholder:`{{ serial_number }}`,info:"The value to match — a literal or a `{{ column }}` reference. Matched exactly against the unique attribute."}),output_fields:P(r.object({[WN.name]:D({fieldName:WN.name}),[GN.name]:D({fieldName:GN.name}),[KN.name]:D({fieldName:KN.name})}))})}),YN=e=>{let t=new Set;for(let n of e)if(n)try{let e=tc(n);for(let n of Object.keys(e.inputs))t.add(n)}catch{}return[...t].map(e=>vd({name:e,resolvedName:e,label:e,description:``,type:t=>Rd(t,e)?.type||`string`,format:`text`}))},XN={"record-match-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},ZN=class extends B{pipeId=qN;payload;payloadSchema=JN;billableOperations=XN;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`record-match-attio-v1-attio`)}getTemplates(){return[this.payload.config.value].filter(e=>!!e)}getInputRequirement(){return z(...YN(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[WN.name]:this.catalogOutput(WN),[GN.name]:this.catalogOutput(GN),[KN.name]:this.catalogOutput(KN)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_query`,allowManagedConnection:!1}]}async getAgentContext(e){let t=this.payload.config.object,n=Array.isArray(t)?t[0]??``:t;return Mf(e,{objects:n?[n]:`discover`})}},QN=JN,$N={pipeId:qN,inputFieldMode:`config`,outputFieldMode:`static`,basePipe:U(qN),label:`Attio match record`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Find one record of ANY Attio object (custom objects included) by a unique attribute — the generic find-by-key. A clean miss completes with found = false.`,tags:[V.NEW],keywords:[`crm`,`find`,`exists`,`unique`,`key`,`custom object`,`dedupe`],docPath:W(qN),guide:`Call get_provider_context first — it lists each object's unique attributes (the legal match targets). For people/companies prefer the typed person:match/company:match pipes (identity defaults + richer envelopes); use this for custom objects, users/workspaces, or custom unique attributes. Matching is exact; found = false is a successful result. Chain attio_record_id into record:update:attio@1.`,billableOperations:XN,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:z(),defaultPayload:{pipe_id:qN,connector:{strategy:`first`,connections:[]},run_if:null,config:{object:`people`,matching_attribute:`email_addresses`,value:`{{ email }}`,output_fields:{attio_record_found:{alias:``,enabled:!0},attio_record_id:{alias:``,enabled:!0},attio_record_match:{alias:``,enabled:!0}}}}},eP=g(`attio_record_id`),tP=g(`attio_update_result`),nP=`record:update:attio@1`,rP=r.object({pipe_id:r.literal(nP),run_if:b(),connector:S(),config:r.object({object:Au({sectionKey:`general`,required:!0,label:`Object`,groupPath:`config.general`,path:`config.object`,info:`Standard objects plus this workspace's custom objects — all objects work.`,enabledIf:_(`attio`),optionsDef:Sf}),input_fields:F(r.object({[eP.name]:w({fieldName:eP.name})})),values:gu({sectionKey:`general`,groupPath:`config.general`,path:`config.values`,label:`Attribute values`,info:"Attribute = the Attio api_slug (e.g. `job_title`, custom attributes too). In the Value column, type `/` to insert a field reference. Select/status values are matched by TITLE (workspace-defined, never auto-created). Leave a value empty to skip that attribute for the row — blank values are skipped, never cleared.",keyLabel:`Attribute slug`,valueLabel:`Value`,keyPlaceholder:`job_title`,valuePlaceholder:`{{ job_title }}`,maxKeys:50}),multiselect_mode:wu({sectionKey:`general`,required:!1,label:`Multiselect values`,groupPath:`config.general`,path:`config.multiselect_mode`,description:`Only affects multiselect attributes (e.g. domains, email_addresses, multi-selects): append adds the written value to the existing ones; overwrite replaces the full list.`,options:[{label:`Append`,value:`append`},{label:`Overwrite`,value:`overwrite`}]}).default(`append`),output_fields:P(r.object({[tP.name]:D({fieldName:tP.name})}))}).check(e=>{let t=e.value;for(let n of Object.keys(t.values??{})){let t=n.trim();if(!t)continue;let r=t=>e.issues.push({code:`custom`,input:n,message:t,path:[`values`,n]});if(t.includes(`{{`)){r("Attribute slug must be a literal api_slug (no `{{ }}` templating).");continue}/^[a-z][a-z0-9_]*$/.test(t)||r(`Invalid Attio attribute slug "${t}" — api_slugs are lowercase letters, digits, and underscores.`)}})}),iP=e=>{let t=new Set;for(let n of e)if(n)try{let e=tc(n);for(let n of Object.keys(e.inputs))t.add(n)}catch{}return[...t].map(e=>vd({name:e,resolvedName:e,label:e,description:``,type:t=>Rd(t,e)?.type||`string`,format:`text`}))},aP=e=>R(G(eP,e)),oP={"record-update-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},sP=class extends B{pipeId=nP;payload;payloadSchema=rP;billableOperations=oP;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`record-update-attio-v1-attio`)}getTemplates(){return Object.values(this.payload.config.values??{}).filter(e=>!!e)}getInputRequirement(){return z(aP(this.payload.config),...iP(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[tP.name]:this.catalogOutput(tP)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_write`,allowManagedConnection:!1}]}async getAgentContext(e){let t=this.payload.config.object,n=Array.isArray(t)?t[0]??``:t;return Mf(e,{objects:n?[n]:`discover`,writableOnly:!0})}},cP=rP,lP={pipeId:nP,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(nP),label:`Attio update record`,executionMode:`single`,categories:[`actions`,`integrations`],lifecycle:null,description:`Update an Attio record (standard or custom object) by its record ID, mapping columns to attributes. Blank values are skipped so un-enriched cells never erase CRM data.`,tags:[V.FIELDS],keywords:[`crm`,`write`,`sync`,`record`,`attribute`,`custom object`],docPath:W(nP),guide:"Resolve the record ID first (person:match/company:match/record:match → Update by ID is the canonical recipe) and map it into the `attio_record_id` input. Call get_provider_context for the selected object to see WRITABLE attributes and select/status titles — Attio rejects read-only (enriched) attributes and unknown option titles (workspace-defined, never auto-created). Value coercion is permissive: select/status by title, domains/emails as plain strings, workspace-member emails for actor references, record IDs for record references. 'Append vs overwrite' only affects multiselect attributes. Blank values are skipped, not cleared.",billableOperations:oP,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:aP(null),defaultPayload:{pipe_id:nP,connector:{strategy:`first`,connections:[]},run_if:null,config:{object:`people`,input_fields:{attio_record_id:{alias:``}},values:{},multiselect_mode:`append`,output_fields:{attio_update_result:{alias:``,enabled:!0}}}}},uP=g(`salesforce_record_id`),dP=g(`salesforce_update_result`),fP=`record:update:salesforce@1`,pP=(e,t)=>{let n=e.value;for(let r of Object.keys(n[t]??{})){let n=r.trim();if(!n)continue;let i=n=>e.issues.push({code:`custom`,input:r,message:n,path:[t,r]});if(n.includes(`{{`)){i("Field name must be a literal API name (no `{{ }}` templating).");continue}if(n.includes(`.`)){i(`Invalid field name "${n}" — dotted paths cannot be written; set the lookup ID field (e.g. AccountId) instead.`);continue}/^[a-zA-Z][a-zA-Z0-9_]*$/.test(n)||i(`Invalid Salesforce field name "${n}" — API names are letters, digits, and underscores (custom fields end in __c).`)}},mP=r.object({pipe_id:r.literal(fP),run_if:b(),connector:S(),config:r.object({object:Au({sectionKey:`general`,required:!0,label:`Object`,groupPath:`config.general`,path:`config.object`,info:`Standard and custom objects the connected user can update.`,enabledIf:_(`salesforce`),optionsDef:Wd({updateableOnly:!0})}),values:gu({sectionKey:`general`,groupPath:`config.general`,path:`config.values`,label:`Field values`,info:"Field = the Salesforce API name (`Title`, custom fields like `Lead_Score__c`). In the Value column, type `/` to insert a field reference. Blank values are skipped, never cleared. Restricted-picklist values must match existing entries exactly (case-sensitive); multi-select picklist writes REPLACE the whole set (semicolon-joined).",keyLabel:`Field API name`,valueLabel:`Value`,keyPlaceholder:`Title`,valuePlaceholder:`{{ job_title }}`,maxKeys:50}),bypass_duplicate_alerts:E({sectionKey:`general`,defaultValue:!1,label:`Bypass duplicate alerts`,groupPath:`config.general`,path:`config.bypass_duplicate_alerts`,info:`Acknowledge ALERT-mode duplicate rules and save anyway. BLOCK-mode rules can never be bypassed — those errors list the matching records.`}),input_fields:F(r.object({[uP.name]:w({fieldName:uP.name})})),output_fields:P(r.object({[dP.name]:D({fieldName:dP.name})}))}).check(e=>pP(e,`values`))}),hP=e=>R(G(uP,e)),gP={"record-update-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},_P=class extends B{pipeId=fP;payload;payloadSchema=mP;billableOperations=gP;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`salesforce`]}estimateBillableOperations(e){return H(e,`record-update-salesforce-v1-salesforce`)}getTemplates(){return Object.values(this.payload.config.values??{}).filter(e=>!!e)}getInputRequirement(){return z(hP(this.payload.config),...ef(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[dP.name]:this.catalogOutput(dP)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return tf(e,{objects:[$d(this.payload.config.object)||`Contact`],writableOnly:!0})}},vP=mP,yP={pipeId:fP,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(fP),label:`Salesforce update record`,executionMode:`single`,categories:[`actions`,`integrations`],lifecycle:null,description:`Update a Salesforce record (standard or custom object) by its record ID, mapping columns to fields. Blank values are skipped so un-enriched cells never erase CRM data; the output carries the fresh post-save record.`,tags:[V.FIELDS],keywords:[`crm`,`sfdc`,`write`,`sync`,`field`,`custom object`],docPath:W(fP),guide:"The record-ID input consumes `salesforce_record_id`, which every Salesforce surface emits — chain from a match pipe (alias it to point at a differently named column). Call get_provider_context for the object's WRITABLE fields and picklist values — formula fields are read-only, restricted-picklist values are validated before the write (case-sensitive), and converted leads are read-only entirely (update the contact via ConvertedContactId instead). Duplicate rules may block the save; the error includes the admin's message and the matching record IDs, and `bypass_duplicate_alerts` acknowledges ALERT-mode rules only. Rows where every value renders blank skip the API call. Consume post-write values from the result JSON's `record` — formulas and triggers may rewrite fields after save.",billableOperations:gP,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:hP(null),defaultPayload:{pipe_id:fP,connector:{strategy:`first`,connections:[]},run_if:null,config:{object:`Contact`,values:{},bypass_duplicate_alerts:!1,input_fields:{salesforce_record_id:{alias:``}},output_fields:{salesforce_update_result:{alias:``,enabled:!0}}}}},bP=[{label:`demo-leads`,value:`demo-leads`},{label:`demo-companies`,value:`demo-companies`},{label:`demo-contacts`,value:`demo-contacts`}],xP=[{label:`Demo project`,value:`demo-project`},{label:`Sales pipeline`,value:`sales-pipeline`}];function SP(e){let t=e?.config?.project;return typeof t==`string`&&t.length>0?t:void 0}function CP(e){if(!e||e.conditions.length===0)return null;let t=JSON.stringify({logic:e.logic,conditions:e.conditions.map(e=>[e.field_name,e.operator,e.value])}),n=2166136261;for(let e=0;e<t.length;e++)n^=t.charCodeAt(e),n=Math.imul(n,16777619)>>>0;return n.toString(16).padStart(8,`0`)}function wP(e,t,n){let r=e=>e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,40),i=`rr--${r(e)}--${r(t)}`;return n?`${i}--f-${r(n)}`:i}function TP(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}const EP={requires:{connection:`pipe0`},enabledIf:_(`pipe0`,`Select a pipe0 connection to see sheet suggestions`),options:async({query:e,client:t,environment:n})=>n===`sandbox`?bP:t?(await t.sheets.list({query:e})).map(e=>({label:e.slug,value:e.slug})):[],widgets:{provider_logo:{provider:`pipe0`}}},DP={requires:{connection:`pipe0`,fields:[`config.project`]},enabledIf:_(`pipe0`,`Select a pipe0 connection to see sheet suggestions`),options:async({query:e,client:t,environment:n,payload:r})=>n===`sandbox`?bP:t?(await t.sheets.list({query:e,projectSlug:SP(r)})).map(e=>({label:e.slug,value:e.slug})):[],widgets:{provider_logo:{provider:`pipe0`}}},OP={requires:{connection:`pipe0`},enabledIf:_(`pipe0`,`Select a pipe0 connection to see project suggestions`),options:async({query:e,client:t,environment:n})=>n===`sandbox`?xP:t?(await t.projects.list({query:e})).map(e=>({label:e.name&&e.name!==e.slug?`${e.name} (${e.slug})`:e.slug,value:e.slug})):[],widgets:{provider_logo:{provider:`pipe0`}}},kP=[{value:`email`,label:`email`,data:{type:`string`,format:`email`}},{value:`name`,label:`name`,data:{type:`string`}},{value:`company`,label:`company`,data:{type:`string`}}],AP={"demo-leads":kP,"demo-companies":[{value:`domain`,label:`domain`,data:{type:`string`,format:`website_url`}},{value:`company_name`,label:`company_name`,data:{type:`string`}}],"demo-contacts":kP},jP=e=>({requires:{connection:`pipe0`,fields:[e.sheetPath]},enabledIf:_(`pipe0`,`Select a pipe0 connection to see column suggestions`),options:async({payload:t,client:n,environment:r})=>{let i=TP(t,e.sheetPath);return typeof i!=`string`||!i.trim()||i.includes(`{{`)?[]:r===`sandbox`?AP[i.trim()]??kP:n?(await n.sheets.fields({slug:i.trim()})).filter(t=>(e.includeJson||t.type!==`json`)&&t.name.toLowerCase()!==`id`).map(e=>({value:e.name,label:e.name,data:{type:String(e.type),...e.format?{format:String(e.format)}:{}}})):[]},widgets:{provider_logo:{provider:`pipe0`}}}),MP=`row:append:sheet@1`,NP=g(`sheet_record_id`),PP=g(`created_sheet`),FP=r.object({pipe_id:r.literal(MP),connector:S(),run_if:b(),config:r.object({project:x({label:`Project`,info:"Project the destination sheet lives in (its org-unique slug). Pick an existing project or type a new slug — a new project is created when `allow_entity_creation` is on.",groupPath:`config.general`,sectionKey:`general`,inputType:`text`,path:`config.project`,minLength:3,expectedTagType:`string`,expectedTagFormat:`text`,optionsDef:OP}),sheet:x({label:`Sheet ID`,info:'The destination sheet\'s identifier (its slug — NOT the display name). Slugs are org-unique: pick an existing sheet to append into it, or type a NEW slug to create one — a generic slug (e.g. "results", "companies") is likely to match an unrelated existing sheet, so for a new sheet use a short descriptive slug plus a few random chars (e.g. "ceos-x7k2") that can\'t collide. Type `@` to insert a field reference / `$` for a secret.',groupPath:`config.general`,sectionKey:`general`,inputType:`text`,path:`config.sheet`,minLength:3,expectedTagType:`string`,expectedTagFormat:`text`,optionsDef:DP,enabledIf:e=>e.config?.project?{disabled:!1}:{disabled:!0,message:`Select a project first`}}),run_added_rows:E({defaultValue:!0,groupPath:`config.advanced`,path:`config.run_added_rows`,sectionKey:`general`,description:`Auto-run the destination sheet's pipes over the row this pipe appended. A bounded onward chain is fine (the destination's own write pipes cascade further); auto-run is suppressed only when the destination's write chain could loop back into a sheet on the path.`,label:`Run added rows`}),allow_entity_creation:E({label:`Allow creating missing entities`,description:`Create missing fields, sheets, and projects as needed (unknown fields become columns; a missing sheet or project is created).`,defaultValue:!0,groupPath:`config.advanced`,path:`config.allow_entity_creation`,sectionKey:`general`}),write_fields:ou({label:`Fields`,info:`All fields are written if empty. An entry's optional alias renames the destination column.`,groupPath:`config.general`,path:`config.write_fields`,sectionKey:`general`,disableSearch:!0}),output_fields:P(r.object({[NP.name]:D({fieldName:NP.name}),[PP.name]:D({fieldName:PP.name})}))})}).check(e=>{let t=e.value.config?.write_fields??[],n=t.map(e=>(e.alias?.trim()||e.field_name).toLowerCase());t.forEach((t,r)=>{let i=t.alias?.trim();i&&(fd(i)&&e.issues.push({code:`custom`,input:i,path:[`config`,`write_fields`,r,`alias`],message:`'${i}' is reserved and cannot be written to the destination sheet.`}),n.filter(e=>e===i.toLowerCase()).length>1&&e.issues.push({code:`custom`,input:i,path:[`config`,`write_fields`,r,`alias`],message:`'${i}' collides with another write_fields destination name.`}))})}),IP={"row-append-sheet-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},LP=class extends B{pipeId=MP;payload;payloadSchema=FP;billableOperations=IP;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`row-append-sheet-v1-pipe0`)}getInputRequirement(){let e=[tp([this.payload.config.project,this.payload.config.sheet],{expectedType:`string`,expectedFormat:`text`})];if(this.payload.config.write_fields?.length)for(let t of this.payload.config.write_fields)e.push(R({name:t.field_name,resolvedName:t.field_name,label:``,description:``,type:e=>{let n=Rd(e,t.field_name);if(!n)throw Error(`Unable to find field with name ${t.field_name}. But needed by prompt parser.`);return n.type||`unknown`},format:null}));return z(...e)}getSecretRequirements(){return q([this.payload.config.project,this.payload.config.sheet])}getConstantRequirements(){return np([this.payload.config.project,this.payload.config.sheet])}getRawOutputFields(){return{[NP.name]:this.catalogOutput(NP),[PP.name]:this.catalogOutput(PP)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_api_operation`,allowManagedConnection:!0}]}},RP=FP,zP={pipeId:MP,basePipe:U(MP),label:`Append row to sheet`,executionMode:`single`,categories:[`actions`,`tools`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:"Add rows to a pipe0 sheet in a given project. config.project and config.sheet may each be a literal slug or a `{{ field_name }}` tag.",guide:`Append records to another pipe0 sheet. config.project (REQUIRED) is the destination project's org-unique slug — when working inside a project, pass THAT project's slug (see CURRENT CONTEXT). config.sheet is the destination sheet's slug; both may be a \`{{ field }}\` tag for a per-row destination. config.write_fields is the destination's CONTRACT — list exactly the columns the destination consumes, and use an entry's optional alias to rename its destination column ({ field_name: "email", alias: "signup_email" } reads \`email\` from the source row and writes it as \`signup_email\`); EMPTY write_fields mirrors EVERY source column into the destination, which is almost never what a routing/handoff sheet wants. With allow_entity_creation on, a missing project/sheet (and unknown fields) are created; if the sheet slug already exists in a DIFFERENT project the rows fail. Destination slugs are ORG-UNIQUE, so config.sheet addresses a sheet across your whole org: an existing slug REUSES that sheet (appending into it) when it's in config.project, and FAILS when it lives elsewhere — so for a genuinely NEW sheet use a short descriptive slug plus 3-4 random alphanumeric chars (e.g. "ceos-x7k2") — you cannot see other projects' slugs, so only the random suffix makes a new slug collision-proof; set the display name afterwards (in-app via the name_workspace tool; via API with PATCH /v1/sheets/{sheet_id}). To explode a LIST field into MANY rows (denormalize a 1:N relationship), use row:expandappend:sheet@1 instead. To bulk-copy existing rows across sheets, prefer the rows:copy_to_sheet@1 effect. NON-IDEMPOTENT: each run appends again, so re-running duplicates rows (and you cannot undo rows written to another sheet) — dry-run the flow in sandbox first (env:change@1), and to retry after a partial failure adopt the succeeded cells (rows:adopt@1 with adopt_statuses:["completed"]) then rows:enrich@1. Requires a pipe0 connection (list_connections).`,docPath:W(MP),tags:[V.FIELDS],keywords:[`add`,`insert`,`write`,`push`,`export`],billableOperations:IP,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:MP,connector:{strategy:`first`,connections:[]},run_if:null,config:{project:``,sheet:``,run_added_rows:!0,allow_entity_creation:!0,write_fields:[],output_fields:{sheet_record_id:{alias:``,enabled:!0},created_sheet:{alias:``,enabled:!0}}}}},BP=`row:expandappend:sheet@1`,VP=g(`sheet_record_ids`),HP=g(`input_objects`),UP=`expanded_value`,WP=r.object({pipe_id:r.literal(BP),connector:S(),run_if:b(),config:r.object({project:x({label:`Project`,info:"Project the destination sheet lives in (its org-unique slug). Pick an existing project or type a new slug — a new project is created when `allow_entity_creation` is on.",groupPath:`config.general`,sectionKey:`general`,inputType:`text`,path:`config.project`,minLength:3,expectedTagType:`string`,expectedTagFormat:`text`,optionsDef:OP}),sheet:x({label:`Sheet ID`,info:`The destination sheet's identifier (its slug — NOT the display name). Slugs are org-unique: pick an existing sheet to write into it, or type a NEW slug to create one. A generic slug (e.g. "results", "companies") is likely to match an unrelated existing sheet, so for a new sheet use a short descriptive slug plus a few random chars (e.g. "ceos-x7k2") that can't collide.`,groupPath:`config.general`,sectionKey:`general`,inputType:`text`,path:`config.sheet`,minLength:3,expectedTagType:`string`,expectedTagFormat:`text`,optionsDef:DP,enabledIf:e=>e.config?.project?{disabled:!1}:{disabled:!0,message:`Select a project first`}}),run_added_rows:E({defaultValue:!0,groupPath:`config.general`,path:`config.run_added_rows`,sectionKey:`general`,info:`Auto-run the destination sheet's pipes over the rows this pipe appended. A bounded onward chain is fine (the destination's own write pipes cascade further); auto-run is suppressed only when the destination's write chain could loop back into a sheet on the path.`,label:`Run added rows`}),write_fields:ou({label:`Fields`,info:`Source-row fields written onto every exploded row alongside the item (e.g. a join key like user_id). An entry's optional alias renames the destination column. Unlike row:append:sheet@1, empty writes NO source columns.`,groupPath:`config.general`,path:`config.write_fields`,sectionKey:`general`,disableSearch:!0}),allow_entity_creation:E({label:`Allow creating missing entities`,description:`Create missing entities as needed (a missing sheet or project is created, along with the output column on the destination).`,defaultValue:!0,groupPath:`config.advanced`,path:`config.allow_entity_creation`,sectionKey:`general`}),...xu({groupPath:`config.destination`,sectionKey:`general`,defaultName:UP,nameInfo:`Name of the field each list item is written to on the destination sheet. Each item is stored as-is (objects/arrays as one json cell); extract flat columns afterwards with json:extract:multi@1.`}),input_fields:F(r.object({[HP.name]:w({fieldName:HP.name})})),output_fields:P(r.object({[VP.name]:D({fieldName:VP.name})}))})}).check(e=>{let t=e.value.config?.destination_field_name;t&&fd(t)&&e.issues.push({code:`custom`,input:t,path:[`config`,`destination_field_name`],message:`'${t}' is reserved and cannot be used as a destination field name.`});let n=(t?.trim()||`expanded_value`).toLowerCase(),r=new Set;(e.value.config?.write_fields??[]).forEach((t,i)=>{let a=t.alias?.trim(),o=a||t.field_name,s=a?`alias`:`field_name`,c=o.toLowerCase();fd(o)&&e.issues.push({code:`custom`,input:o,path:[`config`,`write_fields`,i,s],message:`'${o}' is reserved and cannot be written to the destination sheet.`}),c===n&&e.issues.push({code:`custom`,input:o,path:[`config`,`write_fields`,i,s],message:`'${o}' collides with the destination field each item is written to.`}),r.has(c)&&e.issues.push({code:`custom`,input:o,path:[`config`,`write_fields`,i,s],message:`'${o}' is listed more than once.`}),r.add(c)})}),GP={"row-expandappend-sheet-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},KP=e=>R(G(HP,e)),qP=class extends B{pipeId=BP;payload;payloadSchema=WP;billableOperations=GP;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`row-expandappend-sheet-v1-pipe0`)}getInputRequirement(){return KP(this.payload.config)}getRawOutputFields(){return{[VP.name]:this.catalogOutput(VP)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_api_operation`,allowManagedConnection:!0}]}},JP=WP,YP={pipeId:BP,basePipe:U(BP),label:`Expand list to sheet`,executionMode:`single`,categories:[`actions`,`tools`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:"Expand a list into sheet rows — each item is written as-is to an `expanded_value` column (objects/arrays as json).",guide:`Denormalize a 1:N list into rows on ANOTHER sheet: each item in the input_objects array becomes its own row on config.sheet, inside config.project (REQUIRED — the destination project's org-unique slug; when working inside a project pass THAT slug, see CURRENT CONTEXT). Every item is written AS-IS to a single column on the destination — an object/array lands as one json cell (its fields are NOT spread into separate columns), a primitive as a scalar. That column is \`expanded_value\` by default; rename/retype it via config.destination_field_name / destination_field_type / destination_field_format / destination_field_label (type/format are inferred from the data when left unset). To get flat columns, run json:extract:multi@1 ON THE DESTINATION sheet afterwards to pull out exactly the values you need. config.write_fields copies chosen SOURCE-row fields onto every exploded row alongside the item (e.g. a stable join key like user_id, so downstream sheets can be joined/deleted per source entity); an entry's optional alias renames its destination column ({ field_name: "email", alias: "signup_email" } reads \`email\` from the source row and writes it as \`signup_email\`) — unlike row:append:sheet@1, EMPTY write_fields writes NO source columns (the exploded item is the row). Values are read from the row at run time and are deliberately NOT typed inputs, so editing the list never force-requeues this non-idempotent pipe. With allow_entity_creation on, a missing project/sheet (and the expanded_value column) are created; a sheet slug that exists in a DIFFERENT project fails the rows. Destination slugs are ORG-UNIQUE, so config.sheet addresses a sheet across your whole org: an existing slug REUSES that sheet (appending into it) when it's in config.project, and FAILS when it lives elsewhere — a generic slug like "results"/"companies"/"current-employers" will likely hit an unrelated sheet. When you mean a genuinely NEW sheet, use a short descriptive slug plus 3-4 random alphanumeric chars (e.g. "ceos-x7k2", "prospects-employers-9fq") — you cannot see other projects' slugs, so only the random suffix makes a new slug collision-proof; give the sheet its human-readable display name afterwards (in-app via the name_workspace tool; via API with PATCH /v1/sheets/{sheet_id}). Use it when a column holds a list you need per-element (e.g. a profile's current employers) BEFORE enriching each element — never collapse the list with an LLM. Requires a pipe0 connection (resolve via list_connections). Typical pipeline: json:extract:multi@1 to build the array column → this pipe to explode it into an intermediary sheet → json:extract:multi@1 THERE to flatten the fields you need out of expanded_value → enrich each row (e.g. person:match:role:waterfall@1) → rows:copy_to_sheet@1 to the final sheet. NON-IDEMPOTENT: each run appends again, so re-running duplicates rows (and you cannot undo rows written to another sheet) — dry-run the flow in sandbox first (env:change@1), and to retry after a partial failure adopt the succeeded cells (rows:adopt@1 with adopt_statuses:["completed"]) then rows:enrich@1. In the replace-on-refresh pattern (paired rows:delete:sheet@1 instances), position in the pipes array is NOT execution order — gate THIS pipe with a run_if on each delete's aliased count output (status eq completed): those references are the dependency edges that guarantee delete-before-append and skip the append whenever the deletes were skipped.`,docPath:W(BP),tags:[V.FIELDS],keywords:[`explode`,`denormalize`,`array`,`split`,`one to many`,`fan out`],billableOperations:GP,defaultInputRequirement:KP(null),inputFieldMode:`static`,outputFieldMode:`static`,defaultPayload:{pipe_id:BP,connector:{strategy:`first`,connections:[]},run_if:null,config:{project:``,sheet:``,run_added_rows:!0,allow_entity_creation:!0,write_fields:[],destination_field_name:UP,destination_field_type:``,destination_field_format:``,destination_field_label:``,input_fields:{input_objects:{alias:``}},output_fields:{sheet_record_ids:{alias:``,enabled:!0}}}}},XP=`row:roundrobin:sheet@1`,ZP=Mc(_(`pipe0`,`Add a pipe0 connection first`),jc(e=>e.config?.sheet,`Select a sheet first`)),QP=r.object({pipe_id:r.literal(XP),connector:S(),run_if:b(),config:r.object({sheet:Au({label:`Sheet`,info:`The sheet to rotate through — e.g. a roster of sellers. Always another sheet.`,groupPath:`config.general`,sectionKey:`general`,path:`config.sheet`,required:!0,optionsDef:EP}),sheet_where:Bl({label:`Rotation pool`,info:`Only target-sheet rows matching these conditions rotate. Leave empty to rotate over the whole sheet.`,groupPath:`config.general`,sectionKey:`general`,path:`config.sheet_where`,required:!1,enabledIf:ZP,fieldNamePlaceholder:`segment`,optionsDef:jP({sheetPath:`config.sheet`})}),sheet_unique_field:cu({label:`Unique column`,info:`Column of the target sheet that must be filled and unique in every row — checked at run time.`,groupPath:`config.general`,sectionKey:`general`,path:`config.sheet_unique_field`,required:!0,enabledIf:ZP,optionsDef:jP({sheetPath:`config.sheet`})}),sheet_copy_fields:su({label:`Fields to bring over`,info:`Target-sheet columns copied from the picked row; each becomes an output column.`,groupPath:`config.general`,sectionKey:`general`,path:`config.sheet_copy_fields`,minItems:1,enabledIf:ZP,optionsDef:jP({sheetPath:`config.sheet`,includeJson:!0})}),sheet_weight_field:cu({label:`Weight column`,info:`Numeric target-sheet column scaling each row's share. 0 pauses a row; empty counts as 1. Leave unset for equal shares.`,groupPath:`config.general`,sectionKey:`general`,path:`config.sheet_weight_field`,enabledIf:ZP,optionsDef:jP({sheetPath:`config.sheet`})}),counter_field:cu({label:`Counter field`,info:`Column of this sheet whose unique values advance the rotation.`,groupPath:`config.general`,sectionKey:`general`,path:`config.counter_field`,required:!0})})}),$P={"row-roundrobin-sheet-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},eF=class extends B{pipeId=XP;payload;payloadSchema=QP;billableOperations=$P;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`row-roundrobin-sheet-v1-pipe0`)}getTemplatedFields(){return(this.payload.config.sheet_where?.conditions??[]).map(e=>typeof e.value==`string`?e.value:null)}getInputRequirement(){let e=this.payload.config.counter_field.field_name,t=R({name:e,resolvedName:e,label:``,description:``,source:`config.counter_field — a column of THIS sheet`,type:t=>Rd(t,e)?.type||`unknown`,format:null}),n=tp(this.getTemplatedFields(),{expectedType:`string`,expectedFormat:`text`});return n.kind===`all`&&n.of.length===0?t:z(t,n)}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return np(this.getTemplatedFields())}getBucketRequirements(){let e=ot(this.payload.config.sheet),t=this.payload.config.counter_field.field_name;if(!e||!t)return[];let n=this.payload.config.sheet_where??null;return(n?.conditions??[]).some(e=>typeof e.value==`string`&&e.value.includes(`{{`))?[]:[{slug:wP(e,t,CP(n)),type:`counter`,schema:null,allowCreation:!0}]}getRawOutputFields(){let e={};for(let t of this.payload.config.sheet_copy_fields){if(!t.field_name)continue;let n=t.alias||t.field_name;e[t.field_name]={description:`Value of the target sheet's "${t.field_name}" column on the round-robin-picked row.`,enabled:!0,format:t.format??null,label:n,name:t.field_name,resolvedName:n,jsonMeta:null,type:t.type??`unknown`,isCatalogFIeld:!1,isPrimaryOutput:!1}}return e}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_api_operation`,allowManagedConnection:!0}]}},tF=QP,nF={pipeId:XP,basePipe:U(XP),label:`Round-robin from sheet`,executionMode:`single`,categories:[`tools`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:`Rotate through the rows of another sheet (e.g. a sellers roster): each unique counter value picks the next row round-robin, and the selected columns of the picked row become outputs. Re-run safe — the same counter value always picks the same row.`,guide:"Round-robin assignment from another pipe0 sheet (the roster — e.g. sellers). config.sheet is the target sheet's org-unique slug — one FIXED sheet for the whole pipe, never a per-row reference. config.sheet_where (optional) restricts the ROTATION POOL to target-sheet rows matching the conditions (null = whole sheet); condition field_names are LITERAL target-sheet columns, string values may hold `{{ field }}` refs resolved per lead — e.g. segment eq {{ segment }} routes each lead over its own segment's rows. Each distinct RESOLVED filter cycles on its OWN counter (so slot numbers stay consecutive per pool — strict round robin within each pool); avoid high-cardinality templated filters ({{ email }}-like) — every distinct value creates a counter bucket and will exhaust the org bucket quota. config.sheet_unique_field names a TARGET-sheet column that must be filled in EVERY row and unique across rows — the run fails with a clear message if it has gaps or duplicates (this guarantees every roster row is a distinct assignee). config.sheet_copy_fields are the TARGET-sheet columns copied from the picked row; each becomes an output column named like the column — or like the entry's `alias` when set: use an alias whenever THIS sheet already has a column of that name (e.g. roster `email` → alias `seller_email`), otherwise the copy silently writes into the existing column. Entries are typed by `type`/`format` (snapshotted from the target sheet's schema when picked — if the target column's type drifts later, the run fails with an output-type mismatch; re-pick the column to refresh the snapshot). config.counter_field names a column of the CURRENT sheet: every unique value of it takes the next number from an internal counter bucket (first-seen → 1, next new value → 2, …; the SAME value always keeps the SAME number, so re-runs are stable). For LEAD/SIGNUP ROUTING the counter defaults to the ACCOUNT key — a company domain column (work email → field:domainify@1; personal email → reverse lookup; coalesce with fields:merge@1) — so every lead from the same company keeps the same assignee; counter on the person's email ONLY when account grouping is explicitly unwanted (consumer flows). See the routing:leads:roundrobin@1 playbook. The pick is slot (n − 1) mod W over the pool's rows in creation order, where W is the pool's total weight (= row count when unweighted) — adding pool rows only changes the wrap; deleting or reordering reshuffles subsequent picks. config.sheet_weight_field (optional) names a NUMERIC target-sheet column: a row with weight w takes w of every W slots, spread evenly across the cycle (weight 2 ≠ two consecutive picks); weight 0 pauses the row; an empty cell counts as 1; a negative or non-integer weight fails the run loudly. Editing weights re-shapes FUTURE picks only — the counter and its bucket are untouched, so rotation never restarts. The internal counter is a REAL org-scoped counter bucket (visible in the buckets UI, slug `rr--<sheet>--<counter field>`); changing the sheet or the counter field starts a fresh rotation. A row with a missing/empty counter value is gated to skipped before the runner. Empty roster → all outputs no_result. A copied column that is empty on the picked row resolves to no_result. Missing sheet (bad slug) fails the record naming the slug. The target sheet is NEVER modified. FREE pipe0 operation; requires a pipe0 connection (list_connections).",docPath:W(XP),tags:[V.FIELDS],keywords:[`rotate`,`rotation`,`distribute`,`routing`,`assignment`,`owner`,`alternate`],billableOperations:$P,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`config`,defaultPayload:{pipe_id:XP,connector:{strategy:`first`,connections:[]},run_if:null,config:{sheet:``,sheet_where:null,sheet_unique_field:{field_name:``},sheet_copy_fields:[],sheet_weight_field:{field_name:``},counter_field:{field_name:``}}}},rF=`rows:delete:sheet@1`,iF=g(`sheet_deleted_count`),aF=r.object({pipe_id:r.literal(rF),connector:S(),run_if:b(),config:r.object({sheet:x({label:`Sheet ID`,info:"The sheet to delete from (its org-unique slug — NOT the display name). Type `@` to insert a field reference for a per-row sheet. A sheet that does not exist yet completes with 0 deleted.",groupPath:`config.general`,sectionKey:`general`,inputType:`text`,path:`config.sheet`,minLength:3,expectedTagType:`string`,expectedTagFormat:`text`,optionsDef:EP}),where:Bl({label:`Delete conditions`,info:"Conditions on the target sheet's columns. Column names are literal; in the value, type `/` to insert a field reference (e.g. `{{ user_id }}`). Rows matching the condition are DELETED.",groupPath:`config.general`,sectionKey:`general`,path:`config.where`,fieldNamePlaceholder:`user_id`,optionsDef:jP({sheetPath:`config.sheet`})}),output_fields:P(r.object({[iF.name]:D({fieldName:iF.name})}))})}),oF={"rows-delete-sheet-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},sF=class extends B{pipeId=rF;payload;payloadSchema=aF;billableOperations=oF;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`rows-delete-sheet-v1-pipe0`)}getTemplatedFields(){return[this.payload.config.sheet,...(this.payload.config.where?.conditions??[]).map(e=>typeof e.value==`string`?e.value:null)]}getInputRequirement(){return tp(this.getTemplatedFields(),{expectedType:`string`,expectedFormat:`text`})}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return np(this.getTemplatedFields())}getRawOutputFields(){return{[iF.name]:this.catalogOutput(iF)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_api_operation`,allowManagedConnection:!0}]}},cF=aF,lF={pipeId:rF,basePipe:U(rF),label:`Delete rows in sheet`,executionMode:`single`,categories:[`tools`,`actions`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:`Delete rows in ANOTHER pipe0 sheet matching a condition block. The replace-on-refresh building block: delete previously written downstream rows before re-appending fresh ones.`,guide:"Delete rows in another pipe0 sheet whose columns match config.where — the delete half of the replace-on-refresh pattern: pair it with the pipe that appends downstream rows (row:append:sheet@1 / row:expandappend:sheet@1), keyed on a stable join column, e.g. `user_id eq \"{{ user_id }}\"`, so a re-enrichment first clears the rows it previously wrote and then re-appends. Position in the pipes array is NOT execution order (pipes run in dependency waves; independent pipes run concurrently) — delete-before-append is enforced by the APPEND pipe's run_if referencing this pipe's (aliased) count output status eq completed, never by list ordering. config.sheet is the target's org-unique slug (literal or `{{ field }}` tag). config.where semantics match rows:find:sheet@1: field_name is a LITERAL target column (not validated against the target — a wrong name behaves like a null cell and deletes NOTHING); string values may contain `{{ field }}` tags resolved per row; a value resolving to an empty string fails the row (a blank key must not delete everything). A target sheet that does not exist yet completes with sheet_deleted_count 0 — first runs happen before downstream sheets exist, by design. The replace pattern usually needs SEVERAL instances on one sheet (one per downstream target) — output names are sheet-global, so alias each instance's sheet_deleted_count (e.g. experiences_deleted_count / profiles_deleted_count) or the defaults collide and the pipeline won't validate. Skip-propagation protects previously written rows ONLY when the templated key is an enrichment OUTPUT (the typed input skips on upstream failure) — an INPUT column key like user_id is always satisfied, so the delete would run even on a failed refresh: gate it with an explicit run_if on a success flag (e.g. a bucket:claim@1 is_claim_successful value eq true) so failed/no_result refreshes keep the old rows. DESTRUCTIVE and NON-idempotent (deleted rows cannot be restored except via the target's timetravel): rehearse in sandbox (env:change@1, the delete is mocked), and after a partial failure adopt succeeded cells (rows:adopt@1) before re-running. Deletes on the same target serialize (exclusive lock) — expect modest throughput on large refreshes. Requires a pipe0 connection (list_connections).",docPath:W(rF),tags:[V.FIELDS],keywords:[`delete`,`remove`,`clear`,`replace`,`refresh`,`cleanup`,`another sheet`,`downstream`,`purge`],billableOperations:oF,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:rF,connector:{strategy:`first`,connections:[]},run_if:null,config:{sheet:``,where:null,output_fields:{sheet_deleted_count:{alias:``,enabled:!0}}}}},uF=`SELECT table_schema, table_name, column_name, data_type FROM information_schema.columns WHERE table_schema NOT IN ('pg_catalog', 'information_schema') ORDER BY table_schema, table_name, ordinal_position`,dF=`table_catalog NOT IN ('system', '__databricks_internal') AND table_schema <> 'information_schema'`,fF=`SELECT table_catalog, table_schema, table_name FROM system.information_schema.tables WHERE ${dF} ORDER BY table_catalog, table_schema, table_name`,pF=`SELECT table_catalog, table_schema, table_name, column_name, data_type FROM system.information_schema.columns WHERE ${dF} ORDER BY table_catalog, table_schema, table_name, ordinal_position`;function mF(e){return typeof e==`string`?e:String(e??``)}function hF(e){let t=new Map;for(let n of e){let e=mF(n.table_schema),r=mF(n.table_name);if(!r)continue;let i=`${e}.${r}`,a=t.get(i);a||(a={schema:e,name:r,columns:[]},t.set(i,a)),a.columns.push({name:mF(n.column_name),type:mF(n.data_type)})}return t}function gF(e){return`${e.catalog?`${e.catalog}.`:``}${e.schema?`${e.schema}.`:``}${e.name}`}function _F(e,t){if(e.length===0)return{summary:`The connected database exposes no tables outside the system schemas — nothing to query yet.`,data:{tables:[],truncated:t}};let n=e.map(e=>{if(e.columns.length===0)return`- ${gF(e)} — (columns not listed; DESCRIBE or sample to inspect)`;let t=e.columns.slice(0,50),n=e.columns.length-t.length,r=t.map(e=>e.type?`${e.name}:${e.type}`:e.name).join(`, `);return`- ${gF(e)} — ${r}${n>0?` (+${n} more)`:``}`}),r=e.some(e=>e.catalog)?` Names are fully qualified (catalog.schema.table) — use them VERBATIM in config.query.`:``;return{summary:[`Schema map (${e.length} table${e.length===1?``:`s`}${t?`, truncated — the database has more`:``}). Write config.query against these;${r} sample rows free via run_search_oneshot.`,...n].join(`
|
|
85
|
-
`),data:{tables:e,truncated:t}}}async function vF(e){let t=await e({query:fF,limit:500}),n=new Map;for(let e of t.rows){let t=mF(e.table_catalog),r=mF(e.table_schema),i=mF(e.table_name);i&&n.set(`${t}.${r}.${i}`,{catalog:t,schema:r,name:i,columns:[]})}let r=await e({query:pF,limit:500});for(let e of r.rows)n.get(`${mF(e.table_catalog)}.${mF(e.table_schema)}.${mF(e.table_name)}`)?.columns.push({name:mF(e.column_name),type:mF(e.data_type)});return _F([...n.values()],t.hasMore||r.hasMore)}async function yF(e){let t=await e({query:`SHOW TABLES`,limit:500}),n=t.rows.map(e=>({schema:mF(e.database??e.namespace),name:mF(e.tableName??e.table_name)})).filter(e=>e.name),r=t.hasMore||n.length>25,i=[];for(let{schema:t,name:r}of n.slice(0,25)){let n=(await e({query:`DESCRIBE TABLE ${t?`${t}.`:``}${r}`,limit:500})).rows.map(e=>({name:mF(e.col_name),type:mF(e.data_type)})).filter(e=>e.name&&!e.name.startsWith(`#`));i.push({schema:t,name:r,columns:n})}return _F(i,r)}async function bF(e,t){if(t.environment===`sandbox`)return{summary:`Schema exploration needs the real database connection — it's read-only and free. Switch to production (env:change@1) to explore the schema, then rehearse the pipeline in sandbox.`};if(!t.runQuery)return{summary:`Live schema exploration isn't available in this context.`};if(e===`databricks`)try{return await vF(t.runQuery)}catch{try{let e=await t.runQuery({query:uF,limit:500});return _F([...hF(e.rows).values()],e.hasMore)}catch{return yF(t.runQuery)}}let n=await t.runQuery({query:uF,limit:500});return _F([...hF(n.rows).values()],n.hasMore)}const xF=`rows:find:databricks@1`,SF=g(`db_rows_found_count`),CF=g(`db_found_rows`),wF=r.object({pipe_id:r.literal(xF),connector:S(),run_if:b(),config:r.object({query:Kl({label:`SQL query`,info:`A single read-only SELECT statement, resolved per row — use {{ field }} for input refs, {{ SECRETS.X }} / {{ CONSTANTS.X }} for secrets/constants. Do not add your own LIMIT for capping; use the row limit below.`,groupPath:`config.general`,sectionKey:`general`,path:`config.query`,rows:8,required:!0,maxLength:2e4}),limit:Du({label:`Row limit`,info:`Maximum number of rows returned in the matching-rows output. The rows-found count is always the true total.`,groupPath:`config.advanced`,sectionKey:`general`,path:`config.limit`,min:1,max:50}),output_fields:P(r.object({[SF.name]:D({fieldName:SF.name}),[CF.name]:D({fieldName:CF.name})}))})}),TF={"rows-find-databricks-v1-databricks":{provider:`databricks`,allowManagedConnection:!1,mode:null,credits:null,note:`Querying your own Databricks SQL warehouse is free.`}},EF=class extends B{pipeId=xF;payload;payloadSchema=wF;billableOperations=TF;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`databricks`]}estimateBillableOperations(e){return H(e,`rows-find-databricks-v1-databricks`)}getTemplatedFields(){return[this.payload.config.query]}getInputRequirement(){return tp(this.getTemplatedFields(),{expectedType:`string`,expectedFormat:`text`})}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return np(this.getTemplatedFields())}getRawOutputFields(){return{[SF.name]:this.catalogOutput(SF),[CF.name]:this.catalogOutput(CF)}}getConnectionsRequirements(){return[{provider:`databricks`,rateLimitRatio:1,rateLimitOperation:`databricks_query`,allowManagedConnection:!1}]}async getAgentContext(e){return bF(`databricks`,e)}},DF=wF,OF={pipeId:xF,basePipe:U(xF),label:`Find rows in Databricks`,executionMode:`single`,categories:[`tools`],lifecycle:null,allowedUserConnectionProviders:[`databricks`],managedProviders:[],deprecatedProviders:[],description:`Look up rows in your own Databricks SQL warehouse with a read-only SQL query resolved per row. Outputs the total match count and the matching rows.`,guide:"Databricks SQL dialect; config.query must be a single read-only SELECT, resolved per row via Liquid — `{{ field }}` input refs, `{{ SECRETS.X }}` / `{{ CONSTANTS.X }}` supported. Resolved values are interpolated as text, so quote them in the SQL (WHERE email = '{{ email }}'). To discover the schema, draft a payload with a placeholder config.query like \"SELECT 1\" and the chosen connection in connector.connections, then call get_provider_context once — it returns the workspace-wide table/column map (all Unity catalogs) for free. Always reference tables by their FULLY QUALIFIED three-part name exactly as the map lists them (catalog.schema.table); a bare table name resolves against the warehouse's unpredictable current catalog and usually fails with TABLE_OR_VIEW_NOT_FOUND. Tables under the `samples` catalog (and other built-in demo schemas like `tpch`) are DEMO data, NOT the customer's own — never answer from them without confirming. READ-ONLY and idempotent — the gateway enforces single-statement SELECT validation. db_found_rows is capped by config.limit and a ~25KB size budget (rows are dropped from the end to fit); db_rows_found_count is always the TRUE total. When nothing matches, db_found_rows resolves to no_result (NOT an empty array) — db_rows_found_count (0) still completes, so condition on it to branch on absence. A field resolving to empty renders as an empty string in the SQL — guard with run_if if that must not match. Requires a databricks connection (list_connections).",docPath:W(xF),tags:[V.FIELDS,V.NEW],keywords:[`sql`,`query`,`lookup`,`warehouse`,`database`,`select`],billableOperations:TF,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:xF,connector:{strategy:`first`,connections:[]},run_if:null,config:{query:``,limit:10,output_fields:{db_rows_found_count:{alias:``,enabled:!1},db_found_rows:{alias:``,enabled:!0}}}}},kF=`rows:find:postgres@1`,AF=g(`db_rows_found_count`),jF=g(`db_found_rows`),MF=r.object({pipe_id:r.literal(kF),connector:S(),run_if:b(),config:r.object({query:Kl({label:`SQL query`,info:`A single read-only SELECT statement, resolved per row — use {{ field }} for input refs, {{ SECRETS.X }} / {{ CONSTANTS.X }} for secrets/constants. Do not add your own LIMIT for capping; use the row limit below.`,groupPath:`config.general`,sectionKey:`general`,path:`config.query`,rows:8,required:!0,maxLength:2e4}),limit:Du({label:`Row limit`,info:`Maximum number of rows returned in the matching-rows output. The rows-found count is always the true total.`,groupPath:`config.advanced`,sectionKey:`general`,path:`config.limit`,min:1,max:50}),output_fields:P(r.object({[AF.name]:D({fieldName:AF.name}),[jF.name]:D({fieldName:jF.name})}))})}),NF={"rows-find-postgres-v1-postgres":{provider:`postgres`,allowManagedConnection:!1,mode:null,credits:null,note:`Querying your own PostgreSQL database is free.`}},PF=class extends B{pipeId=kF;payload;payloadSchema=MF;billableOperations=NF;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`postgres`]}estimateBillableOperations(e){return H(e,`rows-find-postgres-v1-postgres`)}getTemplatedFields(){return[this.payload.config.query]}getInputRequirement(){return tp(this.getTemplatedFields(),{expectedType:`string`,expectedFormat:`text`})}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return np(this.getTemplatedFields())}getRawOutputFields(){return{[AF.name]:this.catalogOutput(AF),[jF.name]:this.catalogOutput(jF)}}getConnectionsRequirements(){return[{provider:`postgres`,rateLimitRatio:1,rateLimitOperation:`postgres_query`,allowManagedConnection:!1}]}async getAgentContext(e){return bF(`postgres`,e)}},FF=MF,IF={pipeId:kF,basePipe:U(kF),label:`Find rows in Postgres`,executionMode:`single`,categories:[`tools`],lifecycle:null,allowedUserConnectionProviders:[`postgres`],managedProviders:[],deprecatedProviders:[],description:`Look up rows in your own PostgreSQL database with a read-only SQL query resolved per row. Outputs the total match count and the matching rows.`,guide:"PostgreSQL dialect; config.query must be a single read-only SELECT, resolved per row via Liquid — `{{ field }}` input refs, `{{ SECRETS.X }}` / `{{ CONSTANTS.X }}` supported. Resolved values are interpolated as text, so quote them in the SQL (WHERE email = '{{ email }}'). To discover the schema, draft a payload with a placeholder config.query like \"SELECT 1\" and the chosen connection in connector.connections, then call get_provider_context once — it returns the full table/column map for free. READ-ONLY and idempotent — the gateway enforces single-statement SELECT validation and a read-only transaction. db_found_rows is capped by config.limit and a ~25KB size budget (rows are dropped from the end to fit); db_rows_found_count is always the TRUE total. When nothing matches, db_found_rows resolves to no_result (NOT an empty array) — db_rows_found_count (0) still completes, so condition on it to branch on absence. A field resolving to empty renders as an empty string in the SQL — guard with run_if if that must not match. Requires a postgres connection (list_connections).",docPath:W(kF),tags:[V.FIELDS,V.NEW],keywords:[`sql`,`query`,`lookup`,`database`,`select`],billableOperations:NF,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:kF,connector:{strategy:`first`,connections:[]},run_if:null,config:{query:``,limit:10,output_fields:{db_rows_found_count:{alias:``,enabled:!1},db_found_rows:{alias:``,enabled:!0}}}}},LF=`rows:find:sheet@1`,RF=g(`sheet_rows_found_count`),zF=g(`sheet_found_rows`),BF=g(`sheet_found_row_ids`),VF=r.object({pipe_id:r.literal(LF),connector:S(),run_if:b(),config:r.object({sheet:x({label:`Sheet ID`,info:"The sheet to search (its org-unique slug — NOT the display name). Type `@` to insert a field reference for a per-row sheet.",groupPath:`config.general`,sectionKey:`general`,inputType:`text`,path:`config.sheet`,minLength:3,expectedTagType:`string`,expectedTagFormat:`text`,optionsDef:EP}),where:Bl({label:`Match conditions`,info:"Conditions on the target sheet's columns. Column names are literal; in the value, type `/` to insert a field reference (e.g. `{{ email }}`).",groupPath:`config.general`,sectionKey:`general`,path:`config.where`,fieldNamePlaceholder:`email`,optionsDef:jP({sheetPath:`config.sheet`})}),limit:Du({label:`Row limit`,info:`Maximum number of rows returned in the matching-rows output. The rows-found count is always the true total.`,groupPath:`config.advanced`,sectionKey:`general`,path:`config.limit`,min:1,max:100}),output_fields:P(r.object({[RF.name]:D({fieldName:RF.name}),[zF.name]:D({fieldName:zF.name}),[BF.name]:D({fieldName:BF.name})}))})}),HF={"rows-find-sheet-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},UF=class extends B{pipeId=LF;payload;payloadSchema=VF;billableOperations=HF;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`rows-find-sheet-v1-pipe0`)}getTemplatedFields(){return[this.payload.config.sheet,...(this.payload.config.where?.conditions??[]).map(e=>typeof e.value==`string`?e.value:null)]}getInputRequirement(){return tp(this.getTemplatedFields(),{expectedType:`string`,expectedFormat:`text`})}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return np(this.getTemplatedFields())}getRawOutputFields(){return{[RF.name]:this.catalogOutput(RF),[zF.name]:this.catalogOutput(zF),[BF.name]:this.catalogOutput(BF)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_api_operation`,allowManagedConnection:!0}]}},WF=VF,GF={pipeId:LF,basePipe:U(LF),label:`Find rows in sheet`,executionMode:`single`,categories:[`tools`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:`Look up rows in another pipe0 sheet matching a condition block (and/or over eq, neq, gt, gte, lt, lte, contains, matches). Outputs the total match count, the matching rows, and their record IDs.`,guide:'Find rows in another pipe0 sheet. config.sheet is the target sheet\'s org-unique slug (a literal or a `{{ field }}` tag). config.where is a condition block over the TARGET sheet\'s columns: `logic` "and"/"or" combines value conditions; each condition\'s field_name is a LITERAL column name (never templated, NOT validated against the target sheet — a wrong name behaves like a null cell), and its value may be a literal or contain `{{ field }}` tags resolved per row. Operators: eq/neq compare as text (a number cell 42 matches the value "42"; neq ALSO matches rows where the column is missing or null; JSON object/array cells effectively never match); gt/gte/lt/lte compare numerically (non-numeric cells never match; a non-numeric condition value fails the row); contains is case-INsensitive substring; matches is case-SENSITIVE regex (invalid pattern fails the row). A `null` value with eq matches missing/null cells. READ-ONLY and idempotent — one query per row, the target sheet is never modified. sheet_found_rows is capped by config.limit and a ~25KB size budget (rows are dropped from the end to fit); sheet_rows_found_count is always the TRUE total. When nothing matches, sheet_found_rows and sheet_found_row_ids resolve to no_result (NOT an empty array) — sheet_rows_found_count (0) still completes, so condition on it to branch on absence. String condition values that resolve to an empty string fail the row (a blank field must not match everything) — guard with run_if. Requires a pipe0 connection (list_connections).',docPath:W(LF),tags:[V.FIELDS],keywords:[`lookup`,`query`,`search`,`match`,`filter`,`vlookup`],billableOperations:HF,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:LF,connector:{strategy:`first`,connections:[]},run_if:null,config:{sheet:``,where:null,limit:10,output_fields:{sheet_rows_found_count:{alias:``,enabled:!1},sheet_found_rows:{alias:``,enabled:!0},sheet_found_row_ids:{alias:``,enabled:!1}}}}},KF=`signals:personprofilematch@1`,qF=g(`person_profile_match`),JF=g(`signal_window_start`),YF=g(`signal_list`),XF=g(`signal_count`),ZF={l30d:30,l90d:90,l180d:180,l365d:365},QF=r.object({pipe_id:r.literal(KF),run_if:b(),connector:Jl(),config:r.object({signals:Eu({label:`Signals`,info:`Signal types to emit. Empty = all.`,path:`config.signals`,groupPath:`config.general`,sectionKey:`general`,required:!1,disableSearch:!1,options:Ia.map(e=>({value:e,label:Ha[e]}))}).default([]),default_window:wu({label:`Default window`,info:`Scan window when the window-start input is unmapped or empty for the row. A mapped, non-empty window-start date overrides it per row.`,path:`config.default_window`,groupPath:`config.general`,sectionKey:`general`,required:!1,defaultValue:`l90d`,options:[{value:`l30d`,label:`Last 30 days`},{value:`l90d`,label:`Last 90 days`},{value:`l180d`,label:`Last 180 days`},{value:`l365d`,label:`Last 365 days`}]}),input_fields:F(r.object({[qF.name]:w({fieldName:qF.name}),[JF.name]:w({fieldName:JF.name})})),output_fields:P(r.object({[YF.name]:D({fieldName:YF.name}),[XF.name]:D({fieldName:XF.name})}))}).optional()}),$F=e=>z(R(G(qF,e)),vd(G(JF,e))),eI={"signals-personprofilematch-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},tI=class extends B{pipeId=KF;payload;payloadSchema=QF;billableOperations=eI;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getInputRequirement(){return $F(this.payload.config)}getRawOutputFields(){return{[YF.name]:this.catalogOutput(YF,{isPrimaryOutput:!0}),[XF.name]:this.catalogOutput(XF)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},nI=QF,rI={pipeId:KF,basePipe:U(KF),label:`Sales signals from profile`,executionMode:`single`,categories:[`people_data`],lifecycle:null,description:`Detect sales signals — job changes, promotions, role changes, work anniversaries, graduations — from a standardized person profile inside a per-row time window.`,guide:`Scans person_profile_match's employment/education history for moments in time inside (window_start, now]. The window: a mapped, non-empty signal_window_start date wins per row; otherwise config.default_window applies. Compute the per-row date from re-enrichment cadence with formula:run@1 (e.g. seniority -> days -> date) — NEVER from last_successfully_enriched_at: that bucket:countif output is restamped within the same cohort run before this pipe reads it, collapsing the window to zero. Every signal carries a stable signal_id ('sig_' + hash of person, from/to company, YYYY-MM, qualifier) — the same real-world event hashes identically across providers and re-scans, so overlapping windows re-emit but never fork identity. Canonical composition: row:expandappend:sheet@1 explodes signal_list into an append-only signals sheet (same project by default; a dedicated org-wide signals project when several systems feed one stream) with destination_field_name 'signal_match' and NO write_fields — the signals table is standardized to a SINGLE input column holding the payload, because the signal is self-contained (person_name, profile_url, company_domain, metadata all inside). There json:extract:multi@1 flattens whatever columns the consumer needs straight out of signal_match, and bucket:claim@1 on signal_id gates downstream delivery (CRM activity sync) exactly-once. This shape is identical for every signals:* producer, person- or company-scoped, so all of them append into the same table. config.signals narrows the emitted types (empty = all). Outputs are per-scan: signal_list (the JSON list) and signal_count as its condition-friendly flat mirror (0 when the scan found none — the cell always completes). Deterministic-local: runs for REAL in sandbox, FREE pipe0 operation.`,docPath:W(KF),tags:[V.LINKEDIN,V.LOGIC],keywords:[`job change`,`promotion`,`new role`,`trigger`,`moments`,`buying intent`,`champion tracking`,`boomerang`],billableOperations:eI,defaultInputRequirement:$F(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:KF,run_if:null,connector:null,config:{signals:[],default_window:`l90d`,input_fields:{person_profile_match:{alias:``},signal_window_start:{alias:``}},output_fields:{signal_list:{alias:``,enabled:!0},signal_count:{alias:``,enabled:!0}}}}},iI=`template:fill@1`,aI=g(`template_output`),oI=r.object({pipe_id:r.literal(iI),connector:C(),run_if:b(),config:r.object({template:Kl({sectionKey:`general`,path:`config.template`,label:`Template`,placeholder:J(`template`),groupPath:`config.general`,required:!0}),output_fields:P(r.object({[aI.name]:D({fieldName:aI.name})}))})}),sI={"template-fill-v1-pipe0":{credits:{default:0},allowManagedConnection:!0,provider:`pipe0`,mode:`always`}},cI=class extends B{pipeId=iI;payload;payloadSchema=oI;billableOperations=sI;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`template-fill-v1-pipe0`)}getInputRequirement(){return tp([this.payload.config.template])}getSecretRequirements(){return q([this.payload.config.template])}getConstantRequirements(){return np([this.payload.config.template])}getRawOutputFields(){return{[aI.name]:this.catalogOutput(aI)}}getConnectionsRequirements(){return[]}},lI=oI,uI={pipeId:iI,inputFieldMode:`config`,outputFieldMode:`config`,basePipe:U(iI),label:`Fill a text template`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Replaces template tags like {{ name }} with actual values.`,tags:[V.TEXT],keywords:[`merge`,`personalize`,`liquid`,`placeholder`,`variables`,`mail merge`],docPath:W(iI),defaultInputRequirement:null,billableOperations:sI,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:iI,connector:null,run_if:null,config:{template:``,output_fields:{template_output:{alias:``,enabled:!0}}}}},dI=`website:extract:firecrawl@1`,fI=g(`website_url`),pI=g(`firecrawl_extract_result`),mI=r.object({pipe_id:r.literal(dI),connector:C(),run_if:b(),config:r.object({json_schema:ku({sectionKey:`general`,groupPath:`config.extraction`,path:`config.json_schema`,label:`Output JSON schema`,info:`Specify the data you want to extract as a JSON schema.`,allowEmpty:!1}),extraction_prompt:Cu({sectionKey:`general`,groupPath:`config.extraction`,path:`config.extraction_prompt`,label:`Extraction Prompt`,info:`Prompt the scraper on what it should extract. Template tags are not supported.`,rows:5,minLength:10,placeholder:`E.g. Extract the company missing and latest news.`}),enable_full_domain_crawl:E({sectionKey:`general`,groupPath:`config.extraction`,defaultValue:!1,path:`config.enable_full_domain_crawl`,info:`If this option is enabled all URLs from this domain will be scraped.`,label:`Crawl full domain`}),enable_web_search:E({sectionKey:`general`,groupPath:`config.extraction`,label:`Enable web search`,path:`enable_web_search`,defaultValue:!1,info:`When 'true', the extraction will follow links outside the specified domain.`}),input_fields:F(r.object({[fI.name]:w({fieldName:fI.name})})),output_fields:P(r.object({[pI.name]:D({fieldName:pI.name})}))})}),hI=e=>R(G(fI,e)),gI={"website-extract-firecrawl-v1-firecrawl":{allowManagedConnection:!0,provider:`firecrawl`,credits:{default:2,level1:{credits:1,weight:1}},mode:`onSuccess`}},_I=class extends B{pipeId=dI;payload;payloadSchema=mI;billableOperations=gI;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`firecrawl`]}estimateBillableOperations(e){return H(e,`website-extract-firecrawl-v1-firecrawl`)}getInputRequirement(){return hI(this.payload.config)}getRawOutputFields(){return{[pI.name]:this.catalogOutput(pI)}}getConnectionsRequirements(){return[{provider:`firecrawl`,rateLimitRatio:1,rateLimitOperation:`firecrawl_generic`,allowManagedConnection:!0}]}},vI=mI,yI={pipeId:dI,basePipe:U(dI),label:`Extract`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Perform advanced AI scraping to extract data from any website. Search all subdomains and combine scraped data with search results.`,tags:[V.SCRAPE],keywords:[`scrape`,`crawl`,`ai`,`structured data`,`json`,`web`],docPath:W(dI),billableOperations:gI,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`firecrawl`],managedProviders:[`firecrawl`],deprecatedProviders:[],defaultInputRequirement:hI(null),defaultPayload:{pipe_id:dI,run_if:null,connector:null,config:{json_schema:{type:`object`},enable_full_domain_crawl:!1,enable_web_search:!1,extraction_prompt:``,input_fields:{website_url:{alias:``}},output_fields:{firecrawl_extract_result:{alias:``,enabled:!0}}}}},bI=`website:extract:parallel@1`,xI=g(`website_url`),SI=g(`parallel_extract_result`),CI=r.object({pipe_id:r.literal(bI),connector:C(),run_if:b(),config:r.object({objective:Cu({sectionKey:`general`,groupPath:`config.extraction`,path:`config.objective`,label:`Objective`,info:`Natural-language description of what to extract. Template tags are not supported.`,rows:5,minLength:10,placeholder:`E.g. When was the company founded and what does it do?`}),input_fields:F(r.object({[xI.name]:w({fieldName:xI.name})})),output_fields:P(r.object({[SI.name]:D({fieldName:SI.name})}))})}),wI=e=>R(G(xI,e)),TI={"website-extract-parallel-v1-parallel":{allowManagedConnection:!0,provider:`parallel`,credits:{default:.1},mode:`onSuccess`}},EI=class extends B{pipeId=bI;payload;payloadSchema=CI;billableOperations=TI;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`parallel`]}estimateBillableOperations(e){return H(e,`website-extract-parallel-v1-parallel`)}getInputRequirement(){return wI(this.payload.config)}getRawOutputFields(){return{[SI.name]:this.catalogOutput(SI,{isPrimaryOutput:!0})}}getConnectionsRequirements(){return[{provider:`parallel`,rateLimitRatio:1,rateLimitOperation:`parallel_extract`,allowManagedConnection:!0}]}},DI=CI,OI={pipeId:bI,basePipe:U(bI),label:`Extract (Parallel)`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Extract relevant content from a website using Parallel's Extract API. Returns a flat list of results — page title, publish date and the excerpts most relevant to your objective.`,tags:[V.SCRAPE],keywords:[`scrape`,`crawl`,`content`,`web`,`research`],docPath:W(bI),billableOperations:TI,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`parallel`],managedProviders:[`parallel`],deprecatedProviders:[],defaultInputRequirement:wI(null),defaultPayload:{pipe_id:bI,run_if:null,connector:null,config:{objective:``,input_fields:{website_url:{alias:``}},output_fields:{parallel_extract_result:{alias:``,enabled:!0}}}}},kI=`website:maplinks:firecrawl@1`,AI={"website-maplinks-firecrawl-v1-firecrawl":{allowManagedConnection:!0,provider:`firecrawl`,credits:{default:1},mode:`onSuccess`}},jI=g(`website_url`),MI=g(`mapped_links`),NI=r.object({pipe_id:r.literal(kI),connector:C(),run_if:b(),config:r.object({page_limit:Du({label:`Page limit`,info:`Number of pages searched`,groupPath:`config.general`,max:50,min:1,path:`config.page_limit`,sectionKey:`general`}).nullish(),sitemap:wu({label:`Sitemap`,info:`Include sitemap links`,sectionKey:`general`,groupPath:`config.general`,path:`config.sitemap`,defaultValue:`include`,required:!1,options:[{value:`include`,label:`Include`},{value:`skip`,label:`Skip`},{value:`only`,label:`Only`}]}),search:Su({sectionKey:`general`,label:`Search`,inputType:`text`,info:`Return matching urls`,groupPath:`config.general`,path:`config.search`}).nullable().default(``),input_fields:F(r.object({[jI.name]:w({fieldName:jI.name})})),output_fields:P(r.object({[MI.name]:D({fieldName:MI.name})}))}).optional()}),PI=e=>R(G(jI,e)),FI=class extends B{pipeId=kI;payload;payloadSchema=NI;billableOperations=AI;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`firecrawl`]}estimateBillableOperations(e){return H(e,`website-maplinks-firecrawl-v1-firecrawl`)}getInputRequirement(){return PI(this.payload.config)}getRawOutputFields(){return{[MI.name]:this.catalogOutput(MI)}}getConnectionsRequirements(){return[{provider:`firecrawl`,rateLimitRatio:1,rateLimitOperation:`firecrawl_map_requests`,allowManagedConnection:!0}]}},II=NI,LI={pipeId:kI,basePipe:U(kI),label:`Map domain links`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Input a website and get all internal URLs on the website. Results do not include links to external pages.`,tags:[V.SCRAPE],keywords:[`sitemap`,`crawl`,`urls`,`pages`,`discover`,`internal`],docPath:W(kI),billableOperations:AI,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`firecrawl`],managedProviders:[`firecrawl`],deprecatedProviders:[],defaultInputRequirement:PI(null),defaultPayload:{pipe_id:kI,run_if:null,connector:null,config:{page_limit:25,sitemap:`include`,search:``,input_fields:{website_url:{alias:``}},output_fields:{mapped_links:{alias:``,enabled:!0}}}}},RI=`website:scrape:firecrawl@1`,zI=g(`website_url`),BI=g(`website_markdown`),VI=g(`website_html`),HI=g(`website_links`),UI=r.object({pipe_id:r.literal(RI),connector:C(),run_if:b(),config:r.object({scrape_main_only:E({defaultValue:!1,label:`Scrape main content only?`,info:`If selected, content like headers, footers, and sidebars are excluded from the scrape results.`,sectionKey:`general`,groupPath:`config.general`,path:`config.scrape_main_only`}),input_fields:F(r.object({[zI.name]:w({fieldName:zI.name})})),output_fields:P(r.object({[BI.name]:D({fieldName:BI.name}),[VI.name]:D({fieldName:VI.name}),[HI.name]:D({fieldName:HI.name})}))}).optional()}),WI=e=>R(G(zI,e)),GI={"website-scrape-firecrawl-v1-firecrawl":{allowManagedConnection:!0,provider:`firecrawl`,credits:{default:.1,level1:{credits:.05,weight:1}},mode:`onSuccess`}},KI=class extends B{pipeId=RI;payload;payloadSchema=UI;billableOperations=GI;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`firecrawl`]}estimateBillableOperations(e){return H(e,`website-scrape-firecrawl-v1-firecrawl`)}getInputRequirement(){return WI(this.payload.config)}getRawOutputFields(){return{[BI.name]:this.catalogOutput(BI),[VI.name]:this.catalogOutput(VI),[HI.name]:this.catalogOutput(HI)}}getConnectionsRequirements(){return[{provider:`firecrawl`,rateLimitRatio:1,rateLimitOperation:`firecrawl_generic`,allowManagedConnection:!0}]}},qI=UI,JI={pipeId:RI,basePipe:U(RI),label:`Scrape`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Turn any URL into clean data.`,tags:[V.SCRAPE],keywords:[`crawl`,`html`,`markdown`,`content`,`web page`,`fetch`],docPath:W(RI),billableOperations:GI,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`firecrawl`],managedProviders:[`firecrawl`],deprecatedProviders:[],defaultInputRequirement:WI(null),defaultPayload:{pipe_id:RI,run_if:null,connector:null,config:{scrape_main_only:!0,input_fields:{website_url:{alias:``}},output_fields:{website_markdown:{alias:``,enabled:!0},website_html:{alias:``,enabled:!1},website_links:{alias:``,enabled:!1}}}}},YI=`website:scrapelist:firecrawl@1`,XI={"website-scrapelist-firecrawl-v1-firecrawl":{allowManagedConnection:!0,provider:`firecrawl`,credits:{default:.1,level1:{credits:.05,weight:1}},mode:`onSuccess`,note:`You are charged per url that is scraped.`}},ZI=g(`urls`),QI=g(`scrape_list_response`),$I=r.object({pipe_id:r.literal(YI),connector:C(),run_if:b(),config:r.object({scrape_main_only:E({label:`Scrape main content only?`,defaultValue:!1,info:`If selected headers, footers, and sidebars will be excluded from the results.`,sectionKey:`general`,groupPath:`config.general`,path:`config.scrape_main_only`}),formats:Eu({options:[{label:`Markdown`,value:`markdown`},{label:`HTML`,value:`html`},{label:`Links`,value:`links`}],disableSearch:!0,info:`Choose what you want to scrape from the website`,required:!1,label:`Formats`,sectionKey:`general`,groupPath:`config.general`,path:`config.formats`}).default([]),input_fields:F(r.object({[ZI.name]:w({fieldName:ZI.name})})),output_fields:P(r.object({[QI.name]:D({fieldName:QI.name})}))}).optional()}),eL=e=>R(G(ZI,e)),tL=class extends B{pipeId=YI;payload;payloadSchema=$I;billableOperations=XI;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`firecrawl`]}estimateBillableOperations(e){return[{billableOperation:`website-scrapelist-firecrawl-v1-firecrawl`,quantity:e.count*5}]}getInputRequirement(){return eL(this.payload.config)}getRawOutputFields(){return{[QI.name]:this.catalogOutput(QI)}}getConnectionsRequirements(){return[{provider:`firecrawl`,rateLimitRatio:1,rateLimitOperation:`firecrawl_generic`,allowManagedConnection:!0}]}},nL=$I,rL={pipeId:YI,basePipe:U(YI),label:`Scrape list`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Turn a list of URLs into clean scraped data.`,tags:[V.SCRAPE],keywords:[`crawl`,`html`,`markdown`,`content`,`batch`,`bulk`],docPath:W(YI),billableOperations:XI,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`firecrawl`],managedProviders:[`firecrawl`],deprecatedProviders:[],defaultInputRequirement:eL(null),defaultPayload:{pipe_id:YI,run_if:null,connector:null,config:{scrape_main_only:!0,formats:[`html`,`markdown`,`links`],input_fields:{urls:{alias:``}},output_fields:{scrape_list_response:{alias:``,enabled:!0}}}}},iL=`companies:profiles:crustdata@1.companies:profiles:crustdata@2.companies:profiles:crustdata@3.companies:profiles:amplemarket@1.companies:profiles:amplemarket@2.people:profiles:crustdata@1.people:profiles:crustdata@2.people:profiles:crustdata@3.people:profiles:amplemarket@1.people:profiles:amplemarket@2.companies:entitysearch:parallel@1.people:entitysearch:parallel@1.people:eventguests:luma@1.people:channelmembers:slack@1.events:googlecalendar@1.sheet:rows@1.bucket:entries@1.query:postgres@1.query:databricks@1.posts:content:crustdata@1.contacts:hubspot@1.companies:hubspot@1.deals:hubspot@1.owners:hubspot@1.contacts:salesforce@1.leads:salesforce@1.accounts:salesforce@1.opportunities:salesforce@1.users:salesforce@1.query:salesforce@1.people:attio@1.companies:attio@1.deals:attio@1.records:attio@1.entries:attio@1.query:attio@1.users:attio@1`.split(`.`),aL=r.enum(iL);function oL(e,t){let n={name:e,config:t};return It.hashObject(n)}var Z=class{estimateBillableOperations(e){let{cost:t,billableOperation:n}=this.billing;return t.allowManagedConnection?[{billableOperation:n,quantity:t.mode===`per_result`?e.count:t.mode===`per_page`?e.count/100:1}]:[]}validatePayload(e){try{return this.schema.parse(e)}catch(e){throw e instanceof n?Error(JSON.stringify(r.prettifyError(e))):e}}catalogOutput(e){return{name:e.name,enabled:!!this.payload.config?.output_fields?.[e.name].enabled,type:e.type,format:e.format,resolvedName:this.payload.config?.output_fields?.[e.name]?.alias||e.name,description:e.description,jsonMeta:e.jsonMeta,label:e.label,isCatalogFIeld:!0,order:`order`in e?e.order:void 0}}getOutputFields(){let e={};for(let[t,n]of Object.entries(this.getRawOutputFields()))n.enabled&&(e[t]=n);return e}getStaticFieldDefinitions(){let e={};for(let t of Object.values(this.getOutputFields()))e[t.resolvedName]={type:t.type,label:t.label??null,format:t.format??null,json_metadata:null};return e}getDedupConfig(){return{match:`any`,fields:[]}}async getAgentContext(e){return null}getHashKey(){return oL(this.searchId,this.payload)}};function Q(e){return e.split(`@`)[0]}function $(e){return`/docs/search-catalog/${Q(e)}/${e.split(`@`)[1]}`}const sL=()=>Mu({path:`config.custom_properties`,groupPath:`config.general`,sectionKey:`general`,label:`Custom fields`,placeholder:`Lead_Score__c`,info:"Field API names added to the record JSON under `custom_properties` — custom fields included; dotted parent paths like `Account.Industry` work (standard-set names are already top-level)."}),cL=e=>ju({path:`config.filters`,groupPath:`config.general`,sectionKey:`general`,label:`Field filters`,fieldNamePlaceholder:e,info:`Rows filter on any Salesforce field by API name — custom fields and dotted parent paths included. Picklist values are the org's API values (case-sensitive); date values accept ISO dates or SOQL literals like LAST_N_DAYS:30.`}),lL=e=>Wu({path:`config.list_view`,groupPath:`config.general`,sectionKey:`general`,label:`List view`,required:!1,info:`Run one of the org's own list views instead of filters — the view's conditions (including 'My …' scoping) apply server-side. Cannot be combined with filters or shortcuts.`,enabledIf:_(`salesforce`),optionsDef:Qd(e)}),uL=()=>Wu({path:`config.owner`,groupPath:`config.general`,sectionKey:`general`,label:`Owner`,required:!1,info:``,enabledIf:_(`salesforce`),optionsDef:qd}),dL=[{label:`Any time`,value:``},{label:`Today`,value:`l24h`},{label:`Last 2 days`,value:`l48h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}],fL=()=>Uu({required:!1,path:`config.created_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Created at`,description:``,options:dL}).default(``),pL=()=>Uu({required:!1,path:`config.modified_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Last modified`,description:``,options:dL}).default(``),mL=()=>N({path:`config.limit`,min:1,max:500,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Rows per page.`}).default(100),hL=()=>Vu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),gL=e=>t=>{let n=t.value;if(!$d(n.list_view))return;let r=[];n.filters&&r.push(`filters`);for(let t of e){let e=n[t];if(!(e==null||e===``||e===!1)){if(typeof e==`object`&&!Array.isArray(e)){let t=e;if((t.include?.length??0)===0&&(t.exclude?.length??0)===0&&t.min==null&&t.max==null)continue}r.push(t)}}r.length>0&&t.issues.push({code:`custom`,input:n.list_view,message:`A list view already carries its own conditions — clear ${r.join(`, `)} or clear the list view.`,path:[`list_view`]})},_L=`accounts:salesforce@1`,vL=g(`salesforce_record_id`),yL=g(`company_name`),bL=g(`company_domain`),xL=g(`salesforce_account_match`),SL=r.object({search_id:r.literal(_L),connector:Xl(),config:r.object({custom_properties:sL(),filters:cL(`Industry`),list_view:lL(`Account`),domains:k({path:`config.domains`,groupPath:`config.general`,sectionKey:`general`,label:`Domains`,placeholder:`acme.com`,info:`Matches exact spellings of the Website URL (Salesforce has no domain field).`}),industry:Wu({path:`config.industry`,groupPath:`config.general`,sectionKey:`general`,label:`Industry`,required:!1,info:`The org's actual Industry picklist values.`,enabledIf:_(`salesforce`),optionsDef:Zd(`Account`,`Industry`)}),owner:uL(),created_within:fL(),modified_within:pL(),limit:mL(),cursor:hL(),output_fields:P(r.object({[vL.name]:A({fieldName:vL.name}),[yL.name]:A({fieldName:yL.name}),[bL.name]:A({fieldName:bL.name}),[xL.name]:A({fieldName:xL.name})}))}).check(e=>gL([`domains`,`industry`,`owner`,`created_within`,`modified_within`])(e))}),CL={allowManagedConnection:!1,mode:null,credits:null,info:`Salesforce searches are free — you bring your own Salesforce connection.`},wL=`accounts-salesforce-v1`,TL=class extends Z{billing={billableOperation:wL,cost:CL};searchId=_L;schema=SL;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[vL.name]:this.catalogOutput(vL),[yL.name]:this.catalogOutput(yL),[bL.name]:this.catalogOutput(bL),[xL.name]:this.catalogOutput(xL)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitOperation:`salesforce_api`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`salesforce_record_id`}]}}async getAgentContext(e){return tf(e,{objects:[`Account`],includeListViewsFor:[`Account`]})}},EL=SL,DL={searchId:_L,billableOperation:wL,baseSearch:Q(_L),outputFieldMode:`static`,paginationType:`cursor`,label:`Salesforce accounts`,categories:[`companies`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List accounts from your Salesforce org: identity columns (id, name, domain) plus a JSON record with the standard field set and any custom fields you pick. Filter with field conditions or run one of the org's own list views.`,tags:[V.WEBSITE,V.NEW],keywords:[`crm`,`sfdc`,`company`,`list`,`records`,`import`,`organization`],docPath:$(_L),guide:"Call get_provider_context first for the org's field API names and picklist values. The domain column is derived from the Website URL (Salesforce has no domain field) — accounts with exotic Website formats yield null. Person accounts (B2C orgs) appear as accounts here. To find stale accounts, filter on `LastActivityDate` (e.g. `LastActivityDate < LAST_N_DAYS:90` — closed tasks + events, not literal touches). `list_view` runs the org's own segmentation (XOR with filters/shortcuts). Results page by record id; rows the connected user cannot see are silently absent.",cost:CL,provider:`salesforce`,defaultPayload:{search_id:_L,connector:{strategy:`first`,connections:[]},config:{custom_properties:[],filters:null,list_view:``,domains:{include:[],exclude:[]},industry:``,owner:``,created_within:``,modified_within:``,limit:100,cursor:``,output_fields:{salesforce_record_id:{enabled:!0,alias:``},company_name:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},salesforce_account_match:{enabled:!0,alias:``}}}}},OL=`bucket:entries@1`,kL=r.object({search_id:r.literal(OL),connector:Xl(),config:r.object({bucket:Vu({path:`config.bucket`,groupPath:`config.general`,inputType:`text`,label:`Bucket`,sectionKey:`general`,description:`The bucket's org-unique slug. Its entries (one row each) are returned.`}),limit:N({path:`config.limit`,min:1,max:2e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of entries per page`}).default(100),cursor:Vu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),include_metadata:zu({path:`config.include_metadata`,groupPath:`config.general`,sectionKey:`general`,label:`Include metadata`,description:`Provenance (source sheet/row/run) and expiry as extra columns.`,defaultValue:!1})})}),AL={allowManagedConnection:!0,mode:`per_search`,credits:{default:0},info:`Reading your own bucket is free.`},jL=`bucket-entries-v1-pipe0`,ML=class extends Z{billing={billableOperation:jL,cost:AL};searchId=OL;schema=kL;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitOperation:`pipe0_api_operation`,rateLimitRatio:1,allowManagedConnection:!0}]}},NL=kL,PL={searchId:OL,billableOperation:jL,baseSearch:Q(OL),outputFieldMode:`dynamic`,paginationType:`cursor`,label:`Read bucket entries`,categories:[`data`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`List the entries in a bucket — one row per entry, with its identifying field values (and counter number / expiry).`,tags:[V.FIELDS,V.NEW],keywords:[`claims`,`counter`,`suppression`,`list`,`lookup`,`rows`],docPath:$(OL),cost:AL,provider:`pipe0`,defaultPayload:{search_id:OL,connector:{strategy:`first`,connections:[]},config:{bucket:``,limit:100,cursor:``,include_metadata:!1}}},FL=()=>N({path:`config.limit`,min:1,max:500,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Rows per page`}).default(100),IL=()=>N({path:`config.page_number`,min:1,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Page`,description:`1-based page index (offset pagination; Attio reports no total count)`}).nullable().default(1),LL=(e,t)=>Mu({path:`config.custom_properties`,groupPath:`config.general`,sectionKey:`general`,label:`Custom attributes`,placeholder:e,info:`Added to the record JSON alongside the standard set — attribute api_slugs, custom attributes included.`,optionsDef:t}),RL=e=>ju({path:`config.filters`,groupPath:`config.general`,sectionKey:`general`,label:`Attribute filters`,fieldNamePlaceholder:e,info:"Rows filter on any Attio attribute by api_slug — custom attributes included; target value sub-properties as `slug.sub_property` (e.g. `domains.root_domain`). Select/status values are workspace-defined TITLES and support equality only. Operator support varies PER ATTRIBUTE TYPE and is enforced by Attio, not this schema (a 400 names the allowed set) — $eq works everywhere; prefer it unless you know the attribute accepts more."}),zL=e=>Wu({path:`config.saved_view`,groupPath:`config.general`,sectionKey:`general`,label:`Saved view`,required:!1,info:`Filter with one of this workspace's saved Attio views instead of the fields above — views and filters are mutually exclusive.`,optionsDef:e}),BL=()=>Uu({required:!1,path:`config.created_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Created at`,description:``,options:[{label:`Any time`,value:``},{label:`Last 24 hours`,value:`l24h`},{label:`Last 48 hours`,value:`l48h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}]}).default(``);function VL(e,t){let n=e.value,r=Array.isArray(n.saved_view)?n.saved_view[0]:n.saved_view;if(!r)return;let i=[];(n.filters?.conditions?.length??0)>0&&i.push(`filters`);for(let e of t){let t=n[e];(Array.isArray(t)?t.length>0:typeof t==`object`&&t?Object.values(t).some(e=>Array.isArray(e)?e.length>0:!!e):t)&&i.push(e)}i.length>0&&e.issues.push({code:`custom`,input:r,path:[`saved_view`],message:`A saved view replaces the filter fields — clear ${i.join(`, `)} or clear the saved view (Attio rejects the combination).`})}const HL=`companies:attio@1`,UL=g(`attio_record_id`),WL=g(`company_name`),GL=g(`company_domain`),KL=g(`attio_company_match`),qL=r.object({search_id:r.literal(HL),connector:Xl(),config:r.object({custom_properties:LL(`categories`,Af({target:`objects`,identifier:`companies`})),filters:RL(`categories`),domains:k({path:`config.domains`,groupPath:`config.general`,sectionKey:`general`,label:`Domains`,placeholder:`acme.com`}),domain_match:Uu({required:!1,path:`config.domain_match`,groupPath:`config.general`,sectionKey:`general`,label:`Domain matching`,description:`Exact domain values are unique per company; root domain also matches subdomain records (app.acme.com).`,options:[{label:`Exact domain`,value:`domain`},{label:`Root domain`,value:`root_domain`}]}).default(`domain`),saved_view:zL(Ef({target:`objects`,identifier:`companies`})),created_within:BL(),limit:FL(),page_number:IL(),output_fields:P(r.object({[UL.name]:A({fieldName:UL.name}),[WL.name]:A({fieldName:WL.name}),[GL.name]:A({fieldName:GL.name}),[KL.name]:A({fieldName:KL.name})}))}).check(e=>VL(e,[`domains`,`created_within`]))}),JL={allowManagedConnection:!1,mode:null,credits:null,info:`Searching your own Attio workspace is free.`},YL=`companies-attio-v1`,XL=class extends Z{billing={billableOperation:YL,cost:JL};searchId=HL;schema=qL;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[UL.name]:this.catalogOutput(UL),[WL.name]:this.catalogOutput(WL),[GL.name]:this.catalogOutput(GL),[KL.name]:this.catalogOutput(KL)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitOperation:`attio_query`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`attio_record_id`}]}}async getAgentContext(e){return Mf(e,{objects:[`companies`],includeViewsFor:[`companies`]})}},ZL=qL,QL={searchId:HL,billableOperation:YL,baseSearch:Q(HL),outputFieldMode:`static`,paginationType:`page_number`,label:`Attio companies`,categories:[`companies`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List companies from your Attio workspace: identity columns (id, name, domain) plus a JSON record with the standard attribute set and any custom attributes you pick.`,tags:[V.NEW],keywords:[`crm`,`list`,`records`,`import`,`account`,`workspace`],docPath:$(HL),guide:`Call get_provider_context first for this workspace's attribute slugs and enumeration titles — use api_slugs verbatim. Standard attributes become typed columns; everything else rides in the company JSON — expand it or chain json:extract downstream. The domains shortcut matches exact domains by default (unique per company) or root domains (subdomains too); a saved view replaces the filter fields entirely. For staleness, filter or sort on last_interaction (targets its interacted_at timestamp) — Attio's read-only communication-intelligence signal, auto-populated from members' synced email/calendar. Attio reports no total count — page until a short page.`,cost:JL,provider:`attio`,defaultPayload:{search_id:HL,connector:{strategy:`first`,connections:[]},config:{custom_properties:[],filters:null,domains:{include:[],exclude:[]},domain_match:`domain`,saved_view:``,created_within:``,limit:100,page_number:1,output_fields:{attio_record_id:{enabled:!0,alias:``},company_name:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},attio_company_match:{enabled:!0,alias:``}}}}},$L=`companies:entitysearch:parallel@1`,eR=g(`company_name`),tR=g(`company_domain`),nR=g(`company_description`),rR=g(`company_profile_url`),iR=g(`parallel_company_entity_match`),aR=r.object({search_id:r.literal($L),connector:Zl(),config:r.object({objective:Hu({path:`config.objective`,sectionKey:`general`,groupPath:`config.general`,label:`Objective`,rows:4,minLength:10,placeholder:`AI startups in Europe that raised a Series A in 2024`,description:`Plain-text natural-language description of the companies to find.`}),limit:N({path:`config.limit`,min:5,max:1e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of entities to return (5–1000).`}).default(100),output_fields:P(r.object({[eR.name]:A({fieldName:eR.name}),[tR.name]:A({fieldName:tR.name}),[nR.name]:A({fieldName:nR.name}),[rR.name]:A({fieldName:rR.name}),[iR.name]:A({fieldName:iR.name})}))})}),oR={match:`any`,fields:[{fieldName:`company_profile_url`}]},sR={allowManagedConnection:!0,mode:`per_page`,credits:{default:.5},info:`1 page = 100 results; billed per 100 results returned (e.g. 100 results = 1 page, 1,000 results = 10 pages). A search returns up to your selected limit in a single request.`},cR=`companies-entitysearch-parallel-v1`,lR=class extends Z{billing={billableOperation:cR,cost:sR};searchId=$L;schema=aR;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[eR.name]:this.catalogOutput(eR),[tR.name]:this.catalogOutput(tR),[nR.name]:this.catalogOutput(nR),[rR.name]:this.catalogOutput(rR),[iR.name]:this.catalogOutput(iR)}}getConnectionsRequirements(){return[{provider:`parallel`,rateLimitOperation:`parallel_entity_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return oR}},uR=aR,dR={searchId:$L,billableOperation:cR,baseSearch:Q($L),label:`Company search (AI)`,categories:[`companies`],paginationType:`page_number`,hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Natural-language company search powered by Parallel Entity Search — for asks static filters can't express.`,tags:[V.COMPANY_PROFILES],keywords:[`find companies`,`accounts`,`prospect`,`natural language`,`organizations`],docPath:$($L),guide:`Best for asks the static filters of the amplemarket or crustdata company searches can't express — check their schemas first. Returns sparse records (identity basics plus a match rationale) that need further enrichment, where the filter-based datasets return full profiles. When filters get close, prefer a broad filter-based search narrowed by enrichment + row filtering over a natural-language objective.`,cost:sR,provider:`parallel`,defaultPayload:{search_id:$L,connector:null,config:{objective:``,limit:100,output_fields:{company_name:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},company_description:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},parallel_company_entity_match:{enabled:!1,alias:``}}}}},fR=`companies:hubspot@1`,pR=g(`hubspot_object_id`),mR=g(`company_name`),hR=g(`company_domain`),gR=g(`hubspot_company_match`),_R=r.object({search_id:r.literal(fR),connector:Xl(),config:r.object({query:Vu({path:`config.query`,groupPath:`config.general`,inputType:`text`,label:`Search text`,sectionKey:`general`,info:`Free-text search over HubSpot's default searchable company properties (name, domain, website, phone).`}).nullable(),custom_properties:Mu({path:`config.custom_properties`,groupPath:`config.general`,sectionKey:`general`,label:`Custom properties`,placeholder:`account_tier`,info:"Added to the company JSON under `custom_properties` — internal names, custom properties included (standard-set names are already top-level)."}),filters:ju({path:`config.filters`,groupPath:`config.general`,sectionKey:`general`,label:`Property filters`,fieldNamePlaceholder:`industry`,info:`Rows filter on any HubSpot property by internal name — including custom properties. Enumeration values are the portal's internal option values (case-sensitive).`}),domains:k({path:`config.domains`,groupPath:`config.general`,sectionKey:`general`,label:`Domains`,placeholder:`acme.com`}),owner:Wu({path:`config.owner`,groupPath:`config.general`,sectionKey:`general`,label:`Owner`,required:!1,info:``,enabledIf:_(`hubspot`),optionsDef:dp}),created_within:Uu({required:!1,path:`config.created_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Created at`,description:``,options:[{label:`Any time`,value:``},{label:`Last 24 hours`,value:`l24h`},{label:`Last 48 hours`,value:`l48h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}]}).default(``),modified_within:Uu({required:!1,path:`config.modified_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Last modified`,description:``,options:[{label:`Any time`,value:``},{label:`Last 24 hours`,value:`l24h`},{label:`Last 48 hours`,value:`l48h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}]}).default(``),limit:N({path:`config.limit`,min:1,max:200,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Rows per page (HubSpot search caps pages at 200 and total results at 10,000).`}).default(100),cursor:Vu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[pR.name]:A({fieldName:pR.name}),[mR.name]:A({fieldName:mR.name}),[hR.name]:A({fieldName:hR.name}),[gR.name]:A({fieldName:gR.name})}))})}),vR={allowManagedConnection:!1,mode:null,credits:null,info:`Searching your own HubSpot portal is free.`},yR=`companies-hubspot-v1`,bR=class extends Z{billing={billableOperation:yR,cost:vR};searchId=fR;schema=_R;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[pR.name]:this.catalogOutput(pR),[mR.name]:this.catalogOutput(mR),[hR.name]:this.catalogOutput(hR),[gR.name]:this.catalogOutput(gR)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitOperation:`hubspot_crm_search`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`hubspot_object_id`}]}}async getAgentContext(e){return mp(e,{objectTypes:[[`companies`,`0-2`]]})}},xR=_R,SR={searchId:fR,billableOperation:yR,baseSearch:Q(fR),outputFieldMode:`static`,paginationType:`cursor`,label:`HubSpot companies`,categories:[`companies`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List companies from your HubSpot portal: identity columns (id, name, domain) plus a JSON record with the standard property set and any custom properties you pick.`,tags:[V.WEBSITE,V.NEW],keywords:[`crm`,`lookup`,`list`,`records`,`import`,`account`],docPath:$(fR),guide:"Call get_provider_context first for this portal's property names and enumeration option values — use internal names verbatim. Domain include/exclude matches the primary `domain` property (lowercased). Newly created records lag search indexing by a few moments; archived records never appear. Total results cap at 10,000 per query.",cost:vR,provider:`hubspot`,defaultPayload:{search_id:fR,connector:{strategy:`first`,connections:[]},config:{query:``,custom_properties:[],filters:null,domains:{include:[],exclude:[]},owner:``,created_within:``,modified_within:``,limit:100,cursor:``,output_fields:{hubspot_object_id:{enabled:!0,alias:``},company_name:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},hubspot_company_match:{enabled:!0,alias:``}}}}};function CR(e){let t=!0,n=e=>{if(t!==!1&&typeof e==`object`&&e){Array.isArray(e)&&e.length>0&&(t=!1);for(let r of Object.values(e))typeof r!=`object`&&r!=null&&r!==``&&(t=!1),typeof r==`object`&&r&&n(r)}};return n(e),t}const wR=`companies:profiles:amplemarket@2`,TR=g(`company_name`),ER=g(`company_domain`),DR=g(`company_description`),OR=g(`company_profile_url`),kR=g(`amplemarket_company_match`),AR=r.object({search_id:r.literal(wR),connector:Zl(),config:r.object({limit:N({label:`Limit`,description:`Max number of search results`,path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,sectionKey:`pagination`}).default(100),page_number:N({path:`config.page_number`,groupPath:`config.pagination`,label:`Page number`,min:1,sectionKey:`pagination`,description:``}).nullish(),output_fields:P(r.object({[TR.name]:A({fieldName:TR.name}),[ER.name]:A({fieldName:ER.name}),[DR.name]:A({fieldName:DR.name}),[OR.name]:A({fieldName:OR.name}),[kR.name]:A({fieldName:kR.name})})),filters:r.object({hq_locations:M({path:`config.filters.hq_locations`,sectionKey:`config.filters`,label:`HQ locations`,description:``,placeholder:J(`location`),groupPath:`config.filters.location`,optionsDef:h(`locations`)}).default({include:[],exclude:[]}),company_names:k({sectionKey:`config.filters`,path:`config.filters.company_names`,label:`Company names`,description:``,placeholder:J(`company_name`),groupPath:`config.filters.categories`,suggestionsDef:h(`company_names`)}).default({include:[],exclude:[]}),company_domains:k({sectionKey:`config.filters`,path:`config.filters.company_domains`,label:`Company domains`,description:``,placeholder:J(`company_domain`),groupPath:`config.filters.categories`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),company_profile_urls:k({sectionKey:`config.filters`,path:`config.filters.company_profile_urls`,label:`Company LinkedIn URLs`,description:``,groupPath:`config.filters.categories`}).default({include:[],exclude:[]}),company_types:j({sectionKey:`config.filters`,path:`config.filters.company_types`,disableSearch:!1,label:`Company Type`,description:``,groupPath:`config.filters.categories`,options:m(`amplemarket.company_types`),required:!1}).default([]),investors:Gu({sectionKey:`config.filters`,path:`config.filters.investors`,label:`Investor names`,optionsDef:h(`company.crunchbase_investors.crustdata`),description:`A list of company investor names`,placeholder:J(`investor`),groupPath:`config.filters.investors`,disableSearch:!1,required:!1}).default([]),company_industries:Fu({sectionKey:`config.filters`,path:`config.filters.company_industries`,optionsDef:Ge(`amplemarket.industries`),disableSearch:!1,label:`Industries`,description:``,placeholder:J(`industry`),groupPath:`config.filters.industry`}).default({include:[],exclude:[]}),customer_types:j({sectionKey:`config.filters`,path:`config.filters.customer_types`,options:[{value:`b2b`,label:`B2B`},{value:`b2c`,label:`B2C`}],required:!1,disableSearch:!0,label:`Customer Types`,description:``,groupPath:`config.filters.industry`}).default([]),keywords:k({sectionKey:`config.filters`,path:`config.filters.keywords`,label:`Keywords`,description:``,groupPath:`config.filters.industry`}).default({include:[],exclude:[]}),revenue_groups:j({path:`config.filters.revenue_groups`,sectionKey:`config.filters`,label:`Revenue groups`,description:``,disableSearch:!0,options:m(`amplemarket.company_revenue`),required:!1,groupPath:`config.filters.financials`}).default([]),founded_year:Pu({path:`config.filters.founded_year`,sectionKey:`config.filters`,label:`Founded year`,groupPath:`config.filters.general`,min:0,max:2040,description:``}).default({min:null,max:null}),open_position_titles:O({path:`config.filters.open_position_titles`,sectionKey:`config.filters`,label:`Job openings for titles`,groupPath:`config.filters.job_openings`,description:``,placeholder:J(`title`),suggestionsDef:h(`titles`)}),headcount:j({sectionKey:`config.filters`,path:`config.filters.headcount`,disableSearch:!1,options:m(`amplemarket.company_size`),label:`Company sizes`,required:!1,description:``,groupPath:`config.filters.company_size`}).default([]),headcount_growth_l6m_in_percent:Pu({path:`config.filters.headcount_growth_l6m_in_percent`,sectionKey:`config.filters`,label:`Headcount growth over last 6 months (in %)`,groupPath:`config.filters.company_size`,description:``,max:1e4,min:0}).default({min:null,max:null})}).check(e=>{CR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),jR={match:`any`,fields:[{fieldName:`company_profile_url`}]},MR={allowManagedConnection:!0,mode:`per_page`,credits:{default:2}},NR=`companies-profiles-amplemarket-v2`,PR=class extends Z{billing={billableOperation:NR,cost:MR};searchId=wR;schema=AR;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[TR.name]:this.catalogOutput(TR),[ER.name]:this.catalogOutput(ER),[DR.name]:this.catalogOutput(DR),[OR.name]:this.catalogOutput(OR),[kR.name]:this.catalogOutput(kR)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitOperation:`amplemarket_company_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return jR}},FR=AR,IR={searchId:wR,billableOperation:NR,baseSearch:Q(`companies:profiles:amplemarket@2`),label:`Company search`,categories:[`companies`],paginationType:`page_number`,hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Filter-based company search on Amplemarket's dataset — precise firmographic filters.`,tags:[V.COMPANY_PROFILES],keywords:[`accounts`,`prospect`,`find companies`,`organizations`,`firmographic`],docPath:$(wR),guide:`The most precise of the three prospecting datasets — prefer it when its filters express the ask exactly. If a needed criterion is missing here, check the crustdata search's wider filter set before falling back to the natural-language parallel search.`,cost:MR,provider:`amplemarket`,defaultPayload:{search_id:wR,connector:null,config:{limit:100,page_number:1,output_fields:{company_name:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},company_description:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},amplemarket_company_match:{enabled:!0,alias:``}},filters:{company_industries:{include:[],exclude:[]},company_names:{include:[],exclude:[]},company_profile_urls:{include:[],exclude:[]},company_types:[],company_domains:{include:[],exclude:[]},customer_types:[],headcount_growth_l6m_in_percent:{min:null,max:null},founded_year:{min:null,max:null},revenue_groups:[],investors:[],keywords:{include:[],exclude:[]},open_position_titles:[],headcount:[],hq_locations:{include:[],exclude:[]}}}}},LR=`companies:profiles:crustdata@3`,RR=[{label:`Any time`,value:``},{label:`Last month`,value:`l1m`},{label:`Last 3 months`,value:`l3m`},{label:`Last 6 months`,value:`l6m`},{label:`Last 12 months`,value:`l12m`},{label:`Last 2 years`,value:`l24m`}],zR=[{label:`Any time`,value:``},{label:`Last 12 months`,value:`l12m`},{label:`Last 2 years`,value:`l24m`},{label:`Last 5 years`,value:`l60m`}],BR=g(`company_name`),VR=g(`company_domain`),HR=g(`company_profile_url`),UR=g(`crustdata_company_match_v2`),WR=r.object({search_id:r.literal(LR),connector:Zl(),config:r.object({limit:N({path:`config.limit`,min:1,max:1e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Page size`,description:`Max number of search results per page`}).default(100),cursor:Vu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[BR.name]:A({fieldName:BR.name}),[VR.name]:A({fieldName:VR.name}),[HR.name]:A({fieldName:HR.name}),[UR.name]:A({fieldName:UR.name})})),filters:r.object({company_names:k({path:`config.filters.company_names`,sectionKey:`config.filters`,label:`Company name`,description:``,placeholder:J(`company_name`),maxItems:1e3,groupPath:`config.filters.company`,suggestionsDef:h(`company_names`,{widgets:{emoji:{char:`🏷️`}}})}).default({include:[],exclude:[]}),company_domains:k({path:`config.filters.company_domains`,sectionKey:`config.filters`,label:`Company domain`,description:``,placeholder:J(`company_domain`),maxItems:1e3,groupPath:`config.filters.company`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),company_profile_urls:k({path:`config.filters.company_profile_urls`,sectionKey:`config.filters`,label:`Company LinkedIn URL`,description:``,placeholder:`https://linkedin.com/company/...`,maxItems:1e3,groupPath:`config.filters.company`}).default({include:[],exclude:[]}),company_types:j({path:`config.filters.company_types`,sectionKey:`config.filters`,label:`Company type`,description:``,placeholder:`Public, Private, ...`,disableSearch:!0,required:!1,options:m(`crustdata2.company_types`),groupPath:`config.filters.company`}).default([]),year_founded:Lu({path:`config.filters.year_founded`,sectionKey:`config.filters`,label:`Year founded`,description:``,legend:`e.g. 2018 - 2024`,min:1e3,max:2100,groupPath:`config.filters.company`}),hq_locations:Gu({path:`config.filters.hq_locations`,sectionKey:`config.filters`,label:`HQ location`,description:``,disableSearch:!1,placeholder:J(`location`),required:!1,groupPath:`config.filters.location`,optionsDef:h(`locations`)}).default([]),hq_countries:Fu({path:`config.filters.hq_countries`,sectionKey:`config.filters`,label:`HQ country`,description:``,placeholder:`United States, Germany, ...`,optionsDef:Ge(`crustdata2.countries`),groupPath:`config.filters.location`}).default({include:[],exclude:[]}),industries:M({path:`config.filters.industries`,sectionKey:`config.filters`,label:`Industry`,description:``,placeholder:J(`industry`),groupPath:`config.filters.industry`,optionsDef:h(`linkedin_industries.crustdata`,{limit:300})}).default({include:[],exclude:[]}),categories:M({path:`config.filters.categories`,sectionKey:`config.filters`,label:`Category`,description:``,placeholder:`Artificial Intelligence (AI), SaaS, ...`,groupPath:`config.filters.industry`,optionsDef:h(`company.categories.crustdata`)}).default({include:[],exclude:[]}),specialities_keywords:k({path:`config.filters.specialities_keywords`,sectionKey:`config.filters`,label:`Specialities contain keywords`,description:`Matches the speciality tags a company lists on its profile. Includes match fuzzily; excludes remove exact tags only.`,placeholder:`CRM, Machine Learning, ...`,maxItems:100,groupPath:`config.filters.industry`,suggestionsDef:h(`company.specialities.crustdata`)}).default({include:[],exclude:[]}),headcount_brackets:j({path:`config.filters.headcount_brackets`,sectionKey:`config.filters`,label:`Headcount`,description:``,placeholder:`1-10`,disableSearch:!0,required:!1,options:m(`crustdata.company_size`),groupPath:`config.filters.company_size`}).default([]),engineering_headcount_brackets:j({path:`config.filters.engineering_headcount_brackets`,sectionKey:`config.filters`,label:`Engineering team size`,description:``,placeholder:`11-50`,disableSearch:!0,required:!1,options:m(`crustdata2.function_headcount`),groupPath:`config.filters.company_size`}).default([]),sales_headcount_brackets:j({path:`config.filters.sales_headcount_brackets`,sectionKey:`config.filters`,label:`Sales team size`,description:``,placeholder:`11-50`,disableSearch:!0,required:!1,options:m(`crustdata2.function_headcount`),groupPath:`config.filters.company_size`}).default([]),headcount_growth_l6m_in_percent:Lu({path:`config.filters.headcount_growth_l6m_in_percent`,sectionKey:`config.filters`,label:`Headcount growth over last 6 months in percent`,description:`Negative values match shrinking companies.`,legend:`e.g. 15 - 200`,min:-100,max:1e5,groupPath:`config.filters.company_size`}),revenue_in_usd:Lu({path:`config.filters.revenue_in_usd`,sectionKey:`config.filters`,label:`Estimated annual revenue (USD)`,description:``,legend:`1k - 10B`,min:1e3,max:1e10,groupPath:`config.filters.financials`}),last_funding_round_types:j({path:`config.filters.last_funding_round_types`,sectionKey:`config.filters`,label:`Last funding round`,description:``,placeholder:`Series A`,disableSearch:!0,required:!1,options:m(`crustdata.last_funding_round_type`),groupPath:`config.filters.financials`}).default([]),last_funding_within:Uu({path:`config.filters.last_funding_within`,sectionKey:`config.filters`,label:`Last funding raised within`,description:`Only companies whose latest funding round closed within this time window.`,placeholder:`Last month, last year, ...`,options:RR,required:!1,defaultValue:``,groupPath:`config.filters.financials`}).default(``),last_funding_amount_in_usd:Lu({path:`config.filters.last_funding_amount_in_usd`,sectionKey:`config.filters`,label:`Last funding amount (USD)`,description:``,legend:`1k - 10B`,min:1e3,max:1e10,groupPath:`config.filters.financials`}),total_funding_amount_in_usd:Lu({path:`config.filters.total_funding_amount_in_usd`,sectionKey:`config.filters`,label:`Total funding (USD)`,description:``,legend:`1k - 10B`,min:1e3,max:1e10,groupPath:`config.filters.financials`}),investors:k({path:`config.filters.investors`,sectionKey:`config.filters`,label:`Investors`,description:`Investor names as Crustdata records them, e.g. "Sequoia Capital".`,placeholder:J(`investor`),maxItems:1e3,groupPath:`config.filters.financials`,suggestionsDef:h(`company.crunchbase_investors.crustdata`)}).default({include:[],exclude:[]}),is_acquired:Bu({path:`config.filters.is_acquired`,sectionKey:`config.filters`,label:`Acquired`,description:``,defaultValue:null,groupPath:`config.filters.status`}),ipo_within:Uu({path:`config.filters.ipo_within`,sectionKey:`config.filters`,label:`IPO within`,description:`Only companies that went public within this time window.`,placeholder:`Last year, last 5 years, ...`,options:zR,required:!1,defaultValue:``,groupPath:`config.filters.status`}).default(``),markets:Fu({path:`config.filters.markets`,sectionKey:`config.filters`,label:`Stock market`,description:``,placeholder:`NASDAQ, NYSE, ...`,optionsDef:Ge(`crustdata2.markets`),groupPath:`config.filters.status`}).default({include:[],exclude:[]}),follower_count_brackets:j({path:`config.filters.follower_count_brackets`,sectionKey:`config.filters`,label:`Number of LinkedIn followers`,description:``,placeholder:`1-500`,disableSearch:!0,required:!1,options:m(`crustdata.company_followers`),groupPath:`config.filters.web_presence`}).default([]),follower_growth_l6m_in_percent:Lu({path:`config.filters.follower_growth_l6m_in_percent`,sectionKey:`config.filters`,label:`LinkedIn follower growth over last 6 months in percent`,description:`Negative values match shrinking audiences.`,legend:`e.g. 20 - 500`,min:-100,max:1e5,groupPath:`config.filters.web_presence`}),technologies:M({path:`config.filters.technologies`,sectionKey:`config.filters`,label:`Technologies used`,description:`Technologies detected on the company's web presence and job postings.`,placeholder:`Salesforce, Cloudflare, ...`,groupPath:`config.filters.technology`,optionsDef:h(`company.technologies.crustdata`)}).default({include:[],exclude:[]}),competitor_domains:O({path:`config.filters.competitor_domains`,sectionKey:`config.filters`,label:`Competitor domain`,description:`Companies Crustdata tracks as competitors of the given domains.`,placeholder:J(`company_domain`),maxItems:100,groupPath:`config.filters.competitors`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})})}).check(e=>{CR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),GR={match:`any`,fields:[{fieldName:`company_profile_url`}]},KR={allowManagedConnection:!0,mode:`per_result`,credits:{default:.15,level1:{credits:.07,weight:10}},info:`1 page = 100 records; 200 results = 2 pages`},qR=`companies-profiles-crustdata-v3`,JR=class extends Z{billing={billableOperation:qR,cost:KR};searchId=LR;schema=WR;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[BR.name]:this.catalogOutput(BR),[VR.name]:this.catalogOutput(VR),[HR.name]:this.catalogOutput(HR),[UR.name]:this.catalogOutput(UR)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_company_db_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return GR}},YR=WR,XR={searchId:LR,billableOperation:qR,baseSearch:Q(`companies:profiles:crustdata@2`),paginationType:`cursor`,label:`Company search`,categories:[`companies`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Filter-based company search on Crustdata's dataset — widest filter surface: funding, investors, growth, team composition, technology signals.`,tags:[V.COMPANY_PROFILES],keywords:[`accounts`,`prospect`,`find companies`,`organizations`,`firmographic`,`linkedin`],docPath:$(LR),guide:`The general-purpose default among the prospecting datasets, with the widest filter surface (funding, investors, growth, team composition, technology signals). When a criterion isn't an exact filter match, search broadly here and narrow afterwards — enrich the qualifying signal, then filter rows — rather than switching to the natural-language parallel search.`,cost:KR,provider:`crustdata`,defaultPayload:{search_id:LR,connector:null,config:{limit:100,cursor:``,output_fields:{company_name:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},crustdata_company_match_v2:{enabled:!0,alias:``}},filters:{company_names:{include:[],exclude:[]},company_domains:{include:[],exclude:[]},company_profile_urls:{include:[],exclude:[]},company_types:[],year_founded:{from:null,to:null},hq_locations:[],hq_countries:{include:[],exclude:[]},industries:{include:[],exclude:[]},categories:{include:[],exclude:[]},specialities_keywords:{include:[],exclude:[]},headcount_brackets:[],engineering_headcount_brackets:[],sales_headcount_brackets:[],headcount_growth_l6m_in_percent:{from:null,to:null},revenue_in_usd:{from:null,to:null},last_funding_round_types:[],last_funding_within:``,last_funding_amount_in_usd:{from:null,to:null},total_funding_amount_in_usd:{from:null,to:null},investors:{include:[],exclude:[]},is_acquired:null,ipo_within:``,markets:{include:[],exclude:[]},follower_count_brackets:[],follower_growth_l6m_in_percent:{from:null,to:null},technologies:{include:[],exclude:[]},competitor_domains:[]}}}},ZR=`contacts:hubspot@1`,QR=g(`hubspot_object_id`),$R=g(`email`),ez=g(`first_name`),tz=g(`last_name`),nz=g(`hubspot_contact_match`),rz=r.object({search_id:r.literal(ZR),connector:Xl(),config:r.object({query:Vu({path:`config.query`,groupPath:`config.general`,inputType:`text`,label:`Search text`,sectionKey:`general`,info:`Free-text search over HubSpot's default searchable contact properties (name, email, phone, company).`}).nullable(),custom_properties:Mu({path:`config.custom_properties`,groupPath:`config.general`,sectionKey:`general`,label:`Custom properties`,placeholder:`product_signup_date`,info:"Added to the contact JSON under `custom_properties` — internal names, custom properties included (standard-set names are already top-level)."}),filters:ju({path:`config.filters`,groupPath:`config.general`,sectionKey:`general`,label:`Property filters`,fieldNamePlaceholder:`lifecyclestage`,info:`Rows filter on any HubSpot property by internal name — including custom properties. Enumeration values are the portal's internal option values (case-sensitive).`}),lifecycle_stage:Wu({path:`config.lifecycle_stage`,groupPath:`config.general`,sectionKey:`general`,label:`Lifecycle stage`,required:!1,info:`This portal's actual stages — custom stages included.`,enabledIf:_(`hubspot`),optionsDef:fp(`contacts`,`lifecyclestage`)}),owner:Wu({path:`config.owner`,groupPath:`config.general`,sectionKey:`general`,label:`Owner`,required:!1,info:``,enabledIf:_(`hubspot`),optionsDef:dp}),created_within:Uu({required:!1,path:`config.created_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Created at`,description:``,options:[{label:`Any time`,value:``},{label:`Last 24 hours`,value:`l24h`},{label:`Last 48 hours`,value:`l48h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}]}).default(``),modified_within:Uu({required:!1,path:`config.modified_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Last modified`,description:``,options:[{label:`Any time`,value:``},{label:`Last 24 hours`,value:`l24h`},{label:`Last 48 hours`,value:`l48h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}]}).default(``),limit:N({path:`config.limit`,min:1,max:200,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Rows per page (HubSpot search caps pages at 200 and total results at 10,000).`}).default(100),cursor:Vu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[QR.name]:A({fieldName:QR.name}),[$R.name]:A({fieldName:$R.name}),[ez.name]:A({fieldName:ez.name}),[tz.name]:A({fieldName:tz.name}),[nz.name]:A({fieldName:nz.name})}))})}),iz={allowManagedConnection:!1,mode:null,credits:null,info:`Searching your own HubSpot portal is free.`},az=`contacts-hubspot-v1`,oz=class extends Z{billing={billableOperation:az,cost:iz};searchId=ZR;schema=rz;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[QR.name]:this.catalogOutput(QR),[$R.name]:this.catalogOutput($R),[ez.name]:this.catalogOutput(ez),[tz.name]:this.catalogOutput(tz),[nz.name]:this.catalogOutput(nz)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitOperation:`hubspot_crm_search`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`hubspot_object_id`}]}}async getAgentContext(e){return mp(e,{objectTypes:[[`contacts`,`0-1`]]})}},sz=rz,cz={searchId:ZR,billableOperation:az,baseSearch:Q(ZR),outputFieldMode:`static`,paginationType:`cursor`,label:`HubSpot contacts`,categories:[`people`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List contacts from your HubSpot portal: identity columns (id, email, name) plus a JSON record with the standard property set and any custom properties you pick.`,tags:[V.EMAIL,V.NEW],keywords:[`crm`,`lookup`,`list`,`records`,`import`,`person`],docPath:$(ZR),guide:`Call get_provider_context first for this portal's property names and enumeration option values — use internal names verbatim. Standard fields become typed columns; the standard set rides flat in the contact JSON and picked custom properties nest under custom_properties — expand it or chain json:extract downstream. Filters support any property; the lifecycle-stage picker shows the portal's actual stages (custom stages have opaque internal values). Newly created records lag search indexing by a few moments; archived records never appear. Total results cap at 10,000 per query — narrow with filters or date windows.`,cost:iz,provider:`hubspot`,defaultPayload:{search_id:ZR,connector:{strategy:`first`,connections:[]},config:{query:``,custom_properties:[],filters:null,lifecycle_stage:``,owner:``,created_within:``,modified_within:``,limit:100,cursor:``,output_fields:{hubspot_object_id:{enabled:!0,alias:``},email:{enabled:!0,alias:``},first_name:{enabled:!0,alias:``},last_name:{enabled:!0,alias:``},hubspot_contact_match:{enabled:!0,alias:``}}}}},lz=`contacts:salesforce@1`,uz=g(`salesforce_record_id`),dz=g(`first_name`),fz=g(`last_name`),pz=g(`email`),mz=g(`salesforce_contact_match`),hz=r.object({search_id:r.literal(lz),connector:Xl(),config:r.object({custom_properties:sL(),filters:cL(`Title`),list_view:lL(`Contact`),email_domains:k({path:`config.email_domains`,groupPath:`config.general`,sectionKey:`general`,label:`Email domains`,placeholder:`acme.com`,info:`Matches the email's domain part. Large orgs: domain matching is unindexed — combine with other filters when it times out.`}),has_email:zu({path:`config.has_email`,groupPath:`config.general`,sectionKey:`general`,label:`Has email`,description:``,defaultValue:!1}),owner:uL(),created_within:fL(),modified_within:pL(),limit:mL(),cursor:hL(),output_fields:P(r.object({[uz.name]:A({fieldName:uz.name}),[dz.name]:A({fieldName:dz.name}),[fz.name]:A({fieldName:fz.name}),[pz.name]:A({fieldName:pz.name}),[mz.name]:A({fieldName:mz.name})}))}).check(e=>gL([`email_domains`,`has_email`,`owner`,`created_within`,`modified_within`])(e))}),gz={allowManagedConnection:!1,mode:null,credits:null,info:`Salesforce searches are free — you bring your own Salesforce connection.`},_z=`contacts-salesforce-v1`,vz=class extends Z{billing={billableOperation:_z,cost:gz};searchId=lz;schema=hz;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[uz.name]:this.catalogOutput(uz),[dz.name]:this.catalogOutput(dz),[fz.name]:this.catalogOutput(fz),[pz.name]:this.catalogOutput(pz),[mz.name]:this.catalogOutput(mz)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitOperation:`salesforce_api`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`salesforce_record_id`}]}}async getAgentContext(e){return tf(e,{objects:[`Contact`],includeListViewsFor:[`Contact`]})}},yz=hz,bz={searchId:lz,billableOperation:_z,baseSearch:Q(lz),outputFieldMode:`static`,paginationType:`cursor`,label:`Salesforce contacts`,categories:[`people`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List contacts from your Salesforce org: identity columns (id, name, email) plus a JSON record with the standard field set and any custom fields you pick. Filter with field conditions or run one of the org's own list views.`,tags:[V.EMAIL,V.NEW],keywords:[`crm`,`sfdc`,`lookup`,`list`,`records`,`import`,`person`],docPath:$(lz),guide:"Call get_provider_context first for the org's field API names and picklist values — use them verbatim (`__c` = custom). Standard fields become typed columns; picked custom fields nest under custom_properties in the contact JSON. Filters accept dotted parent paths (Account.Industry); date values accept SOQL literals like LAST_N_DAYS:30. To find stale records, filter on `LastActivityDate` (e.g. `LastActivityDate < LAST_N_DAYS:90` — it reflects closed tasks + events, not literal touches). `list_view` runs the org's own segmentation (XOR with filters/shortcuts). Results page by record id (creation order) — a cursor never expires. Rows the connected user cannot see are silently absent (sharing rules).",cost:gz,provider:`salesforce`,defaultPayload:{search_id:lz,connector:{strategy:`first`,connections:[]},config:{custom_properties:[],filters:null,list_view:``,email_domains:{include:[],exclude:[]},has_email:!1,owner:``,created_within:``,modified_within:``,limit:100,cursor:``,output_fields:{salesforce_record_id:{enabled:!0,alias:``},first_name:{enabled:!0,alias:``},last_name:{enabled:!0,alias:``},email:{enabled:!0,alias:``},salesforce_contact_match:{enabled:!0,alias:``}}}}},xz=`query:databricks@1`,Sz=r.object({search_id:r.literal(xz),connector:Xl(),config:r.object({query:Hu({path:`config.query`,groupPath:`config.general`,sectionKey:`general`,label:`SQL query`,description:`A single read-only SELECT statement. It is wrapped automatically for pagination, so do not add your own LIMIT/OFFSET for paging.`,rows:8,minLength:1,maxLength:2e4}),limit:N({path:`config.limit`,min:1,max:1e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of rows per page`}).default(100),page_number:N({path:`config.page_number`,min:1,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Page`,description:`1-based page index (offset pagination)`}).nullable().default(1)})}),Cz={allowManagedConnection:!1,mode:null,credits:null,info:`Querying your own Databricks SQL warehouse is free.`},wz=`data-query-databricks-v1`,Tz=class extends Z{billing={billableOperation:wz,cost:Cz};searchId=xz;schema=Sz;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{}}getConnectionsRequirements(){return[{provider:`databricks`,rateLimitOperation:`databricks_query`,rateLimitRatio:1,allowManagedConnection:!1}]}async getAgentContext(e){return bF(`databricks`,e)}},Ez=Sz,Dz={searchId:xz,billableOperation:wz,baseSearch:Q(xz),outputFieldMode:`dynamic`,paginationType:`page_number`,label:`Query Databricks`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`Run a read-only SQL query against your Databricks SQL warehouse and return the rows.`,guide:"Databricks SQL dialect; config.query must be a single read-only statement (no self-managed LIMIT/OFFSET — pagination is wrapped automatically). To discover the schema, draft a payload with a placeholder config.query like \"SELECT 1\" and the chosen connection in connector.connections, then call get_provider_context once — it returns the workspace-wide table/column map (all Unity catalogs) for free. Always reference tables by their FULLY QUALIFIED three-part name exactly as the map lists them (catalog.schema.table, e.g. samples.accuweather.forecast_daily); a bare table name resolves against the warehouse's unpredictable current catalog and usually fails with TABLE_OR_VIEW_NOT_FOUND. Sample actual rows (also free) with run_search_oneshot, then write the real config.query. Tables under the `samples` catalog (and Databricks' other built-in example schemas like `tpch` and `tpcds_*`) are DEMO data shipped to every workspace, NOT the customer's own data. If the user asks about their data and the only match is under `samples`/a demo schema — or the map shows only demo tables — the connection isn't pointed at their catalog: confirm the intended table with the user before querying, and never answer their question from a demo table.",tags:[V.FIELDS,V.NEW],keywords:[`sql`,`database`,`warehouse`,`select`,`table`,`read data`],docPath:$(xz),cost:Cz,provider:`databricks`,defaultPayload:{search_id:xz,connector:{strategy:`first`,connections:[]},config:{query:``,limit:100,page_number:1}}},Oz=`query:postgres@1`,kz=r.object({search_id:r.literal(Oz),connector:Xl(),config:r.object({query:Hu({path:`config.query`,groupPath:`config.general`,sectionKey:`general`,label:`SQL query`,description:`A single read-only SELECT statement. It is wrapped automatically for pagination, so do not add your own LIMIT/OFFSET for paging.`,rows:8,minLength:1,maxLength:2e4}),limit:N({path:`config.limit`,min:1,max:1e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of rows per page`}).default(100),page_number:N({path:`config.page_number`,min:1,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Page`,description:`1-based page index (offset pagination)`}).nullable().default(1)})}),Az={allowManagedConnection:!1,mode:null,credits:null,info:`Querying your own PostgreSQL database is free.`},jz=`data-query-postgres-v1`,Mz=class extends Z{billing={billableOperation:jz,cost:Az};searchId=Oz;schema=kz;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{}}getConnectionsRequirements(){return[{provider:`postgres`,rateLimitOperation:`postgres_query`,rateLimitRatio:1,allowManagedConnection:!1}]}async getAgentContext(e){return bF(`postgres`,e)}},Nz=kz,Pz={searchId:Oz,billableOperation:jz,baseSearch:Q(Oz),outputFieldMode:`dynamic`,paginationType:`page_number`,label:`Query Postgres`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`Run a read-only SQL query against your own PostgreSQL database and return the rows.`,guide:`PostgreSQL dialect; config.query must be a single read-only SELECT (no self-managed LIMIT/OFFSET — pagination is wrapped automatically). To discover the schema, draft a payload with a placeholder config.query like "SELECT 1" and the chosen connection in connector.connections, then call get_provider_context once — it returns the full table/column map for free. Sample actual rows (also free) with run_search_oneshot, then write the real config.query.`,tags:[V.FIELDS,V.NEW],keywords:[`sql`,`database`,`select`,`table`,`read data`],docPath:$(Oz),cost:Az,provider:`postgres`,defaultPayload:{search_id:Oz,connector:{strategy:`first`,connections:[]},config:{query:``,limit:100,page_number:1}}},Fz=`deals:attio@1`,Iz=g(`attio_record_id`),Lz=g(`deal_name`),Rz=g(`deal_amount`),zz=g(`attio_deal_match`),Bz=r.object({search_id:r.literal(Fz),connector:Xl(),config:r.object({custom_properties:LL(`value`,Af({target:`objects`,identifier:`deals`})),filters:RL(`value`),stage:Wu({path:`config.stage`,groupPath:`config.general`,sectionKey:`general`,label:`Deal stage`,required:!1,info:`This workspace's actual stage titles — custom stages included.`,enabledIf:_(`attio`),optionsDef:Cf,multiple:!0}),owner:Wu({path:`config.owner`,groupPath:`config.general`,sectionKey:`general`,label:`Owner`,required:!1,info:``,enabledIf:_(`attio`),optionsDef:Of}),saved_view:zL(Ef({target:`objects`,identifier:`deals`})),created_within:BL(),limit:FL(),page_number:IL(),output_fields:P(r.object({[Iz.name]:A({fieldName:Iz.name}),[Lz.name]:A({fieldName:Lz.name}),[Rz.name]:A({fieldName:Rz.name}),[zz.name]:A({fieldName:zz.name})}))}).check(e=>VL(e,[`stage`,`owner`,`created_within`]))}),Vz={allowManagedConnection:!1,mode:null,credits:null,info:`Searching your own Attio workspace is free.`},Hz=`deals-attio-v1`,Uz=class extends Z{billing={billableOperation:Hz,cost:Vz};searchId=Fz;schema=Bz;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[Iz.name]:this.catalogOutput(Iz),[Lz.name]:this.catalogOutput(Lz),[Rz.name]:this.catalogOutput(Rz),[zz.name]:this.catalogOutput(zz)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitOperation:`attio_query`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`attio_record_id`}]}}async getAgentContext(e){return Mf(e,{objects:[`deals`],includeViewsFor:[`deals`],includeMembers:!0})}},Wz=Bz,Gz={searchId:Fz,billableOperation:Hz,baseSearch:Q(Fz),outputFieldMode:`static`,paginationType:`page_number`,label:`Attio deals`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List deals from your Attio workspace: identity columns (id, name, value) plus a JSON record with the standard attribute set and any custom attributes you pick.`,tags:[V.NEW],keywords:[`crm`,`list`,`records`,`import`,`opportunity`,`pipeline`],docPath:$(Fz),guide:"Call get_provider_context first — deal stage titles are workspace-defined (never assume Won/Lost exist). The Deals object is opt-in per workspace; a disabled object fails with a settings hint. Standard attributes become typed columns; everything else rides in the deal JSON. Exact value/date ranges go in the attribute filters (`value` gte/lte); a saved view replaces the filter fields entirely. Multi-pipeline flows live in Attio LISTS — use entries:attio@1 for list-based pipelines. Attio reports no total count — page until a short page.",cost:Vz,provider:`attio`,defaultPayload:{search_id:Fz,connector:{strategy:`first`,connections:[]},config:{custom_properties:[],filters:null,stage:[],owner:``,saved_view:``,created_within:``,limit:100,page_number:1,output_fields:{attio_record_id:{enabled:!0,alias:``},deal_name:{enabled:!0,alias:``},deal_amount:{enabled:!0,alias:``},attio_deal_match:{enabled:!0,alias:``}}}}},Kz=`deals:hubspot@1`,qz=g(`hubspot_object_id`),Jz=g(`deal_name`),Yz=g(`deal_amount`),Xz=g(`hubspot_deal_match`),Zz=r.object({search_id:r.literal(Kz),connector:Xl(),config:r.object({query:Vu({path:`config.query`,groupPath:`config.general`,inputType:`text`,label:`Search text`,sectionKey:`general`,info:`Free-text search over HubSpot's default searchable deal properties (deal name, pipeline, stage, description).`}).nullable(),custom_properties:Mu({path:`config.custom_properties`,groupPath:`config.general`,sectionKey:`general`,label:`Custom properties`,placeholder:`contract_term`,info:"Added to the deal JSON under `custom_properties` — internal names, custom properties included (standard-set names are already top-level)."}),filters:r.object({conditions:ju({path:`config.filters.conditions`,groupPath:`config.general`,sectionKey:`general`,label:`Property filters`,fieldNamePlaceholder:`amount`,info:`Rows filter on any HubSpot property by internal name — including custom properties.`}),pipeline:Wu({path:`config.filters.pipeline`,groupPath:`config.general`,sectionKey:`general`,label:`Pipeline`,required:!1,info:``,enabledIf:_(`hubspot`),optionsDef:cp(`deals`)}),deal_stage:Wu({path:`config.filters.deal_stage`,groupPath:`config.general`,sectionKey:`general`,label:`Deal stage`,required:!1,info:`Stages of the selected pipeline (stage ids are numeric outside the default pipeline).`,enabledIf:_(`hubspot`),optionsDef:pp}),status:Uu({required:!1,path:`config.filters.status`,groupPath:`config.general`,sectionKey:`general`,label:`Deal status`,description:`Filters on HubSpot's computed hs_is_closed / hs_is_closed_won — portal-invariant, unlike stage names.`,options:[{label:`Any`,value:`any`},{label:`Open`,value:`open`},{label:`Won`,value:`won`},{label:`Lost`,value:`lost`}]}).default(`any`),owner:Wu({path:`config.filters.owner`,groupPath:`config.general`,sectionKey:`general`,label:`Owner`,required:!1,info:``,enabledIf:_(`hubspot`),optionsDef:dp}),created_within:Uu({required:!1,path:`config.filters.created_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Created`,description:`Relative window, resolved at every run — schedule-friendly. Exact date ranges go in the property filters (createdate gte/lte).`,options:[{label:`Any time`,value:``},{label:`Last 24 hours`,value:`l24h`},{label:`Last 48 hours`,value:`l48h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}]}).default(``),modified_within:Uu({required:!1,path:`config.filters.modified_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Last modified`,description:``,options:[{label:`Any time`,value:``},{label:`Last 24 hours`,value:`l24h`},{label:`Last 48 hours`,value:`l48h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}]}).default(``)}),limit:N({path:`config.limit`,min:1,max:200,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Rows per page (HubSpot search caps pages at 200 and total results at 10,000).`}).default(100),cursor:Vu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[qz.name]:A({fieldName:qz.name}),[Jz.name]:A({fieldName:Jz.name}),[Yz.name]:A({fieldName:Yz.name}),[Xz.name]:A({fieldName:Xz.name})}))})}),Qz={allowManagedConnection:!1,mode:null,credits:null,info:`Searching your own HubSpot portal is free.`},$z=`deals-hubspot-v1`,eB=class extends Z{billing={billableOperation:$z,cost:Qz};searchId=Kz;schema=Zz;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[qz.name]:this.catalogOutput(qz),[Jz.name]:this.catalogOutput(Jz),[Yz.name]:this.catalogOutput(Yz),[Xz.name]:this.catalogOutput(Xz)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitOperation:`hubspot_crm_search`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`hubspot_object_id`}]}}async getAgentContext(e){return mp(e,{objectTypes:[[`deals`,`0-3`]],includePipelinesFor:[`deals`]})}},tB=Zz,nB={searchId:Kz,billableOperation:$z,baseSearch:Q(Kz),outputFieldMode:`static`,paginationType:`cursor`,label:`HubSpot deals`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List deals from your HubSpot portal: identity columns (id, name, amount) plus a JSON record with the standard property set and any custom properties you pick.`,tags:[V.FIELDS,V.NEW],keywords:[`crm`,`opportunity`,`pipeline`,`list`,`records`,`import`],docPath:$(Kz),guide:`Call get_provider_context first — it includes this portal's pipelines with per-pipeline stage ids and labels (stage ids are numeric outside the default pipeline; never assume 'closedwon' exists). Prefer the status filter (computed hs_is_closed/hs_is_closed_won) over stage names for open/won/lost. Standard fields become typed columns; pipeline, stage and close date ride flat in the deal JSON, picked custom properties nest under custom_properties — expand it or chain json:extract downstream. Total results cap at 10,000 per query.`,cost:Qz,provider:`hubspot`,defaultPayload:{search_id:Kz,connector:{strategy:`first`,connections:[]},config:{query:``,custom_properties:[],filters:{conditions:null,pipeline:``,deal_stage:``,status:`any`,owner:``,created_within:``,modified_within:``},limit:100,cursor:``,output_fields:{hubspot_object_id:{enabled:!0,alias:``},deal_name:{enabled:!0,alias:``},deal_amount:{enabled:!0,alias:``},hubspot_deal_match:{enabled:!0,alias:``}}}}},rB=`companies:profiles:amplemarket@1`,iB=g(`company_name`),aB=g(`company_website_url`),oB=g(`company_description`),sB=g(`company_profile_url`),cB=g(`amplemarket_company_match`),lB=r.object({search_id:r.literal(rB),connector:Ts.nullable().optional(),config:r.object({limit:N({label:`Limit`,description:`Max number of search results`,path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,sectionKey:`pagination`}),page_number:N({path:`config.page_number`,groupPath:`config.pagination`,label:`Page number`,min:1,sectionKey:`pagination`,description:``}).nullish(),output_fields:P(r.object({[iB.name]:A({fieldName:iB.name}),[aB.name]:A({fieldName:aB.name}),[oB.name]:A({fieldName:oB.name}),[sB.name]:A({fieldName:sB.name}),[cB.name]:A({fieldName:cB.name})})),filters:r.object({hq_locations:M({path:`config.filters.hq_locations`,sectionKey:`config.filters`,label:`HQ locations`,description:``,placeholder:J(`location`),groupPath:`config.filters.location`,optionsDef:h(`locations`)}).default({include:[],exclude:[]}),company_names:k({sectionKey:`config.filters`,path:`config.filters.company_names`,label:`Company names`,description:``,placeholder:J(`company_name`),groupPath:`config.filters.categories`,suggestionsDef:h(`company_names`)}).default({include:[],exclude:[]}),company_website_urls:k({sectionKey:`config.filters`,path:`config.filters.company_website_urls`,label:`Company domains`,description:``,placeholder:J(`company_domain`),groupPath:`config.filters.categories`,suggestionsDef:h(`company_domains`,{widgets:{emoji:{char:`🌐`}}})}).default({include:[],exclude:[]}),company_profile_urls:k({sectionKey:`config.filters`,path:`config.filters.company_profile_urls`,label:`Company LinkedIn URLs`,description:``,groupPath:`config.filters.categories`}).default({include:[],exclude:[]}),company_types:j({sectionKey:`config.filters`,path:`config.filters.company_types`,disableSearch:!1,label:`Company Type`,description:``,groupPath:`config.filters.categories`,options:m(`amplemarket.company_types`),required:!1}).default([]),investors:Gu({sectionKey:`config.filters`,path:`config.filters.investors`,label:`Investor names`,optionsDef:h(`company.crunchbase_investors.crustdata`),description:`A list of company investor names`,placeholder:J(`investor`),groupPath:`config.filters.investors`,disableSearch:!1,required:!1}).default([]),company_industries:Fu({sectionKey:`config.filters`,path:`config.filters.company_industries`,optionsDef:Ge(`amplemarket.industries`),disableSearch:!1,label:`Industries`,description:``,placeholder:J(`industry`),groupPath:`config.filters.industry`}).default({include:[],exclude:[]}),customer_types:j({sectionKey:`config.filters`,path:`config.filters.customer_types`,options:[{value:`b2b`,label:`B2B`},{value:`b2c`,label:`B2C`}],required:!1,disableSearch:!0,label:`Customer Types`,description:``,groupPath:`config.filters.industry`}).default([]),keywords:k({sectionKey:`config.filters`,path:`config.filters.keywords`,label:`Keywords`,description:``,groupPath:`config.filters.industry`}).default({include:[],exclude:[]}),revenue_groups:j({path:`config.filters.revenue_groups`,sectionKey:`config.filters`,label:`Revenue groups`,description:``,disableSearch:!0,options:m(`amplemarket.company_revenue`),required:!1,groupPath:`config.filters.financials`}).default([]),founded_year:Pu({path:`config.filters.founded_year`,sectionKey:`config.filters`,label:`Founded year`,groupPath:`config.filters.general`,min:0,max:2040,description:``}).default({min:null,max:null}),open_positions_titles:O({path:`config.filters.open_positions_titles`,sectionKey:`config.filters`,label:`Job openings for titles`,groupPath:`config.filters.job_openings`,description:``,placeholder:J(`title`),suggestionsDef:h(`titles`)}),headcount:j({sectionKey:`config.filters`,path:`config.filters.company_sizes`,disableSearch:!1,options:m(`amplemarket.company_size`),label:`Headcount groups`,required:!1,description:``,groupPath:`config.filters.company_size`}).default([]),headcount_growth_last_6_months_in_percent:Pu({path:`config.filters.headcount_growth_last_6_months_in_percent`,sectionKey:`config.filters`,label:`Headcount growth over last 6 months (in %)`,groupPath:`config.filters.company_size`,description:``,max:1e4,min:0}).default({min:null,max:null})}).check(e=>{CR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),uB={allowManagedConnection:!0,mode:`per_page`,credits:{default:2}},dB=`companies-profiles-amplemarket-v1`,fB=class extends Z{billing={billableOperation:dB,cost:uB};searchId=rB;schema=lB;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[iB.name]:this.catalogOutput(iB),[aB.name]:this.catalogOutput(aB),[oB.name]:this.catalogOutput(oB),[sB.name]:this.catalogOutput(sB),[cB.name]:this.catalogOutput(cB)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitOperation:`amplemarket_company_search`,rateLimitRatio:1,allowManagedConnection:!0}]}},pB=lB,mB={searchId:rB,billableOperation:dB,baseSearch:Q(`companies:profiles:amplemarket@1`),label:`Company search`,categories:[`deprecated`],paginationType:`page_number`,hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`companies:profiles:amplemarket@2`},description:`Filter based company search.`,tags:[V.COMPANY_PROFILES],docPath:$(rB),cost:uB,provider:`amplemarket`,defaultPayload:{search_id:rB,connector:null,config:{limit:100,page_number:1,output_fields:{company_name:{enabled:!0,alias:``},company_website_url:{enabled:!0,alias:``},company_description:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},amplemarket_company_match:{enabled:!0,alias:``}},filters:{company_industries:{include:[],exclude:[]},company_names:{include:[],exclude:[]},company_profile_urls:{include:[],exclude:[]},company_types:[],company_website_urls:{include:[],exclude:[]},customer_types:[],headcount_growth_last_6_months_in_percent:{min:null,max:null},founded_year:{min:null,max:null},revenue_groups:[],investors:[],keywords:{include:[],exclude:[]},open_positions_titles:[],headcount:[],hq_locations:{include:[],exclude:[]}}}}},hB=`companies:profiles:crustdata@1`,gB=g(`company_name`),_B=g(`company_website_url`),vB=g(`company_description`),yB=g(`company_profile_url`),bB=g(`crustdata_company_match`),xB=r.object({search_id:r.literal(hB),connector:Ts.nullable().optional(),config:r.object({limit:N({path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of search results`}),cursor:Vu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[gB.name]:A({fieldName:gB.name}),[_B.name]:A({fieldName:gB.name}),[vB.name]:A({fieldName:vB.name}),[yB.name]:A({fieldName:yB.name}),[bB.name]:A({fieldName:bB.name})})),filters:r.object({hq_locations:M({path:`config.filters.hq_locations`,sectionKey:`config.filters`,label:`HQ locations`,description:``,placeholder:J(`location`),groupPath:`config.filters.location`,optionsDef:h(`locations`)}).default({include:[],exclude:[]}),crunchbase_categories:M({path:`config.filters.crunchbase_categories`,sectionKey:`config.filters`,label:`Crunchbase categories`,placeholder:J(`crunchbase_category`),description:``,groupPath:`config.filters.categories`,optionsDef:h(`company.crunchbase_categories.crustdata`)}).default({include:[],exclude:[]}),crunchbase_investors:M({path:`config.filters.crunchbase_investors`,sectionKey:`config.filters`,label:`Investors to include (Crunchbase)`,description:``,placeholder:J(`investor`),groupPath:`config.filters.investors`,optionsDef:h(`company.crunchbase_investors.crustdata`)}).default({include:[],exclude:[]}),tracxn_investors:M({path:`config.filters.tracxn_investors`,sectionKey:`config.filters`,label:`Investors to include (Tracxn)`,description:``,placeholder:J(`investor`),groupPath:`config.filters.investors`,optionsDef:h(`company.tracxn_investors.crustdata`)}).default({include:[],exclude:[]}),company_types:Fu({sectionKey:`config.filters`,path:`config.filters.company_types`,optionsDef:{type:`static`,options:m(`crustdata.company_types`)},label:`Company types`,placeholder:`Public, Private, ...`,description:``,groupPath:`config.filters.categories`}).default({include:[],exclude:[]}),linkedin_industries:M({sectionKey:`config.filters`,path:`config.filters.linkedin_industries`,optionsDef:h(`linkedin_industries.crustdata`),label:`Industries`,description:``,placeholder:J(`industry`),groupPath:`config.filters.industry`}).default({include:[],exclude:[]}),markets:M({sectionKey:`config.filters`,path:`config.filters.markets`,optionsDef:h(`company.markets.crustdata`),placeholder:`NYSE, TYO, ...`,label:`Markets`,description:``,groupPath:`config.filters.industry`}).default({include:[],exclude:[]}),linkedin_categories:M({sectionKey:`config.filters`,path:`config.filters.linkedin_categories`,optionsDef:h(`company.linkedin_categories.crustdata`),label:`LinkedIn category`,placeholder:`Marketing, Branding, ...`,description:``,groupPath:`config.filters.categories`}).default({include:[],exclude:[]}),headcount:Fu({path:`config.filters.headcount`,sectionKey:`config.filters`,label:`Headcount`,description:``,disableSearch:!0,placeholder:`1-10`,optionsDef:{type:`static`,options:m(`crustdata.company_size`)},groupPath:`config.filters.company_size`}).default({include:[],exclude:[]}),headcount_growth_last_6m_in_percent:j({path:`config.filters.headcount_growth_last_6m_in_percent`,sectionKey:`config.filters`,label:`Headcount growth over last 6 months in percent`,description:``,options:m(`crustdata.headcount_growth`),placeholder:`0-10%`,disableSearch:!0,required:!1,groupPath:`config.filters.company_size`}).default([]),revenue_in_usd:Lu({path:`config.filters.revenue_in_usd`,sectionKey:`config.filters`,label:`Revenue (USD)`,description:``,legend:`1k - 10B`,min:1e3,max:1e10,groupPath:`config.filters.financials`}),last_funding_type:Fu({path:`config.filters.last_funding_type`,sectionKey:`config.filters`,label:`Last funding type`,placeholder:`Series A`,disableSearch:!0,optionsDef:{type:`static`,options:m(`crustdata.funding_rounds`)},description:``,groupPath:`config.filters.financials`}).default({include:[],exclude:[]}),last_funding_amount:Lu({path:`config.filters.last_funding_amount`,sectionKey:`config.filters`,label:`Last funding amount`,legend:`1k - 10B`,min:1e3,max:1e10,description:``,groupPath:`config.filters.financials`}),number_of_followers:j({path:`config.filters.number_of_followers`,sectionKey:`config.filters`,label:`Number of LinkedIn followers`,placeholder:`1-500`,disableSearch:!0,description:``,required:!1,options:m(`crustdata.company_followers`),groupPath:`config.filters.web_presence`}).default([]),follower_growth_last_6m_in_percent:j({path:`config.filters.follower_growth_last_6m_in_percent`,sectionKey:`config.filters`,label:`LinkedIn follower growth within last 6 months`,required:!1,disableSearch:!0,placeholder:`0-10%`,description:``,options:m(`crustdata.follower_growth`),groupPath:`config.filters.web_presence`}).default([]),profile_summary_keywords:k({path:`config.filters.profile_summary_keywords`,sectionKey:`config.filters`,maxItems:50,label:`LinkedIn company description contains`,placeholder:J(`company_profile_keyword`),description:``,groupPath:`config.filters.keywords`}).default({include:[],exclude:[]}),competitor_websites:k({path:`config.filters.competitor_websites`,sectionKey:`config.filters`,maxItems:50,label:`Competitor domains`,description:``,placeholder:J(`company_domain`),groupPath:`config.filters.competitors`,suggestionsDef:h(`company_domains`,{widgets:{emoji:{char:`🌐`}}})}).default({include:[],exclude:[]})}).check(e=>{CR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),SB={allowManagedConnection:!0,mode:`per_page`,credits:{default:2}},CB=`companies-profiles-crustdata-v1`,wB=class extends Z{billing={billableOperation:CB,cost:SB};searchId=hB;schema=xB;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[gB.name]:this.catalogOutput(gB),[_B.name]:this.catalogOutput(_B),[vB.name]:this.catalogOutput(vB),[yB.name]:this.catalogOutput(yB),[bB.name]:this.catalogOutput(bB)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_company_db_search`,rateLimitRatio:1,allowManagedConnection:!0}]}},TB=xB,EB={searchId:hB,billableOperation:CB,baseSearch:Q(`companies:profiles:crustdata@1`),label:`Company search`,categories:[`deprecated`],paginationType:`cursor`,hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`companies:profiles:crustdata@2`},description:`Filter based company search.`,tags:[V.COMPANY_PROFILES],docPath:$(hB),cost:SB,provider:`crustdata`,defaultPayload:{search_id:hB,connector:null,config:{limit:100,cursor:``,output_fields:{company_name:{enabled:!0,alias:``},company_website_url:{enabled:!0,alias:``},company_description:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},crustdata_company_match:{enabled:!0,alias:``}},filters:{company_types:{include:[],exclude:[]},headcount_growth_last_6m_in_percent:[],last_funding_amount:{from:null,to:null},last_funding_type:{include:[],exclude:[]},linkedin_industries:{include:[],exclude:[]},linkedin_categories:{include:[],exclude:[]},crunchbase_categories:{include:[],exclude:[]},markets:{include:[],exclude:[]},revenue_in_usd:{from:null,to:null},crunchbase_investors:{include:[],exclude:[]},tracxn_investors:{include:[],exclude:[]},follower_growth_last_6m_in_percent:[],headcount:{include:[],exclude:[]},hq_locations:{include:[],exclude:[]},number_of_followers:[],profile_summary_keywords:{include:[],exclude:[]},competitor_websites:{include:[],exclude:[]}}}}},DB=`companies:profiles:crustdata@2`,OB=g(`company_name`),kB=g(`company_domain`),AB=g(`company_description`),jB=g(`company_profile_url`),MB=g(`crustdata_company_match`),NB=r.object({search_id:r.literal(DB),connector:Zl(),config:r.object({limit:N({path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of search results`}).default(100),cursor:Vu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[OB.name]:A({fieldName:OB.name}),[kB.name]:A({fieldName:kB.name}),[AB.name]:A({fieldName:AB.name}),[jB.name]:A({fieldName:jB.name}),[MB.name]:A({fieldName:MB.name})})),filters:r.object({hq_locations:M({path:`config.filters.hq_locations`,sectionKey:`config.filters`,label:`HQ locations`,description:``,placeholder:J(`location`),groupPath:`config.filters.location`,optionsDef:h(`locations`)}).default({include:[],exclude:[]}),crunchbase_categories:M({path:`config.filters.crunchbase_categories`,sectionKey:`config.filters`,label:`Crunchbase categories`,placeholder:J(`crunchbase_category`),description:``,groupPath:`config.filters.categories`,optionsDef:h(`company.crunchbase_categories.crustdata`)}).default({include:[],exclude:[]}),crunchbase_investors:M({path:`config.filters.crunchbase_investors`,sectionKey:`config.filters`,label:`Investors to include (Crunchbase)`,description:``,placeholder:J(`investor`),groupPath:`config.filters.investors`,optionsDef:h(`company.crunchbase_investors.crustdata`)}).default({include:[],exclude:[]}),tracxn_investors:M({path:`config.filters.tracxn_investors`,sectionKey:`config.filters`,label:`Investors to include (Tracxn)`,description:``,placeholder:J(`investor`),groupPath:`config.filters.investors`,optionsDef:h(`company.tracxn_investors.crustdata`)}).default({include:[],exclude:[]}),company_types:Fu({sectionKey:`config.filters`,path:`config.filters.company_types`,optionsDef:{type:`static`,options:m(`crustdata.company_types`)},label:`Company types`,placeholder:`Public, Private, ...`,description:``,groupPath:`config.filters.categories`}).default({include:[],exclude:[]}),linkedin_industries:M({sectionKey:`config.filters`,path:`config.filters.linkedin_industries`,optionsDef:h(`linkedin_industries.crustdata`),label:`Industries`,description:``,placeholder:J(`industry`),groupPath:`config.filters.industry`}).default({include:[],exclude:[]}),markets:M({sectionKey:`config.filters`,path:`config.filters.markets`,optionsDef:h(`company.markets.crustdata`),placeholder:`NYSE, TYO, ...`,label:`Markets`,description:``,groupPath:`config.filters.industry`}).default({include:[],exclude:[]}),linkedin_categories:M({sectionKey:`config.filters`,path:`config.filters.linkedin_categories`,optionsDef:h(`company.linkedin_categories.crustdata`),label:`LinkedIn category`,placeholder:`Marketing, Branding, ...`,description:``,groupPath:`config.filters.categories`}).default({include:[],exclude:[]}),headcount:Fu({path:`config.filters.headcount`,sectionKey:`config.filters`,label:`Headcount`,description:``,disableSearch:!0,placeholder:`1-10`,optionsDef:{type:`static`,options:m(`crustdata.company_size`)},groupPath:`config.filters.company_size`}).default({include:[],exclude:[]}),linkedin_headcount_ranges:j({path:`config.filters.linkedin_headcount_ranges`,sectionKey:`config.filters`,label:`Size bracket`,description:`Headcount range a company self-reports on its LinkedIn page.`,options:m(`crustdata.linkedin_headcount_ranges`),placeholder:`2-10`,disableSearch:!0,required:!1,groupPath:`config.filters.company_size`}).default([]),headcount_growth_l6m_in_percent:j({path:`config.filters.headcount_growth_l6m_in_percent`,sectionKey:`config.filters`,label:`Headcount growth over last 6 months in percent`,description:``,options:m(`crustdata.headcount_growth`),placeholder:`0-10%`,disableSearch:!0,required:!1,groupPath:`config.filters.company_size`}).default([]),revenue_in_usd:Lu({path:`config.filters.revenue_in_usd`,sectionKey:`config.filters`,label:`Revenue (USD)`,description:``,legend:`1k - 10B`,min:1e3,max:1e10,groupPath:`config.filters.financials`}),last_funding_type:Fu({path:`config.filters.last_funding_type`,sectionKey:`config.filters`,label:`Last funding type`,placeholder:`Series A`,disableSearch:!0,optionsDef:{type:`static`,options:m(`crustdata.funding_rounds`)},description:``,groupPath:`config.filters.financials`}).default({include:[],exclude:[]}),last_funding_amount:Lu({path:`config.filters.last_funding_amount`,sectionKey:`config.filters`,label:`Last funding amount`,legend:`1k - 10B`,min:1e3,max:1e10,description:``,groupPath:`config.filters.financials`}),number_of_followers:j({path:`config.filters.number_of_followers`,sectionKey:`config.filters`,label:`Number of LinkedIn followers`,placeholder:`1-500`,disableSearch:!0,description:``,required:!1,options:m(`crustdata.company_followers`),groupPath:`config.filters.web_presence`}).default([]),follower_growth_l6m_in_percent:j({path:`config.filters.follower_growth_l6m_in_percent`,sectionKey:`config.filters`,label:`LinkedIn follower growth within last 6 months`,required:!1,disableSearch:!0,placeholder:`0-10%`,description:``,options:m(`crustdata.follower_growth`),groupPath:`config.filters.web_presence`}).default([]),profile_summary_keywords:k({path:`config.filters.profile_summary_keywords`,sectionKey:`config.filters`,maxItems:50,label:`LinkedIn company description contains`,placeholder:J(`company_profile_keyword`),description:``,groupPath:`config.filters.keywords`}).default({include:[],exclude:[]}),competitor_domains:k({path:`config.filters.competitor_domains`,sectionKey:`config.filters`,maxItems:50,label:`Competitor domain`,description:``,placeholder:J(`company_domain`),groupPath:`config.filters.competitors`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),company_domains:k({path:`config.filters.company_domains`,sectionKey:`config.filters`,maxItems:400,label:`Company domain`,description:``,placeholder:J(`company_domain`),groupPath:`config.filters.web_presence`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),company_profile_urls:k({path:`config.filters.company_profile_urls`,sectionKey:`config.filters`,maxItems:2e3,label:`Company LinkedIn URL`,description:``,placeholder:`https://linkedin.com/company/...`,groupPath:`config.filters.web_presence`}).default({include:[],exclude:[]}),company_names:k({path:`config.filters.company_names`,sectionKey:`config.filters`,maxItems:2e3,label:`Company name`,description:``,placeholder:J(`company_name`),groupPath:`config.filters.web_presence`}).default({include:[],exclude:[]})}).check(e=>{CR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),PB={match:`any`,fields:[{fieldName:`company_profile_url`}]},FB={allowManagedConnection:!0,mode:`per_page`,credits:{default:2}},IB=`companies-profiles-crustdata-v2`,LB=class extends Z{billing={billableOperation:IB,cost:FB};searchId=DB;schema=NB;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[OB.name]:this.catalogOutput(OB),[kB.name]:this.catalogOutput(kB),[AB.name]:this.catalogOutput(AB),[jB.name]:this.catalogOutput(jB),[MB.name]:this.catalogOutput(MB)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_company_db_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return PB}},RB=NB,zB={searchId:DB,billableOperation:IB,baseSearch:Q(`companies:profiles:crustdata@2`),label:`Company search`,categories:[`deprecated`],paginationType:`cursor`,hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:{deprecatedOn:`2026-09-30`,replacedBy:`companies:profiles:crustdata@3`},description:`Filter-based company search on Crustdata's dataset — widest filter surface: funding, investors, headcount growth, LinkedIn signals.`,tags:[V.COMPANY_PROFILES],docPath:$(DB),cost:FB,provider:`crustdata`,defaultPayload:{search_id:DB,connector:null,config:{limit:100,cursor:``,output_fields:{company_name:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},company_description:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},crustdata_company_match:{enabled:!0,alias:``}},filters:{company_types:{include:[],exclude:[]},headcount_growth_l6m_in_percent:[],last_funding_amount:{from:null,to:null},last_funding_type:{include:[],exclude:[]},linkedin_industries:{include:[],exclude:[]},linkedin_categories:{include:[],exclude:[]},crunchbase_categories:{include:[],exclude:[]},markets:{include:[],exclude:[]},revenue_in_usd:{from:null,to:null},crunchbase_investors:{include:[],exclude:[]},tracxn_investors:{include:[],exclude:[]},follower_growth_l6m_in_percent:[],headcount:{include:[],exclude:[]},linkedin_headcount_ranges:[],hq_locations:{include:[],exclude:[]},number_of_followers:[],profile_summary_keywords:{include:[],exclude:[]},competitor_domains:{include:[],exclude:[]},company_domains:{include:[],exclude:[]},company_profile_urls:{include:[],exclude:[]},company_names:{include:[],exclude:[]}}}}},BB=`people:profiles:amplemarket@1`,VB=g(`name`),HB=g(`company_website_url`),UB=g(`profile_url`),WB=g(`job_title`),GB=g(`amplemarket_person_match`),KB=r.object({search_id:r.literal(BB),connector:Ts.nullable().optional(),config:r.object({limit:N({path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,label:`Limit`,sectionKey:`pagination`,description:`Max number of search results`}),page_number:N({path:`config.page_number`,groupPath:`config.pagination`,label:`Page number`,min:1,sectionKey:`pagination`,description:``}).nullish(),output_fields:P(r.object({[VB.name]:A({fieldName:VB.name}),[HB.name]:A({fieldName:HB.name}),[UB.name]:A({fieldName:UB.name}),[WB.name]:A({fieldName:WB.name}),[GB.name]:A({fieldName:GB.name})})),filters:r.object({person_names:O({label:`Full name`,path:`config.filters.person_names`,sectionKey:`config.filters`,groupPath:`config.filters.general`}),current_locations:M({path:`config.filters.current_locations`,sectionKey:`config.filters`,label:`Location`,optionsDef:h(`locations`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),current_job_titles:O({path:`config.filters.current_job_titles`,sectionKey:`config.filters`,label:`Title`,placeholder:J(`title`),description:``,order:1,groupPath:`config.filters.current_employer`,suggestionsDef:h(`titles`)}),current_seniority_levels:j({path:`config.filters.current_seniority_levels`,sectionKey:`config.filters`,placeholder:J(`seniority`),label:`Seniority`,required:!1,disableSearch:!1,options:m(`amplemarket.seniority_levels`),description:``,groupPath:`config.filters.current_employer`}).default([]),current_departments:j({path:`config.filters.current_departments`,sectionKey:`config.filters`,label:`Department`,placeholder:J(`department`),disableSearch:!1,required:!1,options:m(`amplemarket.departments`),description:``,groupPath:`config.filters.current_employer`}).default([]),current_job_functions:j({path:`config.filters.current_job_functions`,sectionKey:`config.filters`,label:`Job function`,placeholder:J(`job_function`),disableSearch:!1,required:!1,options:m(`amplemarket.job_functions`),description:``,groupPath:`config.filters.current_employer`}).default([]),current_employer_locations:M({path:`config.filters.current_employer_locations`,sectionKey:`config.filters`,label:`Headquarters`,optionsDef:h(`locations`),groupPath:`config.filters.current_company`,placeholder:J(`location`)}).default({include:[],exclude:[]}),current_employer_names:k({path:`config.filters.current_employer_names`,sectionKey:`config.filters`,label:`Company name`,groupPath:`config.filters.current_company`,description:``,placeholder:J(`company_name`),suggestionsDef:h(`company_names`)}).default({include:[],exclude:[]}),current_employer_website_urls:k({path:`config.filters.current_employer_website_urls`,sectionKey:`config.filters`,label:`Company domain`,description:``,maxItems:200,placeholder:J(`company_domain`),groupPath:`config.filters.current_company`,suggestionsDef:h(`company_domains`,{widgets:{emoji:{char:`🌐`}}})}).default({include:[],exclude:[]}),current_employer_linkedin_industries:j({path:`config.filters.current_employer_linkedin_industries`,sectionKey:`config.filters`,label:`Industry`,disableSearch:!1,groupPath:`config.filters.current_company`,description:``,placeholder:J(`industry`),required:!1,options:m(`linkedin.industries`)}).default([]),current_employer_estimated_revenue:j({path:`config.filters.current_employer_estimated_revenue`,sectionKey:`config.filters`,label:`Estimated revenue`,disableSearch:!1,required:!1,groupPath:`config.filters.current_company`,description:``,options:m(`amplemarket.company_revenue`)}).default([]),current_employer_founded_year:Pu({path:`config.filters.current_employer_founded_year`,sectionKey:`config.filters`,label:`Founded year`,groupPath:`config.filters.current_company`,min:0,max:2040,description:``}).default({min:null,max:null}),current_employer_investors:O({path:`config.filters.current_employer_investors`,sectionKey:`config.filters`,label:`Employer investors`,groupPath:`config.filters.current_company`,placeholder:J(`investor`),description:``}),current_employer_open_positions_titles:O({path:`config.filters.current_employer_open_positions_titles`,sectionKey:`config.filters`,label:`Open positions`,groupPath:`config.filters.current_company`,description:``,placeholder:J(`title`),suggestionsDef:h(`titles`)}),school_names:M({path:`config.filters.school_names`,sectionKey:`config.filters`,label:`School names`,description:``,placeholder:J(`school`),groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default({include:[],exclude:[]})}).check(e=>{CR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),qB={allowManagedConnection:!0,mode:`per_page`,credits:{default:3},info:`1 page = 100 records; 200 results = 2 pages`},JB=`people-profiles-amplemarket-v1`,YB=class extends Z{billing={billableOperation:JB,cost:qB};searchId=BB;schema=KB;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[VB.name]:this.catalogOutput(VB),[HB.name]:this.catalogOutput(HB),[UB.name]:this.catalogOutput(UB),[WB.name]:this.catalogOutput(WB),[GB.name]:this.catalogOutput(GB)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitOperation:`amplemarket_people_search`,rateLimitRatio:1,allowManagedConnection:!0}]}},XB=KB,ZB={searchId:BB,billableOperation:JB,baseSearch:Q(`people:profiles:amplemarket@1`),paginationType:`page_number`,label:`People search`,categories:[`deprecated`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:profiles:amplemarket@2`},description:`Filter-based people search.`,tags:[V.PEOPLE_PROFILES],docPath:$(BB),cost:qB,provider:`amplemarket`,defaultPayload:{search_id:BB,connector:null,config:{limit:50,page_number:1,output_fields:{name:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},company_website_url:{enabled:!0,alias:``},amplemarket_person_match:{enabled:!0,alias:``}},filters:{current_employer_names:{include:[],exclude:[]},current_departments:[],current_employer_locations:{include:[],exclude:[]},person_names:[],current_employer_founded_year:{min:null,max:null},current_employer_estimated_revenue:[],current_employer_investors:[],current_employer_open_positions_titles:[],current_job_functions:[],current_locations:{include:[],exclude:[]},current_employer_linkedin_industries:[],current_employer_website_urls:{include:[],exclude:[]},current_seniority_levels:[],school_names:{include:[],exclude:[]},current_job_titles:[]}}}},QB=`people:profiles:crustdata@1`,$B=g(`name`),eV=g(`company_website_url`),tV=g(`profile_url`),nV=g(`job_title`),rV=g(`crustdata_person_match`),iV=r.object({search_id:r.literal(QB),connector:Ts.nullable().optional(),config:r.object({limit:N({path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of search results`}),cursor:Vu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[$B.name]:A({fieldName:$B.name}),[eV.name]:A({fieldName:eV.name}),[tV.name]:A({fieldName:tV.name}),[nV.name]:A({fieldName:nV.name}),[rV.name]:A({fieldName:rV.name})})),filters:r.object({locations:M({path:`config.filters.locations`,sectionKey:`config.filters`,label:`Location`,placeholder:J(`location`),optionsDef:h(`locations`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),current_job_titles:k({path:`config.filters.current_job_titles`,sectionKey:`config.filters`,label:`Title`,description:``,placeholder:J(`title`),order:1,groupPath:`config.filters.current_employer`,suggestionsDef:h(`titles`)}).default({include:[],exclude:[]}),current_employers:k({path:`config.filters.current_employers`,sectionKey:`config.filters`,label:`Company name`,description:``,placeholder:J(`company_name`),maxItems:200,groupPath:`config.filters.current_employer`,suggestionsDef:h(`company_names`,{widgets:{emoji:{char:`🏷️`}}})}).default({include:[],exclude:[]}),current_employers_website_urls:k({path:`config.filters.current_employers_website_urls`,sectionKey:`config.filters`,label:`Company domain`,placeholder:J(`company_domain`),description:``,maxItems:200,groupPath:`config.filters.current_employer`,suggestionsDef:h(`company_domains`,{widgets:{emoji:{char:`🌐`}}})}).default({include:[],exclude:[]}),current_employers_linkedin_industries:M({path:`config.filters.current_employers_linkedin_industries`,sectionKey:`config.filters`,label:`Industry`,groupPath:`config.filters.current_employer`,placeholder:J(`industry`),description:``,optionsDef:h(`linkedin_industries.crustdata`,{limit:300})}).default({include:[],exclude:[]}),years_at_current_company:j({path:`config.filters.years_at_current_company`,sectionKey:`config.filters`,label:`Years at current company`,placeholder:`1 to 2 years`,disableSearch:!1,required:!1,groupPath:`config.filters.current_employer`,description:``,options:m(`crustdata.years_of_experience`)}).default([]),previous_employers_website_urls:k({path:`config.filters.previous_employers_website_urls`,sectionKey:`config.filters`,label:`Previous employer domain`,description:``,placeholder:J(`company_domain`),maxItems:200,groupPath:`config.filters.experience`,suggestionsDef:h(`company_domains`,{widgets:{emoji:{char:`🌐`}}})}).default({include:[],exclude:[]}),previous_seniority_levels:Fu({path:`config.filters.previous_seniority_levels`,sectionKey:`config.filters`,label:`Previous seniority`,placeholder:J(`seniority`),disableSearch:!0,optionsDef:Ge(`crustdata.person_seniority`),description:``,groupPath:`config.filters.experience`}).default({include:[],exclude:[]}),previous_employers:k({path:`config.filters.previous_employers`,sectionKey:`config.filters`,label:`Previous employer`,description:``,placeholder:J(`company_name`),maxItems:200,groupPath:`config.filters.experience`,suggestionsDef:h(`company_names`,{widgets:{emoji:{char:`🏷️`}}})}).default({include:[],exclude:[]}),previous_job_titles:k({path:`config.filters.previous_job_titles`,sectionKey:`config.filters`,label:`Previous title`,description:``,placeholder:J(`title`),groupPath:`config.filters.experience`,suggestionsDef:h(`titles`)}).default({include:[],exclude:[]}),previous_employers_linkedin_industries:M({path:`config.filters.previous_employers_linkedin_industries`,sectionKey:`config.filters`,label:`Previous employer industries`,placeholder:J(`industry`),groupPath:`config.filters.experience`,description:``,optionsDef:h(`linkedin_industries.crustdata`,{limit:300})}).default({include:[],exclude:[]}),profile_headline_keywords:k({path:`config.filters.profile_headline_keywords`,sectionKey:`config.filters`,label:`Headline contains keywords`,maxItems:100,groupPath:`config.filters.keywords`,placeholder:J(`headline_keywords`)}).default({include:[],exclude:[]}),profile_summary_keywords:k({path:`config.filters.profile_summary_keywords`,sectionKey:`config.filters`,label:`Profile about section contains keywords`,maxItems:100,groupPath:`config.filters.keywords`,placeholder:J(`profile_keywords`)}).default({include:[],exclude:[]}),profile_languages:Fu({path:`config.filters.profile_languages`,sectionKey:`config.filters`,label:`Profile language`,placeholder:J(`languages`),optionsDef:Ge(`crustdata.person_profile_languages`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),languages:Fu({path:`config.filters.languages`,sectionKey:`config.filters`,label:`Spoken language`,placeholder:J(`languages_1`),optionsDef:Ge(`crustdata.person_profile_languages`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),skills:M({path:`config.filters.skills`,sectionKey:`config.filters`,label:`Skills`,description:``,placeholder:J(`skills`),groupPath:`config.filters.skills`,optionsDef:h(`skills`)}).default({include:[],exclude:[]}),years_of_experience:j({path:`config.filters.years_of_experience`,sectionKey:`config.filters`,label:`Years of experience`,placeholder:`1 to 2 years`,disableSearch:!0,description:``,required:!1,options:m(`crustdata.years_of_experience`),groupPath:`config.filters.experience`}).default([]),current_seniority_levels:Fu({path:`config.filters.current_seniority_levels`,sectionKey:`config.filters`,disableSearch:!0,label:`Seniority`,placeholder:J(`seniority`),optionsDef:Ge(`crustdata.person_seniority`),description:``,groupPath:`config.filters.experience`}).default({include:[],exclude:[]}),certifications:k({path:`config.filters.certifications`,sectionKey:`config.filters`,label:`Certifications`,groupPath:`config.filters.certifications_honors`,placeholder:J(`certification`),description:``}).default({include:[],exclude:[]}),honors:k({path:`config.filters.honors`,sectionKey:`config.filters`,label:`Honors`,groupPath:`config.filters.certifications_honors`,placeholder:J(`honor`),description:``}).default({include:[],exclude:[]}),recently_changed_jobs:Bu({path:`config.filters.recently_changed_jobs`,sectionKey:`config.filters`,label:`Recently changed jobs`,description:``,defaultValue:null,groupPath:`config.filters.activities`}),fields_of_study:M({path:`config.filters.fields_of_study`,sectionKey:`config.filters`,label:`Fields of study`,placeholder:J(`field_of_study`),description:``,groupPath:`config.filters.education`,optionsDef:h(`person.education_field_of_study.crustdata`)}).default({include:[],exclude:[]}),degree_names:M({path:`config.filters.degree_names`,sectionKey:`config.filters`,label:`Degree names`,placeholder:J(`degree_name`),description:``,groupPath:`config.filters.education`,optionsDef:h(`person.education_degree.crustdata`)}).default({include:[],exclude:[]}),school_names:M({path:`config.filters.school_names`,sectionKey:`config.filters`,label:`School names`,description:``,placeholder:J(`school`),groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default({include:[],exclude:[]}),current_school_names:M({path:`config.filters.current_school_names`,sectionKey:`config.filters`,label:`Currently enrolled at`,description:``,placeholder:J(`school`),groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default({include:[],exclude:[]}),extracurricular_activities:k({path:`config.filters.extracurricular_activities`,sectionKey:`config.filters`,label:`Extracurricular activities`,description:``,placeholder:J(`extracurricular`),groupPath:`config.filters.education`,suggestionsDef:h(`person.education_activities.crustdata`)}).default({include:[],exclude:[]})}).check(e=>{CR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),aV={allowManagedConnection:!0,mode:`per_page`,credits:{default:5},info:`1 page = 100 records; 200 results = 2 pages`},oV=`people-profiles-crustdata-v1`,sV=class extends Z{billing={billableOperation:oV,cost:aV};searchId=QB;schema=iV;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[$B.name]:this.catalogOutput($B),[eV.name]:this.catalogOutput(eV),[tV.name]:this.catalogOutput(tV),[nV.name]:this.catalogOutput(nV),[rV.name]:this.catalogOutput(rV)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_people_db_search`,rateLimitRatio:1,allowManagedConnection:!0}]}},cV=iV,lV={searchId:QB,billableOperation:oV,baseSearch:Q(`people:profiles:crustdata@1`),paginationType:`cursor`,label:`People search`,categories:[`deprecated`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:profiles:crustdata@2`},description:`Filter-based people search.`,tags:[V.PEOPLE_PROFILES],docPath:$(QB),cost:aV,provider:`crustdata`,defaultPayload:{search_id:QB,connector:null,config:{limit:100,cursor:``,output_fields:{name:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},company_website_url:{enabled:!0,alias:``},crustdata_person_match:{enabled:!0,alias:``}},filters:{profile_headline_keywords:{include:[],exclude:[]},languages:{include:[],exclude:[]},profile_summary_keywords:{include:[],exclude:[]},previous_job_titles:{include:[],exclude:[]},current_employers:{include:[],exclude:[]},current_school_names:{include:[],exclude:[]},years_at_current_company:[],certifications:{include:[],exclude:[]},honors:{include:[],exclude:[]},current_employers_linkedin_industries:{include:[],exclude:[]},current_employers_website_urls:{include:[],exclude:[]},previous_employers_website_urls:{include:[],exclude:[]},current_seniority_levels:{include:[],exclude:[]},previous_seniority_levels:{include:[],exclude:[]},degree_names:{include:[],exclude:[]},locations:{include:[],exclude:[]},profile_languages:{include:[],exclude:[]},recently_changed_jobs:null,extracurricular_activities:{include:[],exclude:[]},school_names:{include:[],exclude:[]},fields_of_study:{include:[],exclude:[]},previous_employers:{include:[],exclude:[]},current_job_titles:{include:[],exclude:[]},skills:{include:[],exclude:[]},years_of_experience:[],previous_employers_linkedin_industries:{include:[],exclude:[]}}}}},uV=`entries:attio@1`,dV=g(`attio_entry_id`),fV=g(`attio_record_id`),pV=g(`attio_entry_match`),mV=r.object({search_id:r.literal(uV),connector:Xl(),config:r.object({list:Wu({path:`config.list`,groupPath:`config.general`,sectionKey:`general`,label:`List`,required:!0,info:`Attio lists are where pipelines live — entries carry list-level attributes like stage on top of their parent record.`,enabledIf:_(`attio`),optionsDef:wf}),custom_properties:LL(`parent.name`,jf(`list`)),filters:RL(`stage`),stage:Wu({path:`config.stage`,groupPath:`config.general`,sectionKey:`general`,label:`Stage`,required:!1,info:`The selected list's status attribute — this workspace's actual titles.`,enabledIf:_(`attio`),optionsDef:Tf(`list`),multiple:!0}),saved_view:zL(Ef({target:`lists`,fromField:`list`})),created_within:BL(),limit:FL(),page_number:IL(),output_fields:P(r.object({[dV.name]:A({fieldName:dV.name}),[fV.name]:A({fieldName:fV.name}),[pV.name]:A({fieldName:pV.name})}))}).check(e=>VL(e,[`stage`,`created_within`]))}),hV={allowManagedConnection:!1,mode:null,credits:null,info:`Searching your own Attio workspace is free.`},gV=`entries-attio-v1`,_V=class extends Z{billing={billableOperation:gV,cost:hV};searchId=uV;schema=mV;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[dV.name]:this.catalogOutput(dV),[fV.name]:this.catalogOutput(fV),[pV.name]:this.catalogOutput(pV)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitOperation:`attio_query`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`attio_entry_id`}]}}async getAgentContext(e){return Mf(e,{objects:`discover`,includeLists:!0})}},vV=mV,yV={searchId:uV,billableOperation:gV,baseSearch:Q(uV),outputFieldMode:`static`,paginationType:`page_number`,label:`Attio list entries`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List entries of an Attio list — where pipelines live. Each row carries the entry id, the parent record id, and a JSON with the entry's list-level attributes (like stage) plus picked parent-record attributes.`,tags:[V.NEW],keywords:[`crm`,`pipeline`,`stage`,`kanban`,`workflow`,`import`],docPath:$(uV),guide:"Attio pipelines are lists: pick the list, then filter on ENTRY attributes (stage titles come from the list's own status attribute) or on the parent record via `parent.` refs (e.g. `parent.domains.root_domain`, `parent.name.full_name`). Picked `parent.<slug>` attributes land in the entry JSON's custom_properties. attio_record_id is the PARENT record — chain it into record:lookup/record:update. A saved view of the list replaces the filter fields. Attio reports no total count — page until a short page.",cost:hV,provider:`attio`,defaultPayload:{search_id:uV,connector:{strategy:`first`,connections:[]},config:{list:``,custom_properties:[],filters:null,stage:[],saved_view:``,created_within:``,limit:100,page_number:1,output_fields:{attio_entry_id:{enabled:!0,alias:``},attio_record_id:{enabled:!0,alias:``},attio_entry_match:{enabled:!0,alias:``}}}}},bV=`events:googlecalendar@1`,xV=g(`google_calendar_event_id`),SV=g(`event_title`),CV=g(`attendee_emails`),wV=g(`calendar_event_match`),TV=[{value:`meeting`,label:`Meeting`},{value:`out_of_office`,label:`Out of office`},{value:`focus_time`,label:`Focus time`},{value:`working_location`,label:`Working location`},{value:`birthday`,label:`Birthday`},{value:`from_gmail`,label:`From Gmail`}],EV=[`meeting`],DV=[{label:`Primary calendar (primary)`,value:`primary`},{label:`Team calendar (sample)`,value:`cal-sandbox-1`}];async function OV(e){let t=await fetch(`https://www.googleapis.com/calendar/v3/users/me/calendarList`,{headers:{accept:`application/json`,Authorization:`Bearer ${e}`}});if(!t.ok){let e=await t.text();throw Error(`Failed to list Google calendars: ${e}`)}return await t.json()}const kV=r.object({search_id:r.literal(bV),connector:Xl(),config:r.object({calendar_id:Wu({path:`config.calendar_id`,groupPath:`config.general`,sectionKey:`general`,label:`Calendar`,required:!1,info:`Defaults to the account's primary calendar.`,enabledIf:_(`googlecalendar`),optionsDef:{requires:{connection:`googlecalendar`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return DV;if(!t)throw Error(`A Google Calendar connection is required to list calendars.`);let r=((await OV(t)).items||[]).filter(e=>!!e?.id).map(e=>({label:`${e.summaryOverride||e.summary||e.id}${e.primary?` (primary)`:``}`,value:e.id}));return e?r.filter(t=>t.label.toLowerCase().includes(e.toLowerCase())):r}}}),time_window:Uu({required:!1,path:`config.time_window`,groupPath:`config.general`,sectionKey:`general`,label:`Time window`,description:`Rolling window relative to when the search runs, not calendar days.`,options:[{label:`Any time`,value:``},{label:`Next 24 hours`,value:`n24h`},{label:`Next 2 days`,value:`n48h`},{label:`Next 7 days`,value:`n7d`},{label:`Next 30 days`,value:`n30d`},{label:`Last 24 hours`,value:`l24h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}]}).default(`n7d`),event_types:j({path:`config.event_types`,groupPath:`config.general`,sectionKey:`general`,label:`Event types`,placeholder:`Meeting`,disableSearch:!1,required:!1,description:`Defaults to meetings only.`,options:TV}).default(EV),limit:N({path:`config.limit`,min:1,max:250,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of events per page`}).default(100),cursor:Vu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[xV.name]:A({fieldName:xV.name}),[SV.name]:A({fieldName:SV.name}),[CV.name]:A({fieldName:CV.name}),[wV.name]:A({fieldName:wV.name})}))})}),AV={match:`any`,fields:[{fieldName:`google_calendar_event_id`}]},jV={allowManagedConnection:!1,mode:null,credits:null,info:`Google Calendar searches are free — you bring your own Google Calendar connection.`},MV=`events-googlecalendar-v1`,NV=class extends Z{billing={billableOperation:MV,cost:jV};searchId=bV;schema=kV;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[xV.name]:this.catalogOutput(xV),[SV.name]:this.catalogOutput(SV),[CV.name]:this.catalogOutput(CV),[wV.name]:this.catalogOutput(wV)}}getConnectionsRequirements(){return[{provider:`googlecalendar`,rateLimitOperation:`googlecalendar_api`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return AV}async getAgentContext(e){if(e.environment===`sandbox`)return{summary:"Sandbox: calendar list is synthetic. Available calendars: `primary`, `cal-sandbox-1`."};let t=e.connectionSecrets.googlecalendar;if(!t)return null;let n=((await OV(t)).items||[]).filter(e=>!!e?.id).map(e=>({id:e.id,name:e.summaryOverride||e.summary||e.id,timezone:e.timeZone||null,primary:!!e.primary}));return{summary:`Calendars visible to this connection:\n${n.map(e=>`- \`${e.id}\` — ${e.name}${e.primary?` (primary)`:``}`).join(`
|
|
86
|
-
`)}`,data:{calendars:n}}}},PV=kV,FV={searchId:bV,billableOperation:MV,baseSearch:Q(bV),outputFieldMode:`static`,paginationType:`cursor`,label:`Google Calendar events`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List events from a Google Calendar: one row per event (recurring events expanded into occurrences) with title, attendee emails, and a standardized calendar_event_match object (times, timezone, type, location, organizer, meeting link).`,tags:[V.EVENTS,V.NEW],keywords:[`gcal`,`meetings`,`appointments`,`agenda`,`schedule`,`meeting prep`],docPath:$(bV),guide:"Time windows are rolling intervals relative to when the search runs (UTC), not calendar days — `n24h` means 'the next 24 hours from now'. Recurring events arrive expanded, one row per occurrence, each with its own stable instance ID (the dedup key). Event types are normalized cross-provider values (meeting, out_of_office, focus_time, working_location, birthday, from_gmail); by default ONLY meeting events are returned — add other values to event_types to include them. Start/end/timezone/location/meeting link live inside calendar_event_match (expand with json:extract:multi@1); all-day events carry bare dates there, and the end date is exclusive. Cancelled events are not returned. 'Any time' on a calendar with long recurring series pages very far — prefer a window. attendee_emails excludes meeting rooms and is the natural input for company-domain enrichment (e.g. company:domain:email@1 → company:newssummary:domain@1 for meeting prep).",cost:jV,provider:`googlecalendar`,defaultPayload:{search_id:bV,connector:{strategy:`first`,connections:[]},config:{calendar_id:``,time_window:`n7d`,event_types:EV,limit:100,cursor:``,output_fields:{google_calendar_event_id:{enabled:!0,alias:``},event_title:{enabled:!0,alias:``},attendee_emails:{enabled:!0,alias:``},calendar_event_match:{enabled:!0,alias:``}}}}},IV=`leads:salesforce@1`,LV=g(`salesforce_record_id`),RV=g(`first_name`),zV=g(`last_name`),BV=g(`email`),VV=g(`company_name`),HV=g(`salesforce_lead_match`),UV=r.object({search_id:r.literal(IV),connector:Xl(),config:r.object({custom_properties:sL(),filters:cL(`LeadSource`),list_view:lL(`Lead`),lead_status:Wu({path:`config.lead_status`,groupPath:`config.general`,sectionKey:`general`,label:`Lead status`,required:!1,info:`The org's actual status values — custom entries included.`,enabledIf:_(`salesforce`),optionsDef:Jd}),include_converted:zu({path:`config.include_converted`,groupPath:`config.general`,sectionKey:`general`,label:`Include converted leads`,description:`Converted leads are read-only history pointing at the contact they became — excluded by default.`,defaultValue:!1}),owner:uL(),created_within:fL(),modified_within:pL(),limit:mL(),cursor:hL(),output_fields:P(r.object({[LV.name]:A({fieldName:LV.name}),[RV.name]:A({fieldName:RV.name}),[zV.name]:A({fieldName:zV.name}),[BV.name]:A({fieldName:BV.name}),[VV.name]:A({fieldName:VV.name}),[HV.name]:A({fieldName:HV.name})}))}).check(e=>gL([`lead_status`,`owner`,`created_within`,`modified_within`])(e))}),WV={allowManagedConnection:!1,mode:null,credits:null,info:`Salesforce searches are free — you bring your own Salesforce connection.`},GV=`leads-salesforce-v1`,KV=class extends Z{billing={billableOperation:GV,cost:WV};searchId=IV;schema=UV;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[LV.name]:this.catalogOutput(LV),[RV.name]:this.catalogOutput(RV),[zV.name]:this.catalogOutput(zV),[BV.name]:this.catalogOutput(BV),[VV.name]:this.catalogOutput(VV),[HV.name]:this.catalogOutput(HV)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitOperation:`salesforce_api`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`salesforce_record_id`}]}}async getAgentContext(e){return tf(e,{objects:[`Lead`],includeListViewsFor:[`Lead`]})}},qV=UV,JV={searchId:IV,billableOperation:GV,baseSearch:Q(IV),outputFieldMode:`static`,paginationType:`cursor`,label:`Salesforce leads`,categories:[`people`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List leads from your Salesforce org: identity columns (id, name, email, company) plus a JSON record with the standard field set. Converted leads are excluded by default; filter with field conditions or run one of the org's own list views.`,tags:[V.EMAIL,V.NEW],keywords:[`crm`,`sfdc`,`prospect`,`list`,`records`,`import`,`demand gen`],docPath:$(IV),guide:"Call get_provider_context first for the org's field API names and status values — use them verbatim. Leads are pre-qualification records: Company is plain text (no account link), and converted leads (IsConverted = true) are read-only history excluded by default — the JSON carries IsConverted/ConvertedContactId when you include them. Duplicate emails across leads are normal in demand-gen orgs. To find untouched leads, filter on `LastActivityDate` (e.g. `LastActivityDate < LAST_N_DAYS:90` — closed tasks + events, not literal touches). `list_view` runs the org's own segmentation (XOR with filters/shortcuts). Results page by record id; rows the connected user cannot see are silently absent.",cost:WV,provider:`salesforce`,defaultPayload:{search_id:IV,connector:{strategy:`first`,connections:[]},config:{custom_properties:[],filters:null,list_view:``,lead_status:``,include_converted:!1,owner:``,created_within:``,modified_within:``,limit:100,cursor:``,output_fields:{salesforce_record_id:{enabled:!0,alias:``},first_name:{enabled:!0,alias:``},last_name:{enabled:!0,alias:``},email:{enabled:!0,alias:``},company_name:{enabled:!0,alias:``},salesforce_lead_match:{enabled:!0,alias:``}}}}},YV=`opportunities:salesforce@1`,XV=g(`salesforce_record_id`),ZV=g(`deal_name`),QV=g(`deal_amount`),$V=g(`salesforce_opportunity_match`),eH=r.object({search_id:r.literal(YV),connector:Xl(),config:r.object({custom_properties:sL(),filters:cL(`StageName`),list_view:lL(`Opportunity`),status:Uu({required:!1,path:`config.status`,groupPath:`config.general`,sectionKey:`general`,label:`Status`,description:`Filters on Salesforce's computed IsClosed / IsWon — org-invariant, unlike stage names.`,options:[{label:`Any`,value:`any`},{label:`Open`,value:`open`},{label:`Won`,value:`won`},{label:`Lost`,value:`lost`}]}).default(`any`),stage:Wu({path:`config.stage`,groupPath:`config.general`,sectionKey:`general`,label:`Stage`,required:!1,info:`The org's own OpportunityStage list.`,enabledIf:_(`salesforce`),optionsDef:Kd}),amount:Pu({path:`config.amount`,groupPath:`config.general`,sectionKey:`general`,label:`Amount`,min:0,max:0xe8d4a51000,info:`In multi-currency orgs the bounds compare in the corporate currency.`}),owner:uL(),created_within:fL(),modified_within:pL(),limit:mL(),cursor:hL(),output_fields:P(r.object({[XV.name]:A({fieldName:XV.name}),[ZV.name]:A({fieldName:ZV.name}),[QV.name]:A({fieldName:QV.name}),[$V.name]:A({fieldName:$V.name})}))}).check(e=>gL([`stage`,`amount`,`owner`,`created_within`,`modified_within`])(e))}),tH={allowManagedConnection:!1,mode:null,credits:null,info:`Salesforce searches are free — you bring your own Salesforce connection.`},nH=`opportunities-salesforce-v1`,rH=class extends Z{billing={billableOperation:nH,cost:tH};searchId=YV;schema=eH;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[XV.name]:this.catalogOutput(XV),[ZV.name]:this.catalogOutput(ZV),[QV.name]:this.catalogOutput(QV),[$V.name]:this.catalogOutput($V)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitOperation:`salesforce_api`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`salesforce_record_id`}]}}async getAgentContext(e){return tf(e,{objects:[`Opportunity`],includeStages:!0,includeListViewsFor:[`Opportunity`]})}},iH=eH,aH={searchId:YV,billableOperation:nH,baseSearch:Q(YV),outputFieldMode:`static`,paginationType:`cursor`,label:`Salesforce opportunities`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List opportunities from your Salesforce org: identity columns (id, name, amount) plus a JSON record with the standard field set (including IsClosed/IsWon). Filter by status, stage, amount, or field conditions — or run one of the org's own list views.`,tags:[V.NEW],keywords:[`crm`,`sfdc`,`deal`,`pipeline`,`revenue`,`list`,`records`],docPath:$(YV),guide:"Filter open/won via `status` (computed IsClosed/IsWon — org-invariant); `stage` values are OpportunityStage ApiNames from get_provider_context — never assume a stage named 'Closed Won' exists. Close-date windows go through filter rows (CloseDate lte/gte with ISO dates or SOQL literals). In multi-currency orgs Amount bounds compare in the corporate currency. To find deals gone quiet, filter on `LastActivityDate` (e.g. `LastActivityDate < LAST_N_DAYS:30` — closed tasks + events, not literal touches). `list_view` runs the org's own segmentation (XOR with filters/shortcuts). Results page by record id; rows the connected user cannot see are silently absent.",cost:tH,provider:`salesforce`,defaultPayload:{search_id:YV,connector:{strategy:`first`,connections:[]},config:{custom_properties:[],filters:null,list_view:``,status:`any`,stage:``,amount:{min:null,max:null},owner:``,created_within:``,modified_within:``,limit:100,cursor:``,output_fields:{salesforce_record_id:{enabled:!0,alias:``},deal_name:{enabled:!0,alias:``},deal_amount:{enabled:!0,alias:``},salesforce_opportunity_match:{enabled:!0,alias:``}}}}},oH=`owners:hubspot@1`,sH=g(`hubspot_owner_id`),cH=g(`email`),lH=g(`first_name`),uH=g(`last_name`),dH=g(`hubspot_owned_count`),fH=g(`hubspot_owner_match`),pH=r.object({search_id:r.literal(oH),connector:Xl(),config:r.object({email:Vu({path:`config.email`,groupPath:`config.general`,inputType:`text`,label:`Email`,sectionKey:`general`,info:`Only return the owner with this exact email.`}).nullable(),include_archived:zu({path:`config.include_archived`,groupPath:`config.general`,sectionKey:`general`,label:`Include deactivated owners`,description:``,defaultValue:!1}),owned_object_type:Uu({required:!1,path:`config.owned_object_type`,groupPath:`config.counts`,sectionKey:`general`,label:`Count owned`,description:"Which records to count per owner (via `hubspot_owner_id`).",options:[{label:`Companies`,value:`companies`},{label:`Contacts`,value:`contacts`},{label:`Deals`,value:`deals`}]}).default(`companies`),min_owned_count:N({path:`config.min_owned_count`,min:0,groupPath:`config.counts`,sectionKey:`general`,label:`Minimum owned`,description:`Only return owners owning MORE than this many records. Counting costs one search request per owner (~5/second).`}).nullable(),include_ownership_counts:zu({path:`config.include_ownership_counts`,groupPath:`config.counts`,sectionKey:`general`,label:`Include ownership counts`,description:`Adds an owned-record count column (one search request per owner, ~5/second).`,defaultValue:!0}),limit:N({path:`config.limit`,min:1,max:2e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Maximum number of owners returned.`}).default(500),output_fields:P(r.object({[sH.name]:A({fieldName:sH.name}),[cH.name]:A({fieldName:cH.name}),[lH.name]:A({fieldName:lH.name}),[uH.name]:A({fieldName:uH.name}),[dH.name]:A({fieldName:dH.name}),[fH.name]:A({fieldName:fH.name})}))})}),mH={allowManagedConnection:!1,mode:null,credits:null,info:`Listing your own HubSpot owners is free.`},hH=`owners-hubspot-v1`,gH=class extends Z{billing={billableOperation:hH,cost:mH};searchId=oH;schema=pH;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[sH.name]:this.catalogOutput(sH),[cH.name]:this.catalogOutput(cH),[lH.name]:this.catalogOutput(lH),[uH.name]:this.catalogOutput(uH),[dH.name]:this.catalogOutput(dH),[fH.name]:this.catalogOutput(fH)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitOperation:`hubspot_crm_search`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`hubspot_owner_id`}]}}async getAgentContext(e){return mp(e,{objectTypes:[]})}},_H=pH,vH={searchId:oH,billableOperation:hH,baseSearch:Q(oH),outputFieldMode:`static`,paginationType:`cursor`,label:`HubSpot owners`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List the owners (users) of your HubSpot portal, optionally with how many companies, contacts, or deals each owns — e.g. all owners with more than 50 companies.`,tags:[V.FIELDS,V.NEW],keywords:[`crm`,`users`,`sales reps`,`assignment`,`rollup`,`count`],docPath:$(oH),guide:"HubSpot has no aggregation API — ownership counts are computed with one count-search per owner against the portal's shared 5 requests/second search budget (expect ~N/5 seconds for N owners). Counts are accurate beyond the 10,000-result search cap. The owner id column matches `hubspot_owner_id` values on records.",cost:mH,provider:`hubspot`,defaultPayload:{search_id:oH,connector:{strategy:`first`,connections:[]},config:{email:``,include_archived:!1,owned_object_type:`companies`,min_owned_count:null,include_ownership_counts:!0,limit:500,output_fields:{hubspot_owner_id:{enabled:!0,alias:``},email:{enabled:!0,alias:``},first_name:{enabled:!0,alias:``},last_name:{enabled:!0,alias:``},hubspot_owned_count:{enabled:!0,alias:``},hubspot_owner_match:{enabled:!0,alias:``}}}}},yH=`people:attio@1`,bH=g(`attio_record_id`),xH=g(`email`),SH=g(`first_name`),CH=g(`last_name`),wH=g(`attio_person_match`),TH=r.object({search_id:r.literal(yH),connector:Xl(),config:r.object({custom_properties:LL(`job_title`,Af({target:`objects`,identifier:`people`})),filters:RL(`job_title`),has_email:zu({path:`config.has_email`,groupPath:`config.general`,sectionKey:`general`,defaultValue:!1,label:`Has email`,info:`Only people with at least one email address.`}),saved_view:zL(Ef({target:`objects`,identifier:`people`})),created_within:BL(),limit:FL(),page_number:IL(),output_fields:P(r.object({[bH.name]:A({fieldName:bH.name}),[xH.name]:A({fieldName:xH.name}),[SH.name]:A({fieldName:SH.name}),[CH.name]:A({fieldName:CH.name}),[wH.name]:A({fieldName:wH.name})}))}).check(e=>VL(e,[`has_email`,`created_within`]))}),EH={allowManagedConnection:!1,mode:null,credits:null,info:`Searching your own Attio workspace is free.`},DH=`people-attio-v1`,OH=class extends Z{billing={billableOperation:DH,cost:EH};searchId=yH;schema=TH;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[bH.name]:this.catalogOutput(bH),[xH.name]:this.catalogOutput(xH),[SH.name]:this.catalogOutput(SH),[CH.name]:this.catalogOutput(CH),[wH.name]:this.catalogOutput(wH)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitOperation:`attio_query`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`attio_record_id`}]}}async getAgentContext(e){return Mf(e,{objects:[`people`],includeViewsFor:[`people`]})}},kH=TH,AH={searchId:yH,billableOperation:DH,baseSearch:Q(yH),outputFieldMode:`static`,paginationType:`page_number`,label:`Attio people`,categories:[`people`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List people from your Attio workspace: identity columns (id, email, name) plus a JSON record with the standard attribute set and any custom attributes you pick.`,tags:[V.EMAIL,V.NEW],keywords:[`crm`,`list`,`records`,`import`,`contact`,`workspace`],docPath:$(yH),guide:`Call get_provider_context first for this workspace's attribute slugs and enumeration titles — use api_slugs verbatim. Standard attributes become typed columns; everything else (standard set + picked custom attributes) rides in the person JSON — expand it or chain json:extract downstream. Filters support any attribute (select/status = equality on workspace-defined titles); a saved view replaces the filter fields entirely. For staleness, filter or sort on last_interaction (targets its interacted_at timestamp) — Attio's read-only communication-intelligence signal, auto-populated from members' synced email/calendar (e.g. people with no interaction in 90 days). Attio reports no total count — page until a short page.`,cost:EH,provider:`attio`,defaultPayload:{search_id:yH,connector:{strategy:`first`,connections:[]},config:{custom_properties:[],filters:null,has_email:!1,saved_view:``,created_within:``,limit:100,page_number:1,output_fields:{attio_record_id:{enabled:!0,alias:``},email:{enabled:!0,alias:``},first_name:{enabled:!0,alias:``},last_name:{enabled:!0,alias:``},attio_person_match:{enabled:!0,alias:``}}}}},jH=`people:channelmembers:slack@1`,MH=g(`name`),NH=g(`email`),PH=g(`slack_user_id`),FH=g(`slack_member_match`),IH=[{value:`internal`,label:`Workspace members`},{value:`external`,label:`External (Slack Connect)`}],LH=[`internal`],RH=r.object({search_id:r.literal(jH),connector:Xl(),config:r.object({channel_id:Wu({path:`config.channel_id`,groupPath:`config.general`,sectionKey:`general`,label:`Channel`,required:!0,info:"Only public channels and private channels the pipe0 app has been invited to are listed. Slack Connect channels are usually private, so run `/invite @pipe0` in one to make it selectable at all.",enabledIf:_(`slack`),optionsDef:EO}),include_bots:zu({path:`config.include_bots`,groupPath:`config.general`,sectionKey:`general`,label:`Include bots`,description:`Also list app/bot members of the channel.`,defaultValue:!1}),member_types:j({path:`config.member_types`,groupPath:`config.general`,sectionKey:`general`,label:`Member types`,placeholder:`Workspace members`,disableSearch:!0,required:!0,description:`Defaults to workspace members only.`,info:"External (Slack Connect) members are not in the workspace user directory. Invite the pipe0 app to the shared channel (`/invite @pipe0`) or they return as ID-only rows — and their email is never exposed.",guide:"Select only `external` to list just the partner/customer side of a shared channel.",options:IH}).default(LH),limit:N({path:`config.limit`,min:1,max:1e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of members per page`}).default(200),cursor:Vu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[MH.name]:A({fieldName:MH.name}),[NH.name]:A({fieldName:NH.name}),[PH.name]:A({fieldName:PH.name}),[FH.name]:A({fieldName:FH.name})}))})}),zH={match:`any`,fields:[{fieldName:`slack_user_id`}]},BH={allowManagedConnection:!1,mode:null,credits:null,info:`Slack searches are free — you bring your own Slack connection.`},VH=`people-channelmembers-slack-v1`,HH=class extends Z{billing={billableOperation:VH,cost:BH};searchId=jH;schema=RH;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[MH.name]:this.catalogOutput(MH),[NH.name]:this.catalogOutput(NH),[PH.name]:this.catalogOutput(PH),[FH.name]:this.catalogOutput(FH)}}getConnectionsRequirements(){return[{provider:`slack`,rateLimitOperation:`slack_api_read`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return zH}async getAgentContext(e){if(e.environment===`sandbox`)return{summary:'Sandbox: channel list is synthetic. Available channels: `C0SANDBOX001` (#demo-general), `C0SANDBOX002` (#demo-alerts). `config.member_types` defaults to `["internal"]`; selecting `"external"` adds synthetic Slack Connect members, including one unresolvable ID-only row.'};let t=this.payload.config.channel_id,n=Array.isArray(t)?t[0]:t;if(!n)return null;let r=e.connectionSecrets.slack;if(!r)return null;let i=await(await fetch(`https://slack.com/api/conversations.info?channel=${encodeURIComponent(n)}`,{headers:{Authorization:`Bearer ${r}`},signal:AbortSignal.timeout(1e4)})).json();if(!i.ok||!i.channel)throw new K.HttpError({msg:i.error??`slack_error`});let a=i.channel,o=a.name?`#${a.name}`:n,s=!!a.is_ext_shared||!!a.is_org_shared,c=a.is_member!==!1,l=a.shared_team_ids?.length??0;return{summary:s?c?`${o} is a Slack Connect channel${l?` shared with ${l} team(s)`:``}. The pipe0 app is in the channel, so external members' names and titles resolve. Add \`"external"\` to \`config.member_types\` to include them — their email is never returned (\`users:read.email\` is workspace-scoped), and each row is flagged \`slack_member_match.is_external\`.`:`${o} is a Slack Connect channel, but the pipe0 app is NOT a member, so external members cannot be resolved — they come back as ID-only rows (\`is_external: true\`, name and email null). Ask the user to run \`/invite @pipe0\` in ${o}, or leave \`config.member_types\` at \`["internal"]\`.`:`${o} is not a Slack Connect channel — every member is in the workspace directory. Leave \`config.member_types\` at \`["internal"]\`.`,data:{channel_name:a.name??null,is_ext_shared:!!a.is_ext_shared,is_org_shared:!!a.is_org_shared,is_member:c,shared_team_ids:a.shared_team_ids??[],pending_connected_team_ids:a.pending_connected_team_ids??[],external_members_resolvable:s&&c}}}},UH=RH,WH={searchId:jH,billableOperation:VH,baseSearch:Q(jH),outputFieldMode:`static`,paginationType:`cursor`,label:`Slack channel members`,categories:[`people`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List the members of a Slack channel: one row per person with full name, email address (when the workspace exposes it), Slack user ID, and a standardized slack_member_match object (handle, title, timezone, admin/guest flags).`,tags:[V.NEW],keywords:[`workspace`,`team roster`,`coworkers`,`colleagues`,`participants`,`audience`],docPath:$(jH),guide:`Rows come from the channel's member list, resolved against the workspace user directory. member_email/email is only present when the connection holds users:read.email AND the workspace exposes emails — treat empty email as 'hidden', not 'does not exist'. Bots and app users are excluded unless include_bots is set; deactivated members are not in channels. slack_user_id is the join key for message:send-direct:slack@1 (DM each member) and the dedup key. The channel picker only sees public channels plus private channels the pipe0 app is in — and Slack Connect channels are usually private, so a shared channel will not even be selectable until someone runs /invite @pipe0 in it. A bot token cannot enumerate private channels it is not a member of, so an absent channel means 'not invited', never 'does not exist'. Title/phone/timezone live inside slack_member_match (expand with json:extract:multi@1). member_types selects which members come back: 'internal' = the workspace directory (users.list), 'external' = Slack Connect members shared in from another workspace. Externals resolve to a name/title only while the pipe0 app is a member of the shared channel, and their email is never exposed — check slack_member_match.is_external per row. Selecting only 'external' lists the partner/customer side of a shared channel. Members that cannot be resolved are dropped unless 'external' is selected. Call get_provider_context once a channel is picked: it reports whether that channel is Slack Connect and whether the app is in it.`,cost:BH,provider:`slack`,defaultPayload:{search_id:jH,connector:{strategy:`first`,connections:[]},config:{channel_id:``,include_bots:!1,member_types:LH,limit:200,cursor:``,output_fields:{name:{enabled:!0,alias:``},email:{enabled:!0,alias:``},slack_user_id:{enabled:!0,alias:``},slack_member_match:{enabled:!0,alias:``}}}}},GH=`people:entitysearch:parallel@1`,KH=g(`name`),qH=g(`job_title`),JH=g(`profile_url`),YH=g(`parallel_person_entity_match`),XH=r.object({search_id:r.literal(GH),connector:Zl(),config:r.object({objective:Hu({path:`config.objective`,sectionKey:`general`,groupPath:`config.general`,label:`Objective`,rows:4,minLength:10,placeholder:`Heads of Engineering at Series B fintech companies in the US`,description:`Plain-text natural-language description of the people to find.`}),limit:N({path:`config.limit`,min:5,max:1e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of entities to return (5–1000).`}).default(100),output_fields:P(r.object({[KH.name]:A({fieldName:KH.name}),[qH.name]:A({fieldName:qH.name}),[JH.name]:A({fieldName:JH.name}),[YH.name]:A({fieldName:YH.name})}))})}),ZH={match:`any`,fields:[{fieldName:`profile_url`}]},QH={allowManagedConnection:!0,mode:`per_page`,credits:{default:.5},info:`1 page = 100 results; billed per 100 results returned (e.g. 100 results = 1 page, 1,000 results = 10 pages). A search returns up to your selected limit in a single request.`},$H=`people-entitysearch-parallel-v1`,eU=class extends Z{billing={billableOperation:$H,cost:QH};searchId=GH;schema=XH;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[KH.name]:this.catalogOutput(KH),[qH.name]:this.catalogOutput(qH),[JH.name]:this.catalogOutput(JH),[YH.name]:this.catalogOutput(YH)}}getConnectionsRequirements(){return[{provider:`parallel`,rateLimitOperation:`parallel_entity_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return ZH}},tU=XH,nU={searchId:GH,billableOperation:$H,baseSearch:Q(GH),label:`People search (AI)`,categories:[`people`],paginationType:`page_number`,hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Natural-language people search powered by Parallel Entity Search — for asks static filters can't express.`,tags:[V.PEOPLE_PROFILES],keywords:[`prospect`,`lead`,`contact`,`find people`,`natural language`],docPath:$(GH),guide:`Best for asks the static filters of the amplemarket or crustdata people searches can't express — check their schemas first. Returns sparse records (identity basics plus a match rationale) that need further enrichment, where the filter-based datasets return full profiles. When filters get close, prefer a broad filter-based search narrowed by enrichment + row filtering over a natural-language objective.`,cost:QH,provider:`parallel`,defaultPayload:{search_id:GH,connector:null,config:{objective:``,limit:100,output_fields:{name:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},parallel_person_entity_match:{enabled:!1,alias:``}}}}},rU=`people:eventguests:luma@1`,iU=g(`name`),aU=g(`email`),oU=g(`luma_id`),sU=g(`registered_at`),cU=g(`luma_event_guest_match`),lU=[{label:`Sample Meetup — Berlin`,value:`evt-sandbox-1`},{label:`Sample Conference — SF`,value:`evt-sandbox-2`}],uU={requires:{connection:`luma`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return lU;if(!t)throw Error(`A Luma connection is required to list events.`);let r=await fetch(`https://public-api.luma.com/v1/calendar/list-events`,{headers:{accept:`application/json`,"x-luma-api-key":t}});if(!r.ok){let e=await r.text();throw Error(`Failed to list Luma events: ${e}`)}let i=((await r.json()).entries||[]).filter(e=>!!e?.id).map(e=>({label:e.name||e.id,value:e.id}));return e?i.filter(t=>t.label.toLowerCase().includes(e.toLowerCase())):i}},dU=r.object({search_id:r.literal(rU),connector:Xl(),config:r.object({limit:N({path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of guests per page`}).default(100),cursor:Vu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[iU.name]:A({fieldName:iU.name}),[aU.name]:A({fieldName:aU.name}),[oU.name]:A({fieldName:oU.name}),[sU.name]:A({fieldName:sU.name}),[cU.name]:A({fieldName:cU.name})})),filters:r.object({event_id:Wu({path:`config.filters.event_id`,sectionKey:`config.filters`,groupPath:`config.filters.event`,label:`Event`,required:!0,info:`Pick one of your Luma events; guests of this event are returned.`,enabledIf:_(`luma`),optionsDef:uU}),approval_status:Uu({path:`config.filters.approval_status`,sectionKey:`config.filters`,groupPath:`config.filters.event`,label:`Approval status`,description:`Only return guests with this approval status.`,required:!1,options:[{value:`approved`,label:`Approved`},{value:`pending_approval`,label:`Pending approval`},{value:`declined`,label:`Declined`},{value:`waitlist`,label:`Waitlist`},{value:`invited`,label:`Invited`}]})})})}),fU={match:`any`,fields:[{fieldName:`luma_id`}]},pU={allowManagedConnection:!0,mode:`per_page`,credits:{default:1},info:`1 page = up to 100 guests.`},mU=`people-eventguests-luma-v1`,hU=class extends Z{billing={billableOperation:mU,cost:pU};searchId=rU;schema=dU;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[iU.name]:this.catalogOutput(iU),[aU.name]:this.catalogOutput(aU),[oU.name]:this.catalogOutput(oU),[sU.name]:this.catalogOutput(sU),[cU.name]:this.catalogOutput(cU)}}getConnectionsRequirements(){return[{provider:`luma`,rateLimitOperation:`luma_get_guests`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return fU}},gU=dU,_U={searchId:rU,billableOperation:mU,baseSearch:Q(rU),paginationType:`cursor`,label:`List event guests`,categories:[`people`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`Fetch all guests of a Luma event using your own Luma API key.`,tags:[V.PEOPLE_PROFILES,V.EVENTS,V.NEW],keywords:[`attendees`,`rsvp`,`meetup`,`conference`,`registrations`,`participants`],docPath:$(rU),cost:pU,provider:`luma`,defaultPayload:{search_id:rU,connector:{strategy:`first`,connections:[]},config:{limit:100,cursor:``,output_fields:{name:{enabled:!0,alias:``},email:{enabled:!0,alias:``},luma_id:{enabled:!0,alias:``},registered_at:{enabled:!0,alias:``},luma_event_guest_match:{enabled:!0,alias:``}},filters:{event_id:``,approval_status:``}}}},vU=`people:profiles:amplemarket@2`,yU=g(`name`),bU=g(`company_domain`),xU=g(`profile_url`),SU=g(`job_title`),CU=g(`amplemarket_person_match`),wU=r.object({search_id:r.literal(vU),connector:Zl(),config:r.object({limit:N({path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,label:`Page size`,sectionKey:`pagination`,description:`Max number of search results per page`}).default(50),page_number:N({path:`config.page_number`,groupPath:`config.pagination`,label:`Page number`,min:1,sectionKey:`pagination`,description:``}).nullish(),output_fields:P(r.object({[yU.name]:A({fieldName:yU.name}),[bU.name]:A({fieldName:bU.name}),[xU.name]:A({fieldName:xU.name}),[SU.name]:A({fieldName:SU.name}),[CU.name]:A({fieldName:CU.name})})),filters:r.object({person_name:Vu({label:`Full name`,path:`config.filters.person_name`,sectionKey:`config.filters`,inputType:`text`,description:``,groupPath:`config.filters.general`}).default(``),current_locations:M({path:`config.filters.current_locations`,sectionKey:`config.filters`,label:`Location`,optionsDef:h(`locations`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),current_job_titles:O({path:`config.filters.current_job_titles`,sectionKey:`config.filters`,label:`Title`,placeholder:J(`title`),description:``,order:1,groupPath:`config.filters.current_employer`,suggestionsDef:h(`titles`)}),current_seniority_levels:j({path:`config.filters.current_seniority_levels`,sectionKey:`config.filters`,placeholder:J(`seniority`),label:`Seniority`,required:!1,disableSearch:!1,options:m(`amplemarket.seniority_levels`),description:``,groupPath:`config.filters.current_employer`}).default([]),current_departments:j({path:`config.filters.current_departments`,sectionKey:`config.filters`,label:`Department`,placeholder:J(`department`),disableSearch:!1,required:!1,options:m(`amplemarket.departments`),description:``,groupPath:`config.filters.current_employer`}).default([]),current_job_functions:j({path:`config.filters.current_job_functions`,sectionKey:`config.filters`,label:`Job function`,placeholder:J(`job_function`),disableSearch:!1,required:!1,options:m(`amplemarket.job_functions`),description:``,groupPath:`config.filters.current_employer`}).default([]),current_employer_locations:M({path:`config.filters.current_employer_locations`,sectionKey:`config.filters`,label:`Headquarters`,optionsDef:h(`locations`),groupPath:`config.filters.current_company`,placeholder:J(`location`)}).default({include:[],exclude:[]}),current_employer_names:k({path:`config.filters.current_employer_names`,sectionKey:`config.filters`,label:`Company name`,groupPath:`config.filters.current_company`,description:``,placeholder:J(`company_name`),suggestionsDef:h(`company_names`)}).default({include:[],exclude:[]}),current_employer_domains:k({path:`config.filters.current_employer_domains`,sectionKey:`config.filters`,label:`Company domain`,description:``,maxItems:200,placeholder:J(`company_domain`),groupPath:`config.filters.current_company`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),current_employer_linkedin_industries:j({path:`config.filters.current_employer_linkedin_industries`,sectionKey:`config.filters`,label:`Industry`,disableSearch:!1,groupPath:`config.filters.current_company`,description:``,placeholder:J(`industry`),required:!1,options:m(`linkedin.industries`)}).default([]),current_employer_estimated_revenue:j({path:`config.filters.current_employer_estimated_revenue`,sectionKey:`config.filters`,label:`Estimated revenue`,disableSearch:!1,required:!1,groupPath:`config.filters.current_company`,description:``,options:m(`amplemarket.company_revenue`)}).default([]),current_employer_founded_year:Pu({path:`config.filters.current_employer_founded_year`,sectionKey:`config.filters`,label:`Founded year`,groupPath:`config.filters.current_company`,min:0,max:2040,description:``}).default({min:null,max:null}),current_employer_investors:O({path:`config.filters.current_employer_investors`,sectionKey:`config.filters`,label:`Employer investors`,groupPath:`config.filters.current_company`,placeholder:J(`investor`),description:``}),current_employer_open_position_titles:O({path:`config.filters.current_employer_open_position_titles`,sectionKey:`config.filters`,label:`Open positions`,groupPath:`config.filters.current_company`,description:``,placeholder:J(`title`),suggestionsDef:h(`titles`)}),school_names:Gu({path:`config.filters.school_names`,sectionKey:`config.filters`,label:`School names`,disableSearch:!1,description:``,placeholder:J(`school`),required:!1,groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default([])}).check(e=>{CR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),TU={match:`any`,fields:[{fieldName:`profile_url`}]},EU={allowManagedConnection:!0,mode:`per_page`,credits:{default:3},info:`1 page = 100 records; 200 results = 2 pages`},DU=`people-profiles-amplemarket-v2`,OU=class extends Z{billing={billableOperation:DU,cost:EU};searchId=vU;schema=wU;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[yU.name]:this.catalogOutput(yU),[bU.name]:this.catalogOutput(bU),[xU.name]:this.catalogOutput(xU),[SU.name]:this.catalogOutput(SU),[CU.name]:this.catalogOutput(CU)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitOperation:`amplemarket_people_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return TU}},kU=wU,AU={searchId:vU,billableOperation:DU,baseSearch:Q(`people:profiles:amplemarket@2`),paginationType:`page_number`,label:`People search`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Filter-based people search on Amplemarket's dataset — precise prospecting filters.`,tags:[V.PEOPLE_PROFILES],keywords:[`prospect`,`lead`,`contact`,`find people`,`filters`],docPath:$(vU),guide:`The most precise of the three prospecting datasets — prefer it when its filters express the ask exactly. If a needed criterion is missing here, check the crustdata search's wider filter set before falling back to the natural-language parallel search.`,cost:EU,provider:`amplemarket`,defaultPayload:{search_id:vU,connector:null,config:{limit:50,page_number:1,output_fields:{name:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},amplemarket_person_match:{enabled:!0,alias:``}},filters:{current_employer_names:{include:[],exclude:[]},current_departments:[],current_employer_locations:{include:[],exclude:[]},person_name:``,current_employer_founded_year:{min:null,max:null},current_employer_estimated_revenue:[],current_employer_investors:[],current_employer_open_position_titles:[],current_job_functions:[],current_locations:{include:[],exclude:[]},current_employer_linkedin_industries:[],current_employer_domains:{include:[],exclude:[]},current_seniority_levels:[],school_names:[],current_job_titles:[]}}}},jU=`people:profiles:crustdata@2`,MU=g(`name`),NU=g(`company_domain`),PU=g(`profile_url`),FU=g(`job_title`),IU=g(`crustdata_person_match`),LU=r.object({search_id:r.literal(jU),connector:Zl(),config:r.object({limit:N({path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Page size`,description:`Max number of search results per page`}).default(100),cursor:Vu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[MU.name]:A({fieldName:MU.name}),[NU.name]:A({fieldName:NU.name}),[PU.name]:A({fieldName:PU.name}),[FU.name]:A({fieldName:FU.name}),[IU.name]:A({fieldName:IU.name})})),filters:r.object({locations:M({path:`config.filters.locations`,sectionKey:`config.filters`,label:`Location`,placeholder:J(`location`),optionsDef:h(`locations`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),current_job_titles:k({path:`config.filters.current_job_titles`,sectionKey:`config.filters`,label:`Title`,description:``,placeholder:J(`title`),order:1,groupPath:`config.filters.current_employer`,suggestionsDef:h(`titles`)}).default({include:[],exclude:[]}),current_employer_names:k({path:`config.filters.current_employer_names`,sectionKey:`config.filters`,label:`Company name`,description:``,placeholder:J(`company_name`),maxItems:200,groupPath:`config.filters.current_employer`,suggestionsDef:h(`company_names`,{widgets:{emoji:{char:`🏷️`}}})}).default({include:[],exclude:[]}),current_employer_domains:k({path:`config.filters.current_employer_domains`,sectionKey:`config.filters`,label:`Company domain`,placeholder:J(`company_domain`),description:``,maxItems:200,groupPath:`config.filters.current_employer`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),current_employer_industries:M({path:`config.filters.current_employer_industries`,sectionKey:`config.filters`,label:`Industry`,groupPath:`config.filters.current_employer`,placeholder:J(`industry`),description:``,optionsDef:h(`linkedin_industries.crustdata`,{limit:300})}).default({include:[],exclude:[]}),years_at_current_company:j({path:`config.filters.years_at_current_company`,sectionKey:`config.filters`,label:`Years at current company`,placeholder:`1 to 2 years`,disableSearch:!1,required:!1,groupPath:`config.filters.current_employer`,description:``,options:m(`crustdata.years_of_experience`)}).default([]),previous_employer_domains:k({path:`config.filters.previous_employer_domains`,sectionKey:`config.filters`,label:`Previous employer domain`,description:``,placeholder:J(`company_domain`),maxItems:200,groupPath:`config.filters.experience`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),previous_seniority_levels:Fu({path:`config.filters.previous_seniority_levels`,sectionKey:`config.filters`,label:`Previous seniority`,placeholder:J(`seniority`),disableSearch:!0,optionsDef:Ge(`crustdata.person_seniority`),description:``,groupPath:`config.filters.experience`}).default({include:[],exclude:[]}),previous_employer_names:k({path:`config.filters.previous_employer_names`,sectionKey:`config.filters`,label:`Previous employer`,description:``,placeholder:J(`company_name`),maxItems:200,groupPath:`config.filters.experience`,suggestionsDef:h(`company_names`,{widgets:{emoji:{char:`🏷️`}}})}).default({include:[],exclude:[]}),previous_job_titles:k({path:`config.filters.previous_job_titles`,sectionKey:`config.filters`,label:`Previous title`,description:``,placeholder:J(`title`),groupPath:`config.filters.experience`,suggestionsDef:h(`titles`)}).default({include:[],exclude:[]}),previous_employer_industries:M({path:`config.filters.previous_employer_industries`,sectionKey:`config.filters`,label:`Previous employer industries`,placeholder:J(`industry`),groupPath:`config.filters.experience`,description:``,optionsDef:h(`linkedin_industries.crustdata`,{limit:300})}).default({include:[],exclude:[]}),profile_headline_keywords:k({path:`config.filters.profile_headline_keywords`,sectionKey:`config.filters`,label:`Headline contains keywords`,maxItems:100,groupPath:`config.filters.keywords`,placeholder:J(`headline_keywords`)}).default({include:[],exclude:[]}),profile_summary_keywords:k({path:`config.filters.profile_summary_keywords`,sectionKey:`config.filters`,label:`Profile about section contains keywords`,maxItems:100,groupPath:`config.filters.keywords`,placeholder:J(`profile_keywords`)}).default({include:[],exclude:[]}),profile_languages:Fu({path:`config.filters.profile_languages`,sectionKey:`config.filters`,label:`Profile language`,placeholder:J(`languages`),optionsDef:Ge(`crustdata.person_profile_languages`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),languages:Fu({path:`config.filters.languages`,sectionKey:`config.filters`,label:`Spoken language`,placeholder:J(`languages_1`),optionsDef:Ge(`crustdata.person_profile_languages`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),skills:M({path:`config.filters.skills`,sectionKey:`config.filters`,label:`Skills`,description:``,placeholder:J(`skills`),groupPath:`config.filters.skills`,optionsDef:h(`skills`)}).default({include:[],exclude:[]}),years_of_experience:j({path:`config.filters.years_of_experience`,sectionKey:`config.filters`,label:`Years of experience`,placeholder:`1 to 2 years`,disableSearch:!0,description:``,required:!1,options:m(`crustdata.years_of_experience`),groupPath:`config.filters.experience`}).default([]),current_seniority_levels:Fu({path:`config.filters.current_seniority_levels`,sectionKey:`config.filters`,disableSearch:!0,label:`Seniority`,placeholder:J(`seniority`),optionsDef:Ge(`crustdata.person_seniority`),description:``,groupPath:`config.filters.experience`}).default({include:[],exclude:[]}),certifications:k({path:`config.filters.certifications`,sectionKey:`config.filters`,label:`Certifications`,groupPath:`config.filters.certifications_honors`,placeholder:J(`certification`),description:``}).default({include:[],exclude:[]}),honors:k({path:`config.filters.honors`,sectionKey:`config.filters`,label:`Honors`,groupPath:`config.filters.certifications_honors`,placeholder:J(`honor`),description:``}).default({include:[],exclude:[]}),recently_changed_jobs:Bu({path:`config.filters.recently_changed_jobs`,sectionKey:`config.filters`,label:`Recently changed jobs`,description:``,defaultValue:null,groupPath:`config.filters.activities`}),fields_of_study:M({path:`config.filters.fields_of_study`,sectionKey:`config.filters`,label:`Fields of study`,placeholder:J(`field_of_study`),description:``,groupPath:`config.filters.education`,optionsDef:h(`person.education_field_of_study.crustdata`)}).default({include:[],exclude:[]}),degree_names:M({path:`config.filters.degree_names`,sectionKey:`config.filters`,label:`Degree names`,placeholder:J(`degree_name`),description:``,groupPath:`config.filters.education`,optionsDef:h(`person.education_degree.crustdata`)}).default({include:[],exclude:[]}),school_names:M({path:`config.filters.school_names`,sectionKey:`config.filters`,label:`School names`,description:``,placeholder:J(`school`),groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default({include:[],exclude:[]}),current_school_names:M({path:`config.filters.current_school_names`,sectionKey:`config.filters`,label:`Currently enrolled at`,description:``,placeholder:J(`school`),groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default({include:[],exclude:[]}),extracurricular_activities:k({path:`config.filters.extracurricular_activities`,sectionKey:`config.filters`,label:`Extracurricular activities`,description:``,placeholder:J(`extracurricular`),groupPath:`config.filters.education`,suggestionsDef:h(`person.education_activities.crustdata`)}).default({include:[],exclude:[]}),post_processing_exclude_company_profile_urls:O({path:`config.filters.post_processing_exclude_company_profile_urls`,sectionKey:`config.filters`,groupPath:`config.filters.post_processing`,label:`Exclude company profiles`,maxItems:5e3,placeholder:`https://linkedin.com/company/...`,description:`Company LinkedIn URLs (https://www.linkedin.com/company/{slug}) removed from the search results`}).default([]),post_processing_exclude_company_names:O({path:`config.filters.post_processing_exclude_company_names`,sectionKey:`config.filters`,groupPath:`config.filters.post_processing`,label:`Exclude company names`,maxItems:5e3,placeholder:J(`company_name`),description:`Company names removed from the search results`}).default([])}).check(e=>{let{post_processing_exclude_company_profile_urls:t,post_processing_exclude_company_names:n,...r}=e.value;CR(r)&&e.issues.push({code:`custom`,message:`You must set at least one meaningful filter.`,input:e.value})})})}),RU={match:`any`,fields:[{fieldName:`profile_url`}]},zU={allowManagedConnection:!0,mode:`per_page`,credits:{default:5},info:`1 page = 100 records; 200 results = 2 pages`},BU=`people-profiles-crustdata-v2`,VU=class extends Z{billing={billableOperation:BU,cost:zU};searchId=jU;schema=LU;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[MU.name]:this.catalogOutput(MU),[NU.name]:this.catalogOutput(NU),[PU.name]:this.catalogOutput(PU),[FU.name]:this.catalogOutput(FU),[IU.name]:this.catalogOutput(IU)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_people_db_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return RU}},HU=LU,UU={searchId:jU,billableOperation:BU,baseSearch:Q(`people:profiles:crustdata@2`),paginationType:`cursor`,label:`People search`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Filter-based people search on Crustdata's dataset — widest filter surface: employer, growth, and LinkedIn signals.`,tags:[V.PEOPLE_PROFILES],keywords:[`prospect`,`lead`,`contact`,`find people`,`linkedin`],docPath:$(jU),guide:`The general-purpose default among the three prospecting datasets, with the widest filter surface (employer, growth, LinkedIn signals). When a criterion isn't an exact filter match, search broadly here and narrow afterwards — enrich the qualifying signal, then filter rows — rather than switching to the natural-language parallel search.`,cost:zU,provider:`crustdata`,defaultPayload:{search_id:jU,connector:null,config:{limit:100,cursor:``,output_fields:{name:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},crustdata_person_match:{enabled:!0,alias:``}},filters:{profile_headline_keywords:{include:[],exclude:[]},languages:{include:[],exclude:[]},profile_summary_keywords:{include:[],exclude:[]},previous_job_titles:{include:[],exclude:[]},current_employer_names:{include:[],exclude:[]},current_school_names:{include:[],exclude:[]},years_at_current_company:[],certifications:{include:[],exclude:[]},honors:{include:[],exclude:[]},current_employer_industries:{include:[],exclude:[]},current_employer_domains:{include:[],exclude:[]},previous_employer_domains:{include:[],exclude:[]},current_seniority_levels:{include:[],exclude:[]},previous_seniority_levels:{include:[],exclude:[]},degree_names:{include:[],exclude:[]},locations:{include:[],exclude:[]},profile_languages:{include:[],exclude:[]},recently_changed_jobs:null,extracurricular_activities:{include:[],exclude:[]},school_names:{include:[],exclude:[]},fields_of_study:{include:[],exclude:[]},previous_employer_names:{include:[],exclude:[]},current_job_titles:{include:[],exclude:[]},skills:{include:[],exclude:[]},years_of_experience:[],previous_employer_industries:{include:[],exclude:[]},post_processing_exclude_company_profile_urls:[],post_processing_exclude_company_names:[]}}}},WU=`people:profiles:crustdata@3`,GU=g(`name`),KU=g(`profile_url`),qU=g(`person_profile_match`),JU=r.object({search_id:r.literal(WU),connector:Zl(),config:r.object({limit:N({path:`config.limit`,min:1,max:1e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Page size`,description:`Max number of search results per page`}).default(100),cursor:Vu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[GU.name]:A({fieldName:GU.name}),[KU.name]:A({fieldName:KU.name}),[qU.name]:A({fieldName:qU.name})})),filters:r.object({recently_changed_jobs:Bu({path:`config.filters.recently_changed_jobs`,sectionKey:`config.filters`,label:`Recently changed jobs`,description:``,defaultValue:null,groupPath:`config.filters.activities`}),certifications:k({path:`config.filters.certifications`,sectionKey:`config.filters`,label:`Certifications`,groupPath:`config.filters.certifications_honors`,placeholder:J(`certification`),description:``,suggestionsDef:h(`person.certifications.crustdata`)}).default({include:[],exclude:[]}),honors:k({path:`config.filters.honors`,sectionKey:`config.filters`,label:`Honors`,groupPath:`config.filters.certifications_honors`,placeholder:J(`honor`),description:``,suggestionsDef:h(`person.honors.crustdata`)}).default({include:[],exclude:[]}),current_employer_domains:k({path:`config.filters.current_employer_domains`,sectionKey:`config.filters`,label:`Company domain`,placeholder:J(`company_domain`),description:``,maxItems:200,groupPath:`config.filters.current_employer`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),current_employer_headcount_brackets:j({path:`config.filters.current_employer_headcount_brackets`,sectionKey:`config.filters`,label:`Headcount`,description:``,placeholder:`1-10`,disableSearch:!0,required:!1,options:m(`crustdata.company_size`),groupPath:`config.filters.current_employer`}).default([]),current_employer_industries:M({path:`config.filters.current_employer_industries`,sectionKey:`config.filters`,label:`Industry`,groupPath:`config.filters.current_employer`,placeholder:J(`industry`),description:``,optionsDef:h(`linkedin_industries.crustdata`,{limit:300})}).default({include:[],exclude:[]}),current_employer_names:k({path:`config.filters.current_employer_names`,sectionKey:`config.filters`,label:`Company name`,description:``,placeholder:J(`company_name`),maxItems:200,groupPath:`config.filters.current_employer`,suggestionsDef:h(`company_names`,{widgets:{emoji:{char:`🏷️`}}})}).default({include:[],exclude:[]}),current_employment_job_functions:j({path:`config.filters.current_employment_job_functions`,sectionKey:`config.filters`,label:`Function`,groupPath:`config.filters.current_employer`,placeholder:J(`job_function`),description:``,disableSearch:!0,required:!1,options:m(`employment_function.crustdata`)}).default([]),current_employment_job_titles:k({path:`config.filters.current_employment_job_titles`,sectionKey:`config.filters`,label:`Title`,description:``,placeholder:J(`title`),order:1,groupPath:`config.filters.current_employer`,suggestionsDef:h(`titles`)}).default({include:[],exclude:[]}),current_employment_seniority_levels:j({path:`config.filters.current_employment_seniority_levels`,sectionKey:`config.filters`,disableSearch:!0,label:`Seniority`,placeholder:J(`seniority`),options:Ge(`crustdata.person_seniority`).options,required:!1,description:``,groupPath:`config.filters.current_employer`}).default([]),current_employment_tenure_brackets:j({path:`config.filters.current_employment_tenure_brackets`,sectionKey:`config.filters`,label:`Years at current company`,placeholder:`1 to 2 years`,disableSearch:!1,required:!1,groupPath:`config.filters.current_employer`,description:``,options:m(`crustdata.years_of_experience`)}).default([]),current_school_names:M({path:`config.filters.current_school_names`,sectionKey:`config.filters`,label:`Currently enrolled at`,description:``,placeholder:J(`school`),groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default({include:[],exclude:[]}),degree_names:M({path:`config.filters.degree_names`,sectionKey:`config.filters`,label:`Degree`,placeholder:J(`degree_name`),description:``,groupPath:`config.filters.education`,optionsDef:h(`person.education_degree.crustdata`)}).default({include:[],exclude:[]}),fields_of_study:M({path:`config.filters.fields_of_study`,sectionKey:`config.filters`,label:`Field of study`,placeholder:J(`field_of_study`),description:``,groupPath:`config.filters.education`,optionsDef:h(`person.education_field_of_study.crustdata`)}).default({include:[],exclude:[]}),school_names:M({path:`config.filters.school_names`,sectionKey:`config.filters`,label:`School`,description:``,placeholder:J(`school`),groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default({include:[],exclude:[]}),previous_employer_domains:k({path:`config.filters.previous_employer_domains`,sectionKey:`config.filters`,label:`Previous employer domain`,description:``,placeholder:J(`company_domain`),maxItems:200,groupPath:`config.filters.experience`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),previous_employer_headcount_brackets:j({path:`config.filters.previous_employer_headcount_brackets`,sectionKey:`config.filters`,label:`Previous employer headcount`,description:``,placeholder:`1-10`,disableSearch:!0,required:!1,options:m(`crustdata.company_size`),groupPath:`config.filters.experience`}).default([]),previous_employer_industries:M({path:`config.filters.previous_employer_industries`,sectionKey:`config.filters`,label:`Previous employer industry`,placeholder:J(`industry`),groupPath:`config.filters.experience`,description:``,optionsDef:h(`linkedin_industries.crustdata`,{limit:300})}).default({include:[],exclude:[]}),previous_employer_names:k({path:`config.filters.previous_employer_names`,sectionKey:`config.filters`,label:`Previous employer name`,description:``,placeholder:J(`company_name`),maxItems:200,groupPath:`config.filters.experience`,suggestionsDef:h(`company_names`,{widgets:{emoji:{char:`🏷️`}}})}).default({include:[],exclude:[]}),previous_employment_job_functions:j({path:`config.filters.previous_employment_job_functions`,sectionKey:`config.filters`,label:`Previous function`,groupPath:`config.filters.experience`,placeholder:J(`job_function`),description:``,disableSearch:!0,required:!1,options:m(`employment_function.crustdata`)}).default([]),previous_employment_job_titles:k({path:`config.filters.previous_employment_job_titles`,sectionKey:`config.filters`,label:`Previous title`,description:``,placeholder:J(`title`),groupPath:`config.filters.experience`,suggestionsDef:h(`titles`)}).default({include:[],exclude:[]}),previous_employment_seniority_levels:j({path:`config.filters.previous_employment_seniority_levels`,sectionKey:`config.filters`,label:`Previous seniority`,placeholder:J(`seniority`),disableSearch:!0,options:Ge(`crustdata.person_seniority`).options,required:!1,description:``,groupPath:`config.filters.experience`}).default([]),previous_employment_tenure_brackets:j({path:`config.filters.previous_employment_tenure_brackets`,sectionKey:`config.filters`,label:`Years at previous company`,placeholder:`1 to 2 years`,disableSearch:!1,required:!1,groupPath:`config.filters.experience`,description:``,options:m(`crustdata.years_of_experience`)}).default([]),total_years_of_experience_brackets:j({path:`config.filters.total_years_of_experience_brackets`,sectionKey:`config.filters`,label:`Years of experience`,placeholder:`1 to 2 years`,disableSearch:!0,description:``,required:!1,options:m(`crustdata.years_of_experience`),groupPath:`config.filters.experience`}).default([]),languages:Fu({path:`config.filters.languages`,sectionKey:`config.filters`,label:`Spoken language`,placeholder:J(`languages_1`),optionsDef:Ge(`crustdata.person_profile_languages`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),locations:M({path:`config.filters.locations`,sectionKey:`config.filters`,label:`Location`,placeholder:J(`location`),optionsDef:h(`locations`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),about_section_keywords:k({path:`config.filters.about_section_keywords`,sectionKey:`config.filters`,label:`Profile about section contains keywords`,maxItems:100,groupPath:`config.filters.keywords`,placeholder:J(`profile_keywords`)}).default({include:[],exclude:[]}),profile_headline_keywords:k({path:`config.filters.profile_headline_keywords`,sectionKey:`config.filters`,label:`Headline contains keywords`,maxItems:100,groupPath:`config.filters.keywords`,placeholder:J(`headline_keywords`)}).default({include:[],exclude:[]}),skills:M({path:`config.filters.skills`,sectionKey:`config.filters`,label:`Skills`,description:``,placeholder:J(`skills`),groupPath:`config.filters.skills`,optionsDef:h(`skills`)}).default({include:[],exclude:[]})}).check(e=>{CR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),YU={match:`any`,fields:[{fieldName:`profile_url`}]},XU={allowManagedConnection:!0,mode:`per_result`,credits:{default:.15,level1:{credits:.07,weight:10}},info:`1 page = 100 records; 200 results = 2 pages`},ZU=`people-profiles-crustdata-v3`,QU=class extends Z{billing={billableOperation:ZU,cost:XU};searchId=WU;schema=JU;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[GU.name]:this.catalogOutput(GU),[KU.name]:this.catalogOutput(KU),[qU.name]:this.catalogOutput(qU)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_people_db_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return YU}},$U=JU,eW={searchId:WU,billableOperation:ZU,baseSearch:Q(`people:profiles:crustdata@2`),paginationType:`cursor`,label:`People search`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Filter-based people search on Crustdata's dataset — widest filter surface: employer, growth, and LinkedIn signals.`,tags:[V.PEOPLE_PROFILES],keywords:[`prospect`,`lead`,`contact`,`find people`,`linkedin`],docPath:$(WU),guide:`The general-purpose default among the three prospecting datasets, with the widest filter surface (employer, growth, LinkedIn signals). When a criterion isn't an exact filter match, search broadly here and narrow afterwards — enrich the qualifying signal, then filter rows — rather than switching to the natural-language parallel search.`,cost:XU,provider:`crustdata`,defaultPayload:{search_id:WU,connector:null,config:{limit:100,cursor:``,output_fields:{name:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},person_profile_match:{enabled:!0,alias:``}},filters:{recently_changed_jobs:null,certifications:{include:[],exclude:[]},honors:{include:[],exclude:[]},current_employer_domains:{include:[],exclude:[]},current_employer_headcount_brackets:[],current_employer_industries:{include:[],exclude:[]},current_employer_names:{include:[],exclude:[]},current_employment_job_functions:[],current_employment_job_titles:{include:[],exclude:[]},current_employment_seniority_levels:[],current_employment_tenure_brackets:[],current_school_names:{include:[],exclude:[]},degree_names:{include:[],exclude:[]},fields_of_study:{include:[],exclude:[]},school_names:{include:[],exclude:[]},previous_employer_domains:{include:[],exclude:[]},previous_employer_headcount_brackets:[],previous_employer_industries:{include:[],exclude:[]},previous_employer_names:{include:[],exclude:[]},previous_employment_job_functions:[],previous_employment_job_titles:{include:[],exclude:[]},previous_employment_seniority_levels:[],previous_employment_tenure_brackets:[],total_years_of_experience_brackets:[],languages:{include:[],exclude:[]},locations:{include:[],exclude:[]},about_section_keywords:{include:[],exclude:[]},profile_headline_keywords:{include:[],exclude:[]},skills:{include:[],exclude:[]}}}}},tW=`posts:content:crustdata@1`,nW=g(`post_match`),rW=g(`post_text`),iW=g(`post_id`),aW=r.object({search_id:r.literal(tW),connector:Zl(),config:r.object({limit:N({path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Page size`,description:`Max number of search results per page`}).default(100),output_fields:P(r.object({[iW.name]:A({fieldName:iW.name}),[nW.name]:A({fieldName:nW.name}),[rW.name]:A({fieldName:rW.name})})),filters:r.object({keywords:O({path:`config.filters.keywords`,sectionKey:`config.filters`,label:`Search keywords`,groupPath:`config.filters.general`,maxItems:6,placeholder:J(`profile_keywords`),description:``}).default([]),keyword_operator:Uu({path:`config.filters.keyword_operator`,sectionKey:`config.filters`,label:`Keyword operator`,groupPath:`config.filters.general`,options:[{value:`OR`,label:`Any keyword (OR)`},{value:`AND`,label:`All keywords (AND)`}],required:!0,defaultValue:`OR`,description:`Post must match any or all keywords.`}).default(`OR`),date_posted:Uu({path:`config.filters.date_posted`,sectionKey:`config.filters`,label:`Date posted`,groupPath:`config.filters.general`,options:Ge(`crustdata.post_date_posted`).options,placeholder:`Past 24h, past week, ...`,required:!1,defaultValue:``,description:`Only return posts published within this recency window.`}).default(``),content_types:j({path:`config.filters.content_types`,sectionKey:`config.filters`,label:`Content type`,groupPath:`config.filters.general`,options:m(`crustdata.post_content_type`),disableSearch:!0,required:!1,placeholder:`Photos, jobs, ...`,description:``}).default([]),author_industries:Gu({path:`config.filters.author_industries`,sectionKey:`config.filters`,label:`Author industry`,groupPath:`config.filters.author`,optionsDef:h(`linkedin_industries.crustdata`),disableSearch:!1,required:!1,maxItems:100,placeholder:J(`industry`),description:`Only return posts whose author works in one of these industries.`}).default([]),author_company_profile_url:O({path:`config.filters.author_company_profile_url`,sectionKey:`config.filters`,label:`Author company profile URL`,groupPath:`config.filters.author`,maxItems:50,placeholder:`https://linkedin.com/company/..., ...`,description:`Only return posts whose author currently works at these companies (by LinkedIn profile URL).`}).default([]),author_title:O({path:`config.filters.author_title`,sectionKey:`config.filters`,label:`Author title`,groupPath:`config.filters.author`,maxItems:50,suggestionsDef:h(`titles`),placeholder:J(`title`),description:`Only return posts whose author holds one of these titles.`}).default([]),author_profile_url:O({path:`config.filters.author_profile_url`,sectionKey:`config.filters`,label:`Author profile URL`,groupPath:`config.filters.author`,maxItems:50,placeholder:`https://linkedin.com/in/..., ...`,description:`Only return posts authored by these people (by LinkedIn profile URL).`}).default([]),authoring_company_profile_url:O({path:`config.filters.authoring_company_profile_url`,sectionKey:`config.filters`,label:`Authoring company profile URL`,groupPath:`config.filters.author`,maxItems:50,placeholder:`https://linkedin.com/company/..., ...`,description:`Only return posts authored by these companies (by LinkedIn profile URL).`}).default([]),companies_mentioned_in_post:O({path:`config.filters.companies_mentioned_in_post`,sectionKey:`config.filters`,label:`Companies mentioned in post`,groupPath:`config.filters.mentions`,maxItems:50,placeholder:`https://linkedin.com/company/..., ...`,description:`Only return posts that mention these companies (by LinkedIn profile URL).`}).default([]),people_mentioned_in_post:O({path:`config.filters.people_mentioned_in_post`,sectionKey:`config.filters`,label:`People mentioned in post`,groupPath:`config.filters.mentions`,maxItems:50,placeholder:`https://linkedin.com/in/..., ...`,description:`Only return posts that mention these people (by LinkedIn profile URL).`}).default([])}).check(e=>{let t=e.value,n=t.keywords.some(e=>e.trim()!==``),r=[t.author_industries,t.author_company_profile_url,t.author_title,t.author_profile_url,t.authoring_company_profile_url,t.companies_mentioned_in_post,t.people_mentioned_in_post].some(e=>e.length>0);!n&&!r&&e.issues.push({code:`custom`,message:`Provide a keyword or at least one filter.`,input:e.value,path:[`keywords`]});let i=t.author_industries.length>0||t.author_company_profile_url.length>0||t.author_title.length>0||t.author_profile_url.length>0;t.authoring_company_profile_url.length>0&&i&&e.issues.push({code:`custom`,message:`Authoring company profile URL can't be combined with author profile URL, company name, title, or industry filters.`,input:e.value,path:[`authoring_company_profile_url`]})})})}),oW={match:`any`,fields:[{fieldName:`post_id`}]},sW={allowManagedConnection:!0,mode:`per_result`,credits:{default:2}},cW=`posts-content-crustdata-v1`,lW=class extends Z{billing={billableOperation:cW,cost:sW};searchId=tW;schema=aW;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[iW.name]:this.catalogOutput(iW),[nW.name]:this.catalogOutput(nW),[rW.name]:this.catalogOutput(rW)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_social_post_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return oW}},uW=aW,dW={searchId:tW,billableOperation:cW,baseSearch:Q(tW),paginationType:`page_number`,label:`LinkedIn post search`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Keyword-based LinkedIn post search.`,tags:[V.LINKEDIN],keywords:[`content`,`social`,`engagement`,`keyword`,`activity`],docPath:$(tW),cost:sW,provider:`crustdata`,defaultPayload:{search_id:tW,connector:null,config:{limit:100,output_fields:{post_id:{enabled:!0,alias:``},post_text:{enabled:!0,alias:``},post_match:{enabled:!0,alias:``}},filters:{keywords:[],keyword_operator:`OR`,date_posted:``,content_types:[],author_industries:[],author_company_profile_url:[],author_title:[],author_profile_url:[],authoring_company_profile_url:[],companies_mentioned_in_post:[],people_mentioned_in_post:[]}}}},fW=`query:attio@1`,pW=r.object({search_id:r.literal(fW),connector:Xl(),config:r.object({query:Hu({path:`config.query`,groupPath:`config.general`,sectionKey:`general`,label:`SQL query`,description:`A single read-only SELECT statement (PostgreSQL dialect; Attio Enterprise plan only). It is wrapped automatically for pagination, so do not add your own LIMIT/OFFSET for paging.`,rows:8,minLength:1,maxLength:2e4}),limit:FL(),page_number:IL()})}),mW={allowManagedConnection:!1,mode:null,credits:null,info:`Querying your own Attio workspace is free.`},hW=`query-attio-v1`,gW=class extends Z{billing={billableOperation:hW,cost:mW};searchId=fW;schema=pW;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitOperation:`attio_sql`,rateLimitRatio:1,allowManagedConnection:!1}]}async getAgentContext(e){return Mf(e,{objects:`discover`,includeLists:!0})}},_W=pW,vW={searchId:fW,billableOperation:hW,baseSearch:Q(fW),outputFieldMode:`dynamic`,paginationType:`page_number`,label:`Query Attio (SQL)`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`Run a read-only SQL query against your Attio workspace (Enterprise plan) — the only way to aggregate (GROUP BY, COUNT) across objects and lists server-side.`,tags:[V.NEW],keywords:[`sql`,`aggregate`,`count`,`group by`,`report`,`crm`],docPath:$(fW),guide:`Attio Enterprise plan only (other plans get a clear error — list records with an Attio search and aggregate client-side instead). PostgreSQL dialect, SELECT-only; tables are object/list api_slugs, columns are attribute slugs (call get_provider_context for both). Record-reference arrays must be UNNESTed inside a CTE before joining. Ownership attributes are workspace-defined actor-references — discover the slug, never assume one. Example: SELECT owner.id, COUNT(*) FROM companies GROUP BY owner.id.`,cost:mW,provider:`attio`,defaultPayload:{search_id:fW,connector:{strategy:`first`,connections:[]},config:{query:``,limit:100,page_number:1}}},yW=`query:salesforce@1`,bW=r.object({search_id:r.literal(yW),connector:Xl(),config:r.object({soql:Hu({path:`config.soql`,groupPath:`config.general`,sectionKey:`general`,label:`SOQL query`,description:`A single read-only SELECT statement (SOQL, not SQL). Pagination is wrapped automatically — add your own LIMIT/OFFSET only to cap results.`,rows:8,minLength:1,maxLength:2e4}),limit:N({path:`config.limit`,min:1,max:500,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of rows per page`}).default(100),page_number:N({path:`config.page_number`,min:1,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Page`,description:`1-based page index. Salesforce caps OFFSET at 2,000 rows — narrow with WHERE past that, or use the object searches (their cursors have no depth limit).`}).nullable().default(1)})}),xW={allowManagedConnection:!1,mode:null,credits:null,info:`Salesforce searches are free — you bring your own Salesforce connection.`},SW=`query-salesforce-v1`,CW=class extends Z{billing={billableOperation:SW,cost:xW};searchId=yW;schema=bW;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitOperation:`salesforce_api`,rateLimitRatio:1,allowManagedConnection:!1}]}async getAgentContext(e){return tf(e,{objects:[`Contact`,`Lead`,`Account`,`Opportunity`],includeStages:!0})}},wW=bW,TW={searchId:yW,billableOperation:SW,baseSearch:Q(yW),outputFieldMode:`dynamic`,paginationType:`page_number`,label:`Query Salesforce (SOQL)`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`Run a read-only SOQL query against your Salesforce org — including native aggregates (GROUP BY / HAVING / COUNT), e.g. every owner with more than 10 accounts.`,guide:"SOQL SELECT only (no SOSL, no DML). Get object/field API names from get_provider_context and use them verbatim. Aggregates (GROUP BY/HAVING/COUNT) are supported but capped to ONE page — Salesforce can't paginate aggregate results. Use IsClosed = false for open opportunities (never assume stage names); date literals like LAST_N_DAYS:30 work; in multi-currency orgs prefix amount literals (Amount > USD5000). For org-wide activity reports, query Task/Event directly (e.g. `SELECT Subject, ActivityDate, Who.Name FROM Task WHERE TaskSubtype = 'Call' AND ActivityDate = LAST_WEEK`); for a single record's timeline use activities:find:salesforce instead. OFFSET is capped at 2,000 rows — past that, narrow with WHERE or use the object searches.",tags:[V.FIELDS,V.NEW],keywords:[`soql`,`sql`,`crm`,`sfdc`,`aggregate`,`group by`,`report`],docPath:$(yW),cost:xW,provider:`salesforce`,defaultPayload:{search_id:yW,connector:{strategy:`first`,connections:[]},config:{soql:``,limit:100,page_number:1}}},EW=`records:attio@1`,DW=g(`attio_record_id`),OW=g(`attio_record_match`),kW=r.object({search_id:r.literal(EW),connector:Xl(),config:r.object({object:Wu({path:`config.object`,groupPath:`config.general`,sectionKey:`general`,label:`Object`,required:!0,info:`Any object in this workspace — custom objects included.`,enabledIf:_(`attio`),optionsDef:Sf}),custom_properties:LL(`name`,Af({target:`objects`,fromField:`object`})),filters:RL(`name`),saved_view:zL(Ef({target:`objects`,fromField:`object`})),created_within:BL(),limit:FL(),page_number:IL(),output_fields:P(r.object({[DW.name]:A({fieldName:DW.name}),[OW.name]:A({fieldName:OW.name})}))}).check(e=>VL(e,[`created_within`]))}),AW={allowManagedConnection:!1,mode:null,credits:null,info:`Searching your own Attio workspace is free.`},jW=`records-attio-v1`,MW=class extends Z{billing={billableOperation:jW,cost:AW};searchId=EW;schema=kW;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[DW.name]:this.catalogOutput(DW),[OW.name]:this.catalogOutput(OW)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitOperation:`attio_query`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`attio_record_id`}]}}async getAgentContext(e){let t=this.payload.config.object,n=Array.isArray(t)?t[0]??``:t;return Mf(e,{objects:n?[n]:`discover`,...n?{includeViewsFor:[n]}:{}})}},NW=kW,PW={searchId:EW,billableOperation:jW,baseSearch:Q(EW),outputFieldMode:`static`,paginationType:`page_number`,label:`Attio records`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List records of ANY Attio object — custom objects included. Each row carries the record id plus a JSON record with a compact attribute set and any custom attributes you pick.`,tags:[V.NEW],keywords:[`crm`,`list`,`import`,`custom object`,`generic`,`workspace`],docPath:$(EW),guide:"The generic floor for custom objects and users/workspaces — for people/companies/deals prefer the typed Attio searches (typed identity columns). Call get_provider_context first for the selected object's attribute slugs. The record JSON carries a compact default attribute set under `values` (the object's first attributes in UI order) plus your picks under `custom_properties` — pick what you need or chain record:lookup for everything. A saved view replaces the filter fields entirely. Attio reports no total count — page until a short page.",cost:AW,provider:`attio`,defaultPayload:{search_id:EW,connector:{strategy:`first`,connections:[]},config:{object:``,custom_properties:[],filters:null,saved_view:``,created_within:``,limit:100,page_number:1,output_fields:{attio_record_id:{enabled:!0,alias:``},attio_record_match:{enabled:!0,alias:``}}}}},FW=`sheet:rows@1`,IW=[{label:`Demo leads`,value:`demo-leads`},{label:`Demo companies`,value:`demo-companies`},{label:`Demo contacts`,value:`demo-contacts`}],LW={requires:{connection:`pipe0`},enabledIf:_(`pipe0`,`Select a pipe0 connection to see sheet suggestions`),options:async({query:e,client:t,environment:n})=>n===`sandbox`?IW:t?(await t.sheets.list({query:e})).map(e=>({label:e.slug,value:e.slug})):[],widgets:{provider_logo:{provider:`pipe0`}}},RW=r.object({search_id:r.literal(FW),connector:Xl(),config:r.object({sheet:Wu({path:`config.sheet`,sectionKey:`general`,groupPath:`config.general`,label:`Sheet`,required:!0,info:`Pick one of your pipe0 sheets; its rows are returned.`,enabledIf:_(`pipe0`),optionsDef:LW}),limit:N({path:`config.limit`,min:1,max:2e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of rows per page`}).default(100),cursor:Vu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),include_metadata:zu({path:`config.include_metadata`,groupPath:`config.general`,sectionKey:`general`,label:`Include metadata`,description:`Widgets and prevenance tags.`,defaultValue:!1})})}),zW={allowManagedConnection:!0,mode:`per_search`,credits:{default:0},info:`Reading your own pipe0 sheet is free.`},BW=`sheet-items-v1-pipe0`,VW=class extends Z{billing={billableOperation:BW,cost:zW};searchId=FW;schema=RW;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitOperation:`pipe0_api_operation`,rateLimitRatio:1,allowManagedConnection:!0}]}},HW=RW,UW={searchId:FW,billableOperation:BW,baseSearch:Q(FW),outputFieldMode:`dynamic`,paginationType:`cursor`,label:`Read sheet rows`,categories:[`data`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`List rows from a pipe0 sheet.`,tags:[V.FIELDS,V.NEW],keywords:[`lookup`,`list`,`records`,`table`,`fetch`],docPath:$(FW),cost:zW,provider:`pipe0`,defaultPayload:{search_id:FW,connector:{strategy:`first`,connections:[]},config:{sheet:``,limit:100,cursor:``,include_metadata:!1}}},WW=`users:attio@1`,GW=g(`attio_workspace_member_id`),KW=g(`email`),qW=g(`first_name`),JW=g(`last_name`),YW=g(`attio_workspace_member_match`),XW=r.object({search_id:r.literal(WW),connector:Xl(),config:r.object({include_suspended:zu({path:`config.include_suspended`,groupPath:`config.general`,sectionKey:`general`,label:`Include suspended members`,description:``,defaultValue:!1}),limit:FL(),page_number:IL(),output_fields:P(r.object({[GW.name]:A({fieldName:GW.name}),[KW.name]:A({fieldName:KW.name}),[qW.name]:A({fieldName:qW.name}),[JW.name]:A({fieldName:JW.name}),[YW.name]:A({fieldName:YW.name})}))})}),ZW={allowManagedConnection:!1,mode:null,credits:null,info:`Listing your own Attio workspace members is free.`},QW=`users-attio-v1`,$W=class extends Z{billing={billableOperation:QW,cost:ZW};searchId=WW;schema=XW;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[GW.name]:this.catalogOutput(GW),[KW.name]:this.catalogOutput(KW),[qW.name]:this.catalogOutput(qW),[JW.name]:this.catalogOutput(JW),[YW.name]:this.catalogOutput(YW)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitOperation:`attio_generic`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`attio_workspace_member_id`}]}}},eG=XW,tG={searchId:WW,billableOperation:QW,baseSearch:Q(WW),outputFieldMode:`static`,paginationType:`page_number`,label:`Attio users`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List the workspace members (users) of your Attio workspace: id, email, name, and access level — e.g. for building a round-robin assignment list.`,tags:[V.NEW],keywords:[`crm`,`reps`,`team`,`assignment`,`round robin`,`workspace members`,`owner`,`sellers`,`sales`],docPath:$(WW),guide:`Attio's workspace-members endpoint returns the full list in one call with no server-side filtering — suspended members are excluded by default, and pagination is applied locally after fetching. Attio has no universal owner field like HubSpot/Salesforce, so this search has no owned-record count: ownership in Attio is a workspace-defined actor-reference attribute per object, not a fixed system field. The member id column matches those actor-reference attributes (e.g. a deal's owner) on other Attio records and searches.`,cost:ZW,provider:`attio`,defaultPayload:{search_id:WW,connector:{strategy:`first`,connections:[]},config:{include_suspended:!1,limit:100,page_number:1,output_fields:{attio_workspace_member_id:{enabled:!0,alias:``},email:{enabled:!0,alias:``},first_name:{enabled:!0,alias:``},last_name:{enabled:!0,alias:``},attio_workspace_member_match:{enabled:!0,alias:``}}}}},nG=`users:salesforce@1`,rG=g(`salesforce_record_id`),iG=g(`first_name`),aG=g(`last_name`),oG=g(`email`),sG=g(`salesforce_owned_count`),cG=g(`salesforce_user_match`),lG=r.object({search_id:r.literal(nG),connector:Xl(),config:r.object({owned_object:Uu({required:!1,path:`config.owned_object`,groupPath:`config.counts`,sectionKey:`general`,label:`Count owned`,description:`Which records to count per user (via OwnerId).`,options:[{label:`Accounts`,value:`accounts`},{label:`Contacts`,value:`contacts`},{label:`Leads`,value:`leads`},{label:`Opportunities`,value:`opportunities`}]}).default(`accounts`),min_owned_count:N({path:`config.min_owned_count`,min:0,groupPath:`config.counts`,sectionKey:`general`,label:`Minimum owned`,description:`Only return users owning MORE than this many records. Counted in ONE aggregate query for all users.`}).nullable(),include_ownership_counts:zu({path:`config.include_ownership_counts`,groupPath:`config.counts`,sectionKey:`general`,label:`Include ownership counts`,description:`Adds an owned-record count column (one aggregate query, all users at once).`,defaultValue:!0}),include_inactive:zu({path:`config.include_inactive`,groupPath:`config.general`,sectionKey:`general`,label:`Include deactivated users`,description:``,defaultValue:!1}),custom_properties:sL(),limit:mL(),cursor:hL(),output_fields:P(r.object({[rG.name]:A({fieldName:rG.name}),[iG.name]:A({fieldName:iG.name}),[aG.name]:A({fieldName:aG.name}),[oG.name]:A({fieldName:oG.name}),[sG.name]:A({fieldName:sG.name}),[cG.name]:A({fieldName:cG.name})}))})}),uG={allowManagedConnection:!1,mode:null,credits:null,info:`Salesforce searches are free — you bring your own Salesforce connection.`},dG=`users-salesforce-v1`,fG=class extends Z{billing={billableOperation:dG,cost:uG};searchId=nG;schema=lG;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[rG.name]:this.catalogOutput(rG),[iG.name]:this.catalogOutput(iG),[aG.name]:this.catalogOutput(aG),[oG.name]:this.catalogOutput(oG),[sG.name]:this.catalogOutput(sG),[cG.name]:this.catalogOutput(cG)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitOperation:`salesforce_api`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`salesforce_record_id`}]}}async getAgentContext(e){return tf(e,{objects:[`User`],includeOwners:!0})}},pG=lG,mG={searchId:nG,billableOperation:dG,baseSearch:Q(nG),outputFieldMode:`static`,paginationType:`cursor`,label:`Salesforce users`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List users (record owners) from your Salesforce org, with per-user owned-record counts computed in a single aggregate query — e.g. every rep owning more than 10 accounts.`,tags:[V.NEW],keywords:[`crm`,`sfdc`,`owner`,`rep`,`seller`,`team`,`ownership`],docPath:$(nG),guide:"Ownership counts come from ONE `GROUP BY OwnerId` aggregate — cheap even for many users. Caveat: aggregate results don't paginate, so orgs with more than 2,000 distinct owners of the counted object get a precise error — use query:salesforce@1 with your own GROUP BY/HAVING there. The user id chains as `salesforce_record_id` into owner filters on the object searches.",cost:uG,provider:`salesforce`,defaultPayload:{search_id:nG,connector:{strategy:`first`,connections:[]},config:{owned_object:`accounts`,min_owned_count:null,include_ownership_counts:!0,include_inactive:!1,custom_properties:[],limit:100,cursor:``,output_fields:{salesforce_record_id:{enabled:!0,alias:``},first_name:{enabled:!0,alias:``},last_name:{enabled:!0,alias:``},email:{enabled:!0,alias:``},salesforce_owned_count:{enabled:!0,alias:``},salesforce_user_match:{enabled:!0,alias:``}}}}},hG={"people:profiles:crustdata@1":sV,"people:profiles:crustdata@2":VU,"people:profiles:crustdata@3":QU,"companies:profiles:crustdata@1":wB,"companies:profiles:crustdata@2":LB,"companies:profiles:crustdata@3":JR,"people:profiles:amplemarket@1":YB,"people:profiles:amplemarket@2":OU,"companies:profiles:amplemarket@1":fB,"companies:profiles:amplemarket@2":PR,"companies:entitysearch:parallel@1":lR,"people:entitysearch:parallel@1":eU,"people:eventguests:luma@1":hU,"people:channelmembers:slack@1":HH,"events:googlecalendar@1":NV,"posts:content:crustdata@1":lW,"sheet:rows@1":VW,"bucket:entries@1":ML,"query:postgres@1":Mz,"query:databricks@1":Tz,"contacts:hubspot@1":oz,"companies:hubspot@1":bR,"deals:hubspot@1":eB,"owners:hubspot@1":gH,"contacts:salesforce@1":vz,"leads:salesforce@1":KV,"accounts:salesforce@1":TL,"opportunities:salesforce@1":rH,"users:salesforce@1":fG,"query:salesforce@1":CW,"people:attio@1":OH,"companies:attio@1":XL,"deals:attio@1":Uz,"records:attio@1":MW,"entries:attio@1":_V,"query:attio@1":gW,"users:attio@1":$W},gG={"people:profiles:crustdata@1":cV,"people:profiles:crustdata@2":HU,"people:profiles:crustdata@3":$U,"companies:profiles:crustdata@1":TB,"companies:profiles:crustdata@2":RB,"companies:profiles:crustdata@3":YR,"people:profiles:amplemarket@1":XB,"people:profiles:amplemarket@2":kU,"companies:profiles:amplemarket@1":pB,"companies:profiles:amplemarket@2":FR,"companies:entitysearch:parallel@1":uR,"people:entitysearch:parallel@1":tU,"people:eventguests:luma@1":gU,"people:channelmembers:slack@1":UH,"events:googlecalendar@1":PV,"posts:content:crustdata@1":uW,"sheet:rows@1":HW,"bucket:entries@1":NL,"query:postgres@1":Nz,"query:databricks@1":Ez,"contacts:hubspot@1":sz,"companies:hubspot@1":xR,"deals:hubspot@1":tB,"owners:hubspot@1":_H,"contacts:salesforce@1":yz,"leads:salesforce@1":qV,"accounts:salesforce@1":EL,"opportunities:salesforce@1":iH,"users:salesforce@1":pG,"query:salesforce@1":wW,"people:attio@1":kH,"companies:attio@1":ZL,"deals:attio@1":Wz,"records:attio@1":NW,"entries:attio@1":vV,"query:attio@1":_W,"users:attio@1":eG},_G={"people:profiles:crustdata@1":lV,"people:profiles:crustdata@2":UU,"people:profiles:crustdata@3":eW,"companies:profiles:crustdata@1":EB,"companies:profiles:crustdata@2":zB,"companies:profiles:crustdata@3":XR,"people:profiles:amplemarket@1":ZB,"people:profiles:amplemarket@2":AU,"companies:profiles:amplemarket@1":mB,"companies:profiles:amplemarket@2":IR,"companies:entitysearch:parallel@1":dR,"people:entitysearch:parallel@1":nU,"people:eventguests:luma@1":_U,"people:channelmembers:slack@1":WH,"events:googlecalendar@1":FV,"posts:content:crustdata@1":dW,"sheet:rows@1":UW,"bucket:entries@1":PL,"query:postgres@1":Pz,"query:databricks@1":Dz,"contacts:hubspot@1":cz,"companies:hubspot@1":SR,"deals:hubspot@1":nB,"owners:hubspot@1":vH,"contacts:salesforce@1":bz,"leads:salesforce@1":JV,"accounts:salesforce@1":DL,"opportunities:salesforce@1":aH,"users:salesforce@1":mG,"query:salesforce@1":TW,"people:attio@1":AH,"companies:attio@1":QL,"deals:attio@1":Gz,"records:attio@1":PW,"entries:attio@1":yV,"query:attio@1":vW,"users:attio@1":tG};function vG(e){return hG[e]}const yG=t.discriminatedUnion(`search_id`,Object.values(gG).map(e=>e)).openapi(`SearchPayloadSchema`);function bG(e,t){return Vt(t,_G[e].defaultPayload)}const xG=t.preprocess(e=>{if(!e||typeof e!=`object`||!(`search_id`in e))return e;let t=bG(e.search_id);return t?{...e,config:Vt(e?.config||{},t.config)}:e},yG),SG=t.object({config:t.object({environment:t.enum([`production`,`sandbox`]).default(`production`),widgets:t.object({enabled:t.boolean().default(!1)}).default({enabled:!1}),field_definitions:t.object({enabled:t.boolean().default(!1)}).default({enabled:!1})}).default({environment:`production`,widgets:{enabled:!1},field_definitions:{enabled:!1}}),search:xG}).openapi(`SearchRequestSchema`),CG=ts,wG=t.object({value:Vo,status:Bo,type:Ro.optional(),format:is.nullable().optional(),resolved_by:ds.nullable().optional(),widgets:es.optional()}),TG=t.record(t.string(),wG.nullable());function EG(e){return gG[e]}const DG=t.enum([`cursor`,`page_number`]),OG=t.object({id:t.string(),status:t.enum([`completed`,`failed`,`pending`,`processing`]),search_id:aL,errors:t.array(CG),results:t.array(TG),organization_id:t.string(),next_page:xG.nullable(),pagination_type:DG.nullable(),total_pages:t.int32().nullable(),field_definitions:os.optional()}).openapi(`SearchResponseSchema`);function kG(e){let t=e.split(`@`)[1];if(!t)throw Error(`No search version found`);return Number(t)}function AG(){let e={};for(let t of Object.values(_G)){let{baseSearch:n}=t;e[n]??=[],e[n].push(t)}return Object.entries(e).forEach(([t,n])=>{e[t]=n.sort((e,t)=>{let n=kG(e.searchId);return kG(t.searchId)-n})}),e}function jG(e){return _G[e]}const MG=AG();function NG(e){let t=[];for(let[n,r]of Object.entries(MG)){let i=r[0];if(!i)throw Error(`Found empty entry`);i.lifecycle?.deprecatedOn&&e!==`deprecated`||(e===null||i.categories.includes(e))&&t.push({...i,baseSearch:n,latestVersion:kG(i.searchId)})}return t}function PG(e){let t=_G[e].defaultPayload.config.output_fields;return t?Object.keys(t):[]}function FG(e,t){let n=e.filter(e=>t===null?!0:e.categories.some(e=>e===t)),r={},i={},a={};for(let e of n){if(e.lifecycle&&e.lifecycle.deprecatedOn){i.Deprecated??=[],i.Deprecated.push(e.searchId);continue}a[e.provider]??=[],a[e.provider].push(e.searchId);for(let t of PG(e.searchId))r[t]??=[],r[t].push(e.searchId);for(let t of e.tags)i[t]??=[],i[t].push(e.searchId)}return{searchIdsByOutputField:r,searchIdsByTag:i,searchIdsByProvider:a,sortedTagEntries:Object.entries(i).sort((e,t)=>e[0].localeCompare(t[0])),sortedOutputFieldEntries:Object.entries(r).sort((e,t)=>e[0].localeCompare(t[0])),sortedProviderEntries:Object.entries(a).sort((e,t)=>e[0].localeCompare(t[0])),searchEntriesByBaseSearch:MG}}function IG(e){let t=jG(e);return{[t.provider]:t.cost.allowManagedConnection?t.cost.credits.default:0}}const LG={"prompt:run@1":fN,"agent:run@1":Vp,"company:newssummary:website@1":Ay,"company:newssummary:domain@1":Ag,"company:techstack:builtwith@1":vb,"company:techstack:builtwith@2":r_,"company:websiteurl:email@1":Db,"company:domain:workemail@1":Rm,"company:funding:leadmagic@1":lv,"company:funding:leadmagic@2":Cv,"company:funding:waterfall@1":nh,"people:workemail:waterfall@1":Lw,"person:workemail:waterfall@1":aN,"people:email:iswork@1":Ib,"email:iswork@1":WT,"people:name:split@1":oS,"person:name:split@1":_j,"people:validate:email:zerobounce@1":lw,"people:email:validate:zerobounce@2":tx,"email:validate:zerobounce@1":mE,"people:mobilenumber:workemail:waterfall@1":Xx,"person:name:join@1":sj,"company:overview@1":Gy,"company:overview@2":sb,"company:overview@3":Kg,"json:extract:multi@1":ND,"company:lookalikes:companyenrich@1":ey,"company:lookalikes:companyenrich@2":Mh,"company:match:logodev@1":xy,"company:match:logodev@2":xg,"person:posts:content:crustdata@1":zj,"people:profile:workemail:crustdata@1":VC,"person:profile:workemail:crustdata@1":lM,"people:identity:email:waterfall@1":_x,"person:identity:email:waterfall@1":cT,"person:identity:email:waterfall@2":Xk,"person:identity:amplemarket@1":Kw,"email:send:resend@1":iE,"contact:create:resend@1":m_,"lead:enroll:lemlist@1":mO,"lead:enroll:amplemarket@1":KD,"email:send:gmail@1":ZT,"email:draft:gmail@1":FT,"email:write@1":CE,"fields:merge@1":lD,"field:slugify@1":VE,"field:domainify@1":ME,"field:timestamp@1":JE,"formula:run@1":vD,"signals:personprofilematch@1":tI,"http:request@1":DD,"template:fill@1":cI,"message:send:slack@1":jO,"message:send-direct:slack@1":xO,"message:write@1":zO,"people:personalemail:profile:waterfall@1":vS,"person:personalemail:profileurl:waterfall@1":kj,"website:scrape:firecrawl@1":KI,"website:scrapelist:firecrawl@1":tL,"website:extract:firecrawl@1":_I,"website:extract:parallel@1":EI,"website:maplinks:firecrawl@1":FI,"row:append:sheet@1":LP,"bucket:claim@1":mm,"bucket:count@1":xm,"bucket:check@1":sm,"bucket:countif@1":km,"row:expandappend:sheet@1":qP,"row:roundrobin:sheet@1":eF,"rows:find:sheet@1":UF,"rows:delete:sheet@1":sF,"rows:find:postgres@1":PF,"rows:find:databricks@1":EF,"people:match:role:waterfall@1":Ox,"person:match:role:waterfall@1":vA,"company:match:crustdata@1":ly,"company:match:crustdata@2":Qh,"contact:match:hubspot@1":T_,"company:match:hubspot@1":lg,"deal:match:hubspot@1":Y_,"object:update:hubspot@1":ik,"object:associations:hubspot@1":YO,"activity:log:hubspot@1":Sp,"person:match:salesforce@1":kA,"account:match:salesforce@1":df,"opportunity:match:salesforce@1":gk,"record:lookup:salesforce@1":VN,"record:update:salesforce@1":_P,"record:assert:salesforce@1":xN,"activities:find:salesforce@1":Qf,"activity:log:salesforce@1":Mp,"person:match:attio@1":sA,"company:match:attio@1":Uh,"deal:match:attio@1":L_,"record:match:attio@1":ZN,"record:lookup:attio@1":jN,"record:update:attio@1":sP,"activities:find:attio@1":Vf,"person:match:amplemarket@1":_T,"company:identity@2":Gv,"company:identity@3":ph,"company:identity:crustdata@1":Ch,"people:phone:profile:waterfall@1":kS,"person:mobile:profileurl:waterfall@1":BA,"person:devprofileurl:profileurl:waterfall@1":Ok,"people:phone:workemail:waterfall@1":BS,"person:mobile:workemail:waterfall@1":ZA,"people:profile:waterfall@1":jC,"person:profile:waterfall@1":OT,"person:profile:waterfall@2":$j,"people:profileurl:email:waterfall@1":$C,"person:profileurl:email:waterfall@1":xM,"person:profileurl:name@1":MM,"people:email:validate:zerobounce@1":Gb,"person:email:validate:millionverifier@1":Rk,"people:workemail:profileurl:waterfall@1":Sw,"person:workemail:profileurl:waterfall@1":WM,"company:identity@1":Pv,"people:professionalprofile:waterfall@1":ZS,"people:professionalprofileurl:name@1":bC,"people:professionalprofileurl:email:waterfall@1":lC,"people:mobilenumber:professionalprofile:waterfall@1":zx},RG={"prompt:run@1":pN,"agent:run@1":Hp,"company:newssummary:website@1":jy,"company:newssummary:domain@1":jg,"company:techstack:builtwith@1":yb,"company:techstack:builtwith@2":i_,"company:websiteurl:email@1":Ob,"company:domain:workemail@1":zm,"company:funding:leadmagic@1":uv,"company:funding:leadmagic@2":wv,"company:funding:waterfall@1":rh,"people:workemail:waterfall@1":Rw,"person:workemail:waterfall@1":oN,"people:email:iswork@1":Lb,"email:iswork@1":GT,"people:name:split@1":sS,"person:name:split@1":vj,"people:validate:email:zerobounce@1":uw,"people:email:validate:zerobounce@2":nx,"email:validate:zerobounce@1":hE,"people:mobilenumber:workemail:waterfall@1":Zx,"person:name:join@1":cj,"company:overview@1":Ky,"company:overview@2":cb,"company:overview@3":qg,"json:extract:multi@1":PD,"email:write@1":wE,"fields:merge@1":uD,"field:slugify@1":HE,"field:domainify@1":NE,"field:timestamp@1":YE,"formula:run@1":yD,"signals:personprofilematch@1":nI,"http:request@1":OD,"email:send:resend@1":aE,"contact:create:resend@1":h_,"lead:enroll:lemlist@1":hO,"lead:enroll:amplemarket@1":qD,"company:lookalikes:companyenrich@1":ty,"company:lookalikes:companyenrich@2":Nh,"company:match:logodev@1":Sy,"company:match:logodev@2":Sg,"person:posts:content:crustdata@1":Bj,"people:profile:workemail:crustdata@1":HC,"person:profile:workemail:crustdata@1":uM,"people:identity:email:waterfall@1":vx,"person:identity:email:waterfall@1":lT,"person:identity:email:waterfall@2":Zk,"company:match:crustdata@1":uy,"company:match:crustdata@2":$h,"contact:match:hubspot@1":E_,"company:match:hubspot@1":ug,"deal:match:hubspot@1":X_,"object:update:hubspot@1":ak,"object:associations:hubspot@1":XO,"activity:log:hubspot@1":Cp,"person:match:salesforce@1":AA,"account:match:salesforce@1":ff,"opportunity:match:salesforce@1":_k,"record:lookup:salesforce@1":HN,"record:update:salesforce@1":vP,"record:assert:salesforce@1":SN,"activities:find:salesforce@1":$f,"activity:log:salesforce@1":Np,"person:match:attio@1":cA,"company:match:attio@1":Wh,"deal:match:attio@1":R_,"record:match:attio@1":QN,"record:lookup:attio@1":MN,"record:update:attio@1":cP,"activities:find:attio@1":Hf,"person:identity:amplemarket@1":qw,"message:send:slack@1":MO,"message:send-direct:slack@1":SO,"email:send:gmail@1":QT,"email:draft:gmail@1":IT,"message:write@1":BO,"template:fill@1":lI,"website:scrape:firecrawl@1":qI,"website:scrapelist:firecrawl@1":nL,"website:extract:firecrawl@1":vI,"website:extract:parallel@1":DI,"website:maplinks:firecrawl@1":II,"row:append:sheet@1":RP,"bucket:claim@1":hm,"bucket:count@1":Sm,"bucket:check@1":cm,"bucket:countif@1":Am,"row:expandappend:sheet@1":JP,"row:roundrobin:sheet@1":tF,"rows:find:sheet@1":WF,"rows:delete:sheet@1":cF,"rows:find:postgres@1":FF,"rows:find:databricks@1":DF,"people:match:role:waterfall@1":kx,"person:match:role:waterfall@1":yA,"company:identity@2":Kv,"company:identity@3":mh,"company:identity:crustdata@1":wh,"people:phone:profile:waterfall@1":AS,"person:mobile:profileurl:waterfall@1":VA,"person:devprofileurl:profileurl:waterfall@1":kk,"people:personalemail:profile:waterfall@1":yS,"person:personalemail:profileurl:waterfall@1":Aj,"people:profile:waterfall@1":MC,"person:profile:waterfall@1":kT,"person:profile:waterfall@2":eM,"people:profileurl:email:waterfall@1":ew,"person:profileurl:email:waterfall@1":SM,"person:profileurl:name@1":NM,"people:email:validate:zerobounce@1":Kb,"person:email:validate:millionverifier@1":zk,"people:phone:workemail:waterfall@1":VS,"person:mobile:workemail:waterfall@1":QA,"people:workemail:profileurl:waterfall@1":Cw,"person:workemail:profileurl:waterfall@1":GM,"person:match:amplemarket@1":vT,"company:identity@1":Fv,"people:professionalprofile:waterfall@1":QS,"people:professionalprofileurl:name@1":xC,"people:professionalprofileurl:email:waterfall@1":uC,"people:mobilenumber:professionalprofile:waterfall@1":Bx},zG={"prompt:run@1":mN,"agent:run@1":Up,"company:newssummary:website@1":My,"company:newssummary:domain@1":Mg,"company:techstack:builtwith@1":bb,"company:techstack:builtwith@2":a_,"company:websiteurl:email@1":kb,"company:domain:workemail@1":Bm,"company:funding:leadmagic@1":dv,"company:funding:leadmagic@2":Tv,"company:funding:waterfall@1":ih,"people:workemail:waterfall@1":zw,"person:workemail:waterfall@1":sN,"people:email:iswork@1":Rb,"email:iswork@1":KT,"people:name:split@1":cS,"person:name:split@1":yj,"people:validate:email:zerobounce@1":dw,"people:mobilenumber:workemail:waterfall@1":Qx,"person:name:join@1":lj,"company:overview@1":qy,"company:overview@2":lb,"company:overview@3":Jg,"json:extract:multi@1":FD,"email:send:resend@1":oE,"contact:create:resend@1":g_,"lead:enroll:lemlist@1":gO,"lead:enroll:amplemarket@1":JD,"email:send:gmail@1":$T,"email:draft:gmail@1":LT,"message:send:slack@1":NO,"message:send-direct:slack@1":CO,"message:write@1":VO,"email:write@1":TE,"template:fill@1":uI,"fields:merge@1":dD,"field:slugify@1":UE,"field:domainify@1":PE,"field:timestamp@1":XE,"formula:run@1":bD,"signals:personprofilematch@1":rI,"http:request@1":kD,"row:append:sheet@1":zP,"bucket:claim@1":gm,"bucket:count@1":Cm,"bucket:check@1":lm,"bucket:countif@1":jm,"row:expandappend:sheet@1":YP,"row:roundrobin:sheet@1":nF,"rows:find:sheet@1":GF,"rows:delete:sheet@1":lF,"rows:find:postgres@1":IF,"rows:find:databricks@1":OF,"company:lookalikes:companyenrich@1":ny,"company:lookalikes:companyenrich@2":Ph,"people:match:role:waterfall@1":Ax,"person:match:role:waterfall@1":bA,"company:match:logodev@1":Cy,"company:match:logodev@2":Cg,"person:posts:content:crustdata@1":Vj,"people:profile:workemail:crustdata@1":UC,"person:profile:workemail:crustdata@1":dM,"people:workemail:profileurl:waterfall@1":ww,"person:workemail:profileurl:waterfall@1":KM,"people:identity:email:waterfall@1":yx,"person:identity:email:waterfall@1":uT,"person:identity:email:waterfall@2":Qk,"company:match:crustdata@1":dy,"company:match:crustdata@2":eg,"contact:match:hubspot@1":D_,"company:match:hubspot@1":dg,"deal:match:hubspot@1":Z_,"object:update:hubspot@1":ok,"object:associations:hubspot@1":ZO,"activity:log:hubspot@1":wp,"person:match:salesforce@1":jA,"account:match:salesforce@1":pf,"opportunity:match:salesforce@1":vk,"record:lookup:salesforce@1":UN,"record:update:salesforce@1":yP,"record:assert:salesforce@1":CN,"activities:find:salesforce@1":ep,"activity:log:salesforce@1":Pp,"person:match:attio@1":lA,"company:match:attio@1":Gh,"deal:match:attio@1":z_,"record:match:attio@1":$N,"record:lookup:attio@1":NN,"record:update:attio@1":lP,"activities:find:attio@1":Uf,"person:identity:amplemarket@1":Jw,"email:validate:zerobounce@1":gE,"person:email:validate:millionverifier@1":Bk,"people:personalemail:profile:waterfall@1":bS,"person:personalemail:profileurl:waterfall@1":jj,"people:email:validate:zerobounce@1":qb,"people:email:validate:zerobounce@2":rx,"people:phone:workemail:waterfall@1":HS,"person:mobile:workemail:waterfall@1":$A,"website:scrape:firecrawl@1":JI,"website:scrapelist:firecrawl@1":rL,"website:extract:firecrawl@1":yI,"website:extract:parallel@1":OI,"website:maplinks:firecrawl@1":LI,"person:match:amplemarket@1":yT,"company:identity@2":qv,"company:identity@3":hh,"company:identity:crustdata@1":Th,"people:phone:profile:waterfall@1":jS,"person:mobile:profileurl:waterfall@1":HA,"person:devprofileurl:profileurl:waterfall@1":Ak,"people:profile:waterfall@1":NC,"person:profile:waterfall@1":AT,"person:profile:waterfall@2":tM,"people:profileurl:email:waterfall@1":tw,"person:profileurl:email:waterfall@1":CM,"person:profileurl:name@1":PM,"company:identity@1":Iv,"people:professionalprofile:waterfall@1":$S,"people:professionalprofileurl:name@1":SC,"people:professionalprofileurl:email:waterfall@1":dC,"people:mobilenumber:professionalprofile:waterfall@1":Vx};function BG(e){return e.defaultPayload?.config?.output_fields?Object.keys(e.defaultPayload?.config?.output_fields||{}):[]}function VG(e){return LG[e]}function HG(e){return zG[e].defaultPayload}function UG(e){return RG[e]}const WG=r.discriminatedUnion(`pipe_id`,Object.values(RG)).openapi(`PipePayload`),GG=r.preprocess(e=>{if(!e||typeof e!=`object`||!(`pipe_id`in e))return e;try{let t=HG(Io.parse(e.pipe_id));return t?{...e,config:Vt(e?.config||{},t.config)}:e}catch{return e}},WG);function KG(e){return zG[e]}function qG(e,t){let n=KG(e);if(t in n.billableOperations)return n.billableOperations[t];throw Error(`Unable to find billable operation definition for pipeId '${e}' and operation '${t}'`)}function JG(e){let t=e.split(`@`)[1];if(!t)throw Error(`No pipe version found`);return Number(t)}function YG(){let e={};for(let t of Object.values(zG)){let{basePipe:n}=t;e[n]??=[],e[n].push(t)}return Object.entries(e).forEach(([t,n])=>{e[t]=n.sort((e,t)=>{let n=JG(e.pipeId);return JG(t.pipeId)-n})}),e}const XG=e=>{let t=KG(e),n=new Set(t.deprecatedProviders);return Array.from(new Set([...t.managedProviders,...t.allowedUserConnectionProviders])).filter(e=>!n.has(e))},ZG=YG();function QG(e,t){let n=new Map;for(let[t,r]of Object.entries(e))for(let e of Object.keys(r.billableOperations)){let r=n.get(e)??[];r.push(`pipe ${t}`),n.set(e,r)}for(let[e,r]of Object.entries(t)){let t=r.billableOperation,i=n.get(t)??[];i.push(`search ${e}`),n.set(t,i)}let r=[...n.entries()].filter(([,e])=>e.length>1);if(r.length>0){let e=r.map(([e,t])=>` "${e}" used by ${t.join(`, `)}`).join(`
|
|
87
|
-
`);throw Error(`Catalog has ${r.length} duplicate billable-operation key(s):\n${e}`)}}QG(zG,_G);function $G(e){let t=[];for(let[n,r]of Object.entries(ZG)){let i=r[0];if(!i)throw Error(`Found empty entry`);let a=i.categories;i.lifecycle?.deprecatedOn&&e!==`deprecated`||(e===null||a.includes(e))&&t.push({...i,basePipe:n,latestVersion:JG(i.pipeId)})}return t}function eK(e,t){let n=e.filter(e=>t===null?!0:e.categories.some(e=>e===t)),r={},i={},a={},o={};for(let e of n){let t=XG(e.defaultPayload.pipe_id);for(let n of t)o[n]??=[],o[n].push(e.defaultPayload.pipe_id);for(let t of BG(e))i[t]??=[],i[t].push(e.defaultPayload.pipe_id);if(e.defaultInputRequirement)for(let{field:t}of bd(e.defaultInputRequirement))r[t.name]??=[],r[t.name]?.push(e.defaultPayload.pipe_id);for(let t of e.tags)a[t]??=[],a[t].push(e.defaultPayload.pipe_id)}return{pipeIdsByInputField:r,pipeIdsByOutputField:i,pipeIdsByTag:a,pipeIdsByProvider:o,sortedTagEntries:Object.entries(a).sort((e,t)=>e[0].localeCompare(t[0])),sortedInputFieldEntries:Object.entries(r).sort((e,t)=>e[0].localeCompare(t[0])),sortedOutputFieldEntries:Object.entries(i).sort((e,t)=>e[0].localeCompare(t[0])),sortedProviderEntries:Object.entries(o).sort((e,t)=>e[0].localeCompare(t[0])),pipeEntriesByBasePipe:ZG}}const tK=r.object({id:r.string(),organization_id:r.string(),order:r.array(zo),field_definitions:vs,errors:r.array(ts),records:r.record(zo,hs),status:r.enum([`completed`,`failed`,`pending`,`processing`])}).openapi(`PipesResponseSchema`),nK=r.object({environment:Po.default(`production`),widgets:r.object({enabled:r.boolean().default(!1)}).default({enabled:!1}),field_definitions:r.object({enabled:r.boolean()}).default({enabled:!1}),transform:r.object({include_fields:r.enum([`input`,`annotated`])}).default({include_fields:`input`})}).default({environment:`production`,transform:{include_fields:`input`},widgets:{enabled:!1},field_definitions:{enabled:!1}}).openapi(`PipesRequestConfig`),rK=r.object({config:nK.openapi(`PipesRequestConfig`),field_annotations:os.optional().openapi(`PipesFieldAnnotations`),pipes:r.array(WG),input:r.array(ms.openapi(`PipesInputSchema`)).max(100,`input accepts at most 100 records per request — send larger workloads in chunks`),scopes:r.array(r.string()).optional()});function iK(e){let t=KG(e);return Object.values(t.billableOperations).reduce((e,t)=>{let n=t.allowManagedConnection?t.credits.default:0;return e[t.provider]??=n,e[t.provider]=Math.min(e[t.provider],n),e},{})}function aK(e){let t=[];for(let n of e){if(n instanceof B){t.push(n);continue}let e=GG.parse(n);if(!KG(n.pipe_id))throw Error(`Unknown pipe: ${n.pipe_id}`);let r=new(VG(n.pipe_id))(e);t.push(r)}return t}function oK(e,t){let n=aK(e),r=new Set;return n.forEach(e=>Object.entries(e.inputFields).forEach(([n,i])=>{i.resolvedName===t&&r.add(e.pipeId)})),Array.from(r)}function sK(e,t){let n=e.dependencyGraph,r=new Set;return n.forEach((e,n)=>e.forEach(e=>{e.index===t&&r.add(n)})),Array.from(r).map(t=>{let n=e.orderedPipeInstances[t];if(!n)throw Error(`Internal: Pipe with index ${t} not found.`);return n.pipeId})}function cK(e){return e===`localhost`?!0:/^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(e)&&e.includes(`.`)}function lK(e){return/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.test(e)?e.split(`.`).every(e=>{let t=parseInt(e,10);return t>=0&&t<=255}):/:/.test(e)}function uK(e){if(!e||typeof e!=`string`)return``;let t=e.trim();t.match(/^[a-zA-Z]+:\/\//)||(t=`https://${t}`);try{let e=new URL(t).hostname;if(lK(e))return`https://${e}`;if(!cK(e))throw Error(`Invalid domain`);return`https://${e}`}catch{let t=e.match(/([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}/i);return t?`https://${t[0]}`:``}}function dK(e){if(!e||typeof e!=`string`)return``;let t=e.trim();t.match(/^[a-zA-Z]+:\/\//)||(t=`https://${t}`);try{let e=new URL(t),n=e.hostname;if(lK(n))return`${e.protocol===`http:`?`http:`:`https:`}//${e.host}${e.pathname}${e.search}${e.hash}`;if(!cK(n))throw Error(`Invalid domain`);return`${e.protocol===`http:`?`http:`:`https:`}//${e.host}${e.pathname}${e.search}${e.hash}`}catch{let t=e.match(/^(https?:\/\/)?([^/\s]+)(\/.*)?$/i);if(t){let[,e,n,r=``]=t,i=n?.split(`:`)[0]||``;if(cK(i)||lK(i))return`${e?.toLowerCase()===`http://`?`http:`:`https:`}//${n}${r}`}return``}}function fK(e){try{return uK(e)}catch{console.warn(`Invalid URL: ${e}`);return}}function pK(e,t){if(t)switch(e){case`website_url`:return fK(t);default:return}}function mK(e){let t;if(hK(e))return mK(e.value);let n=typeof e;return t=n===`string`||n===`number`||n===`boolean`?n:e===null?`unknown`:`json`,t}function hK(e,t=0){if(typeof e==`object`&&e&&`value`in e&&`status`in e&&Bo.safeParse(e.status).success){if(t>1||typeof e.value==`object`&&hK(e.value,t++))throw new iD([nD.RecursiveExpandedValue()]);return!0}return!1}function gK(e){let t=hK(e),n;return n=t?e.value:e,t?{isExpanded:!0,resolvedInputValue:n,expandedValue:e}:{isExpanded:!1,resolvedInputValue:n,expandedValue:null}}function _K(e){return hK(e)?_K(e.value):e}function vK(e,t,n){if([`processing`,`completed`].includes(n.status)===!1||t==null)return{};try{let r=Do(e,n.format)?.getStaticWidgets?.(t),i=pK(n.format,t);return Jt(qt(r||{},{display_value:i?{label:i}:void 0}))}catch(e){return console.warn(`Failed to generate UI props: ${e}`),{}}}function yK(e,t,n){if(t==null)return{};try{let r=Do(e,n)?.getStaticWidgets?.(t),i=pK(n,t);return Jt(qt(r||{},{display_value:i?{label:i}:void 0}))}catch(e){return console.warn(`Failed to generate UI props: ${e}`),{}}}function bK(e,t){for(let[n,r]of Object.entries(t)){let i=n;i===`type`&&e.type===`unknown`&&t.type!==`unknown`&&(e.type=t.type),i!==`type`&&i!==`json_metadata`&&i!==`order`&&(e[i]===void 0||e[i]===null||e[i]===``)&&t[i]&&(e[i]=r),i===`json_metadata`&&e.type===`json`&&!e.json_metadata&&t.json_metadata&&(e.json_metadata=t.json_metadata)}return e}var xK=class e{annotations;constructor(e){this.annotations=e||{}}getAnnotation(e){return this.annotations[e]}static fromInput(t,{probeCount:n=1e5,inferCatalogFields:i=!0,addIdColumn:a=!0}={probeCount:1e5,inferCatalogFields:!0,addIdColumn:!0}){let o={},s=0,c=0;for(let e of t){if(s++,s>n)break;for(let[t,n]of Object.entries(e)){if(t===``||t==null)continue;let{resolvedInputValue:e,expandedValue:a,isExpanded:s}=gK(n),l;l=s&&a.type?a.type:mK(e);let u;Oo(t)&&(u=g(t));let d=u&&(u.type===l||l===`unknown`);(!o[t]||o[t].type===`unknown`&&l!==`unknown`)&&(o[t]={type:l===`unknown`&&d&&i&&u?.type?u.type:l,format:d&&i&&u?.format||null,label:u&&i?u.label:null,json_metadata:d&&i&&u?.jsonMeta?{schema:u.jsonMeta.zodSchema?r.toJSONSchema(u.jsonMeta.zodSchema):null,example_value:u.jsonMeta.exampleValue||null}:null,order:o[t]?.order??++c*10})}}return a&&!o.id&&(o.id={format:null,type:`string`,json_metadata:null,label:null}),new e(o)}merge(t,n=!1,{appendOrders:r=!1}={}){let i=structuredClone(this.annotations),a=t instanceof e?t.annotations:t,o=0;if(r&&!n){let e=Object.values(i).map(e=>e.order).filter(e=>typeof e==`number`&&Number.isFinite(e));o=e.length===0?0:Math.ceil(Math.max(...e)/10)*10}let s=e=>o&&typeof e.order==`number`&&Number.isFinite(e.order)?{...e,order:e.order+o}:e;for(let[e,t]of Object.entries(a))if(i[e]===void 0||n)i[e]=s(t);else{let n=i[e];i[e]=bK(n,s(t))}return new e(i)}deleteKey(t){let n=structuredClone(this.annotations);return delete n[t],new e(n)}};function SK(e){let t={};for(let n=0;n<e.length;n++){let r=e[n];Object.values(r.getOutputFields()).forEach(e=>{if(t[e.resolvedName])throw new iD([nD.AmbiguousDependency({fieldName:e.resolvedName})]);t[e.resolvedName]=n})}return t}function CK(e){let t=SK(e),n=[];for(let[r,i]of e.entries()){let e=[];for(let{field:n,required:a}of bd(i.getInputRequirement())){let o=t[n.resolvedName];if(r===o)throw new iD([{code:`SelfReference`,message:`Pipe '${i.pipeId} has an input requirement that points to a field that is produced by itself.'`}]);if(o==null)continue;let s=e.find(e=>e.index===o);s?(s.reason??=[],s.reason=Array.from(new Set([...s.reason,`input`])),s.required=a||s.required):e.push({index:o,required:a,reason:[`input`]})}if(i.payload.run_if){let n=i.payload.run_if.when.conditions.map(e=>e.field_name);for(let r of n){let n=t[r];if(n==null)continue;let i=e.find(e=>e.index===n);i?(i.reason??=[],i.reason=Array.from(new Set([...i.reason,`input`])),i.required=!0):e.push({index:n,required:!0,reason:[`input`]})}}n.push(e)}return n}function wK({config:e,pipes:t,input:n,field_annotations:r}){try{let i=OK({config:e,pipes:t,input:n,fieldAnnotations:r});return TK(i),i}catch(e){throw e instanceof iD?e:new iD([nD.ValidationFailed({error:e})])}}function TK(e){for(let t of e.orderedPipeInstances)for(let{field:n}of bd(t.getInputRequirement()))Fd({pipes:e.orderedPipeInstances,derivedInputFields:e.derivedInputFields},n.type),Id({pipes:e.orderedPipeInstances,derivedInputFields:e.derivedInputFields},n.format)}function EK(e,t){if(!e&&!t)throw new iD([nD.MustDefineAnnotations()]);return new xK(t||{}).merge(xK.fromInput(e||[]),!1,{appendOrders:!0})}function DK(e,t,n){let r={...t};return e.pipes.forEach((t,i)=>{for(let[a,o]of Object.entries(t.getOutputFields())){if(fd(o.resolvedName))throw new iD([nD.ReservedOutputFieldName({pipeId:t.pipeId,outputField:o})]);let a=r[o.resolvedName];if(a&&a.added_by.ref!==`input`)throw new iD([nD.DuplicatePipeOutput({pipeId:t.pipeId,outputField:o})]);r[o.resolvedName]={type:Fd(e,o.type),added_by:{ref:t.pipeId,config_hash:t.getConfigHashKey(),pipe_index:i},label:a?.label||o.label,format:Id(e,o.format),is_primary_output:o.isPrimaryOutput,order:n[o.resolvedName]?.order??o.order??null}}}),r}function OK(e){let t=aK(e.pipes),n=EK(e.input,e.fieldAnnotations),r={},i=new Set;t.forEach((e,t)=>{Object.entries(e.getOutputFields()).forEach(([e,t])=>{r[t.resolvedName]=e,i.add(t.resolvedName)}),jK(e,t)});let a={},o={};for(let[e,t]of Object.entries(n.annotations))o[e]={type:t.type,added_by:{ref:`input`,config_hash:null,pipe_index:null},label:t.label||``,format:t.format?t.format:null,is_primary_output:!1,order:t.order??ko(e)},!i.has(e)&&(a[e]={addedBy:`input`,required:!1,type:t.type,label:t.label||e});let[s,c,l]=kK(t,n),u=DK({pipes:c,derivedInputFields:a},o,n.annotations);for(let e in u){let t=u[e];r[e]&&(n=n.merge({[e]:{type:t.type,format:t.format,json_metadata:null,label:n.annotations[e]?.label?n.annotations[e]?.label:null,order:n.annotations[e]?.order??null}},!0))}return{environment:e.config.environment,dependencyGraph:l,derivedInputFields:a,fieldAnnotations:n,orderedPipePayloads:s,orderedPipeInstances:c,resolvedFieldNames:r,fieldDefinitions:u}}function kK(e,t){let n=CK(e),r=AK(n,e,t),i=[],a=[];return r.forEach(t=>{let n=e[t];if(!n)throw new iD([nD.FaultyEnrichmentOrder()]);i.push(n.payload),a.push(n)}),[i,a,n]}function AK(e,t,n){let r=t.length,i=[],a=new Set,o=new Set,s=[],c=e=>{let n=t[e];return n?bd(n.getInputRequirement()).length>0:!1},l=(n,r=[])=>{if(o.has(n)){let e=n,i=r[r.length-1]||0,a={idx:i,pipe_id:t[i]?.pipeId},o={idx:e,pipeId:t[e]?.pipeId};throw new iD([nD.CircularDependency({currentPipe:a,circularPipe:o})])}if(a.has(n))return;o.add(n),r.push(n);let s=e[n]||[];for(let e of s)l(e.index,r);r.pop(),o.delete(n),a.add(n),i.push(n)};function u(t){if(a.has(t))return;o.add(t);let n=e[t]||[];for(let e of n){if(!a.has(e.index)&&e.required)throw new iD([nD.UnresolvableDependency({index:t,dependencyIndex:e.index})]);!o.has(e.index)&&!e.required&&u(e.index)}o.delete(t),a.add(t),i.push(t)}for(let e=0;e<r;e++)c(e)&&l(e);for(let e=0;e<r;e++)c(e)||l(e);for(let e=0;e<r;e++)u(e);let d=new Set(Object.keys(n.annotations)),f=new Map(Object.entries(n.annotations).map(([e,t])=>[e,t.type]));for(let e of i){let n=t[e];if(!n)throw Error(`Pipe not defined`);Object.values(n.getOutputFields()).forEach(e=>{d.add(e.resolvedName),typeof e.type==`string`&&f.set(e.resolvedName,e.type)})}for(let[n,r]of t.entries()){let a=r.getInputRequirement();yd(a,d)||s.push(nD.RequirementUnmet({requirement:a,pipeId:r.pipeId,index:n}));let o=e[n]||[],c=i.indexOf(n);for(let e of o){let r=i.indexOf(e.index);e.required&&r>c&&s.push(e.reason.includes(`input`)?nD.HardInputDependencyViolation({dependencyIndex:e.index,dependencyIndexPipeId:t[e.index]?.pipeId,index:n,indexPipeId:t[n]?.pipeId}):nD.HardConditionDependencyViolation({dependencyIndex:e.index,dependencyIndexPipeId:t[e.index]?.pipeId,index:n,indexPipeId:t[n]?.pipeId}))}let l=[...r.payload.run_if?[r.payload.run_if.when]:[],...r.getRowConditionBlocks()];for(let e of l)e.conditions.forEach(e=>{if(!d.has(e.field_name))throw new iD([nD.ConditionTargetFieldNotFound({fieldName:e.field_name,pipeId:r.pipeId,pipeIdx:n})]);if(e.property===`value`&&f.get(e.field_name)===`json`)throw new iD([nD.ConditionValueOnJsonField({fieldName:e.field_name,pipeId:r.pipeId,pipeIdx:n})])})}if(s.length>0)throw new iD(s);return i}function jK(e,t){let n=new Set(e.getConnectionsRequirements().filter(e=>e.allowManagedConnection===!1).map(e=>e.provider));if(n.size>0){let r=e.payload.connector;if(!r||(r.connections.map(e=>{if(e.type===`vault`)return yc(e.connection).provider;e.type}).forEach(e=>{e&&n.delete(e)}),n.size>0))throw new iD([nD.MissingCustomConnections({index:t,pipeId:e.pipeId,missingProviders:Array.from(n)})])}}const MK=`fields:add@1`,NK={},PK=r.object({effect_id:r.literal(MK),connector:tu(),config:r.object({name:r.string().min(1).optional(),type:Ro.optional(),format:is.nullable().optional(),label:r.string().optional(),insert_relative_to:r.string().min(1).optional(),insert_position:r.enum([`before`,`after`]).optional()})}),FK=class extends I{effectId=MK;schema=PK;payload;billableOperations=NK;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}evolveSchema(e){let{name:t,type:n,format:r,label:i}=this.payload.config,a=e.validationContext.fieldDefinitions,o;if(t){if(fd(t))throw Error(`"${t}" is a reserved field name and cannot be added.`);if(a[t])throw Error(`Field "${t}" already exists on this sheet.`);o=t}else{let e=`field`;o=e;let t=0;for(;a[o];)if(t++,o=`${e}_${t}`,t>1e3)throw Error(`Unable to generate unique field name`)}let s=n??`string`,c=r===void 0?s===`string`?`text`:null:r;if(c&&!Gm[s].includes(c))throw Error(`The field has the type ${s} but format ${c}. Type and format are not compatible.`);Gm[s].length===0&&(c=null);let l={...e.fieldAnnotations};l[o]={type:s,format:c,label:i??o,json_metadata:null};let{insert_relative_to:u,insert_position:d}=this.payload.config;if(u){let t=md({fieldDefinitions:a,fieldAnnotations:e.fieldAnnotations??{}}).fieldOrder.input??[],n=t.indexOf(u);if(n!==-1){let e=[...t];e.splice(d===`before`?n:n+1,0,o),e.forEach((e,t)=>{let n=l[e];n&&(l[e]={...n,order:(t+1)*10})})}}return rd(wK({config:{environment:e.environment},pipes:e.pipes,field_annotations:l}),e.environment)}},IK=PK,LK={effectId:MK,baseEffect:L(MK),label:`Add field`,description:`Add a new input field (column) to the sheet — named and typed, or empty.`,categories:[`internal`],tags:[],keywords:[`column`,`columns`,`fields`,`input`,`create`,`declare`,`structure`,`empty`,`schema`],lifecycle:null,billableOperations:NK,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`hidden`,guide:`Adds ONE input column. config {} (the dash gesture) auto-names it (field, field_1, …). Pass config.name (+ type/format/label) to DECLARE a column up front — the column is visible to the REST OF THE CHAIN, so [fields:add ×N, pipe:add <pipe referencing them>] validates and commits in one run_effects; use this to give an empty sheet structure before any rows exist. Rejects a name that already exists on the sheet and the reserved name id. Optional insert_relative_to (an existing input field) + insert_position (before|after) persist the column's display position into the schema's field annotations; a missing anchor appends silently. To rename or retype an existing column use fields:patch@1.`,defaultPayload:{effect_id:MK,connector:null,config:{}}},RK=`fields:deletesparse:input@1`,zK={},BK=r.object({effect_id:r.literal(RK),connector:tu(),config:r.object({fields:lu({path:`config.fields`,sectionKey:`general`,groupPath:`config.general`,label:`Candidate fields`,minItems:1,description:`Input fields to delete if they turn out sparsely populated.`}),probe_size:Zu({path:`config.probe_size`,sectionKey:`general`,groupPath:`config.general`,label:`Probe size`,description:`How many rows to sample when measuring column density.`,min:100,max:1e4}).default(1e3),threshold_in_percent:Zu({path:`config.threshold_in_percent`,sectionKey:`general`,groupPath:`config.general`,label:`Density threshold (%)`,description:`Candidates populated in strictly fewer than this percent of probed rows are deleted.`,min:1,max:100}).default(25)})}),VK=class extends I{effectId=RK;schema=BK;payload;billableOperations=zK;constructor(e){if(super(),this.payload=this.validatePayload(e),this.payload.config.fields.some(e=>e.field_name===`id`))throw Error(`Cannot list the id field as a deletion candidate.`)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return this.payload.config.fields.map(e=>e.field_name)}evolveSchema(e){let t=structuredClone(e.fieldAnnotations||{});for(let{field_name:e}of this.payload.config.fields)delete t[e];if(Object.keys(t).filter(e=>e!==`id`).length===0&&e.pipes.length===0)throw Error(`fields:deletesparse:input@1 lists every input column as a candidate — it refuses to empty the sheet. Keep at least one column off the candidate list, or use fields:remove@1 / sheet:reset@1 to clear the sheet explicitly.`);let n=wK({config:{environment:e.environment},pipes:e.pipes,field_annotations:t});return{next:{environment:e.environment,pipes:e.pipes,fieldAnnotations:t,validationContext:n}}}},HK=BK,UK={effectId:RK,baseEffect:L(RK),label:`Delete sparse input columns`,description:`Probe rows to measure how densely candidate input columns are populated and delete the ones below a density threshold.`,guide:`Conditional column cleanup: list every input column you'd consider dropping as config.fields (typically the sparse leftovers rows:copy_to_sheet@1 imports leave behind) — the density check keeps any candidate that turns out well-populated. Probes the first config.probe_size rows (default 1000) and deletes a candidate only when it is populated in strictly fewer than config.threshold_in_percent (default 25) of them. Only listed fields can be deleted; id and pipe-referenced fields cannot be listed (validation error). Static validation treats ALL candidates as removed (aggressive over-approximation), so do not reference a candidate in later steps of the same run — re-read get_sheet_schema afterwards to see which columns survived. Deletes columns, never rows. DESTRUCTIVE (approval-gated), reversible via timetravel. To delete named columns unconditionally use fields:remove@1 instead.`,categories:[`data_hygiene`],tags:[V.NEW],keywords:[`empty`,`cleanup`,`prune`,`remove fields`,`unused`,`blank`],lifecycle:null,billableOperations:zK,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`visible`,defaultPayload:{effect_id:RK,connector:null,config:{fields:[],probe_size:1e3,threshold_in_percent:25}}},WK=`fields:duplicate@1`,GK={},KK=r.object({effect_id:r.literal(WK),connector:tu(),config:r.object({fields:lu({path:`config.fields`,sectionKey:`general`,groupPath:`config.general`,label:`Fields to duplicate`,minItems:1,description:`Each selected field is copied to a new editable input column.`})})});function qK(e,t){let n=`${e}_copy`;if(!t.has(n))return{name:n,index:null};let r=2;for(;t.has(`${n}_${r}`);)r++;return{name:`${n}_${r}`,index:r}}function JK(e){if(e==null)return null;let{isExpanded:t,expandedValue:n,resolvedInputValue:r}=gK(e);return t&&n.status!==`completed`||r==null?null:typeof r==`object`?structuredClone(r):r}const YK=class extends I{effectId=WK;schema=KK;payload;billableOperations=GK;constructor(e){super(),this.payload=this.validatePayload(e);let t=this.payload.config.fields.map(e=>e.field_name);if(t.includes(`id`))throw Error(`Cannot duplicate the id field.`);if(new Set(t).size!==t.length)throw Error(`Cannot duplicate the same field twice in one effect.`)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[...new Set(this.payload.config.fields.map(e=>e.field_name))]}evolveSchema(e){let t=e.validationContext.fieldDefinitions,n=new Set(Object.keys(t)),r=structuredClone(e.fieldAnnotations||{}),i=[];for(let{field_name:a}of this.payload.config.fields){let o=t[a];if(!o)throw Error(`Field name ${a} not found in current schema.`);let{name:s,index:c}=qK(a,n);n.add(s),i.push({source:a,target:s});let l=e.fieldAnnotations?.[a];r[s]={type:o.type,format:o.format??null,label:c===null?`${o.label} copy`:`${o.label} copy ${c}`,...l?.json_metadata?{json_metadata:structuredClone(l.json_metadata)}:{},...l?.order==null?{}:{order:l.order+1}}}return rd(wK({config:{environment:e.environment},pipes:e.pipes,field_annotations:r}),e.environment,(e,t)=>{for(let{source:n,target:r}of i)e.input[r]=JK(t.input[n]);return e})}},XK=KK,ZK={effectId:WK,baseEffect:L(WK),label:`Duplicate fields`,description:`Copy fields into new editable input columns (enrichment values become plain values).`,categories:[`data_hygiene`],tags:[V.NEW],keywords:[`copy`,`clone`,`freeze`,`snapshot`,`column`],lifecycle:null,billableOperations:GK,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`visible`,guide:`Copy fields into new editable input columns — works for user-entered AND pipe-output fields, so it freezes an enrichment result into a plain value you can edit or re-enrich over. Copies land as "<field>_copy" (then "<field>_copy_2", …) with the source's type/format; only the RESOLVED VALUE is copied — cells whose status is not "completed" copy as null, and status/provenance never carry over. Put every field to duplicate in ONE effect. Later effects in the same chain may reference the "_copy" names.`,defaultPayload:{effect_id:WK,connector:null,config:{fields:[]}}},QK=`fields:order:reset@1`,$K={},eq=r.object({effect_id:r.literal(QK),connector:tu(),config:r.object({})}),tq=class extends I{effectId=QK;schema=eq;payload;billableOperations=$K;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}evolveSchema(e){let t={};for(let[n,r]of Object.entries(e.fieldAnnotations??{})){let{order:e,...i}=r;t[n]=i}return rd(wK({config:{environment:e.environment},pipes:e.pipes,field_annotations:t}),e.environment)}},nq=eq,rq={effectId:QK,baseEffect:L(QK),label:`Reset column order`,description:`Clear all custom column ordering and return to the default arrangement.`,categories:[`data_hygiene`],tags:[],keywords:[`order`,`reorder`,`columns`,`arrange`,`layout`,`default`,`reset`],lifecycle:null,billableOperations:$K,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`visible`,guide:`Clears every column's custom display position (set by dragging or insert placement) so the sheet returns to its DEFAULT arrangement: input columns first, pipe groups in dependency order, primary outputs leading their group. Display-only and idempotent — no values, names, types, or pipes change, and it is not undoable except by re-dragging.`,defaultPayload:{effect_id:QK,connector:null,config:{}}};function iq(e,t,n){if(e==null||typeof e==`number`||typeof e==`boolean`)return e;if(typeof e==`string`){let r=t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),i=new RegExp(r,`g`);return e.replace(i,n)}if(Array.isArray(e))return e.map(e=>iq(e,t,n));if(typeof e==`object`){let r={};for(let i in e)Object.hasOwn(e,i)&&(i.includes(`path`)||[`connector`,`provider`,`pipe_id`,`search_id`].includes(i)?r[i]=e[i]:r[i]=iq(e[i],t,n));return r}return e}function aq(e,t,n){let r={...e};r.config??={};let i=r.config;if(i?.input_fields?.[t]&&(!i.input_fields[t].alias||i.input_fields[t].alias===t)){let e=i.input_fields[t]||{};i.input_fields[t]={...e,alias:n}}return r}function oq(e,t,n){let r=[];for(let i of e.orderedPipePayloads){let e=iq(i,t,n);r.push(aq(e,t,n))}return r}function sq(e,t,n,r,i){if(!e.orderedPipeInstances[t])throw Error(`Pipe instance at index ${t} is not defined`);let a={...n};if(KG(n.pipe_id).outputFieldMode===`static`){let n=e.resolvedFieldNames[r]?e.resolvedFieldNames[r]:Object.entries(e.resolvedFieldNames).find(([,e])=>e===r)?.[0];if(!n)throw Error(`Unable to find field name ${r} in pipe at idx ${t}`);a.config??={};let o=a.config,s=o.output_fields?.[n]||{};return o.output_fields??={},o.output_fields[n]??={},o.output_fields[n]={...s,alias:i},aq(a,r,i)}return iq(a,r,i)}function cq(e,t,n,r){let i=[];for(let a=0;a<e.orderedPipePayloads.length;a++){let o=e.orderedPipePayloads[a],s=t.added_by.pipe_index;if(typeof s!=`number`)throw Error(`Pipe index must be number.`);a===s?i.push(sq(e,a,o,n,r)):i.push(iq(o,n,r))}return i}function lq(e,t,n){let r=e.fieldDefinitions[t];if(!r)throw Error(`No field definition found for field with name ${t}`);return r?.added_by.ref===`input`?oq(e,t,n):cq(e,r,t,n)}const uq=`fields:patch@1`,dq={},fq=r.object({effect_id:r.literal(uq),connector:tu(),config:r.object({field_name:r.string().min(1),new_name:r.string().min(1).optional(),new_format:is.nullable().optional(),new_type:Ro.optional(),new_label:r.string().optional()})}),pq=class extends I{effectId=uq;schema=fq;payload;billableOperations=dq;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[this.payload.config.field_name]}evolveSchema(e){let{field_name:t,new_name:n,new_label:r,new_format:i,new_type:a}=this.payload.config;if(!e.fieldAnnotations?.[t])throw Error(`Field name ${t} not found in current schema.`);let o=e.validationContext,s=o.fieldDefinitions[t];if(!s)throw Error(`Field definition for field ${t} not found.`);let c={...e.fieldAnnotations},l=!!n&&n!==t,u=[...o.orderedPipePayloads];if(l){u=lq(o,t,n);let e=c[t];if(!e)throw Error(`Unable to find file annotations for field ${t}.`);c[n]=e,delete c[t]}let d=s.added_by.ref===`input`,f=n||t,p=a||s.type,ee=i||s.format;if(a&&a!==s.type){if(!d)throw Error(`Cannot change the type of a pipe output field.`);c[f].type=a,Gm[a].length===0&&(c[f].format=null)}if(i&&i!==s.format){if(!d)throw Error(`Cannot change the format of a pipe output field.`);c[f].format=i}if(Gm[p].length&&ee&&!Gm[p].includes(ee))throw Error(`After applying your updates the field has the type ${p} but format ${ee}. Type and format are not compatible.`);r&&r!==s.label&&(c[f].label=r);let te=wK({config:{environment:e.environment},pipes:u,field_annotations:c}),ne=l?(e,r)=>(e.input[n]=r.input[t]||null,e):void 0;return rd(te,e.environment,ne)}},mq=fq,hq={effectId:uq,baseEffect:L(uq),label:`Edit field`,description:`Rename, retype, reformat, or relabel a field.`,categories:[`internal`],tags:[],keywords:[`column`,`columns`,`fields`,`rename`,`retype`,`reformat`,`relabel`],guide:`Renames/retypes/reformats/relabels an EXISTING column — config.field_name must already exist on the sheet, and type/format changes apply only to INPUT columns, never pipe outputs. A rename rewrites pipe-payload references and migrates row values. To CREATE a new named column use fields:add@1 with config.name.`,lifecycle:null,billableOperations:dq,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`hidden`,defaultPayload:{effect_id:uq,connector:null,config:{field_name:``}}},gq=`fields:remove@1`,_q={},vq=r.object({effect_id:r.literal(gq),connector:tu(),config:r.object({field_names:r.array(r.string().min(1)).min(1)})}),yq=class extends I{effectId=gq;schema=vq;payload;billableOperations=_q;constructor(e){if(super(),this.payload=this.validatePayload(e),this.payload.config.field_names.includes(`id`))throw Error(`Cannot remove the id field.`)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return this.payload.config.field_names}evolveSchema(e){let t=structuredClone(e.fieldAnnotations||{});for(let e of this.payload.config.field_names)delete t[e];if(Object.keys(t).length===1){let t=wK({config:{environment:e.environment},pipes:[],field_annotations:{}});return{next:{environment:e.environment,pipes:[],fieldAnnotations:{},validationContext:t}}}let n=wK({config:{environment:e.environment},pipes:e.pipes,field_annotations:t});return{next:{environment:e.environment,pipes:e.pipes,fieldAnnotations:t,validationContext:n}}}},bq=vq,xq={effectId:gq,baseEffect:L(gq),label:`Remove fields`,description:`Remove fields (input columns) from the sheet.`,categories:[`internal`],tags:[],lifecycle:null,billableOperations:_q,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`hidden`,defaultPayload:{effect_id:gq,connector:null,config:{field_names:[]}}},Sq=`pipe:add@1`,Cq={},wq=r.object({effect_id:r.literal(Sq),connector:tu(),config:r.object({pipe_payload:WG.optional()})}),Tq=class extends I{effectId=Sq;schema=wq;payload;billableOperations=Cq;constructor(e){if(super(),this.payload=this.validatePayload(e),!this.payload.config.pipe_payload)throw Error(`pipe:add@1 requires config.pipe_payload`)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}evolveSchema(e){let t=this.payload.config.pipe_payload;if(!t)throw Error(`pipe:add@1 requires config.pipe_payload`);return rd(wK({config:{environment:e.environment},pipes:[...e.pipes,t],field_annotations:e.fieldAnnotations||{}}),e.environment)}},Eq=wq,Dq={effectId:Sq,baseEffect:L(Sq),label:`Add pipe`,description:`Append a pipe to the sheet's pipeline.`,categories:[`internal`],tags:[],lifecycle:null,billableOperations:Cq,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`hidden`,defaultPayload:{effect_id:Sq,connector:null,config:{}}},Oq=`pipe:remove@1`,kq={},Aq=r.object({effect_id:r.literal(Oq),connector:tu(),config:r.object({config_hash:r.string(),hard:r.boolean().default(!1)})}),jq=class extends I{effectId=Oq;schema=Aq;payload;billableOperations=kq;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}evolveSchema(e){let{config_hash:t,hard:n}=this.payload.config,i=aK(e.pipes).findIndex(e=>e.getConfigHashKey()===t);if(i===-1)throw Error(`Pipe with config hash ${t} not found.`);let a=e.validationContext,o=new Set(Object.entries(a.fieldDefinitions).filter(([,e])=>e.added_by.config_hash===t).map(([e])=>e)),s=new xK(e.fieldAnnotations||{});for(let e of o){let t=a.fieldDefinitions[e];if(!t)continue;if(n){s=s.deleteKey(e);continue}let i=jo(e,t,a),o=Oo(i.fieldName)?g(i.fieldName):null;s=s.merge({[e]:{format:t.format,type:t.type,json_metadata:o?.jsonMeta?{schema:o.jsonMeta.zodSchema?r.toJSONSchema(o.jsonMeta.zodSchema):null,example_value:o.jsonMeta.exampleValue||null}:null,label:t.label}})}let c=e.pipes.slice();c.splice(i,1);let l=wK({config:{environment:e.environment},pipes:c,field_annotations:s.annotations}),u=n?void 0:e=>{let t={...e};for(let e of o){let n=t.input[e];if(!n)continue;let{resolvedInputValue:r}=gK(n);t.input[e]=r}return t};return{next:{environment:e.environment,pipes:c,fieldAnnotations:s.annotations,validationContext:l},rowMigration:u}}},Mq=Aq,Nq={effectId:Oq,baseEffect:L(Oq),label:`Remove pipe`,description:`Remove a pipe from the sheet's pipeline, optionally deleting its fields.`,categories:[`internal`],tags:[],lifecycle:null,billableOperations:kq,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`hidden`,defaultPayload:{effect_id:Oq,connector:null,config:{config_hash:``,hard:!1}}},Pq=`pipe:update@1`,Fq={},Iq=r.object({effect_id:r.literal(Pq),connector:tu(),config:r.object({config_hash:r.string().min(1),pipe_payload:WG.optional()})}),Lq=class extends I{effectId=Pq;schema=Iq;payload;billableOperations=Fq;constructor(e){if(super(),this.payload=this.validatePayload(e),!this.payload.config.pipe_payload)throw Error(`pipe:update@1 requires config.pipe_payload`)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}evolveSchema(e){let{config_hash:t,pipe_payload:n}=this.payload.config;if(!n)throw Error(`pipe:update@1 requires config.pipe_payload`);let i=aK(e.pipes).findIndex(e=>e.getConfigHashKey()===t);if(i===-1)throw Error(`Pipe with config hash ${t} not found.`);let a=e.validationContext,o=new Set(Object.entries(a.fieldDefinitions).filter(([,e])=>e.added_by.config_hash===t).map(([e])=>e)),s=[...e.pipes];s.splice(i,1,n);let c=wK({config:{environment:e.environment},pipes:s,field_annotations:e.fieldAnnotations||{}}),l=new(VG(n.pipe_id))(n),u=new Set(Object.entries(c.fieldDefinitions).filter(([,e])=>e.added_by.config_hash===l.getConfigHashKey()).map(([e])=>e));for(let e of u)o.delete(e);let d=new xK(c.fieldAnnotations.annotations);for(let e of o){let t=a.fieldDefinitions[e];if(!t)throw Error(`Previous field def not found`);if(c.resolvedFieldNames[e])continue;let n=jo(e,t,a),i=Oo(n.fieldName)?g(n.fieldName):null;d=d.merge({[e]:{format:t.format,type:t.type,json_metadata:i?.jsonMeta?{schema:i.jsonMeta.zodSchema?r.toJSONSchema(i.jsonMeta.zodSchema):null,example_value:i.jsonMeta.exampleValue||null}:null,label:t.label}})}let f=wK({config:{environment:e.environment},pipes:c.orderedPipePayloads,field_annotations:d.annotations});return{next:{environment:e.environment,pipes:c.orderedPipePayloads,fieldAnnotations:d.annotations,validationContext:f},rowMigration:e=>{let t={...e};for(let e of o){let n=t.input[e];if(!n)continue;let{resolvedInputValue:r}=gK(n);t.input[e]=r}return t}}}},Rq=Iq,zq={effectId:Pq,baseEffect:L(Pq),label:`Update pipe`,description:`Replace a pipe in the sheet's pipeline and re-run it.`,categories:[`internal`],tags:[],lifecycle:null,billableOperations:Fq,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`hidden`,defaultPayload:{effect_id:Pq,connector:null,config:{config_hash:``}}},Bq=`row:update@1`,Vq={},Hq=r.object({effect_id:r.literal(Bq),connector:tu(),config:r.object({record_id:r.string().min(1),record:ms})}),Uq=class extends I{effectId=Bq;schema=Hq;payload;billableOperations=Vq;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}},Wq=Hq,Gq={effectId:Bq,baseEffect:L(Bq),label:`Update row`,description:`Update a single row's values.`,categories:[`internal`],tags:[],lifecycle:null,billableOperations:Vq,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`shared`,lockScope:`selection`,catalogVisibility:`hidden`,defaultPayload:{effect_id:Bq,connector:null,config:{record_id:``,record:{}}}},Kq=`rows:add@1`,qq={},Jq=r.object({effect_id:r.literal(Kq),connector:tu(),config:r.object({input:r.array(ms).min(1).max(100),allow_field_creation:r.boolean().default(!1),allow_empty:r.boolean().default(!1)})}),Yq=class extends I{effectId=Kq;schema=Jq;payload;billableOperations=qq;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}producesDynamicFields(){return!1}evolveSchema(e){if(!this.payload.config.allow_field_creation){let t=new Set(Object.keys(e.validationContext.fieldDefinitions)),n=[...new Set(this.payload.config.input.flatMap(e=>Object.keys(e)))].filter(e=>e!==`id`&&!t.has(e));if(n.length>0)throw Error(`records carry fields that do not exist on the sheet: ${n.join(`, `)}. Set allow_field_creation: true to create these columns from the records — do not recreate the sheet.`);return{next:e}}let t=e.validationContext.fieldAnnotations.merge(xK.fromInput(this.payload.config.input).annotations,!1,{appendOrders:!0});return rd(wK({config:{environment:e.environment},pipes:e.pipes,field_annotations:t.annotations}),e.environment)}},Xq=Jq,Zq={effectId:Kq,baseEffect:L(Kq),label:`Add rows`,description:`Append records to the sheet. Each cell accepts a flat value OR a fully expanded field value (input expansion) — pass enriched records unchanged.`,guide:[`Each record is a flat map of field name → cell. A cell is either a flat value`,"(stamped as user input) or an expanded field value `{ value, status, resolved_by,","widgets, ... }` copied unchanged from a pipes/search response — never hand-written",`(its fingerprints are computed by the engine). An expanded cell keeps the pipe that`,"made it, so attaching the same pipe config via `pipe:add@1` afterwards claims the",`column and completed cells stay completed — nothing recomputes, nothing re-bills.`,"Only `completed` cells keep the expanded form; other statuses collapse to their","plain value on insert. `id` is the record identity, never a data column — omit it","and one is minted. Set `allow_field_creation: true` to create missing columns from",`the record keys (types inferred from the real values). Caps at 100 records per`,`effect — put several rows:add@1 effects in one chain for larger batches; for bulk`,"loads use the staging-group import (`rows:import@1`)."].join(` `),categories:[`internal`],tags:[],lifecycle:null,billableOperations:qq,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`shared`,lockScope:`self`,catalogVisibility:`hidden`,defaultPayload:{effect_id:Kq,connector:null,config:{input:[],allow_field_creation:!1,allow_empty:!1}}},Qq=r.enum([`pending`,`failed`,`no_result`,`skipped`,`completed`]),$q=[{value:`pending`,label:`Pending`},{value:`failed`,label:`Failed`},{value:`no_result`,label:`No result`},{value:`skipped`,label:`Skipped`},{value:`completed`,label:`Completed`}],eJ=[`pending`],tJ=[`pending`,`failed`,`skipped`];function nJ(e){return{enabled:!0,triggers:{status:e,configHashMismatch:!0,inputHashMismatch:!0}}}const rJ=`rows:adopt@1`,iJ={},aJ=r.object({effect_id:r.literal(rJ),connector:tu(),config:r.object({pipes:r.array(WG).default([]),selection:uu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to target.`,placeholder:`{"type":"all"}`},`both`),adopt_statuses:Xu({options:$q,required:!1,disableSearch:!0,path:`config.adopt_statuses`,sectionKey:`general`,groupPath:`config.general`,label:`Adopt statuses`,description:`Only cells with these statuses are adopted (pinned). Omit to adopt all.`}).optional()})}),oJ=class extends I{effectId=rJ;schema=aJ;payload;billableOperations=iJ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}},sJ=aJ,cJ={effectId:rJ,baseEffect:L(rJ),label:`Adopt values`,description:`Pin the selected columns' current values so a config or input change won't regenerate them.`,guide:'Adopt re-stamps each selected cell\'s stored config/input hash to the CURRENT one, so the value is kept as-is instead of being re-run. It never recomputes — use `rows:enrich@1` to (re)compute. Adopting all statuses composes with a follow-up `rows:enrich@1` (`run_statuses: ["failed"]`) to rerun only the failures while completed cells stay pinned — the safe pattern before running a non-idempotent effect twice.',categories:[`internal`],tags:[],lifecycle:null,billableOperations:iJ,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`both`,lockingMode:`shared`,lockScope:`selection`,catalogVisibility:`hidden`,defaultPayload:{effect_id:rJ,connector:null,config:{pipes:[]}}},lJ=`rows:copy_to_sheet@1`,uJ={},dJ=r.object({effect_id:r.literal(lJ),connector:tu(),config:r.object({selection:uu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to copy as JSON.`,placeholder:`{"type":"all"}`},`both`),where:zl({path:`config.where`,sectionKey:`general`,groupPath:`config.general`,order:1,label:`Condition (optional)`,description:`Only copy selected rows matching this condition. Leave empty to copy all.`}),target_sheet:qu({path:`config.target_sheet`,sectionKey:`general`,groupPath:`config.general`,order:2,inputType:`text`,label:`Target sheet`,description:`Slug of the destination sheet. Created if missing (see below). Slugs are org-unique — for a NEW sheet use a short descriptive slug plus a few random chars (e.g. "ceos-x7k2") so it can't hit an unrelated existing sheet.`}),create_if_missing:$u({path:`config.create_if_missing`,sectionKey:`general`,groupPath:`config.general`,order:3,label:`Create if missing`,description:`When the target sheet does not exist, create it in this sheet's project. Off ⇒ fail.`,defaultValue:!0})})}),fJ=class extends I{effectId=lJ;schema=dJ;payload;billableOperations=uJ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){let e=this.payload.config.where;return e?[...new Set(e.conditions.map(e=>e.field_name))]:[]}},pJ=dJ,mJ={effectId:lJ,baseEffect:L(lJ),label:`Copy rows to sheet`,description:`Copy selected rows (or every row) into another sheet — all of them, or only those matching a condition. Creates the target sheet in this project if it doesn't exist.`,categories:[`data_hygiene`],tags:[V.NEW],keywords:[`move`,`transfer`,`split`,`push`,`another sheet`],lifecycle:null,billableOperations:uJ,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`both`,lockingMode:`shared`,lockScope:`self`,catalogVisibility:`visible`,defaultPayload:{effect_id:lJ,connector:null,config:{selection:{type:`all`},target_sheet:``,create_if_missing:!0}}},hJ=`rows:dedupe@1`,gJ={"rows-dedupe-v1-pipe0":{allowManagedConnection:!0,provider:`pipe0`,mode:`always`,credits:{default:0},note:`Deduplicating your own sheet is free.`}},_J=r.object({effect_id:r.literal(hJ),connector:tu(),config:r.object({selection:uu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to target as JSON.`,placeholder:`{"type":"all"}`},`both`),fields:lu({path:`config.fields`,sectionKey:`general`,groupPath:`config.general`,label:`Match fields`,minItems:1,description:`Rows are duplicates when these fields match.`}),match:Yu({path:`config.match`,sectionKey:`general`,groupPath:`config.general`,label:`Match condition`,required:!0,defaultValue:`all`,options:[{value:`all`,label:`All fields match (AND)`},{value:`any`,label:`Any field matches (OR)`}]}),strategy:Yu({path:`config.strategy`,sectionKey:`general`,groupPath:`config.general`,label:`Which duplicate to keep`,required:!0,defaultValue:`keep_oldest`,options:[{value:`keep_oldest`,label:`Keep oldest`},{value:`keep_newest`,label:`Keep newest`}]})})}),vJ=class extends I{effectId=hJ;schema=_J;payload;billableOperations=gJ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitOperation:`pipe0_api_operation`,rateLimitRatio:1,allowManagedConnection:!0}]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`rows-dedupe-v1-pipe0`)}getFieldReferences(){return this.payload.config.fields.map(e=>e.field_name)}},yJ=_J,bJ={effectId:hJ,baseEffect:L(hJ),label:`Remove duplicate rows`,description:`Find duplicate rows by matching fields and keep one row per group.`,categories:[`data_hygiene`],tags:[V.NEW],keywords:[`dedupe`,`deduplicate`,`merge`,`clean`,`unique`],lifecycle:null,billableOperations:gJ,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`both`,lockingMode:`exclusive`,shouldUpgradeSchema:!0,catalogVisibility:`visible`,guide:`Dedupe in ONE run: list every identity field in config.fields and pick config.match — "all" (rows are duplicates only when every field matches) or "any" (a match on ANY listed field makes rows duplicates). To dedupe on several alternative keys (e.g. same email OR same profile_url), use match "any" with all keys in one effect — never run one dedupe per field; if you must combine dedupe with other cleanup, put the effects in one validated chain so the user approves once. Destructive and approval-gated; reversible via timetravel.`,defaultPayload:{effect_id:hJ,connector:null,config:{fields:[],match:`all`,strategy:`keep_oldest`}}},xJ=`rows:duplicate@1`,SJ={"rows-duplicate-v1-pipe0":{allowManagedConnection:!0,provider:`pipe0`,mode:`always`,credits:{default:0},note:`Duplicating rows in your own sheet is free.`}},CJ=r.object({effect_id:r.literal(xJ),connector:tu(),config:r.object({selection:uu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to target as JSON.`,placeholder:`{"type":"all"}`},`both`)})}),wJ=class extends I{effectId=xJ;schema=CJ;payload;billableOperations=SJ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitOperation:`pipe0_api_operation`,rateLimitRatio:1,allowManagedConnection:!0}]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`rows-duplicate-v1-pipe0`)}getFieldReferences(){return[]}},TJ=CJ,EJ={effectId:xJ,baseEffect:L(xJ),label:`Duplicate rows`,description:`Copy the selected rows (or every row). Copies get fresh ids and are appended after the existing rows.`,categories:[`data_hygiene`],tags:[V.NEW],keywords:[`copy`,`clone`,`replicate`],lifecycle:null,billableOperations:SJ,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`both`,lockingMode:`shared`,lockScope:`self`,catalogVisibility:`visible`,defaultPayload:{effect_id:xJ,connector:null,config:{}}},DJ=`rows:enrich@1`,OJ={},kJ=r.object({effect_id:r.literal(DJ),connector:tu(),config:r.object({pipes:r.array(WG).default([]),selection:uu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to target: all rows, specific record ids, or a window ({"type":"window","count":N}) — the next N rows with queued work. On a schedule the window advances each fire until the list is exhausted.`,placeholder:`{"type":"all"}`},`both`),run_statuses:Xu({options:$q,required:!1,disableSearch:!0,path:`config.run_statuses`,sectionKey:`general`,groupPath:`config.general`,label:`Run statuses`,description:`Cell statuses to (re)run. Omitted: scheduled runs fill only pending cells; manual runs also re-run failed and skipped.`}).optional(),where:zl({path:`config.where`,sectionKey:`general`,groupPath:`config.general`,order:2,label:`Condition (optional)`,description:`Only enrich selected rows matching this condition. Leave empty to consider all selected rows.`})})}),AJ=class extends I{effectId=DJ;schema=kJ;payload;billableOperations=OJ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getRecordQueueConfig(e){return nJ(this.payload.config.run_statuses??(e?.isScheduled?eJ:tJ))}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){let e=this.payload.config.where;return e?[...new Set(e.conditions.map(e=>e.field_name))]:[]}getRowFilter(){return this.payload.config.where??null}},jJ=kJ,MJ={effectId:DJ,baseEffect:L(DJ),label:`Enrich rows`,description:`Run the sheet's pipes over the selected rows.`,categories:[`enrichment`],tags:[],keywords:[`run`,`execute`,`process`,`refresh`,`rerun`,`pipes`],lifecycle:null,billableOperations:OJ,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],catalogVisibility:`visible`,selectionMode:`both`,lockingMode:`shared`,lockScope:`selection`,guide:`Three narrowing axes compose (all AND): config.selection picks the rows in scope, config.where keeps only scoped rows matching a condition, and config.run_statuses decides which CELLS on those rows (re)run — force-rerun is selecting "completed" there. The where travels verbatim in schedules and is re-evaluated per row per run, so a static scheduled payload can express freshness cohorts, e.g. where last_attempted_at older_than_days 90 AND status(profile) eq completed with run_statuses ["completed"]. A finite list drips on a schedule via a window selection instead: {"type":"window","count":N} claims the next N rows with queued work each fire (completed rows leave the work set, so the window auto-advances) until the sheet is exhausted — no cursor or state needed. Omitted run_statuses resolve from the trigger: a scheduled run fills only pending cells; a manual run also re-runs failed/skipped. A where may reference a json field's STATUS (property "status" — e.g. status(person_profile_match) eq completed), but never its VALUE — compare flat columns for values. A retry cohort keyed on failed/no_result must widen run_statuses to ["failed","completed","skipped"] (resp. no_result) so timestamp/counter cells restamp and previously skipped downstream pipes re-activate on success — the where already restricts which rows are touched.`,defaultPayload:{effect_id:DJ,connector:null,config:{pipes:[]}}},NJ=`rows:filter:prompt@1`,PJ=`rows-filter-prompt-v1`,FJ=Zc(PJ),IJ=r.object({effect_id:r.literal(NJ),connector:eu(),config:r.object({selection:uu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to target as JSON.`,placeholder:`{"type":"all"}`},`both`),prompt:Ju({path:`config.prompt`,sectionKey:`general`,groupPath:`config.general`,label:`Filter instruction`,rows:4,placeholder:`Only keep rows where the person is a "Head of Growth" at a company doing less than $1M in revenue.`}),model:td({sectionKey:`general`,label:`Model`,path:`config.model`,groupPath:`config.general`,billableOperations:FJ,defaultValue:Uc}),fields:lu({path:`config.fields`,sectionKey:`general`,groupPath:`config.general`,label:`Fields to consider`,info:`If specified, only these fields are shown to the model. This is useful to drop large JSON columns and save tokens.`})})}),LJ=class extends I{effectId=NJ;schema=IJ;payload;billableOperations=FJ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return Gc(this.payload.config.model)}getProviderNames(){return Wc(this.payload.config.model)}estimateBillableOperations(e){return $c(e,{model:this.payload.config.model,prefix:PJ,inputTokens:600,outputTokens:50})}getFieldReferences(){return(this.payload.config.fields??[]).map(e=>e.field_name)}},RJ=IJ,zJ={effectId:NJ,baseEffect:L(NJ),label:`AI filter rows`,description:`Keep or remove rows by a natural-language instruction, judged per row by an AI model.`,categories:[`data_hygiene`],tags:[V.NEW,V.AI],keywords:[`classify`,`qualify`,`score`,`prompt`,`clean`],lifecycle:null,billableOperations:FJ,allowedUserConnectionProviders:Kc(),managedProviders:Kc(),selectionMode:`both`,lockingMode:`exclusive`,shouldUpgradeSchema:!0,catalogVisibility:`visible`,defaultPayload:{effect_id:NJ,connector:null,config:{model:Uc,prompt:``,fields:[]}}},BJ=`rows:import@1`,VJ={},HJ=r.object({effect_id:r.literal(BJ),connector:tu(),config:r.object({staging_group_id:r.string().min(1),allow_field_creation:r.boolean().default(!1),event_id:r.string().nullable().default(null)})}),UJ=class extends I{effectId=BJ;schema=HJ;payload;billableOperations=VJ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}producesDynamicFields(){return this.payload.config.allow_field_creation===!0}},WJ=HJ,GJ={effectId:BJ,baseEffect:L(BJ),label:`Import rows`,description:`Append records from a staging group (CSV import / search commit).`,categories:[`internal`],tags:[],keywords:[`csv`,`upload`,`excel`,`spreadsheet`,`file`],lifecycle:null,billableOperations:VJ,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`shared`,lockScope:`self`,catalogVisibility:`hidden`,defaultPayload:{effect_id:BJ,connector:null,config:{staging_group_id:``,allow_field_creation:!1,event_id:null}}},KJ=`rows:remove@1`,qJ={},JJ=r.object({effect_id:r.literal(KJ),connector:tu(),config:r.object({selection:uu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to delete as JSON.sc`,placeholder:`{"type":"all"}`},`both`),where:zl({path:`config.where`,sectionKey:`general`,groupPath:`config.general`,order:1,label:`Condition (optional)`,description:`Only delete selected rows matching this condition. Leave empty to delete all.`})})}),YJ=class extends I{effectId=KJ;schema=JJ;payload;billableOperations=qJ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){let e=this.payload.config.where;return e?[...new Set(e.conditions.map(e=>e.field_name))]:[]}},XJ=JJ,ZJ={effectId:KJ,baseEffect:L(KJ),label:`Delete rows`,description:`Delete selected rows — all of them, or only those matching a condition.`,categories:[`data_hygiene`],tags:[],keywords:[`remove`,`drop`,`clear`,`clean`,`purge`],lifecycle:null,billableOperations:qJ,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`both`,lockingMode:`exclusive`,lockScope:`selection`,catalogVisibility:`visible`,guide:`Delete rows matching config.where (omit selection to consider ALL rows; omit where to delete the whole selection). Destructive and approval-gated, so make ONE remove do the whole job: or-combine EVERY drop criterion into a single where (logic "or", one condition per field) instead of running several removes — and put the remove in the same validated chain as any fields:remove / rename cleanup so the user approves once. To drop rows whose enrichment yielded nothing, condition on the field's STATUS (property "status", e.g. neq "completed" — catches skipped, failed, and no_result at once). Bracketed cell renderings from get_sheet_rows like "[no_result]"/"[skipped]" are status placeholders for EMPTY cells, never stored values — a value condition cannot match them. After the run, re-read the sheet ONCE to confirm; if the rows you expected gone are still there, stop and report the discrepancy instead of retrying with variant conditions.`,defaultPayload:{effect_id:KJ,connector:null,config:{selection:{type:`rows`,record_ids:[]}}}},QJ=`rows:removeempty@1`,$J={},eY=r.object({effect_id:r.literal(QJ),connector:tu(),config:r.object({selection:uu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to consider as JSON.`,placeholder:`{"type":"all"}`},`both`),fields:lu({path:`config.fields`,sectionKey:`general`,groupPath:`config.general`,label:`Fields`,minItems:1,description:`Delete a row when ANY of these fields is empty.`})})}),tY=class extends I{effectId=QJ;schema=eY;payload;billableOperations=$J;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return this.payload.config.fields.map(e=>e.field_name)}},nY=eY,rY={effectId:QJ,baseEffect:L(QJ),label:`Delete rows with empty cells`,description:`Delete selected rows where any of the chosen fields is empty.`,categories:[`data_hygiene`],tags:[V.NEW],keywords:[`blank`,`null`,`missing`,`prune`,`incomplete`,`sparse`],lifecycle:null,billableOperations:$J,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`both`,lockingMode:`exclusive`,lockScope:`selection`,catalogVisibility:`visible`,guide:`Delete rows where ANY field in config.fields is empty (OR semantics) — list EVERY field to check in ONE effect instead of running several. "Empty" means: missing key, null, empty string, empty array, or — for enrichment output — any cell whose status is not "completed" (catches failed, no_result, and skipped at once); 0, false, and whitespace-only strings count as populated. Omit selection to consider ALL rows. For value-based predicates (e.g. drop rows where score < 3) use rows:remove@1 with a where condition instead. Destructive and approval-gated; after the run, re-read the sheet ONCE to confirm.`,defaultPayload:{effect_id:QJ,connector:null,config:{selection:{type:`rows`,record_ids:[]},fields:[]}}};function iY(e){if(e instanceof Z)return e;let t=e.search_id,n=vG(t);if(!n)throw Error(`Unknown pipe: ${e.search_id}`);return new n(xG.parse(e))}const aY=`search:run@1`,oY={},sY=r.object({effect_id:r.literal(aY),connector:tu(),config:r.object({search_payload:nd({path:`config.search_payload`,groupPath:`config.general`,sectionKey:`general`,label:`Search`,description:`Pick and configure the search to run.`},xG),max_number_of_results:Zu({path:`config.max_number_of_results`,groupPath:`config.general`,sectionKey:`general`,label:`Max results`,description:`Maximum number of items to find across all pages.`,guide:"This is the FETCH budget — an upper bound on raw results pulled across all pages (it also caps each page's size). De-duplicated results are NOT re-fetched, so this is not the final row count. When you want EXACTLY N unique rows, do NOT set this to N (you'd get fewer the moment any result is a duplicate): set `stop_at_unique_rows_count` to N and set this to the maximum (1000000) so the unique count is the real stop condition. For a plain bulk fetch with no unique target, set this to the number of rows you want.",max:1e6,min:1}).default(1e3),deduplicate:$u({path:`config.deduplicate`,groupPath:`config.general`,sectionKey:`general`,label:`Unique rows only`,description:`Skip results that already exist in the sheet.`,guide:"Dedup key is the search's own declared key. Discards are NOT topped up with extra pages, so to reliably collect N unique rows pair this with `stop_at_unique_rows_count` and a large `max_number_of_results`.",defaultValue:!0,enabledIf:e=>{let t=e.config?.search_payload;if(!t?.search_id)return{disabled:!0,message:`Configure a search first.`};let n=!1;try{n=iY(t).getDedupConfig().fields.length>0}catch{n=!1}return n?{disabled:!1}:{disabled:!0,message:`This search doesn't support de-duplication.`}}}),stop_at_unique_rows_count:Qu({path:`config.stop_at_unique_rows_count`,groupPath:`config.general`,sectionKey:`general`,label:`Stop at X unique rows`,description:`Stop after this many new rows have been added. Leave empty for no early stop. Bounded by Max results.`,guide:"Set this to the exact unique-row count you want (only works with `deduplicate` on). It paginates full pages until this many NEW rows are added, so set `max_number_of_results` to the maximum (1000000) to give it room — `max_number_of_results` then just acts as a safety backstop.",placeholder:`No early stop`,min:1,max:1e5,enabledIf:e=>e.config?.deduplicate===!0?{disabled:!1}:{disabled:!0,message:`Enable “Unique rows only” to use this.`}})})}),cY=class extends I{effectId=aY;schema=sY;payload;billableOperations=oY;constructor(e){super(),this.payload=this.validatePayload(e)}getSearch(){let e=this.payload.config.search_payload;if(!e?.search_id)return null;try{return iY(e)}catch{return null}}getConnectionsRequirements(){return[]}getProviderNames(){let e=this.getSearch();return e?[jG(e.searchId).provider]:[]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}producesDynamicFields(){let e=this.getSearch();return e?(jG(e.searchId).outputFieldMode??`static`)===`dynamic`:!1}evolveSchema(e){let t=this.getSearch();if(!t||(jG(t.searchId).outputFieldMode??`static`)===`dynamic`)return{next:e};let n=e.validationContext.fieldAnnotations.merge(t.getStaticFieldDefinitions(),!1,{appendOrders:!0});return rd(wK({config:{environment:e.environment},pipes:e.pipes,field_annotations:n.annotations}),e.environment)}},lY=sY,uY={effectId:aY,baseEffect:L(aY),label:`Search`,description:`Run a search and append the results to the sheet.`,categories:[`enrichment`],tags:[V.NEW],keywords:[`find`,`import`,`source`,`prospect`,`add rows`,`results`],lifecycle:null,billableOperations:oY,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`visible`,defaultPayload:{effect_id:aY,connector:null,config:{search_payload:{search_id:``},max_number_of_results:1e3,deduplicate:!0,stop_at_unique_rows_count:null}}},dY=`sheet:export@1`,fY={},pY=r.object({effect_id:r.literal(dY),connector:tu(),config:r.object({selection:uu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to export as JSON — {"type":"all"} or {"type":"rows","record_ids":["…"]}.`,placeholder:`{"type":"all"}`},`both`)})}),mY=class extends I{effectId=dY;schema=pY;payload;billableOperations=fY;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}},hY=pY,gY={effectId:dY,baseEffect:L(dY),label:`Export sheet`,description:`Export the selected rows to a CSV download.`,categories:[`internal`],tags:[],keywords:[`csv`,`download`,`excel`,`spreadsheet`,`file`],lifecycle:null,billableOperations:fY,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`both`,lockingMode:`shared`,lockScope:`self`,catalogVisibility:`hidden`,defaultPayload:{effect_id:dY,connector:null,config:{}}},_Y=`sheet:reset@1`,vY={},yY=r.object({effect_id:r.literal(_Y),connector:tu(),config:r.object({})}),bY=class extends I{effectId=_Y;schema=yY;payload;billableOperations=vY;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}evolveSchema(e){let t=wK({config:{environment:e.environment},pipes:[],field_annotations:{}});return{next:{environment:e.environment,pipes:[],fieldAnnotations:{},validationContext:t}}}},xY=yY,SY={effectId:_Y,baseEffect:L(_Y),label:`Reset sheet`,description:`Reset the sheet to its initial state — remove all pipes, fields, and rows. This cannot be partially applied.`,categories:[`data_hygiene`],tags:[],keywords:[`clear`,`wipe`,`empty`,`start over`,`delete all`],lifecycle:null,billableOperations:vY,shouldUpgradeSchema:!0,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`visible`,defaultPayload:{effect_id:_Y,connector:null,config:{}}},CY=`timetravel:create@1`,wY={},TY=r.object({effect_id:r.literal(CY),connector:tu(),config:r.object({})}),EY=class extends I{effectId=CY;schema=TY;payload;billableOperations=wY;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}},DY=TY,OY={effectId:CY,baseEffect:L(CY),label:`Create restore point`,description:`Snapshot the current sheet state as a timetravel restore point.`,categories:[`internal`],tags:[],lifecycle:null,billableOperations:wY,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,shouldUpgradeSchema:!0,catalogVisibility:`hidden`,defaultPayload:{effect_id:CY,connector:null,config:{}}},kY=`timetravel:travel@1`,AY={},jY=r.object({effect_id:r.literal(kY),connector:tu(),config:r.object({schema_id:r.string().min(1)})}),MY=class extends I{effectId=kY;schema=jY;payload;billableOperations=AY;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}producesDynamicFields(){return!0}},NY=jY,PY={effectId:kY,baseEffect:L(kY),label:`Restore to point`,description:`Restore the sheet to a previous point by copying that point's rows into a new schema.`,categories:[`internal`],tags:[],lifecycle:null,billableOperations:AY,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`hidden`,defaultPayload:{effect_id:kY,connector:null,config:{schema_id:``}}},FY=r.object({reason:r.object({code:r.string(),details:r.string().optional()}),related_record_id:r.string().nullable(),resolved_by:r.object({ref:Tt,config_hash:r.string()})}),IY=r.object({value:r.union([r.string(),r.number(),r.boolean(),r.null()])}),LY=FY.extend({fields:r.record(r.string(),IY)}),RY=r.object({added:FY.optional(),updated:LY.optional(),removed:FY.optional()}),zY=r.record(r.string(),RY),BY=r.object({shown:r.number().int(),total:r.number().int(),added:r.number().int(),updated:r.number().int(),removed:r.number().int()}),VY=r.object({effect_id:Tt,config_hash:r.string(),status:r.enum([`completed`,`failed`,`skipped`]),error:r.string().optional(),source:r.literal(`run_added_rows`).optional()}),HY={"rows:dedupe@1":vJ,"rows:duplicate@1":wJ,"rows:enrich@1":AJ,"rows:adopt@1":oJ,"rows:add@1":Yq,"rows:import@1":UJ,"row:update@1":Uq,"rows:remove@1":YJ,"rows:removeempty@1":tY,"rows:copy_to_sheet@1":fJ,"rows:filter:prompt@1":LJ,"pipe:add@1":Tq,"pipe:update@1":Lq,"pipe:remove@1":jq,"fields:remove@1":yq,"fields:patch@1":pq,"fields:duplicate@1":YK,"fields:add@1":FK,"fields:order:reset@1":tq,"fields:deletesparse:input@1":VK,"env:change@1":cd,"timetravel:create@1":EY,"timetravel:travel@1":MY,"sheet:export@1":mY,"search:run@1":cY,"sheet:reset@1":bY},UY={"rows:dedupe@1":yJ,"rows:duplicate@1":TJ,"rows:enrich@1":jJ,"rows:adopt@1":sJ,"rows:add@1":Xq,"rows:import@1":WJ,"row:update@1":Wq,"rows:remove@1":XJ,"rows:removeempty@1":nY,"rows:copy_to_sheet@1":pJ,"rows:filter:prompt@1":RJ,"pipe:add@1":Eq,"pipe:update@1":Rq,"pipe:remove@1":Mq,"fields:remove@1":bq,"fields:patch@1":mq,"fields:duplicate@1":XK,"fields:add@1":IK,"fields:order:reset@1":nq,"fields:deletesparse:input@1":HK,"env:change@1":ld,"timetravel:create@1":DY,"timetravel:travel@1":NY,"sheet:export@1":hY,"search:run@1":lY,"sheet:reset@1":xY},WY={"rows:dedupe@1":bJ,"rows:duplicate@1":EJ,"rows:enrich@1":MJ,"rows:adopt@1":cJ,"rows:add@1":Zq,"rows:import@1":GJ,"row:update@1":Gq,"rows:remove@1":ZJ,"rows:removeempty@1":rY,"rows:copy_to_sheet@1":mJ,"rows:filter:prompt@1":zJ,"pipe:add@1":Dq,"pipe:update@1":zq,"pipe:remove@1":Nq,"fields:remove@1":xq,"fields:patch@1":hq,"fields:duplicate@1":ZK,"fields:add@1":LK,"fields:order:reset@1":rq,"fields:deletesparse:input@1":UK,"env:change@1":ud,"timetravel:create@1":OY,"timetravel:travel@1":PY,"sheet:export@1":gY,"search:run@1":uY,"sheet:reset@1":SY};function GY(e){return HY[e]}function KY(e){return WY[e]}function qY(e){return UY[e]}function JY(){return Object.keys(WY).filter(e=>WY[e].agentExposure!==`excluded`)}function YY(e){return WY[e]?.agentExposure!==`excluded`}const XY=t.discriminatedUnion(`effect_id`,Object.values(UY).map(e=>e)).openapi(`EffectPayloadSchema`);function ZY(e,t){return Vt(t,WY[e].defaultPayload)}const QY=t.preprocess(e=>{if(!e||typeof e!=`object`||!(`effect_id`in e))return e;let t=WY[e.effect_id];return t?.defaultPayload?{...e,config:Vt(e?.config||{},t.defaultPayload.config)}:e},XY),$Y=t.object({diff:t.object({limit:t.number().int().min(0).max(1e3).default(100).openapi({description:"How many per-record diff entries to keep on the result. `counts` stays exact regardless."})}).optional(),run_added_rows:t.boolean().optional().openapi({description:`When true, after this run's effects complete, run the sheet's pipes over exactly the rows the run appended (the contiguous tail). Off by default. Durable on schedules: a scheduled chain that adds rows then enriches them on every fire.`})}),eX=t.object({config:$Y.optional(),effects:t.array(QY).min(1)}).openapi(`EffectsRequest`),tX=t.object({id:t.string(),status:Bt,effects:t.array(VY),counts:BY.nullable(),diff:zY.nullable(),after_schema_id:t.string().nullable(),before_schema_id:t.string().nullable(),added:t.object({cursor:t.string().nullable(),count:t.number().int()}).nullable().openapi({description:'Present when the run appended rows. `cursor` is the exclusive window cursor isolating exactly the added tail — pass it to a `rows:enrich@1` `{type:"window", cursor, count:null}` selection to run the sheet\'s pipes over the added rows. `count` is how many added rows survive.'})}).openapi(`EffectsResponse`),nX=t.object({effects:t.array(t.unknown()).min(1)}).openapi(`EffectsValidateRequest`),rX=t.object({index:t.number().int(),effect_id:Tt,valid:t.boolean(),errors:t.array(t.string())}).openapi(`EffectsValidateStep`),iX=t.object({valid:t.boolean(),errors:t.array(t.string()),steps:t.array(rX).optional()}).openapi(`EffectsValidateResponse`);function aX(e){let t=e.split(`@`)[1];if(!t)throw Error(`No effect version found`);return Number(t)}function oX(){let e={};for(let t of Object.values(WY)){let{baseEffect:n}=t;e[n]??=[],e[n].push(t)}return Object.entries(e).forEach(([t,n])=>{e[t]=n.sort((e,t)=>{let n=aX(e.effectId);return aX(t.effectId)-n})}),e}const sX=oX();function cX(){let e=[];for(let[t,n]of Object.entries(sX)){let r=n[0];if(!r)throw Error(`Found empty entry`);r.lifecycle?.deprecatedOn||r.catalogVisibility!==`hidden`&&e.push({...r,baseEffect:t,latestVersion:aX(r.effectId)})}return e}const lX=[...wt,...St];function uX(e,t){let n=Array.from({length:t.length+1},(e,t)=>t);for(let r=1;r<=e.length;r++){let i=[r];for(let a=1;a<=t.length;a++)i[a]=Math.min((n[a]??0)+1,(i[a-1]??0)+1,(n[a-1]??0)+(e[r-1]===t[a-1]?0:1));n=i}return n[t.length]??0}function dX(e){let t=null,n=1/0;for(let r of lX){let i=uX(e,r);i<n&&(n=i,t=r)}return t&&n<=Math.max(3,Math.floor(e.length/3))?t:null}function fX(e){let t=[];return e.forEach((e,n)=>{if(!e||typeof e!=`object`){t.push(`effects[${n}] must be an object like { effect_id: "...", config: {...} }.`);return}let r=e.effect_id;if(typeof r!=`string`||r.length===0){t.push(`effects[${n}] is missing "effect_id" — every effect needs one (e.g. "rows:add@1"). Use list_effects / get_effect_schema for the catalog.`);return}if(!lX.includes(r)){let e=dX(r);t.push(`effects[${n}]: unknown effect_id "${r}".${e?` Did you mean "${e}"?`:``} Use list_effects to find valid ids — never invent one.`)}}),t}function pX(e){let t=fX(e);if(t.length>0)return{ok:!1,errors:t};let n=[],i=[];return e.forEach((e,t)=>{let a=e.effect_id;if(!wt.includes(a)){n.push(`effects[${t}] ("${a}") is a REPORT effect — report chains must not be mixed into a sheet chain.`);return}let o=a,s=WY[o],c=s?.defaultPayload?{...e,config:Vt(e.config||{},s.defaultPayload.config)}:e,l=qY(o).safeParse(c);if(!l.success){n.push(`effects[${t}] (${a}): ${r.prettifyError(l.error)}`);return}i.push(l.data)}),n.length>0?{ok:!1,errors:n}:{ok:!0,chain:i}}function mX(e){let t=e.normalize(`NFD`).replace(/[\u0300-\u036f]/g,``).replace(/[^A-Za-z0-9]+/g,`_`).replace(/^_+|_+$/g,``);return t===``?`column`:/^[0-9]/.test(t)?`_${t}`:t}function hX(e){let t=new Set;return e.map(e=>{let n=e,r=2;for(;t.has(n);)n=`${e}_${r}`,r++;return t.add(n),n})}function gX(e){let t=hX(e.map(mX));return e.map((e,n)=>({name:t[n],label:e}))}const _X={completed:`Completed`,failed:`Failed`,no_result:`No result`,pending:`Pending`,processing:`Processing`,queued:`Queued`,skipped:`Skipped`};function vX(e){return _X[e]}const yX=`bachelor.master.mba.phd.ph d.doctor.associate.diploma.b sc.bsc.m sc.msc.b a.m a.b tech.btech.m tech.mtech.b eng.m eng.b com.llb.llm.md.jd.undergraduate.postgraduate.graduate.degree`.split(`.`),bX=[`university`,`college`,`institute of technology`,`polytechnic`,`school of`],xX=e=>` ${e.toLowerCase().replace(/[^a-z ]+/g,` `).replace(/\s+/g,` `).trim()} `,SX=(e,t)=>{if(!e)return!1;let n=xX(e);return t.some(e=>n.includes(` ${e} `))};function CX(e){return SX(e.degree_name,yX)?!0:e.degree_name?!1:SX(e.institution_name,bX)}function wX(e){if(!e.start_date)return 1/0;let t=l(e.start_date);return Number.isNaN(t.getTime())?1/0:t.getTime()}function TX(e){let t=e.education_history.filter(e=>e.is_current_education===!0&&CX(e)),n=null;for(let e of t)(n===null||wX(e)<wX(n))&&(n=e);return{...e,education_history:e.education_history.map(e=>({...e,is_primary_current_education:e===n}))}}function EX(e){let t=e.employment_history.find(e=>e.is_primary_current_employer===!0)??e.employment_history.find(e=>e.is_current_employer===!0)??null;return{...e,primary_job_title:t?.job_title??null,primary_company_domain:t?.company_domain??null}}function DX(e,t,n=new Date){if(!e)return{days:null,years:null};let r=l(e);if(Number.isNaN(r.getTime()))return{days:null,years:null};let i=n;if(t){let e=l(t);Number.isNaN(e.getTime())||(i=e)}let a=o(i,r);return a<0?{days:null,years:null}:{days:a,years:Math.round(a/365.25*100)/100}}const OX={shared:{}},kX={shared:{paths:{"config.cursor":null,"config.offset":null,"config.page_number":null}}},AX={shared:{}};function jX(e,t){let n=e[t];return{sectionMap:{...e.shared.sections,...n?.sections},groupMap:{...e.shared.groups,...n?.groups},pathMap:{...e.shared.paths,...n?.paths}}}const MX=e=>jX(OX,e),NX=e=>jX(kX,e),PX=e=>jX(AX,e),FX={"config.prompt":{order:1,label:`Prompt`,iconKey:`sparkles`,defaultExpand:!0},"config.general":{order:0,label:`General`,iconKey:`mix`,defaultExpand:!0},"config.advanced":{order:0,label:`Advanced`,iconKey:`sliders`,defaultExpand:!0},"config.bucket_creation":{order:1,label:`Bucket creation`,description:`Applied when the bucket is created on first write; ignored if it already exists.`,iconKey:`sliders`,defaultExpand:!1},"config.input_fields":{order:0,label:`Input config`,description:`Point pipe inputs to new fields.`,iconKey:`input`,defaultExpand:!1},connector:{order:100,label:`Connections`,iconKey:`plug`,defaultExpand:!1},"config.extraction":{order:0,label:`Extraction`,iconKey:`code`,defaultExpand:!0},run_if:{order:99,label:`Run IF`,iconKey:`workflow`,defaultExpand:!1},"config.email":{order:3,label:`Email`,iconKey:`mail`,defaultExpand:!0},"config.json_extraction":{order:1,label:`Extract fields`,iconKey:`braces`,defaultExpand:!0},"config.providers":{order:1,label:`Providers`,iconKey:`tags`,defaultExpand:!0},"config.output_fields":{order:10,label:`Output config`,description:`Toggle or rename output fields.`,iconKey:`output`,defaultExpand:!1},"config.destination":{order:9,label:`Destination`,description:`Name, type, and format of the field written to the destination sheet.`,iconKey:`output`,defaultExpand:!1}},IX={general:{path:`general`,label:`Behavior`,description:`How this pipe runs and selects providers.`,order:1},pagination:{path:`pagination`,label:`Behavior`,order:2},"config.filters":{path:`config.filters`,label:`I/O & conditions`,order:14},pipe_io:{path:``,label:`I/O & conditions`,order:99}},LX=new Set([`context_select_input`,`tagged_text_input`,`condition_block_input`,`field_select_input`,`fields_select_input`,`typed_fields_select_input`,`property_list_input`]);function RX(e){let t=UG(e),n=[];function i(e){e?.type&&LX.has(e.type)&&e.optionsDef&&n.push(e)}function a(e){let t=v.get(e);if(t&&typeof t!=`function`?i(t):typeof t==`function`&&i(t.staticMeta),typeof e==`object`&&e&&`unwrap`in e&&typeof e.unwrap==`function`&&a(e.unwrap()),e instanceof r.ZodObject)for(let t of Object.values(e.shape))a(t)}return a(t),n}function zX({pipePayload:e,validationContext:t,store:n,formResolvers:r,customization:i}){let a=UG(e.pipe_id),o=Cd(e.pipe_id,e.config||{});return Ul({schema:a,extractFromSchema:r=>{let i=v.get(r);if(n.field_options??={},i)return i&&typeof i==`function`?i({validationContext:t,pipePayload:e,userConnections:`connections`in n.field_options?(n.field_options.connections.options||[]).map(e=>{let t=e.widgets?.provider_logo?.provider;if(!t)throw Error(`Option is missing provider type'`);return{public_id:e.value,provider:t,is_default:e.data?.is_default===`true`,ownership_level:e.data?.ownership_level||void 0}}):[],pipeEntry:KG(e.pipe_id),hash:o}):i},store:n,formResolvers:r,sectionMap:Vl(IX,i?.sectionMap),groupMap:Vl(FX,i?.groupMap),pathMap:i?.pathMap})}const BX={"config.pagination":{order:-1,label:`Pagination`,iconKey:`list`,defaultExpand:!0},"config.dates":{order:1,label:`Dates`,iconKey:`calendar`,defaultExpand:!1},"config.counts":{order:1,label:`Ownership counts`,iconKey:`user`,defaultExpand:!0},"config.prompt":{order:1,label:`Prompt`,iconKey:`sparkles`,defaultExpand:!0},"config.general":{order:0,label:`General`,iconKey:`mix`,defaultExpand:!0},"config.advanced":{order:0,label:`Advanced`,iconKey:`sliders`,defaultExpand:!0},"config.continue_existing_search":{order:0,label:`Continue existing search`,iconKey:`history`,defaultExpand:!1},"config.output_fields":{order:10,label:`Outputs`,iconKey:`output`,defaultExpand:!1},"config.filters.query":{order:2,label:`Query`,iconKey:`text`,defaultExpand:!0},"config.filters.personal_information":{label:`Personal information`,order:6,iconKey:`user`,defaultExpand:!1},"config.filters.job_information":{label:`Job information`,order:6,iconKey:`job`,defaultExpand:!1},"config.filters.company_information":{order:1,label:`Company information`,iconKey:`office`,defaultExpand:!1},"config.filters.education":{label:`Education`,iconKey:`school`,defaultExpand:!1,order:4},"config.filters.geografic":{label:`Location`,iconKey:`location`,defaultExpand:!1},"config.filters.location":{label:`Location`,iconKey:`location`,defaultExpand:!1},"config.filters.general":{label:`General`,iconKey:`filter`,defaultExpand:!1,order:1},"config.filters.author":{label:`Author`,iconKey:`user`,defaultExpand:!1,order:2},"config.filters.mentions":{label:`Mentions`,iconKey:`tags`,defaultExpand:!1,order:3},"config.filters.job_openings":{label:`Job openings`,iconKey:`calendar`,defaultExpand:!1},"config.filters.website":{label:`Website`,iconKey:`web`,defaultExpand:!1},"config.filters.web_presence":{label:`Web presence`,iconKey:`web`,defaultExpand:!1},"config.filters.keywords":{label:`Keywords`,iconKey:`tags`,defaultExpand:!1},"config.filters.competitors":{label:`Competitors`,iconKey:`cometition`,defaultExpand:!1},"config.filters.categories":{label:`Categories`,iconKey:`boxes`,defaultExpand:!1},"config.filters.investors":{label:`Investors`,iconKey:`handshake`,defaultExpand:!1},"config.filters.account_activities":{label:`Account Activities`,iconKey:`activity`,defaultExpand:!1},"config.filters.financials":{label:`Financials`,iconKey:`chart`,defaultExpand:!1},"config.filters.languages":{label:`Languages`,iconKey:`language`,defaultExpand:!1},"config.filters.company_size":{label:`Company size`,iconKey:`office`,defaultExpand:!1},"config.filters.company":{label:`Company`,iconKey:`office`,defaultExpand:!1},"config.filters.status":{label:`Status`,iconKey:`activity`,defaultExpand:!1},"config.filters.technology":{label:`Technology`,iconKey:`code`,defaultExpand:!1},"config.filters.linkedin":{label:`LinkedIn`,iconKey:`linkedin`,defaultExpand:!1},"config.filters.skills":{label:`Skills`,iconKey:`brain`,defaultExpand:!1},"config.filters.activities":{label:`Activities`,iconKey:`bolt`,defaultExpand:!1},"config.filters.certifications_honors":{label:`Certifications & honors`,iconKey:`award`,defaultExpand:!1},"config.filters.profile":{label:`Profile`,iconKey:`contact`,defaultExpand:!1},"config.filters.experience":{label:`Employment history`,iconKey:`history`,defaultExpand:!1,order:3},"config.filters.current_employer":{label:`Current employment`,iconKey:`briefcase`,defaultExpand:!1,order:2},"config.filters.current_company":{label:`Current Company`,iconKey:`office`,defaultExpand:!1},"config.filters.industry":{label:`Industries`,iconKey:`factory`,defaultExpand:!1},"config.filters.general_search":{label:`General search`,iconKey:`search`,defaultExpand:!1},connector:{order:100,label:`Connections`,iconKey:`plug`,defaultExpand:!1}},VX={general:{path:`general`,label:`General`,description:`Search settings and pagination.`,order:1},pagination:{path:`pagination`,label:`General`,order:2},"config.filters":{path:`config.filters`,label:`Filters`,description:`Narrow the search results.`,order:10},pipe_io:{path:``,label:`Output fields`,order:99}};function HX({searchPayload:e,formContext:t,formResolvers:n,customization:r}){return Ul({schema:EG(e.search_id),extractFromSchema:n=>{let r=y.get(n);if(t.field_options??={},r)return typeof r==`function`?r({searchPayload:e,searchEntry:jG(e.search_id),userConnections:`connections`in t.field_options?(t.field_options.connections.options||[]).map(e=>{let t=e.widgets?.provider_logo?.provider;if(!t)throw Error(`Option is missing provider type`);return{public_id:e.value,provider:t,is_default:e.data?.is_default===`true`,ownership_level:e.data?.ownership_level||void 0}}):[]}):r},store:t,formResolvers:n,sectionMap:Vl(VX,r?.sectionMap),groupMap:Vl(BX,r?.groupMap),pathMap:r?.pathMap})}function UX(e){let t=EG(e),n=[];function i(e){let t=y.get(e);if(t&&typeof t!=`function`&&(t.type===`context_select_input`||t.type===`property_list_input`)&&t.optionsDef&&n.push(t),typeof e==`object`&&e&&`unwrap`in e&&typeof e.unwrap==`function`&&i(e.unwrap()),e instanceof r.ZodObject)for(let t of Object.values(e.shape))i(t)}return i(t),n}const WX={"config.general":{order:0,label:`General`,iconKey:`mix`,defaultExpand:!0},"config.advanced":{order:1,label:`Advanced`,iconKey:`sliders`,defaultExpand:!0},connector:{order:100,label:`Connections`,iconKey:`plug`,defaultExpand:!1}},GX={general:{path:`general`,label:`General`,description:`How this effect runs.`,order:1},pagination:{path:`pagination`,label:`General`,order:99},"config.filters":{path:`config.filters`,label:`Filters`,order:99},pipe_io:{path:``,label:`Connections`,order:99}};function KX({effectPayload:e,validationContext:t,store:n,formResolvers:r,customization:i}){let a=qY(e.effect_id),o=id(e.effect_id,e.config||{});return Ul({schema:a,extractFromSchema:r=>{let i=rl.get(r);if(n.field_options??={},i)return typeof i==`function`?i({validationContext:t,effectPayload:e,userConnections:`connections`in n.field_options?(n.field_options.connections.options||[]).map(e=>{let t=e.widgets?.provider_logo?.provider;if(!t)throw Error(`Option is missing provider type`);return{public_id:e.value,provider:t,is_default:e.data?.is_default===`true`,ownership_level:e.data?.ownership_level||void 0}}):[],effectEntry:KY(e.effect_id),hash:o}):i},store:n,formResolvers:r,sectionMap:Vl(GX,i?.sectionMap),groupMap:Vl(WX,i?.groupMap),pathMap:i?.pathMap})}function qX(e){let t=qY(e),n=[];function i(e){let t=rl.get(e);if(t&&typeof t!=`function`&&(t.type===`context_select_input`||t.type===`property_list_input`)&&t.optionsDef&&n.push(t),typeof e==`object`&&e&&`unwrap`in e&&typeof e.unwrap==`function`&&i(e.unwrap()),e instanceof r.ZodObject)for(let t of Object.values(e.shape))i(t)}return i(t),n}const JX=new Proxy({},{get:(e,t)=>e=>e.type===t}),YX=`school.user.location.language.brain.book.web.plug.money.office.job.search.output.input.mix.bill.linkedin.text.workflow.letter.source.activity.boxes.cometition.bolt.star.scholar.briefcase.history.sparkles.list.sliders.factory.award.tags.handshake.contact.mail.calendar.chart.code.braces.filter`.split(`.`),XX=r.enum(YX),ZX=r.object({provider_logo:r.object({provider:No}).optional(),emoji:r.object({char:r.string()}).optional(),icon:r.object({key:XX}).optional(),logo_url:r.object({url:r.string(),alt:r.string().optional()}).optional(),pricing:r.object({credits:r.number()}).optional(),token_pricing:r.object({inputPerBlock:r.number(),outputPerBlock:r.number(),blockSize:r.number()}).optional(),field_type:r.object({type:r.string(),format:r.string().optional()}).optional()}),QX=`providers_input.fields_select_input.json_extraction_input.pipes_run_if_input.connector_input.include_exclude_input.include_exclude_select_input.exact_range_input.range_input.date_range_input.boolean_input.nullable_boolean_input.text_input.template_input.output_field_input.textarea_input.prompt_input.select_input.context_select_input.multi_select_input.min_max_int_input.async_multi_select_input.async_include_exclude_select_input.multi_create_input.property_list_input.ordered_multi_create_input.tagged_ordered_multi_create_input.int_input.number_input.json_schema_input`.split(`.`);r.enum(QX);const $X=r.object({value:r.string(),label:r.string(),widgets:ZX.optional(),data:r.record(r.string(),r.string()).optional()}),eZ=r.object({field_options:r.record(r.string(),r.object({options:r.array($X)}))}),tZ=[{id:`people_data`,label:`People`,color:`#8B7DFF`,order:0},{id:`find_people`,label:`Find People`,color:`#A78BFA`,order:1},{id:`company_data`,label:`Company`,color:`#10B981`,order:2},{id:`find_comapnies`,label:`Find Companies`,color:`#34D399`,order:3},{id:`tools`,label:`Tools`,color:`#EAB308`,order:4},{id:`integrations`,label:`Integrations`,color:`#06B6D4`,order:5},{id:`actions`,label:`Actions`,color:`#F97316`,order:6},{id:`deprecated`,label:`Deprecated`,color:`#94A3B8`,order:7}],nZ=new Map(tZ.map(e=>[e.id,e]));function rZ(e){return nZ.get(e)}function iZ(){return tZ}const aZ={"company:funding:leadmagic@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:funding:leadmagic@1`}],input:[{id:`1`,company_website_url:`https://pipe0.com`}]}],"company:funding:leadmagic@2":[{config:{environment:`production`},pipes:[{pipe_id:`company:funding:leadmagic@2`}],input:[{id:`1`,company_domain:`pipe0.com`}]}],"company:funding:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:funding:waterfall@1`}],input:[{id:`1`,company_domain:`retool.com`}]}],"company:identity@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:identity@1`}],input:[{id:`1`,company_name:`Pipe0`}]}],"company:identity@2":[{config:{environment:`production`},pipes:[{pipe_id:`company:identity@2`,config:{}}],input:[{id:`1`,company_name:`Pipe0`}]}],"company:identity@3":[{config:{environment:`production`},pipes:[{pipe_id:`company:identity@3`,config:{}}],input:[{id:`1`,company_name:`Pipe0`}]}],"company:overview@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:overview@1`}],input:[{id:`1`,company_website_url:`Pipe0`}]}],"people:phone:workemail:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:phone:workemail:waterfall@1`}],input:[{id:`1`,work_email:`jane@pipe0.com`}]}],"person:mobile:workemail:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:mobile:workemail:waterfall@1`}],input:[{id:`1`,work_email:`jane@pipe0.com`}]}],"people:workemail:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:workemail:waterfall@1`}],input:[{id:`1`,name:`John Doe`,company_website_url:`https://pipe0.com`}]}],"person:workemail:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:workemail:waterfall@1`}],input:[{id:`1`,name:`John Doe`,company_domain:`pipe0.com`}]}],"company:techstack:builtwith@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:techstack:builtwith@1`}],input:[{id:`1`,company_website_url:`https://pipe0.com`}]}],"company:techstack:builtwith@2":[{config:{environment:`production`},pipes:[{pipe_id:`company:techstack:builtwith@2`}],input:[{id:`1`,company_domain:`pipe0.com`}]}],"agent:run@1":[{config:{environment:`production`},pipes:[{pipe_id:`agent:run@1`,config:{agent_type:`web_researcher`,model:Vc,prompt:{template:`
|
|
84
|
+
}`,inputType:`text`,maxLength:1e6,expectedTagType:`string`,expectedTagFormat:`text`,multiline:!0}).nullable(),headers:hu({sectionKey:`general`,groupPath:`config.general`,path:`config.headers`,label:`Headers`,info:"In the value column, type `/` to insert a field or secret reference (e.g. `Bearer {{ secret … }}`).",keyLabel:`Header`,valueLabel:`Value`,keyPlaceholder:`Authorization`,valuePlaceholder:`Bearer {{ secret … }}`,maxKeys:50}),expected_response_schema:Ou({sectionKey:`general`,groupPath:`config.advanced`,path:`config.expected_response_schema`,label:`Expected response shape`,description:`Optional JSON Schema. Successful responses that don't satisfy it are marked failed. Extra properties are always tolerated (whitelist).`,allowEmpty:!0}).optional(),output_fields:P(r.object({[xD.name]:D({fieldName:xD.name}),[SD.name]:D({fieldName:SD.name}),[CD.name]:D({fieldName:CD.name})}))})}),TD={"http-request-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:.001},mode:`always`}},ED=class extends B{pipeId=bD;payload;payloadSchema=wD;billableOperations=TD;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`http-request-v1-pipe0`)}getTemplatedFields(){return[this.payload.config.url,this.payload.config.body,...Object.values(this.payload.config.query_params??{}),...Object.values(this.payload.config.headers??{})]}getInputRequirement(){return ep(this.getTemplatedFields(),{expectedType:`string`})}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return tp(this.getTemplatedFields())}getRawOutputFields(){return{[xD.name]:this.catalogOutput(xD),[SD.name]:this.catalogOutput(SD),[CD.name]:this.catalogOutput(CD)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},DD=wD,OD={pipeId:bD,basePipe:U(bD),label:`HTTP request`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Make a generic GET/POST/PUT/PATCH/DELETE HTTP request and capture the JSON response. Optionally validate the response against a JSON schema.`,tags:[V.LOGIC,V.JSON,V.NEW],keywords:[`api`,`rest`,`webhook`,`fetch`,`get`,`post`,`endpoint`,`curl`],docPath:W(bD),billableOperations:TD,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:bD,run_if:null,connector:null,config:{method:`GET`,url:``,query_params:{},body:``,headers:{},expected_response_schema:{},output_fields:{http_response_status:{alias:``,enabled:!0},http_response_body:{alias:``,enabled:!0},http_response_headers:{alias:``,enabled:!1}}}}},kD=`json:extract:multi@1`,AD=r.object({pipe_id:r.literal(kD),run_if:b(),connector:ql(),config:r.object({json_extraction:ml()})}),jD={"json-extract-multi-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},MD=class extends B{pipeId=kD;payload;payloadSchema=AD;billableOperations=jD;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`json-extract-multi-v1-pipe0`)}getInputRequirement(){return R({description:``,name:this.payload.config.json_extraction.field_name,format:null,label:``,type:`json`,resolvedName:this.payload.config.json_extraction.field_name})}getRawOutputFields(){let e={};for(let t of this.payload.config.json_extraction.extractions)e[t.output_field.name||t.output_field.name]={description:`Extracted value from JSON input field ${this.payload.config.json_extraction.field_name}.`,enabled:!0,format:t.output_field.format||null,label:t.output_field.label||`Extract JSON`,name:t.output_field.name,resolvedName:t.output_field.name,jsonMeta:null,type:t.output_field.type,isCatalogFIeld:!1,isPrimaryOutput:!1};return e}getConnectionsRequirements(){return[]}},ND=AD,PD={pipeId:kD,basePipe:U(kD),inputFieldMode:`config`,outputFieldMode:`config`,label:`JSON extract`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Extract nested JSON properties into new output fields.`,guide:'Deterministic JSON extraction — PREFER this over prompt:run@1 whenever you need a value out of a JSON / known-schema column (no LLM, reproducible, schedulable). config.json_extraction.field_name is the source json column; each extraction has a JSONata `path` plus an output_field. Read the source column\'s JSON schema (get_pipe_schema / get_search_schema output fields, or get_sheet_schema) to author the path. Examples over a profile\'s employment_history array: `employment_history[is_current_employer=true][]` (array of current jobs → output_field.type "json"); `employment_history[is_primary_current_employer=true].company_domain` (scalar → output_field.type "string"). Set output_field.type to "json" for an object/array result, "string" for a scalar. CRITICAL for a list you will fan out (e.g. into row:expandappend:sheet@1): a JSONata filter returns the matched ELEMENT when exactly one row matches but an ARRAY when several do — so ALWAYS append the array constructor `[]` to force a consistent array in every row (`employment_history[is_current_employer=true][]`, not `...=true]`). Without it the column is an object in single-match rows and an array in others, and the downstream expand rejects the object rows. To confirm a NEW path resolves the shape you expect before running anything downstream, switch the sheet to SANDBOX (env:change@1) and run just this extraction — it runs for REAL in sandbox (no writes, no spend), so you can read the actual result, fix the path, then switch back to production.',docPath:W(kD),tags:[V.JSON],keywords:[`parse`,`pick`,`path`,`nested`,`property`,`jsonata`,`unpack`],managedProviders:[`pipe0`],deprecatedProviders:[],allowedUserConnectionProviders:[],billableOperations:jD,defaultInputRequirement:null,defaultPayload:{pipe_id:kD,run_if:null,connector:null,config:{json_extraction:{field_name:``,extractions:[]}}}},FD=`lead:enroll:amplemarket@1`,ID={"lead-enroll-amplemarket-v1-amplemarket":{allowManagedConnection:!1,provider:`amplemarket`,credits:null,mode:null}},LD=g(`email`),RD=g(`profile_url`),zD=g(`amplemarket_sequence_id`),BD=new Set([`active`,`paused`]),VD=[{label:`Demo · Q3 Outbound`,value:`seq_sandbox_1`},{label:`Demo · Founder Intros`,value:`seq_sandbox_2`}],HD=r.object({pipe_id:r.literal(FD),connector:S(),run_if:b(),config:r.object({sequence_id:ku({sectionKey:`general`,required:!0,label:`Sequence`,groupPath:`config.general`,path:`config.sequence_id`,info:`The Amplemarket sequence to enroll the lead into (must be active or paused).`,enabledIf:_(`amplemarket`),optionsDef:{requires:{connection:`amplemarket`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return VD;if(!t)throw new K.MissingSecretError({providerName:`amplemarket`});let r=[],i=`https://api.amplemarket.com/sequences?page[size]=100`;for(let e=0;e<10&&i;e++){let e=await fetch(i,{headers:{Authorization:`Bearer ${t}`}});if(!e.ok){let t=await e.text();throw new K.HttpError({msg:t})}let n=await e.json();for(let e of n.sequences??[])BD.has(e.status)&&r.push({label:e.name,value:e.id});let a=n._links?.next?.href;i=a?new URL(a,`https://api.amplemarket.com`).toString():null}return e?r.filter(t=>t.label.toLowerCase().includes(e.toLowerCase())):r},widgets:{provider_logo:{provider:`amplemarket`}}}}),input_fields:F(r.object({[LD.name]:w({fieldName:LD.name}),[RD.name]:w({fieldName:RD.name})})),custom_variables:hu({sectionKey:`general`,groupPath:`config.general`,path:`config.custom_variables`,label:`Custom variables`,info:"Amplemarket dynamic fields, sent as the lead's data. The Variable name must match what your sequence references (e.g. `{{ pain_point }}`) — lowercase letters, digits, and underscores only. In the Value column, type `/` to insert a field or secret; leave a Value empty to skip that row. Amplemarket rejects the enrollment if the sequence references a dynamic field that is missing.",keyLabel:`Variable`,valueLabel:`Value`,keyPlaceholder:`pain_point`,valuePlaceholder:`{{ pain_point }}`,maxKeys:50}).default({}),output_fields:P(r.object({[zD.name]:D({fieldName:zD.name})}))}).check(e=>{let t=e.value;for(let n of Object.keys(t.custom_variables??{})){let t=n.trim();if(!t)continue;let r=t=>e.issues.push({code:`custom`,input:n,message:t,path:[`custom_variables`,n]});if(t.includes(`{{`)){r("Variable name must be a literal (no `{{ }}` templating).");continue}if(!/^[a-z][a-z0-9_]*$/.test(t)){r(`Invalid Amplemarket dynamic-field name "${t}" — use lowercase letters, digits, and underscores, starting with a letter.`);continue}t.length>255&&r(`Dynamic-field name "${t.slice(0,32)}…" exceeds 255 characters.`)}})}),UD=e=>gd(R(G(LD,e)),R(G(RD,e))),WD=e=>{let t=new Set;for(let n of e)if(n)try{let e=ec(n);for(let n of Object.keys(e.inputs))t.add(n)}catch{}return[...t].map(e=>_d({name:e,resolvedName:e,label:e,description:``,type:t=>Ld(t,e)?.type||`string`,format:null}))},GD=class extends B{pipeId=FD;payload;payloadSchema=HD;billableOperations=ID;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`amplemarket`]}estimateBillableOperations(e){return H(e,`lead-enroll-amplemarket-v1-amplemarket`)}getCustomVariableValueTemplates(){return Object.values(this.payload.config.custom_variables??{})}getInputRequirement(){return z(UD(this.payload.config),...WD(this.getCustomVariableValueTemplates()))}getSecretRequirements(){return q(this.getCustomVariableValueTemplates())}getConstantRequirements(){return tp(this.getCustomVariableValueTemplates())}getRawOutputFields(){return{[zD.name]:this.catalogOutput(zD)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitRatio:1,rateLimitOperation:`amplemarket_account_operation`,allowManagedConnection:!1}]}},KD=HD,qD={pipeId:FD,basePipe:U(FD),label:`Enroll Lead in Sequence`,executionMode:`single`,categories:[`actions`],lifecycle:null,description:`Add a lead to an Amplemarket sequence, with custom dynamic fields.`,tags:[V.EMAIL],keywords:[`campaign`,`outreach`,`add`,`subscribe`,`outbound`,`email marketing`],docPath:W(FD),billableOperations:ID,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`amplemarket`],defaultInputRequirement:UD(null),managedProviders:[],deprecatedProviders:[],defaultPayload:{pipe_id:FD,connector:{strategy:`first`,connections:[]},run_if:null,config:{sequence_id:``,input_fields:{email:{alias:``},profile_url:{alias:``}},custom_variables:{},output_fields:{amplemarket_sequence_id:{alias:``,enabled:!0}}}}},JD=`lead:enroll:lemlist@1`,YD={"lead-enroll-lemlist-v1-lemlist":{allowManagedConnection:!1,provider:`lemlist`,credits:null,mode:null}},XD=g(`email`),ZD=g(`name`),QD=g(`first_name`),$D=g(`last_name`),eO=g(`company_name`),tO=g(`job_title`),nO=g(`profile_url`),rO=g(`phone`),iO=g(`lemlist_lead_id`),aO=g(`lemlist_enrollment_result`),oO=new Set([`email`,`firstName`,`lastName`,`name`,`companyName`,`jobTitle`,`linkedinUrl`,`phone`,`companyDomain`,`icebreaker`,`picture`]),sO=[{label:`Demo · Q3 Outbound`,value:`cam_sandbox_1`},{label:`Demo · Founder Intros`,value:`cam_sandbox_2`}],cO={requires:{connection:`lemlist`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return sO;if(!t)throw new K.MissingSecretError({providerName:`lemlist`});let r=await fetch(`https://api.lemlist.com/api/campaigns?limit=100`,{headers:{Authorization:`Basic ${t}`}});if(!r.ok){let e=await r.text();throw new K.HttpError({msg:e})}let i=await r.json(),a=(Array.isArray(i)?i:i.campaigns??[]).map(e=>({label:e.name,value:e._id}));return e?a.filter(t=>t.label.toLowerCase().includes(e.toLowerCase())):a},widgets:{provider_logo:{provider:`lemlist`}}};function lO(e){let t=new Set,n=new Set;try{let r=ec(e);for(let[e,i]of Object.entries(r.inputs))(i.required?t:n).add(e)}catch{for(let n of e.matchAll(/\{\{\s*([A-Za-z_][A-Za-z0-9_]*)/g))t.add(n[1])}return{required:[...t],optional:[...n]}}const uO=r.object({pipe_id:r.literal(JD),connector:S(),run_if:b(),config:r.object({campaign_id:ku({sectionKey:`general`,required:!0,label:`Campaign`,groupPath:`config.general`,path:`config.campaign_id`,info:`The lemlist campaign to enroll the lead into.`,enabledIf:_(`lemlist`),optionsDef:cO}),input_fields:F(r.object({[XD.name]:w({fieldName:XD.name}),[ZD.name]:w({fieldName:ZD.name}),[QD.name]:w({fieldName:QD.name}),[$D.name]:w({fieldName:$D.name}),[eO.name]:w({fieldName:eO.name}),[tO.name]:w({fieldName:tO.name}),[nO.name]:w({fieldName:nO.name}),[rO.name]:w({fieldName:rO.name})})),custom_variables:hu({sectionKey:`general`,groupPath:`config.general`,path:`config.custom_variables`,label:`Custom variables`,info:"lemlist custom variables, set on the lead after enrollment. The Variable name must match what your sequence references (e.g. `{{ painPoint }}`) — case-sensitive, no spaces. In the Value column, type `/` to insert a field or secret; leave a Value empty to skip that row. Standard fields (company, job title, LinkedIn, phone) are set via the fields above, not here.",keyLabel:`Variable`,valueLabel:`Value`,keyPlaceholder:`painPoint`,valuePlaceholder:`{{ pain_point }}`,maxKeys:50}),output_fields:P(r.object({[iO.name]:D({fieldName:iO.name}),[aO.name]:D({fieldName:aO.name})}))}).check(e=>{let t=e.value;for(let n of Object.keys(t.custom_variables??{})){let t=n.trim();if(!t)continue;let r=t=>e.issues.push({code:`custom`,input:n,message:t,path:[`custom_variables`,n]});if(t.includes(`{{`)){r("Variable name must be a literal (no `{{ }}` templating).");continue}if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t)){r(`Invalid lemlist variable name "${t}" — use letters, digits, and underscores; no spaces.`);continue}oO.has(t)&&r(`"${t}" is a standard lemlist field — set it via the dedicated field above, not as a custom variable.`)}})}),dO=e=>z(R(G(XD,e)),gd(R(G(ZD,e)),z(R(G(QD,e)),R(G($D,e)))),_d(G(eO,e)),_d(G(tO,e)),_d(G(nO,e)),_d(G(rO,e))),fO=e=>{let t=new Set;for(let n of e)if(n)try{let e=ec(n);for(let n of Object.keys(e.inputs))t.add(n)}catch{}return[...t].map(e=>_d({name:e,resolvedName:e,label:e,description:``,type:t=>Ld(t,e)?.type||`string`,format:null}))},pO=class extends B{pipeId=JD;payload;payloadSchema=uO;billableOperations=YD;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`lemlist`]}estimateBillableOperations(e){return H(e,`lead-enroll-lemlist-v1-lemlist`)}getCustomVariableValueTemplates(){return Object.values(this.payload.config.custom_variables??{})}getInputRequirement(){return z(dO(this.payload.config),...fO(this.getCustomVariableValueTemplates()))}getSecretRequirements(){return q(this.getCustomVariableValueTemplates())}getConstantRequirements(){return tp(this.getCustomVariableValueTemplates())}getRawOutputFields(){return{[iO.name]:this.catalogOutput(iO),[aO.name]:this.catalogOutput(aO)}}getConnectionsRequirements(){return[{provider:`lemlist`,rateLimitRatio:1,rateLimitOperation:`lemlist_create_lead`,allowManagedConnection:!1}]}async getAgentContext({connectionSecrets:e,environment:t}){let n=this.payload.config.campaign_id,r=Array.isArray(n)?n[0]:n;if(!r)return null;if(t===`sandbox`)return{summary:`Sandbox: this sequence references custom variables painPoint and eventLink — set each via config.custom_variables.`,data:{required_custom_variables:[`painPoint`,`eventLink`],used_standard_fields:[`firstName`]}};let i=e.lemlist;if(!i)throw new K.MissingSecretError({providerName:`lemlist`});let a=await fetch(`https://api.lemlist.com/api/campaigns/${encodeURIComponent(r)}/sequences`,{headers:{Authorization:`Basic ${i}`},signal:AbortSignal.timeout(1e4)});if(!a.ok){let e=await a.text();throw new K.HttpError({msg:e})}let o=await a.json(),s=new Set;for(let e of Object.values(o??{}))for(let t of e?.steps??[])for(let e of[t?.subject,t?.message]){if(!e)continue;let{required:t,optional:n}=lO(e);for(let e of[...t,...n])s.add(e)}let c=[...s].filter(e=>oO.has(e)),l=[...s].filter(e=>!oO.has(e));return{summary:l.length===0?`This sequence uses only standard lemlist fields — no custom variables to set.`:`This sequence requires these custom variables — set each via config.custom_variables (the value is a Liquid template over your sheet columns, e.g. {{ pain_point }}): ${l.join(`, `)}. Standard fields (email, firstName, …) are populated by the input fields above, not here.`,data:{required_custom_variables:l,used_standard_fields:c}}}},mO=uO,hO={pipeId:JD,basePipe:U(JD),label:`Enroll Lead in Campaign`,executionMode:`single`,categories:[`actions`],lifecycle:null,description:`Add a lead to a lemlist campaign sequence, with custom variables.`,tags:[V.EMAIL],keywords:[`sequence`,`outreach`,`add`,`subscribe`,`outbound`,`email marketing`],docPath:W(JD),billableOperations:YD,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`lemlist`],defaultInputRequirement:dO(null),managedProviders:[],deprecatedProviders:[],defaultPayload:{pipe_id:JD,connector:{strategy:`first`,connections:[]},run_if:null,config:{campaign_id:``,input_fields:{email:{alias:``},name:{alias:``},first_name:{alias:``},last_name:{alias:``},company_name:{alias:``},job_title:{alias:``},profile_url:{alias:``},phone:{alias:``}},custom_variables:{},output_fields:{lemlist_lead_id:{alias:``,enabled:!0},lemlist_enrollment_result:{alias:``,enabled:!1}}}}},gO=`message:send-direct:slack@1`,_O=g(`slack_direct_message_success`),vO=r.object({pipe_id:r.literal(gO),connector:S(),run_if:b(),config:r.object({slack_user_id:x({sectionKey:`general`,groupPath:`config.general`,path:`config.slack_user_id`,label:`Slack user ID`,info:"The member to DM (e.g. U024BE7LH) — chains from the Slack channel members search. Type `@` to insert a field reference.",placeholder:`{{ slack_user_id }}`,inputType:`text`,minLength:3,expectedTagType:`string`,expectedTagFormat:`text`}),message:x({sectionKey:`general`,groupPath:`config.general`,path:`config.message`,label:`Message`,info:"The message body. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`Hi {{ name }}, …`,inputType:`text`,minLength:1,maxLength:4e4,expectedTagType:`string`,expectedTagFormat:`markdown`,multiline:!0}),output_fields:P(r.object({[_O.name]:D({fieldName:_O.name})}))})}),yO={"message-send-direct-slack-v1-slack":{allowManagedConnection:!1,provider:`slack`,credits:null,mode:null}},bO=class extends B{pipeId=gO;payload;payloadSchema=vO;billableOperations=yO;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`slack`]}estimateBillableOperations(e){return H(e,`message-send-direct-slack-v1-slack`)}getTemplatedFields(){return[this.payload.config.slack_user_id,this.payload.config.message]}getInputRequirement(){return ep(this.getTemplatedFields())}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return tp(this.getTemplatedFields())}getRawOutputFields(){return{[_O.name]:this.catalogOutput(_O)}}getConnectionsRequirements(){return[{provider:`slack`,rateLimitRatio:1,rateLimitOperation:`slack_post_message`,allowManagedConnection:!1}]}},xO=vO,SO={pipeId:gO,basePipe:U(gO),label:`Send direct message`,executionMode:`single`,categories:[`actions`],lifecycle:null,description:`Send a Slack direct message to a workspace member.`,guide:"Send a Slack DM to one member per row. `slack_user_id` is the member's workspace ID — the people:channelmembers:slack@1 search outputs it, which makes 'list channel members → DM each' a two-step chain. The message body is templated: reference upstream fields with `{{ field_name }}` and stored secrets with `{{ SECRETS.KEY }}`. The DM comes from the pipe0 app (bots cannot impersonate people). Requires a Slack vault connection (call list_connections to find one).",tags:[V.CHAT],keywords:[`dm`,`direct message`,`private message`,`notify`,`outreach`,`chat`],docPath:W(gO),billableOperations:yO,inputFieldMode:`config`,outputFieldMode:`static`,allowedUserConnectionProviders:[`slack`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:null,defaultPayload:{pipe_id:gO,connector:{strategy:`first`,connections:[]},run_if:null,config:{slack_user_id:`{{ slack_user_id }}`,message:``,output_fields:{slack_direct_message_success:{alias:``,enabled:!0}}}}},CO=[{label:`#demo-general`,value:`C0SANDBOX001`},{label:`#demo-alerts`,value:`C0SANDBOX002`}],wO=`https://slack.com/api/conversations.list?limit=200&exclude_archived=true&types=public_channel,private_channel`,TO={requires:{connection:`slack`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return CO;if(!t)throw new K.MissingSecretError({providerName:`slack`});let r=[],i=null;for(let e=0;e<5;e++){let e=await fetch(i?`${wO}&cursor=${encodeURIComponent(i)}`:wO,{headers:{Authorization:`Bearer ${t}`}});if(!e.ok){let t=await e.text();throw new K.HttpError({msg:t})}let n=await e.json();if(!n.ok)throw new K.HttpError({msg:n.error??`slack_error`});for(let e of n.channels??[])r.push({label:`#${e.name}${e.is_ext_shared?` (Slack Connect)`:``}`,value:e.id});if(i=n.response_metadata?.next_cursor||null,!i)break}return e?r.filter(t=>t.label.toLowerCase().includes(e.toLowerCase())):r},widgets:{provider_logo:{provider:`slack`}}},EO=`message:send:slack@1`,DO=g(`slack_message_success`),OO=r.object({pipe_id:r.literal(EO),connector:S(),run_if:b(),config:r.object({channel_id:x({sectionKey:`general`,groupPath:`config.general`,path:`config.channel_id`,label:`Channel ID`,info:"Your connection must be authorized to post to this channel. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`C0123456789`,inputType:`text`,minLength:3,expectedTagType:`string`,expectedTagFormat:`text`,optionsDef:TO}),message:x({sectionKey:`general`,groupPath:`config.general`,path:`config.message`,label:`Message`,info:"The message body. Type `@` to insert a field reference or `$` to insert a secret reference.",placeholder:`Hi {{ name }}, …`,inputType:`text`,minLength:1,maxLength:4e4,expectedTagType:`string`,expectedTagFormat:`markdown`,multiline:!0}),output_fields:P(r.object({[DO.name]:D({fieldName:DO.name})}))})}),kO={"message-send-slack-v1-slack":{allowManagedConnection:!1,provider:`slack`,credits:null,mode:null}},AO=class extends B{pipeId=EO;payload;payloadSchema=OO;billableOperations=kO;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`slack`]}estimateBillableOperations(e){return H(e,`message-send-slack-v1-slack`)}getTemplatedFields(){return[this.payload.config.channel_id,this.payload.config.message]}getInputRequirement(){return ep(this.getTemplatedFields())}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return tp(this.getTemplatedFields())}getRawOutputFields(){return{[DO.name]:this.catalogOutput(DO)}}getConnectionsRequirements(){return[{provider:`slack`,rateLimitRatio:1,rateLimitOperation:`slack_post_message`,allowManagedConnection:!1}]}},jO=OO,MO={pipeId:EO,basePipe:U(EO),label:`Send message into channel`,executionMode:`single`,categories:[`actions`],lifecycle:null,description:`Send a Slack message to a channel.`,guide:"Send a Slack message. The channel ID and message body are templated config fields — reference upstream fields with `{{ field_name }}` and stored secrets with `{{ SECRETS.KEY }}`. Requires a Slack vault connection (call list_connections to find one).",tags:[V.CHAT],keywords:[`notify`,`notification`,`alert`,`post`,`chat`],docPath:W(EO),billableOperations:kO,inputFieldMode:`config`,outputFieldMode:`static`,allowedUserConnectionProviders:[`slack`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:null,defaultPayload:{pipe_id:EO,connector:{strategy:`first`,connections:[]},run_if:null,config:{channel_id:``,message:``,output_fields:{slack_message_success:{alias:``,enabled:!0}}}}},NO=`message:write@1`,PO=g(`message`),FO=`message-write-v1`,IO=Xc(FO),LO=r.object({pipe_id:r.literal(NO),connector:C(),run_if:b(),config:r.object({template:Gl({sectionKey:`general`,label:`Template`,path:`config.template`,placeholder:J(`prompt`),groupPath:`config.prompt`,required:!0}),model:wu({sectionKey:`general`,label:`Model`,path:`config.model`,groupPath:`config.prompt`,billableOperations:IO,defaultValue:Vc}),output_fields:P(r.object({[PO.name]:D({fieldName:PO.name})}))})}),RO=class extends B{pipeId=NO;payload;payloadSchema=LO;billableOperations=IO;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return Uc(this.payload.config.model)}estimateBillableOperations(e){return Qc(e,{model:this.payload.config.model,prefix:FO,inputTokens:600,outputTokens:800})}getInputRequirement(){return ep([this.payload.config.template])}getSecretRequirements(){return q([this.payload.config.template])}getConstantRequirements(){return tp([this.payload.config.template])}getRawOutputFields(){return{[PO.name]:this.catalogOutput(PO)}}getConnectionsRequirements(){return Wc(this.payload.config.model)}},zO=LO,BO={pipeId:NO,inputFieldMode:`config`,outputFieldMode:`static`,basePipe:U(NO),label:`Message writer`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`An AI agent specialized in composing messages for modern workplace communication platforms (Slack, Teams, Discord, etc.)`,guide:`AI message composer for Slack/Teams/Discord. Outputs: message. Pair with message:send:slack@1 to send.`,tags:[V.AI],keywords:[`ai`,`compose`,`draft`,`copywriting`,`outreach`,`slack`,`teams`],docPath:W(NO),defaultInputRequirement:null,billableOperations:IO,allowedUserConnectionProviders:Gc(),managedProviders:Gc(),deprecatedProviders:[],defaultPayload:{pipe_id:NO,connector:null,run_if:null,config:{model:Vc,template:``,output_fields:{message:{alias:``,enabled:!0}}}}},VO=g(`hubspot_object_id`),HO=g(`hubspot_associated_count`),UO=g(`hubspot_associated_objects`),WO=`object:associations:hubspot@1`,GO=r.object({pipe_id:r.literal(WO),run_if:b(),connector:S(),config:r.object({from_object_type:ku({sectionKey:`general`,required:!0,label:`From object type`,groupPath:`config.general`,path:`config.from_object_type`,info:`The type of the source record (standard or custom object).`,enabledIf:_(`hubspot`),optionsDef:cp}),to_object_type:ku({sectionKey:`general`,required:!0,label:`To object type`,groupPath:`config.general`,path:`config.to_object_type`,info:`The type of the associated records to retrieve (standard or custom object).`,enabledIf:_(`hubspot`),optionsDef:cp}),association_label:ku({sectionKey:`general`,required:!1,label:`Association label`,groupPath:`config.general`,path:`config.association_label`,info:`Only follow associations with this label (labels are portal-specific, e.g. "Decision maker"). Empty = all associations.`,enabledIf:_(`hubspot`),optionsDef:lp}),properties:fu({sectionKey:`general`,label:`Properties`,groupPath:`config.general`,path:`config.properties`,placeholder:`name`,info:`HubSpot internal property names of the TARGET object to include per associated record. Empty = HubSpot's default properties.`}),limit:Eu({sectionKey:`general`,label:`Limit`,groupPath:`config.general`,path:`config.limit`,info:``,min:1,max:100}).default(20),input_fields:F(r.object({[VO.name]:w({fieldName:VO.name})})),output_fields:P(r.object({[HO.name]:D({fieldName:HO.name}),[UO.name]:D({fieldName:UO.name})}))})}),KO=e=>R(G(VO,e)),qO={"object-associations-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},JO=class extends B{pipeId=WO;payload;payloadSchema=GO;billableOperations=qO;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`hubspot`]}estimateBillableOperations(e){return H(e,`object-associations-hubspot-v1-hubspot`)}getInputRequirement(){return KO(this.payload.config)}getRawOutputFields(){return{[HO.name]:this.catalogOutput(HO),[UO.name]:this.catalogOutput(UO)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_generic`,allowManagedConnection:!1}]}async getAgentContext(e){let t=this.payload.config.to_object_type,n=Array.isArray(t)?t[0]??``:t;return pp(e,{objectTypes:[[n||`target object`,n||`0-1`]]})}},YO=GO,XO={pipeId:WO,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(WO),label:`HubSpot associated objects`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Retrieve the HubSpot records associated with a source record — one level of joins across standard and custom objects (e.g. a company's deals, or a custom object linked to a company).`,tags:[V.FIELDS],keywords:[`crm`,`join`,`related`,`association`,`custom object`,`linked`],docPath:W(WO),guide:"Associations are HubSpot's joins — the Search API never returns them, so this pipe is the way to fetch related records. The source-record input consumes `hubspot_object_id`, which every HubSpot surface emits (alias it to point at a differently named column); the from-object type must match the record the ID belongs to. Activities (notes, tasks, calls, meetings, emails) are associated objects too — pick them as the to-object to read a record's timeline; when you leave properties empty for an engagement the pipe fills a sensible default set (timestamp + body/subject). Association labels are portal-specific; leave the label empty to follow all associations. Zero associations is a successful result (count = 0). Target-object properties use internal names — call get_provider_context for the portal's catalog.",billableOperations:qO,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:KO(null),defaultPayload:{pipe_id:WO,connector:{strategy:`first`,connections:[]},run_if:null,config:{from_object_type:`0-2`,to_object_type:`0-3`,association_label:``,properties:[],limit:20,input_fields:{hubspot_object_id:{alias:``}},output_fields:{hubspot_associated_count:{alias:``,enabled:!0},hubspot_associated_objects:{alias:``,enabled:!0}}}}},ZO=g(`hubspot_object_id`),QO=g(`hubspot_update_result`),$O=`object:update:hubspot@1`,ek=r.object({pipe_id:r.literal($O),run_if:b(),connector:S(),config:r.object({object_type:ku({sectionKey:`general`,required:!0,label:`Object type`,groupPath:`config.general`,path:`config.object_type`,info:`Standard objects plus this portal's custom objects (custom objects need HubSpot Enterprise).`,enabledIf:_(`hubspot`),optionsDef:cp}),properties:hu({sectionKey:`general`,groupPath:`config.general`,path:`config.properties`,label:`Property values`,info:"Property = the HubSpot internal name (e.g. `jobtitle`, custom properties too). In the Value column, type `/` to insert a field reference. Enumeration values must be existing internal option values (case-sensitive).",keyLabel:`Property`,valueLabel:`Value`,keyPlaceholder:`jobtitle`,valuePlaceholder:`{{ job_title }}`,maxKeys:50}),ignore_blank_values:E({sectionKey:`general`,defaultValue:!0,label:`Ignore blank values`,groupPath:`config.general`,path:`config.ignore_blank_values`,info:`ON: rows whose value renders empty are skipped, preserving CRM data. OFF: empty values CLEAR the property in HubSpot.`}),input_fields:F(r.object({[ZO.name]:w({fieldName:ZO.name})})),output_fields:P(r.object({[QO.name]:D({fieldName:QO.name})}))}).check(e=>{let t=e.value;for(let n of Object.keys(t.properties??{})){let t=n.trim();if(!t)continue;let r=t=>e.issues.push({code:`custom`,input:n,message:t,path:[`properties`,n]});if(t.includes(`{{`)){r("Property name must be a literal internal name (no `{{ }}` templating).");continue}/^[a-z][a-z0-9_]*$/.test(t)||r(`Invalid HubSpot property name "${t}" — internal names are lowercase letters, digits, and underscores.`)}})}),tk=e=>R(G(ZO,e)),nk={"object-update-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},rk=class extends B{pipeId=$O;payload;payloadSchema=ek;billableOperations=nk;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`hubspot`]}estimateBillableOperations(e){return H(e,`object-update-hubspot-v1-hubspot`)}getTemplates(){return Object.values(this.payload.config.properties??{}).filter(e=>!!e)}getInputRequirement(){return z(tk(this.payload.config),...ip(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[QO.name]:this.catalogOutput(QO)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_generic`,allowManagedConnection:!1}]}async getAgentContext(e){let t=this.payload.config.object_type,n=Array.isArray(t)?t[0]??``:t;return pp(e,{objectTypes:[[n||`contacts`,n||`0-1`]],writableOnly:!0})}},ik=ek,ak={pipeId:$O,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U($O),label:`HubSpot update object`,executionMode:`single`,categories:[`actions`,`integrations`],lifecycle:null,description:`Update a HubSpot record (standard or custom object) by its record ID, mapping columns to properties. Blank values are skipped by default so un-enriched cells never erase CRM data.`,tags:[V.FIELDS],keywords:[`crm`,`write`,`sync`,`record`,`property`,`custom object`],docPath:W($O),guide:"The object-ID input consumes `hubspot_object_id`, which every HubSpot surface emits — chain from a match pipe (Lookup → Update by ID is the canonical HubSpot recipe; there is no reliable upsert for companies). Call get_provider_context for the selected object type to see WRITABLE properties and enumeration option values — HubSpot rejects read-only properties and unknown enum values (case-sensitive, never auto-created). Property writes fire the portal's workflows; rows where every value renders blank skip the API call entirely. With 'Ignore blank values' OFF, an empty value CLEARS the property in HubSpot.",billableOperations:nk,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:tk(null),defaultPayload:{pipe_id:$O,connector:{strategy:`first`,connections:[]},run_if:null,config:{object_type:`0-1`,properties:{},ignore_blank_values:!0,input_fields:{hubspot_object_id:{alias:``}},output_fields:{hubspot_update_result:{alias:``,enabled:!0}}}}},ok=g(`company_domain`),sk=g(`email`),ck=g(`salesforce_opportunities_found_count`),lk=g(`salesforce_record_id`),uk=g(`salesforce_opportunity_matches`),dk=`opportunity:match:salesforce@1`,fk=r.object({pipe_id:r.literal(dk),run_if:b(),connector:S(),config:r.object({status:Cu({sectionKey:`general`,required:!1,label:`Opportunity status`,groupPath:`config.general`,path:`config.status`,description:`Filters on Salesforce's computed IsClosed / IsWon — org-invariant, unlike stage names.`,options:[{label:`Any`,value:`any`},{label:`Open`,value:`open`},{label:`Won`,value:`won`},{label:`Lost`,value:`lost`}]}).default(`any`),stage:ku({sectionKey:`general`,required:!1,label:`Stage`,groupPath:`config.general`,path:`config.stage`,info:`Only match opportunities in this stage (the org's own OpportunityStage list). Empty = all stages.`,enabledIf:_(`salesforce`),optionsDef:Gd}),custom_properties:fu({sectionKey:`general`,label:`Custom fields`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`NextStep`,info:"Field API names added to each match JSON under `custom_properties` (standard-set names are already top-level)."}),input_fields:F(r.object({[ok.name]:w({fieldName:ok.name}),[sk.name]:w({fieldName:sk.name})})),output_fields:P(r.object({[ck.name]:D({fieldName:ck.name}),[lk.name]:D({fieldName:lk.name}),[uk.name]:D({fieldName:uk.name})}))}).optional()}),pk=e=>gd(R(G(ok,e)),R(G(sk,e))),mk={"opportunity-match-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},hk=class extends B{pipeId=dk;payload;payloadSchema=fk;billableOperations=mk;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`salesforce`]}estimateBillableOperations(e){return H(e,`opportunity-match-salesforce-v1-salesforce`)}getInputRequirement(){return pk(this.payload.config)}getRawOutputFields(){return{[ck.name]:this.catalogOutput(ck),[lk.name]:this.catalogOutput(lk),[uk.name]:this.catalogOutput(uk)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return ef(e,{objects:[`Opportunity`],includeStages:!0})}},gk=fk,_k={pipeId:dk,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(dk),label:`Salesforce opportunity match`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Find opportunities in your Salesforce org for a company (by domain, via the matched account) or person (by email, via contact roles) — opportunities have no natural key of their own. A clean miss completes with count = 0.`,tags:[V.WEBSITE,V.EMAIL],keywords:[`crm`,`sfdc`,`deal`,`pipeline`,`lookup`,`exists`,`revenue`],docPath:W(dk),guide:"Domain input resolves via account match → Opportunity.AccountId (preferred when both inputs are present); email resolves via the contact's OpportunityContactRole (note: OCRs the connected user cannot see are silently missed under private sharing). Filter open/won via `status` (computed IsClosed/IsWon — never assume a stage named 'Closed Won' exists); `stage` values are OpportunityStage ApiNames from get_provider_context. Contact roles ride each match as `contact_roles` edge metadata. found_count = 0 is a successful result.",billableOperations:mk,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:pk(null),defaultPayload:{pipe_id:dk,connector:{strategy:`first`,connections:[]},run_if:null,config:{status:`any`,stage:``,custom_properties:[],input_fields:{company_domain:{alias:``},email:{alias:``}},output_fields:{salesforce_opportunities_found_count:{alias:``,enabled:!0},salesforce_record_id:{alias:``,enabled:!0},salesforce_opportunity_matches:{alias:``,enabled:!0}}}}},vk=`person:devprofileurl:profileurl:waterfall@1`,yk=g(`profile_url`),bk=g(`developer_profile_url`),xk=g(`alternative_developer_profile_urls`),Sk=[`crustdata`],Ck=[{provider:`crustdata`}],wk=r.object({pipe_id:r.literal(vk),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:Ck,availableProviders:Sk}),input_fields:F(r.object({[yk.name]:w({fieldName:yk.name})})),output_fields:P(r.object({[bk.name]:D({fieldName:bk.name}),[xk.name]:D({fieldName:xk.name})}))}).optional()}),Tk=e=>R(G(yk,e)),Ek={"person-devprofileurl-profileurl-waterfall-v1-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:2,level1:{credits:1.3,weight:1}},mode:`onSuccess`}},Dk=class extends B{pipeId=vk;payload;payloadSchema=wk;billableOperations=Ek;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return Tk(this.payload.config)}getRawOutputFields(){return{[bk.name]:this.catalogOutput(bk,{isPrimaryOutput:!0}),[xk.name]:this.catalogOutput(xk,{isPrimaryOutput:!1})}}getConnectionsRequirements(){let e={crustdata:`crustdata_realtime_person_enrich`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},Ok=wk,kk={pipeId:vk,basePipe:U(vk),label:`GitHub profile from LinkedIn URL`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find a developer profile URL (e.g. GitHub) for any prospect using multiple data providers in a waterfall motion.`,docPath:W(vk),tags:[V.LINKEDIN,V.WATERFALL,V.NEW],keywords:[`developer`,`dev`,`engineer`,`coder`,`git`],billableOperations:Ek,defaultInputRequirement:Tk(null),inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:Sk,allowedUserConnectionProviders:Sk,deprecatedProviders:[],defaultPayload:{pipe_id:vk,connector:null,run_if:null,config:{providers:Ck,input_fields:{profile_url:{alias:``}},output_fields:{developer_profile_url:{alias:``,enabled:!0},alternative_developer_profile_urls:{alias:``,enabled:!1}}}}},Ak=`person:email:validate:millionverifier@1`,jk=g(`email`),Mk=g(`email_validation_status`),Nk=g(`million_validation_match`),Pk=r.object({pipe_id:r.literal(Ak),connector:C(),run_if:b(),config:r.object({input_fields:F(r.object({[jk.name]:w({fieldName:jk.name})})),output_fields:P(r.object({[Mk.name]:D({fieldName:Mk.name}),[Nk.name]:D({fieldName:Nk.name})}))}).optional()}),Fk=e=>R(G(jk,e)),Ik={"person-email-validate-millionverifier-v1-millionverifier":{provider:`millionverifier`,allowManagedConnection:!0,credits:{default:.1,level1:{credits:.05,weight:1}},mode:`always`}},Lk=class extends B{pipeId=Ak;payload;payloadSchema=Pk;billableOperations=Ik;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`millionverifier`]}estimateBillableOperations(e){return H(e,`person-email-validate-millionverifier-v1-millionverifier`)}getInputRequirement(){return Fk(this.payload.config)}getRawOutputFields(){return{[Mk.name]:this.catalogOutput(Mk),[Nk.name]:this.catalogOutput(Nk)}}getConnectionsRequirements(){return[{provider:`millionverifier`,rateLimitRatio:1,rateLimitOperation:`millionverifier_generic`,allowManagedConnection:!0}]}},Rk=Pk,zk={pipeId:Ak,basePipe:U(Ak),label:`Validate email`,executionMode:`single`,categories:[`people_data`],lifecycle:null,description:`Verify email addresses to ensure is deliverability.`,tags:[V.EMAIL],keywords:[`verify`,`verification`,`deliverability`,`bounce`,`check`,`clean`],docPath:W(Ak),billableOperations:Ik,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`millionverifier`],managedProviders:[`millionverifier`],deprecatedProviders:[],defaultInputRequirement:Fk(null),defaultPayload:{pipe_id:Ak,connector:null,run_if:null,config:{input_fields:{email:{alias:``}},output_fields:{email_validation_status:{alias:``,enabled:!0},million_validation_match:{alias:``,enabled:!0}}}}},Bk=`person:identity:email:waterfall@2`,Vk=g(`email`),Hk=g(`profile_url`),Uk=g(`person_profile_match`),Wk=[`hunter`,`crustdata`,`mixrank`],Gk=[{provider:`hunter`},{provider:`crustdata`},{provider:`mixrank`}],Kk=r.object({pipe_id:r.literal(Bk),connector:C(),run_if:b(),config:r.object({providers:T({availableProviders:Wk,defaultProviders:Gk,sectionKey:`general`}),input_fields:F(r.object({[Vk.name]:w({fieldName:Vk.name})})),output_fields:P(r.object({[Hk.name]:D({fieldName:Hk.name}),[Uk.name]:D({fieldName:Uk.name})}))}).optional()}),qk=e=>R(G(Vk,e)),Jk={"person-identity-email-waterfall-v2-hunter":{provider:`hunter`,allowManagedConnection:!0,credits:{default:2.5,level1:{credits:1.25,weight:1}},mode:`onSuccess`},"person-identity-email-waterfall-v2-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:5,level1:{credits:2.5,weight:1}},mode:`onSuccess`},"person-identity-email-waterfall-v2-mixrank":{provider:`mixrank`,allowManagedConnection:!0,credits:{default:1.5,level1:{credits:.75,weight:1}},mode:`onSuccess`}},Yk=class extends B{pipeId=Bk;payload;payloadSchema=Kk;billableOperations=Jk;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return qk(this.payload.config)}getRawOutputFields(){return{[Hk.name]:this.catalogOutput(Hk),[Uk.name]:this.catalogOutput(Uk,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={hunter:`hunter_email_enrichment`,crustdata:`crustdata_realtime_person_enrich`,mixrank:`mixrank-person-match`},t=this.payload.config?.providers||[],n=t.map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0})),r=t.findIndex(e=>e.provider===`hunter`);return r!==-1&&n.push({provider:`amplemarket`,rateLimitRatio:Y(r),rateLimitOperation:`amplemarket-person-reveal`,allowManagedConnection:!0}),n}},Xk=Kk,Zk={pipeId:Bk,basePipe:U(Bk),label:`Full LinkedIn profile from email`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find a person's LinkedIn profile URL and a standardized JSON profile from their email address.`,tags:[V.EMAIL,V.PEOPLE_PROFILES,V.LINKEDIN,V.WATERFALL],keywords:[`enrich`,`enrichment`,`reverse lookup`,`contact`,`identity`,`person`],docPath:W(Bk),managedProviders:Wk,deprecatedProviders:[],allowedUserConnectionProviders:Wk,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:Jk,defaultInputRequirement:qk(null),defaultPayload:{pipe_id:Bk,connector:null,run_if:null,config:{providers:Gk,input_fields:{email:{alias:``}},output_fields:{profile_url:{alias:``,enabled:!0},person_profile_match:{alias:``,enabled:!0}}}}},Qk=g(`email`),$k=g(`attio_person_found`),eA=g(`attio_record_id`),tA=g(`attio_person_match`),nA=`person:match:attio@1`,rA=r.object({pipe_id:r.literal(nA),run_if:b(),connector:S(),config:r.object({custom_properties:fu({sectionKey:`general`,label:`Custom attributes`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`job_title`,optionsDef:kf({target:`objects`,identifier:`people`}),info:'Attio attribute api_slugs to include in the match output (e.g. `job_title`, not "Job title"). Custom attributes work too and nest under `custom_properties`. Empty = a standard identity set.'}),input_fields:F(r.object({[Qk.name]:w({fieldName:Qk.name})})),output_fields:P(r.object({[$k.name]:D({fieldName:$k.name}),[eA.name]:D({fieldName:eA.name}),[tA.name]:D({fieldName:tA.name})}))}).optional()}),iA=e=>R(G(Qk,e)),aA={"person-match-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},oA=class extends B{pipeId=nA;payload;payloadSchema=rA;billableOperations=aA;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`person-match-attio-v1-attio`)}getInputRequirement(){return iA(this.payload.config)}getRawOutputFields(){return{[$k.name]:this.catalogOutput($k),[eA.name]:this.catalogOutput(eA),[tA.name]:this.catalogOutput(tA)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_query`,allowManagedConnection:!1}]}async getAgentContext(e){return jf(e,{objects:[`people`]})}},sA=rA,cA={pipeId:nA,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(nA),label:`Attio person match`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Check whether a person exists in your Attio workspace by email. email_addresses is Attio's unique identity attribute, so any address on a record matches exactly; a clean miss completes with found = false.`,tags:[V.EMAIL],keywords:[`crm`,`lookup`,`exists`,`dedupe`,`record`,`contact`],docPath:W(nA),guide:"Call get_provider_context first to discover this workspace's attributes; use attribute api_slugs verbatim (e.g. `job_title`). email_addresses is unique + multiselect — one exact match covers every address on the record, so there is no secondary-email option. found = false is a successful result — gate follow-up pipes with run_if on it. Chain the attio_record_id output into record:update:attio@1 or record:lookup:attio@1. No email column yet? Chain a work-email pipe (e.g. people:workemail:waterfall@1) ahead of this one and match on its output.",billableOperations:aA,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:iA(null),defaultPayload:{pipe_id:nA,connector:{strategy:`first`,connections:[]},run_if:null,config:{custom_properties:[],input_fields:{email:{alias:``}},output_fields:{attio_person_found:{alias:``,enabled:!0},attio_record_id:{alias:``,enabled:!0},attio_person_match:{alias:``,enabled:!0}}}}},lA=`person:match:role:waterfall@1`,uA=g(`company_domain`),dA=g(`role_finder_match`),fA=[`leadmagic`],pA=[{provider:`leadmagic`}],mA=r.object({pipe_id:r.literal(lA),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:pA,availableProviders:fA}),roles:mu({sectionKey:`general`,groupPath:`config.general`,label:`Roles`,path:`config.roles`,info:`Company roles to include`,maxItems:3,minItems:1,suggestionsDef:h(`titles`),expectedTagType:`string`}),input_fields:F(r.object({[uA.name]:w({fieldName:uA.name})})),output_fields:P(r.object({[dA.name]:D({fieldName:dA.name})}))})}),hA=e=>gd(G(uA,e)),gA={"person-match-role-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`}},_A=class extends B{pipeId=lA;payload;payloadSchema=mA;billableOperations=gA;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return hA(this.payload.config)}getSecretRequirements(){return q(this.payload.config?.roles??[])}getConstantRequirements(){return tp(this.payload.config?.roles??[])}getRawOutputFields(){return{[dA.name]:this.catalogOutput(dA,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_role_finder`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},vA=mA,yA={pipeId:lA,basePipe:U(lA),managedProviders:fA,deprecatedProviders:[],allowedUserConnectionProviders:fA,label:`Role finder`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find role matches for a given companies like "CEO" or "CFO".`,tags:[V.PEOPLE_PROFILES],keywords:[`job title`,`title`,`ceo`,`executive`,`decision maker`,`employee`],docPath:W(lA),billableOperations:gA,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:hA(null),defaultPayload:{pipe_id:lA,run_if:null,connector:null,config:{roles:[],providers:pA,input_fields:{company_domain:{alias:``}},output_fields:{role_finder_match:{alias:``,enabled:!0}}}}},bA=g(`email`),xA=g(`salesforce_person_found`),SA=g(`salesforce_record_id`),CA=g(`salesforce_person_match`),wA=`person:match:salesforce@1`,TA=r.object({pipe_id:r.literal(wA),run_if:b(),connector:S(),config:r.object({match_scope:Cu({sectionKey:`general`,required:!1,label:`Match scope`,groupPath:`config.general`,path:`config.match_scope`,description:`Which Salesforce person shapes to probe. Person Accounts are included automatically when the org has them.`,options:[{label:`Contacts and leads`,value:`contacts_and_leads`},{label:`Contacts only`,value:`contacts_only`},{label:`Leads only`,value:`leads_only`}]}).default(`contacts_and_leads`),custom_properties:fu({sectionKey:`general`,label:`Custom fields`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`Lead_Score__c`,info:"Field API names added to the match JSON under `custom_properties` (standard-set names are already top-level). Dotted parent paths like `Account.Industry` work."}),input_fields:F(r.object({[bA.name]:w({fieldName:bA.name})})),output_fields:P(r.object({[xA.name]:D({fieldName:xA.name}),[SA.name]:D({fieldName:SA.name}),[CA.name]:D({fieldName:CA.name})}))}).optional()}),EA=e=>R(G(bA,e)),DA={"person-match-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},OA=class extends B{pipeId=wA;payload;payloadSchema=TA;billableOperations=DA;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`salesforce`]}estimateBillableOperations(e){return H(e,`person-match-salesforce-v1-salesforce`)}getInputRequirement(){return EA(this.payload.config)}getRawOutputFields(){return{[xA.name]:this.catalogOutput(xA),[SA.name]:this.catalogOutput(SA),[CA.name]:this.catalogOutput(CA)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return ef(e,{objects:[`Contact`,`Lead`]})}},kA=TA,AA={pipeId:wA,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(wA),label:`Salesforce person match`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Check whether a person exists in your Salesforce org by email — across Contacts, Leads, and Person Accounts in one call, with deterministic precedence and converted-lead redirect. A clean miss completes with found = false.`,tags:[V.EMAIL],keywords:[`crm`,`sfdc`,`contact`,`lead`,`lookup`,`exists`,`dedupe`],docPath:W(wA),guide:"Matches by exact email in ONE API call across up to three shapes, with precedence: live Contact → converted Lead's contact (is_converted_redirect = true) → live Lead → Person Account. found = false is a successful result — gate follow-ups with run_if on it. `object_type` in the match JSON says which shape matched; chain `salesforce_record_id` into record:update:salesforce@1 or record:lookup:salesforce@1. Note: 'no match' can also mean the connected user lacks record access (private sharing).",billableOperations:DA,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:EA(null),defaultPayload:{pipe_id:wA,connector:{strategy:`first`,connections:[]},run_if:null,config:{match_scope:`contacts_and_leads`,custom_properties:[],input_fields:{email:{alias:``}},output_fields:{salesforce_person_found:{alias:``,enabled:!0},salesforce_record_id:{alias:``,enabled:!0},salesforce_person_match:{alias:``,enabled:!0}}}}},jA=`person:mobile:profileurl:waterfall@1`,MA=g(`profile_url`),NA=g(`mobile`),PA=[`leadmagic`,`prospeo`,`amplemarket`,`crustdata`,`findymail`],FA=[{provider:`leadmagic`},{provider:`prospeo`},{provider:`amplemarket`},{provider:`crustdata`},{provider:`findymail`}],IA=r.object({pipe_id:r.literal(jA),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:FA,availableProviders:PA}),input_fields:F(r.object({[MA.name]:w({fieldName:MA.name})})),output_fields:P(r.object({[NA.name]:D({fieldName:NA.name})}))}).optional()}),LA=e=>R(G(MA,e)),RA={"person-mobile-profileurl-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:3,level1:{credits:2,weight:1}},mode:`onSuccess`},"person-mobile-profileurl-waterfall-v1-prospeo":{provider:`prospeo`,allowManagedConnection:!0,credits:{default:5,level1:{credits:3,weight:1}},mode:`onSuccess`},"person-mobile-profileurl-waterfall-v1-findymail":{provider:`findymail`,allowManagedConnection:!0,credits:{default:6,level1:{credits:4,weight:1}},mode:`onSuccess`},"person-mobile-profileurl-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:4,level1:{credits:3,weight:1}},mode:`onSuccess`},"person-mobile-profileurl-waterfall-v1-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`}},zA=class extends B{pipeId=jA;payload;payloadSchema=IA;billableOperations=RA;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return LA(this.payload.config)}getRawOutputFields(){return{[NA.name]:this.catalogOutput(NA,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,prospeo:`prospeo_phone_number_lookup`,findymail:`findymail_phone_lookup`,amplemarket:`amplemarket-person-reveal`,crustdata:`crustdata_contact_enrich`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},BA=IA,VA={pipeId:jA,basePipe:U(jA),label:`Mobile number from LinkedIn profile`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find a mobile phone number for any prospect using multiple data providers in a waterfall motion.`,docPath:W(jA),tags:[V.PHONE,V.WATERFALL],keywords:[`phone`,`phone number`,`cell`,`direct dial`],billableOperations:RA,defaultInputRequirement:LA(null),inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:PA,allowedUserConnectionProviders:PA,deprecatedProviders:[],defaultPayload:{pipe_id:jA,connector:null,run_if:null,config:{providers:FA,input_fields:{profile_url:{alias:``}},output_fields:{mobile:{alias:``,enabled:!0}}}}},HA=`person:mobile:workemail:waterfall@1`,UA=g(`work_email`),WA=g(`mobile`),GA=[`leadmagic`,`amplemarket`,`crustdata`],KA=[{provider:`leadmagic`},{provider:`amplemarket`},{provider:`crustdata`}],qA=r.object({pipe_id:r.literal(HA),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:GA,defaultProviders:KA}),input_fields:F(r.object({[UA.name]:w({fieldName:UA.name})})),output_fields:P(r.object({[WA.name]:D({fieldName:WA.name})}))}).optional()}),JA=e=>R(G(UA,e)),YA={"person-mobile-workemail-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:3,level1:{credits:2,weight:1}},mode:`onSuccess`},"person-mobile-workemail-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:5,level1:{credits:4,weight:1}},mode:`onSuccess`},"person-mobile-workemail-waterfall-v1-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`}},XA=class extends B{pipeId=HA;payload;payloadSchema=qA;billableOperations=YA;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return JA(this.payload.config)}getRawOutputFields(){return{[WA.name]:this.catalogOutput(WA,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,amplemarket:`amplemarket-person-reveal`,crustdata:`crustdata_contact_enrich`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},ZA=qA,QA={pipeId:HA,basePipe:U(HA),label:`Mobile number from email`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find a mobile phone number for a prospect.`,tags:[V.PHONE,V.WATERFALL],keywords:[`phone`,`phone number`,`cell`,`direct dial`],docPath:W(HA),billableOperations:YA,defaultInputRequirement:JA(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:GA,managedProviders:GA,deprecatedProviders:[],defaultPayload:{pipe_id:HA,connector:null,run_if:null,config:{providers:KA,input_fields:{work_email:{alias:``}},output_fields:{mobile:{alias:``,enabled:!0}}}}},$A=`person:name:join@1`,ej=g(`first_name`),tj=g(`last_name`),nj=g(`name`),rj=r.object({pipe_id:r.literal($A),run_if:b(),connector:ql(),config:r.object({input_fields:F(r.object({[ej.name]:w({fieldName:ej.name}),[tj.name]:w({fieldName:tj.name})})),output_fields:P(r.object({[nj.name]:D({fieldName:nj.name})}))}).optional()}),ij=e=>z(G(ej,e),G(tj,e)),aj={"person-name-join-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},oj=class extends B{pipeId=$A;payload;payloadSchema=rj;billableOperations=aj;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`person-name-join-v1-pipe0`)}getInputRequirement(){return ij(this.payload.config)}getRawOutputFields(){return{[nj.name]:this.catalogOutput(nj)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},sj=rj,cj={pipeId:$A,basePipe:U($A),label:`Join name`,executionMode:`single`,categories:[`people_data`],lifecycle:null,description:`Combine the first and last names of a prospect into a full name field.`,tags:[V.NAMES],keywords:[`combine`,`concatenate`,`merge`,`first`,`last`,`full`],docPath:W($A),billableOperations:aj,defaultInputRequirement:ij(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:$A,run_if:null,connector:null,config:{input_fields:{first_name:{alias:``},last_name:{alias:``}},output_fields:{name:{alias:``,enabled:!0}}}}},lj=`person:name:split@1`,uj=g(`name`),dj=g(`first_name`),fj=g(`last_name`),pj=r.object({pipe_id:r.literal(lj),connector:ql(),run_if:b(),config:r.object({input_fields:F(r.object({[uj.name]:w({fieldName:uj.name})})),output_fields:P(r.object({[dj.name]:D({fieldName:dj.name}),[fj.name]:D({fieldName:fj.name})}))}).optional()}),mj=e=>R(G(uj,e)),hj={"person-name-split-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},gj=class extends B{pipeId=lj;payload;payloadSchema=pj;billableOperations=hj;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`person-name-split-v1-pipe0`)}getInputRequirement(){return mj(this.payload.config)}getRawOutputFields(){return{[dj.name]:this.catalogOutput(dj),[fj.name]:this.catalogOutput(fj)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},_j=pj,vj={pipeId:lj,basePipe:U(lj),label:`Split name`,executionMode:`single`,categories:[`people_data`],lifecycle:null,description:`Split a full name into first and last name.`,tags:[V.NAMES],keywords:[`parse`,`separate`,`first`,`last`,`full`],docPath:W(lj),billableOperations:hj,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:mj(null),allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:lj,run_if:null,connector:void 0,config:{input_fields:{name:{alias:``}},output_fields:{first_name:{alias:``,enabled:!0},last_name:{alias:``,enabled:!0}}}}},yj=`person:personalemail:profileurl:waterfall@1`,bj=g(`profile_url`),xj=g(`personal_email`),Sj=g(`alternate_personal_emails`),Cj=[`leadmagic`,`mixrank`],wj=[{provider:`leadmagic`},{provider:`mixrank`}],Tj=r.object({pipe_id:r.literal(yj),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:Cj,defaultProviders:wj}),input_fields:F(r.object({[bj.name]:w({fieldName:bj.name})})),output_fields:P(r.object({[xj.name]:D({fieldName:xj.name}),[Sj.name]:D({fieldName:Sj.name})}))}).optional()}),Ej=e=>R(G(bj,e)),Dj={"person-personalemail-profileurl-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`},"person-personalemail-profileurl-waterfall-v1-mixrank":{provider:`mixrank`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`}},Oj=class extends B{pipeId=yj;payload;payloadSchema=Tj;billableOperations=Dj;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return Ej(this.payload.config)}getRawOutputFields(){return{[xj.name]:this.catalogOutput(xj,{isPrimaryOutput:!0}),[Sj.name]:this.catalogOutput(Sj)}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_personal_email_finder`,mixrank:`mixrank-person-match`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},kj=Tj,Aj={pipeId:yj,basePipe:U(yj),allowedUserConnectionProviders:Cj,managedProviders:Cj,deprecatedProviders:[],label:`Personal email from LinkedIn`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find the personal email address of a prospect by using a professional profile URL as input.`,tags:[V.EMAIL,V.PERSONAL_EMAIL],keywords:[`gmail`,`private`,`consumer`,`contact`],docPath:W(yj),billableOperations:Dj,defaultInputRequirement:Ej(null),inputFieldMode:`static`,outputFieldMode:`static`,defaultPayload:{pipe_id:yj,connector:null,run_if:null,config:{providers:wj,input_fields:{profile_url:{alias:``}},output_fields:{personal_email:{alias:``,enabled:!0},alternate_personal_emails:{alias:``,enabled:!1}}}}},jj=g(`profile_url`),Mj=g(`post_list_string`),Nj=g(`crustdata_post_list`),Pj=`person:posts:content:crustdata@1`,Fj=r.object({pipe_id:r.literal(Pj),run_if:b(),connector:C(),config:r.object({limit:Eu({path:`config.limit`,groupPath:`config.general`,max:100,min:1,sectionKey:`general`,info:``,label:`Limit`,legend:`Max. 100`}),input_fields:F(r.object({[jj.name]:w({fieldName:jj.name})})),output_fields:P(r.object({[Mj.name]:D({fieldName:Mj.name}),[Nj.name]:D({fieldName:Nj.name})}))}).optional()}),Ij=e=>R(G(jj,e)),Lj={"person-posts-crustdata-v1-crustdata":{allowManagedConnection:!0,credits:{default:2,level1:{credits:1,weight:1}},mode:`onSuccess`,note:`1.5 credits per post. Posts are fetched in increments of 5.`,provider:`crustdata`}},Rj=class extends B{pipeId=Pj;payload;payloadSchema=Fj;billableOperations=Lj;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`person-posts-crustdata-v1-crustdata`)}getInputRequirement(){return Ij(this.payload.config)}getRawOutputFields(){return{[Mj.name]:this.catalogOutput(Mj),[Nj.name]:this.catalogOutput(Nj)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_realtime_post_fetch`,allowManagedConnection:!0}]}},zj=Fj,Bj={pipeId:Pj,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Pj),label:`LinkedIn posts`,executionMode:`single`,categories:[`people_data`],lifecycle:null,description:`Find list of recent LinkedIn posts.`,tags:[V.LINKEDIN],keywords:[`activity`,`content`,`social`,`updates`,`engagement`,`feed`],docPath:W(Pj),billableOperations:Lj,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:Ij(null),defaultPayload:{pipe_id:Pj,connector:null,run_if:null,config:{limit:5,input_fields:{profile_url:{alias:``}},output_fields:{crustdata_post_list:{alias:``,enabled:!0},post_list_string:{alias:``,enabled:!0}}}}},Vj=`person:profile:waterfall@2`,Hj=g(`person_profile_match`),Uj=g(`primary_job_title`),Wj=g(`primary_seniority`),Gj=g(`primary_company_domain`),Kj=g(`profile_url`),qj=[`crustdata`,`amplemarket`,`prospeo`],Jj=[{provider:`crustdata`},{provider:`amplemarket`},{provider:`prospeo`}],Yj=r.object({pipe_id:r.literal(Vj),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,availableProviders:qj,defaultProviders:Jj}),input_fields:F(r.object({[Kj.name]:w({fieldName:Kj.name})})),output_fields:P(r.object({[Hj.name]:D({fieldName:Hj.name}),[Uj.name]:D({fieldName:Uj.name}),[Wj.name]:D({fieldName:Wj.name}),[Gj.name]:D({fieldName:Gj.name})}))}).optional()}),Xj=e=>R(G(Kj,e)),Zj={"person-profile-waterfall-v2-crustdata":{provider:`crustdata`,credits:{default:2,level1:{credits:1,weight:1}},mode:`onSuccess`,allowManagedConnection:!0},"person-profile-waterfall-v2-amplemarket":{provider:`amplemarket`,credits:{default:1,level1:{credits:.5,weight:1}},mode:`onSuccess`,allowManagedConnection:!0},"person-profile-waterfall-v2-prospeo":{provider:`prospeo`,credits:{default:1,level1:{credits:.5,weight:1}},mode:`onSuccess`,allowManagedConnection:!0}},Qj=class extends B{pipeId=Vj;payload;payloadSchema=Yj;billableOperations=Zj;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return Xj(this.payload.config)}getRawOutputFields(){return{[Hj.name]:this.catalogOutput(Hj,{isPrimaryOutput:!0}),[Uj.name]:this.catalogOutput(Uj),[Wj.name]:this.catalogOutput(Wj),[Gj.name]:this.catalogOutput(Gj)}}getConnectionsRequirements(){let e={crustdata:`crustdata_realtime_person_enrich`,amplemarket:`amplemarket-person-reveal`,prospeo:`prospeo_social_profile_lookup`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},$j=Yj,eM={pipeId:Vj,basePipe:U(Vj),label:`Full LinkedIn profile`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find a standardized JSON representation of a LinkedIn profile.`,docPath:W(Vj),tags:[V.LINKEDIN,V.WATERFALL],keywords:[`enrich`,`enrichment`,`json`,`scrape`,`bio`,`experience`,`education`],managedProviders:qj,deprecatedProviders:[],allowedUserConnectionProviders:qj,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:Zj,defaultInputRequirement:Xj(null),defaultPayload:{pipe_id:Vj,run_if:null,connector:null,config:{providers:Jj,input_fields:{profile_url:{alias:``}},output_fields:{person_profile_match:{alias:``,enabled:!0},primary_job_title:{alias:``,enabled:!0},primary_seniority:{alias:``,enabled:!0},primary_company_domain:{alias:``,enabled:!0}}}}},tM=g(`work_email`),nM=g(`crustdata_person_match`),rM=g(`crustdata_profile_match_score`),iM=`person:profile:workemail:crustdata@1`,aM=r.object({pipe_id:r.literal(iM),run_if:b(),connector:C(),config:r.object({input_fields:F(r.object({[tM.name]:w({fieldName:tM.name})})),output_fields:P(r.object({[nM.name]:D({fieldName:nM.name}),[rM.name]:D({fieldName:rM.name})}))}).optional()}),oM=e=>R(G(tM,e)),sM={"person-profile-workemail-crustdata-v1-crustdata":{allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`,provider:`crustdata`}},cM=class extends B{pipeId=iM;payload;payloadSchema=aM;billableOperations=sM;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`person-profile-workemail-crustdata-v1-crustdata`)}getInputRequirement(){return oM(this.payload.config)}getRawOutputFields(){return{[nM.name]:this.catalogOutput(nM),[rM.name]:this.catalogOutput(rM)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_realtime_person_enrich`,allowManagedConnection:!0}]}},lM=aM,uM={pipeId:iM,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(iM),label:`Profile from work email`,executionMode:`single`,categories:[`people_data`],lifecycle:null,description:`Find person profile by their work email address.`,tags:[V.EMAIL,V.PEOPLE_PROFILES],keywords:[`enrich`,`enrichment`,`reverse lookup`,`linkedin`,`person`],docPath:W(iM),billableOperations:sM,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:oM(null),defaultPayload:{pipe_id:iM,connector:null,run_if:null,config:{input_fields:{work_email:{alias:``}},output_fields:{crustdata_person_match:{alias:``,enabled:!0},crustdata_profile_match_score:{alias:``,enabled:!0}}}}},dM=`person:profileurl:email:waterfall@1`,fM=g(`email`),pM=g(`work_email`),mM=g(`profile_url`),hM=[`leadmagic`],gM=[{provider:`leadmagic`}],_M=r.object({pipe_id:r.literal(dM),run_if:b(),connector:C(),config:r.object({providers:T({sectionKey:`general`,defaultProviders:gM,availableProviders:hM}),input_fields:F(r.object({[fM.name]:w({fieldName:fM.name}),[pM.name]:w({fieldName:pM.name})})),output_fields:P(r.object({[mM.name]:D({fieldName:mM.name})}))}).optional()}),vM=e=>gd(G(fM,e),G(pM,e)),yM={"person-profileurl-email-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:3.5},mode:`onSuccess`}},bM=class extends B{pipeId=dM;payload;payloadSchema=_M;billableOperations=yM;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return vM(this.payload.config)}getRawOutputFields(){return{[mM.name]:this.catalogOutput(mM,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_to_b2b_profile`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},xM=_M,SM={pipeId:dM,basePipe:U(dM),managedProviders:hM,deprecatedProviders:[],allowedUserConnectionProviders:hM,label:`LinkedIn URL from email`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find the URL for a prospect's LinkedIn profile from their personal or professional email address.`,guide:`Reverse email → LinkedIn profile URL, nothing else. Unless the user specifically asks for a URL-only lookup, FAVOR person:identity:email:waterfall@2: same email input, also resolves profile_url, plus the full standardized person_profile_match JSON profile (employment and education history, seniority, location) in one call — the richer grounding almost every downstream flow (profile enrichment, CRM match) needs anyway. Reach for THIS pipe when the profile URL is genuinely the only thing wanted.`,tags:[V.LINKEDIN],keywords:[`profile`,`reverse lookup`,`social`,`person`],docPath:W(dM),billableOperations:yM,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:vM(null),defaultPayload:{pipe_id:dM,run_if:null,connector:null,config:{providers:gM,input_fields:{email:{alias:``},work_email:{alias:``}},output_fields:{profile_url:{alias:``,enabled:!0}}}}},CM=`person:profileurl:name@1`,wM=g(`name`),TM=g(`company_name`),EM=g(`location_hint`),DM=g(`profile_url`),OM=r.object({pipe_id:r.literal(CM),connector:ql(),run_if:b(),config:r.object({input_fields:F(r.object({[wM.name]:w({fieldName:wM.name}),[TM.name]:w({fieldName:TM.name}),[EM.name]:w({fieldName:EM.name})})),output_fields:P(r.object({[DM.name]:D({fieldName:DM.name})}))}).optional()}),kM=e=>z(R(G(wM,e)),R(G(TM,e)),_d(G(EM,e))),AM={"person-profileurl-name-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:.6},mode:`always`}},jM=class extends B{pipeId=CM;payload;payloadSchema=OM;billableOperations=AM;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`person-profileurl-name-v1-pipe0`)}getInputRequirement(){return kM(this.payload.config)}getRawOutputFields(){return{[DM.name]:this.catalogOutput(DM)}}getConnectionsRequirements(){return[{provider:`serper`,rateLimitRatio:1,rateLimitOperation:`serper_search`,allowManagedConnection:!0}]}},MM=OM,NM={pipeId:CM,basePipe:U(CM),label:`LinkedIn URL from name`,executionMode:`single`,categories:[`people_data`],lifecycle:null,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],description:`Find the LinkedIn profile URL by using the prospect's name as input.`,docPath:W(CM),tags:[V.LINKEDIN],keywords:[`profile`,`social`,`lookup`,`person`],billableOperations:AM,defaultInputRequirement:kM(null),inputFieldMode:`static`,outputFieldMode:`static`,defaultPayload:{pipe_id:CM,connector:void 0,run_if:null,config:{input_fields:{company_name:{alias:``},location_hint:{alias:``},name:{alias:``}},output_fields:{profile_url:{alias:``,enabled:!0}}}}},PM=`person:workemail:profileurl:waterfall@1`,FM=g(`profile_url`),IM=g(`work_email`),LM=g(`email_validation_status`),RM=[`hunter`,`amplemarket`,`findymail`,`leadmagic`,`crustdata`],zM=[{provider:`hunter`},{provider:`amplemarket`},{provider:`leadmagic`},{provider:`findymail`},{provider:`crustdata`}],BM=r.object({pipe_id:r.literal(PM),connector:C(),run_if:b(),config:r.object({providers:T({availableProviders:RM,defaultProviders:zM,sectionKey:`general`}),allow_catch_all_emails:E({path:`config.allow_catch_all_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,info:``,label:`Allow catch-all emails`}),allow_risky_emails:E({path:`config.allow_risky_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,info:`Higher chance of bouncing or being marked as spam.`,label:`Allow risky emails`}),input_fields:F(r.object({[FM.name]:w({fieldName:FM.name})})),output_fields:P(r.object({[IM.name]:D({fieldName:IM.name}),[LM.name]:D({fieldName:LM.name})}))}).optional()}),VM=e=>R(G(FM,e)),HM={"person-workemail-profileurl-waterfall-v1-hunter":{provider:`hunter`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`},"person-workemail-profileurl-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2,level1:{credits:.7,weight:1}},mode:`onSuccess`},"person-workemail-profileurl-waterfall-v1-findymail":{provider:`findymail`,allowManagedConnection:!0,credits:{default:2,level1:{credits:1,weight:1}},mode:`onSuccess`},"person-workemail-profileurl-waterfall-v1-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:3,level1:{credits:2,weight:1}},mode:`onSuccess`},"person-workemail-profileurl-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:2.5,level1:{credits:1.5,weight:1}},mode:`onSuccess`}},UM=class extends B{pipeId=PM;payload;payloadSchema=BM;billableOperations=HM;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return VM(this.payload.config)}getRawOutputFields(){return{[IM.name]:this.catalogOutput(IM,{isPrimaryOutput:!0}),[LM.name]:this.catalogOutput(LM,{isPrimaryOutput:!1})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_b2b_lookup`,hunter:`prospeo_email_lookup`,amplemarket:`amplemarket-person-reveal`,findymail:`findymail_email_b2b_lookup`,crustdata:`crustdata_realtime_person_enrich`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},WM=BM,GM={pipeId:PM,basePipe:U(PM),label:`Work email from LinkedIn URL`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find work email addresses from B2B profile.`,tags:[V.EMAIL,V.WORK_EMAIL,V.WATERFALL],keywords:[`business email`,`b2b`,`corporate`,`contact`],docPath:W(PM),managedProviders:RM,allowedUserConnectionProviders:RM,deprecatedProviders:[],inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:HM,defaultInputRequirement:VM(null),defaultPayload:{pipe_id:PM,connector:null,run_if:null,config:{providers:zM,allow_catch_all_emails:!0,allow_risky_emails:!0,input_fields:{profile_url:{alias:``}},output_fields:{work_email:{alias:``,enabled:!0},email_validation_status:{alias:``,enabled:!1}}}}},KM=`person:workemail:waterfall@1`,qM=g(`name`),JM=g(`company_domain`),YM=g(`company_name`),XM=g(`work_email`),ZM=g(`email_validation_status`),QM=[`leadmagic`,`prospeo`,`amplemarket`,`hunter`,`icypeas`,`findymail`],$M=[`icypeas`],eN=[{provider:`leadmagic`},{provider:`prospeo`},{provider:`amplemarket`},{provider:`hunter`},{provider:`findymail`}],tN={"person-workemail-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:.5,level1:{credits:.25,weight:1}},mode:`onSuccess`},"person-workemail-waterfall-v1-icypeas":{provider:`icypeas`,allowManagedConnection:!0,credits:{default:.5,level1:{credits:.25,weight:1}},mode:`onSuccess`},"person-workemail-waterfall-v1-prospeo":{provider:`prospeo`,allowManagedConnection:!0,credits:{default:1,level1:{credits:.5,weight:1}},mode:`onSuccess`},"person-workemail-waterfall-v1-findymail":{provider:`findymail`,allowManagedConnection:!0,credits:{default:1.5,level1:{credits:.75,weight:1}},mode:`onSuccess`},"person-workemail-waterfall-v1-hunter":{provider:`hunter`,allowManagedConnection:!0,credits:{default:1.3,level1:{credits:.75,weight:1}},mode:`onSuccess`},"person-workemail-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:3,level1:{credits:2,weight:1}},mode:`onSuccess`}},nN=r.object({pipe_id:r.literal(KM),connector:C(),run_if:b(),config:r.object({providers:T({availableProviders:QM,defaultProviders:eN,deprecatedProviders:$M,sectionKey:`general`,providerCredits:Ed(tN,QM)}),allow_catch_all_emails:E({path:`config.allow_catch_all_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,info:`Catch-alls appear valid but remain undeliverable-risk.`,label:`Allow catch-all emails`}),allow_risky_emails:E({path:`config.allow_risky_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,info:`DNS configuration and spam reputation may flag emails as high-risk.`,label:`Allow risky emails`}),input_fields:F(r.object({[qM.name]:w({fieldName:qM.name}),[JM.name]:w({fieldName:JM.name}),[YM.name]:w({fieldName:YM.name})})),output_fields:P(r.object({[XM.name]:D({fieldName:XM.name}),[ZM.name]:D({fieldName:ZM.name})}))}).optional()}),rN=e=>z(R(G(qM,e)),R(G(JM,e))),iN=class extends B{pipeId=KM;payload;payloadSchema=nN;billableOperations=tN;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return this.payload.config?.providers.map(e=>e.provider)||[]}estimateBillableOperations(e){return H(e,...this.getProviderNames().map(e=>X(e,this.billableOperations).billableOperation))}getInputRequirement(){return rN(this.payload.config)}getRawOutputFields(){return{[XM.name]:this.catalogOutput(XM,{isPrimaryOutput:!0}),[ZM.name]:this.catalogOutput(ZM,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,prospeo:`prospeo_email_lookup`,icypeas:`icypeas_email_lookup`,findymail:`findymail_email_lookup`,hunter:`hunter_email_finder`,amplemarket:`amplemarket-person-reveal`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},aN=nN,oN={pipeId:KM,basePipe:U(KM),label:`Work email from name`,executionMode:`waterfall`,categories:[`people_data`],lifecycle:null,description:`Find work email addresses in a waterfall motion.`,tags:[V.EMAIL,V.WORK_EMAIL,V.WATERFALL],keywords:[`business email`,`b2b`,`corporate`,`contact`],docPath:W(KM),managedProviders:QM,deprecatedProviders:$M,allowedUserConnectionProviders:QM,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:tN,defaultInputRequirement:rN(null),defaultPayload:{pipe_id:KM,connector:null,run_if:null,config:{providers:eN,allow_catch_all_emails:!0,allow_risky_emails:!0,input_fields:{company_name:{alias:``},company_domain:{alias:``},name:{alias:``}},output_fields:{work_email:{alias:``,enabled:!0},email_validation_status:{alias:``,enabled:!1}}}}},sN=`prompt:run@1`,cN=`prompt-run-v1`,lN=Xc(cN),uN=r.object({pipe_id:r.literal(sN),connector:C(),run_if:b(),config:r.object({prompt:Wl({sectionKey:`general`,path:`config.prompt`,placeholder:J(`prompt`),groupPath:`config.prompt`,supportedTags:[`input`,`output`]}),model:wu({sectionKey:`general`,label:`Model`,path:`config.model`,groupPath:`config.prompt`,billableOperations:lN,defaultValue:Bc})})}),dN=class extends B{pipeId=sN;payload;payloadSchema=uN;billableOperations=lN;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return Uc(this.payload.config.model)}estimateBillableOperations(e){return Qc(e,{model:this.payload.config.model,prefix:cN,inputTokens:600,outputTokens:800})}getInputRequirement(){return ep([this.payload.config.prompt.template])}getSecretRequirements(){return q([this.payload.config.prompt.template])}getConstantRequirements(){return tp([this.payload.config.prompt.template])}getRawOutputFields(){let e=this.payload.config.prompt.template,t=this.payload.config.prompt.json_schemas??{},n={},r;try{r=ec(e)}catch{return n}for(let e of r.outputs){let r=e.type;if(r===`json`){let i=e.schemaRef?t[e.schemaRef]:void 0;n[e.name]={enabled:!0,name:e.name,label:e.name,resolvedName:e.name,type:r,description:e.description,jsonMeta:{zodSchema:i,exampleValue:null},format:null,isCatalogFIeld:!1,isPrimaryOutput:!1}}else n[e.name]={enabled:!0,name:e.name,label:e.name,resolvedName:e.name,type:r,description:e.description,jsonMeta:null,format:e.format??null,isCatalogFIeld:!1,isPrimaryOutput:!1}}return n}getConnectionsRequirements(){return Wc(this.payload.config.model)}},fN=uN,pN={pipeId:sN,inputFieldMode:`config`,outputFieldMode:`config`,basePipe:U(sN),label:`AI prompt`,executionMode:`single`,categories:[`actions`,`tools`],lifecycle:null,description:`Executes configurable AI prompts with structured output fields.`,guide:`General-purpose AI prompt runner. Inputs and outputs are fully dynamic — defined by the tags in the prompt template. For extracting a value from a JSON / known-schema field, do NOT use this — use the deterministic json:extract:multi@1 (JSONata) instead: it's cheaper, reproducible, and runs on a schedule with no model. Reserve prompt:run@1 for genuine judgment or free-text generation (classify, summarize, rewrite).`,tags:[V.AI],keywords:[`llm`,`gpt`,`chatgpt`,`openai`,`generate`,`classify`,`extract`],docPath:W(sN),defaultInputRequirement:null,billableOperations:lN,allowedUserConnectionProviders:Gc(),managedProviders:Gc(),deprecatedProviders:[],defaultPayload:{pipe_id:sN,connector:null,run_if:null,config:{model:Bc,prompt:{template:``,json_schemas:{}}}}},mN=g(`salesforce_record_id`),hN=g(`salesforce_record_created`),gN=g(`salesforce_record_match`),_N=`record:assert:salesforce@1`,vN=r.object({pipe_id:r.literal(_N),run_if:b(),connector:S(),config:r.object({object:ku({sectionKey:`general`,required:!0,label:`Object`,groupPath:`config.general`,path:`config.object`,info:`Standard and custom objects the connected user can create/update.`,enabledIf:_(`salesforce`),optionsDef:Ud({updateableOnly:!0})}),external_id_field:ku({sectionKey:`general`,required:!0,label:`External ID field`,groupPath:`config.general`,path:`config.external_id_field`,info:`The object's External-ID field anchoring the upsert (fields marked External ID in Setup). If the picker is empty, the object has none — create one in Setup; it is the ecosystem-standard idempotency anchor.`,enabledIf:_(`salesforce`),optionsDef:Wd}),external_id_value:x({sectionKey:`general`,label:`External ID value`,inputType:`text`,expectedTagType:`string`,expectedTagFormat:`text`,groupPath:`config.general`,path:`config.external_id_value`,placeholder:`{{ company_domain }}`,info:"The value to match/create on — a literal or a `{{ column }}` reference."}),values:hu({sectionKey:`general`,groupPath:`config.general`,path:`config.values`,label:`Field values`,info:`Field = the Salesforce API name. Include every field required at create (e.g. Name on Account, LastName+Company on Lead) — a create with missing required fields fails and names them. Blank values are skipped, never cleared.`,keyLabel:`Field API name`,valueLabel:`Value`,keyPlaceholder:`Name`,valuePlaceholder:`{{ company_name }}`,maxKeys:50}),bypass_duplicate_alerts:E({sectionKey:`general`,defaultValue:!1,label:`Bypass duplicate alerts`,groupPath:`config.general`,path:`config.bypass_duplicate_alerts`,info:`Acknowledge ALERT-mode duplicate rules and save anyway. BLOCK-mode rules can never be bypassed — those errors list the matching records.`}),output_fields:P(r.object({[mN.name]:D({fieldName:mN.name}),[hN.name]:D({fieldName:hN.name}),[gN.name]:D({fieldName:gN.name})}))}).check(e=>{let t=e.value;for(let n of Object.keys(t.values??{})){let t=n.trim();if(!t)continue;let r=t=>e.issues.push({code:`custom`,input:n,message:t,path:[`values`,n]});if(t.includes(`{{`)){r("Field name must be a literal API name (no `{{ }}` templating).");continue}if(t.includes(`.`)){r(`Invalid field name "${t}" — dotted paths cannot be written; set the lookup ID field (e.g. AccountId) instead.`);continue}/^[a-zA-Z][a-zA-Z0-9_]*$/.test(t)||r(`Invalid Salesforce field name "${t}" — API names are letters, digits, and underscores (custom fields end in __c).`)}})}),yN={"record-assert-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},bN=class extends B{pipeId=_N;payload;payloadSchema=vN;billableOperations=yN;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`salesforce`]}estimateBillableOperations(e){return H(e,`record-assert-salesforce-v1-salesforce`)}getTemplates(){return[this.payload.config.external_id_value,...Object.values(this.payload.config.values??{})].filter(e=>!!e)}getInputRequirement(){return z(...$d(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[mN.name]:this.catalogOutput(mN),[hN.name]:this.catalogOutput(hN),[gN.name]:this.catalogOutput(gN)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return ef(e,{objects:[Qd(this.payload.config.object)||`Account`],writableOnly:!0})}},xN=vN,SN={pipeId:_N,inputFieldMode:`config`,outputFieldMode:`static`,basePipe:U(_N),label:`Salesforce assert record`,executionMode:`single`,categories:[`actions`,`integrations`],lifecycle:null,description:"Create-or-update (upsert) a Salesforce record anchored on an External ID field — Salesforce's native idempotent write. One matching record updates, none creates; `created` says which happened.",tags:[V.FIELDS],keywords:[`crm`,`sfdc`,`upsert`,`create`,`write`,`sync`,`idempotent`],docPath:W(_N),guide:"The upsert is anchored on the External-ID field: no match creates, one match updates, MULTIPLE matches fail with the record IDs and write nothing (resolve duplicates or use record:update). On the create path Salesforce enforces required fields (the error names them) and duplicate rules may block the save (`bypass_duplicate_alerts` acknowledges ALERT-mode rules only). Call get_provider_context for the object's writable fields; blanks skip, never clear. `salesforce_record_created` = true means a new record — the fresh record rides the output JSON.",billableOperations:yN,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:z(),defaultPayload:{pipe_id:_N,connector:{strategy:`first`,connections:[]},run_if:null,config:{object:`Account`,external_id_field:``,external_id_value:`{{ company_domain }}`,values:{},bypass_duplicate_alerts:!1,output_fields:{salesforce_record_id:{alias:``,enabled:!0},salesforce_record_created:{alias:``,enabled:!0},salesforce_record_match:{alias:``,enabled:!0}}}}},CN=g(`attio_record_id`),wN=g(`attio_record_found`),TN=g(`attio_record_match`),EN=`record:lookup:attio@1`,DN=r.object({pipe_id:r.literal(EN),run_if:b(),connector:S(),config:r.object({object:ku({sectionKey:`general`,required:!0,label:`Object`,groupPath:`config.general`,path:`config.object`,info:`Standard objects plus this workspace's custom objects — all objects work.`,enabledIf:_(`attio`),optionsDef:xf}),input_fields:F(r.object({[CN.name]:w({fieldName:CN.name})})),output_fields:P(r.object({[wN.name]:D({fieldName:wN.name}),[TN.name]:D({fieldName:TN.name})}))})}),ON=e=>R(G(CN,e)),kN={"record-lookup-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},AN=class extends B{pipeId=EN;payload;payloadSchema=DN;billableOperations=kN;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`record-lookup-attio-v1-attio`)}getInputRequirement(){return ON(this.payload.config)}getRawOutputFields(){return{[wN.name]:this.catalogOutput(wN),[TN.name]:this.catalogOutput(TN)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_generic`,allowManagedConnection:!1}]}async getAgentContext(e){let t=this.payload.config.object,n=Array.isArray(t)?t[0]??``:t;return jf(e,{objects:n?[n]:`discover`})}},jN=DN,MN={pipeId:EN,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(EN),label:`Attio lookup record`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Fetch one Attio record of any object (custom objects included) by its record ID — the full record with every attribute. A missing record completes with found = false.`,tags:[V.NEW],keywords:[`crm`,`get`,`fetch`,`by id`,`custom object`,`read`],docPath:W(EN),guide:"Map the record's Attio ID into the `attio_record_id` input — typically chained from a match pipe or search that outputs it. The output JSON carries ALL of the record's attribute values under `values` (id and deep-link url beside them) — extract specific attributes with json:extract downstream. found = false is a successful result. Works on every object in the workspace, custom objects included.",billableOperations:kN,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:ON(null),defaultPayload:{pipe_id:EN,connector:{strategy:`first`,connections:[]},run_if:null,config:{object:`people`,input_fields:{attio_record_id:{alias:``}},output_fields:{attio_record_found:{alias:``,enabled:!0},attio_record_match:{alias:``,enabled:!0}}}}},NN=g(`salesforce_record_id`),PN=g(`salesforce_record_found`),FN=g(`salesforce_record_match`),IN=`record:lookup:salesforce@1`,LN=r.object({pipe_id:r.literal(IN),run_if:b(),connector:S(),config:r.object({object:ku({sectionKey:`general`,required:!0,label:`Object`,groupPath:`config.general`,path:`config.object`,info:`Standard and custom objects the connected user can query.`,enabledIf:_(`salesforce`),optionsDef:Ud()}),input_fields:F(r.object({[NN.name]:w({fieldName:NN.name})})),output_fields:P(r.object({[PN.name]:D({fieldName:PN.name}),[FN.name]:D({fieldName:FN.name})}))})}),RN=e=>R(G(NN,e)),zN={"record-lookup-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},BN=class extends B{pipeId=IN;payload;payloadSchema=LN;billableOperations=zN;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`salesforce`]}estimateBillableOperations(e){return H(e,`record-lookup-salesforce-v1-salesforce`)}getInputRequirement(){return RN(this.payload.config)}getRawOutputFields(){return{[PN.name]:this.catalogOutput(PN),[FN.name]:this.catalogOutput(FN)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return ef(e,{objects:[Qd(this.payload.config.object)||`Contact`]})}},VN=LN,HN={pipeId:IN,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(IN),label:`Salesforce record lookup`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Fetch a full Salesforce record (any standard or custom object) by its record ID — every field visible to the connected user. A deleted or missing record completes with found = false.`,tags:[V.FIELDS],keywords:[`crm`,`sfdc`,`read`,`fetch`,`get`,`record`,`custom object`],docPath:W(IN),guide:"The record-ID input consumes `salesforce_record_id`, which every Salesforce surface emits — chain from a match pipe or search (alias it to point at a differently named column). Returns ALL fields the connected user can see, nested under `record` in the output JSON — fields hidden by field-level security are silently absent. found = false (deleted/missing id) is a successful result.",billableOperations:zN,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:RN(null),defaultPayload:{pipe_id:IN,connector:{strategy:`first`,connections:[]},run_if:null,config:{object:`Contact`,input_fields:{salesforce_record_id:{alias:``}},output_fields:{salesforce_record_found:{alias:``,enabled:!0},salesforce_record_match:{alias:``,enabled:!0}}}}},UN=g(`attio_record_found`),WN=g(`attio_record_id`),GN=g(`attio_record_match`),KN=`record:match:attio@1`,qN=r.object({pipe_id:r.literal(KN),run_if:b(),connector:S(),config:r.object({object:ku({sectionKey:`general`,required:!0,label:`Object`,groupPath:`config.general`,path:`config.object`,info:`Standard objects plus this workspace's custom objects — all objects work.`,enabledIf:_(`attio`),optionsDef:xf}),matching_attribute:ku({sectionKey:`general`,required:!0,label:`Matching attribute`,groupPath:`config.general`,path:`config.matching_attribute`,info:`The object's UNIQUE attributes — one value maps to at most one record. Deals have none by default (find them via deal:match instead); custom objects list their own unique attributes.`,enabledIf:_(`attio`),optionsDef:Of(`object`)}),value:x({sectionKey:`general`,label:`Value`,inputType:`text`,expectedTagType:`string`,expectedTagFormat:`text`,groupPath:`config.general`,path:`config.value`,placeholder:`{{ serial_number }}`,info:"The value to match — a literal or a `{{ column }}` reference. Matched exactly against the unique attribute."}),output_fields:P(r.object({[UN.name]:D({fieldName:UN.name}),[WN.name]:D({fieldName:WN.name}),[GN.name]:D({fieldName:GN.name})}))})}),JN=e=>{let t=new Set;for(let n of e)if(n)try{let e=ec(n);for(let n of Object.keys(e.inputs))t.add(n)}catch{}return[...t].map(e=>_d({name:e,resolvedName:e,label:e,description:``,type:t=>Ld(t,e)?.type||`string`,format:null}))},YN={"record-match-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},XN=class extends B{pipeId=KN;payload;payloadSchema=qN;billableOperations=YN;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`record-match-attio-v1-attio`)}getTemplates(){return[this.payload.config.value].filter(e=>!!e)}getInputRequirement(){return z(...JN(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[UN.name]:this.catalogOutput(UN),[WN.name]:this.catalogOutput(WN),[GN.name]:this.catalogOutput(GN)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_query`,allowManagedConnection:!1}]}async getAgentContext(e){let t=this.payload.config.object,n=Array.isArray(t)?t[0]??``:t;return jf(e,{objects:n?[n]:`discover`})}},ZN=qN,QN={pipeId:KN,inputFieldMode:`config`,outputFieldMode:`static`,basePipe:U(KN),label:`Attio match record`,executionMode:`single`,categories:[`integrations`],lifecycle:null,description:`Find one record of ANY Attio object (custom objects included) by a unique attribute — the generic find-by-key. A clean miss completes with found = false.`,tags:[V.NEW],keywords:[`crm`,`find`,`exists`,`unique`,`key`,`custom object`,`dedupe`],docPath:W(KN),guide:`Call get_provider_context first — it lists each object's unique attributes (the legal match targets). For people/companies prefer the typed person:match/company:match pipes (identity defaults + richer envelopes); use this for custom objects, users/workspaces, or custom unique attributes. Matching is exact; found = false is a successful result. Chain attio_record_id into record:update:attio@1.`,billableOperations:YN,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:z(),defaultPayload:{pipe_id:KN,connector:{strategy:`first`,connections:[]},run_if:null,config:{object:`people`,matching_attribute:`email_addresses`,value:`{{ email }}`,output_fields:{attio_record_found:{alias:``,enabled:!0},attio_record_id:{alias:``,enabled:!0},attio_record_match:{alias:``,enabled:!0}}}}},$N=g(`attio_record_id`),eP=g(`attio_update_result`),tP=`record:update:attio@1`,nP=r.object({pipe_id:r.literal(tP),run_if:b(),connector:S(),config:r.object({object:ku({sectionKey:`general`,required:!0,label:`Object`,groupPath:`config.general`,path:`config.object`,info:`Standard objects plus this workspace's custom objects — all objects work.`,enabledIf:_(`attio`),optionsDef:xf}),input_fields:F(r.object({[$N.name]:w({fieldName:$N.name})})),values:hu({sectionKey:`general`,groupPath:`config.general`,path:`config.values`,label:`Attribute values`,info:"Attribute = the Attio api_slug (e.g. `job_title`, custom attributes too). In the Value column, type `/` to insert a field reference. Select/status values are matched by TITLE (workspace-defined, never auto-created). Leave a value empty to skip that attribute for the row — blank values are skipped, never cleared.",keyLabel:`Attribute slug`,valueLabel:`Value`,keyPlaceholder:`job_title`,valuePlaceholder:`{{ job_title }}`,maxKeys:50}),multiselect_mode:Cu({sectionKey:`general`,required:!1,label:`Multiselect values`,groupPath:`config.general`,path:`config.multiselect_mode`,description:`Only affects multiselect attributes (e.g. domains, email_addresses, multi-selects): append adds the written value to the existing ones; overwrite replaces the full list.`,options:[{label:`Append`,value:`append`},{label:`Overwrite`,value:`overwrite`}]}).default(`append`),output_fields:P(r.object({[eP.name]:D({fieldName:eP.name})}))}).check(e=>{let t=e.value;for(let n of Object.keys(t.values??{})){let t=n.trim();if(!t)continue;let r=t=>e.issues.push({code:`custom`,input:n,message:t,path:[`values`,n]});if(t.includes(`{{`)){r("Attribute slug must be a literal api_slug (no `{{ }}` templating).");continue}/^[a-z][a-z0-9_]*$/.test(t)||r(`Invalid Attio attribute slug "${t}" — api_slugs are lowercase letters, digits, and underscores.`)}})}),rP=e=>{let t=new Set;for(let n of e)if(n)try{let e=ec(n);for(let n of Object.keys(e.inputs))t.add(n)}catch{}return[...t].map(e=>_d({name:e,resolvedName:e,label:e,description:``,type:t=>Ld(t,e)?.type||`string`,format:null}))},iP=e=>R(G($N,e)),aP={"record-update-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},oP=class extends B{pipeId=tP;payload;payloadSchema=nP;billableOperations=aP;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`record-update-attio-v1-attio`)}getTemplates(){return Object.values(this.payload.config.values??{}).filter(e=>!!e)}getInputRequirement(){return z(iP(this.payload.config),...rP(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[eP.name]:this.catalogOutput(eP)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_write`,allowManagedConnection:!1}]}async getAgentContext(e){let t=this.payload.config.object,n=Array.isArray(t)?t[0]??``:t;return jf(e,{objects:n?[n]:`discover`,writableOnly:!0})}},sP=nP,cP={pipeId:tP,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(tP),label:`Attio update record`,executionMode:`single`,categories:[`actions`,`integrations`],lifecycle:null,description:`Update an Attio record (standard or custom object) by its record ID, mapping columns to attributes. Blank values are skipped so un-enriched cells never erase CRM data.`,tags:[V.FIELDS],keywords:[`crm`,`write`,`sync`,`record`,`attribute`,`custom object`],docPath:W(tP),guide:"Resolve the record ID first (person:match/company:match/record:match → Update by ID is the canonical recipe) and map it into the `attio_record_id` input. Call get_provider_context for the selected object to see WRITABLE attributes and select/status titles — Attio rejects read-only (enriched) attributes and unknown option titles (workspace-defined, never auto-created). Value coercion is permissive: select/status by title, domains/emails as plain strings, workspace-member emails for actor references, record IDs for record references. 'Append vs overwrite' only affects multiselect attributes. Blank values are skipped, not cleared.",billableOperations:aP,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:iP(null),defaultPayload:{pipe_id:tP,connector:{strategy:`first`,connections:[]},run_if:null,config:{object:`people`,input_fields:{attio_record_id:{alias:``}},values:{},multiselect_mode:`append`,output_fields:{attio_update_result:{alias:``,enabled:!0}}}}},lP=g(`salesforce_record_id`),uP=g(`salesforce_update_result`),dP=`record:update:salesforce@1`,fP=(e,t)=>{let n=e.value;for(let r of Object.keys(n[t]??{})){let n=r.trim();if(!n)continue;let i=n=>e.issues.push({code:`custom`,input:r,message:n,path:[t,r]});if(n.includes(`{{`)){i("Field name must be a literal API name (no `{{ }}` templating).");continue}if(n.includes(`.`)){i(`Invalid field name "${n}" — dotted paths cannot be written; set the lookup ID field (e.g. AccountId) instead.`);continue}/^[a-zA-Z][a-zA-Z0-9_]*$/.test(n)||i(`Invalid Salesforce field name "${n}" — API names are letters, digits, and underscores (custom fields end in __c).`)}},pP=r.object({pipe_id:r.literal(dP),run_if:b(),connector:S(),config:r.object({object:ku({sectionKey:`general`,required:!0,label:`Object`,groupPath:`config.general`,path:`config.object`,info:`Standard and custom objects the connected user can update.`,enabledIf:_(`salesforce`),optionsDef:Ud({updateableOnly:!0})}),values:hu({sectionKey:`general`,groupPath:`config.general`,path:`config.values`,label:`Field values`,info:"Field = the Salesforce API name (`Title`, custom fields like `Lead_Score__c`). In the Value column, type `/` to insert a field reference. Blank values are skipped, never cleared. Restricted-picklist values must match existing entries exactly (case-sensitive); multi-select picklist writes REPLACE the whole set (semicolon-joined).",keyLabel:`Field API name`,valueLabel:`Value`,keyPlaceholder:`Title`,valuePlaceholder:`{{ job_title }}`,maxKeys:50}),bypass_duplicate_alerts:E({sectionKey:`general`,defaultValue:!1,label:`Bypass duplicate alerts`,groupPath:`config.general`,path:`config.bypass_duplicate_alerts`,info:`Acknowledge ALERT-mode duplicate rules and save anyway. BLOCK-mode rules can never be bypassed — those errors list the matching records.`}),input_fields:F(r.object({[lP.name]:w({fieldName:lP.name})})),output_fields:P(r.object({[uP.name]:D({fieldName:uP.name})}))}).check(e=>fP(e,`values`))}),mP=e=>R(G(lP,e)),hP={"record-update-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},gP=class extends B{pipeId=dP;payload;payloadSchema=pP;billableOperations=hP;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`salesforce`]}estimateBillableOperations(e){return H(e,`record-update-salesforce-v1-salesforce`)}getTemplates(){return Object.values(this.payload.config.values??{}).filter(e=>!!e)}getInputRequirement(){return z(mP(this.payload.config),...$d(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[uP.name]:this.catalogOutput(uP)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return ef(e,{objects:[Qd(this.payload.config.object)||`Contact`],writableOnly:!0})}},_P=pP,vP={pipeId:dP,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(dP),label:`Salesforce update record`,executionMode:`single`,categories:[`actions`,`integrations`],lifecycle:null,description:`Update a Salesforce record (standard or custom object) by its record ID, mapping columns to fields. Blank values are skipped so un-enriched cells never erase CRM data; the output carries the fresh post-save record.`,tags:[V.FIELDS],keywords:[`crm`,`sfdc`,`write`,`sync`,`field`,`custom object`],docPath:W(dP),guide:"The record-ID input consumes `salesforce_record_id`, which every Salesforce surface emits — chain from a match pipe (alias it to point at a differently named column). Call get_provider_context for the object's WRITABLE fields and picklist values — formula fields are read-only, restricted-picklist values are validated before the write (case-sensitive), and converted leads are read-only entirely (update the contact via ConvertedContactId instead). Duplicate rules may block the save; the error includes the admin's message and the matching record IDs, and `bypass_duplicate_alerts` acknowledges ALERT-mode rules only. Rows where every value renders blank skip the API call. Consume post-write values from the result JSON's `record` — formulas and triggers may rewrite fields after save.",billableOperations:hP,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:mP(null),defaultPayload:{pipe_id:dP,connector:{strategy:`first`,connections:[]},run_if:null,config:{object:`Contact`,values:{},bypass_duplicate_alerts:!1,input_fields:{salesforce_record_id:{alias:``}},output_fields:{salesforce_update_result:{alias:``,enabled:!0}}}}},yP=[{label:`demo-leads`,value:`demo-leads`},{label:`demo-companies`,value:`demo-companies`},{label:`demo-contacts`,value:`demo-contacts`}],bP=[{label:`Demo project`,value:`demo-project`},{label:`Sales pipeline`,value:`sales-pipeline`}];function xP(e){let t=e?.config?.project;return typeof t==`string`&&t.length>0?t:void 0}function SP(e){if(!e||e.conditions.length===0)return null;let t=JSON.stringify({logic:e.logic,conditions:e.conditions.map(e=>[e.field_name,e.operator,e.value])}),n=2166136261;for(let e=0;e<t.length;e++)n^=t.charCodeAt(e),n=Math.imul(n,16777619)>>>0;return n.toString(16).padStart(8,`0`)}function CP(e,t,n){let r=e=>e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,40),i=`rr--${r(e)}--${r(t)}`;return n?`${i}--f-${r(n)}`:i}function wP(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}const TP={requires:{connection:`pipe0`},enabledIf:_(`pipe0`,`Select a pipe0 connection to see sheet suggestions`),options:async({query:e,client:t,environment:n})=>n===`sandbox`?yP:t?(await t.sheets.list({query:e})).map(e=>({label:e.slug,value:e.slug})):[],widgets:{provider_logo:{provider:`pipe0`}}},EP={requires:{connection:`pipe0`,fields:[`config.project`]},enabledIf:_(`pipe0`,`Select a pipe0 connection to see sheet suggestions`),options:async({query:e,client:t,environment:n,payload:r})=>n===`sandbox`?yP:t?(await t.sheets.list({query:e,projectSlug:xP(r)})).map(e=>({label:e.slug,value:e.slug})):[],widgets:{provider_logo:{provider:`pipe0`}}},DP={requires:{connection:`pipe0`},enabledIf:_(`pipe0`,`Select a pipe0 connection to see project suggestions`),options:async({query:e,client:t,environment:n})=>n===`sandbox`?bP:t?(await t.projects.list({query:e})).map(e=>({label:e.name&&e.name!==e.slug?`${e.name} (${e.slug})`:e.slug,value:e.slug})):[],widgets:{provider_logo:{provider:`pipe0`}}},OP=[{value:`email`,label:`email`,data:{type:`string`,format:`email`}},{value:`name`,label:`name`,data:{type:`string`}},{value:`company`,label:`company`,data:{type:`string`}}],kP={"demo-leads":OP,"demo-companies":[{value:`domain`,label:`domain`,data:{type:`string`,format:`website_url`}},{value:`company_name`,label:`company_name`,data:{type:`string`}}],"demo-contacts":OP},AP=e=>({requires:{connection:`pipe0`,fields:[e.sheetPath]},enabledIf:_(`pipe0`,`Select a pipe0 connection to see column suggestions`),options:async({payload:t,client:n,environment:r})=>{let i=wP(t,e.sheetPath);return typeof i!=`string`||!i.trim()||i.includes(`{{`)?[]:r===`sandbox`?kP[i.trim()]??OP:n?(await n.sheets.fields({slug:i.trim()})).filter(t=>(e.includeJson||t.type!==`json`)&&t.name.toLowerCase()!==`id`).map(e=>({value:e.name,label:e.name,data:{type:String(e.type),...e.format?{format:String(e.format)}:{}}})):[]},widgets:{provider_logo:{provider:`pipe0`}}}),jP=`row:append:sheet@1`,MP=g(`sheet_record_id`),NP=g(`created_sheet`),PP=r.object({pipe_id:r.literal(jP),connector:S(),run_if:b(),config:r.object({project:x({label:`Project`,info:"Project the destination sheet lives in (its org-unique slug). Pick an existing project or type a new slug — a new project is created when `allow_entity_creation` is on.",groupPath:`config.general`,sectionKey:`general`,inputType:`text`,path:`config.project`,minLength:3,expectedTagType:`string`,expectedTagFormat:`text`,optionsDef:DP}),sheet:x({label:`Sheet ID`,info:'The destination sheet\'s identifier (its slug — NOT the display name). Slugs are org-unique: pick an existing sheet to append into it, or type a NEW slug to create one — a generic slug (e.g. "results", "companies") is likely to match an unrelated existing sheet, so for a new sheet use a short descriptive slug plus a few random chars (e.g. "ceos-x7k2") that can\'t collide. Type `@` to insert a field reference / `$` for a secret.',groupPath:`config.general`,sectionKey:`general`,inputType:`text`,path:`config.sheet`,minLength:3,expectedTagType:`string`,expectedTagFormat:`text`,optionsDef:EP,enabledIf:e=>e.config?.project?{disabled:!1}:{disabled:!0,message:`Select a project first`}}),run_added_rows:E({defaultValue:!0,groupPath:`config.advanced`,path:`config.run_added_rows`,sectionKey:`general`,description:`Auto-run the destination sheet's pipes over the row this pipe appended. A bounded onward chain is fine (the destination's own write pipes cascade further); auto-run is suppressed only when the destination's write chain could loop back into a sheet on the path.`,label:`Run added rows`}),allow_entity_creation:E({label:`Allow creating missing entities`,description:`Create missing fields, sheets, and projects as needed (unknown fields become columns; a missing sheet or project is created).`,defaultValue:!0,groupPath:`config.advanced`,path:`config.allow_entity_creation`,sectionKey:`general`}),write_fields:au({label:`Fields`,info:`All fields are written if empty. An entry's optional alias renames the destination column.`,groupPath:`config.general`,path:`config.write_fields`,sectionKey:`general`,disableSearch:!0}),output_fields:P(r.object({[MP.name]:D({fieldName:MP.name}),[NP.name]:D({fieldName:NP.name})}))})}).check(e=>{let t=e.value.config?.write_fields??[],n=t.map(e=>(e.alias?.trim()||e.field_name).toLowerCase());t.forEach((t,r)=>{let i=t.alias?.trim();i&&(dd(i)&&e.issues.push({code:`custom`,input:i,path:[`config`,`write_fields`,r,`alias`],message:`'${i}' is reserved and cannot be written to the destination sheet.`}),n.filter(e=>e===i.toLowerCase()).length>1&&e.issues.push({code:`custom`,input:i,path:[`config`,`write_fields`,r,`alias`],message:`'${i}' collides with another write_fields destination name.`}))})}),FP={"row-append-sheet-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},IP=class extends B{pipeId=jP;payload;payloadSchema=PP;billableOperations=FP;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`row-append-sheet-v1-pipe0`)}getInputRequirement(){let e=[ep([this.payload.config.project,this.payload.config.sheet],{expectedType:`string`})];if(this.payload.config.write_fields?.length)for(let t of this.payload.config.write_fields)e.push(R({name:t.field_name,resolvedName:t.field_name,label:``,description:``,type:e=>{let n=Ld(e,t.field_name);if(!n)throw Error(`Unable to find field with name ${t.field_name}. But needed by prompt parser.`);return n.type||`unknown`},format:null}));return z(...e)}getSecretRequirements(){return q([this.payload.config.project,this.payload.config.sheet])}getConstantRequirements(){return tp([this.payload.config.project,this.payload.config.sheet])}getRawOutputFields(){return{[MP.name]:this.catalogOutput(MP),[NP.name]:this.catalogOutput(NP)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_api_operation`,allowManagedConnection:!0}]}},LP=PP,RP={pipeId:jP,basePipe:U(jP),label:`Append row to sheet`,executionMode:`single`,categories:[`actions`,`tools`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:"Add rows to a pipe0 sheet in a given project. config.project and config.sheet may each be a literal slug or a `{{ field_name }}` tag.",guide:`Append records to another pipe0 sheet. config.project (REQUIRED) is the destination project's org-unique slug — when working inside a project, pass THAT project's slug (see CURRENT CONTEXT). config.sheet is the destination sheet's slug; both may be a \`{{ field }}\` tag for a per-row destination. config.write_fields is the destination's CONTRACT — list exactly the columns the destination consumes, and use an entry's optional alias to rename its destination column ({ field_name: "email", alias: "signup_email" } reads \`email\` from the source row and writes it as \`signup_email\`); EMPTY write_fields mirrors EVERY source column into the destination, which is almost never what a routing/handoff sheet wants. With allow_entity_creation on, a missing project/sheet (and unknown fields) are created; if the sheet slug already exists in a DIFFERENT project the rows fail. Destination slugs are ORG-UNIQUE, so config.sheet addresses a sheet across your whole org: an existing slug REUSES that sheet (appending into it) when it's in config.project, and FAILS when it lives elsewhere — so for a genuinely NEW sheet use a short descriptive slug plus 3-4 random alphanumeric chars (e.g. "ceos-x7k2") — you cannot see other projects' slugs, so only the random suffix makes a new slug collision-proof; set the display name afterwards (in-app via the name_workspace tool; via API with PATCH /v1/sheets/{sheet_id}). To explode a LIST field into MANY rows (denormalize a 1:N relationship), use row:expandappend:sheet@1 instead. To bulk-copy existing rows across sheets, prefer the rows:copy_to_sheet@1 effect. NON-IDEMPOTENT: each run appends again, so re-running duplicates rows (and you cannot undo rows written to another sheet) — dry-run the flow in sandbox first (env:change@1), and to retry after a partial failure adopt the succeeded cells (rows:adopt@1 with adopt_statuses:["completed"]) then rows:enrich@1. Requires a pipe0 connection (list_connections).`,docPath:W(jP),tags:[V.FIELDS],keywords:[`add`,`insert`,`write`,`push`,`export`],billableOperations:FP,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:jP,connector:{strategy:`first`,connections:[]},run_if:null,config:{project:``,sheet:``,run_added_rows:!0,allow_entity_creation:!0,write_fields:[],output_fields:{sheet_record_id:{alias:``,enabled:!0},created_sheet:{alias:``,enabled:!0}}}}},zP=`row:expandappend:sheet@1`,BP=g(`sheet_record_ids`),VP=g(`input_objects`),HP=`expanded_value`,UP=r.object({pipe_id:r.literal(zP),connector:S(),run_if:b(),config:r.object({project:x({label:`Project`,info:"Project the destination sheet lives in (its org-unique slug). Pick an existing project or type a new slug — a new project is created when `allow_entity_creation` is on.",groupPath:`config.general`,sectionKey:`general`,inputType:`text`,path:`config.project`,minLength:3,expectedTagType:`string`,expectedTagFormat:`text`,optionsDef:DP}),sheet:x({label:`Sheet ID`,info:`The destination sheet's identifier (its slug — NOT the display name). Slugs are org-unique: pick an existing sheet to write into it, or type a NEW slug to create one. A generic slug (e.g. "results", "companies") is likely to match an unrelated existing sheet, so for a new sheet use a short descriptive slug plus a few random chars (e.g. "ceos-x7k2") that can't collide.`,groupPath:`config.general`,sectionKey:`general`,inputType:`text`,path:`config.sheet`,minLength:3,expectedTagType:`string`,expectedTagFormat:`text`,optionsDef:EP,enabledIf:e=>e.config?.project?{disabled:!1}:{disabled:!0,message:`Select a project first`}}),run_added_rows:E({defaultValue:!0,groupPath:`config.general`,path:`config.run_added_rows`,sectionKey:`general`,info:`Auto-run the destination sheet's pipes over the rows this pipe appended. A bounded onward chain is fine (the destination's own write pipes cascade further); auto-run is suppressed only when the destination's write chain could loop back into a sheet on the path.`,label:`Run added rows`}),write_fields:au({label:`Fields`,info:`Source-row fields written onto every exploded row alongside the item (e.g. a join key like user_id). An entry's optional alias renames the destination column. Unlike row:append:sheet@1, empty writes NO source columns.`,groupPath:`config.general`,path:`config.write_fields`,sectionKey:`general`,disableSearch:!0}),allow_entity_creation:E({label:`Allow creating missing entities`,description:`Create missing entities as needed (a missing sheet or project is created, along with the output column on the destination).`,defaultValue:!0,groupPath:`config.advanced`,path:`config.allow_entity_creation`,sectionKey:`general`}),...bu({groupPath:`config.destination`,sectionKey:`general`,defaultName:HP,nameInfo:`Name of the field each list item is written to on the destination sheet. Each item is stored as-is (objects/arrays as one json cell); extract flat columns afterwards with json:extract:multi@1.`}),input_fields:F(r.object({[VP.name]:w({fieldName:VP.name})})),output_fields:P(r.object({[BP.name]:D({fieldName:BP.name})}))})}).check(e=>{let t=e.value.config?.destination_field_name;t&&dd(t)&&e.issues.push({code:`custom`,input:t,path:[`config`,`destination_field_name`],message:`'${t}' is reserved and cannot be used as a destination field name.`});let n=(t?.trim()||`expanded_value`).toLowerCase(),r=new Set;(e.value.config?.write_fields??[]).forEach((t,i)=>{let a=t.alias?.trim(),o=a||t.field_name,s=a?`alias`:`field_name`,c=o.toLowerCase();dd(o)&&e.issues.push({code:`custom`,input:o,path:[`config`,`write_fields`,i,s],message:`'${o}' is reserved and cannot be written to the destination sheet.`}),c===n&&e.issues.push({code:`custom`,input:o,path:[`config`,`write_fields`,i,s],message:`'${o}' collides with the destination field each item is written to.`}),r.has(c)&&e.issues.push({code:`custom`,input:o,path:[`config`,`write_fields`,i,s],message:`'${o}' is listed more than once.`}),r.add(c)})}),WP={"row-expandappend-sheet-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},GP=e=>R(G(VP,e)),KP=class extends B{pipeId=zP;payload;payloadSchema=UP;billableOperations=WP;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`row-expandappend-sheet-v1-pipe0`)}getInputRequirement(){return GP(this.payload.config)}getRawOutputFields(){return{[BP.name]:this.catalogOutput(BP)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_api_operation`,allowManagedConnection:!0}]}},qP=UP,JP={pipeId:zP,basePipe:U(zP),label:`Expand list to sheet`,executionMode:`single`,categories:[`actions`,`tools`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:"Expand a list into sheet rows — each item is written as-is to an `expanded_value` column (objects/arrays as json).",guide:`Denormalize a 1:N list into rows on ANOTHER sheet: each item in the input_objects array becomes its own row on config.sheet, inside config.project (REQUIRED — the destination project's org-unique slug; when working inside a project pass THAT slug, see CURRENT CONTEXT). Every item is written AS-IS to a single column on the destination — an object/array lands as one json cell (its fields are NOT spread into separate columns), a primitive as a scalar. That column is \`expanded_value\` by default; rename/retype it via config.destination_field_name / destination_field_type / destination_field_format / destination_field_label (type/format are inferred from the data when left unset). To get flat columns, run json:extract:multi@1 ON THE DESTINATION sheet afterwards to pull out exactly the values you need. config.write_fields copies chosen SOURCE-row fields onto every exploded row alongside the item (e.g. a stable join key like user_id, so downstream sheets can be joined/deleted per source entity); an entry's optional alias renames its destination column ({ field_name: "email", alias: "signup_email" } reads \`email\` from the source row and writes it as \`signup_email\`) — unlike row:append:sheet@1, EMPTY write_fields writes NO source columns (the exploded item is the row). Values are read from the row at run time and are deliberately NOT typed inputs, so editing the list never force-requeues this non-idempotent pipe. With allow_entity_creation on, a missing project/sheet (and the expanded_value column) are created; a sheet slug that exists in a DIFFERENT project fails the rows. Destination slugs are ORG-UNIQUE, so config.sheet addresses a sheet across your whole org: an existing slug REUSES that sheet (appending into it) when it's in config.project, and FAILS when it lives elsewhere — a generic slug like "results"/"companies"/"current-employers" will likely hit an unrelated sheet. When you mean a genuinely NEW sheet, use a short descriptive slug plus 3-4 random alphanumeric chars (e.g. "ceos-x7k2", "prospects-employers-9fq") — you cannot see other projects' slugs, so only the random suffix makes a new slug collision-proof; give the sheet its human-readable display name afterwards (in-app via the name_workspace tool; via API with PATCH /v1/sheets/{sheet_id}). Use it when a column holds a list you need per-element (e.g. a profile's current employers) BEFORE enriching each element — never collapse the list with an LLM. Requires a pipe0 connection (resolve via list_connections). Typical pipeline: json:extract:multi@1 to build the array column → this pipe to explode it into an intermediary sheet → json:extract:multi@1 THERE to flatten the fields you need out of expanded_value → enrich each row (e.g. person:match:role:waterfall@1) → rows:copy_to_sheet@1 to the final sheet. NON-IDEMPOTENT: each run appends again, so re-running duplicates rows (and you cannot undo rows written to another sheet) — dry-run the flow in sandbox first (env:change@1), and to retry after a partial failure adopt the succeeded cells (rows:adopt@1 with adopt_statuses:["completed"]) then rows:enrich@1. In the replace-on-refresh pattern (paired rows:delete:sheet@1 instances), position in the pipes array is NOT execution order — gate THIS pipe with a run_if on each delete's aliased count output (status eq completed): those references are the dependency edges that guarantee delete-before-append and skip the append whenever the deletes were skipped.`,docPath:W(zP),tags:[V.FIELDS],keywords:[`explode`,`denormalize`,`array`,`split`,`one to many`,`fan out`],billableOperations:WP,defaultInputRequirement:GP(null),inputFieldMode:`static`,outputFieldMode:`static`,defaultPayload:{pipe_id:zP,connector:{strategy:`first`,connections:[]},run_if:null,config:{project:``,sheet:``,run_added_rows:!0,allow_entity_creation:!0,write_fields:[],destination_field_name:HP,destination_field_type:``,destination_field_format:``,destination_field_label:``,input_fields:{input_objects:{alias:``}},output_fields:{sheet_record_ids:{alias:``,enabled:!0}}}}},YP=`row:roundrobin:sheet@1`,XP=jc(_(`pipe0`,`Add a pipe0 connection first`),Ac(e=>e.config?.sheet,`Select a sheet first`)),ZP=r.object({pipe_id:r.literal(YP),connector:S(),run_if:b(),config:r.object({sheet:ku({label:`Sheet`,info:`The sheet to rotate through — e.g. a roster of sellers. Always another sheet.`,groupPath:`config.general`,sectionKey:`general`,path:`config.sheet`,required:!0,optionsDef:TP}),sheet_where:zl({label:`Rotation pool`,info:`Only target-sheet rows matching these conditions rotate. Leave empty to rotate over the whole sheet.`,groupPath:`config.general`,sectionKey:`general`,path:`config.sheet_where`,required:!1,enabledIf:XP,fieldNamePlaceholder:`segment`,optionsDef:AP({sheetPath:`config.sheet`})}),sheet_unique_field:su({label:`Unique column`,info:`Column of the target sheet that must be filled and unique in every row — checked at run time.`,groupPath:`config.general`,sectionKey:`general`,path:`config.sheet_unique_field`,required:!0,enabledIf:XP,optionsDef:AP({sheetPath:`config.sheet`})}),sheet_copy_fields:ou({label:`Fields to bring over`,info:`Target-sheet columns copied from the picked row; each becomes an output column.`,groupPath:`config.general`,sectionKey:`general`,path:`config.sheet_copy_fields`,minItems:1,enabledIf:XP,optionsDef:AP({sheetPath:`config.sheet`,includeJson:!0})}),sheet_weight_field:su({label:`Weight column`,info:`Numeric target-sheet column scaling each row's share. 0 pauses a row; empty counts as 1. Leave unset for equal shares.`,groupPath:`config.general`,sectionKey:`general`,path:`config.sheet_weight_field`,enabledIf:XP,optionsDef:AP({sheetPath:`config.sheet`})}),counter_field:su({label:`Counter field`,info:`Column of this sheet whose unique values advance the rotation.`,groupPath:`config.general`,sectionKey:`general`,path:`config.counter_field`,required:!0})})}),QP={"row-roundrobin-sheet-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},$P=class extends B{pipeId=YP;payload;payloadSchema=ZP;billableOperations=QP;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`row-roundrobin-sheet-v1-pipe0`)}getTemplatedFields(){return(this.payload.config.sheet_where?.conditions??[]).map(e=>typeof e.value==`string`?e.value:null)}getInputRequirement(){let e=this.payload.config.counter_field.field_name,t=R({name:e,resolvedName:e,label:``,description:``,source:`config.counter_field — a column of THIS sheet`,type:t=>Ld(t,e)?.type||`unknown`,format:null}),n=ep(this.getTemplatedFields(),{expectedType:`string`});return n.kind===`all`&&n.of.length===0?t:z(t,n)}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return tp(this.getTemplatedFields())}getBucketRequirements(){let e=ot(this.payload.config.sheet),t=this.payload.config.counter_field.field_name;if(!e||!t)return[];let n=this.payload.config.sheet_where??null;return(n?.conditions??[]).some(e=>typeof e.value==`string`&&e.value.includes(`{{`))?[]:[{slug:CP(e,t,SP(n)),type:`counter`,schema:null,allowCreation:!0}]}getRawOutputFields(){let e={};for(let t of this.payload.config.sheet_copy_fields){if(!t.field_name)continue;let n=t.alias||t.field_name;e[t.field_name]={description:`Value of the target sheet's "${t.field_name}" column on the round-robin-picked row.`,enabled:!0,format:t.format??null,label:n,name:t.field_name,resolvedName:n,jsonMeta:null,type:t.type??`unknown`,isCatalogFIeld:!1,isPrimaryOutput:!1}}return e}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_api_operation`,allowManagedConnection:!0}]}},eF=ZP,tF={pipeId:YP,basePipe:U(YP),label:`Round-robin from sheet`,executionMode:`single`,categories:[`tools`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:`Rotate through the rows of another sheet (e.g. a sellers roster): each unique counter value picks the next row round-robin, and the selected columns of the picked row become outputs. Re-run safe — the same counter value always picks the same row.`,guide:"Round-robin assignment from another pipe0 sheet (the roster — e.g. sellers). config.sheet is the target sheet's org-unique slug — one FIXED sheet for the whole pipe, never a per-row reference. config.sheet_where (optional) restricts the ROTATION POOL to target-sheet rows matching the conditions (null = whole sheet); condition field_names are LITERAL target-sheet columns, string values may hold `{{ field }}` refs resolved per lead — e.g. segment eq {{ segment }} routes each lead over its own segment's rows. Each distinct RESOLVED filter cycles on its OWN counter (so slot numbers stay consecutive per pool — strict round robin within each pool); avoid high-cardinality templated filters ({{ email }}-like) — every distinct value creates a counter bucket and will exhaust the org bucket quota. config.sheet_unique_field names a TARGET-sheet column that must be filled in EVERY row and unique across rows — the run fails with a clear message if it has gaps or duplicates (this guarantees every roster row is a distinct assignee). config.sheet_copy_fields are the TARGET-sheet columns copied from the picked row; each becomes an output column named like the column — or like the entry's `alias` when set: use an alias whenever THIS sheet already has a column of that name (e.g. roster `email` → alias `seller_email`), otherwise the copy silently writes into the existing column. Entries are typed by `type`/`format` (snapshotted from the target sheet's schema when picked — if the target column's type drifts later, the run fails with an output-type mismatch; re-pick the column to refresh the snapshot). config.counter_field names a column of the CURRENT sheet: every unique value of it takes the next number from an internal counter bucket (first-seen → 1, next new value → 2, …; the SAME value always keeps the SAME number, so re-runs are stable). For LEAD/SIGNUP ROUTING the counter defaults to the ACCOUNT key — a company domain column (work email → field:domainify@1; personal email → reverse lookup; coalesce with fields:merge@1) — so every lead from the same company keeps the same assignee; counter on the person's email ONLY when account grouping is explicitly unwanted (consumer flows). See the routing:leads:roundrobin@1 playbook. The pick is slot (n − 1) mod W over the pool's rows in creation order, where W is the pool's total weight (= row count when unweighted) — adding pool rows only changes the wrap; deleting or reordering reshuffles subsequent picks. config.sheet_weight_field (optional) names a NUMERIC target-sheet column: a row with weight w takes w of every W slots, spread evenly across the cycle (weight 2 ≠ two consecutive picks); weight 0 pauses the row; an empty cell counts as 1; a negative or non-integer weight fails the run loudly. Editing weights re-shapes FUTURE picks only — the counter and its bucket are untouched, so rotation never restarts. The internal counter is a REAL org-scoped counter bucket (visible in the buckets UI, slug `rr--<sheet>--<counter field>`); changing the sheet or the counter field starts a fresh rotation. A row with a missing/empty counter value is gated to skipped before the runner. Empty roster → all outputs no_result. A copied column that is empty on the picked row resolves to no_result. Missing sheet (bad slug) fails the record naming the slug. The target sheet is NEVER modified. FREE pipe0 operation; requires a pipe0 connection (list_connections).",docPath:W(YP),tags:[V.FIELDS],keywords:[`rotate`,`rotation`,`distribute`,`routing`,`assignment`,`owner`,`alternate`],billableOperations:QP,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`config`,defaultPayload:{pipe_id:YP,connector:{strategy:`first`,connections:[]},run_if:null,config:{sheet:``,sheet_where:null,sheet_unique_field:{field_name:``},sheet_copy_fields:[],sheet_weight_field:{field_name:``},counter_field:{field_name:``}}}},nF=`rows:delete:sheet@1`,rF=g(`sheet_deleted_count`),iF=r.object({pipe_id:r.literal(nF),connector:S(),run_if:b(),config:r.object({sheet:x({label:`Sheet ID`,info:"The sheet to delete from (its org-unique slug — NOT the display name). Type `@` to insert a field reference for a per-row sheet. A sheet that does not exist yet completes with 0 deleted.",groupPath:`config.general`,sectionKey:`general`,inputType:`text`,path:`config.sheet`,minLength:3,expectedTagType:`string`,expectedTagFormat:`text`,optionsDef:TP}),where:zl({label:`Delete conditions`,info:"Conditions on the target sheet's columns. Column names are literal; in the value, type `/` to insert a field reference (e.g. `{{ user_id }}`). Rows matching the condition are DELETED.",groupPath:`config.general`,sectionKey:`general`,path:`config.where`,fieldNamePlaceholder:`user_id`,optionsDef:AP({sheetPath:`config.sheet`})}),output_fields:P(r.object({[rF.name]:D({fieldName:rF.name})}))})}),aF={"rows-delete-sheet-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},oF=class extends B{pipeId=nF;payload;payloadSchema=iF;billableOperations=aF;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`rows-delete-sheet-v1-pipe0`)}getTemplatedFields(){return[this.payload.config.sheet,...(this.payload.config.where?.conditions??[]).map(e=>typeof e.value==`string`?e.value:null)]}getInputRequirement(){return ep(this.getTemplatedFields(),{expectedType:`string`})}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return tp(this.getTemplatedFields())}getRawOutputFields(){return{[rF.name]:this.catalogOutput(rF)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_api_operation`,allowManagedConnection:!0}]}},sF=iF,cF={pipeId:nF,basePipe:U(nF),label:`Delete rows in sheet`,executionMode:`single`,categories:[`tools`,`actions`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:`Delete rows in ANOTHER pipe0 sheet matching a condition block. The replace-on-refresh building block: delete previously written downstream rows before re-appending fresh ones.`,guide:"Delete rows in another pipe0 sheet whose columns match config.where — the delete half of the replace-on-refresh pattern: pair it with the pipe that appends downstream rows (row:append:sheet@1 / row:expandappend:sheet@1), keyed on a stable join column, e.g. `user_id eq \"{{ user_id }}\"`, so a re-enrichment first clears the rows it previously wrote and then re-appends. Position in the pipes array is NOT execution order (pipes run in dependency waves; independent pipes run concurrently) — delete-before-append is enforced by the APPEND pipe's run_if referencing this pipe's (aliased) count output status eq completed, never by list ordering. config.sheet is the target's org-unique slug (literal or `{{ field }}` tag). config.where semantics match rows:find:sheet@1: field_name is a LITERAL target column (not validated against the target — a wrong name behaves like a null cell and deletes NOTHING); string values may contain `{{ field }}` tags resolved per row; a value resolving to an empty string fails the row (a blank key must not delete everything). A target sheet that does not exist yet completes with sheet_deleted_count 0 — first runs happen before downstream sheets exist, by design. The replace pattern usually needs SEVERAL instances on one sheet (one per downstream target) — output names are sheet-global, so alias each instance's sheet_deleted_count (e.g. experiences_deleted_count / profiles_deleted_count) or the defaults collide and the pipeline won't validate. Skip-propagation protects previously written rows ONLY when the templated key is an enrichment OUTPUT (the typed input skips on upstream failure) — an INPUT column key like user_id is always satisfied, so the delete would run even on a failed refresh: gate it with an explicit run_if on a success flag (e.g. a bucket:claim@1 is_claim_successful value eq true) so failed/no_result refreshes keep the old rows. DESTRUCTIVE and NON-idempotent (deleted rows cannot be restored except via the target's timetravel): rehearse in sandbox (env:change@1, the delete is mocked), and after a partial failure adopt succeeded cells (rows:adopt@1) before re-running. Deletes on the same target serialize (exclusive lock) — expect modest throughput on large refreshes. Requires a pipe0 connection (list_connections).",docPath:W(nF),tags:[V.FIELDS],keywords:[`delete`,`remove`,`clear`,`replace`,`refresh`,`cleanup`,`another sheet`,`downstream`,`purge`],billableOperations:aF,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:nF,connector:{strategy:`first`,connections:[]},run_if:null,config:{sheet:``,where:null,output_fields:{sheet_deleted_count:{alias:``,enabled:!0}}}}},lF=`SELECT table_schema, table_name, column_name, data_type FROM information_schema.columns WHERE table_schema NOT IN ('pg_catalog', 'information_schema') ORDER BY table_schema, table_name, ordinal_position`,uF=`table_catalog NOT IN ('system', '__databricks_internal') AND table_schema <> 'information_schema'`,dF=`SELECT table_catalog, table_schema, table_name FROM system.information_schema.tables WHERE ${uF} ORDER BY table_catalog, table_schema, table_name`,fF=`SELECT table_catalog, table_schema, table_name, column_name, data_type FROM system.information_schema.columns WHERE ${uF} ORDER BY table_catalog, table_schema, table_name, ordinal_position`;function pF(e){return typeof e==`string`?e:String(e??``)}function mF(e){let t=new Map;for(let n of e){let e=pF(n.table_schema),r=pF(n.table_name);if(!r)continue;let i=`${e}.${r}`,a=t.get(i);a||(a={schema:e,name:r,columns:[]},t.set(i,a)),a.columns.push({name:pF(n.column_name),type:pF(n.data_type)})}return t}function hF(e){return`${e.catalog?`${e.catalog}.`:``}${e.schema?`${e.schema}.`:``}${e.name}`}function gF(e,t){if(e.length===0)return{summary:`The connected database exposes no tables outside the system schemas — nothing to query yet.`,data:{tables:[],truncated:t}};let n=e.map(e=>{if(e.columns.length===0)return`- ${hF(e)} — (columns not listed; DESCRIBE or sample to inspect)`;let t=e.columns.slice(0,50),n=e.columns.length-t.length,r=t.map(e=>e.type?`${e.name}:${e.type}`:e.name).join(`, `);return`- ${hF(e)} — ${r}${n>0?` (+${n} more)`:``}`}),r=e.some(e=>e.catalog)?` Names are fully qualified (catalog.schema.table) — use them VERBATIM in config.query.`:``;return{summary:[`Schema map (${e.length} table${e.length===1?``:`s`}${t?`, truncated — the database has more`:``}). Write config.query against these;${r} sample rows free via run_search_oneshot.`,...n].join(`
|
|
85
|
+
`),data:{tables:e,truncated:t}}}async function _F(e){let t=await e({query:dF,limit:500}),n=new Map;for(let e of t.rows){let t=pF(e.table_catalog),r=pF(e.table_schema),i=pF(e.table_name);i&&n.set(`${t}.${r}.${i}`,{catalog:t,schema:r,name:i,columns:[]})}let r=await e({query:fF,limit:500});for(let e of r.rows)n.get(`${pF(e.table_catalog)}.${pF(e.table_schema)}.${pF(e.table_name)}`)?.columns.push({name:pF(e.column_name),type:pF(e.data_type)});return gF([...n.values()],t.hasMore||r.hasMore)}async function vF(e){let t=await e({query:`SHOW TABLES`,limit:500}),n=t.rows.map(e=>({schema:pF(e.database??e.namespace),name:pF(e.tableName??e.table_name)})).filter(e=>e.name),r=t.hasMore||n.length>25,i=[];for(let{schema:t,name:r}of n.slice(0,25)){let n=(await e({query:`DESCRIBE TABLE ${t?`${t}.`:``}${r}`,limit:500})).rows.map(e=>({name:pF(e.col_name),type:pF(e.data_type)})).filter(e=>e.name&&!e.name.startsWith(`#`));i.push({schema:t,name:r,columns:n})}return gF(i,r)}async function yF(e,t){if(t.environment===`sandbox`)return{summary:`Schema exploration needs the real database connection — it's read-only and free. Switch to production (env:change@1) to explore the schema, then rehearse the pipeline in sandbox.`};if(!t.runQuery)return{summary:`Live schema exploration isn't available in this context.`};if(e===`databricks`)try{return await _F(t.runQuery)}catch{try{let e=await t.runQuery({query:lF,limit:500});return gF([...mF(e.rows).values()],e.hasMore)}catch{return vF(t.runQuery)}}let n=await t.runQuery({query:lF,limit:500});return gF([...mF(n.rows).values()],n.hasMore)}const bF=`rows:find:databricks@1`,xF=g(`db_rows_found_count`),SF=g(`db_found_rows`),CF=r.object({pipe_id:r.literal(bF),connector:S(),run_if:b(),config:r.object({query:Gl({label:`SQL query`,info:`A single read-only SELECT statement, resolved per row — use {{ field }} for input refs, {{ SECRETS.X }} / {{ CONSTANTS.X }} for secrets/constants. Do not add your own LIMIT for capping; use the row limit below.`,groupPath:`config.general`,sectionKey:`general`,path:`config.query`,rows:8,required:!0,maxLength:2e4}),limit:Eu({label:`Row limit`,info:`Maximum number of rows returned in the matching-rows output. The rows-found count is always the true total.`,groupPath:`config.advanced`,sectionKey:`general`,path:`config.limit`,min:1,max:50}),output_fields:P(r.object({[xF.name]:D({fieldName:xF.name}),[SF.name]:D({fieldName:SF.name})}))})}),wF={"rows-find-databricks-v1-databricks":{provider:`databricks`,allowManagedConnection:!1,mode:null,credits:null,note:`Querying your own Databricks SQL warehouse is free.`}},TF=class extends B{pipeId=bF;payload;payloadSchema=CF;billableOperations=wF;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`databricks`]}estimateBillableOperations(e){return H(e,`rows-find-databricks-v1-databricks`)}getTemplatedFields(){return[this.payload.config.query]}getInputRequirement(){return ep(this.getTemplatedFields(),{expectedType:`string`})}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return tp(this.getTemplatedFields())}getRawOutputFields(){return{[xF.name]:this.catalogOutput(xF),[SF.name]:this.catalogOutput(SF)}}getConnectionsRequirements(){return[{provider:`databricks`,rateLimitRatio:1,rateLimitOperation:`databricks_query`,allowManagedConnection:!1}]}async getAgentContext(e){return yF(`databricks`,e)}},EF=CF,DF={pipeId:bF,basePipe:U(bF),label:`Find rows in Databricks`,executionMode:`single`,categories:[`tools`],lifecycle:null,allowedUserConnectionProviders:[`databricks`],managedProviders:[],deprecatedProviders:[],description:`Look up rows in your own Databricks SQL warehouse with a read-only SQL query resolved per row. Outputs the total match count and the matching rows.`,guide:"Databricks SQL dialect; config.query must be a single read-only SELECT, resolved per row via Liquid — `{{ field }}` input refs, `{{ SECRETS.X }}` / `{{ CONSTANTS.X }}` supported. Resolved values are interpolated as text, so quote them in the SQL (WHERE email = '{{ email }}'). To discover the schema, draft a payload with a placeholder config.query like \"SELECT 1\" and the chosen connection in connector.connections, then call get_provider_context once — it returns the workspace-wide table/column map (all Unity catalogs) for free. Always reference tables by their FULLY QUALIFIED three-part name exactly as the map lists them (catalog.schema.table); a bare table name resolves against the warehouse's unpredictable current catalog and usually fails with TABLE_OR_VIEW_NOT_FOUND. Tables under the `samples` catalog (and other built-in demo schemas like `tpch`) are DEMO data, NOT the customer's own — never answer from them without confirming. READ-ONLY and idempotent — the gateway enforces single-statement SELECT validation. db_found_rows is capped by config.limit and a ~25KB size budget (rows are dropped from the end to fit); db_rows_found_count is always the TRUE total. When nothing matches, db_found_rows resolves to no_result (NOT an empty array) — db_rows_found_count (0) still completes, so condition on it to branch on absence. A field resolving to empty renders as an empty string in the SQL — guard with run_if if that must not match. Requires a databricks connection (list_connections).",docPath:W(bF),tags:[V.FIELDS,V.NEW],keywords:[`sql`,`query`,`lookup`,`warehouse`,`database`,`select`],billableOperations:wF,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:bF,connector:{strategy:`first`,connections:[]},run_if:null,config:{query:``,limit:10,output_fields:{db_rows_found_count:{alias:``,enabled:!1},db_found_rows:{alias:``,enabled:!0}}}}},OF=`rows:find:postgres@1`,kF=g(`db_rows_found_count`),AF=g(`db_found_rows`),jF=r.object({pipe_id:r.literal(OF),connector:S(),run_if:b(),config:r.object({query:Gl({label:`SQL query`,info:`A single read-only SELECT statement, resolved per row — use {{ field }} for input refs, {{ SECRETS.X }} / {{ CONSTANTS.X }} for secrets/constants. Do not add your own LIMIT for capping; use the row limit below.`,groupPath:`config.general`,sectionKey:`general`,path:`config.query`,rows:8,required:!0,maxLength:2e4}),limit:Eu({label:`Row limit`,info:`Maximum number of rows returned in the matching-rows output. The rows-found count is always the true total.`,groupPath:`config.advanced`,sectionKey:`general`,path:`config.limit`,min:1,max:50}),output_fields:P(r.object({[kF.name]:D({fieldName:kF.name}),[AF.name]:D({fieldName:AF.name})}))})}),MF={"rows-find-postgres-v1-postgres":{provider:`postgres`,allowManagedConnection:!1,mode:null,credits:null,note:`Querying your own PostgreSQL database is free.`}},NF=class extends B{pipeId=OF;payload;payloadSchema=jF;billableOperations=MF;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`postgres`]}estimateBillableOperations(e){return H(e,`rows-find-postgres-v1-postgres`)}getTemplatedFields(){return[this.payload.config.query]}getInputRequirement(){return ep(this.getTemplatedFields(),{expectedType:`string`})}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return tp(this.getTemplatedFields())}getRawOutputFields(){return{[kF.name]:this.catalogOutput(kF),[AF.name]:this.catalogOutput(AF)}}getConnectionsRequirements(){return[{provider:`postgres`,rateLimitRatio:1,rateLimitOperation:`postgres_query`,allowManagedConnection:!1}]}async getAgentContext(e){return yF(`postgres`,e)}},PF=jF,FF={pipeId:OF,basePipe:U(OF),label:`Find rows in Postgres`,executionMode:`single`,categories:[`tools`],lifecycle:null,allowedUserConnectionProviders:[`postgres`],managedProviders:[],deprecatedProviders:[],description:`Look up rows in your own PostgreSQL database with a read-only SQL query resolved per row. Outputs the total match count and the matching rows.`,guide:"PostgreSQL dialect; config.query must be a single read-only SELECT, resolved per row via Liquid — `{{ field }}` input refs, `{{ SECRETS.X }}` / `{{ CONSTANTS.X }}` supported. Resolved values are interpolated as text, so quote them in the SQL (WHERE email = '{{ email }}'). To discover the schema, draft a payload with a placeholder config.query like \"SELECT 1\" and the chosen connection in connector.connections, then call get_provider_context once — it returns the full table/column map for free. READ-ONLY and idempotent — the gateway enforces single-statement SELECT validation and a read-only transaction. db_found_rows is capped by config.limit and a ~25KB size budget (rows are dropped from the end to fit); db_rows_found_count is always the TRUE total. When nothing matches, db_found_rows resolves to no_result (NOT an empty array) — db_rows_found_count (0) still completes, so condition on it to branch on absence. A field resolving to empty renders as an empty string in the SQL — guard with run_if if that must not match. Requires a postgres connection (list_connections).",docPath:W(OF),tags:[V.FIELDS,V.NEW],keywords:[`sql`,`query`,`lookup`,`database`,`select`],billableOperations:MF,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:OF,connector:{strategy:`first`,connections:[]},run_if:null,config:{query:``,limit:10,output_fields:{db_rows_found_count:{alias:``,enabled:!1},db_found_rows:{alias:``,enabled:!0}}}}},IF=`rows:find:sheet@1`,LF=g(`sheet_rows_found_count`),RF=g(`sheet_found_rows`),zF=g(`sheet_found_row_ids`),BF=r.object({pipe_id:r.literal(IF),connector:S(),run_if:b(),config:r.object({sheet:x({label:`Sheet ID`,info:"The sheet to search (its org-unique slug — NOT the display name). Type `@` to insert a field reference for a per-row sheet.",groupPath:`config.general`,sectionKey:`general`,inputType:`text`,path:`config.sheet`,minLength:3,expectedTagType:`string`,expectedTagFormat:`text`,optionsDef:TP}),where:zl({label:`Match conditions`,info:"Conditions on the target sheet's columns. Column names are literal; in the value, type `/` to insert a field reference (e.g. `{{ email }}`).",groupPath:`config.general`,sectionKey:`general`,path:`config.where`,fieldNamePlaceholder:`email`,optionsDef:AP({sheetPath:`config.sheet`})}),limit:Eu({label:`Row limit`,info:`Maximum number of rows returned in the matching-rows output. The rows-found count is always the true total.`,groupPath:`config.advanced`,sectionKey:`general`,path:`config.limit`,min:1,max:100}),output_fields:P(r.object({[LF.name]:D({fieldName:LF.name}),[RF.name]:D({fieldName:RF.name}),[zF.name]:D({fieldName:zF.name})}))})}),VF={"rows-find-sheet-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},HF=class extends B{pipeId=IF;payload;payloadSchema=BF;billableOperations=VF;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`rows-find-sheet-v1-pipe0`)}getTemplatedFields(){return[this.payload.config.sheet,...(this.payload.config.where?.conditions??[]).map(e=>typeof e.value==`string`?e.value:null)]}getInputRequirement(){return ep(this.getTemplatedFields(),{expectedType:`string`})}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return tp(this.getTemplatedFields())}getRawOutputFields(){return{[LF.name]:this.catalogOutput(LF),[RF.name]:this.catalogOutput(RF),[zF.name]:this.catalogOutput(zF)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_api_operation`,allowManagedConnection:!0}]}},UF=BF,WF={pipeId:IF,basePipe:U(IF),label:`Find rows in sheet`,executionMode:`single`,categories:[`tools`],lifecycle:null,allowedUserConnectionProviders:[`pipe0`],managedProviders:[],deprecatedProviders:[],description:`Look up rows in another pipe0 sheet matching a condition block (and/or over eq, neq, gt, gte, lt, lte, contains, matches). Outputs the total match count, the matching rows, and their record IDs.`,guide:'Find rows in another pipe0 sheet. config.sheet is the target sheet\'s org-unique slug (a literal or a `{{ field }}` tag). config.where is a condition block over the TARGET sheet\'s columns: `logic` "and"/"or" combines value conditions; each condition\'s field_name is a LITERAL column name (never templated, NOT validated against the target sheet — a wrong name behaves like a null cell), and its value may be a literal or contain `{{ field }}` tags resolved per row. Operators: eq/neq compare as text (a number cell 42 matches the value "42"; neq ALSO matches rows where the column is missing or null; JSON object/array cells effectively never match); gt/gte/lt/lte compare numerically (non-numeric cells never match; a non-numeric condition value fails the row); contains is case-INsensitive substring; matches is case-SENSITIVE regex (invalid pattern fails the row). A `null` value with eq matches missing/null cells. READ-ONLY and idempotent — one query per row, the target sheet is never modified. sheet_found_rows is capped by config.limit and a ~25KB size budget (rows are dropped from the end to fit); sheet_rows_found_count is always the TRUE total. When nothing matches, sheet_found_rows and sheet_found_row_ids resolve to no_result (NOT an empty array) — sheet_rows_found_count (0) still completes, so condition on it to branch on absence. String condition values that resolve to an empty string fail the row (a blank field must not match everything) — guard with run_if. Requires a pipe0 connection (list_connections).',docPath:W(IF),tags:[V.FIELDS],keywords:[`lookup`,`query`,`search`,`match`,`filter`,`vlookup`],billableOperations:VF,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:IF,connector:{strategy:`first`,connections:[]},run_if:null,config:{sheet:``,where:null,limit:10,output_fields:{sheet_rows_found_count:{alias:``,enabled:!1},sheet_found_rows:{alias:``,enabled:!0},sheet_found_row_ids:{alias:``,enabled:!1}}}}},GF=`signals:personprofilematch@1`,KF=g(`person_profile_match`),qF=g(`signal_window_start`),JF=g(`signal_list`),YF=g(`signal_count`),XF={l30d:30,l90d:90,l180d:180,l365d:365},ZF=r.object({pipe_id:r.literal(GF),run_if:b(),connector:ql(),config:r.object({signals:Tu({label:`Signals`,info:`Signal types to emit. Empty = all.`,path:`config.signals`,groupPath:`config.general`,sectionKey:`general`,required:!1,disableSearch:!1,options:Ia.map(e=>({value:e,label:Ha[e]}))}).default([]),default_window:Cu({label:`Default window`,info:`Scan window when the window-start input is unmapped or empty for the row. A mapped, non-empty window-start date overrides it per row.`,path:`config.default_window`,groupPath:`config.general`,sectionKey:`general`,required:!1,defaultValue:`l90d`,options:[{value:`l30d`,label:`Last 30 days`},{value:`l90d`,label:`Last 90 days`},{value:`l180d`,label:`Last 180 days`},{value:`l365d`,label:`Last 365 days`}]}),input_fields:F(r.object({[KF.name]:w({fieldName:KF.name}),[qF.name]:w({fieldName:qF.name})})),output_fields:P(r.object({[JF.name]:D({fieldName:JF.name}),[YF.name]:D({fieldName:YF.name})}))}).optional()}),QF=e=>z(R(G(KF,e)),_d(G(qF,e))),$F={"signals-personprofilematch-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},eI=class extends B{pipeId=GF;payload;payloadSchema=ZF;billableOperations=$F;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getInputRequirement(){return QF(this.payload.config)}getRawOutputFields(){return{[JF.name]:this.catalogOutput(JF,{isPrimaryOutput:!0}),[YF.name]:this.catalogOutput(YF)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},tI=ZF,nI={pipeId:GF,basePipe:U(GF),label:`Sales signals from profile`,executionMode:`single`,categories:[`people_data`],lifecycle:null,description:`Detect sales signals — job changes, promotions, role changes, work anniversaries, graduations — from a standardized person profile inside a per-row time window.`,guide:`Scans person_profile_match's employment/education history for moments in time inside (window_start, now]. The window: a mapped, non-empty signal_window_start date wins per row; otherwise config.default_window applies. Compute the per-row date from re-enrichment cadence with formula:run@1 (e.g. seniority -> days -> date) — NEVER from last_successfully_enriched_at: that bucket:countif output is restamped within the same cohort run before this pipe reads it, collapsing the window to zero. Every signal carries a stable signal_id ('sig_' + hash of person, from/to company, YYYY-MM, qualifier) — the same real-world event hashes identically across providers and re-scans, so overlapping windows re-emit but never fork identity. Canonical composition: row:expandappend:sheet@1 explodes signal_list into an append-only signals sheet (same project by default; a dedicated org-wide signals project when several systems feed one stream) with destination_field_name 'signal_match' and NO write_fields — the signals table is standardized to a SINGLE input column holding the payload, because the signal is self-contained (person_name, profile_url, company_domain, metadata all inside). There json:extract:multi@1 flattens whatever columns the consumer needs straight out of signal_match, and bucket:claim@1 on signal_id gates downstream delivery (CRM activity sync) exactly-once. This shape is identical for every signals:* producer, person- or company-scoped, so all of them append into the same table. config.signals narrows the emitted types (empty = all). Outputs are per-scan: signal_list (the JSON list) and signal_count as its condition-friendly flat mirror (0 when the scan found none — the cell always completes). Deterministic-local: runs for REAL in sandbox, FREE pipe0 operation.`,docPath:W(GF),tags:[V.LINKEDIN,V.LOGIC],keywords:[`job change`,`promotion`,`new role`,`trigger`,`moments`,`buying intent`,`champion tracking`,`boomerang`],billableOperations:$F,defaultInputRequirement:QF(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:GF,run_if:null,connector:null,config:{signals:[],default_window:`l90d`,input_fields:{person_profile_match:{alias:``},signal_window_start:{alias:``}},output_fields:{signal_list:{alias:``,enabled:!0},signal_count:{alias:``,enabled:!0}}}}},rI=`template:fill@1`,iI=g(`template_output`),aI=r.object({pipe_id:r.literal(rI),connector:C(),run_if:b(),config:r.object({template:Gl({sectionKey:`general`,path:`config.template`,label:`Template`,placeholder:J(`template`),groupPath:`config.general`,required:!0}),output_fields:P(r.object({[iI.name]:D({fieldName:iI.name})}))})}),oI={"template-fill-v1-pipe0":{credits:{default:0},allowManagedConnection:!0,provider:`pipe0`,mode:`always`}},sI=class extends B{pipeId=rI;payload;payloadSchema=aI;billableOperations=oI;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`template-fill-v1-pipe0`)}getInputRequirement(){return ep([this.payload.config.template])}getSecretRequirements(){return q([this.payload.config.template])}getConstantRequirements(){return tp([this.payload.config.template])}getRawOutputFields(){return{[iI.name]:this.catalogOutput(iI)}}getConnectionsRequirements(){return[]}},cI=aI,lI={pipeId:rI,inputFieldMode:`config`,outputFieldMode:`config`,basePipe:U(rI),label:`Fill a text template`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Replaces template tags like {{ name }} with actual values.`,tags:[V.TEXT],keywords:[`merge`,`personalize`,`liquid`,`placeholder`,`variables`,`mail merge`],docPath:W(rI),defaultInputRequirement:null,billableOperations:oI,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:rI,connector:null,run_if:null,config:{template:``,output_fields:{template_output:{alias:``,enabled:!0}}}}},uI=`website:extract:firecrawl@1`,dI=g(`website_url`),fI=g(`firecrawl_extract_result`),pI=r.object({pipe_id:r.literal(uI),connector:C(),run_if:b(),config:r.object({json_schema:Ou({sectionKey:`general`,groupPath:`config.extraction`,path:`config.json_schema`,label:`Output JSON schema`,info:`Specify the data you want to extract as a JSON schema.`,allowEmpty:!1}),extraction_prompt:Su({sectionKey:`general`,groupPath:`config.extraction`,path:`config.extraction_prompt`,label:`Extraction Prompt`,info:`Prompt the scraper on what it should extract. Template tags are not supported.`,rows:5,minLength:10,placeholder:`E.g. Extract the company missing and latest news.`}),enable_full_domain_crawl:E({sectionKey:`general`,groupPath:`config.extraction`,defaultValue:!1,path:`config.enable_full_domain_crawl`,info:`If this option is enabled all URLs from this domain will be scraped.`,label:`Crawl full domain`}),enable_web_search:E({sectionKey:`general`,groupPath:`config.extraction`,label:`Enable web search`,path:`enable_web_search`,defaultValue:!1,info:`When 'true', the extraction will follow links outside the specified domain.`}),input_fields:F(r.object({[dI.name]:w({fieldName:dI.name})})),output_fields:P(r.object({[fI.name]:D({fieldName:fI.name})}))})}),mI=e=>R(G(dI,e)),hI={"website-extract-firecrawl-v1-firecrawl":{allowManagedConnection:!0,provider:`firecrawl`,credits:{default:2,level1:{credits:1,weight:1}},mode:`onSuccess`}},gI=class extends B{pipeId=uI;payload;payloadSchema=pI;billableOperations=hI;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`firecrawl`]}estimateBillableOperations(e){return H(e,`website-extract-firecrawl-v1-firecrawl`)}getInputRequirement(){return mI(this.payload.config)}getRawOutputFields(){return{[fI.name]:this.catalogOutput(fI)}}getConnectionsRequirements(){return[{provider:`firecrawl`,rateLimitRatio:1,rateLimitOperation:`firecrawl_generic`,allowManagedConnection:!0}]}},_I=pI,vI={pipeId:uI,basePipe:U(uI),label:`Extract`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Perform advanced AI scraping to extract data from any website. Search all subdomains and combine scraped data with search results.`,tags:[V.SCRAPE],keywords:[`scrape`,`crawl`,`ai`,`structured data`,`json`,`web`],docPath:W(uI),billableOperations:hI,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`firecrawl`],managedProviders:[`firecrawl`],deprecatedProviders:[],defaultInputRequirement:mI(null),defaultPayload:{pipe_id:uI,run_if:null,connector:null,config:{json_schema:{type:`object`},enable_full_domain_crawl:!1,enable_web_search:!1,extraction_prompt:``,input_fields:{website_url:{alias:``}},output_fields:{firecrawl_extract_result:{alias:``,enabled:!0}}}}},yI=`website:extract:parallel@1`,bI=g(`website_url`),xI=g(`parallel_extract_result`),SI=r.object({pipe_id:r.literal(yI),connector:C(),run_if:b(),config:r.object({objective:Su({sectionKey:`general`,groupPath:`config.extraction`,path:`config.objective`,label:`Objective`,info:`Natural-language description of what to extract. Template tags are not supported.`,rows:5,minLength:10,placeholder:`E.g. When was the company founded and what does it do?`}),input_fields:F(r.object({[bI.name]:w({fieldName:bI.name})})),output_fields:P(r.object({[xI.name]:D({fieldName:xI.name})}))})}),CI=e=>R(G(bI,e)),wI={"website-extract-parallel-v1-parallel":{allowManagedConnection:!0,provider:`parallel`,credits:{default:.1},mode:`onSuccess`}},TI=class extends B{pipeId=yI;payload;payloadSchema=SI;billableOperations=wI;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`parallel`]}estimateBillableOperations(e){return H(e,`website-extract-parallel-v1-parallel`)}getInputRequirement(){return CI(this.payload.config)}getRawOutputFields(){return{[xI.name]:this.catalogOutput(xI,{isPrimaryOutput:!0})}}getConnectionsRequirements(){return[{provider:`parallel`,rateLimitRatio:1,rateLimitOperation:`parallel_extract`,allowManagedConnection:!0}]}},EI=SI,DI={pipeId:yI,basePipe:U(yI),label:`Extract (Parallel)`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Extract relevant content from a website using Parallel's Extract API. Returns a flat list of results — page title, publish date and the excerpts most relevant to your objective.`,tags:[V.SCRAPE],keywords:[`scrape`,`crawl`,`content`,`web`,`research`],docPath:W(yI),billableOperations:wI,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`parallel`],managedProviders:[`parallel`],deprecatedProviders:[],defaultInputRequirement:CI(null),defaultPayload:{pipe_id:yI,run_if:null,connector:null,config:{objective:``,input_fields:{website_url:{alias:``}},output_fields:{parallel_extract_result:{alias:``,enabled:!0}}}}},OI=`website:maplinks:firecrawl@1`,kI={"website-maplinks-firecrawl-v1-firecrawl":{allowManagedConnection:!0,provider:`firecrawl`,credits:{default:1},mode:`onSuccess`}},AI=g(`website_url`),jI=g(`mapped_links`),MI=r.object({pipe_id:r.literal(OI),connector:C(),run_if:b(),config:r.object({page_limit:Eu({label:`Page limit`,info:`Number of pages searched`,groupPath:`config.general`,max:50,min:1,path:`config.page_limit`,sectionKey:`general`}).nullish(),sitemap:Cu({label:`Sitemap`,info:`Include sitemap links`,sectionKey:`general`,groupPath:`config.general`,path:`config.sitemap`,defaultValue:`include`,required:!1,options:[{value:`include`,label:`Include`},{value:`skip`,label:`Skip`},{value:`only`,label:`Only`}]}),search:xu({sectionKey:`general`,label:`Search`,inputType:`text`,info:`Return matching urls`,groupPath:`config.general`,path:`config.search`}).nullable().default(``),input_fields:F(r.object({[AI.name]:w({fieldName:AI.name})})),output_fields:P(r.object({[jI.name]:D({fieldName:jI.name})}))}).optional()}),NI=e=>R(G(AI,e)),PI=class extends B{pipeId=OI;payload;payloadSchema=MI;billableOperations=kI;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`firecrawl`]}estimateBillableOperations(e){return H(e,`website-maplinks-firecrawl-v1-firecrawl`)}getInputRequirement(){return NI(this.payload.config)}getRawOutputFields(){return{[jI.name]:this.catalogOutput(jI)}}getConnectionsRequirements(){return[{provider:`firecrawl`,rateLimitRatio:1,rateLimitOperation:`firecrawl_map_requests`,allowManagedConnection:!0}]}},FI=MI,II={pipeId:OI,basePipe:U(OI),label:`Map domain links`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Input a website and get all internal URLs on the website. Results do not include links to external pages.`,tags:[V.SCRAPE],keywords:[`sitemap`,`crawl`,`urls`,`pages`,`discover`,`internal`],docPath:W(OI),billableOperations:kI,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`firecrawl`],managedProviders:[`firecrawl`],deprecatedProviders:[],defaultInputRequirement:NI(null),defaultPayload:{pipe_id:OI,run_if:null,connector:null,config:{page_limit:25,sitemap:`include`,search:``,input_fields:{website_url:{alias:``}},output_fields:{mapped_links:{alias:``,enabled:!0}}}}},LI=`website:scrape:firecrawl@1`,RI=g(`website_url`),zI=g(`website_markdown`),BI=g(`website_html`),VI=g(`website_links`),HI=r.object({pipe_id:r.literal(LI),connector:C(),run_if:b(),config:r.object({scrape_main_only:E({defaultValue:!1,label:`Scrape main content only?`,info:`If selected, content like headers, footers, and sidebars are excluded from the scrape results.`,sectionKey:`general`,groupPath:`config.general`,path:`config.scrape_main_only`}),input_fields:F(r.object({[RI.name]:w({fieldName:RI.name})})),output_fields:P(r.object({[zI.name]:D({fieldName:zI.name}),[BI.name]:D({fieldName:BI.name}),[VI.name]:D({fieldName:VI.name})}))}).optional()}),UI=e=>R(G(RI,e)),WI={"website-scrape-firecrawl-v1-firecrawl":{allowManagedConnection:!0,provider:`firecrawl`,credits:{default:.1,level1:{credits:.05,weight:1}},mode:`onSuccess`}},GI=class extends B{pipeId=LI;payload;payloadSchema=HI;billableOperations=WI;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`firecrawl`]}estimateBillableOperations(e){return H(e,`website-scrape-firecrawl-v1-firecrawl`)}getInputRequirement(){return UI(this.payload.config)}getRawOutputFields(){return{[zI.name]:this.catalogOutput(zI),[BI.name]:this.catalogOutput(BI),[VI.name]:this.catalogOutput(VI)}}getConnectionsRequirements(){return[{provider:`firecrawl`,rateLimitRatio:1,rateLimitOperation:`firecrawl_generic`,allowManagedConnection:!0}]}},KI=HI,qI={pipeId:LI,basePipe:U(LI),label:`Scrape`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Turn any URL into clean data.`,tags:[V.SCRAPE],keywords:[`crawl`,`html`,`markdown`,`content`,`web page`,`fetch`],docPath:W(LI),billableOperations:WI,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`firecrawl`],managedProviders:[`firecrawl`],deprecatedProviders:[],defaultInputRequirement:UI(null),defaultPayload:{pipe_id:LI,run_if:null,connector:null,config:{scrape_main_only:!0,input_fields:{website_url:{alias:``}},output_fields:{website_markdown:{alias:``,enabled:!0},website_html:{alias:``,enabled:!1},website_links:{alias:``,enabled:!1}}}}},JI=`website:scrapelist:firecrawl@1`,YI={"website-scrapelist-firecrawl-v1-firecrawl":{allowManagedConnection:!0,provider:`firecrawl`,credits:{default:.1,level1:{credits:.05,weight:1}},mode:`onSuccess`,note:`You are charged per url that is scraped.`}},XI=g(`urls`),ZI=g(`scrape_list_response`),QI=r.object({pipe_id:r.literal(JI),connector:C(),run_if:b(),config:r.object({scrape_main_only:E({label:`Scrape main content only?`,defaultValue:!1,info:`If selected headers, footers, and sidebars will be excluded from the results.`,sectionKey:`general`,groupPath:`config.general`,path:`config.scrape_main_only`}),formats:Tu({options:[{label:`Markdown`,value:`markdown`},{label:`HTML`,value:`html`},{label:`Links`,value:`links`}],disableSearch:!0,info:`Choose what you want to scrape from the website`,required:!1,label:`Formats`,sectionKey:`general`,groupPath:`config.general`,path:`config.formats`}).default([]),input_fields:F(r.object({[XI.name]:w({fieldName:XI.name})})),output_fields:P(r.object({[ZI.name]:D({fieldName:ZI.name})}))}).optional()}),$I=e=>R(G(XI,e)),eL=class extends B{pipeId=JI;payload;payloadSchema=QI;billableOperations=YI;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`firecrawl`]}estimateBillableOperations(e){return[{billableOperation:`website-scrapelist-firecrawl-v1-firecrawl`,quantity:e.count*5}]}getInputRequirement(){return $I(this.payload.config)}getRawOutputFields(){return{[ZI.name]:this.catalogOutput(ZI)}}getConnectionsRequirements(){return[{provider:`firecrawl`,rateLimitRatio:1,rateLimitOperation:`firecrawl_generic`,allowManagedConnection:!0}]}},tL=QI,nL={pipeId:JI,basePipe:U(JI),label:`Scrape list`,executionMode:`single`,categories:[`tools`],lifecycle:null,description:`Turn a list of URLs into clean scraped data.`,tags:[V.SCRAPE],keywords:[`crawl`,`html`,`markdown`,`content`,`batch`,`bulk`],docPath:W(JI),billableOperations:YI,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`firecrawl`],managedProviders:[`firecrawl`],deprecatedProviders:[],defaultInputRequirement:$I(null),defaultPayload:{pipe_id:JI,run_if:null,connector:null,config:{scrape_main_only:!0,formats:[`html`,`markdown`,`links`],input_fields:{urls:{alias:``}},output_fields:{scrape_list_response:{alias:``,enabled:!0}}}}},rL=`companies:profiles:crustdata@1.companies:profiles:crustdata@2.companies:profiles:crustdata@3.companies:profiles:amplemarket@1.companies:profiles:amplemarket@2.people:profiles:crustdata@1.people:profiles:crustdata@2.people:profiles:crustdata@3.people:profiles:amplemarket@1.people:profiles:amplemarket@2.companies:entitysearch:parallel@1.people:entitysearch:parallel@1.people:eventguests:luma@1.people:channelmembers:slack@1.events:googlecalendar@1.sheet:rows@1.bucket:entries@1.query:postgres@1.query:databricks@1.posts:content:crustdata@1.contacts:hubspot@1.companies:hubspot@1.deals:hubspot@1.owners:hubspot@1.contacts:salesforce@1.leads:salesforce@1.accounts:salesforce@1.opportunities:salesforce@1.users:salesforce@1.query:salesforce@1.people:attio@1.companies:attio@1.deals:attio@1.records:attio@1.entries:attio@1.query:attio@1.users:attio@1`.split(`.`),iL=r.enum(rL);function aL(e,t){let n={name:e,config:t};return It.hashObject(n)}var Z=class{estimateBillableOperations(e){let{cost:t,billableOperation:n}=this.billing;return t.allowManagedConnection?[{billableOperation:n,quantity:t.mode===`per_result`?e.count:t.mode===`per_page`?e.count/100:1}]:[]}validatePayload(e){try{return this.schema.parse(e)}catch(e){throw e instanceof n?Error(JSON.stringify(r.prettifyError(e))):e}}catalogOutput(e){return{name:e.name,enabled:!!this.payload.config?.output_fields?.[e.name].enabled,type:e.type,format:e.format,resolvedName:this.payload.config?.output_fields?.[e.name]?.alias||e.name,description:e.description,jsonMeta:e.jsonMeta,label:e.label,isCatalogFIeld:!0,order:`order`in e?e.order:void 0}}getOutputFields(){let e={};for(let[t,n]of Object.entries(this.getRawOutputFields()))n.enabled&&(e[t]=n);return e}getStaticFieldDefinitions(){let e={};for(let t of Object.values(this.getOutputFields()))e[t.resolvedName]={type:t.type,label:t.label??null,format:t.format??null,json_metadata:null};return e}getDedupConfig(){return{match:`any`,fields:[]}}async getAgentContext(e){return null}getHashKey(){return aL(this.searchId,this.payload)}};function Q(e){return e.split(`@`)[0]}function $(e){return`/docs/search-catalog/${Q(e)}/${e.split(`@`)[1]}`}const oL=()=>ju({path:`config.custom_properties`,groupPath:`config.general`,sectionKey:`general`,label:`Custom fields`,placeholder:`Lead_Score__c`,info:"Field API names added to the record JSON under `custom_properties` — custom fields included; dotted parent paths like `Account.Industry` work (standard-set names are already top-level)."}),sL=e=>Au({path:`config.filters`,groupPath:`config.general`,sectionKey:`general`,label:`Field filters`,fieldNamePlaceholder:e,info:`Rows filter on any Salesforce field by API name — custom fields and dotted parent paths included. Picklist values are the org's API values (case-sensitive); date values accept ISO dates or SOQL literals like LAST_N_DAYS:30.`}),cL=e=>Uu({path:`config.list_view`,groupPath:`config.general`,sectionKey:`general`,label:`List view`,required:!1,info:`Run one of the org's own list views instead of filters — the view's conditions (including 'My …' scoping) apply server-side. Cannot be combined with filters or shortcuts.`,enabledIf:_(`salesforce`),optionsDef:Zd(e)}),lL=()=>Uu({path:`config.owner`,groupPath:`config.general`,sectionKey:`general`,label:`Owner`,required:!1,info:``,enabledIf:_(`salesforce`),optionsDef:Kd}),uL=[{label:`Any time`,value:``},{label:`Today`,value:`l24h`},{label:`Last 2 days`,value:`l48h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}],dL=()=>Hu({required:!1,path:`config.created_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Created at`,description:``,options:uL}).default(``),fL=()=>Hu({required:!1,path:`config.modified_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Last modified`,description:``,options:uL}).default(``),pL=()=>N({path:`config.limit`,min:1,max:500,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Rows per page.`}).default(100),mL=()=>Bu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),hL=e=>t=>{let n=t.value;if(!Qd(n.list_view))return;let r=[];n.filters&&r.push(`filters`);for(let t of e){let e=n[t];if(!(e==null||e===``||e===!1)){if(typeof e==`object`&&!Array.isArray(e)){let t=e;if((t.include?.length??0)===0&&(t.exclude?.length??0)===0&&t.min==null&&t.max==null)continue}r.push(t)}}r.length>0&&t.issues.push({code:`custom`,input:n.list_view,message:`A list view already carries its own conditions — clear ${r.join(`, `)} or clear the list view.`,path:[`list_view`]})},gL=`accounts:salesforce@1`,_L=g(`salesforce_record_id`),vL=g(`company_name`),yL=g(`company_domain`),bL=g(`salesforce_account_match`),xL=r.object({search_id:r.literal(gL),connector:Yl(),config:r.object({custom_properties:oL(),filters:sL(`Industry`),list_view:cL(`Account`),domains:k({path:`config.domains`,groupPath:`config.general`,sectionKey:`general`,label:`Domains`,placeholder:`acme.com`,info:`Matches exact spellings of the Website URL (Salesforce has no domain field).`}),industry:Uu({path:`config.industry`,groupPath:`config.general`,sectionKey:`general`,label:`Industry`,required:!1,info:`The org's actual Industry picklist values.`,enabledIf:_(`salesforce`),optionsDef:Xd(`Account`,`Industry`)}),owner:lL(),created_within:dL(),modified_within:fL(),limit:pL(),cursor:mL(),output_fields:P(r.object({[_L.name]:A({fieldName:_L.name}),[vL.name]:A({fieldName:vL.name}),[yL.name]:A({fieldName:yL.name}),[bL.name]:A({fieldName:bL.name})}))}).check(e=>hL([`domains`,`industry`,`owner`,`created_within`,`modified_within`])(e))}),SL={allowManagedConnection:!1,mode:null,credits:null,info:`Salesforce searches are free — you bring your own Salesforce connection.`},CL=`accounts-salesforce-v1`,wL=class extends Z{billing={billableOperation:CL,cost:SL};searchId=gL;schema=xL;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[_L.name]:this.catalogOutput(_L),[vL.name]:this.catalogOutput(vL),[yL.name]:this.catalogOutput(yL),[bL.name]:this.catalogOutput(bL)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitOperation:`salesforce_api`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`salesforce_record_id`}]}}async getAgentContext(e){return ef(e,{objects:[`Account`],includeListViewsFor:[`Account`]})}},TL=xL,EL={searchId:gL,billableOperation:CL,baseSearch:Q(gL),outputFieldMode:`static`,paginationType:`cursor`,label:`Salesforce accounts`,categories:[`companies`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List accounts from your Salesforce org: identity columns (id, name, domain) plus a JSON record with the standard field set and any custom fields you pick. Filter with field conditions or run one of the org's own list views.`,tags:[V.WEBSITE,V.NEW],keywords:[`crm`,`sfdc`,`company`,`list`,`records`,`import`,`organization`],docPath:$(gL),guide:"Call get_provider_context first for the org's field API names and picklist values. The domain column is derived from the Website URL (Salesforce has no domain field) — accounts with exotic Website formats yield null. Person accounts (B2C orgs) appear as accounts here. To find stale accounts, filter on `LastActivityDate` (e.g. `LastActivityDate < LAST_N_DAYS:90` — closed tasks + events, not literal touches). `list_view` runs the org's own segmentation (XOR with filters/shortcuts). Results page by record id; rows the connected user cannot see are silently absent.",cost:SL,provider:`salesforce`,defaultPayload:{search_id:gL,connector:{strategy:`first`,connections:[]},config:{custom_properties:[],filters:null,list_view:``,domains:{include:[],exclude:[]},industry:``,owner:``,created_within:``,modified_within:``,limit:100,cursor:``,output_fields:{salesforce_record_id:{enabled:!0,alias:``},company_name:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},salesforce_account_match:{enabled:!0,alias:``}}}}},DL=`bucket:entries@1`,OL=r.object({search_id:r.literal(DL),connector:Yl(),config:r.object({bucket:Bu({path:`config.bucket`,groupPath:`config.general`,inputType:`text`,label:`Bucket`,sectionKey:`general`,description:`The bucket's org-unique slug. Its entries (one row each) are returned.`}),limit:N({path:`config.limit`,min:1,max:2e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of entries per page`}).default(100),cursor:Bu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),include_metadata:Ru({path:`config.include_metadata`,groupPath:`config.general`,sectionKey:`general`,label:`Include metadata`,description:`Provenance (source sheet/row/run) and expiry as extra columns.`,defaultValue:!1})})}),kL={allowManagedConnection:!0,mode:`per_search`,credits:{default:0},info:`Reading your own bucket is free.`},AL=`bucket-entries-v1-pipe0`,jL=class extends Z{billing={billableOperation:AL,cost:kL};searchId=DL;schema=OL;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitOperation:`pipe0_api_operation`,rateLimitRatio:1,allowManagedConnection:!0}]}},ML=OL,NL={searchId:DL,billableOperation:AL,baseSearch:Q(DL),outputFieldMode:`dynamic`,paginationType:`cursor`,label:`Read bucket entries`,categories:[`data`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`List the entries in a bucket — one row per entry, with its identifying field values (and counter number / expiry).`,tags:[V.FIELDS,V.NEW],keywords:[`claims`,`counter`,`suppression`,`list`,`lookup`,`rows`],docPath:$(DL),cost:kL,provider:`pipe0`,defaultPayload:{search_id:DL,connector:{strategy:`first`,connections:[]},config:{bucket:``,limit:100,cursor:``,include_metadata:!1}}},PL=()=>N({path:`config.limit`,min:1,max:500,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Rows per page`}).default(100),FL=()=>N({path:`config.page_number`,min:1,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Page`,description:`1-based page index (offset pagination; Attio reports no total count)`}).nullable().default(1),IL=(e,t)=>ju({path:`config.custom_properties`,groupPath:`config.general`,sectionKey:`general`,label:`Custom attributes`,placeholder:e,info:`Added to the record JSON alongside the standard set — attribute api_slugs, custom attributes included.`,optionsDef:t}),LL=e=>Au({path:`config.filters`,groupPath:`config.general`,sectionKey:`general`,label:`Attribute filters`,fieldNamePlaceholder:e,info:"Rows filter on any Attio attribute by api_slug — custom attributes included; target value sub-properties as `slug.sub_property` (e.g. `domains.root_domain`). Select/status values are workspace-defined TITLES and support equality only. Operator support varies PER ATTRIBUTE TYPE and is enforced by Attio, not this schema (a 400 names the allowed set) — $eq works everywhere; prefer it unless you know the attribute accepts more."}),RL=e=>Uu({path:`config.saved_view`,groupPath:`config.general`,sectionKey:`general`,label:`Saved view`,required:!1,info:`Filter with one of this workspace's saved Attio views instead of the fields above — views and filters are mutually exclusive.`,optionsDef:e}),zL=()=>Hu({required:!1,path:`config.created_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Created at`,description:``,options:[{label:`Any time`,value:``},{label:`Last 24 hours`,value:`l24h`},{label:`Last 48 hours`,value:`l48h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}]}).default(``);function BL(e,t){let n=e.value,r=Array.isArray(n.saved_view)?n.saved_view[0]:n.saved_view;if(!r)return;let i=[];(n.filters?.conditions?.length??0)>0&&i.push(`filters`);for(let e of t){let t=n[e];(Array.isArray(t)?t.length>0:typeof t==`object`&&t?Object.values(t).some(e=>Array.isArray(e)?e.length>0:!!e):t)&&i.push(e)}i.length>0&&e.issues.push({code:`custom`,input:r,path:[`saved_view`],message:`A saved view replaces the filter fields — clear ${i.join(`, `)} or clear the saved view (Attio rejects the combination).`})}const VL=`companies:attio@1`,HL=g(`attio_record_id`),UL=g(`company_name`),WL=g(`company_domain`),GL=g(`attio_company_match`),KL=r.object({search_id:r.literal(VL),connector:Yl(),config:r.object({custom_properties:IL(`categories`,kf({target:`objects`,identifier:`companies`})),filters:LL(`categories`),domains:k({path:`config.domains`,groupPath:`config.general`,sectionKey:`general`,label:`Domains`,placeholder:`acme.com`}),domain_match:Hu({required:!1,path:`config.domain_match`,groupPath:`config.general`,sectionKey:`general`,label:`Domain matching`,description:`Exact domain values are unique per company; root domain also matches subdomain records (app.acme.com).`,options:[{label:`Exact domain`,value:`domain`},{label:`Root domain`,value:`root_domain`}]}).default(`domain`),saved_view:RL(Tf({target:`objects`,identifier:`companies`})),created_within:zL(),limit:PL(),page_number:FL(),output_fields:P(r.object({[HL.name]:A({fieldName:HL.name}),[UL.name]:A({fieldName:UL.name}),[WL.name]:A({fieldName:WL.name}),[GL.name]:A({fieldName:GL.name})}))}).check(e=>BL(e,[`domains`,`created_within`]))}),qL={allowManagedConnection:!1,mode:null,credits:null,info:`Searching your own Attio workspace is free.`},JL=`companies-attio-v1`,YL=class extends Z{billing={billableOperation:JL,cost:qL};searchId=VL;schema=KL;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[HL.name]:this.catalogOutput(HL),[UL.name]:this.catalogOutput(UL),[WL.name]:this.catalogOutput(WL),[GL.name]:this.catalogOutput(GL)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitOperation:`attio_query`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`attio_record_id`}]}}async getAgentContext(e){return jf(e,{objects:[`companies`],includeViewsFor:[`companies`]})}},XL=KL,ZL={searchId:VL,billableOperation:JL,baseSearch:Q(VL),outputFieldMode:`static`,paginationType:`page_number`,label:`Attio companies`,categories:[`companies`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List companies from your Attio workspace: identity columns (id, name, domain) plus a JSON record with the standard attribute set and any custom attributes you pick.`,tags:[V.NEW],keywords:[`crm`,`list`,`records`,`import`,`account`,`workspace`],docPath:$(VL),guide:`Call get_provider_context first for this workspace's attribute slugs and enumeration titles — use api_slugs verbatim. Standard attributes become typed columns; everything else rides in the company JSON — expand it or chain json:extract downstream. The domains shortcut matches exact domains by default (unique per company) or root domains (subdomains too); a saved view replaces the filter fields entirely. For staleness, filter or sort on last_interaction (targets its interacted_at timestamp) — Attio's read-only communication-intelligence signal, auto-populated from members' synced email/calendar. Attio reports no total count — page until a short page.`,cost:qL,provider:`attio`,defaultPayload:{search_id:VL,connector:{strategy:`first`,connections:[]},config:{custom_properties:[],filters:null,domains:{include:[],exclude:[]},domain_match:`domain`,saved_view:``,created_within:``,limit:100,page_number:1,output_fields:{attio_record_id:{enabled:!0,alias:``},company_name:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},attio_company_match:{enabled:!0,alias:``}}}}},QL=`companies:entitysearch:parallel@1`,$L=g(`company_name`),eR=g(`company_domain`),tR=g(`company_description`),nR=g(`company_profile_url`),rR=g(`parallel_company_entity_match`),iR=r.object({search_id:r.literal(QL),connector:Xl(),config:r.object({objective:Vu({path:`config.objective`,sectionKey:`general`,groupPath:`config.general`,label:`Objective`,rows:4,minLength:10,placeholder:`AI startups in Europe that raised a Series A in 2024`,description:`Plain-text natural-language description of the companies to find.`}),limit:N({path:`config.limit`,min:5,max:1e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of entities to return (5–1000).`}).default(100),output_fields:P(r.object({[$L.name]:A({fieldName:$L.name}),[eR.name]:A({fieldName:eR.name}),[tR.name]:A({fieldName:tR.name}),[nR.name]:A({fieldName:nR.name}),[rR.name]:A({fieldName:rR.name})}))})}),aR={match:`any`,fields:[{fieldName:`company_profile_url`}]},oR={allowManagedConnection:!0,mode:`per_page`,credits:{default:.5},info:`1 page = 100 results; billed per 100 results returned (e.g. 100 results = 1 page, 1,000 results = 10 pages). A search returns up to your selected limit in a single request.`},sR=`companies-entitysearch-parallel-v1`,cR=class extends Z{billing={billableOperation:sR,cost:oR};searchId=QL;schema=iR;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[$L.name]:this.catalogOutput($L),[eR.name]:this.catalogOutput(eR),[tR.name]:this.catalogOutput(tR),[nR.name]:this.catalogOutput(nR),[rR.name]:this.catalogOutput(rR)}}getConnectionsRequirements(){return[{provider:`parallel`,rateLimitOperation:`parallel_entity_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return aR}},lR=iR,uR={searchId:QL,billableOperation:sR,baseSearch:Q(QL),label:`Company search (AI)`,categories:[`companies`],paginationType:`page_number`,hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Natural-language company search powered by Parallel Entity Search — for asks static filters can't express.`,tags:[V.COMPANY_PROFILES],keywords:[`find companies`,`accounts`,`prospect`,`natural language`,`organizations`],docPath:$(QL),guide:`Best for asks the static filters of the amplemarket or crustdata company searches can't express — check their schemas first. Returns sparse records (identity basics plus a match rationale) that need further enrichment, where the filter-based datasets return full profiles. When filters get close, prefer a broad filter-based search narrowed by enrichment + row filtering over a natural-language objective.`,cost:oR,provider:`parallel`,defaultPayload:{search_id:QL,connector:null,config:{objective:``,limit:100,output_fields:{company_name:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},company_description:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},parallel_company_entity_match:{enabled:!1,alias:``}}}}},dR=`companies:hubspot@1`,fR=g(`hubspot_object_id`),pR=g(`company_name`),mR=g(`company_domain`),hR=g(`hubspot_company_match`),gR=r.object({search_id:r.literal(dR),connector:Yl(),config:r.object({query:Bu({path:`config.query`,groupPath:`config.general`,inputType:`text`,label:`Search text`,sectionKey:`general`,info:`Free-text search over HubSpot's default searchable company properties (name, domain, website, phone).`}).nullable(),custom_properties:ju({path:`config.custom_properties`,groupPath:`config.general`,sectionKey:`general`,label:`Custom properties`,placeholder:`account_tier`,info:"Added to the company JSON under `custom_properties` — internal names, custom properties included (standard-set names are already top-level)."}),filters:Au({path:`config.filters`,groupPath:`config.general`,sectionKey:`general`,label:`Property filters`,fieldNamePlaceholder:`industry`,info:`Rows filter on any HubSpot property by internal name — including custom properties. Enumeration values are the portal's internal option values (case-sensitive).`}),domains:k({path:`config.domains`,groupPath:`config.general`,sectionKey:`general`,label:`Domains`,placeholder:`acme.com`}),owner:Uu({path:`config.owner`,groupPath:`config.general`,sectionKey:`general`,label:`Owner`,required:!1,info:``,enabledIf:_(`hubspot`),optionsDef:up}),created_within:Hu({required:!1,path:`config.created_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Created at`,description:``,options:[{label:`Any time`,value:``},{label:`Last 24 hours`,value:`l24h`},{label:`Last 48 hours`,value:`l48h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}]}).default(``),modified_within:Hu({required:!1,path:`config.modified_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Last modified`,description:``,options:[{label:`Any time`,value:``},{label:`Last 24 hours`,value:`l24h`},{label:`Last 48 hours`,value:`l48h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}]}).default(``),limit:N({path:`config.limit`,min:1,max:200,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Rows per page (HubSpot search caps pages at 200 and total results at 10,000).`}).default(100),cursor:Bu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[fR.name]:A({fieldName:fR.name}),[pR.name]:A({fieldName:pR.name}),[mR.name]:A({fieldName:mR.name}),[hR.name]:A({fieldName:hR.name})}))})}),_R={allowManagedConnection:!1,mode:null,credits:null,info:`Searching your own HubSpot portal is free.`},vR=`companies-hubspot-v1`,yR=class extends Z{billing={billableOperation:vR,cost:_R};searchId=dR;schema=gR;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[fR.name]:this.catalogOutput(fR),[pR.name]:this.catalogOutput(pR),[mR.name]:this.catalogOutput(mR),[hR.name]:this.catalogOutput(hR)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitOperation:`hubspot_crm_search`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`hubspot_object_id`}]}}async getAgentContext(e){return pp(e,{objectTypes:[[`companies`,`0-2`]]})}},bR=gR,xR={searchId:dR,billableOperation:vR,baseSearch:Q(dR),outputFieldMode:`static`,paginationType:`cursor`,label:`HubSpot companies`,categories:[`companies`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List companies from your HubSpot portal: identity columns (id, name, domain) plus a JSON record with the standard property set and any custom properties you pick.`,tags:[V.WEBSITE,V.NEW],keywords:[`crm`,`lookup`,`list`,`records`,`import`,`account`],docPath:$(dR),guide:"Call get_provider_context first for this portal's property names and enumeration option values — use internal names verbatim. Domain include/exclude matches the primary `domain` property (lowercased). Newly created records lag search indexing by a few moments; archived records never appear. Total results cap at 10,000 per query.",cost:_R,provider:`hubspot`,defaultPayload:{search_id:dR,connector:{strategy:`first`,connections:[]},config:{query:``,custom_properties:[],filters:null,domains:{include:[],exclude:[]},owner:``,created_within:``,modified_within:``,limit:100,cursor:``,output_fields:{hubspot_object_id:{enabled:!0,alias:``},company_name:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},hubspot_company_match:{enabled:!0,alias:``}}}}};function SR(e){let t=!0,n=e=>{if(t!==!1&&typeof e==`object`&&e){Array.isArray(e)&&e.length>0&&(t=!1);for(let r of Object.values(e))typeof r!=`object`&&r!=null&&r!==``&&(t=!1),typeof r==`object`&&r&&n(r)}};return n(e),t}const CR=`companies:profiles:amplemarket@2`,wR=g(`company_name`),TR=g(`company_domain`),ER=g(`company_description`),DR=g(`company_profile_url`),OR=g(`amplemarket_company_match`),kR=r.object({search_id:r.literal(CR),connector:Xl(),config:r.object({limit:N({label:`Limit`,description:`Max number of search results`,path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,sectionKey:`pagination`}).default(100),page_number:N({path:`config.page_number`,groupPath:`config.pagination`,label:`Page number`,min:1,sectionKey:`pagination`,description:``}).nullish(),output_fields:P(r.object({[wR.name]:A({fieldName:wR.name}),[TR.name]:A({fieldName:TR.name}),[ER.name]:A({fieldName:ER.name}),[DR.name]:A({fieldName:DR.name}),[OR.name]:A({fieldName:OR.name})})),filters:r.object({hq_locations:M({path:`config.filters.hq_locations`,sectionKey:`config.filters`,label:`HQ locations`,description:``,placeholder:J(`location`),groupPath:`config.filters.location`,optionsDef:h(`locations`)}).default({include:[],exclude:[]}),company_names:k({sectionKey:`config.filters`,path:`config.filters.company_names`,label:`Company names`,description:``,placeholder:J(`company_name`),groupPath:`config.filters.categories`,suggestionsDef:h(`company_names`)}).default({include:[],exclude:[]}),company_domains:k({sectionKey:`config.filters`,path:`config.filters.company_domains`,label:`Company domains`,description:``,placeholder:J(`company_domain`),groupPath:`config.filters.categories`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),company_profile_urls:k({sectionKey:`config.filters`,path:`config.filters.company_profile_urls`,label:`Company LinkedIn URLs`,description:``,groupPath:`config.filters.categories`}).default({include:[],exclude:[]}),company_types:j({sectionKey:`config.filters`,path:`config.filters.company_types`,disableSearch:!1,label:`Company Type`,description:``,groupPath:`config.filters.categories`,options:m(`amplemarket.company_types`),required:!1}).default([]),investors:Wu({sectionKey:`config.filters`,path:`config.filters.investors`,label:`Investor names`,optionsDef:h(`company.crunchbase_investors.crustdata`),description:`A list of company investor names`,placeholder:J(`investor`),groupPath:`config.filters.investors`,disableSearch:!1,required:!1}).default([]),company_industries:Pu({sectionKey:`config.filters`,path:`config.filters.company_industries`,optionsDef:Ge(`amplemarket.industries`),disableSearch:!1,label:`Industries`,description:``,placeholder:J(`industry`),groupPath:`config.filters.industry`}).default({include:[],exclude:[]}),customer_types:j({sectionKey:`config.filters`,path:`config.filters.customer_types`,options:[{value:`b2b`,label:`B2B`},{value:`b2c`,label:`B2C`}],required:!1,disableSearch:!0,label:`Customer Types`,description:``,groupPath:`config.filters.industry`}).default([]),keywords:k({sectionKey:`config.filters`,path:`config.filters.keywords`,label:`Keywords`,description:``,groupPath:`config.filters.industry`}).default({include:[],exclude:[]}),revenue_groups:j({path:`config.filters.revenue_groups`,sectionKey:`config.filters`,label:`Revenue groups`,description:``,disableSearch:!0,options:m(`amplemarket.company_revenue`),required:!1,groupPath:`config.filters.financials`}).default([]),founded_year:Nu({path:`config.filters.founded_year`,sectionKey:`config.filters`,label:`Founded year`,groupPath:`config.filters.general`,min:0,max:2040,description:``}).default({min:null,max:null}),open_position_titles:O({path:`config.filters.open_position_titles`,sectionKey:`config.filters`,label:`Job openings for titles`,groupPath:`config.filters.job_openings`,description:``,placeholder:J(`title`),suggestionsDef:h(`titles`)}),headcount:j({sectionKey:`config.filters`,path:`config.filters.headcount`,disableSearch:!1,options:m(`amplemarket.company_size`),label:`Company sizes`,required:!1,description:``,groupPath:`config.filters.company_size`}).default([]),headcount_growth_l6m_in_percent:Nu({path:`config.filters.headcount_growth_l6m_in_percent`,sectionKey:`config.filters`,label:`Headcount growth over last 6 months (in %)`,groupPath:`config.filters.company_size`,description:``,max:1e4,min:0}).default({min:null,max:null})}).check(e=>{SR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),AR={match:`any`,fields:[{fieldName:`company_profile_url`}]},jR={allowManagedConnection:!0,mode:`per_page`,credits:{default:2}},MR=`companies-profiles-amplemarket-v2`,NR=class extends Z{billing={billableOperation:MR,cost:jR};searchId=CR;schema=kR;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[wR.name]:this.catalogOutput(wR),[TR.name]:this.catalogOutput(TR),[ER.name]:this.catalogOutput(ER),[DR.name]:this.catalogOutput(DR),[OR.name]:this.catalogOutput(OR)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitOperation:`amplemarket_company_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return AR}},PR=kR,FR={searchId:CR,billableOperation:MR,baseSearch:Q(`companies:profiles:amplemarket@2`),label:`Company search`,categories:[`companies`],paginationType:`page_number`,hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Filter-based company search on Amplemarket's dataset — precise firmographic filters.`,tags:[V.COMPANY_PROFILES],keywords:[`accounts`,`prospect`,`find companies`,`organizations`,`firmographic`],docPath:$(CR),guide:`The most precise of the three prospecting datasets — prefer it when its filters express the ask exactly. If a needed criterion is missing here, check the crustdata search's wider filter set before falling back to the natural-language parallel search.`,cost:jR,provider:`amplemarket`,defaultPayload:{search_id:CR,connector:null,config:{limit:100,page_number:1,output_fields:{company_name:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},company_description:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},amplemarket_company_match:{enabled:!0,alias:``}},filters:{company_industries:{include:[],exclude:[]},company_names:{include:[],exclude:[]},company_profile_urls:{include:[],exclude:[]},company_types:[],company_domains:{include:[],exclude:[]},customer_types:[],headcount_growth_l6m_in_percent:{min:null,max:null},founded_year:{min:null,max:null},revenue_groups:[],investors:[],keywords:{include:[],exclude:[]},open_position_titles:[],headcount:[],hq_locations:{include:[],exclude:[]}}}}},IR=`companies:profiles:crustdata@3`,LR=[{label:`Any time`,value:``},{label:`Last month`,value:`l1m`},{label:`Last 3 months`,value:`l3m`},{label:`Last 6 months`,value:`l6m`},{label:`Last 12 months`,value:`l12m`},{label:`Last 2 years`,value:`l24m`}],RR=[{label:`Any time`,value:``},{label:`Last 12 months`,value:`l12m`},{label:`Last 2 years`,value:`l24m`},{label:`Last 5 years`,value:`l60m`}],zR=g(`company_name`),BR=g(`company_domain`),VR=g(`company_profile_url`),HR=g(`crustdata_company_match_v2`),UR=r.object({search_id:r.literal(IR),connector:Xl(),config:r.object({limit:N({path:`config.limit`,min:1,max:1e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Page size`,description:`Max number of search results per page`}).default(100),cursor:Bu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[zR.name]:A({fieldName:zR.name}),[BR.name]:A({fieldName:BR.name}),[VR.name]:A({fieldName:VR.name}),[HR.name]:A({fieldName:HR.name})})),filters:r.object({company_names:k({path:`config.filters.company_names`,sectionKey:`config.filters`,label:`Company name`,description:``,placeholder:J(`company_name`),maxItems:1e3,groupPath:`config.filters.company`,suggestionsDef:h(`company_names`,{widgets:{emoji:{char:`🏷️`}}})}).default({include:[],exclude:[]}),company_domains:k({path:`config.filters.company_domains`,sectionKey:`config.filters`,label:`Company domain`,description:``,placeholder:J(`company_domain`),maxItems:1e3,groupPath:`config.filters.company`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),company_profile_urls:k({path:`config.filters.company_profile_urls`,sectionKey:`config.filters`,label:`Company LinkedIn URL`,description:``,placeholder:`https://linkedin.com/company/...`,maxItems:1e3,groupPath:`config.filters.company`}).default({include:[],exclude:[]}),company_types:j({path:`config.filters.company_types`,sectionKey:`config.filters`,label:`Company type`,description:``,placeholder:`Public, Private, ...`,disableSearch:!0,required:!1,options:m(`crustdata2.company_types`),groupPath:`config.filters.company`}).default([]),year_founded:Iu({path:`config.filters.year_founded`,sectionKey:`config.filters`,label:`Year founded`,description:``,legend:`e.g. 2018 - 2024`,min:1e3,max:2100,groupPath:`config.filters.company`}),hq_locations:Wu({path:`config.filters.hq_locations`,sectionKey:`config.filters`,label:`HQ location`,description:``,disableSearch:!1,placeholder:J(`location`),required:!1,groupPath:`config.filters.location`,optionsDef:h(`locations`)}).default([]),hq_countries:Pu({path:`config.filters.hq_countries`,sectionKey:`config.filters`,label:`HQ country`,description:``,placeholder:`United States, Germany, ...`,optionsDef:Ge(`crustdata2.countries`),groupPath:`config.filters.location`}).default({include:[],exclude:[]}),industries:M({path:`config.filters.industries`,sectionKey:`config.filters`,label:`Industry`,description:``,placeholder:J(`industry`),groupPath:`config.filters.industry`,optionsDef:h(`linkedin_industries.crustdata`,{limit:300})}).default({include:[],exclude:[]}),categories:M({path:`config.filters.categories`,sectionKey:`config.filters`,label:`Category`,description:``,placeholder:`Artificial Intelligence (AI), SaaS, ...`,groupPath:`config.filters.industry`,optionsDef:h(`company.categories.crustdata`)}).default({include:[],exclude:[]}),specialities_keywords:k({path:`config.filters.specialities_keywords`,sectionKey:`config.filters`,label:`Specialities contain keywords`,description:`Matches the speciality tags a company lists on its profile. Includes match fuzzily; excludes remove exact tags only.`,placeholder:`CRM, Machine Learning, ...`,maxItems:100,groupPath:`config.filters.industry`,suggestionsDef:h(`company.specialities.crustdata`)}).default({include:[],exclude:[]}),headcount_brackets:j({path:`config.filters.headcount_brackets`,sectionKey:`config.filters`,label:`Headcount`,description:``,placeholder:`1-10`,disableSearch:!0,required:!1,options:m(`crustdata.company_size`),groupPath:`config.filters.company_size`}).default([]),engineering_headcount_brackets:j({path:`config.filters.engineering_headcount_brackets`,sectionKey:`config.filters`,label:`Engineering team size`,description:``,placeholder:`11-50`,disableSearch:!0,required:!1,options:m(`crustdata2.function_headcount`),groupPath:`config.filters.company_size`}).default([]),sales_headcount_brackets:j({path:`config.filters.sales_headcount_brackets`,sectionKey:`config.filters`,label:`Sales team size`,description:``,placeholder:`11-50`,disableSearch:!0,required:!1,options:m(`crustdata2.function_headcount`),groupPath:`config.filters.company_size`}).default([]),headcount_growth_l6m_in_percent:Iu({path:`config.filters.headcount_growth_l6m_in_percent`,sectionKey:`config.filters`,label:`Headcount growth over last 6 months in percent`,description:`Negative values match shrinking companies.`,legend:`e.g. 15 - 200`,min:-100,max:1e5,groupPath:`config.filters.company_size`}),revenue_in_usd:Iu({path:`config.filters.revenue_in_usd`,sectionKey:`config.filters`,label:`Estimated annual revenue (USD)`,description:``,legend:`1k - 10B`,min:1e3,max:1e10,groupPath:`config.filters.financials`}),last_funding_round_types:j({path:`config.filters.last_funding_round_types`,sectionKey:`config.filters`,label:`Last funding round`,description:``,placeholder:`Series A`,disableSearch:!0,required:!1,options:m(`crustdata.last_funding_round_type`),groupPath:`config.filters.financials`}).default([]),last_funding_within:Hu({path:`config.filters.last_funding_within`,sectionKey:`config.filters`,label:`Last funding raised within`,description:`Only companies whose latest funding round closed within this time window.`,placeholder:`Last month, last year, ...`,options:LR,required:!1,defaultValue:``,groupPath:`config.filters.financials`}).default(``),last_funding_amount_in_usd:Iu({path:`config.filters.last_funding_amount_in_usd`,sectionKey:`config.filters`,label:`Last funding amount (USD)`,description:``,legend:`1k - 10B`,min:1e3,max:1e10,groupPath:`config.filters.financials`}),total_funding_amount_in_usd:Iu({path:`config.filters.total_funding_amount_in_usd`,sectionKey:`config.filters`,label:`Total funding (USD)`,description:``,legend:`1k - 10B`,min:1e3,max:1e10,groupPath:`config.filters.financials`}),investors:k({path:`config.filters.investors`,sectionKey:`config.filters`,label:`Investors`,description:`Investor names as Crustdata records them, e.g. "Sequoia Capital".`,placeholder:J(`investor`),maxItems:1e3,groupPath:`config.filters.financials`,suggestionsDef:h(`company.crunchbase_investors.crustdata`)}).default({include:[],exclude:[]}),is_acquired:zu({path:`config.filters.is_acquired`,sectionKey:`config.filters`,label:`Acquired`,description:``,defaultValue:null,groupPath:`config.filters.status`}),ipo_within:Hu({path:`config.filters.ipo_within`,sectionKey:`config.filters`,label:`IPO within`,description:`Only companies that went public within this time window.`,placeholder:`Last year, last 5 years, ...`,options:RR,required:!1,defaultValue:``,groupPath:`config.filters.status`}).default(``),markets:Pu({path:`config.filters.markets`,sectionKey:`config.filters`,label:`Stock market`,description:``,placeholder:`NASDAQ, NYSE, ...`,optionsDef:Ge(`crustdata2.markets`),groupPath:`config.filters.status`}).default({include:[],exclude:[]}),follower_count_brackets:j({path:`config.filters.follower_count_brackets`,sectionKey:`config.filters`,label:`Number of LinkedIn followers`,description:``,placeholder:`1-500`,disableSearch:!0,required:!1,options:m(`crustdata.company_followers`),groupPath:`config.filters.web_presence`}).default([]),follower_growth_l6m_in_percent:Iu({path:`config.filters.follower_growth_l6m_in_percent`,sectionKey:`config.filters`,label:`LinkedIn follower growth over last 6 months in percent`,description:`Negative values match shrinking audiences.`,legend:`e.g. 20 - 500`,min:-100,max:1e5,groupPath:`config.filters.web_presence`}),technologies:M({path:`config.filters.technologies`,sectionKey:`config.filters`,label:`Technologies used`,description:`Technologies detected on the company's web presence and job postings.`,placeholder:`Salesforce, Cloudflare, ...`,groupPath:`config.filters.technology`,optionsDef:h(`company.technologies.crustdata`)}).default({include:[],exclude:[]}),competitor_domains:O({path:`config.filters.competitor_domains`,sectionKey:`config.filters`,label:`Competitor domain`,description:`Companies Crustdata tracks as competitors of the given domains.`,placeholder:J(`company_domain`),maxItems:100,groupPath:`config.filters.competitors`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})})}).check(e=>{SR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),WR={match:`any`,fields:[{fieldName:`company_profile_url`}]},GR={allowManagedConnection:!0,mode:`per_result`,credits:{default:.15,level1:{credits:.07,weight:10}},info:`1 page = 100 records; 200 results = 2 pages`},KR=`companies-profiles-crustdata-v3`,qR=class extends Z{billing={billableOperation:KR,cost:GR};searchId=IR;schema=UR;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[zR.name]:this.catalogOutput(zR),[BR.name]:this.catalogOutput(BR),[VR.name]:this.catalogOutput(VR),[HR.name]:this.catalogOutput(HR)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_company_db_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return WR}},JR=UR,YR={searchId:IR,billableOperation:KR,baseSearch:Q(`companies:profiles:crustdata@2`),paginationType:`cursor`,label:`Company search`,categories:[`companies`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Filter-based company search on Crustdata's dataset — widest filter surface: funding, investors, growth, team composition, technology signals.`,tags:[V.COMPANY_PROFILES],keywords:[`accounts`,`prospect`,`find companies`,`organizations`,`firmographic`,`linkedin`],docPath:$(IR),guide:`The general-purpose default among the prospecting datasets, with the widest filter surface (funding, investors, growth, team composition, technology signals). When a criterion isn't an exact filter match, search broadly here and narrow afterwards — enrich the qualifying signal, then filter rows — rather than switching to the natural-language parallel search.`,cost:GR,provider:`crustdata`,defaultPayload:{search_id:IR,connector:null,config:{limit:100,cursor:``,output_fields:{company_name:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},crustdata_company_match_v2:{enabled:!0,alias:``}},filters:{company_names:{include:[],exclude:[]},company_domains:{include:[],exclude:[]},company_profile_urls:{include:[],exclude:[]},company_types:[],year_founded:{from:null,to:null},hq_locations:[],hq_countries:{include:[],exclude:[]},industries:{include:[],exclude:[]},categories:{include:[],exclude:[]},specialities_keywords:{include:[],exclude:[]},headcount_brackets:[],engineering_headcount_brackets:[],sales_headcount_brackets:[],headcount_growth_l6m_in_percent:{from:null,to:null},revenue_in_usd:{from:null,to:null},last_funding_round_types:[],last_funding_within:``,last_funding_amount_in_usd:{from:null,to:null},total_funding_amount_in_usd:{from:null,to:null},investors:{include:[],exclude:[]},is_acquired:null,ipo_within:``,markets:{include:[],exclude:[]},follower_count_brackets:[],follower_growth_l6m_in_percent:{from:null,to:null},technologies:{include:[],exclude:[]},competitor_domains:[]}}}},XR=`contacts:hubspot@1`,ZR=g(`hubspot_object_id`),QR=g(`email`),$R=g(`first_name`),ez=g(`last_name`),tz=g(`hubspot_contact_match`),nz=r.object({search_id:r.literal(XR),connector:Yl(),config:r.object({query:Bu({path:`config.query`,groupPath:`config.general`,inputType:`text`,label:`Search text`,sectionKey:`general`,info:`Free-text search over HubSpot's default searchable contact properties (name, email, phone, company).`}).nullable(),custom_properties:ju({path:`config.custom_properties`,groupPath:`config.general`,sectionKey:`general`,label:`Custom properties`,placeholder:`product_signup_date`,info:"Added to the contact JSON under `custom_properties` — internal names, custom properties included (standard-set names are already top-level)."}),filters:Au({path:`config.filters`,groupPath:`config.general`,sectionKey:`general`,label:`Property filters`,fieldNamePlaceholder:`lifecyclestage`,info:`Rows filter on any HubSpot property by internal name — including custom properties. Enumeration values are the portal's internal option values (case-sensitive).`}),lifecycle_stage:Uu({path:`config.lifecycle_stage`,groupPath:`config.general`,sectionKey:`general`,label:`Lifecycle stage`,required:!1,info:`This portal's actual stages — custom stages included.`,enabledIf:_(`hubspot`),optionsDef:dp(`contacts`,`lifecyclestage`)}),owner:Uu({path:`config.owner`,groupPath:`config.general`,sectionKey:`general`,label:`Owner`,required:!1,info:``,enabledIf:_(`hubspot`),optionsDef:up}),created_within:Hu({required:!1,path:`config.created_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Created at`,description:``,options:[{label:`Any time`,value:``},{label:`Last 24 hours`,value:`l24h`},{label:`Last 48 hours`,value:`l48h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}]}).default(``),modified_within:Hu({required:!1,path:`config.modified_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Last modified`,description:``,options:[{label:`Any time`,value:``},{label:`Last 24 hours`,value:`l24h`},{label:`Last 48 hours`,value:`l48h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}]}).default(``),limit:N({path:`config.limit`,min:1,max:200,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Rows per page (HubSpot search caps pages at 200 and total results at 10,000).`}).default(100),cursor:Bu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[ZR.name]:A({fieldName:ZR.name}),[QR.name]:A({fieldName:QR.name}),[$R.name]:A({fieldName:$R.name}),[ez.name]:A({fieldName:ez.name}),[tz.name]:A({fieldName:tz.name})}))})}),rz={allowManagedConnection:!1,mode:null,credits:null,info:`Searching your own HubSpot portal is free.`},iz=`contacts-hubspot-v1`,az=class extends Z{billing={billableOperation:iz,cost:rz};searchId=XR;schema=nz;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[ZR.name]:this.catalogOutput(ZR),[QR.name]:this.catalogOutput(QR),[$R.name]:this.catalogOutput($R),[ez.name]:this.catalogOutput(ez),[tz.name]:this.catalogOutput(tz)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitOperation:`hubspot_crm_search`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`hubspot_object_id`}]}}async getAgentContext(e){return pp(e,{objectTypes:[[`contacts`,`0-1`]]})}},oz=nz,sz={searchId:XR,billableOperation:iz,baseSearch:Q(XR),outputFieldMode:`static`,paginationType:`cursor`,label:`HubSpot contacts`,categories:[`people`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List contacts from your HubSpot portal: identity columns (id, email, name) plus a JSON record with the standard property set and any custom properties you pick.`,tags:[V.EMAIL,V.NEW],keywords:[`crm`,`lookup`,`list`,`records`,`import`,`person`],docPath:$(XR),guide:`Call get_provider_context first for this portal's property names and enumeration option values — use internal names verbatim. Standard fields become typed columns; the standard set rides flat in the contact JSON and picked custom properties nest under custom_properties — expand it or chain json:extract downstream. Filters support any property; the lifecycle-stage picker shows the portal's actual stages (custom stages have opaque internal values). Newly created records lag search indexing by a few moments; archived records never appear. Total results cap at 10,000 per query — narrow with filters or date windows.`,cost:rz,provider:`hubspot`,defaultPayload:{search_id:XR,connector:{strategy:`first`,connections:[]},config:{query:``,custom_properties:[],filters:null,lifecycle_stage:``,owner:``,created_within:``,modified_within:``,limit:100,cursor:``,output_fields:{hubspot_object_id:{enabled:!0,alias:``},email:{enabled:!0,alias:``},first_name:{enabled:!0,alias:``},last_name:{enabled:!0,alias:``},hubspot_contact_match:{enabled:!0,alias:``}}}}},cz=`contacts:salesforce@1`,lz=g(`salesforce_record_id`),uz=g(`first_name`),dz=g(`last_name`),fz=g(`email`),pz=g(`salesforce_contact_match`),mz=r.object({search_id:r.literal(cz),connector:Yl(),config:r.object({custom_properties:oL(),filters:sL(`Title`),list_view:cL(`Contact`),email_domains:k({path:`config.email_domains`,groupPath:`config.general`,sectionKey:`general`,label:`Email domains`,placeholder:`acme.com`,info:`Matches the email's domain part. Large orgs: domain matching is unindexed — combine with other filters when it times out.`}),has_email:Ru({path:`config.has_email`,groupPath:`config.general`,sectionKey:`general`,label:`Has email`,description:``,defaultValue:!1}),owner:lL(),created_within:dL(),modified_within:fL(),limit:pL(),cursor:mL(),output_fields:P(r.object({[lz.name]:A({fieldName:lz.name}),[uz.name]:A({fieldName:uz.name}),[dz.name]:A({fieldName:dz.name}),[fz.name]:A({fieldName:fz.name}),[pz.name]:A({fieldName:pz.name})}))}).check(e=>hL([`email_domains`,`has_email`,`owner`,`created_within`,`modified_within`])(e))}),hz={allowManagedConnection:!1,mode:null,credits:null,info:`Salesforce searches are free — you bring your own Salesforce connection.`},gz=`contacts-salesforce-v1`,_z=class extends Z{billing={billableOperation:gz,cost:hz};searchId=cz;schema=mz;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[lz.name]:this.catalogOutput(lz),[uz.name]:this.catalogOutput(uz),[dz.name]:this.catalogOutput(dz),[fz.name]:this.catalogOutput(fz),[pz.name]:this.catalogOutput(pz)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitOperation:`salesforce_api`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`salesforce_record_id`}]}}async getAgentContext(e){return ef(e,{objects:[`Contact`],includeListViewsFor:[`Contact`]})}},vz=mz,yz={searchId:cz,billableOperation:gz,baseSearch:Q(cz),outputFieldMode:`static`,paginationType:`cursor`,label:`Salesforce contacts`,categories:[`people`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List contacts from your Salesforce org: identity columns (id, name, email) plus a JSON record with the standard field set and any custom fields you pick. Filter with field conditions or run one of the org's own list views.`,tags:[V.EMAIL,V.NEW],keywords:[`crm`,`sfdc`,`lookup`,`list`,`records`,`import`,`person`],docPath:$(cz),guide:"Call get_provider_context first for the org's field API names and picklist values — use them verbatim (`__c` = custom). Standard fields become typed columns; picked custom fields nest under custom_properties in the contact JSON. Filters accept dotted parent paths (Account.Industry); date values accept SOQL literals like LAST_N_DAYS:30. To find stale records, filter on `LastActivityDate` (e.g. `LastActivityDate < LAST_N_DAYS:90` — it reflects closed tasks + events, not literal touches). `list_view` runs the org's own segmentation (XOR with filters/shortcuts). Results page by record id (creation order) — a cursor never expires. Rows the connected user cannot see are silently absent (sharing rules).",cost:hz,provider:`salesforce`,defaultPayload:{search_id:cz,connector:{strategy:`first`,connections:[]},config:{custom_properties:[],filters:null,list_view:``,email_domains:{include:[],exclude:[]},has_email:!1,owner:``,created_within:``,modified_within:``,limit:100,cursor:``,output_fields:{salesforce_record_id:{enabled:!0,alias:``},first_name:{enabled:!0,alias:``},last_name:{enabled:!0,alias:``},email:{enabled:!0,alias:``},salesforce_contact_match:{enabled:!0,alias:``}}}}},bz=`query:databricks@1`,xz=r.object({search_id:r.literal(bz),connector:Yl(),config:r.object({query:Vu({path:`config.query`,groupPath:`config.general`,sectionKey:`general`,label:`SQL query`,description:`A single read-only SELECT statement. It is wrapped automatically for pagination, so do not add your own LIMIT/OFFSET for paging.`,rows:8,minLength:1,maxLength:2e4}),limit:N({path:`config.limit`,min:1,max:1e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of rows per page`}).default(100),page_number:N({path:`config.page_number`,min:1,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Page`,description:`1-based page index (offset pagination)`}).nullable().default(1)})}),Sz={allowManagedConnection:!1,mode:null,credits:null,info:`Querying your own Databricks SQL warehouse is free.`},Cz=`data-query-databricks-v1`,wz=class extends Z{billing={billableOperation:Cz,cost:Sz};searchId=bz;schema=xz;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{}}getConnectionsRequirements(){return[{provider:`databricks`,rateLimitOperation:`databricks_query`,rateLimitRatio:1,allowManagedConnection:!1}]}async getAgentContext(e){return yF(`databricks`,e)}},Tz=xz,Ez={searchId:bz,billableOperation:Cz,baseSearch:Q(bz),outputFieldMode:`dynamic`,paginationType:`page_number`,label:`Query Databricks`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`Run a read-only SQL query against your Databricks SQL warehouse and return the rows.`,guide:"Databricks SQL dialect; config.query must be a single read-only statement (no self-managed LIMIT/OFFSET — pagination is wrapped automatically). To discover the schema, draft a payload with a placeholder config.query like \"SELECT 1\" and the chosen connection in connector.connections, then call get_provider_context once — it returns the workspace-wide table/column map (all Unity catalogs) for free. Always reference tables by their FULLY QUALIFIED three-part name exactly as the map lists them (catalog.schema.table, e.g. samples.accuweather.forecast_daily); a bare table name resolves against the warehouse's unpredictable current catalog and usually fails with TABLE_OR_VIEW_NOT_FOUND. Sample actual rows (also free) with run_search_oneshot, then write the real config.query. Tables under the `samples` catalog (and Databricks' other built-in example schemas like `tpch` and `tpcds_*`) are DEMO data shipped to every workspace, NOT the customer's own data. If the user asks about their data and the only match is under `samples`/a demo schema — or the map shows only demo tables — the connection isn't pointed at their catalog: confirm the intended table with the user before querying, and never answer their question from a demo table.",tags:[V.FIELDS,V.NEW],keywords:[`sql`,`database`,`warehouse`,`select`,`table`,`read data`],docPath:$(bz),cost:Sz,provider:`databricks`,defaultPayload:{search_id:bz,connector:{strategy:`first`,connections:[]},config:{query:``,limit:100,page_number:1}}},Dz=`query:postgres@1`,Oz=r.object({search_id:r.literal(Dz),connector:Yl(),config:r.object({query:Vu({path:`config.query`,groupPath:`config.general`,sectionKey:`general`,label:`SQL query`,description:`A single read-only SELECT statement. It is wrapped automatically for pagination, so do not add your own LIMIT/OFFSET for paging.`,rows:8,minLength:1,maxLength:2e4}),limit:N({path:`config.limit`,min:1,max:1e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of rows per page`}).default(100),page_number:N({path:`config.page_number`,min:1,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Page`,description:`1-based page index (offset pagination)`}).nullable().default(1)})}),kz={allowManagedConnection:!1,mode:null,credits:null,info:`Querying your own PostgreSQL database is free.`},Az=`data-query-postgres-v1`,jz=class extends Z{billing={billableOperation:Az,cost:kz};searchId=Dz;schema=Oz;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{}}getConnectionsRequirements(){return[{provider:`postgres`,rateLimitOperation:`postgres_query`,rateLimitRatio:1,allowManagedConnection:!1}]}async getAgentContext(e){return yF(`postgres`,e)}},Mz=Oz,Nz={searchId:Dz,billableOperation:Az,baseSearch:Q(Dz),outputFieldMode:`dynamic`,paginationType:`page_number`,label:`Query Postgres`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`Run a read-only SQL query against your own PostgreSQL database and return the rows.`,guide:`PostgreSQL dialect; config.query must be a single read-only SELECT (no self-managed LIMIT/OFFSET — pagination is wrapped automatically). To discover the schema, draft a payload with a placeholder config.query like "SELECT 1" and the chosen connection in connector.connections, then call get_provider_context once — it returns the full table/column map for free. Sample actual rows (also free) with run_search_oneshot, then write the real config.query.`,tags:[V.FIELDS,V.NEW],keywords:[`sql`,`database`,`select`,`table`,`read data`],docPath:$(Dz),cost:kz,provider:`postgres`,defaultPayload:{search_id:Dz,connector:{strategy:`first`,connections:[]},config:{query:``,limit:100,page_number:1}}},Pz=`deals:attio@1`,Fz=g(`attio_record_id`),Iz=g(`deal_name`),Lz=g(`deal_amount`),Rz=g(`attio_deal_match`),zz=r.object({search_id:r.literal(Pz),connector:Yl(),config:r.object({custom_properties:IL(`value`,kf({target:`objects`,identifier:`deals`})),filters:LL(`value`),stage:Uu({path:`config.stage`,groupPath:`config.general`,sectionKey:`general`,label:`Deal stage`,required:!1,info:`This workspace's actual stage titles — custom stages included.`,enabledIf:_(`attio`),optionsDef:Sf,multiple:!0}),owner:Uu({path:`config.owner`,groupPath:`config.general`,sectionKey:`general`,label:`Owner`,required:!1,info:``,enabledIf:_(`attio`),optionsDef:Df}),saved_view:RL(Tf({target:`objects`,identifier:`deals`})),created_within:zL(),limit:PL(),page_number:FL(),output_fields:P(r.object({[Fz.name]:A({fieldName:Fz.name}),[Iz.name]:A({fieldName:Iz.name}),[Lz.name]:A({fieldName:Lz.name}),[Rz.name]:A({fieldName:Rz.name})}))}).check(e=>BL(e,[`stage`,`owner`,`created_within`]))}),Bz={allowManagedConnection:!1,mode:null,credits:null,info:`Searching your own Attio workspace is free.`},Vz=`deals-attio-v1`,Hz=class extends Z{billing={billableOperation:Vz,cost:Bz};searchId=Pz;schema=zz;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[Fz.name]:this.catalogOutput(Fz),[Iz.name]:this.catalogOutput(Iz),[Lz.name]:this.catalogOutput(Lz),[Rz.name]:this.catalogOutput(Rz)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitOperation:`attio_query`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`attio_record_id`}]}}async getAgentContext(e){return jf(e,{objects:[`deals`],includeViewsFor:[`deals`],includeMembers:!0})}},Uz=zz,Wz={searchId:Pz,billableOperation:Vz,baseSearch:Q(Pz),outputFieldMode:`static`,paginationType:`page_number`,label:`Attio deals`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List deals from your Attio workspace: identity columns (id, name, value) plus a JSON record with the standard attribute set and any custom attributes you pick.`,tags:[V.NEW],keywords:[`crm`,`list`,`records`,`import`,`opportunity`,`pipeline`],docPath:$(Pz),guide:"Call get_provider_context first — deal stage titles are workspace-defined (never assume Won/Lost exist). The Deals object is opt-in per workspace; a disabled object fails with a settings hint. Standard attributes become typed columns; everything else rides in the deal JSON. Exact value/date ranges go in the attribute filters (`value` gte/lte); a saved view replaces the filter fields entirely. Multi-pipeline flows live in Attio LISTS — use entries:attio@1 for list-based pipelines. Attio reports no total count — page until a short page.",cost:Bz,provider:`attio`,defaultPayload:{search_id:Pz,connector:{strategy:`first`,connections:[]},config:{custom_properties:[],filters:null,stage:[],owner:``,saved_view:``,created_within:``,limit:100,page_number:1,output_fields:{attio_record_id:{enabled:!0,alias:``},deal_name:{enabled:!0,alias:``},deal_amount:{enabled:!0,alias:``},attio_deal_match:{enabled:!0,alias:``}}}}},Gz=`deals:hubspot@1`,Kz=g(`hubspot_object_id`),qz=g(`deal_name`),Jz=g(`deal_amount`),Yz=g(`hubspot_deal_match`),Xz=r.object({search_id:r.literal(Gz),connector:Yl(),config:r.object({query:Bu({path:`config.query`,groupPath:`config.general`,inputType:`text`,label:`Search text`,sectionKey:`general`,info:`Free-text search over HubSpot's default searchable deal properties (deal name, pipeline, stage, description).`}).nullable(),custom_properties:ju({path:`config.custom_properties`,groupPath:`config.general`,sectionKey:`general`,label:`Custom properties`,placeholder:`contract_term`,info:"Added to the deal JSON under `custom_properties` — internal names, custom properties included (standard-set names are already top-level)."}),filters:r.object({conditions:Au({path:`config.filters.conditions`,groupPath:`config.general`,sectionKey:`general`,label:`Property filters`,fieldNamePlaceholder:`amount`,info:`Rows filter on any HubSpot property by internal name — including custom properties.`}),pipeline:Uu({path:`config.filters.pipeline`,groupPath:`config.general`,sectionKey:`general`,label:`Pipeline`,required:!1,info:``,enabledIf:_(`hubspot`),optionsDef:sp(`deals`)}),deal_stage:Uu({path:`config.filters.deal_stage`,groupPath:`config.general`,sectionKey:`general`,label:`Deal stage`,required:!1,info:`Stages of the selected pipeline (stage ids are numeric outside the default pipeline).`,enabledIf:_(`hubspot`),optionsDef:fp}),status:Hu({required:!1,path:`config.filters.status`,groupPath:`config.general`,sectionKey:`general`,label:`Deal status`,description:`Filters on HubSpot's computed hs_is_closed / hs_is_closed_won — portal-invariant, unlike stage names.`,options:[{label:`Any`,value:`any`},{label:`Open`,value:`open`},{label:`Won`,value:`won`},{label:`Lost`,value:`lost`}]}).default(`any`),owner:Uu({path:`config.filters.owner`,groupPath:`config.general`,sectionKey:`general`,label:`Owner`,required:!1,info:``,enabledIf:_(`hubspot`),optionsDef:up}),created_within:Hu({required:!1,path:`config.filters.created_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Created`,description:`Relative window, resolved at every run — schedule-friendly. Exact date ranges go in the property filters (createdate gte/lte).`,options:[{label:`Any time`,value:``},{label:`Last 24 hours`,value:`l24h`},{label:`Last 48 hours`,value:`l48h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}]}).default(``),modified_within:Hu({required:!1,path:`config.filters.modified_within`,groupPath:`config.dates`,sectionKey:`general`,label:`Last modified`,description:``,options:[{label:`Any time`,value:``},{label:`Last 24 hours`,value:`l24h`},{label:`Last 48 hours`,value:`l48h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}]}).default(``)}),limit:N({path:`config.limit`,min:1,max:200,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Rows per page (HubSpot search caps pages at 200 and total results at 10,000).`}).default(100),cursor:Bu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[Kz.name]:A({fieldName:Kz.name}),[qz.name]:A({fieldName:qz.name}),[Jz.name]:A({fieldName:Jz.name}),[Yz.name]:A({fieldName:Yz.name})}))})}),Zz={allowManagedConnection:!1,mode:null,credits:null,info:`Searching your own HubSpot portal is free.`},Qz=`deals-hubspot-v1`,$z=class extends Z{billing={billableOperation:Qz,cost:Zz};searchId=Gz;schema=Xz;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[Kz.name]:this.catalogOutput(Kz),[qz.name]:this.catalogOutput(qz),[Jz.name]:this.catalogOutput(Jz),[Yz.name]:this.catalogOutput(Yz)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitOperation:`hubspot_crm_search`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`hubspot_object_id`}]}}async getAgentContext(e){return pp(e,{objectTypes:[[`deals`,`0-3`]],includePipelinesFor:[`deals`]})}},eB=Xz,tB={searchId:Gz,billableOperation:Qz,baseSearch:Q(Gz),outputFieldMode:`static`,paginationType:`cursor`,label:`HubSpot deals`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List deals from your HubSpot portal: identity columns (id, name, amount) plus a JSON record with the standard property set and any custom properties you pick.`,tags:[V.FIELDS,V.NEW],keywords:[`crm`,`opportunity`,`pipeline`,`list`,`records`,`import`],docPath:$(Gz),guide:`Call get_provider_context first — it includes this portal's pipelines with per-pipeline stage ids and labels (stage ids are numeric outside the default pipeline; never assume 'closedwon' exists). Prefer the status filter (computed hs_is_closed/hs_is_closed_won) over stage names for open/won/lost. Standard fields become typed columns; pipeline, stage and close date ride flat in the deal JSON, picked custom properties nest under custom_properties — expand it or chain json:extract downstream. Total results cap at 10,000 per query.`,cost:Zz,provider:`hubspot`,defaultPayload:{search_id:Gz,connector:{strategy:`first`,connections:[]},config:{query:``,custom_properties:[],filters:{conditions:null,pipeline:``,deal_stage:``,status:`any`,owner:``,created_within:``,modified_within:``},limit:100,cursor:``,output_fields:{hubspot_object_id:{enabled:!0,alias:``},deal_name:{enabled:!0,alias:``},deal_amount:{enabled:!0,alias:``},hubspot_deal_match:{enabled:!0,alias:``}}}}},nB=`companies:profiles:amplemarket@1`,rB=g(`company_name`),iB=g(`company_website_url`),aB=g(`company_description`),oB=g(`company_profile_url`),sB=g(`amplemarket_company_match`),cB=r.object({search_id:r.literal(nB),connector:Ts.nullable().optional(),config:r.object({limit:N({label:`Limit`,description:`Max number of search results`,path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,sectionKey:`pagination`}),page_number:N({path:`config.page_number`,groupPath:`config.pagination`,label:`Page number`,min:1,sectionKey:`pagination`,description:``}).nullish(),output_fields:P(r.object({[rB.name]:A({fieldName:rB.name}),[iB.name]:A({fieldName:iB.name}),[aB.name]:A({fieldName:aB.name}),[oB.name]:A({fieldName:oB.name}),[sB.name]:A({fieldName:sB.name})})),filters:r.object({hq_locations:M({path:`config.filters.hq_locations`,sectionKey:`config.filters`,label:`HQ locations`,description:``,placeholder:J(`location`),groupPath:`config.filters.location`,optionsDef:h(`locations`)}).default({include:[],exclude:[]}),company_names:k({sectionKey:`config.filters`,path:`config.filters.company_names`,label:`Company names`,description:``,placeholder:J(`company_name`),groupPath:`config.filters.categories`,suggestionsDef:h(`company_names`)}).default({include:[],exclude:[]}),company_website_urls:k({sectionKey:`config.filters`,path:`config.filters.company_website_urls`,label:`Company domains`,description:``,placeholder:J(`company_domain`),groupPath:`config.filters.categories`,suggestionsDef:h(`company_domains`,{widgets:{emoji:{char:`🌐`}}})}).default({include:[],exclude:[]}),company_profile_urls:k({sectionKey:`config.filters`,path:`config.filters.company_profile_urls`,label:`Company LinkedIn URLs`,description:``,groupPath:`config.filters.categories`}).default({include:[],exclude:[]}),company_types:j({sectionKey:`config.filters`,path:`config.filters.company_types`,disableSearch:!1,label:`Company Type`,description:``,groupPath:`config.filters.categories`,options:m(`amplemarket.company_types`),required:!1}).default([]),investors:Wu({sectionKey:`config.filters`,path:`config.filters.investors`,label:`Investor names`,optionsDef:h(`company.crunchbase_investors.crustdata`),description:`A list of company investor names`,placeholder:J(`investor`),groupPath:`config.filters.investors`,disableSearch:!1,required:!1}).default([]),company_industries:Pu({sectionKey:`config.filters`,path:`config.filters.company_industries`,optionsDef:Ge(`amplemarket.industries`),disableSearch:!1,label:`Industries`,description:``,placeholder:J(`industry`),groupPath:`config.filters.industry`}).default({include:[],exclude:[]}),customer_types:j({sectionKey:`config.filters`,path:`config.filters.customer_types`,options:[{value:`b2b`,label:`B2B`},{value:`b2c`,label:`B2C`}],required:!1,disableSearch:!0,label:`Customer Types`,description:``,groupPath:`config.filters.industry`}).default([]),keywords:k({sectionKey:`config.filters`,path:`config.filters.keywords`,label:`Keywords`,description:``,groupPath:`config.filters.industry`}).default({include:[],exclude:[]}),revenue_groups:j({path:`config.filters.revenue_groups`,sectionKey:`config.filters`,label:`Revenue groups`,description:``,disableSearch:!0,options:m(`amplemarket.company_revenue`),required:!1,groupPath:`config.filters.financials`}).default([]),founded_year:Nu({path:`config.filters.founded_year`,sectionKey:`config.filters`,label:`Founded year`,groupPath:`config.filters.general`,min:0,max:2040,description:``}).default({min:null,max:null}),open_positions_titles:O({path:`config.filters.open_positions_titles`,sectionKey:`config.filters`,label:`Job openings for titles`,groupPath:`config.filters.job_openings`,description:``,placeholder:J(`title`),suggestionsDef:h(`titles`)}),headcount:j({sectionKey:`config.filters`,path:`config.filters.company_sizes`,disableSearch:!1,options:m(`amplemarket.company_size`),label:`Headcount groups`,required:!1,description:``,groupPath:`config.filters.company_size`}).default([]),headcount_growth_last_6_months_in_percent:Nu({path:`config.filters.headcount_growth_last_6_months_in_percent`,sectionKey:`config.filters`,label:`Headcount growth over last 6 months (in %)`,groupPath:`config.filters.company_size`,description:``,max:1e4,min:0}).default({min:null,max:null})}).check(e=>{SR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),lB={allowManagedConnection:!0,mode:`per_page`,credits:{default:2}},uB=`companies-profiles-amplemarket-v1`,dB=class extends Z{billing={billableOperation:uB,cost:lB};searchId=nB;schema=cB;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[rB.name]:this.catalogOutput(rB),[iB.name]:this.catalogOutput(iB),[aB.name]:this.catalogOutput(aB),[oB.name]:this.catalogOutput(oB),[sB.name]:this.catalogOutput(sB)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitOperation:`amplemarket_company_search`,rateLimitRatio:1,allowManagedConnection:!0}]}},fB=cB,pB={searchId:nB,billableOperation:uB,baseSearch:Q(`companies:profiles:amplemarket@1`),label:`Company search`,categories:[`deprecated`],paginationType:`page_number`,hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`companies:profiles:amplemarket@2`},description:`Filter based company search.`,tags:[V.COMPANY_PROFILES],docPath:$(nB),cost:lB,provider:`amplemarket`,defaultPayload:{search_id:nB,connector:null,config:{limit:100,page_number:1,output_fields:{company_name:{enabled:!0,alias:``},company_website_url:{enabled:!0,alias:``},company_description:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},amplemarket_company_match:{enabled:!0,alias:``}},filters:{company_industries:{include:[],exclude:[]},company_names:{include:[],exclude:[]},company_profile_urls:{include:[],exclude:[]},company_types:[],company_website_urls:{include:[],exclude:[]},customer_types:[],headcount_growth_last_6_months_in_percent:{min:null,max:null},founded_year:{min:null,max:null},revenue_groups:[],investors:[],keywords:{include:[],exclude:[]},open_positions_titles:[],headcount:[],hq_locations:{include:[],exclude:[]}}}}},mB=`companies:profiles:crustdata@1`,hB=g(`company_name`),gB=g(`company_website_url`),_B=g(`company_description`),vB=g(`company_profile_url`),yB=g(`crustdata_company_match`),bB=r.object({search_id:r.literal(mB),connector:Ts.nullable().optional(),config:r.object({limit:N({path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of search results`}),cursor:Bu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[hB.name]:A({fieldName:hB.name}),[gB.name]:A({fieldName:hB.name}),[_B.name]:A({fieldName:_B.name}),[vB.name]:A({fieldName:vB.name}),[yB.name]:A({fieldName:yB.name})})),filters:r.object({hq_locations:M({path:`config.filters.hq_locations`,sectionKey:`config.filters`,label:`HQ locations`,description:``,placeholder:J(`location`),groupPath:`config.filters.location`,optionsDef:h(`locations`)}).default({include:[],exclude:[]}),crunchbase_categories:M({path:`config.filters.crunchbase_categories`,sectionKey:`config.filters`,label:`Crunchbase categories`,placeholder:J(`crunchbase_category`),description:``,groupPath:`config.filters.categories`,optionsDef:h(`company.crunchbase_categories.crustdata`)}).default({include:[],exclude:[]}),crunchbase_investors:M({path:`config.filters.crunchbase_investors`,sectionKey:`config.filters`,label:`Investors to include (Crunchbase)`,description:``,placeholder:J(`investor`),groupPath:`config.filters.investors`,optionsDef:h(`company.crunchbase_investors.crustdata`)}).default({include:[],exclude:[]}),tracxn_investors:M({path:`config.filters.tracxn_investors`,sectionKey:`config.filters`,label:`Investors to include (Tracxn)`,description:``,placeholder:J(`investor`),groupPath:`config.filters.investors`,optionsDef:h(`company.tracxn_investors.crustdata`)}).default({include:[],exclude:[]}),company_types:Pu({sectionKey:`config.filters`,path:`config.filters.company_types`,optionsDef:{type:`static`,options:m(`crustdata.company_types`)},label:`Company types`,placeholder:`Public, Private, ...`,description:``,groupPath:`config.filters.categories`}).default({include:[],exclude:[]}),linkedin_industries:M({sectionKey:`config.filters`,path:`config.filters.linkedin_industries`,optionsDef:h(`linkedin_industries.crustdata`),label:`Industries`,description:``,placeholder:J(`industry`),groupPath:`config.filters.industry`}).default({include:[],exclude:[]}),markets:M({sectionKey:`config.filters`,path:`config.filters.markets`,optionsDef:h(`company.markets.crustdata`),placeholder:`NYSE, TYO, ...`,label:`Markets`,description:``,groupPath:`config.filters.industry`}).default({include:[],exclude:[]}),linkedin_categories:M({sectionKey:`config.filters`,path:`config.filters.linkedin_categories`,optionsDef:h(`company.linkedin_categories.crustdata`),label:`LinkedIn category`,placeholder:`Marketing, Branding, ...`,description:``,groupPath:`config.filters.categories`}).default({include:[],exclude:[]}),headcount:Pu({path:`config.filters.headcount`,sectionKey:`config.filters`,label:`Headcount`,description:``,disableSearch:!0,placeholder:`1-10`,optionsDef:{type:`static`,options:m(`crustdata.company_size`)},groupPath:`config.filters.company_size`}).default({include:[],exclude:[]}),headcount_growth_last_6m_in_percent:j({path:`config.filters.headcount_growth_last_6m_in_percent`,sectionKey:`config.filters`,label:`Headcount growth over last 6 months in percent`,description:``,options:m(`crustdata.headcount_growth`),placeholder:`0-10%`,disableSearch:!0,required:!1,groupPath:`config.filters.company_size`}).default([]),revenue_in_usd:Iu({path:`config.filters.revenue_in_usd`,sectionKey:`config.filters`,label:`Revenue (USD)`,description:``,legend:`1k - 10B`,min:1e3,max:1e10,groupPath:`config.filters.financials`}),last_funding_type:Pu({path:`config.filters.last_funding_type`,sectionKey:`config.filters`,label:`Last funding type`,placeholder:`Series A`,disableSearch:!0,optionsDef:{type:`static`,options:m(`crustdata.funding_rounds`)},description:``,groupPath:`config.filters.financials`}).default({include:[],exclude:[]}),last_funding_amount:Iu({path:`config.filters.last_funding_amount`,sectionKey:`config.filters`,label:`Last funding amount`,legend:`1k - 10B`,min:1e3,max:1e10,description:``,groupPath:`config.filters.financials`}),number_of_followers:j({path:`config.filters.number_of_followers`,sectionKey:`config.filters`,label:`Number of LinkedIn followers`,placeholder:`1-500`,disableSearch:!0,description:``,required:!1,options:m(`crustdata.company_followers`),groupPath:`config.filters.web_presence`}).default([]),follower_growth_last_6m_in_percent:j({path:`config.filters.follower_growth_last_6m_in_percent`,sectionKey:`config.filters`,label:`LinkedIn follower growth within last 6 months`,required:!1,disableSearch:!0,placeholder:`0-10%`,description:``,options:m(`crustdata.follower_growth`),groupPath:`config.filters.web_presence`}).default([]),profile_summary_keywords:k({path:`config.filters.profile_summary_keywords`,sectionKey:`config.filters`,maxItems:50,label:`LinkedIn company description contains`,placeholder:J(`company_profile_keyword`),description:``,groupPath:`config.filters.keywords`}).default({include:[],exclude:[]}),competitor_websites:k({path:`config.filters.competitor_websites`,sectionKey:`config.filters`,maxItems:50,label:`Competitor domains`,description:``,placeholder:J(`company_domain`),groupPath:`config.filters.competitors`,suggestionsDef:h(`company_domains`,{widgets:{emoji:{char:`🌐`}}})}).default({include:[],exclude:[]})}).check(e=>{SR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),xB={allowManagedConnection:!0,mode:`per_page`,credits:{default:2}},SB=`companies-profiles-crustdata-v1`,CB=class extends Z{billing={billableOperation:SB,cost:xB};searchId=mB;schema=bB;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[hB.name]:this.catalogOutput(hB),[gB.name]:this.catalogOutput(gB),[_B.name]:this.catalogOutput(_B),[vB.name]:this.catalogOutput(vB),[yB.name]:this.catalogOutput(yB)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_company_db_search`,rateLimitRatio:1,allowManagedConnection:!0}]}},wB=bB,TB={searchId:mB,billableOperation:SB,baseSearch:Q(`companies:profiles:crustdata@1`),label:`Company search`,categories:[`deprecated`],paginationType:`cursor`,hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`companies:profiles:crustdata@2`},description:`Filter based company search.`,tags:[V.COMPANY_PROFILES],docPath:$(mB),cost:xB,provider:`crustdata`,defaultPayload:{search_id:mB,connector:null,config:{limit:100,cursor:``,output_fields:{company_name:{enabled:!0,alias:``},company_website_url:{enabled:!0,alias:``},company_description:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},crustdata_company_match:{enabled:!0,alias:``}},filters:{company_types:{include:[],exclude:[]},headcount_growth_last_6m_in_percent:[],last_funding_amount:{from:null,to:null},last_funding_type:{include:[],exclude:[]},linkedin_industries:{include:[],exclude:[]},linkedin_categories:{include:[],exclude:[]},crunchbase_categories:{include:[],exclude:[]},markets:{include:[],exclude:[]},revenue_in_usd:{from:null,to:null},crunchbase_investors:{include:[],exclude:[]},tracxn_investors:{include:[],exclude:[]},follower_growth_last_6m_in_percent:[],headcount:{include:[],exclude:[]},hq_locations:{include:[],exclude:[]},number_of_followers:[],profile_summary_keywords:{include:[],exclude:[]},competitor_websites:{include:[],exclude:[]}}}}},EB=`companies:profiles:crustdata@2`,DB=g(`company_name`),OB=g(`company_domain`),kB=g(`company_description`),AB=g(`company_profile_url`),jB=g(`crustdata_company_match`),MB=r.object({search_id:r.literal(EB),connector:Xl(),config:r.object({limit:N({path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of search results`}).default(100),cursor:Bu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[DB.name]:A({fieldName:DB.name}),[OB.name]:A({fieldName:OB.name}),[kB.name]:A({fieldName:kB.name}),[AB.name]:A({fieldName:AB.name}),[jB.name]:A({fieldName:jB.name})})),filters:r.object({hq_locations:M({path:`config.filters.hq_locations`,sectionKey:`config.filters`,label:`HQ locations`,description:``,placeholder:J(`location`),groupPath:`config.filters.location`,optionsDef:h(`locations`)}).default({include:[],exclude:[]}),crunchbase_categories:M({path:`config.filters.crunchbase_categories`,sectionKey:`config.filters`,label:`Crunchbase categories`,placeholder:J(`crunchbase_category`),description:``,groupPath:`config.filters.categories`,optionsDef:h(`company.crunchbase_categories.crustdata`)}).default({include:[],exclude:[]}),crunchbase_investors:M({path:`config.filters.crunchbase_investors`,sectionKey:`config.filters`,label:`Investors to include (Crunchbase)`,description:``,placeholder:J(`investor`),groupPath:`config.filters.investors`,optionsDef:h(`company.crunchbase_investors.crustdata`)}).default({include:[],exclude:[]}),tracxn_investors:M({path:`config.filters.tracxn_investors`,sectionKey:`config.filters`,label:`Investors to include (Tracxn)`,description:``,placeholder:J(`investor`),groupPath:`config.filters.investors`,optionsDef:h(`company.tracxn_investors.crustdata`)}).default({include:[],exclude:[]}),company_types:Pu({sectionKey:`config.filters`,path:`config.filters.company_types`,optionsDef:{type:`static`,options:m(`crustdata.company_types`)},label:`Company types`,placeholder:`Public, Private, ...`,description:``,groupPath:`config.filters.categories`}).default({include:[],exclude:[]}),linkedin_industries:M({sectionKey:`config.filters`,path:`config.filters.linkedin_industries`,optionsDef:h(`linkedin_industries.crustdata`),label:`Industries`,description:``,placeholder:J(`industry`),groupPath:`config.filters.industry`}).default({include:[],exclude:[]}),markets:M({sectionKey:`config.filters`,path:`config.filters.markets`,optionsDef:h(`company.markets.crustdata`),placeholder:`NYSE, TYO, ...`,label:`Markets`,description:``,groupPath:`config.filters.industry`}).default({include:[],exclude:[]}),linkedin_categories:M({sectionKey:`config.filters`,path:`config.filters.linkedin_categories`,optionsDef:h(`company.linkedin_categories.crustdata`),label:`LinkedIn category`,placeholder:`Marketing, Branding, ...`,description:``,groupPath:`config.filters.categories`}).default({include:[],exclude:[]}),headcount:Pu({path:`config.filters.headcount`,sectionKey:`config.filters`,label:`Headcount`,description:``,disableSearch:!0,placeholder:`1-10`,optionsDef:{type:`static`,options:m(`crustdata.company_size`)},groupPath:`config.filters.company_size`}).default({include:[],exclude:[]}),linkedin_headcount_ranges:j({path:`config.filters.linkedin_headcount_ranges`,sectionKey:`config.filters`,label:`Size bracket`,description:`Headcount range a company self-reports on its LinkedIn page.`,options:m(`crustdata.linkedin_headcount_ranges`),placeholder:`2-10`,disableSearch:!0,required:!1,groupPath:`config.filters.company_size`}).default([]),headcount_growth_l6m_in_percent:j({path:`config.filters.headcount_growth_l6m_in_percent`,sectionKey:`config.filters`,label:`Headcount growth over last 6 months in percent`,description:``,options:m(`crustdata.headcount_growth`),placeholder:`0-10%`,disableSearch:!0,required:!1,groupPath:`config.filters.company_size`}).default([]),revenue_in_usd:Iu({path:`config.filters.revenue_in_usd`,sectionKey:`config.filters`,label:`Revenue (USD)`,description:``,legend:`1k - 10B`,min:1e3,max:1e10,groupPath:`config.filters.financials`}),last_funding_type:Pu({path:`config.filters.last_funding_type`,sectionKey:`config.filters`,label:`Last funding type`,placeholder:`Series A`,disableSearch:!0,optionsDef:{type:`static`,options:m(`crustdata.funding_rounds`)},description:``,groupPath:`config.filters.financials`}).default({include:[],exclude:[]}),last_funding_amount:Iu({path:`config.filters.last_funding_amount`,sectionKey:`config.filters`,label:`Last funding amount`,legend:`1k - 10B`,min:1e3,max:1e10,description:``,groupPath:`config.filters.financials`}),number_of_followers:j({path:`config.filters.number_of_followers`,sectionKey:`config.filters`,label:`Number of LinkedIn followers`,placeholder:`1-500`,disableSearch:!0,description:``,required:!1,options:m(`crustdata.company_followers`),groupPath:`config.filters.web_presence`}).default([]),follower_growth_l6m_in_percent:j({path:`config.filters.follower_growth_l6m_in_percent`,sectionKey:`config.filters`,label:`LinkedIn follower growth within last 6 months`,required:!1,disableSearch:!0,placeholder:`0-10%`,description:``,options:m(`crustdata.follower_growth`),groupPath:`config.filters.web_presence`}).default([]),profile_summary_keywords:k({path:`config.filters.profile_summary_keywords`,sectionKey:`config.filters`,maxItems:50,label:`LinkedIn company description contains`,placeholder:J(`company_profile_keyword`),description:``,groupPath:`config.filters.keywords`}).default({include:[],exclude:[]}),competitor_domains:k({path:`config.filters.competitor_domains`,sectionKey:`config.filters`,maxItems:50,label:`Competitor domain`,description:``,placeholder:J(`company_domain`),groupPath:`config.filters.competitors`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),company_domains:k({path:`config.filters.company_domains`,sectionKey:`config.filters`,maxItems:400,label:`Company domain`,description:``,placeholder:J(`company_domain`),groupPath:`config.filters.web_presence`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),company_profile_urls:k({path:`config.filters.company_profile_urls`,sectionKey:`config.filters`,maxItems:2e3,label:`Company LinkedIn URL`,description:``,placeholder:`https://linkedin.com/company/...`,groupPath:`config.filters.web_presence`}).default({include:[],exclude:[]}),company_names:k({path:`config.filters.company_names`,sectionKey:`config.filters`,maxItems:2e3,label:`Company name`,description:``,placeholder:J(`company_name`),groupPath:`config.filters.web_presence`}).default({include:[],exclude:[]})}).check(e=>{SR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),NB={match:`any`,fields:[{fieldName:`company_profile_url`}]},PB={allowManagedConnection:!0,mode:`per_page`,credits:{default:2}},FB=`companies-profiles-crustdata-v2`,IB=class extends Z{billing={billableOperation:FB,cost:PB};searchId=EB;schema=MB;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[DB.name]:this.catalogOutput(DB),[OB.name]:this.catalogOutput(OB),[kB.name]:this.catalogOutput(kB),[AB.name]:this.catalogOutput(AB),[jB.name]:this.catalogOutput(jB)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_company_db_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return NB}},LB=MB,RB={searchId:EB,billableOperation:FB,baseSearch:Q(`companies:profiles:crustdata@2`),label:`Company search`,categories:[`deprecated`],paginationType:`cursor`,hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:{deprecatedOn:`2026-09-30`,replacedBy:`companies:profiles:crustdata@3`},description:`Filter-based company search on Crustdata's dataset — widest filter surface: funding, investors, headcount growth, LinkedIn signals.`,tags:[V.COMPANY_PROFILES],docPath:$(EB),cost:PB,provider:`crustdata`,defaultPayload:{search_id:EB,connector:null,config:{limit:100,cursor:``,output_fields:{company_name:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},company_description:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},crustdata_company_match:{enabled:!0,alias:``}},filters:{company_types:{include:[],exclude:[]},headcount_growth_l6m_in_percent:[],last_funding_amount:{from:null,to:null},last_funding_type:{include:[],exclude:[]},linkedin_industries:{include:[],exclude:[]},linkedin_categories:{include:[],exclude:[]},crunchbase_categories:{include:[],exclude:[]},markets:{include:[],exclude:[]},revenue_in_usd:{from:null,to:null},crunchbase_investors:{include:[],exclude:[]},tracxn_investors:{include:[],exclude:[]},follower_growth_l6m_in_percent:[],headcount:{include:[],exclude:[]},linkedin_headcount_ranges:[],hq_locations:{include:[],exclude:[]},number_of_followers:[],profile_summary_keywords:{include:[],exclude:[]},competitor_domains:{include:[],exclude:[]},company_domains:{include:[],exclude:[]},company_profile_urls:{include:[],exclude:[]},company_names:{include:[],exclude:[]}}}}},zB=`people:profiles:amplemarket@1`,BB=g(`name`),VB=g(`company_website_url`),HB=g(`profile_url`),UB=g(`job_title`),WB=g(`amplemarket_person_match`),GB=r.object({search_id:r.literal(zB),connector:Ts.nullable().optional(),config:r.object({limit:N({path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,label:`Limit`,sectionKey:`pagination`,description:`Max number of search results`}),page_number:N({path:`config.page_number`,groupPath:`config.pagination`,label:`Page number`,min:1,sectionKey:`pagination`,description:``}).nullish(),output_fields:P(r.object({[BB.name]:A({fieldName:BB.name}),[VB.name]:A({fieldName:VB.name}),[HB.name]:A({fieldName:HB.name}),[UB.name]:A({fieldName:UB.name}),[WB.name]:A({fieldName:WB.name})})),filters:r.object({person_names:O({label:`Full name`,path:`config.filters.person_names`,sectionKey:`config.filters`,groupPath:`config.filters.general`}),current_locations:M({path:`config.filters.current_locations`,sectionKey:`config.filters`,label:`Location`,optionsDef:h(`locations`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),current_job_titles:O({path:`config.filters.current_job_titles`,sectionKey:`config.filters`,label:`Title`,placeholder:J(`title`),description:``,order:1,groupPath:`config.filters.current_employer`,suggestionsDef:h(`titles`)}),current_seniority_levels:j({path:`config.filters.current_seniority_levels`,sectionKey:`config.filters`,placeholder:J(`seniority`),label:`Seniority`,required:!1,disableSearch:!1,options:m(`amplemarket.seniority_levels`),description:``,groupPath:`config.filters.current_employer`}).default([]),current_departments:j({path:`config.filters.current_departments`,sectionKey:`config.filters`,label:`Department`,placeholder:J(`department`),disableSearch:!1,required:!1,options:m(`amplemarket.departments`),description:``,groupPath:`config.filters.current_employer`}).default([]),current_job_functions:j({path:`config.filters.current_job_functions`,sectionKey:`config.filters`,label:`Job function`,placeholder:J(`job_function`),disableSearch:!1,required:!1,options:m(`amplemarket.job_functions`),description:``,groupPath:`config.filters.current_employer`}).default([]),current_employer_locations:M({path:`config.filters.current_employer_locations`,sectionKey:`config.filters`,label:`Headquarters`,optionsDef:h(`locations`),groupPath:`config.filters.current_company`,placeholder:J(`location`)}).default({include:[],exclude:[]}),current_employer_names:k({path:`config.filters.current_employer_names`,sectionKey:`config.filters`,label:`Company name`,groupPath:`config.filters.current_company`,description:``,placeholder:J(`company_name`),suggestionsDef:h(`company_names`)}).default({include:[],exclude:[]}),current_employer_website_urls:k({path:`config.filters.current_employer_website_urls`,sectionKey:`config.filters`,label:`Company domain`,description:``,maxItems:200,placeholder:J(`company_domain`),groupPath:`config.filters.current_company`,suggestionsDef:h(`company_domains`,{widgets:{emoji:{char:`🌐`}}})}).default({include:[],exclude:[]}),current_employer_linkedin_industries:j({path:`config.filters.current_employer_linkedin_industries`,sectionKey:`config.filters`,label:`Industry`,disableSearch:!1,groupPath:`config.filters.current_company`,description:``,placeholder:J(`industry`),required:!1,options:m(`linkedin.industries`)}).default([]),current_employer_estimated_revenue:j({path:`config.filters.current_employer_estimated_revenue`,sectionKey:`config.filters`,label:`Estimated revenue`,disableSearch:!1,required:!1,groupPath:`config.filters.current_company`,description:``,options:m(`amplemarket.company_revenue`)}).default([]),current_employer_founded_year:Nu({path:`config.filters.current_employer_founded_year`,sectionKey:`config.filters`,label:`Founded year`,groupPath:`config.filters.current_company`,min:0,max:2040,description:``}).default({min:null,max:null}),current_employer_investors:O({path:`config.filters.current_employer_investors`,sectionKey:`config.filters`,label:`Employer investors`,groupPath:`config.filters.current_company`,placeholder:J(`investor`),description:``}),current_employer_open_positions_titles:O({path:`config.filters.current_employer_open_positions_titles`,sectionKey:`config.filters`,label:`Open positions`,groupPath:`config.filters.current_company`,description:``,placeholder:J(`title`),suggestionsDef:h(`titles`)}),school_names:M({path:`config.filters.school_names`,sectionKey:`config.filters`,label:`School names`,description:``,placeholder:J(`school`),groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default({include:[],exclude:[]})}).check(e=>{SR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),KB={allowManagedConnection:!0,mode:`per_page`,credits:{default:3},info:`1 page = 100 records; 200 results = 2 pages`},qB=`people-profiles-amplemarket-v1`,JB=class extends Z{billing={billableOperation:qB,cost:KB};searchId=zB;schema=GB;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[BB.name]:this.catalogOutput(BB),[VB.name]:this.catalogOutput(VB),[HB.name]:this.catalogOutput(HB),[UB.name]:this.catalogOutput(UB),[WB.name]:this.catalogOutput(WB)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitOperation:`amplemarket_people_search`,rateLimitRatio:1,allowManagedConnection:!0}]}},YB=GB,XB={searchId:zB,billableOperation:qB,baseSearch:Q(`people:profiles:amplemarket@1`),paginationType:`page_number`,label:`People search`,categories:[`deprecated`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:profiles:amplemarket@2`},description:`Filter-based people search.`,tags:[V.PEOPLE_PROFILES],docPath:$(zB),cost:KB,provider:`amplemarket`,defaultPayload:{search_id:zB,connector:null,config:{limit:50,page_number:1,output_fields:{name:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},company_website_url:{enabled:!0,alias:``},amplemarket_person_match:{enabled:!0,alias:``}},filters:{current_employer_names:{include:[],exclude:[]},current_departments:[],current_employer_locations:{include:[],exclude:[]},person_names:[],current_employer_founded_year:{min:null,max:null},current_employer_estimated_revenue:[],current_employer_investors:[],current_employer_open_positions_titles:[],current_job_functions:[],current_locations:{include:[],exclude:[]},current_employer_linkedin_industries:[],current_employer_website_urls:{include:[],exclude:[]},current_seniority_levels:[],school_names:{include:[],exclude:[]},current_job_titles:[]}}}},ZB=`people:profiles:crustdata@1`,QB=g(`name`),$B=g(`company_website_url`),eV=g(`profile_url`),tV=g(`job_title`),nV=g(`crustdata_person_match`),rV=r.object({search_id:r.literal(ZB),connector:Ts.nullable().optional(),config:r.object({limit:N({path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of search results`}),cursor:Bu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[QB.name]:A({fieldName:QB.name}),[$B.name]:A({fieldName:$B.name}),[eV.name]:A({fieldName:eV.name}),[tV.name]:A({fieldName:tV.name}),[nV.name]:A({fieldName:nV.name})})),filters:r.object({locations:M({path:`config.filters.locations`,sectionKey:`config.filters`,label:`Location`,placeholder:J(`location`),optionsDef:h(`locations`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),current_job_titles:k({path:`config.filters.current_job_titles`,sectionKey:`config.filters`,label:`Title`,description:``,placeholder:J(`title`),order:1,groupPath:`config.filters.current_employer`,suggestionsDef:h(`titles`)}).default({include:[],exclude:[]}),current_employers:k({path:`config.filters.current_employers`,sectionKey:`config.filters`,label:`Company name`,description:``,placeholder:J(`company_name`),maxItems:200,groupPath:`config.filters.current_employer`,suggestionsDef:h(`company_names`,{widgets:{emoji:{char:`🏷️`}}})}).default({include:[],exclude:[]}),current_employers_website_urls:k({path:`config.filters.current_employers_website_urls`,sectionKey:`config.filters`,label:`Company domain`,placeholder:J(`company_domain`),description:``,maxItems:200,groupPath:`config.filters.current_employer`,suggestionsDef:h(`company_domains`,{widgets:{emoji:{char:`🌐`}}})}).default({include:[],exclude:[]}),current_employers_linkedin_industries:M({path:`config.filters.current_employers_linkedin_industries`,sectionKey:`config.filters`,label:`Industry`,groupPath:`config.filters.current_employer`,placeholder:J(`industry`),description:``,optionsDef:h(`linkedin_industries.crustdata`,{limit:300})}).default({include:[],exclude:[]}),years_at_current_company:j({path:`config.filters.years_at_current_company`,sectionKey:`config.filters`,label:`Years at current company`,placeholder:`1 to 2 years`,disableSearch:!1,required:!1,groupPath:`config.filters.current_employer`,description:``,options:m(`crustdata.years_of_experience`)}).default([]),previous_employers_website_urls:k({path:`config.filters.previous_employers_website_urls`,sectionKey:`config.filters`,label:`Previous employer domain`,description:``,placeholder:J(`company_domain`),maxItems:200,groupPath:`config.filters.experience`,suggestionsDef:h(`company_domains`,{widgets:{emoji:{char:`🌐`}}})}).default({include:[],exclude:[]}),previous_seniority_levels:Pu({path:`config.filters.previous_seniority_levels`,sectionKey:`config.filters`,label:`Previous seniority`,placeholder:J(`seniority`),disableSearch:!0,optionsDef:Ge(`crustdata.person_seniority`),description:``,groupPath:`config.filters.experience`}).default({include:[],exclude:[]}),previous_employers:k({path:`config.filters.previous_employers`,sectionKey:`config.filters`,label:`Previous employer`,description:``,placeholder:J(`company_name`),maxItems:200,groupPath:`config.filters.experience`,suggestionsDef:h(`company_names`,{widgets:{emoji:{char:`🏷️`}}})}).default({include:[],exclude:[]}),previous_job_titles:k({path:`config.filters.previous_job_titles`,sectionKey:`config.filters`,label:`Previous title`,description:``,placeholder:J(`title`),groupPath:`config.filters.experience`,suggestionsDef:h(`titles`)}).default({include:[],exclude:[]}),previous_employers_linkedin_industries:M({path:`config.filters.previous_employers_linkedin_industries`,sectionKey:`config.filters`,label:`Previous employer industries`,placeholder:J(`industry`),groupPath:`config.filters.experience`,description:``,optionsDef:h(`linkedin_industries.crustdata`,{limit:300})}).default({include:[],exclude:[]}),profile_headline_keywords:k({path:`config.filters.profile_headline_keywords`,sectionKey:`config.filters`,label:`Headline contains keywords`,maxItems:100,groupPath:`config.filters.keywords`,placeholder:J(`headline_keywords`)}).default({include:[],exclude:[]}),profile_summary_keywords:k({path:`config.filters.profile_summary_keywords`,sectionKey:`config.filters`,label:`Profile about section contains keywords`,maxItems:100,groupPath:`config.filters.keywords`,placeholder:J(`profile_keywords`)}).default({include:[],exclude:[]}),profile_languages:Pu({path:`config.filters.profile_languages`,sectionKey:`config.filters`,label:`Profile language`,placeholder:J(`languages`),optionsDef:Ge(`crustdata.person_profile_languages`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),languages:Pu({path:`config.filters.languages`,sectionKey:`config.filters`,label:`Spoken language`,placeholder:J(`languages_1`),optionsDef:Ge(`crustdata.person_profile_languages`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),skills:M({path:`config.filters.skills`,sectionKey:`config.filters`,label:`Skills`,description:``,placeholder:J(`skills`),groupPath:`config.filters.skills`,optionsDef:h(`skills`)}).default({include:[],exclude:[]}),years_of_experience:j({path:`config.filters.years_of_experience`,sectionKey:`config.filters`,label:`Years of experience`,placeholder:`1 to 2 years`,disableSearch:!0,description:``,required:!1,options:m(`crustdata.years_of_experience`),groupPath:`config.filters.experience`}).default([]),current_seniority_levels:Pu({path:`config.filters.current_seniority_levels`,sectionKey:`config.filters`,disableSearch:!0,label:`Seniority`,placeholder:J(`seniority`),optionsDef:Ge(`crustdata.person_seniority`),description:``,groupPath:`config.filters.experience`}).default({include:[],exclude:[]}),certifications:k({path:`config.filters.certifications`,sectionKey:`config.filters`,label:`Certifications`,groupPath:`config.filters.certifications_honors`,placeholder:J(`certification`),description:``}).default({include:[],exclude:[]}),honors:k({path:`config.filters.honors`,sectionKey:`config.filters`,label:`Honors`,groupPath:`config.filters.certifications_honors`,placeholder:J(`honor`),description:``}).default({include:[],exclude:[]}),recently_changed_jobs:zu({path:`config.filters.recently_changed_jobs`,sectionKey:`config.filters`,label:`Recently changed jobs`,description:``,defaultValue:null,groupPath:`config.filters.activities`}),fields_of_study:M({path:`config.filters.fields_of_study`,sectionKey:`config.filters`,label:`Fields of study`,placeholder:J(`field_of_study`),description:``,groupPath:`config.filters.education`,optionsDef:h(`person.education_field_of_study.crustdata`)}).default({include:[],exclude:[]}),degree_names:M({path:`config.filters.degree_names`,sectionKey:`config.filters`,label:`Degree names`,placeholder:J(`degree_name`),description:``,groupPath:`config.filters.education`,optionsDef:h(`person.education_degree.crustdata`)}).default({include:[],exclude:[]}),school_names:M({path:`config.filters.school_names`,sectionKey:`config.filters`,label:`School names`,description:``,placeholder:J(`school`),groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default({include:[],exclude:[]}),current_school_names:M({path:`config.filters.current_school_names`,sectionKey:`config.filters`,label:`Currently enrolled at`,description:``,placeholder:J(`school`),groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default({include:[],exclude:[]}),extracurricular_activities:k({path:`config.filters.extracurricular_activities`,sectionKey:`config.filters`,label:`Extracurricular activities`,description:``,placeholder:J(`extracurricular`),groupPath:`config.filters.education`,suggestionsDef:h(`person.education_activities.crustdata`)}).default({include:[],exclude:[]})}).check(e=>{SR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),iV={allowManagedConnection:!0,mode:`per_page`,credits:{default:5},info:`1 page = 100 records; 200 results = 2 pages`},aV=`people-profiles-crustdata-v1`,oV=class extends Z{billing={billableOperation:aV,cost:iV};searchId=ZB;schema=rV;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[QB.name]:this.catalogOutput(QB),[$B.name]:this.catalogOutput($B),[eV.name]:this.catalogOutput(eV),[tV.name]:this.catalogOutput(tV),[nV.name]:this.catalogOutput(nV)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_people_db_search`,rateLimitRatio:1,allowManagedConnection:!0}]}},sV=rV,cV={searchId:ZB,billableOperation:aV,baseSearch:Q(`people:profiles:crustdata@1`),paginationType:`cursor`,label:`People search`,categories:[`deprecated`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:profiles:crustdata@2`},description:`Filter-based people search.`,tags:[V.PEOPLE_PROFILES],docPath:$(ZB),cost:iV,provider:`crustdata`,defaultPayload:{search_id:ZB,connector:null,config:{limit:100,cursor:``,output_fields:{name:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},company_website_url:{enabled:!0,alias:``},crustdata_person_match:{enabled:!0,alias:``}},filters:{profile_headline_keywords:{include:[],exclude:[]},languages:{include:[],exclude:[]},profile_summary_keywords:{include:[],exclude:[]},previous_job_titles:{include:[],exclude:[]},current_employers:{include:[],exclude:[]},current_school_names:{include:[],exclude:[]},years_at_current_company:[],certifications:{include:[],exclude:[]},honors:{include:[],exclude:[]},current_employers_linkedin_industries:{include:[],exclude:[]},current_employers_website_urls:{include:[],exclude:[]},previous_employers_website_urls:{include:[],exclude:[]},current_seniority_levels:{include:[],exclude:[]},previous_seniority_levels:{include:[],exclude:[]},degree_names:{include:[],exclude:[]},locations:{include:[],exclude:[]},profile_languages:{include:[],exclude:[]},recently_changed_jobs:null,extracurricular_activities:{include:[],exclude:[]},school_names:{include:[],exclude:[]},fields_of_study:{include:[],exclude:[]},previous_employers:{include:[],exclude:[]},current_job_titles:{include:[],exclude:[]},skills:{include:[],exclude:[]},years_of_experience:[],previous_employers_linkedin_industries:{include:[],exclude:[]}}}}},lV=`entries:attio@1`,uV=g(`attio_entry_id`),dV=g(`attio_record_id`),fV=g(`attio_entry_match`),pV=r.object({search_id:r.literal(lV),connector:Yl(),config:r.object({list:Uu({path:`config.list`,groupPath:`config.general`,sectionKey:`general`,label:`List`,required:!0,info:`Attio lists are where pipelines live — entries carry list-level attributes like stage on top of their parent record.`,enabledIf:_(`attio`),optionsDef:Cf}),custom_properties:IL(`parent.name`,Af(`list`)),filters:LL(`stage`),stage:Uu({path:`config.stage`,groupPath:`config.general`,sectionKey:`general`,label:`Stage`,required:!1,info:`The selected list's status attribute — this workspace's actual titles.`,enabledIf:_(`attio`),optionsDef:wf(`list`),multiple:!0}),saved_view:RL(Tf({target:`lists`,fromField:`list`})),created_within:zL(),limit:PL(),page_number:FL(),output_fields:P(r.object({[uV.name]:A({fieldName:uV.name}),[dV.name]:A({fieldName:dV.name}),[fV.name]:A({fieldName:fV.name})}))}).check(e=>BL(e,[`stage`,`created_within`]))}),mV={allowManagedConnection:!1,mode:null,credits:null,info:`Searching your own Attio workspace is free.`},hV=`entries-attio-v1`,gV=class extends Z{billing={billableOperation:hV,cost:mV};searchId=lV;schema=pV;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[uV.name]:this.catalogOutput(uV),[dV.name]:this.catalogOutput(dV),[fV.name]:this.catalogOutput(fV)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitOperation:`attio_query`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`attio_entry_id`}]}}async getAgentContext(e){return jf(e,{objects:`discover`,includeLists:!0})}},_V=pV,vV={searchId:lV,billableOperation:hV,baseSearch:Q(lV),outputFieldMode:`static`,paginationType:`page_number`,label:`Attio list entries`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List entries of an Attio list — where pipelines live. Each row carries the entry id, the parent record id, and a JSON with the entry's list-level attributes (like stage) plus picked parent-record attributes.`,tags:[V.NEW],keywords:[`crm`,`pipeline`,`stage`,`kanban`,`workflow`,`import`],docPath:$(lV),guide:"Attio pipelines are lists: pick the list, then filter on ENTRY attributes (stage titles come from the list's own status attribute) or on the parent record via `parent.` refs (e.g. `parent.domains.root_domain`, `parent.name.full_name`). Picked `parent.<slug>` attributes land in the entry JSON's custom_properties. attio_record_id is the PARENT record — chain it into record:lookup/record:update. A saved view of the list replaces the filter fields. Attio reports no total count — page until a short page.",cost:mV,provider:`attio`,defaultPayload:{search_id:lV,connector:{strategy:`first`,connections:[]},config:{list:``,custom_properties:[],filters:null,stage:[],saved_view:``,created_within:``,limit:100,page_number:1,output_fields:{attio_entry_id:{enabled:!0,alias:``},attio_record_id:{enabled:!0,alias:``},attio_entry_match:{enabled:!0,alias:``}}}}},yV=`events:googlecalendar@1`,bV=g(`google_calendar_event_id`),xV=g(`event_title`),SV=g(`attendee_emails`),CV=g(`calendar_event_match`),wV=[{value:`meeting`,label:`Meeting`},{value:`out_of_office`,label:`Out of office`},{value:`focus_time`,label:`Focus time`},{value:`working_location`,label:`Working location`},{value:`birthday`,label:`Birthday`},{value:`from_gmail`,label:`From Gmail`}],TV=[`meeting`],EV=[{label:`Primary calendar (primary)`,value:`primary`},{label:`Team calendar (sample)`,value:`cal-sandbox-1`}];async function DV(e){let t=await fetch(`https://www.googleapis.com/calendar/v3/users/me/calendarList`,{headers:{accept:`application/json`,Authorization:`Bearer ${e}`}});if(!t.ok){let e=await t.text();throw Error(`Failed to list Google calendars: ${e}`)}return await t.json()}const OV=r.object({search_id:r.literal(yV),connector:Yl(),config:r.object({calendar_id:Uu({path:`config.calendar_id`,groupPath:`config.general`,sectionKey:`general`,label:`Calendar`,required:!1,info:`Defaults to the account's primary calendar.`,enabledIf:_(`googlecalendar`),optionsDef:{requires:{connection:`googlecalendar`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return EV;if(!t)throw Error(`A Google Calendar connection is required to list calendars.`);let r=((await DV(t)).items||[]).filter(e=>!!e?.id).map(e=>({label:`${e.summaryOverride||e.summary||e.id}${e.primary?` (primary)`:``}`,value:e.id}));return e?r.filter(t=>t.label.toLowerCase().includes(e.toLowerCase())):r}}}),time_window:Hu({required:!1,path:`config.time_window`,groupPath:`config.general`,sectionKey:`general`,label:`Time window`,description:`Rolling window relative to when the search runs, not calendar days.`,options:[{label:`Any time`,value:``},{label:`Next 24 hours`,value:`n24h`},{label:`Next 2 days`,value:`n48h`},{label:`Next 7 days`,value:`n7d`},{label:`Next 30 days`,value:`n30d`},{label:`Last 24 hours`,value:`l24h`},{label:`Last 7 days`,value:`l7d`},{label:`Last 30 days`,value:`l30d`}]}).default(`n7d`),event_types:j({path:`config.event_types`,groupPath:`config.general`,sectionKey:`general`,label:`Event types`,placeholder:`Meeting`,disableSearch:!1,required:!1,description:`Defaults to meetings only.`,options:wV}).default(TV),limit:N({path:`config.limit`,min:1,max:250,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of events per page`}).default(100),cursor:Bu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[bV.name]:A({fieldName:bV.name}),[xV.name]:A({fieldName:xV.name}),[SV.name]:A({fieldName:SV.name}),[CV.name]:A({fieldName:CV.name})}))})}),kV={match:`any`,fields:[{fieldName:`google_calendar_event_id`}]},AV={allowManagedConnection:!1,mode:null,credits:null,info:`Google Calendar searches are free — you bring your own Google Calendar connection.`},jV=`events-googlecalendar-v1`,MV=class extends Z{billing={billableOperation:jV,cost:AV};searchId=yV;schema=OV;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[bV.name]:this.catalogOutput(bV),[xV.name]:this.catalogOutput(xV),[SV.name]:this.catalogOutput(SV),[CV.name]:this.catalogOutput(CV)}}getConnectionsRequirements(){return[{provider:`googlecalendar`,rateLimitOperation:`googlecalendar_api`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return kV}async getAgentContext(e){if(e.environment===`sandbox`)return{summary:"Sandbox: calendar list is synthetic. Available calendars: `primary`, `cal-sandbox-1`."};let t=e.connectionSecrets.googlecalendar;if(!t)return null;let n=((await DV(t)).items||[]).filter(e=>!!e?.id).map(e=>({id:e.id,name:e.summaryOverride||e.summary||e.id,timezone:e.timeZone||null,primary:!!e.primary}));return{summary:`Calendars visible to this connection:\n${n.map(e=>`- \`${e.id}\` — ${e.name}${e.primary?` (primary)`:``}`).join(`
|
|
86
|
+
`)}`,data:{calendars:n}}}},NV=OV,PV={searchId:yV,billableOperation:jV,baseSearch:Q(yV),outputFieldMode:`static`,paginationType:`cursor`,label:`Google Calendar events`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List events from a Google Calendar: one row per event (recurring events expanded into occurrences) with title, attendee emails, and a standardized calendar_event_match object (times, timezone, type, location, organizer, meeting link).`,tags:[V.EVENTS,V.NEW],keywords:[`gcal`,`meetings`,`appointments`,`agenda`,`schedule`,`meeting prep`],docPath:$(yV),guide:"Time windows are rolling intervals relative to when the search runs (UTC), not calendar days — `n24h` means 'the next 24 hours from now'. Recurring events arrive expanded, one row per occurrence, each with its own stable instance ID (the dedup key). Event types are normalized cross-provider values (meeting, out_of_office, focus_time, working_location, birthday, from_gmail); by default ONLY meeting events are returned — add other values to event_types to include them. Start/end/timezone/location/meeting link live inside calendar_event_match (expand with json:extract:multi@1); all-day events carry bare dates there, and the end date is exclusive. Cancelled events are not returned. 'Any time' on a calendar with long recurring series pages very far — prefer a window. attendee_emails excludes meeting rooms and is the natural input for company-domain enrichment (e.g. company:domain:email@1 → company:newssummary:domain@1 for meeting prep).",cost:AV,provider:`googlecalendar`,defaultPayload:{search_id:yV,connector:{strategy:`first`,connections:[]},config:{calendar_id:``,time_window:`n7d`,event_types:TV,limit:100,cursor:``,output_fields:{google_calendar_event_id:{enabled:!0,alias:``},event_title:{enabled:!0,alias:``},attendee_emails:{enabled:!0,alias:``},calendar_event_match:{enabled:!0,alias:``}}}}},FV=`leads:salesforce@1`,IV=g(`salesforce_record_id`),LV=g(`first_name`),RV=g(`last_name`),zV=g(`email`),BV=g(`company_name`),VV=g(`salesforce_lead_match`),HV=r.object({search_id:r.literal(FV),connector:Yl(),config:r.object({custom_properties:oL(),filters:sL(`LeadSource`),list_view:cL(`Lead`),lead_status:Uu({path:`config.lead_status`,groupPath:`config.general`,sectionKey:`general`,label:`Lead status`,required:!1,info:`The org's actual status values — custom entries included.`,enabledIf:_(`salesforce`),optionsDef:qd}),include_converted:Ru({path:`config.include_converted`,groupPath:`config.general`,sectionKey:`general`,label:`Include converted leads`,description:`Converted leads are read-only history pointing at the contact they became — excluded by default.`,defaultValue:!1}),owner:lL(),created_within:dL(),modified_within:fL(),limit:pL(),cursor:mL(),output_fields:P(r.object({[IV.name]:A({fieldName:IV.name}),[LV.name]:A({fieldName:LV.name}),[RV.name]:A({fieldName:RV.name}),[zV.name]:A({fieldName:zV.name}),[BV.name]:A({fieldName:BV.name}),[VV.name]:A({fieldName:VV.name})}))}).check(e=>hL([`lead_status`,`owner`,`created_within`,`modified_within`])(e))}),UV={allowManagedConnection:!1,mode:null,credits:null,info:`Salesforce searches are free — you bring your own Salesforce connection.`},WV=`leads-salesforce-v1`,GV=class extends Z{billing={billableOperation:WV,cost:UV};searchId=FV;schema=HV;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[IV.name]:this.catalogOutput(IV),[LV.name]:this.catalogOutput(LV),[RV.name]:this.catalogOutput(RV),[zV.name]:this.catalogOutput(zV),[BV.name]:this.catalogOutput(BV),[VV.name]:this.catalogOutput(VV)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitOperation:`salesforce_api`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`salesforce_record_id`}]}}async getAgentContext(e){return ef(e,{objects:[`Lead`],includeListViewsFor:[`Lead`]})}},KV=HV,qV={searchId:FV,billableOperation:WV,baseSearch:Q(FV),outputFieldMode:`static`,paginationType:`cursor`,label:`Salesforce leads`,categories:[`people`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List leads from your Salesforce org: identity columns (id, name, email, company) plus a JSON record with the standard field set. Converted leads are excluded by default; filter with field conditions or run one of the org's own list views.`,tags:[V.EMAIL,V.NEW],keywords:[`crm`,`sfdc`,`prospect`,`list`,`records`,`import`,`demand gen`],docPath:$(FV),guide:"Call get_provider_context first for the org's field API names and status values — use them verbatim. Leads are pre-qualification records: Company is plain text (no account link), and converted leads (IsConverted = true) are read-only history excluded by default — the JSON carries IsConverted/ConvertedContactId when you include them. Duplicate emails across leads are normal in demand-gen orgs. To find untouched leads, filter on `LastActivityDate` (e.g. `LastActivityDate < LAST_N_DAYS:90` — closed tasks + events, not literal touches). `list_view` runs the org's own segmentation (XOR with filters/shortcuts). Results page by record id; rows the connected user cannot see are silently absent.",cost:UV,provider:`salesforce`,defaultPayload:{search_id:FV,connector:{strategy:`first`,connections:[]},config:{custom_properties:[],filters:null,list_view:``,lead_status:``,include_converted:!1,owner:``,created_within:``,modified_within:``,limit:100,cursor:``,output_fields:{salesforce_record_id:{enabled:!0,alias:``},first_name:{enabled:!0,alias:``},last_name:{enabled:!0,alias:``},email:{enabled:!0,alias:``},company_name:{enabled:!0,alias:``},salesforce_lead_match:{enabled:!0,alias:``}}}}},JV=`opportunities:salesforce@1`,YV=g(`salesforce_record_id`),XV=g(`deal_name`),ZV=g(`deal_amount`),QV=g(`salesforce_opportunity_match`),$V=r.object({search_id:r.literal(JV),connector:Yl(),config:r.object({custom_properties:oL(),filters:sL(`StageName`),list_view:cL(`Opportunity`),status:Hu({required:!1,path:`config.status`,groupPath:`config.general`,sectionKey:`general`,label:`Status`,description:`Filters on Salesforce's computed IsClosed / IsWon — org-invariant, unlike stage names.`,options:[{label:`Any`,value:`any`},{label:`Open`,value:`open`},{label:`Won`,value:`won`},{label:`Lost`,value:`lost`}]}).default(`any`),stage:Uu({path:`config.stage`,groupPath:`config.general`,sectionKey:`general`,label:`Stage`,required:!1,info:`The org's own OpportunityStage list.`,enabledIf:_(`salesforce`),optionsDef:Gd}),amount:Nu({path:`config.amount`,groupPath:`config.general`,sectionKey:`general`,label:`Amount`,min:0,max:0xe8d4a51000,info:`In multi-currency orgs the bounds compare in the corporate currency.`}),owner:lL(),created_within:dL(),modified_within:fL(),limit:pL(),cursor:mL(),output_fields:P(r.object({[YV.name]:A({fieldName:YV.name}),[XV.name]:A({fieldName:XV.name}),[ZV.name]:A({fieldName:ZV.name}),[QV.name]:A({fieldName:QV.name})}))}).check(e=>hL([`stage`,`amount`,`owner`,`created_within`,`modified_within`])(e))}),eH={allowManagedConnection:!1,mode:null,credits:null,info:`Salesforce searches are free — you bring your own Salesforce connection.`},tH=`opportunities-salesforce-v1`,nH=class extends Z{billing={billableOperation:tH,cost:eH};searchId=JV;schema=$V;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[YV.name]:this.catalogOutput(YV),[XV.name]:this.catalogOutput(XV),[ZV.name]:this.catalogOutput(ZV),[QV.name]:this.catalogOutput(QV)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitOperation:`salesforce_api`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`salesforce_record_id`}]}}async getAgentContext(e){return ef(e,{objects:[`Opportunity`],includeStages:!0,includeListViewsFor:[`Opportunity`]})}},rH=$V,iH={searchId:JV,billableOperation:tH,baseSearch:Q(JV),outputFieldMode:`static`,paginationType:`cursor`,label:`Salesforce opportunities`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List opportunities from your Salesforce org: identity columns (id, name, amount) plus a JSON record with the standard field set (including IsClosed/IsWon). Filter by status, stage, amount, or field conditions — or run one of the org's own list views.`,tags:[V.NEW],keywords:[`crm`,`sfdc`,`deal`,`pipeline`,`revenue`,`list`,`records`],docPath:$(JV),guide:"Filter open/won via `status` (computed IsClosed/IsWon — org-invariant); `stage` values are OpportunityStage ApiNames from get_provider_context — never assume a stage named 'Closed Won' exists. Close-date windows go through filter rows (CloseDate lte/gte with ISO dates or SOQL literals). In multi-currency orgs Amount bounds compare in the corporate currency. To find deals gone quiet, filter on `LastActivityDate` (e.g. `LastActivityDate < LAST_N_DAYS:30` — closed tasks + events, not literal touches). `list_view` runs the org's own segmentation (XOR with filters/shortcuts). Results page by record id; rows the connected user cannot see are silently absent.",cost:eH,provider:`salesforce`,defaultPayload:{search_id:JV,connector:{strategy:`first`,connections:[]},config:{custom_properties:[],filters:null,list_view:``,status:`any`,stage:``,amount:{min:null,max:null},owner:``,created_within:``,modified_within:``,limit:100,cursor:``,output_fields:{salesforce_record_id:{enabled:!0,alias:``},deal_name:{enabled:!0,alias:``},deal_amount:{enabled:!0,alias:``},salesforce_opportunity_match:{enabled:!0,alias:``}}}}},aH=`owners:hubspot@1`,oH=g(`hubspot_owner_id`),sH=g(`email`),cH=g(`first_name`),lH=g(`last_name`),uH=g(`hubspot_owned_count`),dH=g(`hubspot_owner_match`),fH=r.object({search_id:r.literal(aH),connector:Yl(),config:r.object({email:Bu({path:`config.email`,groupPath:`config.general`,inputType:`text`,label:`Email`,sectionKey:`general`,info:`Only return the owner with this exact email.`}).nullable(),include_archived:Ru({path:`config.include_archived`,groupPath:`config.general`,sectionKey:`general`,label:`Include deactivated owners`,description:``,defaultValue:!1}),owned_object_type:Hu({required:!1,path:`config.owned_object_type`,groupPath:`config.counts`,sectionKey:`general`,label:`Count owned`,description:"Which records to count per owner (via `hubspot_owner_id`).",options:[{label:`Companies`,value:`companies`},{label:`Contacts`,value:`contacts`},{label:`Deals`,value:`deals`}]}).default(`companies`),min_owned_count:N({path:`config.min_owned_count`,min:0,groupPath:`config.counts`,sectionKey:`general`,label:`Minimum owned`,description:`Only return owners owning MORE than this many records. Counting costs one search request per owner (~5/second).`}).nullable(),include_ownership_counts:Ru({path:`config.include_ownership_counts`,groupPath:`config.counts`,sectionKey:`general`,label:`Include ownership counts`,description:`Adds an owned-record count column (one search request per owner, ~5/second).`,defaultValue:!0}),limit:N({path:`config.limit`,min:1,max:2e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Maximum number of owners returned.`}).default(500),output_fields:P(r.object({[oH.name]:A({fieldName:oH.name}),[sH.name]:A({fieldName:sH.name}),[cH.name]:A({fieldName:cH.name}),[lH.name]:A({fieldName:lH.name}),[uH.name]:A({fieldName:uH.name}),[dH.name]:A({fieldName:dH.name})}))})}),pH={allowManagedConnection:!1,mode:null,credits:null,info:`Listing your own HubSpot owners is free.`},mH=`owners-hubspot-v1`,hH=class extends Z{billing={billableOperation:mH,cost:pH};searchId=aH;schema=fH;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[oH.name]:this.catalogOutput(oH),[sH.name]:this.catalogOutput(sH),[cH.name]:this.catalogOutput(cH),[lH.name]:this.catalogOutput(lH),[uH.name]:this.catalogOutput(uH),[dH.name]:this.catalogOutput(dH)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitOperation:`hubspot_crm_search`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`hubspot_owner_id`}]}}async getAgentContext(e){return pp(e,{objectTypes:[]})}},gH=fH,_H={searchId:aH,billableOperation:mH,baseSearch:Q(aH),outputFieldMode:`static`,paginationType:`cursor`,label:`HubSpot owners`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List the owners (users) of your HubSpot portal, optionally with how many companies, contacts, or deals each owns — e.g. all owners with more than 50 companies.`,tags:[V.FIELDS,V.NEW],keywords:[`crm`,`users`,`sales reps`,`assignment`,`rollup`,`count`],docPath:$(aH),guide:"HubSpot has no aggregation API — ownership counts are computed with one count-search per owner against the portal's shared 5 requests/second search budget (expect ~N/5 seconds for N owners). Counts are accurate beyond the 10,000-result search cap. The owner id column matches `hubspot_owner_id` values on records.",cost:pH,provider:`hubspot`,defaultPayload:{search_id:aH,connector:{strategy:`first`,connections:[]},config:{email:``,include_archived:!1,owned_object_type:`companies`,min_owned_count:null,include_ownership_counts:!0,limit:500,output_fields:{hubspot_owner_id:{enabled:!0,alias:``},email:{enabled:!0,alias:``},first_name:{enabled:!0,alias:``},last_name:{enabled:!0,alias:``},hubspot_owned_count:{enabled:!0,alias:``},hubspot_owner_match:{enabled:!0,alias:``}}}}},vH=`people:attio@1`,yH=g(`attio_record_id`),bH=g(`email`),xH=g(`first_name`),SH=g(`last_name`),CH=g(`attio_person_match`),wH=r.object({search_id:r.literal(vH),connector:Yl(),config:r.object({custom_properties:IL(`job_title`,kf({target:`objects`,identifier:`people`})),filters:LL(`job_title`),has_email:Ru({path:`config.has_email`,groupPath:`config.general`,sectionKey:`general`,defaultValue:!1,label:`Has email`,info:`Only people with at least one email address.`}),saved_view:RL(Tf({target:`objects`,identifier:`people`})),created_within:zL(),limit:PL(),page_number:FL(),output_fields:P(r.object({[yH.name]:A({fieldName:yH.name}),[bH.name]:A({fieldName:bH.name}),[xH.name]:A({fieldName:xH.name}),[SH.name]:A({fieldName:SH.name}),[CH.name]:A({fieldName:CH.name})}))}).check(e=>BL(e,[`has_email`,`created_within`]))}),TH={allowManagedConnection:!1,mode:null,credits:null,info:`Searching your own Attio workspace is free.`},EH=`people-attio-v1`,DH=class extends Z{billing={billableOperation:EH,cost:TH};searchId=vH;schema=wH;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[yH.name]:this.catalogOutput(yH),[bH.name]:this.catalogOutput(bH),[xH.name]:this.catalogOutput(xH),[SH.name]:this.catalogOutput(SH),[CH.name]:this.catalogOutput(CH)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitOperation:`attio_query`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`attio_record_id`}]}}async getAgentContext(e){return jf(e,{objects:[`people`],includeViewsFor:[`people`]})}},OH=wH,kH={searchId:vH,billableOperation:EH,baseSearch:Q(vH),outputFieldMode:`static`,paginationType:`page_number`,label:`Attio people`,categories:[`people`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List people from your Attio workspace: identity columns (id, email, name) plus a JSON record with the standard attribute set and any custom attributes you pick.`,tags:[V.EMAIL,V.NEW],keywords:[`crm`,`list`,`records`,`import`,`contact`,`workspace`],docPath:$(vH),guide:`Call get_provider_context first for this workspace's attribute slugs and enumeration titles — use api_slugs verbatim. Standard attributes become typed columns; everything else (standard set + picked custom attributes) rides in the person JSON — expand it or chain json:extract downstream. Filters support any attribute (select/status = equality on workspace-defined titles); a saved view replaces the filter fields entirely. For staleness, filter or sort on last_interaction (targets its interacted_at timestamp) — Attio's read-only communication-intelligence signal, auto-populated from members' synced email/calendar (e.g. people with no interaction in 90 days). Attio reports no total count — page until a short page.`,cost:TH,provider:`attio`,defaultPayload:{search_id:vH,connector:{strategy:`first`,connections:[]},config:{custom_properties:[],filters:null,has_email:!1,saved_view:``,created_within:``,limit:100,page_number:1,output_fields:{attio_record_id:{enabled:!0,alias:``},email:{enabled:!0,alias:``},first_name:{enabled:!0,alias:``},last_name:{enabled:!0,alias:``},attio_person_match:{enabled:!0,alias:``}}}}},AH=`people:channelmembers:slack@1`,jH=g(`name`),MH=g(`email`),NH=g(`slack_user_id`),PH=g(`slack_member_match`),FH=[{value:`internal`,label:`Workspace members`},{value:`external`,label:`External (Slack Connect)`}],IH=[`internal`],LH=r.object({search_id:r.literal(AH),connector:Yl(),config:r.object({channel_id:Uu({path:`config.channel_id`,groupPath:`config.general`,sectionKey:`general`,label:`Channel`,required:!0,info:"Only public channels and private channels the pipe0 app has been invited to are listed. Slack Connect channels are usually private, so run `/invite @pipe0` in one to make it selectable at all.",enabledIf:_(`slack`),optionsDef:TO}),include_bots:Ru({path:`config.include_bots`,groupPath:`config.general`,sectionKey:`general`,label:`Include bots`,description:`Also list app/bot members of the channel.`,defaultValue:!1}),member_types:j({path:`config.member_types`,groupPath:`config.general`,sectionKey:`general`,label:`Member types`,placeholder:`Workspace members`,disableSearch:!0,required:!0,description:`Defaults to workspace members only.`,info:"External (Slack Connect) members are not in the workspace user directory. Invite the pipe0 app to the shared channel (`/invite @pipe0`) or they return as ID-only rows — and their email is never exposed.",guide:"Select only `external` to list just the partner/customer side of a shared channel.",options:FH}).default(IH),limit:N({path:`config.limit`,min:1,max:1e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of members per page`}).default(200),cursor:Bu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[jH.name]:A({fieldName:jH.name}),[MH.name]:A({fieldName:MH.name}),[NH.name]:A({fieldName:NH.name}),[PH.name]:A({fieldName:PH.name})}))})}),RH={match:`any`,fields:[{fieldName:`slack_user_id`}]},zH={allowManagedConnection:!1,mode:null,credits:null,info:`Slack searches are free — you bring your own Slack connection.`},BH=`people-channelmembers-slack-v1`,VH=class extends Z{billing={billableOperation:BH,cost:zH};searchId=AH;schema=LH;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[jH.name]:this.catalogOutput(jH),[MH.name]:this.catalogOutput(MH),[NH.name]:this.catalogOutput(NH),[PH.name]:this.catalogOutput(PH)}}getConnectionsRequirements(){return[{provider:`slack`,rateLimitOperation:`slack_api_read`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return RH}async getAgentContext(e){if(e.environment===`sandbox`)return{summary:'Sandbox: channel list is synthetic. Available channels: `C0SANDBOX001` (#demo-general), `C0SANDBOX002` (#demo-alerts). `config.member_types` defaults to `["internal"]`; selecting `"external"` adds synthetic Slack Connect members, including one unresolvable ID-only row.'};let t=this.payload.config.channel_id,n=Array.isArray(t)?t[0]:t;if(!n)return null;let r=e.connectionSecrets.slack;if(!r)return null;let i=await(await fetch(`https://slack.com/api/conversations.info?channel=${encodeURIComponent(n)}`,{headers:{Authorization:`Bearer ${r}`},signal:AbortSignal.timeout(1e4)})).json();if(!i.ok||!i.channel)throw new K.HttpError({msg:i.error??`slack_error`});let a=i.channel,o=a.name?`#${a.name}`:n,s=!!a.is_ext_shared||!!a.is_org_shared,c=a.is_member!==!1,l=a.shared_team_ids?.length??0;return{summary:s?c?`${o} is a Slack Connect channel${l?` shared with ${l} team(s)`:``}. The pipe0 app is in the channel, so external members' names and titles resolve. Add \`"external"\` to \`config.member_types\` to include them — their email is never returned (\`users:read.email\` is workspace-scoped), and each row is flagged \`slack_member_match.is_external\`.`:`${o} is a Slack Connect channel, but the pipe0 app is NOT a member, so external members cannot be resolved — they come back as ID-only rows (\`is_external: true\`, name and email null). Ask the user to run \`/invite @pipe0\` in ${o}, or leave \`config.member_types\` at \`["internal"]\`.`:`${o} is not a Slack Connect channel — every member is in the workspace directory. Leave \`config.member_types\` at \`["internal"]\`.`,data:{channel_name:a.name??null,is_ext_shared:!!a.is_ext_shared,is_org_shared:!!a.is_org_shared,is_member:c,shared_team_ids:a.shared_team_ids??[],pending_connected_team_ids:a.pending_connected_team_ids??[],external_members_resolvable:s&&c}}}},HH=LH,UH={searchId:AH,billableOperation:BH,baseSearch:Q(AH),outputFieldMode:`static`,paginationType:`cursor`,label:`Slack channel members`,categories:[`people`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List the members of a Slack channel: one row per person with full name, email address (when the workspace exposes it), Slack user ID, and a standardized slack_member_match object (handle, title, timezone, admin/guest flags).`,tags:[V.NEW],keywords:[`workspace`,`team roster`,`coworkers`,`colleagues`,`participants`,`audience`],docPath:$(AH),guide:`Rows come from the channel's member list, resolved against the workspace user directory. member_email/email is only present when the connection holds users:read.email AND the workspace exposes emails — treat empty email as 'hidden', not 'does not exist'. Bots and app users are excluded unless include_bots is set; deactivated members are not in channels. slack_user_id is the join key for message:send-direct:slack@1 (DM each member) and the dedup key. The channel picker only sees public channels plus private channels the pipe0 app is in — and Slack Connect channels are usually private, so a shared channel will not even be selectable until someone runs /invite @pipe0 in it. A bot token cannot enumerate private channels it is not a member of, so an absent channel means 'not invited', never 'does not exist'. Title/phone/timezone live inside slack_member_match (expand with json:extract:multi@1). member_types selects which members come back: 'internal' = the workspace directory (users.list), 'external' = Slack Connect members shared in from another workspace. Externals resolve to a name/title only while the pipe0 app is a member of the shared channel, and their email is never exposed — check slack_member_match.is_external per row. Selecting only 'external' lists the partner/customer side of a shared channel. Members that cannot be resolved are dropped unless 'external' is selected. Call get_provider_context once a channel is picked: it reports whether that channel is Slack Connect and whether the app is in it.`,cost:zH,provider:`slack`,defaultPayload:{search_id:AH,connector:{strategy:`first`,connections:[]},config:{channel_id:``,include_bots:!1,member_types:IH,limit:200,cursor:``,output_fields:{name:{enabled:!0,alias:``},email:{enabled:!0,alias:``},slack_user_id:{enabled:!0,alias:``},slack_member_match:{enabled:!0,alias:``}}}}},WH=`people:entitysearch:parallel@1`,GH=g(`name`),KH=g(`job_title`),qH=g(`profile_url`),JH=g(`parallel_person_entity_match`),YH=r.object({search_id:r.literal(WH),connector:Xl(),config:r.object({objective:Vu({path:`config.objective`,sectionKey:`general`,groupPath:`config.general`,label:`Objective`,rows:4,minLength:10,placeholder:`Heads of Engineering at Series B fintech companies in the US`,description:`Plain-text natural-language description of the people to find.`}),limit:N({path:`config.limit`,min:5,max:1e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of entities to return (5–1000).`}).default(100),output_fields:P(r.object({[GH.name]:A({fieldName:GH.name}),[KH.name]:A({fieldName:KH.name}),[qH.name]:A({fieldName:qH.name}),[JH.name]:A({fieldName:JH.name})}))})}),XH={match:`any`,fields:[{fieldName:`profile_url`}]},ZH={allowManagedConnection:!0,mode:`per_page`,credits:{default:.5},info:`1 page = 100 results; billed per 100 results returned (e.g. 100 results = 1 page, 1,000 results = 10 pages). A search returns up to your selected limit in a single request.`},QH=`people-entitysearch-parallel-v1`,$H=class extends Z{billing={billableOperation:QH,cost:ZH};searchId=WH;schema=YH;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[GH.name]:this.catalogOutput(GH),[KH.name]:this.catalogOutput(KH),[qH.name]:this.catalogOutput(qH),[JH.name]:this.catalogOutput(JH)}}getConnectionsRequirements(){return[{provider:`parallel`,rateLimitOperation:`parallel_entity_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return XH}},eU=YH,tU={searchId:WH,billableOperation:QH,baseSearch:Q(WH),label:`People search (AI)`,categories:[`people`],paginationType:`page_number`,hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Natural-language people search powered by Parallel Entity Search — for asks static filters can't express.`,tags:[V.PEOPLE_PROFILES],keywords:[`prospect`,`lead`,`contact`,`find people`,`natural language`],docPath:$(WH),guide:`Best for asks the static filters of the amplemarket or crustdata people searches can't express — check their schemas first. Returns sparse records (identity basics plus a match rationale) that need further enrichment, where the filter-based datasets return full profiles. When filters get close, prefer a broad filter-based search narrowed by enrichment + row filtering over a natural-language objective.`,cost:ZH,provider:`parallel`,defaultPayload:{search_id:WH,connector:null,config:{objective:``,limit:100,output_fields:{name:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},parallel_person_entity_match:{enabled:!1,alias:``}}}}},nU=`people:eventguests:luma@1`,rU=g(`name`),iU=g(`email`),aU=g(`luma_id`),oU=g(`registered_at`),sU=g(`luma_event_guest_match`),cU=[{label:`Sample Meetup — Berlin`,value:`evt-sandbox-1`},{label:`Sample Conference — SF`,value:`evt-sandbox-2`}],lU={requires:{connection:`luma`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return cU;if(!t)throw Error(`A Luma connection is required to list events.`);let r=await fetch(`https://public-api.luma.com/v1/calendar/list-events`,{headers:{accept:`application/json`,"x-luma-api-key":t}});if(!r.ok){let e=await r.text();throw Error(`Failed to list Luma events: ${e}`)}let i=((await r.json()).entries||[]).filter(e=>!!e?.id).map(e=>({label:e.name||e.id,value:e.id}));return e?i.filter(t=>t.label.toLowerCase().includes(e.toLowerCase())):i}},uU=r.object({search_id:r.literal(nU),connector:Yl(),config:r.object({limit:N({path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of guests per page`}).default(100),cursor:Bu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[rU.name]:A({fieldName:rU.name}),[iU.name]:A({fieldName:iU.name}),[aU.name]:A({fieldName:aU.name}),[oU.name]:A({fieldName:oU.name}),[sU.name]:A({fieldName:sU.name})})),filters:r.object({event_id:Uu({path:`config.filters.event_id`,sectionKey:`config.filters`,groupPath:`config.filters.event`,label:`Event`,required:!0,info:`Pick one of your Luma events; guests of this event are returned.`,enabledIf:_(`luma`),optionsDef:lU}),approval_status:Hu({path:`config.filters.approval_status`,sectionKey:`config.filters`,groupPath:`config.filters.event`,label:`Approval status`,description:`Only return guests with this approval status.`,required:!1,options:[{value:`approved`,label:`Approved`},{value:`pending_approval`,label:`Pending approval`},{value:`declined`,label:`Declined`},{value:`waitlist`,label:`Waitlist`},{value:`invited`,label:`Invited`}]})})})}),dU={match:`any`,fields:[{fieldName:`luma_id`}]},fU={allowManagedConnection:!0,mode:`per_page`,credits:{default:1},info:`1 page = up to 100 guests.`},pU=`people-eventguests-luma-v1`,mU=class extends Z{billing={billableOperation:pU,cost:fU};searchId=nU;schema=uU;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[rU.name]:this.catalogOutput(rU),[iU.name]:this.catalogOutput(iU),[aU.name]:this.catalogOutput(aU),[oU.name]:this.catalogOutput(oU),[sU.name]:this.catalogOutput(sU)}}getConnectionsRequirements(){return[{provider:`luma`,rateLimitOperation:`luma_get_guests`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return dU}},hU=uU,gU={searchId:nU,billableOperation:pU,baseSearch:Q(nU),paginationType:`cursor`,label:`List event guests`,categories:[`people`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`Fetch all guests of a Luma event using your own Luma API key.`,tags:[V.PEOPLE_PROFILES,V.EVENTS,V.NEW],keywords:[`attendees`,`rsvp`,`meetup`,`conference`,`registrations`,`participants`],docPath:$(nU),cost:fU,provider:`luma`,defaultPayload:{search_id:nU,connector:{strategy:`first`,connections:[]},config:{limit:100,cursor:``,output_fields:{name:{enabled:!0,alias:``},email:{enabled:!0,alias:``},luma_id:{enabled:!0,alias:``},registered_at:{enabled:!0,alias:``},luma_event_guest_match:{enabled:!0,alias:``}},filters:{event_id:``,approval_status:``}}}},_U=`people:profiles:amplemarket@2`,vU=g(`name`),yU=g(`company_domain`),bU=g(`profile_url`),xU=g(`job_title`),SU=g(`amplemarket_person_match`),CU=r.object({search_id:r.literal(_U),connector:Xl(),config:r.object({limit:N({path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,label:`Page size`,sectionKey:`pagination`,description:`Max number of search results per page`}).default(50),page_number:N({path:`config.page_number`,groupPath:`config.pagination`,label:`Page number`,min:1,sectionKey:`pagination`,description:``}).nullish(),output_fields:P(r.object({[vU.name]:A({fieldName:vU.name}),[yU.name]:A({fieldName:yU.name}),[bU.name]:A({fieldName:bU.name}),[xU.name]:A({fieldName:xU.name}),[SU.name]:A({fieldName:SU.name})})),filters:r.object({person_name:Bu({label:`Full name`,path:`config.filters.person_name`,sectionKey:`config.filters`,inputType:`text`,description:``,groupPath:`config.filters.general`}).default(``),current_locations:M({path:`config.filters.current_locations`,sectionKey:`config.filters`,label:`Location`,optionsDef:h(`locations`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),current_job_titles:O({path:`config.filters.current_job_titles`,sectionKey:`config.filters`,label:`Title`,placeholder:J(`title`),description:``,order:1,groupPath:`config.filters.current_employer`,suggestionsDef:h(`titles`)}),current_seniority_levels:j({path:`config.filters.current_seniority_levels`,sectionKey:`config.filters`,placeholder:J(`seniority`),label:`Seniority`,required:!1,disableSearch:!1,options:m(`amplemarket.seniority_levels`),description:``,groupPath:`config.filters.current_employer`}).default([]),current_departments:j({path:`config.filters.current_departments`,sectionKey:`config.filters`,label:`Department`,placeholder:J(`department`),disableSearch:!1,required:!1,options:m(`amplemarket.departments`),description:``,groupPath:`config.filters.current_employer`}).default([]),current_job_functions:j({path:`config.filters.current_job_functions`,sectionKey:`config.filters`,label:`Job function`,placeholder:J(`job_function`),disableSearch:!1,required:!1,options:m(`amplemarket.job_functions`),description:``,groupPath:`config.filters.current_employer`}).default([]),current_employer_locations:M({path:`config.filters.current_employer_locations`,sectionKey:`config.filters`,label:`Headquarters`,optionsDef:h(`locations`),groupPath:`config.filters.current_company`,placeholder:J(`location`)}).default({include:[],exclude:[]}),current_employer_names:k({path:`config.filters.current_employer_names`,sectionKey:`config.filters`,label:`Company name`,groupPath:`config.filters.current_company`,description:``,placeholder:J(`company_name`),suggestionsDef:h(`company_names`)}).default({include:[],exclude:[]}),current_employer_domains:k({path:`config.filters.current_employer_domains`,sectionKey:`config.filters`,label:`Company domain`,description:``,maxItems:200,placeholder:J(`company_domain`),groupPath:`config.filters.current_company`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),current_employer_linkedin_industries:j({path:`config.filters.current_employer_linkedin_industries`,sectionKey:`config.filters`,label:`Industry`,disableSearch:!1,groupPath:`config.filters.current_company`,description:``,placeholder:J(`industry`),required:!1,options:m(`linkedin.industries`)}).default([]),current_employer_estimated_revenue:j({path:`config.filters.current_employer_estimated_revenue`,sectionKey:`config.filters`,label:`Estimated revenue`,disableSearch:!1,required:!1,groupPath:`config.filters.current_company`,description:``,options:m(`amplemarket.company_revenue`)}).default([]),current_employer_founded_year:Nu({path:`config.filters.current_employer_founded_year`,sectionKey:`config.filters`,label:`Founded year`,groupPath:`config.filters.current_company`,min:0,max:2040,description:``}).default({min:null,max:null}),current_employer_investors:O({path:`config.filters.current_employer_investors`,sectionKey:`config.filters`,label:`Employer investors`,groupPath:`config.filters.current_company`,placeholder:J(`investor`),description:``}),current_employer_open_position_titles:O({path:`config.filters.current_employer_open_position_titles`,sectionKey:`config.filters`,label:`Open positions`,groupPath:`config.filters.current_company`,description:``,placeholder:J(`title`),suggestionsDef:h(`titles`)}),school_names:Wu({path:`config.filters.school_names`,sectionKey:`config.filters`,label:`School names`,disableSearch:!1,description:``,placeholder:J(`school`),required:!1,groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default([])}).check(e=>{SR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),wU={match:`any`,fields:[{fieldName:`profile_url`}]},TU={allowManagedConnection:!0,mode:`per_page`,credits:{default:3},info:`1 page = 100 records; 200 results = 2 pages`},EU=`people-profiles-amplemarket-v2`,DU=class extends Z{billing={billableOperation:EU,cost:TU};searchId=_U;schema=CU;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[vU.name]:this.catalogOutput(vU),[yU.name]:this.catalogOutput(yU),[bU.name]:this.catalogOutput(bU),[xU.name]:this.catalogOutput(xU),[SU.name]:this.catalogOutput(SU)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitOperation:`amplemarket_people_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return wU}},OU=CU,kU={searchId:_U,billableOperation:EU,baseSearch:Q(`people:profiles:amplemarket@2`),paginationType:`page_number`,label:`People search`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Filter-based people search on Amplemarket's dataset — precise prospecting filters.`,tags:[V.PEOPLE_PROFILES],keywords:[`prospect`,`lead`,`contact`,`find people`,`filters`],docPath:$(_U),guide:`The most precise of the three prospecting datasets — prefer it when its filters express the ask exactly. If a needed criterion is missing here, check the crustdata search's wider filter set before falling back to the natural-language parallel search.`,cost:TU,provider:`amplemarket`,defaultPayload:{search_id:_U,connector:null,config:{limit:50,page_number:1,output_fields:{name:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},amplemarket_person_match:{enabled:!0,alias:``}},filters:{current_employer_names:{include:[],exclude:[]},current_departments:[],current_employer_locations:{include:[],exclude:[]},person_name:``,current_employer_founded_year:{min:null,max:null},current_employer_estimated_revenue:[],current_employer_investors:[],current_employer_open_position_titles:[],current_job_functions:[],current_locations:{include:[],exclude:[]},current_employer_linkedin_industries:[],current_employer_domains:{include:[],exclude:[]},current_seniority_levels:[],school_names:[],current_job_titles:[]}}}},AU=`people:profiles:crustdata@2`,jU=g(`name`),MU=g(`company_domain`),NU=g(`profile_url`),PU=g(`job_title`),FU=g(`crustdata_person_match`),IU=r.object({search_id:r.literal(AU),connector:Xl(),config:r.object({limit:N({path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Page size`,description:`Max number of search results per page`}).default(100),cursor:Bu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[jU.name]:A({fieldName:jU.name}),[MU.name]:A({fieldName:MU.name}),[NU.name]:A({fieldName:NU.name}),[PU.name]:A({fieldName:PU.name}),[FU.name]:A({fieldName:FU.name})})),filters:r.object({locations:M({path:`config.filters.locations`,sectionKey:`config.filters`,label:`Location`,placeholder:J(`location`),optionsDef:h(`locations`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),current_job_titles:k({path:`config.filters.current_job_titles`,sectionKey:`config.filters`,label:`Title`,description:``,placeholder:J(`title`),order:1,groupPath:`config.filters.current_employer`,suggestionsDef:h(`titles`)}).default({include:[],exclude:[]}),current_employer_names:k({path:`config.filters.current_employer_names`,sectionKey:`config.filters`,label:`Company name`,description:``,placeholder:J(`company_name`),maxItems:200,groupPath:`config.filters.current_employer`,suggestionsDef:h(`company_names`,{widgets:{emoji:{char:`🏷️`}}})}).default({include:[],exclude:[]}),current_employer_domains:k({path:`config.filters.current_employer_domains`,sectionKey:`config.filters`,label:`Company domain`,placeholder:J(`company_domain`),description:``,maxItems:200,groupPath:`config.filters.current_employer`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),current_employer_industries:M({path:`config.filters.current_employer_industries`,sectionKey:`config.filters`,label:`Industry`,groupPath:`config.filters.current_employer`,placeholder:J(`industry`),description:``,optionsDef:h(`linkedin_industries.crustdata`,{limit:300})}).default({include:[],exclude:[]}),years_at_current_company:j({path:`config.filters.years_at_current_company`,sectionKey:`config.filters`,label:`Years at current company`,placeholder:`1 to 2 years`,disableSearch:!1,required:!1,groupPath:`config.filters.current_employer`,description:``,options:m(`crustdata.years_of_experience`)}).default([]),previous_employer_domains:k({path:`config.filters.previous_employer_domains`,sectionKey:`config.filters`,label:`Previous employer domain`,description:``,placeholder:J(`company_domain`),maxItems:200,groupPath:`config.filters.experience`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),previous_seniority_levels:Pu({path:`config.filters.previous_seniority_levels`,sectionKey:`config.filters`,label:`Previous seniority`,placeholder:J(`seniority`),disableSearch:!0,optionsDef:Ge(`crustdata.person_seniority`),description:``,groupPath:`config.filters.experience`}).default({include:[],exclude:[]}),previous_employer_names:k({path:`config.filters.previous_employer_names`,sectionKey:`config.filters`,label:`Previous employer`,description:``,placeholder:J(`company_name`),maxItems:200,groupPath:`config.filters.experience`,suggestionsDef:h(`company_names`,{widgets:{emoji:{char:`🏷️`}}})}).default({include:[],exclude:[]}),previous_job_titles:k({path:`config.filters.previous_job_titles`,sectionKey:`config.filters`,label:`Previous title`,description:``,placeholder:J(`title`),groupPath:`config.filters.experience`,suggestionsDef:h(`titles`)}).default({include:[],exclude:[]}),previous_employer_industries:M({path:`config.filters.previous_employer_industries`,sectionKey:`config.filters`,label:`Previous employer industries`,placeholder:J(`industry`),groupPath:`config.filters.experience`,description:``,optionsDef:h(`linkedin_industries.crustdata`,{limit:300})}).default({include:[],exclude:[]}),profile_headline_keywords:k({path:`config.filters.profile_headline_keywords`,sectionKey:`config.filters`,label:`Headline contains keywords`,maxItems:100,groupPath:`config.filters.keywords`,placeholder:J(`headline_keywords`)}).default({include:[],exclude:[]}),profile_summary_keywords:k({path:`config.filters.profile_summary_keywords`,sectionKey:`config.filters`,label:`Profile about section contains keywords`,maxItems:100,groupPath:`config.filters.keywords`,placeholder:J(`profile_keywords`)}).default({include:[],exclude:[]}),profile_languages:Pu({path:`config.filters.profile_languages`,sectionKey:`config.filters`,label:`Profile language`,placeholder:J(`languages`),optionsDef:Ge(`crustdata.person_profile_languages`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),languages:Pu({path:`config.filters.languages`,sectionKey:`config.filters`,label:`Spoken language`,placeholder:J(`languages_1`),optionsDef:Ge(`crustdata.person_profile_languages`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),skills:M({path:`config.filters.skills`,sectionKey:`config.filters`,label:`Skills`,description:``,placeholder:J(`skills`),groupPath:`config.filters.skills`,optionsDef:h(`skills`)}).default({include:[],exclude:[]}),years_of_experience:j({path:`config.filters.years_of_experience`,sectionKey:`config.filters`,label:`Years of experience`,placeholder:`1 to 2 years`,disableSearch:!0,description:``,required:!1,options:m(`crustdata.years_of_experience`),groupPath:`config.filters.experience`}).default([]),current_seniority_levels:Pu({path:`config.filters.current_seniority_levels`,sectionKey:`config.filters`,disableSearch:!0,label:`Seniority`,placeholder:J(`seniority`),optionsDef:Ge(`crustdata.person_seniority`),description:``,groupPath:`config.filters.experience`}).default({include:[],exclude:[]}),certifications:k({path:`config.filters.certifications`,sectionKey:`config.filters`,label:`Certifications`,groupPath:`config.filters.certifications_honors`,placeholder:J(`certification`),description:``}).default({include:[],exclude:[]}),honors:k({path:`config.filters.honors`,sectionKey:`config.filters`,label:`Honors`,groupPath:`config.filters.certifications_honors`,placeholder:J(`honor`),description:``}).default({include:[],exclude:[]}),recently_changed_jobs:zu({path:`config.filters.recently_changed_jobs`,sectionKey:`config.filters`,label:`Recently changed jobs`,description:``,defaultValue:null,groupPath:`config.filters.activities`}),fields_of_study:M({path:`config.filters.fields_of_study`,sectionKey:`config.filters`,label:`Fields of study`,placeholder:J(`field_of_study`),description:``,groupPath:`config.filters.education`,optionsDef:h(`person.education_field_of_study.crustdata`)}).default({include:[],exclude:[]}),degree_names:M({path:`config.filters.degree_names`,sectionKey:`config.filters`,label:`Degree names`,placeholder:J(`degree_name`),description:``,groupPath:`config.filters.education`,optionsDef:h(`person.education_degree.crustdata`)}).default({include:[],exclude:[]}),school_names:M({path:`config.filters.school_names`,sectionKey:`config.filters`,label:`School names`,description:``,placeholder:J(`school`),groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default({include:[],exclude:[]}),current_school_names:M({path:`config.filters.current_school_names`,sectionKey:`config.filters`,label:`Currently enrolled at`,description:``,placeholder:J(`school`),groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default({include:[],exclude:[]}),extracurricular_activities:k({path:`config.filters.extracurricular_activities`,sectionKey:`config.filters`,label:`Extracurricular activities`,description:``,placeholder:J(`extracurricular`),groupPath:`config.filters.education`,suggestionsDef:h(`person.education_activities.crustdata`)}).default({include:[],exclude:[]}),post_processing_exclude_company_profile_urls:O({path:`config.filters.post_processing_exclude_company_profile_urls`,sectionKey:`config.filters`,groupPath:`config.filters.post_processing`,label:`Exclude company profiles`,maxItems:5e3,placeholder:`https://linkedin.com/company/...`,description:`Company LinkedIn URLs (https://www.linkedin.com/company/{slug}) removed from the search results`}).default([]),post_processing_exclude_company_names:O({path:`config.filters.post_processing_exclude_company_names`,sectionKey:`config.filters`,groupPath:`config.filters.post_processing`,label:`Exclude company names`,maxItems:5e3,placeholder:J(`company_name`),description:`Company names removed from the search results`}).default([])}).check(e=>{let{post_processing_exclude_company_profile_urls:t,post_processing_exclude_company_names:n,...r}=e.value;SR(r)&&e.issues.push({code:`custom`,message:`You must set at least one meaningful filter.`,input:e.value})})})}),LU={match:`any`,fields:[{fieldName:`profile_url`}]},RU={allowManagedConnection:!0,mode:`per_page`,credits:{default:5},info:`1 page = 100 records; 200 results = 2 pages`},zU=`people-profiles-crustdata-v2`,BU=class extends Z{billing={billableOperation:zU,cost:RU};searchId=AU;schema=IU;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[jU.name]:this.catalogOutput(jU),[MU.name]:this.catalogOutput(MU),[NU.name]:this.catalogOutput(NU),[PU.name]:this.catalogOutput(PU),[FU.name]:this.catalogOutput(FU)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_people_db_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return LU}},VU=IU,HU={searchId:AU,billableOperation:zU,baseSearch:Q(`people:profiles:crustdata@2`),paginationType:`cursor`,label:`People search`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Filter-based people search on Crustdata's dataset — widest filter surface: employer, growth, and LinkedIn signals.`,tags:[V.PEOPLE_PROFILES],keywords:[`prospect`,`lead`,`contact`,`find people`,`linkedin`],docPath:$(AU),guide:`The general-purpose default among the three prospecting datasets, with the widest filter surface (employer, growth, LinkedIn signals). When a criterion isn't an exact filter match, search broadly here and narrow afterwards — enrich the qualifying signal, then filter rows — rather than switching to the natural-language parallel search.`,cost:RU,provider:`crustdata`,defaultPayload:{search_id:AU,connector:null,config:{limit:100,cursor:``,output_fields:{name:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},company_domain:{enabled:!0,alias:``},crustdata_person_match:{enabled:!0,alias:``}},filters:{profile_headline_keywords:{include:[],exclude:[]},languages:{include:[],exclude:[]},profile_summary_keywords:{include:[],exclude:[]},previous_job_titles:{include:[],exclude:[]},current_employer_names:{include:[],exclude:[]},current_school_names:{include:[],exclude:[]},years_at_current_company:[],certifications:{include:[],exclude:[]},honors:{include:[],exclude:[]},current_employer_industries:{include:[],exclude:[]},current_employer_domains:{include:[],exclude:[]},previous_employer_domains:{include:[],exclude:[]},current_seniority_levels:{include:[],exclude:[]},previous_seniority_levels:{include:[],exclude:[]},degree_names:{include:[],exclude:[]},locations:{include:[],exclude:[]},profile_languages:{include:[],exclude:[]},recently_changed_jobs:null,extracurricular_activities:{include:[],exclude:[]},school_names:{include:[],exclude:[]},fields_of_study:{include:[],exclude:[]},previous_employer_names:{include:[],exclude:[]},current_job_titles:{include:[],exclude:[]},skills:{include:[],exclude:[]},years_of_experience:[],previous_employer_industries:{include:[],exclude:[]},post_processing_exclude_company_profile_urls:[],post_processing_exclude_company_names:[]}}}},UU=`people:profiles:crustdata@3`,WU=g(`name`),GU=g(`profile_url`),KU=g(`person_profile_match`),qU=r.object({search_id:r.literal(UU),connector:Xl(),config:r.object({limit:N({path:`config.limit`,min:1,max:1e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Page size`,description:`Max number of search results per page`}).default(100),cursor:Bu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),output_fields:P(r.object({[WU.name]:A({fieldName:WU.name}),[GU.name]:A({fieldName:GU.name}),[KU.name]:A({fieldName:KU.name})})),filters:r.object({recently_changed_jobs:zu({path:`config.filters.recently_changed_jobs`,sectionKey:`config.filters`,label:`Recently changed jobs`,description:``,defaultValue:null,groupPath:`config.filters.activities`}),certifications:k({path:`config.filters.certifications`,sectionKey:`config.filters`,label:`Certifications`,groupPath:`config.filters.certifications_honors`,placeholder:J(`certification`),description:``,suggestionsDef:h(`person.certifications.crustdata`)}).default({include:[],exclude:[]}),honors:k({path:`config.filters.honors`,sectionKey:`config.filters`,label:`Honors`,groupPath:`config.filters.certifications_honors`,placeholder:J(`honor`),description:``,suggestionsDef:h(`person.honors.crustdata`)}).default({include:[],exclude:[]}),current_employer_domains:k({path:`config.filters.current_employer_domains`,sectionKey:`config.filters`,label:`Company domain`,placeholder:J(`company_domain`),description:``,maxItems:200,groupPath:`config.filters.current_employer`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),current_employer_headcount_brackets:j({path:`config.filters.current_employer_headcount_brackets`,sectionKey:`config.filters`,label:`Headcount`,description:``,placeholder:`1-10`,disableSearch:!0,required:!1,options:m(`crustdata.company_size`),groupPath:`config.filters.current_employer`}).default([]),current_employer_industries:M({path:`config.filters.current_employer_industries`,sectionKey:`config.filters`,label:`Industry`,groupPath:`config.filters.current_employer`,placeholder:J(`industry`),description:``,optionsDef:h(`linkedin_industries.crustdata`,{limit:300})}).default({include:[],exclude:[]}),current_employer_names:k({path:`config.filters.current_employer_names`,sectionKey:`config.filters`,label:`Company name`,description:``,placeholder:J(`company_name`),maxItems:200,groupPath:`config.filters.current_employer`,suggestionsDef:h(`company_names`,{widgets:{emoji:{char:`🏷️`}}})}).default({include:[],exclude:[]}),current_employment_job_functions:j({path:`config.filters.current_employment_job_functions`,sectionKey:`config.filters`,label:`Function`,groupPath:`config.filters.current_employer`,placeholder:J(`job_function`),description:``,disableSearch:!0,required:!1,options:m(`employment_function.crustdata`)}).default([]),current_employment_job_titles:k({path:`config.filters.current_employment_job_titles`,sectionKey:`config.filters`,label:`Title`,description:``,placeholder:J(`title`),order:1,groupPath:`config.filters.current_employer`,suggestionsDef:h(`titles`)}).default({include:[],exclude:[]}),current_employment_seniority_levels:j({path:`config.filters.current_employment_seniority_levels`,sectionKey:`config.filters`,disableSearch:!0,label:`Seniority`,placeholder:J(`seniority`),options:Ge(`crustdata.person_seniority`).options,required:!1,description:``,groupPath:`config.filters.current_employer`}).default([]),current_employment_tenure_brackets:j({path:`config.filters.current_employment_tenure_brackets`,sectionKey:`config.filters`,label:`Years at current company`,placeholder:`1 to 2 years`,disableSearch:!1,required:!1,groupPath:`config.filters.current_employer`,description:``,options:m(`crustdata.years_of_experience`)}).default([]),current_school_names:M({path:`config.filters.current_school_names`,sectionKey:`config.filters`,label:`Currently enrolled at`,description:``,placeholder:J(`school`),groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default({include:[],exclude:[]}),degree_names:M({path:`config.filters.degree_names`,sectionKey:`config.filters`,label:`Degree`,placeholder:J(`degree_name`),description:``,groupPath:`config.filters.education`,optionsDef:h(`person.education_degree.crustdata`)}).default({include:[],exclude:[]}),fields_of_study:M({path:`config.filters.fields_of_study`,sectionKey:`config.filters`,label:`Field of study`,placeholder:J(`field_of_study`),description:``,groupPath:`config.filters.education`,optionsDef:h(`person.education_field_of_study.crustdata`)}).default({include:[],exclude:[]}),school_names:M({path:`config.filters.school_names`,sectionKey:`config.filters`,label:`School`,description:``,placeholder:J(`school`),groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default({include:[],exclude:[]}),previous_employer_domains:k({path:`config.filters.previous_employer_domains`,sectionKey:`config.filters`,label:`Previous employer domain`,description:``,placeholder:J(`company_domain`),maxItems:200,groupPath:`config.filters.experience`,suggestionsDef:h(`company_domains`,{widgets:e=>({logo_url:{url:Ut(e.value)}})})}).default({include:[],exclude:[]}),previous_employer_headcount_brackets:j({path:`config.filters.previous_employer_headcount_brackets`,sectionKey:`config.filters`,label:`Previous employer headcount`,description:``,placeholder:`1-10`,disableSearch:!0,required:!1,options:m(`crustdata.company_size`),groupPath:`config.filters.experience`}).default([]),previous_employer_industries:M({path:`config.filters.previous_employer_industries`,sectionKey:`config.filters`,label:`Previous employer industry`,placeholder:J(`industry`),groupPath:`config.filters.experience`,description:``,optionsDef:h(`linkedin_industries.crustdata`,{limit:300})}).default({include:[],exclude:[]}),previous_employer_names:k({path:`config.filters.previous_employer_names`,sectionKey:`config.filters`,label:`Previous employer name`,description:``,placeholder:J(`company_name`),maxItems:200,groupPath:`config.filters.experience`,suggestionsDef:h(`company_names`,{widgets:{emoji:{char:`🏷️`}}})}).default({include:[],exclude:[]}),previous_employment_job_functions:j({path:`config.filters.previous_employment_job_functions`,sectionKey:`config.filters`,label:`Previous function`,groupPath:`config.filters.experience`,placeholder:J(`job_function`),description:``,disableSearch:!0,required:!1,options:m(`employment_function.crustdata`)}).default([]),previous_employment_job_titles:k({path:`config.filters.previous_employment_job_titles`,sectionKey:`config.filters`,label:`Previous title`,description:``,placeholder:J(`title`),groupPath:`config.filters.experience`,suggestionsDef:h(`titles`)}).default({include:[],exclude:[]}),previous_employment_seniority_levels:j({path:`config.filters.previous_employment_seniority_levels`,sectionKey:`config.filters`,label:`Previous seniority`,placeholder:J(`seniority`),disableSearch:!0,options:Ge(`crustdata.person_seniority`).options,required:!1,description:``,groupPath:`config.filters.experience`}).default([]),previous_employment_tenure_brackets:j({path:`config.filters.previous_employment_tenure_brackets`,sectionKey:`config.filters`,label:`Years at previous company`,placeholder:`1 to 2 years`,disableSearch:!1,required:!1,groupPath:`config.filters.experience`,description:``,options:m(`crustdata.years_of_experience`)}).default([]),total_years_of_experience_brackets:j({path:`config.filters.total_years_of_experience_brackets`,sectionKey:`config.filters`,label:`Years of experience`,placeholder:`1 to 2 years`,disableSearch:!0,description:``,required:!1,options:m(`crustdata.years_of_experience`),groupPath:`config.filters.experience`}).default([]),languages:Pu({path:`config.filters.languages`,sectionKey:`config.filters`,label:`Spoken language`,placeholder:J(`languages_1`),optionsDef:Ge(`crustdata.person_profile_languages`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),locations:M({path:`config.filters.locations`,sectionKey:`config.filters`,label:`Location`,placeholder:J(`location`),optionsDef:h(`locations`),groupPath:`config.filters.general`}).default({include:[],exclude:[]}),about_section_keywords:k({path:`config.filters.about_section_keywords`,sectionKey:`config.filters`,label:`Profile about section contains keywords`,maxItems:100,groupPath:`config.filters.keywords`,placeholder:J(`profile_keywords`)}).default({include:[],exclude:[]}),profile_headline_keywords:k({path:`config.filters.profile_headline_keywords`,sectionKey:`config.filters`,label:`Headline contains keywords`,maxItems:100,groupPath:`config.filters.keywords`,placeholder:J(`headline_keywords`)}).default({include:[],exclude:[]}),skills:M({path:`config.filters.skills`,sectionKey:`config.filters`,label:`Skills`,description:``,placeholder:J(`skills`),groupPath:`config.filters.skills`,optionsDef:h(`skills`)}).default({include:[],exclude:[]})}).check(e=>{SR(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),JU={match:`any`,fields:[{fieldName:`profile_url`}]},YU={allowManagedConnection:!0,mode:`per_result`,credits:{default:.15,level1:{credits:.07,weight:10}},info:`1 page = 100 records; 200 results = 2 pages`},XU=`people-profiles-crustdata-v3`,ZU=class extends Z{billing={billableOperation:XU,cost:YU};searchId=UU;schema=qU;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[WU.name]:this.catalogOutput(WU),[GU.name]:this.catalogOutput(GU),[KU.name]:this.catalogOutput(KU)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_people_db_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return JU}},QU=qU,$U={searchId:UU,billableOperation:XU,baseSearch:Q(`people:profiles:crustdata@2`),paginationType:`cursor`,label:`People search`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Filter-based people search on Crustdata's dataset — widest filter surface: employer, growth, and LinkedIn signals.`,tags:[V.PEOPLE_PROFILES],keywords:[`prospect`,`lead`,`contact`,`find people`,`linkedin`],docPath:$(UU),guide:`The general-purpose default among the three prospecting datasets, with the widest filter surface (employer, growth, LinkedIn signals). When a criterion isn't an exact filter match, search broadly here and narrow afterwards — enrich the qualifying signal, then filter rows — rather than switching to the natural-language parallel search.`,cost:YU,provider:`crustdata`,defaultPayload:{search_id:UU,connector:null,config:{limit:100,cursor:``,output_fields:{name:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},person_profile_match:{enabled:!0,alias:``}},filters:{recently_changed_jobs:null,certifications:{include:[],exclude:[]},honors:{include:[],exclude:[]},current_employer_domains:{include:[],exclude:[]},current_employer_headcount_brackets:[],current_employer_industries:{include:[],exclude:[]},current_employer_names:{include:[],exclude:[]},current_employment_job_functions:[],current_employment_job_titles:{include:[],exclude:[]},current_employment_seniority_levels:[],current_employment_tenure_brackets:[],current_school_names:{include:[],exclude:[]},degree_names:{include:[],exclude:[]},fields_of_study:{include:[],exclude:[]},school_names:{include:[],exclude:[]},previous_employer_domains:{include:[],exclude:[]},previous_employer_headcount_brackets:[],previous_employer_industries:{include:[],exclude:[]},previous_employer_names:{include:[],exclude:[]},previous_employment_job_functions:[],previous_employment_job_titles:{include:[],exclude:[]},previous_employment_seniority_levels:[],previous_employment_tenure_brackets:[],total_years_of_experience_brackets:[],languages:{include:[],exclude:[]},locations:{include:[],exclude:[]},about_section_keywords:{include:[],exclude:[]},profile_headline_keywords:{include:[],exclude:[]},skills:{include:[],exclude:[]}}}}},eW=`posts:content:crustdata@1`,tW=g(`post_match`),nW=g(`post_text`),rW=g(`post_id`),iW=r.object({search_id:r.literal(eW),connector:Xl(),config:r.object({limit:N({path:`config.limit`,min:1,max:100,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Page size`,description:`Max number of search results per page`}).default(100),output_fields:P(r.object({[rW.name]:A({fieldName:rW.name}),[tW.name]:A({fieldName:tW.name}),[nW.name]:A({fieldName:nW.name})})),filters:r.object({keywords:O({path:`config.filters.keywords`,sectionKey:`config.filters`,label:`Search keywords`,groupPath:`config.filters.general`,maxItems:6,placeholder:J(`profile_keywords`),description:``}).default([]),keyword_operator:Hu({path:`config.filters.keyword_operator`,sectionKey:`config.filters`,label:`Keyword operator`,groupPath:`config.filters.general`,options:[{value:`OR`,label:`Any keyword (OR)`},{value:`AND`,label:`All keywords (AND)`}],required:!0,defaultValue:`OR`,description:`Post must match any or all keywords.`}).default(`OR`),date_posted:Hu({path:`config.filters.date_posted`,sectionKey:`config.filters`,label:`Date posted`,groupPath:`config.filters.general`,options:Ge(`crustdata.post_date_posted`).options,placeholder:`Past 24h, past week, ...`,required:!1,defaultValue:``,description:`Only return posts published within this recency window.`}).default(``),content_types:j({path:`config.filters.content_types`,sectionKey:`config.filters`,label:`Content type`,groupPath:`config.filters.general`,options:m(`crustdata.post_content_type`),disableSearch:!0,required:!1,placeholder:`Photos, jobs, ...`,description:``}).default([]),author_industries:Wu({path:`config.filters.author_industries`,sectionKey:`config.filters`,label:`Author industry`,groupPath:`config.filters.author`,optionsDef:h(`linkedin_industries.crustdata`),disableSearch:!1,required:!1,maxItems:100,placeholder:J(`industry`),description:`Only return posts whose author works in one of these industries.`}).default([]),author_company_profile_url:O({path:`config.filters.author_company_profile_url`,sectionKey:`config.filters`,label:`Author company profile URL`,groupPath:`config.filters.author`,maxItems:50,placeholder:`https://linkedin.com/company/..., ...`,description:`Only return posts whose author currently works at these companies (by LinkedIn profile URL).`}).default([]),author_title:O({path:`config.filters.author_title`,sectionKey:`config.filters`,label:`Author title`,groupPath:`config.filters.author`,maxItems:50,suggestionsDef:h(`titles`),placeholder:J(`title`),description:`Only return posts whose author holds one of these titles.`}).default([]),author_profile_url:O({path:`config.filters.author_profile_url`,sectionKey:`config.filters`,label:`Author profile URL`,groupPath:`config.filters.author`,maxItems:50,placeholder:`https://linkedin.com/in/..., ...`,description:`Only return posts authored by these people (by LinkedIn profile URL).`}).default([]),authoring_company_profile_url:O({path:`config.filters.authoring_company_profile_url`,sectionKey:`config.filters`,label:`Authoring company profile URL`,groupPath:`config.filters.author`,maxItems:50,placeholder:`https://linkedin.com/company/..., ...`,description:`Only return posts authored by these companies (by LinkedIn profile URL).`}).default([]),companies_mentioned_in_post:O({path:`config.filters.companies_mentioned_in_post`,sectionKey:`config.filters`,label:`Companies mentioned in post`,groupPath:`config.filters.mentions`,maxItems:50,placeholder:`https://linkedin.com/company/..., ...`,description:`Only return posts that mention these companies (by LinkedIn profile URL).`}).default([]),people_mentioned_in_post:O({path:`config.filters.people_mentioned_in_post`,sectionKey:`config.filters`,label:`People mentioned in post`,groupPath:`config.filters.mentions`,maxItems:50,placeholder:`https://linkedin.com/in/..., ...`,description:`Only return posts that mention these people (by LinkedIn profile URL).`}).default([])}).check(e=>{let t=e.value,n=t.keywords.some(e=>e.trim()!==``),r=[t.author_industries,t.author_company_profile_url,t.author_title,t.author_profile_url,t.authoring_company_profile_url,t.companies_mentioned_in_post,t.people_mentioned_in_post].some(e=>e.length>0);!n&&!r&&e.issues.push({code:`custom`,message:`Provide a keyword or at least one filter.`,input:e.value,path:[`keywords`]});let i=t.author_industries.length>0||t.author_company_profile_url.length>0||t.author_title.length>0||t.author_profile_url.length>0;t.authoring_company_profile_url.length>0&&i&&e.issues.push({code:`custom`,message:`Authoring company profile URL can't be combined with author profile URL, company name, title, or industry filters.`,input:e.value,path:[`authoring_company_profile_url`]})})})}),aW={match:`any`,fields:[{fieldName:`post_id`}]},oW={allowManagedConnection:!0,mode:`per_result`,credits:{default:2}},sW=`posts-content-crustdata-v1`,cW=class extends Z{billing={billableOperation:sW,cost:oW};searchId=eW;schema=iW;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[rW.name]:this.catalogOutput(rW),[tW.name]:this.catalogOutput(tW),[nW.name]:this.catalogOutput(nW)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_social_post_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return aW}},lW=iW,uW={searchId:eW,billableOperation:sW,baseSearch:Q(eW),paginationType:`page_number`,label:`LinkedIn post search`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Keyword-based LinkedIn post search.`,tags:[V.LINKEDIN],keywords:[`content`,`social`,`engagement`,`keyword`,`activity`],docPath:$(eW),cost:oW,provider:`crustdata`,defaultPayload:{search_id:eW,connector:null,config:{limit:100,output_fields:{post_id:{enabled:!0,alias:``},post_text:{enabled:!0,alias:``},post_match:{enabled:!0,alias:``}},filters:{keywords:[],keyword_operator:`OR`,date_posted:``,content_types:[],author_industries:[],author_company_profile_url:[],author_title:[],author_profile_url:[],authoring_company_profile_url:[],companies_mentioned_in_post:[],people_mentioned_in_post:[]}}}},dW=`query:attio@1`,fW=r.object({search_id:r.literal(dW),connector:Yl(),config:r.object({query:Vu({path:`config.query`,groupPath:`config.general`,sectionKey:`general`,label:`SQL query`,description:`A single read-only SELECT statement (PostgreSQL dialect; Attio Enterprise plan only). It is wrapped automatically for pagination, so do not add your own LIMIT/OFFSET for paging.`,rows:8,minLength:1,maxLength:2e4}),limit:PL(),page_number:FL()})}),pW={allowManagedConnection:!1,mode:null,credits:null,info:`Querying your own Attio workspace is free.`},mW=`query-attio-v1`,hW=class extends Z{billing={billableOperation:mW,cost:pW};searchId=dW;schema=fW;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitOperation:`attio_sql`,rateLimitRatio:1,allowManagedConnection:!1}]}async getAgentContext(e){return jf(e,{objects:`discover`,includeLists:!0})}},gW=fW,_W={searchId:dW,billableOperation:mW,baseSearch:Q(dW),outputFieldMode:`dynamic`,paginationType:`page_number`,label:`Query Attio (SQL)`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`Run a read-only SQL query against your Attio workspace (Enterprise plan) — the only way to aggregate (GROUP BY, COUNT) across objects and lists server-side.`,tags:[V.NEW],keywords:[`sql`,`aggregate`,`count`,`group by`,`report`,`crm`],docPath:$(dW),guide:`Attio Enterprise plan only (other plans get a clear error — list records with an Attio search and aggregate client-side instead). PostgreSQL dialect, SELECT-only; tables are object/list api_slugs, columns are attribute slugs (call get_provider_context for both). Record-reference arrays must be UNNESTed inside a CTE before joining. Ownership attributes are workspace-defined actor-references — discover the slug, never assume one. Example: SELECT owner.id, COUNT(*) FROM companies GROUP BY owner.id.`,cost:pW,provider:`attio`,defaultPayload:{search_id:dW,connector:{strategy:`first`,connections:[]},config:{query:``,limit:100,page_number:1}}},vW=`query:salesforce@1`,yW=r.object({search_id:r.literal(vW),connector:Yl(),config:r.object({soql:Vu({path:`config.soql`,groupPath:`config.general`,sectionKey:`general`,label:`SOQL query`,description:`A single read-only SELECT statement (SOQL, not SQL). Pagination is wrapped automatically — add your own LIMIT/OFFSET only to cap results.`,rows:8,minLength:1,maxLength:2e4}),limit:N({path:`config.limit`,min:1,max:500,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of rows per page`}).default(100),page_number:N({path:`config.page_number`,min:1,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Page`,description:`1-based page index. Salesforce caps OFFSET at 2,000 rows — narrow with WHERE past that, or use the object searches (their cursors have no depth limit).`}).nullable().default(1)})}),bW={allowManagedConnection:!1,mode:null,credits:null,info:`Salesforce searches are free — you bring your own Salesforce connection.`},xW=`query-salesforce-v1`,SW=class extends Z{billing={billableOperation:xW,cost:bW};searchId=vW;schema=yW;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitOperation:`salesforce_api`,rateLimitRatio:1,allowManagedConnection:!1}]}async getAgentContext(e){return ef(e,{objects:[`Contact`,`Lead`,`Account`,`Opportunity`],includeStages:!0})}},CW=yW,wW={searchId:vW,billableOperation:xW,baseSearch:Q(vW),outputFieldMode:`dynamic`,paginationType:`page_number`,label:`Query Salesforce (SOQL)`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`Run a read-only SOQL query against your Salesforce org — including native aggregates (GROUP BY / HAVING / COUNT), e.g. every owner with more than 10 accounts.`,guide:"SOQL SELECT only (no SOSL, no DML). Get object/field API names from get_provider_context and use them verbatim. Aggregates (GROUP BY/HAVING/COUNT) are supported but capped to ONE page — Salesforce can't paginate aggregate results. Use IsClosed = false for open opportunities (never assume stage names); date literals like LAST_N_DAYS:30 work; in multi-currency orgs prefix amount literals (Amount > USD5000). For org-wide activity reports, query Task/Event directly (e.g. `SELECT Subject, ActivityDate, Who.Name FROM Task WHERE TaskSubtype = 'Call' AND ActivityDate = LAST_WEEK`); for a single record's timeline use activities:find:salesforce instead. OFFSET is capped at 2,000 rows — past that, narrow with WHERE or use the object searches.",tags:[V.FIELDS,V.NEW],keywords:[`soql`,`sql`,`crm`,`sfdc`,`aggregate`,`group by`,`report`],docPath:$(vW),cost:bW,provider:`salesforce`,defaultPayload:{search_id:vW,connector:{strategy:`first`,connections:[]},config:{soql:``,limit:100,page_number:1}}},TW=`records:attio@1`,EW=g(`attio_record_id`),DW=g(`attio_record_match`),OW=r.object({search_id:r.literal(TW),connector:Yl(),config:r.object({object:Uu({path:`config.object`,groupPath:`config.general`,sectionKey:`general`,label:`Object`,required:!0,info:`Any object in this workspace — custom objects included.`,enabledIf:_(`attio`),optionsDef:xf}),custom_properties:IL(`name`,kf({target:`objects`,fromField:`object`})),filters:LL(`name`),saved_view:RL(Tf({target:`objects`,fromField:`object`})),created_within:zL(),limit:PL(),page_number:FL(),output_fields:P(r.object({[EW.name]:A({fieldName:EW.name}),[DW.name]:A({fieldName:DW.name})}))}).check(e=>BL(e,[`created_within`]))}),kW={allowManagedConnection:!1,mode:null,credits:null,info:`Searching your own Attio workspace is free.`},AW=`records-attio-v1`,jW=class extends Z{billing={billableOperation:AW,cost:kW};searchId=TW;schema=OW;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[EW.name]:this.catalogOutput(EW),[DW.name]:this.catalogOutput(DW)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitOperation:`attio_query`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`attio_record_id`}]}}async getAgentContext(e){let t=this.payload.config.object,n=Array.isArray(t)?t[0]??``:t;return jf(e,{objects:n?[n]:`discover`,...n?{includeViewsFor:[n]}:{}})}},MW=OW,NW={searchId:TW,billableOperation:AW,baseSearch:Q(TW),outputFieldMode:`static`,paginationType:`page_number`,label:`Attio records`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List records of ANY Attio object — custom objects included. Each row carries the record id plus a JSON record with a compact attribute set and any custom attributes you pick.`,tags:[V.NEW],keywords:[`crm`,`list`,`import`,`custom object`,`generic`,`workspace`],docPath:$(TW),guide:"The generic floor for custom objects and users/workspaces — for people/companies/deals prefer the typed Attio searches (typed identity columns). Call get_provider_context first for the selected object's attribute slugs. The record JSON carries a compact default attribute set under `values` (the object's first attributes in UI order) plus your picks under `custom_properties` — pick what you need or chain record:lookup for everything. A saved view replaces the filter fields entirely. Attio reports no total count — page until a short page.",cost:kW,provider:`attio`,defaultPayload:{search_id:TW,connector:{strategy:`first`,connections:[]},config:{object:``,custom_properties:[],filters:null,saved_view:``,created_within:``,limit:100,page_number:1,output_fields:{attio_record_id:{enabled:!0,alias:``},attio_record_match:{enabled:!0,alias:``}}}}},PW=`sheet:rows@1`,FW=[{label:`Demo leads`,value:`demo-leads`},{label:`Demo companies`,value:`demo-companies`},{label:`Demo contacts`,value:`demo-contacts`}],IW={requires:{connection:`pipe0`},enabledIf:_(`pipe0`,`Select a pipe0 connection to see sheet suggestions`),options:async({query:e,client:t,environment:n})=>n===`sandbox`?FW:t?(await t.sheets.list({query:e})).map(e=>({label:e.slug,value:e.slug})):[],widgets:{provider_logo:{provider:`pipe0`}}},LW=r.object({search_id:r.literal(PW),connector:Yl(),config:r.object({sheet:Uu({path:`config.sheet`,sectionKey:`general`,groupPath:`config.general`,label:`Sheet`,required:!0,info:`Pick one of your pipe0 sheets; its rows are returned.`,enabledIf:_(`pipe0`),optionsDef:IW}),limit:N({path:`config.limit`,min:1,max:2e3,groupPath:`config.pagination`,sectionKey:`pagination`,label:`Limit`,description:`Max number of rows per page`}).default(100),cursor:Bu({path:`config.cursor`,groupPath:`config.pagination`,inputType:`text`,label:`Cursor`,sectionKey:`pagination`,description:`Pagination cursor`}).nullable(),include_metadata:Ru({path:`config.include_metadata`,groupPath:`config.general`,sectionKey:`general`,label:`Include metadata`,description:`Widgets and prevenance tags.`,defaultValue:!1})})}),RW={allowManagedConnection:!0,mode:`per_search`,credits:{default:0},info:`Reading your own pipe0 sheet is free.`},zW=`sheet-items-v1-pipe0`,BW=class extends Z{billing={billableOperation:zW,cost:RW};searchId=PW;schema=LW;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitOperation:`pipe0_api_operation`,rateLimitRatio:1,allowManagedConnection:!0}]}},VW=LW,HW={searchId:PW,billableOperation:zW,baseSearch:Q(PW),outputFieldMode:`dynamic`,paginationType:`cursor`,label:`Read sheet rows`,categories:[`data`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`List rows from a pipe0 sheet.`,tags:[V.FIELDS,V.NEW],keywords:[`lookup`,`list`,`records`,`table`,`fetch`],docPath:$(PW),cost:RW,provider:`pipe0`,defaultPayload:{search_id:PW,connector:{strategy:`first`,connections:[]},config:{sheet:``,limit:100,cursor:``,include_metadata:!1}}},UW=`users:attio@1`,WW=g(`attio_workspace_member_id`),GW=g(`email`),KW=g(`first_name`),qW=g(`last_name`),JW=g(`attio_workspace_member_match`),YW=r.object({search_id:r.literal(UW),connector:Yl(),config:r.object({include_suspended:Ru({path:`config.include_suspended`,groupPath:`config.general`,sectionKey:`general`,label:`Include suspended members`,description:``,defaultValue:!1}),limit:PL(),page_number:FL(),output_fields:P(r.object({[WW.name]:A({fieldName:WW.name}),[GW.name]:A({fieldName:GW.name}),[KW.name]:A({fieldName:KW.name}),[qW.name]:A({fieldName:qW.name}),[JW.name]:A({fieldName:JW.name})}))})}),XW={allowManagedConnection:!1,mode:null,credits:null,info:`Listing your own Attio workspace members is free.`},ZW=`users-attio-v1`,QW=class extends Z{billing={billableOperation:ZW,cost:XW};searchId=UW;schema=YW;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[WW.name]:this.catalogOutput(WW),[GW.name]:this.catalogOutput(GW),[KW.name]:this.catalogOutput(KW),[qW.name]:this.catalogOutput(qW),[JW.name]:this.catalogOutput(JW)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitOperation:`attio_generic`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`attio_workspace_member_id`}]}}},$W=YW,eG={searchId:UW,billableOperation:ZW,baseSearch:Q(UW),outputFieldMode:`static`,paginationType:`page_number`,label:`Attio users`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List the workspace members (users) of your Attio workspace: id, email, name, and access level — e.g. for building a round-robin assignment list.`,tags:[V.NEW],keywords:[`crm`,`reps`,`team`,`assignment`,`round robin`,`workspace members`,`owner`,`sellers`,`sales`],docPath:$(UW),guide:`Attio's workspace-members endpoint returns the full list in one call with no server-side filtering — suspended members are excluded by default, and pagination is applied locally after fetching. Attio has no universal owner field like HubSpot/Salesforce, so this search has no owned-record count: ownership in Attio is a workspace-defined actor-reference attribute per object, not a fixed system field. The member id column matches those actor-reference attributes (e.g. a deal's owner) on other Attio records and searches.`,cost:XW,provider:`attio`,defaultPayload:{search_id:UW,connector:{strategy:`first`,connections:[]},config:{include_suspended:!1,limit:100,page_number:1,output_fields:{attio_workspace_member_id:{enabled:!0,alias:``},email:{enabled:!0,alias:``},first_name:{enabled:!0,alias:``},last_name:{enabled:!0,alias:``},attio_workspace_member_match:{enabled:!0,alias:``}}}}},tG=`users:salesforce@1`,nG=g(`salesforce_record_id`),rG=g(`first_name`),iG=g(`last_name`),aG=g(`email`),oG=g(`salesforce_owned_count`),sG=g(`salesforce_user_match`),cG=r.object({search_id:r.literal(tG),connector:Yl(),config:r.object({owned_object:Hu({required:!1,path:`config.owned_object`,groupPath:`config.counts`,sectionKey:`general`,label:`Count owned`,description:`Which records to count per user (via OwnerId).`,options:[{label:`Accounts`,value:`accounts`},{label:`Contacts`,value:`contacts`},{label:`Leads`,value:`leads`},{label:`Opportunities`,value:`opportunities`}]}).default(`accounts`),min_owned_count:N({path:`config.min_owned_count`,min:0,groupPath:`config.counts`,sectionKey:`general`,label:`Minimum owned`,description:`Only return users owning MORE than this many records. Counted in ONE aggregate query for all users.`}).nullable(),include_ownership_counts:Ru({path:`config.include_ownership_counts`,groupPath:`config.counts`,sectionKey:`general`,label:`Include ownership counts`,description:`Adds an owned-record count column (one aggregate query, all users at once).`,defaultValue:!0}),include_inactive:Ru({path:`config.include_inactive`,groupPath:`config.general`,sectionKey:`general`,label:`Include deactivated users`,description:``,defaultValue:!1}),custom_properties:oL(),limit:pL(),cursor:mL(),output_fields:P(r.object({[nG.name]:A({fieldName:nG.name}),[rG.name]:A({fieldName:rG.name}),[iG.name]:A({fieldName:iG.name}),[aG.name]:A({fieldName:aG.name}),[oG.name]:A({fieldName:oG.name}),[sG.name]:A({fieldName:sG.name})}))})}),lG={allowManagedConnection:!1,mode:null,credits:null,info:`Salesforce searches are free — you bring your own Salesforce connection.`},uG=`users-salesforce-v1`,dG=class extends Z{billing={billableOperation:uG,cost:lG};searchId=tG;schema=cG;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[nG.name]:this.catalogOutput(nG),[rG.name]:this.catalogOutput(rG),[iG.name]:this.catalogOutput(iG),[aG.name]:this.catalogOutput(aG),[oG.name]:this.catalogOutput(oG),[sG.name]:this.catalogOutput(sG)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitOperation:`salesforce_api`,rateLimitRatio:1,allowManagedConnection:!1}]}getDedupConfig(){return{match:`any`,fields:[{fieldName:`salesforce_record_id`}]}}async getAgentContext(e){return ef(e,{objects:[`User`],includeOwners:!0})}},fG=cG,pG={searchId:tG,billableOperation:uG,baseSearch:Q(tG),outputFieldMode:`static`,paginationType:`cursor`,label:`Salesforce users`,categories:[`data`],hasManagedConnection:!1,allowsUserConnection:!0,lifecycle:null,description:`List users (record owners) from your Salesforce org, with per-user owned-record counts computed in a single aggregate query — e.g. every rep owning more than 10 accounts.`,tags:[V.NEW],keywords:[`crm`,`sfdc`,`owner`,`rep`,`seller`,`team`,`ownership`],docPath:$(tG),guide:"Ownership counts come from ONE `GROUP BY OwnerId` aggregate — cheap even for many users. Caveat: aggregate results don't paginate, so orgs with more than 2,000 distinct owners of the counted object get a precise error — use query:salesforce@1 with your own GROUP BY/HAVING there. The user id chains as `salesforce_record_id` into owner filters on the object searches.",cost:lG,provider:`salesforce`,defaultPayload:{search_id:tG,connector:{strategy:`first`,connections:[]},config:{owned_object:`accounts`,min_owned_count:null,include_ownership_counts:!0,include_inactive:!1,custom_properties:[],limit:100,cursor:``,output_fields:{salesforce_record_id:{enabled:!0,alias:``},first_name:{enabled:!0,alias:``},last_name:{enabled:!0,alias:``},email:{enabled:!0,alias:``},salesforce_owned_count:{enabled:!0,alias:``},salesforce_user_match:{enabled:!0,alias:``}}}}},mG={"people:profiles:crustdata@1":oV,"people:profiles:crustdata@2":BU,"people:profiles:crustdata@3":ZU,"companies:profiles:crustdata@1":CB,"companies:profiles:crustdata@2":IB,"companies:profiles:crustdata@3":qR,"people:profiles:amplemarket@1":JB,"people:profiles:amplemarket@2":DU,"companies:profiles:amplemarket@1":dB,"companies:profiles:amplemarket@2":NR,"companies:entitysearch:parallel@1":cR,"people:entitysearch:parallel@1":$H,"people:eventguests:luma@1":mU,"people:channelmembers:slack@1":VH,"events:googlecalendar@1":MV,"posts:content:crustdata@1":cW,"sheet:rows@1":BW,"bucket:entries@1":jL,"query:postgres@1":jz,"query:databricks@1":wz,"contacts:hubspot@1":az,"companies:hubspot@1":yR,"deals:hubspot@1":$z,"owners:hubspot@1":hH,"contacts:salesforce@1":_z,"leads:salesforce@1":GV,"accounts:salesforce@1":wL,"opportunities:salesforce@1":nH,"users:salesforce@1":dG,"query:salesforce@1":SW,"people:attio@1":DH,"companies:attio@1":YL,"deals:attio@1":Hz,"records:attio@1":jW,"entries:attio@1":gV,"query:attio@1":hW,"users:attio@1":QW},hG={"people:profiles:crustdata@1":sV,"people:profiles:crustdata@2":VU,"people:profiles:crustdata@3":QU,"companies:profiles:crustdata@1":wB,"companies:profiles:crustdata@2":LB,"companies:profiles:crustdata@3":JR,"people:profiles:amplemarket@1":YB,"people:profiles:amplemarket@2":OU,"companies:profiles:amplemarket@1":fB,"companies:profiles:amplemarket@2":PR,"companies:entitysearch:parallel@1":lR,"people:entitysearch:parallel@1":eU,"people:eventguests:luma@1":hU,"people:channelmembers:slack@1":HH,"events:googlecalendar@1":NV,"posts:content:crustdata@1":lW,"sheet:rows@1":VW,"bucket:entries@1":ML,"query:postgres@1":Mz,"query:databricks@1":Tz,"contacts:hubspot@1":oz,"companies:hubspot@1":bR,"deals:hubspot@1":eB,"owners:hubspot@1":gH,"contacts:salesforce@1":vz,"leads:salesforce@1":KV,"accounts:salesforce@1":TL,"opportunities:salesforce@1":rH,"users:salesforce@1":fG,"query:salesforce@1":CW,"people:attio@1":OH,"companies:attio@1":XL,"deals:attio@1":Uz,"records:attio@1":MW,"entries:attio@1":_V,"query:attio@1":gW,"users:attio@1":$W},gG={"people:profiles:crustdata@1":cV,"people:profiles:crustdata@2":HU,"people:profiles:crustdata@3":$U,"companies:profiles:crustdata@1":TB,"companies:profiles:crustdata@2":RB,"companies:profiles:crustdata@3":YR,"people:profiles:amplemarket@1":XB,"people:profiles:amplemarket@2":kU,"companies:profiles:amplemarket@1":pB,"companies:profiles:amplemarket@2":FR,"companies:entitysearch:parallel@1":uR,"people:entitysearch:parallel@1":tU,"people:eventguests:luma@1":gU,"people:channelmembers:slack@1":UH,"events:googlecalendar@1":PV,"posts:content:crustdata@1":uW,"sheet:rows@1":HW,"bucket:entries@1":NL,"query:postgres@1":Nz,"query:databricks@1":Ez,"contacts:hubspot@1":sz,"companies:hubspot@1":xR,"deals:hubspot@1":tB,"owners:hubspot@1":_H,"contacts:salesforce@1":yz,"leads:salesforce@1":qV,"accounts:salesforce@1":EL,"opportunities:salesforce@1":iH,"users:salesforce@1":pG,"query:salesforce@1":wW,"people:attio@1":kH,"companies:attio@1":ZL,"deals:attio@1":Wz,"records:attio@1":NW,"entries:attio@1":vV,"query:attio@1":_W,"users:attio@1":eG};function _G(e){return mG[e]}const vG=t.discriminatedUnion(`search_id`,Object.values(hG).map(e=>e)).openapi(`SearchPayloadSchema`);function yG(e,t){return Vt(t,gG[e].defaultPayload)}const bG=t.preprocess(e=>{if(!e||typeof e!=`object`||!(`search_id`in e))return e;let t=yG(e.search_id);return t?{...e,config:Vt(e?.config||{},t.config)}:e},vG),xG=t.object({config:t.object({environment:t.enum([`production`,`sandbox`]).default(`production`),widgets:t.object({enabled:t.boolean().default(!1)}).default({enabled:!1}),field_definitions:t.object({enabled:t.boolean().default(!1)}).default({enabled:!1})}).default({environment:`production`,widgets:{enabled:!1},field_definitions:{enabled:!1}}),search:bG}).openapi(`SearchRequestSchema`),SG=ts,CG=t.object({value:Vo,status:Bo,type:Ro.optional(),format:is.nullable().optional(),resolved_by:ds.nullable().optional(),widgets:es.optional()}),wG=t.record(t.string(),CG.nullable());function TG(e){return hG[e]}const EG=t.enum([`cursor`,`page_number`]),DG=t.object({id:t.string(),status:t.enum([`completed`,`failed`,`pending`,`processing`]),search_id:iL,errors:t.array(SG),results:t.array(wG),organization_id:t.string(),next_page:bG.nullable(),pagination_type:EG.nullable(),total_pages:t.int32().nullable(),field_definitions:os.optional()}).openapi(`SearchResponseSchema`);function OG(e){let t=e.split(`@`)[1];if(!t)throw Error(`No search version found`);return Number(t)}function kG(){let e={};for(let t of Object.values(gG)){let{baseSearch:n}=t;e[n]??=[],e[n].push(t)}return Object.entries(e).forEach(([t,n])=>{e[t]=n.sort((e,t)=>{let n=OG(e.searchId);return OG(t.searchId)-n})}),e}function AG(e){return gG[e]}const jG=kG();function MG(e){let t=[];for(let[n,r]of Object.entries(jG)){let i=r[0];if(!i)throw Error(`Found empty entry`);i.lifecycle?.deprecatedOn&&e!==`deprecated`||(e===null||i.categories.includes(e))&&t.push({...i,baseSearch:n,latestVersion:OG(i.searchId)})}return t}function NG(e){let t=gG[e].defaultPayload.config.output_fields;return t?Object.keys(t):[]}function PG(e,t){let n=e.filter(e=>t===null?!0:e.categories.some(e=>e===t)),r={},i={},a={};for(let e of n){if(e.lifecycle&&e.lifecycle.deprecatedOn){i.Deprecated??=[],i.Deprecated.push(e.searchId);continue}a[e.provider]??=[],a[e.provider].push(e.searchId);for(let t of NG(e.searchId))r[t]??=[],r[t].push(e.searchId);for(let t of e.tags)i[t]??=[],i[t].push(e.searchId)}return{searchIdsByOutputField:r,searchIdsByTag:i,searchIdsByProvider:a,sortedTagEntries:Object.entries(i).sort((e,t)=>e[0].localeCompare(t[0])),sortedOutputFieldEntries:Object.entries(r).sort((e,t)=>e[0].localeCompare(t[0])),sortedProviderEntries:Object.entries(a).sort((e,t)=>e[0].localeCompare(t[0])),searchEntriesByBaseSearch:jG}}function FG(e){let t=AG(e);return{[t.provider]:t.cost.allowManagedConnection?t.cost.credits.default:0}}const IG={"prompt:run@1":dN,"agent:run@1":Bp,"company:newssummary:website@1":ky,"company:newssummary:domain@1":kg,"company:techstack:builtwith@1":_b,"company:techstack:builtwith@2":n_,"company:websiteurl:email@1":Eb,"company:domain:workemail@1":Lm,"company:funding:leadmagic@1":cv,"company:funding:leadmagic@2":Sv,"company:funding:waterfall@1":th,"people:workemail:waterfall@1":Iw,"person:workemail:waterfall@1":iN,"people:email:iswork@1":Fb,"email:iswork@1":UT,"people:name:split@1":aS,"person:name:split@1":gj,"people:validate:email:zerobounce@1":cw,"people:email:validate:zerobounce@2":ex,"email:validate:zerobounce@1":pE,"people:mobilenumber:workemail:waterfall@1":Yx,"person:name:join@1":oj,"company:overview@1":Wy,"company:overview@2":ob,"company:overview@3":Gg,"json:extract:multi@1":MD,"company:lookalikes:companyenrich@1":$v,"company:lookalikes:companyenrich@2":jh,"company:match:logodev@1":by,"company:match:logodev@2":bg,"person:posts:content:crustdata@1":Rj,"people:profile:workemail:crustdata@1":BC,"person:profile:workemail:crustdata@1":cM,"people:identity:email:waterfall@1":gx,"person:identity:email:waterfall@1":sT,"person:identity:email:waterfall@2":Yk,"person:identity:amplemarket@1":Gw,"email:send:resend@1":rE,"contact:create:resend@1":p_,"lead:enroll:lemlist@1":pO,"lead:enroll:amplemarket@1":GD,"email:send:gmail@1":XT,"email:draft:gmail@1":PT,"email:write@1":SE,"fields:merge@1":cD,"field:slugify@1":BE,"field:domainify@1":jE,"field:timestamp@1":qE,"formula:run@1":_D,"signals:personprofilematch@1":eI,"http:request@1":ED,"template:fill@1":sI,"message:send:slack@1":AO,"message:send-direct:slack@1":bO,"message:write@1":RO,"people:personalemail:profile:waterfall@1":_S,"person:personalemail:profileurl:waterfall@1":Oj,"website:scrape:firecrawl@1":GI,"website:scrapelist:firecrawl@1":eL,"website:extract:firecrawl@1":gI,"website:extract:parallel@1":TI,"website:maplinks:firecrawl@1":PI,"row:append:sheet@1":IP,"bucket:claim@1":pm,"bucket:count@1":bm,"bucket:check@1":om,"bucket:countif@1":Om,"row:expandappend:sheet@1":KP,"row:roundrobin:sheet@1":$P,"rows:find:sheet@1":HF,"rows:delete:sheet@1":oF,"rows:find:postgres@1":NF,"rows:find:databricks@1":TF,"people:match:role:waterfall@1":Dx,"person:match:role:waterfall@1":_A,"company:match:crustdata@1":cy,"company:match:crustdata@2":Zh,"contact:match:hubspot@1":w_,"company:match:hubspot@1":cg,"deal:match:hubspot@1":J_,"object:update:hubspot@1":rk,"object:associations:hubspot@1":JO,"activity:log:hubspot@1":xp,"person:match:salesforce@1":OA,"account:match:salesforce@1":uf,"opportunity:match:salesforce@1":hk,"record:lookup:salesforce@1":BN,"record:update:salesforce@1":gP,"record:assert:salesforce@1":bN,"activities:find:salesforce@1":Zf,"activity:log:salesforce@1":jp,"person:match:attio@1":oA,"company:match:attio@1":Hh,"deal:match:attio@1":I_,"record:match:attio@1":XN,"record:lookup:attio@1":AN,"record:update:attio@1":oP,"activities:find:attio@1":Bf,"person:match:amplemarket@1":gT,"company:identity@2":Wv,"company:identity@3":fh,"company:identity:crustdata@1":Sh,"people:phone:profile:waterfall@1":OS,"person:mobile:profileurl:waterfall@1":zA,"person:devprofileurl:profileurl:waterfall@1":Dk,"people:phone:workemail:waterfall@1":zS,"person:mobile:workemail:waterfall@1":XA,"people:profile:waterfall@1":AC,"person:profile:waterfall@1":DT,"person:profile:waterfall@2":Qj,"people:profileurl:email:waterfall@1":QC,"person:profileurl:email:waterfall@1":bM,"person:profileurl:name@1":jM,"people:email:validate:zerobounce@1":Wb,"person:email:validate:millionverifier@1":Lk,"people:workemail:profileurl:waterfall@1":xw,"person:workemail:profileurl:waterfall@1":UM,"company:identity@1":Nv,"people:professionalprofile:waterfall@1":XS,"people:professionalprofileurl:name@1":yC,"people:professionalprofileurl:email:waterfall@1":cC,"people:mobilenumber:professionalprofile:waterfall@1":Rx},LG={"prompt:run@1":fN,"agent:run@1":Vp,"company:newssummary:website@1":Ay,"company:newssummary:domain@1":Ag,"company:techstack:builtwith@1":vb,"company:techstack:builtwith@2":r_,"company:websiteurl:email@1":Db,"company:domain:workemail@1":Rm,"company:funding:leadmagic@1":lv,"company:funding:leadmagic@2":Cv,"company:funding:waterfall@1":nh,"people:workemail:waterfall@1":Lw,"person:workemail:waterfall@1":aN,"people:email:iswork@1":Ib,"email:iswork@1":WT,"people:name:split@1":oS,"person:name:split@1":_j,"people:validate:email:zerobounce@1":lw,"people:email:validate:zerobounce@2":tx,"email:validate:zerobounce@1":mE,"people:mobilenumber:workemail:waterfall@1":Xx,"person:name:join@1":sj,"company:overview@1":Gy,"company:overview@2":sb,"company:overview@3":Kg,"json:extract:multi@1":ND,"email:write@1":CE,"fields:merge@1":lD,"field:slugify@1":VE,"field:domainify@1":ME,"field:timestamp@1":JE,"formula:run@1":vD,"signals:personprofilematch@1":tI,"http:request@1":DD,"email:send:resend@1":iE,"contact:create:resend@1":m_,"lead:enroll:lemlist@1":mO,"lead:enroll:amplemarket@1":KD,"company:lookalikes:companyenrich@1":ey,"company:lookalikes:companyenrich@2":Mh,"company:match:logodev@1":xy,"company:match:logodev@2":xg,"person:posts:content:crustdata@1":zj,"people:profile:workemail:crustdata@1":VC,"person:profile:workemail:crustdata@1":lM,"people:identity:email:waterfall@1":_x,"person:identity:email:waterfall@1":cT,"person:identity:email:waterfall@2":Xk,"company:match:crustdata@1":ly,"company:match:crustdata@2":Qh,"contact:match:hubspot@1":T_,"company:match:hubspot@1":lg,"deal:match:hubspot@1":Y_,"object:update:hubspot@1":ik,"object:associations:hubspot@1":YO,"activity:log:hubspot@1":Sp,"person:match:salesforce@1":kA,"account:match:salesforce@1":df,"opportunity:match:salesforce@1":gk,"record:lookup:salesforce@1":VN,"record:update:salesforce@1":_P,"record:assert:salesforce@1":xN,"activities:find:salesforce@1":Qf,"activity:log:salesforce@1":Mp,"person:match:attio@1":sA,"company:match:attio@1":Uh,"deal:match:attio@1":L_,"record:match:attio@1":ZN,"record:lookup:attio@1":jN,"record:update:attio@1":sP,"activities:find:attio@1":Vf,"person:identity:amplemarket@1":Kw,"message:send:slack@1":jO,"message:send-direct:slack@1":xO,"email:send:gmail@1":ZT,"email:draft:gmail@1":FT,"message:write@1":zO,"template:fill@1":cI,"website:scrape:firecrawl@1":KI,"website:scrapelist:firecrawl@1":tL,"website:extract:firecrawl@1":_I,"website:extract:parallel@1":EI,"website:maplinks:firecrawl@1":FI,"row:append:sheet@1":LP,"bucket:claim@1":mm,"bucket:count@1":xm,"bucket:check@1":sm,"bucket:countif@1":km,"row:expandappend:sheet@1":qP,"row:roundrobin:sheet@1":eF,"rows:find:sheet@1":UF,"rows:delete:sheet@1":sF,"rows:find:postgres@1":PF,"rows:find:databricks@1":EF,"people:match:role:waterfall@1":Ox,"person:match:role:waterfall@1":vA,"company:identity@2":Gv,"company:identity@3":ph,"company:identity:crustdata@1":Ch,"people:phone:profile:waterfall@1":kS,"person:mobile:profileurl:waterfall@1":BA,"person:devprofileurl:profileurl:waterfall@1":Ok,"people:personalemail:profile:waterfall@1":vS,"person:personalemail:profileurl:waterfall@1":kj,"people:profile:waterfall@1":jC,"person:profile:waterfall@1":OT,"person:profile:waterfall@2":$j,"people:profileurl:email:waterfall@1":$C,"person:profileurl:email:waterfall@1":xM,"person:profileurl:name@1":MM,"people:email:validate:zerobounce@1":Gb,"person:email:validate:millionverifier@1":Rk,"people:phone:workemail:waterfall@1":BS,"person:mobile:workemail:waterfall@1":ZA,"people:workemail:profileurl:waterfall@1":Sw,"person:workemail:profileurl:waterfall@1":WM,"person:match:amplemarket@1":_T,"company:identity@1":Pv,"people:professionalprofile:waterfall@1":ZS,"people:professionalprofileurl:name@1":bC,"people:professionalprofileurl:email:waterfall@1":lC,"people:mobilenumber:professionalprofile:waterfall@1":zx},RG={"prompt:run@1":pN,"agent:run@1":Hp,"company:newssummary:website@1":jy,"company:newssummary:domain@1":jg,"company:techstack:builtwith@1":yb,"company:techstack:builtwith@2":i_,"company:websiteurl:email@1":Ob,"company:domain:workemail@1":zm,"company:funding:leadmagic@1":uv,"company:funding:leadmagic@2":wv,"company:funding:waterfall@1":rh,"people:workemail:waterfall@1":Rw,"person:workemail:waterfall@1":oN,"people:email:iswork@1":Lb,"email:iswork@1":GT,"people:name:split@1":sS,"person:name:split@1":vj,"people:validate:email:zerobounce@1":uw,"people:mobilenumber:workemail:waterfall@1":Zx,"person:name:join@1":cj,"company:overview@1":Ky,"company:overview@2":cb,"company:overview@3":qg,"json:extract:multi@1":PD,"email:send:resend@1":aE,"contact:create:resend@1":h_,"lead:enroll:lemlist@1":hO,"lead:enroll:amplemarket@1":qD,"email:send:gmail@1":QT,"email:draft:gmail@1":IT,"message:send:slack@1":MO,"message:send-direct:slack@1":SO,"message:write@1":BO,"email:write@1":wE,"template:fill@1":lI,"fields:merge@1":uD,"field:slugify@1":HE,"field:domainify@1":NE,"field:timestamp@1":YE,"formula:run@1":yD,"signals:personprofilematch@1":nI,"http:request@1":OD,"row:append:sheet@1":RP,"bucket:claim@1":hm,"bucket:count@1":Sm,"bucket:check@1":cm,"bucket:countif@1":Am,"row:expandappend:sheet@1":JP,"row:roundrobin:sheet@1":tF,"rows:find:sheet@1":WF,"rows:delete:sheet@1":cF,"rows:find:postgres@1":FF,"rows:find:databricks@1":DF,"company:lookalikes:companyenrich@1":ty,"company:lookalikes:companyenrich@2":Nh,"people:match:role:waterfall@1":kx,"person:match:role:waterfall@1":yA,"company:match:logodev@1":Sy,"company:match:logodev@2":Sg,"person:posts:content:crustdata@1":Bj,"people:profile:workemail:crustdata@1":HC,"person:profile:workemail:crustdata@1":uM,"people:workemail:profileurl:waterfall@1":Cw,"person:workemail:profileurl:waterfall@1":GM,"people:identity:email:waterfall@1":vx,"person:identity:email:waterfall@1":lT,"person:identity:email:waterfall@2":Zk,"company:match:crustdata@1":uy,"company:match:crustdata@2":$h,"contact:match:hubspot@1":E_,"company:match:hubspot@1":ug,"deal:match:hubspot@1":X_,"object:update:hubspot@1":ak,"object:associations:hubspot@1":XO,"activity:log:hubspot@1":Cp,"person:match:salesforce@1":AA,"account:match:salesforce@1":ff,"opportunity:match:salesforce@1":_k,"record:lookup:salesforce@1":HN,"record:update:salesforce@1":vP,"record:assert:salesforce@1":SN,"activities:find:salesforce@1":$f,"activity:log:salesforce@1":Np,"person:match:attio@1":cA,"company:match:attio@1":Wh,"deal:match:attio@1":R_,"record:match:attio@1":QN,"record:lookup:attio@1":MN,"record:update:attio@1":cP,"activities:find:attio@1":Hf,"person:identity:amplemarket@1":qw,"email:validate:zerobounce@1":hE,"person:email:validate:millionverifier@1":zk,"people:personalemail:profile:waterfall@1":yS,"person:personalemail:profileurl:waterfall@1":Aj,"people:email:validate:zerobounce@1":Kb,"people:email:validate:zerobounce@2":nx,"people:phone:workemail:waterfall@1":VS,"person:mobile:workemail:waterfall@1":QA,"website:scrape:firecrawl@1":qI,"website:scrapelist:firecrawl@1":nL,"website:extract:firecrawl@1":vI,"website:extract:parallel@1":DI,"website:maplinks:firecrawl@1":II,"person:match:amplemarket@1":vT,"company:identity@2":Kv,"company:identity@3":mh,"company:identity:crustdata@1":wh,"people:phone:profile:waterfall@1":AS,"person:mobile:profileurl:waterfall@1":VA,"person:devprofileurl:profileurl:waterfall@1":kk,"people:profile:waterfall@1":MC,"person:profile:waterfall@1":kT,"person:profile:waterfall@2":eM,"people:profileurl:email:waterfall@1":ew,"person:profileurl:email:waterfall@1":SM,"person:profileurl:name@1":NM,"company:identity@1":Fv,"people:professionalprofile:waterfall@1":QS,"people:professionalprofileurl:name@1":xC,"people:professionalprofileurl:email:waterfall@1":uC,"people:mobilenumber:professionalprofile:waterfall@1":Bx};function zG(e){return e.defaultPayload?.config?.output_fields?Object.keys(e.defaultPayload?.config?.output_fields||{}):[]}function BG(e){return IG[e]}function VG(e){return RG[e].defaultPayload}function HG(e){return LG[e]}const UG=r.discriminatedUnion(`pipe_id`,Object.values(LG)).openapi(`PipePayload`),WG=r.preprocess(e=>{if(!e||typeof e!=`object`||!(`pipe_id`in e))return e;try{let t=VG(Io.parse(e.pipe_id));return t?{...e,config:Vt(e?.config||{},t.config)}:e}catch{return e}},UG);function GG(e){return RG[e]}function KG(e,t){let n=GG(e);if(t in n.billableOperations)return n.billableOperations[t];throw Error(`Unable to find billable operation definition for pipeId '${e}' and operation '${t}'`)}function qG(e){let t=e.split(`@`)[1];if(!t)throw Error(`No pipe version found`);return Number(t)}function JG(){let e={};for(let t of Object.values(RG)){let{basePipe:n}=t;e[n]??=[],e[n].push(t)}return Object.entries(e).forEach(([t,n])=>{e[t]=n.sort((e,t)=>{let n=qG(e.pipeId);return qG(t.pipeId)-n})}),e}const YG=e=>{let t=GG(e),n=new Set(t.deprecatedProviders);return Array.from(new Set([...t.managedProviders,...t.allowedUserConnectionProviders])).filter(e=>!n.has(e))},XG=JG();function ZG(e,t){let n=new Map;for(let[t,r]of Object.entries(e))for(let e of Object.keys(r.billableOperations)){let r=n.get(e)??[];r.push(`pipe ${t}`),n.set(e,r)}for(let[e,r]of Object.entries(t)){let t=r.billableOperation,i=n.get(t)??[];i.push(`search ${e}`),n.set(t,i)}let r=[...n.entries()].filter(([,e])=>e.length>1);if(r.length>0){let e=r.map(([e,t])=>` "${e}" used by ${t.join(`, `)}`).join(`
|
|
87
|
+
`);throw Error(`Catalog has ${r.length} duplicate billable-operation key(s):\n${e}`)}}ZG(RG,gG);function QG(e){let t=[];for(let[n,r]of Object.entries(XG)){let i=r[0];if(!i)throw Error(`Found empty entry`);let a=i.categories;i.lifecycle?.deprecatedOn&&e!==`deprecated`||(e===null||a.includes(e))&&t.push({...i,basePipe:n,latestVersion:qG(i.pipeId)})}return t}function $G(e,t){let n=e.filter(e=>t===null?!0:e.categories.some(e=>e===t)),r={},i={},a={},o={};for(let e of n){let t=YG(e.defaultPayload.pipe_id);for(let n of t)o[n]??=[],o[n].push(e.defaultPayload.pipe_id);for(let t of zG(e))i[t]??=[],i[t].push(e.defaultPayload.pipe_id);if(e.defaultInputRequirement)for(let{field:t}of yd(e.defaultInputRequirement))r[t.name]??=[],r[t.name]?.push(e.defaultPayload.pipe_id);for(let t of e.tags)a[t]??=[],a[t].push(e.defaultPayload.pipe_id)}return{pipeIdsByInputField:r,pipeIdsByOutputField:i,pipeIdsByTag:a,pipeIdsByProvider:o,sortedTagEntries:Object.entries(a).sort((e,t)=>e[0].localeCompare(t[0])),sortedInputFieldEntries:Object.entries(r).sort((e,t)=>e[0].localeCompare(t[0])),sortedOutputFieldEntries:Object.entries(i).sort((e,t)=>e[0].localeCompare(t[0])),sortedProviderEntries:Object.entries(o).sort((e,t)=>e[0].localeCompare(t[0])),pipeEntriesByBasePipe:XG}}const eK=r.object({id:r.string(),organization_id:r.string(),order:r.array(zo),field_definitions:vs,errors:r.array(ts),records:r.record(zo,hs),status:r.enum([`completed`,`failed`,`pending`,`processing`])}).openapi(`PipesResponseSchema`),tK=r.object({environment:Po.default(`production`),widgets:r.object({enabled:r.boolean().default(!1)}).default({enabled:!1}),field_definitions:r.object({enabled:r.boolean()}).default({enabled:!1}),transform:r.object({include_fields:r.enum([`input`,`annotated`])}).default({include_fields:`input`})}).default({environment:`production`,transform:{include_fields:`input`},widgets:{enabled:!1},field_definitions:{enabled:!1}}).openapi(`PipesRequestConfig`),nK=r.object({config:tK.openapi(`PipesRequestConfig`),field_annotations:os.optional().openapi(`PipesFieldAnnotations`),pipes:r.array(UG),input:r.array(ms.openapi(`PipesInputSchema`)).max(100,`input accepts at most 100 records per request — send larger workloads in chunks`),scopes:r.array(r.string()).optional()});function rK(e){let t=GG(e);return Object.values(t.billableOperations).reduce((e,t)=>{let n=t.allowManagedConnection?t.credits.default:0;return e[t.provider]??=n,e[t.provider]=Math.min(e[t.provider],n),e},{})}function iK(e){let t=[];for(let n of e){if(n instanceof B){t.push(n);continue}let e=WG.parse(n);if(!GG(n.pipe_id))throw Error(`Unknown pipe: ${n.pipe_id}`);let r=new(BG(n.pipe_id))(e);t.push(r)}return t}function aK(e,t){let n=iK(e),r=new Set;return n.forEach(e=>Object.entries(e.inputFields).forEach(([n,i])=>{i.resolvedName===t&&r.add(e.pipeId)})),Array.from(r)}function oK(e,t){let n=e.dependencyGraph,r=new Set;return n.forEach((e,n)=>e.forEach(e=>{e.index===t&&r.add(n)})),Array.from(r).map(t=>{let n=e.orderedPipeInstances[t];if(!n)throw Error(`Internal: Pipe with index ${t} not found.`);return n.pipeId})}function sK(e){return e===`localhost`?!0:/^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(e)&&e.includes(`.`)}function cK(e){return/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.test(e)?e.split(`.`).every(e=>{let t=parseInt(e,10);return t>=0&&t<=255}):/:/.test(e)}function lK(e){if(!e||typeof e!=`string`)return``;let t=e.trim();t.match(/^[a-zA-Z]+:\/\//)||(t=`https://${t}`);try{let e=new URL(t).hostname;if(cK(e))return`https://${e}`;if(!sK(e))throw Error(`Invalid domain`);return`https://${e}`}catch{let t=e.match(/([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}/i);return t?`https://${t[0]}`:``}}function uK(e){if(!e||typeof e!=`string`)return``;let t=e.trim();t.match(/^[a-zA-Z]+:\/\//)||(t=`https://${t}`);try{let e=new URL(t),n=e.hostname;if(cK(n))return`${e.protocol===`http:`?`http:`:`https:`}//${e.host}${e.pathname}${e.search}${e.hash}`;if(!sK(n))throw Error(`Invalid domain`);return`${e.protocol===`http:`?`http:`:`https:`}//${e.host}${e.pathname}${e.search}${e.hash}`}catch{let t=e.match(/^(https?:\/\/)?([^/\s]+)(\/.*)?$/i);if(t){let[,e,n,r=``]=t,i=n?.split(`:`)[0]||``;if(sK(i)||cK(i))return`${e?.toLowerCase()===`http://`?`http:`:`https:`}//${n}${r}`}return``}}function dK(e){try{return lK(e)}catch{console.warn(`Invalid URL: ${e}`);return}}function fK(e,t){if(t)switch(e){case`website_url`:return dK(t);default:return}}function pK(e){let t;if(mK(e))return pK(e.value);let n=typeof e;return t=n===`string`||n===`number`||n===`boolean`?n:e===null?`unknown`:`json`,t}function mK(e,t=0){if(typeof e==`object`&&e&&`value`in e&&`status`in e&&Bo.safeParse(e.status).success){if(t>1||typeof e.value==`object`&&mK(e.value,t++))throw new rD([tD.RecursiveExpandedValue()]);return!0}return!1}function hK(e){let t=mK(e),n;return n=t?e.value:e,t?{isExpanded:!0,resolvedInputValue:n,expandedValue:e}:{isExpanded:!1,resolvedInputValue:n,expandedValue:null}}function gK(e){return mK(e)?gK(e.value):e}function _K(e,t,n){if([`processing`,`completed`].includes(n.status)===!1||t==null)return{};try{let r=Do(e,n.format)?.getStaticWidgets?.(t),i=fK(n.format,t);return Jt(qt(r||{},{display_value:i?{label:i}:void 0}))}catch(e){return console.warn(`Failed to generate UI props: ${e}`),{}}}function vK(e,t,n){if(t==null)return{};try{let r=Do(e,n)?.getStaticWidgets?.(t),i=fK(n,t);return Jt(qt(r||{},{display_value:i?{label:i}:void 0}))}catch(e){return console.warn(`Failed to generate UI props: ${e}`),{}}}function yK(e,t){for(let[n,r]of Object.entries(t)){let i=n;i===`type`&&e.type===`unknown`&&t.type!==`unknown`&&(e.type=t.type),i!==`type`&&i!==`json_metadata`&&i!==`order`&&(e[i]===void 0||e[i]===null||e[i]===``)&&t[i]&&(e[i]=r),i===`json_metadata`&&e.type===`json`&&!e.json_metadata&&t.json_metadata&&(e.json_metadata=t.json_metadata)}return e}var bK=class e{annotations;constructor(e){this.annotations=e||{}}getAnnotation(e){return this.annotations[e]}static fromInput(t,{probeCount:n=1e5,inferCatalogFields:i=!0,addIdColumn:a=!0}={probeCount:1e5,inferCatalogFields:!0,addIdColumn:!0}){let o={},s=0,c=0;for(let e of t){if(s++,s>n)break;for(let[t,n]of Object.entries(e)){if(t===``||t==null)continue;let{resolvedInputValue:e,expandedValue:a,isExpanded:s}=hK(n),l;l=s&&a.type?a.type:pK(e);let u;Oo(t)&&(u=g(t));let d=u&&(u.type===l||l===`unknown`);(!o[t]||o[t].type===`unknown`&&l!==`unknown`)&&(o[t]={type:l===`unknown`&&d&&i&&u?.type?u.type:l,format:d&&i&&u?.format||null,label:u&&i?u.label:null,json_metadata:d&&i&&u?.jsonMeta?{schema:u.jsonMeta.zodSchema?r.toJSONSchema(u.jsonMeta.zodSchema):null,example_value:u.jsonMeta.exampleValue||null}:null,order:o[t]?.order??++c*10})}}return a&&!o.id&&(o.id={format:null,type:`string`,json_metadata:null,label:null}),new e(o)}merge(t,n=!1,{appendOrders:r=!1}={}){let i=structuredClone(this.annotations),a=t instanceof e?t.annotations:t,o=0;if(r&&!n){let e=Object.values(i).map(e=>e.order).filter(e=>typeof e==`number`&&Number.isFinite(e));o=e.length===0?0:Math.ceil(Math.max(...e)/10)*10}let s=e=>o&&typeof e.order==`number`&&Number.isFinite(e.order)?{...e,order:e.order+o}:e;for(let[e,t]of Object.entries(a))if(i[e]===void 0||n)i[e]=s(t);else{let n=i[e];i[e]=yK(n,s(t))}return new e(i)}deleteKey(t){let n=structuredClone(this.annotations);return delete n[t],new e(n)}};function xK(e){let t={};for(let n=0;n<e.length;n++){let r=e[n];Object.values(r.getOutputFields()).forEach(e=>{if(t[e.resolvedName])throw new rD([tD.AmbiguousDependency({fieldName:e.resolvedName})]);t[e.resolvedName]=n})}return t}function SK(e){let t=xK(e),n=[];for(let[r,i]of e.entries()){let e=[];for(let{field:n,required:a}of yd(i.getInputRequirement())){let o=t[n.resolvedName];if(r===o)throw new rD([{code:`SelfReference`,message:`Pipe '${i.pipeId} has an input requirement that points to a field that is produced by itself.'`}]);if(o==null)continue;let s=e.find(e=>e.index===o);s?(s.reason??=[],s.reason=Array.from(new Set([...s.reason,`input`])),s.required=a||s.required):e.push({index:o,required:a,reason:[`input`]})}if(i.payload.run_if){let n=i.payload.run_if.when.conditions.map(e=>e.field_name);for(let r of n){let n=t[r];if(n==null)continue;let i=e.find(e=>e.index===n);i?(i.reason??=[],i.reason=Array.from(new Set([...i.reason,`input`])),i.required=!0):e.push({index:n,required:!0,reason:[`input`]})}}n.push(e)}return n}function CK({config:e,pipes:t,input:n,field_annotations:r}){try{let i=DK({config:e,pipes:t,input:n,fieldAnnotations:r});return wK(i),i}catch(e){throw e instanceof rD?e:new rD([tD.ValidationFailed({error:e})])}}function wK(e){for(let t of e.orderedPipeInstances)for(let{field:n}of yd(t.getInputRequirement()))Pd({pipes:e.orderedPipeInstances,derivedInputFields:e.derivedInputFields},n.type),Fd({pipes:e.orderedPipeInstances,derivedInputFields:e.derivedInputFields},n.format)}function TK(e,t){if(!e&&!t)throw new rD([tD.MustDefineAnnotations()]);return new bK(t||{}).merge(bK.fromInput(e||[]),!1,{appendOrders:!0})}function EK(e,t,n){let r={...t};return e.pipes.forEach((t,i)=>{for(let[a,o]of Object.entries(t.getOutputFields())){if(dd(o.resolvedName))throw new rD([tD.ReservedOutputFieldName({pipeId:t.pipeId,outputField:o})]);let a=r[o.resolvedName];if(a&&a.added_by.ref!==`input`)throw new rD([tD.DuplicatePipeOutput({pipeId:t.pipeId,outputField:o})]);r[o.resolvedName]={type:Pd(e,o.type),added_by:{ref:t.pipeId,config_hash:t.getConfigHashKey(),pipe_index:i},label:a?.label||o.label,format:Fd(e,o.format),is_primary_output:o.isPrimaryOutput,order:n[o.resolvedName]?.order??o.order??null}}}),r}function DK(e){let t=iK(e.pipes),n=TK(e.input,e.fieldAnnotations),r={},i=new Set;t.forEach((e,t)=>{Object.entries(e.getOutputFields()).forEach(([e,t])=>{r[t.resolvedName]=e,i.add(t.resolvedName)}),AK(e,t)});let a={},o={};for(let[e,t]of Object.entries(n.annotations))o[e]={type:t.type,added_by:{ref:`input`,config_hash:null,pipe_index:null},label:t.label||``,format:t.format?t.format:null,is_primary_output:!1,order:t.order??ko(e)},!i.has(e)&&(a[e]={addedBy:`input`,required:!1,type:t.type,label:t.label||e});let[s,c,l]=OK(t,n),u=EK({pipes:c,derivedInputFields:a},o,n.annotations);for(let e in u){let t=u[e];r[e]&&(n=n.merge({[e]:{type:t.type,format:t.format,json_metadata:null,label:n.annotations[e]?.label?n.annotations[e]?.label:null,order:n.annotations[e]?.order??null}},!0))}return{environment:e.config.environment,dependencyGraph:l,derivedInputFields:a,fieldAnnotations:n,orderedPipePayloads:s,orderedPipeInstances:c,resolvedFieldNames:r,fieldDefinitions:u}}function OK(e,t){let n=SK(e),r=kK(n,e,t),i=[],a=[];return r.forEach(t=>{let n=e[t];if(!n)throw new rD([tD.FaultyEnrichmentOrder()]);i.push(n.payload),a.push(n)}),[i,a,n]}function kK(e,t,n){let r=t.length,i=[],a=new Set,o=new Set,s=[],c=e=>{let n=t[e];return n?yd(n.getInputRequirement()).length>0:!1},l=(n,r=[])=>{if(o.has(n)){let e=n,i=r[r.length-1]||0,a={idx:i,pipe_id:t[i]?.pipeId},o={idx:e,pipeId:t[e]?.pipeId};throw new rD([tD.CircularDependency({currentPipe:a,circularPipe:o})])}if(a.has(n))return;o.add(n),r.push(n);let s=e[n]||[];for(let e of s)l(e.index,r);r.pop(),o.delete(n),a.add(n),i.push(n)};function u(t){if(a.has(t))return;o.add(t);let n=e[t]||[];for(let e of n){if(!a.has(e.index)&&e.required)throw new rD([tD.UnresolvableDependency({index:t,dependencyIndex:e.index})]);!o.has(e.index)&&!e.required&&u(e.index)}o.delete(t),a.add(t),i.push(t)}for(let e=0;e<r;e++)c(e)&&l(e);for(let e=0;e<r;e++)c(e)||l(e);for(let e=0;e<r;e++)u(e);let d=new Set(Object.keys(n.annotations)),f=new Map(Object.entries(n.annotations).map(([e,t])=>[e,t.type]));for(let e of i){let n=t[e];if(!n)throw Error(`Pipe not defined`);Object.values(n.getOutputFields()).forEach(e=>{d.add(e.resolvedName),typeof e.type==`string`&&f.set(e.resolvedName,e.type)})}for(let[n,r]of t.entries()){let a=r.getInputRequirement();vd(a,d)||s.push(tD.RequirementUnmet({requirement:a,pipeId:r.pipeId,index:n}));let o=e[n]||[],c=i.indexOf(n);for(let e of o){let r=i.indexOf(e.index);e.required&&r>c&&s.push(e.reason.includes(`input`)?tD.HardInputDependencyViolation({dependencyIndex:e.index,dependencyIndexPipeId:t[e.index]?.pipeId,index:n,indexPipeId:t[n]?.pipeId}):tD.HardConditionDependencyViolation({dependencyIndex:e.index,dependencyIndexPipeId:t[e.index]?.pipeId,index:n,indexPipeId:t[n]?.pipeId}))}let l=[...r.payload.run_if?[r.payload.run_if.when]:[],...r.getRowConditionBlocks()];for(let e of l)e.conditions.forEach(e=>{if(!d.has(e.field_name))throw new rD([tD.ConditionTargetFieldNotFound({fieldName:e.field_name,pipeId:r.pipeId,pipeIdx:n})]);if(e.property===`value`&&f.get(e.field_name)===`json`)throw new rD([tD.ConditionValueOnJsonField({fieldName:e.field_name,pipeId:r.pipeId,pipeIdx:n})])})}if(s.length>0)throw new rD(s);return i}function AK(e,t){let n=new Set(e.getConnectionsRequirements().filter(e=>e.allowManagedConnection===!1).map(e=>e.provider));if(n.size>0){let r=e.payload.connector;if(!r||(r.connections.map(e=>{if(e.type===`vault`)return vc(e.connection).provider;e.type}).forEach(e=>{e&&n.delete(e)}),n.size>0))throw new rD([tD.MissingCustomConnections({index:t,pipeId:e.pipeId,missingProviders:Array.from(n)})])}}const jK=`fields:add@1`,MK={},NK=r.object({effect_id:r.literal(jK),connector:eu(),config:r.object({name:r.string().min(1).optional(),type:Ro.optional(),format:is.nullable().optional(),label:r.string().optional(),insert_relative_to:r.string().min(1).optional(),insert_position:r.enum([`before`,`after`]).optional()})}),PK=class extends I{effectId=jK;schema=NK;payload;billableOperations=MK;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}evolveSchema(e){let{name:t,type:n,format:r,label:i}=this.payload.config,a=e.validationContext.fieldDefinitions,o;if(t){if(dd(t))throw Error(`"${t}" is a reserved field name and cannot be added.`);if(a[t])throw Error(`Field "${t}" already exists on this sheet.`);o=t}else{let e=`field`;o=e;let t=0;for(;a[o];)if(t++,o=`${e}_${t}`,t>1e3)throw Error(`Unable to generate unique field name`)}let s=n??`string`,c=r===void 0?s===`string`?`text`:null:r;if(c&&!Wm[s].includes(c))throw Error(`The field has the type ${s} but format ${c}. Type and format are not compatible.`);Wm[s].length===0&&(c=null);let l={...e.fieldAnnotations};l[o]={type:s,format:c,label:i??o,json_metadata:null};let{insert_relative_to:u,insert_position:d}=this.payload.config;if(u){let t=pd({fieldDefinitions:a,fieldAnnotations:e.fieldAnnotations??{}}).fieldOrder.input??[],n=t.indexOf(u);if(n!==-1){let e=[...t];e.splice(d===`before`?n:n+1,0,o),e.forEach((e,t)=>{let n=l[e];n&&(l[e]={...n,order:(t+1)*10})})}}return nd(CK({config:{environment:e.environment},pipes:e.pipes,field_annotations:l}),e.environment)}},FK=NK,IK={effectId:jK,baseEffect:L(jK),label:`Add field`,description:`Add a new input field (column) to the sheet — named and typed, or empty.`,categories:[`internal`],tags:[],keywords:[`column`,`columns`,`fields`,`input`,`create`,`declare`,`structure`,`empty`,`schema`],lifecycle:null,billableOperations:MK,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`hidden`,guide:`Adds ONE input column. config {} (the dash gesture) auto-names it (field, field_1, …). Pass config.name (+ type/format/label) to DECLARE a column up front — the column is visible to the REST OF THE CHAIN, so [fields:add ×N, pipe:add <pipe referencing them>] validates and commits in one run_effects; use this to give an empty sheet structure before any rows exist. Rejects a name that already exists on the sheet and the reserved name id. Optional insert_relative_to (an existing input field) + insert_position (before|after) persist the column's display position into the schema's field annotations; a missing anchor appends silently. To rename or retype an existing column use fields:patch@1.`,defaultPayload:{effect_id:jK,connector:null,config:{}}},LK=`fields:deletesparse:input@1`,RK={},zK=r.object({effect_id:r.literal(LK),connector:eu(),config:r.object({fields:cu({path:`config.fields`,sectionKey:`general`,groupPath:`config.general`,label:`Candidate fields`,minItems:1,description:`Input fields to delete if they turn out sparsely populated.`}),probe_size:Xu({path:`config.probe_size`,sectionKey:`general`,groupPath:`config.general`,label:`Probe size`,description:`How many rows to sample when measuring column density.`,min:100,max:1e4}).default(1e3),threshold_in_percent:Xu({path:`config.threshold_in_percent`,sectionKey:`general`,groupPath:`config.general`,label:`Density threshold (%)`,description:`Candidates populated in strictly fewer than this percent of probed rows are deleted.`,min:1,max:100}).default(25)})}),BK=class extends I{effectId=LK;schema=zK;payload;billableOperations=RK;constructor(e){if(super(),this.payload=this.validatePayload(e),this.payload.config.fields.some(e=>e.field_name===`id`))throw Error(`Cannot list the id field as a deletion candidate.`)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return this.payload.config.fields.map(e=>e.field_name)}evolveSchema(e){let t=structuredClone(e.fieldAnnotations||{});for(let{field_name:e}of this.payload.config.fields)delete t[e];if(Object.keys(t).filter(e=>e!==`id`).length===0&&e.pipes.length===0)throw Error(`fields:deletesparse:input@1 lists every input column as a candidate — it refuses to empty the sheet. Keep at least one column off the candidate list, or use fields:remove@1 / sheet:reset@1 to clear the sheet explicitly.`);let n=CK({config:{environment:e.environment},pipes:e.pipes,field_annotations:t});return{next:{environment:e.environment,pipes:e.pipes,fieldAnnotations:t,validationContext:n}}}},VK=zK,HK={effectId:LK,baseEffect:L(LK),label:`Delete sparse input columns`,description:`Probe rows to measure how densely candidate input columns are populated and delete the ones below a density threshold.`,guide:`Conditional column cleanup: list every input column you'd consider dropping as config.fields (typically the sparse leftovers rows:copy_to_sheet@1 imports leave behind) — the density check keeps any candidate that turns out well-populated. Probes the first config.probe_size rows (default 1000) and deletes a candidate only when it is populated in strictly fewer than config.threshold_in_percent (default 25) of them. Only listed fields can be deleted; id and pipe-referenced fields cannot be listed (validation error). Static validation treats ALL candidates as removed (aggressive over-approximation), so do not reference a candidate in later steps of the same run — re-read get_sheet_schema afterwards to see which columns survived. Deletes columns, never rows. DESTRUCTIVE (approval-gated), reversible via timetravel. To delete named columns unconditionally use fields:remove@1 instead.`,categories:[`data_hygiene`],tags:[V.NEW],keywords:[`empty`,`cleanup`,`prune`,`remove fields`,`unused`,`blank`],lifecycle:null,billableOperations:RK,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`visible`,defaultPayload:{effect_id:LK,connector:null,config:{fields:[],probe_size:1e3,threshold_in_percent:25}}},UK=`fields:duplicate@1`,WK={},GK=r.object({effect_id:r.literal(UK),connector:eu(),config:r.object({fields:cu({path:`config.fields`,sectionKey:`general`,groupPath:`config.general`,label:`Fields to duplicate`,minItems:1,description:`Each selected field is copied to a new editable input column.`})})});function KK(e,t){let n=`${e}_copy`;if(!t.has(n))return{name:n,index:null};let r=2;for(;t.has(`${n}_${r}`);)r++;return{name:`${n}_${r}`,index:r}}function qK(e){if(e==null)return null;let{isExpanded:t,expandedValue:n,resolvedInputValue:r}=hK(e);return t&&n.status!==`completed`||r==null?null:typeof r==`object`?structuredClone(r):r}const JK=class extends I{effectId=UK;schema=GK;payload;billableOperations=WK;constructor(e){super(),this.payload=this.validatePayload(e);let t=this.payload.config.fields.map(e=>e.field_name);if(t.includes(`id`))throw Error(`Cannot duplicate the id field.`);if(new Set(t).size!==t.length)throw Error(`Cannot duplicate the same field twice in one effect.`)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[...new Set(this.payload.config.fields.map(e=>e.field_name))]}evolveSchema(e){let t=e.validationContext.fieldDefinitions,n=new Set(Object.keys(t)),r=structuredClone(e.fieldAnnotations||{}),i=[];for(let{field_name:a}of this.payload.config.fields){let o=t[a];if(!o)throw Error(`Field name ${a} not found in current schema.`);let{name:s,index:c}=KK(a,n);n.add(s),i.push({source:a,target:s});let l=e.fieldAnnotations?.[a];r[s]={type:o.type,format:o.format??null,label:c===null?`${o.label} copy`:`${o.label} copy ${c}`,...l?.json_metadata?{json_metadata:structuredClone(l.json_metadata)}:{},...l?.order==null?{}:{order:l.order+1}}}return nd(CK({config:{environment:e.environment},pipes:e.pipes,field_annotations:r}),e.environment,(e,t)=>{for(let{source:n,target:r}of i)e.input[r]=qK(t.input[n]);return e})}},YK=GK,XK={effectId:UK,baseEffect:L(UK),label:`Duplicate fields`,description:`Copy fields into new editable input columns (enrichment values become plain values).`,categories:[`data_hygiene`],tags:[V.NEW],keywords:[`copy`,`clone`,`freeze`,`snapshot`,`column`],lifecycle:null,billableOperations:WK,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`visible`,guide:`Copy fields into new editable input columns — works for user-entered AND pipe-output fields, so it freezes an enrichment result into a plain value you can edit or re-enrich over. Copies land as "<field>_copy" (then "<field>_copy_2", …) with the source's type/format; only the RESOLVED VALUE is copied — cells whose status is not "completed" copy as null, and status/provenance never carry over. Put every field to duplicate in ONE effect. Later effects in the same chain may reference the "_copy" names.`,defaultPayload:{effect_id:UK,connector:null,config:{fields:[]}}},ZK=`fields:order:reset@1`,QK={},$K=r.object({effect_id:r.literal(ZK),connector:eu(),config:r.object({})}),eq=class extends I{effectId=ZK;schema=$K;payload;billableOperations=QK;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}evolveSchema(e){let t={};for(let[n,r]of Object.entries(e.fieldAnnotations??{})){let{order:e,...i}=r;t[n]=i}return nd(CK({config:{environment:e.environment},pipes:e.pipes,field_annotations:t}),e.environment)}},tq=$K,nq={effectId:ZK,baseEffect:L(ZK),label:`Reset column order`,description:`Clear all custom column ordering and return to the default arrangement.`,categories:[`data_hygiene`],tags:[],keywords:[`order`,`reorder`,`columns`,`arrange`,`layout`,`default`,`reset`],lifecycle:null,billableOperations:QK,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`visible`,guide:`Clears every column's custom display position (set by dragging or insert placement) so the sheet returns to its DEFAULT arrangement: input columns first, pipe groups in dependency order, primary outputs leading their group. Display-only and idempotent — no values, names, types, or pipes change, and it is not undoable except by re-dragging.`,defaultPayload:{effect_id:ZK,connector:null,config:{}}};function rq(e,t,n){if(e==null||typeof e==`number`||typeof e==`boolean`)return e;if(typeof e==`string`){let r=t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),i=new RegExp(r,`g`);return e.replace(i,n)}if(Array.isArray(e))return e.map(e=>rq(e,t,n));if(typeof e==`object`){let r={};for(let i in e)Object.hasOwn(e,i)&&(i.includes(`path`)||[`connector`,`provider`,`pipe_id`,`search_id`].includes(i)?r[i]=e[i]:r[i]=rq(e[i],t,n));return r}return e}function iq(e,t,n){let r={...e};r.config??={};let i=r.config;if(i?.input_fields?.[t]&&(!i.input_fields[t].alias||i.input_fields[t].alias===t)){let e=i.input_fields[t]||{};i.input_fields[t]={...e,alias:n}}return r}function aq(e,t,n){let r=[];for(let i of e.orderedPipePayloads){let e=rq(i,t,n);r.push(iq(e,t,n))}return r}function oq(e,t,n,r,i){if(!e.orderedPipeInstances[t])throw Error(`Pipe instance at index ${t} is not defined`);let a={...n};if(GG(n.pipe_id).outputFieldMode===`static`){let n=e.resolvedFieldNames[r]?e.resolvedFieldNames[r]:Object.entries(e.resolvedFieldNames).find(([,e])=>e===r)?.[0];if(!n)throw Error(`Unable to find field name ${r} in pipe at idx ${t}`);a.config??={};let o=a.config,s=o.output_fields?.[n]||{};return o.output_fields??={},o.output_fields[n]??={},o.output_fields[n]={...s,alias:i},iq(a,r,i)}return rq(a,r,i)}function sq(e,t,n,r){let i=[];for(let a=0;a<e.orderedPipePayloads.length;a++){let o=e.orderedPipePayloads[a],s=t.added_by.pipe_index;if(typeof s!=`number`)throw Error(`Pipe index must be number.`);a===s?i.push(oq(e,a,o,n,r)):i.push(rq(o,n,r))}return i}function cq(e,t,n){let r=e.fieldDefinitions[t];if(!r)throw Error(`No field definition found for field with name ${t}`);return r?.added_by.ref===`input`?aq(e,t,n):sq(e,r,t,n)}const lq=`fields:patch@1`,uq={},dq=r.object({effect_id:r.literal(lq),connector:eu(),config:r.object({field_name:r.string().min(1),new_name:r.string().min(1).optional(),new_format:is.nullable().optional(),new_type:Ro.optional(),new_label:r.string().optional()})}),fq=class extends I{effectId=lq;schema=dq;payload;billableOperations=uq;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[this.payload.config.field_name]}evolveSchema(e){let{field_name:t,new_name:n,new_label:r,new_format:i,new_type:a}=this.payload.config;if(!e.fieldAnnotations?.[t])throw Error(`Field name ${t} not found in current schema.`);let o=e.validationContext,s=o.fieldDefinitions[t];if(!s)throw Error(`Field definition for field ${t} not found.`);let c={...e.fieldAnnotations},l=!!n&&n!==t,u=[...o.orderedPipePayloads];if(l){u=cq(o,t,n);let e=c[t];if(!e)throw Error(`Unable to find file annotations for field ${t}.`);c[n]=e,delete c[t]}let d=s.added_by.ref===`input`,f=n||t,p=a||s.type,ee=i||s.format;if(a&&a!==s.type){if(!d)throw Error(`Cannot change the type of a pipe output field.`);c[f].type=a,Wm[a].length===0&&(c[f].format=null)}if(i&&i!==s.format){if(!d)throw Error(`Cannot change the format of a pipe output field.`);c[f].format=i}if(Wm[p].length&&ee&&!Wm[p].includes(ee))throw Error(`After applying your updates the field has the type ${p} but format ${ee}. Type and format are not compatible.`);r&&r!==s.label&&(c[f].label=r);let te=CK({config:{environment:e.environment},pipes:u,field_annotations:c}),ne=l?(e,r)=>(e.input[n]=r.input[t]||null,e):void 0;return nd(te,e.environment,ne)}},pq=dq,mq={effectId:lq,baseEffect:L(lq),label:`Edit field`,description:`Rename, retype, reformat, or relabel a field.`,categories:[`internal`],tags:[],keywords:[`column`,`columns`,`fields`,`rename`,`retype`,`reformat`,`relabel`],guide:`Renames/retypes/reformats/relabels an EXISTING column — config.field_name must already exist on the sheet, and type/format changes apply only to INPUT columns, never pipe outputs. A rename rewrites pipe-payload references and migrates row values. To CREATE a new named column use fields:add@1 with config.name.`,lifecycle:null,billableOperations:uq,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`hidden`,defaultPayload:{effect_id:lq,connector:null,config:{field_name:``}}},hq=`fields:remove@1`,gq={},_q=r.object({effect_id:r.literal(hq),connector:eu(),config:r.object({field_names:r.array(r.string().min(1)).min(1)})}),vq=class extends I{effectId=hq;schema=_q;payload;billableOperations=gq;constructor(e){if(super(),this.payload=this.validatePayload(e),this.payload.config.field_names.includes(`id`))throw Error(`Cannot remove the id field.`)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return this.payload.config.field_names}evolveSchema(e){let t=structuredClone(e.fieldAnnotations||{});for(let e of this.payload.config.field_names)delete t[e];if(Object.keys(t).length===1){let t=CK({config:{environment:e.environment},pipes:[],field_annotations:{}});return{next:{environment:e.environment,pipes:[],fieldAnnotations:{},validationContext:t}}}let n=CK({config:{environment:e.environment},pipes:e.pipes,field_annotations:t});return{next:{environment:e.environment,pipes:e.pipes,fieldAnnotations:t,validationContext:n}}}},yq=_q,bq={effectId:hq,baseEffect:L(hq),label:`Remove fields`,description:`Remove fields (input columns) from the sheet.`,categories:[`internal`],tags:[],lifecycle:null,billableOperations:gq,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`hidden`,defaultPayload:{effect_id:hq,connector:null,config:{field_names:[]}}},xq=`pipe:add@1`,Sq={},Cq=r.object({effect_id:r.literal(xq),connector:eu(),config:r.object({pipe_payload:UG.optional()})}),wq=class extends I{effectId=xq;schema=Cq;payload;billableOperations=Sq;constructor(e){if(super(),this.payload=this.validatePayload(e),!this.payload.config.pipe_payload)throw Error(`pipe:add@1 requires config.pipe_payload`)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}evolveSchema(e){let t=this.payload.config.pipe_payload;if(!t)throw Error(`pipe:add@1 requires config.pipe_payload`);return nd(CK({config:{environment:e.environment},pipes:[...e.pipes,t],field_annotations:e.fieldAnnotations||{}}),e.environment)}},Tq=Cq,Eq={effectId:xq,baseEffect:L(xq),label:`Add pipe`,description:`Append a pipe to the sheet's pipeline.`,categories:[`internal`],tags:[],lifecycle:null,billableOperations:Sq,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`hidden`,defaultPayload:{effect_id:xq,connector:null,config:{}}},Dq=`pipe:remove@1`,Oq={},kq=r.object({effect_id:r.literal(Dq),connector:eu(),config:r.object({config_hash:r.string(),hard:r.boolean().default(!1)})}),Aq=class extends I{effectId=Dq;schema=kq;payload;billableOperations=Oq;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}evolveSchema(e){let{config_hash:t,hard:n}=this.payload.config,i=iK(e.pipes).findIndex(e=>e.getConfigHashKey()===t);if(i===-1)throw Error(`Pipe with config hash ${t} not found.`);let a=e.validationContext,o=new Set(Object.entries(a.fieldDefinitions).filter(([,e])=>e.added_by.config_hash===t).map(([e])=>e)),s=new bK(e.fieldAnnotations||{});for(let e of o){let t=a.fieldDefinitions[e];if(!t)continue;if(n){s=s.deleteKey(e);continue}let i=jo(e,t,a),o=Oo(i.fieldName)?g(i.fieldName):null;s=s.merge({[e]:{format:t.format,type:t.type,json_metadata:o?.jsonMeta?{schema:o.jsonMeta.zodSchema?r.toJSONSchema(o.jsonMeta.zodSchema):null,example_value:o.jsonMeta.exampleValue||null}:null,label:t.label}})}let c=e.pipes.slice();c.splice(i,1);let l=CK({config:{environment:e.environment},pipes:c,field_annotations:s.annotations}),u=n?void 0:e=>{let t={...e};for(let e of o){let n=t.input[e];if(!n)continue;let{resolvedInputValue:r}=hK(n);t.input[e]=r}return t};return{next:{environment:e.environment,pipes:c,fieldAnnotations:s.annotations,validationContext:l},rowMigration:u}}},jq=kq,Mq={effectId:Dq,baseEffect:L(Dq),label:`Remove pipe`,description:`Remove a pipe from the sheet's pipeline, optionally deleting its fields.`,categories:[`internal`],tags:[],lifecycle:null,billableOperations:Oq,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`hidden`,defaultPayload:{effect_id:Dq,connector:null,config:{config_hash:``,hard:!1}}},Nq=`pipe:update@1`,Pq={},Fq=r.object({effect_id:r.literal(Nq),connector:eu(),config:r.object({config_hash:r.string().min(1),pipe_payload:UG.optional()})}),Iq=class extends I{effectId=Nq;schema=Fq;payload;billableOperations=Pq;constructor(e){if(super(),this.payload=this.validatePayload(e),!this.payload.config.pipe_payload)throw Error(`pipe:update@1 requires config.pipe_payload`)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}evolveSchema(e){let{config_hash:t,pipe_payload:n}=this.payload.config;if(!n)throw Error(`pipe:update@1 requires config.pipe_payload`);let i=iK(e.pipes).findIndex(e=>e.getConfigHashKey()===t);if(i===-1)throw Error(`Pipe with config hash ${t} not found.`);let a=e.validationContext,o=new Set(Object.entries(a.fieldDefinitions).filter(([,e])=>e.added_by.config_hash===t).map(([e])=>e)),s=[...e.pipes];s.splice(i,1,n);let c=CK({config:{environment:e.environment},pipes:s,field_annotations:e.fieldAnnotations||{}}),l=new(BG(n.pipe_id))(n),u=new Set(Object.entries(c.fieldDefinitions).filter(([,e])=>e.added_by.config_hash===l.getConfigHashKey()).map(([e])=>e));for(let e of u)o.delete(e);let d=new bK(c.fieldAnnotations.annotations);for(let e of o){let t=a.fieldDefinitions[e];if(!t)throw Error(`Previous field def not found`);if(c.resolvedFieldNames[e])continue;let n=jo(e,t,a),i=Oo(n.fieldName)?g(n.fieldName):null;d=d.merge({[e]:{format:t.format,type:t.type,json_metadata:i?.jsonMeta?{schema:i.jsonMeta.zodSchema?r.toJSONSchema(i.jsonMeta.zodSchema):null,example_value:i.jsonMeta.exampleValue||null}:null,label:t.label}})}let f=CK({config:{environment:e.environment},pipes:c.orderedPipePayloads,field_annotations:d.annotations});return{next:{environment:e.environment,pipes:c.orderedPipePayloads,fieldAnnotations:d.annotations,validationContext:f},rowMigration:e=>{let t={...e};for(let e of o){let n=t.input[e];if(!n)continue;let{resolvedInputValue:r}=hK(n);t.input[e]=r}return t}}}},Lq=Fq,Rq={effectId:Nq,baseEffect:L(Nq),label:`Update pipe`,description:`Replace a pipe in the sheet's pipeline and re-run it.`,categories:[`internal`],tags:[],lifecycle:null,billableOperations:Pq,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`hidden`,defaultPayload:{effect_id:Nq,connector:null,config:{config_hash:``}}},zq=`row:update@1`,Bq={},Vq=r.object({effect_id:r.literal(zq),connector:eu(),config:r.object({record_id:r.string().min(1),record:ms})}),Hq=class extends I{effectId=zq;schema=Vq;payload;billableOperations=Bq;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}},Uq=Vq,Wq={effectId:zq,baseEffect:L(zq),label:`Update row`,description:`Update a single row's values.`,categories:[`internal`],tags:[],lifecycle:null,billableOperations:Bq,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`shared`,lockScope:`selection`,catalogVisibility:`hidden`,defaultPayload:{effect_id:zq,connector:null,config:{record_id:``,record:{}}}},Gq=`rows:add@1`,Kq={},qq=r.object({effect_id:r.literal(Gq),connector:eu(),config:r.object({input:r.array(ms).min(1).max(100),allow_field_creation:r.boolean().default(!1),allow_empty:r.boolean().default(!1)})}),Jq=class extends I{effectId=Gq;schema=qq;payload;billableOperations=Kq;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}producesDynamicFields(){return!1}evolveSchema(e){if(!this.payload.config.allow_field_creation){let t=new Set(Object.keys(e.validationContext.fieldDefinitions)),n=[...new Set(this.payload.config.input.flatMap(e=>Object.keys(e)))].filter(e=>e!==`id`&&!t.has(e));if(n.length>0)throw Error(`records carry fields that do not exist on the sheet: ${n.join(`, `)}. Set allow_field_creation: true to create these columns from the records — do not recreate the sheet.`);return{next:e}}let t=e.validationContext.fieldAnnotations.merge(bK.fromInput(this.payload.config.input).annotations,!1,{appendOrders:!0});return nd(CK({config:{environment:e.environment},pipes:e.pipes,field_annotations:t.annotations}),e.environment)}},Yq=qq,Xq={effectId:Gq,baseEffect:L(Gq),label:`Add rows`,description:`Append records to the sheet. Each cell accepts a flat value OR a fully expanded field value (input expansion) — pass enriched records unchanged.`,guide:[`Each record is a flat map of field name → cell. A cell is either a flat value`,"(stamped as user input) or an expanded field value `{ value, status, resolved_by,","widgets, ... }` copied unchanged from a pipes/search response — never hand-written",`(its fingerprints are computed by the engine). An expanded cell keeps the pipe that`,"made it, so attaching the same pipe config via `pipe:add@1` afterwards claims the",`column and completed cells stay completed — nothing recomputes, nothing re-bills.`,"Only `completed` cells keep the expanded form; other statuses collapse to their","plain value on insert. `id` is the record identity, never a data column — omit it","and one is minted. Set `allow_field_creation: true` to create missing columns from",`the record keys (types inferred from the real values). Caps at 100 records per`,`effect — put several rows:add@1 effects in one chain for larger batches; for bulk`,"loads use the staging-group import (`rows:import@1`)."].join(` `),categories:[`internal`],tags:[],lifecycle:null,billableOperations:Kq,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`shared`,lockScope:`self`,catalogVisibility:`hidden`,defaultPayload:{effect_id:Gq,connector:null,config:{input:[],allow_field_creation:!1,allow_empty:!1}}},Zq=r.enum([`pending`,`failed`,`no_result`,`skipped`,`completed`]),Qq=[{value:`pending`,label:`Pending`},{value:`failed`,label:`Failed`},{value:`no_result`,label:`No result`},{value:`skipped`,label:`Skipped`},{value:`completed`,label:`Completed`}],$q=[`pending`],eJ=[`pending`,`failed`,`skipped`];function tJ(e){return{enabled:!0,triggers:{status:e,configHashMismatch:!0,inputHashMismatch:!0}}}const nJ=`rows:adopt@1`,rJ={},iJ=r.object({effect_id:r.literal(nJ),connector:eu(),config:r.object({pipes:r.array(UG).default([]),selection:lu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to target.`,placeholder:`{"type":"all"}`},`both`),adopt_statuses:Yu({options:Qq,required:!1,disableSearch:!0,path:`config.adopt_statuses`,sectionKey:`general`,groupPath:`config.general`,label:`Adopt statuses`,description:`Only cells with these statuses are adopted (pinned). Omit to adopt all.`}).optional()})}),aJ=class extends I{effectId=nJ;schema=iJ;payload;billableOperations=rJ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}},oJ=iJ,sJ={effectId:nJ,baseEffect:L(nJ),label:`Adopt values`,description:`Pin the selected columns' current values so a config or input change won't regenerate them.`,guide:'Adopt re-stamps each selected cell\'s stored config/input hash to the CURRENT one, so the value is kept as-is instead of being re-run. It never recomputes — use `rows:enrich@1` to (re)compute. Adopting all statuses composes with a follow-up `rows:enrich@1` (`run_statuses: ["failed"]`) to rerun only the failures while completed cells stay pinned — the safe pattern before running a non-idempotent effect twice.',categories:[`internal`],tags:[],lifecycle:null,billableOperations:rJ,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`both`,lockingMode:`shared`,lockScope:`selection`,catalogVisibility:`hidden`,defaultPayload:{effect_id:nJ,connector:null,config:{pipes:[]}}},cJ=`rows:copy_to_sheet@1`,lJ={},uJ=r.object({effect_id:r.literal(cJ),connector:eu(),config:r.object({selection:lu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to copy as JSON.`,placeholder:`{"type":"all"}`},`both`),where:Rl({path:`config.where`,sectionKey:`general`,groupPath:`config.general`,order:1,label:`Condition (optional)`,description:`Only copy selected rows matching this condition. Leave empty to copy all.`}),target_sheet:Ku({path:`config.target_sheet`,sectionKey:`general`,groupPath:`config.general`,order:2,inputType:`text`,label:`Target sheet`,description:`Slug of the destination sheet. Created if missing (see below). Slugs are org-unique — for a NEW sheet use a short descriptive slug plus a few random chars (e.g. "ceos-x7k2") so it can't hit an unrelated existing sheet.`}),create_if_missing:Qu({path:`config.create_if_missing`,sectionKey:`general`,groupPath:`config.general`,order:3,label:`Create if missing`,description:`When the target sheet does not exist, create it in this sheet's project. Off ⇒ fail.`,defaultValue:!0})})}),dJ=class extends I{effectId=cJ;schema=uJ;payload;billableOperations=lJ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){let e=this.payload.config.where;return e?[...new Set(e.conditions.map(e=>e.field_name))]:[]}},fJ=uJ,pJ={effectId:cJ,baseEffect:L(cJ),label:`Copy rows to sheet`,description:`Copy selected rows (or every row) into another sheet — all of them, or only those matching a condition. Creates the target sheet in this project if it doesn't exist.`,categories:[`data_hygiene`],tags:[V.NEW],keywords:[`move`,`transfer`,`split`,`push`,`another sheet`],lifecycle:null,billableOperations:lJ,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`both`,lockingMode:`shared`,lockScope:`self`,catalogVisibility:`visible`,defaultPayload:{effect_id:cJ,connector:null,config:{selection:{type:`all`},target_sheet:``,create_if_missing:!0}}},mJ=`rows:dedupe@1`,hJ={"rows-dedupe-v1-pipe0":{allowManagedConnection:!0,provider:`pipe0`,mode:`always`,credits:{default:0},note:`Deduplicating your own sheet is free.`}},gJ=r.object({effect_id:r.literal(mJ),connector:eu(),config:r.object({selection:lu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to target as JSON.`,placeholder:`{"type":"all"}`},`both`),fields:cu({path:`config.fields`,sectionKey:`general`,groupPath:`config.general`,label:`Match fields`,minItems:1,description:`Rows are duplicates when these fields match.`}),match:Ju({path:`config.match`,sectionKey:`general`,groupPath:`config.general`,label:`Match condition`,required:!0,defaultValue:`all`,options:[{value:`all`,label:`All fields match (AND)`},{value:`any`,label:`Any field matches (OR)`}]}),strategy:Ju({path:`config.strategy`,sectionKey:`general`,groupPath:`config.general`,label:`Which duplicate to keep`,required:!0,defaultValue:`keep_oldest`,options:[{value:`keep_oldest`,label:`Keep oldest`},{value:`keep_newest`,label:`Keep newest`}]})})}),_J=class extends I{effectId=mJ;schema=gJ;payload;billableOperations=hJ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitOperation:`pipe0_api_operation`,rateLimitRatio:1,allowManagedConnection:!0}]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`rows-dedupe-v1-pipe0`)}getFieldReferences(){return this.payload.config.fields.map(e=>e.field_name)}},vJ=gJ,yJ={effectId:mJ,baseEffect:L(mJ),label:`Remove duplicate rows`,description:`Find duplicate rows by matching fields and keep one row per group.`,categories:[`data_hygiene`],tags:[V.NEW],keywords:[`dedupe`,`deduplicate`,`merge`,`clean`,`unique`],lifecycle:null,billableOperations:hJ,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`both`,lockingMode:`exclusive`,shouldUpgradeSchema:!0,catalogVisibility:`visible`,guide:`Dedupe in ONE run: list every identity field in config.fields and pick config.match — "all" (rows are duplicates only when every field matches) or "any" (a match on ANY listed field makes rows duplicates). To dedupe on several alternative keys (e.g. same email OR same profile_url), use match "any" with all keys in one effect — never run one dedupe per field; if you must combine dedupe with other cleanup, put the effects in one validated chain so the user approves once. Destructive and approval-gated; reversible via timetravel.`,defaultPayload:{effect_id:mJ,connector:null,config:{fields:[],match:`all`,strategy:`keep_oldest`}}},bJ=`rows:duplicate@1`,xJ={"rows-duplicate-v1-pipe0":{allowManagedConnection:!0,provider:`pipe0`,mode:`always`,credits:{default:0},note:`Duplicating rows in your own sheet is free.`}},SJ=r.object({effect_id:r.literal(bJ),connector:eu(),config:r.object({selection:lu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to target as JSON.`,placeholder:`{"type":"all"}`},`both`)})}),CJ=class extends I{effectId=bJ;schema=SJ;payload;billableOperations=xJ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitOperation:`pipe0_api_operation`,rateLimitRatio:1,allowManagedConnection:!0}]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`rows-duplicate-v1-pipe0`)}getFieldReferences(){return[]}},wJ=SJ,TJ={effectId:bJ,baseEffect:L(bJ),label:`Duplicate rows`,description:`Copy the selected rows (or every row). Copies get fresh ids and are appended after the existing rows.`,categories:[`data_hygiene`],tags:[V.NEW],keywords:[`copy`,`clone`,`replicate`],lifecycle:null,billableOperations:xJ,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`both`,lockingMode:`shared`,lockScope:`self`,catalogVisibility:`visible`,defaultPayload:{effect_id:bJ,connector:null,config:{}}},EJ=`rows:enrich@1`,DJ={},OJ=r.object({effect_id:r.literal(EJ),connector:eu(),config:r.object({pipes:r.array(UG).default([]),selection:lu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to target: all rows, specific record ids, or a window ({"type":"window","count":N}) — the next N rows with queued work. On a schedule the window advances each fire until the list is exhausted.`,placeholder:`{"type":"all"}`},`both`),run_statuses:Yu({options:Qq,required:!1,disableSearch:!0,path:`config.run_statuses`,sectionKey:`general`,groupPath:`config.general`,label:`Run statuses`,description:`Cell statuses to (re)run. Omitted: scheduled runs fill only pending cells; manual runs also re-run failed and skipped.`}).optional(),where:Rl({path:`config.where`,sectionKey:`general`,groupPath:`config.general`,order:2,label:`Condition (optional)`,description:`Only enrich selected rows matching this condition. Leave empty to consider all selected rows.`})})}),kJ=class extends I{effectId=EJ;schema=OJ;payload;billableOperations=DJ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getRecordQueueConfig(e){return tJ(this.payload.config.run_statuses??(e?.isScheduled?$q:eJ))}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){let e=this.payload.config.where;return e?[...new Set(e.conditions.map(e=>e.field_name))]:[]}getRowFilter(){return this.payload.config.where??null}},AJ=OJ,jJ={effectId:EJ,baseEffect:L(EJ),label:`Enrich rows`,description:`Run the sheet's pipes over the selected rows.`,categories:[`enrichment`],tags:[],keywords:[`run`,`execute`,`process`,`refresh`,`rerun`,`pipes`],lifecycle:null,billableOperations:DJ,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],catalogVisibility:`visible`,selectionMode:`both`,lockingMode:`shared`,lockScope:`selection`,guide:`Three narrowing axes compose (all AND): config.selection picks the rows in scope, config.where keeps only scoped rows matching a condition, and config.run_statuses decides which CELLS on those rows (re)run — force-rerun is selecting "completed" there. The where travels verbatim in schedules and is re-evaluated per row per run, so a static scheduled payload can express freshness cohorts, e.g. where last_attempted_at older_than_days 90 AND status(profile) eq completed with run_statuses ["completed"]. A finite list drips on a schedule via a window selection instead: {"type":"window","count":N} claims the next N rows with queued work each fire (completed rows leave the work set, so the window auto-advances) until the sheet is exhausted — no cursor or state needed. Omitted run_statuses resolve from the trigger: a scheduled run fills only pending cells; a manual run also re-runs failed/skipped. A where may reference a json field's STATUS (property "status" — e.g. status(person_profile_match) eq completed), but never its VALUE — compare flat columns for values. A retry cohort keyed on failed/no_result must widen run_statuses to ["failed","completed","skipped"] (resp. no_result) so timestamp/counter cells restamp and previously skipped downstream pipes re-activate on success — the where already restricts which rows are touched.`,defaultPayload:{effect_id:EJ,connector:null,config:{pipes:[]}}},MJ=`rows:filter:prompt@1`,NJ=`rows-filter-prompt-v1`,PJ=Xc(NJ),FJ=r.object({effect_id:r.literal(MJ),connector:$l(),config:r.object({selection:lu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to target as JSON.`,placeholder:`{"type":"all"}`},`both`),prompt:qu({path:`config.prompt`,sectionKey:`general`,groupPath:`config.general`,label:`Filter instruction`,rows:4,placeholder:`Only keep rows where the person is a "Head of Growth" at a company doing less than $1M in revenue.`}),model:ed({sectionKey:`general`,label:`Model`,path:`config.model`,groupPath:`config.general`,billableOperations:PJ,defaultValue:Hc}),fields:cu({path:`config.fields`,sectionKey:`general`,groupPath:`config.general`,label:`Fields to consider`,info:`If specified, only these fields are shown to the model. This is useful to drop large JSON columns and save tokens.`})})}),IJ=class extends I{effectId=MJ;schema=FJ;payload;billableOperations=PJ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return Wc(this.payload.config.model)}getProviderNames(){return Uc(this.payload.config.model)}estimateBillableOperations(e){return Qc(e,{model:this.payload.config.model,prefix:NJ,inputTokens:600,outputTokens:50})}getFieldReferences(){return(this.payload.config.fields??[]).map(e=>e.field_name)}},LJ=FJ,RJ={effectId:MJ,baseEffect:L(MJ),label:`AI filter rows`,description:`Keep or remove rows by a natural-language instruction, judged per row by an AI model.`,categories:[`data_hygiene`],tags:[V.NEW,V.AI],keywords:[`classify`,`qualify`,`score`,`prompt`,`clean`],lifecycle:null,billableOperations:PJ,allowedUserConnectionProviders:Gc(),managedProviders:Gc(),selectionMode:`both`,lockingMode:`exclusive`,shouldUpgradeSchema:!0,catalogVisibility:`visible`,defaultPayload:{effect_id:MJ,connector:null,config:{model:Hc,prompt:``,fields:[]}}},zJ=`rows:import@1`,BJ={},VJ=r.object({effect_id:r.literal(zJ),connector:eu(),config:r.object({staging_group_id:r.string().min(1),allow_field_creation:r.boolean().default(!1),event_id:r.string().nullable().default(null)})}),HJ=class extends I{effectId=zJ;schema=VJ;payload;billableOperations=BJ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}producesDynamicFields(){return this.payload.config.allow_field_creation===!0}},UJ=VJ,WJ={effectId:zJ,baseEffect:L(zJ),label:`Import rows`,description:`Append records from a staging group (CSV import / search commit).`,categories:[`internal`],tags:[],keywords:[`csv`,`upload`,`excel`,`spreadsheet`,`file`],lifecycle:null,billableOperations:BJ,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`shared`,lockScope:`self`,catalogVisibility:`hidden`,defaultPayload:{effect_id:zJ,connector:null,config:{staging_group_id:``,allow_field_creation:!1,event_id:null}}},GJ=`rows:remove@1`,KJ={},qJ=r.object({effect_id:r.literal(GJ),connector:eu(),config:r.object({selection:lu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to delete as JSON.sc`,placeholder:`{"type":"all"}`},`both`),where:Rl({path:`config.where`,sectionKey:`general`,groupPath:`config.general`,order:1,label:`Condition (optional)`,description:`Only delete selected rows matching this condition. Leave empty to delete all.`})})}),JJ=class extends I{effectId=GJ;schema=qJ;payload;billableOperations=KJ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){let e=this.payload.config.where;return e?[...new Set(e.conditions.map(e=>e.field_name))]:[]}},YJ=qJ,XJ={effectId:GJ,baseEffect:L(GJ),label:`Delete rows`,description:`Delete selected rows — all of them, or only those matching a condition.`,categories:[`data_hygiene`],tags:[],keywords:[`remove`,`drop`,`clear`,`clean`,`purge`],lifecycle:null,billableOperations:KJ,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`both`,lockingMode:`exclusive`,lockScope:`selection`,catalogVisibility:`visible`,guide:`Delete rows matching config.where (omit selection to consider ALL rows; omit where to delete the whole selection). Destructive and approval-gated, so make ONE remove do the whole job: or-combine EVERY drop criterion into a single where (logic "or", one condition per field) instead of running several removes — and put the remove in the same validated chain as any fields:remove / rename cleanup so the user approves once. To drop rows whose enrichment yielded nothing, condition on the field's STATUS (property "status", e.g. neq "completed" — catches skipped, failed, and no_result at once). Bracketed cell renderings from get_sheet_rows like "[no_result]"/"[skipped]" are status placeholders for EMPTY cells, never stored values — a value condition cannot match them. After the run, re-read the sheet ONCE to confirm; if the rows you expected gone are still there, stop and report the discrepancy instead of retrying with variant conditions.`,defaultPayload:{effect_id:GJ,connector:null,config:{selection:{type:`rows`,record_ids:[]}}}},ZJ=`rows:removeempty@1`,QJ={},$J=r.object({effect_id:r.literal(ZJ),connector:eu(),config:r.object({selection:lu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to consider as JSON.`,placeholder:`{"type":"all"}`},`both`),fields:cu({path:`config.fields`,sectionKey:`general`,groupPath:`config.general`,label:`Fields`,minItems:1,description:`Delete a row when ANY of these fields is empty.`})})}),eY=class extends I{effectId=ZJ;schema=$J;payload;billableOperations=QJ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return this.payload.config.fields.map(e=>e.field_name)}},tY=$J,nY={effectId:ZJ,baseEffect:L(ZJ),label:`Delete rows with empty cells`,description:`Delete selected rows where any of the chosen fields is empty.`,categories:[`data_hygiene`],tags:[V.NEW],keywords:[`blank`,`null`,`missing`,`prune`,`incomplete`,`sparse`],lifecycle:null,billableOperations:QJ,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`both`,lockingMode:`exclusive`,lockScope:`selection`,catalogVisibility:`visible`,guide:`Delete rows where ANY field in config.fields is empty (OR semantics) — list EVERY field to check in ONE effect instead of running several. "Empty" means: missing key, null, empty string, empty array, or — for enrichment output — any cell whose status is not "completed" (catches failed, no_result, and skipped at once); 0, false, and whitespace-only strings count as populated. Omit selection to consider ALL rows. For value-based predicates (e.g. drop rows where score < 3) use rows:remove@1 with a where condition instead. Destructive and approval-gated; after the run, re-read the sheet ONCE to confirm.`,defaultPayload:{effect_id:ZJ,connector:null,config:{selection:{type:`rows`,record_ids:[]},fields:[]}}};function rY(e){if(e instanceof Z)return e;let t=e.search_id,n=_G(t);if(!n)throw Error(`Unknown pipe: ${e.search_id}`);return new n(bG.parse(e))}const iY=`search:run@1`,aY={},oY=r.object({effect_id:r.literal(iY),connector:eu(),config:r.object({search_payload:td({path:`config.search_payload`,groupPath:`config.general`,sectionKey:`general`,label:`Search`,description:`Pick and configure the search to run.`},bG),max_number_of_results:Xu({path:`config.max_number_of_results`,groupPath:`config.general`,sectionKey:`general`,label:`Max results`,description:`Maximum number of items to find across all pages.`,guide:"This is the FETCH budget — an upper bound on raw results pulled across all pages (it also caps each page's size). De-duplicated results are NOT re-fetched, so this is not the final row count. When you want EXACTLY N unique rows, do NOT set this to N (you'd get fewer the moment any result is a duplicate): set `stop_at_unique_rows_count` to N and set this to the maximum (1000000) so the unique count is the real stop condition. For a plain bulk fetch with no unique target, set this to the number of rows you want.",max:1e6,min:1}).default(1e3),deduplicate:Qu({path:`config.deduplicate`,groupPath:`config.general`,sectionKey:`general`,label:`Unique rows only`,description:`Skip results that already exist in the sheet.`,guide:"Dedup key is the search's own declared key. Discards are NOT topped up with extra pages, so to reliably collect N unique rows pair this with `stop_at_unique_rows_count` and a large `max_number_of_results`.",defaultValue:!0,enabledIf:e=>{let t=e.config?.search_payload;if(!t?.search_id)return{disabled:!0,message:`Configure a search first.`};let n=!1;try{n=rY(t).getDedupConfig().fields.length>0}catch{n=!1}return n?{disabled:!1}:{disabled:!0,message:`This search doesn't support de-duplication.`}}}),stop_at_unique_rows_count:Zu({path:`config.stop_at_unique_rows_count`,groupPath:`config.general`,sectionKey:`general`,label:`Stop at X unique rows`,description:`Stop after this many new rows have been added. Leave empty for no early stop. Bounded by Max results.`,guide:"Set this to the exact unique-row count you want (only works with `deduplicate` on). It paginates full pages until this many NEW rows are added, so set `max_number_of_results` to the maximum (1000000) to give it room — `max_number_of_results` then just acts as a safety backstop.",placeholder:`No early stop`,min:1,max:1e5,enabledIf:e=>e.config?.deduplicate===!0?{disabled:!1}:{disabled:!0,message:`Enable “Unique rows only” to use this.`}})})}),sY=class extends I{effectId=iY;schema=oY;payload;billableOperations=aY;constructor(e){super(),this.payload=this.validatePayload(e)}getSearch(){let e=this.payload.config.search_payload;if(!e?.search_id)return null;try{return rY(e)}catch{return null}}getConnectionsRequirements(){return[]}getProviderNames(){let e=this.getSearch();return e?[AG(e.searchId).provider]:[]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}producesDynamicFields(){let e=this.getSearch();return e?(AG(e.searchId).outputFieldMode??`static`)===`dynamic`:!1}evolveSchema(e){let t=this.getSearch();if(!t||(AG(t.searchId).outputFieldMode??`static`)===`dynamic`)return{next:e};let n=e.validationContext.fieldAnnotations.merge(t.getStaticFieldDefinitions(),!1,{appendOrders:!0});return nd(CK({config:{environment:e.environment},pipes:e.pipes,field_annotations:n.annotations}),e.environment)}},cY=oY,lY={effectId:iY,baseEffect:L(iY),label:`Search`,description:`Run a search and append the results to the sheet.`,categories:[`enrichment`],tags:[V.NEW],keywords:[`find`,`import`,`source`,`prospect`,`add rows`,`results`],lifecycle:null,billableOperations:aY,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`visible`,defaultPayload:{effect_id:iY,connector:null,config:{search_payload:{search_id:``},max_number_of_results:1e3,deduplicate:!0,stop_at_unique_rows_count:null}}},uY=`sheet:export@1`,dY={},fY=r.object({effect_id:r.literal(uY),connector:eu(),config:r.object({selection:lu({path:`config.selection`,sectionKey:`general`,groupPath:`config.general`,label:`Selection`,description:`Rows to export as JSON — {"type":"all"} or {"type":"rows","record_ids":["…"]}.`,placeholder:`{"type":"all"}`},`both`)})}),pY=class extends I{effectId=uY;schema=fY;payload;billableOperations=dY;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}},mY=fY,hY={effectId:uY,baseEffect:L(uY),label:`Export sheet`,description:`Export the selected rows to a CSV download.`,categories:[`internal`],tags:[],keywords:[`csv`,`download`,`excel`,`spreadsheet`,`file`],lifecycle:null,billableOperations:dY,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`both`,lockingMode:`shared`,lockScope:`self`,catalogVisibility:`hidden`,defaultPayload:{effect_id:uY,connector:null,config:{}}},gY=`sheet:reset@1`,_Y={},vY=r.object({effect_id:r.literal(gY),connector:eu(),config:r.object({})}),yY=class extends I{effectId=gY;schema=vY;payload;billableOperations=_Y;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}evolveSchema(e){let t=CK({config:{environment:e.environment},pipes:[],field_annotations:{}});return{next:{environment:e.environment,pipes:[],fieldAnnotations:{},validationContext:t}}}},bY=vY,xY={effectId:gY,baseEffect:L(gY),label:`Reset sheet`,description:`Reset the sheet to its initial state — remove all pipes, fields, and rows. This cannot be partially applied.`,categories:[`data_hygiene`],tags:[],keywords:[`clear`,`wipe`,`empty`,`start over`,`delete all`],lifecycle:null,billableOperations:_Y,shouldUpgradeSchema:!0,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`visible`,defaultPayload:{effect_id:gY,connector:null,config:{}}},SY=`timetravel:create@1`,CY={},wY=r.object({effect_id:r.literal(SY),connector:eu(),config:r.object({})}),TY=class extends I{effectId=SY;schema=wY;payload;billableOperations=CY;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}},EY=wY,DY={effectId:SY,baseEffect:L(SY),label:`Create restore point`,description:`Snapshot the current sheet state as a timetravel restore point.`,categories:[`internal`],tags:[],lifecycle:null,billableOperations:CY,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,shouldUpgradeSchema:!0,catalogVisibility:`hidden`,defaultPayload:{effect_id:SY,connector:null,config:{}}},OY=`timetravel:travel@1`,kY={},AY=r.object({effect_id:r.literal(OY),connector:eu(),config:r.object({schema_id:r.string().min(1)})}),jY=class extends I{effectId=OY;schema=AY;payload;billableOperations=kY;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return[]}getProviderNames(){return[`pipe0`]}estimateBillableOperations(){return[]}getFieldReferences(){return[]}producesDynamicFields(){return!0}},MY=AY,NY={effectId:OY,baseEffect:L(OY),label:`Restore to point`,description:`Restore the sheet to a previous point by copying that point's rows into a new schema.`,categories:[`internal`],tags:[],lifecycle:null,billableOperations:kY,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],selectionMode:`sheet`,lockingMode:`exclusive`,lockScope:`sheet`,catalogVisibility:`hidden`,defaultPayload:{effect_id:OY,connector:null,config:{schema_id:``}}},PY=r.object({reason:r.object({code:r.string(),details:r.string().optional()}),related_record_id:r.string().nullable(),resolved_by:r.object({ref:Tt,config_hash:r.string()})}),FY=r.object({value:r.union([r.string(),r.number(),r.boolean(),r.null()])}),IY=PY.extend({fields:r.record(r.string(),FY)}),LY=r.object({added:PY.optional(),updated:IY.optional(),removed:PY.optional()}),RY=r.record(r.string(),LY),zY=r.object({shown:r.number().int(),total:r.number().int(),added:r.number().int(),updated:r.number().int(),removed:r.number().int()}),BY=r.object({effect_id:Tt,config_hash:r.string(),status:r.enum([`completed`,`failed`,`skipped`]),error:r.string().optional(),source:r.literal(`run_added_rows`).optional()}),VY={"rows:dedupe@1":_J,"rows:duplicate@1":CJ,"rows:enrich@1":kJ,"rows:adopt@1":aJ,"rows:add@1":Jq,"rows:import@1":HJ,"row:update@1":Hq,"rows:remove@1":JJ,"rows:removeempty@1":eY,"rows:copy_to_sheet@1":dJ,"rows:filter:prompt@1":IJ,"pipe:add@1":wq,"pipe:update@1":Iq,"pipe:remove@1":Aq,"fields:remove@1":vq,"fields:patch@1":fq,"fields:duplicate@1":JK,"fields:add@1":PK,"fields:order:reset@1":eq,"fields:deletesparse:input@1":BK,"env:change@1":sd,"timetravel:create@1":TY,"timetravel:travel@1":jY,"sheet:export@1":pY,"search:run@1":sY,"sheet:reset@1":yY},HY={"rows:dedupe@1":vJ,"rows:duplicate@1":wJ,"rows:enrich@1":AJ,"rows:adopt@1":oJ,"rows:add@1":Yq,"rows:import@1":UJ,"row:update@1":Uq,"rows:remove@1":YJ,"rows:removeempty@1":tY,"rows:copy_to_sheet@1":fJ,"rows:filter:prompt@1":LJ,"pipe:add@1":Tq,"pipe:update@1":Lq,"pipe:remove@1":jq,"fields:remove@1":yq,"fields:patch@1":pq,"fields:duplicate@1":YK,"fields:add@1":FK,"fields:order:reset@1":tq,"fields:deletesparse:input@1":VK,"env:change@1":cd,"timetravel:create@1":EY,"timetravel:travel@1":MY,"sheet:export@1":mY,"search:run@1":cY,"sheet:reset@1":bY},UY={"rows:dedupe@1":yJ,"rows:duplicate@1":TJ,"rows:enrich@1":jJ,"rows:adopt@1":sJ,"rows:add@1":Xq,"rows:import@1":WJ,"row:update@1":Wq,"rows:remove@1":XJ,"rows:removeempty@1":nY,"rows:copy_to_sheet@1":pJ,"rows:filter:prompt@1":RJ,"pipe:add@1":Eq,"pipe:update@1":Rq,"pipe:remove@1":Mq,"fields:remove@1":bq,"fields:patch@1":mq,"fields:duplicate@1":XK,"fields:add@1":IK,"fields:order:reset@1":nq,"fields:deletesparse:input@1":HK,"env:change@1":ld,"timetravel:create@1":DY,"timetravel:travel@1":NY,"sheet:export@1":hY,"search:run@1":lY,"sheet:reset@1":xY};function WY(e){return VY[e]}function GY(e){return UY[e]}function KY(e){return HY[e]}function qY(){return Object.keys(UY).filter(e=>UY[e].agentExposure!==`excluded`)}function JY(e){return UY[e]?.agentExposure!==`excluded`}const YY=t.discriminatedUnion(`effect_id`,Object.values(HY).map(e=>e)).openapi(`EffectPayloadSchema`);function XY(e,t){return Vt(t,UY[e].defaultPayload)}const ZY=t.preprocess(e=>{if(!e||typeof e!=`object`||!(`effect_id`in e))return e;let t=UY[e.effect_id];return t?.defaultPayload?{...e,config:Vt(e?.config||{},t.defaultPayload.config)}:e},YY),QY=t.object({diff:t.object({limit:t.number().int().min(0).max(1e3).default(100).openapi({description:"How many per-record diff entries to keep on the result. `counts` stays exact regardless."})}).optional(),run_added_rows:t.boolean().optional().openapi({description:`When true, after this run's effects complete, run the sheet's pipes over exactly the rows the run appended (the contiguous tail). Off by default. Durable on schedules: a scheduled chain that adds rows then enriches them on every fire.`})}),$Y=t.object({config:QY.optional(),effects:t.array(ZY).min(1)}).openapi(`EffectsRequest`),eX=t.object({id:t.string(),status:Bt,effects:t.array(BY),counts:zY.nullable(),diff:RY.nullable(),after_schema_id:t.string().nullable(),before_schema_id:t.string().nullable(),added:t.object({cursor:t.string().nullable(),count:t.number().int()}).nullable().openapi({description:'Present when the run appended rows. `cursor` is the exclusive window cursor isolating exactly the added tail — pass it to a `rows:enrich@1` `{type:"window", cursor, count:null}` selection to run the sheet\'s pipes over the added rows. `count` is how many added rows survive.'})}).openapi(`EffectsResponse`),tX=t.object({effects:t.array(t.unknown()).min(1)}).openapi(`EffectsValidateRequest`),nX=t.object({index:t.number().int(),effect_id:Tt,valid:t.boolean(),errors:t.array(t.string())}).openapi(`EffectsValidateStep`),rX=t.object({valid:t.boolean(),errors:t.array(t.string()),steps:t.array(nX).optional()}).openapi(`EffectsValidateResponse`);function iX(e){let t=e.split(`@`)[1];if(!t)throw Error(`No effect version found`);return Number(t)}function aX(){let e={};for(let t of Object.values(UY)){let{baseEffect:n}=t;e[n]??=[],e[n].push(t)}return Object.entries(e).forEach(([t,n])=>{e[t]=n.sort((e,t)=>{let n=iX(e.effectId);return iX(t.effectId)-n})}),e}const oX=aX();function sX(){let e=[];for(let[t,n]of Object.entries(oX)){let r=n[0];if(!r)throw Error(`Found empty entry`);r.lifecycle?.deprecatedOn||r.catalogVisibility!==`hidden`&&e.push({...r,baseEffect:t,latestVersion:iX(r.effectId)})}return e}const cX=[...wt,...St];function lX(e,t){let n=Array.from({length:t.length+1},(e,t)=>t);for(let r=1;r<=e.length;r++){let i=[r];for(let a=1;a<=t.length;a++)i[a]=Math.min((n[a]??0)+1,(i[a-1]??0)+1,(n[a-1]??0)+(e[r-1]===t[a-1]?0:1));n=i}return n[t.length]??0}function uX(e){let t=null,n=1/0;for(let r of cX){let i=lX(e,r);i<n&&(n=i,t=r)}return t&&n<=Math.max(3,Math.floor(e.length/3))?t:null}function dX(e){let t=[];return e.forEach((e,n)=>{if(!e||typeof e!=`object`){t.push(`effects[${n}] must be an object like { effect_id: "...", config: {...} }.`);return}let r=e.effect_id;if(typeof r!=`string`||r.length===0){t.push(`effects[${n}] is missing "effect_id" — every effect needs one (e.g. "rows:add@1"). Use list_effects / get_effect_schema for the catalog.`);return}if(!cX.includes(r)){let e=uX(r);t.push(`effects[${n}]: unknown effect_id "${r}".${e?` Did you mean "${e}"?`:``} Use list_effects to find valid ids — never invent one.`)}}),t}function fX(e){let t=dX(e);if(t.length>0)return{ok:!1,errors:t};let n=[],i=[];return e.forEach((e,t)=>{let a=e.effect_id;if(!wt.includes(a)){n.push(`effects[${t}] ("${a}") is a REPORT effect — report chains must not be mixed into a sheet chain.`);return}let o=a,s=UY[o],c=s?.defaultPayload?{...e,config:Vt(e.config||{},s.defaultPayload.config)}:e,l=KY(o).safeParse(c);if(!l.success){n.push(`effects[${t}] (${a}): ${r.prettifyError(l.error)}`);return}i.push(l.data)}),n.length>0?{ok:!1,errors:n}:{ok:!0,chain:i}}function pX(e){let t=e.normalize(`NFD`).replace(/[\u0300-\u036f]/g,``).replace(/[^A-Za-z0-9]+/g,`_`).replace(/^_+|_+$/g,``);return t===``?`column`:/^[0-9]/.test(t)?`_${t}`:t}function mX(e){let t=new Set;return e.map(e=>{let n=e,r=2;for(;t.has(n);)n=`${e}_${r}`,r++;return t.add(n),n})}function hX(e){let t=mX(e.map(pX));return e.map((e,n)=>({name:t[n],label:e}))}const gX={completed:`Completed`,failed:`Failed`,no_result:`No result`,pending:`Pending`,processing:`Processing`,queued:`Queued`,skipped:`Skipped`};function _X(e){return gX[e]}const vX=`bachelor.master.mba.phd.ph d.doctor.associate.diploma.b sc.bsc.m sc.msc.b a.m a.b tech.btech.m tech.mtech.b eng.m eng.b com.llb.llm.md.jd.undergraduate.postgraduate.graduate.degree`.split(`.`),yX=[`university`,`college`,`institute of technology`,`polytechnic`,`school of`],bX=e=>` ${e.toLowerCase().replace(/[^a-z ]+/g,` `).replace(/\s+/g,` `).trim()} `,xX=(e,t)=>{if(!e)return!1;let n=bX(e);return t.some(e=>n.includes(` ${e} `))};function SX(e){return xX(e.degree_name,vX)?!0:e.degree_name?!1:xX(e.institution_name,yX)}function CX(e){if(!e.start_date)return 1/0;let t=l(e.start_date);return Number.isNaN(t.getTime())?1/0:t.getTime()}function wX(e){let t=e.education_history.filter(e=>e.is_current_education===!0&&SX(e)),n=null;for(let e of t)(n===null||CX(e)<CX(n))&&(n=e);return{...e,education_history:e.education_history.map(e=>({...e,is_primary_current_education:e===n}))}}function TX(e){let t=e.employment_history.find(e=>e.is_primary_current_employer===!0)??e.employment_history.find(e=>e.is_current_employer===!0)??null;return{...e,primary_job_title:t?.job_title??null,primary_company_domain:t?.company_domain??null}}function EX(e,t,n=new Date){if(!e)return{days:null,years:null};let r=l(e);if(Number.isNaN(r.getTime()))return{days:null,years:null};let i=n;if(t){let e=l(t);Number.isNaN(e.getTime())||(i=e)}let a=o(i,r);return a<0?{days:null,years:null}:{days:a,years:Math.round(a/365.25*100)/100}}const DX={shared:{}},OX={shared:{paths:{"config.cursor":null,"config.offset":null,"config.page_number":null}}},kX={shared:{}};function AX(e,t){let n=e[t];return{sectionMap:{...e.shared.sections,...n?.sections},groupMap:{...e.shared.groups,...n?.groups},pathMap:{...e.shared.paths,...n?.paths}}}const jX=e=>AX(DX,e),MX=e=>AX(OX,e),NX=e=>AX(kX,e),PX={"config.prompt":{order:1,label:`Prompt`,iconKey:`sparkles`,defaultExpand:!0},"config.general":{order:0,label:`General`,iconKey:`mix`,defaultExpand:!0},"config.advanced":{order:0,label:`Advanced`,iconKey:`sliders`,defaultExpand:!0},"config.bucket_creation":{order:1,label:`Bucket creation`,description:`Applied when the bucket is created on first write; ignored if it already exists.`,iconKey:`sliders`,defaultExpand:!1},"config.input_fields":{order:0,label:`Input config`,description:`Point pipe inputs to new fields.`,iconKey:`input`,defaultExpand:!1},connector:{order:100,label:`Connections`,iconKey:`plug`,defaultExpand:!1},"config.extraction":{order:0,label:`Extraction`,iconKey:`code`,defaultExpand:!0},run_if:{order:99,label:`Run IF`,iconKey:`workflow`,defaultExpand:!1},"config.email":{order:3,label:`Email`,iconKey:`mail`,defaultExpand:!0},"config.json_extraction":{order:1,label:`Extract fields`,iconKey:`braces`,defaultExpand:!0},"config.providers":{order:1,label:`Providers`,iconKey:`tags`,defaultExpand:!0},"config.output_fields":{order:10,label:`Output config`,description:`Toggle or rename output fields.`,iconKey:`output`,defaultExpand:!1},"config.destination":{order:9,label:`Destination`,description:`Name, type, and format of the field written to the destination sheet.`,iconKey:`output`,defaultExpand:!1}},FX={general:{path:`general`,label:`Behavior`,description:`How this pipe runs and selects providers.`,order:1},pagination:{path:`pagination`,label:`Behavior`,order:2},"config.filters":{path:`config.filters`,label:`I/O & conditions`,order:14},pipe_io:{path:``,label:`I/O & conditions`,order:99}},IX=new Set([`context_select_input`,`tagged_text_input`,`condition_block_input`,`field_select_input`,`fields_select_input`,`typed_fields_select_input`,`property_list_input`]);function LX(e){let t=HG(e),n=[];function i(e){e?.type&&IX.has(e.type)&&e.optionsDef&&n.push(e)}function a(e){let t=v.get(e);if(t&&typeof t!=`function`?i(t):typeof t==`function`&&i(t.staticMeta),typeof e==`object`&&e&&`unwrap`in e&&typeof e.unwrap==`function`&&a(e.unwrap()),e instanceof r.ZodObject)for(let t of Object.values(e.shape))a(t)}return a(t),n}function RX({pipePayload:e,validationContext:t,store:n,formResolvers:r,customization:i}){let a=HG(e.pipe_id),o=Sd(e.pipe_id,e.config||{});return Hl({schema:a,extractFromSchema:r=>{let i=v.get(r);if(n.field_options??={},i)return i&&typeof i==`function`?i({validationContext:t,pipePayload:e,userConnections:`connections`in n.field_options?(n.field_options.connections.options||[]).map(e=>{let t=e.widgets?.provider_logo?.provider;if(!t)throw Error(`Option is missing provider type'`);return{public_id:e.value,provider:t,is_default:e.data?.is_default===`true`,ownership_level:e.data?.ownership_level||void 0}}):[],pipeEntry:GG(e.pipe_id),hash:o}):i},store:n,formResolvers:r,sectionMap:Bl(FX,i?.sectionMap),groupMap:Bl(PX,i?.groupMap),pathMap:i?.pathMap})}const zX={"config.pagination":{order:-1,label:`Pagination`,iconKey:`list`,defaultExpand:!0},"config.dates":{order:1,label:`Dates`,iconKey:`calendar`,defaultExpand:!1},"config.counts":{order:1,label:`Ownership counts`,iconKey:`user`,defaultExpand:!0},"config.prompt":{order:1,label:`Prompt`,iconKey:`sparkles`,defaultExpand:!0},"config.general":{order:0,label:`General`,iconKey:`mix`,defaultExpand:!0},"config.advanced":{order:0,label:`Advanced`,iconKey:`sliders`,defaultExpand:!0},"config.continue_existing_search":{order:0,label:`Continue existing search`,iconKey:`history`,defaultExpand:!1},"config.output_fields":{order:10,label:`Outputs`,iconKey:`output`,defaultExpand:!1},"config.filters.query":{order:2,label:`Query`,iconKey:`text`,defaultExpand:!0},"config.filters.personal_information":{label:`Personal information`,order:6,iconKey:`user`,defaultExpand:!1},"config.filters.job_information":{label:`Job information`,order:6,iconKey:`job`,defaultExpand:!1},"config.filters.company_information":{order:1,label:`Company information`,iconKey:`office`,defaultExpand:!1},"config.filters.education":{label:`Education`,iconKey:`school`,defaultExpand:!1,order:4},"config.filters.geografic":{label:`Location`,iconKey:`location`,defaultExpand:!1},"config.filters.location":{label:`Location`,iconKey:`location`,defaultExpand:!1},"config.filters.general":{label:`General`,iconKey:`filter`,defaultExpand:!1,order:1},"config.filters.author":{label:`Author`,iconKey:`user`,defaultExpand:!1,order:2},"config.filters.mentions":{label:`Mentions`,iconKey:`tags`,defaultExpand:!1,order:3},"config.filters.job_openings":{label:`Job openings`,iconKey:`calendar`,defaultExpand:!1},"config.filters.website":{label:`Website`,iconKey:`web`,defaultExpand:!1},"config.filters.web_presence":{label:`Web presence`,iconKey:`web`,defaultExpand:!1},"config.filters.keywords":{label:`Keywords`,iconKey:`tags`,defaultExpand:!1},"config.filters.competitors":{label:`Competitors`,iconKey:`cometition`,defaultExpand:!1},"config.filters.categories":{label:`Categories`,iconKey:`boxes`,defaultExpand:!1},"config.filters.investors":{label:`Investors`,iconKey:`handshake`,defaultExpand:!1},"config.filters.account_activities":{label:`Account Activities`,iconKey:`activity`,defaultExpand:!1},"config.filters.financials":{label:`Financials`,iconKey:`chart`,defaultExpand:!1},"config.filters.languages":{label:`Languages`,iconKey:`language`,defaultExpand:!1},"config.filters.company_size":{label:`Company size`,iconKey:`office`,defaultExpand:!1},"config.filters.company":{label:`Company`,iconKey:`office`,defaultExpand:!1},"config.filters.status":{label:`Status`,iconKey:`activity`,defaultExpand:!1},"config.filters.technology":{label:`Technology`,iconKey:`code`,defaultExpand:!1},"config.filters.linkedin":{label:`LinkedIn`,iconKey:`linkedin`,defaultExpand:!1},"config.filters.skills":{label:`Skills`,iconKey:`brain`,defaultExpand:!1},"config.filters.activities":{label:`Activities`,iconKey:`bolt`,defaultExpand:!1},"config.filters.certifications_honors":{label:`Certifications & honors`,iconKey:`award`,defaultExpand:!1},"config.filters.profile":{label:`Profile`,iconKey:`contact`,defaultExpand:!1},"config.filters.experience":{label:`Employment history`,iconKey:`history`,defaultExpand:!1,order:3},"config.filters.current_employer":{label:`Current employment`,iconKey:`briefcase`,defaultExpand:!1,order:2},"config.filters.current_company":{label:`Current Company`,iconKey:`office`,defaultExpand:!1},"config.filters.industry":{label:`Industries`,iconKey:`factory`,defaultExpand:!1},"config.filters.general_search":{label:`General search`,iconKey:`search`,defaultExpand:!1},connector:{order:100,label:`Connections`,iconKey:`plug`,defaultExpand:!1}},BX={general:{path:`general`,label:`General`,description:`Search settings and pagination.`,order:1},pagination:{path:`pagination`,label:`General`,order:2},"config.filters":{path:`config.filters`,label:`Filters`,description:`Narrow the search results.`,order:10},pipe_io:{path:``,label:`Output fields`,order:99}};function VX({searchPayload:e,formContext:t,formResolvers:n,customization:r}){return Hl({schema:TG(e.search_id),extractFromSchema:n=>{let r=y.get(n);if(t.field_options??={},r)return typeof r==`function`?r({searchPayload:e,searchEntry:AG(e.search_id),userConnections:`connections`in t.field_options?(t.field_options.connections.options||[]).map(e=>{let t=e.widgets?.provider_logo?.provider;if(!t)throw Error(`Option is missing provider type`);return{public_id:e.value,provider:t,is_default:e.data?.is_default===`true`,ownership_level:e.data?.ownership_level||void 0}}):[]}):r},store:t,formResolvers:n,sectionMap:Bl(BX,r?.sectionMap),groupMap:Bl(zX,r?.groupMap),pathMap:r?.pathMap})}function HX(e){let t=TG(e),n=[];function i(e){let t=y.get(e);if(t&&typeof t!=`function`&&(t.type===`context_select_input`||t.type===`property_list_input`)&&t.optionsDef&&n.push(t),typeof e==`object`&&e&&`unwrap`in e&&typeof e.unwrap==`function`&&i(e.unwrap()),e instanceof r.ZodObject)for(let t of Object.values(e.shape))i(t)}return i(t),n}const UX={"config.general":{order:0,label:`General`,iconKey:`mix`,defaultExpand:!0},"config.advanced":{order:1,label:`Advanced`,iconKey:`sliders`,defaultExpand:!0},connector:{order:100,label:`Connections`,iconKey:`plug`,defaultExpand:!1}},WX={general:{path:`general`,label:`General`,description:`How this effect runs.`,order:1},pagination:{path:`pagination`,label:`General`,order:99},"config.filters":{path:`config.filters`,label:`Filters`,order:99},pipe_io:{path:``,label:`Connections`,order:99}};function GX({effectPayload:e,validationContext:t,store:n,formResolvers:r,customization:i}){let a=KY(e.effect_id),o=rd(e.effect_id,e.config||{});return Hl({schema:a,extractFromSchema:r=>{let i=nl.get(r);if(n.field_options??={},i)return typeof i==`function`?i({validationContext:t,effectPayload:e,userConnections:`connections`in n.field_options?(n.field_options.connections.options||[]).map(e=>{let t=e.widgets?.provider_logo?.provider;if(!t)throw Error(`Option is missing provider type`);return{public_id:e.value,provider:t,is_default:e.data?.is_default===`true`,ownership_level:e.data?.ownership_level||void 0}}):[],effectEntry:GY(e.effect_id),hash:o}):i},store:n,formResolvers:r,sectionMap:Bl(WX,i?.sectionMap),groupMap:Bl(UX,i?.groupMap),pathMap:i?.pathMap})}function KX(e){let t=KY(e),n=[];function i(e){let t=nl.get(e);if(t&&typeof t!=`function`&&(t.type===`context_select_input`||t.type===`property_list_input`)&&t.optionsDef&&n.push(t),typeof e==`object`&&e&&`unwrap`in e&&typeof e.unwrap==`function`&&i(e.unwrap()),e instanceof r.ZodObject)for(let t of Object.values(e.shape))i(t)}return i(t),n}const qX=new Proxy({},{get:(e,t)=>e=>e.type===t}),JX=`school.user.location.language.brain.book.web.plug.money.office.job.search.output.input.mix.bill.linkedin.text.workflow.letter.source.activity.boxes.cometition.bolt.star.scholar.briefcase.history.sparkles.list.sliders.factory.award.tags.handshake.contact.mail.calendar.chart.code.braces.filter`.split(`.`),YX=r.enum(JX),XX=r.object({provider_logo:r.object({provider:No}).optional(),emoji:r.object({char:r.string()}).optional(),icon:r.object({key:YX}).optional(),logo_url:r.object({url:r.string(),alt:r.string().optional()}).optional(),pricing:r.object({credits:r.number()}).optional(),token_pricing:r.object({inputPerBlock:r.number(),outputPerBlock:r.number(),blockSize:r.number()}).optional(),field_type:r.object({type:r.string(),format:r.string().optional()}).optional()}),ZX=`providers_input.fields_select_input.json_extraction_input.pipes_run_if_input.connector_input.include_exclude_input.include_exclude_select_input.exact_range_input.range_input.date_range_input.boolean_input.nullable_boolean_input.text_input.template_input.output_field_input.textarea_input.prompt_input.select_input.context_select_input.multi_select_input.min_max_int_input.async_multi_select_input.async_include_exclude_select_input.multi_create_input.property_list_input.ordered_multi_create_input.tagged_ordered_multi_create_input.int_input.number_input.json_schema_input`.split(`.`);r.enum(ZX);const QX=r.object({value:r.string(),label:r.string(),widgets:XX.optional(),data:r.record(r.string(),r.string()).optional()}),$X=r.object({field_options:r.record(r.string(),r.object({options:r.array(QX)}))}),eZ=[{id:`people_data`,label:`People`,color:`#8B7DFF`,order:0},{id:`find_people`,label:`Find People`,color:`#A78BFA`,order:1},{id:`company_data`,label:`Company`,color:`#10B981`,order:2},{id:`find_comapnies`,label:`Find Companies`,color:`#34D399`,order:3},{id:`tools`,label:`Tools`,color:`#EAB308`,order:4},{id:`integrations`,label:`Integrations`,color:`#06B6D4`,order:5},{id:`actions`,label:`Actions`,color:`#F97316`,order:6},{id:`deprecated`,label:`Deprecated`,color:`#94A3B8`,order:7}],tZ=new Map(eZ.map(e=>[e.id,e]));function nZ(e){return tZ.get(e)}function rZ(){return eZ}const iZ={"company:funding:leadmagic@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:funding:leadmagic@1`}],input:[{id:`1`,company_website_url:`https://pipe0.com`}]}],"company:funding:leadmagic@2":[{config:{environment:`production`},pipes:[{pipe_id:`company:funding:leadmagic@2`}],input:[{id:`1`,company_domain:`pipe0.com`}]}],"company:funding:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:funding:waterfall@1`}],input:[{id:`1`,company_domain:`retool.com`}]}],"company:identity@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:identity@1`}],input:[{id:`1`,company_name:`Pipe0`}]}],"company:identity@2":[{config:{environment:`production`},pipes:[{pipe_id:`company:identity@2`,config:{}}],input:[{id:`1`,company_name:`Pipe0`}]}],"company:identity@3":[{config:{environment:`production`},pipes:[{pipe_id:`company:identity@3`,config:{}}],input:[{id:`1`,company_name:`Pipe0`}]}],"company:overview@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:overview@1`}],input:[{id:`1`,company_website_url:`Pipe0`}]}],"people:phone:workemail:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:phone:workemail:waterfall@1`}],input:[{id:`1`,work_email:`jane@pipe0.com`}]}],"person:mobile:workemail:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:mobile:workemail:waterfall@1`}],input:[{id:`1`,work_email:`jane@pipe0.com`}]}],"people:workemail:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:workemail:waterfall@1`}],input:[{id:`1`,name:`John Doe`,company_website_url:`https://pipe0.com`}]}],"person:workemail:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:workemail:waterfall@1`}],input:[{id:`1`,name:`John Doe`,company_domain:`pipe0.com`}]}],"company:techstack:builtwith@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:techstack:builtwith@1`}],input:[{id:`1`,company_website_url:`https://pipe0.com`}]}],"company:techstack:builtwith@2":[{config:{environment:`production`},pipes:[{pipe_id:`company:techstack:builtwith@2`}],input:[{id:`1`,company_domain:`pipe0.com`}]}],"agent:run@1":[{config:{environment:`production`},pipes:[{pipe_id:`agent:run@1`,config:{agent_type:`web_researcher`,model:Bc,prompt:{template:`
|
|
88
88
|
Determine if the company {{ company_name }} (domain: {{ company_domain | default: "" }}) has ever raised outside funding.
|
|
89
89
|
|
|
90
90
|
Research the web for funding announcements, press releases, and investor databases before answering.
|
|
@@ -92,7 +92,7 @@ return new Date(Date.now() - days * 86400000).toISOString().slice(0, 10);`}),for
|
|
|
92
92
|
{% output has_raised_funding, type: "boolean", description: "True if the company has ever raised outside capital" %}
|
|
93
93
|
|
|
94
94
|
{% output funding_summary, type: "string", description: "A short summary of the funding history, including round names and source URLs" %}
|
|
95
|
-
`,json_schemas:{}}}}],input:[{id:`1`,company_name:`Anthropic`,company_domain:`anthropic.com`},{id:`2`,company_name:`Basecamp`}]}],"prompt:run@1":[{config:{environment:`production`},pipes:[{pipe_id:`prompt:run@1`,config:{model:
|
|
95
|
+
`,json_schemas:{}}}}],input:[{id:`1`,company_name:`Anthropic`,company_domain:`anthropic.com`},{id:`2`,company_name:`Basecamp`}]}],"prompt:run@1":[{config:{environment:`production`},pipes:[{pipe_id:`prompt:run@1`,config:{model:Bc,prompt:{template:`
|
|
96
96
|
Tell me if {{ name }} fits the ICP criteria for my company <YOUR_COMPANY_NAME>.
|
|
97
97
|
|
|
98
98
|
My company, <YOUR_COMPANY_NAME>, can be described as follows: <ADD_COMPANY_DESCRIPTION>.
|
|
@@ -110,7 +110,7 @@ return new Date(Date.now() - days * 86400000).toISOString().slice(0, 10);`}),for
|
|
|
110
110
|
{% output reason, type: "string", description: "A text explanation of your decision process" %}
|
|
111
111
|
|
|
112
112
|
{% output json_summary, type: "json", schema: "summary", description: "A JSON object that combines both fields" %}
|
|
113
|
-
`,json_schemas:{summary:{type:`object`,properties:{is_icp_fit:{type:`boolean`,description:`A boolean flag indicating if the user is a good ICP fit for us`},reason:{type:`string`,description:`A text explanation of the decision process`}},required:[`is_icp_fit`,`reason`]}}}}}],input:[{id:`1`,name:`John Doe`,job_title:`Founder`},{id:`2`,name:`Jane Doe`,job_title:`CTO`,profile_headline:`CTO for a big tech company.`}]}],"people:email:iswork@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:email:iswork@1`}],input:[{id:`1`,email:`john@pipe0.com`}]}],"email:iswork@1":[{config:{environment:`production`},pipes:[{pipe_id:`email:iswork@1`}],input:[{id:`1`,email:`john@pipe0.com`}]}],"people:name:split@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:name:split@1`}],input:[{id:`1`,name:`John Doe`}]}],"person:name:split@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:name:split@1`}],input:[{id:`1`,name:`John Doe`}]}],"person:name:join@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:name:join@1`}],input:[{id:`1`,first_name:`John`,last_name:`Doe`}]}],"people:personalemail:profile:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:personalemail:profile:waterfall@1`}],input:[{id:`1`,profile_url:`https://linkedin.com/in/jane-doe-uth6-dk`}]}],"person:personalemail:profileurl:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:personalemail:profileurl:waterfall@1`}],input:[{id:`1`,profile_url:`https://linkedin.com/in/jane-doe-uth6-dk`}]}],"people:email:validate:zerobounce@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:email:validate:zerobounce@1`}],input:[{id:`1`,work_email:`jane@pipe0.com`}]}],"people:email:validate:zerobounce@2":[{config:{environment:`production`},pipes:[{pipe_id:`people:email:validate:zerobounce@2`}],input:[{id:`1`,email:`jane@pipe0.com`}]}],"email:validate:zerobounce@1":[{config:{environment:`production`},pipes:[{pipe_id:`email:validate:zerobounce@1`}],input:[{id:`1`,email:`jane@pipe0.com`}]}],"people:phone:profile:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:phone:profile:waterfall@1`}],input:[{id:`1`,profile_url:`https://linkedin.com/li/jane-doe-456j`}]}],"person:mobile:profileurl:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:mobile:profileurl:waterfall@1`}],input:[{id:`1`,profile_url:`https://linkedin.com/li/jane-doe-456j`}]}],"person:devprofileurl:profileurl:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:devprofileurl:profileurl:waterfall@1`}],input:[{id:`1`,profile_url:`https://linkedin.com/li/jane-doe-456j`}]}],"people:profile:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:profile:waterfall@1`}],input:[{id:`1`,profile_url:`https://linkedin.com/li/jane-doe-456j`}]}],"person:profile:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:profile:waterfall@1`}],input:[{id:`1`,profile_url:`https://linkedin.com/li/jane-doe-456j`}]}],"person:profile:waterfall@2":[{config:{environment:`production`},pipes:[{pipe_id:`person:profile:waterfall@2`}],input:[{id:`1`,profile_url:`https://www.linkedin.com/in/jane-doe-456j`}]}],"company:newssummary:website@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:newssummary:website@1`,config:{}}],input:[{id:`1`,company_website_url:`https://pipe0.com`}]}],"company:newssummary:domain@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:newssummary:domain@1`,config:{}}],input:[{id:`1`,company_domain:`pipe0.com`}]}],"company:websiteurl:email@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:websiteurl:email@1`}],input:[{id:`1`,email:`https://pipe0.com`}]}],"company:domain:workemail@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:domain:workemail@1`}],input:[{id:`1`,email:`john@pipe0.com`}]}],"json:extract:multi@1":[{config:{environment:`production`},pipes:[{pipe_id:`json:extract:multi@1`,config:{json_extraction:{field_name:`example_json`,extractions:[{path:`name`,output_field:{format:null,name:`extracted_name`,label:`Simple Example Using Jsonata Path`,type:`string`}},{path:`{ "fullName": name, "count": $count(nested) }`,output_field:{format:null,name:`reshaped_object`,label:`Complex Transformation Using Jasonata`,type:`json`}}]}}}],input:[{id:`1`,example_json:{name:`John Doe`,nested:[1,2,3]}}]}],"message:write@1":[{config:{environment:`production`},pipes:[{pipe_id:`message:write@1`,config:{model:
|
|
113
|
+
`,json_schemas:{summary:{type:`object`,properties:{is_icp_fit:{type:`boolean`,description:`A boolean flag indicating if the user is a good ICP fit for us`},reason:{type:`string`,description:`A text explanation of the decision process`}},required:[`is_icp_fit`,`reason`]}}}}}],input:[{id:`1`,name:`John Doe`,job_title:`Founder`},{id:`2`,name:`Jane Doe`,job_title:`CTO`,profile_headline:`CTO for a big tech company.`}]}],"people:email:iswork@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:email:iswork@1`}],input:[{id:`1`,email:`john@pipe0.com`}]}],"email:iswork@1":[{config:{environment:`production`},pipes:[{pipe_id:`email:iswork@1`}],input:[{id:`1`,email:`john@pipe0.com`}]}],"people:name:split@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:name:split@1`}],input:[{id:`1`,name:`John Doe`}]}],"person:name:split@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:name:split@1`}],input:[{id:`1`,name:`John Doe`}]}],"person:name:join@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:name:join@1`}],input:[{id:`1`,first_name:`John`,last_name:`Doe`}]}],"people:personalemail:profile:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:personalemail:profile:waterfall@1`}],input:[{id:`1`,profile_url:`https://linkedin.com/in/jane-doe-uth6-dk`}]}],"person:personalemail:profileurl:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:personalemail:profileurl:waterfall@1`}],input:[{id:`1`,profile_url:`https://linkedin.com/in/jane-doe-uth6-dk`}]}],"people:email:validate:zerobounce@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:email:validate:zerobounce@1`}],input:[{id:`1`,work_email:`jane@pipe0.com`}]}],"people:email:validate:zerobounce@2":[{config:{environment:`production`},pipes:[{pipe_id:`people:email:validate:zerobounce@2`}],input:[{id:`1`,email:`jane@pipe0.com`}]}],"email:validate:zerobounce@1":[{config:{environment:`production`},pipes:[{pipe_id:`email:validate:zerobounce@1`}],input:[{id:`1`,email:`jane@pipe0.com`}]}],"people:phone:profile:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:phone:profile:waterfall@1`}],input:[{id:`1`,profile_url:`https://linkedin.com/li/jane-doe-456j`}]}],"person:mobile:profileurl:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:mobile:profileurl:waterfall@1`}],input:[{id:`1`,profile_url:`https://linkedin.com/li/jane-doe-456j`}]}],"person:devprofileurl:profileurl:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:devprofileurl:profileurl:waterfall@1`}],input:[{id:`1`,profile_url:`https://linkedin.com/li/jane-doe-456j`}]}],"people:profile:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:profile:waterfall@1`}],input:[{id:`1`,profile_url:`https://linkedin.com/li/jane-doe-456j`}]}],"person:profile:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:profile:waterfall@1`}],input:[{id:`1`,profile_url:`https://linkedin.com/li/jane-doe-456j`}]}],"person:profile:waterfall@2":[{config:{environment:`production`},pipes:[{pipe_id:`person:profile:waterfall@2`}],input:[{id:`1`,profile_url:`https://www.linkedin.com/in/jane-doe-456j`}]}],"company:newssummary:website@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:newssummary:website@1`,config:{}}],input:[{id:`1`,company_website_url:`https://pipe0.com`}]}],"company:newssummary:domain@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:newssummary:domain@1`,config:{}}],input:[{id:`1`,company_domain:`pipe0.com`}]}],"company:websiteurl:email@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:websiteurl:email@1`}],input:[{id:`1`,email:`https://pipe0.com`}]}],"company:domain:workemail@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:domain:workemail@1`}],input:[{id:`1`,email:`john@pipe0.com`}]}],"json:extract:multi@1":[{config:{environment:`production`},pipes:[{pipe_id:`json:extract:multi@1`,config:{json_extraction:{field_name:`example_json`,extractions:[{path:`name`,output_field:{format:null,name:`extracted_name`,label:`Simple Example Using Jsonata Path`,type:`string`}},{path:`{ "fullName": name, "count": $count(nested) }`,output_field:{format:null,name:`reshaped_object`,label:`Complex Transformation Using Jasonata`,type:`json`}}]}}}],input:[{id:`1`,example_json:{name:`John Doe`,nested:[1,2,3]}}]}],"message:write@1":[{config:{environment:`production`},pipes:[{pipe_id:`message:write@1`,config:{model:Vc,template:`
|
|
114
114
|
Write an internal slack message that notifies the team about a high value signup
|
|
115
115
|
that customer success should reach out to personally.
|
|
116
116
|
|
|
@@ -121,7 +121,7 @@ Include the name of the new signup in your message:
|
|
|
121
121
|
As well as the company name they work for:
|
|
122
122
|
|
|
123
123
|
{{ company_name }}
|
|
124
|
-
`}}],input:[{id:`1`,name:`https://pipe0.com`,company_name:`Pipe0`}]}],"email:write@1":[{config:{environment:`production`},pipes:[{pipe_id:`email:write@1`,config:{model:
|
|
124
|
+
`}}],input:[{id:`1`,name:`https://pipe0.com`,company_name:`Pipe0`}]}],"email:write@1":[{config:{environment:`production`},pipes:[{pipe_id:`email:write@1`,config:{model:Vc,persona:`customer_success`,signature:`
|
|
125
125
|
John Doe
|
|
126
126
|
Head of Customer Success
|
|
127
127
|
[LinkedIn](https://https://linkedin.com/li/john-doe)
|
|
@@ -138,9 +138,9 @@ Customize the message using the name of the user: {{ name }}.
|
|
|
138
138
|
**Name**: {{ name }}
|
|
139
139
|
**Email**: {{ email }}
|
|
140
140
|
`}}],input:[{id:`1`,name:`John`,email:`john@pipe0.com`}]}],"email:send:resend@1":[{config:{environment:`production`},pipes:[{connector:{strategy:`first`,connections:[{connection:`resend_123`,type:`vault`}]},pipe_id:`email:send:resend@1`,config:{from:`<FROM_EMAIL_ADDRESS>`,to:`{{ email }}`,reply_to:`<REPLY_TO_EMAIL_ADDRESS>`,subject:`{{ email_subject }}`,body:`{{ email_body }}`}}],input:[{id:`1`,email:`<EMAIL_ADDRESS>`,email_body:`<EMAIL_TEXT>`,email_subject:`<EMAIL_SUBJECT_LINE>`}]}],"email:send:gmail@1":[{config:{environment:`production`},pipes:[{connector:{strategy:`first`,connections:[{connection:`gmail_123`,type:`vault`}]},pipe_id:`email:send:gmail@1`,config:{to:`{{ email }}`,reply_to:`<REPLY_TO_EMAIL_ADDRESS>`,subject:`{{ email_subject }}`,body:`{{ email_body }}`}}],input:[{id:`1`,email:`<EMAIL_ADDRESS>`,email_body:`<EMAIL_TEXT>`,email_subject:`<EMAIL_SUBJECT_LINE>`}]}],"email:draft:gmail@1":[{config:{environment:`production`},pipes:[{connector:{strategy:`first`,connections:[{connection:`gmail_123`,type:`vault`}]},pipe_id:`email:draft:gmail@1`,config:{to:`{{ email }}`,reply_to:`<REPLY_TO_EMAIL_ADDRESS>`,subject:`{{ email_subject }}`,body:`{{ email_body }}`}}],input:[{id:`1`,email:`<EMAIL_ADDRESS>`,email_body:`<EMAIL_TEXT>`,email_subject:`<EMAIL_SUBJECT_LINE>`}]}],"message:send:slack@1":[{config:{environment:`production`},pipes:[{connector:{strategy:`first`,connections:[{connection:`slack_123`,type:`vault`}]},pipe_id:`message:send:slack@1`,config:{channel_id:`<SLACK_CHANNEL_ID>`,message:`{{ message }}`}}],input:[{id:`1`,message:`<MESSAGE_TEXT>`}]}],"message:send-direct:slack@1":[{config:{environment:`production`},pipes:[{connector:{strategy:`first`,connections:[{connection:`slack_123`,type:`vault`}]},pipe_id:`message:send-direct:slack@1`,config:{slack_user_id:`{{ slack_user_id }}`,message:`Hi {{ name }}, quick question about {{ topic }}`}}],input:[{id:`1`,slack_user_id:`U024BE7LH`,name:`Ada`,topic:`the Q3 rollout`}]}],"people:profileurl:email:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:profileurl:email:waterfall@1`}],input:[{id:`1`,email:`<MESSAGE_TEXT>`}]}],"person:profileurl:email:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:profileurl:email:waterfall@1`}],input:[{id:`1`,email:`<MESSAGE_TEXT>`}]}],"people:validate:email:zerobounce@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:validate:email:zerobounce@1`}],input:[{id:`1`,work_email:`john@pipe0.com`}]}],"people:mobilenumber:workemail:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:mobilenumber:workemail:waterfall@1`}],input:[{id:`1`,work_email:`john@pipe0.com`}]}],"people:professionalprofile:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:professionalprofile:waterfall@1`}],input:[{id:`1`,professional_profile_url:`john@pipe0.com`}]}],"people:professionalprofileurl:name@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:professionalprofileurl:name@1`}],input:[{id:`1`,name:`John`,company_name:`Pipe0`,location_int:`Berlin`}]}],"people:professionalprofileurl:email:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:professionalprofileurl:email:waterfall@1`}],input:[{id:`1`,email:`john@pipe0.com`}]}],"people:mobilenumber:professionalprofile:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:mobilenumber:professionalprofile:waterfall@1`}],input:[{id:`1`,professional_profile_url:`https://linkedin.com/li/john`}]}],"company:overview@2":[{config:{environment:`production`},pipes:[{pipe_id:`company:overview@2`,config:{}}],input:[{id:`1`,company_website_url:`Pipe0`}]}],"company:overview@3":[{config:{environment:`production`},pipes:[{pipe_id:`company:overview@3`,config:{}}],input:[{id:`1`,company_domain:`pipe0.com`}]}],"fields:merge@1":[{config:{environment:`production`},pipes:[{pipe_id:`fields:merge@1`,config:{merge_fields:[{field_name:`field_1`},{field_name:`field_2`}]}}],input:[{id:`1`,company_website_url:`Pipe0`}]}],"website:scrape:firecrawl@1":[{config:{environment:`production`},pipes:[{pipe_id:`website:scrape:firecrawl@1`,config:{scrape_main_only:!0,input_fields:{website_url:{alias:``}}}}],input:[{id:`1`,company_website_url:`Pipe0`}]}],"website:extract:firecrawl@1":[{config:{environment:`production`},pipes:[{pipe_id:`website:extract:firecrawl@1`,config:{extraction_prompt:`Extract the company mission as well as the latest news.`,enable_full_domain_crawl:!0,enable_web_search:!0,json_schema:{type:`object`,required:[`company_mission`,`latest_news`],properties:{company_mission:{type:`string`},latest_news:{type:`string`}}}}}],input:[{id:`1`,company_website_url:`Pipe0`}]}],"website:extract:parallel@1":[{config:{environment:`production`},pipes:[{pipe_id:`website:extract:parallel@1`,config:{objective:`When was the company founded and what does it do?`}}],input:[{id:`1`,website_url:`https://pipe0.com`}]}],"person:email:validate:millionverifier@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:email:validate:millionverifier@1`}],input:[{id:`1`,email:`john@pipe0.com`}]}],"website:scrapelist:firecrawl@1":[{config:{environment:`production`},pipes:[{pipe_id:`website:scrapelist:firecrawl@1`,config:{scrape_main_only:!0,formats:[`markdown`,`links`]}}],input:[{id:`1`,urls:[`https://pipe0.com`,`https://pipe0.com/docs`]}]}],"website:maplinks:firecrawl@1":[{config:{environment:`production`},pipes:[{pipe_id:`website:maplinks:firecrawl@1`,config:{sitemap:`include`,page_limit:20,search:``}}],input:[{id:`1`,urls:[`https://pipe0.com`,`https://pipe0.com/docs`]}]}],"contact:create:resend@1":[{config:{environment:`production`},pipes:[{pipe_id:`contact:create:resend@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`resend_123`}]},config:{segment_id:`segment_id_12xeeb12`,add_as_subscribed:!0}}],input:[{id:`1`,email:`test@pipe0.com`,name:`John Dorr`}]}],"lead:enroll:lemlist@1":[{config:{environment:`production`},pipes:[{pipe_id:`lead:enroll:lemlist@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`lemlist_123`}]},config:{campaign_id:`cam_bSn8EORHQxbWPjHvu`,custom_variables:{painPoint:`{{ pain_point }}`}}}],input:[{id:`1`,email:`prospect@example.com`,first_name:`Jane`,last_name:`Doe`,company_name:`Acme Corp`,job_title:`VP Sales`,pain_point:`slow onboarding`}]}],"lead:enroll:amplemarket@1":[{config:{environment:`production`},pipes:[{pipe_id:`lead:enroll:amplemarket@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`amplemarket_123`}]},config:{sequence_id:`cb4925debf37ccb6ae1244317697e0f`,custom_variables:{pain_point:`{{ pain_point }}`}}}],input:[{id:`1`,email:`prospect@example.com`,profile_url:`https://www.linkedin.com/in/jane-doe`,pain_point:`slow onboarding`}]}],"row:append:sheet@1":[{config:{environment:`production`},pipes:[{pipe_id:`row:append:sheet@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},config:{project:`project_id`,sheet:`sheet_id`,run_added_rows:!0,allow_entity_creation:!0,write_fields:[{field_name:`field_name`}]}}],input:[{id:`1`,email:`test@pipe0.com`,name:`John Dorr`}]}],"bucket:claim@1":[{config:{environment:`production`},pipes:[{pipe_id:`bucket:claim@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},config:{bucket:`crm-contacts`,contract:``,entry_fields:[{field_name:`email`}],new_bucket_name:``,new_bucket_ttl_in_seconds:null,new_bucket_own_entry_behavior:`block`,new_bucket_missing_value_behavior:`proceed`,allow_bucket_creation:!0}}],input:[{id:`1`,email:`test@pipe0.com`}]}],"bucket:count@1":[{config:{environment:`production`},pipes:[{pipe_id:`bucket:count@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},config:{bucket:`lead-router`,contract:``,entry_fields:[{field_name:`email`,entry_field:`lead`}],new_bucket_name:``,new_bucket_start:1,new_bucket_step:1,allow_bucket_creation:!0}}],input:[{id:`1`,email:`test@pipe0.com`}]}],"bucket:countif@1":[{config:{environment:`production`},pipes:[{pipe_id:`bucket:countif@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},config:{bucket:`enrich-errors`,contract:``,entry_fields:[{field_name:`user_id`}],where:{logic:`and`,conditions:[{property:`status`,field_name:`person_profile_match`,operator:`eq`,value:`failed`}]},new_bucket_name:``,allow_bucket_creation:!0,output_fields:{bucket_event_count:{alias:`error_count`,enabled:!0},bucket_event_last_at:{alias:``,enabled:!1}}}}],input:[{id:`1`,user_id:`u_123`,person_profile_match:{value:null,status:`failed`,type:`json`,format:`json_object`,reason:null,resolved_by:null,widgets:{}}}]}],"bucket:check@1":[{config:{environment:`production`},pipes:[{pipe_id:`bucket:check@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},config:{bucket:`do-not-contact`,contract:``,entry_fields:[{field_name:`email`}]}}],input:[{id:`1`,email:`test@pipe0.com`}]}],"row:roundrobin:sheet@1":[{config:{environment:`production`},pipes:[{pipe_id:`row:roundrobin:sheet@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},config:{sheet:`sellers`,sheet_where:{logic:`and`,conditions:[{property:`value`,field_name:`segment`,operator:`eq`,value:`ENT`}]},sheet_unique_field:{field_name:`email`},sheet_copy_fields:[{field_name:`email`,alias:`seller_email`,type:`string`,format:`email`},{field_name:`name`,alias:`seller_name`,type:`string`}],sheet_weight_field:{field_name:``},counter_field:{field_name:`email`}}}],input:[{id:`1`,email:`lead@acme.com`}]}],"rows:find:sheet@1":[{config:{environment:`production`},pipes:[{pipe_id:`rows:find:sheet@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},config:{sheet:`crm-leads`,where:{logic:`and`,conditions:[{property:`value`,field_name:`email`,operator:`eq`,value:`{{ email }}`}]},limit:10,output_fields:{sheet_rows_found_count:{alias:``,enabled:!0},sheet_found_rows:{alias:``,enabled:!0},sheet_found_row_ids:{alias:``,enabled:!1}}}}],input:[{id:`1`,email:`test@pipe0.com`,name:`John Dorr`}]}],"rows:delete:sheet@1":[{config:{environment:`production`},pipes:[{pipe_id:`rows:delete:sheet@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},config:{sheet:`enriched-users-experiences`,where:{logic:`and`,conditions:[{property:`value`,field_name:`user_id`,operator:`eq`,value:`{{ user_id }}`}]},output_fields:{sheet_deleted_count:{alias:``,enabled:!0}}}}],input:[{id:`1`,user_id:`u_123`}]}],"rows:find:postgres@1":[{config:{environment:`production`},pipes:[{pipe_id:`rows:find:postgres@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`postgres_123`}]},config:{query:`SELECT id, email, plan, created_at FROM users WHERE email = '{{ email }}'`,limit:10,output_fields:{db_rows_found_count:{alias:``,enabled:!0},db_found_rows:{alias:``,enabled:!0}}}}],input:[{id:`1`,email:`test@pipe0.com`,name:`John Dorr`}]}],"rows:find:databricks@1":[{config:{environment:`production`},pipes:[{pipe_id:`rows:find:databricks@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`databricks_123`}]},config:{query:`SELECT id, email, plan, created_at FROM main.crm.users WHERE email = '{{ email }}'`,limit:10,output_fields:{db_rows_found_count:{alias:``,enabled:!0},db_found_rows:{alias:``,enabled:!0}}}}],input:[{id:`1`,email:`test@pipe0.com`,name:`John Dorr`}]}],"row:expandappend:sheet@1":[{config:{environment:`production`},pipes:[{pipe_id:`row:expandappend:sheet@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},config:{project:`project_id`,sheet:`sheet_id`,run_added_rows:!0,allow_entity_creation:!0,write_fields:[],destination_field_name:`expanded_value`,destination_field_type:``,destination_field_format:``,destination_field_label:``}}],input:[{id:`1`,email:`test@pipe0.com`,name:`John Dorr`}]}],"people:match:role:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:match:role:waterfall@1`,config:{providers:[{provider:`leadmagic`}],roles:[`CEO`]}}],input:[{id:`1`,company_website_url:`https://acme.com`}]}],"person:match:role:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:match:role:waterfall@1`,config:{providers:[{provider:`leadmagic`}],roles:[`CEO`]}}],input:[{id:`1`,company_domain:`acme.com`}]}],"company:match:logodev@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:match:logodev@1`}],input:[{id:`1`,company_website_url:`https://acme.com`}]}],"company:match:logodev@2":[{config:{environment:`production`},pipes:[{pipe_id:`company:match:logodev@2`}],input:[{id:`1`,company_domain:`acme.com`}]}],"company:lookalikes:companyenrich@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:lookalikes:companyenrich@1`}],input:[{id:`1`,company_website_url:`https://acme.com`}]}],"company:lookalikes:companyenrich@2":[{config:{environment:`production`},pipes:[{pipe_id:`company:lookalikes:companyenrich@2`}],input:[{id:`1`,company_domain:`acme.com`}]}],"person:posts:content:crustdata@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:posts:content:crustdata@1`}],input:[{id:`1`,profile_url:`https://linkedin.com/li/john-doe-3445`}]}],"people:identity:email:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:identity:email:waterfall@1`}],input:[{id:`1`,work_email:`john@pipe0.com`}]}],"person:identity:email:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:identity:email:waterfall@1`}],input:[{id:`1`,work_email:`john@pipe0.com`}]}],"person:identity:email:waterfall@2":[{config:{environment:`production`},pipes:[{pipe_id:`person:identity:email:waterfall@2`}],input:[{id:`1`,email:`john@pipe0.com`}]}],"people:profile:workemail:crustdata@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:profile:workemail:crustdata@1`}],input:[{id:`1`,work_email:`john@pipe0.com`}]}],"person:profile:workemail:crustdata@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:profile:workemail:crustdata@1`}],input:[{id:`1`,work_email:`john@pipe0.com`}]}],"people:workemail:profileurl:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`people:workemail:profileurl:waterfall@1`}],input:[{id:`1`,profile_url:`https://linkedin.com/li/john-123abc`}]}],"person:workemail:profileurl:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:workemail:profileurl:waterfall@1`}],input:[{id:`1`,profile_url:`https://linkedin.com/li/john-123abc`}]}],"company:match:crustdata@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:match:crustdata@1`}],input:[{id:`1`,company_website_url:`https://microsoft.com`}]}],"company:match:crustdata@2":[{config:{environment:`production`},pipes:[{pipe_id:`company:match:crustdata@2`}],input:[{id:`1`,company_domain:`microsoft.com`}]}],"contact:match:hubspot@1":[{config:{environment:`production`},pipes:[{pipe_id:`contact:match:hubspot@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`hubspot_portal-1234567`}]}}],input:[{id:`1`,email:`jane@acme.com`}]}],"company:match:hubspot@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:match:hubspot@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`hubspot_portal-1234567`}]}}],input:[{id:`1`,company_domain:`acme.com`}]}],"deal:match:hubspot@1":[{config:{environment:`production`},pipes:[{pipe_id:`deal:match:hubspot@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`hubspot_portal-1234567`}]},config:{pipeline:``,status:`open`,custom_properties:[{property:`dealname`},{property:`pipeline`},{property:`dealstage`},{property:`amount`},{property:`closedate`}]}}],input:[{id:`1`,company_domain:`acme.com`}]}],"object:update:hubspot@1":[{config:{environment:`production`},pipes:[{pipe_id:`object:update:hubspot@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`hubspot_portal-1234567`}]},config:{object_type:`0-1`,properties:{jobtitle:`{{ job_title }}`,phone:`{{ phone }}`},ignore_blank_values:!0}}],input:[{id:`1`,hubspot_object_id:`512001`,job_title:`Head of Data`,phone:`+1 555 0100`}]}],"person:match:salesforce@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:match:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{match_scope:`contacts_and_leads`,custom_properties:[{property:`Lead_Score__c`}]}}],input:[{id:`1`,email:`jane@acme.com`}]}],"account:match:salesforce@1":[{config:{environment:`production`},pipes:[{pipe_id:`account:match:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{website_field:`Website`,custom_properties:[]}}],input:[{id:`1`,company_domain:`acme.com`}]}],"opportunity:match:salesforce@1":[{config:{environment:`production`},pipes:[{pipe_id:`opportunity:match:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{status:`open`,stage:``,custom_properties:[{property:`NextStep`}]}}],input:[{id:`1`,company_domain:`acme.com`}]}],"record:lookup:salesforce@1":[{config:{environment:`production`},pipes:[{pipe_id:`record:lookup:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{object:`Contact`}}],input:[{id:`1`,salesforce_record_id:`003KJ000001abcDIA2`}]}],"record:update:salesforce@1":[{config:{environment:`production`},pipes:[{pipe_id:`record:update:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{object:`Contact`,values:{Title:`{{ job_title }}`,Phone:`{{ phone }}`},bypass_duplicate_alerts:!1}}],input:[{id:`1`,salesforce_record_id:`003KJ000001abcDIA2`,job_title:`Head of Data`,phone:`+1 555 0100`}]}],"record:assert:salesforce@1":[{config:{environment:`production`},pipes:[{pipe_id:`record:assert:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{object:`Account`,external_id_field:`External_Id__c`,external_id_value:`{{ company_domain }}`,values:{Name:`{{ company_name }}`,Website:`https://{{ company_domain }}`},bypass_duplicate_alerts:!1}}],input:[{id:`1`,company_domain:`acme.com`,company_name:`Acme Inc.`}]}],"object:associations:hubspot@1":[{config:{environment:`production`},pipes:[{pipe_id:`object:associations:hubspot@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`hubspot_portal-1234567`}]},config:{from_object_type:`0-2`,to_object_type:`0-3`,association_label:``,properties:[{property:`dealname`},{property:`dealstage`},{property:`amount`}],limit:20}}],input:[{id:`1`,hubspot_object_id:`9034001`}]}],"activities:find:salesforce@1":[{config:{environment:`production`},pipes:[{pipe_id:`activities:find:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{type:`all`,status:`all`,occurred_within:`l90d`,custom_properties:[{property:`CallDurationInSeconds`}],limit:10}}],input:[{id:`1`,salesforce_record_id:`003KJ000001abcDIA2`}]}],"activity:log:salesforce@1":[{config:{environment:`production`},pipes:[{pipe_id:`activity:log:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{subject:`Outreach email sent: {{ email_subject }}`,body:`Sent via pipe0.`,subtype:`email`,status:``,related_record:``,activity_date:``,owner:``,external_id_field:`Outreach_Key__c`,external_id_value:`{{ email }}-outreach-2026-07`,values:{}}}],input:[{id:`1`,salesforce_record_id:`003KJ000001abcDIA2`,email:`jane@acme.com`,email_subject:`Q3 check-in`}]}],"activity:log:hubspot@1":[{config:{environment:`production`},pipes:[{pipe_id:`activity:log:hubspot@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`hubspot_portal-1234567`}]},config:{type:`task`,subject:`Follow up with {{ first_name }}`,body:`Enriched via pipe0 — review before Thursday.`,timestamp:``,record_object_type:`0-1`,owner:``,values:{hs_task_status:`NOT_STARTED`,hs_task_priority:`HIGH`}}}],input:[{id:`1`,hubspot_object_id:`512001`,first_name:`Jane`}]}],"person:match:attio@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:match:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]}}],input:[{id:`1`,email:`jane@acme.com`}]}],"company:match:attio@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:match:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{match_on:`root_domain`,custom_properties:[]}}],input:[{id:`1`,company_domain:`acme.com`}]}],"deal:match:attio@1":[{config:{environment:`production`},pipes:[{pipe_id:`deal:match:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]}}],input:[{id:`1`,company_domain:`acme.com`}]}],"record:match:attio@1":[{config:{environment:`production`},pipes:[{pipe_id:`record:match:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{object:`people`,matching_attribute:`email_addresses`,value:`{{ email }}`}}],input:[{id:`1`,email:`jane@acme.com`}]}],"record:lookup:attio@1":[{config:{environment:`production`},pipes:[{pipe_id:`record:lookup:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{object:`people`}}],input:[{id:`1`,attio_record_id:`bf071e1f-6035-429d-b874-d83ea64ea13b`}]}],"record:update:attio@1":[{config:{environment:`production`},pipes:[{pipe_id:`record:update:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{object:`people`,values:{job_title:`{{ job_title }}`},multiselect_mode:`append`}}],input:[{id:`1`,attio_record_id:`bf071e1f-6035-429d-b874-d83ea64ea13b`,job_title:`Head of Data`}]}],"activities:find:attio@1":[{config:{environment:`production`},pipes:[{pipe_id:`activities:find:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{object:`people`,include:[`notes`,`meetings`,`tasks`],occurred_within:`l90d`,limit:10}}],input:[{id:`1`,attio_record_id:`bf071e1f-6035-429d-b874-d83ea64ea13b`}]}],"company:identity:crustdata@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:identity:crustdata@1`}],input:[{id:`1`,company_domain:`samsung.com`},{id:`2`,company_name:`Samsung`}]}],"person:identity:amplemarket@1":[{pipes:[{pipe_id:`person:identity:amplemarket@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`amplemarket_123`}]}}],input:[{id:`1`,email:`hallp@pipe0.com`}]}],"person:match:amplemarket@1":[{pipes:[{pipe_id:`person:match:amplemarket@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`amplemarket_123`}]}}],input:[{id:`1`,profile_url:`https://linkedin.com/li/johndoe`}]}],"field:domainify@1":[{pipes:[{pipe_id:`field:domainify@1`}],input:[{id:`1`,url_input:`https://google.com`}]}],"field:slugify@1":[{pipes:[{pipe_id:`field:slugify@1`}],input:[{id:`1`,string_input:`input value`}]}],"field:timestamp@1":[{pipes:[{pipe_id:`field:timestamp@1`,config:{output_fields:{timestamp:{alias:`last_attempted_at`,enabled:!0}}}}],input:[{id:`1`}]}],"formula:run@1":[{config:{environment:`production`},pipes:[{pipe_id:`formula:run@1`,config:{code:`const days = ["c_suite", "leadership", "manager"].includes(inputs.primary_seniority) ? 98 : 284;
|
|
141
|
-
return new Date(Date.now() - days * 86400000).toISOString().slice(0, 10);`,formula_inputs:[{field_name:`primary_seniority`}],result_type:`date`,output_fields:{formula_result:{alias:`signal_window_start`,enabled:!0}}}}],input:[{id:`1`,primary_seniority:`manager`}]}],"signals:personprofilematch@1":[{config:{environment:`production`},pipes:[{pipe_id:`signals:personprofilematch@1`,config:{signals:[],default_window:`l90d`,input_fields:{person_profile_match:{alias:``},signal_window_start:{alias:``}},output_fields:{signal_list:{alias:``,enabled:!0},signal_count:{alias:``,enabled:!0}}}}],input:[{id:`1`,signal_window_start:`2026-04-01`,person_profile_match:{value:Hi,status:`completed`,type:`json`,format:`json_object`,reason:null,resolved_by:null,widgets:{}}}]}],"http:request@1":[{pipes:[{pipe_id:`http:request@1`,config:{method:`GET`,url:`https://api.example.com/v1/companies/{{ company_name }}`,query_params:{limit:`10`},body:``,headers:{Authorization:`Bearer SECRET`},expected_response_schema:{},output_fields:{http_response_status:{alias:``,enabled:!0},http_response_body:{alias:``,enabled:!0},http_response_headers:{alias:``,enabled:!1}}}}],input:[{id:`1`,company_name:`Acme`}]}]},oZ=.1,sZ=[`level1`,`level2`,`level3`];function cZ(e,t){let n=sZ[t-1];if(n)return e[n]}function lZ(e,t){for(let n=t;n>=1;n--){let t=cZ(e,n);if(t)return{level:n,tier:t}}}function uZ(e){let t=[];for(let n=1;n<=3;n++){let r=cZ(e,n);r&&t.push({level:n,credits:r.credits,weight:r.weight})}return t}function dZ(e){if(e.default<.1)return!1;let t=uZ(e);if(t.length===0)return!1;for(let e=0;e<t.length;e++)if(t[e].level!==e+1)return!1;let n=e.default,r=0;for(let e of t){if(!(e.credits<n)||!Number.isInteger(e.weight)||e.weight<=r)return!1;n=e.credits,r=e.weight}return!0}function fZ(){let e=new Map;for(let t of Object.values(zG))for(let[n,r]of Object.entries(t.billableOperations)){let i=r;if(!i?.allowManagedConnection||!dZ(i.credits))continue;let a=n,o={kind:`pipe`,id:t.pipeId,label:t.label,categories:[...t.categories]},s=e.get(a);if(s){s.standardCredits=Math.min(s.standardCredits,i.credits.default),s.usedBy.push(o);continue}e.set(a,{billableOperation:a,provider:i.provider,kind:`pipe`,standardCredits:i.credits.default,tiers:uZ(i.credits),usedBy:[o]})}for(let t of Object.values(_G)){let{cost:n}=t;if(!n.allowManagedConnection||!dZ(n.credits))continue;let r=t.billableOperation,i={kind:`search`,id:t.searchId,label:t.label,categories:[...t.categories]},a=e.get(r);if(a){a.standardCredits=Math.min(a.standardCredits,n.credits.default),a.usedBy.push(i);continue}e.set(r,{billableOperation:r,provider:t.provider,kind:`search`,standardCredits:n.credits.default,tiers:uZ(n.credits),usedBy:[i]})}return[...e.values()].sort((e,t)=>e.billableOperation.localeCompare(t.billableOperation))}function pZ(e,t){switch(e.kind){case`field`:case`optional`:{let n=t[e.field.name];return n?{...e,field:{...e.field,resolvedName:n}}:e}case`all`:case`any`:return{...e,of:e.of.map(e=>pZ(e,t))}}}function mZ(e){switch(e.kind){case`field`:return e.field.resolvedName;case`optional`:return`${e.field.resolvedName} (optional)`;case`all`:return e.of.map(mZ).join(` AND `);case`any`:return`(${e.of.map(mZ).join(` OR `)})`}}function hZ(e,t){let n=2,r=`${e}_${n}`;for(;t.has(r);)n++,r=`${e}_${n}`;return r}function gZ({pipeId:e,availableFields:t,inputFieldAliases:n}){let r=zG[e];if(!r)throw Error(`Unknown pipe_id: "${e}"`);let i=new Set(t),a=r.defaultInputRequirement,o=a&&n&&Object.keys(n).length>0?pZ(a,n):a,s=o?yd(o,i):!0,c=o?bd(o).filter(e=>e.required).map(e=>({name:e.field.name,resolved_name:e.field.resolvedName,present:i.has(e.field.resolvedName)})):[],l=s?[]:c.filter(e=>!e.present).map(e=>e.resolved_name),u=new Set(i),d=[],f=[];for(let e of BG(r)){let t=i.has(e),n;t?(n=hZ(e,u),u.add(n),f.push({name:e,resolved_name:e,suggested_alias:n})):u.add(e),d.push({name:e,resolved_name:e,collides:t,suggested_alias:n})}return{pipe_id:e,runnable:s,requirement_description:o?mZ(o):`(no inputs required)`,required_fields:c,missing_fields:l,output_fields:d,output_collisions:f}}const _Z=[`yyyy-MM-dd`,`yyyy/MM/dd`,`yyyy-MM-dd HH:mm:ss`,`MM/dd/yyyy`,`MM/dd/yyyy HH:mm:ss`,`MM-dd-yyyy`,`MM-dd-yyyy HH:mm:ss`,`yyyyMMdd`],vZ=[`yyyy-MM-dd`,`yyyy/MM/dd`,`MM/dd/yyyy`,`MM-dd-yyyy`,`yyyyMMdd`,`dd-MM-yyyy`,`dd/MM/yyyy`],yZ=r.string().trim().transform(e=>{if(!/\./.test(e)&&!/^[a-zA-Z0-9_-]*$/.test(e))throw Error(`Invalid URL format`);let t=String(e).trim();if(/^https?:\/\//i.test(t)||(t=`https://${t}`),t=t.replace(/^http:\/\//i,`https://`),t=t.replace(/^https:\/\/[w]{4,}\./i,`https://www.`),t=t.endsWith(`/`)?t.slice(0,-1):t,!t.includes(`.`))throw Error(`Invalid URL format - no TLD`);return t}).check(e=>{r.url(e.value).safeParse(e.value).success||e.issues.push({code:`custom`,message:`Invalid URL`,input:e.value})}),bZ=r.coerce.string().trim().toLowerCase().transform(e=>{let t=e.replace(/^mailto:/i,``),[n,r]=t.split(`@`);return!r||!n?t:`${n.replace(/[^a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]/g,``)}@${r.replace(/\s+/g,``)}`}).check(e=>{r.email().safeParse(e.value).success||e.issues.push({code:`custom`,input:e.value,message:`Invalid email format`})});function xZ(e){return!isNaN(e.getTime())}const SZ=r.coerce.string().trim().transform(e=>{let t=e.replace(/[^0-9T:.\-/ ]/g,``).trim();for(let e of _Z){let n=c(t,e,new Date(0));if(xZ(n))return s(n,`yyyy-MM-dd'T'HH:mm:ss`)}throw Error(`Invalid date format: ${e}`)}),CZ=r.coerce.string().trim().transform(e=>{for(let t of vZ){let n=c(e,t,new Date(0));if(xZ(n))return s(n,`yyyy-MM-dd`)}throw Error(`Invalid date format: ${e}`)}),wZ=r.union([r.number(),r.string().transform(e=>{let t=e.replace(/[^0-9.]/g,``),n=parseFloat(t);if(isNaN(n))throw Error(`Invalid decimal format`);return n})]).refine(e=>!isNaN(e),{message:`Value must be a valid number`}),TZ=r.union([r.number().transform(e=>Math.trunc(e)),r.string().transform(e=>{let t=e.replace(/[^0-9]/g,``),n=parseInt(t,10);if(isNaN(n))throw Error(`Invalid integer format`);return n})]).check(r.int()),EZ=r.preprocess(e=>{if(typeof e!=`object`||!e)return e;try{return JSON.stringify(e)}catch{return e}},r.coerce.string().trim().min(1,{message:`Value cannot be empty for this format`}));function DZ(e,t){if(t===null)return e===``||e==null?null:e;if(e==null)return null;try{switch(t){case`url`:return yZ.parse(e);case`email`:return bZ.parse(e);case`datetime`:return SZ.parse(e);case`date`:return CZ.parse(e);case`decimal`:return wZ.parse(e);case`int`:return TZ.parse(e);case`currency`:return r.number().parse(e);case`percent`:return r.number().parse(e);case`address_line_1`:return EZ.parse(e);case`website_url`:return yZ.parse(e);case`profile_url`:return yZ.parse(e);case`zip_code`:return EZ.parse(e);case`markdown`:case`phone`:case`text`:return EZ.parse(e);case`json_object`:return r.record(r.any(),r.any()).parse(e);case`json_list`:return r.array(r.any()).parse(e);case`json_list_string`:return r.array(r.string()).parse(e);default:throw Error(`Unknown format: ${t}`)}}catch(r){throw r instanceof n?Error(`Unable to parse value ${Um(e)} into format ${t}: ${r.message}`):r}}function OZ(e,t,n){let r={};for(let[i,a]of Object.entries(e.derivedInputFields)){let e=t.field_definitions[i]?.format||null,o=n[i]??null;if(hK(o))o.resolved_by?.ref===`input`?r[i]={value:o.value,type:a.type,claimed_by:{ref:`input`,config_hash:null},resolved_by:o.value==null?null:{ref:`input`,config_hash:null,input_hash:null,environment:o.resolved_by.environment||null},reason:null,status:o.value===null?`pending`:`completed`,widgets:o.widgets||{},format:o.format||e}:r[i]={value:o.value,type:a.type,claimed_by:o.claimed_by||{ref:`input`,config_hash:null},resolved_by:o.resolved_by?o.resolved_by:o.value==null?null:{ref:`input`,config_hash:null,input_hash:null,environment:null},reason:o.reason||null,status:o.status,widgets:o.widgets||{},format:o.format||e};else if(o!=null)try{r[i]={value:DZ(o,e),type:a.type,claimed_by:{ref:`input`,config_hash:null},resolved_by:{ref:`input`,config_hash:null,input_hash:null,environment:null},reason:null,status:`completed`,widgets:{},format:e}}catch{r[i]={value:o,type:a.type,claimed_by:{ref:`input`,config_hash:null},resolved_by:{ref:`input`,config_hash:null,input_hash:null,environment:null},reason:{code:`InvalidValue`,summary:`Invalid`,message:`This field expects a value of format ${e}.`},status:`failed`,widgets:{},format:e}}else r[i]={type:a.type,value:o,claimed_by:{ref:`input`,config_hash:null},resolved_by:{ref:null,config_hash:null,input_hash:null,environment:null},reason:null,status:`pending`,widgets:{},format:e}}return r}function kZ(e,t,n){for(let r=0;r<t.length;r++){let i=t[r];if(!i)throw Error(`Input object undefined`);let a=i.id;a!=null&&hK(a)&&(i.id=a.value),i.id||=crypto.randomUUID();let{id:o}=i;if(typeof o!=`string`&&typeof o!=`number`){n.errors.push(nD.InvalidId());continue}if(n.records[o]){n.errors.push(nD.IDConflict({index:r,id:o}));continue}n.order.push(o),n.records[o]={id:o,fields:OZ(e,n,i)}}}function AZ({context:e,input:t,config:n={}}){let r={field_definitions:e.fieldDefinitions,order:[],errors:[],records:{},queued_record_ids:new Set,adopted_record_ids:new Set};try{kZ(e,t,r);let{queuedRecordIdSet:i,adoptedRecordIdSet:a}=jZ(e,t,r,n);if(r.queued_record_ids=i,r.adopted_record_ids=a,MZ(e,r,n?.queue?.enabled),RZ(e,r),r.errors.length>0)throw new iD(r.errors);return r}catch(e){throw e instanceof iD?e:new iD([nD.ResponseGenerationFailed({error:e})])}}function jZ(e,t,n,r){let i=[],a=[];for(let o=0;o<e.orderedPipePayloads.length;o++){let s=e.orderedPipePayloads[o],c=e.orderedPipeInstances[o];if(!c){n.errors.push(nD.UnknownResolver({pipeId:s.pipe_id,index:o}));continue}let{queuedRecordIds:l,adoptedRecordIds:u}=LZ(e,t,c,n,r);i=i.concat(l),a=a.concat(u)}return{queuedRecordIdSet:new Set(i),adoptedRecordIdSet:new Set(a)}}function MZ(e,t,n){if(!n)return;let r=(t,n,r,i)=>{Object.values(t.getOutputFields()).forEach(a=>{let o=i.fields[a.resolvedName];if(!o)throw Error(`Internal: Output field ${ZE(a)} not found`);o.status===`queued`&&(o.status=`skipped`,o.resolved_by={ref:`system`,environment:e.environment,config_hash:t.getConfigHashKey(),input_hash:t.getInputHashKey(i)},o.value=null,o.reason={code:`InputError`,message:`Field ${ZE(n)} is missing but required (${r.value?`the value is`:`it has status`}: '${r.value?r.value:r.status}').`,summary:`Missing input`})})};for(let n=0;n<e.orderedPipePayloads.length;n++){let i=e.orderedPipePayloads[n],a=e.orderedPipeInstances[n];if(!a){t.errors.push(nD.UnknownResolver({pipeId:i.pipe_id,index:n}));continue}Object.values(t.records).forEach(e=>{let{valid:t,failedPipeInputField:n,failedRecordField:i}=xd(a.getInputRequirement(),e);t===!1&&r(a,n,i,e)})}}function NZ({inputHashKey:e,configHashKey:t,config:n,expandedValue:r}){return!!(n.queue?.triggers?.configHashMismatch&&n.queue.enabled&&r.resolved_by?.config_hash&&t&&r.resolved_by.config_hash!==t||n.queue?.triggers?.inputHashMismatch&&n.queue.enabled&&r.resolved_by?.input_hash&&e&&r.resolved_by.input_hash!==e)}function PZ({status:e,config:t}){return t.queue?.enabled?t.queue.triggers?.status?.includes(e)??!1:!1}function FZ({inputHashKey:e,configHashKey:t,expandedValue:n,config:r}){return NZ({inputHashKey:e,configHashKey:t,expandedValue:n,config:r})||PZ({status:n.status,config:r})}function IZ({inputHashKey:e,configHashKey:t,expandedValue:n}){let r=!1;return n.resolved_by?.config_hash&&t&&n.resolved_by.config_hash!==t&&(n.resolved_by.config_hash=t,r=!0),n.resolved_by?.input_hash&&e&&n.resolved_by.input_hash!==e&&(n.resolved_by.input_hash=e,r=!0),{didAdopt:r}}function LZ(e,t,n,r,i){let a=Object.entries(r.records),o=[],s=[];for(let c=0;c<a.length;c++){let l=a[c];if(!l)throw Error(`Required arr not present`);let[u,d]=l;for(let a of Object.values(n.getOutputFields())){let{resolvedName:l,type:u}=a,f=Fd({pipes:e.orderedPipeInstances,derivedInputFields:e.derivedInputFields},u),p=Id({pipes:e.orderedPipeInstances,derivedInputFields:e.derivedInputFields},a.format),{resolvedInputValue:ee,isExpanded:te,expandedValue:ne}=gK(t[c]?.[l]??null),re=d.fields[l],ie=n.getConfigHashKey(),ae=n.getInputHashKey(d),oe={type:f,format:p,claimed_by:{ref:n.pipeId,config_hash:ie}};if(r.errors.length>0&&ee===null){let t=r.errors[0];if(!t)throw Error(`firstError undefined.`);d.fields[l]={...oe,value:null,status:`failed`,reason:{summary:`Validation error`,...t},resolved_by:{ref:`system`,environment:e.environment,config_hash:null,input_hash:null},widgets:{}};continue}let se=mK(ee);if(se!==`unknown`&&se!==f){let t=i.queue?.triggers?.outputFieldTypeError&&i.queue.enabled;d.fields[l]={...oe,value:t?null:ee,status:t?`queued`:`completed`,reason:null,resolved_by:t?{environment:e.environment,ref:`system`,config_hash:ie,input_hash:ae}:{environment:e.environment,ref:`input`,config_hash:null,input_hash:null},widgets:t?{}:ne?.widgets||re?.widgets||{},format:t?p:ne?.format||p};continue}if(ee==null){let t=te&&i.queue?.enabled&&ne.status===`pending`,n=te&&!t;if(te&&i.adopt?.enabled===!0&&(!i.adopt.statuses||i.adopt.statuses.includes(ne.status))){let{didAdopt:e}=IZ({inputHashKey:ae,configHashKey:ie,expandedValue:ne});e&&s.push(d.id)}if(te&&ne.status!==`pending`&&FZ({inputHashKey:ae,configHashKey:ie,config:i,expandedValue:ne})&&i.queue?.enabled)o.push(d.id),d.fields[l]={...oe,value:null,status:`queued`,reason:null,resolved_by:{environment:e.environment,ref:`system`,config_hash:ie,input_hash:ae},widgets:{}};else if(n)d.fields[l]={...oe,value:null,status:ne.status,type:ne.type||f,reason:ne.reason||null,resolved_by:ne.resolved_by||null,widgets:ne.widgets||{},format:ne.format||p};else{let t=i.queue?.triggers?.status?.includes(`pending`)??!0,n=i.queue?.enabled&&t?`queued`:`pending`;n===`queued`&&o.push(d.id),d.fields[l]={...oe,value:null,status:n,reason:null,resolved_by:n===`queued`?{environment:e.environment,ref:`system`,config_hash:ie,input_hash:ae}:null,widgets:{}}}continue}if(te){if(te&&i.adopt?.enabled===!0&&(!i.adopt.statuses||i.adopt.statuses.includes(ne.status))){let{didAdopt:e}=IZ({inputHashKey:ae,configHashKey:ie,expandedValue:ne});e&&s.push(d.id)}FZ({inputHashKey:ae,configHashKey:ie,expandedValue:ne,config:i})&&r.errors.length===0?(o.push(d.id),d.fields[l]={...oe,value:null,status:`queued`,reason:null,resolved_by:{environment:e.environment,ref:`system`,config_hash:null,input_hash:null},widgets:{}}):d.fields[l]={...oe,value:ee,status:`completed`,type:ne.type||f,reason:ne.reason||null,resolved_by:ne.resolved_by||{ref:`input`,config_hash:null,input_hash:null,environment:null},widgets:ne.widgets||re?.widgets||{},format:ne.format||p}}else try{let e=DZ(ee,p);d.fields[l]={...oe,value:e,status:`completed`,reason:null,resolved_by:{ref:`input`,config_hash:null,input_hash:null,environment:null},widgets:re?.widgets||{}}}catch{let t=i.queue?.enabled?`queued`:`failed`;t===`queued`&&o.push(d.id),d.fields[l]={...oe,value:ee,status:t,reason:{code:`InvalidFormat`,message:`Field is of invalid format. Expected: ${a.format}`,summary:`Invalid Format`},resolved_by:{ref:`system`,environment:e.environment,config_hash:ie,input_hash:ae},widgets:{}}}}}return{queuedRecordIds:o,adoptedRecordIds:s}}function RZ(e,t){Object.values(t.records).forEach(n=>{Object.entries(n.fields).forEach(([n,r])=>{let i=e.resolvedFieldNames[n]||n;if(r.status===`completed`){let e=vK(i,r.value,r);r.widgets=qt(Yt(r.widgets),e)}t.errors.length>0&&(r.status===`pending`||r.status===`queued`)&&(r.status=`failed`)})})}function zZ(e,t){let{expandAllStatuses:n=!1,expandStatuses:r=[]}=t||{},i={};for(let[t,a]of Object.entries(e))(r.includes(a.status)||n)&&t!==`id`?i[t]={...a,widgets:Yt(a.widgets)}:i[t]=a.value;return i}function BZ(e,t={}){return Object.values(e).map(e=>zZ(e.fields,t))}function VZ(e,t={}){return e.map(e=>zZ(e.fields,t))}function HZ(e,t={}){return zZ(e.fields,t)}function UZ(e,t){return e.map(e=>{let n={};return Object.entries(e).forEach(([e,r])=>{let{isExpanded:i,expandedValue:a,resolvedInputValue:o}=gK(r);i===!0&&a.status!=null&&t.unexpandStatuses.includes(a.status)?n[e]=o:n[e]=r}),n})}const WZ={"routing:leads:roundrobin@1":{playbookId:`routing:leads:roundrobin@1`,label:`Round-robin lead routing`,examplePrompt:`Route every new lead in this sheet round-robin to our sellers at the account level — leads from the same company should land with the same seller. Our seller roster is name + email; set it up so I can paste the roster in.`,shortDescription:`Rotate new leads across your sellers at the account level — same company, same seller.`,description:`Assign each new lead to the next seller in rotation — at the ACCOUNT level: resolve a company domain from the intake email (work email → domain directly; personal email → reverse lookup), rotate on that domain, and every lead from the same company lands with the same seller (the counter is stable per value). A roster sheet holds the assignees; the round-robin pipe picks the next roster row and copies the seller's columns onto the lead.`,keywords:[`round robin`,`assignment`,`leads routing`,`distribute`,`rotation`,`sellers`,`sales`,`owner`,`reps`,`territory`,`accounts`,`domain`],steps:[{kind:`pipe`,id:`email:iswork@1`,role:`classify the intake email`,note:`FREE, deterministic: outputs the boolean is_work_email that gates the two domain-resolution branches via run_if.`},{kind:`pipe`,id:`field:domainify@1`,role:`work branch — domain from the email`,note:'Gate with run_if on is_work_email eq true. Map the email column into the pipe\'s input: config.input_fields.url_input.alias = "email" (it tolerates emails — jane@acme.io → acme.io). FREE; outputs `domain`.'},{kind:`pipe`,id:`person:identity:email:waterfall@2`,role:`personal branch — reverse lookup`,note:`Gate with run_if on is_work_email eq false. Resolves the person's standardized profile (person_profile_match) from the email. Billed on success — the work-email branch avoids this spend entirely.`},{kind:`pipe`,id:`json:extract:multi@1`,role:`personal branch — flatten the employer domain`,note:`Extract primary_company_domain from person_profile_match into a flat company_domain column (path "primary_company_domain", output_field.type "string"). Skipped automatically on the work-email branch — its input was never produced there.`},{kind:`pipe`,id:`fields:merge@1`,role:`coalesce the routing key`,note:`merge_fields: [domain, company_domain] — order is precedence, first defined wins. Alias the merge_result output to a fresh column (e.g. routing_domain). Leads with NO resolvable domain are SKIPPED by the rotation (empty counter value) — decide a fallback for them (person-level counter or a manual queue).`},{kind:`search`,id:`users:attio@1`,role:`roster source`,note:`Lists the workspace members (sellers) of the connected CRM. Any roster source works — another CRM's user/owner search, an import, or hand-entered rows.`},{kind:`effect`,id:`search:run@1`,role:`materialize the roster`,note:`Run the roster search into its own sheet (e.g. "sellers"): one row per assignee, with a column that is unique per assignee such as the seller email. The roster is a REFERENCE sheet the routing pipe reads — leads/signups never land in it; they live in their own sheet.`},{kind:`pipe`,id:`row:roundrobin:sheet@1`,role:`assign each account`,note:"config.sheet = the roster sheet's slug, sheet_unique_field = the roster's unique column, sheet_copy_fields = the roster columns to copy onto each lead, counter_field = the coalesced domain column — NOT the person's email (account-level: same company → same seller; person-level is the variant below, for when account grouping is explicitly unwanted). Set an `alias` on every copy field whose roster name already exists on the leads sheet (roster email → seller_email) — without one the copy writes into the existing column. The counter bucket is created automatically; re-runs are stable."}],variants:[{name:`weighted`,note:`Set config.sheet_weight_field to a numeric roster column: a seller with weight w takes w of every W slots, spread across the cycle; 0 pauses a seller; edits reshape future picks only.`},{name:`per-segment pools`,note:`Set config.sheet_where with a templated condition (e.g. segment eq {{ segment }}): each lead rotates over its own pool of roster rows, and each pool cycles on its own counter.`},{name:`separate destination sheet`,note:`When assignments land in their own sheet (not the signups sheet): create the destination, then commit ONE chain — fields:add@1 with config.name for each lead column (including the counter_field column) followed by pipe:add@1 of this pipe — the declared columns are visible to the rest of the chain, so it validates before any rows exist. Fill the destination from the signups sheet with a row:append:sheet@1 pipe, and list ONLY the destination's contract in write_fields (e.g. routing_domain, email, name) — empty write_fields mirrors every source column.`},{name:`person-level rotation`,note:`When account grouping isn't wanted (e.g. consumer signups): skip the domain branches and set counter_field to the lead email — each person rotates independently.`},{name:`ownership continuity`,note:`Production routing assigns the EXISTING owner before rotating: check the CRM first — company:match:attio@1 with the workspace's owner attribute listed in config.custom_properties (Attio companies have no standard owner attribute), json:extract:multi@1 the owner scalar out of the match, then run_if this pipe only when that owner is empty. HubSpot and Salesforce matches carry owners first-class (hubspot_owner_match / the account's owner_id).`},{name:`validated intake`,note:`Drop undeliverable signups before spending enrichment credits: person:email:validate:millionverifier@1 first, then gate the branches with run_if on email_validation_status eq valid.`}],example:{config:{environment:`production`},pipes:[{pipe_id:`email:iswork@1`},{pipe_id:`field:domainify@1`,run_if:{when:{logic:`and`,conditions:[{property:`value`,field_name:`is_work_email`,operator:`eq`,value:!0}]}},config:{input_fields:{url_input:{alias:`email`}}}},{pipe_id:`person:identity:email:waterfall@2`,run_if:{when:{logic:`and`,conditions:[{property:`value`,field_name:`is_work_email`,operator:`eq`,value:!1}]}}},{pipe_id:`json:extract:multi@1`,config:{json_extraction:{field_name:`person_profile_match`,extractions:[{path:`primary_company_domain`,output_field:{format:null,name:`company_domain`,label:`Company domain`,type:`string`}}]}}},{pipe_id:`fields:merge@1`,config:{merge_fields:[{field_name:`domain`},{field_name:`company_domain`}],output_fields:{merge_result:{alias:`routing_domain`,enabled:!0}}}},{pipe_id:`row:roundrobin:sheet@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},config:{sheet:`sellers`,sheet_where:null,sheet_unique_field:{field_name:`email`},sheet_copy_fields:[{field_name:`email`,alias:`seller_email`,type:`string`,format:`email`},{field_name:`first_name`,alias:`seller_first_name`,type:`string`}],sheet_weight_field:{field_name:``},counter_field:{field_name:`routing_domain`}}}],input:[{id:`1`,email:`lead@acme.com`}]}},"enrichment:users:signup@1":{playbookId:`enrichment:users:signup@1`,label:`PLG user enrichment`,examplePrompt:`We push every new product signup into a sheet with user_id, name, and email. Set up user enrichment that keeps itself fresh: LinkedIn profile from the email, one row per work experience in its own sheet, and an enriched_user_profiles sheet of current roles — flagging each profile with the primary employer and whether the signup email belongs to it. Each refresh should also detect sales signals (job changes, promotions) over the row's re-enrichment window and stream them into an append-only signals sheet in the same project.`,shortDescription:`Turn every product signup into a self-refreshing profile system with sales signals; CRM matching is an opt-in variant.`,description:`Enrich every product signup into a living profile system: reverse email lookup → full LinkedIn profile with flat primary title/seniority/domain → explode work experiences into their own sheet → distill an enriched_user_profiles sheet of one row per (person × current employer) — CRM-matching each employer is an opt-in variant, not the default — each flagged with is_primary_employer, profile_matches_signup_email, and signup_email_type and carrying the raw signup_email plus a contact_email column (today a single-source merge of signup_email; the seam where per-employer work-email lookups slot in later without consumers changing) — self-refreshing via scheduled cohorts (managers every 3 months, ICs every 9, failed retries capped by a bucket error counter). Every refresh also scans the profile for sales signals (job changes, promotions, role changes, milestones) over a cadence-derived per-row window and streams them into an append-only signals sheet — in the same project by default, or a dedicated org-wide signals project on request — claim-gated for exactly-once CRM activity sync.`,keywords:[`user enrichment`,`signup enrichment`,`application users`,`plg`,`product led`,`reverse email lookup`,`keep fresh`,`re-enrich`,`refresh`,`experiences`,`work history`,`signups`,`signals`,`job change`,`promotion`,`triggers`],steps:[{kind:`pipe`,id:`person:identity:email:waterfall@2`,role:`full profile from email`,note:`Signups arrive via POST /sheets/{id}/effects/run with rows:add@1 (idempotencyKey per signup) carrying user_id/name/email input columns — user_id is YOUR application's id and is the join key across all three sheets. NAME THE SHEETS AS ONE FAMILY: driver enriched-users, explode destination enriched-user-experiences, distilled sheet enriched-user-profiles — and when org-unique slugs force a suffix, share ONE random suffix across all three (enriched-users-x7k2 / enriched-user-experiences-x7k2 / enriched-user-profiles-x7k2, exactly like the buckets share theirs) so the family reads as a unit in the sheet list; never improvise unrelated names per sheet. This one pipe resolves the email to the full standardized person_profile_match profile plus the profile_url (which the identity-dedupe claim keys on) — no separate URL lookup or profile pipe needed.`},{kind:`pipe`,id:`json:extract:multi@1`,role:`flatten the freshness signals`,note:`Extract the flat columns the freshness conditions read out of person_profile_match — conditions can reference a json field's STATUS but never its value: path "primary_job_title" → primary_job_title, "highest_current_seniority_level" → primary_seniority, "primary_company_domain" → primary_company_domain, and "employment_history[[0..9]][]" → the experiences array for the explode, CAPPED to the 10 most recent entries (providers list newest first; the trailing [] keeps a single entry an array) so a pathological 80-position profile can't fan out into 80 rows.`},{kind:`pipe`,id:`email:iswork@1`,role:`classify the signup email`,note:`email → is_work_email (boolean). Free/deterministic — this and the next two steps derive per-signup facts that ride along into every downstream profile row.`},{kind:`pipe`,id:`field:domainify@1`,role:`signup email domain`,note:`Alias url_input to email and the domain output to signup_email_domain — the domain the person registered with, later compared per profile row against each employer's domain.`},{kind:`pipe`,id:`template:fill@1`,role:`derive signup_email_type`,note:'Template `{% if is_work_email == true %}work_email{% else %}personal_email{% endif %}`, output aliased signup_email_type. Use the == comparison (not a bare `{% if is_work_email %}`) — a bare identifier is a presence GUARD that makes the input optional, and a missing classification must skip this cell, not emit "personal_email".'},{kind:`pipe`,id:`field:timestamp@1`,role:`attempt stamp`,note:`Alias the output last_attempted_at. run_if on person_profile_match status listing ALL statuses (completed, failed, no_result, skipped) — the reference orders it after the waterfall and an attempt stamps regardless of outcome. The cohort where-conditions key on this column with older_than_days.`},{kind:`pipe`,id:`bucket:countif@1`,role:`error counter + success tracker`,note:`Two instances, both keyed user_id with the same broad run_if. #1: where status(person_profile_match) eq failed → alias error_count (the retry cap reads error_count lte 3). #2: where status eq completed → enable the last-at output aliased last_successfully_enriched_at (wipe-proof: on failed re-runs the read branch re-emits the last success time from the bucket) and alias the count times_enriched.`},{kind:`pipe`,id:`bucket:claim@1`,role:`identity dedupe`,note:`Claim profile_url with on_own_entry: proceed — the original row keeps re-claiming its own entry across refreshes, while a duplicate signup that resolves to an already-claimed identity gets no_result. That no_result only skips pipes that DEPEND on this output: the downstream write pipes (both deletes and both explodes) must reference is_claim_successful in their run_if (value eq true), or the dedupe is decorative and duplicates fan out anyway.`},{kind:`pipe`,id:`rows:delete:sheet@1`,role:`replace-on-success deletes`,note:`Two instances: delete from the experiences sheet and from enriched_user_profiles where user_id eq "{{ user_id }}". Output names are sheet-global, so ALIAS each instance's sheet_deleted_count (experiences_deleted_count / profiles_deleted_count) — two instances with the default name collide and the pipeline won't validate. GATE both with run_if is_claim_successful eq true — this is what enforces replace-on-SUCCESS: user_id is an input column, so NOTHING skips these deletes automatically (typed-input skip-propagation only applies when the templated key is an enrichment output), and the claim flag transitively requires a completed profile AND identity ownership, so failed/no_result refreshes and duplicate signups never touch previously written rows. Note that position in the pipes array is NOT execution order (pipes run in dependency waves, independent pipes concurrently) — delete-before-append is guaranteed by the EXPLODE's run_if referencing these count outputs, never by list ordering.`},{kind:`pipe`,id:`row:expandappend:sheet@1`,role:`explode into experiences sheet`,note:"One row per employment entry on enriched_user_experiences, with write_fields: [user_id, name, email (alias signup_email), signup_email_domain, signup_email_type] so every exploded row carries the join key AND the signup-email facts — the alias renames the raw `email` column to the unambiguous `signup_email` at the destination, so no rename pipe is needed on the driver; run_added_rows: true enriches the new rows immediately. GATE with run_if status(experiences_deleted_count) eq completed AND status(profiles_deleted_count) eq completed — those two references are the dependency EDGES that make both deletes finish before this append runs (array position guarantees nothing; unrelated pipes run concurrently), and since skipped deletes never reach completed, a failed refresh or duplicate signup skips the append too. THE EXPERIENCES SHEET'S OWN PROGRAM (a separate sheet, so not in this example chain): json:extract:multi@1 flattens expanded_value (company_domain, job_title, seniority_level, tenure, is_current_employer, and is_primary_current_employer → alias is_primary_employer) → formula:run@1 with code `return inputs.company_domain === inputs.signup_email_domain;`, formula_inputs [company_domain, signup_email_domain], result_type boolean → alias profile_matches_signup_email (a REAL boolean column, not a \"true\"/\"false\" string — never derive it with template:fill, which can only emit strings; typed inputs mean a row with no employer domain skips: no domain, no match claim) → row:append:sheet@1 into enriched_user_profiles with run_if is_current_employer eq true, write_fields user_id/name/signup_email/job_title/tenure/seniority/is_primary_employer/profile_matches_signup_email/signup_email_type, and run_added_rows: true so each new profile row immediately runs enriched_user_profiles' own program (the contact_email merge) instead of waiting for a manual run. CRM matching of employers is deliberately NOT in this default program — every current employer becomes a profile row, matched or not; when the user asks to check employers against their CRM, build the 'CRM matching' variant. Attach that program DECLARE-FIRST: fields:add@1 the input columns the explode will write (user_id, name, signup_email, signup_email_domain, signup_email_type, expanded_value as json), then pipe:add@1 the whole chain in the same build — it validates before a single row exists, and the first explode's rows enrich immediately; never wait for exploded data to appear before attaching the program. A person with N current positions appears N times in enriched_user_profiles — by design: each row is one (person × employer) lead, and the flags tell the consumer how to read it (route/score the is_primary_employer row; a row where profile_matches_signup_email is true is the employer the person signed up AS — the highest-intent lead). THE ENRICHED_USER_PROFILES SHEET'S OWN PROGRAM: a single fields:merge@1 — merge_fields [signup_email] → alias contact_email. contact_email is the outreach seam: consumers ALWAYS read contact_email, never signup_email directly, so the mechanism behind it can change without anyone's parsing changing. Today it is just the signup address; when a row needs a different mechanism — the person signed up as tom@google.com but this row is their Microsoft board seat, or they signed up with a personal address — add a work-email discovery pipe on enriched_user_profiles keyed on the row's company_domain and prepend its output to merge_fields (first defined wins). Deliberately NOT default: per-row email discovery is billable."},{kind:`pipe`,id:`formula:run@1`,role:`derive the per-row signal window`,note:`Compute the scan-window start from the cadence the freshness cohorts give the row: inputs.primary_seniority → cohort days + slack (98 for the managers+ 90-day cohort, 284 for the ICs 270-day cohort) → Date.now() − days as a YYYY-MM-DD date, output aliased signal_window_start (result_type date). Derive the window from CADENCE, never from last_successfully_enriched_at — that countif output is restamped to now within the same cohort run before downstream pipes read it, which would collapse the window to zero. The slack days absorb backlog delay from the daily window cap; thresholds are plain data in the code.`},{kind:`pipe`,id:`signals:personprofilematch@1`,role:`detect sales signals`,note:`The typed person_profile_match input orders it after the waterfall, no run_if needed — a failed profile skips it. The optional signal_window_start input overrides config.default_window (l90d) per row, so a manager refreshed every ~90 days looks back 98 and an IC refreshed every ~270 looks back 284. Emits signal_list plus the flat mirror signal_count (always populated — conditions stay evaluable). Every signal carries a stable sig_ id: the same real-world event hashes identically across providers and overlapping scans, which is what makes the downstream claim gate exactly-once.`},{kind:`pipe`,id:`row:expandappend:sheet@1`,role:`explode signals into the signals sheet`,note:`One row per signal on the signals sheet — SAME project as the enrichment sheets by default (a user who wants an org-wide stream fed by several systems says so and points this at a dedicated signals project; allow_entity_creation creates the sheet on first run). GATE with run_if is_claim_successful eq true — a duplicate signup resolving to an already-claimed identity must not emit a second copy of every signal. The signals table is STANDARDIZED to a single input column: destination_field_name 'signal_match' holds the whole payload, and NO write_fields — the signal is self-contained (person_name, profile_url, company_domain, metadata all inside), so joins go through extracted columns, never carried ones. Every signals:* producer, person- or company-scoped, appends this same shape into the same table. run_added_rows: true. THE SIGNALS SHEET'S OWN PROGRAM (attach DECLARE-FIRST in the same build — fields:add@1 signal_match as json, then pipe:add@1 the chain; a separate sheet, so not in this example chain): json:extract:multi@1 flattens signal_match → signal_id/signal/signal_category/signal_subcategory/signal_label/signal_occurred_at/signal_scope/company_domain/company_name/person_name/profile_url (plus any signal_metadata.* details the consumer needs) → bucket:claim@1 on signal_id (bucket crm-synced-signals, on_own_entry proceed) as the exactly-once gate → CRM activity sync (activity:log:hubspot@1 / activity:log:salesforce@1) gated by the claim flag, mapping signal_category (or signal_subcategory for finer books) to the CRM activity type. The signals sheet is APPEND-ONLY — do NOT point the replace-on-success deletes at it: overlapping windows re-emit the same signal_id and the claim gate turns duplicates into no_result instead of duplicate CRM activities.`},{kind:`effect`,id:`rows:enrich@1`,role:`freshness cohorts (scheduled)`,note:`ONE schedule (daily cron) carrying a chain of four rows:enrich@1 effects on enriched_users, each with config.pipes [] (all pipes — the email lookup IS the profile fetch, billed once per refresh), a window selection to cap per-day work/spend, and a config.where cohort: managers+ (primary_seniority matches "^(c_suite|leadership|manager)$" AND last_attempted_at older_than_days 90 AND status completed; run_statuses ["completed"]), ICs (complement, older_than_days 270), failed retry (status failed AND older_than_days 7 AND error_count lte 3; run_statuses ["failed","completed","skipped"]), no_result retry (status no_result AND older_than_days 90; run_statuses ["no_result","completed","skipped"]). The widened retry run_statuses are REQUIRED — they restamp the timestamp/counter cells and re-activate the skipped delete/explode chain on success.`}],variants:[{name:`CRM matching (opt-in)`,note:`NOT in the default flow — build only when the user asks to check employers against their CRM. Add a company match by domain on enriched_user_experiences (company:match:attio@1 / company:match:hubspot@1 / account:match:salesforce@1, keyed on company_domain) and carry the match outputs (found-flag, record id) into the enriched_user_profiles append's write_fields so consumers can route on CRM presence. Keep the append's run_if on is_current_employer alone unless the user explicitly wants CRM-only profiles — ANDing the found-flag in drops every non-CRM employer from the profiles sheet. Create-missing-accounts via record:assert:salesforce@1 (Salesforce only).`},{name:`Cadence tuning`,note:`The cohort where-conditions are plain data in the schedule payload — change older_than_days thresholds, the seniority regex, or the retry cap without touching the pipes.`},{name:`Contact-email mechanisms`,note:`contact_email on enriched_user_profiles is a fields:merge@1 seam, today just [signup_email]. To reach a person at an employer the signup email doesn't cover (personal-email signups, board/advisor rows at another company), add a work-email discovery pipe on enriched_user_profiles keyed on the row's company_domain and prepend its output to merge_fields — first defined wins, and consumers keep reading contact_email unchanged. Off by default: per-row email discovery is billable, and the signup address is already the right contact for the profile_matches_signup_email row.`},{name:`Rehearsal`,note:`Build the whole program in sandbox first (env:change@1): deterministic pipes (timestamp, json:extract, formula, signals) run for real; profile providers, bucket writes, and cross-sheet deletes/appends are mocked. Switch to production when shapes look right.`},{name:`Signal filtering`,note:`config.signals on signals:personprofilematch@1 is a multi-select over the signal types (empty = all) — narrow to promotions + job changes for a lean CRM feed, or keep milestones for nurture plays. default_window sizes the lookback when no window-start date is mapped.`}],example:{config:{environment:`production`},pipes:[{pipe_id:`person:identity:email:waterfall@2`},{pipe_id:`json:extract:multi@1`,config:{json_extraction:{field_name:`person_profile_match`,extractions:[{path:`primary_job_title`,output_field:{format:null,name:`primary_job_title`,label:`Primary job title`,type:`string`}},{path:`highest_current_seniority_level`,output_field:{format:null,name:`primary_seniority`,label:`Primary seniority`,type:`string`}},{path:`primary_company_domain`,output_field:{format:null,name:`primary_company_domain`,label:`Primary company domain`,type:`string`}},{path:`employment_history[[0..9]][]`,output_field:{format:null,name:`experiences`,label:`Experiences`,type:`json`}}]}}},{pipe_id:`email:iswork@1`},{pipe_id:`field:domainify@1`,config:{input_fields:{url_input:{alias:`email`}},output_fields:{domain:{alias:`signup_email_domain`,enabled:!0}}}},{pipe_id:`template:fill@1`,config:{template:`{% if is_work_email == true %}work_email{% else %}personal_email{% endif %}`,output_fields:{template_output:{alias:`signup_email_type`,enabled:!0}}}},{pipe_id:`field:timestamp@1`,run_if:{action:`run`,when:{logic:`or`,conditions:[{property:`status`,field_name:`person_profile_match`,operator:`eq`,value:`completed`},{property:`status`,field_name:`person_profile_match`,operator:`eq`,value:`failed`},{property:`status`,field_name:`person_profile_match`,operator:`eq`,value:`no_result`},{property:`status`,field_name:`person_profile_match`,operator:`eq`,value:`skipped`}]}},config:{output_fields:{timestamp:{alias:`last_attempted_at`,enabled:!0}}}},{pipe_id:`bucket:countif@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},run_if:{action:`run`,when:{logic:`or`,conditions:[{property:`status`,field_name:`person_profile_match`,operator:`eq`,value:`completed`},{property:`status`,field_name:`person_profile_match`,operator:`eq`,value:`failed`},{property:`status`,field_name:`person_profile_match`,operator:`eq`,value:`no_result`}]}},config:{bucket:`enrich-errors`,entry_fields:[{field_name:`user_id`}],contract:``,where:{logic:`and`,conditions:[{property:`status`,field_name:`person_profile_match`,operator:`eq`,value:`failed`}]},allow_bucket_creation:!0,output_fields:{bucket_event_count:{alias:`error_count`,enabled:!0},bucket_event_last_at:{alias:``,enabled:!1}}}},{pipe_id:`bucket:claim@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},config:{bucket:`enriched-identities`,entry_fields:[{field_name:`profile_url`}],contract:``,new_bucket_own_entry_behavior:`proceed`,allow_bucket_creation:!0}},{pipe_id:`rows:delete:sheet@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},run_if:{action:`run`,when:{logic:`and`,conditions:[{property:`value`,field_name:`is_claim_successful`,operator:`eq`,value:!0}]}},config:{sheet:`enriched-user-experiences`,where:{logic:`and`,conditions:[{property:`value`,field_name:`user_id`,operator:`eq`,value:`{{ user_id }}`}]},output_fields:{sheet_deleted_count:{alias:`experiences_deleted_count`,enabled:!0}}}},{pipe_id:`rows:delete:sheet@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},run_if:{action:`run`,when:{logic:`and`,conditions:[{property:`value`,field_name:`is_claim_successful`,operator:`eq`,value:!0}]}},config:{sheet:`enriched-user-profiles`,where:{logic:`and`,conditions:[{property:`value`,field_name:`user_id`,operator:`eq`,value:`{{ user_id }}`}]},output_fields:{sheet_deleted_count:{alias:`profiles_deleted_count`,enabled:!0}}}},{pipe_id:`row:expandappend:sheet@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},run_if:{action:`run`,when:{logic:`and`,conditions:[{property:`status`,field_name:`experiences_deleted_count`,operator:`eq`,value:`completed`},{property:`status`,field_name:`profiles_deleted_count`,operator:`eq`,value:`completed`}]}},config:{project:`user-enrichment`,sheet:`enriched-user-experiences`,write_fields:[{field_name:`user_id`},{field_name:`name`},{field_name:`email`,alias:`signup_email`},{field_name:`signup_email_domain`},{field_name:`signup_email_type`}],input_fields:{input_objects:{alias:`experiences`}},run_added_rows:!0}},{pipe_id:`formula:run@1`,config:{code:`const days = ["c_suite", "leadership", "manager"].includes(inputs.primary_seniority) ? 98 : 284;
|
|
142
|
-
return new Date(Date.now() - days * 86400000).toISOString().slice(0, 10);`,formula_inputs:[{field_name:`primary_seniority`}],result_type:`date`,output_fields:{formula_result:{alias:`signal_window_start`,enabled:!0}}}},{pipe_id:`signals:personprofilematch@1`,config:{signals:[],default_window:`l90d`,input_fields:{person_profile_match:{alias:``},signal_window_start:{alias:``}},output_fields:{signal_list:{alias:``,enabled:!0},signal_count:{alias:``,enabled:!0}}}},{pipe_id:`row:expandappend:sheet@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},run_if:{action:`run`,when:{logic:`and`,conditions:[{property:`value`,field_name:`is_claim_successful`,operator:`eq`,value:!0}]}},config:{project:`user-enrichment`,sheet:`signals`,write_fields:[],destination_field_name:`signal_match`,destination_field_type:`json`,destination_field_format:`json_object`,destination_field_label:`Signal`,input_fields:{input_objects:{alias:`signal_list`}},output_fields:{sheet_record_ids:{alias:`signal_record_ids`,enabled:!0}},run_added_rows:!0}}],input:[{id:`1`,user_id:`u_123`,name:`Jane Doe`,email:`jane@acme.com`}]}}},
|
|
143
|
-
`)}function _Q({instanceUrl:e,objectApiName:t,recordId:n}){let r;try{r=new URL(e).host}catch{r=e.replace(/^https?:\/\//,``).replace(/\/.*$/,``)}return`https://${r.endsWith(`.my.salesforce.com`)?r.replace(/\.my\.salesforce\.com$/,`.lightning.force.com`):r}/lightning/r/${t}/${n}/view`}const vQ=/^[a-zA-Z][a-zA-Z0-9_]*(\.[a-zA-Z][a-zA-Z0-9_]*)*$/,yQ=/^[a-zA-Z0-9]{15}([a-zA-Z0-9]{3})?$/;function bQ(e){return vQ.test(e)}function xQ(e){return yQ.test(e)}function SQ(e){if(!bQ(e))throw Error(`'${e}' is not a valid Salesforce field reference. Use the field's API name (letters, digits, underscores; dots only for parent traversal like Account.Name).`);return e}function CQ(e){return e.replace(/\\/g,`\\\\`).replace(/'/g,`\\'`)}function wQ(e){return`'${CQ(e)}'`}function TQ(e){return CQ(e).replace(/([%_])/g,`\\$1`)}function EQ(e){if(e.length===0)throw Error(`IN () with an empty list is invalid SOQL`);return`(${e.map(wQ).join(`, `)})`}const DQ=new Set([`YESTERDAY`,`TODAY`,`TOMORROW`,`THIS_WEEK`,`LAST_WEEK`,`NEXT_WEEK`,`THIS_MONTH`,`LAST_MONTH`,`NEXT_MONTH`,`THIS_QUARTER`,`LAST_QUARTER`,`NEXT_QUARTER`,`THIS_YEAR`,`LAST_YEAR`,`NEXT_YEAR`,`THIS_FISCAL_QUARTER`,`LAST_FISCAL_QUARTER`,`NEXT_FISCAL_QUARTER`,`THIS_FISCAL_YEAR`,`LAST_FISCAL_YEAR`,`NEXT_FISCAL_YEAR`]),OQ=/^(LAST|NEXT)_N_(DAYS|WEEKS|MONTHS|QUARTERS|YEARS|FISCAL_QUARTERS|FISCAL_YEARS):\d{1,4}$/;function kQ(e){let t=e.trim().toUpperCase();return DQ.has(t)||OQ.test(t)}const AQ=/^\d{4}-\d{2}-\d{2}$/,jQ=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,3})?(Z|[+-]\d{2}:\d{2})$/;function MQ(e){let t=e.trim();if(kQ(t))return t.toUpperCase();if(AQ.test(t)||jQ.test(t))return t;throw Error(`'${e}' is not a valid Salesforce date value. Use ISO format (2026-01-31 or 2026-01-31T00:00:00Z) or a SOQL date literal like LAST_N_DAYS:30.`)}function NQ(e,t){let n=Number(e);if(!Number.isFinite(n))throw Error(`'${e}' is not a valid number`);if(t){if(!/^[A-Z]{3}$/.test(t))throw Error(`'${t}' is not a valid ISO currency code`);return`${t}${n}`}return String(n)}function PQ(e){if(typeof e==`boolean`)return String(e);let t=e.trim().toLowerCase();if(t===`true`||t===`false`)return t;throw Error(`'${e}' is not a valid boolean (use true or false)`)}function FQ(e){if(!xQ(e))throw Error(`'${e}' is not a valid Salesforce record id cursor`);return`Id > ${wQ(e)}`}var IQ=class extends zt{getConnectionsRequirements(){return[]}getProviderNames(){return[]}estimateBillableOperations(e){return[]}};const LQ=`report:deliver:email@1`,RQ=r.object({effect_id:r.literal(LQ),config:r.object({recipients:r.array(r.email()).min(1).max(20).describe(`Email addresses to send the report's current version to.`),subject:r.string().max(200).optional().describe(`Email subject. Defaults to the report name.`)})}),zQ=class extends IQ{effectId=LQ;schema=RQ;payload;billableOperations={};constructor(e){super(),this.payload=this.validatePayload(e)}},BQ=RQ,VQ={effectId:LQ,baseEffect:Lt(LQ),label:`Email report`,description:`Send the report's CURRENT version to a list of email addresses via the platform sender. Chain it after report:generate@1 for 'refresh, then send' schedules.`,keywords:[`send`,`email`,`deliver`,`share`],lifecycle:null,billableOperations:{},allowedUserConnectionProviders:[],managedProviders:[`resend`],defaultPayload:{effect_id:LQ,config:{recipients:[]}}},HQ=`report:generate@1`,UQ=`report-generate-v1`,WQ=Zc(UQ),GQ=r.looseObject({effect_id:r.string().describe(`A data effect id. Allowed: search:run@1, rows:enrich@1, rows:remove@1, rows:removeempty@1, rows:dedupe@1.`),config:r.record(r.string(),r.unknown()).optional().describe(`The effect's full config — exact shape from get_effect_schema(effect_id), e.g. the complete search:run@1 payload including its connector and date window (created_within etc.).`)}),KQ=r.object({sheet:r.string().min(1).describe(`Org-unique SLUG of the report-input sheet to regenerate. Must be in the report's project (mutations never cross the project boundary).`),mode:r.enum([`replace`,`append`]).default(`replace`).describe(`replace (default): every existing row is removed first, so the sheet is fully regenerated as the current time slice — report-input sheets are recomputed, not ever-growing. append: keep existing rows (rare; only when accumulation is explicitly wanted).`),effects:r.array(GQ).min(1).describe(`The refresh chain, run in order — typically ONE search:run@1 fetching the report's time slice. Validated against the sheet's schema when the schedule/run is created and again at fire time.`),run_added_rows:r.boolean().default(!0).describe(`After the chain, run the sheet's pipes over exactly the rows it added, so fresh rows are enriched before the report reads them. Default true.`)}),qQ=r.object({effect_id:r.literal(HQ),config:r.object({prompt:r.string().min(1).describe("What the generated version should contain, self-contained: the run executes headlessly (e.g. on a schedule) with no conversation context, so include everything needed — which sheets/data to read, structure, tone. CONTENT ONLY: data refreshing belongs in `refresh`, never described in prose here."),model:r.enum(Pc).default(Vc),prompt_label:r.string().max(200).optional().describe(`Short label for the version switcher. Defaults to a generated one.`),refresh:KQ.optional().describe("Deterministic data refresh the runner executes BEFORE the AI generates — the reliable way to recompute report data each run (a prose description in `prompt` is interpreted by a model and can silently skip the reset). If the refresh fails, the run fails: a version is never generated from stale data.")})}),JQ=class extends IQ{effectId=HQ;schema=qQ;payload;billableOperations=WQ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return Gc(this.payload.config.model)}getProviderNames(){return Wc(this.payload.config.model)}estimateBillableOperations(e){return $c(e,{model:this.payload.config.model,prefix:UQ,inputTokens:3e4,outputTokens:8e3})}},YQ=qQ,XQ={effectId:HQ,baseEffect:Lt(HQ),label:`Generate report version`,description:`Generate a new report version from a stored prompt with a headless AI run. The path for scheduled refreshes and delegated creation — set config.refresh and the run first fully regenerates the report's in-project input sheet (remove all rows, re-run the declared search, enrich) before generating, so the version reflects fresh data, not the rows left over from last time. For content you already computed, use report:update@1 instead.`,keywords:[`refresh`,`regenerate`,`ai`,`schedule`],lifecycle:null,billableOperations:WQ,allowedUserConnectionProviders:[],managedProviders:Kc(),defaultPayload:{effect_id:HQ,config:{prompt:``,model:Vc}}},ZQ=`report:update@1`,QQ=r.record(r.string(),r.unknown()),$Q=r.object({mode:r.enum([`edit`,`full_rewrite`]).describe(`"edit" applies exact unique-substring replacements to the current markdown (preferred for targeted changes); "full_rewrite" replaces the whole body. An EMPTY report (no versions) gets its first version via "full_rewrite".`),edits:r.array(r.object({old_str:r.string().min(1),new_str:r.string()})).optional().describe(`Required for mode "edit": exact-match replacements. Each old_str must occur exactly once — include surrounding context to disambiguate.`),markdown:r.string().optional().describe(`Required for mode "full_rewrite": the complete new body in the report dialect.`),data:QQ.optional().describe(`Full replacement for the frozen data snapshot.`),data_patch:QQ.optional().describe(`Shallow merge into the current snapshot; a key set to null is removed.`),prompt_label:r.string().max(200).optional().describe(`Short label for the version switcher describing this change from the user's point of view (e.g. "Add churn-risk callout").`)}).superRefine((e,t)=>{e.mode===`full_rewrite`&&!e.markdown&&t.addIssue({code:`custom`,path:[`markdown`],message:`mode "full_rewrite" requires the complete new markdown.`}),e.mode===`edit`&&!e.edits?.length&&t.addIssue({code:`custom`,path:[`edits`],message:`mode "edit" requires at least one entry in edits.`}),e.data!==void 0&&e.data_patch!==void 0&&t.addIssue({code:`custom`,path:[`data_patch`],message:`Pass either data (full replacement) or data_patch (merge), not both.`})}),e$=r.object({effect_id:r.literal(ZQ),config:$Q}),t$=class extends IQ{effectId=ZQ;schema=e$;payload;billableOperations={};constructor(e){super(),this.payload=this.validatePayload(e)}},n$=e$,r$={effectId:ZQ,baseEffect:Lt(ZQ),label:`Update report`,description:`Append an immutable new version with content the caller already computed — substring edits or a full rewrite, plus an optional data-snapshot change. Deterministic: no model call.`,keywords:[`edit`,`rewrite`,`version`,`append`],lifecycle:null,billableOperations:{},allowedUserConnectionProviders:[],managedProviders:[],defaultPayload:{effect_id:ZQ,config:{mode:`full_rewrite`,markdown:`## Overview`}}},i$=r.object({effect_id:Ct,config_hash:r.string(),status:r.enum([`completed`,`failed`,`skipped`]),error:r.string().optional()}),a$={"report:update@1":t$,"report:generate@1":JQ,"report:deliver:email@1":zQ},o$={"report:update@1":n$,"report:generate@1":YQ,"report:deliver:email@1":BQ},s$={"report:update@1":r$,"report:generate@1":XQ,"report:deliver:email@1":VQ};function c$(e){return a$[e]}function l$(e){return s$[e]}function u$(e){return o$[e]}function d$(e){let t=a$[e.effect_id];if(!t)throw Error(`Unknown report effect '${e.effect_id}'`);return new t(e)}function f$(){return Object.keys(s$).filter(e=>s$[e].agentExposure!==`excluded`)}function p$(e){return s$[e]?.agentExposure!==`excluded`}const m$=t.discriminatedUnion(`effect_id`,Object.values(o$).map(e=>e)).openapi(`ReportEffectPayload`),h$=t.object({effects:t.array(m$).min(1)}).openapi(`ReportEffectsRequest`),g$=t.object({id:t.string(),status:Bt,effects:t.array(i$),before_version:t.number().int().nullable(),after_version:t.number().int().nullable(),version_id:t.string().nullable(),delivered_to:t.array(t.string()).nullable()}).openapi(`ReportEffectsResponse`);function _$(e){let t=(e??[]).map(e=>v$(e));if(t.length===0)return{title:`Report effect run`,description:`A report effect run with no steps.`};let[n]=t;return t.length===1&&n?{title:n.title,description:n.description}:{title:`${t.length} steps: ${t.map(e=>e.title).join(` · `)}`,description:t.map(e=>e.description).join(` · `)}}function v$(e){let t=e.effect_id,n=Lt(t),r=e.config??{};switch(n){case`report:update`:return(r.mode===`edit`?`edit`:`rewrite`)==`edit`?{title:`Edited report`,description:`Applied targeted edits as a new version.`}:{title:`Rewrote report`,description:`Replaced the report body as a new version.`};case`report:generate`:{let e=typeof r.prompt==`string`?r.prompt.trim():``,t=e.length>80?`${e.slice(0,80)}…`:e;return{title:`Generated report version`,description:t?`Generated a new version from the prompt: ${t}`:`Generated a new version from a stored prompt.`}}case`report:deliver:email`:{let e=Array.isArray(r.recipients)?r.recipients.length:void 0;return{title:`Emailed report`,description:e==null?`Sent the report by email.`:`Sent the report to ${e} ${e===1?`recipient`:`recipients`}.`}}default:{let e=y$(t);return{title:e??t,description:e??t}}}}function y$(e){try{return l$(e)?.label}catch{return}}function b$(e,t){let n=e;for(let[e,r]of t.entries()){let t=n.indexOf(r.old_str);if(t===-1)return{ok:!1,errors:[{message:`edits[${e}].old_str not found in the current markdown. Read the report (read_report) and copy the target text exactly, or use mode "full_rewrite".`}]};if(n.indexOf(r.old_str,t+1)!==-1)return{ok:!1,errors:[{message:`edits[${e}].old_str matches more than once — extend it with surrounding context until it is unique.`}]};n=n.slice(0,t)+r.new_str+n.slice(t+r.old_str.length)}return{ok:!0,markdown:n}}function x$(e,t){let n={...e};for(let[e,r]of Object.entries(t))r===null?delete n[e]:n[e]=r;return n}const S$=[`Metric`,`DataTable`,`Chart`,`Callout`,`Stats`],C$=[`info`,`success`,`warning`,`danger`],w$=500,T$=r.union([r.string(),r.number(),r.boolean(),r.null()]),E$=r.record(r.string(),T$),D$=r.object({kind:r.literal(`metric`),label:r.string().min(1),value:r.union([r.string(),r.number()]),unit:r.string().optional(),delta:r.union([r.string(),r.number()]).optional(),deltaDirection:r.enum([`up`,`down`,`flat`]).optional(),caption:r.string().optional()}),O$=r.object({key:r.string().min(1),label:r.string().min(1),format:r.enum([`text`,`number`,`bar`,`dots`]).optional(),subtitleKey:r.string().min(1).optional(),dots:r.array(r.object({key:r.string().min(1),label:r.string().optional()})).min(1).max(5).optional()}),k$=r.object({kind:r.literal(`table`),columns:r.array(O$).min(1),rows:r.array(E$).max(500),rank:r.boolean().optional(),sortKeys:r.array(r.string().min(1)).min(1).max(5).optional()}).superRefine((e,t)=>{e.columns.forEach((e,n)=>{e.format===`dots`&&!e.dots&&t.addIssue({code:`custom`,path:[`columns`,n,`dots`],message:'columns with format "dots" require a `dots` array of { key, label? } entries'}),e.format!==`dots`&&e.dots&&t.addIssue({code:`custom`,path:[`columns`,n,`dots`],message:'`dots` is only allowed on columns with format "dots"'})});let n=new Set(e.columns.map(e=>e.key));(e.sortKeys??[]).forEach((e,r)=>{n.has(e)||t.addIssue({code:`custom`,path:[`sortKeys`,r],message:`sortKeys entry "${e}" is not a column key`})})}),A$=r.object({kind:r.literal(`chart`),type:r.enum([`bar`,`line`,`area`,`pie`]),x:r.string().min(1),series:r.array(r.object({key:r.string().min(1),label:r.string().optional()})).min(1),rows:r.array(E$).max(500)}),j$=r.object({kind:r.literal(`stats`),items:r.array(r.object({label:r.string().min(1),value:r.union([r.string(),r.number()]),unit:r.string().optional()})).min(1).max(6)}),M$=r.discriminatedUnion(`kind`,[D$,k$,A$,j$]),N$=r.record(r.string(),M$),P$={Metric:`metric`,DataTable:`table`,Chart:`chart`,Stats:`stats`},F$={Metric:[`data`],DataTable:[`data`],Chart:[`data`],Callout:[`variant`],Stats:[`data`]},I$=new Set(S$),L$=new Set([`Metric`,`DataTable`,`Chart`]),R$=/<(?:\/?[A-Za-z][A-Za-z0-9-]*(?=[\s/>])|!--|!|\?)/g,z$=RegExp(`<(?=[ \\t]|/[ \\t])[ \\t]*/?[ \\t]*(${S$.join(`|`)})\\b[^>\\n]*>`,`g`),B$=/([A-Za-z_][A-Za-z0-9_-]*)\s*=\s*"([^"]*)"/g;function V$(e){let t=[],n=e.split(`
|
|
144
|
-
`),r=0,i=null,a=null;for(let e of n){let n=e.trimStart(),o=/^(```|~~~)/.exec(n)?.[1]??null;if(i==null)if(o)i=r,a=o;else{let n=[...e.matchAll(/`+/g)];for(let e=0;e<n.length-1;e+=1){let i=n[e];if(!i)continue;let a=n.slice(e+1).find(e=>e[0].length===i[0].length);a&&(t.push([r+i.index,r+a.index+a[0].length]),e=n.indexOf(a))}}else o===a&&(t.push([i,r+e.length]),i=null,a=null);r+=e.length+1}return i!=null&&t.push([i,e.length]),t}const
|
|
145
|
-
`).length;function W$(e,t){let n=e.indexOf(`>`,t);return n===-1?null:{raw:e.slice(t,n+1),end:n+1}}function G$(e,t,n,r){let i={};for(let e of t.matchAll(B$)){let[,t,n]=e;t!==void 0&&n!==void 0&&(i[t]=n)}let a=t.replace(B$,``).trim();return a.length>0&&r.push({code:`malformed_component`,message:`<${e}> has malformed attributes near "${a.slice(0,40)}" — use key="value" pairs with double quotes`,line:n}),i}function K$(e){let t=[],n=[],r=V$(e);for(let t of e.matchAll(z$)){let i=t[1];if(!i||H$(r,t.index))continue;let a=t[0].slice(0,t[0].indexOf(i)+i.length),o=/^<[ \t]*\//.test(t[0])?`</${i}>`:i===`Callout`?`<Callout variant="...">`:`<${i} data="..." />`;n.push({code:`malformed_component`,message:`"${a}" has whitespace after "<" — component tags must start immediately: ${o}`,line:U$(e,t.index)})}let i=(n,r)=>{let i=e.slice(n,r);i.trim().length>0&&t.push({type:`markdown`,content:i})},a=0;R$.lastIndex=0;let o=R$.exec(e);for(;o;){let s=o.index;if(s<a||H$(r,s)){o=R$.exec(e);continue}let c=U$(e,s),l=o[0];if(l===`<!--`||l===`<!`||l===`<?`){n.push({code:`raw_html`,message:`Raw HTML is not allowed in reports`,line:c}),o=R$.exec(e);continue}let u=l.startsWith(`</`),d=l.slice(u?2:1);if(!I$.has(d)){n.push(/^[a-z]/.test(d)?{code:`raw_html`,message:`Raw HTML is not allowed in reports (<${d}>)`,line:c}:{code:`unknown_tag`,message:`Unknown component <${d}> — allowed: ${S$.join(`, `)}`,line:c}),o=R$.exec(e);continue}let f=d;if(u){n.push({code:`unbalanced_callout_close`,message:`</${f}> has no matching opening tag`,line:c}),o=R$.exec(e);continue}let p=W$(e,s);if(!p){n.push({code:`malformed_component`,message:`<${f} is never closed with ">"`,line:c});break}i(a,s);let ee=p.raw.endsWith(`/>`),te=G$(f,p.raw.slice(1+f.length,ee?-2:-1),c,n);if(L$.has(f))ee||n.push({code:`malformed_component`,message:`<${f}> must be self-closing: <${f} data="..." />`,line:c}),t.push({type:`component`,tag:f,attrs:te,line:c}),a=p.end;else{let i=``,o=p.end;if(ee)t.push({type:`component`,tag:f,attrs:te,children:i,line:c});else{let a=-1,s=p.end;for(;;){let t=e.indexOf(`</Callout>`,s);if(t===-1)break;if(!H$(r,t)){a=t;break}s=t+1}a===-1?(n.push({code:`unclosed_callout`,message:`<Callout> is missing its closing </Callout>`,line:c}),i=e.slice(p.end),o=e.length):(i=e.slice(p.end,a),o=a+10);for(let t of i.matchAll(new RegExp(R$.source,`g`))){let i=p.end+t.index;if(H$(r,i))continue;let a=t[0].replace(/^<\/?/,``),o=U$(e,i);I$.has(a)?n.push({code:`component_inside_callout`,message:`<${a}> cannot appear inside <Callout> — callout children are plain markdown`,line:o}):/^[a-z!?]/.test(a)||t[0].startsWith(`<!`)?n.push({code:`raw_html`,message:`Raw HTML is not allowed in reports`,line:o}):n.push({code:`unknown_tag`,message:`Unknown component <${a}> — allowed: ${S$.join(`, `)}`,line:o})}t.push({type:`component`,tag:f,attrs:te,children:i.trim(),line:c})}a=o}R$.lastIndex=a,o=R$.exec(e)}return i(a,e.length),{segments:t,issues:n}}function q$(e,t){let n=[],r=[],{segments:i,issues:a}=K$(e);n.push(...a);let o=new Map;for(let[e,r]of Object.entries(t)){let t=M$.safeParse(r);if(t.success)o.set(e,t.data.kind);else{let r=t.error.issues[0];n.push({code:`invalid_data_value`,message:`data["${e}"] is invalid: ${r?.path.join(`.`)||`(root)`} — ${r?.message??`unknown error`}`})}}let s=new Set;for(let e of i){if(e.type!==`component`)continue;let{tag:r,attrs:i,line:a}=e;for(let e of Object.keys(i))F$[r].includes(e)||n.push({code:`unknown_attr`,message:`<${r}> does not accept attribute "${e}" (allowed: ${F$[r].join(`, `)||`none`})`,line:a});if(r===`Callout`){let e=i.variant;e!==void 0&&!C$.includes(e)&&n.push({code:`invalid_callout_variant`,message:`<Callout> variant "${e}" is invalid (allowed: ${C$.join(`, `)})`,line:a});continue}let c=P$[r],l=i.data;if(!l){n.push({code:`missing_data_attr`,message:`<${r}> requires a data attribute: <${r} data="<key>" />`,line:a});continue}if(s.add(l),!(l in t)){n.push({code:`unknown_data_ref`,message:`<${r} data="${l}" /> references a key that is not in the data snapshot`,line:a});continue}let u=o.get(l);u!==void 0&&u!==c&&n.push({code:`data_kind_mismatch`,message:`<${r}> requires kind "${c}" but data["${l}"] has kind "${u}"`,line:a})}for(let e of Object.keys(t))s.has(e)||r.push({code:`unused_data_key`,message:`data["${e}"] is not referenced by any component tag`});return{valid:n.length===0,errors:n,warnings:r}}function J$(e){let t=e.map((e,t)=>{let n=e&&typeof e==`object`&&`effect_id`in e?String(e.effect_id):`(missing effect_id)`,i=m$.safeParse(e);return{index:t,effect_id:n,valid:i.success,errors:i.success?[]:[r.prettifyError(i.error)]}}),n=t.flatMap(e=>e.errors.map(t=>`effects[${e.index}] (${e.effect_id}): ${t}`));return{valid:n.length===0,errors:n,steps:t}}function Y$(e,t){let n=t,r=!0;for(let[t,i]of e.entries()){if(i.effect_id===`report:generate@1`){n=null,r=!1;continue}if(i.effect_id===`report:deliver:email@1`){if(r&&n===null)return{valid:!1,errors:[`effects[${t}] (report:deliver:email@1): the report is empty (no versions) and no earlier step in this chain produces one — there is nothing to deliver.`]};continue}if(!r)continue;let e=X$(i.config,n);if(!e.ok)return{valid:!1,errors:e.errors.map(e=>`effects[${t}] (report:update@1): ${e.message}`)};n={markdown:e.markdown,data:e.data}}return{valid:!0}}function X$(e,t){let n;if(e.mode===`full_rewrite`){if(!e.markdown)return{ok:!1,errors:[{message:`mode "full_rewrite" requires the complete new markdown.`}]};n=e.markdown}else{if(!t)return{ok:!1,errors:[{message:`This report is empty (no versions yet) — there is nothing to edit. Use mode "full_rewrite" to write its first version.`}]};if(!e.edits?.length)return{ok:!1,errors:[{message:`mode "edit" requires at least one entry in edits.`}]};let r=b$(t.markdown,e.edits);if(!r.ok)return{ok:!1,errors:r.errors};n=r.markdown}let r=t?.data??{},i=e.data===void 0?e.data_patch===void 0?r:x$(r,e.data_patch):e.data,a=q$(n,i);return a.valid?{ok:!0,markdown:n,data:i,warnings:a.warnings}:{ok:!1,errors:a.errors.map(e=>({message:e.message}))}}const Z$=[`people:profiles:icypeas@1`,`companies:profiles:icypeas@1`,`people:profiles:clado@1`,`people:profiles:clado@2`,`people:employees:leadmagic@1`,`companies:profiles:exa@1`,`people:profiles:exa@1`,`companies:profiles:crustdata@1`,`people:profiles:crustdata@1`],Q$=r.enum(Z$);function $$(e){let t=!0,n=e=>{if(t!==!1&&typeof e==`object`&&e){Array.isArray(e)&&e.length>0&&(t=!1);for(let r of Object.values(e))typeof r!=`object`&&r!=null&&r!==``&&(t=!1),typeof r==`object`&&r&&n(r)}};return n(e),t}function e1(e,t){let n={name:e,config:t};return It.hashObject(n)}var t1=class{validatePayload(e){try{return this.schema.parse(e)}catch(e){throw e instanceof n?Error(JSON.stringify(r.prettifyError(e))):e}}catalogOutput(e){return{name:e.name,enabled:!!this.payload.config?.output_fields?.[e.name].enabled,type:e.type,format:e.format,resolvedName:this.payload.config?.output_fields?.[e.name]?.alias||e.name,description:e.description,jsonMeta:e.jsonMeta,label:e.label,isCatalogFIeld:!0}}getOutputFields(){let e={};for(let[t,n]of Object.entries(this.getRawOutputFields()))n.enabled&&(e[t]=n);return e}getHashKey(){return e1(this.searchId,this.payload)}};function n1(e){return e.split(`@`)[0]}function r1(e){return`/docs/search-catalog/${n1(e)}/${e.split(`@`)[1]}`}const i1=`companies:profiles:crustdata@1`,a1=g(`company_name`),o1=g(`company_website_url`),s1=g(`company_description`),c1=g(`company_profile_url`),l1=g(`crustdata_company_match`),u1=r.object({search_id:r.literal(i1),connector:Ts.nullable().optional(),config:r.object({limit:N({sectionKey:`general`,path:`config.limit`,max:1e3,min:1,groupPath:`config.general`,description:``,label:`Limit number of search results`}).default(100),cursor:Vu({sectionKey:`general`,path:`config.cursor`,groupPath:`config.general`,inputType:`text`,description:``,label:`Continue previous search from cursor`}).nullable(),output_fields:P(r.object({[a1.name]:A({fieldName:a1.name}),[o1.name]:A({fieldName:a1.name}),[s1.name]:A({fieldName:s1.name}),[c1.name]:A({fieldName:c1.name}),[l1.name]:A({fieldName:l1.name})})),filters:r.object({hq_locations:Gu({path:`config.filters.hq_locations`,sectionKey:`config.filters`,label:`HQ locations`,description:``,disableSearch:!1,required:!1,groupPath:`config.filters.location`,optionsDef:h(`locations`)}).default([]),crunchbase_categories:Gu({path:`config.filters.crunchbase_categories`,sectionKey:`config.filters`,label:`Crunchbase categories`,description:``,disableSearch:!1,required:!1,groupPath:`config.filters.categories`,optionsDef:h(`company.crunchbase_categories.crustdata`)}).default([]),crunchbase_investors:Gu({path:`config.filters.crunchbase_investors`,sectionKey:`config.filters`,label:`Investors to include (Crunchbase)`,description:``,disableSearch:!1,required:!1,groupPath:`config.filters.investors`,optionsDef:h(`company.crunchbase_investors.crustdata`)}).default([]),tracxn_investors:Gu({path:`config.filters.tracxn_investors`,sectionKey:`config.filters`,label:`Investors to include (Tracxn)`,description:``,required:!1,groupPath:`config.filters.investors`,disableSearch:!1,optionsDef:h(`company.tracxn_investors.crustdata`)}).default([]),company_types:j({sectionKey:`config.filters`,path:`config.filters.company_types`,options:m(`crustdata.company_types`),label:`Company types`,description:``,required:!1,disableSearch:!0,groupPath:`config.filters.categories`}).default([]),linkedin_industries:Gu({sectionKey:`config.filters`,path:`config.filters.linkedin_industries`,optionsDef:h(`linkedin_industries.crustdata`),label:`Industries`,disableSearch:!1,required:!1,description:``,groupPath:`config.filters.industry`}).default([]),markets:Gu({sectionKey:`config.filters`,path:`config.filters.markets`,optionsDef:h(`company.markets.crustdata`),label:`Markets`,disableSearch:!1,required:!1,description:``,groupPath:`config.filters.industry`}).default([]),linkedin_categories:Gu({sectionKey:`config.filters`,path:`config.filters.linkedin_categories`,optionsDef:h(`company.linkedin_categories.crustdata`),label:`Company types`,description:``,required:!1,disableSearch:!0,groupPath:`config.filters.categories`}).default([]),headcount:j({path:`config.filters.headcount`,sectionKey:`config.filters`,label:`Headcount`,description:``,disableSearch:!0,required:!1,options:m(`crustdata.company_size`),groupPath:`config.filters.company_size`}).default([]),headcount_growth_last_6m_in_percent:j({path:`config.filters.headcount_growth_last_6m_in_percent`,sectionKey:`config.filters`,label:`Headcount growth over last 6 months in percent`,description:``,options:m(`crustdata.headcount_growth`),disableSearch:!0,required:!1,groupPath:`config.filters.company_size`}).default([]),revenue_in_usd:Lu({path:`config.filters.revenue_in_usd`,sectionKey:`config.filters`,label:`Revenue (USD)`,description:``,legend:`1k - 10B`,min:1e3,max:1e10,groupPath:`config.filters.financials`}),last_funding_type:j({path:`config.filters.last_funding_type`,sectionKey:`config.filters`,label:`Last funding type`,disableSearch:!0,required:!1,options:m(`crustdata.funding_rounds`),description:``,groupPath:`config.filters.financials`}).default([]),last_funding_amount:Lu({path:`config.filters.last_funding_amount`,sectionKey:`config.filters`,label:`Last funding amount`,legend:`1k - 10B`,min:1e3,max:1e10,description:``,groupPath:`config.filters.financials`}),number_of_followers:j({path:`config.filters.number_of_followers`,sectionKey:`config.filters`,label:`Number of LinkedIn followers`,disableSearch:!0,description:``,required:!1,options:m(`crustdata.company_followers`),groupPath:`config.filters.web_presence`}).default([]),follower_growth_last_6m_in_percent:j({path:`config.filters.follower_growth_last_6m_in_percent`,sectionKey:`config.filters`,label:`LinkedIn follower growth within last 6 months`,disableSearch:!0,description:``,required:!1,options:m(`crustdata.follower_growth`),groupPath:`config.filters.web_presence`}).default([]),profile_summary_keywords:O({path:`config.filters.profile_summary_keywords`,sectionKey:`config.filters`,maxItems:50,label:`LinkedIn company description contains`,description:``,groupPath:`config.filters.keywords`}),competitor_websites:O({path:`config.filters.competitor_websites`,sectionKey:`config.filters`,maxItems:50,label:`Competitor domains`,description:`Ex. 'google.com'`,groupPath:`config.filters.competitors`})}).check(e=>{$$(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),d1={default:{input:[{fields:[]}]}},f1=class extends t1{searchId=i1;schema=u1;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[a1.name]:this.catalogOutput(a1),[o1.name]:this.catalogOutput(o1),[s1.name]:this.catalogOutput(s1),[c1.name]:this.catalogOutput(c1),[l1.name]:this.catalogOutput(l1)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_company_db_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return d1}},p1=u1,m1={searchId:i1,billableOperation:`companies-profiles-crustdata`,baseSearch:n1(`companies:profiles:crustdata@1`),label:`Company search`,categories:[`companies`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Filter based company search.`,tags:[V.COMPANY_PROFILES],docPath:r1(i1),cost:{mode:`per_page`,creditsPerPage:2},provider:`crustdata`,defaultPayload:{search_id:i1,connector:null,config:{limit:100,cursor:``,output_fields:{company_name:{enabled:!0,alias:``},company_website_url:{enabled:!0,alias:``},company_description:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},crustdata_company_match:{enabled:!0,alias:``}},filters:{company_types:[],headcount_growth_last_6m_in_percent:[],last_funding_amount:{from:null,to:null},last_funding_type:[],linkedin_industries:[],linkedin_categories:[],crunchbase_categories:[],markets:[],revenue_in_usd:{from:null,to:null},crunchbase_investors:[],tracxn_investors:[],follower_growth_last_6m_in_percent:[],headcount:[],hq_locations:[],number_of_followers:[],profile_summary_keywords:[],competitor_websites:[]}}}},h1=`companies:profiles:exa@1`,g1=g(`company_name`),_1=g(`company_website_url`),v1=g(`company_description`),y1=g(`company_industry`),b1=g(`headcount`),x1=g(`exa_match_evaluation`),S1=r.object({search_id:r.literal(h1),connector:Ts.nullable().optional(),config:r.object({limit:N({sectionKey:`general`,path:`config.limit`,max:100,min:1,groupPath:`config.general`,description:``,label:`Limit number of search results`}).default(10),output_fields:P(r.object({[g1.name]:A({fieldName:g1.name}),[_1.name]:A({fieldName:g1.name}),[v1.name]:A({fieldName:v1.name}),[y1.name]:A({fieldName:y1.name}),[b1.name]:A({fieldName:b1.name}),[x1.name]:A({fieldName:x1.name})})),filters:r.object({query:Hu({sectionKey:`config.filters`,path:`config.filters.query`,placeholder:`e.g. Top AI research labs focusing on large language models`,groupPath:`config.filters.query`,rows:5,label:`Search description in natural language`,minLength:10,maxLength:2e4})})})}),C1={default:{input:[{fields:[]}]}},w1=class extends t1{searchId=h1;schema=S1;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[g1.name]:this.catalogOutput(g1),[_1.name]:this.catalogOutput(_1),[v1.name]:this.catalogOutput(v1),[y1.name]:this.catalogOutput(y1),[b1.name]:this.catalogOutput(b1),[x1.name]:this.catalogOutput(x1)}}getConnectionsRequirements(){return[{provider:`exa`,rateLimitOperation:`exa_websets`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return C1}},T1=S1,E1={searchId:h1,billableOperation:`companies-profiles-exa`,baseSearch:n1(`companies:profiles:exa@1`),label:`Company finder (websets)`,categories:[`companies`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Semantic AI search to find company profiles. This search can take several minutes.`,tags:[V.COMPANY_PROFILES],docPath:r1(h1),cost:{mode:`per_result`,creditsPerResult:2},provider:`exa`,defaultPayload:{search_id:h1,connector:null,config:{limit:10,output_fields:{company_name:{enabled:!0,alias:``},company_website_url:{enabled:!0,alias:``},company_industry:{enabled:!0,alias:``},company_description:{enabled:!0,alias:``},headcount:{enabled:!0,alias:``},exa_match_evaluation:{enabled:!1,alias:``}},filters:{query:``}}}},D1=`companies:profiles:icypeas@1`,O1=g(`company_industry`),k1=g(`company_name`),A1=g(`company_description`),j1=g(`company_website_url`),M1=g(`headcount`),N1=g(`company_region`),P1=g(`company_profile_url`),F1=g(`icypeas_company_match`),I1=r.object({search_id:r.literal(D1),connector:Ts.nullable().optional(),config:r.object({limit:N({sectionKey:`general`,max:5e4,min:1,path:`config.limit`,groupPath:`config.general`,description:``,label:`Limit number of search results`}).default(100),output_fields:P(r.object({company_name:A({fieldName:k1.name}),company_industry:A({fieldName:O1.name}),company_description:A({fieldName:A1.name}),company_website_url:A({fieldName:j1.name}),headcount:A({fieldName:M1.name}),company_region:A({fieldName:N1.name}),company_profile_url:A({fieldName:P1.name}),icypeas_company_match:A({fieldName:F1.name})})),filters:r.object({name:k({path:`config.filters.name`,sectionKey:`config.filters`,includeLabel:`Company names to include`,excludeLabel:`Company names to exclude`,description:``,placeholder:``,groupPath:`config.filters.company_information`,maxItems:100}).optional(),type:Fu({path:`config.filters.type`,sectionKey:`config.filters`,label:``,description:``,placeholder:``,includeLabel:`Company types to include`,excludeLabel:`Company types to exclude`,optionsDef:{type:`static`,options:[{value:`Privately Held`,label:`Privately Held`},{value:`Public Company`,label:`Public Company`},{value:`Sole Proprietorship`,label:`Sole Proprietorship`},{value:`Self-Employed`,label:`Self-Employed`},{value:`Partnership`,label:`Partnership`},{value:`Nonprofit`,label:`Nonprofit`},{value:`Educational Institution`,label:`Educational Institution`},{value:`Government Agency`,label:`Government Agency`}]},groupPath:`config.filters.company_information`}).optional(),industry:Fu({path:`config.filters.industry`,sectionKey:`config.filters`,optionsDef:Ge(`linkedin.industries`),includeLabel:`Industries to include`,excludeLabel:`Industries to exclude`,description:``,placeholder:``,groupPath:`config.filters.industry`,maxItems:50}).optional(),location:k({path:`config.filters.location`,sectionKey:`config.filters`,includeLabel:`Locations to include`,excludeLabel:`Locations to exclude`,description:``,placeholder:`US, FR, New York`,groupPath:`config.filters.geografic`,maxItems:20}).optional(),headcount:Lu({path:`config.filters.headcount`,sectionKey:`config.filters`,legend:`1-1M`,label:`Headcount`,description:``,min:1,max:1e6,unit:`employees`,groupPath:`config.filters.company_size`}).optional(),urn:k({path:`config.filters.urn`,sectionKey:`config.filters`,label:``,description:``,groupPath:`config.filters.linkedin`,excludeLabel:`URNs to exclude`,includeLabel:`URNs to include`,maxItems:200}).optional(),lid:k({path:`config.filters.lid`,sectionKey:`config.filters`,label:``,description:``,groupPath:`config.filters.linkedin`,includeLabel:`LinkedIn IDs to include`,excludeLabel:`LinkedIn IDs to exclude`,maxItems:200}).optional()}).check(e=>{$$(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),L1={default:{input:[{fields:[{outputField:`company_profile_url`}]}]}},R1=class extends t1{searchId=D1;schema=I1;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[k1.name]:this.catalogOutput(k1),[O1.name]:this.catalogOutput(O1),[P1.name]:this.catalogOutput(P1),[j1.name]:this.catalogOutput(j1),[A1.name]:this.catalogOutput(A1),[M1.name]:this.catalogOutput(M1),[N1.name]:this.catalogOutput(N1),[F1.name]:this.catalogOutput(F1)}}getConnectionsRequirements(){return[{provider:`icypeas`,rateLimitOperation:`icypeas_company_database`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return L1}},z1=I1,B1={searchId:D1,billableOperation:`companies-profiles-icypeas`,baseSearch:n1(`companies:profiles:icypeas@1`),label:`Find company profiles`,categories:[`companies`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Search a filter-based, general-purpose company database.`,tags:[V.COMPANY_PROFILES],docPath:r1(D1),cost:{mode:`per_result`,creditsPerResult:.4},provider:`icypeas`,defaultPayload:{search_id:D1,connector:null,config:{limit:100,output_fields:{company_name:{alias:``,enabled:!0},icypeas_company_match:{alias:``,enabled:!0},company_website_url:{alias:``,enabled:!0},company_description:{alias:``,enabled:!0},company_industry:{alias:``,enabled:!0},company_profile_url:{alias:``,enabled:!0},headcount:{alias:``,enabled:!0},company_region:{alias:``,enabled:!0}},filters:{name:{include:[],exclude:[]},type:{include:[],exclude:[]},industry:{include:[],exclude:[]},location:{include:[],exclude:[]},headcount:{},urn:{include:[],exclude:[]},lid:{include:[],exclude:[]}}}}},V1=`people:profiles:clado@1`,H1=g(`name`),U1=g(`job_title`),W1=g(`company_name`),G1=g(`company_profile_url`),K1=g(`profile_url`),q1=g(`clado_person_match`),J1=r.object({search_id:r.literal(V1),connector:Ts.nullable().optional(),config:r.object({limit:N({sectionKey:`general`,path:`config.limit`,max:100,min:1,groupPath:`config.general`,description:``,label:`Limit number of search results`}).default(20),output_fields:P(r.object({[H1.name]:A({fieldName:H1.name}),[U1.name]:A({fieldName:U1.name}),[G1.name]:A({fieldName:G1.name}),[W1.name]:A({fieldName:W1.name}),[K1.name]:A({fieldName:K1.name}),[q1.name]:A({fieldName:q1.name})})),filters:r.object({query:Hu({path:`config.filters.query`,sectionKey:`config.filters`,placeholder:`e.g. Software engineers in San Francisco`,groupPath:`config.filters.query`,rows:5,label:`Search description in natural language`,minLength:10,maxLength:2e4})})})}),Y1={default:{input:[{fields:[{outputField:`profile_url`}]}]}},X1=class extends t1{searchId=V1;schema=J1;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[H1.name]:this.catalogOutput(H1),[U1.name]:this.catalogOutput(U1),[W1.name]:this.catalogOutput(W1),[K1.name]:this.catalogOutput(K1),[G1.name]:this.catalogOutput(G1),[q1.name]:this.catalogOutput(q1)}}getConnectionsRequirements(){return[{provider:`clado`,rateLimitOperation:`clado_search_people`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return Y1}},Z1=J1,Q1={searchId:V1,billableOperation:`people-profiles-clado`,baseSearch:Nt(`people:profiles:clado@1`),label:`Find people profiles with Clado`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:profiles:clado@2`},description:`Search through millions of LinkedIn profiles using natural language queries. This endpoint provides fast searching with AI-powered relevance matching.`,tags:[V.PEOPLE_PROFILES],docPath:`/resources/search-catalog/people:profiles:clado/1`,cost:{mode:`per_search`,creditsPerSearch:3},provider:`clado`,defaultPayload:{search_id:V1,connector:null,config:{limit:20,output_fields:{company_name:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},name:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},clado_person_match:{enabled:!0,alias:``}},filters:{query:``}}}},$1=`people:profiles:clado@2`,e0=g(`name`),t0=g(`job_title`),n0=g(`company_name`),r0=g(`company_profile_url`),i0=g(`profile_url`),a0=g(`clado_person_match_v2`),o0=r.object({search_id:r.literal($1),connector:Ts.nullable().optional(),config:r.object({limit:N({sectionKey:`general`,path:`config.limit`,max:1e4,min:1,groupPath:`config.general`,description:``,label:`Limit number of search results`}).default(100),search_id:Vu({sectionKey:`general`,path:`config.search_id`,inputType:`text`,groupPath:`config.continue_existing_search`,label:`Search id`,description:`The id of the search you want to continue`}).nullable().default(``),offset:N({sectionKey:`general`,path:`config.offset`,groupPath:`config.continue_existing_search`,label:`Offset`,max:1e5,min:1,description:`To continue the previous search, provide both the search_id and the last offset.`}).nullish(),output_fields:P(r.object({[e0.name]:A({fieldName:e0.name}),[t0.name]:A({fieldName:t0.name}),[r0.name]:A({fieldName:r0.name}),[n0.name]:A({fieldName:n0.name}),[i0.name]:A({fieldName:i0.name}),[a0.name]:A({fieldName:a0.name})})),filters:r.object({query:Hu({path:`config.filters.query`,sectionKey:`config.filters`,placeholder:`e.g. Software engineers in San Francisco`,groupPath:`config.filters.query`,rows:5,label:`Search description in natural language`,minLength:0,maxLength:2e4}).default(``)}).optional()})}).check(e=>{let t=!!e.value.config.filters?.query,n=!!e.value.config.search_id&&!!e.value.config.offset;!t&&!n&&e.issues.push({code:`custom`,input:``,message:`Must define either 'query' or both 'searchId' AND 'offset'.`,path:[`config.filters.query`]})}),s0={default:{input:[{fields:[{outputField:`profile_url`}]}]}},c0=class extends t1{searchId=$1;schema=o0;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[e0.name]:this.catalogOutput(e0),[t0.name]:this.catalogOutput(t0),[n0.name]:this.catalogOutput(n0),[i0.name]:this.catalogOutput(i0),[r0.name]:this.catalogOutput(r0),[a0.name]:this.catalogOutput(a0)}}getConnectionsRequirements(){return[{provider:`clado`,rateLimitOperation:`clado_search_people`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return s0}},l0=o0,u0={searchId:$1,billableOperation:`people-profiles-clado`,baseSearch:Nt(`people:profiles:clado@2`),label:`Find people profiles`,categories:[`deprecated`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:profiles:clado@2`},description:`Search a growing dataset with semantic queries.`,tags:[],docPath:`/resources/search-catalog/people:profiles:clado/1`,cost:{mode:`per_page`,creditsPerPage:3},provider:`clado`,defaultPayload:{search_id:$1,connector:null,config:{limit:100,search_id:``,offset:void 0,output_fields:{company_name:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},name:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},clado_person_match_v2:{enabled:!0,alias:``}},filters:{query:``}}}},d0=`people:employees:leadmagic@1`,f0=g(`name`),p0=g(`job_title`),m0=g(`company_website_url`),h0=g(`company_name`),g0=r.object({search_id:r.literal(d0),connector:Ts.nullable().optional(),config:r.object({limit:N({sectionKey:`general`,max:500,min:1,path:`config.limit`,groupPath:`config.general`,description:``,label:`Limit number of search results`}).default(50),output_fields:P(r.object({[f0.name]:A({fieldName:f0.name}),[h0.name]:A({fieldName:h0.name}),[m0.name]:A({fieldName:m0.name}),[p0.name]:A({fieldName:p0.name})})),filters:r.object({company_website_url:Vu({path:`config.filters.company_website_url`,sectionKey:`config.filters`,groupPath:`config.filters.website`,inputType:`text`,description:`URL of the employer company.`,label:`Company Website URL`}).nullable()})})}),_0={default:{input:[{fields:[{outputField:m0.name}]}]}},v0=class extends t1{searchId=d0;schema=g0;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[f0.name]:this.catalogOutput(f0),[p0.name]:this.catalogOutput(p0),[m0.name]:this.catalogOutput(m0),[h0.name]:this.catalogOutput(h0)}}getConnectionsRequirements(){return[{provider:`leadmagic`,rateLimitOperation:`leadmagic_employee_finder`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return _0}},y0=g0,b0={searchId:d0,billableOperation:`people-employees-leadmagic`,baseSearch:n1(`people:employees:leadmagic@1`),label:`Employee finder`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Search for employees of a company.`,tags:[V.PEOPLE_PROFILES],docPath:r1(d0),cost:{mode:`per_result`,creditsPerResult:.05},provider:`leadmagic`,defaultPayload:{search_id:d0,connector:null,config:{limit:50,output_fields:{name:{alias:``,enabled:!0},job_title:{alias:``,enabled:!0},company_website_url:{alias:``,enabled:!0},company_name:{alias:``,enabled:!0}},filters:{company_website_url:``}}}},x0=`people:profiles:crustdata@1`,S0=g(`name`),C0=g(`company_website_url`),w0=g(`profile_url`),T0=g(`job_title`),E0=g(`crustdata_person_match`),D0=r.object({search_id:r.literal(x0),connector:Ts.nullable().optional(),config:r.object({limit:N({sectionKey:`general`,path:`config.limit`,max:1e3,min:1,groupPath:`config.general`,description:``,label:`Limit number of results`}).default(100),cursor:Vu({sectionKey:`general`,path:`config.cursor`,groupPath:`config.general`,inputType:`text`,description:``,label:`Continue previous search from cursor`}).nullable(),output_fields:P(r.object({[S0.name]:A({fieldName:S0.name}),[C0.name]:A({fieldName:C0.name}),[w0.name]:A({fieldName:w0.name}),[T0.name]:A({fieldName:T0.name}),[E0.name]:A({fieldName:E0.name})})),filters:r.object({locations:Gu({path:`config.filters.locations`,sectionKey:`config.filters`,label:`Locations`,disableSearch:!1,required:!1,optionsDef:h(`locations`),groupPath:`config.filters.general`}).default([]),profile_headline_keywords:Nu({path:`config.filters.profile_headline_keywords`,sectionKey:`config.filters`,label:`Headline contains keywords`,maxItems:100,groupPath:`config.filters.keywords`}),profile_summary_keywords:Nu({path:`config.filters.profile_summary_keywords`,sectionKey:`config.filters`,label:`Profile about section contains keywords`,maxItems:100,groupPath:`config.filters.keywords`}),profile_languages:j({path:`config.filters.profile_languages`,sectionKey:`config.filters`,label:`Profile languages`,disableSearch:!1,required:!1,options:m(`crustdata.person_profile_languages`),groupPath:`config.filters.profile`}).default([]),languages:j({path:`config.filters.languages`,sectionKey:`config.filters`,label:`Spoken languages`,disableSearch:!1,required:!1,options:m(`crustdata.person_profile_languages`),groupPath:`config.filters.profile`}).default([]),skills:Gu({path:`config.filters.skills`,sectionKey:`config.filters`,label:`Skills`,placeholder:`.NET, PMO, ...`,disableSearch:!1,required:!1,description:``,groupPath:`config.filters.skills`,optionsDef:h(`skills`)}).default([]),years_of_experience:j({path:`config.filters.years_of_experience`,sectionKey:`config.filters`,label:`Years of experience`,placeholder:`1 to 2 years`,disableSearch:!0,description:``,required:!1,options:m(`crustdata.years_of_experience`),groupPath:`config.filters.experience`}).default([]),current_seniority_levels:Fu({path:`config.filters.current_seniority_levels`,sectionKey:`config.filters`,disableSearch:!0,label:`Seniority`,optionsDef:Ge(`crustdata.person_seniority`),description:``,groupPath:`config.filters.experience`}).default({include:[],exclude:[]}),current_employers:O({path:`config.filters.current_employers`,sectionKey:`config.filters`,label:`Current employers`,description:``,maxItems:200,groupPath:`config.filters.experience`,suggestionsDef:h(`person.current_employer_names.crustdata`)}),current_employers_website_urls:O({path:`config.filters.current_employers_website_urls`,sectionKey:`config.filters`,label:`Current employer domains`,description:``,maxItems:200,groupPath:`config.filters.experience`}),current_job_titles:O({path:`config.filters.current_job_titles`,sectionKey:`config.filters`,label:`Current job titles`,description:``,order:1,groupPath:`config.filters.experience`,suggestionsDef:h(`titles`)}),current_employers_linkedin_industries:Gu({path:`config.filters.current_employers_linkedin_industries`,sectionKey:`config.filters`,label:`Current employers industries`,disableSearch:!1,required:!1,groupPath:`config.filters.experience`,description:``,optionsDef:h(`linkedin_industries.crustdata`)}).default([]),years_at_current_company:j({path:`config.filters.years_at_current_company`,sectionKey:`config.filters`,label:`Years at current company`,placeholder:`1 to 2 years`,disableSearch:!1,required:!1,groupPath:`config.filters.experience`,description:``,options:m(`crustdata.years_of_experience`)}).default([]),previous_employers_website_urls:O({path:`config.filters.previous_employers_website_urls`,sectionKey:`config.filters`,label:`Previous employer domains`,description:``,maxItems:200,groupPath:`config.filters.experience`}),previous_seniority_levels:Fu({path:`config.filters.previous_seniority_levels`,sectionKey:`config.filters`,label:`Previous seniority`,disableSearch:!0,optionsDef:Ge(`crustdata.person_seniority`),description:``,groupPath:`config.filters.experience`}).default({include:[],exclude:[]}),previous_employers:O({path:`config.filters.previous_employers`,sectionKey:`config.filters`,label:`Previous employer name`,description:``,maxItems:200,groupPath:`config.filters.experience`,suggestionsDef:h(`person.past_employer_names.crustdata`)}),previous_job_titles:O({path:`config.filters.previous_job_titles`,sectionKey:`config.filters`,label:`Current job titles`,description:``,groupPath:`config.filters.experience`,suggestionsDef:h(`titles`)}),previous_employers_linkedin_industries:Gu({path:`config.filters.previous_employers_linkedin_industries`,sectionKey:`config.filters`,label:`Previous employer industry`,disableSearch:!1,required:!1,groupPath:`config.filters.experience`,description:``,optionsDef:h(`linkedin_industries.crustdata`)}).default([]),certifications:O({path:`config.filters.certifications`,sectionKey:`config.filters`,label:`Certifications`,groupPath:`config.filters.certifications_honors`,description:``}),honors:O({path:`config.filters.honors`,sectionKey:`config.filters`,label:`Honors`,groupPath:`config.filters.certifications_honors`,description:``}),recently_changed_jobs:Bu({path:`config.filters.recently_changed_jobs`,sectionKey:`config.filters`,label:`Recently changed jobs`,description:``,defaultValue:null,groupPath:`config.filters.activities`}),fields_of_study:Gu({path:`config.filters.fields_of_study`,sectionKey:`config.filters`,label:`Fields of study`,description:``,disableSearch:!1,required:!1,groupPath:`config.filters.education`,optionsDef:h(`person.education_field_of_study.crustdata`)}).default([]),degree_names:Gu({path:`config.filters.degree_names`,sectionKey:`config.filters`,label:`Degree names`,description:``,disableSearch:!1,required:!1,groupPath:`config.filters.education`,optionsDef:h(`person.education_degree.crustdata`)}).default([]),school_names:Gu({path:`config.filters.school_names`,sectionKey:`config.filters`,label:`School names`,description:``,disableSearch:!1,required:!1,groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default([]),current_school_names:Gu({path:`config.filters.current_school_names`,sectionKey:`config.filters`,label:`Currently enrolled at`,description:``,disableSearch:!1,required:!1,groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default([]),extracurricular_activities:O({path:`config.filters.extracurricular_activities`,sectionKey:`config.filters`,label:`Extracurricular activities`,description:``,groupPath:`config.filters.education`,suggestionsDef:h(`person.education_activities.crustdata`)})}).check(e=>{$$(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),O0={default:{input:[{fields:[]}]}},k0=class extends t1{searchId=x0;schema=D0;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[S0.name]:this.catalogOutput(S0),[C0.name]:this.catalogOutput(C0),[w0.name]:this.catalogOutput(w0),[T0.name]:this.catalogOutput(T0),[E0.name]:this.catalogOutput(E0)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_people_db_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return O0}},A0=D0,j0={searchId:x0,billableOperation:`people-profiles-crustdata`,baseSearch:n1(`people:profiles:crustdata@1`),label:`People search`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Filter-based people search.`,tags:[V.PEOPLE_PROFILES],docPath:r1(x0),cost:{mode:`per_page`,creditsPerPage:5},provider:`crustdata`,defaultPayload:{search_id:x0,connector:null,config:{limit:100,cursor:``,output_fields:{name:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},company_website_url:{enabled:!0,alias:``},crustdata_person_match:{enabled:!0,alias:``}},filters:{profile_headline_keywords:[],languages:[],profile_summary_keywords:[],previous_job_titles:[],current_employers:[],current_school_names:[],years_at_current_company:[],certifications:[],honors:[],current_employers_linkedin_industries:[],current_employers_website_urls:[],previous_employers_website_urls:[],current_seniority_levels:{include:[],exclude:[]},previous_seniority_levels:{include:[],exclude:[]},degree_names:[],locations:[],profile_languages:[],recently_changed_jobs:null,extracurricular_activities:[],school_names:[],fields_of_study:[],previous_employers:[],current_job_titles:[],skills:[],years_of_experience:[],previous_employers_linkedin_industries:[]}}}},M0=`people:profiles:exa@1`,N0=g(`name`),P0=g(`profile_url`),F0=g(`job_title`),I0=g(`company_name`),L0=g(`company_region`),R0=g(`exa_match_evaluation`),z0=r.object({search_id:r.literal(M0),connector:Ts.nullable().optional(),config:r.object({limit:N({path:`config.limit`,sectionKey:`general`,max:100,min:1,groupPath:`config.general`,description:``,label:`Limit number of search results`}).default(10),output_fields:P(r.object({[N0.name]:A({fieldName:N0.name}),[P0.name]:A({fieldName:P0.name}),[F0.name]:A({fieldName:F0.name}),[I0.name]:A({fieldName:I0.name}),[L0.name]:A({fieldName:L0.name}),[R0.name]:A({fieldName:R0.name})})),filters:r.object({query:Hu({path:`config.filters.query`,sectionKey:`config.filters`,placeholder:`e.g. Software engineers in San Francisco`,groupPath:`config.filters.query`,rows:5,label:`Search description in natural language`,minLength:10,maxLength:2e4})})})}),B0={default:{input:[{fields:[]}]}},V0=class extends t1{searchId=M0;schema=z0;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[N0.name]:this.catalogOutput(N0),[P0.name]:this.catalogOutput(P0),[F0.name]:this.catalogOutput(F0),[I0.name]:this.catalogOutput(I0),[L0.name]:this.catalogOutput(L0),[R0.name]:this.catalogOutput(R0)}}getConnectionsRequirements(){return[{provider:`exa`,rateLimitOperation:`exa_websets`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return B0}},H0=z0,U0={searchId:M0,billableOperation:`people-profiles-exa`,baseSearch:n1(`people:profiles:exa@1`),label:`People finder (websets)`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Semantic AI search for people profiles. This search can take several minutes.`,tags:[V.COMPANY_PROFILES],docPath:r1(M0),cost:{mode:`per_result`,creditsPerResult:2},provider:`exa`,defaultPayload:{search_id:M0,connector:null,config:{limit:10,output_fields:{name:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},company_name:{enabled:!0,alias:``},company_region:{enabled:!0,alias:``},exa_match_evaluation:{enabled:!1,alias:``}},filters:{query:``}}}},W0=`people:profiles:icypeas@1`,G0=g(`name`),K0=g(`job_title`),q0=g(`profile_headline`),J0=g(`company_website_url`),Y0=g(`company_profile_url`),X0=g(`profile_url`),Z0=g(`icypeas_person_match`),Q0=r.object({search_id:r.literal(W0),connector:Ts.nullable().optional(),config:r.object({limit:N({path:`config.limit`,sectionKey:`general`,max:5e4,min:1,groupPath:`config.general`,description:``,label:`Limit number of search results`}).default(100),output_fields:P(r.object({[G0.name]:A({fieldName:G0.name}),[K0.name]:A({fieldName:K0.name}),[q0.name]:A({fieldName:q0.name}),[J0.name]:A({fieldName:J0.name}),[Y0.name]:A({fieldName:Y0.name}),[X0.name]:A({fieldName:X0.name}),[Z0.name]:A({fieldName:Z0.name})})),filters:r.object({firstname:k({path:`config.filters.firstname`,sectionKey:`config.filters`,includeLabel:`First names to include`,excludeLabel:`First names to exclude`,description:``,placeholder:``,groupPath:`config.filters.personal_information`,maxItems:200}).optional(),lastname:k({path:`config.filters.lastname`,sectionKey:`config.filters`,includeLabel:`Last names to include`,excludeLabel:`Last names to exclude`,description:``,placeholder:``,groupPath:`config.filters.personal_information`,maxItems:200}).optional(),currentJobTitle:k({path:`config.filters.currentJobTitle`,sectionKey:`config.filters`,includeLabel:`Current job titles to include`,excludeLabel:`Current job titles to exclude`,description:``,placeholder:``,groupPath:`config.filters.job_information`,maxItems:200}).optional(),currentEmployersWebsiteUrls:k({groupPath:`config.filters.job_information`,path:`config.filters.currentEmployersWebsiteUrls`,sectionKey:`config.filters`,description:``,includeLabel:`Include current employer domains`,excludeLabel:`Exclude current employer domains`,maxItems:100}).optional(),pastEmployersWebsiteUrls:k({groupPath:`config.filters.job_information`,path:`config.filters.pastEmployersWebsiteUrls`,sectionKey:`config.filters`,description:``,includeLabel:`Past employers website URLs to include`,excludeLabel:`Past employers website URLs to exclude`,maxItems:100}).optional(),pastJobTitle:k({path:`config.filters.pastJobTitle`,sectionKey:`config.filters`,includeLabel:`Past job titles to include`,excludeLabel:`Past job titles to exclude`,description:``,placeholder:``,groupPath:`config.filters.job_information`,maxItems:200}).optional(),currentCompanyName:k({path:`config.filters.currentCompanyName`,sectionKey:`config.filters`,includeLabel:`Companies to include`,excludeLabel:`Companies to exclude`,description:``,placeholder:``,groupPath:`config.filters.company_information`,maxItems:200}).optional(),pastCompanyName:k({path:`config.filters.pastCompanyName`,sectionKey:`config.filters`,includeLabel:`Past employers to include`,excludeLabel:`Past employers to exclude`,description:``,placeholder:``,groupPath:`config.filters.company_information`,maxItems:200}).optional(),school:k({path:`config.filters.school`,sectionKey:`config.filters`,includeLabel:`Schools to include`,excludeLabel:`Schools to exclude`,label:``,description:``,placeholder:``,groupPath:`config.filters.education`,maxItems:200}).optional(),location:k({path:`config.filters.location`,sectionKey:`config.filters`,includeLabel:`Locations to include`,excludeLabel:`Locations to exclude`,description:`Filter by location`,placeholder:`e.g., US, FR, New York`,groupPath:`config.filters.geografic`,maxItems:200}).optional(),languages:k({path:`config.filters.languages`,sectionKey:`config.filters`,includeLabel:`Languages to include`,excludeLabel:`Languages to exclude`,description:`ex. EN, ES`,groupPath:`config.filters.languages`,maxItems:200}).optional(),skills:k({path:`config.filters.skills`,sectionKey:`config.filters`,includeLabel:`Skills to include`,excludeLabel:`Skills to exclude`,description:``,placeholder:``,groupPath:`config.filters.skills`,maxItems:200}).optional(),keyword:k({path:`config.filters.keyword`,sectionKey:`config.filters`,includeLabel:`Keywords to include`,excludeLabel:`Keywords to exclude`,description:``,placeholder:`CEO, Sales, Scrum`,groupPath:`config.filters.general_search`,maxItems:200}).optional()}).check(e=>{$$(e.value)&&e.issues.push({code:`custom`,message:`The filters object cannot be empty. You must set at least one filter.`,input:e.value})})})}),$0={default:{input:[{fields:[{outputField:`profile_url`}]}]}},e2=class extends t1{searchId=W0;schema=Q0;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[G0.name]:this.catalogOutput(G0),[K0.name]:this.catalogOutput(K0),[q0.name]:this.catalogOutput(q0),[J0.name]:this.catalogOutput(J0),[Y0.name]:this.catalogOutput(Y0),[X0.name]:this.catalogOutput(X0),[Z0.name]:this.catalogOutput(Z0)}}getConnectionsRequirements(){return[{provider:`icypeas`,rateLimitOperation:`icypeas_lead_database`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return $0}},t2=Q0,n2={searchId:W0,billableOperation:`people-profiles-icypeas`,provider:`icypeas`,baseSearch:n1(W0),label:`Find people profiles`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Search a filter-based, general-purpose lead database with people profiles.`,tags:[V.PEOPLE_PROFILES],docPath:r1(W0),cost:{mode:`per_result`,creditsPerResult:.4},defaultPayload:{search_id:W0,connector:null,config:{limit:100,output_fields:{company_profile_url:{enabled:!0,alias:``},company_website_url:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},name:{enabled:!0,alias:``},profile_headline:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},icypeas_person_match:{enabled:!0,alias:``}},filters:{currentCompanyName:{include:[],exclude:[]},currentEmployersWebsiteUrls:{include:[],exclude:[]},pastEmployersWebsiteUrls:{include:[],exclude:[]},currentJobTitle:{include:[],exclude:[]},firstname:{include:[],exclude:[]},keyword:{include:[],exclude:[]},languages:{include:[],exclude:[]},lastname:{include:[],exclude:[]},location:{include:[],exclude:[]},pastCompanyName:{include:[],exclude:[]},pastJobTitle:{include:[],exclude:[]},school:{include:[],exclude:[]},skills:{include:[],exclude:[]}}}}},r2={"people:profiles:crustdata@1":k0,"companies:profiles:crustdata@1":f1,"companies:profiles:exa@1":w1,"people:profiles:exa@1":V0,"people:profiles:icypeas@1":e2,"companies:profiles:icypeas@1":R1,"people:employees:leadmagic@1":v0,"people:profiles:clado@1":X1,"people:profiles:clado@2":c0},i2={"people:profiles:crustdata@1":A0,"companies:profiles:crustdata@1":p1,"companies:profiles:exa@1":T1,"people:profiles:exa@1":H0,"people:profiles:icypeas@1":t2,"companies:profiles:icypeas@1":z1,"people:employees:leadmagic@1":y0,"people:profiles:clado@1":Z1,"people:profiles:clado@2":l0},a2={"people:profiles:crustdata@1":j0,"companies:profiles:crustdata@1":m1,"companies:profiles:exa@1":E1,"people:profiles:exa@1":U0,"people:profiles:icypeas@1":n2,"companies:profiles:icypeas@1":B1,"people:employees:leadmagic@1":b0,"people:profiles:clado@1":Q1,"people:profiles:clado@2":u0};function o2(e){return r2[e]}function s2(e){return i2[e]}function c2(e){return a2[e].defaultPayload}const l2=t.discriminatedUnion(`search_id`,Object.values(i2).map(e=>e)),u2=t.preprocess(e=>{if(!e||typeof e!=`object`||!(`search_id`in e))return e;let t=c2(e.search_id);return t?{...e,config:Vt(e?.config||{},t.config)}:e},l2);function d2(e){return Object.keys(a2[e].defaultPayload.config.output_fields)}const f2=ts,p2=t.object({value:Vo,status:Bo,type:Ro.optional(),format:is.nullable().optional(),resolved_by:ds.nullable().optional(),widgets:es.optional()}),m2=t.record(t.string(),p2.nullable()),h2=t.object({search:t.object({ref:Q$}),status:t.enum([`pending`,`processing`,`failed`,`completed`]),errors:t.array(f2),meta:t.object({providers:t.object({clado:t.object({pagination:t.object({search_id:t.string().optional(),offset:t.number().optional()})}).optional(),crustdata:t.object({pagination:t.object({cursor:t.string().nullable()})}).optional()}).optional()})}),g2=t.object({id:t.string(),status:t.enum([`completed`,`failed`,`pending`,`processing`]),results:t.array(m2),search_statuses:t.array(h2),organizationId:t.string()}).openapi(`SearchesResponseSchema`),_2=t.object({environment:t.enum([`production`,`sandbox`]).default(`production`),widgets:t.object({enabled:t.boolean().default(!1)}).default({enabled:!1})}),v2=_2.extend({dedup:t.object({strategy:t.enum([`default`]).nullable()}).default({strategy:null})}),y2=t.object({config:v2.default({dedup:{strategy:`default`},environment:`production`,widgets:{enabled:!1}}),searches:t.array(u2)}).openapi(`SearchesRequestSchema`);function b2(e){let t=e.split(`@`)[1];if(!t)throw Error(`No search version found`);return Number(t)}function x2(){let e={};for(let t of Object.values(a2)){let{baseSearch:n}=t;e[n]??=[],e[n].push(t)}return Object.entries(e).forEach(([t,n])=>{e[t]=n.sort((e,t)=>{let n=b2(e.searchId);return b2(t.searchId)-n})}),e}const S2=x2();function C2(e){let t=[];for(let[n,r]of Object.entries(S2)){let i=r[0];if(!i)throw Error(`Found empty entry`);i.lifecycle?.deprecatedOn&&e!==`deprecated`||(e===null||i.categories.includes(e))&&t.push({...i,baseSearch:n,latestVersion:b2(i.searchId)})}return t}function w2(e,t){let n=e.filter(e=>t===null?!0:e.categories.some(e=>e===t)),r={},i={},a={};for(let e of n){if(e.lifecycle&&e.lifecycle.deprecatedOn){i.Deprecated??=[],i.Deprecated.push(e.searchId);continue}a[e.provider]??=[],a[e.provider].push(e.searchId);for(let t of d2(e.searchId))r[t]??=[],r[t].push(e.searchId);for(let t of e.tags)i[t]??=[],i[t].push(e.searchId)}return{searchIdsByOutputField:r,searchIdsByTag:i,searchIdsByProvider:a,sortedTagEntries:Object.entries(i).sort((e,t)=>e[0].localeCompare(t[0])),sortedOutputFieldEntries:Object.entries(r).sort((e,t)=>e[0].localeCompare(t[0])),sortedProviderEntries:Object.entries(a).sort((e,t)=>e[0].localeCompare(t[0])),searchEntriesByBaseSearch:S2}}function T2(e){return a2[e]}function E2(e){let t=T2(e);return{[t.provider]:t.cost.mode===`per_result`?t.cost.creditsPerResult:t.cost.mode===`per_search`?t.cost.creditsPerSearch:t.cost.creditsPerPage}}function D2(e){return e.map(e=>({public_id:`sandbox-${e}`,provider:e,is_default:!0}))}function O2(e){return D2(KG(e).allowedUserConnectionProviders)}function k2(e){return D2([jG(e).provider])}function A2(e){return D2([T2(e).provider])}const j2=[{id:`people`,label:`People`,color:`#8B7DFF`,order:0},{id:`companies`,label:`Companies`,color:`#10B981`,order:1},{id:`data`,label:`Data`,color:`#F59E0B`,order:2},{id:`deprecated`,label:`Deprecated`,color:`#94A3B8`,order:3}],M2=new Map(j2.map(e=>[e.id,e]));function N2(e){return M2.get(e)}function P2(){return j2}const F2={"people:profiles:amplemarket@1":[{search_id:`people:profiles:amplemarket@1`,config:{page_number:1,limit:50,filters:{current_employer_names:{include:[],exclude:[]},current_departments:[],current_employer_locations:{include:[],exclude:[]},person_names:[],current_employer_founded_year:{min:null,max:null},current_employer_estimated_revenue:[],current_employer_investors:[],current_employer_open_position_titles:[],current_job_functions:[],current_locations:{include:[`Berlin`],exclude:[]},current_employer_linkedin_industries:[],current_employer_domains:{include:[],exclude:[]},current_seniority_levels:[],school_names:{include:[],exclude:[]},current_job_titles:[]}}}],"companies:profiles:amplemarket@1":[{search_id:`companies:profiles:amplemarket@1`,config:{page_number:1,limit:50,filters:{company_industries:{include:[],exclude:[]},company_names:{include:[`Microsoft`],exclude:[]},company_profile_urls:{include:[],exclude:[]},company_types:[],company_domains:{include:[],exclude:[]},customer_types:[],headcount_growth_l6m_in_percent:{min:null,max:null},founded_year:{min:null,max:null},revenue_groups:[],investors:[],keywords:{include:[],exclude:[]},open_position_titles:[],headcount:[],hq_locations:{include:[],exclude:[]}}}}],"people:profiles:crustdata@1":[{search_id:`people:profiles:crustdata@1`,config:{cursor:``,limit:10,filters:{locations:{include:[`Berlin`,`Germany`],exclude:[]},profile_headline_keywords:{include:[`Marketing`],exclude:[]},profile_summary_keywords:{include:[],exclude:[]},profile_languages:{include:[`English`],exclude:[]},languages:{include:[],exclude:[]},skills:{include:[`Python`,`Data Analysis`],exclude:[]},years_of_experience:[`1 to 2 years`],current_seniority_levels:{include:[`Senior`],exclude:[]},current_employers:{include:[],exclude:[]},current_employers_website_urls:{include:[],exclude:[]},current_job_titles:{include:[`Software Engineer`],exclude:[]},current_employers_linkedin_industries:{include:[],exclude:[]},years_at_current_company:[`1 to 2 years`],previous_seniority_levels:{include:[],exclude:[]},previous_employers:{include:[],exclude:[]},previous_employers_website_urls:{include:[],exclude:[]},previous_employers_linkedin_industries:{include:[],exclude:[]},previous_job_titles:{include:[],exclude:[]},certifications:{include:[],exclude:[]},honors:{include:[],exclude:[]},recently_changed_jobs:!1,fields_of_study:{include:[],exclude:[]},degree_names:{include:[],exclude:[]},school_names:{include:[],exclude:[]},current_school_names:{include:[],exclude:[]},extracurricular_activities:{include:[],exclude:[]}}}}],"companies:profiles:crustdata@1":[{search_id:`companies:profiles:crustdata@1`,config:{cursor:``,limit:10,filters:{hq_locations:{include:[`San Francisco, CA`],exclude:[]},crunchbase_categories:{include:[`Artificial Intelligence`],exclude:[]},crunchbase_investors:{include:[],exclude:[]},tracxn_investors:{include:[],exclude:[]},company_types:{include:[],exclude:[]},linkedin_industries:{include:[`Technology`],exclude:[]},markets:{include:[],exclude:[]},linkedin_categories:{include:[],exclude:[]},headcount:{include:[],exclude:[]},headcount_growth_l6m_in_percent:[],revenue_in_usd:{from:1e4,to:1e6},last_funding_type:{include:[],exclude:[]},last_funding_amount:{from:null,to:null},number_of_followers:[],follower_growth_l6m_in_percent:[],profile_summary_keywords:{include:[],exclude:[]},competitor_domains:{include:[`google.com`],exclude:[]}}}}],"people:profiles:amplemarket@2":[{search_id:`people:profiles:amplemarket@2`,config:{page_number:1,limit:50,filters:{current_employer_names:{include:[],exclude:[]},current_departments:[],current_employer_locations:{include:[],exclude:[]},person_name:``,current_employer_founded_year:{min:null,max:null},current_employer_estimated_revenue:[],current_employer_investors:[],current_employer_open_position_titles:[],current_job_functions:[],current_locations:{include:[`Berlin`],exclude:[]},current_employer_linkedin_industries:[],current_employer_domains:{include:[],exclude:[]},current_seniority_levels:[],school_names:[],current_job_titles:[]}}}],"companies:profiles:amplemarket@2":[{search_id:`companies:profiles:amplemarket@2`,config:{page_number:1,limit:50,filters:{company_industries:{include:[],exclude:[]},company_names:{include:[`Microsoft`],exclude:[]},company_profile_urls:{include:[],exclude:[]},company_types:[],company_domains:{include:[],exclude:[]},customer_types:[],headcount_growth_l6m_in_percent:{min:null,max:null},founded_year:{min:null,max:null},revenue_groups:[],investors:[],keywords:{include:[],exclude:[]},open_position_titles:[],headcount:[],hq_locations:{include:[],exclude:[]}}}}],"people:profiles:crustdata@2":[{search_id:`people:profiles:crustdata@2`,config:{cursor:``,limit:10,filters:{locations:{include:[`Berlin`,`Germany`],exclude:[]},profile_headline_keywords:{include:[`Marketing`],exclude:[]},profile_summary_keywords:{include:[],exclude:[]},profile_languages:{include:[`English`],exclude:[]},languages:{include:[],exclude:[]},skills:{include:[`Python`,`Data Analysis`],exclude:[]},years_of_experience:[`1 to 2 years`],current_seniority_levels:{include:[`Senior`],exclude:[]},current_employer_names:{include:[],exclude:[]},current_employer_domains:{include:[],exclude:[]},current_job_titles:{include:[`Software Engineer`],exclude:[]},current_employer_industries:{include:[],exclude:[]},years_at_current_company:[`1 to 2 years`],previous_seniority_levels:{include:[],exclude:[]},previous_employer_names:{include:[],exclude:[]},previous_employer_domains:{include:[],exclude:[]},previous_employer_industries:{include:[],exclude:[]},previous_job_titles:{include:[],exclude:[]},certifications:{include:[],exclude:[]},honors:{include:[],exclude:[]},recently_changed_jobs:!1,fields_of_study:{include:[],exclude:[]},degree_names:{include:[],exclude:[]},school_names:{include:[],exclude:[]},current_school_names:{include:[],exclude:[]},extracurricular_activities:{include:[],exclude:[]},post_processing_exclude_company_profile_urls:[`https://www.linkedin.com/company/acme`],post_processing_exclude_company_names:[`Acme`]}}}],"companies:profiles:crustdata@2":[{search_id:`companies:profiles:crustdata@2`,config:{cursor:``,limit:10,filters:{hq_locations:{include:[`San Francisco, CA`],exclude:[]},crunchbase_categories:{include:[`Artificial Intelligence`],exclude:[]},crunchbase_investors:{include:[],exclude:[]},tracxn_investors:{include:[],exclude:[]},company_types:{include:[],exclude:[]},linkedin_industries:{include:[`Technology`],exclude:[]},markets:{include:[],exclude:[]},linkedin_categories:{include:[],exclude:[]},headcount:{include:[],exclude:[]},headcount_growth_l6m_in_percent:[],revenue_in_usd:{from:1e4,to:1e6},last_funding_type:{include:[],exclude:[]},last_funding_amount:{from:null,to:null},number_of_followers:[],follower_growth_l6m_in_percent:[],profile_summary_keywords:{include:[],exclude:[]},competitor_domains:{include:[`google.com`],exclude:[]}}}}],"companies:profiles:crustdata@3":[{search_id:`companies:profiles:crustdata@3`,config:{cursor:``,limit:10,filters:{hq_countries:{include:[`USA`],exclude:[]},industries:{include:[`Software Development`],exclude:[]},categories:{include:[`Artificial Intelligence (AI)`],exclude:[]},headcount_brackets:[`51-200`,`201-500`],engineering_headcount_brackets:[`11-50`],headcount_growth_l6m_in_percent:{from:10,to:null},last_funding_round_types:[`series_a`,`series_b`],last_funding_within:`l12m`,investors:{include:[`Sequoia Capital`],exclude:[]},technologies:{include:[`Salesforce`],exclude:[]}}}}],"people:profiles:crustdata@3":[{search_id:`people:profiles:crustdata@3`,config:{cursor:``,limit:10,filters:{locations:{include:[`Berlin, Germany`],exclude:[]},profile_headline_keywords:{include:[`Marketing`],exclude:[]},skills:{include:[`Python`,`Data Analysis`],exclude:[]},languages:{include:[`English`],exclude:[]},current_employment_job_titles:{include:[`Software Engineer`],exclude:[]},current_employment_job_functions:[`Engineering`],current_employment_seniority_levels:[`Senior`,`Director`],current_employer_headcount_brackets:[`51-200`],current_employment_tenure_brackets:[`1 to 2 years`],total_years_of_experience_brackets:[`3 to 5 years`]}}}],"posts:content:crustdata@1":[{search_id:`posts:content:crustdata@1`,config:{limit:10,filters:{keywords:[`LLM Evaluation`,`RAG`],keyword_operator:`OR`,date_posted:`past-month`,content_types:[`videos`],author_industries:[`Software Development`]}}}],"companies:entitysearch:parallel@1":[{search_id:`companies:entitysearch:parallel@1`,config:{objective:`AI startups in Europe that raised a Series A in 2024`,limit:100}}],"people:entitysearch:parallel@1":[{search_id:`people:entitysearch:parallel@1`,config:{objective:`Heads of Engineering at Series B fintech companies in the US`,limit:100}}],"people:eventguests:luma@1":[{search_id:`people:eventguests:luma@1`,connector:{strategy:`first`,connections:[]},config:{limit:100,cursor:``,output_fields:{name:{enabled:!0,alias:``},email:{enabled:!0,alias:``},luma_id:{enabled:!0,alias:``},registered_at:{enabled:!0,alias:``},luma_event_guest_match:{enabled:!0,alias:``}},filters:{event_id:`evt-sandbox-1`,approval_status:`approved`}}}],"people:channelmembers:slack@1":[{search_id:`people:channelmembers:slack@1`,connector:{strategy:`first`,connections:[]},config:{channel_id:`C0123456789`,include_bots:!1,member_types:[`internal`],limit:200,cursor:``,output_fields:{name:{enabled:!0,alias:``},email:{enabled:!0,alias:``},slack_user_id:{enabled:!0,alias:``},slack_member_match:{enabled:!0,alias:``}}}},{search_id:`people:channelmembers:slack@1`,connector:{strategy:`first`,connections:[]},config:{channel_id:`C0EXTSHARED1`,include_bots:!1,member_types:[`external`],limit:200,cursor:``,output_fields:{name:{enabled:!0,alias:``},email:{enabled:!0,alias:``},slack_user_id:{enabled:!0,alias:``},slack_member_match:{enabled:!0,alias:``}}}}],"events:googlecalendar@1":[{search_id:`events:googlecalendar@1`,connector:{strategy:`first`,connections:[]},config:{calendar_id:`primary`,time_window:`n7d`,event_types:[`meeting`],limit:100,cursor:``,output_fields:{google_calendar_event_id:{enabled:!0,alias:``},event_title:{enabled:!0,alias:``},attendee_emails:{enabled:!0,alias:``},calendar_event_match:{enabled:!0,alias:``}}}}],"sheet:rows@1":[{search_id:`sheet:rows@1`,connector:{strategy:`first`,connections:[]},config:{sheet:`demo-leads`,limit:100,cursor:``,include_metadata:!1}}],"contacts:hubspot@1":[{search_id:`contacts:hubspot@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`hubspot_portal-1234567`}]},config:{query:``,custom_properties:[{property:`product_signup_date`}],filters:{logic:`and`,conditions:[{property:`value`,field_name:`lifecyclestage`,operator:`eq`,value:`customer`}]},lifecycle_stage:``,owner:``,created_within:`l24h`,modified_within:``,limit:100,cursor:``}}],"companies:hubspot@1":[{search_id:`companies:hubspot@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`hubspot_portal-1234567`}]},config:{query:``,custom_properties:[],filters:null,domains:{include:[`acme.com`],exclude:[]},owner:``,created_within:`l24h`,modified_within:``,limit:100,cursor:``}}],"deals:hubspot@1":[{search_id:`deals:hubspot@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`hubspot_portal-1234567`}]},config:{query:``,custom_properties:[],filters:{conditions:null,pipeline:``,deal_stage:``,status:`open`,owner:``,created_within:``,modified_within:``},limit:100,cursor:``}}],"owners:hubspot@1":[{search_id:`owners:hubspot@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`hubspot_portal-1234567`}]},config:{email:``,include_archived:!1,owned_object_type:`companies`,min_owned_count:50,include_ownership_counts:!0,limit:500}}],"people:attio@1":[{search_id:`people:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{custom_properties:[{property:`job_title`}],filters:{logic:`and`,conditions:[{property:`value`,field_name:`email_addresses.email_domain`,operator:`eq`,value:`acme.com`}]},has_email:!0,saved_view:``,created_within:`l24h`,limit:100,page_number:1}}],"companies:attio@1":[{search_id:`companies:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{custom_properties:[],filters:null,domains:{include:[`acme.com`],exclude:[]},domain_match:`root_domain`,saved_view:``,created_within:``,limit:100,page_number:1}}],"deals:attio@1":[{search_id:`deals:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{custom_properties:[],filters:{logic:`and`,conditions:[{property:`value`,field_name:`value`,operator:`gte`,value:1e4}]},stage:[],owner:``,saved_view:``,created_within:``,limit:100,page_number:1}}],"records:attio@1":[{search_id:`records:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{object:`people`,custom_properties:[],filters:null,saved_view:``,created_within:``,limit:100,page_number:1}}],"entries:attio@1":[{search_id:`entries:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{list:`sales`,custom_properties:[{property:`parent.domains`}],filters:null,stage:[],saved_view:``,created_within:``,limit:100,page_number:1}}],"query:attio@1":[{search_id:`query:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{query:`SELECT name, domains FROM companies`,limit:100,page_number:1}}],"users:attio@1":[{search_id:`users:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{include_suspended:!1,limit:100,page_number:1}}],"bucket:entries@1":[{search_id:`bucket:entries@1`,connector:{strategy:`first`,connections:[]},config:{bucket:`crm-contacts`,limit:100,cursor:``,include_metadata:!1}}],"contacts:salesforce@1":[{search_id:`contacts:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{custom_properties:[{property:`Lead_Score__c`},{property:`Account.Industry`}],filters:{logic:`and`,conditions:[{property:`value`,field_name:`Title`,operator:`contains`,value:`engineer`}]},list_view:``,email_domains:{include:[`acme.com`],exclude:[]},has_email:!1,owner:``,created_within:`l7d`,modified_within:``,limit:100,cursor:``}}],"leads:salesforce@1":[{search_id:`leads:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{custom_properties:[],filters:null,list_view:``,lead_status:``,include_converted:!1,owner:``,created_within:`l30d`,modified_within:``,limit:200,cursor:``}}],"accounts:salesforce@1":[{search_id:`accounts:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{custom_properties:[{property:`AnnualRevenue`}],filters:null,list_view:``,domains:{include:[`acme.com`,`globex.com`],exclude:[]},industry:``,owner:``,created_within:``,modified_within:``,limit:100,cursor:``}}],"opportunities:salesforce@1":[{search_id:`opportunities:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{custom_properties:[],filters:{logic:`and`,conditions:[{property:`value`,field_name:`CloseDate`,operator:`lte`,value:`2026-09-30`}]},list_view:``,status:`open`,stage:``,amount:{min:1e4,max:null},owner:``,created_within:``,modified_within:`l30d`,limit:100,cursor:``}}],"users:salesforce@1":[{search_id:`users:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{owned_object:`accounts`,min_owned_count:10,include_ownership_counts:!0,include_inactive:!1,custom_properties:[],limit:100,cursor:``}}],"query:salesforce@1":[{search_id:`query:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{soql:`SELECT OwnerId, Owner.Name, COUNT(Id) cnt FROM Account GROUP BY OwnerId, Owner.Name HAVING COUNT(Id) > 10`,limit:100,page_number:1}}],"query:postgres@1":[{search_id:`query:postgres@1`,connector:{strategy:`first`,connections:[]},config:{query:`SELECT id, name, email FROM contacts ORDER BY id`,limit:100,page_number:1}}],"query:databricks@1":[{search_id:`query:databricks@1`,connector:{strategy:`first`,connections:[]},config:{query:`SELECT id, name, email FROM samples.tpch.customer ORDER BY id`,limit:100,page_number:1}}]};function I2(e,t,n){if(t==null)return{};try{let r=Do(e,n)?.getStaticWidgets?.(t),i=pK(n,t);return Jt(qt(r||{},{display_value:i?{label:i}:void 0}))}catch(e){return console.warn(`Failed to generate UI props: ${e}`),{}}}var L2=class extends rD{constructor(e){super(e.map(e=>e.message).join(`, `)||`Unknown`),this.errors=e}};function R2(e){let t=[];for(let n of e){if(n instanceof t1){t.push(n);continue}let e=n.search_id,r=o2(e);if(!r)throw Error(`Unknown pipe: ${n.search_id}`);let i=new r(u2.parse(n));t.push(i)}return t}function z2(e){try{return R2(e.searches)}catch(e){throw e instanceof L2?e:new iD([nD.ValidationFailed({error:e})])}}const B2=[{id:`data_hygiene`,label:`Data hygiene`,color:`#10B981`,order:0},{id:`enrichment`,label:`Enrichment`,color:`#3B82F6`,order:1},{id:`internal`,label:`Internal`,color:`#94A3B8`,order:2},{id:`deprecated`,label:`Deprecated`,color:`#94A3B8`,order:3}],V2=new Map(B2.map(e=>[e.id,e]));function H2(e){return V2.get(e)}function U2(){return B2}const W2={"rows:add@1":[{effect_id:`rows:add@1`,connector:null,config:{input:[{name:`Jane Doe`,profile_url:`https://www.linkedin.com/in/some-profile`,company_domain:`acme.com`}],allow_field_creation:!0,allow_empty:!1}}],"rows:dedupe@1":[{effect_id:`rows:dedupe@1`,connector:null,config:{fields:[{field_name:`work_email`}],match:`all`,strategy:`keep_oldest`}}],"rows:duplicate@1":[{effect_id:`rows:duplicate@1`,connector:null,config:{}}],"rows:enrich@1":[{effect_id:`rows:enrich@1`,connector:null,config:{pipes:[],selection:{type:`window`,count:2}}}],"sheet:reset@1":[{effect_id:`sheet:reset@1`,connector:null,config:{}}],"fields:deletesparse:input@1":[{effect_id:`fields:deletesparse:input@1`,connector:null,config:{fields:[{field_name:`company_raw_address`},{field_name:`company_founded_year`}],probe_size:1e3,threshold_in_percent:25}}]};var G2=class extends Error{errors;constructor(e){super(e.join(`
|
|
146
|
-
`)),this.name=`SheetEffectValidationError`,this.errors=e}};function K2({effects:e,validationContext:t,schemaInputs:n}){let r=[],i=[],a=[],o=[];e.some(e=>e.effect_id===`pipe:remove@1`)&&e.length>1&&r.push(`pipe:remove@1 must be the only effect in a run.`);let s={...n,validationContext:t},c=t,l=new Set(Object.keys(t.fieldDefinitions)),u=t.fieldDefinitions,d=null;return e.forEach((e,t)=>{let n=[],f=GY(e.effect_id);if(!f){n.push(`unknown effect "${e.effect_id}"`),q2(i,r,t,e.effect_id,n);return}let p;try{p=new f(e)}catch(a){n.push(a.message),q2(i,r,t,e.effect_id,n);return}let ee=p.getFieldReferences().filter(e=>!l.has(e));if(ee.length>0){let e=`references fields that do not exist at this step: ${ee.join(`, `)}`;d&&(e+=`. These may be produced only at run time by "${d}" earlier in this chain — commit that effect first, then add the effects that use its columns in a follow-up run.`),n.push(e)}let te=e.config?.where;if(te&&Array.isArray(te.conditions))for(let e of te.conditions)e.property===`value`&&u[e.field_name]?.type===`json`&&n.push(`where-condition on '${e.field_name}' compares a json field's VALUE — json fields support STATUS conditions only (property: "status"), or extract the nested property into a flat field first.`);try{let{next:e}=p.evolveSchema(s);s=e,c=e.validationContext,l=new Set(Object.keys(e.validationContext.fieldDefinitions)),u=e.validationContext.fieldDefinitions}catch(e){if(e instanceof iD)for(let t of e.appErrors)n.push(t.message);else n.push(e.message)}d===null&&p.producesDynamicFields()&&(d=e.effect_id),a.push(p),o.push(e),q2(i,r,t,e.effect_id,n)}),{valid:r.length===0,steps:i,errors:r,instances:a,payloads:o,resultingFieldDefinitions:c.fieldDefinitions}}function q2(e,t,n,r,i){e.push({index:n,effect_id:r,valid:i.length===0,errors:i});for(let e of i)t.push(`effects[${n}] (${r}): ${e}`)}function J2({effects:e,validationContext:t,schemaInputs:n}){let r=K2({effects:e,validationContext:t,schemaInputs:n});if(!r.valid)throw new G2(r.errors);return{instances:r.instances,payloads:r.payloads}}function Y2(e){let t=(e??[]).map(e=>X2(e));if(t.length===0)return{title:`Effect run`,description:`An effect run with no steps.`};let[n]=t;return t.length===1&&n?{title:n.title,description:n.description}:{title:`${t.length} steps: ${t.map(e=>e.title).join(` · `)}`,description:t.map(e=>e.description).join(` · `)}}function X2(e){let t=e.effect_id,n=L(t),r=e.config??{};switch(n){case`pipe:add`:{let e=Z2(r.pipe_payload);return{title:e?`Added pipe ${e}`:`Added pipe`,description:e?`Added the pipe ${e} to the sheet.`:`Added a pipe to the sheet.`}}case`pipe:update`:{let e=Z2(r.pipe_payload);return{title:e?`Updated pipe ${e}`:`Updated pipe`,description:e?`Updated the configuration of pipe ${e}.`:`Updated a pipe.`}}case`pipe:remove`:return{title:`Removed pipe`,description:`Removed a pipe from the sheet.`};case`fields:add`:return{title:`Added field`,description:`Added a field to the sheet.`};case`fields:patch`:return{title:`Edited field`,description:`Edited a field on the sheet.`};case`fields:remove`:return{title:`Removed fields`,description:`Removed fields from the sheet.`};case`rows:add`:{let e=Array.isArray(r.input)?r.input.length:void 0;return{title:e==null?`Added rows`:`Added ${e} ${e4(e,`row`)}`,description:e==null?`Added rows to the sheet.`:`Added ${e} ${e4(e,`row`)} to the sheet.`}}case`rows:remove`:return{title:`Removed rows`,description:`Removed rows from the sheet.`};case`rows:dedupe`:return{title:`Removed duplicate rows`,description:`Removed duplicate rows from the sheet.`};case`rows:duplicate`:return{title:`Duplicated rows`,description:`Duplicated rows in the sheet.`};case`rows:enrich`:return{title:`Enriched rows`,description:`Ran enrichment pipes over rows.`};case`rows:filter:prompt`:return{title:`AI-filtered rows`,description:`Filtered rows with an AI prompt.`};case`rows:import`:return{title:`Imported rows`,description:`Imported rows into the sheet.`};case`row:update`:return{title:`Updated row`,description:`Updated a single row.`};case`search:run`:{let e=Q2(r.search_payload);return{title:e?`Ran search ${e}`:`Ran search`,description:e?`Ran the search ${e} and appended its results.`:`Ran a search and appended its results.`}}case`sheet:export`:return{title:`Exported sheet`,description:`Exported the sheet.`};case`sheet:reset`:return{title:`Reset sheet`,description:`Reset the sheet to its empty state.`};case`env:change`:return{title:`Changed environment`,description:`Switched the sheet environment.`};case`timetravel:create`:return{title:`Created restore point`,description:`Snapshotted the sheet state.`};case`timetravel:travel`:return{title:`Restored to a previous point`,description:`Restored the sheet to a previous point in time.`};default:{let e=$2(t);return{title:e??t,description:e??t}}}}function Z2(e){if(e&&typeof e==`object`){let t=e.pipe_id;if(typeof t==`string`&&t.length>0)return t}}function Q2(e){if(e&&typeof e==`object`){let t=e.search_id;if(typeof t==`string`&&t.length>0)return t}}function $2(e){try{return KY(e)?.label}catch{return}}function e4(e,t){return e===1?t:`${t}s`}function t4(e){if(e instanceof I)return e;let t=e.effect_id,n=GY(t);if(!n)throw Error(`Unknown effect: ${e.effect_id}`);return new n(QY.parse(e))}const n4={none:0,verified:1,partner:2};function r4(e){return e.isPartner?`partner`:e.isVerified?`verified`:`none`}function i4(e,t){return e?n4[t]>=n4[e]:!0}function a4(e){return zG[e]?.accessLevel}function o4(e){return _G[e]?.accessLevel}function s4(e){return KZ(e)?.accessLevel}const c4=/[\\^$.+()|[\]{}]/g,l4=new Map;function u4(e){let t=l4.get(e);if(t)return t;let n=``;for(let t=0;t<e.length;t++){let r=e[t];r===`*`?n+=`.*`:r===`?`?n+=`.`:n+=r.replace(c4,`\\$&`)}let r=RegExp(`^${n}$`);return l4.set(e,r),r}function d4(e,t){return u4(t).test(e)}function f4(e,t){if(!t||t.length===0)return!1;for(let n of t)if(d4(e,n))return!0;return!1}function p4(e,t){if(!t)return!0;let{includes:n,excludes:r}=t;return!(n&&n.length>0&&!f4(e,n)||r&&r.length>0&&f4(e,r))}function m4(e,t){return p4(e,t?.providers)}function h4(e,t){if(!t)return!0;if(!p4(e,t.pipes))return!1;if(t.providers){let n=XG(e);if(n.length===0)return!0;if(!n.some(e=>m4(e,t)))return!1}return!0}function g4(e,t,n){return t?!(!p4(e,t.searches)||n!==void 0&&!m4(n,t)):!0}function _4(e,t,n){return t?!(!p4(e,t.searchesMulti)||n!==void 0&&!m4(n,t)):!0}function v4(e,t){return t?e.filter(e=>h4(e.pipeId,t)):e.slice()}function y4(e,t){return t?e.filter(e=>g4(e.searchId,t,e.provider)):e.slice()}function b4(e,t){return t?e.filter(e=>_4(e.searchId,t,e.provider)):e.slice()}function x4(e){return e.toLowerCase().split(/[^\p{L}\p{N}]+/u).filter(Boolean)}function S4(e){return x4(e)}function C4(e){return e?e.flatMap(x4):[]}const w4={label:{prefix:100,exact:120},labelFirstWordBonus:40,keyword:{prefix:60,exact:70},tag:{prefix:40,exact:45},provider:{prefix:35,exact:40},id:{prefix:30,exact:35},description:{prefix:5,exact:6},exactLabelBonus:200},T4=w4;function E4(e){let t=x4(e.label);return{labelWords:t,keywordWords:C4(e.keywords),tagWords:C4(e.tags),providerWords:C4(e.providers),idWords:x4(e.id),descriptionWords:e.description?x4(e.description):[],normalizedLabel:t.join(` `)}}function D4(e,t,n){let r=0;for(let i of t){let t=i===e?n.exact:i.startsWith(e)?n.prefix:0;t>r&&(r=t)}return r}function O4(e,t){let n=0;for(let r=0;r<t.length;r++){let i=t[r],a=i===e?T4.label.exact:i.startsWith(e)?T4.label.prefix:0;a>0&&r===0&&(a+=T4.labelFirstWordBonus),a>n&&(n=a)}return n}function k4(e,t){let n=x4(t);if(n.length===0)return 0;let r=0;for(let t of n){let n=Math.max(O4(t,e.labelWords),D4(t,e.keywordWords,T4.keyword),D4(t,e.tagWords,T4.tag),D4(t,e.providerWords,T4.provider),D4(t,e.idWords,T4.id),D4(t,e.descriptionWords,T4.description));if(n===0)return 0;r+=n}return e.normalizedLabel===n.join(` `)&&(r+=T4.exactLabelBonus),r}function A4(e){return e.keywords}function j4(e){let t=new Set(e.deprecatedProviders),n=Array.from(new Set([...e.managedProviders,...e.allowedUserConnectionProviders])).filter(e=>!t.has(e));return E4({label:e.label,id:e.pipeId,keywords:A4(e),tags:e.tags,providers:n,description:e.description})}function M4(e){return E4({label:e.label,id:e.searchId,keywords:A4(e),tags:e.tags,providers:[e.provider],description:e.description})}function N4(e){return E4({label:e.label,id:e.searchId,keywords:A4(e),tags:e.tags,providers:[e.provider],description:e.description})}function P4(e){return E4({label:e.label,id:e.effectId,keywords:A4(e),tags:e.tags,providers:Array.from(new Set([...e.managedProviders,...e.allowedUserConnectionProviders])),description:e.description})}function F4(e){let t=Object.values(e.billableOperations).map(e=>e.allowManagedConnection?e.credits.default:0);return Math.min(...t)}function I4(e){return Math.min(e.cost.mode===`per_result`?e.cost.creditsPerResult:e.cost.mode===`per_search`?e.cost.creditsPerSearch:e.cost.creditsPerPage)}function L4(e){return e.cost.allowManagedConnection?e.cost.credits.default:0}function R4(e){let t=Object.values(e.billableOperations).map(e=>e?.allowManagedConnection?e.credits.default:0);return t.length?Math.min(...t):0}function z4(e,t){let n=Math.max(1,t.minItems),r=Math.max(n,t.maxItems),i=[],a=[],o=0;for(let s of e){a.push(s),o+=t.sizeOf(s);let e=a.length>=r,c=o>=t.targetSize&&a.length>=n;(e||c)&&(i.push(a),a=[],o=0)}return a.length>0&&i.push(a),i}function B4(e){let t=dK(e);if(!t)return``;try{return te(t)||new URL(t).hostname}catch{return``}}const V4=[`http://`,`https://`,`mailto:`],H4=new Set([`*`,`_`,`~`,"`",`[`,`]`,`(`,`)`,`\\`]);function U4(e){return e?W4(e):[]}function W4(e){let t=[],n=``,r=0,i=()=>{n&&=(t.push({type:`text`,value:n}),``)};for(;r<e.length;){let a=e[r],o=e[r+1];if(a===`\\`&&o!==void 0&&H4.has(o)){n+=o,r+=2;continue}if(a==="`"){let n=G4(e,r+1,"`");if(n>-1){i(),t.push({type:`code`,value:e.slice(r+1,n)}),r=n+1;continue}}if(a===`*`&&o===`*`){let n=G4(e,r+2,`**`);if(n>r+2){i(),t.push({type:`strong`,children:W4(e.slice(r+2,n))}),r=n+2;continue}}if(a===`~`&&o===`~`){let n=G4(e,r+2,`~~`);if(n>r+2){i(),t.push({type:`del`,children:W4(e.slice(r+2,n))}),r=n+2;continue}}if(a===`*`&&o!==`*`){let n=G4(e,r+1,`*`);if(n>r+1){i(),t.push({type:`em`,children:W4(e.slice(r+1,n))}),r=n+1;continue}}if(a===`[`){let n=G4(e,r+1,`]`);if(n>-1&&e[n+1]===`(`){let a=G4(e,n+2,`)`);if(a>-1){let o=e.slice(n+2,a);if(V4.some(e=>o.startsWith(e))){i(),t.push({type:`link`,href:o,children:W4(e.slice(r+1,n))}),r=a+1;continue}}}}n+=a,r+=1}return i(),t}function G4(e,t,n){let r=t;for(;r<e.length;){if(e[r]===`\\`&&r+1<e.length){r+=2;continue}if(K4(e,r,n))return r;r+=1}return-1}function K4(e,t,n){if(t+n.length>e.length)return!1;for(let r=0;r<n.length;r++)if(e[t+r]!==n[r])return!1;return!0}export{Pc as AI_MODELS,Fc as AI_MODEL_CATALOG,Bc as AI_MODEL_RAW_USD,nQ as ATTIO_APP_SCOPES,gf as ATTIO_ATTRIBUTE_TYPE_TABLE,sn as ATTIO_COMPANIES_STANDARD_PROPERTIES,cn as ATTIO_DEALS_STANDARD_PROPERTIES,on as ATTIO_PEOPLE_STANDARD_PROPERTIES,$Z as ATTIO_SCOPES_ACTIVITY_READ,ZZ as ATTIO_SCOPES_LISTS_READ,QZ as ATTIO_SCOPES_MEMBERS_READ,XZ as ATTIO_SCOPES_RECORDS_READ,eQ as ATTIO_SCOPES_RECORDS_WRITE,tQ as ATTIO_SCOPES_SQL,ln as ATTIO_STANDARD_PROPERTIES_BY_OBJECT,Ui as B2BPostMatchSchema,Ke as BUCKET_TYPES,Ze as BucketClaimConfigSchema,Qe as BucketCounterConfigSchema,$e as BucketEventCounterConfigSchema,Ye as BucketFieldDefSchema,Je as BucketFieldTypeSchema,Xe as BucketSchemaSchema,In as CALENDAR_EVENT_TYPES,C$ as CALLOUT_VARIANTS,w4 as CATALOG_SEARCH_WEIGHTS,Ba as CATEGORY_META,xr as COMPANY_STANDARD_PROPERTIES,br as CONTACT_STANDARD_PROPERTIES,Ic as CREDIT_USD_VALUE,qe as CURRENT_BUCKET_TYPE_VERSION,gs as CatalogSchemaRefSchema,IY as ConciseFieldValueSchema,Ns as ConditionBlockSchema,ht as ConditionEvaluationError,mt as ConditionFieldNotFoundError,bs as ConditionOperatorsSchema,or as CrustdataCompanyMatchV2Schema,Sr as DEAL_STANDARD_PROPERTIES,Hc as DEFAULT_MODEL_COPY_WRITING,Uc as DEFAULT_MODEL_FAST_REASONING,Vc as DEFAULT_MODEL_REASONING,zt as Effect,Dt as EffectAllSelectionSchema,Et as EffectRowsSelectionSchema,kt as EffectSelectionSchema,Ot as EffectWindowSelectionSchema,eX as EffectsRequestSchema,tX as EffectsResponseSchema,Bt as EffectsRunStatusSchema,nX as EffectsValidateRequestSchema,iX as EffectsValidateResponseSchema,rX as EffectsValidateStepSchema,ps as ExpandedFieldValueSchema,Fp as FIELD_PLACEHOLDERS,mD as FORMULA_RESULT_TYPES,as as FieldAnnotationSchema,xK as FieldAnnotations,os as FieldAnnotationsSchema,Mo as FieldNameSchema,ns as FieldReasonSchema,Vo as FieldValueSchema,eZ as FormStoreSchema,oZ as HIGH_VOLUME_PRICING_MIN_CREDITS,pd as INPUT_GROUP_KEY,ys as JSONExtractSchema,Ho as JSONMetaSchema,Lc as MANAGED_TOKEN_MARGIN,tJ as MANUAL_DEFAULT,Wa as MAX_SIGNALS_PER_SCAN,Ds as NoConnectorSchema,It as ObjectHasher,Ts as OptionalConnectorSchema,vc as PIPE0_DEFAULT_CONNECTION_PUBLIC_ID,Fo as PIPE_IDS,GZ as PLAYBOOK_IDS,DG as PaginationTypeSchema,Vi as PersonProfileFieldSchema,sN as PersonWorkemailWaterfall1Entry,oN as PersonWorkemailWaterfall1PayloadSchema,aN as PersonWorkemailWaterfall1PipeClass,B as Pipe,rD as Pipe0Error,Io as PipeIdSchema,WG as PipePayloadSchema,Fs as PipeRunIfSchema,iD as PipelineValidationError,Po as PipesEnvironmentSchema,ts as PipesErrorSchema,_s as PipesFieldDefinitionSchema,vs as PipesFieldDefinitionsSchema,ms as PipesInputSchema,nK as PipesRequestConfigSchema,rK as PipesRequestSchema,tK as PipesResponseSchema,GG as ProcessedPipePayloadSchema,xG as ProcessedSearchPayloadSchema,u2 as ProcessedSearchesPayloadSchema,QY as ProcessedSheetEffectPayloadSchema,No as ProviderNameSchema,rs as RECORD_FIELD_FORMATS,Lo as RECORD_FIELD_TYPES,Ua as REJOIN_GAP_DAYS,St as REPORT_EFFECT_IDS,w$ as REPORT_ROW_CAP,S$ as REPORT_TAGS,dd as RESERVED_FIELD_NAMES,xs as RUN_IF_OPERATOR_LABELS,Cs as RUN_IF_STATUS_OPERATORS,Ss as RUN_IF_VALUE_OPERATORS,$q as RUN_STATUS_OPTIONS,FY as RecordActionDetailSchema,us as RecordClaimedBySchema,RY as RecordDiffEntrySchema,is as RecordFieldFormatSchema,fs as RecordFieldSchema,Bo as RecordFieldStatusSchema,Ro as RecordFieldTypeSchema,zo as RecordIdSchema,ds as RecordResolvedBySchema,hs as RecordSchema,A$ as ReportChartDataSchema,N$ as ReportDataSchema,M$ as ReportDataValueSchema,IQ as ReportEffect,Ct as ReportEffectIdSchema,m$ as ReportEffectPayloadSchema,i$ as ReportEffectStepSummarySchema,h$ as ReportEffectsRequestSchema,g$ as ReportEffectsResponseSchema,D$ as ReportMetricDataSchema,j$ as ReportStatsDataSchema,k$ as ReportTableDataSchema,tD as RequestValidationError,Es as RequiredConnectorSchema,ks as RunIfStatusOperatorsSchema,As as RunIfStatusValueSchema,Os as RunIfValueOperatorsSchema,Qq as RunStatusSchema,Zi as SALESFORCE_ACCOUNT_STANDARD_PROPERTIES,Yi as SALESFORCE_CONTACT_STANDARD_PROPERTIES,mQ as SALESFORCE_FIELD_TYPE_TABLE,Xi as SALESFORCE_LEAD_STANDARD_PROPERTIES,Qi as SALESFORCE_OPPORTUNITY_STANDARD_PROPERTIES,ea as SALESFORCE_PERSON_STANDARD_PROPERTIES,ta as SALESFORCE_STANDARD_PROPERTIES_BY_OBJECT,$i as SALESFORCE_USER_STANDARD_PROPERTIES,eJ as SCHEDULED_DEFAULT,Z$ as SEARCHES_IDS,iL as SEARCH_IDS,xi as SENIORITY_LEVELS,wt as SHEET_EFFECT_IDS,La as SIGNAL_CATEGORIES,Ha as SIGNAL_LABELS,za as SIGNAL_SCOPES,Ra as SIGNAL_SUBCATEGORIES,Va as SIGNAL_TAXONOMY,Ia as SIGNAL_TYPES,ZF as SIGNAL_WINDOW_DAYS,ss as SafeFieldAnnotationPatchSchema,Z as Search,CG as SearchErrorSchema,aL as SearchIdSchema,yG as SearchPayloadSchema,SG as SearchRequestSchema,OG as SearchResponseSchema,wG as SearchResultFieldSchema,TG as SearchResultSchema,f2 as SearchesErrorSchema,Q$ as SearchesIdSchema,l2 as SearchesPayloadSchema,_2 as SearchesRequestBaseConfigSchema,y2 as SearchesRequestSchema,g2 as SearchesResponseSchema,p2 as SearchesResultFieldSchema,m2 as SearchesResultSchema,t1 as SearchesSearch,h2 as SearchesStatusSchema,I as SheetEffect,Tt as SheetEffectIdSchema,XY as SheetEffectPayloadSchema,VY as SheetEffectStepSummarySchema,G2 as SheetEffectValidationError,BY as SheetEffectsCountsSchema,zY as SheetEffectsDiffSchema,F$ as TAG_ALLOWED_ATTRS,P$ as TAG_DATA_KIND,Rc as TOKEN_BLOCK_SIZE_INPUT,zc as TOKEN_BLOCK_SIZE_OUTPUT,Gm as TYPES_TO_FORMATS,el as TokenBlockAccumulator,LY as UpdatedActionDetailSchema,Ps as ValueConditionBlockSchema,ZX as WidgetsByKindSchema,es as WidgetsSchema,z as all,tc as analyzeLiquidTemplate,gZ as analyzePipeFit,Mc as and,_d as any,x$ as applyDataPatch,b$ as applyReportEdits,X$ as applyReportUpdate,SQ as assertSoqlIdentifier,QG as assertUniqueBillableOperations,h as autocomplete,Wi as b2bPostMatchExample,et as bucketConfigSchemaFor,st as bucketSchemaFieldNames,ct as bucketSchemasEqual,ot as bucketSlugValue,Zc as buildAiModelTokenBillableOperations,un as buildAttioProjectionSet,E4 as buildCatalogSearchTarget,CK as buildDependencyGraph,tp as buildInputRequirementFromTemplates,FQ as buildKeysetPredicate,gX as buildResultColumns,na as buildSalesforceFetchSet,qa as buildSignalId,EQ as buildSoqlInList,Xc as buildTokenNote,G as catalogInput,z4 as chunkBySize,At as classifyEffectChainKind,cQ as classifySalesforceError,Pt as cleanObject,dK as cleanUrl,uK as cleanWebsiteUrl,np as collectConstantReferencesFromTemplates,RX as collectPipeContextSelectFields,bd as collectRequirementFields,UX as collectSearchContextSelectFields,q as collectSecretReferencesFromTemplates,qX as collectSheetEffectContextSelectFields,u4 as compilePattern,DX as computeTenure,Vt as configDefaults,Jc as creditsPerBlock,sr as crustdataCompanyMatchV2ExampleValue,ft as decodeBucketContract,hX as dedupeColumnNames,tt as defaultBucketConfig,md as deriveGroupedFieldOrder,$E as describeRequirement,to as detectPersonProfileSignals,aQ as domainToWebsiteVariants,dt as encodeBucketContract,Kt as entityLogoFavicon,Gt as entityLogoProfessionalProfileUrl,TQ as escapeSoqlLikeValue,CQ as escapeSoqlString,Ed as estimateGuardCredits,xt as evaluateConditionBlock,fX as explainEffectIds,uQ as extractDuplicateInfo,Ul as extractFormMetadata,R as field,Eo as fieldBehaviorCatalog,To as fieldCatalog,ZE as fieldNameStr,mK as fieldTypeFromValue,zZ as fieldsToObject,v4 as filterPipeEntries,y4 as filterSearchEntries,b4 as filterSearchesEntries,rQ as findMissingAttioScopes,PQ as formatSoqlBooleanValue,MQ as formatSoqlDateValue,NQ as formatSoqlNumberValue,JY as getAgentAllowedEffectIds,f$ as getAgentAllowedReportEffectIds,Gc as getAiModelConnectionRequirements,Wc as getAiModelProviders,Qc as getAiModelTokenBillingKeys,Yc as getAiModelTokenCredits,Kc as getAllAiModelProviders,_f as getAttioAttributeTypeRule,Lt as getBaseEffectName,U as getBasePipeName,L as getBaseSheetEffectName,ko as getCatalogFieldOrder,BG as getDefaultOutputFields,XG as getDefaultPipeProviders,PG as getDefaultSearchOutputFields,d2 as getDefaultSearchesOutputFields,oK as getDependentPipeNamesForInputProperty,sK as getDependentPipeNamesForPipe,B4 as getDomain,Rt as getEffectConfigHash,gK as getExpansionState,Ut as getFaviconUrlGoogle,g as getField,Do as getFieldBehavior,Vm as getFieldDisplayLabel,vK as getFieldWidgets,NG as getInitialSearchTableData,C2 as getInitialSearchesTableData,cX as getInitialSheetEffectTableData,$G as getInitialTableData,wd as getInputHash,nl as getJsonMetaForFieldDef,L4 as getLoweestSearchCreditAmount,I4 as getLoweestSearchesCreditAmount,F4 as getLowestPipeCreditAmount,R4 as getLowestSheetEffectCreditAmount,jo as getOutputFieldInfoFromDef,a4 as getPipeAccessLevel,qG as getPipeBillableOperationDef,iZ as getPipeCategoryEntries,rZ as getPipeCategoryEntry,VG as getPipeClass,Cd as getPipeConfigHash,HG as getPipeDefaultPayload,W as getPipeDocsURI,KG as getPipeEntry,MX as getPipeFormMask,aK as getPipeInstances,zX as getPipePayloadFormConfig,UG as getPipePayloadSchema,j4 as getPipeSearchTarget,JG as getPipeVersion,s4 as getPlaybookAccessLevel,KZ as getPlaybookEntry,JZ as getPlaybooksForPrimitive,X as getProviderBillableOperation,Dd as getProviderCreditsFromBillableOperations,Zt as getProviderEntry,vX as getReadableFieldStatus,c$ as getReportEffectClass,l$ as getReportEffectEntry,d$ as getReportEffectInstance,u$ as getReportEffectPayloadSchema,hQ as getSalesforceFieldTypeRule,D2 as getSandboxConnections,O2 as getSandboxConnectionsForPipe,k2 as getSandboxConnectionsForSearch,A2 as getSandboxConnectionsForSearches,o4 as getSearchAccessLevel,P2 as getSearchCategoryEntries,N2 as getSearchCategoryEntry,vG as getSearchClass,bG as getSearchDefaultPayload,jG as getSearchEntry,I2 as getSearchFieldWidgets,NX as getSearchFormMask,iY as getSearchInstance,HX as getSearchPayloadFormConfig,EG as getSearchPayloadSchema,M4 as getSearchSearchTarget,FG as getSearchTableDataAggregates,kG as getSearchVersion,o2 as getSearchesClass,c2 as getSearchesDefaultPayload,T2 as getSearchesEntry,yK as getSearchesFieldWidgets,R2 as getSearchesInstances,s2 as getSearchesPayloadSchema,N4 as getSearchesSearchTarget,w2 as getSearchesTableDataAggregates,b2 as getSearchesVersion,Bi as getSeniorityEmojiFromTitle,zi as getSeniorityLevelFromTitle,U2 as getSheetEffectCategoryEntries,H2 as getSheetEffectCategoryEntry,GY as getSheetEffectClass,id as getSheetEffectConfigHash,ZY as getSheetEffectDefaultPayload,KY as getSheetEffectEntry,PX as getSheetEffectFormMask,t4 as getSheetEffectInstance,KX as getSheetEffectPayloadFormConfig,qY as getSheetEffectPayloadSchema,P4 as getSheetEffectSearchTarget,iK as getStartingCostPerPipesProvider,IG as getStartingCostPerSearchProvider,E2 as getStartingCostPerSearchesProvider,eK as getTableDataAggregates,cZ as getTier,_K as getUnexpandedValue,Wt as ifDefined,F as inputFields,HZ as inputFromRecord,VZ as inputFromRecordArr,BZ as inputFromRecords,JX as inputGuards,YY as isAgentAllowedEffect,p$ as isAgentAllowedReportEffect,Ao as isCatalogField,Mt as isEmptyValue,i4 as isEntryAccessible,Oo as isFieldName,dZ as isHighVolumeEligible,h4 as isPipeAllowed,m4 as isProviderAllowed,yd as isRequirementMet,xd as isRequirementSatisfiedByRecord,fd as isReservedFieldName,g4 as isSearchAllowed,_4 as isSearchesAllowed,kQ as isSoqlDateLiteral,qc as isTokenBilledOperations,xQ as isValidSalesforceId,bQ as isValidSoqlIdentifier,bc as joinConnectionString,fZ as listHighVolumeEligibleOperations,uZ as listTiers,Td as managedDefaultCreditOf,at as mappedBucketFieldNames,kd as markRecordFieldAsComplete,Md as markRecordFieldAsFailed,jd as markRecordFieldAsNoResult,Ad as markRecordFieldAsPending,Pd as markRecordFieldAsProcessing,Nd as markRecordFieldAsSkipped,f4 as matchesAny,d4 as matchesPattern,Vl as mergeFormConfig,qt as mergeWidgets,Jl as noConnectorInput,mX as normalizeColumnName,iQ as normalizeDomain,vd as optional,C as optionalConnectorInput,Nc as or,r4 as orgAccessLevelFromFlags,P as outputFields,YZ as parseAttributeRef,ec as parseLiquidTemplate,Js as parseOutputTagArgs,DZ as parseRecordValueOrError,wc as parseRelaxedObject,K$ as parseReportSegments,U4 as parseRichText,lQ as parseSalesforceErrorBody,pX as parseSheetChainDetailed,H as perUnit,Hi as personProfileMatchExample1,zG as pipeCatalog,tZ as pipeCategoryCatalog,LG as pipeClassCatalog,RG as pipePayloadSchemaCatalog,ou as pipesAliasableFieldsSelectInput,vu as pipesAsyncIncludeExcludeSelectInput,Bl as pipesConditionInput,Au as pipesContextSelectInput,bu as pipesDateRangeInput,xu as pipesDestinationFieldConfig,cu as pipesFieldSelectInput,iu as pipesFieldsSelectInput,du as pipesIncludeExcludeInput,_u as pipesIncludeExcludeSelectInput,w as pipesInputField,Du as pipesIntInput,hl as pipesJsonExtractionInput,ku as pipesJsonSchemaField,Tu as pipesLLMSelectInput,gu as pipesLooseObjectInput,fu as pipesMultiCreateInput,Eu as pipesMultiSelectInput,Ou as pipesNumberInput,E as pipesOptionalBooleanInput,mu as pipesOrderedMultiCreateInput,D as pipesOutputField,v as pipesPayloadRegistry,Gl as pipesPromptInput,pu as pipesPropertyListInput,T as pipesProviderInput,yu as pipesRangeInput,Rl as pipesRowConditionInput,b as pipesRunIfInput,wu as pipesSelectInput,aZ as pipesSnippetCatalog,hu as pipesTaggedOrderedMultiCreateInput,x as pipesTaggedTextInput,Kl as pipesTemplateInput,Su as pipesTextInput,Cu as pipesTextareaInput,su as pipesTypedFieldsSelectInput,J as placeholder,WZ as playbookCatalog,UZ as processInputObjects,OP as projectOptionsDef,DP as projectScopedSheetOptionsDef,rt as providedCreationName,nt as providedCreationPolicy,Xt as providerCatalog,Y as rateLimitRatioFallingProgression,lq as renameFieldInPipePayloads,vf as renderAttioOperatorMatrix,Qs as renderLiquidTemplate,$s as renderLiquidTemplateSync,gQ as renderSalesforceOperatorMatrix,s$ as reportEffectCatalog,a$ as reportEffectClassCatalog,o$ as reportEffectPayloadSchemaCatalog,S as requiredConnectorInput,Od as requirementToInputFields,eD as requirementUnmetMessage,_ as requiresConnection,jc as requiresField,jX as resolveFormMask,it as resolveMappingEntry,wP as roundrobinBucketSlug,CP as roundrobinFilterKey,J$ as runReportEffectsValidation,K2 as runSheetEffectsValidation,nJ as runStatusesToQueueConfig,_Q as salesforceRecordUrl,rd as schemaEvolutionFrom,k4 as scoreCatalogSearch,_G as searchCatalog,j2 as searchCategoryCatalog,hG as searchClassCatalog,gG as searchPayloadSchemaCatalog,F2 as searchSnippetCatalog,M as searchesAsyncIncludeExcludeSelectInput,Gu as searchesAsyncMultiSelectInput,a2 as searchesCatalog,r2 as searchesClassCatalog,ju as searchesConditionInput,Wu as searchesContextSelectInput,Ru as searchesDateRangeInput,Iu as searchesExactRangeInput,k as searchesIncludeExcludeInput,Fu as searchesIncludeExcludeSelectInput,N as searchesIntInput,Pu as searchesMinMaxIntInput,O as searchesMultiCreateInput,j as searchesMultiSelectInput,Ku as searchesNumberField,zu as searchesOptionalBooleanInput,Zl as searchesOptionalConnectorInput,Bu as searchesOptionalNullableBooleanInput,Nu as searchesOrderedMultiCreateInput,A as searchesOutputField,y as searchesPayloadRegistry,i2 as searchesPayloadSchemaCatalog,Mu as searchesPropertyListInput,Lu as searchesRangeInput,Xl as searchesRequiredConnectorInput,Uu as searchesSelectInput,Vu as searchesTextInput,Hu as searchesTextareaField,Si as seniorityLevelSchema,jP as sheetColumnsOptionsDef,WY as sheetEffectCatalog,B2 as sheetEffectCategoryCatalog,HY as sheetEffectClassCatalog,UY as sheetEffectPayloadSchemaCatalog,W2 as sheetEffectSnippetCatalog,zl as sheetEffectsConditionInput,ed as sheetEffectsContextSelectInput,lu as sheetEffectsFieldsSelectInput,Zu as sheetEffectsIntInput,td as sheetEffectsLLMSelectInput,Xu as sheetEffectsMultiSelectInput,tu as sheetEffectsNoConnectorInput,$u as sheetEffectsOptionalBooleanInput,eu as sheetEffectsOptionalConnectorInput,Qu as sheetEffectsOptionalIntInput,rl as sheetEffectsPayloadRegistry,$l as sheetEffectsRequiredConnectorInput,nd as sheetEffectsSearchPayloadInput,Yu as sheetEffectsSelectInput,uu as sheetEffectsSelectionInput,qu as sheetEffectsTextInput,Ju as sheetEffectsTextareaInput,EP as sheetOptionsDef,wQ as soqlStringLiteral,Wm as sortObjectKeys,YG as sortPipeCatalogByBasePipe,AG as sortSearchCatalogByBaseSearch,x2 as sortSearchesCatalogByBaseSearch,oX as sortSheetEffectCatalogByBaseEffect,yc as splitConnectionString,Ge as staticAutocomplete,m as staticOptions,Um as stringify,Yt as stripStaticWidgets,Y2 as summarizeEffectRun,_$ as summarizeReportEffectRun,TX as tagPrimaryCurrentEducation,EX as tagPrimaryCurrentEmployment,Jt as tagStaticWidgets,Hm as testPrint,lZ as tierAtOrBelow,$c as tokenEstimate,S4 as tokenizeCatalogQuery,AZ as transformIntoResponse,pt as tryDecodeBucketContract,Tc as tryParseRelaxedObject,wK as validatePipesOrError,Y$ as validateReportChainAgainstVersion,q$ as validateReportMarkdown,z2 as validateSearches,J2 as validateSheetEffectsOrError,nD as validationErrorMessages,oQ as websiteToDomain};
|
|
141
|
+
return new Date(Date.now() - days * 86400000).toISOString().slice(0, 10);`,formula_inputs:[{field_name:`primary_seniority`}],result_type:`date`,output_fields:{formula_result:{alias:`signal_window_start`,enabled:!0}}}}],input:[{id:`1`,primary_seniority:`manager`}]}],"signals:personprofilematch@1":[{config:{environment:`production`},pipes:[{pipe_id:`signals:personprofilematch@1`,config:{signals:[],default_window:`l90d`,input_fields:{person_profile_match:{alias:``},signal_window_start:{alias:``}},output_fields:{signal_list:{alias:``,enabled:!0},signal_count:{alias:``,enabled:!0}}}}],input:[{id:`1`,signal_window_start:`2026-04-01`,person_profile_match:{value:Hi,status:`completed`,type:`json`,format:`json_object`,reason:null,resolved_by:null,widgets:{}}}]}],"http:request@1":[{pipes:[{pipe_id:`http:request@1`,config:{method:`GET`,url:`https://api.example.com/v1/companies/{{ company_name }}`,query_params:{limit:`10`},body:``,headers:{Authorization:`Bearer SECRET`},expected_response_schema:{},output_fields:{http_response_status:{alias:``,enabled:!0},http_response_body:{alias:``,enabled:!0},http_response_headers:{alias:``,enabled:!1}}}}],input:[{id:`1`,company_name:`Acme`}]}]},aZ=.1,oZ=[`level1`,`level2`,`level3`];function sZ(e,t){let n=oZ[t-1];if(n)return e[n]}function cZ(e,t){for(let n=t;n>=1;n--){let t=sZ(e,n);if(t)return{level:n,tier:t}}}function lZ(e){let t=[];for(let n=1;n<=3;n++){let r=sZ(e,n);r&&t.push({level:n,credits:r.credits,weight:r.weight})}return t}function uZ(e){if(e.default<.1)return!1;let t=lZ(e);if(t.length===0)return!1;for(let e=0;e<t.length;e++)if(t[e].level!==e+1)return!1;let n=e.default,r=0;for(let e of t){if(!(e.credits<n)||!Number.isInteger(e.weight)||e.weight<=r)return!1;n=e.credits,r=e.weight}return!0}function dZ(){let e=new Map;for(let t of Object.values(RG))for(let[n,r]of Object.entries(t.billableOperations)){let i=r;if(!i?.allowManagedConnection||!uZ(i.credits))continue;let a=n,o={kind:`pipe`,id:t.pipeId,label:t.label,categories:[...t.categories]},s=e.get(a);if(s){s.standardCredits=Math.min(s.standardCredits,i.credits.default),s.usedBy.push(o);continue}e.set(a,{billableOperation:a,provider:i.provider,kind:`pipe`,standardCredits:i.credits.default,tiers:lZ(i.credits),usedBy:[o]})}for(let t of Object.values(gG)){let{cost:n}=t;if(!n.allowManagedConnection||!uZ(n.credits))continue;let r=t.billableOperation,i={kind:`search`,id:t.searchId,label:t.label,categories:[...t.categories]},a=e.get(r);if(a){a.standardCredits=Math.min(a.standardCredits,n.credits.default),a.usedBy.push(i);continue}e.set(r,{billableOperation:r,provider:t.provider,kind:`search`,standardCredits:n.credits.default,tiers:lZ(n.credits),usedBy:[i]})}return[...e.values()].sort((e,t)=>e.billableOperation.localeCompare(t.billableOperation))}function fZ(e,t){switch(e.kind){case`field`:case`optional`:{let n=t[e.field.name];return n?{...e,field:{...e.field,resolvedName:n}}:e}case`all`:case`any`:return{...e,of:e.of.map(e=>fZ(e,t))}}}function pZ(e){switch(e.kind){case`field`:return e.field.resolvedName;case`optional`:return`${e.field.resolvedName} (optional)`;case`all`:return e.of.map(pZ).join(` AND `);case`any`:return`(${e.of.map(pZ).join(` OR `)})`}}function mZ(e,t){let n=2,r=`${e}_${n}`;for(;t.has(r);)n++,r=`${e}_${n}`;return r}function hZ({pipeId:e,availableFields:t,inputFieldAliases:n}){let r=RG[e];if(!r)throw Error(`Unknown pipe_id: "${e}"`);let i=new Set(t),a=r.defaultInputRequirement,o=a&&n&&Object.keys(n).length>0?fZ(a,n):a,s=o?vd(o,i):!0,c=o?yd(o).filter(e=>e.required).map(e=>({name:e.field.name,resolved_name:e.field.resolvedName,present:i.has(e.field.resolvedName)})):[],l=s?[]:c.filter(e=>!e.present).map(e=>e.resolved_name),u=new Set(i),d=[],f=[];for(let e of zG(r)){let t=i.has(e),n;t?(n=mZ(e,u),u.add(n),f.push({name:e,resolved_name:e,suggested_alias:n})):u.add(e),d.push({name:e,resolved_name:e,collides:t,suggested_alias:n})}return{pipe_id:e,runnable:s,requirement_description:o?pZ(o):`(no inputs required)`,required_fields:c,missing_fields:l,output_fields:d,output_collisions:f}}const gZ=[`yyyy-MM-dd`,`yyyy/MM/dd`,`yyyy-MM-dd HH:mm:ss`,`MM/dd/yyyy`,`MM/dd/yyyy HH:mm:ss`,`MM-dd-yyyy`,`MM-dd-yyyy HH:mm:ss`,`yyyyMMdd`],_Z=[`yyyy-MM-dd`,`yyyy/MM/dd`,`MM/dd/yyyy`,`MM-dd-yyyy`,`yyyyMMdd`,`dd-MM-yyyy`,`dd/MM/yyyy`],vZ=r.string().trim().transform(e=>{if(!/\./.test(e)&&!/^[a-zA-Z0-9_-]*$/.test(e))throw Error(`Invalid URL format`);let t=String(e).trim();if(/^https?:\/\//i.test(t)||(t=`https://${t}`),t=t.replace(/^http:\/\//i,`https://`),t=t.replace(/^https:\/\/[w]{4,}\./i,`https://www.`),t=t.endsWith(`/`)?t.slice(0,-1):t,!t.includes(`.`))throw Error(`Invalid URL format - no TLD`);return t}).check(e=>{r.url(e.value).safeParse(e.value).success||e.issues.push({code:`custom`,message:`Invalid URL`,input:e.value})}),yZ=r.coerce.string().trim().toLowerCase().transform(e=>{let t=e.replace(/^mailto:/i,``),[n,r]=t.split(`@`);return!r||!n?t:`${n.replace(/[^a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]/g,``)}@${r.replace(/\s+/g,``)}`}).check(e=>{r.email().safeParse(e.value).success||e.issues.push({code:`custom`,input:e.value,message:`Invalid email format`})});function bZ(e){return!isNaN(e.getTime())}const xZ=r.coerce.string().trim().transform(e=>{let t=e.replace(/[^0-9T:.\-/ ]/g,``).trim();for(let e of gZ){let n=c(t,e,new Date(0));if(bZ(n))return s(n,`yyyy-MM-dd'T'HH:mm:ss`)}throw Error(`Invalid date format: ${e}`)}),SZ=r.coerce.string().trim().transform(e=>{for(let t of _Z){let n=c(e,t,new Date(0));if(bZ(n))return s(n,`yyyy-MM-dd`)}throw Error(`Invalid date format: ${e}`)}),CZ=r.union([r.number(),r.string().transform(e=>{let t=e.replace(/[^0-9.]/g,``),n=parseFloat(t);if(isNaN(n))throw Error(`Invalid decimal format`);return n})]).refine(e=>!isNaN(e),{message:`Value must be a valid number`}),wZ=r.union([r.number().transform(e=>Math.trunc(e)),r.string().transform(e=>{let t=e.replace(/[^0-9]/g,``),n=parseInt(t,10);if(isNaN(n))throw Error(`Invalid integer format`);return n})]).check(r.int()),TZ=r.preprocess(e=>{if(typeof e!=`object`||!e)return e;try{return JSON.stringify(e)}catch{return e}},r.coerce.string().trim().min(1,{message:`Value cannot be empty for this format`}));function EZ(e,t){if(t===null)return e===``||e==null?null:e;if(e==null)return null;try{switch(t){case`url`:return vZ.parse(e);case`email`:return yZ.parse(e);case`datetime`:return xZ.parse(e);case`date`:return SZ.parse(e);case`decimal`:return CZ.parse(e);case`int`:return wZ.parse(e);case`currency`:return r.number().parse(e);case`percent`:return r.number().parse(e);case`address_line_1`:return TZ.parse(e);case`website_url`:return vZ.parse(e);case`profile_url`:return vZ.parse(e);case`zip_code`:return TZ.parse(e);case`markdown`:case`phone`:case`text`:return TZ.parse(e);case`json_object`:return r.record(r.any(),r.any()).parse(e);case`json_list`:return r.array(r.any()).parse(e);case`json_list_string`:return r.array(r.string()).parse(e);default:throw Error(`Unknown format: ${t}`)}}catch(r){throw r instanceof n?Error(`Unable to parse value ${Hm(e)} into format ${t}: ${r.message}`):r}}function DZ(e,t,n){let r={};for(let[i,a]of Object.entries(e.derivedInputFields)){let e=t.field_definitions[i]?.format||null,o=n[i]??null;if(mK(o))o.resolved_by?.ref===`input`?r[i]={value:o.value,type:a.type,claimed_by:{ref:`input`,config_hash:null},resolved_by:o.value==null?null:{ref:`input`,config_hash:null,input_hash:null,environment:o.resolved_by.environment||null},reason:null,status:o.value===null?`pending`:`completed`,widgets:o.widgets||{},format:o.format||e}:r[i]={value:o.value,type:a.type,claimed_by:o.claimed_by||{ref:`input`,config_hash:null},resolved_by:o.resolved_by?o.resolved_by:o.value==null?null:{ref:`input`,config_hash:null,input_hash:null,environment:null},reason:o.reason||null,status:o.status,widgets:o.widgets||{},format:o.format||e};else if(o!=null)try{r[i]={value:EZ(o,e),type:a.type,claimed_by:{ref:`input`,config_hash:null},resolved_by:{ref:`input`,config_hash:null,input_hash:null,environment:null},reason:null,status:`completed`,widgets:{},format:e}}catch{r[i]={value:o,type:a.type,claimed_by:{ref:`input`,config_hash:null},resolved_by:{ref:`input`,config_hash:null,input_hash:null,environment:null},reason:{code:`InvalidValue`,summary:`Invalid`,message:`This field expects a value of format ${e}.`},status:`failed`,widgets:{},format:e}}else r[i]={type:a.type,value:o,claimed_by:{ref:`input`,config_hash:null},resolved_by:{ref:null,config_hash:null,input_hash:null,environment:null},reason:null,status:`pending`,widgets:{},format:e}}return r}function OZ(e,t,n){for(let r=0;r<t.length;r++){let i=t[r];if(!i)throw Error(`Input object undefined`);let a=i.id;a!=null&&mK(a)&&(i.id=a.value),i.id||=crypto.randomUUID();let{id:o}=i;if(typeof o!=`string`&&typeof o!=`number`){n.errors.push(tD.InvalidId());continue}if(n.records[o]){n.errors.push(tD.IDConflict({index:r,id:o}));continue}n.order.push(o),n.records[o]={id:o,fields:DZ(e,n,i)}}}function kZ({context:e,input:t,config:n={}}){let r={field_definitions:e.fieldDefinitions,order:[],errors:[],records:{},queued_record_ids:new Set,adopted_record_ids:new Set};try{OZ(e,t,r);let{queuedRecordIdSet:i,adoptedRecordIdSet:a}=AZ(e,t,r,n);if(r.queued_record_ids=i,r.adopted_record_ids=a,jZ(e,r,n?.queue?.enabled),LZ(e,r),r.errors.length>0)throw new rD(r.errors);return r}catch(e){throw e instanceof rD?e:new rD([tD.ResponseGenerationFailed({error:e})])}}function AZ(e,t,n,r){let i=[],a=[];for(let o=0;o<e.orderedPipePayloads.length;o++){let s=e.orderedPipePayloads[o],c=e.orderedPipeInstances[o];if(!c){n.errors.push(tD.UnknownResolver({pipeId:s.pipe_id,index:o}));continue}let{queuedRecordIds:l,adoptedRecordIds:u}=IZ(e,t,c,n,r);i=i.concat(l),a=a.concat(u)}return{queuedRecordIdSet:new Set(i),adoptedRecordIdSet:new Set(a)}}function jZ(e,t,n){if(!n)return;let r=(t,n,r,i)=>{Object.values(t.getOutputFields()).forEach(a=>{let o=i.fields[a.resolvedName];if(!o)throw Error(`Internal: Output field ${XE(a)} not found`);o.status===`queued`&&(o.status=`skipped`,o.resolved_by={ref:`system`,environment:e.environment,config_hash:t.getConfigHashKey(),input_hash:t.getInputHashKey(i)},o.value=null,o.reason={code:`InputError`,message:`Field ${XE(n)} is missing but required (${r.value?`the value is`:`it has status`}: '${r.value?r.value:r.status}').`,summary:`Missing input`})})};for(let n=0;n<e.orderedPipePayloads.length;n++){let i=e.orderedPipePayloads[n],a=e.orderedPipeInstances[n];if(!a){t.errors.push(tD.UnknownResolver({pipeId:i.pipe_id,index:n}));continue}Object.values(t.records).forEach(e=>{let{valid:t,failedPipeInputField:n,failedRecordField:i}=bd(a.getInputRequirement(),e);t===!1&&r(a,n,i,e)})}}function MZ({inputHashKey:e,configHashKey:t,config:n,expandedValue:r}){return!!(n.queue?.triggers?.configHashMismatch&&n.queue.enabled&&r.resolved_by?.config_hash&&t&&r.resolved_by.config_hash!==t||n.queue?.triggers?.inputHashMismatch&&n.queue.enabled&&r.resolved_by?.input_hash&&e&&r.resolved_by.input_hash!==e)}function NZ({status:e,config:t}){return t.queue?.enabled?t.queue.triggers?.status?.includes(e)??!1:!1}function PZ({inputHashKey:e,configHashKey:t,expandedValue:n,config:r}){return MZ({inputHashKey:e,configHashKey:t,expandedValue:n,config:r})||NZ({status:n.status,config:r})}function FZ({inputHashKey:e,configHashKey:t,expandedValue:n}){let r=!1;return n.resolved_by?.config_hash&&t&&n.resolved_by.config_hash!==t&&(n.resolved_by.config_hash=t,r=!0),n.resolved_by?.input_hash&&e&&n.resolved_by.input_hash!==e&&(n.resolved_by.input_hash=e,r=!0),{didAdopt:r}}function IZ(e,t,n,r,i){let a=Object.entries(r.records),o=[],s=[];for(let c=0;c<a.length;c++){let l=a[c];if(!l)throw Error(`Required arr not present`);let[u,d]=l;for(let a of Object.values(n.getOutputFields())){let{resolvedName:l,type:u}=a,f=Pd({pipes:e.orderedPipeInstances,derivedInputFields:e.derivedInputFields},u),p=Fd({pipes:e.orderedPipeInstances,derivedInputFields:e.derivedInputFields},a.format),{resolvedInputValue:ee,isExpanded:te,expandedValue:ne}=hK(t[c]?.[l]??null),re=d.fields[l],ie=n.getConfigHashKey(),ae=n.getInputHashKey(d),oe={type:f,format:p,claimed_by:{ref:n.pipeId,config_hash:ie}};if(r.errors.length>0&&ee===null){let t=r.errors[0];if(!t)throw Error(`firstError undefined.`);d.fields[l]={...oe,value:null,status:`failed`,reason:{summary:`Validation error`,...t},resolved_by:{ref:`system`,environment:e.environment,config_hash:null,input_hash:null},widgets:{}};continue}let se=pK(ee);if(se!==`unknown`&&se!==f){let t=i.queue?.triggers?.outputFieldTypeError&&i.queue.enabled;d.fields[l]={...oe,value:t?null:ee,status:t?`queued`:`completed`,reason:null,resolved_by:t?{environment:e.environment,ref:`system`,config_hash:ie,input_hash:ae}:{environment:e.environment,ref:`input`,config_hash:null,input_hash:null},widgets:t?{}:ne?.widgets||re?.widgets||{},format:t?p:ne?.format||p};continue}if(ee==null){let t=te&&i.queue?.enabled&&ne.status===`pending`,n=te&&!t;if(te&&i.adopt?.enabled===!0&&(!i.adopt.statuses||i.adopt.statuses.includes(ne.status))){let{didAdopt:e}=FZ({inputHashKey:ae,configHashKey:ie,expandedValue:ne});e&&s.push(d.id)}if(te&&ne.status!==`pending`&&PZ({inputHashKey:ae,configHashKey:ie,config:i,expandedValue:ne})&&i.queue?.enabled)o.push(d.id),d.fields[l]={...oe,value:null,status:`queued`,reason:null,resolved_by:{environment:e.environment,ref:`system`,config_hash:ie,input_hash:ae},widgets:{}};else if(n)d.fields[l]={...oe,value:null,status:ne.status,type:ne.type||f,reason:ne.reason||null,resolved_by:ne.resolved_by||null,widgets:ne.widgets||{},format:ne.format||p};else{let t=i.queue?.triggers?.status?.includes(`pending`)??!0,n=i.queue?.enabled&&t?`queued`:`pending`;n===`queued`&&o.push(d.id),d.fields[l]={...oe,value:null,status:n,reason:null,resolved_by:n===`queued`?{environment:e.environment,ref:`system`,config_hash:ie,input_hash:ae}:null,widgets:{}}}continue}if(te){if(te&&i.adopt?.enabled===!0&&(!i.adopt.statuses||i.adopt.statuses.includes(ne.status))){let{didAdopt:e}=FZ({inputHashKey:ae,configHashKey:ie,expandedValue:ne});e&&s.push(d.id)}PZ({inputHashKey:ae,configHashKey:ie,expandedValue:ne,config:i})&&r.errors.length===0?(o.push(d.id),d.fields[l]={...oe,value:null,status:`queued`,reason:null,resolved_by:{environment:e.environment,ref:`system`,config_hash:null,input_hash:null},widgets:{}}):d.fields[l]={...oe,value:ee,status:`completed`,type:ne.type||f,reason:ne.reason||null,resolved_by:ne.resolved_by||{ref:`input`,config_hash:null,input_hash:null,environment:null},widgets:ne.widgets||re?.widgets||{},format:ne.format||p}}else try{let e=EZ(ee,p);d.fields[l]={...oe,value:e,status:`completed`,reason:null,resolved_by:{ref:`input`,config_hash:null,input_hash:null,environment:null},widgets:re?.widgets||{}}}catch{let t=i.queue?.enabled?`queued`:`failed`;t===`queued`&&o.push(d.id),d.fields[l]={...oe,value:ee,status:t,reason:{code:`InvalidFormat`,message:`Field is of invalid format. Expected: ${a.format}`,summary:`Invalid Format`},resolved_by:{ref:`system`,environment:e.environment,config_hash:ie,input_hash:ae},widgets:{}}}}}return{queuedRecordIds:o,adoptedRecordIds:s}}function LZ(e,t){Object.values(t.records).forEach(n=>{Object.entries(n.fields).forEach(([n,r])=>{let i=e.resolvedFieldNames[n]||n;if(r.status===`completed`){let e=_K(i,r.value,r);r.widgets=qt(Yt(r.widgets),e)}t.errors.length>0&&(r.status===`pending`||r.status===`queued`)&&(r.status=`failed`)})})}function RZ(e,t){let{expandAllStatuses:n=!1,expandStatuses:r=[]}=t||{},i={};for(let[t,a]of Object.entries(e))(r.includes(a.status)||n)&&t!==`id`?i[t]={...a,widgets:Yt(a.widgets)}:i[t]=a.value;return i}function zZ(e,t={}){return Object.values(e).map(e=>RZ(e.fields,t))}function BZ(e,t={}){return e.map(e=>RZ(e.fields,t))}function VZ(e,t={}){return RZ(e.fields,t)}function HZ(e,t){return e.map(e=>{let n={};return Object.entries(e).forEach(([e,r])=>{let{isExpanded:i,expandedValue:a,resolvedInputValue:o}=hK(r);i===!0&&a.status!=null&&t.unexpandStatuses.includes(a.status)?n[e]=o:n[e]=r}),n})}const UZ={"routing:leads:roundrobin@1":{playbookId:`routing:leads:roundrobin@1`,label:`Round-robin lead routing`,examplePrompt:`Route every new lead in this sheet round-robin to our sellers at the account level — leads from the same company should land with the same seller. Our seller roster is name + email; set it up so I can paste the roster in.`,shortDescription:`Rotate new leads across your sellers at the account level — same company, same seller.`,description:`Assign each new lead to the next seller in rotation — at the ACCOUNT level: resolve a company domain from the intake email (work email → domain directly; personal email → reverse lookup), rotate on that domain, and every lead from the same company lands with the same seller (the counter is stable per value). A roster sheet holds the assignees; the round-robin pipe picks the next roster row and copies the seller's columns onto the lead.`,keywords:[`round robin`,`assignment`,`leads routing`,`distribute`,`rotation`,`sellers`,`sales`,`owner`,`reps`,`territory`,`accounts`,`domain`],steps:[{kind:`pipe`,id:`email:iswork@1`,role:`classify the intake email`,note:`FREE, deterministic: outputs the boolean is_work_email that gates the two domain-resolution branches via run_if.`},{kind:`pipe`,id:`field:domainify@1`,role:`work branch — domain from the email`,note:'Gate with run_if on is_work_email eq true. Map the email column into the pipe\'s input: config.input_fields.url_input.alias = "email" (it tolerates emails — jane@acme.io → acme.io). FREE; outputs `domain`.'},{kind:`pipe`,id:`person:identity:email:waterfall@2`,role:`personal branch — reverse lookup`,note:`Gate with run_if on is_work_email eq false. Resolves the person's standardized profile (person_profile_match) from the email. Billed on success — the work-email branch avoids this spend entirely.`},{kind:`pipe`,id:`json:extract:multi@1`,role:`personal branch — flatten the employer domain`,note:`Extract primary_company_domain from person_profile_match into a flat company_domain column (path "primary_company_domain", output_field.type "string"). Skipped automatically on the work-email branch — its input was never produced there.`},{kind:`pipe`,id:`fields:merge@1`,role:`coalesce the routing key`,note:`merge_fields: [domain, company_domain] — order is precedence, first defined wins. Alias the merge_result output to a fresh column (e.g. routing_domain). Leads with NO resolvable domain are SKIPPED by the rotation (empty counter value) — decide a fallback for them (person-level counter or a manual queue).`},{kind:`search`,id:`users:attio@1`,role:`roster source`,note:`Lists the workspace members (sellers) of the connected CRM. Any roster source works — another CRM's user/owner search, an import, or hand-entered rows.`},{kind:`effect`,id:`search:run@1`,role:`materialize the roster`,note:`Run the roster search into its own sheet (e.g. "sellers"): one row per assignee, with a column that is unique per assignee such as the seller email. The roster is a REFERENCE sheet the routing pipe reads — leads/signups never land in it; they live in their own sheet.`},{kind:`pipe`,id:`row:roundrobin:sheet@1`,role:`assign each account`,note:"config.sheet = the roster sheet's slug, sheet_unique_field = the roster's unique column, sheet_copy_fields = the roster columns to copy onto each lead, counter_field = the coalesced domain column — NOT the person's email (account-level: same company → same seller; person-level is the variant below, for when account grouping is explicitly unwanted). Set an `alias` on every copy field whose roster name already exists on the leads sheet (roster email → seller_email) — without one the copy writes into the existing column. The counter bucket is created automatically; re-runs are stable."}],variants:[{name:`weighted`,note:`Set config.sheet_weight_field to a numeric roster column: a seller with weight w takes w of every W slots, spread across the cycle; 0 pauses a seller; edits reshape future picks only.`},{name:`per-segment pools`,note:`Set config.sheet_where with a templated condition (e.g. segment eq {{ segment }}): each lead rotates over its own pool of roster rows, and each pool cycles on its own counter.`},{name:`separate destination sheet`,note:`When assignments land in their own sheet (not the signups sheet): create the destination, then commit ONE chain — fields:add@1 with config.name for each lead column (including the counter_field column) followed by pipe:add@1 of this pipe — the declared columns are visible to the rest of the chain, so it validates before any rows exist. Fill the destination from the signups sheet with a row:append:sheet@1 pipe, and list ONLY the destination's contract in write_fields (e.g. routing_domain, email, name) — empty write_fields mirrors every source column.`},{name:`person-level rotation`,note:`When account grouping isn't wanted (e.g. consumer signups): skip the domain branches and set counter_field to the lead email — each person rotates independently.`},{name:`ownership continuity`,note:`Production routing assigns the EXISTING owner before rotating: check the CRM first — company:match:attio@1 with the workspace's owner attribute listed in config.custom_properties (Attio companies have no standard owner attribute), json:extract:multi@1 the owner scalar out of the match, then run_if this pipe only when that owner is empty. HubSpot and Salesforce matches carry owners first-class (hubspot_owner_match / the account's owner_id).`},{name:`validated intake`,note:`Drop undeliverable signups before spending enrichment credits: person:email:validate:millionverifier@1 first, then gate the branches with run_if on email_validation_status eq valid.`}],example:{config:{environment:`production`},pipes:[{pipe_id:`email:iswork@1`},{pipe_id:`field:domainify@1`,run_if:{when:{logic:`and`,conditions:[{property:`value`,field_name:`is_work_email`,operator:`eq`,value:!0}]}},config:{input_fields:{url_input:{alias:`email`}}}},{pipe_id:`person:identity:email:waterfall@2`,run_if:{when:{logic:`and`,conditions:[{property:`value`,field_name:`is_work_email`,operator:`eq`,value:!1}]}}},{pipe_id:`json:extract:multi@1`,config:{json_extraction:{field_name:`person_profile_match`,extractions:[{path:`primary_company_domain`,output_field:{format:null,name:`company_domain`,label:`Company domain`,type:`string`}}]}}},{pipe_id:`fields:merge@1`,config:{merge_fields:[{field_name:`domain`},{field_name:`company_domain`}],output_fields:{merge_result:{alias:`routing_domain`,enabled:!0}}}},{pipe_id:`row:roundrobin:sheet@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},config:{sheet:`sellers`,sheet_where:null,sheet_unique_field:{field_name:`email`},sheet_copy_fields:[{field_name:`email`,alias:`seller_email`,type:`string`,format:`email`},{field_name:`first_name`,alias:`seller_first_name`,type:`string`}],sheet_weight_field:{field_name:``},counter_field:{field_name:`routing_domain`}}}],input:[{id:`1`,email:`lead@acme.com`}]}},"enrichment:users:signup@1":{playbookId:`enrichment:users:signup@1`,label:`PLG user enrichment`,examplePrompt:`We push every new product signup into a sheet with user_id, name, and email. Set up user enrichment that keeps itself fresh: LinkedIn profile from the email, one row per work experience in its own sheet, and an enriched_user_profiles sheet of current roles — flagging each profile with the primary employer and whether the signup email belongs to it. Each refresh should also detect sales signals (job changes, promotions) over the row's re-enrichment window and stream them into an append-only signals sheet in the same project.`,shortDescription:`Turn every product signup into a self-refreshing profile system with sales signals; CRM matching is an opt-in variant.`,description:`Enrich every product signup into a living profile system: reverse email lookup → full LinkedIn profile with flat primary title/seniority/domain → explode work experiences into their own sheet → distill an enriched_user_profiles sheet of one row per (person × current employer) — CRM-matching each employer is an opt-in variant, not the default — each flagged with is_primary_employer, profile_matches_signup_email, and signup_email_type and carrying the raw signup_email plus a contact_email column (today a single-source merge of signup_email; the seam where per-employer work-email lookups slot in later without consumers changing) — self-refreshing via scheduled cohorts (managers every 3 months, ICs every 9, failed retries capped by a bucket error counter). Every refresh also scans the profile for sales signals (job changes, promotions, role changes, milestones) over a cadence-derived per-row window and streams them into an append-only signals sheet — in the same project by default, or a dedicated org-wide signals project on request — claim-gated for exactly-once CRM activity sync.`,keywords:[`user enrichment`,`signup enrichment`,`application users`,`plg`,`product led`,`reverse email lookup`,`keep fresh`,`re-enrich`,`refresh`,`experiences`,`work history`,`signups`,`signals`,`job change`,`promotion`,`triggers`],steps:[{kind:`pipe`,id:`person:identity:email:waterfall@2`,role:`full profile from email`,note:`Signups arrive via POST /sheets/{id}/effects/run with rows:add@1 (idempotencyKey per signup) carrying user_id/name/email input columns — user_id is YOUR application's id and is the join key across all three sheets. NAME THE SHEETS AS ONE FAMILY: driver enriched-users, explode destination enriched-user-experiences, distilled sheet enriched-user-profiles — and when org-unique slugs force a suffix, share ONE random suffix across all three (enriched-users-x7k2 / enriched-user-experiences-x7k2 / enriched-user-profiles-x7k2, exactly like the buckets share theirs) so the family reads as a unit in the sheet list; never improvise unrelated names per sheet. This one pipe resolves the email to the full standardized person_profile_match profile plus the profile_url (which the identity-dedupe claim keys on) — no separate URL lookup or profile pipe needed.`},{kind:`pipe`,id:`json:extract:multi@1`,role:`flatten the freshness signals`,note:`Extract the flat columns the freshness conditions read out of person_profile_match — conditions can reference a json field's STATUS but never its value: path "primary_job_title" → primary_job_title, "highest_current_seniority_level" → primary_seniority, "primary_company_domain" → primary_company_domain, and "employment_history[[0..9]][]" → the experiences array for the explode, CAPPED to the 10 most recent entries (providers list newest first; the trailing [] keeps a single entry an array) so a pathological 80-position profile can't fan out into 80 rows.`},{kind:`pipe`,id:`email:iswork@1`,role:`classify the signup email`,note:`email → is_work_email (boolean). Free/deterministic — this and the next two steps derive per-signup facts that ride along into every downstream profile row.`},{kind:`pipe`,id:`field:domainify@1`,role:`signup email domain`,note:`Alias url_input to email and the domain output to signup_email_domain — the domain the person registered with, later compared per profile row against each employer's domain.`},{kind:`pipe`,id:`template:fill@1`,role:`derive signup_email_type`,note:'Template `{% if is_work_email == true %}work_email{% else %}personal_email{% endif %}`, output aliased signup_email_type. Use the == comparison (not a bare `{% if is_work_email %}`) — a bare identifier is a presence GUARD that makes the input optional, and a missing classification must skip this cell, not emit "personal_email".'},{kind:`pipe`,id:`field:timestamp@1`,role:`attempt stamp`,note:`Alias the output last_attempted_at. run_if on person_profile_match status listing ALL statuses (completed, failed, no_result, skipped) — the reference orders it after the waterfall and an attempt stamps regardless of outcome. The cohort where-conditions key on this column with older_than_days.`},{kind:`pipe`,id:`bucket:countif@1`,role:`error counter + success tracker`,note:`Two instances, both keyed user_id with the same broad run_if. #1: where status(person_profile_match) eq failed → alias error_count (the retry cap reads error_count lte 3). #2: where status eq completed → enable the last-at output aliased last_successfully_enriched_at (wipe-proof: on failed re-runs the read branch re-emits the last success time from the bucket) and alias the count times_enriched.`},{kind:`pipe`,id:`bucket:claim@1`,role:`identity dedupe`,note:`Claim profile_url with on_own_entry: proceed — the original row keeps re-claiming its own entry across refreshes, while a duplicate signup that resolves to an already-claimed identity gets no_result. That no_result only skips pipes that DEPEND on this output: the downstream write pipes (both deletes and both explodes) must reference is_claim_successful in their run_if (value eq true), or the dedupe is decorative and duplicates fan out anyway.`},{kind:`pipe`,id:`rows:delete:sheet@1`,role:`replace-on-success deletes`,note:`Two instances: delete from the experiences sheet and from enriched_user_profiles where user_id eq "{{ user_id }}". Output names are sheet-global, so ALIAS each instance's sheet_deleted_count (experiences_deleted_count / profiles_deleted_count) — two instances with the default name collide and the pipeline won't validate. GATE both with run_if is_claim_successful eq true — this is what enforces replace-on-SUCCESS: user_id is an input column, so NOTHING skips these deletes automatically (typed-input skip-propagation only applies when the templated key is an enrichment output), and the claim flag transitively requires a completed profile AND identity ownership, so failed/no_result refreshes and duplicate signups never touch previously written rows. Note that position in the pipes array is NOT execution order (pipes run in dependency waves, independent pipes concurrently) — delete-before-append is guaranteed by the EXPLODE's run_if referencing these count outputs, never by list ordering.`},{kind:`pipe`,id:`row:expandappend:sheet@1`,role:`explode into experiences sheet`,note:"One row per employment entry on enriched_user_experiences, with write_fields: [user_id, name, email (alias signup_email), signup_email_domain, signup_email_type] so every exploded row carries the join key AND the signup-email facts — the alias renames the raw `email` column to the unambiguous `signup_email` at the destination, so no rename pipe is needed on the driver; run_added_rows: true enriches the new rows immediately. GATE with run_if status(experiences_deleted_count) eq completed AND status(profiles_deleted_count) eq completed — those two references are the dependency EDGES that make both deletes finish before this append runs (array position guarantees nothing; unrelated pipes run concurrently), and since skipped deletes never reach completed, a failed refresh or duplicate signup skips the append too. THE EXPERIENCES SHEET'S OWN PROGRAM (a separate sheet, so not in this example chain): json:extract:multi@1 flattens expanded_value (company_domain, job_title, seniority_level, tenure, is_current_employer, and is_primary_current_employer → alias is_primary_employer) → formula:run@1 with code `return inputs.company_domain === inputs.signup_email_domain;`, formula_inputs [company_domain, signup_email_domain], result_type boolean → alias profile_matches_signup_email (a REAL boolean column, not a \"true\"/\"false\" string — never derive it with template:fill, which can only emit strings; typed inputs mean a row with no employer domain skips: no domain, no match claim) → row:append:sheet@1 into enriched_user_profiles with run_if is_current_employer eq true, write_fields user_id/name/signup_email/job_title/tenure/seniority/is_primary_employer/profile_matches_signup_email/signup_email_type, and run_added_rows: true so each new profile row immediately runs enriched_user_profiles' own program (the contact_email merge) instead of waiting for a manual run. CRM matching of employers is deliberately NOT in this default program — every current employer becomes a profile row, matched or not; when the user asks to check employers against their CRM, build the 'CRM matching' variant. Attach that program DECLARE-FIRST: fields:add@1 the input columns the explode will write (user_id, name, signup_email, signup_email_domain, signup_email_type, expanded_value as json), then pipe:add@1 the whole chain in the same build — it validates before a single row exists, and the first explode's rows enrich immediately; never wait for exploded data to appear before attaching the program. A person with N current positions appears N times in enriched_user_profiles — by design: each row is one (person × employer) lead, and the flags tell the consumer how to read it (route/score the is_primary_employer row; a row where profile_matches_signup_email is true is the employer the person signed up AS — the highest-intent lead). THE ENRICHED_USER_PROFILES SHEET'S OWN PROGRAM: a single fields:merge@1 — merge_fields [signup_email] → alias contact_email. contact_email is the outreach seam: consumers ALWAYS read contact_email, never signup_email directly, so the mechanism behind it can change without anyone's parsing changing. Today it is just the signup address; when a row needs a different mechanism — the person signed up as tom@google.com but this row is their Microsoft board seat, or they signed up with a personal address — add a work-email discovery pipe on enriched_user_profiles keyed on the row's company_domain and prepend its output to merge_fields (first defined wins). Deliberately NOT default: per-row email discovery is billable."},{kind:`pipe`,id:`formula:run@1`,role:`derive the per-row signal window`,note:`Compute the scan-window start from the cadence the freshness cohorts give the row: inputs.primary_seniority → cohort days + slack (98 for the managers+ 90-day cohort, 284 for the ICs 270-day cohort) → Date.now() − days as a YYYY-MM-DD date, output aliased signal_window_start (result_type date). Derive the window from CADENCE, never from last_successfully_enriched_at — that countif output is restamped to now within the same cohort run before downstream pipes read it, which would collapse the window to zero. The slack days absorb backlog delay from the daily window cap; thresholds are plain data in the code.`},{kind:`pipe`,id:`signals:personprofilematch@1`,role:`detect sales signals`,note:`The typed person_profile_match input orders it after the waterfall, no run_if needed — a failed profile skips it. The optional signal_window_start input overrides config.default_window (l90d) per row, so a manager refreshed every ~90 days looks back 98 and an IC refreshed every ~270 looks back 284. Emits signal_list plus the flat mirror signal_count (always populated — conditions stay evaluable). Every signal carries a stable sig_ id: the same real-world event hashes identically across providers and overlapping scans, which is what makes the downstream claim gate exactly-once.`},{kind:`pipe`,id:`row:expandappend:sheet@1`,role:`explode signals into the signals sheet`,note:`One row per signal on the signals sheet — SAME project as the enrichment sheets by default (a user who wants an org-wide stream fed by several systems says so and points this at a dedicated signals project; allow_entity_creation creates the sheet on first run). GATE with run_if is_claim_successful eq true — a duplicate signup resolving to an already-claimed identity must not emit a second copy of every signal. The signals table is STANDARDIZED to a single input column: destination_field_name 'signal_match' holds the whole payload, and NO write_fields — the signal is self-contained (person_name, profile_url, company_domain, metadata all inside), so joins go through extracted columns, never carried ones. Every signals:* producer, person- or company-scoped, appends this same shape into the same table. run_added_rows: true. THE SIGNALS SHEET'S OWN PROGRAM (attach DECLARE-FIRST in the same build — fields:add@1 signal_match as json, then pipe:add@1 the chain; a separate sheet, so not in this example chain): json:extract:multi@1 flattens signal_match → signal_id/signal/signal_category/signal_subcategory/signal_label/signal_occurred_at/signal_scope/company_domain/company_name/person_name/profile_url (plus any signal_metadata.* details the consumer needs) → bucket:claim@1 on signal_id (bucket crm-synced-signals, on_own_entry proceed) as the exactly-once gate → CRM activity sync (activity:log:hubspot@1 / activity:log:salesforce@1) gated by the claim flag, mapping signal_category (or signal_subcategory for finer books) to the CRM activity type. The signals sheet is APPEND-ONLY — do NOT point the replace-on-success deletes at it: overlapping windows re-emit the same signal_id and the claim gate turns duplicates into no_result instead of duplicate CRM activities.`},{kind:`effect`,id:`rows:enrich@1`,role:`freshness cohorts (scheduled)`,note:`ONE schedule (daily cron) carrying a chain of four rows:enrich@1 effects on enriched_users, each with config.pipes [] (all pipes — the email lookup IS the profile fetch, billed once per refresh), a window selection to cap per-day work/spend, and a config.where cohort: managers+ (primary_seniority matches "^(c_suite|leadership|manager)$" AND last_attempted_at older_than_days 90 AND status completed; run_statuses ["completed"]), ICs (complement, older_than_days 270), failed retry (status failed AND older_than_days 7 AND error_count lte 3; run_statuses ["failed","completed","skipped"]), no_result retry (status no_result AND older_than_days 90; run_statuses ["no_result","completed","skipped"]). The widened retry run_statuses are REQUIRED — they restamp the timestamp/counter cells and re-activate the skipped delete/explode chain on success.`}],variants:[{name:`CRM matching (opt-in)`,note:`NOT in the default flow — build only when the user asks to check employers against their CRM. Add a company match by domain on enriched_user_experiences (company:match:attio@1 / company:match:hubspot@1 / account:match:salesforce@1, keyed on company_domain) and carry the match outputs (found-flag, record id) into the enriched_user_profiles append's write_fields so consumers can route on CRM presence. Keep the append's run_if on is_current_employer alone unless the user explicitly wants CRM-only profiles — ANDing the found-flag in drops every non-CRM employer from the profiles sheet. Create-missing-accounts via record:assert:salesforce@1 (Salesforce only).`},{name:`Cadence tuning`,note:`The cohort where-conditions are plain data in the schedule payload — change older_than_days thresholds, the seniority regex, or the retry cap without touching the pipes.`},{name:`Contact-email mechanisms`,note:`contact_email on enriched_user_profiles is a fields:merge@1 seam, today just [signup_email]. To reach a person at an employer the signup email doesn't cover (personal-email signups, board/advisor rows at another company), add a work-email discovery pipe on enriched_user_profiles keyed on the row's company_domain and prepend its output to merge_fields — first defined wins, and consumers keep reading contact_email unchanged. Off by default: per-row email discovery is billable, and the signup address is already the right contact for the profile_matches_signup_email row.`},{name:`Rehearsal`,note:`Build the whole program in sandbox first (env:change@1): deterministic pipes (timestamp, json:extract, formula, signals) run for real; profile providers, bucket writes, and cross-sheet deletes/appends are mocked. Switch to production when shapes look right.`},{name:`Signal filtering`,note:`config.signals on signals:personprofilematch@1 is a multi-select over the signal types (empty = all) — narrow to promotions + job changes for a lean CRM feed, or keep milestones for nurture plays. default_window sizes the lookback when no window-start date is mapped.`}],example:{config:{environment:`production`},pipes:[{pipe_id:`person:identity:email:waterfall@2`},{pipe_id:`json:extract:multi@1`,config:{json_extraction:{field_name:`person_profile_match`,extractions:[{path:`primary_job_title`,output_field:{format:null,name:`primary_job_title`,label:`Primary job title`,type:`string`}},{path:`highest_current_seniority_level`,output_field:{format:null,name:`primary_seniority`,label:`Primary seniority`,type:`string`}},{path:`primary_company_domain`,output_field:{format:null,name:`primary_company_domain`,label:`Primary company domain`,type:`string`}},{path:`employment_history[[0..9]][]`,output_field:{format:null,name:`experiences`,label:`Experiences`,type:`json`}}]}}},{pipe_id:`email:iswork@1`},{pipe_id:`field:domainify@1`,config:{input_fields:{url_input:{alias:`email`}},output_fields:{domain:{alias:`signup_email_domain`,enabled:!0}}}},{pipe_id:`template:fill@1`,config:{template:`{% if is_work_email == true %}work_email{% else %}personal_email{% endif %}`,output_fields:{template_output:{alias:`signup_email_type`,enabled:!0}}}},{pipe_id:`field:timestamp@1`,run_if:{action:`run`,when:{logic:`or`,conditions:[{property:`status`,field_name:`person_profile_match`,operator:`eq`,value:`completed`},{property:`status`,field_name:`person_profile_match`,operator:`eq`,value:`failed`},{property:`status`,field_name:`person_profile_match`,operator:`eq`,value:`no_result`},{property:`status`,field_name:`person_profile_match`,operator:`eq`,value:`skipped`}]}},config:{output_fields:{timestamp:{alias:`last_attempted_at`,enabled:!0}}}},{pipe_id:`bucket:countif@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},run_if:{action:`run`,when:{logic:`or`,conditions:[{property:`status`,field_name:`person_profile_match`,operator:`eq`,value:`completed`},{property:`status`,field_name:`person_profile_match`,operator:`eq`,value:`failed`},{property:`status`,field_name:`person_profile_match`,operator:`eq`,value:`no_result`}]}},config:{bucket:`enrich-errors`,entry_fields:[{field_name:`user_id`}],contract:``,where:{logic:`and`,conditions:[{property:`status`,field_name:`person_profile_match`,operator:`eq`,value:`failed`}]},allow_bucket_creation:!0,output_fields:{bucket_event_count:{alias:`error_count`,enabled:!0},bucket_event_last_at:{alias:``,enabled:!1}}}},{pipe_id:`bucket:claim@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},config:{bucket:`enriched-identities`,entry_fields:[{field_name:`profile_url`}],contract:``,new_bucket_own_entry_behavior:`proceed`,allow_bucket_creation:!0}},{pipe_id:`rows:delete:sheet@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},run_if:{action:`run`,when:{logic:`and`,conditions:[{property:`value`,field_name:`is_claim_successful`,operator:`eq`,value:!0}]}},config:{sheet:`enriched-user-experiences`,where:{logic:`and`,conditions:[{property:`value`,field_name:`user_id`,operator:`eq`,value:`{{ user_id }}`}]},output_fields:{sheet_deleted_count:{alias:`experiences_deleted_count`,enabled:!0}}}},{pipe_id:`rows:delete:sheet@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},run_if:{action:`run`,when:{logic:`and`,conditions:[{property:`value`,field_name:`is_claim_successful`,operator:`eq`,value:!0}]}},config:{sheet:`enriched-user-profiles`,where:{logic:`and`,conditions:[{property:`value`,field_name:`user_id`,operator:`eq`,value:`{{ user_id }}`}]},output_fields:{sheet_deleted_count:{alias:`profiles_deleted_count`,enabled:!0}}}},{pipe_id:`row:expandappend:sheet@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},run_if:{action:`run`,when:{logic:`and`,conditions:[{property:`status`,field_name:`experiences_deleted_count`,operator:`eq`,value:`completed`},{property:`status`,field_name:`profiles_deleted_count`,operator:`eq`,value:`completed`}]}},config:{project:`user-enrichment`,sheet:`enriched-user-experiences`,write_fields:[{field_name:`user_id`},{field_name:`name`},{field_name:`email`,alias:`signup_email`},{field_name:`signup_email_domain`},{field_name:`signup_email_type`}],input_fields:{input_objects:{alias:`experiences`}},run_added_rows:!0}},{pipe_id:`formula:run@1`,config:{code:`const days = ["c_suite", "leadership", "manager"].includes(inputs.primary_seniority) ? 98 : 284;
|
|
142
|
+
return new Date(Date.now() - days * 86400000).toISOString().slice(0, 10);`,formula_inputs:[{field_name:`primary_seniority`}],result_type:`date`,output_fields:{formula_result:{alias:`signal_window_start`,enabled:!0}}}},{pipe_id:`signals:personprofilematch@1`,config:{signals:[],default_window:`l90d`,input_fields:{person_profile_match:{alias:``},signal_window_start:{alias:``}},output_fields:{signal_list:{alias:``,enabled:!0},signal_count:{alias:``,enabled:!0}}}},{pipe_id:`row:expandappend:sheet@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`pipe0_123`}]},run_if:{action:`run`,when:{logic:`and`,conditions:[{property:`value`,field_name:`is_claim_successful`,operator:`eq`,value:!0}]}},config:{project:`user-enrichment`,sheet:`signals`,write_fields:[],destination_field_name:`signal_match`,destination_field_type:`json`,destination_field_format:`json_object`,destination_field_label:`Signal`,input_fields:{input_objects:{alias:`signal_list`}},output_fields:{sheet_record_ids:{alias:`signal_record_ids`,enabled:!0}},run_added_rows:!0}}],input:[{id:`1`,user_id:`u_123`,name:`Jane Doe`,email:`jane@acme.com`}]}}},WZ=Object.keys(UZ);function GZ(e){return UZ[e]}const KZ=(()=>{let e=new Map;for(let t of Object.values(UZ))for(let n of t.steps){let r=e.get(n.id)??[];r.push(t.playbookId),e.set(n.id,r)}return e})();function qZ(e){return KZ.get(e)??[]}function JZ(e,t){let n=e.trim(),r=(e,n)=>{if(t(e))return{scope:n,slug:e};let r=e.indexOf(`.`);return r===-1?{scope:n,slug:e}:{scope:n,slug:e.slice(0,r),subProperty:e.slice(r+1)}};return t(n)?{scope:`self`,slug:n}:n.startsWith(`parent.`)?r(n.slice(7),`parent`):r(n,`self`)}const YZ=[`record_permission:read`,`object_configuration:read`],XZ=[`list_entry:read`,`list_configuration:read`],ZZ=[`user_management:read`],QZ=[`note:read`,`meeting:read`,`task:read`],$Z=[`record_permission:read-write`,`object_configuration:read`],eQ=YZ,tQ=[...new Set([...YZ,...XZ,...ZZ,...$Z,...QZ])];function nQ(e,t){let n=t instanceof Set?t:new Set(t);return e.filter(e=>n.has(e)?!1:e.endsWith(`:read`)?!n.has(`${e.slice(0,-5)}:read-write`):!0)}function rQ(e){let t=e.trim().toLowerCase();if(!t)return null;if(t.includes(`://`))try{t=new URL(t).host}catch{return null}return t=t.replace(/\/.*$/,``).replace(/^www\./,``),/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/.test(t)?t:null}function iQ(e){let t=rQ(e);if(!t)return[];let n=[t,`www.${t}`],r=[...n];for(let e of n)for(let t of[`http://`,`https://`])r.push(`${t}${e}`),r.push(`${t}${e}/`);return r}function aQ(e){return e?rQ(e):null}const oQ={REQUIRED_FIELD_MISSING:`caller_data`,INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST:`caller_data`,STRING_TOO_LONG:`caller_data`,MALFORMED_ID:`caller_data`,MALFORMED_QUERY:`caller_data`,INVALID_FIELD:`caller_data`,INVALID_TYPE:`caller_data`,INVALID_QUERY_FILTER_OPERATOR:`caller_data`,INVALID_EMAIL_ADDRESS:`caller_data`,FIELD_INTEGRITY_EXCEPTION:`caller_data`,DUPLICATE_VALUE:`caller_data`,JSON_PARSER_ERROR:`caller_data`,NOT_FOUND:`caller_data`,ENTITY_IS_DELETED:`caller_data`,INVALID_QUERY_LOCATOR:`caller_data`,FIELD_CUSTOM_VALIDATION_EXCEPTION:`org_policy`,DUPLICATES_DETECTED:`org_policy`,CANNOT_UPDATE_CONVERTED_LEAD:`org_policy`,INSUFFICIENT_ACCESS_OR_READONLY:`org_policy`,INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY:`org_policy`,CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY:`org_defect`,CANNOT_EXECUTE_FLOW_TRIGGER:`org_defect`,APEX_ERROR:`org_defect`,UNABLE_TO_LOCK_ROW:`transient`,QUERY_TIMEOUT:`transient`,SERVER_UNAVAILABLE:`transient`,REQUEST_RUNNING_TOO_LONG:`transient`,REQUEST_LIMIT_EXCEEDED:`quota`,INVALID_SESSION_ID:`auth`,INVALID_AUTH_HEADER:`auth`,OAUTH_APP_BLOCKED:`auth`,API_DISABLED_FOR_ORG:`auth`,INSUFFICIENT_SCOPE:`auth`};function sQ(e){return oQ[e]??`org_policy`}function cQ(e){return Array.isArray(e)?e.filter(e=>typeof e==`object`&&!!e&&typeof e.errorCode==`string`):[]}function lQ(e){let t=e.find(e=>e.errorCode===`DUPLICATES_DETECTED`);if(!t)return null;let n=new Set,r=e=>{if(Array.isArray(e)){for(let t of e)r(t);return}if(typeof e!=`object`||!e)return;let t=e,i=t.record;i&&typeof i.Id==`string`&&n.add(i.Id);for(let e of[`duplicateResult`,`duplicateResults`,`matchResults`,`matchRecords`])e in t&&r(t[e])};return r(t),{message:t.message,matchedRecordIds:[...n]}}const uQ={operators:[`eq`,`neq`,`contains`],encoding:`quoted`,columnType:`string`},dQ={operators:[`eq`,`neq`,`gt`,`gte`,`lt`,`lte`],encoding:`bare`,columnType:`number`},fQ={operators:[`eq`,`neq`,`gt`,`gte`,`lt`,`lte`],encoding:`date`,columnType:`string`},pQ={string:uQ,email:uQ,phone:uQ,url:uQ,picklist:{...uQ},combobox:{...uQ},id:{operators:[`eq`,`neq`],encoding:`quoted`,columnType:`string`},reference:{operators:[`eq`,`neq`],encoding:`quoted`,columnType:`string`},int:dQ,double:dQ,currency:dQ,percent:dQ,date:fQ,datetime:fQ,time:fQ,boolean:{operators:[`eq`],encoding:`boolean`,columnType:`boolean`},multipicklist:{operators:[`eq`,`contains`],encoding:`multipicklist`,columnType:`string`},textarea:{operators:[],encoding:`quoted`,columnType:`string`,filterRejection:`long text fields are not filterable in Salesforce — filter on a different field`},address:{operators:[],encoding:`quoted`,columnType:`string`,filterRejection:`address compound fields are not filterable — filter the component fields instead (e.g. BillingCity)`},location:{operators:[],encoding:`quoted`,columnType:`string`,filterRejection:`geolocation compound fields are not filterable — filter the component fields instead`},encryptedstring:{operators:[],encoding:`quoted`,columnType:`string`,filterRejection:`Shield-encrypted fields cannot be filtered or sorted in Salesforce`},base64:{operators:[],encoding:`quoted`,columnType:`string`,filterRejection:`binary fields cannot be filtered`}};function mQ(e){return pQ[e]??uQ}function hQ(){let e=[];for(let[t,n]of Object.entries(pQ))e.push(n.filterRejection?`- ${t}: not filterable (${n.filterRejection})`:`- ${t}: ${n.operators.join(`, `)}`);return e.join(`
|
|
143
|
+
`)}function gQ({instanceUrl:e,objectApiName:t,recordId:n}){let r;try{r=new URL(e).host}catch{r=e.replace(/^https?:\/\//,``).replace(/\/.*$/,``)}return`https://${r.endsWith(`.my.salesforce.com`)?r.replace(/\.my\.salesforce\.com$/,`.lightning.force.com`):r}/lightning/r/${t}/${n}/view`}const _Q=/^[a-zA-Z][a-zA-Z0-9_]*(\.[a-zA-Z][a-zA-Z0-9_]*)*$/,vQ=/^[a-zA-Z0-9]{15}([a-zA-Z0-9]{3})?$/;function yQ(e){return _Q.test(e)}function bQ(e){return vQ.test(e)}function xQ(e){if(!yQ(e))throw Error(`'${e}' is not a valid Salesforce field reference. Use the field's API name (letters, digits, underscores; dots only for parent traversal like Account.Name).`);return e}function SQ(e){return e.replace(/\\/g,`\\\\`).replace(/'/g,`\\'`)}function CQ(e){return`'${SQ(e)}'`}function wQ(e){return SQ(e).replace(/([%_])/g,`\\$1`)}function TQ(e){if(e.length===0)throw Error(`IN () with an empty list is invalid SOQL`);return`(${e.map(CQ).join(`, `)})`}const EQ=new Set([`YESTERDAY`,`TODAY`,`TOMORROW`,`THIS_WEEK`,`LAST_WEEK`,`NEXT_WEEK`,`THIS_MONTH`,`LAST_MONTH`,`NEXT_MONTH`,`THIS_QUARTER`,`LAST_QUARTER`,`NEXT_QUARTER`,`THIS_YEAR`,`LAST_YEAR`,`NEXT_YEAR`,`THIS_FISCAL_QUARTER`,`LAST_FISCAL_QUARTER`,`NEXT_FISCAL_QUARTER`,`THIS_FISCAL_YEAR`,`LAST_FISCAL_YEAR`,`NEXT_FISCAL_YEAR`]),DQ=/^(LAST|NEXT)_N_(DAYS|WEEKS|MONTHS|QUARTERS|YEARS|FISCAL_QUARTERS|FISCAL_YEARS):\d{1,4}$/;function OQ(e){let t=e.trim().toUpperCase();return EQ.has(t)||DQ.test(t)}const kQ=/^\d{4}-\d{2}-\d{2}$/,AQ=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,3})?(Z|[+-]\d{2}:\d{2})$/;function jQ(e){let t=e.trim();if(OQ(t))return t.toUpperCase();if(kQ.test(t)||AQ.test(t))return t;throw Error(`'${e}' is not a valid Salesforce date value. Use ISO format (2026-01-31 or 2026-01-31T00:00:00Z) or a SOQL date literal like LAST_N_DAYS:30.`)}function MQ(e,t){let n=Number(e);if(!Number.isFinite(n))throw Error(`'${e}' is not a valid number`);if(t){if(!/^[A-Z]{3}$/.test(t))throw Error(`'${t}' is not a valid ISO currency code`);return`${t}${n}`}return String(n)}function NQ(e){if(typeof e==`boolean`)return String(e);let t=e.trim().toLowerCase();if(t===`true`||t===`false`)return t;throw Error(`'${e}' is not a valid boolean (use true or false)`)}function PQ(e){if(!bQ(e))throw Error(`'${e}' is not a valid Salesforce record id cursor`);return`Id > ${CQ(e)}`}var FQ=class extends zt{getConnectionsRequirements(){return[]}getProviderNames(){return[]}estimateBillableOperations(e){return[]}};const IQ=`report:deliver:email@1`,LQ=r.object({effect_id:r.literal(IQ),config:r.object({recipients:r.array(r.email()).min(1).max(20).describe(`Email addresses to send the report's current version to.`),subject:r.string().max(200).optional().describe(`Email subject. Defaults to the report name.`)})}),RQ=class extends FQ{effectId=IQ;schema=LQ;payload;billableOperations={};constructor(e){super(),this.payload=this.validatePayload(e)}},zQ=LQ,BQ={effectId:IQ,baseEffect:Lt(IQ),label:`Email report`,description:`Send the report's CURRENT version to a list of email addresses via the platform sender. Chain it after report:generate@1 for 'refresh, then send' schedules.`,keywords:[`send`,`email`,`deliver`,`share`],lifecycle:null,billableOperations:{},allowedUserConnectionProviders:[],managedProviders:[`resend`],defaultPayload:{effect_id:IQ,config:{recipients:[]}}},VQ=`report:generate@1`,HQ=`report-generate-v1`,UQ=Xc(HQ),WQ=r.looseObject({effect_id:r.string().describe(`A data effect id. Allowed: search:run@1, rows:enrich@1, rows:remove@1, rows:removeempty@1, rows:dedupe@1.`),config:r.record(r.string(),r.unknown()).optional().describe(`The effect's full config — exact shape from get_effect_schema(effect_id), e.g. the complete search:run@1 payload including its connector and date window (created_within etc.).`)}),GQ=r.object({sheet:r.string().min(1).describe(`Org-unique SLUG of the report-input sheet to regenerate. Must be in the report's project (mutations never cross the project boundary).`),mode:r.enum([`replace`,`append`]).default(`replace`).describe(`replace (default): every existing row is removed first, so the sheet is fully regenerated as the current time slice — report-input sheets are recomputed, not ever-growing. append: keep existing rows (rare; only when accumulation is explicitly wanted).`),effects:r.array(WQ).min(1).describe(`The refresh chain, run in order — typically ONE search:run@1 fetching the report's time slice. Validated against the sheet's schema when the schedule/run is created and again at fire time.`),run_added_rows:r.boolean().default(!0).describe(`After the chain, run the sheet's pipes over exactly the rows it added, so fresh rows are enriched before the report reads them. Default true.`)}),KQ=r.object({effect_id:r.literal(VQ),config:r.object({prompt:r.string().min(1).describe("What the generated version should contain, self-contained: the run executes headlessly (e.g. on a schedule) with no conversation context, so include everything needed — which sheets/data to read, structure, tone. CONTENT ONLY: data refreshing belongs in `refresh`, never described in prose here."),model:r.enum(Nc).default(Bc),prompt_label:r.string().max(200).optional().describe(`Short label for the version switcher. Defaults to a generated one.`),refresh:GQ.optional().describe("Deterministic data refresh the runner executes BEFORE the AI generates — the reliable way to recompute report data each run (a prose description in `prompt` is interpreted by a model and can silently skip the reset). If the refresh fails, the run fails: a version is never generated from stale data.")})}),qQ=class extends FQ{effectId=VQ;schema=KQ;payload;billableOperations=UQ;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return Wc(this.payload.config.model)}getProviderNames(){return Uc(this.payload.config.model)}estimateBillableOperations(e){return Qc(e,{model:this.payload.config.model,prefix:HQ,inputTokens:3e4,outputTokens:8e3})}},JQ=KQ,YQ={effectId:VQ,baseEffect:Lt(VQ),label:`Generate report version`,description:`Generate a new report version from a stored prompt with a headless AI run. The path for scheduled refreshes and delegated creation — set config.refresh and the run first fully regenerates the report's in-project input sheet (remove all rows, re-run the declared search, enrich) before generating, so the version reflects fresh data, not the rows left over from last time. For content you already computed, use report:update@1 instead.`,keywords:[`refresh`,`regenerate`,`ai`,`schedule`],lifecycle:null,billableOperations:UQ,allowedUserConnectionProviders:[],managedProviders:Gc(),defaultPayload:{effect_id:VQ,config:{prompt:``,model:Bc}}},XQ=`report:update@1`,ZQ=r.record(r.string(),r.unknown()),QQ=r.object({mode:r.enum([`edit`,`full_rewrite`]).describe(`"edit" applies exact unique-substring replacements to the current markdown (preferred for targeted changes); "full_rewrite" replaces the whole body. An EMPTY report (no versions) gets its first version via "full_rewrite".`),edits:r.array(r.object({old_str:r.string().min(1),new_str:r.string()})).optional().describe(`Required for mode "edit": exact-match replacements. Each old_str must occur exactly once — include surrounding context to disambiguate.`),markdown:r.string().optional().describe(`Required for mode "full_rewrite": the complete new body in the report dialect.`),data:ZQ.optional().describe(`Full replacement for the frozen data snapshot.`),data_patch:ZQ.optional().describe(`Shallow merge into the current snapshot; a key set to null is removed.`),prompt_label:r.string().max(200).optional().describe(`Short label for the version switcher describing this change from the user's point of view (e.g. "Add churn-risk callout").`)}).superRefine((e,t)=>{e.mode===`full_rewrite`&&!e.markdown&&t.addIssue({code:`custom`,path:[`markdown`],message:`mode "full_rewrite" requires the complete new markdown.`}),e.mode===`edit`&&!e.edits?.length&&t.addIssue({code:`custom`,path:[`edits`],message:`mode "edit" requires at least one entry in edits.`}),e.data!==void 0&&e.data_patch!==void 0&&t.addIssue({code:`custom`,path:[`data_patch`],message:`Pass either data (full replacement) or data_patch (merge), not both.`})}),$Q=r.object({effect_id:r.literal(XQ),config:QQ}),e$=class extends FQ{effectId=XQ;schema=$Q;payload;billableOperations={};constructor(e){super(),this.payload=this.validatePayload(e)}},t$=$Q,n$={effectId:XQ,baseEffect:Lt(XQ),label:`Update report`,description:`Append an immutable new version with content the caller already computed — substring edits or a full rewrite, plus an optional data-snapshot change. Deterministic: no model call.`,keywords:[`edit`,`rewrite`,`version`,`append`],lifecycle:null,billableOperations:{},allowedUserConnectionProviders:[],managedProviders:[],defaultPayload:{effect_id:XQ,config:{mode:`full_rewrite`,markdown:`## Overview`}}},r$=r.object({effect_id:Ct,config_hash:r.string(),status:r.enum([`completed`,`failed`,`skipped`]),error:r.string().optional()}),i$={"report:update@1":e$,"report:generate@1":qQ,"report:deliver:email@1":RQ},a$={"report:update@1":t$,"report:generate@1":JQ,"report:deliver:email@1":zQ},o$={"report:update@1":n$,"report:generate@1":YQ,"report:deliver:email@1":BQ};function s$(e){return i$[e]}function c$(e){return o$[e]}function l$(e){return a$[e]}function u$(e){let t=i$[e.effect_id];if(!t)throw Error(`Unknown report effect '${e.effect_id}'`);return new t(e)}function d$(){return Object.keys(o$).filter(e=>o$[e].agentExposure!==`excluded`)}function f$(e){return o$[e]?.agentExposure!==`excluded`}const p$=t.discriminatedUnion(`effect_id`,Object.values(a$).map(e=>e)).openapi(`ReportEffectPayload`),m$=t.object({effects:t.array(p$).min(1)}).openapi(`ReportEffectsRequest`),h$=t.object({id:t.string(),status:Bt,effects:t.array(r$),before_version:t.number().int().nullable(),after_version:t.number().int().nullable(),version_id:t.string().nullable(),delivered_to:t.array(t.string()).nullable()}).openapi(`ReportEffectsResponse`);function g$(e){let t=(e??[]).map(e=>_$(e));if(t.length===0)return{title:`Report effect run`,description:`A report effect run with no steps.`};let[n]=t;return t.length===1&&n?{title:n.title,description:n.description}:{title:`${t.length} steps: ${t.map(e=>e.title).join(` · `)}`,description:t.map(e=>e.description).join(` · `)}}function _$(e){let t=e.effect_id,n=Lt(t),r=e.config??{};switch(n){case`report:update`:return(r.mode===`edit`?`edit`:`rewrite`)==`edit`?{title:`Edited report`,description:`Applied targeted edits as a new version.`}:{title:`Rewrote report`,description:`Replaced the report body as a new version.`};case`report:generate`:{let e=typeof r.prompt==`string`?r.prompt.trim():``,t=e.length>80?`${e.slice(0,80)}…`:e;return{title:`Generated report version`,description:t?`Generated a new version from the prompt: ${t}`:`Generated a new version from a stored prompt.`}}case`report:deliver:email`:{let e=Array.isArray(r.recipients)?r.recipients.length:void 0;return{title:`Emailed report`,description:e==null?`Sent the report by email.`:`Sent the report to ${e} ${e===1?`recipient`:`recipients`}.`}}default:{let e=v$(t);return{title:e??t,description:e??t}}}}function v$(e){try{return c$(e)?.label}catch{return}}function y$(e,t){let n=e;for(let[e,r]of t.entries()){let t=n.indexOf(r.old_str);if(t===-1)return{ok:!1,errors:[{message:`edits[${e}].old_str not found in the current markdown. Read the report (read_report) and copy the target text exactly, or use mode "full_rewrite".`}]};if(n.indexOf(r.old_str,t+1)!==-1)return{ok:!1,errors:[{message:`edits[${e}].old_str matches more than once — extend it with surrounding context until it is unique.`}]};n=n.slice(0,t)+r.new_str+n.slice(t+r.old_str.length)}return{ok:!0,markdown:n}}function b$(e,t){let n={...e};for(let[e,r]of Object.entries(t))r===null?delete n[e]:n[e]=r;return n}const x$=[`Metric`,`DataTable`,`Chart`,`Callout`,`Stats`],S$=[`info`,`success`,`warning`,`danger`],C$=500,w$=r.union([r.string(),r.number(),r.boolean(),r.null()]),T$=r.record(r.string(),w$),E$=r.object({kind:r.literal(`metric`),label:r.string().min(1),value:r.union([r.string(),r.number()]),unit:r.string().optional(),delta:r.union([r.string(),r.number()]).optional(),deltaDirection:r.enum([`up`,`down`,`flat`]).optional(),caption:r.string().optional()}),D$=r.object({key:r.string().min(1),label:r.string().min(1),format:r.enum([`text`,`number`,`bar`,`dots`]).optional(),subtitleKey:r.string().min(1).optional(),dots:r.array(r.object({key:r.string().min(1),label:r.string().optional()})).min(1).max(5).optional()}),O$=r.object({kind:r.literal(`table`),columns:r.array(D$).min(1),rows:r.array(T$).max(500),rank:r.boolean().optional(),sortKeys:r.array(r.string().min(1)).min(1).max(5).optional()}).superRefine((e,t)=>{e.columns.forEach((e,n)=>{e.format===`dots`&&!e.dots&&t.addIssue({code:`custom`,path:[`columns`,n,`dots`],message:'columns with format "dots" require a `dots` array of { key, label? } entries'}),e.format!==`dots`&&e.dots&&t.addIssue({code:`custom`,path:[`columns`,n,`dots`],message:'`dots` is only allowed on columns with format "dots"'})});let n=new Set(e.columns.map(e=>e.key));(e.sortKeys??[]).forEach((e,r)=>{n.has(e)||t.addIssue({code:`custom`,path:[`sortKeys`,r],message:`sortKeys entry "${e}" is not a column key`})})}),k$=r.object({kind:r.literal(`chart`),type:r.enum([`bar`,`line`,`area`,`pie`]),x:r.string().min(1),series:r.array(r.object({key:r.string().min(1),label:r.string().optional()})).min(1),rows:r.array(T$).max(500)}),A$=r.object({kind:r.literal(`stats`),items:r.array(r.object({label:r.string().min(1),value:r.union([r.string(),r.number()]),unit:r.string().optional()})).min(1).max(6)}),j$=r.discriminatedUnion(`kind`,[E$,O$,k$,A$]),M$=r.record(r.string(),j$),N$={Metric:`metric`,DataTable:`table`,Chart:`chart`,Stats:`stats`},P$={Metric:[`data`],DataTable:[`data`],Chart:[`data`],Callout:[`variant`],Stats:[`data`]},F$=new Set(x$),I$=new Set([`Metric`,`DataTable`,`Chart`]),L$=/<(?:\/?[A-Za-z][A-Za-z0-9-]*(?=[\s/>])|!--|!|\?)/g,R$=RegExp(`<(?=[ \\t]|/[ \\t])[ \\t]*/?[ \\t]*(${x$.join(`|`)})\\b[^>\\n]*>`,`g`),z$=/([A-Za-z_][A-Za-z0-9_-]*)\s*=\s*"([^"]*)"/g;function B$(e){let t=[],n=e.split(`
|
|
144
|
+
`),r=0,i=null,a=null;for(let e of n){let n=e.trimStart(),o=/^(```|~~~)/.exec(n)?.[1]??null;if(i==null)if(o)i=r,a=o;else{let n=[...e.matchAll(/`+/g)];for(let e=0;e<n.length-1;e+=1){let i=n[e];if(!i)continue;let a=n.slice(e+1).find(e=>e[0].length===i[0].length);a&&(t.push([r+i.index,r+a.index+a[0].length]),e=n.indexOf(a))}}else o===a&&(t.push([i,r+e.length]),i=null,a=null);r+=e.length+1}return i!=null&&t.push([i,e.length]),t}const V$=(e,t)=>e.some(([e,n])=>t>=e&&t<n),H$=(e,t)=>e.slice(0,t).split(`
|
|
145
|
+
`).length;function U$(e,t){let n=e.indexOf(`>`,t);return n===-1?null:{raw:e.slice(t,n+1),end:n+1}}function W$(e,t,n,r){let i={};for(let e of t.matchAll(z$)){let[,t,n]=e;t!==void 0&&n!==void 0&&(i[t]=n)}let a=t.replace(z$,``).trim();return a.length>0&&r.push({code:`malformed_component`,message:`<${e}> has malformed attributes near "${a.slice(0,40)}" — use key="value" pairs with double quotes`,line:n}),i}function G$(e){let t=[],n=[],r=B$(e);for(let t of e.matchAll(R$)){let i=t[1];if(!i||V$(r,t.index))continue;let a=t[0].slice(0,t[0].indexOf(i)+i.length),o=/^<[ \t]*\//.test(t[0])?`</${i}>`:i===`Callout`?`<Callout variant="...">`:`<${i} data="..." />`;n.push({code:`malformed_component`,message:`"${a}" has whitespace after "<" — component tags must start immediately: ${o}`,line:H$(e,t.index)})}let i=(n,r)=>{let i=e.slice(n,r);i.trim().length>0&&t.push({type:`markdown`,content:i})},a=0;L$.lastIndex=0;let o=L$.exec(e);for(;o;){let s=o.index;if(s<a||V$(r,s)){o=L$.exec(e);continue}let c=H$(e,s),l=o[0];if(l===`<!--`||l===`<!`||l===`<?`){n.push({code:`raw_html`,message:`Raw HTML is not allowed in reports`,line:c}),o=L$.exec(e);continue}let u=l.startsWith(`</`),d=l.slice(u?2:1);if(!F$.has(d)){n.push(/^[a-z]/.test(d)?{code:`raw_html`,message:`Raw HTML is not allowed in reports (<${d}>)`,line:c}:{code:`unknown_tag`,message:`Unknown component <${d}> — allowed: ${x$.join(`, `)}`,line:c}),o=L$.exec(e);continue}let f=d;if(u){n.push({code:`unbalanced_callout_close`,message:`</${f}> has no matching opening tag`,line:c}),o=L$.exec(e);continue}let p=U$(e,s);if(!p){n.push({code:`malformed_component`,message:`<${f} is never closed with ">"`,line:c});break}i(a,s);let ee=p.raw.endsWith(`/>`),te=W$(f,p.raw.slice(1+f.length,ee?-2:-1),c,n);if(I$.has(f))ee||n.push({code:`malformed_component`,message:`<${f}> must be self-closing: <${f} data="..." />`,line:c}),t.push({type:`component`,tag:f,attrs:te,line:c}),a=p.end;else{let i=``,o=p.end;if(ee)t.push({type:`component`,tag:f,attrs:te,children:i,line:c});else{let a=-1,s=p.end;for(;;){let t=e.indexOf(`</Callout>`,s);if(t===-1)break;if(!V$(r,t)){a=t;break}s=t+1}a===-1?(n.push({code:`unclosed_callout`,message:`<Callout> is missing its closing </Callout>`,line:c}),i=e.slice(p.end),o=e.length):(i=e.slice(p.end,a),o=a+10);for(let t of i.matchAll(new RegExp(L$.source,`g`))){let i=p.end+t.index;if(V$(r,i))continue;let a=t[0].replace(/^<\/?/,``),o=H$(e,i);F$.has(a)?n.push({code:`component_inside_callout`,message:`<${a}> cannot appear inside <Callout> — callout children are plain markdown`,line:o}):/^[a-z!?]/.test(a)||t[0].startsWith(`<!`)?n.push({code:`raw_html`,message:`Raw HTML is not allowed in reports`,line:o}):n.push({code:`unknown_tag`,message:`Unknown component <${a}> — allowed: ${x$.join(`, `)}`,line:o})}t.push({type:`component`,tag:f,attrs:te,children:i.trim(),line:c})}a=o}L$.lastIndex=a,o=L$.exec(e)}return i(a,e.length),{segments:t,issues:n}}function K$(e,t){let n=[],r=[],{segments:i,issues:a}=G$(e);n.push(...a);let o=new Map;for(let[e,r]of Object.entries(t)){let t=j$.safeParse(r);if(t.success)o.set(e,t.data.kind);else{let r=t.error.issues[0];n.push({code:`invalid_data_value`,message:`data["${e}"] is invalid: ${r?.path.join(`.`)||`(root)`} — ${r?.message??`unknown error`}`})}}let s=new Set;for(let e of i){if(e.type!==`component`)continue;let{tag:r,attrs:i,line:a}=e;for(let e of Object.keys(i))P$[r].includes(e)||n.push({code:`unknown_attr`,message:`<${r}> does not accept attribute "${e}" (allowed: ${P$[r].join(`, `)||`none`})`,line:a});if(r===`Callout`){let e=i.variant;e!==void 0&&!S$.includes(e)&&n.push({code:`invalid_callout_variant`,message:`<Callout> variant "${e}" is invalid (allowed: ${S$.join(`, `)})`,line:a});continue}let c=N$[r],l=i.data;if(!l){n.push({code:`missing_data_attr`,message:`<${r}> requires a data attribute: <${r} data="<key>" />`,line:a});continue}if(s.add(l),!(l in t)){n.push({code:`unknown_data_ref`,message:`<${r} data="${l}" /> references a key that is not in the data snapshot`,line:a});continue}let u=o.get(l);u!==void 0&&u!==c&&n.push({code:`data_kind_mismatch`,message:`<${r}> requires kind "${c}" but data["${l}"] has kind "${u}"`,line:a})}for(let e of Object.keys(t))s.has(e)||r.push({code:`unused_data_key`,message:`data["${e}"] is not referenced by any component tag`});return{valid:n.length===0,errors:n,warnings:r}}function q$(e){let t=e.map((e,t)=>{let n=e&&typeof e==`object`&&`effect_id`in e?String(e.effect_id):`(missing effect_id)`,i=p$.safeParse(e);return{index:t,effect_id:n,valid:i.success,errors:i.success?[]:[r.prettifyError(i.error)]}}),n=t.flatMap(e=>e.errors.map(t=>`effects[${e.index}] (${e.effect_id}): ${t}`));return{valid:n.length===0,errors:n,steps:t}}function J$(e,t){let n=t,r=!0;for(let[t,i]of e.entries()){if(i.effect_id===`report:generate@1`){n=null,r=!1;continue}if(i.effect_id===`report:deliver:email@1`){if(r&&n===null)return{valid:!1,errors:[`effects[${t}] (report:deliver:email@1): the report is empty (no versions) and no earlier step in this chain produces one — there is nothing to deliver.`]};continue}if(!r)continue;let e=Y$(i.config,n);if(!e.ok)return{valid:!1,errors:e.errors.map(e=>`effects[${t}] (report:update@1): ${e.message}`)};n={markdown:e.markdown,data:e.data}}return{valid:!0}}function Y$(e,t){let n;if(e.mode===`full_rewrite`){if(!e.markdown)return{ok:!1,errors:[{message:`mode "full_rewrite" requires the complete new markdown.`}]};n=e.markdown}else{if(!t)return{ok:!1,errors:[{message:`This report is empty (no versions yet) — there is nothing to edit. Use mode "full_rewrite" to write its first version.`}]};if(!e.edits?.length)return{ok:!1,errors:[{message:`mode "edit" requires at least one entry in edits.`}]};let r=y$(t.markdown,e.edits);if(!r.ok)return{ok:!1,errors:r.errors};n=r.markdown}let r=t?.data??{},i=e.data===void 0?e.data_patch===void 0?r:b$(r,e.data_patch):e.data,a=K$(n,i);return a.valid?{ok:!0,markdown:n,data:i,warnings:a.warnings}:{ok:!1,errors:a.errors.map(e=>({message:e.message}))}}const X$=[`people:profiles:icypeas@1`,`companies:profiles:icypeas@1`,`people:profiles:clado@1`,`people:profiles:clado@2`,`people:employees:leadmagic@1`,`companies:profiles:exa@1`,`people:profiles:exa@1`,`companies:profiles:crustdata@1`,`people:profiles:crustdata@1`],Z$=r.enum(X$);function Q$(e){let t=!0,n=e=>{if(t!==!1&&typeof e==`object`&&e){Array.isArray(e)&&e.length>0&&(t=!1);for(let r of Object.values(e))typeof r!=`object`&&r!=null&&r!==``&&(t=!1),typeof r==`object`&&r&&n(r)}};return n(e),t}function $$(e,t){let n={name:e,config:t};return It.hashObject(n)}var e1=class{validatePayload(e){try{return this.schema.parse(e)}catch(e){throw e instanceof n?Error(JSON.stringify(r.prettifyError(e))):e}}catalogOutput(e){return{name:e.name,enabled:!!this.payload.config?.output_fields?.[e.name].enabled,type:e.type,format:e.format,resolvedName:this.payload.config?.output_fields?.[e.name]?.alias||e.name,description:e.description,jsonMeta:e.jsonMeta,label:e.label,isCatalogFIeld:!0}}getOutputFields(){let e={};for(let[t,n]of Object.entries(this.getRawOutputFields()))n.enabled&&(e[t]=n);return e}getHashKey(){return $$(this.searchId,this.payload)}};function t1(e){return e.split(`@`)[0]}function n1(e){return`/docs/search-catalog/${t1(e)}/${e.split(`@`)[1]}`}const r1=`companies:profiles:crustdata@1`,i1=g(`company_name`),a1=g(`company_website_url`),o1=g(`company_description`),s1=g(`company_profile_url`),c1=g(`crustdata_company_match`),l1=r.object({search_id:r.literal(r1),connector:Ts.nullable().optional(),config:r.object({limit:N({sectionKey:`general`,path:`config.limit`,max:1e3,min:1,groupPath:`config.general`,description:``,label:`Limit number of search results`}).default(100),cursor:Bu({sectionKey:`general`,path:`config.cursor`,groupPath:`config.general`,inputType:`text`,description:``,label:`Continue previous search from cursor`}).nullable(),output_fields:P(r.object({[i1.name]:A({fieldName:i1.name}),[a1.name]:A({fieldName:i1.name}),[o1.name]:A({fieldName:o1.name}),[s1.name]:A({fieldName:s1.name}),[c1.name]:A({fieldName:c1.name})})),filters:r.object({hq_locations:Wu({path:`config.filters.hq_locations`,sectionKey:`config.filters`,label:`HQ locations`,description:``,disableSearch:!1,required:!1,groupPath:`config.filters.location`,optionsDef:h(`locations`)}).default([]),crunchbase_categories:Wu({path:`config.filters.crunchbase_categories`,sectionKey:`config.filters`,label:`Crunchbase categories`,description:``,disableSearch:!1,required:!1,groupPath:`config.filters.categories`,optionsDef:h(`company.crunchbase_categories.crustdata`)}).default([]),crunchbase_investors:Wu({path:`config.filters.crunchbase_investors`,sectionKey:`config.filters`,label:`Investors to include (Crunchbase)`,description:``,disableSearch:!1,required:!1,groupPath:`config.filters.investors`,optionsDef:h(`company.crunchbase_investors.crustdata`)}).default([]),tracxn_investors:Wu({path:`config.filters.tracxn_investors`,sectionKey:`config.filters`,label:`Investors to include (Tracxn)`,description:``,required:!1,groupPath:`config.filters.investors`,disableSearch:!1,optionsDef:h(`company.tracxn_investors.crustdata`)}).default([]),company_types:j({sectionKey:`config.filters`,path:`config.filters.company_types`,options:m(`crustdata.company_types`),label:`Company types`,description:``,required:!1,disableSearch:!0,groupPath:`config.filters.categories`}).default([]),linkedin_industries:Wu({sectionKey:`config.filters`,path:`config.filters.linkedin_industries`,optionsDef:h(`linkedin_industries.crustdata`),label:`Industries`,disableSearch:!1,required:!1,description:``,groupPath:`config.filters.industry`}).default([]),markets:Wu({sectionKey:`config.filters`,path:`config.filters.markets`,optionsDef:h(`company.markets.crustdata`),label:`Markets`,disableSearch:!1,required:!1,description:``,groupPath:`config.filters.industry`}).default([]),linkedin_categories:Wu({sectionKey:`config.filters`,path:`config.filters.linkedin_categories`,optionsDef:h(`company.linkedin_categories.crustdata`),label:`Company types`,description:``,required:!1,disableSearch:!0,groupPath:`config.filters.categories`}).default([]),headcount:j({path:`config.filters.headcount`,sectionKey:`config.filters`,label:`Headcount`,description:``,disableSearch:!0,required:!1,options:m(`crustdata.company_size`),groupPath:`config.filters.company_size`}).default([]),headcount_growth_last_6m_in_percent:j({path:`config.filters.headcount_growth_last_6m_in_percent`,sectionKey:`config.filters`,label:`Headcount growth over last 6 months in percent`,description:``,options:m(`crustdata.headcount_growth`),disableSearch:!0,required:!1,groupPath:`config.filters.company_size`}).default([]),revenue_in_usd:Iu({path:`config.filters.revenue_in_usd`,sectionKey:`config.filters`,label:`Revenue (USD)`,description:``,legend:`1k - 10B`,min:1e3,max:1e10,groupPath:`config.filters.financials`}),last_funding_type:j({path:`config.filters.last_funding_type`,sectionKey:`config.filters`,label:`Last funding type`,disableSearch:!0,required:!1,options:m(`crustdata.funding_rounds`),description:``,groupPath:`config.filters.financials`}).default([]),last_funding_amount:Iu({path:`config.filters.last_funding_amount`,sectionKey:`config.filters`,label:`Last funding amount`,legend:`1k - 10B`,min:1e3,max:1e10,description:``,groupPath:`config.filters.financials`}),number_of_followers:j({path:`config.filters.number_of_followers`,sectionKey:`config.filters`,label:`Number of LinkedIn followers`,disableSearch:!0,description:``,required:!1,options:m(`crustdata.company_followers`),groupPath:`config.filters.web_presence`}).default([]),follower_growth_last_6m_in_percent:j({path:`config.filters.follower_growth_last_6m_in_percent`,sectionKey:`config.filters`,label:`LinkedIn follower growth within last 6 months`,disableSearch:!0,description:``,required:!1,options:m(`crustdata.follower_growth`),groupPath:`config.filters.web_presence`}).default([]),profile_summary_keywords:O({path:`config.filters.profile_summary_keywords`,sectionKey:`config.filters`,maxItems:50,label:`LinkedIn company description contains`,description:``,groupPath:`config.filters.keywords`}),competitor_websites:O({path:`config.filters.competitor_websites`,sectionKey:`config.filters`,maxItems:50,label:`Competitor domains`,description:`Ex. 'google.com'`,groupPath:`config.filters.competitors`})}).check(e=>{Q$(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),u1={default:{input:[{fields:[]}]}},d1=class extends e1{searchId=r1;schema=l1;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[i1.name]:this.catalogOutput(i1),[a1.name]:this.catalogOutput(a1),[o1.name]:this.catalogOutput(o1),[s1.name]:this.catalogOutput(s1),[c1.name]:this.catalogOutput(c1)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_company_db_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return u1}},f1=l1,p1={searchId:r1,billableOperation:`companies-profiles-crustdata`,baseSearch:t1(`companies:profiles:crustdata@1`),label:`Company search`,categories:[`companies`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Filter based company search.`,tags:[V.COMPANY_PROFILES],docPath:n1(r1),cost:{mode:`per_page`,creditsPerPage:2},provider:`crustdata`,defaultPayload:{search_id:r1,connector:null,config:{limit:100,cursor:``,output_fields:{company_name:{enabled:!0,alias:``},company_website_url:{enabled:!0,alias:``},company_description:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},crustdata_company_match:{enabled:!0,alias:``}},filters:{company_types:[],headcount_growth_last_6m_in_percent:[],last_funding_amount:{from:null,to:null},last_funding_type:[],linkedin_industries:[],linkedin_categories:[],crunchbase_categories:[],markets:[],revenue_in_usd:{from:null,to:null},crunchbase_investors:[],tracxn_investors:[],follower_growth_last_6m_in_percent:[],headcount:[],hq_locations:[],number_of_followers:[],profile_summary_keywords:[],competitor_websites:[]}}}},m1=`companies:profiles:exa@1`,h1=g(`company_name`),g1=g(`company_website_url`),_1=g(`company_description`),v1=g(`company_industry`),y1=g(`headcount`),b1=g(`exa_match_evaluation`),x1=r.object({search_id:r.literal(m1),connector:Ts.nullable().optional(),config:r.object({limit:N({sectionKey:`general`,path:`config.limit`,max:100,min:1,groupPath:`config.general`,description:``,label:`Limit number of search results`}).default(10),output_fields:P(r.object({[h1.name]:A({fieldName:h1.name}),[g1.name]:A({fieldName:h1.name}),[_1.name]:A({fieldName:_1.name}),[v1.name]:A({fieldName:v1.name}),[y1.name]:A({fieldName:y1.name}),[b1.name]:A({fieldName:b1.name})})),filters:r.object({query:Vu({sectionKey:`config.filters`,path:`config.filters.query`,placeholder:`e.g. Top AI research labs focusing on large language models`,groupPath:`config.filters.query`,rows:5,label:`Search description in natural language`,minLength:10,maxLength:2e4})})})}),S1={default:{input:[{fields:[]}]}},C1=class extends e1{searchId=m1;schema=x1;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[h1.name]:this.catalogOutput(h1),[g1.name]:this.catalogOutput(g1),[_1.name]:this.catalogOutput(_1),[v1.name]:this.catalogOutput(v1),[y1.name]:this.catalogOutput(y1),[b1.name]:this.catalogOutput(b1)}}getConnectionsRequirements(){return[{provider:`exa`,rateLimitOperation:`exa_websets`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return S1}},w1=x1,T1={searchId:m1,billableOperation:`companies-profiles-exa`,baseSearch:t1(`companies:profiles:exa@1`),label:`Company finder (websets)`,categories:[`companies`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Semantic AI search to find company profiles. This search can take several minutes.`,tags:[V.COMPANY_PROFILES],docPath:n1(m1),cost:{mode:`per_result`,creditsPerResult:2},provider:`exa`,defaultPayload:{search_id:m1,connector:null,config:{limit:10,output_fields:{company_name:{enabled:!0,alias:``},company_website_url:{enabled:!0,alias:``},company_industry:{enabled:!0,alias:``},company_description:{enabled:!0,alias:``},headcount:{enabled:!0,alias:``},exa_match_evaluation:{enabled:!1,alias:``}},filters:{query:``}}}},E1=`companies:profiles:icypeas@1`,D1=g(`company_industry`),O1=g(`company_name`),k1=g(`company_description`),A1=g(`company_website_url`),j1=g(`headcount`),M1=g(`company_region`),N1=g(`company_profile_url`),P1=g(`icypeas_company_match`),F1=r.object({search_id:r.literal(E1),connector:Ts.nullable().optional(),config:r.object({limit:N({sectionKey:`general`,max:5e4,min:1,path:`config.limit`,groupPath:`config.general`,description:``,label:`Limit number of search results`}).default(100),output_fields:P(r.object({company_name:A({fieldName:O1.name}),company_industry:A({fieldName:D1.name}),company_description:A({fieldName:k1.name}),company_website_url:A({fieldName:A1.name}),headcount:A({fieldName:j1.name}),company_region:A({fieldName:M1.name}),company_profile_url:A({fieldName:N1.name}),icypeas_company_match:A({fieldName:P1.name})})),filters:r.object({name:k({path:`config.filters.name`,sectionKey:`config.filters`,includeLabel:`Company names to include`,excludeLabel:`Company names to exclude`,description:``,placeholder:``,groupPath:`config.filters.company_information`,maxItems:100}).optional(),type:Pu({path:`config.filters.type`,sectionKey:`config.filters`,label:``,description:``,placeholder:``,includeLabel:`Company types to include`,excludeLabel:`Company types to exclude`,optionsDef:{type:`static`,options:[{value:`Privately Held`,label:`Privately Held`},{value:`Public Company`,label:`Public Company`},{value:`Sole Proprietorship`,label:`Sole Proprietorship`},{value:`Self-Employed`,label:`Self-Employed`},{value:`Partnership`,label:`Partnership`},{value:`Nonprofit`,label:`Nonprofit`},{value:`Educational Institution`,label:`Educational Institution`},{value:`Government Agency`,label:`Government Agency`}]},groupPath:`config.filters.company_information`}).optional(),industry:Pu({path:`config.filters.industry`,sectionKey:`config.filters`,optionsDef:Ge(`linkedin.industries`),includeLabel:`Industries to include`,excludeLabel:`Industries to exclude`,description:``,placeholder:``,groupPath:`config.filters.industry`,maxItems:50}).optional(),location:k({path:`config.filters.location`,sectionKey:`config.filters`,includeLabel:`Locations to include`,excludeLabel:`Locations to exclude`,description:``,placeholder:`US, FR, New York`,groupPath:`config.filters.geografic`,maxItems:20}).optional(),headcount:Iu({path:`config.filters.headcount`,sectionKey:`config.filters`,legend:`1-1M`,label:`Headcount`,description:``,min:1,max:1e6,unit:`employees`,groupPath:`config.filters.company_size`}).optional(),urn:k({path:`config.filters.urn`,sectionKey:`config.filters`,label:``,description:``,groupPath:`config.filters.linkedin`,excludeLabel:`URNs to exclude`,includeLabel:`URNs to include`,maxItems:200}).optional(),lid:k({path:`config.filters.lid`,sectionKey:`config.filters`,label:``,description:``,groupPath:`config.filters.linkedin`,includeLabel:`LinkedIn IDs to include`,excludeLabel:`LinkedIn IDs to exclude`,maxItems:200}).optional()}).check(e=>{Q$(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),I1={default:{input:[{fields:[{outputField:`company_profile_url`}]}]}},L1=class extends e1{searchId=E1;schema=F1;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[O1.name]:this.catalogOutput(O1),[D1.name]:this.catalogOutput(D1),[N1.name]:this.catalogOutput(N1),[A1.name]:this.catalogOutput(A1),[k1.name]:this.catalogOutput(k1),[j1.name]:this.catalogOutput(j1),[M1.name]:this.catalogOutput(M1),[P1.name]:this.catalogOutput(P1)}}getConnectionsRequirements(){return[{provider:`icypeas`,rateLimitOperation:`icypeas_company_database`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return I1}},R1=F1,z1={searchId:E1,billableOperation:`companies-profiles-icypeas`,baseSearch:t1(`companies:profiles:icypeas@1`),label:`Find company profiles`,categories:[`companies`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Search a filter-based, general-purpose company database.`,tags:[V.COMPANY_PROFILES],docPath:n1(E1),cost:{mode:`per_result`,creditsPerResult:.4},provider:`icypeas`,defaultPayload:{search_id:E1,connector:null,config:{limit:100,output_fields:{company_name:{alias:``,enabled:!0},icypeas_company_match:{alias:``,enabled:!0},company_website_url:{alias:``,enabled:!0},company_description:{alias:``,enabled:!0},company_industry:{alias:``,enabled:!0},company_profile_url:{alias:``,enabled:!0},headcount:{alias:``,enabled:!0},company_region:{alias:``,enabled:!0}},filters:{name:{include:[],exclude:[]},type:{include:[],exclude:[]},industry:{include:[],exclude:[]},location:{include:[],exclude:[]},headcount:{},urn:{include:[],exclude:[]},lid:{include:[],exclude:[]}}}}},B1=`people:profiles:clado@1`,V1=g(`name`),H1=g(`job_title`),U1=g(`company_name`),W1=g(`company_profile_url`),G1=g(`profile_url`),K1=g(`clado_person_match`),q1=r.object({search_id:r.literal(B1),connector:Ts.nullable().optional(),config:r.object({limit:N({sectionKey:`general`,path:`config.limit`,max:100,min:1,groupPath:`config.general`,description:``,label:`Limit number of search results`}).default(20),output_fields:P(r.object({[V1.name]:A({fieldName:V1.name}),[H1.name]:A({fieldName:H1.name}),[W1.name]:A({fieldName:W1.name}),[U1.name]:A({fieldName:U1.name}),[G1.name]:A({fieldName:G1.name}),[K1.name]:A({fieldName:K1.name})})),filters:r.object({query:Vu({path:`config.filters.query`,sectionKey:`config.filters`,placeholder:`e.g. Software engineers in San Francisco`,groupPath:`config.filters.query`,rows:5,label:`Search description in natural language`,minLength:10,maxLength:2e4})})})}),J1={default:{input:[{fields:[{outputField:`profile_url`}]}]}},Y1=class extends e1{searchId=B1;schema=q1;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[V1.name]:this.catalogOutput(V1),[H1.name]:this.catalogOutput(H1),[U1.name]:this.catalogOutput(U1),[G1.name]:this.catalogOutput(G1),[W1.name]:this.catalogOutput(W1),[K1.name]:this.catalogOutput(K1)}}getConnectionsRequirements(){return[{provider:`clado`,rateLimitOperation:`clado_search_people`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return J1}},X1=q1,Z1={searchId:B1,billableOperation:`people-profiles-clado`,baseSearch:Nt(`people:profiles:clado@1`),label:`Find people profiles with Clado`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:profiles:clado@2`},description:`Search through millions of LinkedIn profiles using natural language queries. This endpoint provides fast searching with AI-powered relevance matching.`,tags:[V.PEOPLE_PROFILES],docPath:`/resources/search-catalog/people:profiles:clado/1`,cost:{mode:`per_search`,creditsPerSearch:3},provider:`clado`,defaultPayload:{search_id:B1,connector:null,config:{limit:20,output_fields:{company_name:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},name:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},clado_person_match:{enabled:!0,alias:``}},filters:{query:``}}}},Q1=`people:profiles:clado@2`,$1=g(`name`),e0=g(`job_title`),t0=g(`company_name`),n0=g(`company_profile_url`),r0=g(`profile_url`),i0=g(`clado_person_match_v2`),a0=r.object({search_id:r.literal(Q1),connector:Ts.nullable().optional(),config:r.object({limit:N({sectionKey:`general`,path:`config.limit`,max:1e4,min:1,groupPath:`config.general`,description:``,label:`Limit number of search results`}).default(100),search_id:Bu({sectionKey:`general`,path:`config.search_id`,inputType:`text`,groupPath:`config.continue_existing_search`,label:`Search id`,description:`The id of the search you want to continue`}).nullable().default(``),offset:N({sectionKey:`general`,path:`config.offset`,groupPath:`config.continue_existing_search`,label:`Offset`,max:1e5,min:1,description:`To continue the previous search, provide both the search_id and the last offset.`}).nullish(),output_fields:P(r.object({[$1.name]:A({fieldName:$1.name}),[e0.name]:A({fieldName:e0.name}),[n0.name]:A({fieldName:n0.name}),[t0.name]:A({fieldName:t0.name}),[r0.name]:A({fieldName:r0.name}),[i0.name]:A({fieldName:i0.name})})),filters:r.object({query:Vu({path:`config.filters.query`,sectionKey:`config.filters`,placeholder:`e.g. Software engineers in San Francisco`,groupPath:`config.filters.query`,rows:5,label:`Search description in natural language`,minLength:0,maxLength:2e4}).default(``)}).optional()})}).check(e=>{let t=!!e.value.config.filters?.query,n=!!e.value.config.search_id&&!!e.value.config.offset;!t&&!n&&e.issues.push({code:`custom`,input:``,message:`Must define either 'query' or both 'searchId' AND 'offset'.`,path:[`config.filters.query`]})}),o0={default:{input:[{fields:[{outputField:`profile_url`}]}]}},s0=class extends e1{searchId=Q1;schema=a0;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[$1.name]:this.catalogOutput($1),[e0.name]:this.catalogOutput(e0),[t0.name]:this.catalogOutput(t0),[r0.name]:this.catalogOutput(r0),[n0.name]:this.catalogOutput(n0),[i0.name]:this.catalogOutput(i0)}}getConnectionsRequirements(){return[{provider:`clado`,rateLimitOperation:`clado_search_people`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return o0}},c0=a0,l0={searchId:Q1,billableOperation:`people-profiles-clado`,baseSearch:Nt(`people:profiles:clado@2`),label:`Find people profiles`,categories:[`deprecated`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:{deprecatedOn:`2026-06-13`,replacedBy:`people:profiles:clado@2`},description:`Search a growing dataset with semantic queries.`,tags:[],docPath:`/resources/search-catalog/people:profiles:clado/1`,cost:{mode:`per_page`,creditsPerPage:3},provider:`clado`,defaultPayload:{search_id:Q1,connector:null,config:{limit:100,search_id:``,offset:void 0,output_fields:{company_name:{enabled:!0,alias:``},company_profile_url:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},name:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},clado_person_match_v2:{enabled:!0,alias:``}},filters:{query:``}}}},u0=`people:employees:leadmagic@1`,d0=g(`name`),f0=g(`job_title`),p0=g(`company_website_url`),m0=g(`company_name`),h0=r.object({search_id:r.literal(u0),connector:Ts.nullable().optional(),config:r.object({limit:N({sectionKey:`general`,max:500,min:1,path:`config.limit`,groupPath:`config.general`,description:``,label:`Limit number of search results`}).default(50),output_fields:P(r.object({[d0.name]:A({fieldName:d0.name}),[m0.name]:A({fieldName:m0.name}),[p0.name]:A({fieldName:p0.name}),[f0.name]:A({fieldName:f0.name})})),filters:r.object({company_website_url:Bu({path:`config.filters.company_website_url`,sectionKey:`config.filters`,groupPath:`config.filters.website`,inputType:`text`,description:`URL of the employer company.`,label:`Company Website URL`}).nullable()})})}),g0={default:{input:[{fields:[{outputField:p0.name}]}]}},_0=class extends e1{searchId=u0;schema=h0;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[d0.name]:this.catalogOutput(d0),[f0.name]:this.catalogOutput(f0),[p0.name]:this.catalogOutput(p0),[m0.name]:this.catalogOutput(m0)}}getConnectionsRequirements(){return[{provider:`leadmagic`,rateLimitOperation:`leadmagic_employee_finder`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return g0}},v0=h0,y0={searchId:u0,billableOperation:`people-employees-leadmagic`,baseSearch:t1(`people:employees:leadmagic@1`),label:`Employee finder`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Search for employees of a company.`,tags:[V.PEOPLE_PROFILES],docPath:n1(u0),cost:{mode:`per_result`,creditsPerResult:.05},provider:`leadmagic`,defaultPayload:{search_id:u0,connector:null,config:{limit:50,output_fields:{name:{alias:``,enabled:!0},job_title:{alias:``,enabled:!0},company_website_url:{alias:``,enabled:!0},company_name:{alias:``,enabled:!0}},filters:{company_website_url:``}}}},b0=`people:profiles:crustdata@1`,x0=g(`name`),S0=g(`company_website_url`),C0=g(`profile_url`),w0=g(`job_title`),T0=g(`crustdata_person_match`),E0=r.object({search_id:r.literal(b0),connector:Ts.nullable().optional(),config:r.object({limit:N({sectionKey:`general`,path:`config.limit`,max:1e3,min:1,groupPath:`config.general`,description:``,label:`Limit number of results`}).default(100),cursor:Bu({sectionKey:`general`,path:`config.cursor`,groupPath:`config.general`,inputType:`text`,description:``,label:`Continue previous search from cursor`}).nullable(),output_fields:P(r.object({[x0.name]:A({fieldName:x0.name}),[S0.name]:A({fieldName:S0.name}),[C0.name]:A({fieldName:C0.name}),[w0.name]:A({fieldName:w0.name}),[T0.name]:A({fieldName:T0.name})})),filters:r.object({locations:Wu({path:`config.filters.locations`,sectionKey:`config.filters`,label:`Locations`,disableSearch:!1,required:!1,optionsDef:h(`locations`),groupPath:`config.filters.general`}).default([]),profile_headline_keywords:Mu({path:`config.filters.profile_headline_keywords`,sectionKey:`config.filters`,label:`Headline contains keywords`,maxItems:100,groupPath:`config.filters.keywords`}),profile_summary_keywords:Mu({path:`config.filters.profile_summary_keywords`,sectionKey:`config.filters`,label:`Profile about section contains keywords`,maxItems:100,groupPath:`config.filters.keywords`}),profile_languages:j({path:`config.filters.profile_languages`,sectionKey:`config.filters`,label:`Profile languages`,disableSearch:!1,required:!1,options:m(`crustdata.person_profile_languages`),groupPath:`config.filters.profile`}).default([]),languages:j({path:`config.filters.languages`,sectionKey:`config.filters`,label:`Spoken languages`,disableSearch:!1,required:!1,options:m(`crustdata.person_profile_languages`),groupPath:`config.filters.profile`}).default([]),skills:Wu({path:`config.filters.skills`,sectionKey:`config.filters`,label:`Skills`,placeholder:`.NET, PMO, ...`,disableSearch:!1,required:!1,description:``,groupPath:`config.filters.skills`,optionsDef:h(`skills`)}).default([]),years_of_experience:j({path:`config.filters.years_of_experience`,sectionKey:`config.filters`,label:`Years of experience`,placeholder:`1 to 2 years`,disableSearch:!0,description:``,required:!1,options:m(`crustdata.years_of_experience`),groupPath:`config.filters.experience`}).default([]),current_seniority_levels:Pu({path:`config.filters.current_seniority_levels`,sectionKey:`config.filters`,disableSearch:!0,label:`Seniority`,optionsDef:Ge(`crustdata.person_seniority`),description:``,groupPath:`config.filters.experience`}).default({include:[],exclude:[]}),current_employers:O({path:`config.filters.current_employers`,sectionKey:`config.filters`,label:`Current employers`,description:``,maxItems:200,groupPath:`config.filters.experience`,suggestionsDef:h(`person.current_employer_names.crustdata`)}),current_employers_website_urls:O({path:`config.filters.current_employers_website_urls`,sectionKey:`config.filters`,label:`Current employer domains`,description:``,maxItems:200,groupPath:`config.filters.experience`}),current_job_titles:O({path:`config.filters.current_job_titles`,sectionKey:`config.filters`,label:`Current job titles`,description:``,order:1,groupPath:`config.filters.experience`,suggestionsDef:h(`titles`)}),current_employers_linkedin_industries:Wu({path:`config.filters.current_employers_linkedin_industries`,sectionKey:`config.filters`,label:`Current employers industries`,disableSearch:!1,required:!1,groupPath:`config.filters.experience`,description:``,optionsDef:h(`linkedin_industries.crustdata`)}).default([]),years_at_current_company:j({path:`config.filters.years_at_current_company`,sectionKey:`config.filters`,label:`Years at current company`,placeholder:`1 to 2 years`,disableSearch:!1,required:!1,groupPath:`config.filters.experience`,description:``,options:m(`crustdata.years_of_experience`)}).default([]),previous_employers_website_urls:O({path:`config.filters.previous_employers_website_urls`,sectionKey:`config.filters`,label:`Previous employer domains`,description:``,maxItems:200,groupPath:`config.filters.experience`}),previous_seniority_levels:Pu({path:`config.filters.previous_seniority_levels`,sectionKey:`config.filters`,label:`Previous seniority`,disableSearch:!0,optionsDef:Ge(`crustdata.person_seniority`),description:``,groupPath:`config.filters.experience`}).default({include:[],exclude:[]}),previous_employers:O({path:`config.filters.previous_employers`,sectionKey:`config.filters`,label:`Previous employer name`,description:``,maxItems:200,groupPath:`config.filters.experience`,suggestionsDef:h(`person.past_employer_names.crustdata`)}),previous_job_titles:O({path:`config.filters.previous_job_titles`,sectionKey:`config.filters`,label:`Current job titles`,description:``,groupPath:`config.filters.experience`,suggestionsDef:h(`titles`)}),previous_employers_linkedin_industries:Wu({path:`config.filters.previous_employers_linkedin_industries`,sectionKey:`config.filters`,label:`Previous employer industry`,disableSearch:!1,required:!1,groupPath:`config.filters.experience`,description:``,optionsDef:h(`linkedin_industries.crustdata`)}).default([]),certifications:O({path:`config.filters.certifications`,sectionKey:`config.filters`,label:`Certifications`,groupPath:`config.filters.certifications_honors`,description:``}),honors:O({path:`config.filters.honors`,sectionKey:`config.filters`,label:`Honors`,groupPath:`config.filters.certifications_honors`,description:``}),recently_changed_jobs:zu({path:`config.filters.recently_changed_jobs`,sectionKey:`config.filters`,label:`Recently changed jobs`,description:``,defaultValue:null,groupPath:`config.filters.activities`}),fields_of_study:Wu({path:`config.filters.fields_of_study`,sectionKey:`config.filters`,label:`Fields of study`,description:``,disableSearch:!1,required:!1,groupPath:`config.filters.education`,optionsDef:h(`person.education_field_of_study.crustdata`)}).default([]),degree_names:Wu({path:`config.filters.degree_names`,sectionKey:`config.filters`,label:`Degree names`,description:``,disableSearch:!1,required:!1,groupPath:`config.filters.education`,optionsDef:h(`person.education_degree.crustdata`)}).default([]),school_names:Wu({path:`config.filters.school_names`,sectionKey:`config.filters`,label:`School names`,description:``,disableSearch:!1,required:!1,groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default([]),current_school_names:Wu({path:`config.filters.current_school_names`,sectionKey:`config.filters`,label:`Currently enrolled at`,description:``,disableSearch:!1,required:!1,groupPath:`config.filters.education`,optionsDef:h(`schools`)}).default([]),extracurricular_activities:O({path:`config.filters.extracurricular_activities`,sectionKey:`config.filters`,label:`Extracurricular activities`,description:``,groupPath:`config.filters.education`,suggestionsDef:h(`person.education_activities.crustdata`)})}).check(e=>{Q$(e.value)&&e.issues.push({code:`custom`,message:`You must set at least one filter.`,input:e.value})})})}),D0={default:{input:[{fields:[]}]}},O0=class extends e1{searchId=b0;schema=E0;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[x0.name]:this.catalogOutput(x0),[S0.name]:this.catalogOutput(S0),[C0.name]:this.catalogOutput(C0),[w0.name]:this.catalogOutput(w0),[T0.name]:this.catalogOutput(T0)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitOperation:`crustdata_people_db_search`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return D0}},k0=E0,A0={searchId:b0,billableOperation:`people-profiles-crustdata`,baseSearch:t1(`people:profiles:crustdata@1`),label:`People search`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Filter-based people search.`,tags:[V.PEOPLE_PROFILES],docPath:n1(b0),cost:{mode:`per_page`,creditsPerPage:5},provider:`crustdata`,defaultPayload:{search_id:b0,connector:null,config:{limit:100,cursor:``,output_fields:{name:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},company_website_url:{enabled:!0,alias:``},crustdata_person_match:{enabled:!0,alias:``}},filters:{profile_headline_keywords:[],languages:[],profile_summary_keywords:[],previous_job_titles:[],current_employers:[],current_school_names:[],years_at_current_company:[],certifications:[],honors:[],current_employers_linkedin_industries:[],current_employers_website_urls:[],previous_employers_website_urls:[],current_seniority_levels:{include:[],exclude:[]},previous_seniority_levels:{include:[],exclude:[]},degree_names:[],locations:[],profile_languages:[],recently_changed_jobs:null,extracurricular_activities:[],school_names:[],fields_of_study:[],previous_employers:[],current_job_titles:[],skills:[],years_of_experience:[],previous_employers_linkedin_industries:[]}}}},j0=`people:profiles:exa@1`,M0=g(`name`),N0=g(`profile_url`),P0=g(`job_title`),F0=g(`company_name`),I0=g(`company_region`),L0=g(`exa_match_evaluation`),R0=r.object({search_id:r.literal(j0),connector:Ts.nullable().optional(),config:r.object({limit:N({path:`config.limit`,sectionKey:`general`,max:100,min:1,groupPath:`config.general`,description:``,label:`Limit number of search results`}).default(10),output_fields:P(r.object({[M0.name]:A({fieldName:M0.name}),[N0.name]:A({fieldName:N0.name}),[P0.name]:A({fieldName:P0.name}),[F0.name]:A({fieldName:F0.name}),[I0.name]:A({fieldName:I0.name}),[L0.name]:A({fieldName:L0.name})})),filters:r.object({query:Vu({path:`config.filters.query`,sectionKey:`config.filters`,placeholder:`e.g. Software engineers in San Francisco`,groupPath:`config.filters.query`,rows:5,label:`Search description in natural language`,minLength:10,maxLength:2e4})})})}),z0={default:{input:[{fields:[]}]}},B0=class extends e1{searchId=j0;schema=R0;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[M0.name]:this.catalogOutput(M0),[N0.name]:this.catalogOutput(N0),[P0.name]:this.catalogOutput(P0),[F0.name]:this.catalogOutput(F0),[I0.name]:this.catalogOutput(I0),[L0.name]:this.catalogOutput(L0)}}getConnectionsRequirements(){return[{provider:`exa`,rateLimitOperation:`exa_websets`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return z0}},V0=R0,H0={searchId:j0,billableOperation:`people-profiles-exa`,baseSearch:t1(`people:profiles:exa@1`),label:`People finder (websets)`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Semantic AI search for people profiles. This search can take several minutes.`,tags:[V.COMPANY_PROFILES],docPath:n1(j0),cost:{mode:`per_result`,creditsPerResult:2},provider:`exa`,defaultPayload:{search_id:j0,connector:null,config:{limit:10,output_fields:{name:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},company_name:{enabled:!0,alias:``},company_region:{enabled:!0,alias:``},exa_match_evaluation:{enabled:!1,alias:``}},filters:{query:``}}}},U0=`people:profiles:icypeas@1`,W0=g(`name`),G0=g(`job_title`),K0=g(`profile_headline`),q0=g(`company_website_url`),J0=g(`company_profile_url`),Y0=g(`profile_url`),X0=g(`icypeas_person_match`),Z0=r.object({search_id:r.literal(U0),connector:Ts.nullable().optional(),config:r.object({limit:N({path:`config.limit`,sectionKey:`general`,max:5e4,min:1,groupPath:`config.general`,description:``,label:`Limit number of search results`}).default(100),output_fields:P(r.object({[W0.name]:A({fieldName:W0.name}),[G0.name]:A({fieldName:G0.name}),[K0.name]:A({fieldName:K0.name}),[q0.name]:A({fieldName:q0.name}),[J0.name]:A({fieldName:J0.name}),[Y0.name]:A({fieldName:Y0.name}),[X0.name]:A({fieldName:X0.name})})),filters:r.object({firstname:k({path:`config.filters.firstname`,sectionKey:`config.filters`,includeLabel:`First names to include`,excludeLabel:`First names to exclude`,description:``,placeholder:``,groupPath:`config.filters.personal_information`,maxItems:200}).optional(),lastname:k({path:`config.filters.lastname`,sectionKey:`config.filters`,includeLabel:`Last names to include`,excludeLabel:`Last names to exclude`,description:``,placeholder:``,groupPath:`config.filters.personal_information`,maxItems:200}).optional(),currentJobTitle:k({path:`config.filters.currentJobTitle`,sectionKey:`config.filters`,includeLabel:`Current job titles to include`,excludeLabel:`Current job titles to exclude`,description:``,placeholder:``,groupPath:`config.filters.job_information`,maxItems:200}).optional(),currentEmployersWebsiteUrls:k({groupPath:`config.filters.job_information`,path:`config.filters.currentEmployersWebsiteUrls`,sectionKey:`config.filters`,description:``,includeLabel:`Include current employer domains`,excludeLabel:`Exclude current employer domains`,maxItems:100}).optional(),pastEmployersWebsiteUrls:k({groupPath:`config.filters.job_information`,path:`config.filters.pastEmployersWebsiteUrls`,sectionKey:`config.filters`,description:``,includeLabel:`Past employers website URLs to include`,excludeLabel:`Past employers website URLs to exclude`,maxItems:100}).optional(),pastJobTitle:k({path:`config.filters.pastJobTitle`,sectionKey:`config.filters`,includeLabel:`Past job titles to include`,excludeLabel:`Past job titles to exclude`,description:``,placeholder:``,groupPath:`config.filters.job_information`,maxItems:200}).optional(),currentCompanyName:k({path:`config.filters.currentCompanyName`,sectionKey:`config.filters`,includeLabel:`Companies to include`,excludeLabel:`Companies to exclude`,description:``,placeholder:``,groupPath:`config.filters.company_information`,maxItems:200}).optional(),pastCompanyName:k({path:`config.filters.pastCompanyName`,sectionKey:`config.filters`,includeLabel:`Past employers to include`,excludeLabel:`Past employers to exclude`,description:``,placeholder:``,groupPath:`config.filters.company_information`,maxItems:200}).optional(),school:k({path:`config.filters.school`,sectionKey:`config.filters`,includeLabel:`Schools to include`,excludeLabel:`Schools to exclude`,label:``,description:``,placeholder:``,groupPath:`config.filters.education`,maxItems:200}).optional(),location:k({path:`config.filters.location`,sectionKey:`config.filters`,includeLabel:`Locations to include`,excludeLabel:`Locations to exclude`,description:`Filter by location`,placeholder:`e.g., US, FR, New York`,groupPath:`config.filters.geografic`,maxItems:200}).optional(),languages:k({path:`config.filters.languages`,sectionKey:`config.filters`,includeLabel:`Languages to include`,excludeLabel:`Languages to exclude`,description:`ex. EN, ES`,groupPath:`config.filters.languages`,maxItems:200}).optional(),skills:k({path:`config.filters.skills`,sectionKey:`config.filters`,includeLabel:`Skills to include`,excludeLabel:`Skills to exclude`,description:``,placeholder:``,groupPath:`config.filters.skills`,maxItems:200}).optional(),keyword:k({path:`config.filters.keyword`,sectionKey:`config.filters`,includeLabel:`Keywords to include`,excludeLabel:`Keywords to exclude`,description:``,placeholder:`CEO, Sales, Scrum`,groupPath:`config.filters.general_search`,maxItems:200}).optional()}).check(e=>{Q$(e.value)&&e.issues.push({code:`custom`,message:`The filters object cannot be empty. You must set at least one filter.`,input:e.value})})})}),Q0={default:{input:[{fields:[{outputField:`profile_url`}]}]}},$0=class extends e1{searchId=U0;schema=Z0;payload;constructor(e){super(),this.payload=this.validatePayload(e)}getRawOutputFields(){return{[W0.name]:this.catalogOutput(W0),[G0.name]:this.catalogOutput(G0),[K0.name]:this.catalogOutput(K0),[q0.name]:this.catalogOutput(q0),[J0.name]:this.catalogOutput(J0),[Y0.name]:this.catalogOutput(Y0),[X0.name]:this.catalogOutput(X0)}}getConnectionsRequirements(){return[{provider:`icypeas`,rateLimitOperation:`icypeas_lead_database`,rateLimitRatio:1,allowManagedConnection:!0}]}getDedupConfig(){return Q0}},e2=Z0,t2={searchId:U0,billableOperation:`people-profiles-icypeas`,provider:`icypeas`,baseSearch:t1(U0),label:`Find people profiles`,categories:[`people`],hasManagedConnection:!0,allowsUserConnection:!0,lifecycle:null,description:`Search a filter-based, general-purpose lead database with people profiles.`,tags:[V.PEOPLE_PROFILES],docPath:n1(U0),cost:{mode:`per_result`,creditsPerResult:.4},defaultPayload:{search_id:U0,connector:null,config:{limit:100,output_fields:{company_profile_url:{enabled:!0,alias:``},company_website_url:{enabled:!0,alias:``},job_title:{enabled:!0,alias:``},name:{enabled:!0,alias:``},profile_headline:{enabled:!0,alias:``},profile_url:{enabled:!0,alias:``},icypeas_person_match:{enabled:!0,alias:``}},filters:{currentCompanyName:{include:[],exclude:[]},currentEmployersWebsiteUrls:{include:[],exclude:[]},pastEmployersWebsiteUrls:{include:[],exclude:[]},currentJobTitle:{include:[],exclude:[]},firstname:{include:[],exclude:[]},keyword:{include:[],exclude:[]},languages:{include:[],exclude:[]},lastname:{include:[],exclude:[]},location:{include:[],exclude:[]},pastCompanyName:{include:[],exclude:[]},pastJobTitle:{include:[],exclude:[]},school:{include:[],exclude:[]},skills:{include:[],exclude:[]}}}}},n2={"people:profiles:crustdata@1":O0,"companies:profiles:crustdata@1":d1,"companies:profiles:exa@1":C1,"people:profiles:exa@1":B0,"people:profiles:icypeas@1":$0,"companies:profiles:icypeas@1":L1,"people:employees:leadmagic@1":_0,"people:profiles:clado@1":Y1,"people:profiles:clado@2":s0},r2={"people:profiles:crustdata@1":k0,"companies:profiles:crustdata@1":f1,"companies:profiles:exa@1":w1,"people:profiles:exa@1":V0,"people:profiles:icypeas@1":e2,"companies:profiles:icypeas@1":R1,"people:employees:leadmagic@1":v0,"people:profiles:clado@1":X1,"people:profiles:clado@2":c0},i2={"people:profiles:crustdata@1":A0,"companies:profiles:crustdata@1":p1,"companies:profiles:exa@1":T1,"people:profiles:exa@1":H0,"people:profiles:icypeas@1":t2,"companies:profiles:icypeas@1":z1,"people:employees:leadmagic@1":y0,"people:profiles:clado@1":Z1,"people:profiles:clado@2":l0};function a2(e){return n2[e]}function o2(e){return r2[e]}function s2(e){return i2[e].defaultPayload}const c2=t.discriminatedUnion(`search_id`,Object.values(r2).map(e=>e)),l2=t.preprocess(e=>{if(!e||typeof e!=`object`||!(`search_id`in e))return e;let t=s2(e.search_id);return t?{...e,config:Vt(e?.config||{},t.config)}:e},c2);function u2(e){return Object.keys(i2[e].defaultPayload.config.output_fields)}const d2=ts,f2=t.object({value:Vo,status:Bo,type:Ro.optional(),format:is.nullable().optional(),resolved_by:ds.nullable().optional(),widgets:es.optional()}),p2=t.record(t.string(),f2.nullable()),m2=t.object({search:t.object({ref:Z$}),status:t.enum([`pending`,`processing`,`failed`,`completed`]),errors:t.array(d2),meta:t.object({providers:t.object({clado:t.object({pagination:t.object({search_id:t.string().optional(),offset:t.number().optional()})}).optional(),crustdata:t.object({pagination:t.object({cursor:t.string().nullable()})}).optional()}).optional()})}),h2=t.object({id:t.string(),status:t.enum([`completed`,`failed`,`pending`,`processing`]),results:t.array(p2),search_statuses:t.array(m2),organizationId:t.string()}).openapi(`SearchesResponseSchema`),g2=t.object({environment:t.enum([`production`,`sandbox`]).default(`production`),widgets:t.object({enabled:t.boolean().default(!1)}).default({enabled:!1})}),_2=g2.extend({dedup:t.object({strategy:t.enum([`default`]).nullable()}).default({strategy:null})}),v2=t.object({config:_2.default({dedup:{strategy:`default`},environment:`production`,widgets:{enabled:!1}}),searches:t.array(l2)}).openapi(`SearchesRequestSchema`);function y2(e){let t=e.split(`@`)[1];if(!t)throw Error(`No search version found`);return Number(t)}function b2(){let e={};for(let t of Object.values(i2)){let{baseSearch:n}=t;e[n]??=[],e[n].push(t)}return Object.entries(e).forEach(([t,n])=>{e[t]=n.sort((e,t)=>{let n=y2(e.searchId);return y2(t.searchId)-n})}),e}const x2=b2();function S2(e){let t=[];for(let[n,r]of Object.entries(x2)){let i=r[0];if(!i)throw Error(`Found empty entry`);i.lifecycle?.deprecatedOn&&e!==`deprecated`||(e===null||i.categories.includes(e))&&t.push({...i,baseSearch:n,latestVersion:y2(i.searchId)})}return t}function C2(e,t){let n=e.filter(e=>t===null?!0:e.categories.some(e=>e===t)),r={},i={},a={};for(let e of n){if(e.lifecycle&&e.lifecycle.deprecatedOn){i.Deprecated??=[],i.Deprecated.push(e.searchId);continue}a[e.provider]??=[],a[e.provider].push(e.searchId);for(let t of u2(e.searchId))r[t]??=[],r[t].push(e.searchId);for(let t of e.tags)i[t]??=[],i[t].push(e.searchId)}return{searchIdsByOutputField:r,searchIdsByTag:i,searchIdsByProvider:a,sortedTagEntries:Object.entries(i).sort((e,t)=>e[0].localeCompare(t[0])),sortedOutputFieldEntries:Object.entries(r).sort((e,t)=>e[0].localeCompare(t[0])),sortedProviderEntries:Object.entries(a).sort((e,t)=>e[0].localeCompare(t[0])),searchEntriesByBaseSearch:x2}}function w2(e){return i2[e]}function T2(e){let t=w2(e);return{[t.provider]:t.cost.mode===`per_result`?t.cost.creditsPerResult:t.cost.mode===`per_search`?t.cost.creditsPerSearch:t.cost.creditsPerPage}}function E2(e){return e.map(e=>({public_id:`sandbox-${e}`,provider:e,is_default:!0}))}function D2(e){return E2(GG(e).allowedUserConnectionProviders)}function O2(e){return E2([AG(e).provider])}function k2(e){return E2([w2(e).provider])}const A2=[{id:`people`,label:`People`,color:`#8B7DFF`,order:0},{id:`companies`,label:`Companies`,color:`#10B981`,order:1},{id:`data`,label:`Data`,color:`#F59E0B`,order:2},{id:`deprecated`,label:`Deprecated`,color:`#94A3B8`,order:3}],j2=new Map(A2.map(e=>[e.id,e]));function M2(e){return j2.get(e)}function N2(){return A2}const P2={"people:profiles:amplemarket@1":[{search_id:`people:profiles:amplemarket@1`,config:{page_number:1,limit:50,filters:{current_employer_names:{include:[],exclude:[]},current_departments:[],current_employer_locations:{include:[],exclude:[]},person_names:[],current_employer_founded_year:{min:null,max:null},current_employer_estimated_revenue:[],current_employer_investors:[],current_employer_open_position_titles:[],current_job_functions:[],current_locations:{include:[`Berlin`],exclude:[]},current_employer_linkedin_industries:[],current_employer_domains:{include:[],exclude:[]},current_seniority_levels:[],school_names:{include:[],exclude:[]},current_job_titles:[]}}}],"companies:profiles:amplemarket@1":[{search_id:`companies:profiles:amplemarket@1`,config:{page_number:1,limit:50,filters:{company_industries:{include:[],exclude:[]},company_names:{include:[`Microsoft`],exclude:[]},company_profile_urls:{include:[],exclude:[]},company_types:[],company_domains:{include:[],exclude:[]},customer_types:[],headcount_growth_l6m_in_percent:{min:null,max:null},founded_year:{min:null,max:null},revenue_groups:[],investors:[],keywords:{include:[],exclude:[]},open_position_titles:[],headcount:[],hq_locations:{include:[],exclude:[]}}}}],"people:profiles:crustdata@1":[{search_id:`people:profiles:crustdata@1`,config:{cursor:``,limit:10,filters:{locations:{include:[`Berlin`,`Germany`],exclude:[]},profile_headline_keywords:{include:[`Marketing`],exclude:[]},profile_summary_keywords:{include:[],exclude:[]},profile_languages:{include:[`English`],exclude:[]},languages:{include:[],exclude:[]},skills:{include:[`Python`,`Data Analysis`],exclude:[]},years_of_experience:[`1 to 2 years`],current_seniority_levels:{include:[`Senior`],exclude:[]},current_employers:{include:[],exclude:[]},current_employers_website_urls:{include:[],exclude:[]},current_job_titles:{include:[`Software Engineer`],exclude:[]},current_employers_linkedin_industries:{include:[],exclude:[]},years_at_current_company:[`1 to 2 years`],previous_seniority_levels:{include:[],exclude:[]},previous_employers:{include:[],exclude:[]},previous_employers_website_urls:{include:[],exclude:[]},previous_employers_linkedin_industries:{include:[],exclude:[]},previous_job_titles:{include:[],exclude:[]},certifications:{include:[],exclude:[]},honors:{include:[],exclude:[]},recently_changed_jobs:!1,fields_of_study:{include:[],exclude:[]},degree_names:{include:[],exclude:[]},school_names:{include:[],exclude:[]},current_school_names:{include:[],exclude:[]},extracurricular_activities:{include:[],exclude:[]}}}}],"companies:profiles:crustdata@1":[{search_id:`companies:profiles:crustdata@1`,config:{cursor:``,limit:10,filters:{hq_locations:{include:[`San Francisco, CA`],exclude:[]},crunchbase_categories:{include:[`Artificial Intelligence`],exclude:[]},crunchbase_investors:{include:[],exclude:[]},tracxn_investors:{include:[],exclude:[]},company_types:{include:[],exclude:[]},linkedin_industries:{include:[`Technology`],exclude:[]},markets:{include:[],exclude:[]},linkedin_categories:{include:[],exclude:[]},headcount:{include:[],exclude:[]},headcount_growth_l6m_in_percent:[],revenue_in_usd:{from:1e4,to:1e6},last_funding_type:{include:[],exclude:[]},last_funding_amount:{from:null,to:null},number_of_followers:[],follower_growth_l6m_in_percent:[],profile_summary_keywords:{include:[],exclude:[]},competitor_domains:{include:[`google.com`],exclude:[]}}}}],"people:profiles:amplemarket@2":[{search_id:`people:profiles:amplemarket@2`,config:{page_number:1,limit:50,filters:{current_employer_names:{include:[],exclude:[]},current_departments:[],current_employer_locations:{include:[],exclude:[]},person_name:``,current_employer_founded_year:{min:null,max:null},current_employer_estimated_revenue:[],current_employer_investors:[],current_employer_open_position_titles:[],current_job_functions:[],current_locations:{include:[`Berlin`],exclude:[]},current_employer_linkedin_industries:[],current_employer_domains:{include:[],exclude:[]},current_seniority_levels:[],school_names:[],current_job_titles:[]}}}],"companies:profiles:amplemarket@2":[{search_id:`companies:profiles:amplemarket@2`,config:{page_number:1,limit:50,filters:{company_industries:{include:[],exclude:[]},company_names:{include:[`Microsoft`],exclude:[]},company_profile_urls:{include:[],exclude:[]},company_types:[],company_domains:{include:[],exclude:[]},customer_types:[],headcount_growth_l6m_in_percent:{min:null,max:null},founded_year:{min:null,max:null},revenue_groups:[],investors:[],keywords:{include:[],exclude:[]},open_position_titles:[],headcount:[],hq_locations:{include:[],exclude:[]}}}}],"people:profiles:crustdata@2":[{search_id:`people:profiles:crustdata@2`,config:{cursor:``,limit:10,filters:{locations:{include:[`Berlin`,`Germany`],exclude:[]},profile_headline_keywords:{include:[`Marketing`],exclude:[]},profile_summary_keywords:{include:[],exclude:[]},profile_languages:{include:[`English`],exclude:[]},languages:{include:[],exclude:[]},skills:{include:[`Python`,`Data Analysis`],exclude:[]},years_of_experience:[`1 to 2 years`],current_seniority_levels:{include:[`Senior`],exclude:[]},current_employer_names:{include:[],exclude:[]},current_employer_domains:{include:[],exclude:[]},current_job_titles:{include:[`Software Engineer`],exclude:[]},current_employer_industries:{include:[],exclude:[]},years_at_current_company:[`1 to 2 years`],previous_seniority_levels:{include:[],exclude:[]},previous_employer_names:{include:[],exclude:[]},previous_employer_domains:{include:[],exclude:[]},previous_employer_industries:{include:[],exclude:[]},previous_job_titles:{include:[],exclude:[]},certifications:{include:[],exclude:[]},honors:{include:[],exclude:[]},recently_changed_jobs:!1,fields_of_study:{include:[],exclude:[]},degree_names:{include:[],exclude:[]},school_names:{include:[],exclude:[]},current_school_names:{include:[],exclude:[]},extracurricular_activities:{include:[],exclude:[]},post_processing_exclude_company_profile_urls:[`https://www.linkedin.com/company/acme`],post_processing_exclude_company_names:[`Acme`]}}}],"companies:profiles:crustdata@2":[{search_id:`companies:profiles:crustdata@2`,config:{cursor:``,limit:10,filters:{hq_locations:{include:[`San Francisco, CA`],exclude:[]},crunchbase_categories:{include:[`Artificial Intelligence`],exclude:[]},crunchbase_investors:{include:[],exclude:[]},tracxn_investors:{include:[],exclude:[]},company_types:{include:[],exclude:[]},linkedin_industries:{include:[`Technology`],exclude:[]},markets:{include:[],exclude:[]},linkedin_categories:{include:[],exclude:[]},headcount:{include:[],exclude:[]},headcount_growth_l6m_in_percent:[],revenue_in_usd:{from:1e4,to:1e6},last_funding_type:{include:[],exclude:[]},last_funding_amount:{from:null,to:null},number_of_followers:[],follower_growth_l6m_in_percent:[],profile_summary_keywords:{include:[],exclude:[]},competitor_domains:{include:[`google.com`],exclude:[]}}}}],"companies:profiles:crustdata@3":[{search_id:`companies:profiles:crustdata@3`,config:{cursor:``,limit:10,filters:{hq_countries:{include:[`USA`],exclude:[]},industries:{include:[`Software Development`],exclude:[]},categories:{include:[`Artificial Intelligence (AI)`],exclude:[]},headcount_brackets:[`51-200`,`201-500`],engineering_headcount_brackets:[`11-50`],headcount_growth_l6m_in_percent:{from:10,to:null},last_funding_round_types:[`series_a`,`series_b`],last_funding_within:`l12m`,investors:{include:[`Sequoia Capital`],exclude:[]},technologies:{include:[`Salesforce`],exclude:[]}}}}],"people:profiles:crustdata@3":[{search_id:`people:profiles:crustdata@3`,config:{cursor:``,limit:10,filters:{locations:{include:[`Berlin, Germany`],exclude:[]},profile_headline_keywords:{include:[`Marketing`],exclude:[]},skills:{include:[`Python`,`Data Analysis`],exclude:[]},languages:{include:[`English`],exclude:[]},current_employment_job_titles:{include:[`Software Engineer`],exclude:[]},current_employment_job_functions:[`Engineering`],current_employment_seniority_levels:[`Senior`,`Director`],current_employer_headcount_brackets:[`51-200`],current_employment_tenure_brackets:[`1 to 2 years`],total_years_of_experience_brackets:[`3 to 5 years`]}}}],"posts:content:crustdata@1":[{search_id:`posts:content:crustdata@1`,config:{limit:10,filters:{keywords:[`LLM Evaluation`,`RAG`],keyword_operator:`OR`,date_posted:`past-month`,content_types:[`videos`],author_industries:[`Software Development`]}}}],"companies:entitysearch:parallel@1":[{search_id:`companies:entitysearch:parallel@1`,config:{objective:`AI startups in Europe that raised a Series A in 2024`,limit:100}}],"people:entitysearch:parallel@1":[{search_id:`people:entitysearch:parallel@1`,config:{objective:`Heads of Engineering at Series B fintech companies in the US`,limit:100}}],"people:eventguests:luma@1":[{search_id:`people:eventguests:luma@1`,connector:{strategy:`first`,connections:[]},config:{limit:100,cursor:``,output_fields:{name:{enabled:!0,alias:``},email:{enabled:!0,alias:``},luma_id:{enabled:!0,alias:``},registered_at:{enabled:!0,alias:``},luma_event_guest_match:{enabled:!0,alias:``}},filters:{event_id:`evt-sandbox-1`,approval_status:`approved`}}}],"people:channelmembers:slack@1":[{search_id:`people:channelmembers:slack@1`,connector:{strategy:`first`,connections:[]},config:{channel_id:`C0123456789`,include_bots:!1,member_types:[`internal`],limit:200,cursor:``,output_fields:{name:{enabled:!0,alias:``},email:{enabled:!0,alias:``},slack_user_id:{enabled:!0,alias:``},slack_member_match:{enabled:!0,alias:``}}}},{search_id:`people:channelmembers:slack@1`,connector:{strategy:`first`,connections:[]},config:{channel_id:`C0EXTSHARED1`,include_bots:!1,member_types:[`external`],limit:200,cursor:``,output_fields:{name:{enabled:!0,alias:``},email:{enabled:!0,alias:``},slack_user_id:{enabled:!0,alias:``},slack_member_match:{enabled:!0,alias:``}}}}],"events:googlecalendar@1":[{search_id:`events:googlecalendar@1`,connector:{strategy:`first`,connections:[]},config:{calendar_id:`primary`,time_window:`n7d`,event_types:[`meeting`],limit:100,cursor:``,output_fields:{google_calendar_event_id:{enabled:!0,alias:``},event_title:{enabled:!0,alias:``},attendee_emails:{enabled:!0,alias:``},calendar_event_match:{enabled:!0,alias:``}}}}],"sheet:rows@1":[{search_id:`sheet:rows@1`,connector:{strategy:`first`,connections:[]},config:{sheet:`demo-leads`,limit:100,cursor:``,include_metadata:!1}}],"contacts:hubspot@1":[{search_id:`contacts:hubspot@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`hubspot_portal-1234567`}]},config:{query:``,custom_properties:[{property:`product_signup_date`}],filters:{logic:`and`,conditions:[{property:`value`,field_name:`lifecyclestage`,operator:`eq`,value:`customer`}]},lifecycle_stage:``,owner:``,created_within:`l24h`,modified_within:``,limit:100,cursor:``}}],"companies:hubspot@1":[{search_id:`companies:hubspot@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`hubspot_portal-1234567`}]},config:{query:``,custom_properties:[],filters:null,domains:{include:[`acme.com`],exclude:[]},owner:``,created_within:`l24h`,modified_within:``,limit:100,cursor:``}}],"deals:hubspot@1":[{search_id:`deals:hubspot@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`hubspot_portal-1234567`}]},config:{query:``,custom_properties:[],filters:{conditions:null,pipeline:``,deal_stage:``,status:`open`,owner:``,created_within:``,modified_within:``},limit:100,cursor:``}}],"owners:hubspot@1":[{search_id:`owners:hubspot@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`hubspot_portal-1234567`}]},config:{email:``,include_archived:!1,owned_object_type:`companies`,min_owned_count:50,include_ownership_counts:!0,limit:500}}],"people:attio@1":[{search_id:`people:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{custom_properties:[{property:`job_title`}],filters:{logic:`and`,conditions:[{property:`value`,field_name:`email_addresses.email_domain`,operator:`eq`,value:`acme.com`}]},has_email:!0,saved_view:``,created_within:`l24h`,limit:100,page_number:1}}],"companies:attio@1":[{search_id:`companies:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{custom_properties:[],filters:null,domains:{include:[`acme.com`],exclude:[]},domain_match:`root_domain`,saved_view:``,created_within:``,limit:100,page_number:1}}],"deals:attio@1":[{search_id:`deals:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{custom_properties:[],filters:{logic:`and`,conditions:[{property:`value`,field_name:`value`,operator:`gte`,value:1e4}]},stage:[],owner:``,saved_view:``,created_within:``,limit:100,page_number:1}}],"records:attio@1":[{search_id:`records:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{object:`people`,custom_properties:[],filters:null,saved_view:``,created_within:``,limit:100,page_number:1}}],"entries:attio@1":[{search_id:`entries:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{list:`sales`,custom_properties:[{property:`parent.domains`}],filters:null,stage:[],saved_view:``,created_within:``,limit:100,page_number:1}}],"query:attio@1":[{search_id:`query:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{query:`SELECT name, domains FROM companies`,limit:100,page_number:1}}],"users:attio@1":[{search_id:`users:attio@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`attio_workspace-1a2b3c`}]},config:{include_suspended:!1,limit:100,page_number:1}}],"bucket:entries@1":[{search_id:`bucket:entries@1`,connector:{strategy:`first`,connections:[]},config:{bucket:`crm-contacts`,limit:100,cursor:``,include_metadata:!1}}],"contacts:salesforce@1":[{search_id:`contacts:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{custom_properties:[{property:`Lead_Score__c`},{property:`Account.Industry`}],filters:{logic:`and`,conditions:[{property:`value`,field_name:`Title`,operator:`contains`,value:`engineer`}]},list_view:``,email_domains:{include:[`acme.com`],exclude:[]},has_email:!1,owner:``,created_within:`l7d`,modified_within:``,limit:100,cursor:``}}],"leads:salesforce@1":[{search_id:`leads:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{custom_properties:[],filters:null,list_view:``,lead_status:``,include_converted:!1,owner:``,created_within:`l30d`,modified_within:``,limit:200,cursor:``}}],"accounts:salesforce@1":[{search_id:`accounts:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{custom_properties:[{property:`AnnualRevenue`}],filters:null,list_view:``,domains:{include:[`acme.com`,`globex.com`],exclude:[]},industry:``,owner:``,created_within:``,modified_within:``,limit:100,cursor:``}}],"opportunities:salesforce@1":[{search_id:`opportunities:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{custom_properties:[],filters:{logic:`and`,conditions:[{property:`value`,field_name:`CloseDate`,operator:`lte`,value:`2026-09-30`}]},list_view:``,status:`open`,stage:``,amount:{min:1e4,max:null},owner:``,created_within:``,modified_within:`l30d`,limit:100,cursor:``}}],"users:salesforce@1":[{search_id:`users:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{owned_object:`accounts`,min_owned_count:10,include_ownership_counts:!0,include_inactive:!1,custom_properties:[],limit:100,cursor:``}}],"query:salesforce@1":[{search_id:`query:salesforce@1`,connector:{strategy:`first`,connections:[{type:`vault`,connection:`salesforce_org-00DKJ0000001abc2AE`}]},config:{soql:`SELECT OwnerId, Owner.Name, COUNT(Id) cnt FROM Account GROUP BY OwnerId, Owner.Name HAVING COUNT(Id) > 10`,limit:100,page_number:1}}],"query:postgres@1":[{search_id:`query:postgres@1`,connector:{strategy:`first`,connections:[]},config:{query:`SELECT id, name, email FROM contacts ORDER BY id`,limit:100,page_number:1}}],"query:databricks@1":[{search_id:`query:databricks@1`,connector:{strategy:`first`,connections:[]},config:{query:`SELECT id, name, email FROM samples.tpch.customer ORDER BY id`,limit:100,page_number:1}}]};function F2(e,t,n){if(t==null)return{};try{let r=Do(e,n)?.getStaticWidgets?.(t),i=fK(n,t);return Jt(qt(r||{},{display_value:i?{label:i}:void 0}))}catch(e){return console.warn(`Failed to generate UI props: ${e}`),{}}}var I2=class extends nD{constructor(e){super(e.map(e=>e.message).join(`, `)||`Unknown`),this.errors=e}};function L2(e){let t=[];for(let n of e){if(n instanceof e1){t.push(n);continue}let e=n.search_id,r=a2(e);if(!r)throw Error(`Unknown pipe: ${n.search_id}`);let i=new r(l2.parse(n));t.push(i)}return t}function R2(e){try{return L2(e.searches)}catch(e){throw e instanceof I2?e:new rD([tD.ValidationFailed({error:e})])}}const z2=[{id:`data_hygiene`,label:`Data hygiene`,color:`#10B981`,order:0},{id:`enrichment`,label:`Enrichment`,color:`#3B82F6`,order:1},{id:`internal`,label:`Internal`,color:`#94A3B8`,order:2},{id:`deprecated`,label:`Deprecated`,color:`#94A3B8`,order:3}],B2=new Map(z2.map(e=>[e.id,e]));function V2(e){return B2.get(e)}function H2(){return z2}const U2={"rows:add@1":[{effect_id:`rows:add@1`,connector:null,config:{input:[{name:`Jane Doe`,profile_url:`https://www.linkedin.com/in/some-profile`,company_domain:`acme.com`}],allow_field_creation:!0,allow_empty:!1}}],"rows:dedupe@1":[{effect_id:`rows:dedupe@1`,connector:null,config:{fields:[{field_name:`work_email`}],match:`all`,strategy:`keep_oldest`}}],"rows:duplicate@1":[{effect_id:`rows:duplicate@1`,connector:null,config:{}}],"rows:enrich@1":[{effect_id:`rows:enrich@1`,connector:null,config:{pipes:[],selection:{type:`window`,count:2}}}],"sheet:reset@1":[{effect_id:`sheet:reset@1`,connector:null,config:{}}],"fields:deletesparse:input@1":[{effect_id:`fields:deletesparse:input@1`,connector:null,config:{fields:[{field_name:`company_raw_address`},{field_name:`company_founded_year`}],probe_size:1e3,threshold_in_percent:25}}]};var W2=class extends Error{errors;constructor(e){super(e.join(`
|
|
146
|
+
`)),this.name=`SheetEffectValidationError`,this.errors=e}};function G2({effects:e,validationContext:t,schemaInputs:n}){let r=[],i=[],a=[],o=[];e.some(e=>e.effect_id===`pipe:remove@1`)&&e.length>1&&r.push(`pipe:remove@1 must be the only effect in a run.`);let s={...n,validationContext:t},c=t,l=new Set(Object.keys(t.fieldDefinitions)),u=t.fieldDefinitions,d=null;return e.forEach((e,t)=>{let n=[],f=WY(e.effect_id);if(!f){n.push(`unknown effect "${e.effect_id}"`),K2(i,r,t,e.effect_id,n);return}let p;try{p=new f(e)}catch(a){n.push(a.message),K2(i,r,t,e.effect_id,n);return}let ee=p.getFieldReferences().filter(e=>!l.has(e));if(ee.length>0){let e=`references fields that do not exist at this step: ${ee.join(`, `)}`;d&&(e+=`. These may be produced only at run time by "${d}" earlier in this chain — commit that effect first, then add the effects that use its columns in a follow-up run.`),n.push(e)}let te=e.config?.where;if(te&&Array.isArray(te.conditions))for(let e of te.conditions)e.property===`value`&&u[e.field_name]?.type===`json`&&n.push(`where-condition on '${e.field_name}' compares a json field's VALUE — json fields support STATUS conditions only (property: "status"), or extract the nested property into a flat field first.`);try{let{next:e}=p.evolveSchema(s);s=e,c=e.validationContext,l=new Set(Object.keys(e.validationContext.fieldDefinitions)),u=e.validationContext.fieldDefinitions}catch(e){if(e instanceof rD)for(let t of e.appErrors)n.push(t.message);else n.push(e.message)}d===null&&p.producesDynamicFields()&&(d=e.effect_id),a.push(p),o.push(e),K2(i,r,t,e.effect_id,n)}),{valid:r.length===0,steps:i,errors:r,instances:a,payloads:o,resultingFieldDefinitions:c.fieldDefinitions}}function K2(e,t,n,r,i){e.push({index:n,effect_id:r,valid:i.length===0,errors:i});for(let e of i)t.push(`effects[${n}] (${r}): ${e}`)}function q2({effects:e,validationContext:t,schemaInputs:n}){let r=G2({effects:e,validationContext:t,schemaInputs:n});if(!r.valid)throw new W2(r.errors);return{instances:r.instances,payloads:r.payloads}}function J2(e){let t=(e??[]).map(e=>Y2(e));if(t.length===0)return{title:`Effect run`,description:`An effect run with no steps.`};let[n]=t;return t.length===1&&n?{title:n.title,description:n.description}:{title:`${t.length} steps: ${t.map(e=>e.title).join(` · `)}`,description:t.map(e=>e.description).join(` · `)}}function Y2(e){let t=e.effect_id,n=L(t),r=e.config??{};switch(n){case`pipe:add`:{let e=X2(r.pipe_payload);return{title:e?`Added pipe ${e}`:`Added pipe`,description:e?`Added the pipe ${e} to the sheet.`:`Added a pipe to the sheet.`}}case`pipe:update`:{let e=X2(r.pipe_payload);return{title:e?`Updated pipe ${e}`:`Updated pipe`,description:e?`Updated the configuration of pipe ${e}.`:`Updated a pipe.`}}case`pipe:remove`:return{title:`Removed pipe`,description:`Removed a pipe from the sheet.`};case`fields:add`:return{title:`Added field`,description:`Added a field to the sheet.`};case`fields:patch`:return{title:`Edited field`,description:`Edited a field on the sheet.`};case`fields:remove`:return{title:`Removed fields`,description:`Removed fields from the sheet.`};case`rows:add`:{let e=Array.isArray(r.input)?r.input.length:void 0;return{title:e==null?`Added rows`:`Added ${e} ${$2(e,`row`)}`,description:e==null?`Added rows to the sheet.`:`Added ${e} ${$2(e,`row`)} to the sheet.`}}case`rows:remove`:return{title:`Removed rows`,description:`Removed rows from the sheet.`};case`rows:dedupe`:return{title:`Removed duplicate rows`,description:`Removed duplicate rows from the sheet.`};case`rows:duplicate`:return{title:`Duplicated rows`,description:`Duplicated rows in the sheet.`};case`rows:enrich`:return{title:`Enriched rows`,description:`Ran enrichment pipes over rows.`};case`rows:filter:prompt`:return{title:`AI-filtered rows`,description:`Filtered rows with an AI prompt.`};case`rows:import`:return{title:`Imported rows`,description:`Imported rows into the sheet.`};case`row:update`:return{title:`Updated row`,description:`Updated a single row.`};case`search:run`:{let e=Z2(r.search_payload);return{title:e?`Ran search ${e}`:`Ran search`,description:e?`Ran the search ${e} and appended its results.`:`Ran a search and appended its results.`}}case`sheet:export`:return{title:`Exported sheet`,description:`Exported the sheet.`};case`sheet:reset`:return{title:`Reset sheet`,description:`Reset the sheet to its empty state.`};case`env:change`:return{title:`Changed environment`,description:`Switched the sheet environment.`};case`timetravel:create`:return{title:`Created restore point`,description:`Snapshotted the sheet state.`};case`timetravel:travel`:return{title:`Restored to a previous point`,description:`Restored the sheet to a previous point in time.`};default:{let e=Q2(t);return{title:e??t,description:e??t}}}}function X2(e){if(e&&typeof e==`object`){let t=e.pipe_id;if(typeof t==`string`&&t.length>0)return t}}function Z2(e){if(e&&typeof e==`object`){let t=e.search_id;if(typeof t==`string`&&t.length>0)return t}}function Q2(e){try{return GY(e)?.label}catch{return}}function $2(e,t){return e===1?t:`${t}s`}function e4(e){if(e instanceof I)return e;let t=e.effect_id,n=WY(t);if(!n)throw Error(`Unknown effect: ${e.effect_id}`);return new n(ZY.parse(e))}const t4={none:0,verified:1,partner:2};function n4(e){return e.isPartner?`partner`:e.isVerified?`verified`:`none`}function r4(e,t){return e?t4[t]>=t4[e]:!0}function i4(e){return RG[e]?.accessLevel}function a4(e){return gG[e]?.accessLevel}function o4(e){return GZ(e)?.accessLevel}const s4=/[\\^$.+()|[\]{}]/g,c4=new Map;function l4(e){let t=c4.get(e);if(t)return t;let n=``;for(let t=0;t<e.length;t++){let r=e[t];r===`*`?n+=`.*`:r===`?`?n+=`.`:n+=r.replace(s4,`\\$&`)}let r=RegExp(`^${n}$`);return c4.set(e,r),r}function u4(e,t){return l4(t).test(e)}function d4(e,t){if(!t||t.length===0)return!1;for(let n of t)if(u4(e,n))return!0;return!1}function f4(e,t){if(!t)return!0;let{includes:n,excludes:r}=t;return!(n&&n.length>0&&!d4(e,n)||r&&r.length>0&&d4(e,r))}function p4(e,t){return f4(e,t?.providers)}function m4(e,t){if(!t)return!0;if(!f4(e,t.pipes))return!1;if(t.providers){let n=YG(e);if(n.length===0)return!0;if(!n.some(e=>p4(e,t)))return!1}return!0}function h4(e,t,n){return t?!(!f4(e,t.searches)||n!==void 0&&!p4(n,t)):!0}function g4(e,t,n){return t?!(!f4(e,t.searchesMulti)||n!==void 0&&!p4(n,t)):!0}function _4(e,t){return t?e.filter(e=>m4(e.pipeId,t)):e.slice()}function v4(e,t){return t?e.filter(e=>h4(e.searchId,t,e.provider)):e.slice()}function y4(e,t){return t?e.filter(e=>g4(e.searchId,t,e.provider)):e.slice()}function b4(e){return e.toLowerCase().split(/[^\p{L}\p{N}]+/u).filter(Boolean)}function x4(e){return b4(e)}function S4(e){return e?e.flatMap(b4):[]}const C4={label:{prefix:100,exact:120},labelFirstWordBonus:40,keyword:{prefix:60,exact:70},tag:{prefix:40,exact:45},provider:{prefix:35,exact:40},id:{prefix:30,exact:35},description:{prefix:5,exact:6},exactLabelBonus:200},w4=C4;function T4(e){let t=b4(e.label);return{labelWords:t,keywordWords:S4(e.keywords),tagWords:S4(e.tags),providerWords:S4(e.providers),idWords:b4(e.id),descriptionWords:e.description?b4(e.description):[],normalizedLabel:t.join(` `)}}function E4(e,t,n){let r=0;for(let i of t){let t=i===e?n.exact:i.startsWith(e)?n.prefix:0;t>r&&(r=t)}return r}function D4(e,t){let n=0;for(let r=0;r<t.length;r++){let i=t[r],a=i===e?w4.label.exact:i.startsWith(e)?w4.label.prefix:0;a>0&&r===0&&(a+=w4.labelFirstWordBonus),a>n&&(n=a)}return n}function O4(e,t){let n=b4(t);if(n.length===0)return 0;let r=0;for(let t of n){let n=Math.max(D4(t,e.labelWords),E4(t,e.keywordWords,w4.keyword),E4(t,e.tagWords,w4.tag),E4(t,e.providerWords,w4.provider),E4(t,e.idWords,w4.id),E4(t,e.descriptionWords,w4.description));if(n===0)return 0;r+=n}return e.normalizedLabel===n.join(` `)&&(r+=w4.exactLabelBonus),r}function k4(e){return e.keywords}function A4(e){let t=new Set(e.deprecatedProviders),n=Array.from(new Set([...e.managedProviders,...e.allowedUserConnectionProviders])).filter(e=>!t.has(e));return T4({label:e.label,id:e.pipeId,keywords:k4(e),tags:e.tags,providers:n,description:e.description})}function j4(e){return T4({label:e.label,id:e.searchId,keywords:k4(e),tags:e.tags,providers:[e.provider],description:e.description})}function M4(e){return T4({label:e.label,id:e.searchId,keywords:k4(e),tags:e.tags,providers:[e.provider],description:e.description})}function N4(e){return T4({label:e.label,id:e.effectId,keywords:k4(e),tags:e.tags,providers:Array.from(new Set([...e.managedProviders,...e.allowedUserConnectionProviders])),description:e.description})}function P4(e){let t=Object.values(e.billableOperations).map(e=>e.allowManagedConnection?e.credits.default:0);return Math.min(...t)}function F4(e){return Math.min(e.cost.mode===`per_result`?e.cost.creditsPerResult:e.cost.mode===`per_search`?e.cost.creditsPerSearch:e.cost.creditsPerPage)}function I4(e){return e.cost.allowManagedConnection?e.cost.credits.default:0}function L4(e){let t=Object.values(e.billableOperations).map(e=>e?.allowManagedConnection?e.credits.default:0);return t.length?Math.min(...t):0}function R4(e,t){let n=Math.max(1,t.minItems),r=Math.max(n,t.maxItems),i=[],a=[],o=0;for(let s of e){a.push(s),o+=t.sizeOf(s);let e=a.length>=r,c=o>=t.targetSize&&a.length>=n;(e||c)&&(i.push(a),a=[],o=0)}return a.length>0&&i.push(a),i}function z4(e){let t=uK(e);if(!t)return``;try{return te(t)||new URL(t).hostname}catch{return``}}const B4=[`http://`,`https://`,`mailto:`],V4=new Set([`*`,`_`,`~`,"`",`[`,`]`,`(`,`)`,`\\`]);function H4(e){return e?U4(e):[]}function U4(e){let t=[],n=``,r=0,i=()=>{n&&=(t.push({type:`text`,value:n}),``)};for(;r<e.length;){let a=e[r],o=e[r+1];if(a===`\\`&&o!==void 0&&V4.has(o)){n+=o,r+=2;continue}if(a==="`"){let n=W4(e,r+1,"`");if(n>-1){i(),t.push({type:`code`,value:e.slice(r+1,n)}),r=n+1;continue}}if(a===`*`&&o===`*`){let n=W4(e,r+2,`**`);if(n>r+2){i(),t.push({type:`strong`,children:U4(e.slice(r+2,n))}),r=n+2;continue}}if(a===`~`&&o===`~`){let n=W4(e,r+2,`~~`);if(n>r+2){i(),t.push({type:`del`,children:U4(e.slice(r+2,n))}),r=n+2;continue}}if(a===`*`&&o!==`*`){let n=W4(e,r+1,`*`);if(n>r+1){i(),t.push({type:`em`,children:U4(e.slice(r+1,n))}),r=n+1;continue}}if(a===`[`){let n=W4(e,r+1,`]`);if(n>-1&&e[n+1]===`(`){let a=W4(e,n+2,`)`);if(a>-1){let o=e.slice(n+2,a);if(B4.some(e=>o.startsWith(e))){i(),t.push({type:`link`,href:o,children:U4(e.slice(r+1,n))}),r=a+1;continue}}}}n+=a,r+=1}return i(),t}function W4(e,t,n){let r=t;for(;r<e.length;){if(e[r]===`\\`&&r+1<e.length){r+=2;continue}if(G4(e,r,n))return r;r+=1}return-1}function G4(e,t,n){if(t+n.length>e.length)return!1;for(let r=0;r<n.length;r++)if(e[t+r]!==n[r])return!1;return!0}export{Nc as AI_MODELS,Pc as AI_MODEL_CATALOG,zc as AI_MODEL_RAW_USD,tQ as ATTIO_APP_SCOPES,hf as ATTIO_ATTRIBUTE_TYPE_TABLE,sn as ATTIO_COMPANIES_STANDARD_PROPERTIES,cn as ATTIO_DEALS_STANDARD_PROPERTIES,on as ATTIO_PEOPLE_STANDARD_PROPERTIES,QZ as ATTIO_SCOPES_ACTIVITY_READ,XZ as ATTIO_SCOPES_LISTS_READ,ZZ as ATTIO_SCOPES_MEMBERS_READ,YZ as ATTIO_SCOPES_RECORDS_READ,$Z as ATTIO_SCOPES_RECORDS_WRITE,eQ as ATTIO_SCOPES_SQL,ln as ATTIO_STANDARD_PROPERTIES_BY_OBJECT,Ui as B2BPostMatchSchema,Ke as BUCKET_TYPES,Ze as BucketClaimConfigSchema,Qe as BucketCounterConfigSchema,$e as BucketEventCounterConfigSchema,Ye as BucketFieldDefSchema,Je as BucketFieldTypeSchema,Xe as BucketSchemaSchema,In as CALENDAR_EVENT_TYPES,S$ as CALLOUT_VARIANTS,C4 as CATALOG_SEARCH_WEIGHTS,Ba as CATEGORY_META,xr as COMPANY_STANDARD_PROPERTIES,br as CONTACT_STANDARD_PROPERTIES,Fc as CREDIT_USD_VALUE,qe as CURRENT_BUCKET_TYPE_VERSION,gs as CatalogSchemaRefSchema,FY as ConciseFieldValueSchema,Ns as ConditionBlockSchema,ht as ConditionEvaluationError,mt as ConditionFieldNotFoundError,bs as ConditionOperatorsSchema,or as CrustdataCompanyMatchV2Schema,Sr as DEAL_STANDARD_PROPERTIES,Vc as DEFAULT_MODEL_COPY_WRITING,Hc as DEFAULT_MODEL_FAST_REASONING,Bc as DEFAULT_MODEL_REASONING,zt as Effect,Dt as EffectAllSelectionSchema,Et as EffectRowsSelectionSchema,kt as EffectSelectionSchema,Ot as EffectWindowSelectionSchema,$Y as EffectsRequestSchema,eX as EffectsResponseSchema,Bt as EffectsRunStatusSchema,tX as EffectsValidateRequestSchema,rX as EffectsValidateResponseSchema,nX as EffectsValidateStepSchema,ps as ExpandedFieldValueSchema,Pp as FIELD_PLACEHOLDERS,pD as FORMULA_RESULT_TYPES,as as FieldAnnotationSchema,bK as FieldAnnotations,os as FieldAnnotationsSchema,Mo as FieldNameSchema,ns as FieldReasonSchema,Vo as FieldValueSchema,$X as FormStoreSchema,aZ as HIGH_VOLUME_PRICING_MIN_CREDITS,fd as INPUT_GROUP_KEY,ys as JSONExtractSchema,Ho as JSONMetaSchema,Ic as MANAGED_TOKEN_MARGIN,eJ as MANUAL_DEFAULT,Wa as MAX_SIGNALS_PER_SCAN,Ds as NoConnectorSchema,It as ObjectHasher,Ts as OptionalConnectorSchema,_c as PIPE0_DEFAULT_CONNECTION_PUBLIC_ID,Fo as PIPE_IDS,WZ as PLAYBOOK_IDS,EG as PaginationTypeSchema,Vi as PersonProfileFieldSchema,oN as PersonWorkemailWaterfall1Entry,aN as PersonWorkemailWaterfall1PayloadSchema,iN as PersonWorkemailWaterfall1PipeClass,B as Pipe,nD as Pipe0Error,Io as PipeIdSchema,UG as PipePayloadSchema,Fs as PipeRunIfSchema,rD as PipelineValidationError,Po as PipesEnvironmentSchema,ts as PipesErrorSchema,_s as PipesFieldDefinitionSchema,vs as PipesFieldDefinitionsSchema,ms as PipesInputSchema,tK as PipesRequestConfigSchema,nK as PipesRequestSchema,eK as PipesResponseSchema,WG as ProcessedPipePayloadSchema,bG as ProcessedSearchPayloadSchema,l2 as ProcessedSearchesPayloadSchema,ZY as ProcessedSheetEffectPayloadSchema,No as ProviderNameSchema,rs as RECORD_FIELD_FORMATS,Lo as RECORD_FIELD_TYPES,Ua as REJOIN_GAP_DAYS,St as REPORT_EFFECT_IDS,C$ as REPORT_ROW_CAP,x$ as REPORT_TAGS,ud as RESERVED_FIELD_NAMES,xs as RUN_IF_OPERATOR_LABELS,Cs as RUN_IF_STATUS_OPERATORS,Ss as RUN_IF_VALUE_OPERATORS,Qq as RUN_STATUS_OPTIONS,PY as RecordActionDetailSchema,us as RecordClaimedBySchema,LY as RecordDiffEntrySchema,is as RecordFieldFormatSchema,fs as RecordFieldSchema,Bo as RecordFieldStatusSchema,Ro as RecordFieldTypeSchema,zo as RecordIdSchema,ds as RecordResolvedBySchema,hs as RecordSchema,k$ as ReportChartDataSchema,M$ as ReportDataSchema,j$ as ReportDataValueSchema,FQ as ReportEffect,Ct as ReportEffectIdSchema,p$ as ReportEffectPayloadSchema,r$ as ReportEffectStepSummarySchema,m$ as ReportEffectsRequestSchema,h$ as ReportEffectsResponseSchema,E$ as ReportMetricDataSchema,A$ as ReportStatsDataSchema,O$ as ReportTableDataSchema,eD as RequestValidationError,Es as RequiredConnectorSchema,ks as RunIfStatusOperatorsSchema,As as RunIfStatusValueSchema,Os as RunIfValueOperatorsSchema,Zq as RunStatusSchema,Zi as SALESFORCE_ACCOUNT_STANDARD_PROPERTIES,Yi as SALESFORCE_CONTACT_STANDARD_PROPERTIES,pQ as SALESFORCE_FIELD_TYPE_TABLE,Xi as SALESFORCE_LEAD_STANDARD_PROPERTIES,Qi as SALESFORCE_OPPORTUNITY_STANDARD_PROPERTIES,ea as SALESFORCE_PERSON_STANDARD_PROPERTIES,ta as SALESFORCE_STANDARD_PROPERTIES_BY_OBJECT,$i as SALESFORCE_USER_STANDARD_PROPERTIES,$q as SCHEDULED_DEFAULT,X$ as SEARCHES_IDS,rL as SEARCH_IDS,xi as SENIORITY_LEVELS,wt as SHEET_EFFECT_IDS,La as SIGNAL_CATEGORIES,Ha as SIGNAL_LABELS,za as SIGNAL_SCOPES,Ra as SIGNAL_SUBCATEGORIES,Va as SIGNAL_TAXONOMY,Ia as SIGNAL_TYPES,XF as SIGNAL_WINDOW_DAYS,ss as SafeFieldAnnotationPatchSchema,Z as Search,SG as SearchErrorSchema,iL as SearchIdSchema,vG as SearchPayloadSchema,xG as SearchRequestSchema,DG as SearchResponseSchema,CG as SearchResultFieldSchema,wG as SearchResultSchema,d2 as SearchesErrorSchema,Z$ as SearchesIdSchema,c2 as SearchesPayloadSchema,g2 as SearchesRequestBaseConfigSchema,v2 as SearchesRequestSchema,h2 as SearchesResponseSchema,f2 as SearchesResultFieldSchema,p2 as SearchesResultSchema,e1 as SearchesSearch,m2 as SearchesStatusSchema,I as SheetEffect,Tt as SheetEffectIdSchema,YY as SheetEffectPayloadSchema,BY as SheetEffectStepSummarySchema,W2 as SheetEffectValidationError,zY as SheetEffectsCountsSchema,RY as SheetEffectsDiffSchema,P$ as TAG_ALLOWED_ATTRS,N$ as TAG_DATA_KIND,Lc as TOKEN_BLOCK_SIZE_INPUT,Rc as TOKEN_BLOCK_SIZE_OUTPUT,Wm as TYPES_TO_FORMATS,$c as TokenBlockAccumulator,IY as UpdatedActionDetailSchema,Ps as ValueConditionBlockSchema,XX as WidgetsByKindSchema,es as WidgetsSchema,z as all,ec as analyzeLiquidTemplate,hZ as analyzePipeFit,jc as and,gd as any,b$ as applyDataPatch,y$ as applyReportEdits,Y$ as applyReportUpdate,xQ as assertSoqlIdentifier,ZG as assertUniqueBillableOperations,h as autocomplete,Wi as b2bPostMatchExample,et as bucketConfigSchemaFor,st as bucketSchemaFieldNames,ct as bucketSchemasEqual,ot as bucketSlugValue,Xc as buildAiModelTokenBillableOperations,un as buildAttioProjectionSet,T4 as buildCatalogSearchTarget,SK as buildDependencyGraph,ep as buildInputRequirementFromTemplates,PQ as buildKeysetPredicate,hX as buildResultColumns,na as buildSalesforceFetchSet,qa as buildSignalId,TQ as buildSoqlInList,Yc as buildTokenNote,G as catalogInput,R4 as chunkBySize,At as classifyEffectChainKind,sQ as classifySalesforceError,Pt as cleanObject,uK as cleanUrl,lK as cleanWebsiteUrl,tp as collectConstantReferencesFromTemplates,LX as collectPipeContextSelectFields,yd as collectRequirementFields,HX as collectSearchContextSelectFields,q as collectSecretReferencesFromTemplates,KX as collectSheetEffectContextSelectFields,l4 as compilePattern,EX as computeTenure,Vt as configDefaults,qc as creditsPerBlock,sr as crustdataCompanyMatchV2ExampleValue,ft as decodeBucketContract,mX as dedupeColumnNames,tt as defaultBucketConfig,pd as deriveGroupedFieldOrder,QE as describeRequirement,to as detectPersonProfileSignals,iQ as domainToWebsiteVariants,dt as encodeBucketContract,Kt as entityLogoFavicon,Gt as entityLogoProfessionalProfileUrl,wQ as escapeSoqlLikeValue,SQ as escapeSoqlString,Td as estimateGuardCredits,xt as evaluateConditionBlock,dX as explainEffectIds,lQ as extractDuplicateInfo,Hl as extractFormMetadata,R as field,Eo as fieldBehaviorCatalog,To as fieldCatalog,XE as fieldNameStr,pK as fieldTypeFromValue,RZ as fieldsToObject,_4 as filterPipeEntries,v4 as filterSearchEntries,y4 as filterSearchesEntries,nQ as findMissingAttioScopes,NQ as formatSoqlBooleanValue,jQ as formatSoqlDateValue,MQ as formatSoqlNumberValue,qY as getAgentAllowedEffectIds,d$ as getAgentAllowedReportEffectIds,Wc as getAiModelConnectionRequirements,Uc as getAiModelProviders,Zc as getAiModelTokenBillingKeys,Jc as getAiModelTokenCredits,Gc as getAllAiModelProviders,gf as getAttioAttributeTypeRule,Lt as getBaseEffectName,U as getBasePipeName,L as getBaseSheetEffectName,ko as getCatalogFieldOrder,zG as getDefaultOutputFields,YG as getDefaultPipeProviders,NG as getDefaultSearchOutputFields,u2 as getDefaultSearchesOutputFields,aK as getDependentPipeNamesForInputProperty,oK as getDependentPipeNamesForPipe,z4 as getDomain,Rt as getEffectConfigHash,hK as getExpansionState,Ut as getFaviconUrlGoogle,g as getField,Do as getFieldBehavior,Bm as getFieldDisplayLabel,_K as getFieldWidgets,MG as getInitialSearchTableData,S2 as getInitialSearchesTableData,sX as getInitialSheetEffectTableData,QG as getInitialTableData,Cd as getInputHash,tl as getJsonMetaForFieldDef,I4 as getLoweestSearchCreditAmount,F4 as getLoweestSearchesCreditAmount,P4 as getLowestPipeCreditAmount,L4 as getLowestSheetEffectCreditAmount,jo as getOutputFieldInfoFromDef,i4 as getPipeAccessLevel,KG as getPipeBillableOperationDef,rZ as getPipeCategoryEntries,nZ as getPipeCategoryEntry,BG as getPipeClass,Sd as getPipeConfigHash,VG as getPipeDefaultPayload,W as getPipeDocsURI,GG as getPipeEntry,jX as getPipeFormMask,iK as getPipeInstances,RX as getPipePayloadFormConfig,HG as getPipePayloadSchema,A4 as getPipeSearchTarget,qG as getPipeVersion,o4 as getPlaybookAccessLevel,GZ as getPlaybookEntry,qZ as getPlaybooksForPrimitive,X as getProviderBillableOperation,Ed as getProviderCreditsFromBillableOperations,Zt as getProviderEntry,_X as getReadableFieldStatus,s$ as getReportEffectClass,c$ as getReportEffectEntry,u$ as getReportEffectInstance,l$ as getReportEffectPayloadSchema,mQ as getSalesforceFieldTypeRule,E2 as getSandboxConnections,D2 as getSandboxConnectionsForPipe,O2 as getSandboxConnectionsForSearch,k2 as getSandboxConnectionsForSearches,a4 as getSearchAccessLevel,N2 as getSearchCategoryEntries,M2 as getSearchCategoryEntry,_G as getSearchClass,yG as getSearchDefaultPayload,AG as getSearchEntry,F2 as getSearchFieldWidgets,MX as getSearchFormMask,rY as getSearchInstance,VX as getSearchPayloadFormConfig,TG as getSearchPayloadSchema,j4 as getSearchSearchTarget,PG as getSearchTableDataAggregates,OG as getSearchVersion,a2 as getSearchesClass,s2 as getSearchesDefaultPayload,w2 as getSearchesEntry,vK as getSearchesFieldWidgets,L2 as getSearchesInstances,o2 as getSearchesPayloadSchema,M4 as getSearchesSearchTarget,C2 as getSearchesTableDataAggregates,y2 as getSearchesVersion,Bi as getSeniorityEmojiFromTitle,zi as getSeniorityLevelFromTitle,H2 as getSheetEffectCategoryEntries,V2 as getSheetEffectCategoryEntry,WY as getSheetEffectClass,rd as getSheetEffectConfigHash,XY as getSheetEffectDefaultPayload,GY as getSheetEffectEntry,NX as getSheetEffectFormMask,e4 as getSheetEffectInstance,GX as getSheetEffectPayloadFormConfig,KY as getSheetEffectPayloadSchema,N4 as getSheetEffectSearchTarget,rK as getStartingCostPerPipesProvider,FG as getStartingCostPerSearchProvider,T2 as getStartingCostPerSearchesProvider,$G as getTableDataAggregates,sZ as getTier,gK as getUnexpandedValue,Wt as ifDefined,F as inputFields,VZ as inputFromRecord,BZ as inputFromRecordArr,zZ as inputFromRecords,qX as inputGuards,JY as isAgentAllowedEffect,f$ as isAgentAllowedReportEffect,Ao as isCatalogField,Mt as isEmptyValue,r4 as isEntryAccessible,Oo as isFieldName,uZ as isHighVolumeEligible,m4 as isPipeAllowed,p4 as isProviderAllowed,vd as isRequirementMet,bd as isRequirementSatisfiedByRecord,dd as isReservedFieldName,h4 as isSearchAllowed,g4 as isSearchesAllowed,OQ as isSoqlDateLiteral,Kc as isTokenBilledOperations,bQ as isValidSalesforceId,yQ as isValidSoqlIdentifier,yc as joinConnectionString,dZ as listHighVolumeEligibleOperations,lZ as listTiers,wd as managedDefaultCreditOf,at as mappedBucketFieldNames,Od as markRecordFieldAsComplete,jd as markRecordFieldAsFailed,Ad as markRecordFieldAsNoResult,kd as markRecordFieldAsPending,Nd as markRecordFieldAsProcessing,Md as markRecordFieldAsSkipped,d4 as matchesAny,u4 as matchesPattern,Bl as mergeFormConfig,qt as mergeWidgets,ql as noConnectorInput,pX as normalizeColumnName,rQ as normalizeDomain,_d as optional,C as optionalConnectorInput,Mc as or,n4 as orgAccessLevelFromFlags,P as outputFields,JZ as parseAttributeRef,$s as parseLiquidTemplate,Ks as parseOutputTagArgs,EZ as parseRecordValueOrError,Cc as parseRelaxedObject,G$ as parseReportSegments,H4 as parseRichText,cQ as parseSalesforceErrorBody,fX as parseSheetChainDetailed,H as perUnit,Hi as personProfileMatchExample1,RG as pipeCatalog,eZ as pipeCategoryCatalog,IG as pipeClassCatalog,LG as pipePayloadSchemaCatalog,au as pipesAliasableFieldsSelectInput,_u as pipesAsyncIncludeExcludeSelectInput,zl as pipesConditionInput,ku as pipesContextSelectInput,yu as pipesDateRangeInput,bu as pipesDestinationFieldConfig,su as pipesFieldSelectInput,ru as pipesFieldsSelectInput,uu as pipesIncludeExcludeInput,gu as pipesIncludeExcludeSelectInput,w as pipesInputField,Eu as pipesIntInput,ml as pipesJsonExtractionInput,Ou as pipesJsonSchemaField,wu as pipesLLMSelectInput,hu as pipesLooseObjectInput,du as pipesMultiCreateInput,Tu as pipesMultiSelectInput,Du as pipesNumberInput,E as pipesOptionalBooleanInput,pu as pipesOrderedMultiCreateInput,D as pipesOutputField,v as pipesPayloadRegistry,Wl as pipesPromptInput,fu as pipesPropertyListInput,T as pipesProviderInput,vu as pipesRangeInput,Ll as pipesRowConditionInput,b as pipesRunIfInput,Cu as pipesSelectInput,iZ as pipesSnippetCatalog,mu as pipesTaggedOrderedMultiCreateInput,x as pipesTaggedTextInput,Gl as pipesTemplateInput,xu as pipesTextInput,Su as pipesTextareaInput,ou as pipesTypedFieldsSelectInput,J as placeholder,UZ as playbookCatalog,HZ as processInputObjects,DP as projectOptionsDef,EP as projectScopedSheetOptionsDef,rt as providedCreationName,nt as providedCreationPolicy,Xt as providerCatalog,Y as rateLimitRatioFallingProgression,cq as renameFieldInPipePayloads,_f as renderAttioOperatorMatrix,Zs as renderLiquidTemplate,Qs as renderLiquidTemplateSync,hQ as renderSalesforceOperatorMatrix,o$ as reportEffectCatalog,i$ as reportEffectClassCatalog,a$ as reportEffectPayloadSchemaCatalog,S as requiredConnectorInput,Dd as requirementToInputFields,$E as requirementUnmetMessage,_ as requiresConnection,Ac as requiresField,AX as resolveFormMask,it as resolveMappingEntry,CP as roundrobinBucketSlug,SP as roundrobinFilterKey,q$ as runReportEffectsValidation,G2 as runSheetEffectsValidation,tJ as runStatusesToQueueConfig,gQ as salesforceRecordUrl,nd as schemaEvolutionFrom,O4 as scoreCatalogSearch,gG as searchCatalog,A2 as searchCategoryCatalog,mG as searchClassCatalog,hG as searchPayloadSchemaCatalog,P2 as searchSnippetCatalog,M as searchesAsyncIncludeExcludeSelectInput,Wu as searchesAsyncMultiSelectInput,i2 as searchesCatalog,n2 as searchesClassCatalog,Au as searchesConditionInput,Uu as searchesContextSelectInput,Lu as searchesDateRangeInput,Fu as searchesExactRangeInput,k as searchesIncludeExcludeInput,Pu as searchesIncludeExcludeSelectInput,N as searchesIntInput,Nu as searchesMinMaxIntInput,O as searchesMultiCreateInput,j as searchesMultiSelectInput,Gu as searchesNumberField,Ru as searchesOptionalBooleanInput,Xl as searchesOptionalConnectorInput,zu as searchesOptionalNullableBooleanInput,Mu as searchesOrderedMultiCreateInput,A as searchesOutputField,y as searchesPayloadRegistry,r2 as searchesPayloadSchemaCatalog,ju as searchesPropertyListInput,Iu as searchesRangeInput,Yl as searchesRequiredConnectorInput,Hu as searchesSelectInput,Bu as searchesTextInput,Vu as searchesTextareaField,Si as seniorityLevelSchema,AP as sheetColumnsOptionsDef,UY as sheetEffectCatalog,z2 as sheetEffectCategoryCatalog,VY as sheetEffectClassCatalog,HY as sheetEffectPayloadSchemaCatalog,U2 as sheetEffectSnippetCatalog,Rl as sheetEffectsConditionInput,$u as sheetEffectsContextSelectInput,cu as sheetEffectsFieldsSelectInput,Xu as sheetEffectsIntInput,ed as sheetEffectsLLMSelectInput,Yu as sheetEffectsMultiSelectInput,eu as sheetEffectsNoConnectorInput,Qu as sheetEffectsOptionalBooleanInput,$l as sheetEffectsOptionalConnectorInput,Zu as sheetEffectsOptionalIntInput,nl as sheetEffectsPayloadRegistry,Ql as sheetEffectsRequiredConnectorInput,td as sheetEffectsSearchPayloadInput,Ju as sheetEffectsSelectInput,lu as sheetEffectsSelectionInput,Ku as sheetEffectsTextInput,qu as sheetEffectsTextareaInput,TP as sheetOptionsDef,CQ as soqlStringLiteral,Um as sortObjectKeys,JG as sortPipeCatalogByBasePipe,kG as sortSearchCatalogByBaseSearch,b2 as sortSearchesCatalogByBaseSearch,aX as sortSheetEffectCatalogByBaseEffect,vc as splitConnectionString,Ge as staticAutocomplete,m as staticOptions,Hm as stringify,Yt as stripStaticWidgets,J2 as summarizeEffectRun,g$ as summarizeReportEffectRun,wX as tagPrimaryCurrentEducation,TX as tagPrimaryCurrentEmployment,Jt as tagStaticWidgets,Vm as testPrint,cZ as tierAtOrBelow,Qc as tokenEstimate,x4 as tokenizeCatalogQuery,kZ as transformIntoResponse,pt as tryDecodeBucketContract,wc as tryParseRelaxedObject,CK as validatePipesOrError,J$ as validateReportChainAgainstVersion,K$ as validateReportMarkdown,R2 as validateSearches,q2 as validateSheetEffectsOrError,tD as validationErrorMessages,aQ as websiteToDomain};
|