@pipe0/base 1.0.8 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -72,7 +72,7 @@ How do you...`]}},crustdata_post_list:{label:`Crustdata Post list`,type:`json`,f
72
72
  `)};let o=e.connectionSecrets.attio;if(!o)return null;let s={},c=[],l=await Nf(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 Nf(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 Nf(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 Nf(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 Nf(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 Nf(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(Vf).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:`,Mf()),{summary:c.join(`
73
73
  `),data:s}}const qf=_(`attio_record_id`),Jf=_(`attio_activities_found_count`),Yf=_(`attio_last_activity_date`),Xf=_(`attio_activities`),Zf=`activities:find:attio@1`,Qf=r.object({pipe_id:r.literal(Zf),run_if:x(),connector:C(),config:r.object({object:Uu({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:v(`attio`),optionsDef:If}),input_fields:F(r.object({[qf.name]:T({fieldName:qf.name})})),include:zu({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.`,guide:`Notes and meetings (Call Intelligence) carry what happened; tasks are open or 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:Lu({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:Bu({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.`,guide:`Maximum 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({[Jf.name]:D({fieldName:Jf.name}),[Yf.name]:D({fieldName:Yf.name}),[Xf.name]:D({fieldName:Xf.name})}))})}),$f=e=>R(G(qf,e)),ep={"activities-find-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},tp=class extends B{pipeId=Zf;payload;payloadSchema=Qf;billableOperations=ep;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`activities-find-attio-v1-attio`)}getInputRequirement(){return $f(this.payload.config)}getRawOutputFields(){return{[Jf.name]:this.catalogOutput(Jf),[Yf.name]:this.catalogOutput(Yf),[Xf.name]:this.catalogOutput(Xf)}}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 Kf(e,{objects:n?[n]:`discover`})}},np=Qf,rp={pipeId:Zf,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Zf),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(Zf),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:ep,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:$f(null),defaultPayload:{pipe_id:Zf,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}}}}},ip=_(`salesforce_record_id`),ap=_(`salesforce_activities_found_count`),op=_(`salesforce_last_activity_date`),sp=_(`salesforce_activities`),cp=`activities:find:salesforce@1`,lp=r.object({pipe_id:r.literal(cp),run_if:x(),connector:C(),config:r.object({type:Lu({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:Lu({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:Lu({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:Tu({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).",guide:"Task/Event field API names added to each activity JSON under `custom_properties` — standard timeline keys are already top-level."}),limit:Bu({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.`,guide:`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({[ip.name]:T({fieldName:ip.name})})),output_fields:P(r.object({[ap.name]:D({fieldName:ap.name}),[op.name]:D({fieldName:op.name}),[sp.name]:D({fieldName:sp.name})}))})}),up=e=>R(G(ip,e)),dp={"activities-find-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},fp=class extends B{pipeId=cp;payload;payloadSchema=lp;billableOperations=dp;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`salesforce`]}estimateBillableOperations(e){return H(e,`activities-find-salesforce-v1-salesforce`)}getInputRequirement(){return up(this.payload.config)}getRawOutputFields(){return{[ap.name]:this.catalogOutput(ap),[op.name]:this.catalogOutput(op),[sp.name]:this.catalogOutput(sp)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return gf(e,{objects:[`Task`,`Event`],includeTaskMeta:!0})}},pp=lp,mp={pipeId:cp,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(cp),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(cp),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:dp,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:up(null),defaultPayload:{pipe_id:cp,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 hp(e,t={}){let n=t.expectedType??`string`,r=new Map;for(let t of e){if(!t)continue;let e;try{e=fc(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=>Zd(t,e)?.type||n,format:null};i.push(t.required?R(r):jd(r))}return z(...i)}function q(e){let t=new Set;for(let n of e)if(n)try{let e=fc(n);for(let n of e.secrets)t.add(n)}catch{}return[...t]}function gp(e){let t=new Set;for(let n of e)if(n)try{let e=fc(n);for(let n of e.constants)t.add(n)}catch{}return[...t]}const _p=[{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`}],vp={note:`0-46`,task:`0-27`,call:`0-48`,meeting:`0-47`,email:`0-49`},yp=e=>{let t=new Set;for(let n of e)if(n)try{let e=fc(n);for(let n of Object.keys(e.inputs))t.add(n)}catch{}return[...t].map(e=>jd({name:e,resolvedName:e,label:e,description:``,type:t=>Zd(t,e)?.type||`string`,format:null}))};async function bp(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 xp(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 xp((await bp(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 xp([..._p,{label:`Demo · Domain map (custom)`,value:`2-000001`}],e);if(!t)throw new K.MissingSecretError({providerName:`hubspot`});let r=[];try{r=(await bp(t,`/crm-object-schemas/v3/schemas`)).results.map(e=>({label:`${e.labels?.singular||e.name} (custom)`,value:e.objectTypeId}))}catch{r=[]}return xp([..._p,...r],e)},widgets:{provider_logo:{provider:`hubspot`}}},wp={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?[]:xp((await bp(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`}}},Tp={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 xp((await bp(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`}}},Ep=(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 xp(((await bp(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`}}}),Dp={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 bp(t,`/crm/v3/pipelines/deals`);return xp((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 Op(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
74
  `)};let i=e.connectionSecrets.hubspot;if(!i)return null;let a={},o=[];for(let[e,n]of t){let t=(await bp(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 bp(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 kp=_(`hubspot_object_id`),Ap=_(`hubspot_activity_result`),jp=`activity:log:hubspot@1`,Mp=(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.`)}},Np=r.object({pipe_id:r.literal(jp),run_if:x(),connector:C(),config:r.object({type:Lu({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:S({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:Iu({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:S({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.`,guide:`ISO timestamp or epoch ms — HubSpot requires one on every engagement. Empty = now.`}),record_object_type:Uu({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:v(`hubspot`),optionsDef:Cp}),owner:Uu({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.`,guide:`Assigns hubspot_owner_id. Empty = unassigned.`,enabledIf:v(`hubspot`),optionsDef:Tp}),values:Ou({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.",guide:`Blank values are skipped.`,keyLabel:`Property name`,valueLabel:`Value`,keyPlaceholder:`hs_task_status`,valuePlaceholder:`NOT_STARTED`,maxKeys:50}),input_fields:F(r.object({[kp.name]:T({fieldName:kp.name})})),output_fields:P(r.object({[Ap.name]:D({fieldName:Ap.name})}))}).check(e=>Mp(e,`values`))}),Pp=e=>R(G(kp,e)),Fp={"activity-log-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},Ip=class extends B{pipeId=jp;payload;payloadSchema=Np;billableOperations=Fp;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(Pp(this.payload.config),...yp(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[Ap.name]:this.catalogOutput(Ap)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_generic`,allowManagedConnection:!1}]}async getAgentContext(e){let t=this.payload.config.type,n=vp[t]??`0-46`;return Op(e,{objectTypes:[[`${t} engagement`,n]],writableOnly:!0})}},Lp=Np,Rp={pipeId:jp,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(jp),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(jp),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).",hasSideEffects:!0,billableOperations:Fp,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:Pp(null),defaultPayload:{pipe_id:jp,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}}}}},zp=_(`salesforce_record_id`),Bp=_(`salesforce_activity_result`),Vp=`activity:log:salesforce@1`,Hp=(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).`)}},Up=r.object({pipe_id:r.literal(Vp),run_if:x(),connector:C(),config:r.object({subject:S({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:Iu({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:Lu({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:Uu({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:v(`salesforce`),optionsDef:uf}),related_record:S({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:S({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.`,guide:`Due/logged date, YYYY-MM-DD. Empty = today.`}),owner:Uu({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.`,guide:`Assigns OwnerId. Empty = the connected user.`,enabledIf:v(`salesforce`),optionsDef:cf}),external_id_field:Uu({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:v(`salesforce`),optionsDef:df}),external_id_value:S({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:Ou({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.",guide:"Keys are Task field API names (e.g. `Priority`), custom fields included. Blank values are skipped.",keyLabel:`Field API name`,valueLabel:`Value`,keyPlaceholder:`Priority`,valuePlaceholder:`High`,maxKeys:50}),input_fields:F(r.object({[zp.name]:T({fieldName:zp.name})})),output_fields:P(r.object({[Bp.name]:D({fieldName:Bp.name})}))}).check(e=>Hp(e,`values`))}),Wp=e=>jd(G(zp,e)),Gp={"activity-log-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},Kp=class extends B{pipeId=Vp;payload;payloadSchema=Up;billableOperations=Gp;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(Wp(this.payload.config),...hf(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[Bp.name]:this.catalogOutput(Bp)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return gf(e,{objects:[`Task`],includeTaskMeta:!0,writableOnly:!0})}},qp=Up,Jp={pipeId:Vp,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Vp),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(Vp),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).",hasSideEffects:!0,billableOperations:Gp,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:Wp(null),defaultPayload:{pipe_id:Vp,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}}}}},Yp={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 Yp[e]}const Xp=`agent:run@1`,Zp=`agent-run-v1`,Qp=[{value:`web_researcher`,label:`Web researcher`,widgets:{emoji:{char:`🔎`}}}],$p={...cl(Zp),"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.`},"agent-run-v1-task-parallel":{allowManagedConnection:!0,provider:`parallel`,credits:{default:.5},mode:`always`,note:`Billed per deep-research task the agent delegates (multi-page server-side research).`}},em=r.object({pipe_id:r.literal(Xp),connector:w(),run_if:x(),config:r.object({agent_type:Lu({sectionKey:`general`,groupPath:`config.prompt`,path:`config.agent_type`,label:`Agent type`,defaultValue:`web_researcher`,options:[...Qp],required:!0}),prompt:nu({sectionKey:`general`,path:`config.prompt`,placeholder:J(`prompt`),groupPath:`config.prompt`,supportedTags:[`input`,`output`]}),model:Ru({sectionKey:`general`,label:`Model`,path:`config.model`,groupPath:`config.prompt`,billableOperations:$p,defaultValue:Qc})})}),tm=class extends B{pipeId=Xp;payload;payloadSchema=em;billableOperations=$p;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[...tl(this.payload.config.model),`parallel`]}estimateBillableOperations(e){return[...ul(e,{model:this.payload.config.model,prefix:Zp,inputTokens:2e4,outputTokens:1500}),{billableOperation:`agent-run-v1-search-parallel`,quantity:e.count*4},{billableOperation:`agent-run-v1-extract-parallel`,quantity:e.count*1},{billableOperation:`agent-run-v1-task-parallel`,quantity:e.count*1}]}getInputRequirement(){return hp([this.payload.config.prompt.template])}getSecretRequirements(){return q([this.payload.config.prompt.template])}getConstantRequirements(){return gp([this.payload.config.prompt.template])}getRawOutputFields(){let e=this.payload.config.prompt.template,t=this.payload.config.prompt.json_schemas??{},n={},r;try{r=fc(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[...nl(this.payload.config.model),{provider:`parallel`,rateLimitRatio:4,rateLimitOperation:`parallel_search_base`,allowManagedConnection:!0},{provider:`parallel`,rateLimitRatio:1,rateLimitOperation:`parallel_extract`,allowManagedConnection:!0},{provider:`parallel`,rateLimitRatio:1,rateLimitOperation:`parallel_task`,allowManagedConnection:!0}]}},nm=em,rm={pipeId:Xp,inputFieldMode:`config`,outputFieldMode:`config`,basePipe:U(Xp),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 (optionally scoped to specific domains), URL extraction, and a deep-research fallback, 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(Xp),defaultInputRequirement:null,billableOperations:$p,allowedUserConnectionProviders:[...rl(),`parallel`],managedProviders:[...rl(),`parallel`],deprecatedProviders:[],defaultPayload:{pipe_id:Xp,connector:null,run_if:null,config:{agent_type:`web_researcher`,model:Qc,prompt:{template:``,json_schemas:{}}}}},im=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.`})}),am=()=>r.string().nullable().default(``),om=e=>({requires:{connection:`pipe0`},enabledIf:v(`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`}}}),sm=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:om(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,y.add(t,i),t},cm={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`}]},lm=()=>Fu({label:`New bucket: name`,path:`config.new_bucket_name`,groupPath:`config.bucket_creation`,sectionKey:`general`,inputType:`text`,placeholder:`CRM contacts`,maxLength:120}).nullable().default(``),um=()=>({new_bucket_name:lm(),new_bucket_ttl_in_seconds:Bu({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:Lu({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:cm.on_own_entry}).default(`block`),new_bucket_missing_value_behavior:Lu({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:cm.on_missing}).default(`proceed`)}),dm=()=>({new_bucket_name:lm(),new_bucket_start:Bu({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:Bu({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)}),fm=()=>({new_bucket_name:lm()}),pm={provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_api_operation`,allowManagedConnection:!0};function mm(e){let t=pt(e.contract),n=e.entry_fields??[],r=[hp([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=>Zd(e,n)?.type||`unknown`,format:null})});return i.length>0&&r.push(Ad(...i)),z(...r)}function hm(e){return q([ot(e.bucket)])}function gm(e){return gp([ot(e.bucket)])}const _m=`bucket:check@1`,vm=_(`found_in_bucket`),ym=r.object({pipe_id:r.literal(_m),connector:C(),run_if:x(),config:r.object({bucket:sm(`claim`),entry_fields:im,contract:am(),output_fields:P(r.object({[vm.name]:D({fieldName:vm.name})}))})}),bm={"bucket-check-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-check-v1-pipe0`)}getInputRequirement(){return mm(this.payload.config)}getSecretRequirements(){return hm(this.payload.config)}getConstantRequirements(){return gm(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{[vm.name]:this.catalogOutput(vm)}}getConnectionsRequirements(){return[pm]}},Sm=ym,Cm={pipeId:_m,basePipe:U(_m),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(_m),tags:[V.FIELDS],keywords:[`suppression`,`do not contact`,`blocklist`,`lookup`,`exclude`,`gate`,`dedupe`],billableOperations:bm,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:_m,connector:{strategy:`first`,connections:[]},run_if:null,config:{bucket:``,entry_fields:[],contract:``,output_fields:{found_in_bucket:{alias:``,enabled:!0}}}}},wm=`bucket:claim@1`,Tm=_(`is_claim_successful`),Em=r.object({pipe_id:r.literal(wm),connector:C(),run_if:x(),config:r.object({bucket:sm(`claim`),entry_fields:im,contract:am(),...um(),allow_bucket_creation:Nu({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({[Tm.name]:D({fieldName:Tm.name})}))})}),Dm={"bucket-claim-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},Om=class extends B{pipeId=wm;payload;payloadSchema=Em;billableOperations=Dm;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`bucket-claim-v1-pipe0`)}getInputRequirement(){return mm(this.payload.config)}getSecretRequirements(){return hm(this.payload.config)}getConstantRequirements(){return gm(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{[Tm.name]:this.catalogOutput(Tm)}}getConnectionsRequirements(){return[pm]}},km=Em,Am={pipeId:wm,basePipe:U(wm),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(wm),tags:[V.FIELDS],keywords:[`dedupe`,`deduplicate`,`duplicate`,`guard`,`reserve`,`idempotent`,`lock`],billableOperations:Dm,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:wm,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}}}}},jm=`bucket:count@1`,Mm=_(`bucket_counter`),Nm=r.object({pipe_id:r.literal(jm),connector:C(),run_if:x(),config:r.object({bucket:sm(`counter`),entry_fields:im,contract:am(),...dm(),allow_bucket_creation:Nu({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({[Mm.name]:D({fieldName:Mm.name})}))})}),Pm={"bucket-count-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},Fm=class extends B{pipeId=jm;payload;payloadSchema=Nm;billableOperations=Pm;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`bucket-count-v1-pipe0`)}getInputRequirement(){return mm(this.payload.config)}getSecretRequirements(){return hm(this.payload.config)}getConstantRequirements(){return gm(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{[Mm.name]:this.catalogOutput(Mm)}}getConnectionsRequirements(){return[pm]}},Im=Nm,Lm={pipeId:jm,basePipe:U(jm),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(jm),tags:[V.FIELDS],keywords:[`counter`,`sequence`,`increment`,`numbering`,`bucket`],billableOperations:Pm,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:jm,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}}}}},Rm=`bucket:countif@1`,zm=_(`bucket_event_count`),Bm=_(`bucket_event_last_at`),Vm=r.object({pipe_id:r.literal(Rm),connector:C(),run_if:x(),config:r.object({bucket:sm(`event_counter`),entry_fields:im,contract:am(),where:Yl({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.`}),...fm(),allow_bucket_creation:Nu({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({[zm.name]:D({fieldName:zm.name}),[Bm.name]:D({fieldName:Bm.name})}))})}),Hm={"bucket-countif-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},Um=class extends B{pipeId=Rm;payload;payloadSchema=Vm;billableOperations=Hm;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`bucket-countif-v1-pipe0`)}getInputRequirement(){return mm(this.payload.config)}getSecretRequirements(){return hm(this.payload.config)}getConstantRequirements(){return gm(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{[zm.name]:this.catalogOutput(zm),[Bm.name]:this.catalogOutput(Bm)}}getConnectionsRequirements(){return[pm]}},Wm=Vm,Gm={pipeId:Rm,basePipe:U(Rm),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; setting 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(Rm),tags:[V.FIELDS],keywords:[`count`,`counter`,`increment`,`events`,`error count`,`attempts`,`retry cap`,`failures`,`tally`,`bucket`],billableOperations:Hm,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:Rm,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}}}}},Km=`company:domain:workemail@1`,qm=_(`company_domain`),Jm=_(`work_email`),Ym=r.object({pipe_id:r.literal(Km),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[Jm.name]:T({fieldName:Jm.name})})),output_fields:P(r.object({[qm.name]:D({fieldName:qm.name})}))}).optional()}),Xm=e=>R(G(Jm,e)),Zm={"company-domain-workemail-v1-pipe0":{credits:{default:0},allowManagedConnection:!0,mode:`always`,provider:`pipe0`}},Qm=class extends B{pipeId=Km;payload;payloadSchema=Ym;billableOperations=Zm;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-domain-workemail-v1-pipe0`)}getInputRequirement(){return Xm(this.payload.config)}getRawOutputFields(){return{[qm.name]:this.catalogOutput(qm)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},$m=Ym,eh={pipeId:Km,basePipe:U(Km),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(Km),allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],billableOperations:Zm,defaultInputRequirement:Xm(null),defaultPayload:{pipe_id:Km,connector:null,run_if:null,config:{input_fields:{[Jm.name]:{alias:``}},output_fields:{[qm.name]:{alias:``,enabled:!0}}}}};function th(e){return(e.widgets||{}).display_value?.label}function nh(e){console.dir(e,{depth:100})}function rh(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 ih(e){if(typeof e!=`object`||!e||Array.isArray(e))return e;let t={};return Object.keys(e).sort().forEach(n=>{t[n]=ih(e[n])}),t}const ah={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 oh=`company:funding:waterfall@1`,sh=_(`company_name`),ch=_(`company_domain`),lh=_(`funding_history`),uh=_(`funding_total_usd`),dh=[`amplemarket`,`leadmagic`],fh=[{provider:`amplemarket`},{provider:`leadmagic`}],ph={"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`}},mh=r.object({pipe_id:r.literal(oh),connector:w(),run_if:x(),config:r.object({providers:E({availableProviders:dh,defaultProviders:fh,sectionKey:`general`,providerCredits:Bd(ph,dh)}),input_fields:F(r.object({[sh.name]:T({fieldName:sh.name}),[ch.name]:T({fieldName:ch.name})})),output_fields:P(r.object({[lh.name]:D({fieldName:lh.name}),[uh.name]:D({fieldName:uh.name})}))}).optional()}),hh=e=>Ad(G(sh,e),G(ch,e)),gh=class extends B{pipeId=oh;payload;payloadSchema=mh;billableOperations=ph;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 hh(this.payload.config)}getRawOutputFields(){return{[lh.name]:this.catalogOutput(lh,{isPrimaryOutput:!0}),[uh.name]:this.catalogOutput(uh)}}getConnectionsRequirements(){let e={amplemarket:`amplemarket_company_find`,leadmagic:`leadmagic_company_funding`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},_h=mh,vh={pipeId:oh,basePipe:U(oh),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(oh),managedProviders:dh,deprecatedProviders:[],allowedUserConnectionProviders:dh,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:ph,defaultInputRequirement:hh(null),defaultPayload:{pipe_id:oh,connector:null,run_if:null,config:{providers:fh,input_fields:{company_name:{alias:``},company_domain:{alias:``}},output_fields:{funding_history:{alias:``,enabled:!0},funding_total_usd:{alias:``,enabled:!0}}}}},yh=_(`company_name`),bh=_(`company_profile_url`),xh=_(`company_domain`),Sh=_(`cleaned_company_name`),Ch=`company:identity@3`,wh=r.object({pipe_id:r.literal(Ch),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[yh.name]:T({fieldName:yh.name})})),output_fields:P(r.object({[bh.name]:D({fieldName:bh.name}),[Sh.name]:D({fieldName:Sh.name}),[xh.name]:D({fieldName:xh.name})}))}).optional()}),Th=e=>R(G(yh,e)),Eh={"company-identity-v3-pipe0":{allowManagedConnection:!0,credits:{default:.3,level1:{credits:.2,weight:1}},mode:`always`,provider:`pipe0`}},Dh=class extends B{pipeId=Ch;payload;payloadSchema=wh;billableOperations=Eh;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-identity-v3-pipe0`)}getInputRequirement(){return Th(this.payload.config)}getRawOutputFields(){return{[bh.name]:this.catalogOutput(bh),[xh.name]:this.catalogOutput(xh),[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}]}},Oh=wh,kh={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:Eh,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:Th(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}}}}},Ah=_(`company_domain`),jh=_(`company_name`),Mh=_(`crustdata_company_identity_matches`),Nh=`company:identity:crustdata@1`,Ph=r.object({pipe_id:r.literal(Nh),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[Ah.name]:T({fieldName:Ah.name}),[jh.name]:T({fieldName:jh.name})})),output_fields:P(r.object({[Mh.name]:D({fieldName:Mh.name})}))}).optional()}),Fh=e=>Ad(G(Ah,e),G(jh,e)),Ih={"company-identity-crustdata-v1-crustdata":{allowManagedConnection:!0,credits:{default:.001},mode:`onSuccess`,provider:`crustdata`}},Lh=class extends B{pipeId=Nh;payload;payloadSchema=Ph;billableOperations=Ih;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`company-identity-crustdata-v1-crustdata`)}getInputRequirement(){return Fh(this.payload.config)}getRawOutputFields(){return{[Mh.name]:this.catalogOutput(Mh)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_company_identify`,allowManagedConnection:!0}]}},Rh=Ph,zh={pipeId:Nh,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Nh),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(Nh),billableOperations:Ih,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:Fh(null),defaultPayload:{pipe_id:Nh,connector:null,run_if:null,config:{input_fields:{company_domain:{alias:``},company_name:{alias:``}},output_fields:{crustdata_company_identity_matches:{alias:``,enabled:!0}}}}},Bh=`company:jobs:amplemarket@1`,Vh=_(`company_domain`),Hh=_(`company_profile_url`),Uh=_(`open_job_matches`),Wh=_(`open_job_match_count`),Gh=r.object({pipe_id:r.literal(Bh),run_if:x(),connector:w(),config:r.object({job_functions:zu({sectionKey:`general`,groupPath:`config.general`,label:`Job function`,path:`config.job_functions`,placeholder:J(`job_function`),disableSearch:!1,required:!1,description:``,options:h(`amplemarket.job_functions`)}).default([]),job_departments:zu({sectionKey:`general`,groupPath:`config.general`,label:`Department`,path:`config.job_departments`,placeholder:`Revenue, Engineering & Technical, ...`,disableSearch:!1,required:!1,description:``,info:`Broader than job function — 'Revenue' covers Sales, Sales Engineering and Revenue Operations. Reported back as the posting's job category.`,guide:`Broader than job function — 'Revenue' covers Sales, Sales Engineering and Revenue Operations. Reported back as the posting's job category.`,options:h(`amplemarket.departments`)}).default([]),job_seniorities:zu({sectionKey:`general`,groupPath:`config.general`,label:`Seniority`,path:`config.job_seniorities`,placeholder:`VP, Director, Manager, ...`,disableSearch:!1,required:!1,description:``,options:h(`amplemarket.seniority_levels`)}).default([]),find_remote_opportunities_only:Nu({sectionKey:`general`,groupPath:`config.general`,label:`Remote opportunities only`,path:`config.find_remote_opportunities_only`,description:``,info:`Only count postings Amplemarket classifies as remote. This is the endpoint's only location filter — it cannot narrow to a country or city.`,guide:`Counts only postings Amplemarket classifies as remote. This is the endpoint's only location filter — it cannot narrow to a country or city.`,defaultValue:!1}),limit:Bu({sectionKey:`general`,groupPath:`config.general`,label:`Limit`,path:`config.limit`,description:``,info:`Maximum postings returned per company. Billing is per company, not per posting.`,guide:`Maximum postings returned per company. Billing is per company, not per posting.`,min:1,max:15}).default(15),input_fields:F(r.object({[Vh.name]:T({fieldName:Vh.name}),[Hh.name]:T({fieldName:Hh.name})})),output_fields:P(r.object({[Uh.name]:D({fieldName:Uh.name}),[Wh.name]:D({fieldName:Wh.name})}))})}),Kh=e=>Ad(G(Vh,e),G(Hh,e)),qh={"company-jobs-amplemarket-v1-amplemarket":{allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`,provider:`amplemarket`}},Jh=class extends B{pipeId=Bh;payload;payloadSchema=Gh;billableOperations=qh;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`amplemarket`]}estimateBillableOperations(e){return H(e,`company-jobs-amplemarket-v1-amplemarket`)}getInputRequirement(){return Kh(this.payload.config)}getRawOutputFields(){return{[Uh.name]:this.catalogOutput(Uh,{isPrimaryOutput:!0}),[Wh.name]:this.catalogOutput(Wh)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitRatio:1,rateLimitOperation:`amplemarket_job_openings`,allowManagedConnection:!0}]}},Yh=Gh,Xh={pipeId:Bh,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Bh),label:`Open jobs`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`Qualify a company on whether it is hiring for a role you care about. Returns its open postings as one list, filtered by function, department, seniority and remote-only. Coverage is partial — many companies return no matching postings — so it suits qualifying rows you already have; to FIND companies hiring, start from a jobs search.`,guide:"A QUALIFICATION step for an account list you already have, not a way to build one: set the filters to the role that makes a company interesting, then narrow the sheet on the result. A company with no matching opening comes back `no_result` — empty cells, no credit spent — so 'is hiring for this' is `open_job_match_count` being non-empty and 'is not hiring for this' is it being empty; you do not need a separate check. There is deliberately NO title or location filter: Amplemarket classifies postings by function, department and seniority only, so pick the closest of those (`Software Development`, not 'software engineer') and, if the exact wording or a specific city matters, narrow downstream against `open_job_matches`. To work one posting per row, expand it with `row:expandappend:sheet@1`.",tags:[V.COMPANY_PROFILES],keywords:[`hiring`,`vacancies`,`recruiting`,`postings`,`qualify`,`buying signal`,`expansion`],docPath:W(Bh),billableOperations:qh,allowedUserConnectionProviders:[`amplemarket`],managedProviders:[`amplemarket`],deprecatedProviders:[],defaultInputRequirement:Kh(null),defaultPayload:{pipe_id:Bh,connector:null,run_if:null,config:{job_functions:[],job_departments:[],job_seniorities:[],find_remote_opportunities_only:!1,limit:15,input_fields:{company_domain:{alias:``},company_profile_url:{alias:``}},output_fields:{open_job_matches:{alias:``,enabled:!0},open_job_match_count:{alias:``,enabled:!0}}}}},Zh=_(`company_domain`),Qh=_(`companyenrich_matches`),$h=`company:lookalikes:companyenrich@2`,eg=r.object({pipe_id:r.literal($h),run_if:x(),connector:w(),config:r.object({limit:Bu({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({[Zh.name]:T({fieldName:Zh.name})})),output_fields:P(r.object({[Qh.name]:D({fieldName:Qh.name})}))}).optional()}),tg=e=>R(G(Zh,e)),ng={"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`}},rg=class extends B{pipeId=$h;payload;payloadSchema=eg;billableOperations=ng;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 tg(this.payload.config)}getRawOutputFields(){return{[Qh.name]:this.catalogOutput(Qh)}}getConnectionsRequirements(){return[{provider:`companyenrich`,rateLimitRatio:1,rateLimitOperation:`company_enrich_generic`,allowManagedConnection:!0}]}},ig=eg,ag={pipeId:$h,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U($h),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($h),billableOperations:ng,allowedUserConnectionProviders:[`companyenrich`],managedProviders:[`companyenrich`],deprecatedProviders:[],defaultInputRequirement:tg(null),defaultPayload:{pipe_id:$h,connector:null,run_if:null,config:{limit:20,input_fields:{company_domain:{alias:``}},output_fields:{companyenrich_matches:{alias:``,enabled:!0}}}}},og=_(`company_domain`),sg=_(`company_profile_url`),cg=_(`amplemarket_company_match`),lg=`company:match:amplemarket@1`,ug=r.object({pipe_id:r.literal(lg),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[og.name]:T({fieldName:og.name}),[sg.name]:T({fieldName:sg.name})})),output_fields:P(r.object({[cg.name]:D({fieldName:cg.name})}))}).optional()}),dg=e=>Ad(G(og,e),G(sg,e)),fg={"company-match-amplemarket-v1-amplemarket":{allowManagedConnection:!0,credits:{default:1.5},mode:`onSuccess`,provider:`amplemarket`}},pg=class extends B{pipeId=lg;payload;payloadSchema=ug;billableOperations=fg;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`amplemarket`]}estimateBillableOperations(e){return H(e,`company-match-amplemarket-v1-amplemarket`)}getInputRequirement(){return dg(this.payload.config)}getRawOutputFields(){return{[cg.name]:this.catalogOutput(cg)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitRatio:1,rateLimitOperation:`amplemarket_company_find`,allowManagedConnection:!0}]}},mg=ug,hg={pipeId:lg,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(lg),label:`Company match`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`Company data via the Amplemarket API: headcount by department and job function, funding events, technologies, locations and LinkedIn presence. Matches on domain, LinkedIn URL, or both.`,tags:[V.WEBSITE,V.LINKEDIN],keywords:[`enrich`,`firmographics`,`headcount`,`technologies`,`funding`,`linkedin`,`domain`],docPath:W(lg),billableOperations:fg,allowedUserConnectionProviders:[`amplemarket`],managedProviders:[`amplemarket`],deprecatedProviders:[],defaultInputRequirement:dg(null),defaultPayload:{pipe_id:lg,connector:null,run_if:null,config:{input_fields:{company_domain:{alias:``},company_profile_url:{alias:``}},output_fields:{amplemarket_company_match:{alias:``,enabled:!0}}}}},gg=_(`company_domain`),_g=_(`attio_companies_found_count`),vg=_(`attio_record_id`),yg=_(`attio_company_matches`),bg=`company:match:attio@1`,xg=r.object({pipe_id:r.literal(bg),run_if:x(),connector:C(),config:r.object({match_on:Lu({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:Tu({sectionKey:`general`,label:`Custom attributes`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`categories`,optionsDef:Wf({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.',guide:"Attribute api_slugs (e.g. `categories`), custom attributes included. Picked attributes nest under `custom_properties` in each match. Empty = a standard identity set."}),input_fields:F(r.object({[gg.name]:T({fieldName:gg.name})})),output_fields:P(r.object({[_g.name]:D({fieldName:_g.name}),[vg.name]:D({fieldName:vg.name}),[yg.name]:D({fieldName:yg.name})}))}).optional()}),Sg=e=>R(G(gg,e)),Cg={"company-match-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},wg=class extends B{pipeId=bg;payload;payloadSchema=xg;billableOperations=Cg;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`company-match-attio-v1-attio`)}getInputRequirement(){return Sg(this.payload.config)}getRawOutputFields(){return{[_g.name]:this.catalogOutput(_g),[vg.name]:this.catalogOutput(vg),[yg.name]:this.catalogOutput(yg)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_query`,allowManagedConnection:!1}]}async getAgentContext(e){return Kf(e,{objects:[`companies`]})}},Tg=xg,Eg={pipeId:bg,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(bg),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(bg),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:Cg,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:Sg(null),defaultPayload:{pipe_id:bg,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}}}}},Dg=_(`company_domain`),Og=_(`crustdata_companyenrich_match`),kg=`company:match:crustdata@2`,Ag=r.object({pipe_id:r.literal(kg),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[Dg.name]:T({fieldName:Dg.name})})),output_fields:P(r.object({[Og.name]:D({fieldName:Og.name})}))}).optional()}),jg=e=>R(G(Dg,e)),Mg={"company-match-crustdata-v2-crustdata":{allowManagedConnection:!0,credits:{default:2.5,level1:{credits:1.2,weight:1}},mode:`onSuccess`,provider:`crustdata`}},Ng=class extends B{pipeId=kg;payload;payloadSchema=Ag;billableOperations=Mg;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`company-match-crustdata-v2-crustdata`)}getInputRequirement(){return jg(this.payload.config)}getRawOutputFields(){return{[Og.name]:this.catalogOutput(Og)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_company_enrich`,allowManagedConnection:!0}]}},Pg=Ag,Fg={pipeId:kg,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(kg),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(kg),billableOperations:Mg,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:jg(null),defaultPayload:{pipe_id:kg,connector:null,run_if:null,config:{input_fields:{company_domain:{alias:``}},output_fields:{crustdata_companyenrich_match:{alias:``,enabled:!0}}}}},Ig=_(`company_domain`),Lg=_(`hubspot_companies_found_count`),Rg=_(`hubspot_object_id`),zg=_(`hubspot_company_matches`),Bg=`company:match:hubspot@1`,Vg=r.object({pipe_id:r.literal(Bg),run_if:x(),connector:C(),config:r.object({check_additional_domains:Nu({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).",guide:"Also matches companies whose `hs_additional_domains` contains the domain. Primary-domain matches still rank first."}),custom_properties:Tu({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).",guide:"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({[Ig.name]:T({fieldName:Ig.name})})),output_fields:P(r.object({[Lg.name]:D({fieldName:Lg.name}),[Rg.name]:D({fieldName:Rg.name}),[zg.name]:D({fieldName:zg.name})}))}).optional()}),Hg=e=>R(G(Ig,e)),Ug={"company-match-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},Wg=class extends B{pipeId=Bg;payload;payloadSchema=Vg;billableOperations=Ug;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`hubspot`]}estimateBillableOperations(e){return H(e,`company-match-hubspot-v1-hubspot`)}getInputRequirement(){return Hg(this.payload.config)}getRawOutputFields(){return{[Lg.name]:this.catalogOutput(Lg),[Rg.name]:this.catalogOutput(Rg),[zg.name]:this.catalogOutput(zg)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_crm_search`,allowManagedConnection:!1}]}async getAgentContext(e){return Op(e,{objectTypes:[[`companies`,`0-2`]]})}},Gg=Vg,Kg={pipeId:Bg,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Bg),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(Bg),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:Ug,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:Hg(null),defaultPayload:{pipe_id:Bg,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}}}}},qg=`company:newssummary:domain@1`,Jg=_(`company_news_summary`),Yg=_(`company_domain`),Xg=r.object({pipe_id:r.literal(qg),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[Yg.name]:T({fieldName:Yg.name})})),output_fields:P(r.object({[Jg.name]:D({fieldName:Jg.name})}))}).optional()}),Zg=e=>R(G(Yg,e)),Qg={"company-newssummary-domain-v1-pipe0":{allowManagedConnection:!0,credits:{default:2},mode:`always`,provider:`pipe0`}},$g=class extends B{pipeId=qg;payloadSchema=Xg;billableOperations=Qg;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-newssummary-domain-v1-pipe0`)}getInputRequirement(){return Zg(this.payload.config)}getRawOutputFields(){return{[Jg.name]:this.catalogOutput(Jg)}}getConnectionsRequirements(){return[{provider:`parallel`,rateLimitRatio:4,rateLimitOperation:`parallel_search_base`,allowManagedConnection:!0},{provider:`gemini`,rateLimitRatio:1,rateLimitOperation:`gemini_35_flash`,allowManagedConnection:!0}]}},e_=Xg,t_={pipeId:qg,basePipe:U(qg),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(qg),billableOperations:Qg,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:Zg(null),defaultPayload:{pipe_id:qg,run_if:null,connector:null,config:{input_fields:{company_domain:{alias:``}},output_fields:{company_news_summary:{alias:``,enabled:!0}}}}},n_=_(`company_domain`),r_=_(`company_profile_url`),i_=_(`company_description`),a_=_(`company_industry`),o_=_(`company_region`),s_=_(`headcount`),c_=_(`estimated_revenue`),l_=_(`founded_year`),u_=_(`company_name`),d_=`company:overview@3`,f_=r.object({pipe_id:r.literal(d_),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[n_.name]:T({fieldName:n_.name}),[r_.name]:T({fieldName:r_.name})})),output_fields:P(r.object({[i_.name]:D({fieldName:i_.name}),[a_.name]:D({fieldName:a_.name}),[o_.name]:D({fieldName:o_.name}),[s_.name]:D({fieldName:s_.name}),[c_.name]:D({fieldName:c_.name}),[l_.name]:D({fieldName:l_.name}),[u_.name]:D({fieldName:u_.name})}))}).optional()}),p_=e=>Ad(G(n_,e),G(r_,e)),m_={"company-overview-v3-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:1,level1:{credits:.5,weight:1}},mode:`always`}},h_=class extends B{pipeId=d_;payloadSchema=f_;billableOperations=m_;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-overview-v3-pipe0`)}getInputRequirement(){return p_(this.payload.config)}getRawOutputFields(){return{[i_.name]:this.catalogOutput(i_),[a_.name]:this.catalogOutput(a_),[o_.name]:this.catalogOutput(o_),[s_.name]:this.catalogOutput(s_),[c_.name]:this.catalogOutput(c_),[l_.name]:this.catalogOutput(l_),[u_.name]:this.catalogOutput(u_)}}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}]}},g_=f_,__={pipeId:d_,basePipe:U(d_),inputFieldMode:`static`,outputFieldMode:`static`,label:`Company overview`,executionMode:`mix`,categories:[`company_data`],lifecycle:null,description:`Business description, industry, and financial information.`,docPath:W(d_),tags:[V.WEBSITE,V.LINKEDIN,V.FINANCIAL_DATA],keywords:[`enrich`,`firmographics`,`industry`,`profile`,`about`,`financials`,`revenue`],allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],billableOperations:m_,defaultInputRequirement:p_(null),defaultPayload:{pipe_id:d_,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}}}}},v_=_(`company_domain`),y_=_(`technology_list`),b_=_(`spending_trend`),x_=_(`technology_match_builtwith`),S_=`company:techstack:builtwith@2`,C_=r.object({pipe_id:r.literal(S_),connector:w(),run_if:x(),config:r.object({input_fields:F(r.object({[v_.name]:T({fieldName:v_.name})})),output_fields:P(r.object({[y_.name]:D({fieldName:y_.name}),[x_.name]:D({fieldName:x_.name}),[b_.name]:D({fieldName:b_.name})}))}).optional()}),w_=e=>R(G(v_,e)),T_={"company-techstack-builtwith-v2-builtwith":{provider:`builtwith`,allowManagedConnection:!0,credits:{default:2},mode:`always`}},E_=class extends B{pipeId=S_;payload;payloadSchema=C_;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 w_(this.payload.config)}getRawOutputFields(){return{[y_.name]:this.catalogOutput(y_),[x_.name]:this.catalogOutput(x_),[b_.name]:this.catalogOutput(b_)}}getConnectionsRequirements(){return[{provider:`builtwith`,rateLimitRatio:1,rateLimitOperation:`builtwith_generic`,allowManagedConnection:!0}]}},D_=C_,O_={pipeId:S_,basePipe:U(S_),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(S_),billableOperations:T_,defaultInputRequirement:w_(null),defaultPayload:{pipe_id:S_,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}}}}},k_=`contact:create:resend@1`,A_={"contact-create-resend-v1-resend":{allowManagedConnection:!1,provider:`resend`,credits:null,mode:null}},j_=_(`email`),M_=_(`name`),N_=_(`resend_contact_id`),P_=[{label:`Demo subscribers`,value:`sandbox-segment-1`},{label:`Demo product updates`,value:`sandbox-segment-2`}],F_=r.object({pipe_id:r.literal(k_),connector:C(),run_if:x(),config:r.object({segment_id:Uu({sectionKey:`general`,required:!0,label:`Segment`,groupPath:`config.general`,path:`config.segment_id`,info:``,enabledIf:v(`resend`),optionsDef:{requires:{connection:`resend`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return P_;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:Nu({sectionKey:`general`,defaultValue:!0,label:`Add as subscribed`,groupPath:`config.general`,path:`config.add_as_subscribed`,info:``}),input_fields:F(r.object({[M_.name]:T({fieldName:M_.name}),[j_.name]:T({fieldName:j_.name})})),output_fields:P(r.object({[N_.name]:D({fieldName:N_.name})}))})}),I_=e=>z(R(G(j_,e)),R(G(M_,e))),L_=class extends B{pipeId=k_;payload;payloadSchema=F_;billableOperations=A_;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`resend`]}estimateBillableOperations(e){return H(e,`contact-create-resend-v1-resend`)}getInputRequirement(){return I_(this.payload.config)}getRawOutputFields(){return{[N_.name]:this.catalogOutput(N_)}}getConnectionsRequirements(){return[{provider:`resend`,rateLimitRatio:1,rateLimitOperation:`resend_generic`,allowManagedConnection:!1}]}},R_=F_,z_={pipeId:k_,basePipe:U(k_),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(k_),hasSideEffects:!0,billableOperations:A_,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`resend`],defaultInputRequirement:I_(null),managedProviders:[],deprecatedProviders:[],defaultPayload:{pipe_id:k_,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}}}}},B_=_(`email`),V_=_(`hubspot_contact_found`),H_=_(`hubspot_object_id`),U_=_(`hubspot_contact_match`),W_=`contact:match:hubspot@1`,G_=r.object({pipe_id:r.literal(W_),run_if:x(),connector:C(),config:r.object({check_additional_emails:Nu({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.",guide:"When the primary-email lookup misses, also searches `hs_additional_emails`. Uses the portal's shared 5 req/s search budget."}),custom_properties:Tu({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.',guide:"HubSpot internal property names (e.g. `lifecyclestage`), custom properties included. Picked properties nest under `custom_properties` in the match output. Empty = a standard identity set."}),input_fields:F(r.object({[B_.name]:T({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=>R(G(B_,e)),q_={"contact-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,`contact-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 Op(e,{objectTypes:[[`contacts`,`0-1`]]})}},Y_=G_,X_={pipeId:W_,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(W_),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(W_),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:q_,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:K_(null),defaultPayload:{pipe_id:W_,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}}}}},Z_=_(`company_domain`),Q_=_(`email`),$_=_(`attio_deals_found_count`),ev=_(`attio_record_id`),tv=_(`attio_deal_matches`),nv=`deal:match:attio@1`,rv=r.object({pipe_id:r.literal(nv),run_if:x(),connector:C(),config:r.object({stage:Uu({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:v(`attio`),optionsDef:Lf,multiple:!0}),custom_properties:Tu({sectionKey:`general`,label:`Custom attributes`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`close_date`,optionsDef:Wf({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.',guide:"Attribute api_slugs (e.g. `value`), custom attributes included. Picked attributes nest under `custom_properties` in each match. Empty = a standard deal set."}),input_fields:F(r.object({[Z_.name]:T({fieldName:Z_.name}),[Q_.name]:T({fieldName:Q_.name})})),output_fields:P(r.object({[$_.name]:D({fieldName:$_.name}),[ev.name]:D({fieldName:ev.name}),[tv.name]:D({fieldName:tv.name})}))}).optional()}),iv=e=>Ad(R(G(Z_,e)),R(G(Q_,e))),av={"deal-match-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},ov=class extends B{pipeId=nv;payload;payloadSchema=rv;billableOperations=av;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`deal-match-attio-v1-attio`)}getInputRequirement(){return iv(this.payload.config)}getRawOutputFields(){return{[$_.name]:this.catalogOutput($_),[ev.name]:this.catalogOutput(ev),[tv.name]:this.catalogOutput(tv)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_query`,allowManagedConnection:!1}]}async getAgentContext(e){return Kf(e,{objects:[`deals`]})}},sv=rv,cv={pipeId:nv,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(nv),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(nv),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:av,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:iv(null),defaultPayload:{pipe_id:nv,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}}}}},lv=_(`company_domain`),uv=_(`email`),dv=_(`hubspot_deals_found_count`),fv=_(`hubspot_object_id`),pv=_(`hubspot_deal_matches`),mv=`deal:match:hubspot@1`,hv=r.object({pipe_id:r.literal(mv),run_if:x(),connector:C(),config:r.object({pipeline:Uu({sectionKey:`general`,required:!1,label:`Pipeline`,groupPath:`config.general`,path:`config.pipeline`,info:`Only match deals in this pipeline. Empty = all pipelines.`,guide:`Only match deals in this pipeline. Empty = all pipelines.`,enabledIf:v(`hubspot`),optionsDef:Sp(`deals`)}),status:Lu({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:Tu({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).",guide:"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({[lv.name]:T({fieldName:lv.name}),[uv.name]:T({fieldName:uv.name})})),output_fields:P(r.object({[dv.name]:D({fieldName:dv.name}),[fv.name]:D({fieldName:fv.name}),[pv.name]:D({fieldName:pv.name})}))}).optional()}),gv=e=>Ad(R(G(lv,e)),R(G(uv,e))),_v={"deal-match-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},vv=class extends B{pipeId=mv;payload;payloadSchema=hv;billableOperations=_v;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`hubspot`]}estimateBillableOperations(e){return H(e,`deal-match-hubspot-v1-hubspot`)}getInputRequirement(){return gv(this.payload.config)}getRawOutputFields(){return{[dv.name]:this.catalogOutput(dv),[fv.name]:this.catalogOutput(fv),[pv.name]:this.catalogOutput(pv)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_crm_search`,allowManagedConnection:!1}]}async getAgentContext(e){return Op(e,{objectTypes:[[`deals`,`0-3`]],includePipelinesFor:[`deals`]})}},yv=hv,bv={pipeId:mv,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(mv),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(mv),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:_v,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:gv(null),defaultPayload:{pipe_id:mv,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}}}}},xv=`company:funding:leadmagic@1`,Sv=_(`company_name`),Cv=_(`company_website_url`),wv=_(`funding_history`),Tv=_(`funding_total_usd`),Ev=_(`leadmagic_competitor_list`),Dv=_(`leadmagic_acquisition_history`),Ov=_(`leadmagic_company_news_list`),kv=r.object({pipe_id:r.literal(xv),connector:w(),run_if:x(),config:r.object({input_fields:F(r.object({[Sv.name]:T({fieldName:Sv.name}),[Cv.name]:T({fieldName:Cv.name})})),output_fields:P(r.object({[wv.name]:D({fieldName:wv.name}),[Tv.name]:D({fieldName:Tv.name}),[Ev.name]:D({fieldName:Ev.name}),[Dv.name]:D({fieldName:Dv.name}),[Ov.name]:D({fieldName:Ov.name})}))}).optional()}),Av=e=>Ad(G(Sv,e),G(Cv,e)),jv={"company-funding-leadmagic-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`}},Mv=class extends B{pipeId=xv;payload;payloadSchema=kv;billableOperations=jv;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`leadmagic`]}estimateBillableOperations(e){return H(e,`company-funding-leadmagic-v1-leadmagic`)}getInputRequirement(){return Av(this.payload.config)}getRawOutputFields(){return{[wv.name]:this.catalogOutput(wv),[Tv.name]:this.catalogOutput(Tv)}}getConnectionsRequirements(){return[{provider:`leadmagic`,rateLimitRatio:1,rateLimitOperation:`leadmagic_company_funding`,allowManagedConnection:!0}]}},Nv=kv,Pv={pipeId:xv,basePipe:U(xv),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(xv),billableOperations:jv,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`leadmagic`],managedProviders:[`leadmagic`],deprecatedProviders:[],defaultInputRequirement:Av(null),defaultPayload:{pipe_id:xv,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`,Iv=_(`company_name`),Lv=_(`company_domain`),Rv=_(`funding_history`),zv=_(`funding_total_usd`),Bv=_(`leadmagic_competitor_list`),Vv=_(`leadmagic_acquisition_history`),Hv=_(`leadmagic_company_news_list`),Uv=r.object({pipe_id:r.literal(Fv),connector:w(),run_if:x(),config:r.object({input_fields:F(r.object({[Iv.name]:T({fieldName:Iv.name}),[Lv.name]:T({fieldName:Lv.name})})),output_fields:P(r.object({[Rv.name]:D({fieldName:Rv.name}),[zv.name]:D({fieldName:zv.name}),[Bv.name]:D({fieldName:Bv.name}),[Vv.name]:D({fieldName:Vv.name}),[Hv.name]:D({fieldName:Hv.name})}))}).optional()}),Wv=e=>Ad(G(Iv,e),G(Lv,e)),Gv={"company-funding-leadmagic-v2-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`}},Kv=class extends B{pipeId=Fv;payload;payloadSchema=Uv;billableOperations=Gv;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`leadmagic`]}estimateBillableOperations(e){return H(e,`company-funding-leadmagic-v2-leadmagic`)}getInputRequirement(){return Wv(this.payload.config)}getRawOutputFields(){return{[Rv.name]:this.catalogOutput(Rv),[zv.name]:this.catalogOutput(zv),[Vv.name]:this.catalogOutput(Vv),[Hv.name]:this.catalogOutput(Hv),[Bv.name]:this.catalogOutput(Bv)}}getConnectionsRequirements(){return[{provider:`leadmagic`,rateLimitRatio:1,rateLimitOperation:`leadmagic_company_funding`,allowManagedConnection:!0}]}},qv=Uv,Jv={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:Gv,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`leadmagic`],managedProviders:[`leadmagic`],deprecatedProviders:[],defaultInputRequirement:Wv(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:``}}}}},Yv=_(`company_name`),Xv=_(`company_social_url`),Zv=_(`company_website_url`),Qv=_(`cleaned_company_name`),$v=`company:identity@1`,ey=r.object({pipe_id:r.literal($v),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[Yv.name]:T({fieldName:Yv.name})})),output_fields:P(r.object({[Xv.name]:D({fieldName:Xv.name}),[Qv.name]:D({fieldName:Qv.name}),[Zv.name]:D({fieldName:Zv.name})}))}).optional()}),ty=e=>R(G(Yv,e)),ny={"company-identity-v1-pipe0":{allowManagedConnection:!0,credits:{default:.3},mode:`always`,provider:`pipe0`}},ry=class extends B{pipeId=$v;payload;payloadSchema=ey;billableOperations=ny;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-identity-v1-pipe0`)}getInputRequirement(){return ty(this.payload.config)}getRawOutputFields(){return{[Xv.name]:this.catalogOutput(Xv),[Zv.name]:this.catalogOutput(Zv),[Qv.name]:this.catalogOutput(Qv)}}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}]}},iy=ey,ay={pipeId:$v,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U($v),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:ny,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:ty(null),defaultPayload:{pipe_id:$v,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}}}}},oy=_(`company_name`),sy=_(`company_profile_url`),cy=_(`company_website_url`),ly=_(`cleaned_company_name`),uy=`company:identity@2`,dy=r.object({pipe_id:r.literal(uy),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[oy.name]:T({fieldName:oy.name})})),output_fields:P(r.object({[sy.name]:D({fieldName:sy.name}),[ly.name]:D({fieldName:ly.name}),[cy.name]:D({fieldName:cy.name})}))}).optional()}),fy=e=>R(G(oy,e)),py={"company-identity-v2-pipe0":{allowManagedConnection:!0,credits:{default:.3},mode:`always`,provider:`pipe0`}},my=class extends B{pipeId=uy;payload;payloadSchema=dy;billableOperations=py;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-identity-v2-pipe0`)}getInputRequirement(){return fy(this.payload.config)}getRawOutputFields(){return{[sy.name]:this.catalogOutput(sy),[cy.name]:this.catalogOutput(cy),[ly.name]:this.catalogOutput(ly)}}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}]}},hy=dy,gy={pipeId:uy,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(uy),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(uy),billableOperations:py,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:fy(null),defaultPayload:{pipe_id:uy,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}}}}},_y=_(`company_website_url`),vy=_(`companyenrich_matches`),yy=`company:lookalikes:companyenrich@1`,by=r.object({pipe_id:r.literal(yy),run_if:x(),connector:w(),config:r.object({limit:Bu({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({[_y.name]:T({fieldName:_y.name})})),output_fields:P(r.object({[vy.name]:D({fieldName:vy.name})}))}).optional()}),xy=e=>R(G(_y,e)),Sy={"company-lookalikes-companyenrich-v1-companyenrich":{allowManagedConnection:!0,credits:{default:.2},mode:`onSuccess`,note:`One billing event per result.`,provider:`companyenrich`}},Cy=class extends B{pipeId=yy;payload;payloadSchema=by;billableOperations=Sy;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 xy(this.payload.config)}getRawOutputFields(){return{[vy.name]:this.catalogOutput(vy)}}getConnectionsRequirements(){return[{provider:`companyenrich`,rateLimitRatio:1,rateLimitOperation:`company_enrich_generic`,allowManagedConnection:!0}]}},wy=by,Ty={pipeId:yy,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(yy),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(yy),billableOperations:Sy,allowedUserConnectionProviders:[`companyenrich`],managedProviders:[`companyenrich`],deprecatedProviders:[],defaultInputRequirement:xy(null),defaultPayload:{pipe_id:yy,connector:null,run_if:null,config:{limit:20,input_fields:{company_website_url:{alias:``}},output_fields:{companyenrich_matches:{alias:``,enabled:!0}}}}},Ey=_(`company_website_url`),Dy=_(`crustdata_companyenrich_match`),Oy=`company:match:crustdata@1`,ky=r.object({pipe_id:r.literal(Oy),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[Ey.name]:T({fieldName:Ey.name})})),output_fields:P(r.object({[Dy.name]:D({fieldName:Dy.name})}))}).optional()}),Ay=e=>R(G(Ey,e)),jy={"company-match-crustdata-v1-crustdata":{allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`,provider:`crustdata`}},My=class extends B{pipeId=Oy;payload;payloadSchema=ky;billableOperations=jy;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`company-match-crustdata-v1-crustdata`)}getInputRequirement(){return Ay(this.payload.config)}getRawOutputFields(){return{[Dy.name]:this.catalogOutput(Dy)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_company_enrich`,allowManagedConnection:!0}]}},Ny=ky,Py={pipeId:Oy,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Oy),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(Oy),billableOperations:jy,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:Ay(null),defaultPayload:{pipe_id:Oy,connector:null,run_if:null,config:{input_fields:{company_website_url:{alias:``}},output_fields:{crustdata_companyenrich_match:{alias:``,enabled:!0}}}}},Fy=_(`company_website_url`),Iy=_(`company_name`),Ly=_(`company_profile_url`),Ry=_(`logodev_describe_match`),zy=_(`logo_url`),By=`company:match:logodev@1`,Vy=r.object({pipe_id:r.literal(By),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[Fy.name]:T({fieldName:Fy.name})})),output_fields:P(r.object({[Ly.name]:D({fieldName:Ly.name}),[zy.name]:D({fieldName:zy.name}),[Iy.name]:D({fieldName:Iy.name}),[Ry.name]:D({fieldName:Ry.name})}))}).optional()}),Hy=e=>R(G(Fy,e)),Uy={"company-match-logodev-v1-logodev":{allowManagedConnection:!0,credits:{default:.1},mode:`onSuccess`,provider:`logodev`}},Wy=class extends B{pipeId=By;payload;payloadSchema=Vy;billableOperations=Uy;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`logodev`]}estimateBillableOperations(e){return H(e,`company-match-logodev-v1-logodev`)}getInputRequirement(){return Hy(this.payload.config)}getRawOutputFields(){return{[Ly.name]:this.catalogOutput(Ly),[Iy.name]:this.catalogOutput(Iy),[zy.name]:this.catalogOutput(zy),[Ry.name]:this.catalogOutput(Ry)}}getConnectionsRequirements(){return[{provider:`logodev`,rateLimitRatio:1,rateLimitOperation:`logodev_describe`,allowManagedConnection:!0}]}},Gy=Vy,Ky={pipeId:By,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(By),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(By),billableOperations:Uy,allowedUserConnectionProviders:[`logodev`],managedProviders:[`logodev`],deprecatedProviders:[],defaultInputRequirement:Hy(null),defaultPayload:{pipe_id:By,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}}}}},qy=_(`company_domain`),Jy=_(`company_name`),Yy=_(`company_profile_url`),Xy=_(`logodev_describe_match`),Zy=_(`logo_url`),Qy=`company:match:logodev@2`,$y=r.object({pipe_id:r.literal(Qy),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[qy.name]:T({fieldName:qy.name})})),output_fields:P(r.object({[Yy.name]:D({fieldName:Yy.name}),[Zy.name]:D({fieldName:Zy.name}),[Jy.name]:D({fieldName:Jy.name}),[Xy.name]:D({fieldName:Xy.name})}))}).optional()}),eb=e=>R(G(qy,e)),tb={"company-match-logodev-v2-logodev":{allowManagedConnection:!0,credits:{default:.1},mode:`onSuccess`,provider:`logodev`}},nb=class extends B{pipeId=Qy;payload;payloadSchema=$y;billableOperations=tb;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`logodev`]}estimateBillableOperations(e){return H(e,`company-match-logodev-v2-logodev`)}getInputRequirement(){return eb(this.payload.config)}getRawOutputFields(){return{[Yy.name]:this.catalogOutput(Yy),[Jy.name]:this.catalogOutput(Jy),[Zy.name]:this.catalogOutput(Zy),[Xy.name]:this.catalogOutput(Xy)}}getConnectionsRequirements(){return[{provider:`logodev`,rateLimitRatio:1,rateLimitOperation:`logodev_describe`,allowManagedConnection:!0}]}},rb=$y,ib={pipeId:Qy,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Qy),label:`Company match`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-08-03`,replacedBy: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(Qy),billableOperations:tb,allowedUserConnectionProviders:[`logodev`],managedProviders:[`logodev`],deprecatedProviders:[],defaultInputRequirement:eb(null),defaultPayload:{pipe_id:Qy,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}}}}},ab=`company:newssummary:website@1`,ob=_(`company_news_summary`),sb=_(`company_website_url`),cb=r.object({pipe_id:r.literal(ab),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[sb.name]:T({fieldName:sb.name})})),output_fields:P(r.object({[ob.name]:D({fieldName:ob.name})}))}).optional()}),lb=e=>R(G(sb,e)),ub={"company-newssummary-website-v1-pipe0":{allowManagedConnection:!0,credits:{default:1},mode:`always`,provider:`pipe0`}},db=class extends B{pipeId=ab;payloadSchema=cb;billableOperations=ub;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-newssummary-website-v1-pipe0`)}getInputRequirement(){return lb(this.payload.config)}getRawOutputFields(){return{[ob.name]:this.catalogOutput(ob)}}getConnectionsRequirements(){return[{provider:`perplexity`,rateLimitRatio:1,rateLimitOperation:`perplexity_generic`,allowManagedConnection:!0}]}},fb=cb,pb={pipeId:ab,basePipe:U(ab),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(ab),billableOperations:ub,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:lb(null),defaultPayload:{pipe_id:ab,run_if:null,connector:null,config:{input_fields:{company_website_url:{alias:``}},output_fields:{company_news_summary:{alias:``,enabled:!0}}}}},mb=_(`company_website_url`),hb=_(`company_social_url`),gb=_(`company_description`),_b=_(`company_industry`),vb=_(`company_region`),yb=_(`headcount`),bb=_(`estimated_revenue`),xb=_(`founded_year`),Sb=`company:overview@1`,Cb=r.object({pipe_id:r.literal(Sb),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[mb.name]:T({fieldName:mb.name}),[hb.name]:T({fieldName:hb.name})})),output_fields:P(r.object({[gb.name]:D({fieldName:gb.name}),[_b.name]:D({fieldName:_b.name}),[vb.name]:D({fieldName:vb.name}),[yb.name]:D({fieldName:yb.name}),[bb.name]:D({fieldName:bb.name}),[xb.name]:D({fieldName:xb.name})}))}).optional()}),wb=e=>Ad(G(mb,e),G(hb,e)),Tb={"company-overview-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:1},mode:`always`}},Eb=class extends B{pipeId=Sb;payloadSchema=Cb;billableOperations=Tb;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-overview-v1-pipe0`)}getInputRequirement(){return wb(this.payload.config)}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),[xb.name]:this.catalogOutput(xb)}}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}]}},Db=Cb,Ob={pipeId:Sb,basePipe:U(Sb),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:Tb,defaultInputRequirement:wb(null),defaultPayload:{pipe_id:Sb,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}}}}},kb=_(`company_website_url`),Ab=_(`company_profile_url`),jb=_(`company_description`),Mb=_(`company_industry`),Nb=_(`company_region`),Pb=_(`headcount`),Fb=_(`estimated_revenue`),Ib=_(`founded_year`),Lb=_(`company_name`),Rb=`company:overview@2`,zb=r.object({pipe_id:r.literal(Rb),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[kb.name]:T({fieldName:kb.name}),[Ab.name]:T({fieldName:Ab.name})})),output_fields:P(r.object({[jb.name]:D({fieldName:jb.name}),[Mb.name]:D({fieldName:Mb.name}),[Nb.name]:D({fieldName:Nb.name}),[Pb.name]:D({fieldName:Pb.name}),[Fb.name]:D({fieldName:Fb.name}),[Ib.name]:D({fieldName:Ib.name}),[Lb.name]:D({fieldName:Lb.name})}))}).optional()}),Bb=e=>Ad(G(kb,e),G(Ab,e)),Vb={"company-overview-v2-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:1},mode:`always`}},Hb=class extends B{pipeId=Rb;payloadSchema=zb;billableOperations=Vb;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-overview-v2-pipe0`)}getInputRequirement(){return Bb(this.payload.config)}getRawOutputFields(){return{[jb.name]:this.catalogOutput(jb),[Mb.name]:this.catalogOutput(Mb),[Nb.name]:this.catalogOutput(Nb),[Pb.name]:this.catalogOutput(Pb),[Fb.name]:this.catalogOutput(Fb),[Ib.name]:this.catalogOutput(Ib),[Lb.name]:this.catalogOutput(Lb)}}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}]}},Ub=zb,Wb={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:Vb,defaultInputRequirement:Bb(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}}}}},Gb=_(`company_website_url`),Kb=_(`technology_list`),qb=_(`spending_trend`),Jb=_(`technology_match_builtwith`),Yb=`company:techstack:builtwith@1`,Xb=r.object({pipe_id:r.literal(Yb),connector:w(),run_if:x(),config:r.object({input_fields:F(r.object({[Gb.name]:T({fieldName:Gb.name})})),output_fields:P(r.object({[Kb.name]:D({fieldName:Kb.name}),[Jb.name]:D({fieldName:Jb.name}),[qb.name]:D({fieldName:qb.name})}))}).optional()}),Zb=e=>R(G(Gb,e)),Qb={"company-techstack-builtwith-v1-builtwith":{provider:`builtwith`,allowManagedConnection:!0,credits:{default:2},mode:`always`}},$b=class extends B{pipeId=Yb;payload;payloadSchema=Xb;billableOperations=Qb;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`builtwith`]}estimateBillableOperations(e){return H(e,`company-techstack-builtwith-v1-builtwith`)}getInputRequirement(){return Zb(this.payload.config)}getRawOutputFields(){return{[Kb.name]:this.catalogOutput(Kb),[Jb.name]:this.catalogOutput(Jb),[qb.name]:this.catalogOutput(qb)}}getConnectionsRequirements(){return[{provider:`builtwith`,rateLimitRatio:1,rateLimitOperation:`builtwith_generic`,allowManagedConnection:!0}]}},ex=Xb,tx={pipeId:Yb,basePipe:U(Yb),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(Yb),billableOperations:Qb,defaultInputRequirement:Zb(null),defaultPayload:{pipe_id:Yb,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}}}}},nx=`company:websiteurl:email@1`,rx=_(`company_website_url`),ix=_(`email`),ax=r.object({pipe_id:r.literal(nx),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[ix.name]:T({fieldName:ix.name})})),output_fields:P(r.object({[rx.name]:D({fieldName:rx.name})}))}).optional()}),ox=e=>R(G(ix,e)),sx={"company-websiteurl-email-v1-pipe0":{credits:{default:0},allowManagedConnection:!0,mode:`always`,provider:`pipe0`}},cx=class extends B{pipeId=nx;payload;payloadSchema=ax;billableOperations=sx;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-websiteurl-email-v1-pipe0`)}getInputRequirement(){return ox(this.payload.config)}getRawOutputFields(){return{[rx.name]:this.catalogOutput(rx)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},lx=ax,ux={pipeId:nx,basePipe:U(nx),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(nx),allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],billableOperations:sx,defaultInputRequirement:ox(null),defaultPayload:{pipe_id:nx,connector:null,run_if:null,config:{input_fields:{email:{alias:``}},output_fields:{company_website_url:{alias:``,enabled:!0}}}}},dx=`people:email:iswork@1`,fx=_(`is_work_email`),px=_(`email`),mx=r.object({pipe_id:r.literal(dx),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[px.name]:T({fieldName:px.name})})),output_fields:P(r.object({[fx.name]:D({fieldName:fx.name})}))}).optional()}),hx=e=>R(G(px,e)),gx={"people-email-iswork-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},_x=class extends B{pipeId=dx;payload;payloadSchema=mx;billableOperations=gx;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`people-email-iswork-v1-pipe0`)}getInputRequirement(){return hx(this.payload.config)}getRawOutputFields(){return{[fx.name]:this.catalogOutput(fx)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},vx=mx,yx={pipeId:dx,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(dx),billableOperations:gx,basePipe:U(dx),allowedUserConnectionProviders:[],inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:hx(null),defaultPayload:{pipe_id:dx,run_if:null,connector:null,config:{input_fields:{email:{alias:``}},output_fields:{is_work_email:{alias:``,enabled:!0}}}}},bx=`people:email:validate:zerobounce@1`,xx=_(`work_email`),Sx=_(`is_email_valid`),Cx=r.object({pipe_id:r.literal(bx),connector:w(),run_if:x(),config:r.object({input_fields:F(r.object({[xx.name]:T({fieldName:xx.name})})),output_fields:P(r.object({[Sx.name]:D({fieldName:Sx.name})}))}).optional()}),wx=e=>R(G(xx,e)),Tx={"people-email-validate-zerobounce-v1-zerobounce":{provider:`zerobounce`,allowManagedConnection:!0,credits:{default:.3},mode:`always`}},Ex=class extends B{pipeId=bx;payload;payloadSchema=Cx;billableOperations=Tx;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`zerobounce`]}estimateBillableOperations(e){return H(e,`people-email-validate-zerobounce-v1-zerobounce`)}getInputRequirement(){return wx(this.payload.config)}getRawOutputFields(){return{[Sx.name]:this.catalogOutput(Sx)}}getConnectionsRequirements(){return[{provider:`zerobounce`,rateLimitRatio:1,rateLimitOperation:`zerobounce_generic`,allowManagedConnection:!0}]}},Dx=Cx,Ox={pipeId:bx,basePipe:U(bx),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:Tx,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`zerobounce`],managedProviders:[`zerobounce`],deprecatedProviders:[],defaultInputRequirement:wx(null),defaultPayload:{pipe_id:bx,connector:null,run_if:null,config:{input_fields:{work_email:{alias:``}},output_fields:{is_email_valid:{alias:``,enabled:!0}}}}},kx=`people:email:validate:zerobounce@2`,Ax=_(`email`),jx=_(`zerobounce_validation_status`),Mx=_(`zerobounce_validation_match`),Nx=r.object({pipe_id:r.literal(kx),connector:w(),run_if:x(),config:r.object({input_fields:F(r.object({[Ax.name]:T({fieldName:Ax.name})})),output_fields:P(r.object({[Mx.name]:D({fieldName:Mx.name}),[jx.name]:D({fieldName:jx.name})}))}).optional()}),Px=e=>R(G(Ax,e)),Fx={"people-email-validate-zerobounce-v2-zerobounce":{provider:`zerobounce`,allowManagedConnection:!0,credits:{default:.3},mode:`always`}},Ix=class extends B{pipeId=kx;payload;payloadSchema=Nx;billableOperations=Fx;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`zerobounce`]}estimateBillableOperations(e){return H(e,`people-email-validate-zerobounce-v2-zerobounce`)}getInputRequirement(){return Px(this.payload.config)}getRawOutputFields(){return{[jx.name]:this.catalogOutput(jx),[Mx.name]:this.catalogOutput(Mx)}}getConnectionsRequirements(){return[{provider:`zerobounce`,rateLimitRatio:1,rateLimitOperation:`zerobounce_generic`,allowManagedConnection:!0}]}},Lx=Nx,Rx={pipeId:kx,basePipe:U(kx),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(kx),billableOperations:Fx,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`zerobounce`],managedProviders:[`zerobounce`],deprecatedProviders:[],defaultInputRequirement:Px(null),defaultPayload:{pipe_id:kx,connector:null,run_if:null,config:{input_fields:{email:{alias:``}},output_fields:{zerobounce_validation_status:{alias:``,enabled:!0},zerobounce_validation_match:{alias:``,enabled:!0}}}}},zx=`people:identity:email:waterfall@1`,Bx=_(`email`),Vx=_(`company_website_url`),Hx=_(`name`),Ux=_(`job_title`),Wx=_(`profile_url`),Gx=_(`company_profile_url`),Kx=_(`company_name`),qx=[`findymail`,`hunter`,`crustdata`],Jx=[`findymail`],Yx=[{provider:`hunter`},{provider:`crustdata`}],Xx=r.object({pipe_id:r.literal(zx),connector:w(),run_if:x(),config:r.object({providers:E({availableProviders:qx,defaultProviders:Yx,deprecatedProviders:Jx,sectionKey:`general`}),input_fields:F(r.object({[Bx.name]:T({fieldName:Bx.name})})),output_fields:P(r.object({[Hx.name]:D({fieldName:Hx.name}),[Wx.name]:D({fieldName:Wx.name}),[Ux.name]:D({fieldName:Ux.name}),[Vx.name]:D({fieldName:Vx.name}),[Kx.name]:D({fieldName:Kx.name}),[Gx.name]:D({fieldName:Gx.name})}))}).optional()}),Zx=e=>R(G(Bx,e)),Qx={"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=zx;payload;payloadSchema=Xx;billableOperations=Qx;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 Zx(this.payload.config)}getRawOutputFields(){return{[Hx.name]:this.catalogOutput(Hx,{isPrimaryOutput:!0}),[Wx.name]:this.catalogOutput(Wx,{isPrimaryOutput:!0}),[Ux.name]:this.catalogOutput(Ux,{isPrimaryOutput:!0}),[Kx.name]:this.catalogOutput(Kx,{isPrimaryOutput:!0}),[Gx.name]:this.catalogOutput(Gx,{isPrimaryOutput:!0}),[Vx.name]:this.catalogOutput(Vx,{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}))}},eS=Xx,tS={pipeId:zx,basePipe:U(zx),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(zx),managedProviders:qx,deprecatedProviders:Jx,allowedUserConnectionProviders:qx,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:Qx,defaultInputRequirement:Zx(null),defaultPayload:{pipe_id:zx,connector:null,run_if:null,config:{providers:Yx,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}}}}},nS=`people:match:role:waterfall@1`,rS=_(`company_website_url`),iS=_(`role_finder_match`),aS=[`leadmagic`],oS=[{provider:`leadmagic`}],sS=r.object({pipe_id:r.literal(nS),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,defaultProviders:oS,availableProviders:aS}),roles:Eu({sectionKey:`general`,groupPath:`config.general`,label:`Roles`,path:`config.roles`,info:`Company roles to include`,maxItems:3,minItems:1}),input_fields:F(r.object({[rS.name]:T({fieldName:rS.name})})),output_fields:P(r.object({[iS.name]:D({fieldName:iS.name})}))})}),cS=e=>Ad(G(rS,e)),lS={"people-match-role-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`}},uS=class extends B{pipeId=nS;payload;payloadSchema=sS;billableOperations=lS;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 cS(this.payload.config)}getRawOutputFields(){return{[iS.name]:this.catalogOutput(iS,{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}))}},dS=sS,fS={pipeId:nS,basePipe:U(nS),managedProviders:aS,deprecatedProviders:[],allowedUserConnectionProviders:aS,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(nS),billableOperations:lS,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:cS(null),defaultPayload:{pipe_id:nS,run_if:null,connector:null,config:{roles:[],providers:oS,input_fields:{company_website_url:{alias:``}},output_fields:{role_finder_match:{alias:``,enabled:!0}}}}},pS=`people:mobilenumber:professionalprofile:waterfall@1`,mS=_(`professional_profile_url`),hS=_(`mobile_number`),gS=[`leadmagic`,`prospeo`],_S=[{provider:`leadmagic`},{provider:`prospeo`}],vS=r.object({pipe_id:r.literal(pS),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,defaultProviders:_S,availableProviders:gS}),input_fields:F(r.object({[mS.name]:T({fieldName:mS.name})})),output_fields:P(r.object({[hS.name]:D({fieldName:hS.name})}))}).optional()}),yS=e=>R(G(mS,e)),bS={"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`}},xS=class extends B{pipeId=pS;payload;payloadSchema=vS;billableOperations=bS;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{[hS.name]:this.catalogOutput(hS)}}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}))}},SS=vS,CS={pipeId:pS,basePipe:U(pS),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:bS,defaultInputRequirement:yS(null),inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:gS,deprecatedProviders:[],allowedUserConnectionProviders:gS,defaultPayload:{pipe_id:pS,connector:null,run_if:null,config:{providers:_S,input_fields:{professional_profile_url:{alias:``}},output_fields:{mobile_number:{alias:``,enabled:!0}}}}},wS=`people:mobilenumber:workemail:waterfall@1`,TS=_(`work_email`),ES=_(`mobile_number`),DS=[`leadmagic`],OS=[{provider:`leadmagic`}],kS=r.object({pipe_id:r.literal(wS),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,availableProviders:DS,defaultProviders:OS}),input_fields:F(r.object({[TS.name]:T({fieldName:TS.name})})),output_fields:P(r.object({[ES.name]:D({fieldName:ES.name})}))}).optional()}),AS=e=>R(G(TS,e)),jS={"people-mobilenumber-workemail-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`}},MS=class extends B{pipeId=wS;payload;payloadSchema=kS;billableOperations=jS;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 AS(this.payload.config)}getRawOutputFields(){return{[ES.name]:this.catalogOutput(ES)}}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}))}},NS=kS,PS={pipeId:wS,basePipe:U(wS),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:jS,defaultInputRequirement:AS(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:DS,managedProviders:DS,deprecatedProviders:[],defaultPayload:{pipe_id:wS,connector:null,run_if:null,config:{providers:OS,input_fields:{work_email:{alias:``}},output_fields:{mobile_number:{alias:``,enabled:!0}}}}},FS=`people:name:split@1`,IS=_(`name`),LS=_(`first_name`),RS=_(`last_name`),zS=r.object({pipe_id:r.literal(FS),connector:au(),run_if:x(),config:r.object({input_fields:F(r.object({[IS.name]:T({fieldName:IS.name})})),output_fields:P(r.object({[LS.name]:D({fieldName:LS.name}),[RS.name]:D({fieldName:RS.name})}))}).optional()}),BS=e=>R(G(IS,e)),VS={"people-name-split-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},HS=class extends B{pipeId=FS;payload;payloadSchema=zS;billableOperations=VS;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`people-name-split-v1-pipe0`)}getInputRequirement(){return BS(this.payload.config)}getRawOutputFields(){return{[LS.name]:this.catalogOutput(LS),[RS.name]:this.catalogOutput(RS)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},US=zS,WS={pipeId:FS,basePipe:U(FS),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(FS),billableOperations:VS,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:BS(null),allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:FS,run_if:null,connector:void 0,config:{input_fields:{name:{alias:``}},output_fields:{first_name:{alias:``,enabled:!0},last_name:{alias:``,enabled:!0}}}}},GS=`people:personalemail:profile:waterfall@1`,KS=_(`profile_url`),qS=_(`personal_email`),JS=_(`alternate_personal_emails`),YS=[`clado`,`leadmagic`,`mixrank`],XS=[{provider:`leadmagic`},{provider:`mixrank`}],ZS=r.object({pipe_id:r.literal(GS),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,availableProviders:YS,defaultProviders:XS}),input_fields:F(r.object({[KS.name]:T({fieldName:KS.name})})),output_fields:P(r.object({[qS.name]:D({fieldName:qS.name}),[JS.name]:D({fieldName:JS.name})}))}).optional()}),QS=e=>R(G(KS,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`}},eC=class extends B{pipeId=GS;payload;payloadSchema=ZS;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 QS(this.payload.config)}getRawOutputFields(){return{[qS.name]:this.catalogOutput(qS,{isPrimaryOutput:!0}),[JS.name]:this.catalogOutput(JS)}}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}))}},tC=ZS,nC={pipeId:GS,basePipe:U(GS),allowedUserConnectionProviders:YS,managedProviders:YS,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(GS),billableOperations:$S,defaultInputRequirement:QS(null),inputFieldMode:`static`,outputFieldMode:`static`,defaultPayload:{pipe_id:GS,connector:null,run_if:null,config:{providers:XS,input_fields:{profile_url:{alias:``}},output_fields:{personal_email:{alias:``,enabled:!0},alternate_personal_emails:{alias:``,enabled:!0}}}}},rC=`people:phone:profile:waterfall@1`,iC=_(`profile_url`),aC=_(`mobile`),oC=[`leadmagic`,`prospeo`,`amplemarket`,`findymail`,`clado`],sC=[`clado`,`findymail`],cC=[{provider:`leadmagic`},{provider:`prospeo`},{provider:`amplemarket`}],lC=r.object({pipe_id:r.literal(rC),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,defaultProviders:cC,availableProviders:oC,deprecatedProviders:sC}),input_fields:F(r.object({[iC.name]:T({fieldName:iC.name})})),output_fields:P(r.object({[aC.name]:D({fieldName:aC.name})}))}).optional()}),uC=e=>R(G(iC,e)),dC={"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`}},fC=class extends B{pipeId=rC;payload;payloadSchema=lC;billableOperations=dC;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 uC(this.payload.config)}getRawOutputFields(){return{[aC.name]:this.catalogOutput(aC,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,prospeo:`prospeo_phone_number_lookup`,findymail:`findymail_phone_lookup`,clado:`clado_contact_information`,amplemarket:`amplemarket_people_find`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},pC=lC,mC={pipeId:rC,basePipe:U(rC),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(rC),tags:[V.PHONE,V.WATERFALL],billableOperations:dC,defaultInputRequirement:uC(null),inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:oC,allowedUserConnectionProviders:oC,deprecatedProviders:sC,defaultPayload:{pipe_id:rC,connector:null,run_if:null,config:{providers:cC,input_fields:{profile_url:{alias:``}},output_fields:{mobile:{alias:``,enabled:!0}}}}},hC=`people:phone:workemail:waterfall@1`,gC=_(`work_email`),_C=_(`mobile`),vC=[`leadmagic`,`amplemarket`],yC=[{provider:`leadmagic`},{provider:`amplemarket`}],bC=r.object({pipe_id:r.literal(hC),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,availableProviders:vC,defaultProviders:yC}),input_fields:F(r.object({[gC.name]:T({fieldName:gC.name})})),output_fields:P(r.object({[_C.name]:D({fieldName:_C.name})}))}).optional()}),xC=e=>R(G(gC,e)),SC={"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`}},CC=class extends B{pipeId=hC;payload;payloadSchema=bC;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 xC(this.payload.config)}getRawOutputFields(){return{[_C.name]:this.catalogOutput(_C,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,amplemarket:`amplemarket_people_find`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},wC=bC,TC={pipeId:hC,basePipe:U(hC),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(hC),billableOperations:SC,defaultInputRequirement:xC(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:vC,managedProviders:vC,deprecatedProviders:[],defaultPayload:{pipe_id:hC,connector:null,run_if:null,config:{providers:yC,input_fields:{work_email:{alias:``}},output_fields:{mobile:{alias:``,enabled:!0}}}}},EC=`people:professionalprofile:waterfall@1`,DC=_(`professional_profile`),OC=_(`professional_profile_url`),kC=[`prospeo`,`icypeas`],AC=[{provider:`prospeo`},{provider:`icypeas`}],jC=r.object({pipe_id:r.literal(EC),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,availableProviders:kC,defaultProviders:AC}),input_fields:F(r.object({[OC.name]:T({fieldName:OC.name})})),output_fields:P(r.object({[DC.name]:D({fieldName:DC.name})}))}).optional()}),MC=e=>R(G(OC,e)),NC={"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}},PC=class extends B{pipeId=EC;payload;payloadSchema=jC;billableOperations=NC;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 MC(this.payload.config)}getRawOutputFields(){return{[DC.name]:this.catalogOutput(DC)}}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}))}},FC=jC,IC={pipeId:EC,basePipe:U(EC),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:kC,deprecatedProviders:[],allowedUserConnectionProviders:kC,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:NC,defaultInputRequirement:MC(null),defaultPayload:{pipe_id:EC,run_if:null,connector:null,config:{providers:AC,input_fields:{professional_profile_url:{alias:``}},output_fields:{professional_profile:{alias:``,enabled:!0}}}}},LC=`people:professionalprofileurl:email:waterfall@1`,RC=_(`email`),zC=_(`work_email`),BC=_(`professional_profile_url`),VC=[`leadmagic`],HC=[{provider:`leadmagic`}],UC=r.object({pipe_id:r.literal(LC),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,defaultProviders:HC,availableProviders:VC}),input_fields:F(r.object({[RC.name]:T({fieldName:RC.name}),[zC.name]:T({fieldName:zC.name})})),output_fields:P(r.object({[BC.name]:D({fieldName:BC.name})}))}).optional()}),WC=e=>Ad(G(RC,e),G(zC,e)),GC={"people-professionalprofileurl-email-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:3.5},mode:`onSuccess`}},KC=class extends B{pipeId=LC;payload;payloadSchema=UC;billableOperations=GC;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 WC(this.payload.config)}getRawOutputFields(){return{[BC.name]:this.catalogOutput(BC)}}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}))}},qC=UC,JC={pipeId:LC,basePipe:U(LC),managedProviders:VC,deprecatedProviders:[],allowedUserConnectionProviders:VC,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:GC,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:WC(null),defaultPayload:{pipe_id:LC,run_if:null,connector:null,config:{providers:HC,input_fields:{email:{alias:``},work_email:{alias:``}},output_fields:{professional_profile_url:{alias:``,enabled:!0}}}}},YC=`people:professionalprofileurl:name@1`,XC=_(`name`),ZC=_(`company_name`),QC=_(`location_hint`),$C=_(`professional_profile_url`),ew=r.object({pipe_id:r.literal(YC),connector:au(),run_if:x(),config:r.object({input_fields:F(r.object({[XC.name]:T({fieldName:XC.name}),[ZC.name]:T({fieldName:ZC.name}),[QC.name]:T({fieldName:QC.name})})),output_fields:P(r.object({[$C.name]:D({fieldName:$C.name})}))}).optional()}),tw=e=>z(R(G(XC,e)),R(G(ZC,e)),jd(G(QC,e))),nw={"people-professionalprofileurl-name-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:.6},mode:`always`}},rw=class extends B{pipeId=YC;payload;payloadSchema=ew;billableOperations=nw;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`people-professionalprofileurl-name-v1-pipe0`)}getInputRequirement(){return tw(this.payload.config)}getRawOutputFields(){return{[$C.name]:this.catalogOutput($C)}}getConnectionsRequirements(){return[{provider:`serper`,rateLimitRatio:1,rateLimitOperation:`serper_search`,allowManagedConnection:!0}]}},iw=ew,aw={pipeId:YC,basePipe:U(YC),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:nw,defaultInputRequirement:tw(null),inputFieldMode:`static`,outputFieldMode:`static`,defaultPayload:{pipe_id:YC,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}}}}},ow=`people:profile:waterfall@1`,sw=_(`profile`),cw=_(`profile_url`),lw=[`prospeo`,`icypeas`,`amplemarket`,`clado`],uw=[{provider:`amplemarket`},{provider:`prospeo`},{provider:`icypeas`}],dw=r.object({pipe_id:r.literal(ow),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,availableProviders:lw,defaultProviders:uw}),input_fields:F(r.object({[cw.name]:T({fieldName:cw.name})})),output_fields:P(r.object({[sw.name]:D({fieldName:sw.name})}))}).optional()}),fw=e=>R(G(cw,e)),pw={"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}},mw=class extends B{pipeId=ow;payload;payloadSchema=dw;billableOperations=pw;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{[sw.name]:this.catalogOutput(sw,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={icypeas:`icypeas_scrape_profile`,prospeo:`prospeo_social_profile_lookup`,clado:`clado_social_profile_lookup`,amplemarket:`amplemarket_people_find`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},hw=dw,gw={pipeId:ow,basePipe:U(ow),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(ow),tags:[V.LINKEDIN,V.WATERFALL],managedProviders:lw,deprecatedProviders:[`clado`],allowedUserConnectionProviders:lw,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:pw,defaultInputRequirement:fw(null),defaultPayload:{pipe_id:ow,run_if:null,connector:null,config:{providers:uw,input_fields:{profile_url:{alias:``}},output_fields:{profile:{alias:``,enabled:!0}}}}},_w=_(`work_email`),vw=_(`crustdata_person_match`),yw=_(`crustdata_profile_match_score`),bw=`people:profile:workemail:crustdata@1`,xw=r.object({pipe_id:r.literal(bw),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[_w.name]:T({fieldName:_w.name})})),output_fields:P(r.object({[vw.name]:D({fieldName:vw.name}),[yw.name]:D({fieldName:yw.name})}))}).optional()}),Sw=e=>R(G(_w,e)),Cw={"people-profile-workemail-crustdata-v1-crustdata":{allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`,provider:`crustdata`}},ww=class extends B{pipeId=bw;payload;payloadSchema=xw;billableOperations=Cw;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`people-profile-workemail-crustdata-v1-crustdata`)}getInputRequirement(){return Sw(this.payload.config)}getRawOutputFields(){return{[vw.name]:this.catalogOutput(vw),[yw.name]:this.catalogOutput(yw)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_realtime_person_enrich`,allowManagedConnection:!0}]}},Tw=xw,Ew={pipeId:bw,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(bw),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(bw),billableOperations:Cw,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:Sw(null),defaultPayload:{pipe_id:bw,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}}}}},Dw=`people:profileurl:email:waterfall@1`,Ow=_(`email`),kw=_(`work_email`),Aw=_(`profile_url`),jw=[`leadmagic`],Mw=[{provider:`leadmagic`}],Nw=r.object({pipe_id:r.literal(Dw),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,defaultProviders:Mw,availableProviders:jw}),input_fields:F(r.object({[Ow.name]:T({fieldName:Ow.name}),[kw.name]:T({fieldName:kw.name})})),output_fields:P(r.object({[Aw.name]:D({fieldName:Aw.name})}))}).optional()}),Pw=e=>Ad(G(Ow,e),G(kw,e)),Fw={"people-profileurl-email-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:3.5},mode:`onSuccess`}},Iw=class extends B{pipeId=Dw;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{[Aw.name]:this.catalogOutput(Aw,{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}))}},Lw=Nw,Rw={pipeId:Dw,basePipe:U(Dw),managedProviders:jw,deprecatedProviders:[],allowedUserConnectionProviders:jw,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(Dw),billableOperations:Fw,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:Pw(null),defaultPayload:{pipe_id:Dw,run_if:null,connector:null,config:{providers:Mw,input_fields:{email:{alias:``},work_email:{alias:``}},output_fields:{profile_url:{alias:``,enabled:!0}}}}},zw=`people:validate:email:zerobounce@1`,Bw=_(`work_email`),Vw=_(`ip_address`),Hw=_(`is_email_valid`),Uw=r.object({pipe_id:r.literal(zw),connector:w(),run_if:x(),config:r.object({input_fields:F(r.object({[Bw.name]:T({fieldName:Bw.name}),[Vw.name]:T({fieldName:Vw.name})})),output_fields:P(r.object({[Hw.name]:D({fieldName:Hw.name})}))}).optional()}),Ww=e=>z(R(G(Bw,e)),jd(G(Vw,e))),Gw={"people-validate-email-zerobounce-v1-zerobounce":{provider:`zerobounce`,allowManagedConnection:!0,credits:{default:.5},mode:`always`}},Kw=class extends B{pipeId=zw;payload;payloadSchema=Uw;billableOperations=Gw;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`zerobounce`]}estimateBillableOperations(e){return H(e,`people-validate-email-zerobounce-v1-zerobounce`)}getInputRequirement(){return Ww(this.payload.config)}getRawOutputFields(){return{[Hw.name]:this.catalogOutput(Hw)}}getConnectionsRequirements(){return[{provider:`zerobounce`,rateLimitRatio:1,rateLimitOperation:`zerobounce_generic`,allowManagedConnection:!0}]}},qw=Uw,Jw={pipeId:zw,basePipe:U(zw),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:Gw,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`zerobounce`],managedProviders:[`zerobounce`],deprecatedProviders:[],defaultInputRequirement:Ww(null),defaultPayload:{pipe_id:zw,connector:null,run_if:null,config:{input_fields:{ip_address:{alias:``},work_email:{alias:``}},output_fields:{is_email_valid:{alias:``,enabled:!0}}}}},Yw=`people:workemail:profileurl:waterfall@1`,Xw=_(`profile_url`),Zw=_(`work_email`),Qw=_(`email_validation_status`),$w=[`hunter`,`amplemarket`,`findymail`,`leadmagic`,`crustdata`,`clado`],eT=[`clado`,`findymail`],tT=[{provider:`hunter`},{provider:`amplemarket`},{provider:`leadmagic`},{provider:`crustdata`}],nT=r.object({pipe_id:r.literal(Yw),connector:w(),run_if:x(),config:r.object({providers:E({availableProviders:$w,defaultProviders:tT,deprecatedProviders:eT,sectionKey:`general`}),allow_catch_all_emails:Nu({path:`config.allow_catch_all_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,info:``,label:`Allow catch-all emails`}),allow_risky_emails:Nu({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({[Xw.name]:T({fieldName:Xw.name})})),output_fields:P(r.object({[Zw.name]:D({fieldName:Zw.name}),[Qw.name]:D({fieldName:Qw.name})}))}).optional()}),rT=e=>R(G(Xw,e)),iT={"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`}},aT=class extends B{pipeId=Yw;payload;payloadSchema=nT;billableOperations=iT;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 rT(this.payload.config)}getRawOutputFields(){return{[Zw.name]:this.catalogOutput(Zw,{isPrimaryOutput:!0}),[Qw.name]:this.catalogOutput(Qw,{isPrimaryOutput:!1})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_b2b_lookup`,hunter:`prospeo_email_lookup`,amplemarket:`amplemarket_people_find`,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}))}},oT=nT,sT={pipeId:Yw,basePipe:U(Yw),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(Yw),managedProviders:$w,allowedUserConnectionProviders:$w,deprecatedProviders:eT,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:iT,defaultInputRequirement:rT(null),defaultPayload:{pipe_id:Yw,connector:null,run_if:null,config:{providers:tT,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}}}}},cT=`people:workemail:waterfall@1`,lT=_(`name`),uT=_(`company_website_url`),dT=_(`company_name`),fT=_(`work_email`),pT=_(`email_validation_status`),mT=[`leadmagic`,`prospeo`,`amplemarket`,`hunter`,`icypeas`,`findymail`],hT=[`icypeas`,`findymail`],gT=[{provider:`leadmagic`},{provider:`prospeo`},{provider:`amplemarket`},{provider:`hunter`}],_T=r.object({pipe_id:r.literal(cT),connector:w(),run_if:x(),config:r.object({providers:E({availableProviders:mT,defaultProviders:gT,deprecatedProviders:hT,sectionKey:`general`}),allow_catch_all_emails:Nu({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:Nu({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({[lT.name]:T({fieldName:lT.name}),[uT.name]:T({fieldName:uT.name}),[dT.name]:T({fieldName:dT.name})})),output_fields:P(r.object({[fT.name]:D({fieldName:fT.name}),[pT.name]:D({fieldName:pT.name})}))}).optional()}),vT=e=>z(R(G(lT,e)),Ad(G(uT,e),G(dT,e))),yT={"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`}},bT=class extends B{pipeId=cT;payload;payloadSchema=_T;billableOperations=yT;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 vT(this.payload.config)}getRawOutputFields(){return{[fT.name]:this.catalogOutput(fT,{isPrimaryOutput:!0}),[pT.name]:this.catalogOutput(pT,{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_people_find`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},xT=_T,ST={pipeId:cT,basePipe:U(cT),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(cT),managedProviders:mT,deprecatedProviders:hT,allowedUserConnectionProviders:mT,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:yT,defaultInputRequirement:vT(null),defaultPayload:{pipe_id:cT,connector:null,run_if:null,config:{providers:gT,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}}}}},CT=_(`email`),wT=_(`amplemarket_person_match`),TT=`person:identity:amplemarket@1`,ET=r.object({pipe_id:r.literal(TT),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[CT.name]:T({fieldName:CT.name})})),output_fields:P(r.object({[wT.name]:D({fieldName:wT.name})}))}).optional()}),DT=e=>R(G(CT,e)),OT={"person-identity-amplemarket-v1-amplemarket":{allowManagedConnection:!1,credits:null,mode:null,provider:`amplemarket`}},kT=class extends B{pipeId=TT;payload;payloadSchema=ET;billableOperations=OT;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`amplemarket`]}estimateBillableOperations(){return[]}getInputRequirement(){return DT(this.payload.config)}getRawOutputFields(){return{[wT.name]:this.catalogOutput(wT)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitRatio:1,rateLimitOperation:`amplemarket_people_find`,allowManagedConnection:!1}]}},AT=ET,jT={pipeId:TT,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(TT),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(TT),billableOperations:OT,allowedUserConnectionProviders:[`amplemarket`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:DT(null),defaultPayload:{pipe_id:TT,connector:null,run_if:null,config:{input_fields:{email:{alias:``}},output_fields:{amplemarket_person_match:{alias:``,enabled:!0}}}}},MT=`person:identity:email:waterfall@1`,NT=_(`email`),PT=_(`company_domain`),FT=_(`name`),IT=_(`job_title`),LT=_(`profile_url`),RT=_(`company_profile_url`),zT=_(`company_name`),BT=[`findymail`,`hunter`,`crustdata`],VT=[`findymail`],HT=[{provider:`hunter`},{provider:`crustdata`}],UT=r.object({pipe_id:r.literal(MT),connector:w(),run_if:x(),config:r.object({providers:E({availableProviders:BT,defaultProviders:HT,deprecatedProviders:VT,sectionKey:`general`}),input_fields:F(r.object({[NT.name]:T({fieldName:NT.name})})),output_fields:P(r.object({[FT.name]:D({fieldName:FT.name}),[LT.name]:D({fieldName:LT.name}),[IT.name]:D({fieldName:IT.name}),[PT.name]:D({fieldName:PT.name}),[zT.name]:D({fieldName:zT.name}),[RT.name]:D({fieldName:RT.name})}))}).optional()}),WT=e=>R(G(NT,e)),GT={"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`}},KT=class extends B{pipeId=MT;payload;payloadSchema=UT;billableOperations=GT;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 WT(this.payload.config)}getRawOutputFields(){return{[FT.name]:this.catalogOutput(FT,{isPrimaryOutput:!0}),[LT.name]:this.catalogOutput(LT,{isPrimaryOutput:!0}),[IT.name]:this.catalogOutput(IT,{isPrimaryOutput:!0}),[zT.name]:this.catalogOutput(zT,{isPrimaryOutput:!0}),[RT.name]:this.catalogOutput(RT,{isPrimaryOutput:!0}),[PT.name]:this.catalogOutput(PT,{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}))}},qT=UT,JT={pipeId:MT,basePipe:U(MT),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(MT),managedProviders:BT,deprecatedProviders:VT,allowedUserConnectionProviders:BT,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:GT,defaultInputRequirement:WT(null),defaultPayload:{pipe_id:MT,connector:null,run_if:null,config:{providers:HT,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}}}}},YT=_(`profile_url`),XT=_(`amplemarket_person_match`),ZT=`person:match:amplemarket@1`,QT=r.object({pipe_id:r.literal(ZT),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[YT.name]:T({fieldName:YT.name})})),output_fields:P(r.object({[XT.name]:D({fieldName:XT.name})}))}).optional()}),$T=e=>R(G(YT,e)),eE={"person-match-amplemarket-v1-amplemarket":{allowManagedConnection:!1,credits:null,mode:null,provider:`amplemarket`}},tE=class extends B{pipeId=ZT;payload;payloadSchema=QT;billableOperations=eE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`amplemarket`]}estimateBillableOperations(){return[]}getInputRequirement(){return $T(this.payload.config)}getRawOutputFields(){return{[XT.name]:this.catalogOutput(XT)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitRatio:1,rateLimitOperation:`amplemarket_people_find`,allowManagedConnection:!1}]}},nE=QT,rE={pipeId:ZT,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(ZT),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(ZT),billableOperations:eE,allowedUserConnectionProviders:[`amplemarket`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:$T(null),defaultPayload:{pipe_id:ZT,connector:null,run_if:null,config:{input_fields:{profile_url:{alias:``}},output_fields:{amplemarket_person_match:{alias:``,enabled:!0}}}}},iE=`person:match:role:waterfall@1`,aE=_(`company_domain`),oE=_(`role_finder_match`),sE=[`amplemarket`,`leadmagic`,`crustdata`],cE=[{provider:`amplemarket`},{provider:`leadmagic`},{provider:`crustdata`}],lE=r.object({pipe_id:r.literal(iE),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,defaultProviders:cE,availableProviders:sE}),roles:Du({sectionKey:`general`,groupPath:`config.general`,label:`Roles`,path:`config.roles`,info:`Company roles to include`,maxItems:3,minItems:1,suggestionsDef:g(`titles`),expectedTagType:`string`}),input_fields:F(r.object({[aE.name]:T({fieldName:aE.name})})),output_fields:P(r.object({[oE.name]:D({fieldName:oE.name})}))})}),uE=e=>Ad(G(aE,e)),dE={"person-match-role-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`},"person-match-role-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`},"person-match-role-waterfall-v1-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`}},fE=class extends B{pipeId=iE;payload;payloadSchema=lE;billableOperations=dE;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 uE(this.payload.config)}getSecretRequirements(){return q(this.payload.config?.roles??[])}getConstantRequirements(){return gp(this.payload.config?.roles??[])}getRawOutputFields(){return{[oE.name]:this.catalogOutput(oE,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_role_finder`,amplemarket:`amplemarket_people_search`,crustdata:`crustdata_people_db_search`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},pE=lE,mE={pipeId:iE,basePipe:U(iE),managedProviders:sE,deprecatedProviders:[],allowedUserConnectionProviders:sE,label:`Role finder`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-08-06`,replacedBy:`role:waterfall@1`},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(iE),billableOperations:dE,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:uE(null),defaultPayload:{pipe_id:iE,run_if:null,connector:null,config:{roles:[],providers:cE,input_fields:{company_domain:{alias:``}},output_fields:{role_finder_match:{alias:``,enabled:!0}}}}},hE=`person:profile:waterfall@1`,gE=_(`profile`),_E=_(`profile_url`),vE=[`prospeo`,`icypeas`,`amplemarket`],yE=[{provider:`amplemarket`},{provider:`prospeo`},{provider:`icypeas`}],bE=r.object({pipe_id:r.literal(hE),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,availableProviders:vE,defaultProviders:yE}),input_fields:F(r.object({[_E.name]:T({fieldName:_E.name})})),output_fields:P(r.object({[gE.name]:D({fieldName:gE.name})}))}).optional()}),xE=e=>R(G(_E,e)),SE={"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}},CE=class extends B{pipeId=hE;payload;payloadSchema=bE;billableOperations=SE;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 xE(this.payload.config)}getRawOutputFields(){return{[gE.name]:this.catalogOutput(gE,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={icypeas:`icypeas_scrape_profile`,prospeo:`prospeo_social_profile_lookup`,amplemarket:`amplemarket_people_find`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},wE=bE,TE={pipeId:hE,basePipe:U(hE),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(hE),tags:[V.LINKEDIN,V.WATERFALL],keywords:[`enrich`,`enrichment`,`json`,`scrape`,`bio`,`experience`],managedProviders:vE,deprecatedProviders:[],allowedUserConnectionProviders:vE,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:SE,defaultInputRequirement:xE(null),defaultPayload:{pipe_id:hE,run_if:null,connector:null,config:{providers:yE,input_fields:{profile_url:{alias:``}},output_fields:{profile:{alias:``,enabled:!0}}}}},EE=`website:extract:firecrawl@1`,DE=_(`website_url`),OE=_(`firecrawl_extract_result`),kE=r.object({pipe_id:r.literal(EE),connector:w(),run_if:x(),config:r.object({json_schema:Hu({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:Iu({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.`,guide:`Template tags are not supported.`,rows:5,minLength:10,placeholder:`E.g. Extract the company missing and latest news.`}),enable_full_domain_crawl:Nu({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:Nu({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.`,guide:`When true, the extraction follows links outside the specified domain.`}),input_fields:F(r.object({[DE.name]:T({fieldName:DE.name})})),output_fields:P(r.object({[OE.name]:D({fieldName:OE.name})}))})}),AE=e=>R(G(DE,e)),jE={"website-extract-firecrawl-v1-firecrawl":{allowManagedConnection:!0,provider:`firecrawl`,credits:{default:2,level1:{credits:1,weight:1}},mode:`onSuccess`}},ME=class extends B{pipeId=EE;payload;payloadSchema=kE;billableOperations=jE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`firecrawl`]}estimateBillableOperations(e){return H(e,`website-extract-firecrawl-v1-firecrawl`)}getInputRequirement(){return AE(this.payload.config)}getRawOutputFields(){return{[OE.name]:this.catalogOutput(OE)}}getConnectionsRequirements(){return[{provider:`firecrawl`,rateLimitRatio:1,rateLimitOperation:`firecrawl_generic`,allowManagedConnection:!0}]}},NE=kE,PE={pipeId:EE,basePipe:U(EE),label:`Extract`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-08-10`,replacedBy:`website:extract:parallel@1`},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(EE),billableOperations:jE,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`firecrawl`],managedProviders:[`firecrawl`],deprecatedProviders:[],defaultInputRequirement:AE(null),defaultPayload:{pipe_id:EE,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}}}}},FE=`website:maplinks:firecrawl@1`,IE={"website-maplinks-firecrawl-v1-firecrawl":{allowManagedConnection:!0,provider:`firecrawl`,credits:{default:1},mode:`onSuccess`}},LE=_(`website_url`),RE=_(`mapped_links`),zE=r.object({pipe_id:r.literal(FE),connector:w(),run_if:x(),config:r.object({page_limit:Bu({label:`Page limit`,info:`Number of pages searched`,groupPath:`config.general`,max:50,min:1,path:`config.page_limit`,sectionKey:`general`}).nullish(),sitemap:Lu({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:Fu({sectionKey:`general`,label:`Search`,inputType:`text`,info:`Return matching urls`,groupPath:`config.general`,path:`config.search`}).nullable().default(``),input_fields:F(r.object({[LE.name]:T({fieldName:LE.name})})),output_fields:P(r.object({[RE.name]:D({fieldName:RE.name})}))}).optional()}),BE=e=>R(G(LE,e)),VE=class extends B{pipeId=FE;payload;payloadSchema=zE;billableOperations=IE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`firecrawl`]}estimateBillableOperations(e){return H(e,`website-maplinks-firecrawl-v1-firecrawl`)}getInputRequirement(){return BE(this.payload.config)}getRawOutputFields(){return{[RE.name]:this.catalogOutput(RE)}}getConnectionsRequirements(){return[{provider:`firecrawl`,rateLimitRatio:1,rateLimitOperation:`firecrawl_map_requests`,allowManagedConnection:!0}]}},HE=zE,UE={pipeId:FE,basePipe:U(FE),label:`Map domain links`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-08-10`,replacedBy: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(FE),billableOperations:IE,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`firecrawl`],managedProviders:[`firecrawl`],deprecatedProviders:[],defaultInputRequirement:BE(null),defaultPayload:{pipe_id:FE,run_if:null,connector:null,config:{page_limit:25,sitemap:`include`,search:``,input_fields:{website_url:{alias:``}},output_fields:{mapped_links:{alias:``,enabled:!0}}}}},WE=`website:scrape:firecrawl@1`,GE=_(`website_url`),KE=_(`website_markdown`),qE=_(`website_html`),JE=_(`website_links`),YE=r.object({pipe_id:r.literal(WE),connector:w(),run_if:x(),config:r.object({scrape_main_only:Nu({defaultValue:!1,label:`Scrape main content only?`,info:`If selected, content like headers, footers, and sidebars are excluded from the scrape results.`,guide:`Excludes headers, footers, and sidebars from the scrape results.`,sectionKey:`general`,groupPath:`config.general`,path:`config.scrape_main_only`}),input_fields:F(r.object({[GE.name]:T({fieldName:GE.name})})),output_fields:P(r.object({[KE.name]:D({fieldName:KE.name}),[qE.name]:D({fieldName:qE.name}),[JE.name]:D({fieldName:JE.name})}))}).optional()}),XE=e=>R(G(GE,e)),ZE={"website-scrape-firecrawl-v1-firecrawl":{allowManagedConnection:!0,provider:`firecrawl`,credits:{default:.1,level1:{credits:.05,weight:1}},mode:`onSuccess`}},QE=class extends B{pipeId=WE;payload;payloadSchema=YE;billableOperations=ZE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`firecrawl`]}estimateBillableOperations(e){return H(e,`website-scrape-firecrawl-v1-firecrawl`)}getInputRequirement(){return XE(this.payload.config)}getRawOutputFields(){return{[KE.name]:this.catalogOutput(KE),[qE.name]:this.catalogOutput(qE),[JE.name]:this.catalogOutput(JE)}}getConnectionsRequirements(){return[{provider:`firecrawl`,rateLimitRatio:1,rateLimitOperation:`firecrawl_generic`,allowManagedConnection:!0}]}},$E=YE,eD={pipeId:WE,basePipe:U(WE),label:`Scrape`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-08-10`,replacedBy:`website:markdown:parallel@1`},description:`Turn any URL into clean data.`,tags:[V.SCRAPE],keywords:[`crawl`,`html`,`markdown`,`content`,`web page`,`fetch`],docPath:W(WE),billableOperations:ZE,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`firecrawl`],managedProviders:[`firecrawl`],deprecatedProviders:[],defaultInputRequirement:XE(null),defaultPayload:{pipe_id:WE,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}}}}},tD=`website:scrapelist:firecrawl@1`,nD={"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.`}},rD=_(`urls`),iD=_(`scrape_list_response`),aD=r.object({pipe_id:r.literal(tD),connector:w(),run_if:x(),config:r.object({scrape_main_only:Nu({label:`Scrape main content only?`,defaultValue:!1,info:`If selected headers, footers, and sidebars will be excluded from the results.`,guide:`Excludes headers, footers, and sidebars from the scrape results.`,sectionKey:`general`,groupPath:`config.general`,path:`config.scrape_main_only`}),formats:zu({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({[rD.name]:T({fieldName:rD.name})})),output_fields:P(r.object({[iD.name]:D({fieldName:iD.name})}))}).optional()}),oD=e=>R(G(rD,e)),sD=class extends B{pipeId=tD;payload;payloadSchema=aD;billableOperations=nD;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 oD(this.payload.config)}getRawOutputFields(){return{[iD.name]:this.catalogOutput(iD)}}getConnectionsRequirements(){return[{provider:`firecrawl`,rateLimitRatio:1,rateLimitOperation:`firecrawl_generic`,allowManagedConnection:!0}]}},cD=aD,lD={pipeId:tD,basePipe:U(tD),label:`Scrape list`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-08-10`,replacedBy:null},description:`Turn a list of URLs into clean scraped data.`,tags:[V.SCRAPE],keywords:[`crawl`,`html`,`markdown`,`content`,`batch`,`bulk`],docPath:W(tD),billableOperations:nD,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`firecrawl`],managedProviders:[`firecrawl`],deprecatedProviders:[],defaultInputRequirement:oD(null),defaultPayload:{pipe_id:tD,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}}}}},uD=`email:draft:gmail@1`,dD=_(`gmail_draft_id`),fD=r.object({pipe_id:r.literal(uD),connector:C(),run_if:x(),config:r.object({to:S({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:S({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:S({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:S({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.",guide:`Markdown; rendered to HTML when the draft is created.`,placeholder:`Hi {{ first_name }},
75
+ `),data:a}}const kp=_(`hubspot_object_id`),Ap=_(`hubspot_activity_result`),jp=`activity:log:hubspot@1`,Mp=(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.`)}},Np=r.object({pipe_id:r.literal(jp),run_if:x(),connector:C(),config:r.object({type:Lu({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:S({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:Iu({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:S({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.`,guide:`ISO timestamp or epoch ms — HubSpot requires one on every engagement. Empty = now.`}),record_object_type:Uu({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:v(`hubspot`),optionsDef:Cp}),owner:Uu({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.`,guide:`Assigns hubspot_owner_id. Empty = unassigned.`,enabledIf:v(`hubspot`),optionsDef:Tp}),values:Ou({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.",guide:`Blank values are skipped.`,keyLabel:`Property name`,valueLabel:`Value`,keyPlaceholder:`hs_task_status`,valuePlaceholder:`NOT_STARTED`,maxKeys:50}),input_fields:F(r.object({[kp.name]:T({fieldName:kp.name})})),output_fields:P(r.object({[Ap.name]:D({fieldName:Ap.name})}))}).check(e=>Mp(e,`values`))}),Pp=e=>R(G(kp,e)),Fp={"activity-log-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},Ip=class extends B{pipeId=jp;payload;payloadSchema=Np;billableOperations=Fp;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(Pp(this.payload.config),...yp(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[Ap.name]:this.catalogOutput(Ap)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_generic`,allowManagedConnection:!1}]}async getAgentContext(e){let t=this.payload.config.type,n=vp[t]??`0-46`;return Op(e,{objectTypes:[[`${t} engagement`,n]],writableOnly:!0})}},Lp=Np,Rp={pipeId:jp,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(jp),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(jp),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).",hasSideEffects:!0,billableOperations:Fp,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:Pp(null),defaultPayload:{pipe_id:jp,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}}}}},zp=_(`salesforce_record_id`),Bp=_(`salesforce_activity_result`),Vp=`activity:log:salesforce@1`,Hp=(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).`)}},Up=r.object({pipe_id:r.literal(Vp),run_if:x(),connector:C(),config:r.object({subject:S({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:Iu({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:Lu({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:Uu({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:v(`salesforce`),optionsDef:uf}),related_record:S({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:S({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.`,guide:`Due/logged date, YYYY-MM-DD. Empty = today.`}),owner:Uu({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.`,guide:`Assigns OwnerId. Empty = the connected user.`,enabledIf:v(`salesforce`),optionsDef:cf}),external_id_field:Uu({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:v(`salesforce`),optionsDef:df}),external_id_value:S({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:Ou({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.",guide:"Keys are Task field API names (e.g. `Priority`), custom fields included. Blank values are skipped.",keyLabel:`Field API name`,valueLabel:`Value`,keyPlaceholder:`Priority`,valuePlaceholder:`High`,maxKeys:50}),input_fields:F(r.object({[zp.name]:T({fieldName:zp.name})})),output_fields:P(r.object({[Bp.name]:D({fieldName:Bp.name})}))}).check(e=>Hp(e,`values`))}),Wp=e=>jd(G(zp,e)),Gp={"activity-log-salesforce-v1-salesforce":{allowManagedConnection:!1,credits:null,mode:null,provider:`salesforce`}},Kp=class extends B{pipeId=Vp;payload;payloadSchema=Up;billableOperations=Gp;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(Wp(this.payload.config),...hf(this.getTemplates()))}getSecretRequirements(){return q(this.getTemplates())}getRawOutputFields(){return{[Bp.name]:this.catalogOutput(Bp)}}getConnectionsRequirements(){return[{provider:`salesforce`,rateLimitRatio:1,rateLimitOperation:`salesforce_api`,allowManagedConnection:!1}]}async getAgentContext(e){return gf(e,{objects:[`Task`],includeTaskMeta:!0,writableOnly:!0})}},qp=Up,Jp={pipeId:Vp,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Vp),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(Vp),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).",hasSideEffects:!0,billableOperations:Gp,allowedUserConnectionProviders:[`salesforce`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:Wp(null),defaultPayload:{pipe_id:Vp,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}}}}},Yp={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 Yp[e]}const Xp=`agent:run@1`,Zp=`agent-run-v1`,Qp=[{value:`web_researcher`,label:`Web researcher`,widgets:{emoji:{char:`🔎`}}}],$p={...cl(Zp),"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.`},"agent-run-v1-task-parallel":{allowManagedConnection:!0,provider:`parallel`,credits:{default:.5},mode:`always`,note:`Billed per deep-research task the agent delegates (multi-page server-side research).`}},em=r.object({pipe_id:r.literal(Xp),connector:w(),run_if:x(),config:r.object({agent_type:Lu({sectionKey:`general`,groupPath:`config.prompt`,path:`config.agent_type`,label:`Agent type`,defaultValue:`web_researcher`,options:[...Qp],required:!0}),prompt:nu({sectionKey:`general`,path:`config.prompt`,placeholder:J(`prompt`),groupPath:`config.prompt`,supportedTags:[`input`,`output`]}),model:Ru({sectionKey:`general`,label:`Model`,path:`config.model`,groupPath:`config.prompt`,billableOperations:$p,defaultValue:Qc})})}),tm=class extends B{pipeId=Xp;payload;payloadSchema=em;billableOperations=$p;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[...tl(this.payload.config.model),`parallel`]}estimateBillableOperations(e){return[...ul(e,{model:this.payload.config.model,prefix:Zp,inputTokens:2e4,outputTokens:1500}),{billableOperation:`agent-run-v1-search-parallel`,quantity:e.count*4},{billableOperation:`agent-run-v1-extract-parallel`,quantity:e.count*1},{billableOperation:`agent-run-v1-task-parallel`,quantity:e.count*1}]}getInputRequirement(){return hp([this.payload.config.prompt.template])}getSecretRequirements(){return q([this.payload.config.prompt.template])}getConstantRequirements(){return gp([this.payload.config.prompt.template])}getRawOutputFields(){let e=this.payload.config.prompt.template,t=this.payload.config.prompt.json_schemas??{},n={},r;try{r=fc(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[...nl(this.payload.config.model),{provider:`parallel`,rateLimitRatio:5,rateLimitOperation:`parallel_search`,allowManagedConnection:!0},{provider:`parallel`,rateLimitRatio:1,rateLimitOperation:`parallel_extract`,allowManagedConnection:!0},{provider:`parallel`,rateLimitRatio:1,rateLimitOperation:`parallel_task`,allowManagedConnection:!0}]}},nm=em,rm={pipeId:Xp,inputFieldMode:`config`,outputFieldMode:`config`,basePipe:U(Xp),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 (optionally scoped to specific domains), URL extraction, and a deep-research fallback, 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(Xp),defaultInputRequirement:null,billableOperations:$p,allowedUserConnectionProviders:[...rl(),`parallel`],managedProviders:[...rl(),`parallel`],deprecatedProviders:[],defaultPayload:{pipe_id:Xp,connector:null,run_if:null,config:{agent_type:`web_researcher`,model:Qc,prompt:{template:``,json_schemas:{}}}}},im=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.`})}),am=()=>r.string().nullable().default(``),om=e=>({requires:{connection:`pipe0`},enabledIf:v(`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`}}}),sm=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:om(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,y.add(t,i),t},cm={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`}]},lm=()=>Fu({label:`New bucket: name`,path:`config.new_bucket_name`,groupPath:`config.bucket_creation`,sectionKey:`general`,inputType:`text`,placeholder:`CRM contacts`,maxLength:120}).nullable().default(``),um=()=>({new_bucket_name:lm(),new_bucket_ttl_in_seconds:Bu({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:Lu({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:cm.on_own_entry}).default(`block`),new_bucket_missing_value_behavior:Lu({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:cm.on_missing}).default(`proceed`)}),dm=()=>({new_bucket_name:lm(),new_bucket_start:Bu({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:Bu({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)}),fm=()=>({new_bucket_name:lm()}),pm={provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_api_operation`,allowManagedConnection:!0};function mm(e){let t=pt(e.contract),n=e.entry_fields??[],r=[hp([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=>Zd(e,n)?.type||`unknown`,format:null})});return i.length>0&&r.push(Ad(...i)),z(...r)}function hm(e){return q([ot(e.bucket)])}function gm(e){return gp([ot(e.bucket)])}const _m=`bucket:check@1`,vm=_(`found_in_bucket`),ym=r.object({pipe_id:r.literal(_m),connector:C(),run_if:x(),config:r.object({bucket:sm(`claim`),entry_fields:im,contract:am(),output_fields:P(r.object({[vm.name]:D({fieldName:vm.name})}))})}),bm={"bucket-check-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-check-v1-pipe0`)}getInputRequirement(){return mm(this.payload.config)}getSecretRequirements(){return hm(this.payload.config)}getConstantRequirements(){return gm(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{[vm.name]:this.catalogOutput(vm)}}getConnectionsRequirements(){return[pm]}},Sm=ym,Cm={pipeId:_m,basePipe:U(_m),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(_m),tags:[V.FIELDS],keywords:[`suppression`,`do not contact`,`blocklist`,`lookup`,`exclude`,`gate`,`dedupe`],billableOperations:bm,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:_m,connector:{strategy:`first`,connections:[]},run_if:null,config:{bucket:``,entry_fields:[],contract:``,output_fields:{found_in_bucket:{alias:``,enabled:!0}}}}},wm=`bucket:claim@1`,Tm=_(`is_claim_successful`),Em=r.object({pipe_id:r.literal(wm),connector:C(),run_if:x(),config:r.object({bucket:sm(`claim`),entry_fields:im,contract:am(),...um(),allow_bucket_creation:Nu({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({[Tm.name]:D({fieldName:Tm.name})}))})}),Dm={"bucket-claim-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},Om=class extends B{pipeId=wm;payload;payloadSchema=Em;billableOperations=Dm;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`bucket-claim-v1-pipe0`)}getInputRequirement(){return mm(this.payload.config)}getSecretRequirements(){return hm(this.payload.config)}getConstantRequirements(){return gm(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{[Tm.name]:this.catalogOutput(Tm)}}getConnectionsRequirements(){return[pm]}},km=Em,Am={pipeId:wm,basePipe:U(wm),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(wm),tags:[V.FIELDS],keywords:[`dedupe`,`deduplicate`,`duplicate`,`guard`,`reserve`,`idempotent`,`lock`],billableOperations:Dm,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:wm,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}}}}},jm=`bucket:count@1`,Mm=_(`bucket_counter`),Nm=r.object({pipe_id:r.literal(jm),connector:C(),run_if:x(),config:r.object({bucket:sm(`counter`),entry_fields:im,contract:am(),...dm(),allow_bucket_creation:Nu({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({[Mm.name]:D({fieldName:Mm.name})}))})}),Pm={"bucket-count-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},Fm=class extends B{pipeId=jm;payload;payloadSchema=Nm;billableOperations=Pm;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`bucket-count-v1-pipe0`)}getInputRequirement(){return mm(this.payload.config)}getSecretRequirements(){return hm(this.payload.config)}getConstantRequirements(){return gm(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{[Mm.name]:this.catalogOutput(Mm)}}getConnectionsRequirements(){return[pm]}},Im=Nm,Lm={pipeId:jm,basePipe:U(jm),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(jm),tags:[V.FIELDS],keywords:[`counter`,`sequence`,`increment`,`numbering`,`bucket`],billableOperations:Pm,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:jm,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}}}}},Rm=`bucket:countif@1`,zm=_(`bucket_event_count`),Bm=_(`bucket_event_last_at`),Vm=r.object({pipe_id:r.literal(Rm),connector:C(),run_if:x(),config:r.object({bucket:sm(`event_counter`),entry_fields:im,contract:am(),where:Yl({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.`}),...fm(),allow_bucket_creation:Nu({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({[zm.name]:D({fieldName:zm.name}),[Bm.name]:D({fieldName:Bm.name})}))})}),Hm={"bucket-countif-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},Um=class extends B{pipeId=Rm;payload;payloadSchema=Vm;billableOperations=Hm;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`bucket-countif-v1-pipe0`)}getInputRequirement(){return mm(this.payload.config)}getSecretRequirements(){return hm(this.payload.config)}getConstantRequirements(){return gm(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{[zm.name]:this.catalogOutput(zm),[Bm.name]:this.catalogOutput(Bm)}}getConnectionsRequirements(){return[pm]}},Wm=Vm,Gm={pipeId:Rm,basePipe:U(Rm),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; setting 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(Rm),tags:[V.FIELDS],keywords:[`count`,`counter`,`increment`,`events`,`error count`,`attempts`,`retry cap`,`failures`,`tally`,`bucket`],billableOperations:Hm,defaultInputRequirement:null,inputFieldMode:`config`,outputFieldMode:`static`,defaultPayload:{pipe_id:Rm,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}}}}},Km=`company:domain:workemail@1`,qm=_(`company_domain`),Jm=_(`work_email`),Ym=r.object({pipe_id:r.literal(Km),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[Jm.name]:T({fieldName:Jm.name})})),output_fields:P(r.object({[qm.name]:D({fieldName:qm.name})}))}).optional()}),Xm=e=>R(G(Jm,e)),Zm={"company-domain-workemail-v1-pipe0":{credits:{default:0},allowManagedConnection:!0,mode:`always`,provider:`pipe0`}},Qm=class extends B{pipeId=Km;payload;payloadSchema=Ym;billableOperations=Zm;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-domain-workemail-v1-pipe0`)}getInputRequirement(){return Xm(this.payload.config)}getRawOutputFields(){return{[qm.name]:this.catalogOutput(qm)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},$m=Ym,eh={pipeId:Km,basePipe:U(Km),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(Km),allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],billableOperations:Zm,defaultInputRequirement:Xm(null),defaultPayload:{pipe_id:Km,connector:null,run_if:null,config:{input_fields:{[Jm.name]:{alias:``}},output_fields:{[qm.name]:{alias:``,enabled:!0}}}}};function th(e){return(e.widgets||{}).display_value?.label}function nh(e){console.dir(e,{depth:100})}function rh(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 ih(e){if(typeof e!=`object`||!e||Array.isArray(e))return e;let t={};return Object.keys(e).sort().forEach(n=>{t[n]=ih(e[n])}),t}const ah={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 oh=`company:funding:waterfall@1`,sh=_(`company_name`),ch=_(`company_domain`),lh=_(`funding_history`),uh=_(`funding_total_usd`),dh=[`amplemarket`,`leadmagic`],fh=[{provider:`amplemarket`},{provider:`leadmagic`}],ph={"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`}},mh=r.object({pipe_id:r.literal(oh),connector:w(),run_if:x(),config:r.object({providers:E({availableProviders:dh,defaultProviders:fh,sectionKey:`general`,providerCredits:Bd(ph,dh)}),input_fields:F(r.object({[sh.name]:T({fieldName:sh.name}),[ch.name]:T({fieldName:ch.name})})),output_fields:P(r.object({[lh.name]:D({fieldName:lh.name}),[uh.name]:D({fieldName:uh.name})}))}).optional()}),hh=e=>Ad(G(sh,e),G(ch,e)),gh=class extends B{pipeId=oh;payload;payloadSchema=mh;billableOperations=ph;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 hh(this.payload.config)}getRawOutputFields(){return{[lh.name]:this.catalogOutput(lh,{isPrimaryOutput:!0}),[uh.name]:this.catalogOutput(uh)}}getConnectionsRequirements(){let e={amplemarket:`amplemarket_company_find`,leadmagic:`leadmagic_company_funding`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},_h=mh,vh={pipeId:oh,basePipe:U(oh),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(oh),managedProviders:dh,deprecatedProviders:[],allowedUserConnectionProviders:dh,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:ph,defaultInputRequirement:hh(null),defaultPayload:{pipe_id:oh,connector:null,run_if:null,config:{providers:fh,input_fields:{company_name:{alias:``},company_domain:{alias:``}},output_fields:{funding_history:{alias:``,enabled:!0},funding_total_usd:{alias:``,enabled:!0}}}}},yh=_(`company_name`),bh=_(`company_profile_url`),xh=_(`company_domain`),Sh=_(`cleaned_company_name`),Ch=`company:identity@3`,wh=r.object({pipe_id:r.literal(Ch),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[yh.name]:T({fieldName:yh.name})})),output_fields:P(r.object({[bh.name]:D({fieldName:bh.name}),[Sh.name]:D({fieldName:Sh.name}),[xh.name]:D({fieldName:xh.name})}))}).optional()}),Th=e=>R(G(yh,e)),Eh={"company-identity-v3-pipe0":{allowManagedConnection:!0,credits:{default:.3,level1:{credits:.2,weight:1}},mode:`always`,provider:`pipe0`}},Dh=class extends B{pipeId=Ch;payload;payloadSchema=wh;billableOperations=Eh;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-identity-v3-pipe0`)}getInputRequirement(){return Th(this.payload.config)}getRawOutputFields(){return{[bh.name]:this.catalogOutput(bh),[xh.name]:this.catalogOutput(xh),[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}]}},Oh=wh,kh={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:Eh,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:Th(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}}}}},Ah=_(`company_domain`),jh=_(`company_name`),Mh=_(`crustdata_company_identity_matches`),Nh=`company:identity:crustdata@1`,Ph=r.object({pipe_id:r.literal(Nh),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[Ah.name]:T({fieldName:Ah.name}),[jh.name]:T({fieldName:jh.name})})),output_fields:P(r.object({[Mh.name]:D({fieldName:Mh.name})}))}).optional()}),Fh=e=>Ad(G(Ah,e),G(jh,e)),Ih={"company-identity-crustdata-v1-crustdata":{allowManagedConnection:!0,credits:{default:.001},mode:`onSuccess`,provider:`crustdata`}},Lh=class extends B{pipeId=Nh;payload;payloadSchema=Ph;billableOperations=Ih;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`company-identity-crustdata-v1-crustdata`)}getInputRequirement(){return Fh(this.payload.config)}getRawOutputFields(){return{[Mh.name]:this.catalogOutput(Mh)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_company_identify`,allowManagedConnection:!0}]}},Rh=Ph,zh={pipeId:Nh,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Nh),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(Nh),billableOperations:Ih,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:Fh(null),defaultPayload:{pipe_id:Nh,connector:null,run_if:null,config:{input_fields:{company_domain:{alias:``},company_name:{alias:``}},output_fields:{crustdata_company_identity_matches:{alias:``,enabled:!0}}}}},Bh=`company:jobs:amplemarket@1`,Vh=_(`company_domain`),Hh=_(`company_profile_url`),Uh=_(`open_job_matches`),Wh=_(`open_job_match_count`),Gh=r.object({pipe_id:r.literal(Bh),run_if:x(),connector:w(),config:r.object({job_functions:zu({sectionKey:`general`,groupPath:`config.general`,label:`Job function`,path:`config.job_functions`,placeholder:J(`job_function`),disableSearch:!1,required:!1,description:``,options:h(`amplemarket.job_functions`)}).default([]),job_departments:zu({sectionKey:`general`,groupPath:`config.general`,label:`Department`,path:`config.job_departments`,placeholder:`Revenue, Engineering & Technical, ...`,disableSearch:!1,required:!1,description:``,info:`Broader than job function — 'Revenue' covers Sales, Sales Engineering and Revenue Operations. Reported back as the posting's job category.`,guide:`Broader than job function — 'Revenue' covers Sales, Sales Engineering and Revenue Operations. Reported back as the posting's job category.`,options:h(`amplemarket.departments`)}).default([]),job_seniorities:zu({sectionKey:`general`,groupPath:`config.general`,label:`Seniority`,path:`config.job_seniorities`,placeholder:`VP, Director, Manager, ...`,disableSearch:!1,required:!1,description:``,options:h(`amplemarket.seniority_levels`)}).default([]),find_remote_opportunities_only:Nu({sectionKey:`general`,groupPath:`config.general`,label:`Remote opportunities only`,path:`config.find_remote_opportunities_only`,description:``,info:`Only count postings Amplemarket classifies as remote. This is the endpoint's only location filter — it cannot narrow to a country or city.`,guide:`Counts only postings Amplemarket classifies as remote. This is the endpoint's only location filter — it cannot narrow to a country or city.`,defaultValue:!1}),limit:Bu({sectionKey:`general`,groupPath:`config.general`,label:`Limit`,path:`config.limit`,description:``,info:`Maximum postings returned per company. Billing is per company, not per posting.`,guide:`Maximum postings returned per company. Billing is per company, not per posting.`,min:1,max:15}).default(15),input_fields:F(r.object({[Vh.name]:T({fieldName:Vh.name}),[Hh.name]:T({fieldName:Hh.name})})),output_fields:P(r.object({[Uh.name]:D({fieldName:Uh.name}),[Wh.name]:D({fieldName:Wh.name})}))})}),Kh=e=>Ad(G(Vh,e),G(Hh,e)),qh={"company-jobs-amplemarket-v1-amplemarket":{allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`,provider:`amplemarket`}},Jh=class extends B{pipeId=Bh;payload;payloadSchema=Gh;billableOperations=qh;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`amplemarket`]}estimateBillableOperations(e){return H(e,`company-jobs-amplemarket-v1-amplemarket`)}getInputRequirement(){return Kh(this.payload.config)}getRawOutputFields(){return{[Uh.name]:this.catalogOutput(Uh,{isPrimaryOutput:!0}),[Wh.name]:this.catalogOutput(Wh)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitRatio:1,rateLimitOperation:`amplemarket_job_openings`,allowManagedConnection:!0}]}},Yh=Gh,Xh={pipeId:Bh,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Bh),label:`Open jobs`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`Qualify a company on whether it is hiring for a role you care about. Returns its open postings as one list, filtered by function, department, seniority and remote-only. Coverage is partial — many companies return no matching postings — so it suits qualifying rows you already have; to FIND companies hiring, start from a jobs search.`,guide:"A QUALIFICATION step for an account list you already have, not a way to build one: set the filters to the role that makes a company interesting, then narrow the sheet on the result. A company with no matching opening comes back `no_result` — empty cells, no credit spent — so 'is hiring for this' is `open_job_match_count` being non-empty and 'is not hiring for this' is it being empty; you do not need a separate check. There is deliberately NO title or location filter: Amplemarket classifies postings by function, department and seniority only, so pick the closest of those (`Software Development`, not 'software engineer') and, if the exact wording or a specific city matters, narrow downstream against `open_job_matches`. To work one posting per row, expand it with `row:expandappend:sheet@1`.",tags:[V.COMPANY_PROFILES],keywords:[`hiring`,`vacancies`,`recruiting`,`postings`,`qualify`,`buying signal`,`expansion`],docPath:W(Bh),billableOperations:qh,allowedUserConnectionProviders:[`amplemarket`],managedProviders:[`amplemarket`],deprecatedProviders:[],defaultInputRequirement:Kh(null),defaultPayload:{pipe_id:Bh,connector:null,run_if:null,config:{job_functions:[],job_departments:[],job_seniorities:[],find_remote_opportunities_only:!1,limit:15,input_fields:{company_domain:{alias:``},company_profile_url:{alias:``}},output_fields:{open_job_matches:{alias:``,enabled:!0},open_job_match_count:{alias:``,enabled:!0}}}}},Zh=_(`company_domain`),Qh=_(`companyenrich_matches`),$h=`company:lookalikes:companyenrich@2`,eg=r.object({pipe_id:r.literal($h),run_if:x(),connector:w(),config:r.object({limit:Bu({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({[Zh.name]:T({fieldName:Zh.name})})),output_fields:P(r.object({[Qh.name]:D({fieldName:Qh.name})}))}).optional()}),tg=e=>R(G(Zh,e)),ng={"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`}},rg=class extends B{pipeId=$h;payload;payloadSchema=eg;billableOperations=ng;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 tg(this.payload.config)}getRawOutputFields(){return{[Qh.name]:this.catalogOutput(Qh)}}getConnectionsRequirements(){return[{provider:`companyenrich`,rateLimitRatio:1,rateLimitOperation:`company_enrich_generic`,allowManagedConnection:!0}]}},ig=eg,ag={pipeId:$h,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U($h),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($h),billableOperations:ng,allowedUserConnectionProviders:[`companyenrich`],managedProviders:[`companyenrich`],deprecatedProviders:[],defaultInputRequirement:tg(null),defaultPayload:{pipe_id:$h,connector:null,run_if:null,config:{limit:20,input_fields:{company_domain:{alias:``}},output_fields:{companyenrich_matches:{alias:``,enabled:!0}}}}},og=_(`company_domain`),sg=_(`company_profile_url`),cg=_(`amplemarket_company_match`),lg=`company:match:amplemarket@1`,ug=r.object({pipe_id:r.literal(lg),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[og.name]:T({fieldName:og.name}),[sg.name]:T({fieldName:sg.name})})),output_fields:P(r.object({[cg.name]:D({fieldName:cg.name})}))}).optional()}),dg=e=>Ad(G(og,e),G(sg,e)),fg={"company-match-amplemarket-v1-amplemarket":{allowManagedConnection:!0,credits:{default:1.5},mode:`onSuccess`,provider:`amplemarket`}},pg=class extends B{pipeId=lg;payload;payloadSchema=ug;billableOperations=fg;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`amplemarket`]}estimateBillableOperations(e){return H(e,`company-match-amplemarket-v1-amplemarket`)}getInputRequirement(){return dg(this.payload.config)}getRawOutputFields(){return{[cg.name]:this.catalogOutput(cg)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitRatio:1,rateLimitOperation:`amplemarket_company_find`,allowManagedConnection:!0}]}},mg=ug,hg={pipeId:lg,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(lg),label:`Company match`,executionMode:`single`,categories:[`company_data`],lifecycle:null,description:`Company data via the Amplemarket API: headcount by department and job function, funding events, technologies, locations and LinkedIn presence. Matches on domain, LinkedIn URL, or both.`,tags:[V.WEBSITE,V.LINKEDIN],keywords:[`enrich`,`firmographics`,`headcount`,`technologies`,`funding`,`linkedin`,`domain`],docPath:W(lg),billableOperations:fg,allowedUserConnectionProviders:[`amplemarket`],managedProviders:[`amplemarket`],deprecatedProviders:[],defaultInputRequirement:dg(null),defaultPayload:{pipe_id:lg,connector:null,run_if:null,config:{input_fields:{company_domain:{alias:``},company_profile_url:{alias:``}},output_fields:{amplemarket_company_match:{alias:``,enabled:!0}}}}},gg=_(`company_domain`),_g=_(`attio_companies_found_count`),vg=_(`attio_record_id`),yg=_(`attio_company_matches`),bg=`company:match:attio@1`,xg=r.object({pipe_id:r.literal(bg),run_if:x(),connector:C(),config:r.object({match_on:Lu({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:Tu({sectionKey:`general`,label:`Custom attributes`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`categories`,optionsDef:Wf({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.',guide:"Attribute api_slugs (e.g. `categories`), custom attributes included. Picked attributes nest under `custom_properties` in each match. Empty = a standard identity set."}),input_fields:F(r.object({[gg.name]:T({fieldName:gg.name})})),output_fields:P(r.object({[_g.name]:D({fieldName:_g.name}),[vg.name]:D({fieldName:vg.name}),[yg.name]:D({fieldName:yg.name})}))}).optional()}),Sg=e=>R(G(gg,e)),Cg={"company-match-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},wg=class extends B{pipeId=bg;payload;payloadSchema=xg;billableOperations=Cg;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`company-match-attio-v1-attio`)}getInputRequirement(){return Sg(this.payload.config)}getRawOutputFields(){return{[_g.name]:this.catalogOutput(_g),[vg.name]:this.catalogOutput(vg),[yg.name]:this.catalogOutput(yg)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_query`,allowManagedConnection:!1}]}async getAgentContext(e){return Kf(e,{objects:[`companies`]})}},Tg=xg,Eg={pipeId:bg,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(bg),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(bg),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:Cg,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:Sg(null),defaultPayload:{pipe_id:bg,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}}}}},Dg=_(`company_domain`),Og=_(`crustdata_companyenrich_match`),kg=`company:match:crustdata@2`,Ag=r.object({pipe_id:r.literal(kg),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[Dg.name]:T({fieldName:Dg.name})})),output_fields:P(r.object({[Og.name]:D({fieldName:Og.name})}))}).optional()}),jg=e=>R(G(Dg,e)),Mg={"company-match-crustdata-v2-crustdata":{allowManagedConnection:!0,credits:{default:2.5,level1:{credits:1.2,weight:1}},mode:`onSuccess`,provider:`crustdata`}},Ng=class extends B{pipeId=kg;payload;payloadSchema=Ag;billableOperations=Mg;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`company-match-crustdata-v2-crustdata`)}getInputRequirement(){return jg(this.payload.config)}getRawOutputFields(){return{[Og.name]:this.catalogOutput(Og)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_company_enrich`,allowManagedConnection:!0}]}},Pg=Ag,Fg={pipeId:kg,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(kg),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(kg),billableOperations:Mg,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:jg(null),defaultPayload:{pipe_id:kg,connector:null,run_if:null,config:{input_fields:{company_domain:{alias:``}},output_fields:{crustdata_companyenrich_match:{alias:``,enabled:!0}}}}},Ig=_(`company_domain`),Lg=_(`hubspot_companies_found_count`),Rg=_(`hubspot_object_id`),zg=_(`hubspot_company_matches`),Bg=`company:match:hubspot@1`,Vg=r.object({pipe_id:r.literal(Bg),run_if:x(),connector:C(),config:r.object({check_additional_domains:Nu({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).",guide:"Also matches companies whose `hs_additional_domains` contains the domain. Primary-domain matches still rank first."}),custom_properties:Tu({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).",guide:"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({[Ig.name]:T({fieldName:Ig.name})})),output_fields:P(r.object({[Lg.name]:D({fieldName:Lg.name}),[Rg.name]:D({fieldName:Rg.name}),[zg.name]:D({fieldName:zg.name})}))}).optional()}),Hg=e=>R(G(Ig,e)),Ug={"company-match-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},Wg=class extends B{pipeId=Bg;payload;payloadSchema=Vg;billableOperations=Ug;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`hubspot`]}estimateBillableOperations(e){return H(e,`company-match-hubspot-v1-hubspot`)}getInputRequirement(){return Hg(this.payload.config)}getRawOutputFields(){return{[Lg.name]:this.catalogOutput(Lg),[Rg.name]:this.catalogOutput(Rg),[zg.name]:this.catalogOutput(zg)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_crm_search`,allowManagedConnection:!1}]}async getAgentContext(e){return Op(e,{objectTypes:[[`companies`,`0-2`]]})}},Gg=Vg,Kg={pipeId:Bg,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Bg),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(Bg),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:Ug,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:Hg(null),defaultPayload:{pipe_id:Bg,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}}}}},qg=`company:newssummary:domain@1`,Jg=_(`company_news_summary`),Yg=_(`company_domain`),Xg=r.object({pipe_id:r.literal(qg),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[Yg.name]:T({fieldName:Yg.name})})),output_fields:P(r.object({[Jg.name]:D({fieldName:Jg.name})}))}).optional()}),Zg=e=>R(G(Yg,e)),Qg={"company-newssummary-domain-v1-pipe0":{allowManagedConnection:!0,credits:{default:2},mode:`always`,provider:`pipe0`}},$g=class extends B{pipeId=qg;payloadSchema=Xg;billableOperations=Qg;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-newssummary-domain-v1-pipe0`)}getInputRequirement(){return Zg(this.payload.config)}getRawOutputFields(){return{[Jg.name]:this.catalogOutput(Jg)}}getConnectionsRequirements(){return[{provider:`parallel`,rateLimitRatio:4,rateLimitOperation:`parallel_search`,allowManagedConnection:!0},{provider:`gemini`,rateLimitRatio:1,rateLimitOperation:`gemini_35_flash`,allowManagedConnection:!0}]}},e_=Xg,t_={pipeId:qg,basePipe:U(qg),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(qg),billableOperations:Qg,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:Zg(null),defaultPayload:{pipe_id:qg,run_if:null,connector:null,config:{input_fields:{company_domain:{alias:``}},output_fields:{company_news_summary:{alias:``,enabled:!0}}}}},n_=_(`company_domain`),r_=_(`company_profile_url`),i_=_(`company_description`),a_=_(`company_industry`),o_=_(`company_region`),s_=_(`headcount`),c_=_(`estimated_revenue`),l_=_(`founded_year`),u_=_(`company_name`),d_=`company:overview@3`,f_=r.object({pipe_id:r.literal(d_),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[n_.name]:T({fieldName:n_.name}),[r_.name]:T({fieldName:r_.name})})),output_fields:P(r.object({[i_.name]:D({fieldName:i_.name}),[a_.name]:D({fieldName:a_.name}),[o_.name]:D({fieldName:o_.name}),[s_.name]:D({fieldName:s_.name}),[c_.name]:D({fieldName:c_.name}),[l_.name]:D({fieldName:l_.name}),[u_.name]:D({fieldName:u_.name})}))}).optional()}),p_=e=>Ad(G(n_,e),G(r_,e)),m_={"company-overview-v3-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:1,level1:{credits:.5,weight:1}},mode:`always`}},h_=class extends B{pipeId=d_;payloadSchema=f_;billableOperations=m_;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-overview-v3-pipe0`)}getInputRequirement(){return p_(this.payload.config)}getRawOutputFields(){return{[i_.name]:this.catalogOutput(i_),[a_.name]:this.catalogOutput(a_),[o_.name]:this.catalogOutput(o_),[s_.name]:this.catalogOutput(s_),[c_.name]:this.catalogOutput(c_),[l_.name]:this.catalogOutput(l_),[u_.name]:this.catalogOutput(u_)}}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}]}},g_=f_,__={pipeId:d_,basePipe:U(d_),inputFieldMode:`static`,outputFieldMode:`static`,label:`Company overview`,executionMode:`mix`,categories:[`company_data`],lifecycle:null,description:`Business description, industry, and financial information.`,docPath:W(d_),tags:[V.WEBSITE,V.LINKEDIN,V.FINANCIAL_DATA],keywords:[`enrich`,`firmographics`,`industry`,`profile`,`about`,`financials`,`revenue`],allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],billableOperations:m_,defaultInputRequirement:p_(null),defaultPayload:{pipe_id:d_,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}}}}},v_=_(`company_domain`),y_=_(`technology_list`),b_=_(`spending_trend`),x_=_(`technology_match_builtwith`),S_=`company:techstack:builtwith@2`,C_=r.object({pipe_id:r.literal(S_),connector:w(),run_if:x(),config:r.object({input_fields:F(r.object({[v_.name]:T({fieldName:v_.name})})),output_fields:P(r.object({[y_.name]:D({fieldName:y_.name}),[x_.name]:D({fieldName:x_.name}),[b_.name]:D({fieldName:b_.name})}))}).optional()}),w_=e=>R(G(v_,e)),T_={"company-techstack-builtwith-v2-builtwith":{provider:`builtwith`,allowManagedConnection:!0,credits:{default:2},mode:`always`}},E_=class extends B{pipeId=S_;payload;payloadSchema=C_;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 w_(this.payload.config)}getRawOutputFields(){return{[y_.name]:this.catalogOutput(y_),[x_.name]:this.catalogOutput(x_),[b_.name]:this.catalogOutput(b_)}}getConnectionsRequirements(){return[{provider:`builtwith`,rateLimitRatio:1,rateLimitOperation:`builtwith_generic`,allowManagedConnection:!0}]}},D_=C_,O_={pipeId:S_,basePipe:U(S_),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(S_),billableOperations:T_,defaultInputRequirement:w_(null),defaultPayload:{pipe_id:S_,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}}}}},k_=`contact:create:resend@1`,A_={"contact-create-resend-v1-resend":{allowManagedConnection:!1,provider:`resend`,credits:null,mode:null}},j_=_(`email`),M_=_(`name`),N_=_(`resend_contact_id`),P_=[{label:`Demo subscribers`,value:`sandbox-segment-1`},{label:`Demo product updates`,value:`sandbox-segment-2`}],F_=r.object({pipe_id:r.literal(k_),connector:C(),run_if:x(),config:r.object({segment_id:Uu({sectionKey:`general`,required:!0,label:`Segment`,groupPath:`config.general`,path:`config.segment_id`,info:``,enabledIf:v(`resend`),optionsDef:{requires:{connection:`resend`},options:async({query:e,secret:t,environment:n})=>{if(n===`sandbox`)return P_;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:Nu({sectionKey:`general`,defaultValue:!0,label:`Add as subscribed`,groupPath:`config.general`,path:`config.add_as_subscribed`,info:``}),input_fields:F(r.object({[M_.name]:T({fieldName:M_.name}),[j_.name]:T({fieldName:j_.name})})),output_fields:P(r.object({[N_.name]:D({fieldName:N_.name})}))})}),I_=e=>z(R(G(j_,e)),R(G(M_,e))),L_=class extends B{pipeId=k_;payload;payloadSchema=F_;billableOperations=A_;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`resend`]}estimateBillableOperations(e){return H(e,`contact-create-resend-v1-resend`)}getInputRequirement(){return I_(this.payload.config)}getRawOutputFields(){return{[N_.name]:this.catalogOutput(N_)}}getConnectionsRequirements(){return[{provider:`resend`,rateLimitRatio:1,rateLimitOperation:`resend_generic`,allowManagedConnection:!1}]}},R_=F_,z_={pipeId:k_,basePipe:U(k_),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(k_),hasSideEffects:!0,billableOperations:A_,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`resend`],defaultInputRequirement:I_(null),managedProviders:[],deprecatedProviders:[],defaultPayload:{pipe_id:k_,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}}}}},B_=_(`email`),V_=_(`hubspot_contact_found`),H_=_(`hubspot_object_id`),U_=_(`hubspot_contact_match`),W_=`contact:match:hubspot@1`,G_=r.object({pipe_id:r.literal(W_),run_if:x(),connector:C(),config:r.object({check_additional_emails:Nu({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.",guide:"When the primary-email lookup misses, also searches `hs_additional_emails`. Uses the portal's shared 5 req/s search budget."}),custom_properties:Tu({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.',guide:"HubSpot internal property names (e.g. `lifecyclestage`), custom properties included. Picked properties nest under `custom_properties` in the match output. Empty = a standard identity set."}),input_fields:F(r.object({[B_.name]:T({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=>R(G(B_,e)),q_={"contact-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,`contact-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 Op(e,{objectTypes:[[`contacts`,`0-1`]]})}},Y_=G_,X_={pipeId:W_,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(W_),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(W_),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:q_,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:K_(null),defaultPayload:{pipe_id:W_,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}}}}},Z_=_(`company_domain`),Q_=_(`email`),$_=_(`attio_deals_found_count`),ev=_(`attio_record_id`),tv=_(`attio_deal_matches`),nv=`deal:match:attio@1`,rv=r.object({pipe_id:r.literal(nv),run_if:x(),connector:C(),config:r.object({stage:Uu({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:v(`attio`),optionsDef:Lf,multiple:!0}),custom_properties:Tu({sectionKey:`general`,label:`Custom attributes`,groupPath:`config.general`,path:`config.custom_properties`,placeholder:`close_date`,optionsDef:Wf({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.',guide:"Attribute api_slugs (e.g. `value`), custom attributes included. Picked attributes nest under `custom_properties` in each match. Empty = a standard deal set."}),input_fields:F(r.object({[Z_.name]:T({fieldName:Z_.name}),[Q_.name]:T({fieldName:Q_.name})})),output_fields:P(r.object({[$_.name]:D({fieldName:$_.name}),[ev.name]:D({fieldName:ev.name}),[tv.name]:D({fieldName:tv.name})}))}).optional()}),iv=e=>Ad(R(G(Z_,e)),R(G(Q_,e))),av={"deal-match-attio-v1-attio":{allowManagedConnection:!1,credits:null,mode:null,provider:`attio`}},ov=class extends B{pipeId=nv;payload;payloadSchema=rv;billableOperations=av;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`attio`]}estimateBillableOperations(e){return H(e,`deal-match-attio-v1-attio`)}getInputRequirement(){return iv(this.payload.config)}getRawOutputFields(){return{[$_.name]:this.catalogOutput($_),[ev.name]:this.catalogOutput(ev),[tv.name]:this.catalogOutput(tv)}}getConnectionsRequirements(){return[{provider:`attio`,rateLimitRatio:1,rateLimitOperation:`attio_query`,allowManagedConnection:!1}]}async getAgentContext(e){return Kf(e,{objects:[`deals`]})}},sv=rv,cv={pipeId:nv,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(nv),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(nv),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:av,allowedUserConnectionProviders:[`attio`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:iv(null),defaultPayload:{pipe_id:nv,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}}}}},lv=_(`company_domain`),uv=_(`email`),dv=_(`hubspot_deals_found_count`),fv=_(`hubspot_object_id`),pv=_(`hubspot_deal_matches`),mv=`deal:match:hubspot@1`,hv=r.object({pipe_id:r.literal(mv),run_if:x(),connector:C(),config:r.object({pipeline:Uu({sectionKey:`general`,required:!1,label:`Pipeline`,groupPath:`config.general`,path:`config.pipeline`,info:`Only match deals in this pipeline. Empty = all pipelines.`,guide:`Only match deals in this pipeline. Empty = all pipelines.`,enabledIf:v(`hubspot`),optionsDef:Sp(`deals`)}),status:Lu({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:Tu({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).",guide:"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({[lv.name]:T({fieldName:lv.name}),[uv.name]:T({fieldName:uv.name})})),output_fields:P(r.object({[dv.name]:D({fieldName:dv.name}),[fv.name]:D({fieldName:fv.name}),[pv.name]:D({fieldName:pv.name})}))}).optional()}),gv=e=>Ad(R(G(lv,e)),R(G(uv,e))),_v={"deal-match-hubspot-v1-hubspot":{allowManagedConnection:!1,credits:null,mode:null,provider:`hubspot`}},vv=class extends B{pipeId=mv;payload;payloadSchema=hv;billableOperations=_v;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`hubspot`]}estimateBillableOperations(e){return H(e,`deal-match-hubspot-v1-hubspot`)}getInputRequirement(){return gv(this.payload.config)}getRawOutputFields(){return{[dv.name]:this.catalogOutput(dv),[fv.name]:this.catalogOutput(fv),[pv.name]:this.catalogOutput(pv)}}getConnectionsRequirements(){return[{provider:`hubspot`,rateLimitRatio:1,rateLimitOperation:`hubspot_crm_search`,allowManagedConnection:!1}]}async getAgentContext(e){return Op(e,{objectTypes:[[`deals`,`0-3`]],includePipelinesFor:[`deals`]})}},yv=hv,bv={pipeId:mv,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(mv),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(mv),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:_v,allowedUserConnectionProviders:[`hubspot`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:gv(null),defaultPayload:{pipe_id:mv,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}}}}},xv=`company:funding:leadmagic@1`,Sv=_(`company_name`),Cv=_(`company_website_url`),wv=_(`funding_history`),Tv=_(`funding_total_usd`),Ev=_(`leadmagic_competitor_list`),Dv=_(`leadmagic_acquisition_history`),Ov=_(`leadmagic_company_news_list`),kv=r.object({pipe_id:r.literal(xv),connector:w(),run_if:x(),config:r.object({input_fields:F(r.object({[Sv.name]:T({fieldName:Sv.name}),[Cv.name]:T({fieldName:Cv.name})})),output_fields:P(r.object({[wv.name]:D({fieldName:wv.name}),[Tv.name]:D({fieldName:Tv.name}),[Ev.name]:D({fieldName:Ev.name}),[Dv.name]:D({fieldName:Dv.name}),[Ov.name]:D({fieldName:Ov.name})}))}).optional()}),Av=e=>Ad(G(Sv,e),G(Cv,e)),jv={"company-funding-leadmagic-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`}},Mv=class extends B{pipeId=xv;payload;payloadSchema=kv;billableOperations=jv;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`leadmagic`]}estimateBillableOperations(e){return H(e,`company-funding-leadmagic-v1-leadmagic`)}getInputRequirement(){return Av(this.payload.config)}getRawOutputFields(){return{[wv.name]:this.catalogOutput(wv),[Tv.name]:this.catalogOutput(Tv)}}getConnectionsRequirements(){return[{provider:`leadmagic`,rateLimitRatio:1,rateLimitOperation:`leadmagic_company_funding`,allowManagedConnection:!0}]}},Nv=kv,Pv={pipeId:xv,basePipe:U(xv),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(xv),billableOperations:jv,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`leadmagic`],managedProviders:[`leadmagic`],deprecatedProviders:[],defaultInputRequirement:Av(null),defaultPayload:{pipe_id:xv,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`,Iv=_(`company_name`),Lv=_(`company_domain`),Rv=_(`funding_history`),zv=_(`funding_total_usd`),Bv=_(`leadmagic_competitor_list`),Vv=_(`leadmagic_acquisition_history`),Hv=_(`leadmagic_company_news_list`),Uv=r.object({pipe_id:r.literal(Fv),connector:w(),run_if:x(),config:r.object({input_fields:F(r.object({[Iv.name]:T({fieldName:Iv.name}),[Lv.name]:T({fieldName:Lv.name})})),output_fields:P(r.object({[Rv.name]:D({fieldName:Rv.name}),[zv.name]:D({fieldName:zv.name}),[Bv.name]:D({fieldName:Bv.name}),[Vv.name]:D({fieldName:Vv.name}),[Hv.name]:D({fieldName:Hv.name})}))}).optional()}),Wv=e=>Ad(G(Iv,e),G(Lv,e)),Gv={"company-funding-leadmagic-v2-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`}},Kv=class extends B{pipeId=Fv;payload;payloadSchema=Uv;billableOperations=Gv;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`leadmagic`]}estimateBillableOperations(e){return H(e,`company-funding-leadmagic-v2-leadmagic`)}getInputRequirement(){return Wv(this.payload.config)}getRawOutputFields(){return{[Rv.name]:this.catalogOutput(Rv),[zv.name]:this.catalogOutput(zv),[Vv.name]:this.catalogOutput(Vv),[Hv.name]:this.catalogOutput(Hv),[Bv.name]:this.catalogOutput(Bv)}}getConnectionsRequirements(){return[{provider:`leadmagic`,rateLimitRatio:1,rateLimitOperation:`leadmagic_company_funding`,allowManagedConnection:!0}]}},qv=Uv,Jv={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:Gv,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`leadmagic`],managedProviders:[`leadmagic`],deprecatedProviders:[],defaultInputRequirement:Wv(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:``}}}}},Yv=_(`company_name`),Xv=_(`company_social_url`),Zv=_(`company_website_url`),Qv=_(`cleaned_company_name`),$v=`company:identity@1`,ey=r.object({pipe_id:r.literal($v),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[Yv.name]:T({fieldName:Yv.name})})),output_fields:P(r.object({[Xv.name]:D({fieldName:Xv.name}),[Qv.name]:D({fieldName:Qv.name}),[Zv.name]:D({fieldName:Zv.name})}))}).optional()}),ty=e=>R(G(Yv,e)),ny={"company-identity-v1-pipe0":{allowManagedConnection:!0,credits:{default:.3},mode:`always`,provider:`pipe0`}},ry=class extends B{pipeId=$v;payload;payloadSchema=ey;billableOperations=ny;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-identity-v1-pipe0`)}getInputRequirement(){return ty(this.payload.config)}getRawOutputFields(){return{[Xv.name]:this.catalogOutput(Xv),[Zv.name]:this.catalogOutput(Zv),[Qv.name]:this.catalogOutput(Qv)}}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}]}},iy=ey,ay={pipeId:$v,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U($v),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:ny,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:ty(null),defaultPayload:{pipe_id:$v,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}}}}},oy=_(`company_name`),sy=_(`company_profile_url`),cy=_(`company_website_url`),ly=_(`cleaned_company_name`),uy=`company:identity@2`,dy=r.object({pipe_id:r.literal(uy),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[oy.name]:T({fieldName:oy.name})})),output_fields:P(r.object({[sy.name]:D({fieldName:sy.name}),[ly.name]:D({fieldName:ly.name}),[cy.name]:D({fieldName:cy.name})}))}).optional()}),fy=e=>R(G(oy,e)),py={"company-identity-v2-pipe0":{allowManagedConnection:!0,credits:{default:.3},mode:`always`,provider:`pipe0`}},my=class extends B{pipeId=uy;payload;payloadSchema=dy;billableOperations=py;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-identity-v2-pipe0`)}getInputRequirement(){return fy(this.payload.config)}getRawOutputFields(){return{[sy.name]:this.catalogOutput(sy),[cy.name]:this.catalogOutput(cy),[ly.name]:this.catalogOutput(ly)}}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}]}},hy=dy,gy={pipeId:uy,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(uy),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(uy),billableOperations:py,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:fy(null),defaultPayload:{pipe_id:uy,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}}}}},_y=_(`company_website_url`),vy=_(`companyenrich_matches`),yy=`company:lookalikes:companyenrich@1`,by=r.object({pipe_id:r.literal(yy),run_if:x(),connector:w(),config:r.object({limit:Bu({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({[_y.name]:T({fieldName:_y.name})})),output_fields:P(r.object({[vy.name]:D({fieldName:vy.name})}))}).optional()}),xy=e=>R(G(_y,e)),Sy={"company-lookalikes-companyenrich-v1-companyenrich":{allowManagedConnection:!0,credits:{default:.2},mode:`onSuccess`,note:`One billing event per result.`,provider:`companyenrich`}},Cy=class extends B{pipeId=yy;payload;payloadSchema=by;billableOperations=Sy;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 xy(this.payload.config)}getRawOutputFields(){return{[vy.name]:this.catalogOutput(vy)}}getConnectionsRequirements(){return[{provider:`companyenrich`,rateLimitRatio:1,rateLimitOperation:`company_enrich_generic`,allowManagedConnection:!0}]}},wy=by,Ty={pipeId:yy,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(yy),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(yy),billableOperations:Sy,allowedUserConnectionProviders:[`companyenrich`],managedProviders:[`companyenrich`],deprecatedProviders:[],defaultInputRequirement:xy(null),defaultPayload:{pipe_id:yy,connector:null,run_if:null,config:{limit:20,input_fields:{company_website_url:{alias:``}},output_fields:{companyenrich_matches:{alias:``,enabled:!0}}}}},Ey=_(`company_website_url`),Dy=_(`crustdata_companyenrich_match`),Oy=`company:match:crustdata@1`,ky=r.object({pipe_id:r.literal(Oy),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[Ey.name]:T({fieldName:Ey.name})})),output_fields:P(r.object({[Dy.name]:D({fieldName:Dy.name})}))}).optional()}),Ay=e=>R(G(Ey,e)),jy={"company-match-crustdata-v1-crustdata":{allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`,provider:`crustdata`}},My=class extends B{pipeId=Oy;payload;payloadSchema=ky;billableOperations=jy;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`company-match-crustdata-v1-crustdata`)}getInputRequirement(){return Ay(this.payload.config)}getRawOutputFields(){return{[Dy.name]:this.catalogOutput(Dy)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_company_enrich`,allowManagedConnection:!0}]}},Ny=ky,Py={pipeId:Oy,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Oy),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(Oy),billableOperations:jy,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:Ay(null),defaultPayload:{pipe_id:Oy,connector:null,run_if:null,config:{input_fields:{company_website_url:{alias:``}},output_fields:{crustdata_companyenrich_match:{alias:``,enabled:!0}}}}},Fy=_(`company_website_url`),Iy=_(`company_name`),Ly=_(`company_profile_url`),Ry=_(`logodev_describe_match`),zy=_(`logo_url`),By=`company:match:logodev@1`,Vy=r.object({pipe_id:r.literal(By),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[Fy.name]:T({fieldName:Fy.name})})),output_fields:P(r.object({[Ly.name]:D({fieldName:Ly.name}),[zy.name]:D({fieldName:zy.name}),[Iy.name]:D({fieldName:Iy.name}),[Ry.name]:D({fieldName:Ry.name})}))}).optional()}),Hy=e=>R(G(Fy,e)),Uy={"company-match-logodev-v1-logodev":{allowManagedConnection:!0,credits:{default:.1},mode:`onSuccess`,provider:`logodev`}},Wy=class extends B{pipeId=By;payload;payloadSchema=Vy;billableOperations=Uy;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`logodev`]}estimateBillableOperations(e){return H(e,`company-match-logodev-v1-logodev`)}getInputRequirement(){return Hy(this.payload.config)}getRawOutputFields(){return{[Ly.name]:this.catalogOutput(Ly),[Iy.name]:this.catalogOutput(Iy),[zy.name]:this.catalogOutput(zy),[Ry.name]:this.catalogOutput(Ry)}}getConnectionsRequirements(){return[{provider:`logodev`,rateLimitRatio:1,rateLimitOperation:`logodev_describe`,allowManagedConnection:!0}]}},Gy=Vy,Ky={pipeId:By,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(By),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(By),billableOperations:Uy,allowedUserConnectionProviders:[`logodev`],managedProviders:[`logodev`],deprecatedProviders:[],defaultInputRequirement:Hy(null),defaultPayload:{pipe_id:By,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}}}}},qy=_(`company_domain`),Jy=_(`company_name`),Yy=_(`company_profile_url`),Xy=_(`logodev_describe_match`),Zy=_(`logo_url`),Qy=`company:match:logodev@2`,$y=r.object({pipe_id:r.literal(Qy),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[qy.name]:T({fieldName:qy.name})})),output_fields:P(r.object({[Yy.name]:D({fieldName:Yy.name}),[Zy.name]:D({fieldName:Zy.name}),[Jy.name]:D({fieldName:Jy.name}),[Xy.name]:D({fieldName:Xy.name})}))}).optional()}),eb=e=>R(G(qy,e)),tb={"company-match-logodev-v2-logodev":{allowManagedConnection:!0,credits:{default:.1},mode:`onSuccess`,provider:`logodev`}},nb=class extends B{pipeId=Qy;payload;payloadSchema=$y;billableOperations=tb;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`logodev`]}estimateBillableOperations(e){return H(e,`company-match-logodev-v2-logodev`)}getInputRequirement(){return eb(this.payload.config)}getRawOutputFields(){return{[Yy.name]:this.catalogOutput(Yy),[Jy.name]:this.catalogOutput(Jy),[Zy.name]:this.catalogOutput(Zy),[Xy.name]:this.catalogOutput(Xy)}}getConnectionsRequirements(){return[{provider:`logodev`,rateLimitRatio:1,rateLimitOperation:`logodev_describe`,allowManagedConnection:!0}]}},rb=$y,ib={pipeId:Qy,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(Qy),label:`Company match`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-08-03`,replacedBy: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(Qy),billableOperations:tb,allowedUserConnectionProviders:[`logodev`],managedProviders:[`logodev`],deprecatedProviders:[],defaultInputRequirement:eb(null),defaultPayload:{pipe_id:Qy,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}}}}},ab=`company:newssummary:website@1`,ob=_(`company_news_summary`),sb=_(`company_website_url`),cb=r.object({pipe_id:r.literal(ab),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[sb.name]:T({fieldName:sb.name})})),output_fields:P(r.object({[ob.name]:D({fieldName:ob.name})}))}).optional()}),lb=e=>R(G(sb,e)),ub={"company-newssummary-website-v1-pipe0":{allowManagedConnection:!0,credits:{default:1},mode:`always`,provider:`pipe0`}},db=class extends B{pipeId=ab;payloadSchema=cb;billableOperations=ub;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-newssummary-website-v1-pipe0`)}getInputRequirement(){return lb(this.payload.config)}getRawOutputFields(){return{[ob.name]:this.catalogOutput(ob)}}getConnectionsRequirements(){return[{provider:`perplexity`,rateLimitRatio:1,rateLimitOperation:`perplexity_generic`,allowManagedConnection:!0}]}},fb=cb,pb={pipeId:ab,basePipe:U(ab),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(ab),billableOperations:ub,allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:lb(null),defaultPayload:{pipe_id:ab,run_if:null,connector:null,config:{input_fields:{company_website_url:{alias:``}},output_fields:{company_news_summary:{alias:``,enabled:!0}}}}},mb=_(`company_website_url`),hb=_(`company_social_url`),gb=_(`company_description`),_b=_(`company_industry`),vb=_(`company_region`),yb=_(`headcount`),bb=_(`estimated_revenue`),xb=_(`founded_year`),Sb=`company:overview@1`,Cb=r.object({pipe_id:r.literal(Sb),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[mb.name]:T({fieldName:mb.name}),[hb.name]:T({fieldName:hb.name})})),output_fields:P(r.object({[gb.name]:D({fieldName:gb.name}),[_b.name]:D({fieldName:_b.name}),[vb.name]:D({fieldName:vb.name}),[yb.name]:D({fieldName:yb.name}),[bb.name]:D({fieldName:bb.name}),[xb.name]:D({fieldName:xb.name})}))}).optional()}),wb=e=>Ad(G(mb,e),G(hb,e)),Tb={"company-overview-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:1},mode:`always`}},Eb=class extends B{pipeId=Sb;payloadSchema=Cb;billableOperations=Tb;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-overview-v1-pipe0`)}getInputRequirement(){return wb(this.payload.config)}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),[xb.name]:this.catalogOutput(xb)}}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}]}},Db=Cb,Ob={pipeId:Sb,basePipe:U(Sb),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:Tb,defaultInputRequirement:wb(null),defaultPayload:{pipe_id:Sb,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}}}}},kb=_(`company_website_url`),Ab=_(`company_profile_url`),jb=_(`company_description`),Mb=_(`company_industry`),Nb=_(`company_region`),Pb=_(`headcount`),Fb=_(`estimated_revenue`),Ib=_(`founded_year`),Lb=_(`company_name`),Rb=`company:overview@2`,zb=r.object({pipe_id:r.literal(Rb),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[kb.name]:T({fieldName:kb.name}),[Ab.name]:T({fieldName:Ab.name})})),output_fields:P(r.object({[jb.name]:D({fieldName:jb.name}),[Mb.name]:D({fieldName:Mb.name}),[Nb.name]:D({fieldName:Nb.name}),[Pb.name]:D({fieldName:Pb.name}),[Fb.name]:D({fieldName:Fb.name}),[Ib.name]:D({fieldName:Ib.name}),[Lb.name]:D({fieldName:Lb.name})}))}).optional()}),Bb=e=>Ad(G(kb,e),G(Ab,e)),Vb={"company-overview-v2-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:1},mode:`always`}},Hb=class extends B{pipeId=Rb;payloadSchema=zb;billableOperations=Vb;payload;constructor(e){super(),this.payload=e}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-overview-v2-pipe0`)}getInputRequirement(){return Bb(this.payload.config)}getRawOutputFields(){return{[jb.name]:this.catalogOutput(jb),[Mb.name]:this.catalogOutput(Mb),[Nb.name]:this.catalogOutput(Nb),[Pb.name]:this.catalogOutput(Pb),[Fb.name]:this.catalogOutput(Fb),[Ib.name]:this.catalogOutput(Ib),[Lb.name]:this.catalogOutput(Lb)}}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}]}},Ub=zb,Wb={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:Vb,defaultInputRequirement:Bb(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}}}}},Gb=_(`company_website_url`),Kb=_(`technology_list`),qb=_(`spending_trend`),Jb=_(`technology_match_builtwith`),Yb=`company:techstack:builtwith@1`,Xb=r.object({pipe_id:r.literal(Yb),connector:w(),run_if:x(),config:r.object({input_fields:F(r.object({[Gb.name]:T({fieldName:Gb.name})})),output_fields:P(r.object({[Kb.name]:D({fieldName:Kb.name}),[Jb.name]:D({fieldName:Jb.name}),[qb.name]:D({fieldName:qb.name})}))}).optional()}),Zb=e=>R(G(Gb,e)),Qb={"company-techstack-builtwith-v1-builtwith":{provider:`builtwith`,allowManagedConnection:!0,credits:{default:2},mode:`always`}},$b=class extends B{pipeId=Yb;payload;payloadSchema=Xb;billableOperations=Qb;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`builtwith`]}estimateBillableOperations(e){return H(e,`company-techstack-builtwith-v1-builtwith`)}getInputRequirement(){return Zb(this.payload.config)}getRawOutputFields(){return{[Kb.name]:this.catalogOutput(Kb),[Jb.name]:this.catalogOutput(Jb),[qb.name]:this.catalogOutput(qb)}}getConnectionsRequirements(){return[{provider:`builtwith`,rateLimitRatio:1,rateLimitOperation:`builtwith_generic`,allowManagedConnection:!0}]}},ex=Xb,tx={pipeId:Yb,basePipe:U(Yb),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(Yb),billableOperations:Qb,defaultInputRequirement:Zb(null),defaultPayload:{pipe_id:Yb,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}}}}},nx=`company:websiteurl:email@1`,rx=_(`company_website_url`),ix=_(`email`),ax=r.object({pipe_id:r.literal(nx),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[ix.name]:T({fieldName:ix.name})})),output_fields:P(r.object({[rx.name]:D({fieldName:rx.name})}))}).optional()}),ox=e=>R(G(ix,e)),sx={"company-websiteurl-email-v1-pipe0":{credits:{default:0},allowManagedConnection:!0,mode:`always`,provider:`pipe0`}},cx=class extends B{pipeId=nx;payload;payloadSchema=ax;billableOperations=sx;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`company-websiteurl-email-v1-pipe0`)}getInputRequirement(){return ox(this.payload.config)}getRawOutputFields(){return{[rx.name]:this.catalogOutput(rx)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},lx=ax,ux={pipeId:nx,basePipe:U(nx),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(nx),allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],billableOperations:sx,defaultInputRequirement:ox(null),defaultPayload:{pipe_id:nx,connector:null,run_if:null,config:{input_fields:{email:{alias:``}},output_fields:{company_website_url:{alias:``,enabled:!0}}}}},dx=`people:email:iswork@1`,fx=_(`is_work_email`),px=_(`email`),mx=r.object({pipe_id:r.literal(dx),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[px.name]:T({fieldName:px.name})})),output_fields:P(r.object({[fx.name]:D({fieldName:fx.name})}))}).optional()}),hx=e=>R(G(px,e)),gx={"people-email-iswork-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},_x=class extends B{pipeId=dx;payload;payloadSchema=mx;billableOperations=gx;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`people-email-iswork-v1-pipe0`)}getInputRequirement(){return hx(this.payload.config)}getRawOutputFields(){return{[fx.name]:this.catalogOutput(fx)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},vx=mx,yx={pipeId:dx,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(dx),billableOperations:gx,basePipe:U(dx),allowedUserConnectionProviders:[],inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:hx(null),defaultPayload:{pipe_id:dx,run_if:null,connector:null,config:{input_fields:{email:{alias:``}},output_fields:{is_work_email:{alias:``,enabled:!0}}}}},bx=`people:email:validate:zerobounce@1`,xx=_(`work_email`),Sx=_(`is_email_valid`),Cx=r.object({pipe_id:r.literal(bx),connector:w(),run_if:x(),config:r.object({input_fields:F(r.object({[xx.name]:T({fieldName:xx.name})})),output_fields:P(r.object({[Sx.name]:D({fieldName:Sx.name})}))}).optional()}),wx=e=>R(G(xx,e)),Tx={"people-email-validate-zerobounce-v1-zerobounce":{provider:`zerobounce`,allowManagedConnection:!0,credits:{default:.3},mode:`always`}},Ex=class extends B{pipeId=bx;payload;payloadSchema=Cx;billableOperations=Tx;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`zerobounce`]}estimateBillableOperations(e){return H(e,`people-email-validate-zerobounce-v1-zerobounce`)}getInputRequirement(){return wx(this.payload.config)}getRawOutputFields(){return{[Sx.name]:this.catalogOutput(Sx)}}getConnectionsRequirements(){return[{provider:`zerobounce`,rateLimitRatio:1,rateLimitOperation:`zerobounce_generic`,allowManagedConnection:!0}]}},Dx=Cx,Ox={pipeId:bx,basePipe:U(bx),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:Tx,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`zerobounce`],managedProviders:[`zerobounce`],deprecatedProviders:[],defaultInputRequirement:wx(null),defaultPayload:{pipe_id:bx,connector:null,run_if:null,config:{input_fields:{work_email:{alias:``}},output_fields:{is_email_valid:{alias:``,enabled:!0}}}}},kx=`people:email:validate:zerobounce@2`,Ax=_(`email`),jx=_(`zerobounce_validation_status`),Mx=_(`zerobounce_validation_match`),Nx=r.object({pipe_id:r.literal(kx),connector:w(),run_if:x(),config:r.object({input_fields:F(r.object({[Ax.name]:T({fieldName:Ax.name})})),output_fields:P(r.object({[Mx.name]:D({fieldName:Mx.name}),[jx.name]:D({fieldName:jx.name})}))}).optional()}),Px=e=>R(G(Ax,e)),Fx={"people-email-validate-zerobounce-v2-zerobounce":{provider:`zerobounce`,allowManagedConnection:!0,credits:{default:.3},mode:`always`}},Ix=class extends B{pipeId=kx;payload;payloadSchema=Nx;billableOperations=Fx;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`zerobounce`]}estimateBillableOperations(e){return H(e,`people-email-validate-zerobounce-v2-zerobounce`)}getInputRequirement(){return Px(this.payload.config)}getRawOutputFields(){return{[jx.name]:this.catalogOutput(jx),[Mx.name]:this.catalogOutput(Mx)}}getConnectionsRequirements(){return[{provider:`zerobounce`,rateLimitRatio:1,rateLimitOperation:`zerobounce_generic`,allowManagedConnection:!0}]}},Lx=Nx,Rx={pipeId:kx,basePipe:U(kx),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(kx),billableOperations:Fx,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`zerobounce`],managedProviders:[`zerobounce`],deprecatedProviders:[],defaultInputRequirement:Px(null),defaultPayload:{pipe_id:kx,connector:null,run_if:null,config:{input_fields:{email:{alias:``}},output_fields:{zerobounce_validation_status:{alias:``,enabled:!0},zerobounce_validation_match:{alias:``,enabled:!0}}}}},zx=`people:identity:email:waterfall@1`,Bx=_(`email`),Vx=_(`company_website_url`),Hx=_(`name`),Ux=_(`job_title`),Wx=_(`profile_url`),Gx=_(`company_profile_url`),Kx=_(`company_name`),qx=[`findymail`,`hunter`,`crustdata`],Jx=[`findymail`],Yx=[{provider:`hunter`},{provider:`crustdata`}],Xx=r.object({pipe_id:r.literal(zx),connector:w(),run_if:x(),config:r.object({providers:E({availableProviders:qx,defaultProviders:Yx,deprecatedProviders:Jx,sectionKey:`general`}),input_fields:F(r.object({[Bx.name]:T({fieldName:Bx.name})})),output_fields:P(r.object({[Hx.name]:D({fieldName:Hx.name}),[Wx.name]:D({fieldName:Wx.name}),[Ux.name]:D({fieldName:Ux.name}),[Vx.name]:D({fieldName:Vx.name}),[Kx.name]:D({fieldName:Kx.name}),[Gx.name]:D({fieldName:Gx.name})}))}).optional()}),Zx=e=>R(G(Bx,e)),Qx={"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=zx;payload;payloadSchema=Xx;billableOperations=Qx;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 Zx(this.payload.config)}getRawOutputFields(){return{[Hx.name]:this.catalogOutput(Hx,{isPrimaryOutput:!0}),[Wx.name]:this.catalogOutput(Wx,{isPrimaryOutput:!0}),[Ux.name]:this.catalogOutput(Ux,{isPrimaryOutput:!0}),[Kx.name]:this.catalogOutput(Kx,{isPrimaryOutput:!0}),[Gx.name]:this.catalogOutput(Gx,{isPrimaryOutput:!0}),[Vx.name]:this.catalogOutput(Vx,{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}))}},eS=Xx,tS={pipeId:zx,basePipe:U(zx),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(zx),managedProviders:qx,deprecatedProviders:Jx,allowedUserConnectionProviders:qx,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:Qx,defaultInputRequirement:Zx(null),defaultPayload:{pipe_id:zx,connector:null,run_if:null,config:{providers:Yx,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}}}}},nS=`people:match:role:waterfall@1`,rS=_(`company_website_url`),iS=_(`role_finder_match`),aS=[`leadmagic`],oS=[{provider:`leadmagic`}],sS=r.object({pipe_id:r.literal(nS),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,defaultProviders:oS,availableProviders:aS}),roles:Eu({sectionKey:`general`,groupPath:`config.general`,label:`Roles`,path:`config.roles`,info:`Company roles to include`,maxItems:3,minItems:1}),input_fields:F(r.object({[rS.name]:T({fieldName:rS.name})})),output_fields:P(r.object({[iS.name]:D({fieldName:iS.name})}))})}),cS=e=>Ad(G(rS,e)),lS={"people-match-role-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`}},uS=class extends B{pipeId=nS;payload;payloadSchema=sS;billableOperations=lS;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 cS(this.payload.config)}getRawOutputFields(){return{[iS.name]:this.catalogOutput(iS,{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}))}},dS=sS,fS={pipeId:nS,basePipe:U(nS),managedProviders:aS,deprecatedProviders:[],allowedUserConnectionProviders:aS,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(nS),billableOperations:lS,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:cS(null),defaultPayload:{pipe_id:nS,run_if:null,connector:null,config:{roles:[],providers:oS,input_fields:{company_website_url:{alias:``}},output_fields:{role_finder_match:{alias:``,enabled:!0}}}}},pS=`people:mobilenumber:professionalprofile:waterfall@1`,mS=_(`professional_profile_url`),hS=_(`mobile_number`),gS=[`leadmagic`,`prospeo`],_S=[{provider:`leadmagic`},{provider:`prospeo`}],vS=r.object({pipe_id:r.literal(pS),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,defaultProviders:_S,availableProviders:gS}),input_fields:F(r.object({[mS.name]:T({fieldName:mS.name})})),output_fields:P(r.object({[hS.name]:D({fieldName:hS.name})}))}).optional()}),yS=e=>R(G(mS,e)),bS={"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`}},xS=class extends B{pipeId=pS;payload;payloadSchema=vS;billableOperations=bS;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{[hS.name]:this.catalogOutput(hS)}}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}))}},SS=vS,CS={pipeId:pS,basePipe:U(pS),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:bS,defaultInputRequirement:yS(null),inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:gS,deprecatedProviders:[],allowedUserConnectionProviders:gS,defaultPayload:{pipe_id:pS,connector:null,run_if:null,config:{providers:_S,input_fields:{professional_profile_url:{alias:``}},output_fields:{mobile_number:{alias:``,enabled:!0}}}}},wS=`people:mobilenumber:workemail:waterfall@1`,TS=_(`work_email`),ES=_(`mobile_number`),DS=[`leadmagic`],OS=[{provider:`leadmagic`}],kS=r.object({pipe_id:r.literal(wS),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,availableProviders:DS,defaultProviders:OS}),input_fields:F(r.object({[TS.name]:T({fieldName:TS.name})})),output_fields:P(r.object({[ES.name]:D({fieldName:ES.name})}))}).optional()}),AS=e=>R(G(TS,e)),jS={"people-mobilenumber-workemail-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:2},mode:`onSuccess`}},MS=class extends B{pipeId=wS;payload;payloadSchema=kS;billableOperations=jS;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 AS(this.payload.config)}getRawOutputFields(){return{[ES.name]:this.catalogOutput(ES)}}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}))}},NS=kS,PS={pipeId:wS,basePipe:U(wS),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:jS,defaultInputRequirement:AS(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:DS,managedProviders:DS,deprecatedProviders:[],defaultPayload:{pipe_id:wS,connector:null,run_if:null,config:{providers:OS,input_fields:{work_email:{alias:``}},output_fields:{mobile_number:{alias:``,enabled:!0}}}}},FS=`people:name:split@1`,IS=_(`name`),LS=_(`first_name`),RS=_(`last_name`),zS=r.object({pipe_id:r.literal(FS),connector:au(),run_if:x(),config:r.object({input_fields:F(r.object({[IS.name]:T({fieldName:IS.name})})),output_fields:P(r.object({[LS.name]:D({fieldName:LS.name}),[RS.name]:D({fieldName:RS.name})}))}).optional()}),BS=e=>R(G(IS,e)),VS={"people-name-split-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},HS=class extends B{pipeId=FS;payload;payloadSchema=zS;billableOperations=VS;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`people-name-split-v1-pipe0`)}getInputRequirement(){return BS(this.payload.config)}getRawOutputFields(){return{[LS.name]:this.catalogOutput(LS),[RS.name]:this.catalogOutput(RS)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},US=zS,WS={pipeId:FS,basePipe:U(FS),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(FS),billableOperations:VS,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:BS(null),allowedUserConnectionProviders:[],managedProviders:[`pipe0`],deprecatedProviders:[],defaultPayload:{pipe_id:FS,run_if:null,connector:void 0,config:{input_fields:{name:{alias:``}},output_fields:{first_name:{alias:``,enabled:!0},last_name:{alias:``,enabled:!0}}}}},GS=`people:personalemail:profile:waterfall@1`,KS=_(`profile_url`),qS=_(`personal_email`),JS=_(`alternate_personal_emails`),YS=[`clado`,`leadmagic`,`mixrank`],XS=[{provider:`leadmagic`},{provider:`mixrank`}],ZS=r.object({pipe_id:r.literal(GS),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,availableProviders:YS,defaultProviders:XS}),input_fields:F(r.object({[KS.name]:T({fieldName:KS.name})})),output_fields:P(r.object({[qS.name]:D({fieldName:qS.name}),[JS.name]:D({fieldName:JS.name})}))}).optional()}),QS=e=>R(G(KS,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`}},eC=class extends B{pipeId=GS;payload;payloadSchema=ZS;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 QS(this.payload.config)}getRawOutputFields(){return{[qS.name]:this.catalogOutput(qS,{isPrimaryOutput:!0}),[JS.name]:this.catalogOutput(JS)}}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}))}},tC=ZS,nC={pipeId:GS,basePipe:U(GS),allowedUserConnectionProviders:YS,managedProviders:YS,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(GS),billableOperations:$S,defaultInputRequirement:QS(null),inputFieldMode:`static`,outputFieldMode:`static`,defaultPayload:{pipe_id:GS,connector:null,run_if:null,config:{providers:XS,input_fields:{profile_url:{alias:``}},output_fields:{personal_email:{alias:``,enabled:!0},alternate_personal_emails:{alias:``,enabled:!0}}}}},rC=`people:phone:profile:waterfall@1`,iC=_(`profile_url`),aC=_(`mobile`),oC=[`leadmagic`,`prospeo`,`amplemarket`,`findymail`,`clado`],sC=[`clado`,`findymail`],cC=[{provider:`leadmagic`},{provider:`prospeo`},{provider:`amplemarket`}],lC=r.object({pipe_id:r.literal(rC),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,defaultProviders:cC,availableProviders:oC,deprecatedProviders:sC}),input_fields:F(r.object({[iC.name]:T({fieldName:iC.name})})),output_fields:P(r.object({[aC.name]:D({fieldName:aC.name})}))}).optional()}),uC=e=>R(G(iC,e)),dC={"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`}},fC=class extends B{pipeId=rC;payload;payloadSchema=lC;billableOperations=dC;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 uC(this.payload.config)}getRawOutputFields(){return{[aC.name]:this.catalogOutput(aC,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,prospeo:`prospeo_phone_number_lookup`,findymail:`findymail_phone_lookup`,clado:`clado_contact_information`,amplemarket:`amplemarket_people_find`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},pC=lC,mC={pipeId:rC,basePipe:U(rC),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(rC),tags:[V.PHONE,V.WATERFALL],billableOperations:dC,defaultInputRequirement:uC(null),inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:oC,allowedUserConnectionProviders:oC,deprecatedProviders:sC,defaultPayload:{pipe_id:rC,connector:null,run_if:null,config:{providers:cC,input_fields:{profile_url:{alias:``}},output_fields:{mobile:{alias:``,enabled:!0}}}}},hC=`people:phone:workemail:waterfall@1`,gC=_(`work_email`),_C=_(`mobile`),vC=[`leadmagic`,`amplemarket`],yC=[{provider:`leadmagic`},{provider:`amplemarket`}],bC=r.object({pipe_id:r.literal(hC),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,availableProviders:vC,defaultProviders:yC}),input_fields:F(r.object({[gC.name]:T({fieldName:gC.name})})),output_fields:P(r.object({[_C.name]:D({fieldName:_C.name})}))}).optional()}),xC=e=>R(G(gC,e)),SC={"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`}},CC=class extends B{pipeId=hC;payload;payloadSchema=bC;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 xC(this.payload.config)}getRawOutputFields(){return{[_C.name]:this.catalogOutput(_C,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_lookup`,amplemarket:`amplemarket_people_find`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},wC=bC,TC={pipeId:hC,basePipe:U(hC),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(hC),billableOperations:SC,defaultInputRequirement:xC(null),inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:vC,managedProviders:vC,deprecatedProviders:[],defaultPayload:{pipe_id:hC,connector:null,run_if:null,config:{providers:yC,input_fields:{work_email:{alias:``}},output_fields:{mobile:{alias:``,enabled:!0}}}}},EC=`people:professionalprofile:waterfall@1`,DC=_(`professional_profile`),OC=_(`professional_profile_url`),kC=[`prospeo`,`icypeas`],AC=[{provider:`prospeo`},{provider:`icypeas`}],jC=r.object({pipe_id:r.literal(EC),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,availableProviders:kC,defaultProviders:AC}),input_fields:F(r.object({[OC.name]:T({fieldName:OC.name})})),output_fields:P(r.object({[DC.name]:D({fieldName:DC.name})}))}).optional()}),MC=e=>R(G(OC,e)),NC={"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}},PC=class extends B{pipeId=EC;payload;payloadSchema=jC;billableOperations=NC;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 MC(this.payload.config)}getRawOutputFields(){return{[DC.name]:this.catalogOutput(DC)}}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}))}},FC=jC,IC={pipeId:EC,basePipe:U(EC),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:kC,deprecatedProviders:[],allowedUserConnectionProviders:kC,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:NC,defaultInputRequirement:MC(null),defaultPayload:{pipe_id:EC,run_if:null,connector:null,config:{providers:AC,input_fields:{professional_profile_url:{alias:``}},output_fields:{professional_profile:{alias:``,enabled:!0}}}}},LC=`people:professionalprofileurl:email:waterfall@1`,RC=_(`email`),zC=_(`work_email`),BC=_(`professional_profile_url`),VC=[`leadmagic`],HC=[{provider:`leadmagic`}],UC=r.object({pipe_id:r.literal(LC),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,defaultProviders:HC,availableProviders:VC}),input_fields:F(r.object({[RC.name]:T({fieldName:RC.name}),[zC.name]:T({fieldName:zC.name})})),output_fields:P(r.object({[BC.name]:D({fieldName:BC.name})}))}).optional()}),WC=e=>Ad(G(RC,e),G(zC,e)),GC={"people-professionalprofileurl-email-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:3.5},mode:`onSuccess`}},KC=class extends B{pipeId=LC;payload;payloadSchema=UC;billableOperations=GC;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 WC(this.payload.config)}getRawOutputFields(){return{[BC.name]:this.catalogOutput(BC)}}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}))}},qC=UC,JC={pipeId:LC,basePipe:U(LC),managedProviders:VC,deprecatedProviders:[],allowedUserConnectionProviders:VC,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:GC,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:WC(null),defaultPayload:{pipe_id:LC,run_if:null,connector:null,config:{providers:HC,input_fields:{email:{alias:``},work_email:{alias:``}},output_fields:{professional_profile_url:{alias:``,enabled:!0}}}}},YC=`people:professionalprofileurl:name@1`,XC=_(`name`),ZC=_(`company_name`),QC=_(`location_hint`),$C=_(`professional_profile_url`),ew=r.object({pipe_id:r.literal(YC),connector:au(),run_if:x(),config:r.object({input_fields:F(r.object({[XC.name]:T({fieldName:XC.name}),[ZC.name]:T({fieldName:ZC.name}),[QC.name]:T({fieldName:QC.name})})),output_fields:P(r.object({[$C.name]:D({fieldName:$C.name})}))}).optional()}),tw=e=>z(R(G(XC,e)),R(G(ZC,e)),jd(G(QC,e))),nw={"people-professionalprofileurl-name-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:.6},mode:`always`}},rw=class extends B{pipeId=YC;payload;payloadSchema=ew;billableOperations=nw;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`people-professionalprofileurl-name-v1-pipe0`)}getInputRequirement(){return tw(this.payload.config)}getRawOutputFields(){return{[$C.name]:this.catalogOutput($C)}}getConnectionsRequirements(){return[{provider:`serper`,rateLimitRatio:1,rateLimitOperation:`serper_search`,allowManagedConnection:!0}]}},iw=ew,aw={pipeId:YC,basePipe:U(YC),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:nw,defaultInputRequirement:tw(null),inputFieldMode:`static`,outputFieldMode:`static`,defaultPayload:{pipe_id:YC,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}}}}},ow=`people:profile:waterfall@1`,sw=_(`profile`),cw=_(`profile_url`),lw=[`prospeo`,`icypeas`,`amplemarket`,`clado`],uw=[{provider:`amplemarket`},{provider:`prospeo`},{provider:`icypeas`}],dw=r.object({pipe_id:r.literal(ow),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,availableProviders:lw,defaultProviders:uw}),input_fields:F(r.object({[cw.name]:T({fieldName:cw.name})})),output_fields:P(r.object({[sw.name]:D({fieldName:sw.name})}))}).optional()}),fw=e=>R(G(cw,e)),pw={"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}},mw=class extends B{pipeId=ow;payload;payloadSchema=dw;billableOperations=pw;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{[sw.name]:this.catalogOutput(sw,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={icypeas:`icypeas_scrape_profile`,prospeo:`prospeo_social_profile_lookup`,clado:`clado_social_profile_lookup`,amplemarket:`amplemarket_people_find`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},hw=dw,gw={pipeId:ow,basePipe:U(ow),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(ow),tags:[V.LINKEDIN,V.WATERFALL],managedProviders:lw,deprecatedProviders:[`clado`],allowedUserConnectionProviders:lw,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:pw,defaultInputRequirement:fw(null),defaultPayload:{pipe_id:ow,run_if:null,connector:null,config:{providers:uw,input_fields:{profile_url:{alias:``}},output_fields:{profile:{alias:``,enabled:!0}}}}},_w=_(`work_email`),vw=_(`crustdata_person_match`),yw=_(`crustdata_profile_match_score`),bw=`people:profile:workemail:crustdata@1`,xw=r.object({pipe_id:r.literal(bw),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[_w.name]:T({fieldName:_w.name})})),output_fields:P(r.object({[vw.name]:D({fieldName:vw.name}),[yw.name]:D({fieldName:yw.name})}))}).optional()}),Sw=e=>R(G(_w,e)),Cw={"people-profile-workemail-crustdata-v1-crustdata":{allowManagedConnection:!0,credits:{default:5},mode:`onSuccess`,provider:`crustdata`}},ww=class extends B{pipeId=bw;payload;payloadSchema=xw;billableOperations=Cw;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`crustdata`]}estimateBillableOperations(e){return H(e,`people-profile-workemail-crustdata-v1-crustdata`)}getInputRequirement(){return Sw(this.payload.config)}getRawOutputFields(){return{[vw.name]:this.catalogOutput(vw),[yw.name]:this.catalogOutput(yw)}}getConnectionsRequirements(){return[{provider:`crustdata`,rateLimitRatio:1,rateLimitOperation:`crustdata_realtime_person_enrich`,allowManagedConnection:!0}]}},Tw=xw,Ew={pipeId:bw,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(bw),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(bw),billableOperations:Cw,allowedUserConnectionProviders:[`crustdata`],managedProviders:[`crustdata`],deprecatedProviders:[],defaultInputRequirement:Sw(null),defaultPayload:{pipe_id:bw,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}}}}},Dw=`people:profileurl:email:waterfall@1`,Ow=_(`email`),kw=_(`work_email`),Aw=_(`profile_url`),jw=[`leadmagic`],Mw=[{provider:`leadmagic`}],Nw=r.object({pipe_id:r.literal(Dw),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,defaultProviders:Mw,availableProviders:jw}),input_fields:F(r.object({[Ow.name]:T({fieldName:Ow.name}),[kw.name]:T({fieldName:kw.name})})),output_fields:P(r.object({[Aw.name]:D({fieldName:Aw.name})}))}).optional()}),Pw=e=>Ad(G(Ow,e),G(kw,e)),Fw={"people-profileurl-email-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:3.5},mode:`onSuccess`}},Iw=class extends B{pipeId=Dw;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{[Aw.name]:this.catalogOutput(Aw,{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}))}},Lw=Nw,Rw={pipeId:Dw,basePipe:U(Dw),managedProviders:jw,deprecatedProviders:[],allowedUserConnectionProviders:jw,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(Dw),billableOperations:Fw,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:Pw(null),defaultPayload:{pipe_id:Dw,run_if:null,connector:null,config:{providers:Mw,input_fields:{email:{alias:``},work_email:{alias:``}},output_fields:{profile_url:{alias:``,enabled:!0}}}}},zw=`people:validate:email:zerobounce@1`,Bw=_(`work_email`),Vw=_(`ip_address`),Hw=_(`is_email_valid`),Uw=r.object({pipe_id:r.literal(zw),connector:w(),run_if:x(),config:r.object({input_fields:F(r.object({[Bw.name]:T({fieldName:Bw.name}),[Vw.name]:T({fieldName:Vw.name})})),output_fields:P(r.object({[Hw.name]:D({fieldName:Hw.name})}))}).optional()}),Ww=e=>z(R(G(Bw,e)),jd(G(Vw,e))),Gw={"people-validate-email-zerobounce-v1-zerobounce":{provider:`zerobounce`,allowManagedConnection:!0,credits:{default:.5},mode:`always`}},Kw=class extends B{pipeId=zw;payload;payloadSchema=Uw;billableOperations=Gw;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`zerobounce`]}estimateBillableOperations(e){return H(e,`people-validate-email-zerobounce-v1-zerobounce`)}getInputRequirement(){return Ww(this.payload.config)}getRawOutputFields(){return{[Hw.name]:this.catalogOutput(Hw)}}getConnectionsRequirements(){return[{provider:`zerobounce`,rateLimitRatio:1,rateLimitOperation:`zerobounce_generic`,allowManagedConnection:!0}]}},qw=Uw,Jw={pipeId:zw,basePipe:U(zw),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:Gw,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`zerobounce`],managedProviders:[`zerobounce`],deprecatedProviders:[],defaultInputRequirement:Ww(null),defaultPayload:{pipe_id:zw,connector:null,run_if:null,config:{input_fields:{ip_address:{alias:``},work_email:{alias:``}},output_fields:{is_email_valid:{alias:``,enabled:!0}}}}},Yw=`people:workemail:profileurl:waterfall@1`,Xw=_(`profile_url`),Zw=_(`work_email`),Qw=_(`email_validation_status`),$w=[`hunter`,`amplemarket`,`findymail`,`leadmagic`,`crustdata`,`clado`],eT=[`clado`,`findymail`],tT=[{provider:`hunter`},{provider:`amplemarket`},{provider:`leadmagic`},{provider:`crustdata`}],nT=r.object({pipe_id:r.literal(Yw),connector:w(),run_if:x(),config:r.object({providers:E({availableProviders:$w,defaultProviders:tT,deprecatedProviders:eT,sectionKey:`general`}),allow_catch_all_emails:Nu({path:`config.allow_catch_all_emails`,defaultValue:!0,groupPath:`config.general`,sectionKey:`general`,info:``,label:`Allow catch-all emails`}),allow_risky_emails:Nu({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({[Xw.name]:T({fieldName:Xw.name})})),output_fields:P(r.object({[Zw.name]:D({fieldName:Zw.name}),[Qw.name]:D({fieldName:Qw.name})}))}).optional()}),rT=e=>R(G(Xw,e)),iT={"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`}},aT=class extends B{pipeId=Yw;payload;payloadSchema=nT;billableOperations=iT;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 rT(this.payload.config)}getRawOutputFields(){return{[Zw.name]:this.catalogOutput(Zw,{isPrimaryOutput:!0}),[Qw.name]:this.catalogOutput(Qw,{isPrimaryOutput:!1})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_email_b2b_lookup`,hunter:`prospeo_email_lookup`,amplemarket:`amplemarket_people_find`,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}))}},oT=nT,sT={pipeId:Yw,basePipe:U(Yw),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(Yw),managedProviders:$w,allowedUserConnectionProviders:$w,deprecatedProviders:eT,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:iT,defaultInputRequirement:rT(null),defaultPayload:{pipe_id:Yw,connector:null,run_if:null,config:{providers:tT,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}}}}},cT=`people:workemail:waterfall@1`,lT=_(`name`),uT=_(`company_website_url`),dT=_(`company_name`),fT=_(`work_email`),pT=_(`email_validation_status`),mT=[`leadmagic`,`prospeo`,`amplemarket`,`hunter`,`icypeas`,`findymail`],hT=[`icypeas`,`findymail`],gT=[{provider:`leadmagic`},{provider:`prospeo`},{provider:`amplemarket`},{provider:`hunter`}],_T=r.object({pipe_id:r.literal(cT),connector:w(),run_if:x(),config:r.object({providers:E({availableProviders:mT,defaultProviders:gT,deprecatedProviders:hT,sectionKey:`general`}),allow_catch_all_emails:Nu({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:Nu({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({[lT.name]:T({fieldName:lT.name}),[uT.name]:T({fieldName:uT.name}),[dT.name]:T({fieldName:dT.name})})),output_fields:P(r.object({[fT.name]:D({fieldName:fT.name}),[pT.name]:D({fieldName:pT.name})}))}).optional()}),vT=e=>z(R(G(lT,e)),Ad(G(uT,e),G(dT,e))),yT={"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`}},bT=class extends B{pipeId=cT;payload;payloadSchema=_T;billableOperations=yT;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 vT(this.payload.config)}getRawOutputFields(){return{[fT.name]:this.catalogOutput(fT,{isPrimaryOutput:!0}),[pT.name]:this.catalogOutput(pT,{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_people_find`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},xT=_T,ST={pipeId:cT,basePipe:U(cT),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(cT),managedProviders:mT,deprecatedProviders:hT,allowedUserConnectionProviders:mT,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:yT,defaultInputRequirement:vT(null),defaultPayload:{pipe_id:cT,connector:null,run_if:null,config:{providers:gT,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}}}}},CT=_(`email`),wT=_(`amplemarket_person_match`),TT=`person:identity:amplemarket@1`,ET=r.object({pipe_id:r.literal(TT),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[CT.name]:T({fieldName:CT.name})})),output_fields:P(r.object({[wT.name]:D({fieldName:wT.name})}))}).optional()}),DT=e=>R(G(CT,e)),OT={"person-identity-amplemarket-v1-amplemarket":{allowManagedConnection:!1,credits:null,mode:null,provider:`amplemarket`}},kT=class extends B{pipeId=TT;payload;payloadSchema=ET;billableOperations=OT;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`amplemarket`]}estimateBillableOperations(){return[]}getInputRequirement(){return DT(this.payload.config)}getRawOutputFields(){return{[wT.name]:this.catalogOutput(wT)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitRatio:1,rateLimitOperation:`amplemarket_people_find`,allowManagedConnection:!1}]}},AT=ET,jT={pipeId:TT,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(TT),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(TT),billableOperations:OT,allowedUserConnectionProviders:[`amplemarket`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:DT(null),defaultPayload:{pipe_id:TT,connector:null,run_if:null,config:{input_fields:{email:{alias:``}},output_fields:{amplemarket_person_match:{alias:``,enabled:!0}}}}},MT=`person:identity:email:waterfall@1`,NT=_(`email`),PT=_(`company_domain`),FT=_(`name`),IT=_(`job_title`),LT=_(`profile_url`),RT=_(`company_profile_url`),zT=_(`company_name`),BT=[`findymail`,`hunter`,`crustdata`],VT=[`findymail`],HT=[{provider:`hunter`},{provider:`crustdata`}],UT=r.object({pipe_id:r.literal(MT),connector:w(),run_if:x(),config:r.object({providers:E({availableProviders:BT,defaultProviders:HT,deprecatedProviders:VT,sectionKey:`general`}),input_fields:F(r.object({[NT.name]:T({fieldName:NT.name})})),output_fields:P(r.object({[FT.name]:D({fieldName:FT.name}),[LT.name]:D({fieldName:LT.name}),[IT.name]:D({fieldName:IT.name}),[PT.name]:D({fieldName:PT.name}),[zT.name]:D({fieldName:zT.name}),[RT.name]:D({fieldName:RT.name})}))}).optional()}),WT=e=>R(G(NT,e)),GT={"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`}},KT=class extends B{pipeId=MT;payload;payloadSchema=UT;billableOperations=GT;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 WT(this.payload.config)}getRawOutputFields(){return{[FT.name]:this.catalogOutput(FT,{isPrimaryOutput:!0}),[LT.name]:this.catalogOutput(LT,{isPrimaryOutput:!0}),[IT.name]:this.catalogOutput(IT,{isPrimaryOutput:!0}),[zT.name]:this.catalogOutput(zT,{isPrimaryOutput:!0}),[RT.name]:this.catalogOutput(RT,{isPrimaryOutput:!0}),[PT.name]:this.catalogOutput(PT,{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}))}},qT=UT,JT={pipeId:MT,basePipe:U(MT),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(MT),managedProviders:BT,deprecatedProviders:VT,allowedUserConnectionProviders:BT,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:GT,defaultInputRequirement:WT(null),defaultPayload:{pipe_id:MT,connector:null,run_if:null,config:{providers:HT,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}}}}},YT=_(`profile_url`),XT=_(`amplemarket_person_match`),ZT=`person:match:amplemarket@1`,QT=r.object({pipe_id:r.literal(ZT),run_if:x(),connector:w(),config:r.object({input_fields:F(r.object({[YT.name]:T({fieldName:YT.name})})),output_fields:P(r.object({[XT.name]:D({fieldName:XT.name})}))}).optional()}),$T=e=>R(G(YT,e)),eE={"person-match-amplemarket-v1-amplemarket":{allowManagedConnection:!1,credits:null,mode:null,provider:`amplemarket`}},tE=class extends B{pipeId=ZT;payload;payloadSchema=QT;billableOperations=eE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`amplemarket`]}estimateBillableOperations(){return[]}getInputRequirement(){return $T(this.payload.config)}getRawOutputFields(){return{[XT.name]:this.catalogOutput(XT)}}getConnectionsRequirements(){return[{provider:`amplemarket`,rateLimitRatio:1,rateLimitOperation:`amplemarket_people_find`,allowManagedConnection:!1}]}},nE=QT,rE={pipeId:ZT,inputFieldMode:`static`,outputFieldMode:`static`,basePipe:U(ZT),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(ZT),billableOperations:eE,allowedUserConnectionProviders:[`amplemarket`],managedProviders:[],deprecatedProviders:[],defaultInputRequirement:$T(null),defaultPayload:{pipe_id:ZT,connector:null,run_if:null,config:{input_fields:{profile_url:{alias:``}},output_fields:{amplemarket_person_match:{alias:``,enabled:!0}}}}},iE=`person:match:role:waterfall@1`,aE=_(`company_domain`),oE=_(`role_finder_match`),sE=[`amplemarket`,`leadmagic`,`crustdata`],cE=[{provider:`amplemarket`},{provider:`leadmagic`},{provider:`crustdata`}],lE=r.object({pipe_id:r.literal(iE),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,defaultProviders:cE,availableProviders:sE}),roles:Du({sectionKey:`general`,groupPath:`config.general`,label:`Roles`,path:`config.roles`,info:`Company roles to include`,maxItems:3,minItems:1,suggestionsDef:g(`titles`),expectedTagType:`string`}),input_fields:F(r.object({[aE.name]:T({fieldName:aE.name})})),output_fields:P(r.object({[oE.name]:D({fieldName:oE.name})}))})}),uE=e=>Ad(G(aE,e)),dE={"person-match-role-waterfall-v1-amplemarket":{provider:`amplemarket`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`},"person-match-role-waterfall-v1-leadmagic":{provider:`leadmagic`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`},"person-match-role-waterfall-v1-crustdata":{provider:`crustdata`,allowManagedConnection:!0,credits:{default:1},mode:`onSuccess`}},fE=class extends B{pipeId=iE;payload;payloadSchema=lE;billableOperations=dE;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 uE(this.payload.config)}getSecretRequirements(){return q(this.payload.config?.roles??[])}getConstantRequirements(){return gp(this.payload.config?.roles??[])}getRawOutputFields(){return{[oE.name]:this.catalogOutput(oE,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={leadmagic:`leadmagic_role_finder`,amplemarket:`amplemarket_people_search`,crustdata:`crustdata_people_db_search`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},pE=lE,mE={pipeId:iE,basePipe:U(iE),managedProviders:sE,deprecatedProviders:[],allowedUserConnectionProviders:sE,label:`Role finder`,executionMode:`waterfall`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-08-06`,replacedBy:`role:waterfall@1`},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(iE),billableOperations:dE,inputFieldMode:`static`,outputFieldMode:`static`,defaultInputRequirement:uE(null),defaultPayload:{pipe_id:iE,run_if:null,connector:null,config:{roles:[],providers:cE,input_fields:{company_domain:{alias:``}},output_fields:{role_finder_match:{alias:``,enabled:!0}}}}},hE=`person:profile:waterfall@1`,gE=_(`profile`),_E=_(`profile_url`),vE=[`prospeo`,`icypeas`,`amplemarket`],yE=[{provider:`amplemarket`},{provider:`prospeo`},{provider:`icypeas`}],bE=r.object({pipe_id:r.literal(hE),run_if:x(),connector:w(),config:r.object({providers:E({sectionKey:`general`,availableProviders:vE,defaultProviders:yE}),input_fields:F(r.object({[_E.name]:T({fieldName:_E.name})})),output_fields:P(r.object({[gE.name]:D({fieldName:gE.name})}))}).optional()}),xE=e=>R(G(_E,e)),SE={"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}},CE=class extends B{pipeId=hE;payload;payloadSchema=bE;billableOperations=SE;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 xE(this.payload.config)}getRawOutputFields(){return{[gE.name]:this.catalogOutput(gE,{isPrimaryOutput:!0})}}getConnectionsRequirements(){let e={icypeas:`icypeas_scrape_profile`,prospeo:`prospeo_social_profile_lookup`,amplemarket:`amplemarket_people_find`};return(this.payload.config?.providers||[]).map((t,n)=>({provider:t.provider,rateLimitRatio:Y(n),rateLimitOperation:e[t.provider],allowManagedConnection:!0}))}},wE=bE,TE={pipeId:hE,basePipe:U(hE),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(hE),tags:[V.LINKEDIN,V.WATERFALL],keywords:[`enrich`,`enrichment`,`json`,`scrape`,`bio`,`experience`],managedProviders:vE,deprecatedProviders:[],allowedUserConnectionProviders:vE,inputFieldMode:`static`,outputFieldMode:`static`,billableOperations:SE,defaultInputRequirement:xE(null),defaultPayload:{pipe_id:hE,run_if:null,connector:null,config:{providers:yE,input_fields:{profile_url:{alias:``}},output_fields:{profile:{alias:``,enabled:!0}}}}},EE=`website:extract:firecrawl@1`,DE=_(`website_url`),OE=_(`firecrawl_extract_result`),kE=r.object({pipe_id:r.literal(EE),connector:w(),run_if:x(),config:r.object({json_schema:Hu({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:Iu({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.`,guide:`Template tags are not supported.`,rows:5,minLength:10,placeholder:`E.g. Extract the company missing and latest news.`}),enable_full_domain_crawl:Nu({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:Nu({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.`,guide:`When true, the extraction follows links outside the specified domain.`}),input_fields:F(r.object({[DE.name]:T({fieldName:DE.name})})),output_fields:P(r.object({[OE.name]:D({fieldName:OE.name})}))})}),AE=e=>R(G(DE,e)),jE={"website-extract-firecrawl-v1-firecrawl":{allowManagedConnection:!0,provider:`firecrawl`,credits:{default:2,level1:{credits:1,weight:1}},mode:`onSuccess`}},ME=class extends B{pipeId=EE;payload;payloadSchema=kE;billableOperations=jE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`firecrawl`]}estimateBillableOperations(e){return H(e,`website-extract-firecrawl-v1-firecrawl`)}getInputRequirement(){return AE(this.payload.config)}getRawOutputFields(){return{[OE.name]:this.catalogOutput(OE)}}getConnectionsRequirements(){return[{provider:`firecrawl`,rateLimitRatio:1,rateLimitOperation:`firecrawl_generic`,allowManagedConnection:!0}]}},NE=kE,PE={pipeId:EE,basePipe:U(EE),label:`Extract`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-08-10`,replacedBy:`website:extract:parallel@1`},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(EE),billableOperations:jE,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`firecrawl`],managedProviders:[`firecrawl`],deprecatedProviders:[],defaultInputRequirement:AE(null),defaultPayload:{pipe_id:EE,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}}}}},FE=`website:maplinks:firecrawl@1`,IE={"website-maplinks-firecrawl-v1-firecrawl":{allowManagedConnection:!0,provider:`firecrawl`,credits:{default:1},mode:`onSuccess`}},LE=_(`website_url`),RE=_(`mapped_links`),zE=r.object({pipe_id:r.literal(FE),connector:w(),run_if:x(),config:r.object({page_limit:Bu({label:`Page limit`,info:`Number of pages searched`,groupPath:`config.general`,max:50,min:1,path:`config.page_limit`,sectionKey:`general`}).nullish(),sitemap:Lu({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:Fu({sectionKey:`general`,label:`Search`,inputType:`text`,info:`Return matching urls`,groupPath:`config.general`,path:`config.search`}).nullable().default(``),input_fields:F(r.object({[LE.name]:T({fieldName:LE.name})})),output_fields:P(r.object({[RE.name]:D({fieldName:RE.name})}))}).optional()}),BE=e=>R(G(LE,e)),VE=class extends B{pipeId=FE;payload;payloadSchema=zE;billableOperations=IE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`firecrawl`]}estimateBillableOperations(e){return H(e,`website-maplinks-firecrawl-v1-firecrawl`)}getInputRequirement(){return BE(this.payload.config)}getRawOutputFields(){return{[RE.name]:this.catalogOutput(RE)}}getConnectionsRequirements(){return[{provider:`firecrawl`,rateLimitRatio:1,rateLimitOperation:`firecrawl_map_requests`,allowManagedConnection:!0}]}},HE=zE,UE={pipeId:FE,basePipe:U(FE),label:`Map domain links`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-08-10`,replacedBy: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(FE),billableOperations:IE,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`firecrawl`],managedProviders:[`firecrawl`],deprecatedProviders:[],defaultInputRequirement:BE(null),defaultPayload:{pipe_id:FE,run_if:null,connector:null,config:{page_limit:25,sitemap:`include`,search:``,input_fields:{website_url:{alias:``}},output_fields:{mapped_links:{alias:``,enabled:!0}}}}},WE=`website:scrape:firecrawl@1`,GE=_(`website_url`),KE=_(`website_markdown`),qE=_(`website_html`),JE=_(`website_links`),YE=r.object({pipe_id:r.literal(WE),connector:w(),run_if:x(),config:r.object({scrape_main_only:Nu({defaultValue:!1,label:`Scrape main content only?`,info:`If selected, content like headers, footers, and sidebars are excluded from the scrape results.`,guide:`Excludes headers, footers, and sidebars from the scrape results.`,sectionKey:`general`,groupPath:`config.general`,path:`config.scrape_main_only`}),input_fields:F(r.object({[GE.name]:T({fieldName:GE.name})})),output_fields:P(r.object({[KE.name]:D({fieldName:KE.name}),[qE.name]:D({fieldName:qE.name}),[JE.name]:D({fieldName:JE.name})}))}).optional()}),XE=e=>R(G(GE,e)),ZE={"website-scrape-firecrawl-v1-firecrawl":{allowManagedConnection:!0,provider:`firecrawl`,credits:{default:.1,level1:{credits:.05,weight:1}},mode:`onSuccess`}},QE=class extends B{pipeId=WE;payload;payloadSchema=YE;billableOperations=ZE;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`firecrawl`]}estimateBillableOperations(e){return H(e,`website-scrape-firecrawl-v1-firecrawl`)}getInputRequirement(){return XE(this.payload.config)}getRawOutputFields(){return{[KE.name]:this.catalogOutput(KE),[qE.name]:this.catalogOutput(qE),[JE.name]:this.catalogOutput(JE)}}getConnectionsRequirements(){return[{provider:`firecrawl`,rateLimitRatio:1,rateLimitOperation:`firecrawl_generic`,allowManagedConnection:!0}]}},$E=YE,eD={pipeId:WE,basePipe:U(WE),label:`Scrape`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-08-10`,replacedBy:`website:markdown:parallel@1`},description:`Turn any URL into clean data.`,tags:[V.SCRAPE],keywords:[`crawl`,`html`,`markdown`,`content`,`web page`,`fetch`],docPath:W(WE),billableOperations:ZE,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`firecrawl`],managedProviders:[`firecrawl`],deprecatedProviders:[],defaultInputRequirement:XE(null),defaultPayload:{pipe_id:WE,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}}}}},tD=`website:scrapelist:firecrawl@1`,nD={"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.`}},rD=_(`urls`),iD=_(`scrape_list_response`),aD=r.object({pipe_id:r.literal(tD),connector:w(),run_if:x(),config:r.object({scrape_main_only:Nu({label:`Scrape main content only?`,defaultValue:!1,info:`If selected headers, footers, and sidebars will be excluded from the results.`,guide:`Excludes headers, footers, and sidebars from the scrape results.`,sectionKey:`general`,groupPath:`config.general`,path:`config.scrape_main_only`}),formats:zu({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({[rD.name]:T({fieldName:rD.name})})),output_fields:P(r.object({[iD.name]:D({fieldName:iD.name})}))}).optional()}),oD=e=>R(G(rD,e)),sD=class extends B{pipeId=tD;payload;payloadSchema=aD;billableOperations=nD;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 oD(this.payload.config)}getRawOutputFields(){return{[iD.name]:this.catalogOutput(iD)}}getConnectionsRequirements(){return[{provider:`firecrawl`,rateLimitRatio:1,rateLimitOperation:`firecrawl_generic`,allowManagedConnection:!0}]}},cD=aD,lD={pipeId:tD,basePipe:U(tD),label:`Scrape list`,executionMode:`single`,categories:[`deprecated`],lifecycle:{deprecatedOn:`2026-08-10`,replacedBy:null},description:`Turn a list of URLs into clean scraped data.`,tags:[V.SCRAPE],keywords:[`crawl`,`html`,`markdown`,`content`,`batch`,`bulk`],docPath:W(tD),billableOperations:nD,inputFieldMode:`static`,outputFieldMode:`static`,allowedUserConnectionProviders:[`firecrawl`],managedProviders:[`firecrawl`],deprecatedProviders:[],defaultInputRequirement:oD(null),defaultPayload:{pipe_id:tD,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}}}}},uD=`email:draft:gmail@1`,dD=_(`gmail_draft_id`),fD=r.object({pipe_id:r.literal(uD),connector:C(),run_if:x(),config:r.object({to:S({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:S({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:S({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:S({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.",guide:`Markdown; rendered to HTML when the draft is created.`,placeholder:`Hi {{ first_name }},
76
76
 
77
77
  …`,inputType:`text`,minLength:1,maxLength:1e6,expectedTagType:`string`,expectedTagFormat:`markdown`,multiline:!0}),output_fields:P(r.object({[dD.name]:D({fieldName:dD.name})}))})}),pD={"email-draft-gmail-v1-gmail":{allowManagedConnection:!1,provider:`gmail`,credits:null,mode:null}},mD=class extends B{pipeId=uD;payload;payloadSchema=fD;billableOperations=pD;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 hp(this.getTemplatedFields())}getSecretRequirements(){return q(this.getTemplatedFields())}getConstantRequirements(){return gp(this.getTemplatedFields())}getRawOutputFields(){return{[dD.name]:this.catalogOutput(dD)}}getConnectionsRequirements(){return[{provider:`gmail`,rateLimitRatio:1,rateLimitOperation:`gmail_create_draft`,allowManagedConnection:!1}]}},hD=fD,gD={pipeId:uD,basePipe:U(uD),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(uD),hasSideEffects:!0,billableOperations:pD,inputFieldMode:`config`,outputFieldMode:`static`,allowedUserConnectionProviders:[`gmail`],defaultInputRequirement:null,managedProviders:[],deprecatedProviders:[],defaultPayload:{pipe_id:uD,connector:{strategy:`first`,connections:[]},run_if:null,config:{to:``,reply_to:``,subject:``,body:``,output_fields:{gmail_draft_id:{alias:``,enabled:!0}}}}},_D=`email:iswork@1`,vD=_(`is_work_email`),yD=_(`email`),bD=r.object({pipe_id:r.literal(_D),run_if:x(),connector:au(),config:r.object({input_fields:F(r.object({[yD.name]:T({fieldName:yD.name})})),output_fields:P(r.object({[vD.name]:D({fieldName:vD.name})}))}).optional()}),xD=e=>R(G(yD,e)),SD={"email-iswork-v1-pipe0":{provider:`pipe0`,allowManagedConnection:!0,credits:{default:0},mode:`always`}},CD=class extends B{pipeId=_D;payload;payloadSchema=bD;billableOperations=SD;constructor(e){super(),this.payload=this.validatePayload(e)}getProviderNames(){return[`pipe0`]}estimateBillableOperations(e){return H(e,`email-iswork-v1-pipe0`)}getInputRequirement(){return xD(this.payload.config)}getRawOutputFields(){return{[vD.name]:this.catalogOutput(vD)}}getConnectionsRequirements(){return[{provider:`pipe0`,rateLimitRatio:1,rateLimitOperation:`pipe0_logic`,allowManagedConnection:!0}]}},wD=bD,TD={pipeId:_D,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(_D),billableOperations:SD,basePipe:U(_D),allowedUserConnectionProviders:[],inputFieldMode:`static`,outputFieldMode:`static`,managedProviders:[`pipe0`],deprecatedProviders:[],defaultInputRequirement:xD(null),defaultPayload:{pipe_id:_D,run_if:null,connector:null,config:{input_fields:{email:{alias:``}},output_fields:{is_work_email:{alias:``,enabled:!0}}}}},ED=`email:send:gmail@1`,DD=_(`gmail_email_success`),OD=r.object({pipe_id:r.literal(ED),connector:C(),run_if:x(),config:r.object({to:S({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:S({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:S({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:S({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.",guide:`Markdown; rendered to HTML at send time.`,placeholder:`Hi {{ first_name }},
78
78
 
@@ -137,7 +137,7 @@ Customize the message using the name of the user: {{ name }}.
137
137
  `}}],input:[{id:`1`,job_title:`GTM Engineer`,name:`Pipe Piper`}]}],"person:profileurl:name@1":[{config:{environment:`production`},pipes:[{pipe_id:`person:profileurl:name@1`}],input:[{id:`1`,name:`John`,company_name:`Pipe0`}]}],"template:fill@1":[{config:{environment:`production`},pipes:[{pipe_id:`template:fill@1`,config:{template:`Hey team: A new user has just signed up. Here's the info:
138
138
  **Name**: {{ name }}
139
139
  **Email**: {{ email }}
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`}]}],"website:markdown:parallel@1":[{config:{environment:`production`},pipes:[{pipe_id:`website:markdown:parallel@1`,config:{}}],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:`amplemarket`},{provider:`leadmagic`},{provider:`crustdata`}],roles:[`CEO`]}}],input:[{id:`1`,company_domain:`acme.com`}]}],"role:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`role:waterfall@1`,config:{providers:[{provider:`amplemarket`},{provider:`leadmagic`}],titles:[`CEO`]}}],input:[{id:`1`,company_domain:`acme.com`}]}],"roles:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`roles:waterfall@1`,config:{providers:[{provider:`amplemarket`}],titles:[`VP of Sales`,`Head of Sales`],limit:10}}],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`}]}],"company:match:amplemarket@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:match:amplemarket@1`}],input:[{id:`1`,company_domain:`microsoft.com`,company_profile_url:`https://www.linkedin.com/company/microsoft`}]}],"company:jobs:amplemarket@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:jobs:amplemarket@1`,config:{job_functions:[`Sales`],job_departments:[`Revenue`],job_seniorities:[`Manager`,`Director`,`VP`],find_remote_opportunities_only:!1,limit:15}}],input:[{id:`1`,company_domain:`microsoft.com`,company_profile_url:`https://www.linkedin.com/company/microsoft`}]}],"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;
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`}]}],"website:markdown:parallel@1":[{config:{environment:`production`},pipes:[{pipe_id:`website:markdown:parallel@1`,config:{}}],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-attempts`,contract:``,entry_fields:[{field_name:`user_id`}],where:null,new_bucket_name:``,allow_bucket_creation:!0,output_fields:{bucket_event_count:{alias:`attempt_count`,enabled:!0},bucket_event_last_at:{alias:``,enabled:!1}}}}],input:[{id:`1`,user_id:`u_123`}]}],"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:`amplemarket`},{provider:`leadmagic`},{provider:`crustdata`}],roles:[`CEO`]}}],input:[{id:`1`,company_domain:`acme.com`}]}],"role:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`role:waterfall@1`,config:{providers:[{provider:`amplemarket`},{provider:`leadmagic`}],titles:[`CEO`]}}],input:[{id:`1`,company_domain:`acme.com`}]}],"roles:waterfall@1":[{config:{environment:`production`},pipes:[{pipe_id:`roles:waterfall@1`,config:{providers:[{provider:`amplemarket`}],titles:[`VP of Sales`,`Head of Sales`],limit:10}}],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`}]}],"company:match:amplemarket@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:match:amplemarket@1`}],input:[{id:`1`,company_domain:`microsoft.com`,company_profile_url:`https://www.linkedin.com/company/microsoft`}]}],"company:jobs:amplemarket@1":[{config:{environment:`production`},pipes:[{pipe_id:`company:jobs:amplemarket@1`,config:{job_functions:[`Sales`],job_departments:[`Revenue`],job_seniorities:[`Manager`,`Director`,`VP`],find_remote_opportunities_only:!1,limit:15}}],input:[{id:`1`,company_domain:`microsoft.com`,company_profile_url:`https://www.linkedin.com/company/microsoft`}]}],"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
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:Yi,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`}]}]},VQ=.1,HQ=[`level1`,`level2`,`level3`];function UQ(e,t){let n=HQ[t-1];if(n)return e[n]}function WQ(e,t){for(let n=t;n>=1;n--){let t=UQ(e,n);if(t)return{level:n,tier:t}}}function GQ(e){let t=[];for(let n=1;n<=3;n++){let r=UQ(e,n);r&&t.push({level:n,credits:r.credits,weight:r.weight})}return t}function KQ(e){if(e.default<.1)return!1;let t=GQ(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 qQ(){let e=new Map;for(let t of Object.values(bq))for(let[n,r]of Object.entries(t.billableOperations)){let i=r;if(!i?.allowManagedConnection||!KQ(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:GQ(i.credits),usedBy:[o]})}for(let t of Object.values(QK)){let{cost:n}=t;if(!n.allowManagedConnection||!KQ(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:GQ(n.credits),usedBy:[i]})}return[...e.values()].sort((e,t)=>e.billableOperation.localeCompare(t.billableOperation))}function JQ(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=>JQ(e,t))}}}function YQ(e){switch(e.kind){case`field`:return e.field.resolvedName;case`optional`:return`${e.field.resolvedName} (optional)`;case`all`:return e.of.map(YQ).join(` AND `);case`any`:return`(${e.of.map(YQ).join(` OR `)})`}}function XQ(e,t){let n=2,r=`${e}_${n}`;for(;t.has(r);)n++,r=`${e}_${n}`;return r}function ZQ({pipeId:e,availableFields:t,inputFieldAliases:n,availableFieldMeta:r}){let i=bq[e];if(!i)throw Error(`Unknown pipe_id: "${e}"`);let a=new Set(t),o=i.defaultInputRequirement,s=o&&n&&Object.keys(n).length>0?JQ(o,n):o,c=s?Md(s,a):!0,l=s?Nd(s).filter(e=>e.required).map(e=>({name:e.field.name,resolved_name:e.field.resolvedName,present:a.has(e.field.resolvedName)})):[],u=c?[]:l.filter(e=>!e.present).map(e=>e.resolved_name),d={};if(!c&&r&&s)for(let{field:e,required:t}of Nd(s)){if(!t||a.has(e.resolvedName)||typeof e.type!=`string`)continue;let n=typeof e.format==`string`?e.format:null,i=Object.entries(r).filter(([t,n])=>a.has(t)&&n.type===e.type).sort(([,e],[,t])=>Number((t.format??null)===n)-Number((e.format??null)===n)).slice(0,3).map(([e])=>e);i.length>0&&(d[e.resolvedName]=i)}let f=new Set(a),p=[],m=[];for(let e of xq(i)){let t=a.has(e),n;t?(n=XQ(e,f),f.add(n),m.push({name:e,resolved_name:e,suggested_alias:n})):f.add(e),p.push({name:e,resolved_name:e,collides:t,suggested_alias:n})}return{pipe_id:e,runnable:c,requirement_description:s?YQ(s):`(no inputs required)`,required_fields:l,missing_fields:u,...Object.keys(d).length>0?{alias_candidates:d}:{},output_fields:p,output_collisions:m}}const QQ=[`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`],$Q=[`yyyy-MM-dd`,`yyyy/MM/dd`,`MM/dd/yyyy`,`MM-dd-yyyy`,`yyyyMMdd`,`dd-MM-yyyy`,`dd/MM/yyyy`],e$=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})}),t$=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 n$(e){return!isNaN(e.getTime())}const r$=r.coerce.string().trim().transform(e=>{let t=e.replace(/[^0-9T:.\-/ ]/g,``).trim();for(let e of QQ){let n=c(t,e,new Date(0));if(n$(n))return s(n,`yyyy-MM-dd'T'HH:mm:ss`)}throw Error(`Invalid date format: ${e}`)}),i$=r.coerce.string().trim().transform(e=>{for(let t of $Q){let n=c(e,t,new Date(0));if(n$(n))return s(n,`yyyy-MM-dd`)}throw Error(`Invalid date format: ${e}`)}),a$=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`}),o$=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()),s$=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 c$(e,t){if(t===null)return e===``||e==null?null:e;if(e==null)return null;try{switch(t){case`url`:return e$.parse(e);case`email`:return t$.parse(e);case`datetime`:return r$.parse(e);case`date`:return i$.parse(e);case`decimal`:return a$.parse(e);case`int`:return o$.parse(e);case`currency`:return r.number().parse(e);case`percent`:return r.number().parse(e);case`address_line_1`:return s$.parse(e);case`website_url`:return e$.parse(e);case`profile_url`:return e$.parse(e);case`zip_code`:return s$.parse(e);case`markdown`:case`phone`:case`text`:return s$.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 ${rh(e)} into format ${t}: ${r.message}`):r}}function l$(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(Xq(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:c$(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 u$(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&&Xq(a)&&(i.id=a.value),i.id||=crypto.randomUUID();let{id:o}=i;if(typeof o!=`string`&&typeof o!=`number`){n.errors.push(FO.InvalidId());continue}if(n.records[o]){n.errors.push(FO.IDConflict({index:r,id:o}));continue}n.order.push(o),n.records[o]={id:o,fields:l$(e,n,i)}}}function d$({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{u$(e,t,r);let{queuedRecordIdSet:i,adoptedRecordIdSet:a}=f$(e,t,r,n);if(r.queued_record_ids=i,r.adopted_record_ids=a,p$(e,r,n?.queue?.enabled),h$(e,r,n),x$(e,r),r.errors.length>0)throw new LO(r.errors);return r}catch(e){throw e instanceof LO?e:new LO([FO.ResponseGenerationFailed({error:e})])}}function f$(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(FO.UnknownResolver({pipeId:s.pipe_id,index:o}));continue}let{queuedRecordIds:l,adoptedRecordIds:u}=b$(e,t,c,n,r);i=i.concat(l),a=a.concat(u)}return{queuedRecordIdSet:new Set(i),adoptedRecordIdSet:new Set(a)}}function p$(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 ${AO(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 ${AO(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(FO.UnknownResolver({pipeId:i.pipe_id,index:n}));continue}Object.values(t.records).forEach(e=>{let{valid:t,failedPipeInputField:n,failedRecordField:i}=Pd(a.getInputRequirement(),e);t===!1&&r(a,n,i,e)})}}const m$=[`no_result`,`failed`,`skipped`];function h$(e,t,n){if(!n.queue?.enabled)return;let r=n.queue.triggers?.status?.includes(`pending`)??!0?[...m$,`pending`]:m$,i={pipes:e.orderedPipeInstances,derivedInputFields:e.derivedInputFields};for(let n of e.orderedPipeInstances){if(!n)continue;let a=Object.values(n.getOutputFields());if(a.length<2)continue;let o=a.map(e=>({resolvedName:e.resolvedName,type:Jd(i,e.type),format:Yd(i,e.format)})),s=n.getConfigHashKey();for(let i of Object.values(t.records)){let t=o.map(e=>{let t=i.fields[e.resolvedName];if(!t)throw Error(`Internal: Output field ${e.resolvedName} not found`);return{...e,field:t}});if(!t.some(({field:e})=>e.status===`queued`))continue;let a=null;for(let{field:o,type:c,format:l}of t)r.includes(o.status)&&o.value==null&&(a??=n.getInputHashKey(i),o.status=`queued`,o.value=null,o.reason=null,o.widgets={},o.type=c,o.format=l,o.resolved_by={environment:e.environment,ref:`system`,config_hash:s,input_hash:a})}}}function g$({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 _$({status:e,config:t}){return t.queue?.enabled?t.queue.triggers?.status?.includes(e)??!1:!1}function v$({inputHashKey:e,configHashKey:t,expandedValue:n,config:r}){return g$({inputHashKey:e,configHashKey:t,expandedValue:n,config:r})||_$({status:n.status,config:r})}function y$({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 b$(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=Jd({pipes:e.orderedPipeInstances,derivedInputFields:e.derivedInputFields},u),p=Yd({pipes:e.orderedPipeInstances,derivedInputFields:e.derivedInputFields},a.format),{resolvedInputValue:m,isExpanded:ee,expandedValue:te}=Zq(t[c]?.[l]??null),ne=d.fields[l],re=n.getConfigHashKey(),ie=n.getInputHashKey(d),ae={type:f,format:p,claimed_by:{ref:n.pipeId,config_hash:re}};if(r.errors.length>0&&m===null){let t=r.errors[0];if(!t)throw Error(`firstError undefined.`);d.fields[l]={...ae,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 oe=Yq(m);if(oe!==`unknown`&&oe!==f){let t=i.queue?.triggers?.outputFieldTypeError&&i.queue.enabled;d.fields[l]={...ae,value:t?null:m,status:t?`queued`:`completed`,reason:null,resolved_by:t?{environment:e.environment,ref:`system`,config_hash:re,input_hash:ie}:{environment:e.environment,ref:`input`,config_hash:null,input_hash:null},widgets:t?{}:te?.widgets||ne?.widgets||{},format:t?p:te?.format||p};continue}if(m==null){let t=ee&&i.queue?.enabled&&(te.status===`pending`||te.status===`queued`||te.status===`processing`),n=ee&&!t;if(ee&&i.adopt?.enabled===!0&&(!i.adopt.statuses||i.adopt.statuses.includes(te.status))){let{didAdopt:e}=y$({inputHashKey:ie,configHashKey:re,expandedValue:te});e&&s.push(d.id)}if(ee&&te.status!==`pending`&&v$({inputHashKey:ie,configHashKey:re,config:i,expandedValue:te})&&i.queue?.enabled)o.push(d.id),d.fields[l]={...ae,value:null,status:`queued`,reason:null,resolved_by:{environment:e.environment,ref:`system`,config_hash:re,input_hash:ie},widgets:{}};else if(n)d.fields[l]={...ae,value:null,status:te.status,type:te.type||f,reason:te.reason||null,resolved_by:te.resolved_by||null,widgets:te.widgets||{},format:te.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]={...ae,value:null,status:n,reason:null,resolved_by:n===`queued`?{environment:e.environment,ref:`system`,config_hash:re,input_hash:ie}:null,widgets:{}}}continue}if(ee){if(ee&&i.adopt?.enabled===!0&&(!i.adopt.statuses||i.adopt.statuses.includes(te.status))){let{didAdopt:e}=y$({inputHashKey:ie,configHashKey:re,expandedValue:te});e&&s.push(d.id)}v$({inputHashKey:ie,configHashKey:re,expandedValue:te,config:i})&&r.errors.length===0?(o.push(d.id),d.fields[l]={...ae,value:null,status:`queued`,reason:null,resolved_by:{environment:e.environment,ref:`system`,config_hash:null,input_hash:null},widgets:{}}):d.fields[l]={...ae,value:m,status:`completed`,type:te.type||f,reason:te.reason||null,resolved_by:te.resolved_by||{ref:`input`,config_hash:null,input_hash:null,environment:null},widgets:te.widgets||ne?.widgets||{},format:te.format||p}}else try{let e=c$(m,p);d.fields[l]={...ae,value:e,status:`completed`,reason:null,resolved_by:{ref:`input`,config_hash:null,input_hash:null,environment:null},widgets:ne?.widgets||{}}}catch{let t=i.queue?.enabled?`queued`:`failed`;t===`queued`&&o.push(d.id),d.fields[l]={...ae,value:m,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:re,input_hash:ie},widgets:{}}}}}return{queuedRecordIds:o,adoptedRecordIds:s}}function x$(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=$q(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 S$(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 C$(e,t={}){return Object.values(e).map(e=>S$(e.fields,t))}function w$(e,t={}){return e.map(e=>S$(e.fields,t))}function T$(e,t={}){return S$(e.fields,t)}function E$(e,t){return e.map(e=>{let n={};return Object.entries(e).forEach(([e,r])=>{let{isExpanded:i,expandedValue:a,resolvedInputValue:o}=Zq(r);i===!0&&a.status!=null&&t.unexpandStatuses.includes(a.status)?n[e]=o:n[e]=r}),n})}const D$={"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 → expand 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, expand 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 expand, 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 expand 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 expandappend pipes) must reference is_claim_successful in their run_if (value eq true), or the dedupe is decorative and duplicates append 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 payload 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 APPEND pipe's run_if referencing these count outputs, never by list ordering.`},{kind:`pipe`,id:`row:expandappend:sheet@1`,role:`expand 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 expanded 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 expand 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 expand's rows enrich immediately; never wait for expanded rows 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:`expand 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/expand 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
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`}]}}},O$=Object.keys(D$);function k$(e){return D$[e]}const A$=(()=>{let e=new Map;for(let t of Object.values(D$))for(let n of t.steps){let r=e.get(n.id)??[];r.push(t.playbookId),e.set(n.id,r)}return e})();function j$(e){return A$.get(e)??[]}function M$(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 N$=[`record_permission:read`,`object_configuration:read`],P$=[`list_entry:read`,`list_configuration:read`],F$=[`user_management:read`],I$=[`note:read`,`meeting:read`,`task:read`],L$=[`record_permission:read-write`,`object_configuration:read`],R$=N$,z$=[...new Set([...N$,...P$,...F$,...L$,...I$])];function B$(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 V$(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 H$(e){let t=V$(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 U$(e){return e?V$(e):null}const W$={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 G$(e){return W$[e]??`org_policy`}function K$(e){return Array.isArray(e)?e.filter(e=>typeof e==`object`&&!!e&&typeof e.errorCode==`string`):[]}function q$(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 J$={operators:[`eq`,`neq`,`contains`],encoding:`quoted`,columnType:`string`},Y$={operators:[`eq`,`neq`,`gt`,`gte`,`lt`,`lte`],encoding:`bare`,columnType:`number`},X$={operators:[`eq`,`neq`,`gt`,`gte`,`lt`,`lte`],encoding:`date`,columnType:`string`},Z$={string:J$,email:J$,phone:J$,url:J$,picklist:{...J$},combobox:{...J$},id:{operators:[`eq`,`neq`],encoding:`quoted`,columnType:`string`},reference:{operators:[`eq`,`neq`],encoding:`quoted`,columnType:`string`},int:Y$,double:Y$,currency:Y$,percent:Y$,date:X$,datetime:X$,time:X$,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 Q$(e){return Z$[e]??J$}function $$(){let e=[];for(let[t,n]of Object.entries(Z$))e.push(n.filterRejection?`- ${t}: not filterable (${n.filterRejection})`:`- ${t}: ${n.operators.join(`, `)}`);return e.join(`
143
143
  `)}function e1({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 t1=/^[a-zA-Z][a-zA-Z0-9_]*(\.[a-zA-Z][a-zA-Z0-9_]*)*$/,n1=/^[a-zA-Z0-9]{15}([a-zA-Z0-9]{3})?$/;function r1(e){return t1.test(e)}function i1(e){return n1.test(e)}function a1(e){if(!r1(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 o1(e){return e.replace(/\\/g,`\\\\`).replace(/'/g,`\\'`)}function s1(e){return`'${o1(e)}'`}function c1(e){return o1(e).replace(/([%_])/g,`\\$1`)}function l1(e){if(e.length===0)throw Error(`IN () with an empty list is invalid SOQL`);return`(${e.map(s1).join(`, `)})`}const u1=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`]),d1=/^(LAST|NEXT)_N_(DAYS|WEEKS|MONTHS|QUARTERS|YEARS|FISCAL_QUARTERS|FISCAL_YEARS):\d{1,4}$/;function f1(e){let t=e.trim().toUpperCase();return u1.has(t)||d1.test(t)}const p1=/^\d{4}-\d{2}-\d{2}$/,m1=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,3})?(Z|[+-]\d{2}:\d{2})$/;function h1(e){let t=e.trim();if(f1(t))return t.toUpperCase();if(p1.test(t)||m1.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 g1(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 _1(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 v1(e){if(!i1(e))throw Error(`'${e}' is not a valid Salesforce record id cursor`);return`Id > ${s1(e)}`}var y1=class extends zt{getConnectionsRequirements(){return[]}getProviderNames(){return[]}estimateBillableOperations(e){return[]}};const b1=`report:deliver:email@1`,x1=r.object({effect_id:r.literal(b1),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.`)})}),S1=class extends y1{effectId=b1;schema=x1;payload;billableOperations={};constructor(e){super(),this.payload=this.validatePayload(e)}},C1=x1,w1={effectId:b1,baseEffect:Lt(b1),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:b1,config:{recipients:[]}}},T1=`report:generate@1`,E1=`report-generate-v1`,D1=cl(E1),O1=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.).`)}),k1=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(O1).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.`)}),A1=r.object({effect_id:r.literal(T1),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(Gc).default(Qc),prompt_label:r.string().max(200).optional().describe(`Short label for the version switcher. Defaults to a generated one.`),refresh:k1.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.")})}),j1=class extends y1{effectId=T1;schema=A1;payload;billableOperations=D1;constructor(e){super(),this.payload=this.validatePayload(e)}getConnectionsRequirements(){return nl(this.payload.config.model)}getProviderNames(){return tl(this.payload.config.model)}estimateBillableOperations(e){return ul(e,{model:this.payload.config.model,prefix:E1,inputTokens:3e4,outputTokens:8e3})}},M1=A1,N1={effectId:T1,baseEffect:Lt(T1),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:D1,allowedUserConnectionProviders:[],managedProviders:rl(),defaultPayload:{effect_id:T1,config:{prompt:``,model:Qc}}},P1=`report:update@1`,F1=r.record(r.string(),r.unknown()),I1=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:F1.optional().describe(`Full replacement for the frozen data snapshot.`),data_patch:F1.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.`})}),L1=r.object({effect_id:r.literal(P1),config:I1}),R1=class extends y1{effectId=P1;schema=L1;payload;billableOperations={};constructor(e){super(),this.payload=this.validatePayload(e)}},z1=L1,B1={effectId:P1,baseEffect:Lt(P1),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:P1,config:{mode:`full_rewrite`,markdown:`## Overview`}}},V1=r.object({effect_id:Ct,config_hash:r.string(),status:r.enum([`completed`,`failed`,`skipped`]),error:r.string().optional()}),H1={"report:update@1":R1,"report:generate@1":j1,"report:deliver:email@1":S1},U1={"report:update@1":z1,"report:generate@1":M1,"report:deliver:email@1":C1},W1={"report:update@1":B1,"report:generate@1":N1,"report:deliver:email@1":w1};function G1(e){return H1[e]}function K1(e){return W1[e]}function q1(e){return U1[e]}function J1(e){let t=H1[e.effect_id];if(!t)throw Error(`Unknown report effect '${e.effect_id}'`);return new t(e)}function Y1(){return Object.keys(W1).filter(e=>W1[e].agentExposure!==`excluded`)}function X1(e){return W1[e]?.agentExposure!==`excluded`}const Z1=t.discriminatedUnion(`effect_id`,Object.values(U1).map(e=>e)).openapi(`ReportEffectPayload`),Q1=t.object({effects:t.array(Z1).min(1)}).openapi(`ReportEffectsRequest`),$1=t.object({id:t.string(),status:Bt,effects:t.array(V1),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 e0(e){let t=(e??[]).map(e=>t0(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 t0(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=n0(t);return{title:e??t,description:e??t}}}}function n0(e){try{return K1(e)?.label}catch{return}}function r0(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 i0(e,t){let n={...e};for(let[e,r]of Object.entries(t))r===null?delete n[e]:n[e]=r;return n}const a0=[`Metric`,`DataTable`,`Chart`,`Callout`,`Stats`],o0=[`info`,`success`,`warning`,`danger`],s0=500,c0=r.union([r.string(),r.number(),r.boolean(),r.null()]),l0=r.record(r.string(),c0),u0=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()}),d0=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()}),f0=r.object({kind:r.literal(`table`),columns:r.array(d0).min(1),rows:r.array(l0).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`})})}),p0=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(l0).max(500)}),m0=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)}),h0=r.discriminatedUnion(`kind`,[u0,f0,p0,m0]),g0=r.record(r.string(),h0),_0={Metric:`metric`,DataTable:`table`,Chart:`chart`,Stats:`stats`},v0={Metric:[`data`],DataTable:[`data`],Chart:[`data`],Callout:[`variant`],Stats:[`data`]},y0=new Set(a0),b0=new Set([`Metric`,`DataTable`,`Chart`]),x0=/<(?:\/?[A-Za-z][A-Za-z0-9-]*(?=[\s/>])|!--|!|\?)/g,S0=RegExp(`<(?=[ \\t]|/[ \\t])[ \\t]*/?[ \\t]*(${a0.join(`|`)})\\b[^>\\n]*>`,`g`),C0=/([A-Za-z_][A-Za-z0-9_-]*)\s*=\s*"([^"]*)"/g;function w0(e){let t=[],n=e.split(`