@koda-sl/baker-cli 0.574.0-dev.19539e5a8 → 0.575.0-dev.85f21462e
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/README.md +44 -9
- package/dist/account-MDLPCIDQ.js +82 -0
- package/dist/account-VRXCDDXY.js +82 -0
- package/dist/account-YYB2KWLU.js +139 -0
- package/dist/account-assets-BFMQWV33.js +290 -0
- package/dist/account-level-47IS2CZB.js +611 -0
- package/dist/account-reads-FSOURMSH.js +219 -0
- package/dist/account-reads-FSOURMSH.js.map +1 -0
- package/dist/account-users-FXOWESWY.js +64 -0
- package/dist/account-writes-SRTOKSMT.js +68 -0
- package/dist/accounts-5YJZVSTB.js +498 -0
- package/dist/accounts-5YJZVSTB.js.map +1 -0
- package/dist/accounts-AT2UB2L3.js +80 -0
- package/dist/accounts-LTGUK6OV.js +76 -0
- package/dist/accounts-LTUEBWJL.js +115 -0
- package/dist/accounts-NR3ARJ72.js +119 -0
- package/dist/actions-766X6XRB.js +55 -0
- package/dist/active-entities-QWJXR4W6.js +103 -0
- package/dist/activecampaign-MC4FYCCF.js +938 -0
- package/dist/activities-ZRP22SC2.js +75 -0
- package/dist/ad-group-writes-UFBFB2PL.js +172 -0
- package/dist/ad-groups-KRKMZPF3.js +70 -0
- package/dist/ad-writes-SIAGGUDJ.js +176 -0
- package/dist/add-DWKVVW76.js +305 -0
- package/dist/add-F65GOWKP.js +85 -0
- package/dist/add-IALA4VRA.js +148 -0
- package/dist/add-ITX64WEC.js +81 -0
- package/dist/add-MYX3BSUJ.js +107 -0
- package/dist/add-WAVXB2QA.js +97 -0
- package/dist/add-accounts-YTLQCSXB.js +91 -0
- package/dist/ads-3T4C4BBH.js +79 -0
- package/dist/ads-A34INCCM.js +120 -0
- package/dist/ads-AKF5AT6O.js +128 -0
- package/dist/ads-UGMHE33I.js +48 -0
- package/dist/adsets-HNFBX4LB.js +182 -0
- package/dist/advertisers-UFOLIRIK.js +123 -0
- package/dist/advertisers-YTG6VA6R.js +125 -0
- package/dist/alerts-2GMBX6JV.js +151 -0
- package/dist/alerts-2GMBX6JV.js.map +1 -0
- package/dist/analytics-3EWNAHNG.js +2397 -0
- package/dist/analytics-3EWNAHNG.js.map +1 -0
- package/dist/analytics-G4WFP37R.js +447 -0
- package/dist/animate-PSOAMA52.js +480 -0
- package/dist/approved-3W56YTOZ.js +73 -0
- package/dist/asset-writes-2CYNDRPU.js +50 -0
- package/dist/assign-5FALEZYD.js +80 -0
- package/dist/audience-size-VRYRLPO5.js +76 -0
- package/dist/audience-writes-JNVGUHGN.js +327 -0
- package/dist/audiences-EH426E3T.js +280 -0
- package/dist/audiences-OOXSXKIT.js +85 -0
- package/dist/audiences-S6TXNKQ2.js +106 -0
- package/dist/audit-O2RRST7B.js +88 -0
- package/dist/audit-WHIVWMAI.js +154 -0
- package/dist/autocomplete-3HCLXTGK.js +114 -0
- package/dist/avatars-HN74FWDF.js +38 -0
- package/dist/bid-pricing-NN5JKZS4.js +103 -0
- package/dist/brand-MWU5IVEZ.js +22 -0
- package/dist/brief-6TXWQWHJ.js +543 -0
- package/dist/businesses-HOAQVYRH.js +54 -0
- package/dist/campaign-groups-MGEKCP7J.js +99 -0
- package/dist/campaign-writes-ORUT54WL.js +168 -0
- package/dist/campaign-writes-Z7B6V6Q3.js +176 -0
- package/dist/campaigns-3BDIHUSW.js +78 -0
- package/dist/campaigns-E7YC762Q.js +111 -0
- package/dist/campaigns-EEH3VDK6.js +130 -0
- package/dist/campaigns-WLOJFSLV.js +113 -0
- package/dist/canvas-SEVIQRXN.js +46 -0
- package/dist/capabilities-KWJYBYQO.js +147 -0
- package/dist/cards-OOKI2WSA.js +85 -0
- package/dist/catalog-DHTZDVWS.js +66 -0
- package/dist/catalogs-R4QFA5XO.js +130 -0
- package/dist/catalogs-WBXWK7NT.js +782 -0
- package/dist/changes-F2GP72MO.js +167 -0
- package/dist/changes-F2GP72MO.js.map +1 -0
- package/dist/chatgpt-MN4XHO6L.js +47 -0
- package/dist/chats-IBMO724I.js +589 -0
- package/dist/check-EZI4OF3Q.js +107 -0
- package/dist/chunk-2CSNR4U7.js +8954 -0
- package/dist/chunk-2CSNR4U7.js.map +1 -0
- package/dist/chunk-2VUD4CIW.js +64 -0
- package/dist/chunk-2ZKQNMK2.js +74 -0
- package/dist/chunk-3WOFZTGC.js +297 -0
- package/dist/chunk-3WOFZTGC.js.map +1 -0
- package/dist/chunk-423G75A7.js +494 -0
- package/dist/chunk-4ZAHRAWL.js +454 -0
- package/dist/chunk-5IHZTLDH.js +288 -0
- package/dist/chunk-5WOZ7OGU.js +1919 -0
- package/dist/chunk-62UGVR7Q.js +94 -0
- package/dist/chunk-66LUQENO.js +197 -0
- package/dist/chunk-6J2UZJ6F.js +962 -0
- package/dist/chunk-6ZW5AR5N.js +84 -0
- package/dist/chunk-7DT6XY4A.js +719 -0
- package/dist/chunk-7DT6XY4A.js.map +1 -0
- package/dist/chunk-7EPR7L2D.js +203 -0
- package/dist/chunk-7PKEBTVP.js +98 -0
- package/dist/chunk-7PKEBTVP.js.map +1 -0
- package/dist/chunk-7XFQPPYB.js +69 -0
- package/dist/chunk-AFWLBOIN.js +757 -0
- package/dist/chunk-AFWLBOIN.js.map +1 -0
- package/dist/chunk-ALCRXFIZ.js +351 -0
- package/dist/chunk-ALCRXFIZ.js.map +1 -0
- package/dist/chunk-AYKV2B6X.js +47 -0
- package/dist/chunk-AYKV2B6X.js.map +1 -0
- package/dist/chunk-BJH2G3QF.js +312 -0
- package/dist/chunk-BTOGDXA4.js +8141 -0
- package/dist/chunk-BTOGDXA4.js.map +1 -0
- package/dist/chunk-BZXIDMV7.js +91 -0
- package/dist/chunk-C57NXUM2.js +24026 -0
- package/dist/chunk-CGLNCFAG.js +136 -0
- package/dist/chunk-CNZ5KS4I.js +344 -0
- package/dist/chunk-CP5IVVYM.js +76 -0
- package/dist/chunk-DAXBST7G.js +51 -0
- package/dist/chunk-DD6X3AZB.js +1258 -0
- package/dist/chunk-DD6X3AZB.js.map +1 -0
- package/dist/chunk-DFE77XT5.js +225 -0
- package/dist/chunk-DI7M2JUA.js +167 -0
- package/dist/chunk-DN6EMVA4.js +25 -0
- package/dist/chunk-E2G2USTA.js +75 -0
- package/dist/chunk-EA3643ET.js +392 -0
- package/dist/chunk-EBFKPGTL.js +220 -0
- package/dist/chunk-EFZVDV7F.js +1744 -0
- package/dist/chunk-ETHUDFUY.js +169 -0
- package/dist/chunk-EZ3YSJTP.js +685 -0
- package/dist/chunk-FCD5BPC5.js +222 -0
- package/dist/chunk-FCD5BPC5.js.map +1 -0
- package/dist/chunk-G6CLJ3WL.js +3510 -0
- package/dist/chunk-GLY3CB2F.js +78 -0
- package/dist/chunk-GLY3CB2F.js.map +1 -0
- package/dist/chunk-HJS6FPQX.js +152 -0
- package/dist/chunk-HXHGDFXA.js +103 -0
- package/dist/chunk-HZ7QUFUW.js +97 -0
- package/dist/chunk-IEUF733F.js +5471 -0
- package/dist/chunk-IEX4RRHJ.js +163 -0
- package/dist/chunk-IPEQHZ5H.js +724 -0
- package/dist/chunk-IPEQHZ5H.js.map +1 -0
- package/dist/chunk-IR2NRXHA.js +309 -0
- package/dist/chunk-IR2NRXHA.js.map +1 -0
- package/dist/chunk-ITABNSX6.js +26 -0
- package/dist/chunk-J7L457MF.js +1518 -0
- package/dist/chunk-JCFZ7ECN.js +246 -0
- package/dist/chunk-JFWTQDZL.js +604 -0
- package/dist/chunk-JGMQD3PX.js +274 -0
- package/dist/chunk-JTAPNHW5.js +98 -0
- package/dist/chunk-K2DKQ52D.js +89 -0
- package/dist/chunk-K3VMHRLJ.js +61 -0
- package/dist/chunk-KMZ4YWS4.js +544 -0
- package/dist/chunk-LBPJDFFN.js +19 -0
- package/dist/chunk-LNRYMWXE.js +930 -0
- package/dist/chunk-LQRPFL2N.js +218 -0
- package/dist/chunk-LQRPFL2N.js.map +1 -0
- package/dist/chunk-LY7PDE76.js +285 -0
- package/dist/chunk-MGUEAG6W.js +73 -0
- package/dist/chunk-MIBOIXCP.js +115 -0
- package/dist/chunk-MNFJQRUO.js +76 -0
- package/dist/chunk-MUT2BPDM.js +46 -0
- package/dist/chunk-MWPM6HNV.js +138 -0
- package/dist/chunk-NE3AZ25Y.js +58 -0
- package/dist/chunk-OFSUVUXT.js +215 -0
- package/dist/chunk-OMLZ35HJ.js +482 -0
- package/dist/chunk-OMLZ35HJ.js.map +1 -0
- package/dist/chunk-P6H6JZXO.js +188 -0
- package/dist/chunk-PEPLYJWK.js +91 -0
- package/dist/chunk-PK2U2ALQ.js +57 -0
- package/dist/chunk-PKSIPLMS.js +399 -0
- package/dist/chunk-QNY4IK3C.js +297 -0
- package/dist/chunk-QORVZUMT.js +2234 -0
- package/dist/chunk-QORVZUMT.js.map +1 -0
- package/dist/chunk-RDIZCSTV.js +156 -0
- package/dist/chunk-RM5JT6XF.js +106 -0
- package/dist/chunk-ROWUTQFG.js +125 -0
- package/dist/chunk-RQ43VL2X.js +148 -0
- package/dist/chunk-RSABCQLI.js +45 -0
- package/dist/chunk-S4QGD7PV.js +170 -0
- package/dist/chunk-S7WFZYKP.js +46 -0
- package/dist/chunk-SO7NANAH.js +69 -0
- package/dist/chunk-SRMQCQ7T.js +142 -0
- package/dist/chunk-SULQZX5W.js +42 -0
- package/dist/chunk-SZFWQVAC.js +819 -0
- package/dist/chunk-SZFWQVAC.js.map +1 -0
- package/dist/chunk-T4HIFVNK.js +84 -0
- package/dist/chunk-TBBAHTP3.js +1320 -0
- package/dist/chunk-TJTCHTR4.js +343 -0
- package/dist/chunk-TUS2VOMZ.js +219 -0
- package/dist/chunk-U3LO5TDH.js +296 -0
- package/dist/chunk-U6EQMX3B.js +131 -0
- package/dist/chunk-UDNN4POE.js +111 -0
- package/dist/chunk-UECTXVAO.js +479 -0
- package/dist/chunk-UQTINFCP.js +455 -0
- package/dist/chunk-USFXKWTX.js +79 -0
- package/dist/chunk-USFXKWTX.js.map +1 -0
- package/dist/chunk-UUUYWBTR.js +225 -0
- package/dist/chunk-UYVMINV2.js +139 -0
- package/dist/chunk-UZ5ZC43B.js +259 -0
- package/dist/chunk-UZ5ZC43B.js.map +1 -0
- package/dist/chunk-VGJFNHSA.js +56 -0
- package/dist/chunk-VJUVTMHY.js +329 -0
- package/dist/chunk-VJUVTMHY.js.map +1 -0
- package/dist/chunk-VQOBDHZP.js +106 -0
- package/dist/chunk-VRQ5HEVU.js +35 -0
- package/dist/chunk-VSHXHSIW.js +249 -0
- package/dist/chunk-VTLW24DM.js +23 -0
- package/dist/chunk-VVITBZKP.js +97 -0
- package/dist/chunk-WFTTF2MP.js +225 -0
- package/dist/chunk-X7NRAGJ5.js +504 -0
- package/dist/chunk-X7NRAGJ5.js.map +1 -0
- package/dist/chunk-XMIV53FM.js +191 -0
- package/dist/chunk-XNUUEUJB.js +287 -0
- package/dist/chunk-XYHAIEAF.js +5368 -0
- package/dist/chunk-XZJK2QB3.js +1920 -0
- package/dist/chunk-XZJK2QB3.js.map +1 -0
- package/dist/chunk-YB2UVOAD.js +64 -0
- package/dist/chunk-YLHWZOW7.js +224 -0
- package/dist/chunk-YNWBIAXJ.js +843 -0
- package/dist/chunk-YT6YI47O.js +178 -0
- package/dist/chunk-YYYGUO2E.js +66 -0
- package/dist/chunk-Z6RTEOEY.js +39 -0
- package/dist/chunk-ZAQQBVEM.js +432 -0
- package/dist/chunk-ZAQQBVEM.js.map +1 -0
- package/dist/chunk-ZHQSXEJ2.js +547 -0
- package/dist/cite-I5UV5SKS.js +191 -0
- package/dist/claim-JQCSXR4C.js +200 -0
- package/dist/cli.js +46 -45
- package/dist/cli.js.map +1 -1
- package/dist/client-DKZM6XTS.js +19 -0
- package/dist/code-D3J5FQCF.js +76 -0
- package/dist/companies-GHBIZKOK.js +34 -0
- package/dist/company-KNCYMQIA.js +308 -0
- package/dist/complete-V53XRNEQ.js +84 -0
- package/dist/config-ACEF37UO.js +88 -0
- package/dist/connect-NUZQSIGL.js +45 -0
- package/dist/content-5RTSXURF.js +85 -0
- package/dist/conversation-LBYO6ONM.js +96 -0
- package/dist/conversion-report-SRHJGIMT.js +127 -0
- package/dist/conversion-upload-command-5EKILBP2.js +439 -0
- package/dist/conversion-writes-P5FDTA6Y.js +122 -0
- package/dist/conversions-BXCGFNRK.js +140 -0
- package/dist/conversions-WJBOEPOO.js +78 -0
- package/dist/copy-writes-ER5ZB5C4.js +170 -0
- package/dist/countries-OJZQQYFT.js +82 -0
- package/dist/create-3PNWKXLP.js +239 -0
- package/dist/create-6FZR7JZT.js +135 -0
- package/dist/create-QXJ3UEOT.js +218 -0
- package/dist/create-XO7HUNPB.js +62 -0
- package/dist/creatives-O6TA2DOG.js +58 -0
- package/dist/creatives-YRYPXOCS.js +229 -0
- package/dist/creatives-ZGXH7UA7.js +118 -0
- package/dist/credentials-ATAP54ZI.js +290 -0
- package/dist/critique-3UY7TUVQ.js +232 -0
- package/dist/critique-UC6SBKGO.js +1451 -0
- package/dist/crm-AXK74BCO.js +313 -0
- package/dist/crm-AXK74BCO.js.map +1 -0
- package/dist/crm-MGVGQ7PK.js +323 -0
- package/dist/crop-SRCLDYM5.js +113 -0
- package/dist/currency-335ARWP5.js +88 -0
- package/dist/currency-335ARWP5.js.map +1 -0
- package/dist/custom-conversions-RTSR3KKJ.js +128 -0
- package/dist/customers-7NBNJCDC.js +65 -0
- package/dist/data-QOCDG3ZD.js +455 -0
- package/dist/data-QOCDG3ZD.js.map +1 -0
- package/dist/decide-2WQKE6HC.js +199 -0
- package/dist/delete-DWQS7UCJ.js +85 -0
- package/dist/delete-EKGTJSLK.js +69 -0
- package/dist/delete-MJSASLP6.js +69 -0
- package/dist/delete-N76JN5MP.js +71 -0
- package/dist/delete-OFG7FBMA.js +57 -0
- package/dist/delete-QQDGR7DD.js +67 -0
- package/dist/demographics-QWFAMEC2.js +141 -0
- package/dist/describe-42XBBR6J.js +97 -0
- package/dist/describe-TKOJMWML.js +97 -0
- package/dist/dimensions-5OS26IF6.js +101 -0
- package/dist/discard-4VW3AWI3.js +69 -0
- package/dist/discover-IDC6PQV2.js +93 -0
- package/dist/discover-O6322XPL.js +172 -0
- package/dist/discover-O6322XPL.js.map +1 -0
- package/dist/domain-EDPDUVAX.js +101 -0
- package/dist/download-46GLVBYU.js +172 -0
- package/dist/download-QH4VHDS6.js +337 -0
- package/dist/draft-3MYPEBSF.js +260 -0
- package/dist/draft-FJ55MZB4.js +138 -0
- package/dist/draft-IBR2W6GZ.js +332 -0
- package/dist/draft-NCUQFRGS.js +315 -0
- package/dist/draft-RRUJU2ZR.js +220 -0
- package/dist/draft-SLGJRUOV.js +615 -0
- package/dist/draft-SLGJRUOV.js.map +1 -0
- package/dist/draft-TJAD7P6W.js +374 -0
- package/dist/draft-W7FYHKI2.js +134 -0
- package/dist/engine/index.js +13 -13
- package/dist/env-AMOXYHCA.js +55 -0
- package/dist/experiment-TBLKWI2J.js +1397 -0
- package/dist/experiments-DUVO7C7A.js +236 -0
- package/dist/export-AMOLHZB6.js +168 -0
- package/dist/extract-WYNFE6TQ.js +143 -0
- package/dist/facets-WTY6NOUV.js +117 -0
- package/dist/favorites-Z24QDACW.js +178 -0
- package/dist/feed-2XCJ2JIV.js +177 -0
- package/dist/feedback-57BP27NA.js +115 -0
- package/dist/feedback-XDREGDOK.js +114 -0
- package/dist/feedback-record-HXSBLAZD.js +269 -0
- package/dist/fetch-L27MLPXM.js +204 -0
- package/dist/fetch-Z5MNAIQS.js +139 -0
- package/dist/find-XMISWVZT.js +144 -0
- package/dist/fit-K3G7HIMK.js +65 -0
- package/dist/flows-VJTWU3SU.js +340 -0
- package/dist/follow-542NYE76.js +94 -0
- package/dist/follow-competitors-NZDLHP7P.js +112 -0
- package/dist/following-JTZZCSQX.js +113 -0
- package/dist/fonts-SEMIVGXJ.js +39 -0
- package/dist/forecast-EHOMHLUH.js +169 -0
- package/dist/forecast-EHOMHLUH.js.map +1 -0
- package/dist/forecast-VODA7N3G.js +121 -0
- package/dist/funding-HKPP53U2.js +85 -0
- package/dist/funnel-BXJDMVMF.js +397 -0
- package/dist/ga4-MUIZN7ID.js +55 -0
- package/dist/generate-VCGSO7HI.js +263 -0
- package/dist/get-3QLANJES.js +59 -0
- package/dist/get-D5G2RNTR.js +62 -0
- package/dist/get-EASXXOQR.js +62 -0
- package/dist/get-EN4UQI7R.js +82 -0
- package/dist/get-G4UPOHVY.js +74 -0
- package/dist/get-GOXOADPY.js +56 -0
- package/dist/get-JUI3RVMT.js +38 -0
- package/dist/get-T7A3CTS2.js +92 -0
- package/dist/gif-4KAQUYPX.js +111 -0
- package/dist/google-ATEQHENA.js +163 -0
- package/dist/google-ZVVKAI7T.js +3300 -0
- package/dist/google-ZVVKAI7T.js.map +1 -0
- package/dist/google-ads-OUNSPGRQ.js +198 -0
- package/dist/group-4GYPBQMU.js +43 -0
- package/dist/group-GH5CSQKA.js +43 -0
- package/dist/gsc-3EIBYMON.js +30 -0
- package/dist/history-5OJVW2ZF.js +153 -0
- package/dist/history-RQMCZQSC.js +69 -0
- package/dist/history-TDGBO76N.js +102 -0
- package/dist/hubspot-VQGONQQU.js +817 -0
- package/dist/hubspot-VQGONQQU.js.map +1 -0
- package/dist/icon-VYFLZ4FS.js +138 -0
- package/dist/ideas-B7RQXWHQ.js +45 -0
- package/dist/images-Q45MP4Q2.js +92 -0
- package/dist/improve-ZBPSMVFI.js +86 -0
- package/dist/ingest-6MMY4KDM.js +131 -0
- package/dist/ingest-UMQQIINM.js +28 -0
- package/dist/insights-2NWY4XJR.js +658 -0
- package/dist/insights-WDHDMULM.js +132 -0
- package/dist/inspect-W2BIGA5F.js +192 -0
- package/dist/inspiration-6FGGHV73.js +53 -0
- package/dist/instant-experiences-YZYOLGBA.js +264 -0
- package/dist/intent-3S6SHAYC.js +95 -0
- package/dist/job-2XYPZRJ6.js +202 -0
- package/dist/job-create-BPUOBKXA.js +109 -0
- package/dist/job-status-HUDHF6BU.js +74 -0
- package/dist/keep-XBYR2NII.js +78 -0
- package/dist/keyword-gap-MGHKWE6A.js +130 -0
- package/dist/keyword-metrics-6R5TSHCE.js +200 -0
- package/dist/keywords-for-site-EFBLFX6E.js +131 -0
- package/dist/knowledge-ILQIN5FL.js +195 -0
- package/dist/landing-WC5FX3UP.js +28 -0
- package/dist/landings-GRJAJKHY.js +151 -0
- package/dist/languages-22VMY7JN.js +55 -0
- package/dist/languages-4J7JHZNB.js +40 -0
- package/dist/launches-NUMSS7HP.js +19 -0
- package/dist/layerize-TFRXRHVL.js +190 -0
- package/dist/lead-routes-D5ITHESC.js +733 -0
- package/dist/leads-CBOQ5CNM.js +115 -0
- package/dist/leads-VEHYM23G.js +541 -0
- package/dist/learn-ZUP35H3T.js +207 -0
- package/dist/library-JB2UBSJ5.js +212 -0
- package/dist/lighthouse-EQZFYGFL.js +75 -0
- package/dist/line-item-writes-W4UFIYEA.js +211 -0
- package/dist/line-items-SGCUJF3S.js +107 -0
- package/dist/link-KLJB7COB.js +67 -0
- package/dist/linkedin-TANR45ZZ.js +1381 -0
- package/dist/linkedin-TANR45ZZ.js.map +1 -0
- package/dist/linkedin-person-ECWP4XPE.js +139 -0
- package/dist/list-5BWNSHYO.js +51 -0
- package/dist/list-A363BF25.js +65 -0
- package/dist/list-JARIB5LC.js +57 -0
- package/dist/list-PXEJMDB4.js +67 -0
- package/dist/list-RO4YLUFK.js +76 -0
- package/dist/list-SVR5HBLA.js +306 -0
- package/dist/list-UD43QCLC.js +50 -0
- package/dist/list-XELB7UV2.js +154 -0
- package/dist/list-XPLMANXX.js +93 -0
- package/dist/locations-KM4XY56A.js +40 -0
- package/dist/locations-SNK2NDH3.js +69 -0
- package/dist/log-PMPOO42C.js +95 -0
- package/dist/logo-KDGD6LRA.js +19 -0
- package/dist/lookup-7HIPFF2U.js +23 -0
- package/dist/make-Q36WVKT3.js +1367 -0
- package/dist/map-DQ65PS65.js +445 -0
- package/dist/mcp-XMFKYN3E.js +729 -0
- package/dist/media-6VI4PN4N.js +18 -0
- package/dist/media-WIFXVGKU.js +89 -0
- package/dist/media-sources-HG524YO4.js +35 -0
- package/dist/members-D4DI2IFH.js +47 -0
- package/dist/meme-I43AVLGS.js +108 -0
- package/dist/meta-IVCO7HHX.js +152 -0
- package/dist/meta-IVCO7HHX.js.map +1 -0
- package/dist/metrics-QVDXMTEI.js +152 -0
- package/dist/metrics-QVDXMTEI.js.map +1 -0
- package/dist/normalize-5B5WIBV4.js +806 -0
- package/dist/normalize-XRVNJTML.js +144 -0
- package/dist/options-HT27WLNS.js +125 -0
- package/dist/organization-DYPTFZBA.js +949 -0
- package/dist/output-W5J5RKRR.js +26 -0
- package/dist/page-KUDKDDLJ.js +105 -0
- package/dist/page-photos-52S2XRIW.js +118 -0
- package/dist/pages-RMTL3RCK.js +67 -0
- package/dist/people-5MJXHC3D.js +171 -0
- package/dist/people-5MJXHC3D.js.map +1 -0
- package/dist/people-TTUIYT3L.js +164 -0
- package/dist/people-TTUIYT3L.js.map +1 -0
- package/dist/performance-2AQ34OPB.js +27 -0
- package/dist/performance-WE4LHJ2B.js +5565 -0
- package/dist/pinterest-GMNQ2AVG.js +105 -0
- package/dist/pixels-EWFDIDFA.js +62 -0
- package/dist/pixels-YQJKJWAC.js +109 -0
- package/dist/plan-33F5F2OR.js +208 -0
- package/dist/posts-MZFKWSZ6.js +36 -0
- package/dist/preview-HWM6KHV5.js +245 -0
- package/dist/preview-JYVRWRTT.js +101 -0
- package/dist/profile-OYCGBQWF.js +159 -0
- package/dist/promoted-tweet-writes-HCVRPH45.js +183 -0
- package/dist/promoted-tweets-P56ZU6OK.js +119 -0
- package/dist/properties-PMY3KKUU.js +101 -0
- package/dist/publish-4VWZHRYO.js +350 -0
- package/dist/query-ALRSR5OF.js +236 -0
- package/dist/query-DK7WWCJJ.js +62 -0
- package/dist/query-ZGGHOYOH.js +231 -0
- package/dist/questionnaire-4AJFPLM2.js +94 -0
- package/dist/read-Z7BBSAEK.js +141 -0
- package/dist/reddit-NSKYHSAC.js +29 -0
- package/dist/refresh-O3CLJX4O.js +97 -0
- package/dist/refresh-VE3UKLXX.js +42 -0
- package/dist/release-6TQQW4HB.js +63 -0
- package/dist/relevant-pages-B3ZFOGHQ.js +99 -0
- package/dist/remove-R55VAM47.js +53 -0
- package/dist/remove-VGEKRK34.js +49 -0
- package/dist/reopen-S426N3OD.js +66 -0
- package/dist/rerun-5KHANQR3.js +97 -0
- package/dist/research-5REXCSSO.js +265 -0
- package/dist/research-DMZLXMM2.js +78 -0
- package/dist/research-DMZLXMM2.js.map +1 -0
- package/dist/reset-5N2IVHFL.js +57 -0
- package/dist/reset-D4NGVG35.js +57 -0
- package/dist/resolve-V75JGD75.js +124 -0
- package/dist/retry-SB7EIJBA.js +65 -0
- package/dist/retry-WIKW6CGT.js +63 -0
- package/dist/retry-failed-GEORPC3E.js +45 -0
- package/dist/revenue-GZJU3XMD.js +91 -0
- package/dist/rule-writes-DRZUEIV6.js +530 -0
- package/dist/rules-BBALKNBK.js +217 -0
- package/dist/rules-WI6YKZA4.js +99 -0
- package/dist/rules-add-JCRB4AJR.js +465 -0
- package/dist/run-RDHTORWZ.js +69 -0
- package/dist/run-VVK23U5P.js +72 -0
- package/dist/scaffold-ad-QSVBY3XR.js +1513 -0
- package/dist/scaffold-static-ad-64BZMUHP.js +1012 -0
- package/dist/scaffold-video-X27MRW7R.js +885 -0
- package/dist/schedule-L5NVM4DN.js +67 -0
- package/dist/schedule-XHPIVUJ6.js +64 -0
- package/dist/scheduled-agents-OMUQCGDG.js +56 -0
- package/dist/scheduled-agents-OMUQCGDG.js.map +1 -0
- package/dist/schema-3IEI64TQ.js +152 -0
- package/dist/schema-RDVJQ5VW.js +135 -0
- package/dist/scrape-YEZGRX2B.js +2209 -0
- package/dist/screenshot-6EBASY4U.js +103 -0
- package/dist/search-BZLTII6V.js +228 -0
- package/dist/search-I7CCYBB5.js +92 -0
- package/dist/search-NA7DBOLW.js +91 -0
- package/dist/search-RM4MN7KO.js +51 -0
- package/dist/search-SNEFCCJX.js +26 -0
- package/dist/search-VX5ATSCD.js +177 -0
- package/dist/search-copy-S6JVQZLI.js +168 -0
- package/dist/seeds-BIY565P3.js +101 -0
- package/dist/select-NX3VHQTH.js +110 -0
- package/dist/sends-7JKFJTRE.js +349 -0
- package/dist/sequences-KZSNIELI.js +146 -0
- package/dist/set-prompt-QGEWZ3HD.js +199 -0
- package/dist/setup-links-LIDZVTSU.js +144 -0
- package/dist/shared-P5UDXZAG.js +34 -0
- package/dist/shopify-LZU3MCDG.js +4009 -0
- package/dist/site-CEO2V3BI.js +180 -0
- package/dist/sitemaps-WCARK2BM.js +77 -0
- package/dist/sites-JQZ2ZC6W.js +97 -0
- package/dist/skills-V2FRLLOW.js +47 -0
- package/dist/sources-C7AQCP2Z.js +30 -0
- package/dist/sources-SIGZVORA.js +457 -0
- package/dist/stale-BOUBKOAA.js +90 -0
- package/dist/stale-BOUBKOAA.js.map +1 -0
- package/dist/stats-W7CCPRTG.js +34 -0
- package/dist/status-NIG6OSAG.js +65 -0
- package/dist/sticker-NDSJDIAK.js +103 -0
- package/dist/stock-KY6BCN76.js +212 -0
- package/dist/studies-4JOP2GQJ.js +250 -0
- package/dist/studio-VQFYNK5O.js +49 -0
- package/dist/study-writes-PMTRTUXP.js +471 -0
- package/dist/suggest-F5GIJR4K.js +66 -0
- package/dist/sync-3RS5E5ZI.js +57 -0
- package/dist/sync-IDULIJUZ.js +279 -0
- package/dist/sync-STPHWKTE.js +55 -0
- package/dist/sync-definition-VHYZWLS5.js +70 -0
- package/dist/tag-MMY3QT2N.js +57 -0
- package/dist/tag-manager-JDGWAHCZ.js +43 -0
- package/dist/tags-F6DBHGIL.js +26 -0
- package/dist/tags-HGKEOIR7.js +23 -0
- package/dist/tags-I2LINXA7.js +23 -0
- package/dist/tags-UM6Y4DVQ.js +227 -0
- package/dist/tags-YCBZVXJQ.js +23 -0
- package/dist/targeting-AVHPKERN.js +762 -0
- package/dist/targeting-constants-T7Y6RVEH.js +118 -0
- package/dist/targeting-criteria-XPK76HRH.js +113 -0
- package/dist/targets-KT4BNTKZ.js +106 -0
- package/dist/terms-ETG7YCJC.js +102 -0
- package/dist/testimonials-QGXMSSWV.js +32 -0
- package/dist/themes-ZKUHKUZD.js +95 -0
- package/dist/themes-ZKUHKUZD.js.map +1 -0
- package/dist/top-companies-RC5KTWQ5.js +246 -0
- package/dist/top-companies-RC5KTWQ5.js.map +1 -0
- package/dist/transcript-OLF62WCH.js +165 -0
- package/dist/translate-NON5ZD3S.js +603 -0
- package/dist/triggers-UOQY4RFC.js +144 -0
- package/dist/tweets-3H7CW3ZI.js +123 -0
- package/dist/unfollow-PEEPIMZY.js +46 -0
- package/dist/unlink-RNIJPHHW.js +70 -0
- package/dist/unstage-GUPBLCPZ.js +96 -0
- package/dist/unstage-QVDYVN77.js +88 -0
- package/dist/update-7KR5ABJP.js +66 -0
- package/dist/update-JAUWIWOH.js +192 -0
- package/dist/update-QZEF5MUW.js +101 -0
- package/dist/update-TNOOVX3P.js +81 -0
- package/dist/update-TRWHYXF4.js +155 -0
- package/dist/upload-MLK2MZB6.js +137 -0
- package/dist/upload-W2UTHRP2.js +155 -0
- package/dist/upscale-MTWSJ3EJ.js +109 -0
- package/dist/url-options-2FVG55JF.js +131 -0
- package/dist/url-options-2FVG55JF.js.map +1 -0
- package/dist/url-params-F4XNWPOD.js +101 -0
- package/dist/use-K5EP7JJM.js +111 -0
- package/dist/validate-P3AQVXG6.js +135 -0
- package/dist/variant-BZCX46QL.js +338 -0
- package/dist/videos-PAKAAFRD.js +41 -0
- package/dist/videos-QIDOIJ24.js +146 -0
- package/dist/view-CD5UWMR4.js +133 -0
- package/dist/viewer-check-KXMDJH7R.js +83 -0
- package/dist/viewer-check-KXMDJH7R.js.map +1 -0
- package/dist/web-E5NHFG4Y.js +173 -0
- package/dist/winners-CSNTBOVM.js +113 -0
- package/dist/winning-ads-P6PDTCCU.js +86 -0
- package/dist/write-commands-AASXCKRN.js +721 -0
- package/dist/write-commands-MBNO7DCX.js +1524 -0
- package/dist/write-commands-OV7RE6O2.js +206 -0
- package/dist/write-commands-XFYXMTXO.js +1169 -0
- package/dist/x-5A74OD5P.js +47 -0
- package/package.json +1 -1
- package/dist/account-H6OOCEE3.js +0 -82
- package/dist/account-JVDP5ERG.js +0 -82
- package/dist/account-NSBALYYS.js +0 -139
- package/dist/account-assets-EPEYTJFD.js +0 -290
- package/dist/account-level-VD4NLB2D.js +0 -611
- package/dist/account-reads-OQCA5LEM.js +0 -219
- package/dist/account-reads-OQCA5LEM.js.map +0 -1
- package/dist/account-users-VBPW6FPY.js +0 -64
- package/dist/account-writes-KEXINJ5D.js +0 -68
- package/dist/accounts-A47QUTTB.js +0 -76
- package/dist/accounts-CNWJYCUV.js +0 -80
- package/dist/accounts-E5TF2AFI.js +0 -115
- package/dist/accounts-M5SCXY6W.js +0 -713
- package/dist/accounts-M5SCXY6W.js.map +0 -1
- package/dist/accounts-QR6OQ3GC.js +0 -119
- package/dist/actions-6DC3FUQF.js +0 -55
- package/dist/active-entities-XRSJNBOV.js +0 -103
- package/dist/activecampaign-YMVIS6EN.js +0 -938
- package/dist/activities-ZDWREYR7.js +0 -75
- package/dist/ad-group-writes-SVR4RCKB.js +0 -172
- package/dist/ad-groups-C726HUXS.js +0 -70
- package/dist/ad-writes-RWJIWGEL.js +0 -176
- package/dist/add-25YZMFSH.js +0 -85
- package/dist/add-7MAL7JRX.js +0 -81
- package/dist/add-D44VCDRU.js +0 -148
- package/dist/add-ITTW4LQC.js +0 -305
- package/dist/add-JO4ZPS23.js +0 -97
- package/dist/add-QZHZIAVE.js +0 -107
- package/dist/add-accounts-EKMSHAA4.js +0 -91
- package/dist/ads-3KK7VQPU.js +0 -79
- package/dist/ads-4YZYNU66.js +0 -128
- package/dist/ads-DGL5SGP3.js +0 -120
- package/dist/ads-UZ355BQS.js +0 -48
- package/dist/adsets-PSVCPCE3.js +0 -182
- package/dist/advertisers-7NAPI5ZU.js +0 -125
- package/dist/advertisers-Z2WLSJEC.js +0 -123
- package/dist/analytics-64DI3ZJL.js +0 -2437
- package/dist/analytics-64DI3ZJL.js.map +0 -1
- package/dist/analytics-GILIREA3.js +0 -447
- package/dist/animate-GTUI7XX4.js +0 -480
- package/dist/approved-E4EZA5RT.js +0 -73
- package/dist/asset-writes-NDSHY5OT.js +0 -50
- package/dist/assign-6RI3EC7U.js +0 -80
- package/dist/audience-size-M6NORPEU.js +0 -76
- package/dist/audience-writes-4KQXVGHO.js +0 -327
- package/dist/audiences-6L43K2T2.js +0 -280
- package/dist/audiences-T5LMTT3B.js +0 -85
- package/dist/audiences-UHLVATR6.js +0 -106
- package/dist/audit-46DO2HV3.js +0 -88
- package/dist/audit-CPEOJSCV.js +0 -154
- package/dist/autocomplete-DCCI3W5Y.js +0 -114
- package/dist/avatars-GDRSOS6V.js +0 -38
- package/dist/bid-pricing-FQ6VJSH6.js +0 -103
- package/dist/brand-6TUMI2GH.js +0 -22
- package/dist/brief-U6ZT5UYG.js +0 -543
- package/dist/businesses-TRFYMZ4I.js +0 -54
- package/dist/campaign-groups-RTP2MKNJ.js +0 -99
- package/dist/campaign-writes-4NVY7S4U.js +0 -168
- package/dist/campaign-writes-FUIGN5OR.js +0 -176
- package/dist/campaigns-2MTON2IE.js +0 -130
- package/dist/campaigns-7ZVVYTBM.js +0 -113
- package/dist/campaigns-CCDJKV7I.js +0 -111
- package/dist/campaigns-N2SWSBYT.js +0 -78
- package/dist/canvas-UYRDIRPR.js +0 -46
- package/dist/capabilities-4KGVNK4Q.js +0 -147
- package/dist/cards-CXKIVM4D.js +0 -85
- package/dist/catalog-JICUCAJZ.js +0 -66
- package/dist/catalogs-4DNLG4AM.js +0 -782
- package/dist/catalogs-G5NOKL4L.js +0 -130
- package/dist/changes-AS4RVEAL.js +0 -167
- package/dist/changes-AS4RVEAL.js.map +0 -1
- package/dist/chatgpt-O6EEAYLF.js +0 -47
- package/dist/chats-JNL4L6GZ.js +0 -589
- package/dist/check-EXT5WAYI.js +0 -107
- package/dist/chunk-2CC4CPDT.js +0 -225
- package/dist/chunk-2NOFIV6M.js +0 -5368
- package/dist/chunk-3GXHML4V.js +0 -106
- package/dist/chunk-3QLGV4XN.js +0 -604
- package/dist/chunk-3QNSGFE2.js +0 -103
- package/dist/chunk-3QPG2D27.js +0 -125
- package/dist/chunk-3WN5GWX4.js +0 -94
- package/dist/chunk-4AO3LSYM.js +0 -73
- package/dist/chunk-4HFM5RCP.js +0 -217
- package/dist/chunk-4HFM5RCP.js.map +0 -1
- package/dist/chunk-5CH2JQCA.js +0 -547
- package/dist/chunk-5LEIUG5H.js +0 -399
- package/dist/chunk-5N77IAOT.js +0 -7901
- package/dist/chunk-5N77IAOT.js.map +0 -1
- package/dist/chunk-5NMKNHJI.js +0 -46
- package/dist/chunk-5QNW5PCM.js +0 -106
- package/dist/chunk-66LB37BF.js +0 -455
- package/dist/chunk-6D7WTUF3.js +0 -98
- package/dist/chunk-6EOWBGGW.js +0 -191
- package/dist/chunk-6MJKVNLL.js +0 -25
- package/dist/chunk-6RWLCOAH.js +0 -334
- package/dist/chunk-6RWLCOAH.js.map +0 -1
- package/dist/chunk-6TNRSWNA.js +0 -207
- package/dist/chunk-6TNRSWNA.js.map +0 -1
- package/dist/chunk-7NBQQOCU.js +0 -97
- package/dist/chunk-7YXBMYSM.js +0 -91
- package/dist/chunk-A6LOIUWB.js +0 -51
- package/dist/chunk-AQRBEPZL.js +0 -138
- package/dist/chunk-AUDVBN6H.js +0 -8985
- package/dist/chunk-AUDVBN6H.js.map +0 -1
- package/dist/chunk-AZIXX73C.js +0 -64
- package/dist/chunk-B64KJW5C.js +0 -476
- package/dist/chunk-B64KJW5C.js.map +0 -1
- package/dist/chunk-BBS5VXLK.js +0 -91
- package/dist/chunk-BIBXZJZI.js +0 -97
- package/dist/chunk-BPDUE3MT.js +0 -312
- package/dist/chunk-C3XJ46C2.js +0 -203
- package/dist/chunk-CBVUO7SK.js +0 -1744
- package/dist/chunk-CC42TKFH.js +0 -19
- package/dist/chunk-CF5I4Q5M.js +0 -69
- package/dist/chunk-CFF7VAOQ.js +0 -142
- package/dist/chunk-CUTTTFAU.js +0 -783
- package/dist/chunk-CUTTTFAU.js.map +0 -1
- package/dist/chunk-DGHSXHZR.js +0 -136
- package/dist/chunk-DHF4FXWS.js +0 -58
- package/dist/chunk-DPOUS5DN.js +0 -287
- package/dist/chunk-EDZDYB3C.js +0 -23
- package/dist/chunk-EJ6EED6I.js +0 -69
- package/dist/chunk-ELFZ63XY.js +0 -392
- package/dist/chunk-EM5R3BYC.js +0 -131
- package/dist/chunk-F5VR6HSI.js +0 -170
- package/dist/chunk-FE2MFNVT.js +0 -5471
- package/dist/chunk-FLTAPEVY.js +0 -288
- package/dist/chunk-FLZNYVMN.js +0 -2235
- package/dist/chunk-FLZNYVMN.js.map +0 -1
- package/dist/chunk-FPYMFYML.js +0 -468
- package/dist/chunk-FPYMFYML.js.map +0 -1
- package/dist/chunk-FWYWLEDP.js +0 -755
- package/dist/chunk-FWYWLEDP.js.map +0 -1
- package/dist/chunk-G4TPYA7F.js +0 -454
- package/dist/chunk-GRX3JXSR.js +0 -843
- package/dist/chunk-H25GY4U4.js +0 -139
- package/dist/chunk-H423YXYY.js +0 -249
- package/dist/chunk-H6ASYVQX.js +0 -544
- package/dist/chunk-IYDESWW4.js +0 -74
- package/dist/chunk-J4AWNWKN.js +0 -1919
- package/dist/chunk-JAME5NBT.js +0 -42
- package/dist/chunk-JLAFNORO.js +0 -285
- package/dist/chunk-JQYB2DS3.js +0 -197
- package/dist/chunk-JYOP6YVT.js +0 -66
- package/dist/chunk-KGJ6EIX3.js +0 -76
- package/dist/chunk-KOKPQE4N.js +0 -494
- package/dist/chunk-KTX7QAKP.js +0 -831
- package/dist/chunk-KTX7QAKP.js.map +0 -1
- package/dist/chunk-L4QEMWNJ.js +0 -111
- package/dist/chunk-L7I47VGM.js +0 -46
- package/dist/chunk-LAMSUL26.js +0 -1518
- package/dist/chunk-LJEJCIHR.js +0 -246
- package/dist/chunk-LYGZBNSC.js +0 -224
- package/dist/chunk-M4KFO256.js +0 -188
- package/dist/chunk-MIHY534L.js +0 -39
- package/dist/chunk-MKOI6QYM.js +0 -225
- package/dist/chunk-MPTNN35I.js +0 -325
- package/dist/chunk-MPTNN35I.js.map +0 -1
- package/dist/chunk-MTW2NDDD.js +0 -98
- package/dist/chunk-MTW2NDDD.js.map +0 -1
- package/dist/chunk-NI5R6Y24.js +0 -89
- package/dist/chunk-O5VSYBUA.js +0 -343
- package/dist/chunk-OEO2NSNC.js +0 -297
- package/dist/chunk-OZNBVJGC.js +0 -220
- package/dist/chunk-PYZVVMF4.js +0 -430
- package/dist/chunk-PYZVVMF4.js.map +0 -1
- package/dist/chunk-Q3G4ZI2U.js +0 -84
- package/dist/chunk-Q5XUFN2W.js +0 -35
- package/dist/chunk-Q736UFSD.js +0 -75
- package/dist/chunk-QGAUDVMR.js +0 -148
- package/dist/chunk-QZ4YHQLW.js +0 -63
- package/dist/chunk-QZ4YHQLW.js.map +0 -1
- package/dist/chunk-R7XDGNZD.js +0 -297
- package/dist/chunk-R7XDGNZD.js.map +0 -1
- package/dist/chunk-RIIMF75G.js +0 -64
- package/dist/chunk-RRKUXGAU.js +0 -26
- package/dist/chunk-RUMHZX5N.js +0 -225
- package/dist/chunk-S36WWACM.js +0 -3510
- package/dist/chunk-S5S54J2K.js +0 -56
- package/dist/chunk-SHYUXLE5.js +0 -61
- package/dist/chunk-SIRRBWQ2.js +0 -215
- package/dist/chunk-SNVAE572.js +0 -167
- package/dist/chunk-TLQY4QBW.js +0 -84
- package/dist/chunk-UK4XSLV2.js +0 -296
- package/dist/chunk-URGXEDFV.js +0 -76
- package/dist/chunk-UVUY6FLV.js +0 -1254
- package/dist/chunk-UVUY6FLV.js.map +0 -1
- package/dist/chunk-UZVFXGMS.js +0 -930
- package/dist/chunk-V4HS5JRL.js +0 -1320
- package/dist/chunk-V7EN5LFS.js +0 -115
- package/dist/chunk-VCG3Q3O4.js +0 -479
- package/dist/chunk-VKIKIN5U.js +0 -1920
- package/dist/chunk-VKIKIN5U.js.map +0 -1
- package/dist/chunk-VZIYTP3X.js +0 -163
- package/dist/chunk-WEBWXSFF.js +0 -169
- package/dist/chunk-WOHTTXLG.js +0 -57
- package/dist/chunk-WTPID22G.js +0 -152
- package/dist/chunk-X7USE7IA.js +0 -24026
- package/dist/chunk-XA76OGSL.js +0 -718
- package/dist/chunk-XA76OGSL.js.map +0 -1
- package/dist/chunk-XY7W6MQN.js +0 -274
- package/dist/chunk-YAMKCMAS.js +0 -219
- package/dist/chunk-YEQTBPEB.js +0 -344
- package/dist/chunk-YHBMCP6C.js +0 -156
- package/dist/chunk-YJEG6TQ3.js +0 -685
- package/dist/chunk-YQYCWYFJ.js +0 -962
- package/dist/chunk-YRWCXYWW.js +0 -178
- package/dist/chunk-ZCGM7ZWM.js +0 -45
- package/dist/cite-WCAOCOO5.js +0 -191
- package/dist/claim-4LKB2Z6T.js +0 -200
- package/dist/client-VCKP6WBR.js +0 -19
- package/dist/code-VXOTFGD2.js +0 -76
- package/dist/companies-KCHDEHAA.js +0 -198
- package/dist/companies-KCHDEHAA.js.map +0 -1
- package/dist/company-C2Y7LY5H.js +0 -308
- package/dist/complete-MNN3PAZE.js +0 -84
- package/dist/config-UR45YCIN.js +0 -88
- package/dist/connect-IABMKFGA.js +0 -45
- package/dist/content-EQQIKG5H.js +0 -85
- package/dist/conversation-FETU4KTF.js +0 -96
- package/dist/conversion-report-33SG7SHU.js +0 -127
- package/dist/conversion-upload-command-DWIGVHQZ.js +0 -439
- package/dist/conversion-writes-XGGTBML5.js +0 -122
- package/dist/conversions-PPP4QK7U.js +0 -78
- package/dist/conversions-S3WIR5R4.js +0 -140
- package/dist/copy-writes-JVUX3YDL.js +0 -170
- package/dist/countries-GRCU4IGM.js +0 -82
- package/dist/create-A3ZIQVIH.js +0 -239
- package/dist/create-ESKBBBJX.js +0 -135
- package/dist/create-U2ITO4RV.js +0 -218
- package/dist/create-VNYTZJ4T.js +0 -62
- package/dist/creatives-4EPM3RHG.js +0 -118
- package/dist/creatives-WSCRC5GO.js +0 -58
- package/dist/creatives-XO5E4AIC.js +0 -229
- package/dist/credentials-ZV66ZUCK.js +0 -290
- package/dist/critique-ODWLA52C.js +0 -1451
- package/dist/critique-X3433R5M.js +0 -232
- package/dist/crm-WPPM2R7I.js +0 -323
- package/dist/crm-XPIQAGH7.js +0 -229
- package/dist/crm-XPIQAGH7.js.map +0 -1
- package/dist/crop-NE7YX4SS.js +0 -113
- package/dist/currency-HK2ZW2VW.js +0 -88
- package/dist/currency-HK2ZW2VW.js.map +0 -1
- package/dist/custom-conversions-GQTU5E6X.js +0 -128
- package/dist/customers-GCM7WZII.js +0 -65
- package/dist/decide-6Q5X3V3F.js +0 -199
- package/dist/delete-EKKOEB3N.js +0 -69
- package/dist/delete-GAIV2YVD.js +0 -69
- package/dist/delete-QHDDR66K.js +0 -85
- package/dist/delete-RVJLATPO.js +0 -57
- package/dist/delete-SP66F7ZV.js +0 -71
- package/dist/delete-VJ5QXKZR.js +0 -67
- package/dist/demographics-XWIW3YJF.js +0 -141
- package/dist/describe-DJPIUEFE.js +0 -97
- package/dist/describe-MAGTSOW4.js +0 -97
- package/dist/dimensions-IC2H7V3H.js +0 -101
- package/dist/discard-TWX2CQF5.js +0 -69
- package/dist/discover-PSL2NBJL.js +0 -93
- package/dist/discover-Q5PAOIQQ.js +0 -172
- package/dist/discover-Q5PAOIQQ.js.map +0 -1
- package/dist/domain-FE32BE2E.js +0 -101
- package/dist/download-5FYHTIGR.js +0 -172
- package/dist/download-EHDJXBAC.js +0 -337
- package/dist/draft-27NMTARB.js +0 -134
- package/dist/draft-5VLO5UYZ.js +0 -332
- package/dist/draft-JESKGZ6O.js +0 -138
- package/dist/draft-L2NXCIYT.js +0 -315
- package/dist/draft-L757UIW5.js +0 -374
- package/dist/draft-MWYKIZC4.js +0 -260
- package/dist/draft-WK4PEMB6.js +0 -614
- package/dist/draft-WK4PEMB6.js.map +0 -1
- package/dist/draft-ZCP3MIV6.js +0 -220
- package/dist/env-NZXNMWSD.js +0 -53
- package/dist/experiment-XAYSEYTU.js +0 -1397
- package/dist/experiments-DVR7WBGQ.js +0 -236
- package/dist/export-W54UZ62P.js +0 -168
- package/dist/extract-JM6FAWAS.js +0 -143
- package/dist/facets-IEQJK5AW.js +0 -117
- package/dist/favorites-Y6CT6NSQ.js +0 -178
- package/dist/feed-35BRQPTH.js +0 -177
- package/dist/feedback-QUJ2V4WD.js +0 -114
- package/dist/feedback-SSCN7LEP.js +0 -115
- package/dist/feedback-record-P6WK4UPP.js +0 -269
- package/dist/fetch-I6P72CDL.js +0 -139
- package/dist/fetch-Q6BIDVN5.js +0 -204
- package/dist/find-SVGRA7IA.js +0 -144
- package/dist/fit-XLK5LDPS.js +0 -65
- package/dist/flows-QVGZEYCH.js +0 -340
- package/dist/follow-24QSDNAG.js +0 -94
- package/dist/follow-competitors-AG4E4XFA.js +0 -112
- package/dist/following-YGM6TBK3.js +0 -113
- package/dist/fonts-GARRSRIB.js +0 -39
- package/dist/forecast-GEYNZ5PQ.js +0 -121
- package/dist/forecast-THQNGKPE.js +0 -169
- package/dist/forecast-THQNGKPE.js.map +0 -1
- package/dist/funding-WZNGXRLJ.js +0 -85
- package/dist/funnel-OABL4MLZ.js +0 -397
- package/dist/ga4-W3U5YTRT.js +0 -55
- package/dist/generate-Y4NJEYIH.js +0 -263
- package/dist/get-3MTAVNTP.js +0 -56
- package/dist/get-5SPNAIUQ.js +0 -62
- package/dist/get-63KQ62KN.js +0 -82
- package/dist/get-GEUSRD5Y.js +0 -59
- package/dist/get-JIZPYK3Z.js +0 -74
- package/dist/get-RDGC3QA5.js +0 -62
- package/dist/get-TS2ZJDCQ.js +0 -38
- package/dist/get-YWDZYEAC.js +0 -92
- package/dist/gif-NP6EDGEE.js +0 -111
- package/dist/google-32BCQC7C.js +0 -163
- package/dist/google-VYCMEWUL.js +0 -3300
- package/dist/google-VYCMEWUL.js.map +0 -1
- package/dist/google-ads-PCXGVHZV.js +0 -198
- package/dist/group-3DT4UYSR.js +0 -43
- package/dist/group-OEKKCFXT.js +0 -43
- package/dist/gsc-4FEFPFPB.js +0 -30
- package/dist/history-J7ANCPWY.js +0 -153
- package/dist/history-NX67UIZ7.js +0 -102
- package/dist/history-VKRYKQ4C.js +0 -69
- package/dist/hubspot-Z3J3JBEH.js +0 -814
- package/dist/hubspot-Z3J3JBEH.js.map +0 -1
- package/dist/icon-43UJTGGE.js +0 -138
- package/dist/ideas-22I7JTI7.js +0 -45
- package/dist/images-3C4Y6RWL.js +0 -92
- package/dist/improve-IMXQN6OD.js +0 -86
- package/dist/ingest-CFH2MPSF.js +0 -131
- package/dist/ingest-VXX2Y76C.js +0 -28
- package/dist/insights-3IPSEBYW.js +0 -132
- package/dist/insights-BR3456EI.js +0 -658
- package/dist/inspect-LDXPOGGH.js +0 -192
- package/dist/inspiration-XZI5KCQW.js +0 -53
- package/dist/instant-experiences-2LKF7XVK.js +0 -264
- package/dist/intent-ZM4K623V.js +0 -95
- package/dist/job-GOX3KIKG.js +0 -202
- package/dist/job-create-F2PQSN3C.js +0 -109
- package/dist/job-status-3FMA5D7T.js +0 -74
- package/dist/keep-23ZYMWPG.js +0 -78
- package/dist/keyword-gap-FAAF2I6V.js +0 -130
- package/dist/keyword-metrics-E36SMZSP.js +0 -200
- package/dist/keywords-for-site-AWGWDXZA.js +0 -131
- package/dist/knowledge-7M7DSRF3.js +0 -195
- package/dist/landing-PVTDVL22.js +0 -28
- package/dist/landings-VNQ4VA2U.js +0 -151
- package/dist/languages-2X22HXM3.js +0 -55
- package/dist/languages-ZGDTERIQ.js +0 -40
- package/dist/launches-L4EUROCJ.js +0 -19
- package/dist/layerize-6QHQMA7Q.js +0 -190
- package/dist/lead-routes-5TPFJEVH.js +0 -733
- package/dist/leads-4TLOH47R.js +0 -541
- package/dist/leads-XC3C5HGC.js +0 -115
- package/dist/learn-NYRL53NQ.js +0 -207
- package/dist/library-MNJC24E4.js +0 -212
- package/dist/lighthouse-DJMAXFTD.js +0 -75
- package/dist/line-item-writes-LMSYCR6G.js +0 -211
- package/dist/line-items-P24SOGVZ.js +0 -107
- package/dist/link-H3TTWJJO.js +0 -67
- package/dist/linkedin-57JHH7QN.js +0 -1344
- package/dist/linkedin-57JHH7QN.js.map +0 -1
- package/dist/linkedin-person-HKKIE32Q.js +0 -139
- package/dist/list-2277GCPH.js +0 -51
- package/dist/list-537S75BZ.js +0 -76
- package/dist/list-KHCFVTQU.js +0 -154
- package/dist/list-LC2GRYEI.js +0 -67
- package/dist/list-Q52FPW3H.js +0 -50
- package/dist/list-UCTFATXS.js +0 -306
- package/dist/list-V4PSDBLX.js +0 -93
- package/dist/list-WIXQXNKB.js +0 -65
- package/dist/list-XK33NCSC.js +0 -57
- package/dist/locations-A65MFB7Q.js +0 -69
- package/dist/locations-WN6B3IJK.js +0 -40
- package/dist/log-SLYCPRCY.js +0 -95
- package/dist/logo-4LSFZ3ZO.js +0 -19
- package/dist/lookup-WIM5WR25.js +0 -23
- package/dist/make-HTCPU6HU.js +0 -1367
- package/dist/map-237LQ5N5.js +0 -445
- package/dist/mcp-GX5TOO7Y.js +0 -729
- package/dist/media-34I7UB7Z.js +0 -89
- package/dist/media-KKI3KWLR.js +0 -18
- package/dist/media-sources-ODNIS7A5.js +0 -35
- package/dist/members-TYQKWR7Z.js +0 -47
- package/dist/meme-6NFYFQ7T.js +0 -108
- package/dist/meta-2UK7KIE4.js +0 -124
- package/dist/meta-2UK7KIE4.js.map +0 -1
- package/dist/metrics-3U3ZO2RF.js +0 -152
- package/dist/metrics-3U3ZO2RF.js.map +0 -1
- package/dist/normalize-G75RDSE4.js +0 -806
- package/dist/normalize-MDTMKLYO.js +0 -144
- package/dist/options-MEADUZY3.js +0 -125
- package/dist/organization-BXJSHRZG.js +0 -949
- package/dist/output-ELEO2Z6R.js +0 -24
- package/dist/page-4X6IBUWG.js +0 -105
- package/dist/page-photos-KNBLMFLN.js +0 -118
- package/dist/pages-7HW5YOZV.js +0 -67
- package/dist/performance-CU65TLCB.js +0 -5565
- package/dist/performance-IGCOP5VH.js +0 -27
- package/dist/pinterest-KA6VFDM4.js +0 -105
- package/dist/pixels-D5HF24FI.js +0 -109
- package/dist/pixels-U6UA662G.js +0 -62
- package/dist/plan-XCA6R3HZ.js +0 -208
- package/dist/posts-ALGM6ONV.js +0 -36
- package/dist/preview-55TRUF4Q.js +0 -245
- package/dist/preview-YQ6P5A53.js +0 -101
- package/dist/profile-NHUPUCBR.js +0 -159
- package/dist/promoted-tweet-writes-X2CUNBU2.js +0 -183
- package/dist/promoted-tweets-G2NOW5OF.js +0 -119
- package/dist/properties-2ZXA5BPJ.js +0 -101
- package/dist/publish-YPCXCU4P.js +0 -350
- package/dist/query-63CTX2PH.js +0 -231
- package/dist/query-DMWY3TDD.js +0 -236
- package/dist/query-SAQADBM2.js +0 -62
- package/dist/questionnaire-WHE42RD4.js +0 -94
- package/dist/read-NESEKULG.js +0 -141
- package/dist/reddit-XMAGZMD4.js +0 -29
- package/dist/refresh-ILDEPU5A.js +0 -42
- package/dist/refresh-QIK3CXLV.js +0 -97
- package/dist/release-O7KGD5MI.js +0 -63
- package/dist/relevant-pages-KTSODNNW.js +0 -99
- package/dist/remove-7FAWM2H4.js +0 -53
- package/dist/remove-NHE4UT7G.js +0 -49
- package/dist/reopen-4ZWEYNCI.js +0 -66
- package/dist/rerun-IDUKOW6Z.js +0 -97
- package/dist/research-SPFILN24.js +0 -75
- package/dist/research-SPFILN24.js.map +0 -1
- package/dist/research-Y5MSZH6T.js +0 -265
- package/dist/reset-4K7BXUY6.js +0 -57
- package/dist/reset-YSDYSZ64.js +0 -57
- package/dist/resolve-DD6ES7GJ.js +0 -124
- package/dist/retry-PZTS6KMQ.js +0 -65
- package/dist/retry-YAZ3JXYL.js +0 -63
- package/dist/retry-failed-R5HPQ3KQ.js +0 -45
- package/dist/revenue-PLJ46IYH.js +0 -91
- package/dist/rule-writes-QB4IWFCJ.js +0 -530
- package/dist/rules-FYVD2QBB.js +0 -217
- package/dist/rules-I4PL72J7.js +0 -99
- package/dist/rules-add-EFD2YSLH.js +0 -465
- package/dist/run-FN365AXZ.js +0 -72
- package/dist/run-WCFKVQQQ.js +0 -69
- package/dist/scaffold-ad-PI4IHOG5.js +0 -1513
- package/dist/scaffold-static-ad-RDOCRFEP.js +0 -1012
- package/dist/scaffold-video-HPRYTHE6.js +0 -885
- package/dist/schedule-D7EDEM45.js +0 -67
- package/dist/schedule-NPZPVNSO.js +0 -64
- package/dist/scheduled-agents-5TNWITKB.js +0 -55
- package/dist/scheduled-agents-5TNWITKB.js.map +0 -1
- package/dist/schema-PMVRMIRU.js +0 -135
- package/dist/schema-Z43AJOJ4.js +0 -152
- package/dist/scrape-VL2RWSTW.js +0 -2209
- package/dist/screenshot-Y6EEXS3Q.js +0 -103
- package/dist/search-BRANRGRU.js +0 -177
- package/dist/search-CXC7N5XJ.js +0 -51
- package/dist/search-JEXYEAPQ.js +0 -228
- package/dist/search-L3GTZYRW.js +0 -92
- package/dist/search-TXBYKNQC.js +0 -91
- package/dist/search-XHSTUBDY.js +0 -26
- package/dist/search-copy-FIPG7OCC.js +0 -168
- package/dist/seeds-ADJKURNG.js +0 -101
- package/dist/select-CLDJE7VJ.js +0 -110
- package/dist/sends-RS4LWRAC.js +0 -349
- package/dist/sequences-2RPKDKGQ.js +0 -146
- package/dist/set-prompt-7VHSKVO6.js +0 -199
- package/dist/setup-links-PAA7XYV5.js +0 -144
- package/dist/shared-4GGUIOF2.js +0 -32
- package/dist/shopify-VWIRGI6H.js +0 -4009
- package/dist/site-Q3PMNJ2Z.js +0 -180
- package/dist/sitemaps-Z6IELTQV.js +0 -77
- package/dist/sites-KLAKI2EY.js +0 -97
- package/dist/skills-OJP36EVR.js +0 -47
- package/dist/sources-4YHNM22P.js +0 -30
- package/dist/sources-BYMGSUPZ.js +0 -457
- package/dist/stale-WO6FTPLQ.js +0 -90
- package/dist/stale-WO6FTPLQ.js.map +0 -1
- package/dist/stats-MIMFX4R7.js +0 -34
- package/dist/status-B2WRAPZO.js +0 -65
- package/dist/sticker-IREEEN7I.js +0 -103
- package/dist/stock-BOOSUS2C.js +0 -212
- package/dist/studies-YGYAH3JI.js +0 -250
- package/dist/studio-XLC37YGX.js +0 -49
- package/dist/study-writes-UPGJB36A.js +0 -471
- package/dist/suggest-5RTISDLI.js +0 -66
- package/dist/sync-2QIPZFSK.js +0 -57
- package/dist/sync-OHIXI4I6.js +0 -55
- package/dist/sync-VCAFAYW4.js +0 -279
- package/dist/sync-definition-L52PGD7B.js +0 -70
- package/dist/tag-DSCUKNC3.js +0 -57
- package/dist/tag-manager-IINALUEJ.js +0 -43
- package/dist/tags-AIE4XEU2.js +0 -227
- package/dist/tags-DF6JNSNA.js +0 -26
- package/dist/tags-SWP4MXQO.js +0 -23
- package/dist/tags-VXHV4JWM.js +0 -23
- package/dist/tags-XYQUPA6M.js +0 -23
- package/dist/targeting-BM72UTI6.js +0 -762
- package/dist/targeting-constants-54S3FXIF.js +0 -118
- package/dist/targeting-criteria-UYAEVSX3.js +0 -113
- package/dist/targets-XFL7CE7N.js +0 -106
- package/dist/terms-OFHNLW6U.js +0 -102
- package/dist/testimonials-DTCPATQ2.js +0 -32
- package/dist/themes-HBWSZRFM.js +0 -95
- package/dist/themes-HBWSZRFM.js.map +0 -1
- package/dist/top-companies-SCKUWYFG.js +0 -111
- package/dist/top-companies-SCKUWYFG.js.map +0 -1
- package/dist/transcript-H7VSMOMV.js +0 -165
- package/dist/translate-LCLG4NYR.js +0 -603
- package/dist/triggers-HN3O2CNG.js +0 -144
- package/dist/tweets-TRTXC6O4.js +0 -123
- package/dist/unfollow-DATOGPLZ.js +0 -46
- package/dist/unlink-B5CD7ZW6.js +0 -70
- package/dist/unstage-34W4OU5D.js +0 -88
- package/dist/unstage-LLQCMZ5H.js +0 -96
- package/dist/update-2OTR4JQV.js +0 -101
- package/dist/update-3CKLLPYX.js +0 -66
- package/dist/update-6V2A4JGZ.js +0 -192
- package/dist/update-7FBCTLFP.js +0 -155
- package/dist/update-SD5YQIJC.js +0 -81
- package/dist/upload-72ARWDHN.js +0 -137
- package/dist/upload-7PPMVWVA.js +0 -155
- package/dist/upscale-WVJZG76V.js +0 -109
- package/dist/url-options-6WC2XQKB.js +0 -131
- package/dist/url-options-6WC2XQKB.js.map +0 -1
- package/dist/url-params-TAZ2S675.js +0 -101
- package/dist/use-6FADOAFZ.js +0 -111
- package/dist/validate-6F3JKVQV.js +0 -135
- package/dist/variant-RNM36P4J.js +0 -338
- package/dist/videos-GHFCOTT7.js +0 -146
- package/dist/videos-UCUYPQNK.js +0 -41
- package/dist/view-YR6MDLWL.js +0 -133
- package/dist/viewer-check-XZYL55G6.js +0 -83
- package/dist/web-YYXQXIH4.js +0 -173
- package/dist/winners-4T5RFQXU.js +0 -113
- package/dist/winning-ads-H3HCI5QT.js +0 -86
- package/dist/write-commands-6D55SB56.js +0 -206
- package/dist/write-commands-AIWLEGO2.js +0 -1169
- package/dist/write-commands-DS7WNSYA.js +0 -1524
- package/dist/write-commands-UO3OQIHH.js +0 -721
- package/dist/x-K4N6QIH2.js +0 -47
- /package/dist/{account-H6OOCEE3.js.map → account-MDLPCIDQ.js.map} +0 -0
- /package/dist/{account-JVDP5ERG.js.map → account-VRXCDDXY.js.map} +0 -0
- /package/dist/{account-NSBALYYS.js.map → account-YYB2KWLU.js.map} +0 -0
- /package/dist/{account-assets-EPEYTJFD.js.map → account-assets-BFMQWV33.js.map} +0 -0
- /package/dist/{account-level-VD4NLB2D.js.map → account-level-47IS2CZB.js.map} +0 -0
- /package/dist/{account-users-VBPW6FPY.js.map → account-users-FXOWESWY.js.map} +0 -0
- /package/dist/{account-writes-KEXINJ5D.js.map → account-writes-SRTOKSMT.js.map} +0 -0
- /package/dist/{accounts-CNWJYCUV.js.map → accounts-AT2UB2L3.js.map} +0 -0
- /package/dist/{accounts-A47QUTTB.js.map → accounts-LTGUK6OV.js.map} +0 -0
- /package/dist/{accounts-E5TF2AFI.js.map → accounts-LTUEBWJL.js.map} +0 -0
- /package/dist/{accounts-QR6OQ3GC.js.map → accounts-NR3ARJ72.js.map} +0 -0
- /package/dist/{actions-6DC3FUQF.js.map → actions-766X6XRB.js.map} +0 -0
- /package/dist/{active-entities-XRSJNBOV.js.map → active-entities-QWJXR4W6.js.map} +0 -0
- /package/dist/{activecampaign-YMVIS6EN.js.map → activecampaign-MC4FYCCF.js.map} +0 -0
- /package/dist/{activities-ZDWREYR7.js.map → activities-ZRP22SC2.js.map} +0 -0
- /package/dist/{ad-group-writes-SVR4RCKB.js.map → ad-group-writes-UFBFB2PL.js.map} +0 -0
- /package/dist/{ad-groups-C726HUXS.js.map → ad-groups-KRKMZPF3.js.map} +0 -0
- /package/dist/{ad-writes-RWJIWGEL.js.map → ad-writes-SIAGGUDJ.js.map} +0 -0
- /package/dist/{add-ITTW4LQC.js.map → add-DWKVVW76.js.map} +0 -0
- /package/dist/{add-25YZMFSH.js.map → add-F65GOWKP.js.map} +0 -0
- /package/dist/{add-D44VCDRU.js.map → add-IALA4VRA.js.map} +0 -0
- /package/dist/{add-7MAL7JRX.js.map → add-ITX64WEC.js.map} +0 -0
- /package/dist/{add-QZHZIAVE.js.map → add-MYX3BSUJ.js.map} +0 -0
- /package/dist/{add-JO4ZPS23.js.map → add-WAVXB2QA.js.map} +0 -0
- /package/dist/{add-accounts-EKMSHAA4.js.map → add-accounts-YTLQCSXB.js.map} +0 -0
- /package/dist/{ads-3KK7VQPU.js.map → ads-3T4C4BBH.js.map} +0 -0
- /package/dist/{ads-DGL5SGP3.js.map → ads-A34INCCM.js.map} +0 -0
- /package/dist/{ads-4YZYNU66.js.map → ads-AKF5AT6O.js.map} +0 -0
- /package/dist/{ads-UZ355BQS.js.map → ads-UGMHE33I.js.map} +0 -0
- /package/dist/{adsets-PSVCPCE3.js.map → adsets-HNFBX4LB.js.map} +0 -0
- /package/dist/{advertisers-Z2WLSJEC.js.map → advertisers-UFOLIRIK.js.map} +0 -0
- /package/dist/{advertisers-7NAPI5ZU.js.map → advertisers-YTG6VA6R.js.map} +0 -0
- /package/dist/{analytics-GILIREA3.js.map → analytics-G4WFP37R.js.map} +0 -0
- /package/dist/{animate-GTUI7XX4.js.map → animate-PSOAMA52.js.map} +0 -0
- /package/dist/{approved-E4EZA5RT.js.map → approved-3W56YTOZ.js.map} +0 -0
- /package/dist/{asset-writes-NDSHY5OT.js.map → asset-writes-2CYNDRPU.js.map} +0 -0
- /package/dist/{assign-6RI3EC7U.js.map → assign-5FALEZYD.js.map} +0 -0
- /package/dist/{audience-size-M6NORPEU.js.map → audience-size-VRYRLPO5.js.map} +0 -0
- /package/dist/{audience-writes-4KQXVGHO.js.map → audience-writes-JNVGUHGN.js.map} +0 -0
- /package/dist/{audiences-6L43K2T2.js.map → audiences-EH426E3T.js.map} +0 -0
- /package/dist/{audiences-T5LMTT3B.js.map → audiences-OOXSXKIT.js.map} +0 -0
- /package/dist/{audiences-UHLVATR6.js.map → audiences-S6TXNKQ2.js.map} +0 -0
- /package/dist/{audit-46DO2HV3.js.map → audit-O2RRST7B.js.map} +0 -0
- /package/dist/{audit-CPEOJSCV.js.map → audit-WHIVWMAI.js.map} +0 -0
- /package/dist/{autocomplete-DCCI3W5Y.js.map → autocomplete-3HCLXTGK.js.map} +0 -0
- /package/dist/{avatars-GDRSOS6V.js.map → avatars-HN74FWDF.js.map} +0 -0
- /package/dist/{bid-pricing-FQ6VJSH6.js.map → bid-pricing-NN5JKZS4.js.map} +0 -0
- /package/dist/{brand-6TUMI2GH.js.map → brand-MWU5IVEZ.js.map} +0 -0
- /package/dist/{brief-U6ZT5UYG.js.map → brief-6TXWQWHJ.js.map} +0 -0
- /package/dist/{businesses-TRFYMZ4I.js.map → businesses-HOAQVYRH.js.map} +0 -0
- /package/dist/{campaign-groups-RTP2MKNJ.js.map → campaign-groups-MGEKCP7J.js.map} +0 -0
- /package/dist/{campaign-writes-4NVY7S4U.js.map → campaign-writes-ORUT54WL.js.map} +0 -0
- /package/dist/{campaign-writes-FUIGN5OR.js.map → campaign-writes-Z7B6V6Q3.js.map} +0 -0
- /package/dist/{campaigns-N2SWSBYT.js.map → campaigns-3BDIHUSW.js.map} +0 -0
- /package/dist/{campaigns-CCDJKV7I.js.map → campaigns-E7YC762Q.js.map} +0 -0
- /package/dist/{campaigns-2MTON2IE.js.map → campaigns-EEH3VDK6.js.map} +0 -0
- /package/dist/{campaigns-7ZVVYTBM.js.map → campaigns-WLOJFSLV.js.map} +0 -0
- /package/dist/{canvas-UYRDIRPR.js.map → canvas-SEVIQRXN.js.map} +0 -0
- /package/dist/{capabilities-4KGVNK4Q.js.map → capabilities-KWJYBYQO.js.map} +0 -0
- /package/dist/{cards-CXKIVM4D.js.map → cards-OOKI2WSA.js.map} +0 -0
- /package/dist/{catalog-JICUCAJZ.js.map → catalog-DHTZDVWS.js.map} +0 -0
- /package/dist/{catalogs-G5NOKL4L.js.map → catalogs-R4QFA5XO.js.map} +0 -0
- /package/dist/{catalogs-4DNLG4AM.js.map → catalogs-WBXWK7NT.js.map} +0 -0
- /package/dist/{chatgpt-O6EEAYLF.js.map → chatgpt-MN4XHO6L.js.map} +0 -0
- /package/dist/{chats-JNL4L6GZ.js.map → chats-IBMO724I.js.map} +0 -0
- /package/dist/{check-EXT5WAYI.js.map → check-EZI4OF3Q.js.map} +0 -0
- /package/dist/{chunk-RIIMF75G.js.map → chunk-2VUD4CIW.js.map} +0 -0
- /package/dist/{chunk-IYDESWW4.js.map → chunk-2ZKQNMK2.js.map} +0 -0
- /package/dist/{chunk-KOKPQE4N.js.map → chunk-423G75A7.js.map} +0 -0
- /package/dist/{chunk-G4TPYA7F.js.map → chunk-4ZAHRAWL.js.map} +0 -0
- /package/dist/{chunk-FLTAPEVY.js.map → chunk-5IHZTLDH.js.map} +0 -0
- /package/dist/{chunk-J4AWNWKN.js.map → chunk-5WOZ7OGU.js.map} +0 -0
- /package/dist/{chunk-3WN5GWX4.js.map → chunk-62UGVR7Q.js.map} +0 -0
- /package/dist/{chunk-JQYB2DS3.js.map → chunk-66LUQENO.js.map} +0 -0
- /package/dist/{chunk-YQYCWYFJ.js.map → chunk-6J2UZJ6F.js.map} +0 -0
- /package/dist/{chunk-TLQY4QBW.js.map → chunk-6ZW5AR5N.js.map} +0 -0
- /package/dist/{chunk-C3XJ46C2.js.map → chunk-7EPR7L2D.js.map} +0 -0
- /package/dist/{chunk-EJ6EED6I.js.map → chunk-7XFQPPYB.js.map} +0 -0
- /package/dist/{chunk-BPDUE3MT.js.map → chunk-BJH2G3QF.js.map} +0 -0
- /package/dist/{chunk-BBS5VXLK.js.map → chunk-BZXIDMV7.js.map} +0 -0
- /package/dist/{chunk-X7USE7IA.js.map → chunk-C57NXUM2.js.map} +0 -0
- /package/dist/{chunk-DGHSXHZR.js.map → chunk-CGLNCFAG.js.map} +0 -0
- /package/dist/{chunk-YEQTBPEB.js.map → chunk-CNZ5KS4I.js.map} +0 -0
- /package/dist/{chunk-KGJ6EIX3.js.map → chunk-CP5IVVYM.js.map} +0 -0
- /package/dist/{chunk-A6LOIUWB.js.map → chunk-DAXBST7G.js.map} +0 -0
- /package/dist/{chunk-MKOI6QYM.js.map → chunk-DFE77XT5.js.map} +0 -0
- /package/dist/{chunk-SNVAE572.js.map → chunk-DI7M2JUA.js.map} +0 -0
- /package/dist/{chunk-6MJKVNLL.js.map → chunk-DN6EMVA4.js.map} +0 -0
- /package/dist/{chunk-Q736UFSD.js.map → chunk-E2G2USTA.js.map} +0 -0
- /package/dist/{chunk-ELFZ63XY.js.map → chunk-EA3643ET.js.map} +0 -0
- /package/dist/{chunk-OZNBVJGC.js.map → chunk-EBFKPGTL.js.map} +0 -0
- /package/dist/{chunk-CBVUO7SK.js.map → chunk-EFZVDV7F.js.map} +0 -0
- /package/dist/{chunk-WEBWXSFF.js.map → chunk-ETHUDFUY.js.map} +0 -0
- /package/dist/{chunk-YJEG6TQ3.js.map → chunk-EZ3YSJTP.js.map} +0 -0
- /package/dist/{chunk-S36WWACM.js.map → chunk-G6CLJ3WL.js.map} +0 -0
- /package/dist/{chunk-WTPID22G.js.map → chunk-HJS6FPQX.js.map} +0 -0
- /package/dist/{chunk-3QNSGFE2.js.map → chunk-HXHGDFXA.js.map} +0 -0
- /package/dist/{chunk-BIBXZJZI.js.map → chunk-HZ7QUFUW.js.map} +0 -0
- /package/dist/{chunk-FE2MFNVT.js.map → chunk-IEUF733F.js.map} +0 -0
- /package/dist/{chunk-VZIYTP3X.js.map → chunk-IEX4RRHJ.js.map} +0 -0
- /package/dist/{chunk-RRKUXGAU.js.map → chunk-ITABNSX6.js.map} +0 -0
- /package/dist/{chunk-LAMSUL26.js.map → chunk-J7L457MF.js.map} +0 -0
- /package/dist/{chunk-LJEJCIHR.js.map → chunk-JCFZ7ECN.js.map} +0 -0
- /package/dist/{chunk-3QLGV4XN.js.map → chunk-JFWTQDZL.js.map} +0 -0
- /package/dist/{chunk-XY7W6MQN.js.map → chunk-JGMQD3PX.js.map} +0 -0
- /package/dist/{chunk-6D7WTUF3.js.map → chunk-JTAPNHW5.js.map} +0 -0
- /package/dist/{chunk-NI5R6Y24.js.map → chunk-K2DKQ52D.js.map} +0 -0
- /package/dist/{chunk-SHYUXLE5.js.map → chunk-K3VMHRLJ.js.map} +0 -0
- /package/dist/{chunk-H6ASYVQX.js.map → chunk-KMZ4YWS4.js.map} +0 -0
- /package/dist/{chunk-CC42TKFH.js.map → chunk-LBPJDFFN.js.map} +0 -0
- /package/dist/{chunk-UZVFXGMS.js.map → chunk-LNRYMWXE.js.map} +0 -0
- /package/dist/{chunk-JLAFNORO.js.map → chunk-LY7PDE76.js.map} +0 -0
- /package/dist/{chunk-4AO3LSYM.js.map → chunk-MGUEAG6W.js.map} +0 -0
- /package/dist/{chunk-V7EN5LFS.js.map → chunk-MIBOIXCP.js.map} +0 -0
- /package/dist/{chunk-URGXEDFV.js.map → chunk-MNFJQRUO.js.map} +0 -0
- /package/dist/{chunk-L7I47VGM.js.map → chunk-MUT2BPDM.js.map} +0 -0
- /package/dist/{chunk-AQRBEPZL.js.map → chunk-MWPM6HNV.js.map} +0 -0
- /package/dist/{chunk-DHF4FXWS.js.map → chunk-NE3AZ25Y.js.map} +0 -0
- /package/dist/{chunk-SIRRBWQ2.js.map → chunk-OFSUVUXT.js.map} +0 -0
- /package/dist/{chunk-M4KFO256.js.map → chunk-P6H6JZXO.js.map} +0 -0
- /package/dist/{chunk-7YXBMYSM.js.map → chunk-PEPLYJWK.js.map} +0 -0
- /package/dist/{chunk-WOHTTXLG.js.map → chunk-PK2U2ALQ.js.map} +0 -0
- /package/dist/{chunk-5LEIUG5H.js.map → chunk-PKSIPLMS.js.map} +0 -0
- /package/dist/{chunk-OEO2NSNC.js.map → chunk-QNY4IK3C.js.map} +0 -0
- /package/dist/{chunk-YHBMCP6C.js.map → chunk-RDIZCSTV.js.map} +0 -0
- /package/dist/{chunk-3GXHML4V.js.map → chunk-RM5JT6XF.js.map} +0 -0
- /package/dist/{chunk-3QPG2D27.js.map → chunk-ROWUTQFG.js.map} +0 -0
- /package/dist/{chunk-QGAUDVMR.js.map → chunk-RQ43VL2X.js.map} +0 -0
- /package/dist/{chunk-ZCGM7ZWM.js.map → chunk-RSABCQLI.js.map} +0 -0
- /package/dist/{chunk-F5VR6HSI.js.map → chunk-S4QGD7PV.js.map} +0 -0
- /package/dist/{chunk-5NMKNHJI.js.map → chunk-S7WFZYKP.js.map} +0 -0
- /package/dist/{chunk-CF5I4Q5M.js.map → chunk-SO7NANAH.js.map} +0 -0
- /package/dist/{chunk-CFF7VAOQ.js.map → chunk-SRMQCQ7T.js.map} +0 -0
- /package/dist/{chunk-JAME5NBT.js.map → chunk-SULQZX5W.js.map} +0 -0
- /package/dist/{chunk-Q3G4ZI2U.js.map → chunk-T4HIFVNK.js.map} +0 -0
- /package/dist/{chunk-V4HS5JRL.js.map → chunk-TBBAHTP3.js.map} +0 -0
- /package/dist/{chunk-O5VSYBUA.js.map → chunk-TJTCHTR4.js.map} +0 -0
- /package/dist/{chunk-YAMKCMAS.js.map → chunk-TUS2VOMZ.js.map} +0 -0
- /package/dist/{chunk-UK4XSLV2.js.map → chunk-U3LO5TDH.js.map} +0 -0
- /package/dist/{chunk-EM5R3BYC.js.map → chunk-U6EQMX3B.js.map} +0 -0
- /package/dist/{chunk-L4QEMWNJ.js.map → chunk-UDNN4POE.js.map} +0 -0
- /package/dist/{chunk-VCG3Q3O4.js.map → chunk-UECTXVAO.js.map} +0 -0
- /package/dist/{chunk-66LB37BF.js.map → chunk-UQTINFCP.js.map} +0 -0
- /package/dist/{chunk-RUMHZX5N.js.map → chunk-UUUYWBTR.js.map} +0 -0
- /package/dist/{chunk-H25GY4U4.js.map → chunk-UYVMINV2.js.map} +0 -0
- /package/dist/{chunk-S5S54J2K.js.map → chunk-VGJFNHSA.js.map} +0 -0
- /package/dist/{chunk-5QNW5PCM.js.map → chunk-VQOBDHZP.js.map} +0 -0
- /package/dist/{chunk-Q5XUFN2W.js.map → chunk-VRQ5HEVU.js.map} +0 -0
- /package/dist/{chunk-H423YXYY.js.map → chunk-VSHXHSIW.js.map} +0 -0
- /package/dist/{chunk-EDZDYB3C.js.map → chunk-VTLW24DM.js.map} +0 -0
- /package/dist/{chunk-7NBQQOCU.js.map → chunk-VVITBZKP.js.map} +0 -0
- /package/dist/{chunk-2CC4CPDT.js.map → chunk-WFTTF2MP.js.map} +0 -0
- /package/dist/{chunk-6EOWBGGW.js.map → chunk-XMIV53FM.js.map} +0 -0
- /package/dist/{chunk-DPOUS5DN.js.map → chunk-XNUUEUJB.js.map} +0 -0
- /package/dist/{chunk-2NOFIV6M.js.map → chunk-XYHAIEAF.js.map} +0 -0
- /package/dist/{chunk-AZIXX73C.js.map → chunk-YB2UVOAD.js.map} +0 -0
- /package/dist/{chunk-LYGZBNSC.js.map → chunk-YLHWZOW7.js.map} +0 -0
- /package/dist/{chunk-GRX3JXSR.js.map → chunk-YNWBIAXJ.js.map} +0 -0
- /package/dist/{chunk-YRWCXYWW.js.map → chunk-YT6YI47O.js.map} +0 -0
- /package/dist/{chunk-JYOP6YVT.js.map → chunk-YYYGUO2E.js.map} +0 -0
- /package/dist/{chunk-MIHY534L.js.map → chunk-Z6RTEOEY.js.map} +0 -0
- /package/dist/{chunk-5CH2JQCA.js.map → chunk-ZHQSXEJ2.js.map} +0 -0
- /package/dist/{cite-WCAOCOO5.js.map → cite-I5UV5SKS.js.map} +0 -0
- /package/dist/{claim-4LKB2Z6T.js.map → claim-JQCSXR4C.js.map} +0 -0
- /package/dist/{client-VCKP6WBR.js.map → client-DKZM6XTS.js.map} +0 -0
- /package/dist/{code-VXOTFGD2.js.map → code-D3J5FQCF.js.map} +0 -0
- /package/dist/{connect-IABMKFGA.js.map → companies-GHBIZKOK.js.map} +0 -0
- /package/dist/{company-C2Y7LY5H.js.map → company-KNCYMQIA.js.map} +0 -0
- /package/dist/{complete-MNN3PAZE.js.map → complete-V53XRNEQ.js.map} +0 -0
- /package/dist/{config-UR45YCIN.js.map → config-ACEF37UO.js.map} +0 -0
- /package/dist/{customers-GCM7WZII.js.map → connect-NUZQSIGL.js.map} +0 -0
- /package/dist/{content-EQQIKG5H.js.map → content-5RTSXURF.js.map} +0 -0
- /package/dist/{conversation-FETU4KTF.js.map → conversation-LBYO6ONM.js.map} +0 -0
- /package/dist/{conversion-report-33SG7SHU.js.map → conversion-report-SRHJGIMT.js.map} +0 -0
- /package/dist/{conversion-upload-command-DWIGVHQZ.js.map → conversion-upload-command-5EKILBP2.js.map} +0 -0
- /package/dist/{conversion-writes-XGGTBML5.js.map → conversion-writes-P5FDTA6Y.js.map} +0 -0
- /package/dist/{conversions-S3WIR5R4.js.map → conversions-BXCGFNRK.js.map} +0 -0
- /package/dist/{conversions-PPP4QK7U.js.map → conversions-WJBOEPOO.js.map} +0 -0
- /package/dist/{copy-writes-JVUX3YDL.js.map → copy-writes-ER5ZB5C4.js.map} +0 -0
- /package/dist/{countries-GRCU4IGM.js.map → countries-OJZQQYFT.js.map} +0 -0
- /package/dist/{create-A3ZIQVIH.js.map → create-3PNWKXLP.js.map} +0 -0
- /package/dist/{create-ESKBBBJX.js.map → create-6FZR7JZT.js.map} +0 -0
- /package/dist/{create-U2ITO4RV.js.map → create-QXJ3UEOT.js.map} +0 -0
- /package/dist/{create-VNYTZJ4T.js.map → create-XO7HUNPB.js.map} +0 -0
- /package/dist/{creatives-WSCRC5GO.js.map → creatives-O6TA2DOG.js.map} +0 -0
- /package/dist/{creatives-XO5E4AIC.js.map → creatives-YRYPXOCS.js.map} +0 -0
- /package/dist/{creatives-4EPM3RHG.js.map → creatives-ZGXH7UA7.js.map} +0 -0
- /package/dist/{credentials-ZV66ZUCK.js.map → credentials-ATAP54ZI.js.map} +0 -0
- /package/dist/{critique-X3433R5M.js.map → critique-3UY7TUVQ.js.map} +0 -0
- /package/dist/{critique-ODWLA52C.js.map → critique-UC6SBKGO.js.map} +0 -0
- /package/dist/{crm-WPPM2R7I.js.map → crm-MGVGQ7PK.js.map} +0 -0
- /package/dist/{crop-NE7YX4SS.js.map → crop-SRCLDYM5.js.map} +0 -0
- /package/dist/{custom-conversions-GQTU5E6X.js.map → custom-conversions-RTSR3KKJ.js.map} +0 -0
- /package/dist/{env-NZXNMWSD.js.map → customers-7NBNJCDC.js.map} +0 -0
- /package/dist/{decide-6Q5X3V3F.js.map → decide-2WQKE6HC.js.map} +0 -0
- /package/dist/{delete-QHDDR66K.js.map → delete-DWQS7UCJ.js.map} +0 -0
- /package/dist/{delete-GAIV2YVD.js.map → delete-EKGTJSLK.js.map} +0 -0
- /package/dist/{delete-EKKOEB3N.js.map → delete-MJSASLP6.js.map} +0 -0
- /package/dist/{delete-SP66F7ZV.js.map → delete-N76JN5MP.js.map} +0 -0
- /package/dist/{delete-RVJLATPO.js.map → delete-OFG7FBMA.js.map} +0 -0
- /package/dist/{delete-VJ5QXKZR.js.map → delete-QQDGR7DD.js.map} +0 -0
- /package/dist/{demographics-XWIW3YJF.js.map → demographics-QWFAMEC2.js.map} +0 -0
- /package/dist/{describe-MAGTSOW4.js.map → describe-42XBBR6J.js.map} +0 -0
- /package/dist/{describe-DJPIUEFE.js.map → describe-TKOJMWML.js.map} +0 -0
- /package/dist/{dimensions-IC2H7V3H.js.map → dimensions-5OS26IF6.js.map} +0 -0
- /package/dist/{discard-TWX2CQF5.js.map → discard-4VW3AWI3.js.map} +0 -0
- /package/dist/{discover-PSL2NBJL.js.map → discover-IDC6PQV2.js.map} +0 -0
- /package/dist/{domain-FE32BE2E.js.map → domain-EDPDUVAX.js.map} +0 -0
- /package/dist/{download-5FYHTIGR.js.map → download-46GLVBYU.js.map} +0 -0
- /package/dist/{download-EHDJXBAC.js.map → download-QH4VHDS6.js.map} +0 -0
- /package/dist/{draft-MWYKIZC4.js.map → draft-3MYPEBSF.js.map} +0 -0
- /package/dist/{draft-JESKGZ6O.js.map → draft-FJ55MZB4.js.map} +0 -0
- /package/dist/{draft-5VLO5UYZ.js.map → draft-IBR2W6GZ.js.map} +0 -0
- /package/dist/{draft-L2NXCIYT.js.map → draft-NCUQFRGS.js.map} +0 -0
- /package/dist/{draft-ZCP3MIV6.js.map → draft-RRUJU2ZR.js.map} +0 -0
- /package/dist/{draft-L757UIW5.js.map → draft-TJAD7P6W.js.map} +0 -0
- /package/dist/{draft-27NMTARB.js.map → draft-W7FYHKI2.js.map} +0 -0
- /package/dist/{fit-XLK5LDPS.js.map → env-AMOXYHCA.js.map} +0 -0
- /package/dist/{experiment-XAYSEYTU.js.map → experiment-TBLKWI2J.js.map} +0 -0
- /package/dist/{experiments-DVR7WBGQ.js.map → experiments-DUVO7C7A.js.map} +0 -0
- /package/dist/{export-W54UZ62P.js.map → export-AMOLHZB6.js.map} +0 -0
- /package/dist/{extract-JM6FAWAS.js.map → extract-WYNFE6TQ.js.map} +0 -0
- /package/dist/{facets-IEQJK5AW.js.map → facets-WTY6NOUV.js.map} +0 -0
- /package/dist/{favorites-Y6CT6NSQ.js.map → favorites-Z24QDACW.js.map} +0 -0
- /package/dist/{feed-35BRQPTH.js.map → feed-2XCJ2JIV.js.map} +0 -0
- /package/dist/{feedback-SSCN7LEP.js.map → feedback-57BP27NA.js.map} +0 -0
- /package/dist/{feedback-QUJ2V4WD.js.map → feedback-XDREGDOK.js.map} +0 -0
- /package/dist/{feedback-record-P6WK4UPP.js.map → feedback-record-HXSBLAZD.js.map} +0 -0
- /package/dist/{fetch-Q6BIDVN5.js.map → fetch-L27MLPXM.js.map} +0 -0
- /package/dist/{fetch-I6P72CDL.js.map → fetch-Z5MNAIQS.js.map} +0 -0
- /package/dist/{find-SVGRA7IA.js.map → find-XMISWVZT.js.map} +0 -0
- /package/dist/{fonts-GARRSRIB.js.map → fit-K3G7HIMK.js.map} +0 -0
- /package/dist/{flows-QVGZEYCH.js.map → flows-VJTWU3SU.js.map} +0 -0
- /package/dist/{follow-24QSDNAG.js.map → follow-542NYE76.js.map} +0 -0
- /package/dist/{follow-competitors-AG4E4XFA.js.map → follow-competitors-NZDLHP7P.js.map} +0 -0
- /package/dist/{following-YGM6TBK3.js.map → following-JTZZCSQX.js.map} +0 -0
- /package/dist/{ideas-22I7JTI7.js.map → fonts-SEMIVGXJ.js.map} +0 -0
- /package/dist/{forecast-GEYNZ5PQ.js.map → forecast-VODA7N3G.js.map} +0 -0
- /package/dist/{funding-WZNGXRLJ.js.map → funding-HKPP53U2.js.map} +0 -0
- /package/dist/{funnel-OABL4MLZ.js.map → funnel-BXJDMVMF.js.map} +0 -0
- /package/dist/{ga4-W3U5YTRT.js.map → ga4-MUIZN7ID.js.map} +0 -0
- /package/dist/{generate-Y4NJEYIH.js.map → generate-VCGSO7HI.js.map} +0 -0
- /package/dist/{get-GEUSRD5Y.js.map → get-3QLANJES.js.map} +0 -0
- /package/dist/{get-5SPNAIUQ.js.map → get-D5G2RNTR.js.map} +0 -0
- /package/dist/{get-RDGC3QA5.js.map → get-EASXXOQR.js.map} +0 -0
- /package/dist/{get-63KQ62KN.js.map → get-EN4UQI7R.js.map} +0 -0
- /package/dist/{get-JIZPYK3Z.js.map → get-G4UPOHVY.js.map} +0 -0
- /package/dist/{get-3MTAVNTP.js.map → get-GOXOADPY.js.map} +0 -0
- /package/dist/{get-TS2ZJDCQ.js.map → get-JUI3RVMT.js.map} +0 -0
- /package/dist/{get-YWDZYEAC.js.map → get-T7A3CTS2.js.map} +0 -0
- /package/dist/{gif-NP6EDGEE.js.map → gif-4KAQUYPX.js.map} +0 -0
- /package/dist/{google-32BCQC7C.js.map → google-ATEQHENA.js.map} +0 -0
- /package/dist/{google-ads-PCXGVHZV.js.map → google-ads-OUNSPGRQ.js.map} +0 -0
- /package/dist/{group-3DT4UYSR.js.map → group-4GYPBQMU.js.map} +0 -0
- /package/dist/{group-OEKKCFXT.js.map → group-GH5CSQKA.js.map} +0 -0
- /package/dist/{gsc-4FEFPFPB.js.map → gsc-3EIBYMON.js.map} +0 -0
- /package/dist/{history-J7ANCPWY.js.map → history-5OJVW2ZF.js.map} +0 -0
- /package/dist/{history-VKRYKQ4C.js.map → history-RQMCZQSC.js.map} +0 -0
- /package/dist/{history-NX67UIZ7.js.map → history-TDGBO76N.js.map} +0 -0
- /package/dist/{icon-43UJTGGE.js.map → icon-VYFLZ4FS.js.map} +0 -0
- /package/dist/{ingest-VXX2Y76C.js.map → ideas-B7RQXWHQ.js.map} +0 -0
- /package/dist/{images-3C4Y6RWL.js.map → images-Q45MP4Q2.js.map} +0 -0
- /package/dist/{improve-IMXQN6OD.js.map → improve-ZBPSMVFI.js.map} +0 -0
- /package/dist/{ingest-CFH2MPSF.js.map → ingest-6MMY4KDM.js.map} +0 -0
- /package/dist/{launches-L4EUROCJ.js.map → ingest-UMQQIINM.js.map} +0 -0
- /package/dist/{insights-BR3456EI.js.map → insights-2NWY4XJR.js.map} +0 -0
- /package/dist/{insights-3IPSEBYW.js.map → insights-WDHDMULM.js.map} +0 -0
- /package/dist/{inspect-LDXPOGGH.js.map → inspect-W2BIGA5F.js.map} +0 -0
- /package/dist/{inspiration-XZI5KCQW.js.map → inspiration-6FGGHV73.js.map} +0 -0
- /package/dist/{instant-experiences-2LKF7XVK.js.map → instant-experiences-YZYOLGBA.js.map} +0 -0
- /package/dist/{intent-ZM4K623V.js.map → intent-3S6SHAYC.js.map} +0 -0
- /package/dist/{job-GOX3KIKG.js.map → job-2XYPZRJ6.js.map} +0 -0
- /package/dist/{job-create-F2PQSN3C.js.map → job-create-BPUOBKXA.js.map} +0 -0
- /package/dist/{job-status-3FMA5D7T.js.map → job-status-HUDHF6BU.js.map} +0 -0
- /package/dist/{keep-23ZYMWPG.js.map → keep-XBYR2NII.js.map} +0 -0
- /package/dist/{keyword-gap-FAAF2I6V.js.map → keyword-gap-MGHKWE6A.js.map} +0 -0
- /package/dist/{keyword-metrics-E36SMZSP.js.map → keyword-metrics-6R5TSHCE.js.map} +0 -0
- /package/dist/{keywords-for-site-AWGWDXZA.js.map → keywords-for-site-EFBLFX6E.js.map} +0 -0
- /package/dist/{knowledge-7M7DSRF3.js.map → knowledge-ILQIN5FL.js.map} +0 -0
- /package/dist/{landing-PVTDVL22.js.map → landing-WC5FX3UP.js.map} +0 -0
- /package/dist/{landings-VNQ4VA2U.js.map → landings-GRJAJKHY.js.map} +0 -0
- /package/dist/{languages-2X22HXM3.js.map → languages-22VMY7JN.js.map} +0 -0
- /package/dist/{languages-ZGDTERIQ.js.map → languages-4J7JHZNB.js.map} +0 -0
- /package/dist/{logo-4LSFZ3ZO.js.map → launches-NUMSS7HP.js.map} +0 -0
- /package/dist/{layerize-6QHQMA7Q.js.map → layerize-TFRXRHVL.js.map} +0 -0
- /package/dist/{lead-routes-5TPFJEVH.js.map → lead-routes-D5ITHESC.js.map} +0 -0
- /package/dist/{leads-XC3C5HGC.js.map → leads-CBOQ5CNM.js.map} +0 -0
- /package/dist/{leads-4TLOH47R.js.map → leads-VEHYM23G.js.map} +0 -0
- /package/dist/{learn-NYRL53NQ.js.map → learn-ZUP35H3T.js.map} +0 -0
- /package/dist/{library-MNJC24E4.js.map → library-JB2UBSJ5.js.map} +0 -0
- /package/dist/{lighthouse-DJMAXFTD.js.map → lighthouse-EQZFYGFL.js.map} +0 -0
- /package/dist/{line-item-writes-LMSYCR6G.js.map → line-item-writes-W4UFIYEA.js.map} +0 -0
- /package/dist/{line-items-P24SOGVZ.js.map → line-items-SGCUJF3S.js.map} +0 -0
- /package/dist/{link-H3TTWJJO.js.map → link-KLJB7COB.js.map} +0 -0
- /package/dist/{linkedin-person-HKKIE32Q.js.map → linkedin-person-ECWP4XPE.js.map} +0 -0
- /package/dist/{list-2277GCPH.js.map → list-5BWNSHYO.js.map} +0 -0
- /package/dist/{list-WIXQXNKB.js.map → list-A363BF25.js.map} +0 -0
- /package/dist/{list-XK33NCSC.js.map → list-JARIB5LC.js.map} +0 -0
- /package/dist/{list-LC2GRYEI.js.map → list-PXEJMDB4.js.map} +0 -0
- /package/dist/{list-537S75BZ.js.map → list-RO4YLUFK.js.map} +0 -0
- /package/dist/{list-UCTFATXS.js.map → list-SVR5HBLA.js.map} +0 -0
- /package/dist/{list-Q52FPW3H.js.map → list-UD43QCLC.js.map} +0 -0
- /package/dist/{list-KHCFVTQU.js.map → list-XELB7UV2.js.map} +0 -0
- /package/dist/{list-V4PSDBLX.js.map → list-XPLMANXX.js.map} +0 -0
- /package/dist/{locations-WN6B3IJK.js.map → locations-KM4XY56A.js.map} +0 -0
- /package/dist/{locations-A65MFB7Q.js.map → locations-SNK2NDH3.js.map} +0 -0
- /package/dist/{log-SLYCPRCY.js.map → log-PMPOO42C.js.map} +0 -0
- /package/dist/{lookup-WIM5WR25.js.map → logo-KDGD6LRA.js.map} +0 -0
- /package/dist/{output-ELEO2Z6R.js.map → lookup-7HIPFF2U.js.map} +0 -0
- /package/dist/{make-HTCPU6HU.js.map → make-Q36WVKT3.js.map} +0 -0
- /package/dist/{map-237LQ5N5.js.map → map-DQ65PS65.js.map} +0 -0
- /package/dist/{mcp-GX5TOO7Y.js.map → mcp-XMFKYN3E.js.map} +0 -0
- /package/dist/{media-KKI3KWLR.js.map → media-6VI4PN4N.js.map} +0 -0
- /package/dist/{media-34I7UB7Z.js.map → media-WIFXVGKU.js.map} +0 -0
- /package/dist/{media-sources-ODNIS7A5.js.map → media-sources-HG524YO4.js.map} +0 -0
- /package/dist/{members-TYQKWR7Z.js.map → members-D4DI2IFH.js.map} +0 -0
- /package/dist/{meme-6NFYFQ7T.js.map → meme-I43AVLGS.js.map} +0 -0
- /package/dist/{normalize-G75RDSE4.js.map → normalize-5B5WIBV4.js.map} +0 -0
- /package/dist/{normalize-MDTMKLYO.js.map → normalize-XRVNJTML.js.map} +0 -0
- /package/dist/{options-MEADUZY3.js.map → options-HT27WLNS.js.map} +0 -0
- /package/dist/{organization-BXJSHRZG.js.map → organization-DYPTFZBA.js.map} +0 -0
- /package/dist/{performance-IGCOP5VH.js.map → output-W5J5RKRR.js.map} +0 -0
- /package/dist/{page-4X6IBUWG.js.map → page-KUDKDDLJ.js.map} +0 -0
- /package/dist/{page-photos-KNBLMFLN.js.map → page-photos-52S2XRIW.js.map} +0 -0
- /package/dist/{pages-7HW5YOZV.js.map → pages-RMTL3RCK.js.map} +0 -0
- /package/dist/{query-SAQADBM2.js.map → performance-2AQ34OPB.js.map} +0 -0
- /package/dist/{performance-CU65TLCB.js.map → performance-WE4LHJ2B.js.map} +0 -0
- /package/dist/{pinterest-KA6VFDM4.js.map → pinterest-GMNQ2AVG.js.map} +0 -0
- /package/dist/{pixels-U6UA662G.js.map → pixels-EWFDIDFA.js.map} +0 -0
- /package/dist/{pixels-D5HF24FI.js.map → pixels-YQJKJWAC.js.map} +0 -0
- /package/dist/{plan-XCA6R3HZ.js.map → plan-33F5F2OR.js.map} +0 -0
- /package/dist/{posts-ALGM6ONV.js.map → posts-MZFKWSZ6.js.map} +0 -0
- /package/dist/{preview-55TRUF4Q.js.map → preview-HWM6KHV5.js.map} +0 -0
- /package/dist/{preview-YQ6P5A53.js.map → preview-JYVRWRTT.js.map} +0 -0
- /package/dist/{profile-NHUPUCBR.js.map → profile-OYCGBQWF.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-X2CUNBU2.js.map → promoted-tweet-writes-HCVRPH45.js.map} +0 -0
- /package/dist/{promoted-tweets-G2NOW5OF.js.map → promoted-tweets-P56ZU6OK.js.map} +0 -0
- /package/dist/{properties-2ZXA5BPJ.js.map → properties-PMY3KKUU.js.map} +0 -0
- /package/dist/{publish-YPCXCU4P.js.map → publish-4VWZHRYO.js.map} +0 -0
- /package/dist/{query-DMWY3TDD.js.map → query-ALRSR5OF.js.map} +0 -0
- /package/dist/{reddit-XMAGZMD4.js.map → query-DK7WWCJJ.js.map} +0 -0
- /package/dist/{query-63CTX2PH.js.map → query-ZGGHOYOH.js.map} +0 -0
- /package/dist/{questionnaire-WHE42RD4.js.map → questionnaire-4AJFPLM2.js.map} +0 -0
- /package/dist/{read-NESEKULG.js.map → read-Z7BBSAEK.js.map} +0 -0
- /package/dist/{run-FN365AXZ.js.map → reddit-NSKYHSAC.js.map} +0 -0
- /package/dist/{refresh-QIK3CXLV.js.map → refresh-O3CLJX4O.js.map} +0 -0
- /package/dist/{refresh-ILDEPU5A.js.map → refresh-VE3UKLXX.js.map} +0 -0
- /package/dist/{release-O7KGD5MI.js.map → release-6TQQW4HB.js.map} +0 -0
- /package/dist/{relevant-pages-KTSODNNW.js.map → relevant-pages-B3ZFOGHQ.js.map} +0 -0
- /package/dist/{remove-7FAWM2H4.js.map → remove-R55VAM47.js.map} +0 -0
- /package/dist/{remove-NHE4UT7G.js.map → remove-VGEKRK34.js.map} +0 -0
- /package/dist/{reopen-4ZWEYNCI.js.map → reopen-S426N3OD.js.map} +0 -0
- /package/dist/{rerun-IDUKOW6Z.js.map → rerun-5KHANQR3.js.map} +0 -0
- /package/dist/{research-Y5MSZH6T.js.map → research-5REXCSSO.js.map} +0 -0
- /package/dist/{reset-YSDYSZ64.js.map → reset-5N2IVHFL.js.map} +0 -0
- /package/dist/{reset-4K7BXUY6.js.map → reset-D4NGVG35.js.map} +0 -0
- /package/dist/{resolve-DD6ES7GJ.js.map → resolve-V75JGD75.js.map} +0 -0
- /package/dist/{retry-PZTS6KMQ.js.map → retry-SB7EIJBA.js.map} +0 -0
- /package/dist/{retry-YAZ3JXYL.js.map → retry-WIKW6CGT.js.map} +0 -0
- /package/dist/{retry-failed-R5HPQ3KQ.js.map → retry-failed-GEORPC3E.js.map} +0 -0
- /package/dist/{revenue-PLJ46IYH.js.map → revenue-GZJU3XMD.js.map} +0 -0
- /package/dist/{rule-writes-QB4IWFCJ.js.map → rule-writes-DRZUEIV6.js.map} +0 -0
- /package/dist/{rules-FYVD2QBB.js.map → rules-BBALKNBK.js.map} +0 -0
- /package/dist/{rules-I4PL72J7.js.map → rules-WI6YKZA4.js.map} +0 -0
- /package/dist/{rules-add-EFD2YSLH.js.map → rules-add-JCRB4AJR.js.map} +0 -0
- /package/dist/{run-WCFKVQQQ.js.map → run-RDHTORWZ.js.map} +0 -0
- /package/dist/{search-XHSTUBDY.js.map → run-VVK23U5P.js.map} +0 -0
- /package/dist/{scaffold-ad-PI4IHOG5.js.map → scaffold-ad-QSVBY3XR.js.map} +0 -0
- /package/dist/{scaffold-static-ad-RDOCRFEP.js.map → scaffold-static-ad-64BZMUHP.js.map} +0 -0
- /package/dist/{scaffold-video-HPRYTHE6.js.map → scaffold-video-X27MRW7R.js.map} +0 -0
- /package/dist/{schedule-D7EDEM45.js.map → schedule-L5NVM4DN.js.map} +0 -0
- /package/dist/{schedule-NPZPVNSO.js.map → schedule-XHPIVUJ6.js.map} +0 -0
- /package/dist/{schema-Z43AJOJ4.js.map → schema-3IEI64TQ.js.map} +0 -0
- /package/dist/{schema-PMVRMIRU.js.map → schema-RDVJQ5VW.js.map} +0 -0
- /package/dist/{scrape-VL2RWSTW.js.map → scrape-YEZGRX2B.js.map} +0 -0
- /package/dist/{screenshot-Y6EEXS3Q.js.map → screenshot-6EBASY4U.js.map} +0 -0
- /package/dist/{search-JEXYEAPQ.js.map → search-BZLTII6V.js.map} +0 -0
- /package/dist/{search-L3GTZYRW.js.map → search-I7CCYBB5.js.map} +0 -0
- /package/dist/{search-TXBYKNQC.js.map → search-NA7DBOLW.js.map} +0 -0
- /package/dist/{search-CXC7N5XJ.js.map → search-RM4MN7KO.js.map} +0 -0
- /package/dist/{shared-4GGUIOF2.js.map → search-SNEFCCJX.js.map} +0 -0
- /package/dist/{search-BRANRGRU.js.map → search-VX5ATSCD.js.map} +0 -0
- /package/dist/{search-copy-FIPG7OCC.js.map → search-copy-S6JVQZLI.js.map} +0 -0
- /package/dist/{seeds-ADJKURNG.js.map → seeds-BIY565P3.js.map} +0 -0
- /package/dist/{select-CLDJE7VJ.js.map → select-NX3VHQTH.js.map} +0 -0
- /package/dist/{sends-RS4LWRAC.js.map → sends-7JKFJTRE.js.map} +0 -0
- /package/dist/{sequences-2RPKDKGQ.js.map → sequences-KZSNIELI.js.map} +0 -0
- /package/dist/{set-prompt-7VHSKVO6.js.map → set-prompt-QGEWZ3HD.js.map} +0 -0
- /package/dist/{setup-links-PAA7XYV5.js.map → setup-links-LIDZVTSU.js.map} +0 -0
- /package/dist/{sync-definition-L52PGD7B.js.map → shared-P5UDXZAG.js.map} +0 -0
- /package/dist/{shopify-VWIRGI6H.js.map → shopify-LZU3MCDG.js.map} +0 -0
- /package/dist/{site-Q3PMNJ2Z.js.map → site-CEO2V3BI.js.map} +0 -0
- /package/dist/{sitemaps-Z6IELTQV.js.map → sitemaps-WCARK2BM.js.map} +0 -0
- /package/dist/{sites-KLAKI2EY.js.map → sites-JQZ2ZC6W.js.map} +0 -0
- /package/dist/{skills-OJP36EVR.js.map → skills-V2FRLLOW.js.map} +0 -0
- /package/dist/{sources-4YHNM22P.js.map → sources-C7AQCP2Z.js.map} +0 -0
- /package/dist/{sources-BYMGSUPZ.js.map → sources-SIGZVORA.js.map} +0 -0
- /package/dist/{stats-MIMFX4R7.js.map → stats-W7CCPRTG.js.map} +0 -0
- /package/dist/{status-B2WRAPZO.js.map → status-NIG6OSAG.js.map} +0 -0
- /package/dist/{sticker-IREEEN7I.js.map → sticker-NDSJDIAK.js.map} +0 -0
- /package/dist/{stock-BOOSUS2C.js.map → stock-KY6BCN76.js.map} +0 -0
- /package/dist/{studies-YGYAH3JI.js.map → studies-4JOP2GQJ.js.map} +0 -0
- /package/dist/{studio-XLC37YGX.js.map → studio-VQFYNK5O.js.map} +0 -0
- /package/dist/{study-writes-UPGJB36A.js.map → study-writes-PMTRTUXP.js.map} +0 -0
- /package/dist/{suggest-5RTISDLI.js.map → suggest-F5GIJR4K.js.map} +0 -0
- /package/dist/{sync-2QIPZFSK.js.map → sync-3RS5E5ZI.js.map} +0 -0
- /package/dist/{sync-VCAFAYW4.js.map → sync-IDULIJUZ.js.map} +0 -0
- /package/dist/{sync-OHIXI4I6.js.map → sync-STPHWKTE.js.map} +0 -0
- /package/dist/{viewer-check-XZYL55G6.js.map → sync-definition-VHYZWLS5.js.map} +0 -0
- /package/dist/{tag-DSCUKNC3.js.map → tag-MMY3QT2N.js.map} +0 -0
- /package/dist/{tag-manager-IINALUEJ.js.map → tag-manager-JDGWAHCZ.js.map} +0 -0
- /package/dist/{tags-DF6JNSNA.js.map → tags-F6DBHGIL.js.map} +0 -0
- /package/dist/{tags-SWP4MXQO.js.map → tags-HGKEOIR7.js.map} +0 -0
- /package/dist/{tags-XYQUPA6M.js.map → tags-I2LINXA7.js.map} +0 -0
- /package/dist/{tags-AIE4XEU2.js.map → tags-UM6Y4DVQ.js.map} +0 -0
- /package/dist/{tags-VXHV4JWM.js.map → tags-YCBZVXJQ.js.map} +0 -0
- /package/dist/{targeting-BM72UTI6.js.map → targeting-AVHPKERN.js.map} +0 -0
- /package/dist/{targeting-constants-54S3FXIF.js.map → targeting-constants-T7Y6RVEH.js.map} +0 -0
- /package/dist/{targeting-criteria-UYAEVSX3.js.map → targeting-criteria-XPK76HRH.js.map} +0 -0
- /package/dist/{targets-XFL7CE7N.js.map → targets-KT4BNTKZ.js.map} +0 -0
- /package/dist/{terms-OFHNLW6U.js.map → terms-ETG7YCJC.js.map} +0 -0
- /package/dist/{testimonials-DTCPATQ2.js.map → testimonials-QGXMSSWV.js.map} +0 -0
- /package/dist/{transcript-H7VSMOMV.js.map → transcript-OLF62WCH.js.map} +0 -0
- /package/dist/{translate-LCLG4NYR.js.map → translate-NON5ZD3S.js.map} +0 -0
- /package/dist/{triggers-HN3O2CNG.js.map → triggers-UOQY4RFC.js.map} +0 -0
- /package/dist/{tweets-TRTXC6O4.js.map → tweets-3H7CW3ZI.js.map} +0 -0
- /package/dist/{unfollow-DATOGPLZ.js.map → unfollow-PEEPIMZY.js.map} +0 -0
- /package/dist/{unlink-B5CD7ZW6.js.map → unlink-RNIJPHHW.js.map} +0 -0
- /package/dist/{unstage-LLQCMZ5H.js.map → unstage-GUPBLCPZ.js.map} +0 -0
- /package/dist/{unstage-34W4OU5D.js.map → unstage-QVDYVN77.js.map} +0 -0
- /package/dist/{update-3CKLLPYX.js.map → update-7KR5ABJP.js.map} +0 -0
- /package/dist/{update-6V2A4JGZ.js.map → update-JAUWIWOH.js.map} +0 -0
- /package/dist/{update-2OTR4JQV.js.map → update-QZEF5MUW.js.map} +0 -0
- /package/dist/{update-SD5YQIJC.js.map → update-TNOOVX3P.js.map} +0 -0
- /package/dist/{update-7FBCTLFP.js.map → update-TRWHYXF4.js.map} +0 -0
- /package/dist/{upload-72ARWDHN.js.map → upload-MLK2MZB6.js.map} +0 -0
- /package/dist/{upload-7PPMVWVA.js.map → upload-W2UTHRP2.js.map} +0 -0
- /package/dist/{upscale-WVJZG76V.js.map → upscale-MTWSJ3EJ.js.map} +0 -0
- /package/dist/{url-params-TAZ2S675.js.map → url-params-F4XNWPOD.js.map} +0 -0
- /package/dist/{use-6FADOAFZ.js.map → use-K5EP7JJM.js.map} +0 -0
- /package/dist/{validate-6F3JKVQV.js.map → validate-P3AQVXG6.js.map} +0 -0
- /package/dist/{variant-RNM36P4J.js.map → variant-BZCX46QL.js.map} +0 -0
- /package/dist/{videos-UCUYPQNK.js.map → videos-PAKAAFRD.js.map} +0 -0
- /package/dist/{videos-GHFCOTT7.js.map → videos-QIDOIJ24.js.map} +0 -0
- /package/dist/{view-YR6MDLWL.js.map → view-CD5UWMR4.js.map} +0 -0
- /package/dist/{web-YYXQXIH4.js.map → web-E5NHFG4Y.js.map} +0 -0
- /package/dist/{winners-4T5RFQXU.js.map → winners-CSNTBOVM.js.map} +0 -0
- /package/dist/{winning-ads-H3HCI5QT.js.map → winning-ads-P6PDTCCU.js.map} +0 -0
- /package/dist/{write-commands-UO3OQIHH.js.map → write-commands-AASXCKRN.js.map} +0 -0
- /package/dist/{write-commands-DS7WNSYA.js.map → write-commands-MBNO7DCX.js.map} +0 -0
- /package/dist/{write-commands-6D55SB56.js.map → write-commands-OV7RE6O2.js.map} +0 -0
- /package/dist/{write-commands-AIWLEGO2.js.map → write-commands-XFYXMTXO.js.map} +0 -0
- /package/dist/{x-K4N6QIH2.js.map → x-5A74OD5P.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../api/src/accounts/crm.ts"],"sourcesContent":["/**\n * The CRM a client sends Baker itself, for Account insights when Baker cannot\n * read the CRM (Salesforce, Pipedrive, a home-grown one).\n *\n * The client decides what Baker sees: companies and deals only, each field but\n * the id optional, and anything that names a person refused rather than\n * ignored — so a careless export cannot hand over contacts by accident.\n *\n * One judge for every door: the HTTP endpoint, the dashboard's spreadsheet\n * upload and the agent's `baker accounts crm check` all run a record through\n * `judgeCrmBatch`, so the three cannot disagree about what is accepted.\n */\n\nimport { z } from \"zod\";\nimport type { FieldSpec } from \"../event-ingest/fields\";\nimport { INGEST_MODE_HEADER, INGEST_MODES } from \"../event-ingest/mode\";\n\nexport const CRM_DEAL_STATUSES = [\"open\", \"won\", \"lost\"] as const;\nexport type CrmDealStatus = (typeof CRM_DEAL_STATUSES)[number];\n\nconst text = (max: number) => z.string().trim().max(max);\n\n/** A field the record needs, flagged so the rejection reads `missing_field` rather than `invalid_field`. */\nfunction needed(context: z.RefinementCtx, field: string, message: string): void {\n context.addIssue({ code: \"custom\", path: [field], message, params: { missing: true } });\n}\n\n/** `2026-03-15`, with a time and a zone or without; anything looser (`March 5`, `03.04.2026`) is not taken. */\nconst ISO_INSTANT = /^(\\d{4}-\\d{2}-\\d{2})([T ]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?)?(Z|[+-]\\d{2}:?\\d{2})?$/;\n\n/** A day or an instant, as ISO 8601; read as UTC when it has no zone. */\nconst instantSchema = z.string().transform((value, context) => {\n const slashed = /^(\\d{1,2})[/.](\\d{1,2})[/.](\\d{4})$/.exec(value);\n if (slashed) {\n const [, first, second, year] = slashed;\n context.addIssue({\n code: \"custom\",\n message: `${value} could be either day first or month first — write it as ${year}-${second?.padStart(2, \"0\")}-${first?.padStart(2, \"0\")} or ${year}-${first?.padStart(2, \"0\")}-${second?.padStart(2, \"0\")}`,\n });\n return z.NEVER;\n }\n const iso = ISO_INSTANT.exec(value);\n const ms = iso ? Date.parse(`${iso[1]}${iso[2]?.replace(\" \", \"T\") ?? \"T00:00:00\"}${iso[3] ?? \"Z\"}`) : Number.NaN;\n if (!Number.isFinite(ms)) {\n context.addIssue({ code: \"custom\", message: `${value} is not a date — use YYYY-MM-DD or an ISO 8601 time` });\n return z.NEVER;\n }\n return new Date(ms).toISOString();\n});\n\nconst amountSchema = z.union([z.number(), z.string().trim()]).transform((value, context) => {\n const amount = typeof value === \"number\" ? value : Number(value);\n if (!Number.isFinite(amount) || amount < 0 || (typeof value === \"string\" && value === \"\")) {\n context.addIssue({ code: \"custom\", message: `${value} is not an amount — send a number like 12000.50` });\n return z.NEVER;\n }\n return amount;\n});\n\nconst companyFields = z.strictObject({\n id: text(128).optional(),\n name: text(300).optional(),\n domain: text(253).optional(),\n linkedinPage: text(300).optional(),\n deleted: z.boolean().optional(),\n});\n\n/**\n * A company is known by its CRM id — or, for a plain list of target companies\n * with no CRM behind it, by its website or LinkedIn page, which Baker turns\n * into the id (`domain:acme.com`) a deal sent with that website files under.\n */\nconst companySchema = companyFields.superRefine((company, context) => {\n if (company.id || company.domain || company.linkedinPage) return;\n needed(context, \"id\", \"needed — or the company's website or LinkedIn page, to know it by\");\n});\n\nconst dealFields = z.strictObject({\n id: text(128).min(1),\n companyId: text(128).optional(),\n companyDomain: text(253).optional(),\n /** The company's name, for a deal sent with `companyDomain` and no company of its own. */\n companyName: text(300).optional(),\n /** The company's LinkedIn page, likewise — the surest match of all. */\n companyLinkedinPage: text(300).optional(),\n name: text(300).optional(),\n amount: amountSchema.nullable().optional(),\n currency: z\n .string()\n .trim()\n .regex(/^[A-Za-z]{3}$/, \"use a three-letter currency code like EUR\")\n .transform((code) => code.toUpperCase())\n .optional(),\n pipeline: text(128).optional(),\n stage: text(128).optional(),\n status: z.enum(CRM_DEAL_STATUSES).optional(),\n createdAt: instantSchema.optional(),\n closedAt: instantSchema.nullable().optional(),\n deleted: z.boolean().optional(),\n});\n\n/**\n * A deal is dated by when it was created (the pipeline it joined) and, once\n * won or lost, by when it closed (the revenue it became). A deletion needs\n * only its id.\n */\nconst dealSchema = dealFields.superRefine((deal, context) => {\n if (deal.deleted === true) return;\n if (deal.createdAt === undefined) needed(context, \"createdAt\", \"needed — the day the deal was created\");\n if ((deal.status === \"won\" || deal.status === \"lost\") && !deal.closedAt) {\n needed(context, \"closedAt\", \"needed when status is won or lost\");\n }\n});\n\nexport interface CrmCompanyInput {\n /** Empty when the company was sent without one: the store knows it by its website or LinkedIn page. */\n id: string;\n name: string;\n domain: string;\n linkedinPage: string;\n deleted: boolean;\n}\n\nexport interface CrmDealInput {\n id: string;\n companyId: string;\n companyDomain: string;\n companyName: string;\n companyLinkedinPage: string;\n name: string;\n amount: number | null;\n currency: string;\n pipeline: string;\n stage: string;\n status: CrmDealStatus | null;\n createdAt: string | null;\n closedAt: string | null;\n deleted: boolean;\n}\n\nexport const CRM_REJECTION_CODES = [\"personal_data\", \"unknown_field\", \"missing_field\", \"invalid_field\"] as const;\nexport type CrmRejectionCode = (typeof CRM_REJECTION_CODES)[number];\n\nexport interface CrmRejection {\n kind: \"company\" | \"deal\";\n index: number;\n id: string;\n code: CrmRejectionCode;\n message: string;\n}\n\nexport interface JudgedCrmBatch {\n companies: CrmCompanyInput[];\n deals: CrmDealInput[];\n rejected: CrmRejection[];\n}\n\nconst PERSON_FIELD = /e-?mail|phone|mobile|first_?name|last_?name|full_?name|contact|person|owner|address|birth/i;\nconst EMAIL_IN_TEXT = /[^\\s@]+@[^\\s@]+\\.[^\\s@]+/;\n\nconst FIELDS = {\n company: Object.keys(companyFields.shape),\n deal: Object.keys(dealFields.shape),\n} as const;\n\n/** A person in the record: a field named for one, or an email address in any value. */\nfunction personIn(raw: unknown): string | null {\n if (raw === null || typeof raw !== \"object\") return null;\n for (const [field, value] of Object.entries(raw)) {\n if (PERSON_FIELD.test(field)) return `${field} names a person — Baker takes companies and deals, never people`;\n if (typeof value === \"string\" && EMAIL_IN_TEXT.test(value)) {\n return `${field} holds an email address — Baker takes companies and deals, never people`;\n }\n }\n return null;\n}\n\nfunction issueMessage(issue: z.core.$ZodIssue): string {\n const field = issue.path.join(\".\");\n return field === \"\" ? issue.message : `${field}: ${issue.message}`;\n}\n\nfunction rejectionFor(\n kind: \"company\" | \"deal\",\n issues: readonly z.core.$ZodIssue[],\n): Pick<CrmRejection, \"code\" | \"message\"> {\n const unknown = issues.find((issue) => issue.code === \"unrecognized_keys\");\n if (unknown && unknown.code === \"unrecognized_keys\") {\n return {\n code: \"unknown_field\",\n message: `unknown field ${unknown.keys.join(\", \")} — send only ${FIELDS[kind].join(\", \")}`,\n };\n }\n const missing = issues.find(\n (issue) =>\n (issue.code === \"invalid_type\" && issue.input === undefined) ||\n (issue.code === \"custom\" && issue.params?.missing === true),\n );\n return {\n code: missing ? \"missing_field\" : \"invalid_field\",\n message: issues.map(issueMessage).join(\"; \"),\n };\n}\n\nfunction recordId(raw: unknown): string {\n const id = (raw as { id?: unknown } | null)?.id;\n return typeof id === \"string\" ? id : \"\";\n}\n\nfunction judgeRecord<T>(\n kind: \"company\" | \"deal\",\n schema: z.ZodType<T>,\n raw: unknown,\n index: number,\n rejected: CrmRejection[],\n): T | null {\n const base = { kind, index, id: recordId(raw) };\n const person = personIn(raw);\n if (person !== null) {\n rejected.push({ ...base, code: \"personal_data\", message: person });\n return null;\n }\n const parsed = schema.safeParse(raw);\n if (!parsed.success) {\n rejected.push({ ...base, ...rejectionFor(kind, parsed.error.issues) });\n return null;\n }\n return parsed.data;\n}\n\n/** Each record on its own: one bad row is named in `rejected`, and the rest are kept. */\nexport function judgeCrmBatch(batch: { companies?: readonly unknown[]; deals?: readonly unknown[] }): JudgedCrmBatch {\n const judged: JudgedCrmBatch = { companies: [], deals: [], rejected: [] };\n (batch.companies ?? []).forEach((raw, index) => {\n const company = judgeRecord(\"company\", companySchema, raw, index, judged.rejected);\n if (company === null) return;\n judged.companies.push({\n id: company.id ?? \"\",\n name: company.name ?? \"\",\n domain: company.domain ?? \"\",\n linkedinPage: company.linkedinPage ?? \"\",\n deleted: company.deleted === true,\n });\n });\n (batch.deals ?? []).forEach((raw, index) => {\n const deal = judgeRecord(\"deal\", dealSchema, raw, index, judged.rejected);\n if (deal === null) return;\n judged.deals.push({\n id: deal.id,\n companyId: deal.companyId ?? \"\",\n companyDomain: deal.companyDomain ?? \"\",\n companyName: deal.companyName ?? \"\",\n companyLinkedinPage: deal.companyLinkedinPage ?? \"\",\n name: deal.name ?? \"\",\n amount: deal.amount ?? null,\n currency: deal.currency ?? \"\",\n pipeline: deal.pipeline ?? \"\",\n stage: deal.stage ?? \"\",\n status: deal.status ?? null,\n createdAt: deal.createdAt ?? null,\n closedAt: deal.closedAt ?? null,\n deleted: deal.deleted === true,\n });\n });\n return judged;\n}\n\n/**\n * A CSV's separator, read off its header: Excel writes `;` where the decimal\n * mark is a comma, and parsing with several at once would split `12.000,50`.\n */\nexport function sheetDelimiter(text: string): \",\" | \";\" | \"\\t\" {\n const header = text.split(/\\r?\\n/, 1)[0] ?? \"\";\n const count = (mark: string) => header.split(mark).length - 1;\n return ([\",\", \";\", \"\\t\"] as const).reduce((best, mark) => (count(mark) > count(best) ? mark : best), \",\");\n}\n\n/**\n * A spreadsheet amount as the contract takes it: `12,000.50`, `12.000,50` and\n * `12 000` all read as the number they mean — the last separator is the\n * decimal point unless exactly three digits follow it, every other one groups\n * thousands. A linked sheet hands over the raw number a formula left\n * (`110.00000000000001`, `1.5e+21`), which keeps its decimals.\n */\nfunction sheetAmount(cell: string): string {\n if (/^-?\\d+(\\.\\d+)?e[+-]?\\d+$/i.test(cell)) return cell;\n const compact = cell.replace(/[\\s\\u00a0]/g, \"\").replace(/[^\\d.,-]/g, \"\");\n const decimal = /[.,](\\d{1,2}|\\d{4,})$/.exec(compact);\n if (!decimal) return compact.replace(/[.,]/g, \"\");\n const whole = compact.slice(0, decimal.index).replace(/[.,]/g, \"\");\n return `${whole}.${decimal[1]}`;\n}\n\n/** What a spreadsheet holds: one row per deal, or one row per company (an accounts export, a target list). */\nexport type CrmSheetKind = \"deals\" | \"companies\";\n\n/**\n * How much a column matters, in the words a sheet's reader is told: a row\n * without a required one is refused or can never count; a recommended one\n * makes the numbers worth reading; an optional one only labels.\n */\nexport type CrmSheetColumnNeed = \"required\" | \"recommended\" | \"optional\";\n\nexport interface CrmSheetColumn<Field extends string = string> {\n /** The header Baker's templates and the sheets it creates use; a column headed exactly so is read without asking. */\n header: string;\n /** The record field it fills. */\n field: Field;\n need: CrmSheetColumnNeed;\n /** What goes in it, in a line. */\n takes: string;\n /** The condition on a requirement — \"or Company LinkedIn\" — when it is not absolute. */\n note?: string;\n example: string;\n /** A second example row: a closed deal, or a company without an id. */\n example2?: string;\n}\n\n/**\n * Every column a hand-kept sheet has, required ones first — the one list the\n * upload's and the linked sheet's column guides, the templates and the sheet\n * Baker creates are all drawn from, so none of them can disagree about what\n * is needed.\n */\nexport const CRM_SHEET_COLUMNS: {\n readonly deals: readonly CrmSheetColumn<CrmColumnField>[];\n readonly companies: readonly CrmSheetColumn<CrmCompanyField>[];\n} = {\n deals: [\n {\n header: \"Deal ID\",\n field: \"id\",\n need: \"required\",\n takes: \"Your CRM's id for the deal. The same id again updates the row instead of adding one.\",\n example: \"deal-001\",\n example2: \"deal-002\",\n },\n {\n header: \"Created date\",\n field: \"createdAt\",\n need: \"required\",\n takes: \"The day the deal was created, like 2026-06-15. It dates the deal as pipeline.\",\n example: \"2026-06-15\",\n example2: \"2026-02-01\",\n },\n {\n header: \"Website\",\n field: \"companyDomain\",\n need: \"required\",\n takes:\n \"The website of the deal's company, like acme.com. It is how Baker finds the company among those your ads reached.\",\n note: \"or Company LinkedIn\",\n example: \"acme.com\",\n example2: \"globex.com\",\n },\n {\n header: \"Amount\",\n field: \"amount\",\n need: \"recommended\",\n takes: \"The deal's value, like 24000. Without it the deal counts but adds no value.\",\n example: \"24000\",\n example2: \"8000\",\n },\n {\n header: \"Currency\",\n field: \"currency\",\n need: \"recommended\",\n takes: \"Three letters: EUR, USD, GBP…\",\n example: \"EUR\",\n example2: \"EUR\",\n },\n {\n header: \"Status\",\n field: \"status\",\n need: \"recommended\",\n takes: \"open, won or lost. Without it, you choose which stages mean won and lost.\",\n example: \"open\",\n example2: \"won\",\n },\n {\n header: \"Close date\",\n field: \"closedAt\",\n need: \"recommended\",\n takes: \"The day it was won or lost. Needed once Status is won or lost.\",\n example: \"\",\n example2: \"2026-04-20\",\n },\n {\n header: \"Company\",\n field: \"companyName\",\n need: \"optional\",\n takes: \"The company's name, as the Accounts screen shows it.\",\n example: \"Acme Inc\",\n example2: \"Globex\",\n },\n {\n header: \"Company LinkedIn\",\n field: \"companyLinkedinPage\",\n need: \"optional\",\n takes: \"The company's LinkedIn page. The surest match of all, and enough without a Website.\",\n example: \"https://www.linkedin.com/company/acme-inc\",\n example2: \"\",\n },\n {\n header: \"Deal name\",\n field: \"name\",\n need: \"optional\",\n takes: \"The deal's name.\",\n example: \"Acme annual plan\",\n example2: \"Globex pilot\",\n },\n {\n header: \"Pipeline\",\n field: \"pipeline\",\n need: \"optional\",\n takes: \"Its pipeline, if you use several.\",\n example: \"Sales\",\n example2: \"Sales\",\n },\n {\n header: \"Stage\",\n field: \"stage\",\n need: \"optional\",\n takes: \"Its stage.\",\n example: \"Proposal\",\n example2: \"Closed Won\",\n },\n ],\n companies: [\n {\n header: \"Website\",\n field: \"domain\",\n need: \"required\",\n takes: \"The company's website, like acme.com. It is how Baker finds the company among those your ads reached.\",\n note: \"or LinkedIn page\",\n example: \"acme.com\",\n example2: \"globex.com\",\n },\n {\n header: \"Company name\",\n field: \"name\",\n need: \"recommended\",\n takes: \"The company's name, as the Accounts screen shows it.\",\n example: \"Acme Inc\",\n example2: \"Globex\",\n },\n {\n header: \"LinkedIn page\",\n field: \"linkedinPage\",\n need: \"optional\",\n takes: \"The company's LinkedIn page. The surest match of all, and enough without a Website.\",\n example: \"https://www.linkedin.com/company/acme-inc\",\n example2: \"\",\n },\n {\n header: \"Company ID\",\n field: \"id\",\n need: \"optional\",\n takes: \"Your CRM's id for the company. Only needed when your deals name their company by this id.\",\n example: \"acct-001\",\n example2: \"\",\n },\n ],\n};\n\nfunction sheetTemplate(columns: readonly CrmSheetColumn[]): string {\n return [\n columns.map((column) => column.header).join(\",\"),\n columns.map((column) => column.example).join(\",\"),\n columns.map((column) => column.example2 ?? \"\").join(\",\"),\n \"\",\n ].join(\"\\n\");\n}\n\n/** A sheet to fill in, for a client exporting by hand: every column Baker reads, and two example rows. */\nexport const CRM_SHEET_TEMPLATE = sheetTemplate(CRM_SHEET_COLUMNS.deals);\n\n/**\n * A company list to fill in: a CRM's accounts, or simply the companies the\n * client sells to. The id is optional — a company without one is known by its\n * website, so a deals sheet naming the same website lands on it.\n */\nexport const CRM_COMPANY_SHEET_TEMPLATE = sheetTemplate(CRM_SHEET_COLUMNS.companies);\n\nexport interface CrmSheet {\n kind: CrmSheetKind;\n batch: { companies?: Array<Record<string, string>>; deals?: Array<Record<string, string>> };\n /** Columns the sheet has that Baker does not take — left behind, never sent. */\n ignoredColumns: string[];\n}\n\nconst DATE_FIELDS = new Set([\"createdAt\", \"closedAt\"]);\nconst SLASHED_DAY = /^(\\d{1,2})[/.](\\d{1,2})[/.](\\d{4})$/;\n/** Google Sheets' and Excel's day count starts here: 1 is 31 December 1899. */\nconst SHEET_EPOCH_MS = Date.UTC(1899, 11, 30);\nconst DAY_MS = 86_400_000;\n\n/** How a column writes `12/03/2026`: told by any day past 12 in it; null while every one could be either. */\nfunction slashOrder(cells: readonly string[]): \"dmy\" | \"mdy\" | null {\n for (const cell of cells) {\n const parts = SLASHED_DAY.exec(cell);\n if (!parts) continue;\n if (Number(parts[1]) > 12) return \"dmy\";\n if (Number(parts[2]) > 12) return \"mdy\";\n }\n return null;\n}\n\n/**\n * A spreadsheet's day as the contract takes it: a Sheets or Excel day number\n * (46096, what a date cell holds) or `15/03/2026` / `03/15/2026`, read the way\n * the rest of its column shows. A column whose every day could be either is\n * left as written, and the judge asks for YYYY-MM-DD.\n */\nfunction sheetDate(cell: string, order: \"dmy\" | \"mdy\" | null): string {\n if (/^\\d{5}(\\.\\d+)?$/.test(cell)) {\n return new Date(SHEET_EPOCH_MS + Math.round(Number(cell) * DAY_MS)).toISOString().slice(0, 10);\n }\n const parts = SLASHED_DAY.exec(cell);\n if (!parts || order === null) return cell;\n const [, first = \"\", second = \"\", year] = parts;\n const [day, month] = order === \"dmy\" ? [first, second] : [second, first];\n return `${year}-${month.padStart(2, \"0\")}-${day.padStart(2, \"0\")}`;\n}\n\nfunction sheetCell(field: string, cell: string, order: \"dmy\" | \"mdy\" | null): string {\n if (field === \"amount\") return sheetAmount(cell);\n if (field === \"status\") return cell.toLowerCase();\n if (DATE_FIELDS.has(field)) return sheetDate(cell, order);\n return cell;\n}\n\nfunction sheetRecords(\n rows: ReadonlyArray<Record<string, string>>,\n columns: Readonly<Record<string, string>>,\n): Array<Record<string, string>> {\n const cells = (field: string) =>\n rows.flatMap((row) =>\n Object.entries(row)\n .filter(([column]) => columns[column] === field)\n .map(([, cell]) => String(cell ?? \"\").trim()),\n );\n const order = slashOrder([...DATE_FIELDS].flatMap(cells));\n return rows.map((row) => {\n const record: Record<string, string> = {};\n for (const [column, raw] of Object.entries(row)) {\n const field = columns[column];\n const cell = String(raw ?? \"\").trim();\n if (field === undefined || cell === \"\" || record[field] !== undefined) continue;\n record[field] = sheetCell(field, cell, order);\n }\n return record;\n });\n}\n\n/** Every header a sheet's rows carry, in order. */\nexport function sheetHeaders(rows: ReadonlyArray<Record<string, string>>): string[] {\n return [...new Set(rows.flatMap((row) => Object.keys(row)))];\n}\n\n/** Cells shown beside a header when what it holds is asked: the first few different ones, which stay put as rows are added. */\nconst SAMPLES_PER_COLUMN = 3;\n\n/** Each column with a few of its cells, so a header in any wording can be read by what it holds. */\nexport function sheetColumnSamples(\n rows: ReadonlyArray<Record<string, string>>,\n): Array<{ header: string; samples: string[] }> {\n return sheetHeaders(rows).map((header) => {\n const samples: string[] = [];\n for (const row of rows) {\n const cell = String(row[header] ?? \"\").trim();\n if (cell !== \"\" && !samples.includes(cell)) samples.push(cell);\n if (samples.length === SAMPLES_PER_COLUMN) break;\n }\n return { header, samples };\n });\n}\n\n/**\n * A column's meaning, in a deal's fields — the words any sheet's columns are\n * read in, a company list's included: a company list's columns are the deal's\n * company fields (`companyDomain` is its `domain`).\n */\nexport const CRM_COLUMN_FIELDS = [\n \"id\",\n \"name\",\n \"companyId\",\n \"companyName\",\n \"companyDomain\",\n \"companyLinkedinPage\",\n \"amount\",\n \"currency\",\n \"pipeline\",\n \"stage\",\n \"status\",\n \"createdAt\",\n \"closedAt\",\n] as const satisfies readonly (keyof z.infer<typeof dealFields>)[];\nexport type CrmColumnField = (typeof CRM_COLUMN_FIELDS)[number];\nexport type CrmCompanyField = Exclude<keyof z.infer<typeof companyFields>, \"deleted\">;\n\n/** What a sheet holds and the field each column fills; a column not in `columns` is left behind. */\nexport interface CrmColumnReading {\n kind: CrmSheetKind;\n /** Header → the field of `kind`'s record it fills. */\n columns: Readonly<Record<string, string>>;\n}\n\n/** A company's field as a deal names it. */\nconst COMPANY_AS_DEAL: Readonly<Record<CrmCompanyField, CrmColumnField>> = {\n id: \"companyId\",\n name: \"companyName\",\n domain: \"companyDomain\",\n linkedinPage: \"companyLinkedinPage\",\n};\nconst COMPANY_FIELD: Partial<Record<CrmColumnField, CrmCompanyField>> = {\n companyId: \"id\",\n companyName: \"name\",\n companyDomain: \"domain\",\n companyLinkedinPage: \"linkedinPage\",\n};\n\n/** Fields only a deal has: a sheet with any of them holds deals. A created date does not decide it — companies have one too. */\nconst DEAL_ONLY: ReadonlySet<CrmColumnField> = new Set([\n \"id\",\n \"name\",\n \"amount\",\n \"pipeline\",\n \"stage\",\n \"status\",\n \"closedAt\",\n]);\n\n/** Baker's own names for a column, compared without case, spaces or punctuation — but with every letter, in any script. */\nconst headerKey = (header: string) => header.toLowerCase().replace(/[^\\p{L}\\p{N}]/gu, \"\");\n\n/** `id` and `name` are both records' own fields, so a column called just that is the deal's or the company's by what the sheet holds. */\nconst SHARED_NAMES: ReadonlySet<string> = new Set([\"id\", \"name\"]);\nconst isSharedName = (header: string) => SHARED_NAMES.has(headerKey(header));\n\n/**\n * The headers that are Baker's own contract strings — a template's header\n * (\"Deal ID\", \"Created date\") or a field's name (\"createdAt\", \"domain\") — and\n * what they mean. Not a list of the names CRMs give columns: every other\n * header is read by what it says and holds (`mapCrmColumns` in the backend).\n */\nconst EXACT: ReadonlyMap<string, CrmColumnField> = new Map<string, CrmColumnField>([\n ...CRM_COLUMN_FIELDS.map((field): [string, CrmColumnField] => [headerKey(field), field]),\n [headerKey(\"domain\"), \"companyDomain\"],\n [headerKey(\"linkedinPage\"), \"companyLinkedinPage\"],\n ...CRM_SHEET_COLUMNS.deals.map((column): [string, CrmColumnField] => [headerKey(column.header), column.field]),\n ...CRM_SHEET_COLUMNS.companies.map((column): [string, CrmColumnField] => [\n headerKey(column.header),\n COMPANY_AS_DEAL[column.field],\n ]),\n]);\n\n/** The headers that are Baker's own names, and the field each means; every other header is absent. */\nexport function exactCrmColumns(headers: readonly string[]): Record<string, CrmColumnField> {\n const meanings: Record<string, CrmColumnField> = {};\n for (const header of headers) {\n const field = EXACT.get(headerKey(header));\n if (field !== undefined) meanings[header] = field;\n }\n return meanings;\n}\n\n/**\n * Deals or companies, and each column's field in that record, from what each\n * column means: deals when any column is a field only a deal has, or as\n * `kind` says. A meaning the record has no field for (a deal's amount in a\n * company list) leaves its column behind.\n */\nexport function crmColumnReading(\n meanings: Readonly<Record<string, CrmColumnField>>,\n kind?: CrmSheetKind,\n): CrmColumnReading {\n const entries = Object.entries(meanings);\n const read =\n kind ?? (entries.some(([header, field]) => DEAL_ONLY.has(field) && !isSharedName(header)) ? \"deals\" : \"companies\");\n const columns: Record<string, string> = {};\n for (const [header, field] of entries) {\n const target = read === \"deals\" ? field : isSharedName(header) ? field : COMPANY_FIELD[field];\n if (target !== undefined) columns[header] = target;\n }\n return { kind: read, columns };\n}\n\n/**\n * A spreadsheet from any CRM — a deals export or a company list — as a batch\n * the judge reads, each column filling the field `reading` gives it. Without\n * one, or with only a kind, only Baker's own headers are read. Every other\n * column is left behind, so a sheet with owners' emails in it sends no email.\n */\nexport function crmBatchFromSheet(\n rows: ReadonlyArray<Record<string, string>>,\n reading?: CrmColumnReading | CrmSheetKind,\n): CrmSheet {\n const headers = sheetHeaders(rows);\n const { kind, columns } = typeof reading === \"object\" ? reading : crmColumnReading(exactCrmColumns(headers), reading);\n const records = sheetRecords(rows, columns);\n return {\n kind,\n batch: kind === \"deals\" ? { deals: records } : { companies: records },\n ignoredColumns: headers.filter((header) => columns[header] === undefined),\n };\n}\n\n// ---------------------------------------------------------------------------\n// The wire: where a client's system sends, and what it hears back\n// ---------------------------------------------------------------------------\n\nexport const CRM_PUSH_PATH = \"/v1/accounts/crm\";\n\n/** Companies and deals together, per request. */\nexport const CRM_PUSH_BATCH_MAX = 500;\n\n/** The address to show a developer: the branded host when there is one, the Convex site otherwise. */\nexport function crmPushUrl(brandedUrl: string | undefined, convexSiteUrl: string): string {\n return `${(brandedUrl || convexSiteUrl).replace(/\\/$/, \"\")}${CRM_PUSH_PATH}`;\n}\n\n/**\n * The body's structure only; every record is judged on its own by\n * `judgeCrmBatch`, so one bad row never takes the batch down.\n */\nexport const crmPushRequestSchema = z\n .strictObject({\n companies: z.array(z.unknown()).optional(),\n deals: z.array(z.unknown()).optional(),\n })\n .refine((body) => (body.companies?.length ?? 0) + (body.deals?.length ?? 0) > 0, {\n message: \"send at least one company or deal\",\n })\n .refine((body) => (body.companies?.length ?? 0) + (body.deals?.length ?? 0) <= CRM_PUSH_BATCH_MAX, {\n message: `at most ${CRM_PUSH_BATCH_MAX} companies and deals per request — split the batch`,\n });\nexport type CrmPushRequest = z.infer<typeof crmPushRequestSchema>;\n\nexport const crmRejectionSchema = z.object({\n kind: z.enum([\"company\", \"deal\"]),\n index: z.number().int().nonnegative(),\n id: z.string(),\n code: z.enum(CRM_REJECTION_CODES),\n message: z.string(),\n});\n\nexport const crmPushResponseSchema = z.object({\n /** Echoed from `X-Baker-Mode`: a `test` request is judged in full and stores nothing. */\n mode: z.enum(INGEST_MODES),\n received: z.object({ companies: z.number().int(), deals: z.number().int() }),\n /** Passed the checks: stored in a live send, only judged in a test. */\n accepted: z.object({ companies: z.number().int(), deals: z.number().int() }),\n deleted: z.object({ companies: z.number().int(), deals: z.number().int() }),\n rejected: z.array(crmRejectionSchema),\n});\nexport type CrmPushResponse = z.infer<typeof crmPushResponseSchema>;\n\n/** What a sent CRM holds now, per pipeline and stage — what the setup shows and won/lost is chosen from. */\nexport const crmContentsSchema = z.object({\n companies: z.number().int(),\n deals: z.number().int(),\n stages: z.array(\n z.object({\n pipeline: z.string(),\n stage: z.string(),\n deals: z.number().int(),\n /** Sent as `status: won`. */\n won: z.number().int(),\n /** Sent as `status: lost`. */\n lost: z.number().int(),\n }),\n ),\n});\nexport type CrmContents = z.infer<typeof crmContentsSchema>;\n\n/** How a send arrived: their system posting, a person's upload, or a linked Google Sheet Baker read. */\nexport const CRM_SEND_VIAS = [\"api\", \"upload\", \"sheet\"] as const;\nexport type CrmSendVia = (typeof CRM_SEND_VIAS)[number];\n\nexport const crmPushSummarySchema = z.object({\n at: z.number(),\n via: z.enum(CRM_SEND_VIAS),\n companies: z.number().int(),\n deals: z.number().int(),\n deleted: z.number().int(),\n rejected: z.number().int(),\n samples: z.array(\n z.object({ kind: z.enum([\"company\", \"deal\"]), id: z.string(), code: z.string(), message: z.string() }),\n ),\n});\n\n/** A linked sheet's address in Google Sheets. */\nexport const spreadsheetUrl = (spreadsheetId: string) =>\n `https://docs.google.com/spreadsheets/d/${encodeURIComponent(spreadsheetId)}/edit`;\n\n/**\n * A Google Sheet the client linked: Baker reads it again every night and when\n * asked, and it is the whole truth for what it brought — a row gone from the\n * sheet is gone from Baker.\n */\nexport const crmSheetLinkSchema = z.object({\n id: z.string(),\n spreadsheetName: z.string(),\n /** Where the sheet opens — for a person, or a scenario that writes its rows. */\n url: z.string().optional(),\n tab: z.string(),\n kind: z.enum([\"deals\", \"companies\"]),\n lastRead: z\n .object({\n at: z.number(),\n ok: z.boolean(),\n companies: z.number().int(),\n deals: z.number().int(),\n /** Records the sheet no longer has, removed from Baker. */\n removed: z.number().int(),\n rejected: z.number().int(),\n /** Why the read failed or what was held back, in words. */\n message: z.string().optional(),\n })\n .nullable(),\n});\nexport type CrmSheetLink = z.infer<typeof crmSheetLinkSchema>;\n\n/** Linked sheets per company; each read is one Google request and a store write. */\nexport const CRM_SHEET_LINKS_MAX = 5;\n\n/** `baker accounts crm status`: where deals come from, what arrived last, what the store holds. */\nexport const accountsCrmStatusResponseSchema = z.object({\n ok: z.literal(true),\n data: z.object({\n /**\n * Always true, for CLIs from when Account insights was a per-company\n * switch: they read its absence as \"switched off\". Drop it once no\n * Runtime runs one of them.\n */\n enabled: z.literal(true).optional(),\n /** `hubspot` (Baker reads it), `api` (the client sends it), or null before anyone chose. */\n source: z.enum([\"hubspot\", \"api\"]).nullable(),\n /** Where a client's system sends. */\n url: z.string(),\n lastLive: crmPushSummarySchema.nullable(),\n lastTest: crmPushSummarySchema.nullable(),\n /** Google Sheets Baker reads every night, with how the last read went. */\n sheets: z.array(crmSheetLinkSchema),\n /** What the sent CRM holds; null unless the source is `api`. */\n contents: crmContentsSchema.nullable(),\n }),\n});\nexport type AccountsCrmStatusResponse = z.infer<typeof accountsCrmStatusResponseSchema>;\n\n/** `baker accounts crm sheet`: the deals sheet for LinkedIn's Account insights, made in the client's Google Drive. */\nexport const accountsCrmSheetRequestSchema = z.object({\n /** The Google Drive connection to make it with, when the company has more than one. */\n account: z.string().optional(),\n});\nexport type AccountsCrmSheetRequest = z.infer<typeof accountsCrmSheetRequestSchema>;\n\nexport const accountsCrmSheetResponseSchema = z.object({\n ok: z.literal(true),\n data: z.object({\n /** False when the company already had the sheet: it is handed back, never made twice. */\n created: z.boolean(),\n spreadsheetName: z.string(),\n url: z.string(),\n tabs: z.array(z.string()),\n }),\n});\nexport type AccountsCrmSheetResponse = z.infer<typeof accountsCrmSheetResponseSchema>;\n\n/** What the curl sends: one company, one deal of it — the shortest body that reads as a real one. */\nexport const CRM_PUSH_EXAMPLE = {\n companies: [{ id: \"acct-001\", name: \"Acme Inc\", domain: \"acme.com\", linkedinPage: \"acme-inc\" }],\n deals: [\n {\n id: \"deal-001\",\n companyId: \"acct-001\",\n name: \"Acme — annual plan\",\n amount: 24000,\n currency: \"EUR\",\n stage: \"Proposal\",\n status: \"open\",\n createdAt: \"2026-06-15\",\n },\n ],\n} as const;\n\nconst MODE_HINT = `\\n# Check it first: add -H '${INGEST_MODE_HEADER}: test' — judged the same way, nothing stored.`;\n\nexport function crmPushCurl(url: string, apiKey: string): string {\n return (\n [\n `curl -X POST ${url} \\\\`,\n ` -H 'Authorization: Bearer ${apiKey}' \\\\`,\n ` -H 'Content-Type: application/json' \\\\`,\n ` -d '${JSON.stringify(CRM_PUSH_EXAMPLE)}'`,\n ].join(\"\\n\") + MODE_HINT\n );\n}\n\nconst PEOPLE_NOTE = \"Anything naming a person — a contact, an owner, an email or phone — is refused, never stored.\";\n\nexport const CRM_COMPANY_FIELDS: readonly FieldSpec[] = [\n {\n name: \"id\",\n need: \"conditional\",\n takes: \"Your CRM's id for the company (1–128 characters).\",\n note: \"Without one, Baker knows the company by its domain (or LinkedIn page) — fine for a plain list of target companies.\",\n },\n { name: \"name\", need: \"optional\", takes: \"The company's name, as the Accounts screen shows it.\" },\n {\n name: \"domain\",\n need: \"optional\",\n takes: \"Its website — acme.com or https://www.acme.com both work.\",\n note: \"The main way a company is matched to the LinkedIn companies your ads reached. Send it whenever you have it.\",\n },\n {\n name: \"linkedinPage\",\n need: \"optional\",\n takes: \"Its LinkedIn page: the URL or the part after /company/.\",\n note: \"The surest match of all when the website is shared or missing.\",\n },\n { name: \"deleted\", need: \"optional\", takes: \"true to remove a company sent before. Only the id is needed.\" },\n];\n\nexport const CRM_DEAL_FIELDS: readonly FieldSpec[] = [\n {\n name: \"id\",\n need: \"required\",\n takes: \"Your CRM's id for the deal (1–128 characters). Sending it again updates it.\",\n },\n {\n name: \"createdAt\",\n need: \"required\",\n takes: \"The day it was created: 2026-06-15 or an ISO 8601 time.\",\n note: \"What dates it as pipeline.\",\n },\n {\n name: \"companyId\",\n need: \"conditional\",\n takes: \"The id of its company, as sent in companies.\",\n note: \"Or send companyDomain (and companyName) instead and skip companies altogether. Use one way consistently. A deal with neither is kept but cannot be influenced.\",\n },\n { name: \"companyDomain\", need: \"conditional\", takes: \"Its company's website, when you send no companies.\" },\n { name: \"companyName\", need: \"optional\", takes: \"Its company's name, with companyDomain.\" },\n {\n name: \"companyLinkedinPage\",\n need: \"optional\",\n takes: \"Its company's LinkedIn page, with companyDomain: the surest match.\",\n },\n { name: \"name\", need: \"optional\", takes: \"The deal's name.\" },\n {\n name: \"amount\",\n need: \"optional\",\n takes: 'Its value: 24000 or \"24000.00\". Left out, the deal counts but adds no value.',\n },\n { name: \"currency\", need: \"optional\", takes: \"Three letters: EUR, USD, GBP…\" },\n { name: \"pipeline\", need: \"optional\", takes: \"Its pipeline's name or id, if you use several.\" },\n { name: \"stage\", need: \"optional\", takes: \"Its stage's name or id.\" },\n {\n name: \"status\",\n need: \"optional\",\n takes: \"open, won or lost.\",\n note: \"Send it and Baker needs nothing else to tell won from lost. Without it, choose which stages mean won and lost in Measure → Accounts.\",\n },\n {\n name: \"closedAt\",\n need: \"conditional\",\n takes: \"The day it was won or lost.\",\n note: \"Needed when status is won or lost: it dates the revenue.\",\n },\n { name: \"deleted\", need: \"optional\", takes: \"true to remove a deal sent before. Only the id is needed.\" },\n];\n\nexport const CRM_RESPONSE_FIELDS: readonly FieldSpec[] = [\n { name: \"mode\", need: \"required\", takes: \"live or test, echoed from X-Baker-Mode.\" },\n { name: \"received\", need: \"required\", takes: \"How many companies and deals arrived.\" },\n { name: \"accepted\", need: \"required\", takes: \"How many passed the checks — stored, unless it was a test.\" },\n { name: \"deleted\", need: \"required\", takes: \"How many removals were accepted.\" },\n {\n name: \"rejected\",\n need: \"required\",\n takes: \"Each refused record: kind, index, id, code and a message saying what to fix.\",\n note: `Codes: ${CRM_REJECTION_CODES.join(\", \")}. ${PEOPLE_NOTE}`,\n },\n];\n\nfunction fieldTable(fields: readonly FieldSpec[]): string {\n return [\n \"| Field | Need | Takes |\",\n \"| --- | --- | --- |\",\n ...fields.map(\n (field) => `| \\`${field.name}\\` | ${field.need} | ${field.takes}${field.note ? ` ${field.note}` : \"\"} |`,\n ),\n ].join(\"\\n\");\n}\n\n/**\n * The whole contract as Markdown, for a developer or their coding assistant —\n * the same tables the dashboard draws, so the two cannot drift.\n */\nexport function crmPushBrief(url: string): string {\n return `# Sending your CRM to Baker\n\nBaker compares the companies your LinkedIn ads reached with your deals. When Baker cannot read\nyour CRM itself, your system sends the companies and deals here — only what you choose to send.\n\n\\`POST ${url}\\` with \\`Authorization: Bearer <key>\\` and \\`Content-Type: application/json\\`.\n\n1. **Use a key that can only send CRM data.** Create it in Baker → Measure → Accounts → Deal\n settings (or Settings → API keys, \"Sending CRM data only\"). Never put it in source or a chat;\n read it from an environment variable.\n2. **Send \\`${INGEST_MODE_HEADER}: test\\` while you build.** It is judged exactly the same way and\n stores nothing.\n3. **Send everything once, then what changes.** Sending a record again with the same \\`id\\`\n updates it; \\`\"deleted\": true\\` removes it. Up to ${CRM_PUSH_BATCH_MAX} records per request; a\n nightly job of your deals changed since the last run is plenty.\n4. **Companies and deals only.** ${PEOPLE_NOTE}\n\nBody: \\`{ \"companies\": [ … ], \"deals\": [ … ] }\\` — either list may be left out.\n\n## Companies\n\n${fieldTable(CRM_COMPANY_FIELDS)}\n\n## Deals\n\n${fieldTable(CRM_DEAL_FIELDS)}\n\n## The answer\n\nA \\`200\\` with \\`{ \"ok\": true, \"data\": { … } }\\`. One bad record never refuses the others: read\n\\`rejected\\`.\n\n${fieldTable(CRM_RESPONSE_FIELDS)}\n\n## Example\n\n\\`\\`\\`json\n${JSON.stringify(CRM_PUSH_EXAMPLE, null, 2)}\n\\`\\`\\`\n`;\n}\n"],"mappings":"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","names":["text"]}
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ACCOUNTS_NO_SETTINGS_MESSAGE,
|
|
3
|
+
accountDealStatus,
|
|
4
|
+
influenceParams
|
|
5
|
+
} from "./chunk-X7NRAGJ5.js";
|
|
6
|
+
import {
|
|
7
|
+
toCsvRow
|
|
8
|
+
} from "./chunk-VJUVTMHY.js";
|
|
9
|
+
|
|
10
|
+
// src/commands/accounts/report.ts
|
|
11
|
+
function accountsRefusal(code, message) {
|
|
12
|
+
if (code === "CONFLICT" && message.includes(ACCOUNTS_NO_SETTINGS_MESSAGE)) {
|
|
13
|
+
return {
|
|
14
|
+
code: "ACCOUNTS_NOT_SET_UP",
|
|
15
|
+
fix: {
|
|
16
|
+
action: "ask_user",
|
|
17
|
+
explanation: "The user sets up where the deals are in Measure \u2192 Accounts first: HubSpot (then its pipelines and won/lost stages), or Another CRM, whose deals they send by spreadsheet or from their system (`baker accounts crm status`). Only the user can say which stages mean won and lost; do not guess them. Until then `baker accounts engagement` and `baker accounts warm` still work \u2014 they need no deals."
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
var FLAG_OF_FIELD = {
|
|
24
|
+
lastMonths: "--last-months",
|
|
25
|
+
start: "--start",
|
|
26
|
+
end: "--end",
|
|
27
|
+
campaignId: "--campaign-id",
|
|
28
|
+
limit: "--limit",
|
|
29
|
+
basis: "--basis",
|
|
30
|
+
model: "--model",
|
|
31
|
+
threshold: "--threshold",
|
|
32
|
+
orgId: "company",
|
|
33
|
+
domain: "company",
|
|
34
|
+
targets: "--targets",
|
|
35
|
+
since: "--since"
|
|
36
|
+
};
|
|
37
|
+
function invalidArgsMessage(issues) {
|
|
38
|
+
return issues.map((issue) => {
|
|
39
|
+
const field = issue.path.map(String).join(".");
|
|
40
|
+
return `${FLAG_OF_FIELD[field] ?? (field || "args")}: ${issue.message}`;
|
|
41
|
+
}).join("; ");
|
|
42
|
+
}
|
|
43
|
+
function money(value) {
|
|
44
|
+
const parts = Object.entries(value).map(
|
|
45
|
+
([currency, amount]) => `${Math.round(amount).toLocaleString("en")} ${currency}`
|
|
46
|
+
);
|
|
47
|
+
return parts.length > 0 ? parts.join(" + ") : "no amount";
|
|
48
|
+
}
|
|
49
|
+
var SETUP_FIX = {
|
|
50
|
+
pipelines_not_chosen: "choose the HubSpot pipelines (customers and open deals are not left out yet)",
|
|
51
|
+
deals_not_received: "send the deals from the company's CRM (none has arrived, so warm-account alerts are paused and no deal counts as influenced)",
|
|
52
|
+
sync_failing: "reconnect the platform the last nightly sync failed on",
|
|
53
|
+
source_disconnected: "reconnect LinkedIn Ads or HubSpot in Integrations",
|
|
54
|
+
stale: "check why the numbers have not updated for two days"
|
|
55
|
+
};
|
|
56
|
+
function setupHint(issues) {
|
|
57
|
+
if (!issues || issues.length === 0) return [];
|
|
58
|
+
const fixes = issues.map((issue) => SETUP_FIX[issue]).join("; ");
|
|
59
|
+
return [
|
|
60
|
+
`Account insights setup needs an admin: ${fixes}. Until then warm and influenced are less accurate \u2014 say so once when you report them, and never try to fix the setup yourself.`
|
|
61
|
+
];
|
|
62
|
+
}
|
|
63
|
+
function influencedHints(data) {
|
|
64
|
+
const hints = [];
|
|
65
|
+
const { summary } = data;
|
|
66
|
+
if (summary.lowConfidenceDeals > 0) {
|
|
67
|
+
const deals = summary.lowConfidenceDeals === 1 ? "deal" : "deals";
|
|
68
|
+
const look = summary.lowConfidenceDeals === 1 ? "looks" : "look";
|
|
69
|
+
hints.push(
|
|
70
|
+
`${summary.lowConfidenceDeals} more ${deals} (${money(summary.lowConfidenceValue)}) ${look} influenced through a company match that is only a guess (a subdomain or a name). They are not counted in the numbers until someone confirms the match in Measure \u2192 Accounts; they are listed under lowConfidence.`
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
const valued = Object.keys(summary.influencedValue).length > 0;
|
|
74
|
+
const spent = Object.values(summary.spend).some((amount) => amount > 0);
|
|
75
|
+
if (summary.valuePerSpend === null && valued && spent) {
|
|
76
|
+
hints.push(
|
|
77
|
+
`valuePerSpend is null because the influenced value (${money(summary.influencedValue)}) and the LinkedIn spend (${money(summary.spend)}) are not in one single currency \u2014 amounts in different currencies are never converted or added. Report them side by side.`
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
return hints;
|
|
81
|
+
}
|
|
82
|
+
function influencedTableRows(data, full) {
|
|
83
|
+
return full ? data.deals : [...data.deals, ...data.lowConfidence];
|
|
84
|
+
}
|
|
85
|
+
function engagementHints(data, request) {
|
|
86
|
+
if (data.companies.length === 0) {
|
|
87
|
+
return [
|
|
88
|
+
`No company the LinkedIn ads reached shows up for ${data.window.start} to ${data.window.end}. The nightly sync may not have run since the campaigns started delivering, or LinkedIn left the companies out (fewer than 3 events in a month). Try a longer period (--last-months 12), or read the ad account live with \`baker ads linkedin companies\`.`
|
|
89
|
+
];
|
|
90
|
+
}
|
|
91
|
+
const page = data.pageInfo;
|
|
92
|
+
if (page?.hasMore) {
|
|
93
|
+
const first = (page.page - 1) * page.pageSize + 1;
|
|
94
|
+
const last = first + data.companies.length - 1;
|
|
95
|
+
return [
|
|
96
|
+
`Companies ${first}-${last} of ${page.total.toLocaleString("en")} shown. Read the next ones with --page ${page.page + 1} --limit ${page.pageSize}.`
|
|
97
|
+
];
|
|
98
|
+
}
|
|
99
|
+
return data.truncated ? [`More companies were reached than --limit ${request.limit}; raise it to see the tail.`] : [];
|
|
100
|
+
}
|
|
101
|
+
var ENGAGEMENT_TABLE_FIELDS = [
|
|
102
|
+
"orgId",
|
|
103
|
+
"name",
|
|
104
|
+
"domain",
|
|
105
|
+
"impressions",
|
|
106
|
+
"clicks",
|
|
107
|
+
"engagements",
|
|
108
|
+
"videoViews",
|
|
109
|
+
"estimatedSpend",
|
|
110
|
+
"spendCurrency",
|
|
111
|
+
"costLocal",
|
|
112
|
+
"currency",
|
|
113
|
+
"monthsActive",
|
|
114
|
+
"lastMonth",
|
|
115
|
+
"previousImpressions",
|
|
116
|
+
"previousClicks",
|
|
117
|
+
"previousEngagements",
|
|
118
|
+
"flag",
|
|
119
|
+
"crmCompanyId",
|
|
120
|
+
"matchConfidence",
|
|
121
|
+
"dealStatus",
|
|
122
|
+
"hasOpenDeal",
|
|
123
|
+
"hasWonDeal",
|
|
124
|
+
"hasLostDeal",
|
|
125
|
+
"lastLostAt",
|
|
126
|
+
"websitePeople",
|
|
127
|
+
"websiteLeads",
|
|
128
|
+
"websiteVisits",
|
|
129
|
+
"websitePagesRead",
|
|
130
|
+
"websiteLastVisit",
|
|
131
|
+
"isTarget",
|
|
132
|
+
"tier",
|
|
133
|
+
"alertedAt"
|
|
134
|
+
];
|
|
135
|
+
function engagementTableRows(rows) {
|
|
136
|
+
return withDealStatus(rows).map(({ previous, website, visitorCompany, estimatedSpend, ...row }) => ({
|
|
137
|
+
...row,
|
|
138
|
+
estimatedSpend: estimatedSpend?.amount ?? 0,
|
|
139
|
+
spendCurrency: estimatedSpend?.currency ?? "",
|
|
140
|
+
previousImpressions: previous.impressions,
|
|
141
|
+
previousClicks: previous.clicks,
|
|
142
|
+
previousEngagements: previous.engagements,
|
|
143
|
+
websitePeople: website?.people ?? 0,
|
|
144
|
+
websiteLeads: website?.leads ?? 0,
|
|
145
|
+
websiteVisits: visitorCompany?.visits ?? 0,
|
|
146
|
+
websitePagesRead: visitorCompany?.pages ?? 0,
|
|
147
|
+
websiteLastVisit: visitorCompany?.lastSeen ?? null
|
|
148
|
+
}));
|
|
149
|
+
}
|
|
150
|
+
var MODEL_OF_METRIC = {
|
|
151
|
+
engagements: "engagement",
|
|
152
|
+
impressions: "awareness",
|
|
153
|
+
clicks: "intent"
|
|
154
|
+
};
|
|
155
|
+
function warmMinimum(rule, override) {
|
|
156
|
+
const saved = { model: { kind: rule ? MODEL_OF_METRIC[rule.metric] : "engagement", threshold: rule?.threshold } };
|
|
157
|
+
const read = influenceParams(saved, { model: override.model, threshold: override.threshold });
|
|
158
|
+
const value = override.min ?? read.threshold;
|
|
159
|
+
return value > 0 ? { metric: read.metric, value } : void 0;
|
|
160
|
+
}
|
|
161
|
+
function warmHints(read, warm, minimum) {
|
|
162
|
+
const hints = [];
|
|
163
|
+
if (read.truncated) {
|
|
164
|
+
hints.push(
|
|
165
|
+
`The ads reached more companies than one read returns (${read.companies.length.toLocaleString("en")}, the most engaged first), so warm companies with little engagement may be missing. Read a shorter period with --last-months 1 to see them.`
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
if (warm.length === 0 && read.companies.length > 0 && minimum !== void 0) {
|
|
169
|
+
hints.push(
|
|
170
|
+
`No company both warmed up and reached ${minimum.value}+ ${minimum.metric} in the period. Try a longer period with --last-months, or a lower bar with --min (--min 0 drops it).`
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
if (warm.some((row) => row.name === "")) {
|
|
174
|
+
hints.push("Some companies have no name yet \u2014 the nightly sync looks them up; the organizationUrn still matches.");
|
|
175
|
+
}
|
|
176
|
+
if (warm.length > 0) {
|
|
177
|
+
hints.push(
|
|
178
|
+
'To advertise to them: `baker accounts warm --output csv > warm.csv`, then `baker ads linkedin audiences create --name "Warm accounts" --type company-list --list-file warm.csv` (staged until publish).'
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
return hints;
|
|
182
|
+
}
|
|
183
|
+
var WARM_CSV_COLUMNS = ["companyName", "domain", "organizationUrn"];
|
|
184
|
+
function warmAccountsCsv(rows) {
|
|
185
|
+
const lines = [toCsvRow(WARM_CSV_COLUMNS)];
|
|
186
|
+
for (const row of rows) {
|
|
187
|
+
const name = row.name.replace(/\s*[\r\n]+\s*/g, " ");
|
|
188
|
+
lines.push(toCsvRow([name, row.domain, `urn:li:organization:${row.orgId}`]));
|
|
189
|
+
}
|
|
190
|
+
return `${lines.join("\n")}
|
|
191
|
+
`;
|
|
192
|
+
}
|
|
193
|
+
var plural = (count, one, many) => `${count} ${count === 1 ? one : many}`;
|
|
194
|
+
function reachText(counts2) {
|
|
195
|
+
return `${counts2.reached} of ${counts2.total} reached, ${counts2.engaged} engaged`;
|
|
196
|
+
}
|
|
197
|
+
function targetsHints(summary, unreadable) {
|
|
198
|
+
if (summary === void 0) {
|
|
199
|
+
return [
|
|
200
|
+
"This Baker server does not narrow reports to target accounts yet: the rows cover every company the ads reached."
|
|
201
|
+
];
|
|
202
|
+
}
|
|
203
|
+
const tiers = Object.entries(summary.byTier ?? {}).sort(([a], [b]) => a.localeCompare(b, "en", { numeric: true })).map(([tier, counts2]) => `tier ${tier}: ${reachText(counts2)}`);
|
|
204
|
+
const hints = [
|
|
205
|
+
`Target accounts: ${reachText(summary)}${tiers.length > 0 ? ` (${tiers.join("; ")})` : ""}. Rows and numbers cover the target accounts only.`
|
|
206
|
+
];
|
|
207
|
+
const missed = summary.notReached.length;
|
|
208
|
+
if (missed > 0) {
|
|
209
|
+
hints.push(
|
|
210
|
+
`${plural(missed, "target account was", "target accounts were")} never reached in the period (targets.notReached). Check ${missed === 1 ? "its domain is the website on its LinkedIn page" : "their domains are the websites on their LinkedIn pages"}, or advertise to ${missed === 1 ? "it" : "them"} with a company list.`
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
if (unreadable.length > 0) {
|
|
214
|
+
const listed = unreadable.map((entry) => `"${entry}"`).join(", ");
|
|
215
|
+
hints.push(
|
|
216
|
+
`Skipped ${plural(unreadable.length, "entry", "entries")} of the targets file that ${unreadable.length === 1 ? "is" : "are"} not a website: ${listed}.`
|
|
217
|
+
);
|
|
218
|
+
}
|
|
219
|
+
return hints;
|
|
220
|
+
}
|
|
221
|
+
var percent = (part, whole) => `${whole > 0 ? Math.round(part / whole * 100) : 0}%`;
|
|
222
|
+
var perCompany = (total, companies) => companies > 0 ? String(Math.round(total / companies * 10) / 10) : "0";
|
|
223
|
+
function comparisonHints(comparison) {
|
|
224
|
+
if (comparison === void 0) return [];
|
|
225
|
+
if ("companies" in comparison.targets && "companies" in comparison.others) {
|
|
226
|
+
const { targets: targets2, others: others2 } = comparison;
|
|
227
|
+
return [
|
|
228
|
+
`Targets vs everyone else: ${targets2.engaged} of ${targets2.companies} target accounts engaged (${percent(targets2.engaged, targets2.companies)}) against ${others2.engaged} of ${others2.companies} other companies (${percent(others2.engaged, others2.companies)}); ${perCompany(targets2.engagements, targets2.companies)} engagements per target, ${perCompany(others2.engagements, others2.companies)} per other company (\`comparison\`).`
|
|
229
|
+
];
|
|
230
|
+
}
|
|
231
|
+
const { targets, others } = comparison;
|
|
232
|
+
return [
|
|
233
|
+
`Targets vs everyone else: ${targets.influencedDeals} of ${targets.deals} target-account deals influenced (${money(targets.influencedValue)}) against ${others.influencedDeals} of ${others.deals} other deals (${money(others.influencedValue)}) (\`comparison\`).`
|
|
234
|
+
];
|
|
235
|
+
}
|
|
236
|
+
function withDealStatus(rows) {
|
|
237
|
+
return rows.map((row) => ({ ...row, dealStatus: accountDealStatus(row) }));
|
|
238
|
+
}
|
|
239
|
+
var counts = (row) => ({
|
|
240
|
+
month: row.month,
|
|
241
|
+
impressions: row.impressions,
|
|
242
|
+
clicks: row.clicks,
|
|
243
|
+
engagements: row.engagements
|
|
244
|
+
});
|
|
245
|
+
function unreachedHint(unreached, deals) {
|
|
246
|
+
if (unreached.length > 0) {
|
|
247
|
+
return `The LinkedIn ads have not reached LinkedIn company ${unreached.map((org) => org.orgId).join(", ")} in the months the nightly sync keeps (up to 24), so there is nothing to show. Check the id against \`baker accounts engagement\`, or try the company's website domain.`;
|
|
248
|
+
}
|
|
249
|
+
if (deals > 0) {
|
|
250
|
+
return `That company is in the CRM with ${deals === 1 ? "1 deal" : `${deals} deals`}, but the LinkedIn ads have not reached it in the months the nightly sync keeps, so none of its deals can count as influenced.`;
|
|
251
|
+
}
|
|
252
|
+
return "The ads have not reached that company, or it is named differently: try its LinkedIn id from `baker accounts engagement`.";
|
|
253
|
+
}
|
|
254
|
+
function companyView(data) {
|
|
255
|
+
const reachedOrgs = new Set(data.months.map((row) => row.orgId));
|
|
256
|
+
const orgs = data.orgs.filter((org) => reachedOrgs.has(org.orgId) || org.name !== "" || org.crmCompanyId !== null);
|
|
257
|
+
const months = data.months.filter((row) => row.campaignId === "").map((row) => ({ orgId: row.orgId, ...counts(row) }));
|
|
258
|
+
const byCampaign = [];
|
|
259
|
+
for (const row of data.months) {
|
|
260
|
+
if (row.campaignId === "") continue;
|
|
261
|
+
let entry = byCampaign.find((item) => item.orgId === row.orgId && item.campaignId === row.campaignId);
|
|
262
|
+
if (entry === void 0) {
|
|
263
|
+
entry = { orgId: row.orgId, campaignId: row.campaignId, campaignName: row.campaignName, months: [] };
|
|
264
|
+
byCampaign.push(entry);
|
|
265
|
+
}
|
|
266
|
+
entry.months.push(counts(row));
|
|
267
|
+
}
|
|
268
|
+
const hints = [];
|
|
269
|
+
const unreached = unreachedHint(
|
|
270
|
+
data.orgs.filter((org) => !orgs.includes(org)),
|
|
271
|
+
data.deals.length
|
|
272
|
+
);
|
|
273
|
+
if (orgs.length === 0) hints.push(unreached);
|
|
274
|
+
if (byCampaign.length > 0) {
|
|
275
|
+
hints.push(
|
|
276
|
+
"`months` are the company's totals. `byCampaign` splits the same numbers by campaign, and a company several campaigns reached shows up under each \u2014 never add byCampaign to the totals or to each other."
|
|
277
|
+
);
|
|
278
|
+
}
|
|
279
|
+
if (orgs.some((org) => org.matchConfidence === "low")) {
|
|
280
|
+
hints.push(
|
|
281
|
+
"The CRM match is only a guess (a subdomain or a name) until someone confirms it in Measure \u2192 Accounts."
|
|
282
|
+
);
|
|
283
|
+
}
|
|
284
|
+
if (data.rule !== void 0 && data.deals.length > 0) {
|
|
285
|
+
hints.push(
|
|
286
|
+
`\`influenced\` on each deal: ${data.rule.threshold}+ ${data.rule.metric} (\`touchValue\`) in the ${data.rule.lookbackMonths} months up to the month the deal was created (closed, for a won deal), counted from this company's months above.`
|
|
287
|
+
);
|
|
288
|
+
}
|
|
289
|
+
return { data: { orgs, months, byCampaign, deals: data.deals, ...data.rule ? { rule: data.rule } : {} }, hints };
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
export {
|
|
293
|
+
accountsRefusal,
|
|
294
|
+
invalidArgsMessage,
|
|
295
|
+
setupHint,
|
|
296
|
+
influencedHints,
|
|
297
|
+
influencedTableRows,
|
|
298
|
+
engagementHints,
|
|
299
|
+
ENGAGEMENT_TABLE_FIELDS,
|
|
300
|
+
engagementTableRows,
|
|
301
|
+
warmMinimum,
|
|
302
|
+
warmHints,
|
|
303
|
+
warmAccountsCsv,
|
|
304
|
+
targetsHints,
|
|
305
|
+
comparisonHints,
|
|
306
|
+
withDealStatus,
|
|
307
|
+
companyView
|
|
308
|
+
};
|
|
309
|
+
//# sourceMappingURL=chunk-IR2NRXHA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/accounts/report.ts"],"sourcesContent":["/**\n * The pure half of `baker accounts`: the warm-account list file, and what the\n * agent should take from a report that the rows alone don't say.\n */\n\nimport {\n ACCOUNTS_NO_SETTINGS_MESSAGE,\n type AccountCompanyMonth,\n type AccountDealRow,\n type AccountDealStatus,\n type AccountEngagementRow,\n type AccountsCompanyResponse,\n type AccountsEngagementResponse,\n type AccountsInfluencedResponse,\n type AccountsSetupIssue,\n accountDealStatus,\n type DealsComparison,\n type InfluenceMetric,\n type InfluenceModelKind,\n type InfluenceParams,\n type InfluenceRuleOverride,\n influenceParams,\n type MoneyByCurrency,\n type WarmAccountsOptions,\n} from \"@baker/api/accounts\";\nimport type { EngagementComparison, TargetsSummary } from \"@baker/api/accounts/targets\";\nimport { toCsvRow } from \"../ads/output.ts\";\n\nexport type AccountsRefusal = { code: \"ACCOUNTS_NOT_SET_UP\"; fix: { action: \"ask_user\"; explanation: string } };\n\n/**\n * The refusal the agent cannot clear, as the fix it acts on: not set up (only\n * the user can say which stages mean won). Matched on the backend's own\n * sentence (shared from `@baker/api/accounts`), because it is a CONFLICT.\n * Null for every other refusal.\n */\nexport function accountsRefusal(code: string, message: string): AccountsRefusal | null {\n if (code === \"CONFLICT\" && message.includes(ACCOUNTS_NO_SETTINGS_MESSAGE)) {\n return {\n code: \"ACCOUNTS_NOT_SET_UP\",\n fix: {\n action: \"ask_user\",\n explanation:\n \"The user sets up where the deals are in Measure → Accounts first: HubSpot (then its pipelines and won/lost stages), or Another CRM, whose deals they send by spreadsheet or from their system (`baker accounts crm status`). Only the user can say which stages mean won and lost; do not guess them. Until then `baker accounts engagement` and `baker accounts warm` still work — they need no deals.\",\n },\n };\n }\n return null;\n}\n\n/** Request fields as the flags that set them. */\nconst FLAG_OF_FIELD: Record<string, string> = {\n lastMonths: \"--last-months\",\n start: \"--start\",\n end: \"--end\",\n campaignId: \"--campaign-id\",\n limit: \"--limit\",\n basis: \"--basis\",\n model: \"--model\",\n threshold: \"--threshold\",\n orgId: \"company\",\n domain: \"company\",\n targets: \"--targets\",\n since: \"--since\",\n};\n\n/** A refused request in the agent's own words: which flag, and why. */\nexport function invalidArgsMessage(issues: ReadonlyArray<{ path: PropertyKey[]; message: string }>): string {\n return issues\n .map((issue) => {\n const field = issue.path.map(String).join(\".\");\n return `${FLAG_OF_FIELD[field] ?? (field || \"args\")}: ${issue.message}`;\n })\n .join(\"; \");\n}\n\nfunction money(value: MoneyByCurrency): string {\n const parts = Object.entries(value).map(\n ([currency, amount]) => `${Math.round(amount).toLocaleString(\"en\")} ${currency}`,\n );\n return parts.length > 0 ? parts.join(\" + \") : \"no amount\";\n}\n\n/** Each setup problem as the fix an admin makes in Measure → Accounts or Integrations. */\nconst SETUP_FIX: Record<AccountsSetupIssue, string> = {\n pipelines_not_chosen: \"choose the HubSpot pipelines (customers and open deals are not left out yet)\",\n deals_not_received:\n \"send the deals from the company's CRM (none has arrived, so warm-account alerts are paused and no deal counts as influenced)\",\n sync_failing: \"reconnect the platform the last nightly sync failed on\",\n source_disconnected: \"reconnect LinkedIn Ads or HubSpot in Integrations\",\n stale: \"check why the numbers have not updated for two days\",\n};\n\n/**\n * One hint when Account insights is not set up soundly: the admins already\n * got an email, so the agent says it once to the user and hedges the numbers.\n */\nexport function setupHint(issues: readonly AccountsSetupIssue[] | undefined): string[] {\n if (!issues || issues.length === 0) return [];\n const fixes = issues.map((issue) => SETUP_FIX[issue]).join(\"; \");\n return [\n `Account insights setup needs an admin: ${fixes}. Until then warm and influenced are less accurate — say so once when you report them, and never try to fix the setup yourself.`,\n ];\n}\n\n/** What the agent should take from an influenced report that the rows alone don't say. */\nexport function influencedHints(data: AccountsInfluencedResponse[\"data\"]): string[] {\n const hints: string[] = [];\n const { summary } = data;\n if (summary.lowConfidenceDeals > 0) {\n const deals = summary.lowConfidenceDeals === 1 ? \"deal\" : \"deals\";\n const look = summary.lowConfidenceDeals === 1 ? \"looks\" : \"look\";\n hints.push(\n `${summary.lowConfidenceDeals} more ${deals} (${money(summary.lowConfidenceValue)}) ${look} influenced through a company match that is only a guess (a subdomain or a name). They are not counted in the numbers until someone confirms the match in Measure → Accounts; they are listed under lowConfidence.`,\n );\n }\n const valued = Object.keys(summary.influencedValue).length > 0;\n const spent = Object.values(summary.spend).some((amount) => amount > 0);\n if (summary.valuePerSpend === null && valued && spent) {\n hints.push(\n `valuePerSpend is null because the influenced value (${money(summary.influencedValue)}) and the LinkedIn spend (${money(summary.spend)}) are not in one single currency — amounts in different currencies are never converted or added. Report them side by side.`,\n );\n }\n return hints;\n}\n\n/**\n * The deals a table output prints: the counted ones, then the unconfirmed. With\n * `--full` the backend already lists the unconfirmed among `deals`, so they are\n * not added twice — a total taken from the table would count them double.\n */\nexport function influencedTableRows(data: AccountsInfluencedResponse[\"data\"], full: boolean): AccountDealRow[] {\n return full ? data.deals : [...data.deals, ...data.lowConfidence];\n}\n\n/** What the agent should take from an engagement read that the rows alone don't say. */\nexport function engagementHints(data: AccountsEngagementResponse[\"data\"], request: { limit: number }): string[] {\n if (data.companies.length === 0) {\n return [\n `No company the LinkedIn ads reached shows up for ${data.window.start} to ${data.window.end}. The nightly sync may not have run since the campaigns started delivering, or LinkedIn left the companies out (fewer than 3 events in a month). Try a longer period (--last-months 12), or read the ad account live with \\`baker ads linkedin companies\\`.`,\n ];\n }\n const page = data.pageInfo;\n if (page?.hasMore) {\n const first = (page.page - 1) * page.pageSize + 1;\n const last = first + data.companies.length - 1;\n return [\n `Companies ${first}-${last} of ${page.total.toLocaleString(\"en\")} shown. Read the next ones with --page ${page.page + 1} --limit ${page.pageSize}.`,\n ];\n }\n return data.truncated ? [`More companies were reached than --limit ${request.limit}; raise it to see the tail.`] : [];\n}\n\n/** The columns `baker accounts engagement --output csv|md` prints, in order. */\nexport const ENGAGEMENT_TABLE_FIELDS = [\n \"orgId\",\n \"name\",\n \"domain\",\n \"impressions\",\n \"clicks\",\n \"engagements\",\n \"videoViews\",\n \"estimatedSpend\",\n \"spendCurrency\",\n \"costLocal\",\n \"currency\",\n \"monthsActive\",\n \"lastMonth\",\n \"previousImpressions\",\n \"previousClicks\",\n \"previousEngagements\",\n \"flag\",\n \"crmCompanyId\",\n \"matchConfidence\",\n \"dealStatus\",\n \"hasOpenDeal\",\n \"hasWonDeal\",\n \"hasLostDeal\",\n \"lastLostAt\",\n \"websitePeople\",\n \"websiteLeads\",\n \"websiteVisits\",\n \"websitePagesRead\",\n \"websiteLastVisit\",\n \"isTarget\",\n \"tier\",\n \"alertedAt\",\n];\n\n/** Engagement rows flat for a table: the estimated spend as two columns, the period before as three, the website people as two and the company's own-network visits as three, not JSON cells. */\nexport function engagementTableRows(rows: readonly AccountEngagementRow[]): Array<Record<string, unknown>> {\n return withDealStatus(rows).map(({ previous, website, visitorCompany, estimatedSpend, ...row }) => ({\n ...row,\n estimatedSpend: estimatedSpend?.amount ?? 0,\n spendCurrency: estimatedSpend?.currency ?? \"\",\n previousImpressions: previous.impressions,\n previousClicks: previous.clicks,\n previousEngagements: previous.engagements,\n websitePeople: website?.people ?? 0,\n websiteLeads: website?.leads ?? 0,\n websiteVisits: visitorCompany?.visits ?? 0,\n websitePagesRead: visitorCompany?.pages ?? 0,\n websiteLastVisit: visitorCompany?.lastSeen ?? null,\n }));\n}\n\nconst MODEL_OF_METRIC: Record<InfluenceMetric, InfluenceModelKind> = {\n engagements: \"engagement\",\n impressions: \"awareness\",\n clicks: \"intent\",\n};\n\n/**\n * The least a warm company must have done this period: the company's\n * influence rule (the default one when the backend sent none), read for this\n * call with `--model`/`--threshold`, or `--min` on the rule's metric. `--min 0`\n * drops it, so one engagement after none reads as warm again.\n */\nexport function warmMinimum(\n rule: InfluenceParams | undefined,\n override: InfluenceRuleOverride & { min?: number },\n): WarmAccountsOptions[\"minimum\"] {\n const saved = { model: { kind: rule ? MODEL_OF_METRIC[rule.metric] : \"engagement\", threshold: rule?.threshold } };\n const read = influenceParams(saved, { model: override.model, threshold: override.threshold });\n const value = override.min ?? read.threshold;\n return value > 0 ? { metric: read.metric, value } : undefined;\n}\n\n/** What the agent should take from a warm list that the rows alone don't say. */\nexport function warmHints(\n read: Pick<AccountsEngagementResponse[\"data\"], \"companies\" | \"truncated\">,\n warm: readonly AccountEngagementRow[],\n minimum: WarmAccountsOptions[\"minimum\"],\n): string[] {\n const hints: string[] = [];\n if (read.truncated) {\n hints.push(\n `The ads reached more companies than one read returns (${read.companies.length.toLocaleString(\"en\")}, the most engaged first), so warm companies with little engagement may be missing. Read a shorter period with --last-months 1 to see them.`,\n );\n }\n if (warm.length === 0 && read.companies.length > 0 && minimum !== undefined) {\n hints.push(\n `No company both warmed up and reached ${minimum.value}+ ${minimum.metric} in the period. Try a longer period with --last-months, or a lower bar with --min (--min 0 drops it).`,\n );\n }\n if (warm.some((row) => row.name === \"\")) {\n hints.push(\"Some companies have no name yet — the nightly sync looks them up; the organizationUrn still matches.\");\n }\n if (warm.length > 0) {\n hints.push(\n 'To advertise to them: `baker accounts warm --output csv > warm.csv`, then `baker ads linkedin audiences create --name \"Warm accounts\" --type company-list --list-file warm.csv` (staged until publish).',\n );\n }\n return hints;\n}\n\n/** The header `baker ads linkedin audiences create --type company-list --list-file` reads. */\nconst WARM_CSV_COLUMNS = [\"companyName\", \"domain\", \"organizationUrn\"];\n\n/**\n * Warm accounts as a company-list file, one company a line. The list reader\n * splits on line breaks, so a name carrying one is flattened.\n */\nexport function warmAccountsCsv(rows: readonly AccountEngagementRow[]): string {\n const lines = [toCsvRow(WARM_CSV_COLUMNS)];\n for (const row of rows) {\n const name = row.name.replace(/\\s*[\\r\\n]+\\s*/g, \" \");\n lines.push(toCsvRow([name, row.domain, `urn:li:organization:${row.orgId}`]));\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nconst plural = (count: number, one: string, many: string) => `${count} ${count === 1 ? one : many}`;\n\nfunction reachText(counts: { total: number; reached: number; engaged: number }): string {\n return `${counts.reached} of ${counts.total} reached, ${counts.engaged} engaged`;\n}\n\n/**\n * What a `--targets` read means beyond its rows: how far the ads got with the\n * list, the targets never reached, and the file entries that were skipped.\n * No summary back means a server that ignored the list.\n */\nexport function targetsHints(summary: TargetsSummary | undefined, unreadable: readonly string[]): string[] {\n if (summary === undefined) {\n return [\n \"This Baker server does not narrow reports to target accounts yet: the rows cover every company the ads reached.\",\n ];\n }\n const tiers = Object.entries(summary.byTier ?? {})\n .sort(([a], [b]) => a.localeCompare(b, \"en\", { numeric: true }))\n .map(([tier, counts]) => `tier ${tier}: ${reachText(counts)}`);\n const hints = [\n `Target accounts: ${reachText(summary)}${tiers.length > 0 ? ` (${tiers.join(\"; \")})` : \"\"}. Rows and numbers cover the target accounts only.`,\n ];\n const missed = summary.notReached.length;\n if (missed > 0) {\n hints.push(\n `${plural(missed, \"target account was\", \"target accounts were\")} never reached in the period (targets.notReached). Check ${missed === 1 ? \"its domain is the website on its LinkedIn page\" : \"their domains are the websites on their LinkedIn pages\"}, or advertise to ${missed === 1 ? \"it\" : \"them\"} with a company list.`,\n );\n }\n if (unreadable.length > 0) {\n const listed = unreadable.map((entry) => `\"${entry}\"`).join(\", \");\n hints.push(\n `Skipped ${plural(unreadable.length, \"entry\", \"entries\")} of the targets file that ${unreadable.length === 1 ? \"is\" : \"are\"} not a website: ${listed}.`,\n );\n }\n return hints;\n}\n\nconst percent = (part: number, whole: number) => `${whole > 0 ? Math.round((part / whole) * 100) : 0}%`;\nconst perCompany = (total: number, companies: number) =>\n companies > 0 ? String(Math.round((total / companies) * 10) / 10) : \"0\";\n\n/**\n * \"Did the ABM work\" in one line: the target accounts beside every other\n * company in the same read — engagement for the companies reached, influenced\n * deals for a deal read. Nothing without a `--targets` read.\n */\nexport function comparisonHints(comparison: EngagementComparison | DealsComparison | undefined): string[] {\n if (comparison === undefined) return [];\n if (\"companies\" in comparison.targets && \"companies\" in comparison.others) {\n const { targets, others } = comparison as EngagementComparison;\n return [\n `Targets vs everyone else: ${targets.engaged} of ${targets.companies} target accounts engaged (${percent(targets.engaged, targets.companies)}) against ${others.engaged} of ${others.companies} other companies (${percent(others.engaged, others.companies)}); ${perCompany(targets.engagements, targets.companies)} engagements per target, ${perCompany(others.engagements, others.companies)} per other company (\\`comparison\\`).`,\n ];\n }\n const { targets, others } = comparison as DealsComparison;\n return [\n `Targets vs everyone else: ${targets.influencedDeals} of ${targets.deals} target-account deals influenced (${money(targets.influencedValue)}) against ${others.influencedDeals} of ${others.deals} other deals (${money(others.influencedValue)}) (\\`comparison\\`).`,\n ];\n}\n\n/** Each company with where it stands in the CRM spelled out, so the agent never has to combine the flags. */\nexport function withDealStatus(\n rows: readonly AccountEngagementRow[],\n): Array<AccountEngagementRow & { dealStatus: AccountDealStatus }> {\n return rows.map((row) => ({ ...row, dealStatus: accountDealStatus(row) }));\n}\n\ntype CompanyData = AccountsCompanyResponse[\"data\"];\ntype MonthCounts = Pick<AccountCompanyMonth, \"month\" | \"impressions\" | \"clicks\" | \"engagements\">;\n\nexport interface CompanyView {\n orgs: CompanyData[\"orgs\"];\n /** The company's own totals, month by month: the account-wide rows. */\n months: Array<MonthCounts & { orgId: string }>;\n /** The same numbers split by campaign. Overlapping: never add them to `months` or to each other. */\n byCampaign: Array<{ orgId: string; campaignId: string; campaignName: string | null; months: MonthCounts[] }>;\n deals: CompanyData[\"deals\"];\n rule?: CompanyData[\"rule\"];\n}\n\nconst counts = (row: AccountCompanyMonth): MonthCounts => ({\n month: row.month,\n impressions: row.impressions,\n clicks: row.clicks,\n engagements: row.engagements,\n});\n\n/**\n * One company as the agent should read it. The store answers the account-wide\n * row and every campaign's row for the same month side by side, which reads\n * as double the activity; here the account-wide months are the totals and\n * the campaign split sits apart, labelled. A company the ads never reached\n * comes back from the store as an unnamed echo of the id asked for — dropped,\n * and said in words.\n */\n/** Why a company lookup shows no LinkedIn company: an id the ads never reached, a CRM-only company, or no match at all. */\nfunction unreachedHint(unreached: ReadonlyArray<{ orgId: string }>, deals: number): string {\n if (unreached.length > 0) {\n return `The LinkedIn ads have not reached LinkedIn company ${unreached.map((org) => org.orgId).join(\", \")} in the months the nightly sync keeps (up to 24), so there is nothing to show. Check the id against \\`baker accounts engagement\\`, or try the company's website domain.`;\n }\n if (deals > 0) {\n return `That company is in the CRM with ${deals === 1 ? \"1 deal\" : `${deals} deals`}, but the LinkedIn ads have not reached it in the months the nightly sync keeps, so none of its deals can count as influenced.`;\n }\n return \"The ads have not reached that company, or it is named differently: try its LinkedIn id from `baker accounts engagement`.\";\n}\n\nexport function companyView(data: CompanyData): { data: CompanyView; hints: string[] } {\n const reachedOrgs = new Set(data.months.map((row) => row.orgId));\n const orgs = data.orgs.filter((org) => reachedOrgs.has(org.orgId) || org.name !== \"\" || org.crmCompanyId !== null);\n const months = data.months\n .filter((row) => row.campaignId === \"\")\n .map((row) => ({ orgId: row.orgId, ...counts(row) }));\n const byCampaign: CompanyView[\"byCampaign\"] = [];\n for (const row of data.months) {\n if (row.campaignId === \"\") continue;\n let entry = byCampaign.find((item) => item.orgId === row.orgId && item.campaignId === row.campaignId);\n if (entry === undefined) {\n entry = { orgId: row.orgId, campaignId: row.campaignId, campaignName: row.campaignName, months: [] };\n byCampaign.push(entry);\n }\n entry.months.push(counts(row));\n }\n\n const hints: string[] = [];\n const unreached = unreachedHint(\n data.orgs.filter((org) => !orgs.includes(org)),\n data.deals.length,\n );\n if (orgs.length === 0) hints.push(unreached);\n if (byCampaign.length > 0) {\n hints.push(\n \"`months` are the company's totals. `byCampaign` splits the same numbers by campaign, and a company several campaigns reached shows up under each — never add byCampaign to the totals or to each other.\",\n );\n }\n if (orgs.some((org) => org.matchConfidence === \"low\")) {\n hints.push(\n \"The CRM match is only a guess (a subdomain or a name) until someone confirms it in Measure → Accounts.\",\n );\n }\n if (data.rule !== undefined && data.deals.length > 0) {\n hints.push(\n `\\`influenced\\` on each deal: ${data.rule.threshold}+ ${data.rule.metric} (\\`touchValue\\`) in the ${data.rule.lookbackMonths} months up to the month the deal was created (closed, for a won deal), counted from this company's months above.`,\n );\n }\n return { data: { orgs, months, byCampaign, deals: data.deals, ...(data.rule ? { rule: data.rule } : {}) }, hints };\n}\n"],"mappings":"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","names":["counts","targets","others"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import {
|
|
2
|
+
writeJsonEnvelope
|
|
3
|
+
} from "./chunk-VJUVTMHY.js";
|
|
4
|
+
import {
|
|
5
|
+
apiGet
|
|
6
|
+
} from "./chunk-JCFZ7ECN.js";
|
|
7
|
+
|
|
8
|
+
// src/available-accounts.ts
|
|
9
|
+
var AVAILABLE_ARG = {
|
|
10
|
+
type: "boolean",
|
|
11
|
+
description: "List everything the connected login reaches, each marked selected: true|false. Use it when the account, property, site or container the user means is not in the plain list.",
|
|
12
|
+
required: false
|
|
13
|
+
};
|
|
14
|
+
async function writeAvailableAccounts(platform, onError) {
|
|
15
|
+
try {
|
|
16
|
+
writeJsonEnvelope(await apiGet("/api/connections/available", { platform }));
|
|
17
|
+
} catch (err) {
|
|
18
|
+
onError(err);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export {
|
|
23
|
+
AVAILABLE_ARG,
|
|
24
|
+
writeAvailableAccounts
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=chunk-ITABNSX6.js.map
|